parent
							
								
									f66388a623
								
							
						
					
					
						commit
						0c7ef831e5
					
				| 
						 | 
					@ -0,0 +1,346 @@
 | 
				
			||||||
 | 
					package zcgj.zcdev.zcdev.pr.plugin.operate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import kd.bos.dataentity.entity.DynamicObject;
 | 
				
			||||||
 | 
					import kd.bos.dataentity.entity.DynamicObjectCollection;
 | 
				
			||||||
 | 
					import kd.bos.entity.EntityMetadataCache;
 | 
				
			||||||
 | 
					import kd.bos.orm.query.QFilter;
 | 
				
			||||||
 | 
					import kd.bos.servicehelper.BusinessDataServiceHelper;
 | 
				
			||||||
 | 
					import kd.bos.servicehelper.operation.SaveServiceHelper;
 | 
				
			||||||
 | 
					import kd.ec.basedata.common.enums.PayDirectionEnum;
 | 
				
			||||||
 | 
					import kd.ec.basedata.common.enums.ecma.OrderSourceEnum;
 | 
				
			||||||
 | 
					import kd.ec.contract.common.utils.EcNumberHelper;
 | 
				
			||||||
 | 
					import kd.ec.contract.common.utils.TypeUtils;
 | 
				
			||||||
 | 
					import kd.ec.contract.opplugin.OutContractRevisionBillOp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.math.BigDecimal;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import java.util.stream.Collectors;
 | 
				
			||||||
 | 
					import java.util.stream.Stream;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class OutContractRevisionBillOpExt extends OutContractRevisionBillOp {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static String selector = (String) Stream.of("totalrevisionamount", "totalrevisionoftaxamount", "totalamount", "totaloftaxamount", "ismultirate", "taxrate", "originalamount", "avgtaxrate", "originaloftaxamount", "taxamount").collect(Collectors.joining(","));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void reverseWritingToContract(String operationKey, DynamicObject source) {
 | 
				
			||||||
 | 
					        boolean isFromDB = source.getDataEntityState().getFromDatabase();
 | 
				
			||||||
 | 
					        if (isFromDB) {
 | 
				
			||||||
 | 
					            source = BusinessDataServiceHelper.loadSingle(source.getPkValue(), EntityMetadataCache.getDataEntityType("ec_outrevision"));
 | 
				
			||||||
 | 
					            DynamicObject contract = BusinessDataServiceHelper.loadSingle(source.getDynamicObject("contract").getPkValue(), "ec_out_contract", selector);
 | 
				
			||||||
 | 
					            BigDecimal totalRevisionAmount = contract.getBigDecimal("totalrevisionamount");
 | 
				
			||||||
 | 
					            BigDecimal totalRevisionOfTaxAmount = contract.getBigDecimal("totalrevisionoftaxamount");
 | 
				
			||||||
 | 
					            BigDecimal totalAmount = contract.getBigDecimal("totalamount");
 | 
				
			||||||
 | 
					            BigDecimal totalOfTaxAmount = contract.getBigDecimal("totaloftaxamount");
 | 
				
			||||||
 | 
					            BigDecimal revisionAmount = source.getBigDecimal("revisionamount");
 | 
				
			||||||
 | 
					            BigDecimal revisionOfTaxAmount = source.getBigDecimal("revisionoftaxamount");
 | 
				
			||||||
 | 
					            DynamicObject currency = source.getDynamicObject("currency");
 | 
				
			||||||
 | 
					            int pricePrecision = currency == null ? 10 : currency.getInt("priceprecision");
 | 
				
			||||||
 | 
					            if (operationKey.equals("audit")) {
 | 
				
			||||||
 | 
					                this.doHandlerTaxRateChange(contract, source);
 | 
				
			||||||
 | 
					                contract.set("totalrevisionamount", totalRevisionAmount.add(revisionAmount));
 | 
				
			||||||
 | 
					                contract.set("totalrevisionoftaxamount", totalRevisionOfTaxAmount.add(revisionOfTaxAmount));
 | 
				
			||||||
 | 
					                contract.set("totalamount", totalAmount.add(revisionAmount));
 | 
				
			||||||
 | 
					                contract.set("totaloftaxamount", totalOfTaxAmount.add(revisionOfTaxAmount));
 | 
				
			||||||
 | 
					                DynamicObjectCollection kapianEntry = (DynamicObjectCollection)source.get("kapianentry");
 | 
				
			||||||
 | 
					                List<DynamicObject> listUpdateList = new ArrayList();
 | 
				
			||||||
 | 
					                List<DynamicObject> listaddList = new ArrayList();
 | 
				
			||||||
 | 
					                Map<Long, BigDecimal> entryId_biangengsl = new HashMap();
 | 
				
			||||||
 | 
					                boolean isSingleRateChangeMultyRate = false;//单税率改为多税率
 | 
				
			||||||
 | 
					                boolean isMultyRateChangeSingleRate = false;//多税率改为单税率
 | 
				
			||||||
 | 
					                for(int i = 0; i < kapianEntry.size(); ++i) {
 | 
				
			||||||
 | 
					                    DynamicObjectCollection subentrys = (DynamicObjectCollection)((DynamicObject)kapianEntry.get(i)).get("entryentity");
 | 
				
			||||||
 | 
					                    HashMap<String, DynamicObject> newListingMap = new HashMap();
 | 
				
			||||||
 | 
					                    ArrayList<DynamicObject> updateLevelList = new ArrayList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    for(int k = 0; k < subentrys.size(); ++k) {
 | 
				
			||||||
 | 
					                        DynamicObject subEntry = (DynamicObject)subentrys.get(k);
 | 
				
			||||||
 | 
					                        int changeType = TypeUtils.nullToInt(subEntry.get("subchangetype"));
 | 
				
			||||||
 | 
					                        if (changeType == 3) {
 | 
				
			||||||
 | 
					                            DynamicObject listing = new DynamicObject(EntityMetadataCache.getDataEntityType("ec_outtreelisting"));
 | 
				
			||||||
 | 
					                            listing.set("id", subEntry.get("newlistingid"));
 | 
				
			||||||
 | 
					                            listing.set("isaddnew", true);
 | 
				
			||||||
 | 
					                            listing.set("listparentid", subEntry.get("superlistingid"));
 | 
				
			||||||
 | 
					                            listing.set("parent", subEntry.get("superlistingid"));
 | 
				
			||||||
 | 
					                            if (subEntry.getDynamicObject("parentgroup") != null) {
 | 
				
			||||||
 | 
					                                listing.set("level", subEntry.getDynamicObject("parentgroup").getInt("level") + 1);
 | 
				
			||||||
 | 
					                            } else {
 | 
				
			||||||
 | 
					                                updateLevelList.add(listing);
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            listing.set("paydirection", PayDirectionEnum.OUT.getValue());
 | 
				
			||||||
 | 
					                            listing.set("number", subEntry.get("listnumber"));
 | 
				
			||||||
 | 
					                            listing.set("name", subEntry.get("listname"));
 | 
				
			||||||
 | 
					                            listing.set("sysnumber", subEntry.get("sysnum"));
 | 
				
			||||||
 | 
					                            listing.set("desc", subEntry.get("remark"));
 | 
				
			||||||
 | 
					                            if (subEntry.get("boqnumber") != null) {
 | 
				
			||||||
 | 
					                                listing.set("boqnumber", subEntry.getDynamicObject("boqnumber").getPkValue());
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            DynamicObject parentnode = (DynamicObject)subEntry.getParent();
 | 
				
			||||||
 | 
					                            listing.set("listingmodel", parentnode.get("listmodelid"));
 | 
				
			||||||
 | 
					                            listing.set("contractid", contract.getPkValue().toString());
 | 
				
			||||||
 | 
					                            listing.set("enable", 1);
 | 
				
			||||||
 | 
					                            listing.set("status", "C");
 | 
				
			||||||
 | 
					                            listing.set("isleaf", false);
 | 
				
			||||||
 | 
					                            listing.set("currency", source.getDynamicObject("currency").getPkValue());
 | 
				
			||||||
 | 
					                            listaddList.add(listing);
 | 
				
			||||||
 | 
					                            newListingMap.put(subEntry.get("newlistingid").toString(), listing);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    for(DynamicObject listing : updateLevelList) {
 | 
				
			||||||
 | 
					                        if (listing.get("listparentid") != null && listing.getLong("listparentid") != 0L) {
 | 
				
			||||||
 | 
					                            DynamicObject parent = (DynamicObject)newListingMap.get(String.valueOf(listing.getLong("listparentid")));
 | 
				
			||||||
 | 
					                            listing.set("level", parent.getInt("level") + 1);
 | 
				
			||||||
 | 
					                        } else {
 | 
				
			||||||
 | 
					                            listing.set("level", 1);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    for(int k = 0; k < subentrys.size(); ++k) {
 | 
				
			||||||
 | 
					                        DynamicObject subEntry = (DynamicObject)subentrys.get(k);
 | 
				
			||||||
 | 
					                        int changeType = TypeUtils.nullToInt(subEntry.get("subchangetype"));
 | 
				
			||||||
 | 
					                        if (changeType == 0) {
 | 
				
			||||||
 | 
					                            DynamicObject listing = (DynamicObject)subEntry.get("listid");
 | 
				
			||||||
 | 
					                            if (listing == null) {
 | 
				
			||||||
 | 
					                                continue;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            listing = BusinessDataServiceHelper.loadSingle(listing.getPkValue(), EntityMetadataCache.getDataEntityType("ec_outtreelisting"));
 | 
				
			||||||
 | 
					                            listing.set("ischanged", true);
 | 
				
			||||||
 | 
					                            listing.set("enable", 1);
 | 
				
			||||||
 | 
					                            BigDecimal changeQty = listing.getBigDecimal("changeqty");
 | 
				
			||||||
 | 
					                            BigDecimal addQty = subEntry.getBigDecimal("biangengsl");
 | 
				
			||||||
 | 
					                            entryId_biangengsl.put((Long)listing.getPkValue(), addQty);
 | 
				
			||||||
 | 
					                            changeQty = changeQty.add(addQty);
 | 
				
			||||||
 | 
					                            listing.set("changeqty", changeQty);
 | 
				
			||||||
 | 
					                            BigDecimal changedTaxAmount = (BigDecimal)subEntry.get("hsbgje");
 | 
				
			||||||
 | 
					                            BigDecimal lastChangedTaxAmount = (BigDecimal)listing.get("chgoftaxamount");
 | 
				
			||||||
 | 
					                            listing.set("chgoftaxamount", lastChangedTaxAmount.add(changedTaxAmount));
 | 
				
			||||||
 | 
					                            BigDecimal totalQty = listing.getBigDecimal("totalqty").add(addQty);
 | 
				
			||||||
 | 
					                            listing.set("totalqty", totalQty);
 | 
				
			||||||
 | 
					                            BigDecimal lastTotalChangedTaxAmount = listing.getBigDecimal("lstoftaxamount");
 | 
				
			||||||
 | 
					                            BigDecimal totalChangedTaxAmount = lastTotalChangedTaxAmount.add(changedTaxAmount);
 | 
				
			||||||
 | 
					                            listing.set("lstoftaxamount", totalChangedTaxAmount);
 | 
				
			||||||
 | 
					                            listing.set("lasttotalamt", subEntry.getBigDecimal("bghzje"));
 | 
				
			||||||
 | 
					                            if (totalQty.compareTo(BigDecimal.ZERO) != 0) {
 | 
				
			||||||
 | 
					                                BigDecimal avgTaxPrice = EcNumberHelper.divide(totalChangedTaxAmount, totalQty, pricePrecision);
 | 
				
			||||||
 | 
					                                listing.set("avgtaxprice", avgTaxPrice);
 | 
				
			||||||
 | 
					                                BigDecimal avgPrice = EcNumberHelper.divide(subEntry.getBigDecimal("bghzje"), totalQty, pricePrecision);
 | 
				
			||||||
 | 
					                                listing.set("avgprice", avgPrice);
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            listUpdateList.add(listing);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        if (changeType == 1 || changeType == 4 || changeType == 5) {
 | 
				
			||||||
 | 
					                            DynamicObject listing = (DynamicObject)subEntry.get("listid");
 | 
				
			||||||
 | 
					                            if (listing == null) {
 | 
				
			||||||
 | 
					                                continue;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            listing = BusinessDataServiceHelper.loadSingle(listing.getPkValue(), EntityMetadataCache.getDataEntityType("ec_outtreelisting"));
 | 
				
			||||||
 | 
					                            if (this.isSingleRateChange(contract, source)) {
 | 
				
			||||||
 | 
					                                //如果是单税率变更为多税率的情况下,需要判断综合税率是不是为空,如果当前税率为空,则有可能是单改多
 | 
				
			||||||
 | 
					                                Object curtaxrate = source.get("curtaxrate");
 | 
				
			||||||
 | 
					                                if (curtaxrate != null) {
 | 
				
			||||||
 | 
					                                    listing.set("rateobj", source.get("curtaxrate"));
 | 
				
			||||||
 | 
					                                    listing.set("taxrate", source.getDynamicObject("curtaxrate").get("taxrate"));
 | 
				
			||||||
 | 
					                                }else{
 | 
				
			||||||
 | 
					                                    Object rateobj = subEntry.get("rateobj");
 | 
				
			||||||
 | 
					                                    listing.set("rateobj", rateobj);
 | 
				
			||||||
 | 
					                                    listing.set("taxrate", subEntry.getDynamicObject("rateobj").get("taxrate"));
 | 
				
			||||||
 | 
					                                    listing.set("taxprice", subEntry.get("biangenghouhsdj"));       //含税单价
 | 
				
			||||||
 | 
					                                    listing.set("oftax", subEntry.get("bghhszje"));        //价税合计
 | 
				
			||||||
 | 
					                                    listing.set("tax", subEntry.get("bghse"));    //税额
 | 
				
			||||||
 | 
					                                    listing.set("desc", subEntry.get("remark"));    //备注
 | 
				
			||||||
 | 
					                                    isSingleRateChangeMultyRate = true;
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            if (this.isMultyRateChange(contract, source)) {
 | 
				
			||||||
 | 
					                                boolean ismultirate = source.getBoolean("ismultirate");
 | 
				
			||||||
 | 
					                                Object rateobj = subEntry.get("rateobj");
 | 
				
			||||||
 | 
					                                if(rateobj!=null){
 | 
				
			||||||
 | 
					                                    listing.set("rateobj", rateobj);
 | 
				
			||||||
 | 
					                                    listing.set("taxrate", subEntry.getDynamicObject("rateobj").get("taxrate"));
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                if(!ismultirate){
 | 
				
			||||||
 | 
					                                    Object curtaxrate = source.get("curtaxrate");
 | 
				
			||||||
 | 
					                                    listing.set("rateobj", curtaxrate);
 | 
				
			||||||
 | 
					                                    listing.set("taxrate", source.getDynamicObject("curtaxrate").get("taxrate"));
 | 
				
			||||||
 | 
					                                    listing.set("taxprice", subEntry.get("biangenghouhsdj"));       //含税单价
 | 
				
			||||||
 | 
					                                    listing.set("oftax", subEntry.get("bghhszje"));        //价税合计
 | 
				
			||||||
 | 
					                                    listing.set("tax", subEntry.get("bghse"));    //税额
 | 
				
			||||||
 | 
					                                    listing.set("desc", subEntry.get("remark"));    //备注
 | 
				
			||||||
 | 
					                                    isMultyRateChangeSingleRate = true;
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            listing.set("ischanged", true);
 | 
				
			||||||
 | 
					                            listing.set("enable", 1);
 | 
				
			||||||
 | 
					                            BigDecimal effectQty = subEntry.getBigDecimal("shouyingxsl");
 | 
				
			||||||
 | 
					                            BigDecimal lastChangedEffectQty = listing.getBigDecimal("chgeffectqty");
 | 
				
			||||||
 | 
					                            listing.set("chgeffectqty", effectQty.add(lastChangedEffectQty));
 | 
				
			||||||
 | 
					                            listing.set("curtaxprice", subEntry.getBigDecimal("biangenghouhsdj"));
 | 
				
			||||||
 | 
					                            BigDecimal changedTaxAmount = subEntry.getBigDecimal("hsbgje");
 | 
				
			||||||
 | 
					                            BigDecimal lastChangedTaxAmount = (BigDecimal)listing.get("chgoftaxamount");
 | 
				
			||||||
 | 
					                            listing.set("chgoftaxamount", lastChangedTaxAmount.add(changedTaxAmount));
 | 
				
			||||||
 | 
					                            BigDecimal lastTotalChangedTaxAmount = listing.getBigDecimal("lstoftaxamount");
 | 
				
			||||||
 | 
					                            BigDecimal totalChangedTaxAmount = lastTotalChangedTaxAmount.add(changedTaxAmount);
 | 
				
			||||||
 | 
					                            listing.set("lstoftaxamount", totalChangedTaxAmount);
 | 
				
			||||||
 | 
					                            listing.set("currentprice", subEntry.getBigDecimal("biangenghoudj"));
 | 
				
			||||||
 | 
					                            listing.set("lasttotalamt", subEntry.getBigDecimal("bghzje"));
 | 
				
			||||||
 | 
					                            BigDecimal addQty = subEntry.getBigDecimal("biangengsl");
 | 
				
			||||||
 | 
					                            entryId_biangengsl.put((Long)listing.getPkValue(), addQty);
 | 
				
			||||||
 | 
					                            BigDecimal totalQty = listing.getBigDecimal("totalqty").add(addQty);
 | 
				
			||||||
 | 
					                            listing.set("totalqty", totalQty);
 | 
				
			||||||
 | 
					                            if (totalQty.compareTo(BigDecimal.ZERO) != 0) {
 | 
				
			||||||
 | 
					                                BigDecimal avgTaxPrice = EcNumberHelper.divide(totalChangedTaxAmount, totalQty, pricePrecision);
 | 
				
			||||||
 | 
					                                listing.set("avgtaxprice", avgTaxPrice);
 | 
				
			||||||
 | 
					                                BigDecimal avgPrice = EcNumberHelper.divide(subEntry.getBigDecimal("bghzje"), totalQty, pricePrecision);
 | 
				
			||||||
 | 
					                                listing.set("avgprice", avgPrice);
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            listUpdateList.add(listing);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        if (changeType == 2) {
 | 
				
			||||||
 | 
					                            DynamicObject listing = new DynamicObject(EntityMetadataCache.getDataEntityType("ec_outtreelisting"));
 | 
				
			||||||
 | 
					                            listing.set("id", subEntry.get("newlistingid"));
 | 
				
			||||||
 | 
					                            listing.set("isaddnew", true);
 | 
				
			||||||
 | 
					                            listing.set("paydirection", PayDirectionEnum.OUT.getValue());
 | 
				
			||||||
 | 
					                            listing.set("listparentid", subEntry.getString("superlistingid"));
 | 
				
			||||||
 | 
					                            listing.set("number", subEntry.get("listnumber"));
 | 
				
			||||||
 | 
					                            listing.set("name", subEntry.get("listname"));
 | 
				
			||||||
 | 
					                            listing.set("sysnumber", subEntry.get("sysnum"));
 | 
				
			||||||
 | 
					                            if (subEntry.get("measureunit") != null) {
 | 
				
			||||||
 | 
					                                listing.set("measureunit", subEntry.getDynamicObject("measureunit").getPkValue());
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            listing.set("qty", subEntry.get("qty"));
 | 
				
			||||||
 | 
					                            listing.set("totalqty", subEntry.get("qty"));
 | 
				
			||||||
 | 
					                            listing.set("price", subEntry.get("price"));
 | 
				
			||||||
 | 
					                            listing.set("avgprice", subEntry.get("price"));
 | 
				
			||||||
 | 
					                            listing.set("currentprice", subEntry.get("price"));
 | 
				
			||||||
 | 
					                            listing.set("cbsnumber", subEntry.get("cbsnumber"));
 | 
				
			||||||
 | 
					                            listing.set("amount", subEntry.get("amount"));
 | 
				
			||||||
 | 
					                            listing.set("lasttotalamt", subEntry.get("amount"));
 | 
				
			||||||
 | 
					                            listing.set("taxrate", subEntry.get("taxrate1"));
 | 
				
			||||||
 | 
					                            listing.set("tax", subEntry.get("tax"));
 | 
				
			||||||
 | 
					                            listing.set("taxprice", subEntry.get("hanshuidanj"));
 | 
				
			||||||
 | 
					                            listing.set("avgtaxprice", subEntry.get("hanshuidanj"));
 | 
				
			||||||
 | 
					                            listing.set("curtaxprice", subEntry.get("hanshuidanj"));
 | 
				
			||||||
 | 
					                            listing.set("oftax", subEntry.get("oftax"));
 | 
				
			||||||
 | 
					                            listing.set("lstoftaxamount", subEntry.get("oftax"));
 | 
				
			||||||
 | 
					                            listing.set("desc", subEntry.get("remark"));
 | 
				
			||||||
 | 
					                            DynamicObject parentnode = (DynamicObject)subEntry.getParent();
 | 
				
			||||||
 | 
					                            listing.set("listingmodel", parentnode.get("listmodelid"));
 | 
				
			||||||
 | 
					                            listing.set("contractid", contract.getPkValue().toString());
 | 
				
			||||||
 | 
					                            if (subEntry.get("resourceitem") != null) {
 | 
				
			||||||
 | 
					                                listing.set("resourceitem", subEntry.getDynamicObject("resourceitem").getPkValue());
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            if (subEntry.get("materiel") != null) {
 | 
				
			||||||
 | 
					                                listing.set("material", subEntry.getDynamicObject("materiel").getPkValue());
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            if (subEntry.get("boqnumber") != null) {
 | 
				
			||||||
 | 
					                                listing.set("boqnumber", subEntry.getDynamicObject("boqnumber").getPkValue());
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            if (subEntry.get("contlistnumber") != null) {
 | 
				
			||||||
 | 
					                                listing.set("contlistnumber", subEntry.getDynamicObject("contlistnumber").getPkValue());
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            if (subEntry.get("listunitproject") != null) {
 | 
				
			||||||
 | 
					                                listing.set("listunitproject", subEntry.getDynamicObject("listunitproject").getPkValue());
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            if (subEntry.get("rateobj") != null) {
 | 
				
			||||||
 | 
					                                listing.set("rateobj", subEntry.getDynamicObject("rateobj").getPkValue());
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            listing.set("directfee", subEntry.get("directfee"));
 | 
				
			||||||
 | 
					                            listing.set("equfee", subEntry.get("equfee"));
 | 
				
			||||||
 | 
					                            listing.set("manequfee", subEntry.get("manequfee"));
 | 
				
			||||||
 | 
					                            listing.set("manfee", subEntry.get("manfee"));
 | 
				
			||||||
 | 
					                            listing.set("tmpfee", subEntry.get("tmpfee"));
 | 
				
			||||||
 | 
					                            listing.set("enable", 1);
 | 
				
			||||||
 | 
					                            listing.set("status", "C");
 | 
				
			||||||
 | 
					                            listing.set("currency", source.getDynamicObject("currency").getPkValue());
 | 
				
			||||||
 | 
					                            listing.set("isleaf", true);
 | 
				
			||||||
 | 
					                            if (subEntry.getDynamicObject("parentgroup") != null) {
 | 
				
			||||||
 | 
					                                listing.set("level", subEntry.getDynamicObject("parentgroup").getInt("level") + 1);
 | 
				
			||||||
 | 
					                                listing.set("parent", subEntry.getDynamicObject("parentgroup").getPkValue());
 | 
				
			||||||
 | 
					                            } else if (subEntry.get("superlistingid") != null && subEntry.getLong("superlistingid") != 0L) {
 | 
				
			||||||
 | 
					                                DynamicObject superListing = (DynamicObject)newListingMap.get(String.valueOf(subEntry.getLong("superlistingid")));
 | 
				
			||||||
 | 
					                                listing.set("level", superListing.getInt("level") + 1);
 | 
				
			||||||
 | 
					                                listing.set("parent", subEntry.getLong("superlistingid"));
 | 
				
			||||||
 | 
					                            } else {
 | 
				
			||||||
 | 
					                                listing.set("level", 1);
 | 
				
			||||||
 | 
					                                listing.set("parent", (Object)null);
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            listing.set("leaseunit", subEntry.get("leaseunit"));
 | 
				
			||||||
 | 
					                            listing.set("leaseqty", subEntry.get("leaseqty"));
 | 
				
			||||||
 | 
					                            listing.set("leasebegintime", subEntry.get("leasebegintime"));
 | 
				
			||||||
 | 
					                            listing.set("leaseendtime", subEntry.get("leaseendtime"));
 | 
				
			||||||
 | 
					                            listing.set("leasedayqty", subEntry.get("leasedayqty"));
 | 
				
			||||||
 | 
					                            listing.set("arrivaldate", subEntry.get("arrivaldate"));
 | 
				
			||||||
 | 
					                            listaddList.add(listing);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                this.writeBackPurchaseOrder(entryId_biangengsl, contract);
 | 
				
			||||||
 | 
					                if (!listUpdateList.isEmpty()) {
 | 
				
			||||||
 | 
					                    SaveServiceHelper.save(((DynamicObject)listUpdateList.get(0)).getDataEntityType(), listUpdateList.toArray());
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (!listaddList.isEmpty()) {
 | 
				
			||||||
 | 
					                    SaveServiceHelper.save(((DynamicObject)listaddList.get(0)).getDataEntityType(), listaddList.toArray());
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                boolean ismultirate = source.getBoolean("ismultirate");
 | 
				
			||||||
 | 
					                if(isSingleRateChangeMultyRate && ismultirate){
 | 
				
			||||||
 | 
					                    contract.set("ismultirate", true);//多税率
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if(isMultyRateChangeSingleRate && !ismultirate){
 | 
				
			||||||
 | 
					                    contract.set("ismultirate", false);//单税率
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            } else if (operationKey.equals("unaudit")) {
 | 
				
			||||||
 | 
					                contract.set("totalrevisionamount", totalRevisionAmount.subtract(revisionAmount));
 | 
				
			||||||
 | 
					                contract.set("totalrevisionoftaxamount", totalRevisionOfTaxAmount.subtract(revisionOfTaxAmount));
 | 
				
			||||||
 | 
					                contract.set("totalamount", totalAmount.subtract(revisionAmount));
 | 
				
			||||||
 | 
					                contract.set("totaloftaxamount", totalOfTaxAmount.subtract(revisionOfTaxAmount));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            SaveServiceHelper.save(new DynamicObject[]{contract});
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void writeBackPurchaseOrder(Map<Long, BigDecimal> entryId_biangengsl, DynamicObject contract) {
 | 
				
			||||||
 | 
					        QFilter contractFilter = new QFilter("contract", "=", contract.getPkValue());
 | 
				
			||||||
 | 
					        QFilter sourceFilter = new QFilter("source", "=", OrderSourceEnum.PUR_CONT.getValue());
 | 
				
			||||||
 | 
					        DynamicObject[] orderBillArr = BusinessDataServiceHelper.load("ecma_purchaseorderbill", "billno,billname,orderentry,orderentry.sourceqty,orderentry.restqty,orderentry.listingid", new QFilter[]{contractFilter, sourceFilter});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for(DynamicObject item : orderBillArr) {
 | 
				
			||||||
 | 
					            for(DynamicObject entry : item.getDynamicObjectCollection("orderentry")) {
 | 
				
			||||||
 | 
					                Long listingId = entry.getLong("listingid");
 | 
				
			||||||
 | 
					                BigDecimal biangengsl = (BigDecimal)entryId_biangengsl.get(listingId);
 | 
				
			||||||
 | 
					                BigDecimal sourceQty = entry.getBigDecimal("sourceqty");
 | 
				
			||||||
 | 
					                BigDecimal restQty = entry.getBigDecimal("restqty");
 | 
				
			||||||
 | 
					                if (biangengsl != null) {
 | 
				
			||||||
 | 
					                    entry.set("sourceqty", sourceQty.add(biangengsl));
 | 
				
			||||||
 | 
					                    entry.set("restqty", restQty.add(biangengsl));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        SaveServiceHelper.save(orderBillArr);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue