refactor(so): 同步更新应收单和销售发票信息
- 修改销售订单时,同步更新相关的应收单和销售发票信息 - 更新应收单的部门、业务员、客户等信息 - 更新销售发票的物料、单位等信息- 优化了查询和更新逻辑,提高了系统性能
This commit is contained in:
parent
a88411238e
commit
b10459f27a
|
@ -22,6 +22,8 @@ import nc.pubimpl.so.m30.pub.SaleOrderSaveUtil;
|
||||||
import nc.pubitf.so.m30.api.ISaleOrderQueryAPI;
|
import nc.pubitf.so.m30.api.ISaleOrderQueryAPI;
|
||||||
import nc.vo.arap.gathering.GatheringBillItemVO;
|
import nc.vo.arap.gathering.GatheringBillItemVO;
|
||||||
import nc.vo.arap.gathering.GatheringBillVO;
|
import nc.vo.arap.gathering.GatheringBillVO;
|
||||||
|
import nc.vo.arap.receivable.ReceivableBillItemVO;
|
||||||
|
import nc.vo.arap.receivable.ReceivableBillVO;
|
||||||
import nc.vo.bd.defdoc.DefdocVO;
|
import nc.vo.bd.defdoc.DefdocVO;
|
||||||
import nc.vo.ml.NCLangRes4VoTransl;
|
import nc.vo.ml.NCLangRes4VoTransl;
|
||||||
import nc.vo.pub.BusinessException;
|
import nc.vo.pub.BusinessException;
|
||||||
|
@ -1867,20 +1869,27 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
||||||
if (null != invoiceBVOS) {
|
if (null != invoiceBVOS) {
|
||||||
Set<String> billIds = new HashSet<>();
|
Set<String> billIds = new HashSet<>();
|
||||||
for (SaleInvoiceBVO invoiceBVO : invoiceBVOS) {
|
for (SaleInvoiceBVO invoiceBVO : invoiceBVOS) {
|
||||||
// ²éѯӦÊÕµ¥ÊÇ·ñÉúЧ
|
// 来源单据子表
|
||||||
String countSql = "SELECT count(1) FROM ar_recitem b "
|
String csrcbid = invoiceBVO.getCsrcbid() != null ? invoiceBVO.getCsrcbid() : "~";
|
||||||
+ " left join ar_recbill a on a.pk_recbill = b.pk_recbill "
|
// 匹配销售订单子表的vo
|
||||||
+ " WHERE b.dr = 0 and a.effectstatus = 10 and b.src_billid = '[billId]' ";
|
SaleOrderBVO soBvo = Arrays.stream(bvos)
|
||||||
countSql = countSql.replace("[billId]", csaleorderid);
|
.filter(bvo -> csrcbid.equals(bvo.getCsaleorderbid()))
|
||||||
Integer num = (Integer) getDao().executeQuery(countSql, new ColumnProcessor());
|
.findFirst()
|
||||||
if (num > 0) {
|
.orElse(null);
|
||||||
continue;
|
|
||||||
}
|
|
||||||
invoiceBVO.setCordercustid(ccustomerid);
|
invoiceBVO.setCordercustid(ccustomerid);
|
||||||
invoiceBVO.setCordercustvid(ccustomervid);
|
invoiceBVO.setCordercustvid(ccustomervid);
|
||||||
invoiceBVO.setCdeptid(cdeptid);
|
invoiceBVO.setCdeptid(cdeptid);
|
||||||
invoiceBVO.setCdeptvid(cdeptvid);
|
invoiceBVO.setCdeptvid(cdeptvid);
|
||||||
invoiceBVO.setCemployeeid(cemployeeid);
|
invoiceBVO.setCemployeeid(cemployeeid);
|
||||||
|
if (soBvo != null) {
|
||||||
|
invoiceBVO.setCmaterialid(soBvo.getCmaterialid());
|
||||||
|
invoiceBVO.setCmaterialvid(soBvo.getCmaterialvid());
|
||||||
|
invoiceBVO.setCastunitid(soBvo.getCastunitid());
|
||||||
|
invoiceBVO.setCunitid(soBvo.getCunitid());
|
||||||
|
invoiceBVO.setVchangerate(soBvo.getVchangerate());
|
||||||
|
invoiceBVO.setCqtunitid(soBvo.getCqtunitid());
|
||||||
|
invoiceBVO.setVqtunitrate(soBvo.getVqtunitrate());
|
||||||
|
}
|
||||||
invoiceBVO.setStatus(VOStatus.UPDATED);
|
invoiceBVO.setStatus(VOStatus.UPDATED);
|
||||||
hypub.update(invoiceBVO);
|
hypub.update(invoiceBVO);
|
||||||
billIds.add(invoiceBVO.getCsaleinvoiceid());
|
billIds.add(invoiceBVO.getCsaleinvoiceid());
|
||||||
|
@ -1897,6 +1906,41 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 同步修改应收单的部门、业务员、客户、开票客户
|
||||||
|
for (SaleOrderBVO saleOrderBVO : bvos) {
|
||||||
|
SqlBuilder recWhere = new SqlBuilder();
|
||||||
|
recWhere.append("src_itemid", saleOrderBVO.getCsaleorderbid());
|
||||||
|
ReceivableBillItemVO[] receivableBillItemVOS = (ReceivableBillItemVO[]) hypub.queryByCondition(ReceivableBillItemVO.class, recWhere.toString());
|
||||||
|
if (null != receivableBillItemVOS) {
|
||||||
|
for (ReceivableBillItemVO itemVO : receivableBillItemVOS) {
|
||||||
|
String pkRecbill = itemVO.getPk_recbill();// 应收单id
|
||||||
|
ReceivableBillVO billVO = (ReceivableBillVO) hypub.queryByPrimaryKey(ReceivableBillVO.class, pkRecbill);
|
||||||
|
if (billVO != null) {
|
||||||
|
// 应收单未生效则同步修改
|
||||||
|
if (billVO.getEffectstatus() != 10) {
|
||||||
|
itemVO.setPk_deptid(cdeptid);
|
||||||
|
itemVO.setPk_deptid_v(cdeptvid);
|
||||||
|
itemVO.setPk_psndoc(cemployeeid);
|
||||||
|
itemVO.setCustomer(ccustomerid);
|
||||||
|
itemVO.setCustomer_v(ccustomervid);
|
||||||
|
itemVO.setMaterial(saleOrderBVO.getCmaterialid());
|
||||||
|
itemVO.setMaterial_src(saleOrderBVO.getCmaterialid());
|
||||||
|
itemVO.setStatus(VOStatus.UPDATED);
|
||||||
|
hypub.update(itemVO);
|
||||||
|
// 修改应收单
|
||||||
|
billVO.setPk_deptid(cdeptid);
|
||||||
|
billVO.setPk_deptid_v(cdeptvid);
|
||||||
|
billVO.setPk_psndoc(cemployeeid);
|
||||||
|
billVO.setCustomer(ccustomerid);
|
||||||
|
billVO.setCustomer_v(ccustomervid);
|
||||||
|
billVO.setStatus(VOStatus.UPDATED);
|
||||||
|
hypub.update(billVO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue