From 7cb6e5f9fb8bdafbad005a9cf85ebcba51a13016 Mon Sep 17 00:00:00 2001 From: wugang <425674808@qq.com> Date: Fri, 29 Dec 2017 16:27:12 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=8D=95No.137971?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...toreFreightData.cs => OrderFreightData.cs} | 2 +- BWP.B3_YunKen/BWP.B3_YunKen.csproj | 4 +- ...SaleOutStoreManyBillsSetFreightPriceIOC.cs | 32 ++++++++++++++ .../TypeIoc/SaleOutStoreSetFreightPriceIOC.cs | 42 +++++++++++++++++++ 4 files changed, 78 insertions(+), 2 deletions(-) rename BWP.B3_YunKen/BLActions/{SaleOutStoreFreightData.cs => OrderFreightData.cs} (96%) create mode 100644 BWP.B3_YunKen/TypeIoc/SaleOutStoreManyBillsSetFreightPriceIOC.cs create mode 100644 BWP.B3_YunKen/TypeIoc/SaleOutStoreSetFreightPriceIOC.cs diff --git a/BWP.B3_YunKen/BLActions/SaleOutStoreFreightData.cs b/BWP.B3_YunKen/BLActions/OrderFreightData.cs similarity index 96% rename from BWP.B3_YunKen/BLActions/SaleOutStoreFreightData.cs rename to BWP.B3_YunKen/BLActions/OrderFreightData.cs index ad007cf..4b358db 100644 --- a/BWP.B3_YunKen/BLActions/SaleOutStoreFreightData.cs +++ b/BWP.B3_YunKen/BLActions/OrderFreightData.cs @@ -16,7 +16,7 @@ using BWP.B3Frameworks.BO.MoneyTemplate; namespace BWP.B3_YunKen.BLActions { - public class SaleOutStoreFreightData : IBLMethodAction + public class OrderFreightData : IBLMethodAction { public string Description { diff --git a/BWP.B3_YunKen/BWP.B3_YunKen.csproj b/BWP.B3_YunKen/BWP.B3_YunKen.csproj index 12988d6..a8b9fd7 100644 --- a/BWP.B3_YunKen/BWP.B3_YunKen.csproj +++ b/BWP.B3_YunKen/BWP.B3_YunKen.csproj @@ -67,7 +67,7 @@ - + @@ -75,6 +75,8 @@ + + diff --git a/BWP.B3_YunKen/TypeIoc/SaleOutStoreManyBillsSetFreightPriceIOC.cs b/BWP.B3_YunKen/TypeIoc/SaleOutStoreManyBillsSetFreightPriceIOC.cs new file mode 100644 index 0000000..9c21e0c --- /dev/null +++ b/BWP.B3_YunKen/TypeIoc/SaleOutStoreManyBillsSetFreightPriceIOC.cs @@ -0,0 +1,32 @@ +using BWP.B3Sale.BL; +using BWP.B3Sale.BO; +using BWP.B3Frameworks; +using System.Linq; +using BWP.B3Sale.Utils; +using Forks.Utils; +using Forks.EnterpriseServices.DomainObjects2.DQuery; +using Forks.EnterpriseServices.DomainObjects2; +using System; + +namespace BWP.B3_YunKen.TypeIoc +{ + [TypeIOC(typeof(SaleOutStoreBL), typeof(SaleOutStoreBL.IManyBillsSetFreightPrice))] + public class SaleOutStoreManyBillsSetFreightPriceIOC : SaleOutStoreBL.IManyBillsSetFreightPrice + { + public void Invoke(CustomerAccept entity, IGrouping @group, IDmoSession session) + { + var dmo = @group.FirstOrDefault(); + var fGroups = @group.GroupBy(x => x.FreightPayment); + if (fGroups.Count() > 1) + throw new ApplicationException("购货客户为【" + dmo.Customer_Name + "】的出库单,计价方式不一致"); + var pGroups = @group.GroupBy(x => x.FreightUnitPrice); + if (pGroups.Count() > 1) + throw new ApplicationException("购货客户为【" + dmo.Customer_Name + "】的出库单,运费单价不一致"); + entity.FreightPrice = @group.Sum(x => (x.FreightPrice ?? 0).Value); + var result = @group.Sum(x => (x.AllUnitNum ?? 0).Value); + if(result!=0) + entity.FreightUnitPrice = entity.FreightPrice / result; + entity.FreightPayment = dmo.FreightPayment; + } + } +} diff --git a/BWP.B3_YunKen/TypeIoc/SaleOutStoreSetFreightPriceIOC.cs b/BWP.B3_YunKen/TypeIoc/SaleOutStoreSetFreightPriceIOC.cs new file mode 100644 index 0000000..cb4a48c --- /dev/null +++ b/BWP.B3_YunKen/TypeIoc/SaleOutStoreSetFreightPriceIOC.cs @@ -0,0 +1,42 @@ +using BWP.B3Sale.BL; +using BWP.B3Sale.BO; +using BWP.B3Frameworks; +using System.Linq; +using BWP.B3Sale.Utils; +using Forks.Utils; +using Forks.EnterpriseServices.DomainObjects2.DQuery; +using Forks.EnterpriseServices.DomainObjects2; + +namespace BWP.B3_YunKen.TypeIoc +{ + [TypeIOC(typeof(SaleOutStoreBL), typeof(SaleOutStoreBL.ISetFreightPrice))] + public class SaleOutStoreSetFreightPriceIOC : SaleOutStoreBL.ISetFreightPrice + { + private Money GetAlreadyAcceptUnitNum(SaleOutStore dmo,IDmoSession session) + { + var dom = new DQueryDom(new JoinAlias(typeof(SaleOutStore_DetailToCustomerAcceptNumber))); + dom.Columns.Add(DQSelectColumn.Sum("AlreadyAcceptUnitNum")); + dom.Where.Conditions.Add(DQCondition.EQ("SaleOutStore_ID", dmo.ID)); + var alreadyUnitNum = ((Money?)session.ExecuteScalar(dom)) ?? 0; + return alreadyUnitNum; + } + + public void Invoke(CustomerAccept entity, SaleOutStore dmo, System.Collections.Generic.IEnumerable details, IDmoSession session) + { + var anyNum = details.Sum(x => (x.UnitNum ?? 0).Value); + var anyFre = dmo.FreightUnitPrice * anyNum; + if (entity.FreightPayment == 运费支付方式.计重) { + entity.FreightPrice = anyFre; + } else if (entity.FreightPayment == 运费支付方式.包车) { + var alreadyUnitNum = GetAlreadyAcceptUnitNum(dmo,session); + if ((alreadyUnitNum + anyNum) >= dmo.AllUnitNum) { + entity.FreightPrice = dmo.FreightPrice - (anyFre ?? 0); + } else { + entity.FreightPrice = anyFre; + } + } + entity.FreightUnitPrice = dmo.FreightUnitPrice; + entity.FreightPayment = dmo.FreightPayment; + } + } +}