dobe_comic8/main/java/shkd/repc/recon/formplugin/SumInvoiceEntryPlugin.java

84 lines
3.7 KiB
Java

package shkd.repc.recon.formplugin;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.form.events.AfterDoOperationEventArgs;
import kd.bos.form.events.ClientCallBackEvent;
import kd.bos.form.events.ClosedCallBackEvent;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.macc.sca.algox.task.ServiceHelper;
import kd.sdk.plugin.Plugin;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.EventObject;
/**
* 费用登记和付款申请的发票分录合计行表单插件
*/
public class SumInvoiceEntryPlugin extends AbstractBillPlugIn implements Plugin {
@Override
public void afterBindData(EventObject e) {
super.afterBindData(e);
updateAmt();
}
private void updateAmt(){
DynamicObject dataEntity = this.getModel().getDataEntity();
DynamicObjectCollection invoiceentry = dataEntity.getDynamicObjectCollection("invoiceentry");
if (invoiceentry!=null) {
for (int i = 0; i < invoiceentry.size(); i++) {
DynamicObject dynamicObject = invoiceentry.get(i);
DynamicObject inventry_invoicebill = dynamicObject.getDynamicObject("inventry_invoicebill");
BigDecimal notaxamt = inventry_invoicebill.getBigDecimal("notaxamt");
BigDecimal tax = inventry_invoicebill.getBigDecimal("tax");
BigDecimal amount = inventry_invoicebill.getBigDecimal("amount");
//新增字段赋值
addFieldsRule(dynamicObject,inventry_invoicebill);
dynamicObject.set("qeug_notaxamt",notaxamt);
dynamicObject.set("qeug_tax",tax);
dynamicObject.set("qeug_amount",amount);
}
this.getView().updateView("invoiceentry");
}
}
private void addFieldsRule(DynamicObject dynamicObject,DynamicObject invoiceBill) {
//本次核销不含税金额
BigDecimal notTaxAmount;
//本次核销金额的税额
BigDecimal taxAmount;
Object pkValue = invoiceBill.getPkValue();
BigDecimal hasWriteOffAmt = dynamicObject.getBigDecimal("inventry_haswriteoffamt");
DynamicObject reconInvoiceBill = BusinessDataServiceHelper.loadSingle(pkValue, "recon_invoicebill");
if (reconInvoiceBill != null) {
DynamicObjectCollection invoiceDetails = reconInvoiceBill.getDynamicObjectCollection("invoiceentry");
if (invoiceDetails!=null && invoiceDetails.size()!=0){
DynamicObject entry_taxrate = invoiceDetails.get(0).getDynamicObject("entry_taxrate");
BigDecimal taxrate = entry_taxrate.getBigDecimal("taxrate");
//本次核销不含税金额=含税金额(本次核销金额)÷ (1 + 税率)
notTaxAmount=hasWriteOffAmt.divide(taxrate.divide(BigDecimal.valueOf(100)).add(BigDecimal.ONE),2, RoundingMode.HALF_UP);
//本次核销金额的税额=含税金额(本次核销金额) - 本次核销不含税金额
taxAmount = hasWriteOffAmt.subtract(notTaxAmount).setScale(2, RoundingMode.HALF_UP);
dynamicObject.set("qeug_amountfield",notTaxAmount);
dynamicObject.set("qeug_inventry_haswriteoff",taxAmount);
}
}
}
@Override
public void afterDoOperation(AfterDoOperationEventArgs args) {
super.afterDoOperation(args);
updateAmt();
}
@Override
public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
super.closedCallBack(closedCallBackEvent);
updateAmt();
}
}