传BIP逻辑修改
This commit is contained in:
parent
26450f80d0
commit
19d5ef28d2
|
@ -4,10 +4,15 @@ import kd.bos.bill.AbstractBillPlugIn;
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
import kd.bos.form.events.AfterDoOperationEventArgs;
|
import kd.bos.form.events.AfterDoOperationEventArgs;
|
||||||
|
import kd.bos.form.events.ClientCallBackEvent;
|
||||||
import kd.bos.form.events.ClosedCallBackEvent;
|
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 kd.sdk.plugin.Plugin;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
import java.util.EventObject;
|
import java.util.EventObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -31,6 +36,8 @@ public class SumInvoiceEntryPlugin extends AbstractBillPlugIn implements Plugin
|
||||||
BigDecimal notaxamt = inventry_invoicebill.getBigDecimal("notaxamt");
|
BigDecimal notaxamt = inventry_invoicebill.getBigDecimal("notaxamt");
|
||||||
BigDecimal tax = inventry_invoicebill.getBigDecimal("tax");
|
BigDecimal tax = inventry_invoicebill.getBigDecimal("tax");
|
||||||
BigDecimal amount = inventry_invoicebill.getBigDecimal("amount");
|
BigDecimal amount = inventry_invoicebill.getBigDecimal("amount");
|
||||||
|
//新增字段赋值
|
||||||
|
addFieldsRule(dynamicObject,inventry_invoicebill);
|
||||||
dynamicObject.set("qeug_notaxamt",notaxamt);
|
dynamicObject.set("qeug_notaxamt",notaxamt);
|
||||||
dynamicObject.set("qeug_tax",tax);
|
dynamicObject.set("qeug_tax",tax);
|
||||||
dynamicObject.set("qeug_amount",amount);
|
dynamicObject.set("qeug_amount",amount);
|
||||||
|
@ -39,6 +46,30 @@ public class SumInvoiceEntryPlugin extends AbstractBillPlugIn implements Plugin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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.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
|
@Override
|
||||||
public void afterDoOperation(AfterDoOperationEventArgs args) {
|
public void afterDoOperation(AfterDoOperationEventArgs args) {
|
||||||
super.afterDoOperation(args);
|
super.afterDoOperation(args);
|
||||||
|
|
|
@ -652,61 +652,66 @@ public class YongyouBIPOperation extends AbstractOperationServicePlugIn implemen
|
||||||
items.put("notax_de",payRequestInfo.getBigDecimal("notaxamt").toString());//贷方无税金额,除税金额
|
items.put("notax_de",payRequestInfo.getBigDecimal("notaxamt").toString());//贷方无税金额,除税金额
|
||||||
items.put("local_notax_de",payRequestInfo.getBigDecimal("notaxamt").toString());//组织本币无税金额
|
items.put("local_notax_de",payRequestInfo.getBigDecimal("notaxamt").toString());//组织本币无税金额
|
||||||
} else {
|
} else {
|
||||||
// 税额
|
// 税额=本次核销税额累加(只针对专票);
|
||||||
BigDecimal taxAmount = BigDecimal.ZERO;
|
BigDecimal taxAmount = BigDecimal.ZERO;
|
||||||
//无税金额(专普混合:专票无税+普票价税合计)
|
//不含税金额(专普混合:专票本次核销不含税金额累加+普票用本次核销金额进行累加)
|
||||||
BigDecimal notTaxAmount = BigDecimal.ZERO;
|
BigDecimal notTaxAmount = BigDecimal.ZERO;
|
||||||
// 税率相关变量
|
// 税率相关变量
|
||||||
BigDecimal commonTaxRate = null;
|
BigDecimal commonTaxRate = null;
|
||||||
Long commonTaxRateId = null;
|
Long commonTaxRateId = null;
|
||||||
boolean hasDifferentTaxRates = false;
|
boolean hasDifferentTaxRates = false;
|
||||||
|
//本次核销不含税金额=含税金额(本次核销金额)÷ (1 + 税率)
|
||||||
|
BigDecimal entryNotTaxAmount;
|
||||||
|
//本次核销金额的税额=含税金额(本次核销金额) - 本次核销不含税金额
|
||||||
|
//BigDecimal entryTaxAmount = BigDecimal.ZERO;
|
||||||
|
|
||||||
// 遍历发票
|
// 遍历发票
|
||||||
for (DynamicObject invoiceObj : invoiceEntry) {
|
for (DynamicObject invoiceObj : invoiceEntry) {
|
||||||
DynamicObject invoiceBillF7 = invoiceObj.getDynamicObject("inventry_invoicebill");
|
DynamicObject invoiceBillF7 = invoiceObj.getDynamicObject("inventry_invoicebill");
|
||||||
if (invoiceBillF7!=null){
|
if (invoiceBillF7!=null) {
|
||||||
Object pkValue = invoiceBillF7.getPkValue();
|
Object pkValue = invoiceBillF7.getPkValue();
|
||||||
DynamicObject invoiceBill = BusinessDataServiceHelper.loadSingle(pkValue, "recon_invoicebill");
|
DynamicObject invoiceBill = BusinessDataServiceHelper.loadSingle(pkValue, "recon_invoicebill");
|
||||||
if (invoiceBill != null) {
|
if (invoiceBill != null) {
|
||||||
//表头不含税
|
//本次核销金额
|
||||||
BigDecimal notTax=invoiceBill.getBigDecimal("notaxamt");
|
BigDecimal hasWriteOffAmt = invoiceObj.getBigDecimal("inventry_haswriteoffamt");
|
||||||
//表头价税合计
|
|
||||||
BigDecimal amount=invoiceBill.getBigDecimal("amount");
|
|
||||||
// 判断【发票登记-发票类型-名称】
|
// 判断【发票登记-发票类型-名称】
|
||||||
DynamicObject invoice = invoiceBill.getDynamicObject("invoice");
|
DynamicObject invoice = invoiceBill.getDynamicObject("invoice");
|
||||||
if (invoice != null) {
|
if (invoice != null) {
|
||||||
String invoiceName = invoice.getString("name");
|
String invoiceName = invoice.getString("name");
|
||||||
if (invoiceName != null && invoiceName.contains("专用")) {
|
if (invoiceName != null && invoiceName.contains("专用")) {
|
||||||
notTaxAmount=notTaxAmount.add(notTax);
|
|
||||||
// 发票登记-发票明细
|
taxAmount = taxAmount.add(hasWriteOffAmt);
|
||||||
|
|
||||||
|
|
||||||
|
// 发票登记-发票明细————————只有一行
|
||||||
DynamicObjectCollection invoiceDetails = invoiceBill.getDynamicObjectCollection("invoiceentry");
|
DynamicObjectCollection invoiceDetails = invoiceBill.getDynamicObjectCollection("invoiceentry");
|
||||||
if (invoiceDetails != null && invoiceDetails.size() != 0) {
|
if (invoiceDetails != null && invoiceDetails.size() != 0) {
|
||||||
for (DynamicObject invoiceDetail : invoiceDetails) {
|
// 处理税率
|
||||||
BigDecimal entryTax = invoiceDetail.getBigDecimal("entry_tax");
|
DynamicObject entryTaxRate = invoiceDetails.get(0).getDynamicObject("entry_taxrate");
|
||||||
// 税额累加
|
if (entryTaxRate != null) {
|
||||||
taxAmount = taxAmount.add(entryTax);
|
Long currentTaxRateId = (Long) entryTaxRate.getPkValue();
|
||||||
|
BigDecimal currentTaxRate = entryTaxRate.getBigDecimal("taxrate");
|
||||||
|
//本次核销不含税金额=含税金额(本次核销金额)÷ (1 + 税率)
|
||||||
|
entryNotTaxAmount=hasWriteOffAmt.divide(currentTaxRate.add(BigDecimal.ONE),2, RoundingMode.HALF_UP);
|
||||||
|
// 专票不含税=本次核销不含税金额累加
|
||||||
|
// 本次核销不含税金额累加
|
||||||
|
notTaxAmount=notTaxAmount.add(entryNotTaxAmount);
|
||||||
|
|
||||||
// 处理税率
|
// 第一次遇到税率,记录下来
|
||||||
DynamicObject entryTaxRate = invoiceDetail.getDynamicObject("entry_taxrate");
|
if (commonTaxRateId == null) {
|
||||||
if (entryTaxRate != null) {
|
commonTaxRateId = currentTaxRateId;
|
||||||
Long currentTaxRateId = (Long) entryTaxRate.getPkValue();
|
commonTaxRate = currentTaxRate;
|
||||||
BigDecimal currentTaxRate = entryTaxRate.getBigDecimal("taxrate");
|
}
|
||||||
|
// 后续遇到不同的税率,标记为不一致
|
||||||
// 第一次遇到税率,记录下来
|
else if (!commonTaxRateId.equals(currentTaxRateId)) {
|
||||||
if (commonTaxRateId == null) {
|
hasDifferentTaxRates = true;
|
||||||
commonTaxRateId = currentTaxRateId;
|
|
||||||
commonTaxRate = currentTaxRate;
|
|
||||||
}
|
|
||||||
// 后续遇到不同的税率,标记为不一致
|
|
||||||
else if (!commonTaxRateId.equals(currentTaxRateId)) {
|
|
||||||
hasDifferentTaxRates = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}else {
|
}
|
||||||
notTaxAmount=notTaxAmount.add(amount);
|
}else{
|
||||||
|
notTaxAmount=notTaxAmount.add(hasWriteOffAmt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -773,14 +778,18 @@ public class YongyouBIPOperation extends AbstractOperationServicePlugIn implemen
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// 税额
|
// 税额=本次核销税额累加(只针对专票);
|
||||||
BigDecimal taxAmount = BigDecimal.ZERO;
|
BigDecimal taxAmount = BigDecimal.ZERO;
|
||||||
//无税金额(专普混合:专票无税+普票价税合计)
|
//不含税金额(专普混合:专票本次核销不含税金额累加+普票用本次核销金额进行累加)
|
||||||
BigDecimal notTaxAmount = BigDecimal.ZERO;
|
BigDecimal notTaxAmount = BigDecimal.ZERO;
|
||||||
// 税率相关变量
|
// 税率相关变量
|
||||||
BigDecimal commonTaxRate = null;
|
BigDecimal commonTaxRate = null;
|
||||||
Long commonTaxRateId = null;
|
Long commonTaxRateId = null;
|
||||||
boolean hasDifferentTaxRates = false;
|
boolean hasDifferentTaxRates = false;
|
||||||
|
//本次核销不含税金额=含税金额(本次核销金额)÷ (1 + 税率)
|
||||||
|
BigDecimal entryNotTaxAmount;
|
||||||
|
//本次核销金额的税额=含税金额(本次核销金额) - 本次核销不含税金额
|
||||||
|
//BigDecimal entryTaxAmount = BigDecimal.ZERO;
|
||||||
|
|
||||||
// 遍历发票
|
// 遍历发票
|
||||||
for (DynamicObject invoiceObj : invoiceEntry) {
|
for (DynamicObject invoiceObj : invoiceEntry) {
|
||||||
|
@ -789,29 +798,31 @@ public class YongyouBIPOperation extends AbstractOperationServicePlugIn implemen
|
||||||
Object pkValue = invoiceBillF7.getPkValue();
|
Object pkValue = invoiceBillF7.getPkValue();
|
||||||
DynamicObject invoiceBill = BusinessDataServiceHelper.loadSingle(pkValue, "recon_invoicebill");
|
DynamicObject invoiceBill = BusinessDataServiceHelper.loadSingle(pkValue, "recon_invoicebill");
|
||||||
if (invoiceBill != null) {
|
if (invoiceBill != null) {
|
||||||
//表头不含税
|
//本次核销金额
|
||||||
BigDecimal notTax=invoiceBill.getBigDecimal("notaxamt");
|
BigDecimal hasWriteOffAmt = invoiceObj.getBigDecimal("inventry_haswriteoffamt");
|
||||||
//表头价税合计
|
|
||||||
BigDecimal amount=invoiceBill.getBigDecimal("amount");
|
|
||||||
|
|
||||||
// 判断【发票登记-发票类型-名称】
|
// 判断【发票登记-发票类型-名称】
|
||||||
DynamicObject invoice = invoiceBill.getDynamicObject("invoice");
|
DynamicObject invoice = invoiceBill.getDynamicObject("invoice");
|
||||||
if (invoice != null) {
|
if (invoice != null) {
|
||||||
String invoiceName = invoice.getString("name");
|
String invoiceName = invoice.getString("name");
|
||||||
if (invoiceName != null && invoiceName.contains("专用")) {
|
if (invoiceName != null && invoiceName.contains("专用")) {
|
||||||
notTaxAmount=notTaxAmount.add(notTax);
|
|
||||||
// 发票登记-发票明细
|
taxAmount = taxAmount.add(hasWriteOffAmt);
|
||||||
|
|
||||||
|
|
||||||
|
// 发票登记-发票明细————————只有一行
|
||||||
DynamicObjectCollection invoiceDetails = invoiceBill.getDynamicObjectCollection("invoiceentry");
|
DynamicObjectCollection invoiceDetails = invoiceBill.getDynamicObjectCollection("invoiceentry");
|
||||||
if (invoiceDetails != null && invoiceDetails.size() != 0) {
|
if (invoiceDetails != null && invoiceDetails.size() != 0) {
|
||||||
for (DynamicObject invoiceDetail : invoiceDetails) {
|
|
||||||
BigDecimal entryTax = invoiceDetail.getBigDecimal("entry_tax");
|
|
||||||
// 税额累加
|
|
||||||
taxAmount = taxAmount.add(entryTax);
|
|
||||||
// 处理税率
|
// 处理税率
|
||||||
DynamicObject entryTaxRate = invoiceDetail.getDynamicObject("entry_taxrate");
|
DynamicObject entryTaxRate = invoiceDetails.get(0).getDynamicObject("entry_taxrate");
|
||||||
if (entryTaxRate != null) {
|
if (entryTaxRate != null) {
|
||||||
Long currentTaxRateId = (Long) entryTaxRate.getPkValue();
|
Long currentTaxRateId = (Long) entryTaxRate.getPkValue();
|
||||||
BigDecimal currentTaxRate = entryTaxRate.getBigDecimal("taxrate");
|
BigDecimal currentTaxRate = entryTaxRate.getBigDecimal("taxrate");
|
||||||
|
//本次核销不含税金额=含税金额(本次核销金额)÷ (1 + 税率)
|
||||||
|
entryNotTaxAmount=hasWriteOffAmt.divide(currentTaxRate.add(BigDecimal.ONE),2, RoundingMode.HALF_UP);
|
||||||
|
// 专票不含税=本次核销不含税金额累加
|
||||||
|
// 本次核销不含税金额累加
|
||||||
|
notTaxAmount=notTaxAmount.add(entryNotTaxAmount);
|
||||||
|
|
||||||
// 第一次遇到税率,记录下来
|
// 第一次遇到税率,记录下来
|
||||||
if (commonTaxRateId == null) {
|
if (commonTaxRateId == null) {
|
||||||
|
@ -823,10 +834,10 @@ public class YongyouBIPOperation extends AbstractOperationServicePlugIn implemen
|
||||||
hasDifferentTaxRates = true;
|
hasDifferentTaxRates = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
notTaxAmount=notTaxAmount.add(amount);
|
notTaxAmount=notTaxAmount.add(hasWriteOffAmt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue