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;
+ }
+ }
+}