fix:外销合同变更单报错处理

This commit is contained in:
ljw 2024-09-24 16:31:59 +08:00
parent 38f4e83d30
commit d1702c914c

View File

@ -71,106 +71,113 @@ public class SalesOrderSubmitOp extends AbstractOperationServicePlugIn {
super.afterExecuteOperationTransaction(e); super.afterExecuteOperationTransaction(e);
DynamicObject[] eDataEntities = e.getDataEntities(); DynamicObject[] eDataEntities = e.getDataEntities();
for (DynamicObject eDataEntity : eDataEntities) { for (DynamicObject eDataEntity : eDataEntities) {
DynamicObjectCollection yemEsMaterialinfo = eDataEntity.getDynamicObjectCollection("yem_es_materialinfo"); long aLong = eDataEntity.getLong("id");
for (DynamicObject yemEsMAterialin : yemEsMaterialinfo) { DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("yem_es_salesorder", "id,billno,yem_es_materialinfo" +
DynamicObjectCollection yemMulticonfig = yemEsMAterialin.getDynamicObjectCollection("yem_multiconfig"); ",yem_es_materialinfo.yem_multiconfig,yem_es_materialinfo.yem_optional,yem_multiconfig.yem_configurtypeen"
List<String> list = new ArrayList<>(); , new QFilter[]{new QFilter("id", QCP.equals, aLong)});
for (DynamicObject yemMulticon : yemMulticonfig) { if (dynamicObject != null) {
String yemConfigurtypeen = yemMulticon.getString("yem_configurtypeen"); DynamicObjectCollection yemEsMaterialinfo = dynamicObject.getDynamicObjectCollection("yem_es_materialinfo");
list.add(yemConfigurtypeen); for (DynamicObject yemEsMAterialin : yemEsMaterialinfo) {
DynamicObjectCollection yemMulticonfig = yemEsMAterialin.getDynamicObjectCollection("yem_multiconfig");
List<String> list = new ArrayList<>();
for (DynamicObject yemMulticon : yemMulticonfig) {
String yemConfigurtypeen = yemMulticon.getString("yem_configurtypeen");
list.add(yemConfigurtypeen);
}
String mergedString = String.join(";" + "\n", list);
yemEsMAterialin.set("yem_optional", mergedString);
SaveServiceHelper.update(dynamicObject);
} }
String mergedString = String.join(";" + "\n", list);
yemEsMAterialin.set("yem_optional", mergedString);
} }
} }
} }
/** /**
* 更新配件客商额度申请单据 * 更新配件客商额度申请单据
* *
* @param e * @param e
*/ */
public void updatePartsmerchant (EndOperationTransactionArgs e){ public void updatePartsmerchant(EndOperationTransactionArgs e) {
String operationKey = e.getOperationKey(); String operationKey = e.getOperationKey();
DynamicObject[] entities = e.getDataEntities(); DynamicObject[] entities = e.getDataEntities();
for (DynamicObject entity : entities) { for (DynamicObject entity : entities) {
String fundusetype = entity.getString("yem_fundusetype"); String fundusetype = entity.getString("yem_fundusetype");
if (!"A".equals(fundusetype)) { if (!"A".equals(fundusetype)) {
return; return;
} }
// 公司 // 公司
long orgId = entity.getLong("org.id"); long orgId = entity.getLong("org.id");
// 客户ID // 客户ID
long customerId = entity.getLong("yem_customer.id"); long customerId = entity.getLong("yem_customer.id");
// 产品分类 // 产品分类
long productsId = entity.getLong("yem_bd_products.id"); long productsId = entity.getLong("yem_bd_products.id");
// 结算币别 // 结算币别
long currency = entity.getLong("yem_currency.id"); long currency = entity.getLong("yem_currency.id");
// 配件客商/借记额度 // 配件客商/借记额度
BigDecimal debitamount = entity.getBigDecimal("yem_debitamount"); BigDecimal debitamount = entity.getBigDecimal("yem_debitamount");
// 预计发货时间 // 预计发货时间
Date acshipdate = entity.getDate("yem_acshipdate"); Date acshipdate = entity.getDate("yem_acshipdate");
// 业务组织 = 公司 // 业务组织 = 公司
QFilter qFilters = new QFilter("org.id", QCP.equals, orgId); QFilter qFilters = new QFilter("org.id", QCP.equals, orgId);
// 客户名称 = 客户名称 // 客户名称 = 客户名称
qFilters.and(new QFilter("yem_client.id", QCP.equals, customerId)); qFilters.and(new QFilter("yem_client.id", QCP.equals, customerId));
// 产品分类 = 产品分类 // 产品分类 = 产品分类
qFilters.and(new QFilter("yem_productcategorie", QCP.equals, productsId)); qFilters.and(new QFilter("yem_productcategorie", QCP.equals, productsId));
// 单据状态 = 已审核 // 单据状态 = 已审核
qFilters.and(new QFilter("billstatus", QCP.equals, "C")); qFilters.and(new QFilter("billstatus", QCP.equals, "C"));
// 合同上结算币别 = 额度申请上 额度币别 // 合同上结算币别 = 额度申请上 额度币别
qFilters.and(new QFilter("yem_currency.id", QCP.equals, currency)); qFilters.and(new QFilter("yem_currency.id", QCP.equals, currency));
// 日期降序 // 日期降序
// qFilters.and(new QFilter("yem_bizdate", QCP.equals)); // qFilters.and(new QFilter("yem_bizdate", QCP.equals));
if ("submit".equals(operationKey)) { if ("submit".equals(operationKey)) {
// 根据组织+客户+产品分类查询 配件客商额度申请单 // 根据组织+客户+产品分类查询 配件客商额度申请单
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("yem_im_partsmerchant", qFilters.toArray()); DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("yem_im_partsmerchant", qFilters.toArray());
if (dynamicObject == null) { if (dynamicObject == null) {
continue; continue;
}
;
// 配件客商额度申请单 - 分录
DynamicObjectCollection collection = dynamicObject.getDynamicObjectCollection("yem_im_entryentity_m");
// 删除旧的数据保证相同合同数据只有一条
Iterator<DynamicObject> iterator = collection.iterator();
while (iterator.hasNext()) {
DynamicObject next = iterator.next();
long constractId = next.getLong("yem_cn.id");
if (constractId == entity.getLong("id")) {
iterator.remove();
}
}
DynamicObject addNew = collection.addNew();
// 合同号 - 基本信息-外销合同号
addNew.set("yem_cn", entity.get("id"));
// 合同币别 - 财务信息-结算币别
addNew.set("yem_currencyfield", entity.get("yem_currency"));
// 合同占用金额 - 基本信息-配件客商/借记额度
addNew.set("yem_sum", debitamount);
// 合同占用金额RMB - 配件客商/借记额度 * 财务信息-汇率
addNew.set("yem_localsum", debitamount.multiply(entity.getBigDecimal("yem_exrate")));
// 核销金额
addNew.set("yem_writtenamt", null);
// 核销金额RMB
addNew.set("yem_locwrittenamt", null);
// 发货时间 - 基本信息-预计发货时间
addNew.set("yem_deliverytime", acshipdate);
// 最晚还款时间 - 预计发货时间的下个月14号
Calendar calendar = Calendar.getInstance();
calendar.setTime(acshipdate);
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DAY_OF_MONTH, 14);
addNew.set("yem_optimaltime", calendar.getTime());
// 实际还款时间
addNew.set("yem_pennsylvania", null);
// 备注
addNew.set("yem_comment", entity.get("yem_contremark"));
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
SalesOrderUtils.calcCreditAmount(dynamicObject.getLong("id"));
} }
;
// 配件客商额度申请单 - 分录
DynamicObjectCollection collection = dynamicObject.getDynamicObjectCollection("yem_im_entryentity_m");
// 删除旧的数据保证相同合同数据只有一条
Iterator<DynamicObject> iterator = collection.iterator();
while (iterator.hasNext()) {
DynamicObject next = iterator.next();
long constractId = next.getLong("yem_cn.id");
if (constractId == entity.getLong("id")) {
iterator.remove();
}
}
DynamicObject addNew = collection.addNew();
// 合同号 - 基本信息-外销合同号
addNew.set("yem_cn", entity.get("id"));
// 合同币别 - 财务信息-结算币别
addNew.set("yem_currencyfield", entity.get("yem_currency"));
// 合同占用金额 - 基本信息-配件客商/借记额度
addNew.set("yem_sum", debitamount);
// 合同占用金额RMB - 配件客商/借记额度 * 财务信息-汇率
addNew.set("yem_localsum", debitamount.multiply(entity.getBigDecimal("yem_exrate")));
// 核销金额
addNew.set("yem_writtenamt", null);
// 核销金额RMB
addNew.set("yem_locwrittenamt", null);
// 发货时间 - 基本信息-预计发货时间
addNew.set("yem_deliverytime", acshipdate);
// 最晚还款时间 - 预计发货时间的下个月14号
Calendar calendar = Calendar.getInstance();
calendar.setTime(acshipdate);
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DAY_OF_MONTH, 14);
addNew.set("yem_optimaltime", calendar.getTime());
// 实际还款时间
addNew.set("yem_pennsylvania", null);
// 备注
addNew.set("yem_comment", entity.get("yem_contremark"));
SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
SalesOrderUtils.calcCreditAmount(dynamicObject.getLong("id"));
} }
} }
} }
}