AX本地化金税系统
AX4.0SP1本地化有一个金税系统,据说国内基本上没人用,今天客户要修改一下这个东东,对金税系统不是很熟,据说金税要求客户银行的名称.
AX中能与金税系统进行字段映射的表是写死的,并没有客户银行CustBankAccount这个表,这也可以理解啦,金税接口毕竟是个相对比较死的东西,所以写死也无所谓.但这样如果要增加字段映射的表,比如要增加CustBankAccount这个表,就需要修改代码,修改步骤如下:
1.修改Form TaxSetupTable_CN的init方法,增加如下代码:
OK,差不多就这些了.
AX中能与金税系统进行字段映射的表是写死的,并没有客户银行CustBankAccount这个表,这也可以理解啦,金税接口毕竟是个相对比较死的东西,所以写死也无所谓.但这样如果要增加字段映射的表,比如要增加CustBankAccount这个表,就需要修改代码,修改步骤如下:
1.修改Form TaxSetupTable_CN的init方法,增加如下代码:
//CustBankAccount
if (!TaxSetupTable_CN::existTable(tablenum(CustBankAccount)))
{
TaxSetupTable_CN.TaxTableId = tablenum(CustBankAccount);
TaxSetupTable_CN.TaxTableName = TaxSetupTable_CN.taxTablePName();
seqNum++;
TaxSetupTable_CN.TableSequence = seqNum;
TaxSetupTable_CN.insert();
}
else
{
TaxSetupTable_CN = TaxSetupTable_CN::find(tablenum(CustBankAccount), true);
TaxSetupTable_CN.TaxTableName = TaxSetupTable_CN.taxTablePName();
TaxSetupTable_CN.update();
}
2.修改类TaxExportInvoice_CN的buildInvoices和buildInvoicesTxt方法,类似代码如下:if (!TaxSetupTable_CN::existTable(tablenum(CustBankAccount)))
{
TaxSetupTable_CN.TaxTableId = tablenum(CustBankAccount);
TaxSetupTable_CN.TaxTableName = TaxSetupTable_CN.taxTablePName();
seqNum++;
TaxSetupTable_CN.TableSequence = seqNum;
TaxSetupTable_CN.insert();
}
else
{
TaxSetupTable_CN = TaxSetupTable_CN::find(tablenum(CustBankAccount), true);
TaxSetupTable_CN.TaxTableName = TaxSetupTable_CN.taxTablePName();
TaxSetupTable_CN.update();
}
case tableNum(CustBankAccount):
select firstonly Name from custBankAccount
exists join custTable
where custTable.BankAccount == custBankAccount.AccountID &&
custTable.AccountNum == _custInvoiceJour.OrderAccount;
fieldValue = this.getHeaderNodeValue(_taxSetupField,custBankAccount);
break;
其实buildInvoices和buildInvoicesTxt这两个方法的这段逻辑是差不多的,可以改造一下把这段代码抽出来,这样就不用每次改两个方法了.select firstonly Name from custBankAccount
exists join custTable
where custTable.BankAccount == custBankAccount.AccountID &&
custTable.AccountNum == _custInvoiceJour.OrderAccount;
fieldValue = this.getHeaderNodeValue(_taxSetupField,custBankAccount);
break;
OK,差不多就这些了.