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

This commit is contained in:
ljw 2024-09-24 15:10:09 +08:00
parent 14ce43f2eb
commit 38f4e83d30

View File

@ -71,11 +71,7 @@ public class SalesOrderSubmitOp extends AbstractOperationServicePlugIn {
super.afterExecuteOperationTransaction(e);
DynamicObject[] eDataEntities = e.getDataEntities();
for (DynamicObject eDataEntity : eDataEntities) {
long aLong = eDataEntity.getLong("id");
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("yem_es_salesorder", "id,billno,yem_es_materialinfo" +
",yem_es_materialinfo.yem_multiconfig,yem_es_materialinfo.yem_optional,yem_multiconfig.yem_configurtypeen"
, new QFilter[]{new QFilter("id", QCP.equals, aLong)});
DynamicObjectCollection yemEsMaterialinfo = dynamicObject.getDynamicObjectCollection("yem_es_materialinfo");
DynamicObjectCollection yemEsMaterialinfo = eDataEntity.getDynamicObjectCollection("yem_es_materialinfo");
for (DynamicObject yemEsMAterialin : yemEsMaterialinfo) {
DynamicObjectCollection yemMulticonfig = yemEsMAterialin.getDynamicObjectCollection("yem_multiconfig");
List<String> list = new ArrayList<>();
@ -85,97 +81,96 @@ public class SalesOrderSubmitOp extends AbstractOperationServicePlugIn {
}
String mergedString = String.join(";" + "\n", list);
yemEsMAterialin.set("yem_optional", mergedString);
SaveServiceHelper.update(dynamicObject);
}
}
}
/**
* 更新配件客商额度申请单据
*
* @param e
*/
public void updatePartsmerchant(EndOperationTransactionArgs e) {
String operationKey = e.getOperationKey();
DynamicObject[] entities = e.getDataEntities();
for (DynamicObject entity : entities) {
String fundusetype = entity.getString("yem_fundusetype");
if (!"A".equals(fundusetype)) {
return;
}
// 公司
long orgId = entity.getLong("org.id");
// 客户ID
long customerId = entity.getLong("yem_customer.id");
// 产品分类
long productsId = entity.getLong("yem_bd_products.id");
// 结算币别
long currency = entity.getLong("yem_currency.id");
// 配件客商/借记额度
BigDecimal debitamount = entity.getBigDecimal("yem_debitamount");
// 预计发货时间
Date acshipdate = entity.getDate("yem_acshipdate");
// 业务组织 = 公司
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));
// 日期降序
/**
* 更新配件客商额度申请单据
*
* @param e
*/
public void updatePartsmerchant (EndOperationTransactionArgs e){
String operationKey = e.getOperationKey();
DynamicObject[] entities = e.getDataEntities();
for (DynamicObject entity : entities) {
String fundusetype = entity.getString("yem_fundusetype");
if (!"A".equals(fundusetype)) {
return;
}
// 公司
long orgId = entity.getLong("org.id");
// 客户ID
long customerId = entity.getLong("yem_customer.id");
// 产品分类
long productsId = entity.getLong("yem_bd_products.id");
// 结算币别
long currency = entity.getLong("yem_currency.id");
// 配件客商/借记额度
BigDecimal debitamount = entity.getBigDecimal("yem_debitamount");
// 预计发货时间
Date acshipdate = entity.getDate("yem_acshipdate");
// 业务组织 = 公司
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));
// 日期降序
// qFilters.and(new QFilter("yem_bizdate", QCP.equals));
if ("submit".equals(operationKey)) {
// 根据组织+客户+产品分类查询 配件客商额度申请单
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("yem_im_partsmerchant", qFilters.toArray());
if ("submit".equals(operationKey)) {
// 根据组织+客户+产品分类查询 配件客商额度申请单
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle("yem_im_partsmerchant", qFilters.toArray());
if (dynamicObject == null) {
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();
if (dynamicObject == null) {
continue;
}
}
;
// 配件客商额度申请单 - 分录
DynamicObjectCollection collection = dynamicObject.getDynamicObjectCollection("yem_im_entryentity_m");
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"));
// 删除旧的数据保证相同合同数据只有一条
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"));
}
}
}
}
}