diff --git a/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/Sal_Order/Bill2.cs b/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/Sal_Order/Bill2.cs index f8ca50d..049d8c2 100644 --- a/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/Sal_Order/Bill2.cs +++ b/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/Sal_Order/Bill2.cs @@ -257,36 +257,32 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_Order isBigCustFlag = creditClassification["Number"].ToString().EqualsIgnoreCase("KHXYFL013"); } - var actualDiscountRate = 0M; var actualDiscountRateList = new List(); + + var custDiscountRateList = new List(); + var bigCustDiscountRateList = new List(); foreach (var entry in entrys) { var rowIndex = this.View.Model.GetRowIndex(details, entry); var materialId_Id = entry["MaterialId_Id"].Long2Int(); - var price = entry["TaxPrice"].Convert(); + var bigCustSettlePrice = entry["BIGCUSTSETTLEPRICE"].Convert(); if (materialId_Id > 0) { var tempRate = entry["ActualDiscountRate"].Convert(); - actualDiscountRateList.Add(tempRate); - //actualDiscountRate = tempRate < actualDiscountRate ? tempRate : actualDiscountRate; + if (bigCustSettlePrice > 0) + bigCustDiscountRateList.Add(tempRate); + else + custDiscountRateList.Add(tempRate); } } - actualDiscountRate = actualDiscountRateList.Count == 0 ? 0M : actualDiscountRateList.Min(); - - if (!isBigCustFlag) - { - //普通客户折扣率 - this.Model.SetValue("F_CustSaleDiscountRate", actualDiscountRate); - } - else - { - //大客户折扣率 - this.Model.SetValue("F_BigCustSaleDiscountRate", actualDiscountRate); - } + //普通客户折扣率 + this.Model.SetValue("F_CustSaleDiscountRate", custDiscountRateList.Count == 0 ? 0 : custDiscountRateList.Min()); + //大客户折扣率 + this.Model.SetValue("F_BigCustSaleDiscountRate", bigCustDiscountRateList.Count == 0 ? 0 : bigCustDiscountRateList.Min()); } } } diff --git a/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/Sal_OutStock/Bill.cs b/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/Sal_OutStock/Bill.cs index 92caa1f..81c3837 100644 --- a/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/Sal_OutStock/Bill.cs +++ b/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/Sal_OutStock/Bill.cs @@ -83,6 +83,25 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_OutStock { var reBillTypeId = reObj["BillTypeId"].ToString(); var isResult = PushRe2InStock(selectRows, reBillTypeId); + if (isResult.IsSuccess) + { + var isObj = isResult.SuccessDataEnity.FirstOrDefault(); + if (isObj != null) + { + var reEntityLinks = isResult.SuccessDataEnity.SelectMany(x => x["InStockEntry"] as DynamicObjectCollection).Select(x => new Entity_Link() + { + EntryId = x["Id"].Long2Int(), + BaseUnitQty = x["RealQty"].Convert() + }).ToList(); + + var reEntityIds = reEntityLinks.Select(x => x.EntryId).ToList(); + var reData = dal.GetSalOutStockQty(reEntityIds); + + var inSelectRows = reData.Select(x => new ListSelectedRow("0", x["FENTRYID"].Long2Int().ToString(), 0, "")).ToList(); + + PushSO2De(isObj["BillTypeId"].ToString(), inSelectRows, reEntityLinks); + } + } } } } @@ -129,6 +148,12 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_OutStock return result; } + /// + /// 收料通知单下推采购入库单 + /// + /// + /// + /// private IOperationResult PushRe2InStock(List selectedRows, string reBillTypeId) { IOperationResult result = null; @@ -155,7 +180,14 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_OutStock return result; } - + /// + /// + /// + /// + /// + /// + /// + /// private void SetQtyAction(DynamicObject[] destObjs, List entity_Links, string sourceFormId, string sourceBillTypeId, string qtyName) { //获取元数据服务 @@ -192,7 +224,7 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_OutStock /// /// /// - private IOperationResult PushSO2De(List selectedRows) + private IOperationResult PushSO2De(string billTypeId, List selectedRows, List entity_Links) { IOperationResult result = null; @@ -203,6 +235,7 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_OutStock string convertRuleId = "SaleOrder-DeliveryNotice"; //PUR_ReceiveBill-STK_InStock //result = DoPustBill(selectedRows, "", sourceFormId, targetFormId, convertRuleId); + result = DoPustBill(sourceFormId, targetFormId, convertRuleId, selectedRows, billTypeId, entity_Links, "FQty"); } catch (Exception ex) { diff --git a/Gatedge.K3.Pilot.PlugIn/Services/DBService/SalOutStockDAL.cs b/Gatedge.K3.Pilot.PlugIn/Services/DBService/SalOutStockDAL.cs index af1e653..8342d3e 100644 --- a/Gatedge.K3.Pilot.PlugIn/Services/DBService/SalOutStockDAL.cs +++ b/Gatedge.K3.Pilot.PlugIn/Services/DBService/SalOutStockDAL.cs @@ -13,14 +13,14 @@ namespace Gatedge.K3.Pilot.PlugIn.Services.DBService { public SalOutStockDAL(Context context) : base(context) { - + } - /// - /// 获取销售出库单的订单数据 - /// - /// - /// + /// + /// 获取销售出库单的订单数据 + /// + /// + /// public DynamicObjectCollection GetSalOutStockSrcPO(int entryId) { var sql = $@"/*dialect*/ @@ -94,5 +94,33 @@ ORDER BY t0.采购订单,t0.采购订单行号,t0.销售出库日期,t0.销售 "; return DBServiceHelper.ExecuteDynamicObject(this.Context, sql); } + + /// + /// 获取A组织的销售出库数量 + /// + /// + /// + public DynamicObjectCollection GetSalOutStockQty(List entryIds) + { + var sql = $@"/*dialect*/ +SELECT t0.FBILLNO '采购入库单号',t0.FBILLTYPE,t0e.FID,t0e.FENTRYID,t0e.FREALQTY,t1.FBILLNO,t1e.FSTOCKQTY,t2e.FQTY,t2e_lk.FSBILLID,t2e_lk.FSID +FROM T_STK_INSTOCK t0 + INNER JOIN T_STK_INSTOCKENTRY t0e on t0e.FID = t0.FID + INNER JOIN T_STK_INSTOCKENTRY_LK t0e_lk on t0e.FENTRYID = t0e_lk.FENTRYID + AND t0e_lk.FSTABLENAME = 'T_PUR_RECEIVEENTRY' + INNER JOIN T_PUR_RECEIVE t1 on t1.FID = t0e_lk.FSBILLID + INNER JOIN T_PUR_RECEIVEENTRY t1e on t1.FID = t1e.FID AND t0e_lk.FSBILLID = t1e.FID AND t0e_lk.FSID = t1e.FENTRYID + INNER JOIN T_PUR_RECEIVEENTRY_LK t1e_lk on t1e.FENTRYID = t1e_lk.FENTRYID + AND t1e_lk.FSTABLENAME = 'T_PUR_POORDERENTRY' + INNER JOIN T_PUR_POORDER t2 on t2.FID = t1e_lk.FSBILLID + INNER JOIN T_PUR_POORDERENTRY t2e on t2.FID = t2e.FID AND t1e_lk.FSBILLID = t2e.FID AND t1e_lk.FSID = t2e.FENTRYID + INNER JOIN T_PUR_POORDERENTRY_LK t2e_lk on t2e.FENTRYID = t2e_lk.FENTRYID + AND t2e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' +WHERE 1 = 1 + AND t0e.FENTRYID IN ({string.Join(",", entryIds)}) +"; + + return DBServiceHelper.ExecuteDynamicObject(this.Context, sql); + } } } diff --git a/查询_销售订单.sql b/查询_销售订单.sql index e37e467..e999c74 100644 --- a/查询_销售订单.sql +++ b/查询_销售订单.sql @@ -6,7 +6,7 @@ -- INNER JOIN T_SAL_ORDER t1 on t1.FID = t0e_lk.FSBILLID -- INNER JOIN T_SAL_ORDERENTRY t1e on t1.FID = t1e.FID AND t0e_lk.FSBILLID = t1e.FID AND t0e_lk.FSID = t1e.FENTRYID -SELECT t0.FBILLNO,t0e.FID,t0e.FENTRYID,t0e.FREALQTY,t1.FBILLNO,t1e.FSTOCKQTY,t2e.FQTY,t2e_lk.FSBILLID,t2e_lk.FSID +SELECT t0.FBILLNO 'ɹⵥ',t0e.FID,t0e.FENTRYID,t0e.FREALQTY,t1.FBILLNO,t1e.FSTOCKQTY,t2e.FQTY,t2e_lk.FSBILLID,t2e_lk.FSID FROM T_STK_INSTOCK t0 INNER JOIN T_STK_INSTOCKENTRY t0e on t0e.FID = t0.FID INNER JOIN T_STK_INSTOCKENTRY_LK t0e_lk on t0e.FENTRYID = t0e_lk.FENTRYID @@ -19,6 +19,8 @@ FROM T_STK_INSTOCK t0 INNER JOIN T_PUR_POORDERENTRY t2e on t2.FID = t2e.FID AND t1e_lk.FSBILLID = t2e.FID AND t1e_lk.FSID = t2e.FENTRYID INNER JOIN T_PUR_POORDERENTRY_LK t2e_lk on t2e.FENTRYID = t2e_lk.FENTRYID AND t2e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' +WHERE 1 = 1 + AND t0e.FENTRYID IN () --INNER JOIN T_SAL_ORDER t3 on t3.FID = t2e_lk.FSBILLID --INNER JOIN T_SAL_ORDERENTRY t3e on t3.FID = t3e.FID AND t2e_lk.FSBILLID = t3e.FID AND t2e_lk.FSID = t3e.FENTRYID --INNER JOIN T_SAL_ORDERENTRY_LK t3e_lk on t3e.FENTRYID = t3e_lk.FENTRYID