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