大客户取价逻辑修改

This commit is contained in:
liangjunyu
2025-12-18 11:29:00 +08:00
parent 4e2aeedb19
commit e6ff48babb
4 changed files with 84 additions and 25 deletions

View File

@@ -257,36 +257,32 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_Order
isBigCustFlag = creditClassification["Number"].ToString().EqualsIgnoreCase("KHXYFL013"); isBigCustFlag = creditClassification["Number"].ToString().EqualsIgnoreCase("KHXYFL013");
} }
var actualDiscountRate = 0M;
var actualDiscountRateList = new List<decimal>(); var actualDiscountRateList = new List<decimal>();
var custDiscountRateList = new List<decimal>();
var bigCustDiscountRateList = new List<decimal>();
foreach (var entry in entrys) foreach (var entry in entrys)
{ {
var rowIndex = this.View.Model.GetRowIndex(details, entry); var rowIndex = this.View.Model.GetRowIndex(details, entry);
var materialId_Id = entry["MaterialId_Id"].Long2Int(); var materialId_Id = entry["MaterialId_Id"].Long2Int();
var price = entry["TaxPrice"].Convert<decimal>(); var bigCustSettlePrice = entry["BIGCUSTSETTLEPRICE"].Convert<decimal>();
if (materialId_Id > 0) if (materialId_Id > 0)
{ {
var tempRate = entry["ActualDiscountRate"].Convert<decimal>(); var tempRate = entry["ActualDiscountRate"].Convert<decimal>();
actualDiscountRateList.Add(tempRate); if (bigCustSettlePrice > 0)
//actualDiscountRate = tempRate < actualDiscountRate ? tempRate : actualDiscountRate; bigCustDiscountRateList.Add(tempRate);
else
custDiscountRateList.Add(tempRate);
} }
} }
actualDiscountRate = actualDiscountRateList.Count == 0 ? 0M : actualDiscountRateList.Min(); //普通客户折扣率
this.Model.SetValue("F_CustSaleDiscountRate", custDiscountRateList.Count == 0 ? 0 : custDiscountRateList.Min());
if (!isBigCustFlag) //大客户折扣率
{ this.Model.SetValue("F_BigCustSaleDiscountRate", bigCustDiscountRateList.Count == 0 ? 0 : bigCustDiscountRateList.Min());
//普通客户折扣率
this.Model.SetValue("F_CustSaleDiscountRate", actualDiscountRate);
}
else
{
//大客户折扣率
this.Model.SetValue("F_BigCustSaleDiscountRate", actualDiscountRate);
}
} }
} }
} }

View File

@@ -83,6 +83,25 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_OutStock
{ {
var reBillTypeId = reObj["BillTypeId"].ToString(); var reBillTypeId = reObj["BillTypeId"].ToString();
var isResult = PushRe2InStock(selectRows, reBillTypeId); 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<decimal>()
}).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; return result;
} }
/// <summary>
/// 收料通知单下推采购入库单
/// </summary>
/// <param name="selectedRows"></param>
/// <param name="reBillTypeId"></param>
/// <returns></returns>
private IOperationResult PushRe2InStock(List<ListSelectedRow> selectedRows, string reBillTypeId) private IOperationResult PushRe2InStock(List<ListSelectedRow> selectedRows, string reBillTypeId)
{ {
IOperationResult result = null; IOperationResult result = null;
@@ -155,7 +180,14 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_OutStock
return result; return result;
} }
/// <summary>
///
/// </summary>
/// <param name="destObjs"></param>
/// <param name="entity_Links"></param>
/// <param name="sourceFormId"></param>
/// <param name="sourceBillTypeId"></param>
/// <param name="qtyName"></param>
private void SetQtyAction(DynamicObject[] destObjs, List<Entity_Link> entity_Links, string sourceFormId, string sourceBillTypeId, string qtyName) private void SetQtyAction(DynamicObject[] destObjs, List<Entity_Link> entity_Links, string sourceFormId, string sourceBillTypeId, string qtyName)
{ {
//获取元数据服务 //获取元数据服务
@@ -192,7 +224,7 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_OutStock
/// </summary> /// </summary>
/// <param name="selectedRows"></param> /// <param name="selectedRows"></param>
/// <returns></returns> /// <returns></returns>
private IOperationResult PushSO2De(List<ListSelectedRow> selectedRows) private IOperationResult PushSO2De(string billTypeId, List<ListSelectedRow> selectedRows, List<Entity_Link> entity_Links)
{ {
IOperationResult result = null; IOperationResult result = null;
@@ -203,6 +235,7 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_OutStock
string convertRuleId = "SaleOrder-DeliveryNotice"; string convertRuleId = "SaleOrder-DeliveryNotice";
//PUR_ReceiveBill-STK_InStock //PUR_ReceiveBill-STK_InStock
//result = DoPustBill(selectedRows, "", sourceFormId, targetFormId, convertRuleId); //result = DoPustBill(selectedRows, "", sourceFormId, targetFormId, convertRuleId);
result = DoPustBill(sourceFormId, targetFormId, convertRuleId, selectedRows, billTypeId, entity_Links, "FQty");
} }
catch (Exception ex) catch (Exception ex)
{ {

View File

@@ -16,11 +16,11 @@ namespace Gatedge.K3.Pilot.PlugIn.Services.DBService
} }
/// <summary> /// <summary>
/// 获取销售出库单的订单数据 /// 获取销售出库单的订单数据
/// </summary> /// </summary>
/// <param name="entryId"></param> /// <param name="entryId"></param>
/// <returns></returns> /// <returns></returns>
public DynamicObjectCollection GetSalOutStockSrcPO(int entryId) public DynamicObjectCollection GetSalOutStockSrcPO(int entryId)
{ {
var sql = $@"/*dialect*/ var sql = $@"/*dialect*/
@@ -94,5 +94,33 @@ ORDER BY t0.采购订单,t0.采购订单行号,t0.销售出库日期,t0.销售
"; ";
return DBServiceHelper.ExecuteDynamicObject(this.Context, sql); return DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
} }
/// <summary>
/// 获取A组织的销售出库数量
/// </summary>
/// <param name="entryIds"></param>
/// <returns></returns>
public DynamicObjectCollection GetSalOutStockQty(List<int> 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);
}
} }
} }

View File

@@ -6,7 +6,7 @@
-- INNER JOIN T_SAL_ORDER t1 on t1.FID = t0e_lk.FSBILLID -- 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 -- 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 '<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',t0e.FID,t0e.FENTRYID,t0e.FREALQTY,t1.FBILLNO,t1e.FSTOCKQTY,t2e.FQTY,t2e_lk.FSBILLID,t2e_lk.FSID
FROM T_STK_INSTOCK t0 FROM T_STK_INSTOCK t0
INNER JOIN T_STK_INSTOCKENTRY t0e on t0e.FID = t0.FID 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 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 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 INNER JOIN T_PUR_POORDERENTRY_LK t2e_lk on t2e.FENTRYID = t2e_lk.FENTRYID
AND t2e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' 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_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 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 --INNER JOIN T_SAL_ORDERENTRY_LK t3e_lk on t3e.FENTRYID = t3e_lk.FENTRYID