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,差不多就这些了.