diff --git a/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java b/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java index 55cecdc..325ecb6 100644 --- a/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java +++ b/ic/src/public/nccloud/resources/ic/ic/saleout/saveBeforeCheck.java @@ -18,6 +18,7 @@ import nc.vo.ic.m4c.entity.SaleOutVO; import nc.vo.pub.BusinessException; import nc.vo.pub.lang.UFDouble; import nc.vo.pubapp.AppContext; +import nc.vo.pubapp.pattern.pub.SqlBuilder; import nc.vo.tmpub.util.ModuleEnum; import nc.vo.tmpub.util.ModuleUtil; import nccloud.baseapp.core.log.NCCForUAPLogger; @@ -66,6 +67,14 @@ public class saveBeforeCheck implements IBusinessListener { if (storedDate.isBefore(targetDate)) { return; } + // 在销售发票业务日期6.26号之前的不参与控制 + String invDateStr = (String) valMap.get("dbilldate"); + String invTargetDateStr = "2025-06-26 00:00:00"; + LocalDateTime invDate = LocalDateTime.parse(invDateStr, formatter); + LocalDateTime invTargetDate = LocalDateTime.parse(invTargetDateStr, formatter); + if (invDate.isBefore(invTargetDate)) { + return; + } // 销售发票表头pk_billtypecode=30-Cxx-12 Set billTypeCodes = Set.of( "30-Cxx-12", "30-Cxx-02", "30-Cxx-08", "30-Cxx-13", "30-Cxx-16" @@ -125,19 +134,30 @@ public class saveBeforeCheck implements IBusinessListener { private Map getSaleorderPK(String csourcebillbidStr) throws BusinessException { IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class); - String sql = " SELECT s.creationtime,bt.pk_billtypecode,sb.csaleorderbid,sb.vbdef2 AS sQty,\n" + "s.vdef11,\n" - + "si.vdef20,\n" + "sbv.nassistnum,\n" + "sbv.ntotaloutnums\n" + "FROM so_saleinvoice_b sib\n" - + "INNER JOIN so_saleinvoice si ON si.csaleinvoiceid = sib.csaleinvoiceid\n" - + "INNER JOIN so_saleorder_b sb ON sb.csaleorderbid = sib.csrcbid\n" - + "left join (SELECT SUM(b.nshouldassistnum) AS ntotaloutnums,sum(nassistnum) as nassistnum,c.csaleorderbid\n" - + "FROM so_saleorder_b c\n" + "INNER JOIN so_saleinvoice_b a ON c.csaleorderbid = a.csrcbid\n" - + "INNER JOIN ic_saleout_b b ON b.csourcebillbid = a.csaleinvoicebid\n" + "where a.dr=0 and b.dr=0 \n" - + "GROUP BY c.csaleorderbid) sbv on sbv.csaleorderbid=sb.csaleorderbid\n" - + "INNER JOIN so_saleorder s ON s.csaleorderid = sb.csaleorderid\n" - + "INNER JOIN bd_billtype bt on bt.pk_billtypeid=s.ctrantypeid\n" - + "INNER JOIN so_saleorder_exe se ON sb.csaleorderbid = se.csaleorderbid\n" - + "WHERE sib.csaleinvoicebid = '" + csourcebillbidStr + "' "; + + SqlBuilder sqlBuilder = new SqlBuilder(); + sqlBuilder.append("SELECT s.creationtime, bt.pk_billtypecode, sb.csaleorderbid, si.dbilldate, "); + sqlBuilder.append("sb.vbdef2 AS sQty, s.vdef11, si.vdef20, sbv.nassistnum, sbv.ntotaloutnums "); + sqlBuilder.append("FROM so_saleinvoice_b sib "); + sqlBuilder.append("INNER JOIN so_saleinvoice si ON si.csaleinvoiceid = sib.csaleinvoiceid "); + sqlBuilder.append("INNER JOIN so_saleorder_b sb ON sb.csaleorderbid = sib.csrcbid "); + sqlBuilder.append("LEFT JOIN ( "); + sqlBuilder.append(" SELECT SUM(b.nshouldassistnum) AS ntotaloutnums, SUM(nassistnum) AS nassistnum, c.csaleorderbid "); + sqlBuilder.append(" FROM so_saleorder_b c "); + sqlBuilder.append(" INNER JOIN so_saleinvoice_b a ON c.csaleorderbid = a.csrcbid "); + sqlBuilder.append(" INNER JOIN ic_saleout_b b ON b.csourcebillbid = a.csaleinvoicebid "); + sqlBuilder.append(" WHERE a.dr = 0 AND b.dr = 0 "); + sqlBuilder.append(" GROUP BY c.csaleorderbid "); + sqlBuilder.append(") sbv ON sbv.csaleorderbid = sb.csaleorderbid "); + sqlBuilder.append("INNER JOIN so_saleorder s ON s.csaleorderid = sb.csaleorderid "); + sqlBuilder.append("INNER JOIN bd_billtype bt ON bt.pk_billtypeid = s.ctrantypeid "); + sqlBuilder.append("INNER JOIN so_saleorder_exe se ON sb.csaleorderbid = se.csaleorderbid "); + sqlBuilder.append("WHERE "); + sqlBuilder.append("sib.csaleinvoicebid", csourcebillbidStr); + + String sql = sqlBuilder.toString(); Map valList = (Map) queryBS.executeQuery(sql, new MapProcessor()); + return valList; }