提交人:邹江涛

提交时间:2025年12月26日
提交内容:上划下拨转换类凭证代码
This commit is contained in:
root 2025-12-26 10:38:15 +08:00
parent 9a2de4f745
commit 15d773ced1
1 changed files with 167 additions and 62 deletions

View File

@ -27,6 +27,32 @@ public class LpzConverPlugin extends AbstractConvertPlugIn implements Plugin {
@Override
public void afterFieldMapping(AfterFieldMappingEventArgs e) {
super.afterFieldMapping(e);
// 币种
DynamicObject cuscurrency;
// 源单分录
DynamicObjectCollection entrys;
// 账户名称
String accountbankName;
DynamicObject dynamicObject;
// 贷方
DynamicObject lendersAddNew;
// 借方
DynamicObject debitAddNew;
// 记账期间
DynamicObject[] bdPeriods;
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
String yearMonth;
// 目标单据 记账日期
Date bookdate;
// 类凭证的分录
DynamicObjectCollection tallyentryentity;
BillEntityType srcMainType = this.getSrcMainType();//源单标识
String srcMainTypeName = srcMainType.getName();//源单名称
BillEntityType tgtMainType = this.getTgtMainType();//目标单标识
@ -38,74 +64,153 @@ public class LpzConverPlugin extends AbstractConvertPlugIn implements Plugin {
DynamicObject srcRow = srcRows.get(0);
Object srcId = e.getFldProperties().get("id").getValue(srcRow);//获取源单id
DynamicObject souData = BusinessDataServiceHelper.loadSingle(srcId, srcMainTypeName);//查询源单数据
Date bookdate = tarData.getDate("bookdate");
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
String yearMonth = sdf.format(bookdate);
DynamicObject[] bdPeriods = BusinessDataServiceHelper.load("bd_period", "id,number", new QFilter("number", QCP.equals, yearMonth).toArray());
bookdate = tarData.getDate("bookdate");
yearMonth = sdf.format(bookdate);
bdPeriods = BusinessDataServiceHelper.load("bd_period", "id,number", new QFilter("number", QCP.equals, yearMonth).toArray());
if (bdPeriods != null && bdPeriods.length > 0) {
// 记账期间 字段赋值
tarData.set("period", bdPeriods[0]);
}
DynamicObjectCollection tallyentryentity = tarData.getDynamicObjectCollection("tallyentryentity");
DynamicObject dynamicObject = tallyentryentity.get(0);
// 摘要 字段赋值
DynamicObject accountbank = souData.getDynamicObject("accountbank");
String accountbankName = accountbank.getString("name");
dynamicObject.set("tallyabstract", accountbankName);
// 科目 字段赋值
DynamicObject bank = accountbank.getDynamicObject("bank");
String bank_number = bank.getString("number");
DynamicObject[] bd_finorginfo = BusinessDataServiceHelper.load("bd_finorginfo", "id,number,bank_cate", new QFilter("number", QCP.equals, bank_number).toArray());
DynamicObject bank_cate = bd_finorginfo[0].getDynamicObject("bank_cate");
String bankName = bank_cate.getString("name");//银行类别
DynamicObject[] bdAccountviews1 = BusinessDataServiceHelper.load("bd_accountview", "id,number,name", new QFilter("number", QCP.like, "1002.%")
.and("name", QCP.equals, bankName).toArray());
dynamicObject.set("account", bdAccountviews1[0]);
// 核算维度 字段赋值
String yhhswd = "银行账户:" + accountbank.getString("bankaccountnumber");
dynamicObject.set("shkd_hswd", yhhswd);
// 币种
DynamicObject cuscurrency = dynamicObject.getDynamicObject("cuscurrency");
// 汇率
Object exrate = dynamicObject.get("exrate");
// 汇率日期
dynamicObject.set("ratedate", bookdate);
tallyentryentity = tarData.getDynamicObjectCollection("tallyentryentity");
DynamicObject addNew = tallyentryentity.addNew();
// 摘要 字段赋值
DynamicObjectCollection entrys = souData.getDynamicObjectCollection("entrys");
DynamicObject entry = entrys.get(0);
DynamicObject subacctCompany = entry.getDynamicObject("subacct_company");
String subacctCompanyName = subacctCompany.getString("name");
addNew.set("tallyabstract", subacctCompanyName);
// 科目 字段赋值
DynamicObject[] bdAccountviews2 = BusinessDataServiceHelper.load("bd_accountview", "id,number,name", new QFilter("number", QCP.equals, "2241.02.01.01").toArray());
addNew.set("account", bdAccountviews2[0]);
// 核算维度 字段赋值
String gyshswd = "供应商:" + subacctCompanyName;
addNew.set("shkd_hswd", gyshswd);
// 原币贷方金额 字段赋值
BigDecimal transamt = entry.getBigDecimal("transamt");
addNew.set("loanamount", transamt);
// 贷方金额 字段赋值
addNew.set("loanstanamount", transamt);
// 原币金额 字段赋值
addNew.set("oriamount", transamt);
// 主表项目 字段赋值
DynamicObject[] glCashflowitems = BusinessDataServiceHelper.load("gl_cashflowitem", "id.number,name", new QFilter("number", QCP.equals, "CI01.01.03").toArray());
addNew.set("maincfitem", glCashflowitems[0]);
// 主表核算维度 字段赋值
String zbhswd = "组织机构:" + subacctCompanyName;
addNew.set("shkd_zbhswd", zbhswd);
// 主表项目金额 字段赋值
addNew.set("maincfamount", transamt);
// 币种 字段赋值
addNew.set("cuscurrency", cuscurrency);
// 汇率 字段赋值
addNew.set("exrate", exrate);
// 汇率日期 字段赋值
addNew.set("ratedate", bookdate);
lendersAddNew = tallyentryentity.addNew();
debitAddNew = tallyentryentity.addNew();
switch (srcMainTypeName) {
case "fca_transupbill"://上划
case "fca_transdownbill"://下拨
// 币种
cuscurrency = souData.getDynamicObject("currency");
entrys = souData.getDynamicObjectCollection("entrys");
DynamicObject entry = entrys.get(0);
DynamicObject subacctCompany = entry.getDynamicObject("subacct_company");
String subacctCompanyName = subacctCompany.getString("name");
BigDecimal transamt = entry.getBigDecimal("transamt");
DynamicObject accountbank = souData.getDynamicObject("accountbank");
accountbankName = accountbank.getString("name");
if ("fca_transupbill".equals(srcMainTypeName)) {
// 摘要 字段赋值
lendersAddNew.set("tallyabstract", "归集:" + subacctCompanyName);
// 科目 字段赋值
DynamicObject[] bdAccountviews2 = BusinessDataServiceHelper.load("bd_accountview", "id,number,name", new QFilter("number", QCP.equals, "2241.02.01.01").toArray());
lendersAddNew.set("account", bdAccountviews2[0]);
// 核算维度 字段赋值
String gyshswd = "供应商:" + subacctCompanyName;
lendersAddNew.set("shkd_hswd", gyshswd);
// 原币贷方金额 字段赋值
lendersAddNew.set("loanamount", transamt);
// 贷方金额 字段赋值
lendersAddNew.set("loanstanamount", transamt);
// 原币金额 字段赋值
lendersAddNew.set("oriamount", transamt);
// 主表项目 字段赋值
DynamicObject[] glCashflowitems = BusinessDataServiceHelper.load("gl_cashflowitem", "id.number,name", new QFilter("number", QCP.equals, "CI01.01.03").toArray());
lendersAddNew.set("maincfitem", glCashflowitems[0]);
// 主表核算维度 字段赋值
String zbhswd = "组织机构:" + subacctCompanyName;
lendersAddNew.set("shkd_zbhswd", zbhswd);
// 主表项目金额 字段赋值
lendersAddNew.set("maincfamount", transamt);
// 币种 字段赋值
lendersAddNew.set("cuscurrency", cuscurrency);
// 汇率 字段赋值
lendersAddNew.set("exrate", 1);
// 汇率日期 字段赋值
lendersAddNew.set("ratedate", bookdate);
// 摘要 字段赋值
debitAddNew.set("tallyabstract", accountbankName + "账户资金明细");
// 科目 字段赋值
DynamicObject bank = accountbank.getDynamicObject("bank");
String bank_number = bank.getString("number");
DynamicObject[] bd_finorginfo = BusinessDataServiceHelper.load("bd_finorginfo", "id,number,bank_cate", new QFilter("number", QCP.equals, bank_number).toArray());
DynamicObject bank_cate = bd_finorginfo[0].getDynamicObject("bank_cate");
String bankName = bank_cate.getString("name");//银行类别
DynamicObject[] bdAccountviews1 = BusinessDataServiceHelper.load("bd_accountview", "id,number,name", new QFilter("number", QCP.like, "1002.%")
.and("name", QCP.equals, bankName).toArray());
debitAddNew.set("account", bdAccountviews1[0]);
// 核算维度 字段赋值
String yhhswd = "银行账户:" + accountbank.getString("bankaccountnumber");
debitAddNew.set("shkd_hswd", yhhswd);
// 原币借方金额 字段赋值
debitAddNew.set("tallyamount", transamt);
// 借方金额 字段赋值
debitAddNew.set("standardamount", transamt);
// 原币金额 字段赋值
debitAddNew.set("oriamount", transamt);
// 币种 字段赋值
debitAddNew.set("cuscurrency", cuscurrency);
// 汇率 字段赋值
debitAddNew.set("exrate", 1);
// 汇率日期 字段赋值
debitAddNew.set("ratedate", bookdate);
}
if ("fca_transdownbill".equals(srcMainTypeName)) {
// 摘要 字段赋值
lendersAddNew.set("tallyabstract", accountbankName + "账户资金明细");
// 科目 字段赋值
DynamicObject bank = accountbank.getDynamicObject("bank");
String bank_number = bank.getString("number");
DynamicObject[] bd_finorginfo = BusinessDataServiceHelper.load("bd_finorginfo", "id,number,bank_cate", new QFilter("number", QCP.equals, bank_number).toArray());
DynamicObject bank_cate = bd_finorginfo[0].getDynamicObject("bank_cate");
String bankName = bank_cate.getString("name");//银行类别
DynamicObject[] bdAccountviews1 = BusinessDataServiceHelper.load("bd_accountview", "id,number,name", new QFilter("number", QCP.like, "1002.%")
.and("name", QCP.equals, bankName).toArray());
lendersAddNew.set("account", bdAccountviews1[0]);
// 核算维度 字段赋值
String yhhswd = "银行账户:" + accountbank.getString("bankaccountnumber");
lendersAddNew.set("shkd_hswd", yhhswd);
// 原币贷方金额 字段赋值
lendersAddNew.set("loanamount", transamt);
// 贷方金额 字段赋值
lendersAddNew.set("loanstanamount", transamt);
// 原币金额 字段赋值
lendersAddNew.set("oriamount", transamt);
// 币种 字段赋值
lendersAddNew.set("cuscurrency", cuscurrency);
// 汇率 字段赋值
lendersAddNew.set("exrate", 1);
// 汇率日期 字段赋值
lendersAddNew.set("ratedate", bookdate);
// 摘要 字段赋值
debitAddNew.set("tallyabstract", "下拨:" + subacctCompanyName);
// 科目 字段赋值
DynamicObject[] bdAccountviews2 = BusinessDataServiceHelper.load("bd_accountview",
"id,number,name", new QFilter("number", QCP.equals, "2241.02.01.01").toArray());
debitAddNew.set("account", bdAccountviews2[0]);
// 核算维度 字段赋值
String gyshswd = "供应商:" + subacctCompanyName;
debitAddNew.set("shkd_hswd", gyshswd);
// 原币借方金额 字段赋值
debitAddNew.set("tallyamount", transamt);
// 借方金额 字段赋值
debitAddNew.set("standardamount", transamt);
// 原币金额 字段赋值
debitAddNew.set("oriamount", transamt);
// 主表项目 字段赋值
DynamicObject[] glCashflowitems = BusinessDataServiceHelper.load("gl_cashflowitem",
"id.number,name", new QFilter("number", QCP.equals, "CI01.02.04").toArray());
debitAddNew.set("maincfitem", glCashflowitems[0]);
// 主表核算维度 字段赋值
String zbhswd = "组织机构:" + subacctCompanyName;
debitAddNew.set("shkd_zbhswd", zbhswd);
// 主表项目金额 字段赋值
debitAddNew.set("maincfamount", transamt);
// 币种 字段赋值
debitAddNew.set("cuscurrency", cuscurrency);
// 汇率 字段赋值
debitAddNew.set("exrate", 1);
// 汇率日期 字段赋值
debitAddNew.set("ratedate", bookdate);
}
}
}
}
}