fix:收款单报错处理
This commit is contained in:
parent
21c883fadf
commit
c3b9adf1e1
@ -698,7 +698,8 @@ public class GatheringEcit extends AbstractBillPlugIn implements BeforeF7SelectL
|
|||||||
|
|
||||||
boolean dataChanged = model.getDataChanged();
|
boolean dataChanged = model.getDataChanged();
|
||||||
String pageId = dataEntity.getDynamicObjectType().getName();
|
String pageId = dataEntity.getDynamicObjectType().getName();
|
||||||
String[] noCheck = new String[]{"save", "delete", "refresh", "close", "modify", "new", "newentrya1", "copyentryrowa", "insertentrya", "deleteentrya1", "batchfillentrya", "newentryb", "insertentryb", "copyentryrowb", "deleteentryb", "batchfillentryb"};
|
String[] noCheck = new String[]{"save", "delete", "refresh", "close", "modify", "new", "newentrya1", "copyentryrowa"
|
||||||
|
, "insertentrya", "deleteentrya1", "batchfillentrya", "newentryb", "insertentryb", "copyentryrowb", "deleteentryb", "batchfillentryb"};
|
||||||
|
|
||||||
if (dataChanged && !Arrays.asList(noCheck).contains(operateKey) && ("yem_gathering".equals(pageId) || "yem_gathering_cw".equals(pageId))) {
|
if (dataChanged && !Arrays.asList(noCheck).contains(operateKey) && ("yem_gathering".equals(pageId) || "yem_gathering_cw".equals(pageId))) {
|
||||||
// throw new KDBizException("检测到单据内容更新,请保存后再进行操作!");
|
// throw new KDBizException("检测到单据内容更新,请保存后再进行操作!");
|
||||||
@ -998,108 +999,122 @@ public class GatheringEcit extends AbstractBillPlugIn implements BeforeF7SelectL
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 合同号 - 认领金额, 认领金额本位币
|
// 合同号 - 认领金额, 认领金额本位币
|
||||||
Map<Long, Map<String, BigDecimal>> longMapLinkedHashMap = new LinkedHashMap<>();
|
Map<Long, Map<String, BigDecimal>> longMapLinkedHashMap = new LinkedHashMap<>();
|
||||||
|
BigDecimal yem_claimamt_a = BigDecimal.ZERO;
|
||||||
// 获取子单据体中 合同号对应的认领金额总和
|
BigDecimal yem_claimamtbase_a = BigDecimal.ZERO;
|
||||||
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) {
|
for (DynamicObject object : subCollection) {
|
||||||
if (object.getLong("yem_salcontractno.id") == k) {
|
DynamicObject[] yemGathering = BusinessDataServiceHelper.load("yem_gathering"
|
||||||
salcontractamt = object.getBigDecimal("yem_salcontractamt");
|
, "yem_receiptdetail,yem_receiptdetail.yem_claimdetail,yem_claimdetail.yem_salcontractno,yem_receiptdetail.yem_claimamt_a,yem_receiptdetail.yem_claimamtbase_a"
|
||||||
productsId = object.getLong("yem_productclassify.id");
|
, new QFilter[]{new QFilter("yem_receiptdetail.yem_claimdetail.yem_salcontractno.billno", QCP.equals, object.getString("yem_salcontractno.billno"))});
|
||||||
}
|
if (yemGathering.length > 0) {
|
||||||
}
|
for (DynamicObject dynamicObject1 : yemGathering) {
|
||||||
|
DynamicObjectCollection dynamicObjectCollection = dynamicObject1.getDynamicObjectCollection("yem_receiptdetail");
|
||||||
// 查询配件客商额度申请单
|
for (DynamicObject dynamicObject2 : dynamicObjectCollection) {
|
||||||
// 财务组织
|
yem_claimamt_a = yem_claimamt_a.add(dynamicObject2.getBigDecimal("yem_claimamt_a"));
|
||||||
DynamicObject orgId =(DynamicObject) this.getModel().getValue("org");
|
yem_claimamtbase_a = yem_claimamtbase_a.add(dynamicObject2.getBigDecimal("yem_claimamtbase_a"));
|
||||||
// 客户名称
|
|
||||||
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});
|
long contractno = object.getLong("yem_salcontractno.id");
|
||||||
SalesOrderUtils.calcCreditAmount(partsmerchant.getLong("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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
BigDecimal finalYem_claimamt_a = yem_claimamt_a;
|
||||||
|
BigDecimal finalYem_claimamtbase_a = yem_claimamtbase_a;
|
||||||
|
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 locwrittenamt = object.getBigDecimal("yem_claimamtbase");
|
||||||
|
// 合同金额
|
||||||
|
object.set("yem_salcontractamt", v.get("salcontractamt"));
|
||||||
|
// 认领金额
|
||||||
|
object.set("yem_claimamt", finalYem_claimamt_a);
|
||||||
|
// 认领金额本位币
|
||||||
|
object.set("yem_claimamtbase", finalYem_claimamtbase_a);
|
||||||
|
|
||||||
|
// 合同金额 = 认领金额
|
||||||
|
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"));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成贷记单
|
* 生成贷记单
|
||||||
|
Loading…
Reference in New Issue
Block a user