fix:收款单报错处理

This commit is contained in:
ljw 2024-09-23 15:50:04 +08:00
parent b866ded5e9
commit 21c883fadf

View File

@ -980,116 +980,127 @@ public class GatheringEcit extends AbstractBillPlugIn implements BeforeF7SelectL
orderplat(key, map.get(key)); orderplat(key, map.get(key));
} }
} }
// 收款单 收款明细 undate_receipt();
DynamicObjectCollection collection = this.getModel().getEntryEntity("yem_receiptdetail");
if (!collection.isEmpty()) {
for (DynamicObject dynamicObject : collection) {
// 认领明细子单据体
DynamicObjectCollection subCollection = dynamicObject.getDynamicObjectCollection("yem_claimdetail");
if (subCollection.isEmpty()) {
continue;
}
// 合同号 - 认领金额, 认领金额本位币
Map<Long, Map<String, BigDecimal>> longMapLinkedHashMap = new LinkedHashMap<>();
// 获取子单据体中 合同号对应的认领金额总和
for (DynamicObject object : subCollection) {
// 合同号
long contractno = object.getLong("yem_salcontractno.id");
if (longMapLinkedHashMap.containsKey(contractno)) {
// 认领金额
BigDecimal claimamt = longMapLinkedHashMap.get(contractno).get("claimamt");
claimamt = claimamt.add(object.getBigDecimal("yem_claimamt"));
// 认领金额本位币
BigDecimal claimamtbase = longMapLinkedHashMap.get(contractno).get("claimamtbase");
claimamtbase = claimamtbase.add(object.getBigDecimal("yem_claimamtbase"));
Map<String, BigDecimal> vVewMap = new HashMap<>();
// 认领金额
vVewMap.put("claimamt", claimamt);
// 认领金额本位币
vVewMap.put("claimamtbase", claimamtbase);
// 合同金额
vVewMap.put("salcontractamt", object.getBigDecimal("yem_salcontractamt"));
longMapLinkedHashMap.put(contractno, vVewMap);
} else {
Map<String, BigDecimal> vVewMap = new HashMap<>();
vVewMap.put("claimamt", object.getBigDecimal("yem_claimamt"));
vVewMap.put("claimamtbase", object.getBigDecimal("yem_claimamtbase"));
vVewMap.put("salcontractamt", object.getBigDecimal("yem_salcontractamt"));
longMapLinkedHashMap.put(contractno, vVewMap);
}
}
longMapLinkedHashMap.forEach((k, v) ->
{
BigDecimal salcontractamt = BigDecimal.ZERO;
// 产品分类
long productsId = 0;
for (DynamicObject object : subCollection) {
if (object.getLong("yem_salcontractno.id") == k) {
salcontractamt = object.getBigDecimal("yem_salcontractamt");
productsId = object.getLong("yem_productclassify.id");
}
}
// 查询配件客商额度申请单
// 财务组织
long orgId =(long) this.getModel().getValue("org.id");
// 客户名称
long customerId =(long) this.getModel().getValue("yem_comegoman.id");
// 结算币别
long currency = (long) this.getModel().getValue("yem_currency.id");
// 业务组织 = 财务组织
QFilter qFilters = new QFilter("org.id", QCP.equals, orgId);
// 客户名称 = 客户名称
qFilters.and(new QFilter("yem_client.id", QCP.equals, customerId));
// 产品分类 = 产品分类
qFilters.and(new QFilter("yem_productcategorie", QCP.equals, productsId));
// 单据状态 = 已审核
qFilters.and(new QFilter("billstatus", QCP.equals, "C"));
// 合同上结算币别 = 额度申请上 额度币别
qFilters.and(new QFilter("yem_currency.id", QCP.equals, currency));
// 查询配件客商额度申请单
DynamicObject partsmerchant = BusinessDataServiceHelper.loadSingle("yem_im_partsmerchant", qFilters.toArray());
if (partsmerchant != null) {
// 配件客商额度申请单明细
DynamicObjectCollection partsmerchantCollection = partsmerchant.getDynamicObjectCollection("yem_im_entryentity_m");
for (DynamicObject object : partsmerchantCollection) {
if (object.getLong("yem_cn.id") == k) {
BigDecimal writenamt = object.getBigDecimal("yem_claimamt");
BigDecimal locwrittenamt = object.getBigDecimal("yem_claimamtbase");
// 合同金额
object.set("yem_salcontractamt", v.get("salcontractamt"));
// 认领金额
object.set("yem_claimamt", writenamt.add(v.get("claimamt")));
// 认领金额本位币
object.set("yem_claimamtbase", locwrittenamt.add(v.get("claimamtbase")));
// 合同金额 = 认领金额
if (salcontractamt.compareTo(object.getBigDecimal("yem_claimamt")) <= 0) {
object.set("yem_writtenamt", object.get("yem_sum"));
object.set("yem_locwrittenamt", object.get("yem_localsum"));
object.set("yem_pennsylvania", new Date());
} else {
object.set("yem_writtenamt", null);
object.set("yem_locwrittenamt", null);
object.set("yem_pennsylvania", null);
}
}
}
// 将数据保存到分录
SaveServiceHelper.save(new DynamicObject[]{partsmerchant});
SalesOrderUtils.calcCreditAmount(partsmerchant.getLong("id"));
}
});
}
}
} }
view.invokeOperation("save"); view.invokeOperation("save");
view.invokeOperation("refresh"); view.invokeOperation("refresh");
} }
private void undate_receipt() {
// 收款单 收款明细
DynamicObjectCollection collection = this.getModel().getEntryEntity("yem_receiptdetail");
if (!collection.isEmpty()) {
for (DynamicObject dynamicObject : collection) {
// 认领明细子单据体
DynamicObjectCollection subCollection = dynamicObject.getDynamicObjectCollection("yem_claimdetail");
if (subCollection.isEmpty()) {
continue;
}
// 合同号 - 认领金额, 认领金额本位币
Map<Long, Map<String, BigDecimal>> longMapLinkedHashMap = new LinkedHashMap<>();
// 获取子单据体中 合同号对应的认领金额总和
for (DynamicObject object : subCollection) {
// 合同号
long contractno = object.getLong("yem_salcontractno.id");
if (longMapLinkedHashMap.containsKey(contractno)) {
// 认领金额
BigDecimal claimamt = longMapLinkedHashMap.get(contractno).get("claimamt");
claimamt = claimamt.add(object.getBigDecimal("yem_claimamt"));
// 认领金额本位币
BigDecimal claimamtbase = longMapLinkedHashMap.get(contractno).get("claimamtbase");
claimamtbase = claimamtbase.add(object.getBigDecimal("yem_claimamtbase"));
Map<String, BigDecimal> vVewMap = new HashMap<>();
// 认领金额
vVewMap.put("claimamt", claimamt);
// 认领金额本位币
vVewMap.put("claimamtbase", claimamtbase);
// 合同金额
vVewMap.put("salcontractamt", object.getBigDecimal("yem_salcontractamt"));
longMapLinkedHashMap.put(contractno, vVewMap);
} else {
Map<String, BigDecimal> vVewMap = new HashMap<>();
vVewMap.put("claimamt", object.getBigDecimal("yem_claimamt"));
vVewMap.put("claimamtbase", object.getBigDecimal("yem_claimamtbase"));
vVewMap.put("salcontractamt", object.getBigDecimal("yem_salcontractamt"));
longMapLinkedHashMap.put(contractno, vVewMap);
}
}
longMapLinkedHashMap.forEach((k, v) ->
{
BigDecimal salcontractamt = BigDecimal.ZERO;
// 产品分类
long productsId = 0;
for (DynamicObject object : subCollection) {
if (object.getLong("yem_salcontractno.id") == k) {
salcontractamt = object.getBigDecimal("yem_salcontractamt");
productsId = object.getLong("yem_productclassify.id");
}
}
// 查询配件客商额度申请单
// 财务组织
DynamicObject orgId =(DynamicObject) this.getModel().getValue("org");
// 客户名称
DynamicObject customerId =(DynamicObject) this.getModel().getValue("yem_comegoman");
// 结算币别
DynamicObject currency = (DynamicObject) this.getModel().getValue("yem_currency");
// 单据状态 = 已审核
QFilter qFilters = new QFilter("billstatus", QCP.equals, "C");
// 业务组织 = 财务组织
if (orgId !=null ){
qFilters.and(new QFilter("org.id", QCP.equals, orgId.getLong("id")));
}
// 客户名称 = 客户名称
if (customerId !=null ){
qFilters.and(new QFilter("yem_client.id", QCP.equals, customerId.getLong("id")));
}
// 产品分类 = 产品分类
if (currency !=null ){
qFilters.and(new QFilter("yem_currency.id", QCP.equals, currency.getLong("id")));
}
// 合同上结算币别 = 额度申请上 额度币别
qFilters.and(new QFilter("yem_productcategorie", QCP.equals, productsId));
// 查询配件客商额度申请单
DynamicObject partsmerchant = BusinessDataServiceHelper.loadSingle("yem_im_partsmerchant", qFilters.toArray());
if (partsmerchant != null) {
// 配件客商额度申请单明细
DynamicObjectCollection partsmerchantCollection = partsmerchant.getDynamicObjectCollection("yem_im_entryentity_m");
for (DynamicObject object : partsmerchantCollection) {
if (object.getLong("yem_cn.id") == k) {
BigDecimal writenamt = object.getBigDecimal("yem_claimamt");
BigDecimal locwrittenamt = object.getBigDecimal("yem_claimamtbase");
// 合同金额
object.set("yem_salcontractamt", v.get("salcontractamt"));
// 认领金额
object.set("yem_claimamt", writenamt.add(v.get("claimamt")));
// 认领金额本位币
object.set("yem_claimamtbase", locwrittenamt.add(v.get("claimamtbase")));
// 合同金额 = 认领金额
if (salcontractamt.compareTo(object.getBigDecimal("yem_claimamt")) <= 0) {
object.set("yem_writtenamt", object.get("yem_sum"));
object.set("yem_locwrittenamt", object.get("yem_localsum"));
object.set("yem_pennsylvania", new Date());
} else {
object.set("yem_writtenamt", null);
object.set("yem_locwrittenamt", null);
object.set("yem_pennsylvania", null);
}
}
}
// 将数据保存到分录
SaveServiceHelper.save(new DynamicObject[]{partsmerchant});
SalesOrderUtils.calcCreditAmount(partsmerchant.getLong("id"));
}
});
}
}
}
/** /**
* 生成贷记单 * 生成贷记单
* *