diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/conver/LpzConverPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/conver/LpzConverPlugin.java index 209eaf8..3e2918a 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/conver/LpzConverPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/conver/LpzConverPlugin.java @@ -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); + } + } } } } \ No newline at end of file