入库单单优化
This commit is contained in:
parent
873f71b53d
commit
3c6d06f4af
|
|
@ -219,7 +219,29 @@ public class MaterialInbPurchaseApplyPlugin extends AbstractBillPlugIn implement
|
|||
if (newValue == null || !newValue.equals(oldValue)) {
|
||||
this.getModel().setValue("zcgj_purchaseapply", null);//清空采购申请
|
||||
}
|
||||
if (newValue != null && !newValue.equals(oldValue)) {
|
||||
DynamicObject fiaccountorg = (DynamicObject) newValue;//财务记账组织新值
|
||||
QFilter filter = new QFilter("zcgj_companyblentry.zcgj_org.id", QCP.equals, fiaccountorg.getPkValue());
|
||||
filter.and(new QFilter("number", QCP.equals, "001"));
|
||||
filter.and(new QFilter("zcgj_companyblentry.zcgj_rateway", QCP.equals, true));
|
||||
DynamicObject zcgj_companybelong = QueryServiceHelper.queryOne("zcgj_companybelong", "number,zcgj_companyblentry.zcgj_wareunit", new QFilter[]{filter});
|
||||
DynamicObjectCollection entryEntityCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_entryentity");//合同进项发票信息
|
||||
if (zcgj_companybelong != null) {
|
||||
for (DynamicObject entryEntity : entryEntityCollection) {
|
||||
entryEntity.set("zcgj_invoicetax", BigDecimal.ZERO);//税额
|
||||
entryEntity.set("zcgj_invoiceamount", entryEntity.get("zcgj_oftaxinvoiceamount"));//价税合计赋值给金额
|
||||
}
|
||||
} else {
|
||||
for (DynamicObject entryEntity : entryEntityCollection) {
|
||||
DynamicObject zcgj_invoice = entryEntity.getDynamicObject("zcgj_invoice");//发票号码
|
||||
entryEntity.set("zcgj_invoicetax", zcgj_invoice.getBigDecimal("totaltax"));//税额
|
||||
entryEntity.set("zcgj_invoiceamount", zcgj_invoice.getBigDecimal("totalamount"));//金额
|
||||
}
|
||||
}
|
||||
this.getView().updateView("zcgj_entryentity");//刷新分录
|
||||
}
|
||||
updateMeasureUnitEnableState();
|
||||
setNewExpenseSummary();
|
||||
} else if ("zcgj_reqperson".equals(key)) {
|
||||
//物资申请人
|
||||
ChangeData[] changeSet = e.getChangeSet();
|
||||
|
|
@ -423,6 +445,18 @@ public class MaterialInbPurchaseApplyPlugin extends AbstractBillPlugIn implement
|
|||
if (!invoiceTypeIdName.contains("专")) {
|
||||
this.getModel().setValue("zcgj_invoicetax", BigDecimal.ZERO, rowIndex);
|
||||
this.getModel().setValue("zcgj_invoiceamount", dataEntity.get("zcgj_oftaxinvoiceamount"), rowIndex);
|
||||
} else {
|
||||
DynamicObject fiaccountorg = (DynamicObject) this.getModel().getValue("fiaccountorg");//财务记账组织
|
||||
if (fiaccountorg != null) {
|
||||
QFilter filter = new QFilter("zcgj_companyblentry.zcgj_org.id", QCP.equals, fiaccountorg.getPkValue());
|
||||
filter.and(new QFilter("number", QCP.equals, "001"));
|
||||
filter.and(new QFilter("zcgj_companyblentry.zcgj_rateway", QCP.equals, true));
|
||||
DynamicObject zcgj_companybelong = QueryServiceHelper.queryOne("zcgj_companybelong", "number,zcgj_companyblentry.zcgj_wareunit", new QFilter[]{filter});
|
||||
if (zcgj_companybelong != null) {
|
||||
this.getModel().setValue("zcgj_invoicetax", BigDecimal.ZERO, rowIndex);
|
||||
this.getModel().setValue("zcgj_invoiceamount", dataEntity.get("zcgj_oftaxinvoiceamount"), rowIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -848,31 +882,33 @@ public class MaterialInbPurchaseApplyPlugin extends AbstractBillPlugIn implement
|
|||
// 运费行 - 设置运费发票号码
|
||||
if (!freightInvoiceNumbers.isEmpty()) {
|
||||
String invoiceNumbersStr = String.join(",", freightInvoiceNumbers);
|
||||
line.set("zcgj_invoicenoentry", invoiceNumbersStr);
|
||||
line.set("zcgj_invoicenoentry", invoiceNumbersStr);// 发票号码
|
||||
|
||||
// 设置专票和抵扣字段
|
||||
boolean isSpecialInvoice = checkIfSpecialInvoice(freightInvoiceNumbers, invoiceTypeMap);
|
||||
line.set("zcgj_isspecialinvoice", isSpecialInvoice);
|
||||
line.set("zcgj_offset", isSpecialInvoice);
|
||||
line.set("zcgj_isspecialinvoice", isSpecialInvoice);// 专票
|
||||
boolean isSpecialInvoice2 = checkIfSpecialInvoice2(freightInvoiceNumbers, invoiceTypeMap);
|
||||
line.set("zcgj_offset", isSpecialInvoice2);// 是否抵扣
|
||||
} else {
|
||||
line.set("zcgj_invoicenoentry", null);
|
||||
line.set("zcgj_isspecialinvoice", false);
|
||||
line.set("zcgj_offset", false);
|
||||
line.set("zcgj_invoicenoentry", null);// 发票号码
|
||||
line.set("zcgj_isspecialinvoice", false);// 专票
|
||||
line.set("zcgj_offset", false);// 是否抵扣
|
||||
}
|
||||
} else {
|
||||
// 非运费行 - 设置非运费发票号码
|
||||
if (!nonFreightInvoiceNumbers.isEmpty()) {
|
||||
String invoiceNumbersStr = String.join(",", nonFreightInvoiceNumbers);
|
||||
line.set("zcgj_invoicenoentry", invoiceNumbersStr);
|
||||
line.set("zcgj_invoicenoentry", invoiceNumbersStr);// 发票号码
|
||||
|
||||
// 设置专票和抵扣字段
|
||||
boolean isSpecialInvoice = checkIfSpecialInvoice(nonFreightInvoiceNumbers, invoiceTypeMap);
|
||||
line.set("zcgj_isspecialinvoice", isSpecialInvoice);
|
||||
line.set("zcgj_offset", isSpecialInvoice);
|
||||
line.set("zcgj_isspecialinvoice", isSpecialInvoice);// 专票
|
||||
boolean isSpecialInvoice2 = checkIfSpecialInvoice2(nonFreightInvoiceNumbers, invoiceTypeMap);
|
||||
line.set("zcgj_offset", isSpecialInvoice2);// 是否抵扣
|
||||
} else {
|
||||
line.set("zcgj_invoicenoentry", null);
|
||||
line.set("zcgj_isspecialinvoice", false);
|
||||
line.set("zcgj_offset", false);
|
||||
line.set("zcgj_invoicenoentry", null);// 发票号码
|
||||
line.set("zcgj_isspecialinvoice", false);// 专票
|
||||
line.set("zcgj_offset", false);// 是否抵扣
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -903,6 +939,41 @@ public class MaterialInbPurchaseApplyPlugin extends AbstractBillPlugIn implement
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查发票列表中是否包含专票类型的发票
|
||||
*
|
||||
* @param invoiceNumbers 发票号码列表
|
||||
* @param invoiceTypeMap 发票号码到发票对象的映射
|
||||
* @return 是否包含专票
|
||||
*/
|
||||
private boolean checkIfSpecialInvoice2(List<String> invoiceNumbers, Map<String, DynamicObject> invoiceTypeMap) {
|
||||
//财务记账组织存在公司归属对应数据中,是否抵扣就全是false
|
||||
DynamicObject fiaccountorg = (DynamicObject) this.getModel().getValue("fiaccountorg");//财务记账组织
|
||||
if (fiaccountorg != null) {
|
||||
QFilter filter = new QFilter("zcgj_companyblentry.zcgj_org.id", QCP.equals, fiaccountorg.getPkValue());
|
||||
filter.and(new QFilter("number", QCP.equals, "001"));
|
||||
filter.and(new QFilter("zcgj_companyblentry.zcgj_rateway", QCP.equals, true));
|
||||
DynamicObject zcgj_companybelong = QueryServiceHelper.queryOne("zcgj_companybelong", "number,zcgj_companyblentry.zcgj_wareunit", new QFilter[]{filter});
|
||||
if (zcgj_companybelong != null) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
for (String invoiceNumber : invoiceNumbers) {
|
||||
DynamicObject invoice = invoiceTypeMap.get(invoiceNumber);
|
||||
if (invoice != null) {
|
||||
DynamicObject invoiceType = invoice.getDynamicObject("invoicetypeid"); // 发票类型字段
|
||||
if (invoiceType != null) {
|
||||
String invoiceTypeName = invoiceType.getString("name"); // 发票类型名称
|
||||
// 当发票类型为"数电发票(增值税专用发票)"或"电子发票专票"时,认为是专票
|
||||
if ("数电发票(增值税专用发票)".equals(invoiceTypeName) || "电子发票专票".equals(invoiceTypeName)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 按费用项目和税率组合合并费用汇总条目
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in New Issue