fix:收款单报错处理
This commit is contained in:
parent
b866ded5e9
commit
21c883fadf
@ -980,116 +980,127 @@ public class GatheringEcit extends AbstractBillPlugIn implements BeforeF7SelectL
|
||||
orderplat(key, map.get(key));
|
||||
}
|
||||
}
|
||||
// 收款单 收款明细
|
||||
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"));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
undate_receipt();
|
||||
}
|
||||
view.invokeOperation("save");
|
||||
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"));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成贷记单
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user