Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
13844f37c3
|
@ -53,5 +53,4 @@ public class ContractProcessRevisionFilterPlugin extends AbstractBillPlugIn impl
|
|||
|
||||
}
|
||||
}
|
||||
// }
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
package zcgj.zcdev.zcdev.pr.plugin.form;
|
||||
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.form.field.BasedataEdit;
|
||||
import kd.bos.form.field.events.BeforeF7SelectEvent;
|
||||
import kd.bos.form.field.events.BeforeF7SelectListener;
|
||||
import kd.bos.list.ListShowParameter;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.sdk.plugin.Plugin;
|
||||
|
||||
import java.util.EventObject;
|
||||
|
||||
public class OutContractSettleProcessFilterPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
|
||||
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
BasedataEdit contractprocess = this.getControl("zcgj_pa_process");
|
||||
if(contractprocess != null) {
|
||||
contractprocess.addBeforeF7SelectListener(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) {
|
||||
String name1 = beforeF7SelectEvent.getProperty().getName();
|
||||
if(name1.equals("zcgj_pa_process")) {
|
||||
String name = this.getModel().getDataEntity().getDataEntityType().getName();
|
||||
Object projectObj = this.getModel().getValue("project");
|
||||
if(projectObj instanceof DynamicObject) {
|
||||
DynamicObject project = (DynamicObject) projectObj;
|
||||
QFilter qFilter = new QFilter("project.id", QCP.equals, project.getLong("id"));
|
||||
QFilter treeFilter = new QFilter("number", QCP.equals, project.getString("number"));
|
||||
ListShowParameter showParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
|
||||
showParameter.getListFilterParameter().getQFilters().add(qFilter);
|
||||
showParameter.getTreeFilterParameter().getQFilters().add(treeFilter);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
package zcgj.zcdev.zcdev.pr.plugin.form;
|
||||
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.datamodel.events.ChangeData;
|
||||
import kd.bos.entity.datamodel.events.LoadDataEventArgs;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
import kd.ec.contract.formplugin.PaymentApplyEditUI;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.EventObject;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class PaymentApplyEditUIExtPlugin extends PaymentApplyEditUI {
|
||||
|
||||
@Override
|
||||
protected void thisApplyOfTaxChanged(ChangeData changeData) {
|
||||
this.sumApplyOfTax();
|
||||
//this.setRealPayAmt();
|
||||
if (this.getPageCache().get("thisApplyAmountCache") != null) {
|
||||
this.getPageCache().remove("thisApplyAmountCache");
|
||||
} else {
|
||||
int rowIndex = changeData.getRowIndex();
|
||||
if (!this.hasInvoice(rowIndex)) {
|
||||
this.setShouldPayOfTax(rowIndex);
|
||||
BigDecimal applyOfTaxAmount = (BigDecimal)changeData.getNewValue();
|
||||
BigDecimal taxRate = (BigDecimal)this.getModel().getValue("conttaxrate", rowIndex);
|
||||
BigDecimal applyAmount = applyOfTaxAmount.divide(BigDecimal.ONE.add(taxRate.divide(BigDecimal.valueOf(100L), 4)), 10, 5);
|
||||
this.getPageCache().put("thisApplyOfTaxCache", "1");
|
||||
this.getModel().setValue("thisapplyamount", applyAmount, rowIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setRealPayAmt() {
|
||||
DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity().getDynamicObjectCollection("entryentity");
|
||||
BigDecimal totalAmount = BigDecimal.ZERO;
|
||||
Set<String> contractNo = new HashSet<>();
|
||||
for (DynamicObject dynamicObject : dynamicObjectCollection) {
|
||||
DynamicObject contract = dynamicObject.getDynamicObject("contract");
|
||||
if(contract != null) {
|
||||
String billno = contract.getString("id");
|
||||
if(!contractNo.contains(billno)) {
|
||||
totalAmount = dynamicObject.getBigDecimal("thisrealpayamt");
|
||||
contractNo.add(billno);
|
||||
}
|
||||
}
|
||||
}
|
||||
this.getModel().setValue("realpayamt", totalAmount);
|
||||
//Object id = this.getModel().getValue("id");
|
||||
//DynamicObject paymentapply = BusinessDataServiceHelper.loadSingle(id, "ec_paymentapply", "realpayamt");
|
||||
//paymentapply.set("realpayamt", 99999);
|
||||
//SaveServiceHelper.update(new DynamicObject[]{paymentapply});
|
||||
this.getView().updateView("realpayamt");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterLoadData(EventObject e) {
|
||||
this.setRealPayAmt();
|
||||
super.afterLoadData(e);
|
||||
}
|
||||
|
||||
}
|
|
@ -41,6 +41,15 @@ public class PaymentapplyCopyPlugin extends AbstractBillPlugIn implements Plugi
|
|||
this.getModel().setValue("totalshouldpay", this.getSum("entryentity", "applyoftaxamount"));
|
||||
this.getView().updateView(ENTITY_KEY);
|
||||
this.getView().updateView("totalshouldpay");
|
||||
|
||||
//判断是否有发票,有发票则锁定本次申请金额
|
||||
for (int i = 0; i < entity.size(); i++) {
|
||||
DynamicObject dynamicObject = entity.get(i);
|
||||
DynamicObjectCollection dynamicObjectCollection = dynamicObject.getDynamicObjectCollection("subentryentity");
|
||||
if(dynamicObjectCollection == null || dynamicObjectCollection.isEmpty()){
|
||||
this.getView().setEnable(false,i,"thisapplyoftax");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
package zcgj.zcdev.zcdev.pr.plugin.operate;
|
||||
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.ExtendedDataEntity;
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
import kd.bos.entity.validate.AbstractValidator;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 工序分摊金额校验
|
||||
*/
|
||||
public class OutContractSettleProcessCheckOp extends AbstractOperationServicePlugIn {
|
||||
|
||||
@Override
|
||||
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||
super.onPreparePropertys(e);
|
||||
e.getFieldKeys().add("itementry");
|
||||
e.getFieldKeys().add("zcgj_processallocatentity");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAddValidators(AddValidatorsEventArgs e) {
|
||||
super.onAddValidators(e);
|
||||
//当前所在的组织是属于矿山下的
|
||||
e.getValidators().add(new ValidatorExt());
|
||||
}
|
||||
|
||||
class ValidatorExt extends AbstractValidator {
|
||||
@Override
|
||||
public void validate() {
|
||||
ExtendedDataEntity[] extendedDataEntities = this.getDataEntities();
|
||||
for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) {
|
||||
DynamicObject dataEntity = extendedDataEntity.getDataEntity();
|
||||
DynamicObjectCollection itementryCollection = dataEntity.getDynamicObjectCollection("itementry");
|
||||
int i=1;
|
||||
for (DynamicObject itementry : itementryCollection) {
|
||||
BigDecimal oftaxamount = itementry.getBigDecimal("oftaxamount");
|
||||
DynamicObjectCollection processallocatentityCollection = itementry.getDynamicObjectCollection("zcgj_processallocatentity");
|
||||
BigDecimal totalPaAmount = BigDecimal.ZERO;
|
||||
for (DynamicObject dynamicObject : processallocatentityCollection) {
|
||||
totalPaAmount = totalPaAmount.add(dynamicObject.getBigDecimal("zcgj_pa_amount"));
|
||||
}
|
||||
if(totalPaAmount.compareTo(oftaxamount)!=0){
|
||||
this.addFatalErrorMessage(extendedDataEntity, "合同支付项第"+i+"条,价税合计金额与工序分摊金额不一致,请重新核对并调整分摊金额,以确保两者相等。");
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue