大客户取价逻辑修改

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");
}
var actualDiscountRate = 0M;
var actualDiscountRateList = new List<decimal>();
var custDiscountRateList = new List<decimal>();
var bigCustDiscountRateList = new List<decimal>();
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<decimal>();
var bigCustSettlePrice = entry["BIGCUSTSETTLEPRICE"].Convert<decimal>();
if (materialId_Id > 0)
{
var tempRate = entry["ActualDiscountRate"].Convert<decimal>();
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());
}
}
}

View File

@@ -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<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;
}
/// <summary>
/// 收料通知单下推采购入库单
/// </summary>
/// <param name="selectedRows"></param>
/// <param name="reBillTypeId"></param>
/// <returns></returns>
private IOperationResult PushRe2InStock(List<ListSelectedRow> selectedRows, string reBillTypeId)
{
IOperationResult result = null;
@@ -155,7 +180,14 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_OutStock
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)
{
//获取元数据服务
@@ -192,7 +224,7 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_OutStock
/// </summary>
/// <param name="selectedRows"></param>
/// <returns></returns>
private IOperationResult PushSO2De(List<ListSelectedRow> selectedRows)
private IOperationResult PushSO2De(string billTypeId, List<ListSelectedRow> selectedRows, List<Entity_Link> 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)
{

View File

@@ -13,14 +13,14 @@ namespace Gatedge.K3.Pilot.PlugIn.Services.DBService
{
public SalOutStockDAL(Context context) : base(context)
{
}
/// <summary>
/// 获取销售出库单的订单数据
/// </summary>
/// <param name="entryId"></param>
/// <returns></returns>
/// <summary>
/// 获取销售出库单的订单数据
/// </summary>
/// <param name="entryId"></param>
/// <returns></returns>
public DynamicObjectCollection GetSalOutStockSrcPO(int entryId)
{
var sql = $@"/*dialect*/
@@ -94,5 +94,33 @@ ORDER BY t0.采购订单,t0.采购订单行号,t0.销售出库日期,t0.销售
";
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_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
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