关于银行电子支付的导出文件
为了提高工作效率和较少出错的几率,用户都期望通过银行的收款和付款可以通过与银行的接口来实现,最理想的状态是,在ERP里做一笔付款或者收款,可以自动在银行的系统里产生一笔相关的记录,银行付款审核付款完成后自动回写系统。这个想法可能会有些理想化,除非是比较大的公司,银行是不会提供这样的服务的。
AX通过导出银行指定文件的方式来实现与银行的接口,在AX的财务教程II的第四章高级付款部分对这个要详细的描述,这里就不赘述了。要说明的是,中国本地化的时候并没有中国的银行做一些客制化,所以在默认情况下是不能导出成中国的ICBC,CCB之类银行的接口文件的,要想支持这些银行接口,必须:
1.向相应的银行索要电子支付对应的文件格式和字段说明
2.在AX里扩展相应的类。
第一点就不用说了,第二点,对于向供应商付款需要扩展的类是VendOutPaym和VendOutPaymRecord,向客户付款需要扩展的类是CustOutPaym和CustOutPayRecord,其中*OutPaym由产生付款功能直接调用,用于生成付款的主信息,并调用*OutPaymRecord将LedgerJournalTrans的明细数据写入到文件中。
实际上这两个类实现的功能就是按照指定银行的格式要求把数据写到文件里,参照其他国家银行的写法,照猫画虎,也不是很困难。
一般银行会把汉字处理成两个字符,而在AX里strlen函数把汉字当作一个字符来处理,所以可能要用到如下的函数变通得到一个字符串所含的字节数:
static int strlen(str _strIn)
{
System.Text.Encoding encoding;
;
encoding = System.Text.Encoding::get_Default();
return encoding.GetByteCount(_strIn);
}
{
System.Text.Encoding encoding;
;
encoding = System.Text.Encoding::get_Default();
return encoding.GetByteCount(_strIn);
}