|
|
|
@ -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<decimal> 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<decimal>?)session.ExecuteScalar(dom)) ?? 0; |
|
|
|
return alreadyUnitNum; |
|
|
|
} |
|
|
|
|
|
|
|
public void Invoke(CustomerAccept entity, SaleOutStore dmo, System.Collections.Generic.IEnumerable<SaleOutStore_Detail> 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; |
|
|
|
} |
|
|
|
} |
|
|
|
} |