fix(so): 优化销售订单修改接口的收款单和销售发票更新逻辑
This commit is contained in:
parent
c5773b1d4a
commit
a4da9047c3
|
@ -16,11 +16,11 @@ import nc.itf.so.m30.self.ISaleOrderMaintain;
|
|||
import nc.itf.so.m30.self.ISaleOrderScriptMaintain;
|
||||
import nc.itf.uap.IUAPQueryBS;
|
||||
import nc.itf.uap.pf.IPFBusiAction;
|
||||
import nc.jdbc.framework.SQLParameter;
|
||||
import nc.jdbc.framework.processor.ColumnProcessor;
|
||||
import nc.jdbc.framework.processor.MapProcessor;
|
||||
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.bd.defdoc.DefdocVO;
|
||||
import nc.vo.ml.NCLangRes4VoTransl;
|
||||
|
@ -42,6 +42,7 @@ import nc.vo.scmpub.util.StringUtil;
|
|||
import nc.vo.so.m30.entity.SaleOrderBVO;
|
||||
import nc.vo.so.m30.entity.SaleOrderHVO;
|
||||
import nc.vo.so.m30.entity.SaleOrderVO;
|
||||
import nc.vo.so.m32.entity.SaleInvoiceBVO;
|
||||
import nc.vo.so.m32.entity.SaleInvoiceHVO;
|
||||
import nc.vo.so.pub.SOConstant;
|
||||
import nc.vo.so.pub.enumeration.BillStatus;
|
||||
|
@ -1775,6 +1776,11 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
for (SaleOrderVO vo : vos) {
|
||||
SaleOrderHVO hvo = vo.getParentVO();
|
||||
String csaleorderid = hvo.getCsaleorderid();// 销售订单ID
|
||||
String ccustomerid = hvo.getCcustomerid();
|
||||
String ccustomervid = hvo.getCcustomervid();
|
||||
String cemployeeid = hvo.getCemployeeid();
|
||||
String cdeptid = hvo.getCdeptid();
|
||||
String cdeptvid = hvo.getCdeptvid();
|
||||
SaleOrderBVO[] bvos = vo.getChildrenVO();
|
||||
// 同步修改流程生产订单的国网行项目号、国内采购订单号
|
||||
for (SaleOrderBVO bvo : bvos) {
|
||||
|
@ -1810,39 +1816,40 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
* 单据和凭证的关联 查询`fip_relation`表可知,src_relationid 存的是关联单据的主键
|
||||
*/
|
||||
SqlBuilder strWhere = new SqlBuilder();
|
||||
strWhere.append("dr = 0 and ");
|
||||
strWhere.append("src_billid", csaleorderid);
|
||||
GatheringBillVO[] payBillVOs = (GatheringBillVO[]) hypub.queryByCondition(GatheringBillVO.class, strWhere.toString());
|
||||
String ccustomerid = hvo.getCcustomerid();
|
||||
String ccustomervid = hvo.getCcustomervid();
|
||||
String cemployeeid = hvo.getCemployeeid();
|
||||
String cdeptid = hvo.getCdeptid();
|
||||
String cdeptvid = hvo.getCdeptvid();
|
||||
if (null != payBillVOs) {
|
||||
for (GatheringBillVO payBillVO : payBillVOs) {
|
||||
GatheringBillItemVO[] payItemVOS = (GatheringBillItemVO[]) hypub.queryByCondition(GatheringBillItemVO.class, strWhere.toString());
|
||||
if (null != payItemVOS) {
|
||||
Set<String> billIds = new HashSet<>();
|
||||
for (GatheringBillItemVO itemVO : payItemVOS) {
|
||||
// 查询收款单是否已生成凭证
|
||||
String countSql = "SELECT count(1) FROM fip_relation "
|
||||
+ " WHERE dr = 0 and src_relationid = '[billId]' ";
|
||||
countSql = countSql.replace("[billId]", payBillVO.getPk_gatherbill());
|
||||
countSql = countSql.replace("[billId]", itemVO.getPk_gatherbill());
|
||||
Integer num = (Integer) getDao().executeQuery(countSql, new ColumnProcessor());
|
||||
if (num > 0) {
|
||||
continue;
|
||||
}
|
||||
// 修改收款单
|
||||
payBillVO.setPk_psndoc(cemployeeid);
|
||||
payBillVO.setCustomer(ccustomerid);
|
||||
payBillVO.setPk_deptid(cdeptid);
|
||||
payBillVO.setPk_deptid_v(cdeptvid);
|
||||
payBillVO.setStatus(VOStatus.UPDATED);
|
||||
hypub.update(payBillVO);
|
||||
// 修改收款单子表
|
||||
String updateSql = "update ar_gatheritem set pk_psndoc=?,customer=?,pk_deptid=?,pk_deptid_v=? where pk_gatherbill=?";
|
||||
SQLParameter parameter = new SQLParameter();
|
||||
parameter.addParam(cemployeeid);
|
||||
parameter.addParam(ccustomerid);
|
||||
parameter.addParam(cdeptid);
|
||||
parameter.addParam(cdeptvid);
|
||||
int num1 = getDao().executeUpdate(updateSql);
|
||||
itemVO.setPk_psndoc(cemployeeid);
|
||||
itemVO.setCustomer(ccustomerid);
|
||||
itemVO.setPk_deptid(cdeptid);
|
||||
itemVO.setPk_deptid_v(cdeptvid);
|
||||
itemVO.setStatus(VOStatus.UPDATED);
|
||||
hypub.update(itemVO);
|
||||
billIds.add(itemVO.getPk_gatherbill());
|
||||
}
|
||||
if (!billIds.isEmpty()) {
|
||||
// 修改收款单
|
||||
for (String billId : billIds) {
|
||||
GatheringBillVO billVO = new GatheringBillVO();
|
||||
billVO.setPk_gatherbill(billId);
|
||||
billVO.setPk_psndoc(cemployeeid);
|
||||
billVO.setCustomer(ccustomerid);
|
||||
billVO.setPk_deptid(cdeptid);
|
||||
billVO.setPk_deptid_v(cdeptvid);
|
||||
billVO.setStatus(VOStatus.UPDATED);
|
||||
hypub.update(billVO);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1851,11 +1858,11 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
* 首先根据源头单据id查询关联的销售发票,如果有则循环判断应收单是否生效,未生效则更新字段值为销售订单同字段的值
|
||||
*/
|
||||
SqlBuilder strWhereInv = new SqlBuilder();
|
||||
strWhereInv.append("dr = 0 and ");
|
||||
strWhereInv.append("cfirstid", csaleorderid);
|
||||
SaleInvoiceHVO[] invoiceHvos = (SaleInvoiceHVO[]) hypub.queryByCondition(SaleInvoiceHVO.class, strWhereInv.toString());
|
||||
if (null != invoiceHvos) {
|
||||
for (SaleInvoiceHVO invoiceHVO : invoiceHvos) {
|
||||
SaleInvoiceBVO[] invoiceBVOS = (SaleInvoiceBVO[]) hypub.queryByCondition(SaleInvoiceBVO.class, strWhereInv.toString());
|
||||
if (null != invoiceBVOS) {
|
||||
Set<String> 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 "
|
||||
|
@ -1865,22 +1872,26 @@ public class APISaleOrderMaitainImpl implements IAPISaleOrderMaitain {
|
|||
if (num > 0) {
|
||||
continue;
|
||||
}
|
||||
invoiceHVO.setCinvoicecustid(ccustomerid);
|
||||
invoiceHVO.setCinvoicecustvid(ccustomervid);
|
||||
invoiceHVO.setStatus(VOStatus.UPDATED);
|
||||
hypub.update(invoiceHVO);
|
||||
// 修改销售发票子表
|
||||
String updateSql = "update so_saleinvoice_b set " +
|
||||
"cordercustid=?,cordercustvid=?,cdeptid=?,cdeptvid=?,cemployeeid=?, " +
|
||||
"where csaleinvoiceid=?";
|
||||
SQLParameter parameter = new SQLParameter();
|
||||
parameter.addParam(ccustomerid);
|
||||
parameter.addParam(ccustomerid);
|
||||
parameter.addParam(cdeptid);
|
||||
parameter.addParam(cdeptvid);
|
||||
parameter.addParam(cemployeeid);
|
||||
parameter.addParam(invoiceHVO.getPrimaryKey());
|
||||
int num1 = getDao().executeUpdate(updateSql);
|
||||
invoiceBVO.setCordercustid(ccustomerid);
|
||||
invoiceBVO.setCordercustvid(ccustomervid);
|
||||
invoiceBVO.setCdeptid(cdeptid);
|
||||
invoiceBVO.setCdeptvid(cdeptvid);
|
||||
invoiceBVO.setCemployeeid(cemployeeid);
|
||||
invoiceBVO.setStatus(VOStatus.UPDATED);
|
||||
hypub.update(invoiceBVO);
|
||||
billIds.add(invoiceBVO.getCsaleinvoiceid());
|
||||
// 修改销售发票表
|
||||
}
|
||||
if (!billIds.isEmpty()) {
|
||||
// 修改销售发票表
|
||||
for (String billId : billIds) {
|
||||
SaleInvoiceHVO invoiceHVO = new SaleInvoiceHVO();
|
||||
invoiceHVO.setCsaleinvoiceid(billId);
|
||||
invoiceHVO.setCinvoicecustid(ccustomerid);
|
||||
invoiceHVO.setCinvoicecustvid(ccustomervid);
|
||||
invoiceHVO.setStatus(VOStatus.UPDATED);
|
||||
hypub.update(invoiceHVO);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue