diff --git a/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/Sal_Order/Bill.cs b/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/Sal_Order/Bill.cs index 9e3a9cf..aca5b78 100644 --- a/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/Sal_Order/Bill.cs +++ b/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/Sal_Order/Bill.cs @@ -4,6 +4,7 @@ using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Util; using Kingdee.K3.BD.NewCode.Core.Utils; +using Kingdee.K3.Core.SCM.IOS; using System; using System.Collections.Generic; using System.ComponentModel; @@ -24,7 +25,12 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_Order { this.Model.SetValue("F_AGREEPRICE", 0, e.Row); this.Model.SetValue("F_BIGCUSTSETTLEPRICE", 0, e.Row); - this.Model.SetValue("F_BigCustDiscRate", 0, e.Row); + this.Model.SetValue("F_ActualDiscountRate", 0, e.Row); + + //表头大客户折扣率 + var F_BigCustSaleDiscountRate = this.View.Model.GetValue("F_BigCustSaleDiscountRate").Convert(); + //表头普通客户折扣率 + var F_CustSaleDiscountRate = this.View.Model.GetValue("F_CustSaleDiscountRate").Convert(); var materialId_Id = e.NewValue.Long2Int(); if (materialId_Id == 0) @@ -34,27 +40,129 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_Order if (custId_Id == 0) return; + bool isBigCustFlag = false; + var custId = this.View.Model.DataObject["CustId"] as DynamicObject; + var creditClassification = custId["F_CreditClassification"] as DynamicObject; + if (creditClassification != null && creditClassification["Number"] != null) + { + isBigCustFlag = creditClassification["Number"].ToString().EqualsIgnoreCase("KHXYFL013"); + } + var dal = new BDCustPriceDAL(this.Context); - var dateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + var dateTime = this.View.Model.DataObject["Date"].Convert().ToString("yyyy-MM-dd"); var resData = dal.GetMaterialPrice(materialId_Id, custId_Id, dateTime); if (resData != null && resData.Count > 0) { var data = resData[0]; - // 协议价 - var F_AGREEPRICE = data["F_AGREEPRICE"].Convert(); - this.Model.SetValue("F_AGREEPRICE", F_AGREEPRICE, e.Row); + //销售价格 + var price = this.Model.GetValue("FTaxPrice", e.Row).Convert(); + //结算价格 + var settlementPrice = data["F_JSJ"].Convert(); - // 大客户结算价 - var F_BIGCUSTSETTLEPRICE = data["F_BIGCUSTSETTLEPRICE"].Convert(); - this.Model.SetValue("F_BIGCUSTSETTLEPRICE", F_BIGCUSTSETTLEPRICE, e.Row); + if (isBigCustFlag) + { + // 大客户结算价 + settlementPrice = data["F_BIGCUSTSETTLEPRICE"].Convert(); + this.Model.SetValue("F_BIGCUSTSETTLEPRICE", settlementPrice, e.Row); + } + else + { + // 协议价 + var F_AGREEPRICE = data["F_AGREEPRICE"].Convert(); + this.Model.SetValue("F_AGREEPRICE", F_AGREEPRICE, e.Row); + } - //大客户折扣率 - var F_BigCustDiscRate = data["F_BIGCUSTDISCRATE"].Convert(); - this.Model.SetValue("F_BigCustDiscRate", F_BigCustDiscRate, e.Row); + //实际户折扣率 + var F_ActualDiscountRate = settlementPrice == 0 ? 100M : price / settlementPrice * 100; + this.Model.SetValue("F_ActualDiscountRate", F_ActualDiscountRate, e.Row); + + if (isBigCustFlag && (F_BigCustSaleDiscountRate == 0 || (F_ActualDiscountRate > 0 && F_ActualDiscountRate < F_BigCustSaleDiscountRate))) + F_BigCustSaleDiscountRate = F_ActualDiscountRate; + + if (!isBigCustFlag && (F_CustSaleDiscountRate == 0 || (F_ActualDiscountRate > 0 && F_ActualDiscountRate < F_CustSaleDiscountRate))) + F_CustSaleDiscountRate = F_ActualDiscountRate; } + //普通客户折扣率 + this.Model.SetValue("F_CustSaleDiscountRate", F_CustSaleDiscountRate); + //大客户折扣率 + this.Model.SetValue("F_BigCustSaleDiscountRate", F_BigCustSaleDiscountRate); + } + + //销售价格 + if (e.Field.Key.EqualsIgnoreCase("FTaxPrice")) + { + this.Model.SetValue("F_AGREEPRICE", 0, e.Row); + this.Model.SetValue("F_BIGCUSTSETTLEPRICE", 0, e.Row); + this.Model.SetValue("F_ActualDiscountRate", 0, e.Row); + + //表头大客户折扣率 + var F_BigCustSaleDiscountRate = this.View.Model.GetValue("F_BigCustSaleDiscountRate").Convert(); + //表头普通客户折扣率 + var F_CustSaleDiscountRate = this.View.Model.GetValue("F_CustSaleDiscountRate").Convert(); + + var price = e.NewValue.Convert(); + + var custId_Id = this.View.Model.DataObject["CustId_Id"].Long2Int(); + if (custId_Id == 0) + return; + + bool isBigCustFlag = false; + var custId = this.View.Model.DataObject["CustId"] as DynamicObject; + var creditClassification = custId["F_CreditClassification"] as DynamicObject; + if (creditClassification != null && creditClassification["Number"] != null) + { + isBigCustFlag = creditClassification["Number"].ToString().EqualsIgnoreCase("KHXYFL013"); + } + + var materialId = this.View.Model.GetValue("FMaterialId", e.Row) as DynamicObject; + var materialId_Id = 0; + + var dal = new BDCustPriceDAL(this.Context); + var dateTime = this.View.Model.DataObject["Date"].Convert().ToString("yyyy-MM-dd"); + + if (materialId != null) + materialId_Id = materialId["Id"].Long2Int(); + + var resData = dal.GetMaterialPrice(materialId_Id, custId_Id, dateTime); + if (resData != null && resData.Count > 0) + { + var data = resData[0]; + + //结算价格 + var settlementPrice = data["F_JSJ"].Convert(); + + if (isBigCustFlag) + { + // 大客户结算价 + settlementPrice = data["F_BIGCUSTSETTLEPRICE"].Convert(); + this.Model.SetValue("F_BIGCUSTSETTLEPRICE", settlementPrice, e.Row); + } + else + { + // 协议价 + var F_AGREEPRICE = data["F_AGREEPRICE"].Convert(); + this.Model.SetValue("F_AGREEPRICE", F_AGREEPRICE, e.Row); + } + + //实际户折扣率 + var F_ActualDiscountRate = settlementPrice == 0 ? 100M : price / settlementPrice * 100; + this.Model.SetValue("F_ActualDiscountRate", F_ActualDiscountRate, e.Row); + + if (isBigCustFlag && (F_BigCustSaleDiscountRate == 0 || (F_ActualDiscountRate > 0 && F_ActualDiscountRate < F_BigCustSaleDiscountRate))) + F_BigCustSaleDiscountRate = F_ActualDiscountRate; + + if (!isBigCustFlag && (F_CustSaleDiscountRate == 0 || (F_ActualDiscountRate > 0 && F_ActualDiscountRate < F_CustSaleDiscountRate))) + F_CustSaleDiscountRate = F_ActualDiscountRate; + + } + + //普通客户折扣率 + this.Model.SetValue("F_CustSaleDiscountRate", F_CustSaleDiscountRate); + //大客户折扣率 + this.Model.SetValue("F_BigCustSaleDiscountRate", F_BigCustSaleDiscountRate); } //客户 @@ -63,57 +171,81 @@ namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_Order var custId_Id = e.NewValue.Long2Int(); var dal = new BDCustPriceDAL(this.Context); - var dateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + var dateTime = this.View.Model.DataObject["Date"].Convert().ToString("yyyy-MM-dd"); var details = this.View.BusinessInfo.GetEntity("FSaleOrderEntry"); if (details != null) { + //表头大客户折扣率 + var F_BigCustSaleDiscountRate = this.View.Model.GetValue("F_BigCustSaleDiscountRate").Convert(); + //表头普通客户折扣率 + var F_CustSaleDiscountRate = this.View.Model.GetValue("F_CustSaleDiscountRate").Convert(); + var entrys = this.View.Model.GetEntityDataObject(details); + + bool isBigCustFlag = false; + if (custId_Id > 0) + { + var custId = this.View.Model.DataObject["CustId"] as DynamicObject; + var creditClassification = custId["F_CreditClassification"] as DynamicObject; + if (creditClassification != null && creditClassification["Number"] != null) + { + isBigCustFlag = creditClassification["Number"].ToString().EqualsIgnoreCase("KHXYFL013"); + } + } + 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 settlementPrice = 0M; this.Model.SetValue("F_AGREEPRICE", 0, rowIndex); this.Model.SetValue("F_BIGCUSTSETTLEPRICE", 0, rowIndex); - this.Model.SetValue("F_BigCustDiscRate", 0, rowIndex); - - var F_SettlementP = 0M; + this.Model.SetValue("F_ActualDiscountRate", 0, rowIndex); if (materialId_Id > 0 && custId_Id > 0) { var resData = dal.GetMaterialPrice(materialId_Id, custId_Id, dateTime); - if (resData != null && resData.Count > 0) + if (resData != null && resData.Any()) { - var data = resData[0]; + var data = resData.FirstOrDefault(); - // 协议价 - var F_AGREEPRICE = data["F_AGREEPRICE"].Convert(); - this.Model.SetValue("F_AGREEPRICE", F_AGREEPRICE, rowIndex); + //结算价格 + settlementPrice = data["F_JSJ"].Convert(); - // 大客户结算价 - var F_BIGCUSTSETTLEPRICE = data["F_BIGCUSTSETTLEPRICE"].Convert(); - this.Model.SetValue("F_BIGCUSTSETTLEPRICE", F_BIGCUSTSETTLEPRICE, rowIndex); - - //大客户折扣率 - var F_BigCustDiscRate = data["F_BIGCUSTDISCRATE"].Convert(); - this.Model.SetValue("F_BigCustDiscRate", F_BigCustDiscRate, rowIndex); - - F_SettlementP = F_BIGCUSTSETTLEPRICE * (F_BigCustDiscRate == 0 ? 1 : (F_BigCustDiscRate / 100)); + if (isBigCustFlag) + { + // 大客户结算价 + settlementPrice = data["F_BIGCUSTSETTLEPRICE"].Convert(); + this.Model.SetValue("F_BIGCUSTSETTLEPRICE", settlementPrice, rowIndex); + } + else + { + // 协议价 + var F_AGREEPRICE = data["F_AGREEPRICE"].Convert(); + this.Model.SetValue("F_AGREEPRICE", F_AGREEPRICE, rowIndex); + } } } - if (F_SettlementP != 0) - { - this.Model.SetValue("F_SettlementP", F_SettlementP, rowIndex); - } - else if(materialId_Id > 0) - { - var materialId = entry["MaterialId"] as DynamicObject; - this.Model.SetValue("F_SettlementP", materialId["F_JSJ"].Convert(), rowIndex); - } + //大客户折扣率 + var F_ActualDiscountRate = settlementPrice == 0 ? 100M : price / settlementPrice * 100; + this.Model.SetValue("F_ActualDiscountRate", F_ActualDiscountRate, rowIndex); + + if (isBigCustFlag && (F_BigCustSaleDiscountRate == 0 || (F_ActualDiscountRate > 0 && F_ActualDiscountRate < F_BigCustSaleDiscountRate))) + F_BigCustSaleDiscountRate = F_ActualDiscountRate; + + if (!isBigCustFlag && (F_CustSaleDiscountRate == 0 || (F_ActualDiscountRate > 0 && F_ActualDiscountRate < F_CustSaleDiscountRate))) + F_CustSaleDiscountRate = F_ActualDiscountRate; } + + //普通客户折扣率 + this.Model.SetValue("F_CustSaleDiscountRate", F_CustSaleDiscountRate); + //大客户折扣率 + this.Model.SetValue("F_BigCustSaleDiscountRate", F_BigCustSaleDiscountRate); } } } diff --git a/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/Sal_OutStock/Bill.cs b/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/Sal_OutStock/Bill.cs new file mode 100644 index 0000000..df5c687 --- /dev/null +++ b/Gatedge.K3.Pilot.PlugIn/BOSPlugIn/Sal_OutStock/Bill.cs @@ -0,0 +1,18 @@ +using Kingdee.BOS.Core.Bill.PlugIn; +using Kingdee.BOS.Util; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Gatedge.K3.Pilot.PlugIn.BOSPlugIn.Sal_OutStock +{ + + [Description("销售出库单插件"), HotUpdate] + public class Bill : AbstractBillPlugIn + { + + } +} diff --git a/Gatedge.K3.Pilot.PlugIn/Gatedge.K3.Pilot.PlugIn.csproj b/Gatedge.K3.Pilot.PlugIn/Gatedge.K3.Pilot.PlugIn.csproj index 04e95dd..68b173b 100644 --- a/Gatedge.K3.Pilot.PlugIn/Gatedge.K3.Pilot.PlugIn.csproj +++ b/Gatedge.K3.Pilot.PlugIn/Gatedge.K3.Pilot.PlugIn.csproj @@ -94,6 +94,7 @@ + diff --git a/Gatedge.K3.Pilot.PlugIn/Gatedge.K3.Pilot.PlugIn.csproj.user b/Gatedge.K3.Pilot.PlugIn/Gatedge.K3.Pilot.PlugIn.csproj.user new file mode 100644 index 0000000..a607660 --- /dev/null +++ b/Gatedge.K3.Pilot.PlugIn/Gatedge.K3.Pilot.PlugIn.csproj.user @@ -0,0 +1,6 @@ + + + + ShowAllFiles + + \ No newline at end of file diff --git a/Gatedge.K3.Pilot.PlugIn/Services/DBService/BDCustPriceDAL.cs b/Gatedge.K3.Pilot.PlugIn/Services/DBService/BDCustPriceDAL.cs index 7ad04b3..776e168 100644 --- a/Gatedge.K3.Pilot.PlugIn/Services/DBService/BDCustPriceDAL.cs +++ b/Gatedge.K3.Pilot.PlugIn/Services/DBService/BDCustPriceDAL.cs @@ -33,6 +33,7 @@ SELECT t0.FMATERIALID,t0.FNUMBER,t0.FUSEORGID ,t0_l.FNAME,t0_l.FSPECIFICATION,ISNULL(t1.F_AGREEPRICE,0) AS F_AGREEPRICE ,ISNULL(t2.F_BIGCUSTSETTLEPRICE,0) AS F_BIGCUSTSETTLEPRICE ,ISNULL(t2.F_BIGCUSTDISCRATE,0) AS F_BIGCUSTDISCRATE + ,t0.F_JSJ FROM T_BD_MATERIAL t0 INNER JOIN T_BD_MATERIAL_L t0_l on t0_l.FMATERIALID = t0.FMATERIALID AND t0_l.FLOCALEID = 2052 OUTER APPLY ( diff --git a/Gatedge.K3.Pilot.PlugIn/bin/Debug/Newtonsoft.Json.dll b/Gatedge.K3.Pilot.PlugIn/bin/Debug/Newtonsoft.Json.dll new file mode 100644 index 0000000..d593ed6 Binary files /dev/null and b/Gatedge.K3.Pilot.PlugIn/bin/Debug/Newtonsoft.Json.dll differ diff --git a/Gatedge.K3.Pilot.PlugIn/bin/Debug/Oracle.DataAccess.dll b/Gatedge.K3.Pilot.PlugIn/bin/Debug/Oracle.DataAccess.dll new file mode 100644 index 0000000..910c9c5 Binary files /dev/null and b/Gatedge.K3.Pilot.PlugIn/bin/Debug/Oracle.DataAccess.dll differ diff --git a/Gatedge.K3.Pilot.PlugIn/obj/Debug/Gatedge..4146081E.Up2Date b/Gatedge.K3.Pilot.PlugIn/obj/Debug/Gatedge..4146081E.Up2Date new file mode 100644 index 0000000..e69de29 diff --git a/NoPackageMachine/NoPackageMachine.csproj.user b/NoPackageMachine/NoPackageMachine.csproj.user new file mode 100644 index 0000000..a607660 --- /dev/null +++ b/NoPackageMachine/NoPackageMachine.csproj.user @@ -0,0 +1,6 @@ + + + + ShowAllFiles + + \ No newline at end of file diff --git a/Pilot_KD_Parino/Pilot_KD_Parino.csproj.user b/Pilot_KD_Parino/Pilot_KD_Parino.csproj.user index a607660..0b24643 100644 --- a/Pilot_KD_Parino/Pilot_KD_Parino.csproj.user +++ b/Pilot_KD_Parino/Pilot_KD_Parino.csproj.user @@ -1,6 +1,6 @@ - ShowAllFiles + ProjectFiles \ No newline at end of file diff --git a/查询.sql b/查询.sql new file mode 100644 index 0000000..6431518 --- /dev/null +++ b/查询.sql @@ -0,0 +1,53 @@ +SELECT t0.FBILLNO AS '۳ⵥ' + ,t0e.FENTRYID AS '۳ⵥ¼ID' + ,t0e.FREALQTY AS '' + ,t0e_m.FNUMBER AS '۳' + ,t1.FBILLNO AS '֪ͨ' + ,t1e.FENTRYID AS '֪ͨ¼ID' + ,t1e.FQTY AS '֪ͨ' + ,t1e_m.FNUMBER AS '֪ͨ' + ,t2.FBILLNO AS '۶' + ,t2e.FENTRYID AS '۶¼ID' + ,t2e.FQTY AS '' + ,t0e_m.FNUMBER AS '' + ,t3.FBILLNO AS 'ɹ' + ,t3e.FENTRYID AS 'ɹ¼ID' + ,t3e.FQTY AS 'ɹ' + ,ISNULL(t4.FACTRECEIVEQTY,0) AS '' + ,ISNULL(t4.FREALQTY,0) 'ɹ' +FROM T_SAL_OUTSTOCK t0 + INNER JOIN T_SAL_OUTSTOCKENTRY t0e on t0e.FID = t0.FID + INNER JOIN T_BD_MATERIAL t0e_m on t0e_m.FMATERIALID = t0e.FMATERIALID + INNER JOIN T_SAL_OUTSTOCKENTRY_LK t0e_lk on t0e.FENTRYID = t0e_lk.FENTRYID + AND t0e_lk.FSTABLENAME = 'T_SAL_DELIVERYNOTICEENTRY' + INNER JOIN T_SAL_DELIVERYNOTICE t1 on t1.FID = t0e_lk.FSBILLID + INNER JOIN T_SAL_DELIVERYNOTICEENTRY t1e on t1.FID = t1e.FID AND t0e_lk.FSBILLID = t1e.FID AND t0e_lk.FSID = t1e.FENTRYID + INNER JOIN T_BD_MATERIAL t1e_m on t1e_m.FMATERIALID = t0e.FMATERIALID + INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk on t1e.FENTRYID = t1e_lk.FENTRYID + AND t1e_lk.FSTABLENAME = 'T_SAL_ORDERENTRY' + INNER JOIN T_SAL_ORDER t2 on t2.FID = t1e_lk.FSBILLID + INNER JOIN T_SAL_ORDERENTRY t2e on t1e_lk.FSBILLID = t2e.FID AND t1e_lk.FSID = t2e.FENTRYID + INNER JOIN T_BD_MATERIAL t2e_m on t2e_m.FMATERIALID = t0e.FMATERIALID + INNER JOIN T_SAL_ORDERENTRY_LK t2e_lk on t2e.FENTRYID = t2e_lk.FENTRYID + AND t2e_lk.FSTABLENAME = 't_PUR_POOrderEntry' + INNER JOIN T_PUR_POORDER t3 on t2e_lk.FSBILLID = t3.FID + AND t3.FBILLNO = 'XN-CGDD2025091000001' + INNER JOIN T_PUR_POORDERENTRY t3e on t3.FID = t3e.FID AND t2e_lk.FSID = t3e.FENTRYID + OUTER APPLY ( + SELECT SUM(t4e.FACTRECEIVEQTY) 'FACTRECEIVEQTY',SUM(t5.FREALQTY) 'FREALQTY' + FROM T_PUR_RECEIVE t4 + INNER JOIN T_PUR_RECEIVEENTRY t4e on t4e.FID = t4.FID + INNER JOIN T_PUR_RECEIVEENTRY_LK t4e_lk on t4e_lk.FENTRYID = t4e.FENTRYID + AND t4e_lk.FSTABLENAME = 'T_PUR_POORDERENTRY' + OUTER APPLY ( + SELECT SUM(t5e.FREALQTY) 'FREALQTY' + FROM T_STK_INSTOCK t5 + INNER JOIN T_STK_INSTOCKENTRY t5e on t5.fID = t5e.FID + INNER JOIN T_STK_INSTOCKENTRY_LK t5e_lk on t5e_lk.FENTRYID = t5e.FENTRYID + AND t5e_lk.FSTABLENAME = 'T_PUR_RECEIVEENTRY' + WHERE t5e_lk.FSBILLID = t4e.FID AND t5e_lk.FSID = t4e.FENTRYID + GROUP BY t5e_lk.FSID + ) t5 + WHERE t3e.FENTRYID = t4e_lk.FSID AND t3e.FID = t4e_lk.FSBILLID + GROUP BY t4e_lk.FSID + ) t4