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