bip销售发票红冲接口
This commit is contained in:
parent
9d6588268f
commit
bed6eaacd8
|
@ -0,0 +1,162 @@
|
||||||
|
/* */ package nc.bs.so.m32.maintain;
|
||||||
|
/* */
|
||||||
|
/* */ import nc.bs.so.m32.maintain.rule.insert.AutoUniteInvoiceRule;
|
||||||
|
/* */ import nc.bs.so.m32.maintain.rule.insert.CheckBillCodeRule;
|
||||||
|
/* */ import nc.bs.so.m32.maintain.rule.insert.CheckBillValityRule;
|
||||||
|
/* */ import nc.bs.so.m32.maintain.rule.insert.CheckOppValityRule;
|
||||||
|
/* */ import nc.bs.so.m32.maintain.rule.insert.FillNewDefaultRule;
|
||||||
|
/* */ import nc.bs.so.m32.maintain.rule.insert.OppOffsetRule;
|
||||||
|
/* */ import nc.bs.so.m32.maintain.rule.insert.RewriteBillInsertRule;
|
||||||
|
/* */ import nc.bs.so.m32.maintain.rule.insert.SaleInvoiceCheckNumAndMnyRule;
|
||||||
|
/* */ import nc.bs.so.m32.maintain.rule.insert.SaleInvoiceCompensateForInsertRule;
|
||||||
|
/* */ import nc.bs.so.m32.maintain.rule.insert.SaleInvoiceSyncRPBillRuleForInsert;
|
||||||
|
/* */ import nc.bs.so.m32.maintain.rule.insert.UpdateOppInsertRule;
|
||||||
|
/* */ import nc.bs.so.m32.plugin.BP32PlugInPoint;
|
||||||
|
/* */ import nc.bs.so.pub.rule.FillBillTailInfoRuleForIns;
|
||||||
|
/* */ import nc.impl.pubapp.bd.userdef.UserDefSaveRule;
|
||||||
|
/* */ import nc.impl.pubapp.pattern.data.bill.BillInsert;
|
||||||
|
/* */ import nc.impl.pubapp.pattern.rule.IRule;
|
||||||
|
/* */ import nc.impl.pubapp.pattern.rule.processer.AroundProcesser;
|
||||||
|
/* */ import nc.vo.ml.NCLangRes4VoTransl;
|
||||||
|
/* */ import nc.vo.pubapp.pattern.log.TimeLog;
|
||||||
|
/* */ import nc.vo.pubapp.util.SetAddAuditInfoRule;
|
||||||
|
/* */ import nc.vo.scmpub.res.billtype.SOBillType;
|
||||||
|
/* */ import nc.vo.scmpub.rule.FinanceOrgEnableCheckRule;
|
||||||
|
/* */ import nc.vo.so.m32.entity.SaleInvoiceVO;
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */ public class InsertSaleInvoiceBP
|
||||||
|
/* */ {
|
||||||
|
/* */ public SaleInvoiceVO[] insert(SaleInvoiceVO[] bills) {
|
||||||
|
/* 43 */ AroundProcesser<SaleInvoiceVO> processer = new AroundProcesser<SaleInvoiceVO>(BP32PlugInPoint.InsertAction);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 47 */ addBeforeRule(processer);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 50 */ addAfterRule(processer);
|
||||||
|
/* */
|
||||||
|
/* 52 */ TimeLog.logStart();
|
||||||
|
/* 53 */ processer.before(bills);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 56 */ TimeLog.info(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006008_0", "04006008-0023"));
|
||||||
|
/* */
|
||||||
|
/* 58 */ TimeLog.logStart();
|
||||||
|
/* 59 */ BillInsert<SaleInvoiceVO> bo = new BillInsert<SaleInvoiceVO>();
|
||||||
|
/* 60 */ SaleInvoiceVO[] vos = (SaleInvoiceVO[])bo.insert(bills);
|
||||||
|
/* */
|
||||||
|
/* 62 */ TimeLog.info(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006008_0", "04006008-0024"));
|
||||||
|
/* */
|
||||||
|
/* 64 */ TimeLog.logStart();
|
||||||
|
/* 65 */ processer.after(vos);
|
||||||
|
/* */
|
||||||
|
/* 67 */ TimeLog.info(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006008_0", "04006008-0025"));
|
||||||
|
/* 68 */ return vos;
|
||||||
|
/* */ }
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */ private void addAfterRule(AroundProcesser<SaleInvoiceVO> processer) {
|
||||||
|
/* 84 */ IRule<SaleInvoiceVO> rule = new CheckBillCodeRule();
|
||||||
|
/* 85 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* 87 */ rule = new UpdateOppInsertRule();
|
||||||
|
/* 88 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* 90 */ rule = new RewriteBillInsertRule();
|
||||||
|
/* 91 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 94 */ rule = new OppOffsetRule();
|
||||||
|
/* 95 */ processer.addAfterRule(rule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 98 */ SaleInvoiceSyncRPBillRuleForInsert saleInvoiceSyncRPBillRuleForInsert = new SaleInvoiceSyncRPBillRuleForInsert(SOBillType.Invoice.getCode());
|
||||||
|
/* 99 */ processer.addAfterRule(saleInvoiceSyncRPBillRuleForInsert);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 102 */ SaleInvoiceCompensateForInsertRule saleInvoiceCompensateForInsertRule = new SaleInvoiceCompensateForInsertRule();
|
||||||
|
/* 103 */ processer.addAfterRule(saleInvoiceCompensateForInsertRule);
|
||||||
|
/* */ }
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */ private void addBeforeRule(AroundProcesser<SaleInvoiceVO> processer) {
|
||||||
|
/* 119 */ FinanceOrgEnableCheckRule financeOrgEnableCheckRule = new FinanceOrgEnableCheckRule();
|
||||||
|
/* 120 */ processer.addBeforeRule(financeOrgEnableCheckRule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 123 */ FillBillTailInfoRuleForIns fillBillTailInfoRuleForIns = new FillBillTailInfoRuleForIns();
|
||||||
|
/* 124 */ processer.addBeforeRule(fillBillTailInfoRuleForIns);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 127 */ SetAddAuditInfoRule setAddAuditInfoRule = new SetAddAuditInfoRule();
|
||||||
|
/* 128 */ processer.addBeforeRule(setAddAuditInfoRule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 131 */ FillNewDefaultRule fillNewDefaultRule = new FillNewDefaultRule();
|
||||||
|
/* 132 */ processer.addBeforeRule(fillNewDefaultRule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 135 */ CheckBillValityRule checkBillValityRule = new CheckBillValityRule();
|
||||||
|
/* 136 */ processer.addBeforeRule(checkBillValityRule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 139 */ SaleInvoiceCheckNumAndMnyRule saleInvoiceCheckNumAndMnyRule = new SaleInvoiceCheckNumAndMnyRule();
|
||||||
|
/* 140 */ processer.addBeforeRule(saleInvoiceCheckNumAndMnyRule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 143 */ CheckOppValityRule checkOppValityRule = new CheckOppValityRule();
|
||||||
|
/* 144 */ processer.addBeforeRule(checkOppValityRule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 147 */ AutoUniteInvoiceRule autoUniteInvoiceRule = new AutoUniteInvoiceRule();
|
||||||
|
/* 148 */ processer.addBeforeRule(autoUniteInvoiceRule);
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 151 */ UserDefSaveRule userDefSaveRule = new UserDefSaveRule(new Class[] { nc.vo.so.m32.entity.SaleInvoiceHVO.class, nc.vo.so.m32.entity.SaleInvoiceBVO.class });
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 154 */ processer.addBeforeRule(userDefSaveRule);
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
|
||||||
|
|
||||||
|
/* Location: E:\project\yonyou\tk_gjb\YonBIP2312\modules\so\META-INF\lib\so_saleinvoice.jar!/nc/bs/so/m32/maintain/InsertSaleInvoiceBP.class
|
||||||
|
* Java compiler version: 17 (61.0)
|
||||||
|
* JD-Core Version: 1.0.7
|
||||||
|
*/
|
|
@ -0,0 +1,89 @@
|
||||||
|
//
|
||||||
|
// Source code recreated from a .class file by IntelliJ IDEA
|
||||||
|
// (powered by FernFlower decompiler)
|
||||||
|
//
|
||||||
|
|
||||||
|
package nc.bs.so.m32.maintain;
|
||||||
|
|
||||||
|
import nc.bs.scmpub.ssc.rule.SyncRPBillRuleForUpdate;
|
||||||
|
import nc.bs.so.m32.maintain.rule.insert.CheckBillCodeRule;
|
||||||
|
import nc.bs.so.m32.maintain.rule.insert.CheckBillValityRule;
|
||||||
|
import nc.bs.so.m32.maintain.rule.insert.SaleInvoiceCheckNumAndMnyRule;
|
||||||
|
import nc.bs.so.m32.maintain.rule.update.CheckBillState;
|
||||||
|
import nc.bs.so.m32.maintain.rule.update.CheckCanUpdateWhenAuditing;
|
||||||
|
import nc.bs.so.m32.maintain.rule.update.CheckOppValityUpdateRule;
|
||||||
|
import nc.bs.so.m32.maintain.rule.update.FillUpdateDefaultRule;
|
||||||
|
import nc.bs.so.m32.maintain.rule.update.RewriteBillCreditRule;
|
||||||
|
import nc.bs.so.m32.maintain.rule.update.RewriteBillUpdateRule;
|
||||||
|
import nc.bs.so.m32.maintain.rule.update.UpdateOppUpdateRule;
|
||||||
|
import nc.bs.so.m32.plugin.BP32PlugInPoint;
|
||||||
|
import nc.bs.so.pub.rule.CheckApproverRule;
|
||||||
|
import nc.impl.pubapp.pattern.data.bill.BillUpdate;
|
||||||
|
import nc.impl.pubapp.pattern.rule.ICompareRule;
|
||||||
|
import nc.impl.pubapp.pattern.rule.IRule;
|
||||||
|
import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser;
|
||||||
|
import nc.vo.ml.NCLangRes4VoTransl;
|
||||||
|
import nc.vo.pubapp.pattern.log.TimeLog;
|
||||||
|
import nc.vo.pubapp.util.SetUpdateAuditInfoRule;
|
||||||
|
import nc.vo.scmpub.res.billtype.SOBillType;
|
||||||
|
import nc.vo.so.m32.entity.SaleInvoiceVO;
|
||||||
|
|
||||||
|
public class UpdateSaleInvoiceBP {
|
||||||
|
public UpdateSaleInvoiceBP() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public SaleInvoiceVO[] update(SaleInvoiceVO[] bills, SaleInvoiceVO[] originBills) {
|
||||||
|
CompareAroundProcesser<SaleInvoiceVO> processer = new CompareAroundProcesser(BP32PlugInPoint.UpdateAction);
|
||||||
|
|
||||||
|
for(SaleInvoiceVO bill : bills) {
|
||||||
|
bill.getParentVO().setStatus(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.addBeforeRule(processer);
|
||||||
|
this.addAfterRule(processer);
|
||||||
|
TimeLog.logStart();
|
||||||
|
processer.before(bills, originBills);
|
||||||
|
TimeLog.info(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006008_0", "04006008-0026"));
|
||||||
|
TimeLog.logStart();
|
||||||
|
BillUpdate<SaleInvoiceVO> bo = new BillUpdate();
|
||||||
|
SaleInvoiceVO[] vos = (SaleInvoiceVO[])bo.update(bills, originBills);
|
||||||
|
TimeLog.info(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006008_0", "04006008-0027"));
|
||||||
|
TimeLog.logStart();
|
||||||
|
processer.after(bills, originBills);
|
||||||
|
TimeLog.info(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006008_0", "04006008-0028"));
|
||||||
|
return vos;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addAfterRule(CompareAroundProcesser<SaleInvoiceVO> processer) {
|
||||||
|
IRule<SaleInvoiceVO> rule = new CheckBillCodeRule();
|
||||||
|
processer.addAfterRule(rule);
|
||||||
|
ICompareRule<SaleInvoiceVO> rewriteRule = new RewriteBillCreditRule();
|
||||||
|
processer.addAfterRule(rewriteRule);
|
||||||
|
ICompareRule<SaleInvoiceVO> var5 = new UpdateOppUpdateRule();
|
||||||
|
processer.addAfterRule(var5);
|
||||||
|
ICompareRule<SaleInvoiceVO> var6 = new RewriteBillUpdateRule();
|
||||||
|
processer.addAfterRule(var6);
|
||||||
|
IRule<SaleInvoiceVO> var4 = new SyncRPBillRuleForUpdate(SOBillType.Invoice.getCode());
|
||||||
|
processer.addAfterRule(var4);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addBeforeRule(CompareAroundProcesser<SaleInvoiceVO> processer) {
|
||||||
|
IRule<SaleInvoiceVO> rule = null;
|
||||||
|
IRule<SaleInvoiceVO> var4 = new CheckCanUpdateWhenAuditing();
|
||||||
|
processer.addBeforeRule(var4);
|
||||||
|
IRule<SaleInvoiceVO> var5 = new CheckApproverRule();
|
||||||
|
processer.addBeforeRule(var5);
|
||||||
|
ICompareRule<SaleInvoiceVO> fillRule = new FillUpdateDefaultRule();
|
||||||
|
processer.addBeforeRule(fillRule);
|
||||||
|
IRule<SaleInvoiceVO> var6 = new CheckBillValityRule();
|
||||||
|
processer.addBeforeRule(var6);
|
||||||
|
IRule<SaleInvoiceVO> var7 = new SaleInvoiceCheckNumAndMnyRule();
|
||||||
|
processer.addBeforeRule(var7);
|
||||||
|
IRule<SaleInvoiceVO> var8 = new CheckOppValityUpdateRule();
|
||||||
|
processer.addBeforeRule(var8);
|
||||||
|
IRule<SaleInvoiceVO> var9 = new CheckBillState();
|
||||||
|
processer.addBeforeRule(var9);
|
||||||
|
IRule<SaleInvoiceVO> var10 = new SetUpdateAuditInfoRule();
|
||||||
|
processer.addBeforeRule(var10);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,196 @@
|
||||||
|
/* */ package nc.bs.so.m32.maintain.rule.insert;
|
||||||
|
/* */
|
||||||
|
/* */ import java.util.ArrayList;
|
||||||
|
/* */ import java.util.HashMap;
|
||||||
|
/* */ import java.util.List;
|
||||||
|
/* */ import java.util.Map;
|
||||||
|
/* */ import nc.impl.pubapp.pattern.data.bill.BillQuery;
|
||||||
|
/* */ import nc.impl.pubapp.pattern.data.vo.VOQuery;
|
||||||
|
/* */ import nc.impl.pubapp.pattern.database.DataAccessUtils;
|
||||||
|
/* */ import nc.impl.pubapp.pattern.database.IDExQueryBuilder;
|
||||||
|
/* */ import nc.impl.pubapp.pattern.rule.IRule;
|
||||||
|
/* */ import nc.vo.ml.NCLangRes4VoTransl;
|
||||||
|
/* */ import nc.vo.pub.lang.UFDouble;
|
||||||
|
/* */ import nc.vo.pubapp.pattern.data.IRowSet;
|
||||||
|
/* */ import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||||
|
/* */ import nc.vo.pubapp.pattern.pub.MathTool;
|
||||||
|
/* */ import nc.vo.so.m32.entity.SaleInvoiceBVO;
|
||||||
|
/* */ import nc.vo.so.m32.entity.SaleInvoiceHVO;
|
||||||
|
/* */ import nc.vo.so.m32.entity.SaleInvoiceVO;
|
||||||
|
/* */ import nc.vo.so.m32.enumeration.OpposeFlag;
|
||||||
|
/* */ import nc.vo.so.m32.util.OpposeConvertUtil;
|
||||||
|
/* */ import nc.vo.so.pub.SOTable;
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */ public class CheckOppValityRule
|
||||||
|
/* */ extends Object
|
||||||
|
/* */ implements IRule<SaleInvoiceVO>
|
||||||
|
/* */ {
|
||||||
|
/* */ public void process(SaleInvoiceVO[] vos) {
|
||||||
|
/* 40 */ List<String> aloppsrcid = new ArrayList<String>();
|
||||||
|
/* 41 */ List<String> aloppsrcbid = new ArrayList<String>();
|
||||||
|
/* */
|
||||||
|
/* 43 */ List<String> vopposesrccode = new ArrayList<String>();
|
||||||
|
/* 44 */ Map<String, UFDouble[]> map = new HashMap<String, UFDouble[]>();
|
||||||
|
/* */
|
||||||
|
/* 46 */ Map<String, UFDouble> bidMap = new HashMap<String, UFDouble>();
|
||||||
|
/* */
|
||||||
|
/* 48 */ Map<String, UFDouble> taxMap = new HashMap<String, UFDouble>();
|
||||||
|
/* */
|
||||||
|
/* 50 */ Map<String, UFDouble> opposeBidMap = new HashMap<String, UFDouble>();
|
||||||
|
/* */
|
||||||
|
/* 52 */ Map<String, UFDouble> opposeTaxMap = new HashMap<String, UFDouble>();
|
||||||
|
/* 53 */ for (SaleInvoiceVO voInvoice : vos) {
|
||||||
|
/* 54 */ if (OpposeFlag.GENERAL.equalsValue(voInvoice.getParentVO()
|
||||||
|
/* 55 */ .getFopposeflag())) {
|
||||||
|
/* */
|
||||||
|
/* 57 */ vopposesrccode.add(voInvoice.getParentVO().getVopposesrccode());
|
||||||
|
/* 58 */ aloppsrcid.add(voInvoice.getParentVO().getCopposesrcid());
|
||||||
|
/* 59 */ for (SaleInvoiceBVO bvo : voInvoice.getChildrenVO()) {
|
||||||
|
/* 60 */ aloppsrcbid.add(bvo.getCopposesrcbid());
|
||||||
|
/* 61 */ UFDouble num = (bvo.getNnum() == null) ? UFDouble.ZERO_DBL : bvo.getNnum();
|
||||||
|
/* 62 */ UFDouble mny = (bvo.getNorigtaxmny() == null) ? UFDouble.ZERO_DBL : bvo.getNorigtaxmny();
|
||||||
|
/* 63 */ map.put(bvo.getCopposesrcbid(), new UFDouble[] { num, mny });
|
||||||
|
/* */
|
||||||
|
/* 65 */ bidMap.put(bvo.getCopposesrcbid(), bvo.getNorigmny());
|
||||||
|
/* */
|
||||||
|
/* 67 */ taxMap.put(bvo.getCopposesrcbid(), bvo.getNtax());
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
/* */
|
||||||
|
/* 72 */ if (aloppsrcid.size() > 0) {
|
||||||
|
/* 73 */ String[] opposeHids = queryOpposeSaleInVoiceID((String[])vopposesrccode.toArray(new String[0]));
|
||||||
|
/* 74 */ SaleInvoiceVO[] opposeVOs = querySaleInvoiceVO(opposeHids);
|
||||||
|
/* 75 */ if (opposeVOs != null && opposeVOs.length > 0) {
|
||||||
|
/* 76 */ for (SaleInvoiceVO vo : opposeVOs) {
|
||||||
|
/* 77 */ for (SaleInvoiceBVO bvo : vo.getChildrenVO()) {
|
||||||
|
/* 78 */ if (!opposeBidMap.isEmpty() && opposeBidMap.containsKey(bvo.getCopposesrcbid())) {
|
||||||
|
/* 79 */ opposeBidMap.put(bvo.getCopposesrcbid(),
|
||||||
|
/* 80 */ MathTool.add((UFDouble)opposeBidMap.get(bvo.getCopposesrcbid()), bvo.getNorigmny()));
|
||||||
|
/* 81 */ opposeTaxMap.put(bvo.getCopposesrcbid(),
|
||||||
|
/* 82 */ MathTool.add((UFDouble)opposeTaxMap.get(bvo.getCopposesrcbid()), bvo.getNtax()));
|
||||||
|
/* */ } else {
|
||||||
|
/* 84 */ opposeBidMap.put(bvo.getCopposesrcbid(), bvo.getNorigmny());
|
||||||
|
/* 85 */ opposeTaxMap.put(bvo.getCopposesrcbid(), bvo.getNtax());
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
/* 90 */ String[] hids = (String[])aloppsrcid.toArray(new String[0]);
|
||||||
|
/* 91 */ String[] selKeys = { "fstatusflag", "fopposeflag", "bsubunitflag" };
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 96 */ VOQuery<SaleInvoiceHVO> querysrv = new VOQuery<SaleInvoiceHVO>(SaleInvoiceHVO.class, selKeys);
|
||||||
|
/* */
|
||||||
|
/* 98 */ VOQuery<SaleInvoiceBVO> querysrvb = new VOQuery<SaleInvoiceBVO>(SaleInvoiceBVO.class, new String[] { "norigmny", "csaleinvoicebid", "nnum", "norigtaxmny", "ntotalopposenum", "ntotalopposemny", "ntax", "crowno" });
|
||||||
|
/* */
|
||||||
|
/* 100 */ SaleInvoiceHVO[] voHeads = (SaleInvoiceHVO[])querysrv.query(hids);
|
||||||
|
/* 101 */ for (SaleInvoiceHVO head : voHeads) {
|
||||||
|
/* 102 */ OpposeConvertUtil.getInstance().checkOpposeVality(head);
|
||||||
|
/* */ }
|
||||||
|
/* 104 */ SaleInvoiceBVO[] bvos = (SaleInvoiceBVO[])querysrvb.query((String[])aloppsrcbid.toArray(new String[0]));
|
||||||
|
/* 105 */ for (SaleInvoiceBVO bvo : bvos) {
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 129 */ if (map.containsKey(bvo.getCsaleinvoicebid())) {
|
||||||
|
/* 130 */ if (map.get(bvo.getCsaleinvoicebid())[0].multiply(bvo.getNnum()).compareTo(UFDouble.ZERO_DBL) > 0) {
|
||||||
|
/* */
|
||||||
|
/* 132 */ ExceptionUtils.wrappBusinessException(NCLangRes4VoTransl.getNCLangRes()
|
||||||
|
/* 133 */ .getStrByID("4006008_0", "04006008-0227"));
|
||||||
|
/* 134 */ } else if (map.get(bvo.getCsaleinvoicebid())[1].multiply(bvo.getNorigtaxmny()).compareTo(UFDouble.ZERO_DBL) > 0) {
|
||||||
|
/* */
|
||||||
|
/* 136 */ ExceptionUtils.wrappBusinessException(NCLangRes4VoTransl.getNCLangRes()
|
||||||
|
/* 137 */ .getStrByID("4006008_0", "04006008-0228"));
|
||||||
|
/* */ }
|
||||||
|
/* 139 */ UFDouble ntotalopposenum = (bvo.getNtotalopposenum() == null) ? UFDouble.ZERO_DBL : bvo.getNtotalopposenum();
|
||||||
|
/* 140 */ UFDouble ntotalopposemny = (bvo.getNtotalopposemny() == null) ? UFDouble.ZERO_DBL : bvo.getNtotalopposemny();
|
||||||
|
/* 141 */ if (map.get(bvo.getCsaleinvoicebid())[0].abs().compareTo(bvo.getNnum().abs().sub(ntotalopposenum.abs())) > 0) {
|
||||||
|
/* */
|
||||||
|
/* 143 */ ExceptionUtils.wrappBusinessException(NCLangRes4VoTransl.getNCLangRes()
|
||||||
|
/* 144 */ .getStrByID("4006008_0", "04006008-0229"));
|
||||||
|
/* 145 */ } else if (map.get(bvo.getCsaleinvoicebid())[1].abs().compareTo(bvo.getNorigtaxmny().abs().sub(ntotalopposemny.abs())) > 0) {
|
||||||
|
/* */
|
||||||
|
/* 147 */ ExceptionUtils.wrappBusinessException(NCLangRes4VoTransl.getNCLangRes()
|
||||||
|
/* 148 */ .getStrByID("4006008_0", "04006008-0230"));
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */ private String[] queryOpposeSaleInVoiceID(String[] vopposesrccode) {
|
||||||
|
/* 160 */ if (vopposesrccode == null || vopposesrccode.length == 0) {
|
||||||
|
/* 161 */ return null;
|
||||||
|
/* */ }
|
||||||
|
/* 163 */ StringBuilder sql = new StringBuilder("select csaleinvoiceid from so_saleinvoice");
|
||||||
|
/* 164 */ sql.append(" where so_saleinvoice.dr = 0 and ");
|
||||||
|
/* 165 */ IDExQueryBuilder idqb = new IDExQueryBuilder(SOTable.TMP_SO_ID1.getName());
|
||||||
|
/* 166 */ String where = idqb.buildSQL("vopposesrccode", vopposesrccode);
|
||||||
|
/* 167 */ sql.append(where);
|
||||||
|
/* 168 */ DataAccessUtils utils = new DataAccessUtils();
|
||||||
|
/* 169 */ IRowSet rowset = utils.query(sql.toString());
|
||||||
|
/* 170 */ return rowset.toOneDimensionStringArray();
|
||||||
|
/* */ }
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */ public SaleInvoiceVO[] querySaleInvoiceVO(String[] hids) {
|
||||||
|
/* 182 */ if (hids == null || hids.length == 0) {
|
||||||
|
/* 183 */ return null;
|
||||||
|
/* */ }
|
||||||
|
/* */
|
||||||
|
/* 186 */ BillQuery<SaleInvoiceVO> query = new BillQuery<SaleInvoiceVO>(SaleInvoiceVO.class);
|
||||||
|
/* */
|
||||||
|
/* 188 */ return (SaleInvoiceVO[])query.query(hids);
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
|
||||||
|
|
||||||
|
/* Location: E:\project\yonyou\tk_gjb\YonBIP2312\modules\so\META-INF\lib\so_saleinvoice.jar!/nc/bs/so/m32/maintain/rule/insert/CheckOppValityRule.class
|
||||||
|
* Java compiler version: 17 (61.0)
|
||||||
|
* JD-Core Version: 1.0.7
|
||||||
|
*/
|
|
@ -0,0 +1,109 @@
|
||||||
|
/* */ package nc.bs.so.m32.maintain.rule.insert;
|
||||||
|
/* */
|
||||||
|
/* */ import java.util.HashMap;
|
||||||
|
/* */ import java.util.Map;
|
||||||
|
/* */ import nc.bs.framework.common.NCLocator;
|
||||||
|
/* */ import nc.impl.pubapp.pattern.rule.IRule;
|
||||||
|
/* */ import nc.pubitf.so.m35.so.m32.IArsubToSaleInvoice;
|
||||||
|
/* */ import nc.vo.pub.BusinessException;
|
||||||
|
/* */ import nc.vo.pub.lang.UFDouble;
|
||||||
|
/* */ import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||||
|
/* */ import nc.vo.scmpub.res.billtype.SOBillType;
|
||||||
|
/* */ import nc.vo.so.m32.entity.SaleInvoiceBVO;
|
||||||
|
/* */ import nc.vo.so.m32.entity.SaleInvoiceHVO;
|
||||||
|
/* */ import nc.vo.so.m32.entity.SaleInvoiceVO;
|
||||||
|
/* */ import nc.vo.so.m32.enumeration.OpposeFlag;
|
||||||
|
/* */ import nc.vo.so.m35.entity.ArsubInterfaceVO;
|
||||||
|
/* */ import nc.vo.so.m35.paravo.OffsetParaVO;
|
||||||
|
/* */ import nc.vo.so.pub.util.SOMathUtil;
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */ public class OppOffsetRule
|
||||||
|
/* */ extends Object
|
||||||
|
/* */ implements IRule<SaleInvoiceVO>
|
||||||
|
/* */ {
|
||||||
|
/* */ public void process(SaleInvoiceVO[] vos) {
|
||||||
|
/* 36 */ Map<String, ArsubInterfaceVO> itfvos = new HashMap<String, ArsubInterfaceVO>();
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 39 */ Map<String, UFDouble> offsetmnymap = new HashMap<String, UFDouble>();
|
||||||
|
/* 40 */ Map<String, OffsetParaVO> offsetparavos = new HashMap<String, OffsetParaVO>();
|
||||||
|
/* */
|
||||||
|
/* 42 */ prepareParas(vos, itfvos, offsetparavos, offsetmnymap);
|
||||||
|
/* */
|
||||||
|
/* 44 */ if (itfvos.size() == 0) {
|
||||||
|
/* */ return;
|
||||||
|
/* */ }
|
||||||
|
/* */
|
||||||
|
/* 48 */ IArsubToSaleInvoice srv = (IArsubToSaleInvoice)NCLocator.getInstance().lookup(IArsubToSaleInvoice.class);
|
||||||
|
/* */ try {
|
||||||
|
/* 50 */ srv.processOffsetWithOpp(itfvos, offsetparavos, offsetmnymap);
|
||||||
|
/* */ }
|
||||||
|
/* 52 */ catch (BusinessException e) {
|
||||||
|
/* 53 */ ExceptionUtils.wrappException(e);
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */ private void prepareParas(SaleInvoiceVO[] vos, Map<String, ArsubInterfaceVO> itfvos, Map<String, OffsetParaVO> offsetparavos, Map<String, UFDouble> offsetmnymap) {
|
||||||
|
/* 62 */ for (SaleInvoiceVO vo : vos) {
|
||||||
|
/* */
|
||||||
|
/* 64 */ SaleInvoiceHVO hvo = vo.getParentVO();
|
||||||
|
/* 65 */ SaleInvoiceBVO[] bvos = vo.getChildrenVO();
|
||||||
|
/* 66 */ if (OpposeFlag.GENERAL.equalsValue(hvo.getFopposeflag()))
|
||||||
|
/* */ {
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 70 */ if (null != hvo.getBsubunitflag() && hvo
|
||||||
|
/* 71 */ .getBsubunitflag().booleanValue())
|
||||||
|
/* */ {
|
||||||
|
/* */
|
||||||
|
/* 74 */ for (SaleInvoiceBVO bvo : bvos) {
|
||||||
|
/* */
|
||||||
|
/* 76 */ if (!SOMathUtil.isZero(bvo.getNorigsubmny())) {
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 79 */ String bid = bvo.getCsaleinvoicebid();
|
||||||
|
/* 80 */ offsetmnymap.put(bid, bvo.getNorigsubmny());
|
||||||
|
/* */
|
||||||
|
/* 82 */ ArsubInterfaceVO itfvo = new ArsubInterfaceVO();
|
||||||
|
/* 83 */ itfvo.setCsalebillid(bvo.getCsaleinvoiceid());
|
||||||
|
/* 84 */ itfvo.setVbillcode(hvo.getVbillcode());
|
||||||
|
/* 85 */ itfvo.setVbilltype(SOBillType.Invoice.getCode());
|
||||||
|
/* 86 */ itfvos.put(bid, itfvo);
|
||||||
|
/* */
|
||||||
|
/* 88 */ OffsetParaVO paravo = new OffsetParaVO();
|
||||||
|
/* 89 */ paravo.setCorigcurrencyid(hvo.getCorigcurrencyid());
|
||||||
|
/* 90 */ paravo.setInvoicecusts(hvo.getCinvoicecustid());
|
||||||
|
/* 91 */ paravo.setOrdercusts(bvo.getCordercustid());
|
||||||
|
/* 92 */ paravo.setOrdertrantype(bvo.getVfirsttrantype());
|
||||||
|
/* 93 */ paravo.setProdline(bvo.getCprodlineid());
|
||||||
|
/* 94 */ paravo.setSaleorg(bvo.getPk_org());
|
||||||
|
/* 95 */ paravo.setSettleorg(bvo.getPk_org());
|
||||||
|
/* 96 */ offsetparavos.put(bvo.getCsaleinvoicebid(), paravo);
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
|
||||||
|
|
||||||
|
/* Location: E:\project\yonyou\tk_gjb\YonBIP2312\modules\so\META-INF\lib\so_saleinvoice.jar!/nc/bs/so/m32/maintain/rule/insert/OppOffsetRule.class
|
||||||
|
* Java compiler version: 17 (61.0)
|
||||||
|
* JD-Core Version: 1.0.7
|
||||||
|
*/
|
|
@ -0,0 +1,54 @@
|
||||||
|
/* */ package nc.bs.so.m32.maintain.rule.insert;
|
||||||
|
/* */
|
||||||
|
/* */ import java.util.ArrayList;
|
||||||
|
/* */ import java.util.List;
|
||||||
|
/* */ import nc.impl.pubapp.pattern.rule.IRule;
|
||||||
|
/* */ import nc.pubitf.so.m32.so.m32.RewritePara32For32Opp;
|
||||||
|
/* */ import nc.vo.pubapp.pattern.pub.MathTool;
|
||||||
|
/* */ import nc.vo.pubapp.pattern.pub.PubAppTool;
|
||||||
|
/* */ import nc.vo.so.m32.entity.SaleInvoiceBVO;
|
||||||
|
/* */ import nc.vo.so.m32.entity.SaleInvoiceVO;
|
||||||
|
/* */ import nc.vo.so.m32.enumeration.OpposeFlag;
|
||||||
|
/* */ import nc.vo.so.m32.util.RemoteFormSOUtil;
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* */ public class UpdateOppInsertRule
|
||||||
|
/* */ extends Object
|
||||||
|
/* */ implements IRule<SaleInvoiceVO>
|
||||||
|
/* */ {
|
||||||
|
/* */ public void process(SaleInvoiceVO[] vos) {
|
||||||
|
/* 30 */ List<RewritePara32For32Opp> paraList = new ArrayList<RewritePara32For32Opp>();
|
||||||
|
/* 31 */ for (SaleInvoiceVO vo : vos) {
|
||||||
|
/* 32 */ if (vo.getParentVO().getFopposeflag().intValue() == OpposeFlag.GENERAL.toIntValue()) {
|
||||||
|
/* */
|
||||||
|
/* */
|
||||||
|
/* 35 */ SaleInvoiceBVO[] bvos = vo.getChildrenVO();
|
||||||
|
/* 36 */ for (SaleInvoiceBVO bvo : bvos) {
|
||||||
|
/* 37 */ if (!PubAppTool.isNull(bvo.getCopposesrcbid())) {
|
||||||
|
/* 38 */ RewritePara32For32Opp para = new RewritePara32For32Opp(bvo.getCopposesrcbid(), MathTool.oppose(bvo.getNnum()), MathTool.oppose(bvo.getNorigtaxmny()));
|
||||||
|
/* 39 */ paraList.add(para);
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
/* 43 */ } if (paraList.isEmpty()) {
|
||||||
|
/* */ return;
|
||||||
|
/* */ }
|
||||||
|
/* 46 */ RemoteFormSOUtil.rewrite32For32Opp((RewritePara32For32Opp[])paraList.toArray(new RewritePara32For32Opp[0]));
|
||||||
|
/* */ }
|
||||||
|
/* */ }
|
||||||
|
|
||||||
|
|
||||||
|
/* Location: E:\project\yonyou\tk_gjb\YonBIP2312\modules\so\META-INF\lib\so_saleinvoice.jar!/nc/bs/so/m32/maintain/rule/insert/UpdateOppInsertRule.class
|
||||||
|
* Java compiler version: 17 (61.0)
|
||||||
|
* JD-Core Version: 1.0.7
|
||||||
|
*/
|
|
@ -0,0 +1,121 @@
|
||||||
|
//
|
||||||
|
// Source code recreated from a .class file by IntelliJ IDEA
|
||||||
|
// (powered by FernFlower decompiler)
|
||||||
|
//
|
||||||
|
|
||||||
|
package nc.bs.so.m32.maintain.rule.update;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import nc.impl.pubapp.pattern.data.bill.BillQuery;
|
||||||
|
import nc.impl.pubapp.pattern.data.vo.VOQuery;
|
||||||
|
import nc.impl.pubapp.pattern.database.DataAccessUtils;
|
||||||
|
import nc.impl.pubapp.pattern.database.IDExQueryBuilder;
|
||||||
|
import nc.impl.pubapp.pattern.rule.IRule;
|
||||||
|
import nc.vo.ml.NCLangRes4VoTransl;
|
||||||
|
import nc.vo.pub.lang.UFDouble;
|
||||||
|
import nc.vo.pubapp.pattern.data.IRowSet;
|
||||||
|
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||||
|
import nc.vo.pubapp.pattern.pub.MathTool;
|
||||||
|
import nc.vo.scmpub.util.CollectionUtils;
|
||||||
|
import nc.vo.so.m32.entity.SaleInvoiceBVO;
|
||||||
|
import nc.vo.so.m32.entity.SaleInvoiceVO;
|
||||||
|
import nc.vo.so.m32.enumeration.OpposeFlag;
|
||||||
|
import nc.vo.so.pub.SOTable;
|
||||||
|
|
||||||
|
public class CheckOppValityUpdateRule implements IRule<SaleInvoiceVO> {
|
||||||
|
public CheckOppValityUpdateRule() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void process(SaleInvoiceVO[] vos) {
|
||||||
|
List<String> aloppsrcbid = new ArrayList();
|
||||||
|
List<String> vopposesrccode = new ArrayList();
|
||||||
|
Map<String, UFDouble[]> map = new HashMap();
|
||||||
|
Map<String, UFDouble> bidMap = new HashMap();
|
||||||
|
Map<String, UFDouble> taxMap = new HashMap();
|
||||||
|
Map<String, UFDouble> opposeBidMap = new HashMap();
|
||||||
|
Map<String, UFDouble> opposeTaxMap = new HashMap();
|
||||||
|
|
||||||
|
for(SaleInvoiceVO voInvoice : vos) {
|
||||||
|
if (OpposeFlag.GENERAL.equalsValue(voInvoice.getParentVO().getFopposeflag())) {
|
||||||
|
vopposesrccode.add(voInvoice.getParentVO().getVopposesrccode());
|
||||||
|
|
||||||
|
for(SaleInvoiceBVO bvo : voInvoice.getChildrenVO()) {
|
||||||
|
aloppsrcbid.add(bvo.getCopposesrcbid());
|
||||||
|
UFDouble num = bvo.getNnum() == null ? UFDouble.ZERO_DBL : bvo.getNnum();
|
||||||
|
UFDouble mny = bvo.getNorigtaxmny() == null ? UFDouble.ZERO_DBL : bvo.getNorigtaxmny();
|
||||||
|
map.put(bvo.getCopposesrcbid(), new UFDouble[]{num, mny});
|
||||||
|
bidMap.put(bvo.getCopposesrcbid(), bvo.getNorigmny());
|
||||||
|
taxMap.put(bvo.getCopposesrcbid(), bvo.getNtax());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!aloppsrcbid.isEmpty()) {
|
||||||
|
String[] opposeHids = this.queryOpposeSaleInVoiceID((String[])vopposesrccode.toArray(new String[0]));
|
||||||
|
List<String> list = new ArrayList();
|
||||||
|
CollectionUtils.addArrayToList(list, opposeHids);
|
||||||
|
if (list.contains(vos[0].getParentVO().getCsaleinvoiceid())) {
|
||||||
|
list.remove(vos[0].getParentVO().getCsaleinvoiceid());
|
||||||
|
}
|
||||||
|
|
||||||
|
opposeHids = (String[])list.toArray(new String[0]);
|
||||||
|
SaleInvoiceVO[] opposeVOs = this.querySaleInvoiceVO(opposeHids);
|
||||||
|
if (opposeVOs != null && opposeVOs.length > 0) {
|
||||||
|
for(SaleInvoiceVO vo : opposeVOs) {
|
||||||
|
for(SaleInvoiceBVO bvo : vo.getChildrenVO()) {
|
||||||
|
if (!opposeBidMap.isEmpty() && opposeBidMap.containsKey(bvo.getCopposesrcbid())) {
|
||||||
|
opposeBidMap.put(bvo.getCopposesrcbid(), MathTool.add((UFDouble)opposeBidMap.get(bvo.getCopposesrcbid()), bvo.getNorigmny()));
|
||||||
|
opposeTaxMap.put(bvo.getCopposesrcbid(), MathTool.add((UFDouble)opposeTaxMap.get(bvo.getCopposesrcbid()), bvo.getNtax()));
|
||||||
|
} else {
|
||||||
|
opposeBidMap.put(bvo.getCopposesrcbid(), bvo.getNorigmny());
|
||||||
|
opposeTaxMap.put(bvo.getCopposesrcbid(), bvo.getNtax());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VOQuery<SaleInvoiceBVO> querysrvb = new VOQuery(SaleInvoiceBVO.class, new String[]{"norigmny", "csaleinvoicebid", "nnum", "norigtaxmny", "ntotalopposenum", "ntotalopposemny", "ntax", "crowno"});
|
||||||
|
SaleInvoiceBVO[] bvos = (SaleInvoiceBVO[])querysrvb.query((String[])aloppsrcbid.toArray(new String[0]));
|
||||||
|
|
||||||
|
for(SaleInvoiceBVO bvo : bvos) {
|
||||||
|
if (map.containsKey(bvo.getCsaleinvoicebid())) {
|
||||||
|
if (((UFDouble[])map.get(bvo.getCsaleinvoicebid()))[0].multiply(bvo.getNnum()).compareTo(UFDouble.ZERO_DBL) > 0) {
|
||||||
|
ExceptionUtils.wrappBusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006008_0", "04006008-0227"));
|
||||||
|
} else if (((UFDouble[])map.get(bvo.getCsaleinvoicebid()))[1].multiply(bvo.getNorigtaxmny()).compareTo(UFDouble.ZERO_DBL) > 0) {
|
||||||
|
ExceptionUtils.wrappBusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006008_0", "04006008-0228"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private String[] queryOpposeSaleInVoiceID(String[] vopposesrccode) {
|
||||||
|
if (vopposesrccode != null && vopposesrccode.length != 0) {
|
||||||
|
StringBuilder sql = new StringBuilder("select csaleinvoiceid from so_saleinvoice");
|
||||||
|
sql.append(" where so_saleinvoice.dr = 0 and ");
|
||||||
|
IDExQueryBuilder idqb = new IDExQueryBuilder(SOTable.TMP_SO_ID1.getName());
|
||||||
|
String where = idqb.buildSQL("vopposesrccode", vopposesrccode);
|
||||||
|
sql.append(where);
|
||||||
|
DataAccessUtils utils = new DataAccessUtils();
|
||||||
|
IRowSet rowset = utils.query(sql.toString());
|
||||||
|
String[] cbillid = rowset.toOneDimensionStringArray();
|
||||||
|
return cbillid;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public SaleInvoiceVO[] querySaleInvoiceVO(String[] hids) {
|
||||||
|
if (hids != null && hids.length != 0) {
|
||||||
|
BillQuery<SaleInvoiceVO> query = new BillQuery(SaleInvoiceVO.class);
|
||||||
|
SaleInvoiceVO[] bills = (SaleInvoiceVO[])query.query(hids);
|
||||||
|
return bills;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,325 @@
|
||||||
|
package nc.vo.so.m32.saleinvoice.operator;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.bean.copier.CopyOptions;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
|
import nc.bs.framework.common.NCLocator;
|
||||||
|
import nc.bs.framework.core.util.ObjectCreator;
|
||||||
|
import nc.bs.ia.audit.pub.CloneUtil;
|
||||||
|
import nc.bs.logging.Logger;
|
||||||
|
import nc.bs.pub.common.PfServiceScmUtil;
|
||||||
|
import nc.bs.trade.business.HYSuperDMO;
|
||||||
|
import nc.itf.uap.IUAPQueryBS;
|
||||||
|
import nc.pubitf.so.m32.api.ISaleinvoiceQueryAPI;
|
||||||
|
import nc.vo.pub.BusinessException;
|
||||||
|
import nc.vo.pub.lang.UFBoolean;
|
||||||
|
import nc.vo.pub.lang.UFDate;
|
||||||
|
import nc.vo.pub.lang.UFDouble;
|
||||||
|
import nc.vo.scmpub.res.billtype.SOBillType;
|
||||||
|
import nc.vo.so.m32.entity.SaleInvoiceBVO;
|
||||||
|
import nc.vo.so.m32.entity.SaleInvoiceHVO;
|
||||||
|
import nc.vo.so.m32.entity.SaleInvoiceVO;
|
||||||
|
import nc.vo.sscivm.ivsale.IVApplicationAggVO;
|
||||||
|
import nc.vo.sscivm.ivsale.IVApplicationBodyVO;
|
||||||
|
import nc.vo.sscivm.ivsale.IVApplicationHeadVO;
|
||||||
|
import nccloud.api.baseapp.exchange.convert.IExchangeForService;
|
||||||
|
import nccloud.api.baseapp.exchange.convert.OpenApiConvertDataObject;
|
||||||
|
import nccloud.api.baseapp.exchange.convert.OpenApiConvertDataResult;
|
||||||
|
import nccloud.api.rest.utils.ResultMessageUtil;
|
||||||
|
|
||||||
|
import nccloud.framework.service.ServiceLocator;
|
||||||
|
import nccloud.itf.sscivm.ivsale.service.IVApplicationService;
|
||||||
|
import nccloud.ws.rest.resource.AbstractNCCRestResource;
|
||||||
|
import org.json.JSONString;
|
||||||
|
import uap.mw.trans.TransactionFactory;
|
||||||
|
|
||||||
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.POST;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.Produces;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
|
@Path("so/saleinvoice/operator")
|
||||||
|
public class billSaveAction extends AbstractNCCRestResource {
|
||||||
|
|
||||||
|
public static String fplxStr = "";//开票申请发票类型
|
||||||
|
|
||||||
|
public billSaveAction() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public OpenApiConvertDataResult changeToExchangeData(OpenApiConvertDataObject openApiConvertDataObject)
|
||||||
|
throws Exception {
|
||||||
|
return getPFxxEJBService().changeToExchangeData(openApiConvertDataObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IExchangeForService getPFxxEJBService() {
|
||||||
|
IExchangeForService exchangeForService = (IExchangeForService) ObjectCreator.newInstance("ufesbexpress",
|
||||||
|
"nccloud.pubimpl.pfxx.convert.ExchangeForServiceImpl");
|
||||||
|
return exchangeForService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getModule() {
|
||||||
|
return "so";
|
||||||
|
}
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Path("/billSaveRp")
|
||||||
|
@Consumes({"application/json"})
|
||||||
|
@Produces({"application/json"})
|
||||||
|
public JSONString billSaveRp(JSONString json) throws Exception {
|
||||||
|
/**
|
||||||
|
* 销售发票红冲:
|
||||||
|
* 1.根据bip传参中的销售发票主表id查询erp的销售发票VO
|
||||||
|
* 2.根据查询的销售发票VO生成红冲的销售发票
|
||||||
|
*/
|
||||||
|
JSONObject jobject = JSONObject.parseObject(json.toJSONString());
|
||||||
|
if (jobject == null) {
|
||||||
|
return ResultMessageUtil.exceptionToJSON(new NullPointerException("JSONString:null"));
|
||||||
|
}
|
||||||
|
JSONObject bject = jobject.getJSONObject("billhead");
|
||||||
|
if (bject == null) {
|
||||||
|
return ResultMessageUtil.exceptionToJSON(new NullPointerException("billhead:null"));
|
||||||
|
}
|
||||||
|
String csaleinvoiceid = bject.getString("csaleinvoiceid"); //销售发票id
|
||||||
|
//根据销售发票主实体id查询销售发票
|
||||||
|
String[] ids = {csaleinvoiceid};
|
||||||
|
SaleInvoiceVO[] saleInvoiceVOs = NCLocator.getInstance().lookup(ISaleinvoiceQueryAPI.class)
|
||||||
|
.queryVOByIDs(ids);
|
||||||
|
if(saleInvoiceVOs.length <= 0){
|
||||||
|
return ResultMessageUtil.exceptionToJSON(new NullPointerException("未查询到Erp对应的销售发票"));
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
//手动开启事务
|
||||||
|
TransactionFactory.getTMProxy().begin(3,0);
|
||||||
|
//调用函数根据原销售发票组装新红冲发票
|
||||||
|
SaleInvoiceVO saleInvoiceRedRushVO = makeNewRedRushSaleInvoice(saleInvoiceVOs[0],bject);
|
||||||
|
//生成红冲发票
|
||||||
|
SaleInvoiceVO[] returnSaleInvoiceVO = (SaleInvoiceVO[])PfServiceScmUtil.processBatch("WRITE", SOBillType.Invoice.getCode(), new SaleInvoiceVO[] { saleInvoiceRedRushVO }, null, null);
|
||||||
|
if(returnSaleInvoiceVO !=null && returnSaleInvoiceVO.length > 0) {
|
||||||
|
//生成红冲发票成功后,执行开票申请红冲逻辑
|
||||||
|
/**
|
||||||
|
* 开票申请红冲逻辑:
|
||||||
|
* 1.根据销售发票号查询下游开票申请
|
||||||
|
* 2.根据原开票申请生成新红冲
|
||||||
|
*/
|
||||||
|
String vBillcode = saleInvoiceVOs[0].getParentVO().getVbillcode();
|
||||||
|
HYSuperDMO dmo = new HYSuperDMO();
|
||||||
|
//开票申请单主表
|
||||||
|
IVApplicationHeadVO[] iVApplicationHeadVO=(IVApplicationHeadVO[]) dmo.queryByWhereClause(IVApplicationHeadVO.class, "src_billno='"+vBillcode+"' and dr=0 ");
|
||||||
|
String pk_ivapplication = iVApplicationHeadVO[0].getPk_ivapplication(); //开票申请id
|
||||||
|
//开票申请单子表
|
||||||
|
IVApplicationBodyVO[] iVApplicationBodyVOs=(IVApplicationBodyVO[]) dmo.queryByWhereClause(IVApplicationBodyVO.class, "pk_ivapplication='"+pk_ivapplication+"' and dr=0 ");
|
||||||
|
//调用函数封装开票申请红冲VO
|
||||||
|
IVApplicationAggVO iVApplicationAggVO = makeNewRedRushIVApplicationAggVO(iVApplicationHeadVO[0],iVApplicationBodyVOs,bject);
|
||||||
|
//生成红冲的开票申请
|
||||||
|
// IVApplicationService ivApplicationServiceservice = (IVApplicationService) ServiceLocator.find(IVApplicationService.class);
|
||||||
|
// IVApplicationAggVO returnIVApplicationAggVO = ivApplicationServiceservice.save(iVApplicationAggVO);
|
||||||
|
Object returnIVApplicationAggVO = PfServiceScmUtil.processBatch("SAVE", "SSCIVA", new IVApplicationAggVO[] { iVApplicationAggVO }, null, null);
|
||||||
|
if(returnIVApplicationAggVO != null ) {
|
||||||
|
//正常结束
|
||||||
|
TransactionFactory.getTMProxy().end(null);
|
||||||
|
return ResultMessageUtil.toJSON(null, "接口调用成功");
|
||||||
|
}else{
|
||||||
|
Exception e = new Exception("接口调用失败");
|
||||||
|
return ResultMessageUtil.exceptionToJSON(e);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
Exception e = new Exception("接口调用失败");
|
||||||
|
return ResultMessageUtil.exceptionToJSON(e);
|
||||||
|
}
|
||||||
|
}catch (BusinessException e) {
|
||||||
|
//异常回滚
|
||||||
|
TransactionFactory.getTMProxy().end(e);
|
||||||
|
Logger.error("writeBack Error: ",e);
|
||||||
|
return ResultMessageUtil.exceptionToJSON(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构造红冲发票VO
|
||||||
|
* @param originalSaleInvoiceVO
|
||||||
|
* @param bject
|
||||||
|
* @return
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public static SaleInvoiceVO makeNewRedRushSaleInvoice(SaleInvoiceVO originalSaleInvoiceVO,JSONObject bject) throws Exception {
|
||||||
|
try {
|
||||||
|
SaleInvoiceVO saleInvoiceVO = new SaleInvoiceVO();
|
||||||
|
SaleInvoiceHVO saleInvoiceHVO = originalSaleInvoiceVO.getParentVO(); //主实体
|
||||||
|
SaleInvoiceBVO[] saleInvoiceBVOs = originalSaleInvoiceVO.getChildrenVO(); //子实体
|
||||||
|
SaleInvoiceHVO newSaleInvoiceHVO = new SaleInvoiceHVO(); //新主实体
|
||||||
|
|
||||||
|
//子实体属性赋值
|
||||||
|
UFDouble sumNum = new UFDouble(); //合计数量
|
||||||
|
UFDouble sumNtax = new UFDouble(); //合计税额
|
||||||
|
UFDouble sumNcaltaxmny = new UFDouble(); //合计计税金额
|
||||||
|
UFDouble sumNorigmny = new UFDouble(); //合计无税金额
|
||||||
|
UFDouble sumNorigtaxmny = new UFDouble(); //合计价税合计
|
||||||
|
int i = 0;
|
||||||
|
com.alibaba.fastjson.JSONArray paramsSaleInvoiceBVOsJSA = (com.alibaba.fastjson.JSONArray)bject.get("SaleInvoiceBVOs"); //参数子实体数组
|
||||||
|
List<JSONObject> paramsSaleInvoiceBVOs = paramsSaleInvoiceBVOsJSA.toJavaList(JSONObject.class);
|
||||||
|
SaleInvoiceBVO[] newSaleInvoiceBVOs = new SaleInvoiceBVO[paramsSaleInvoiceBVOs.size()]; //新子实体
|
||||||
|
for(SaleInvoiceBVO saleInvoiceBVO : saleInvoiceBVOs){
|
||||||
|
String csaleinvoicebid = saleInvoiceBVO.getCsaleinvoicebid(); //子表id
|
||||||
|
//筛选参数红冲的子表集合
|
||||||
|
List<JSONObject> newParamsSaleInvoiceBVOs = paramsSaleInvoiceBVOs.stream().filter(item->{
|
||||||
|
String parCsaleinvoicebid = item.getString("csaleinvoicebid")+"";
|
||||||
|
return csaleinvoicebid.equals(parCsaleinvoicebid);
|
||||||
|
}).toList();
|
||||||
|
if(newParamsSaleInvoiceBVOs.size()<=0){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
JSONObject paramSaleInvoiceBVO = newParamsSaleInvoiceBVOs.get(0); //参数子表
|
||||||
|
SaleInvoiceBVO newSaleInvoiceBVO = new SaleInvoiceBVO();
|
||||||
|
// BeanUtil.copyProperties(saleInvoiceBVO,newSaleInvoiceBVO);
|
||||||
|
//克隆取值原子表销售发票
|
||||||
|
newSaleInvoiceBVO = (SaleInvoiceBVO)CloneUtil.depthClone(saleInvoiceBVO);
|
||||||
|
//赋值之后修改子实体红冲时字段
|
||||||
|
newSaleInvoiceBVO.setCsaleinvoicebid(null); //发票子实体id
|
||||||
|
newSaleInvoiceBVO.setDbilldate(newSaleInvoiceHVO.getDbilldate()); //开票日期
|
||||||
|
newSaleInvoiceBVO.setNastnum(new UFDouble(paramSaleInvoiceBVO.getString("nastnum"))); //数量
|
||||||
|
newSaleInvoiceBVO.setNnum(new UFDouble(paramSaleInvoiceBVO.getString("nnum"))); //主数量
|
||||||
|
newSaleInvoiceBVO.setNtax(new UFDouble(paramSaleInvoiceBVO.getString("ntax"))); //税额
|
||||||
|
newSaleInvoiceBVO.setNmny(new UFDouble(paramSaleInvoiceBVO.getString("nmny"))); //本币无税金额
|
||||||
|
newSaleInvoiceBVO.setNtaxmny(new UFDouble(paramSaleInvoiceBVO.getString("ntaxmny"))); //本币价税合计
|
||||||
|
newSaleInvoiceBVO.setNcaltaxmny(new UFDouble(paramSaleInvoiceBVO.getString("ncaltaxmny"))); //计税金额
|
||||||
|
newSaleInvoiceBVO.setNorigmny(new UFDouble(paramSaleInvoiceBVO.getString("norigmny"))); //无税金额
|
||||||
|
newSaleInvoiceBVO.setNorigtaxmny(new UFDouble(paramSaleInvoiceBVO.getString("norigtaxmny"))); //价税合计
|
||||||
|
newSaleInvoiceBVO.setCopposesrcbid(paramSaleInvoiceBVO.getString("csaleinvoicebid")); //对冲来源子表id
|
||||||
|
newSaleInvoiceBVO.setNqtunitnum(null); //报价数量
|
||||||
|
newSaleInvoiceBVO.setCsaleinvoiceid(null); //发票关联主表id
|
||||||
|
newSaleInvoiceBVO.setNtotalcostnum(null); //累计成本结算数量
|
||||||
|
newSaleInvoiceBVO.setNtotalincomemny(null); //累计确认应收金额
|
||||||
|
newSaleInvoiceBVO.setNtotalincomenum(null); //累计确认应收数量
|
||||||
|
newSaleInvoiceBVO.setVchangerate("1.00/1.00"); //换算率
|
||||||
|
newSaleInvoiceBVOs[i++] = newSaleInvoiceBVO;
|
||||||
|
sumNum = sumNum.add(new UFDouble(paramSaleInvoiceBVO.getString("nnum")));
|
||||||
|
sumNtax = sumNtax.add(new UFDouble(paramSaleInvoiceBVO.getString("ntax")));
|
||||||
|
sumNcaltaxmny = sumNcaltaxmny.add(new UFDouble(paramSaleInvoiceBVO.getString("ncaltaxmny")));
|
||||||
|
sumNorigmny = sumNorigmny.add(new UFDouble(paramSaleInvoiceBVO.getString("norigmny")));
|
||||||
|
sumNorigtaxmny = sumNorigtaxmny.add(new UFDouble(paramSaleInvoiceBVO.getString("norigtaxmny")));
|
||||||
|
}
|
||||||
|
|
||||||
|
//克隆取值原子表销售发票
|
||||||
|
newSaleInvoiceHVO = (SaleInvoiceHVO)CloneUtil.depthClone(saleInvoiceHVO);
|
||||||
|
//赋值之后修改主实体红冲时字段
|
||||||
|
newSaleInvoiceHVO.setCsaleinvoiceid(null); //发票主实体id
|
||||||
|
newSaleInvoiceHVO.setVbillcode(null); //发票号
|
||||||
|
newSaleInvoiceHVO.setDbilldate(new UFDate()); //开票日期
|
||||||
|
newSaleInvoiceHVO.setDmakedate(new UFDate()); //制单日期
|
||||||
|
newSaleInvoiceHVO.setBsubunitflag(UFBoolean.TRUE); //冲抵标记
|
||||||
|
newSaleInvoiceHVO.setFopposeflag(2); //对冲标记 (2:对冲生成)
|
||||||
|
newSaleInvoiceHVO.setFstatusflag(1); //单据状态 (1:自由态)
|
||||||
|
newSaleInvoiceHVO.setNtotalastnum(null); //总数量
|
||||||
|
newSaleInvoiceHVO.setNtotalorigsubmny(null); //冲抵金额
|
||||||
|
newSaleInvoiceHVO.setNtotalorigmny(null); //价税合计
|
||||||
|
newSaleInvoiceHVO.setVopposesrccode(saleInvoiceHVO.getVbillcode()); //对冲来源发票号
|
||||||
|
newSaleInvoiceHVO.setCopposesrcid(saleInvoiceHVO.getCsaleinvoiceid()); //对冲来源发票id
|
||||||
|
newSaleInvoiceHVO.setApprover(null); //审批人
|
||||||
|
newSaleInvoiceHVO.setTaudittime(null); //审批日期
|
||||||
|
|
||||||
|
//组装VO
|
||||||
|
saleInvoiceVO.setParentVO(newSaleInvoiceHVO);
|
||||||
|
saleInvoiceVO.setChildrenVO(newSaleInvoiceBVOs);
|
||||||
|
return saleInvoiceVO;
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new BusinessException(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构造红冲开票申请VO
|
||||||
|
* @param ivApplicationHeadVO
|
||||||
|
* @param ivApplicationBodyVOS
|
||||||
|
* @param bject
|
||||||
|
* @return
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public static IVApplicationAggVO makeNewRedRushIVApplicationAggVO(IVApplicationHeadVO ivApplicationHeadVO,IVApplicationBodyVO[] ivApplicationBodyVOS, JSONObject bject) throws Exception {
|
||||||
|
try {
|
||||||
|
IVApplicationAggVO ivApplicationAggVO = new IVApplicationAggVO();
|
||||||
|
IVApplicationHeadVO newivApplicationHeadVO = new IVApplicationHeadVO(); //新主实体
|
||||||
|
|
||||||
|
//主实体属性赋值
|
||||||
|
// BeanUtil.copyProperties(ivApplicationHeadVO,newivApplicationHeadVO, CopyOptions.create().setIgnoreNullValue(true));
|
||||||
|
//克隆取值原子表开票申请
|
||||||
|
newivApplicationHeadVO = (IVApplicationHeadVO)CloneUtil.depthClone(ivApplicationHeadVO);
|
||||||
|
//根据参数判断是否为部分红冲
|
||||||
|
boolean isPartHCFlag = false;
|
||||||
|
UFDouble paramNtotalorigmny = new UFDouble(bject.getString("ntotalorigmny")); //参数价税合计(主表红冲金额)
|
||||||
|
UFDouble ntotalorigmny = ivApplicationHeadVO.getJshj(); //原开票申请主表价税合计
|
||||||
|
//红冲金额与开票申请源价税合计比较如果和值大于零,则为部分红冲
|
||||||
|
if(ntotalorigmny.add(paramNtotalorigmny).compareTo(UFDouble.ZERO_DBL) > 0){
|
||||||
|
isPartHCFlag = true;
|
||||||
|
}
|
||||||
|
UFDouble sumXmsl = new UFDouble(); //合计数量
|
||||||
|
UFDouble sumXmje = new UFDouble(); //合计金额
|
||||||
|
UFDouble sumXmjshj = new UFDouble(); //合计价税合计
|
||||||
|
UFDouble sumBchcje = new UFDouble(); //合计本次红冲金额
|
||||||
|
//子实体属性赋值
|
||||||
|
int i = 0;
|
||||||
|
com.alibaba.fastjson.JSONArray paramsSaleInvoiceBVOsJSA = (com.alibaba.fastjson.JSONArray)bject.get("SaleInvoiceBVOs"); //参数子实体数组
|
||||||
|
List<JSONObject> paramsSaleInvoiceBVOs = paramsSaleInvoiceBVOsJSA.toJavaList(JSONObject.class);
|
||||||
|
IVApplicationBodyVO[] newivApplicationBodyVOS = new IVApplicationBodyVO[paramsSaleInvoiceBVOs.size()]; //新子实体
|
||||||
|
for(IVApplicationBodyVO ivApplicationBodyVO : ivApplicationBodyVOS){
|
||||||
|
String src_pkdetail = ivApplicationBodyVO.getSrc_pkdetail(); //来源单据行id
|
||||||
|
//筛选参数红冲的子表集合
|
||||||
|
List<JSONObject> newParamsSaleInvoiceBVOs = paramsSaleInvoiceBVOs.stream().filter(item->{
|
||||||
|
String parCsaleinvoicebid = item.getString("csaleinvoicebid")+"";
|
||||||
|
return src_pkdetail.equals(parCsaleinvoicebid);
|
||||||
|
}).toList();
|
||||||
|
if(newParamsSaleInvoiceBVOs.size()<=0){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
JSONObject paramSaleInvoiceBVO = newParamsSaleInvoiceBVOs.get(0); //参数子表
|
||||||
|
IVApplicationBodyVO newivApplicationBodyVO = new IVApplicationBodyVO();
|
||||||
|
// BeanUtil.copyProperties(ivApplicationBodyVO,newivApplicationBodyVO, CopyOptions.create().setIgnoreNullValue(true));
|
||||||
|
//克隆取值原子表开票申请
|
||||||
|
newivApplicationBodyVO = (IVApplicationBodyVO)CloneUtil.depthClone(ivApplicationBodyVO);
|
||||||
|
//赋值之后修改子实体红冲时字段
|
||||||
|
newivApplicationBodyVO.setPk_ivappdetail(null); //开票申请子实体id
|
||||||
|
newivApplicationBodyVO.setBillno(null); //开票申请子实体单据号
|
||||||
|
newivApplicationBodyVO.setXmsl(new UFDouble(paramSaleInvoiceBVO.getString("nnum"))); //数量
|
||||||
|
newivApplicationBodyVO.setXmje(new UFDouble(paramSaleInvoiceBVO.getString("norigmny"))); //金额
|
||||||
|
newivApplicationBodyVO.setXmjshj(new UFDouble(paramSaleInvoiceBVO.getString("norigtaxmny"))); //价税合计
|
||||||
|
newivApplicationBodyVO.setBchcje(new UFDouble(paramSaleInvoiceBVO.getString("norigtaxmny"))); //本次红冲金额 = 本次参数红冲金额
|
||||||
|
newivApplicationBodyVOS[i++] = newivApplicationBodyVO;
|
||||||
|
sumXmsl = sumXmsl.add(new UFDouble(paramSaleInvoiceBVO.getString("nnum")));
|
||||||
|
sumXmje = sumXmje.add(new UFDouble(paramSaleInvoiceBVO.getString("norigmny")));
|
||||||
|
sumXmjshj = sumXmjshj.add(new UFDouble(paramSaleInvoiceBVO.getString("norigtaxmny")));
|
||||||
|
sumBchcje = sumBchcje.add(new UFDouble(paramSaleInvoiceBVO.getString("norigtaxmny")));
|
||||||
|
}
|
||||||
|
//赋值之后修改主实体红冲时字段
|
||||||
|
newivApplicationHeadVO.setPk_ivapplication(null); //开票申请单主实体id
|
||||||
|
newivApplicationHeadVO.setBillno(null); //单据号
|
||||||
|
newivApplicationHeadVO.setJshj(sumXmjshj); //价税合计
|
||||||
|
newivApplicationHeadVO.setHjje(sumXmje); //合计金额
|
||||||
|
newivApplicationHeadVO.setHjse(ivApplicationHeadVO.getHjse().multiply(new UFDouble(-1))); //合计税额
|
||||||
|
newivApplicationHeadVO.setBchcje(sumBchcje); //本次红冲金额
|
||||||
|
newivApplicationHeadVO.setHzfp(UFBoolean.TRUE); //红字发票
|
||||||
|
newivApplicationHeadVO.setSrc_billtype(ivApplicationHeadVO.getSrc_billtype()); //来源单据类型
|
||||||
|
newivApplicationHeadVO.setSrc_tradetype(ivApplicationHeadVO.getSrc_tradetype()); //来源交易类型
|
||||||
|
newivApplicationHeadVO.setSrc_billno(ivApplicationHeadVO.getSrc_billno()); //来源单据编号
|
||||||
|
|
||||||
|
//组装VO
|
||||||
|
ivApplicationAggVO.setParentVO(newivApplicationHeadVO);
|
||||||
|
ivApplicationAggVO.setChildrenVO(newivApplicationBodyVOS);
|
||||||
|
return ivApplicationAggVO;
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new BusinessException(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public IUAPQueryBS getQueryService() {
|
||||||
|
return NCLocator.getInstance().lookup(IUAPQueryBS.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,148 @@
|
||||||
|
//
|
||||||
|
// Source code recreated from a .class file by IntelliJ IDEA
|
||||||
|
// (powered by FernFlower decompiler)
|
||||||
|
//
|
||||||
|
|
||||||
|
package nc.vo.so.m32.util;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import nc.bs.framework.common.NCLocator;
|
||||||
|
import nc.pubitf.so.m33.so.m32.ISquare33For32Rush;
|
||||||
|
import nc.vo.ml.NCLangRes4VoTransl;
|
||||||
|
import nc.vo.pub.lang.UFBoolean;
|
||||||
|
import nc.vo.pub.lang.UFDate;
|
||||||
|
import nc.vo.pub.lang.UFDouble;
|
||||||
|
import nc.vo.pubapp.pattern.data.ValueUtils;
|
||||||
|
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||||
|
import nc.vo.pubapp.pattern.pub.MathTool;
|
||||||
|
import nc.vo.so.m32.entity.SaleInvoiceBVO;
|
||||||
|
import nc.vo.so.m32.entity.SaleInvoiceHVO;
|
||||||
|
import nc.vo.so.m32.entity.SaleInvoiceVO;
|
||||||
|
import nc.vo.so.m32.enumeration.OpposeFlag;
|
||||||
|
import nc.vo.so.pub.enumeration.BillStatus;
|
||||||
|
import nc.vo.trade.checkrule.VOChecker;
|
||||||
|
|
||||||
|
public class OpposeConvertUtil {
|
||||||
|
private static OpposeConvertUtil instance = new OpposeConvertUtil();
|
||||||
|
|
||||||
|
private OpposeConvertUtil() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static OpposeConvertUtil getInstance() {
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checkOpposeVality(SaleInvoiceHVO voHead) {
|
||||||
|
if (!BillStatus.AUDIT.equalsValue(voHead.getFstatusflag())) {
|
||||||
|
ExceptionUtils.wrappBusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006008_0", "04006008-0067"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!OpposeFlag.NORMAL.equalsValue(voHead.getFopposeflag()) && !OpposeFlag.PARTFINSH.equalsValue(voHead.getFopposeflag())) {
|
||||||
|
ExceptionUtils.wrappBusinessException(NCLangRes4VoTransl.getNCLangRes().getStrByID("4006008_0", "04006008-0224"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public SaleInvoiceVO convertToOpposeVO(SaleInvoiceVO voInvoice, String userid, UFDate busidate) {
|
||||||
|
this.checkOpposeVality(voInvoice.getParentVO());
|
||||||
|
UFBoolean isFirst = UFBoolean.TRUE;
|
||||||
|
|
||||||
|
if(voInvoice.getParentVO().getFopposeflag() == null ? false : voInvoice.getParentVO().getFopposeflag().toString().equals("3")){
|
||||||
|
// if (OpposeFlag.PARTFINSH.equalsValue()) {
|
||||||
|
isFirst = UFBoolean.FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
SaleInvoiceHVO oppHead = this.convertToOpposeHVO(voInvoice.getParentVO(), userid, busidate);
|
||||||
|
SaleInvoiceBVO[] oppBodys = this.convertToOpposeBVO(voInvoice, busidate, isFirst);
|
||||||
|
SaleInvoiceVO oppInvoice = new SaleInvoiceVO();
|
||||||
|
oppInvoice.setParentVO(oppHead);
|
||||||
|
oppInvoice.setChildrenVO(oppBodys);
|
||||||
|
VOVatCalculator calcultor = new VOVatCalculator(oppInvoice);
|
||||||
|
calcultor.calVatAll();
|
||||||
|
return oppInvoice;
|
||||||
|
}
|
||||||
|
|
||||||
|
private SaleInvoiceBVO[] convertToOpposeBVO(SaleInvoiceVO voInvoice, UFDate busidate, UFBoolean isFirst) {
|
||||||
|
String[] clearKeys = new String[]{"csaleinvoicebid", "csaleinvoiceid", "nshouldoutnum", "ntotaloutnum", "ntotalincomenum", "ntotalincomemny", "ntotalcostnum", "ntotalpaymny", "ntotalopposemny", "ntotalopposenum", "csumid"};
|
||||||
|
String[] oppKeys = new String[]{"nnum", "nastnum", "nqtunitnum", "ntax", "ntaxmny", "nmny", "ncaltaxmny", "ndiscount", "norigtaxmny", "norigmny", "norigdiscount", "nglobalmny", "nglobaltaxmny", "ngroupmny", "ngrouptaxmny", "norigsubmny"};
|
||||||
|
SaleInvoiceBVO[] childrenVO = voInvoice.getChildrenVO();
|
||||||
|
int ilen = childrenVO.length;
|
||||||
|
List<SaleInvoiceBVO> oppbodys = new ArrayList();
|
||||||
|
|
||||||
|
for(int i = 0; i < ilen; ++i) {
|
||||||
|
SaleInvoiceBVO oppbody = (SaleInvoiceBVO)childrenVO[i].clone();
|
||||||
|
oppbody.setDbilldate(busidate);
|
||||||
|
oppbody.setCopposesrcbid(oppbody.getCsaleinvoicebid());
|
||||||
|
|
||||||
|
for(String key : clearKeys) {
|
||||||
|
oppbody.setAttributeValue(key, (Object)null);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isFirst.booleanValue()) {
|
||||||
|
for(String key : oppKeys) {
|
||||||
|
UFDouble value = ValueUtils.getUFDouble(oppbody.getAttributeValue(key));
|
||||||
|
UFDouble oppvalue = null;
|
||||||
|
if (!VOChecker.isEmpty(value)) {
|
||||||
|
oppvalue = MathTool.oppose(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
oppbody.setAttributeValue(key, oppvalue);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
UFDouble nnum = childrenVO[i].getNtotalopposenum() == null ? UFDouble.ZERO_DBL : childrenVO[i].getNtotalopposenum();
|
||||||
|
UFDouble mny = childrenVO[i].getNtotalopposemny() == null ? UFDouble.ZERO_DBL : childrenVO[i].getNtotalopposemny();
|
||||||
|
if (nnum.compareTo(oppbody.getNnum()) == 0 && mny.compareTo(oppbody.getNorigtaxmny()) == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
ISquare33For32Rush srv = (ISquare33For32Rush)NCLocator.getInstance().lookup(ISquare33For32Rush.class);
|
||||||
|
UFDouble[] sums = srv.querySumNum(childrenVO[i].getCsaleinvoicebid(), oppKeys);
|
||||||
|
int index = 0;
|
||||||
|
|
||||||
|
for(String oppKey : oppKeys) {
|
||||||
|
oppbody.setAttributeValue(oppKey, MathTool.oppose(sums[index++]));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (oppbody.getNorigtaxmny() == null || oppbody.getNorigtaxmny().compareTo(UFDouble.ZERO_DBL) == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (oppbody.getNqtunitnum().compareTo(UFDouble.ZERO_DBL) != 0 && oppbody.getNnum().compareTo(UFDouble.ZERO_DBL) != 0) {
|
||||||
|
oppbody.setNqtorigtaxnetprc(oppbody.getNorigtaxmny().div(oppbody.getNqtunitnum()));
|
||||||
|
oppbody.setNqtorignetprice(oppbody.getNorigmny().div(oppbody.getNqtunitnum()));
|
||||||
|
oppbody.setNorigtaxnetprice(oppbody.getNorigtaxmny().div(oppbody.getNnum()));
|
||||||
|
oppbody.setNorignetprice(oppbody.getNorigmny().div(oppbody.getNnum()));
|
||||||
|
oppbody.setNqttaxnetprice(oppbody.getNtaxmny().div(oppbody.getNqtunitnum()));
|
||||||
|
oppbody.setNqtnetprice(oppbody.getNmny().div(oppbody.getNqtunitnum()));
|
||||||
|
oppbody.setNtaxnetprice(oppbody.getNtaxmny().div(oppbody.getNnum()));
|
||||||
|
oppbody.setNnetprice(oppbody.getNmny().div(oppbody.getNnum()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
oppbodys.add(oppbody);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (SaleInvoiceBVO[])oppbodys.toArray(new SaleInvoiceBVO[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private SaleInvoiceHVO convertToOpposeHVO(SaleInvoiceHVO voHead, String userid, UFDate busidate) {
|
||||||
|
SaleInvoiceHVO oppHead = (SaleInvoiceHVO)voHead.clone();
|
||||||
|
oppHead.setBtogoldtaxflag(UFBoolean.FALSE);
|
||||||
|
oppHead.setDbilldate(busidate);
|
||||||
|
oppHead.setCreator(userid);
|
||||||
|
oppHead.setBillmaker(userid);
|
||||||
|
oppHead.setIprintcount(0);
|
||||||
|
oppHead.setFstatusflag((Integer)BillStatus.FREE.value());
|
||||||
|
oppHead.setFopposeflag((Integer)OpposeFlag.GENERAL.value());
|
||||||
|
oppHead.setCopposesrcid(voHead.getCsaleinvoiceid());
|
||||||
|
oppHead.setVopposesrccode(voHead.getVbillcode());
|
||||||
|
String[] clearKeys = new String[]{"vbillcode", "csaleinvoiceid", "tgoldtaxtime", "modifier", "modifiedtime", "approver", "taudittime", "vgoldtaxcode", "ntotalastnum", "ntotalorigmny", "ntotalorigsubmny", "ntotaltaxsubmny", "openbillflag", "bsalecooppur"};
|
||||||
|
|
||||||
|
for(String key : clearKeys) {
|
||||||
|
oppHead.setAttributeValue(key, (Object)null);
|
||||||
|
}
|
||||||
|
|
||||||
|
return oppHead;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue