diff --git a/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java b/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java index 52f231c..3c06264 100644 --- a/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java +++ b/so/src/private/nccloud/api/impl/so/m30/APISaleOrderMaitainImpl.java @@ -22,6 +22,8 @@ import nc.pubimpl.so.m30.pub.SaleOrderSaveUtil; import nc.pubitf.so.m30.api.ISaleOrderQueryAPI; import nc.vo.arap.gathering.GatheringBillItemVO; 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.ml.NCLangRes4VoTransl; import nc.vo.pub.BusinessException; @@ -1867,20 +1869,27 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain { if (null != invoiceBVOS) { Set billIds = new HashSet<>(); for (SaleInvoiceBVO invoiceBVO : invoiceBVOS) { - // 查询应收单是否生效 - String countSql = "SELECT count(1) FROM ar_recitem b " - + " left join ar_recbill a on a.pk_recbill = b.pk_recbill " - + " WHERE b.dr = 0 and a.effectstatus = 10 and b.src_billid = '[billId]' "; - countSql = countSql.replace("[billId]", csaleorderid); - Integer num = (Integer) getDao().executeQuery(countSql, new ColumnProcessor()); - if (num > 0) { - continue; - } + // 来源单据子表 + String csrcbid = invoiceBVO.getCsrcbid() != null ? invoiceBVO.getCsrcbid() : "~"; + // 匹配销售订单子表的vo + SaleOrderBVO soBvo = Arrays.stream(bvos) + .filter(bvo -> csrcbid.equals(bvo.getCsaleorderbid())) + .findFirst() + .orElse(null); invoiceBVO.setCordercustid(ccustomerid); invoiceBVO.setCordercustvid(ccustomervid); invoiceBVO.setCdeptid(cdeptid); invoiceBVO.setCdeptvid(cdeptvid); 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); hypub.update(invoiceBVO); 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); + } + } + } + } + } + } }