/// <summary> /// 计算行佣金,(销售订单行扩展字段?) /// </summary> /// <param name="soLine">销售订单行</param> /// <returns>行佣金</returns> public static decimal GetBrokerage(SM.SO.SOLine soLine) { //销售订单行扩展字段:佣金生成状态为true计算佣金, if (soLine.DescFlexField.PrivateDescSeg6 == "" || soLine.DescFlexField.PrivateDescSeg6.ToLower() == "false") { return(0); } if (soLine.SO.OrderBy == null || soLine.SO.OrderBy.CustomerKey == null) { return(0); } // OrderLineBrokerage.EntityList orderLineList = OrderLineBrokerage.Finder.FindAll("ShipPlanLine=@ShipPlanLine,Client=@Custmer ,Product=@Product", new OqlParam(shipLine.ID), new OqlParam(shipLine.ShipPlanDetailHead.ClientKey), new OqlParam(shipLine.ItemKey)); OrderLineBrokerage.EntityList brokerageList = OrderLineBrokerage.Finder.FindAll("OrderLineID=@OrderLineID and Client=@Custmer and Product=@Product", new OqlParam(soLine.ID), new OqlParam(soLine.SO.OrderBy.CustomerKey), new OqlParam(soLine.ItemInfo.ItemIDKey)); if (brokerageList == null || brokerageList.Count < 1) { return(0); } decimal brokerage = 0; foreach (OrderLineBrokerage line in brokerageList) { brokerage += line.Prices; } return(brokerage); }
/// <summary> /// 创建出运明细行佣金 /// </summary> /// <param name="DtoList"></param> public void CreateShipBrokerage(List <ReturnBrokerageDto> DtoList) { //删除出运明细行对应的佣金 using (ISession removeSession = Session.Open()) { for (int i = 0; i < DtoList.Count; i++) { OrderLineBrokerage.EntityList BrokerageList = OrderLineBrokerage.Finder.FindAll("ShipPlanLine=@OrderLineID", new OqlParam(DtoList[i].ShipPlanLineID)); if (BrokerageList != null && BrokerageList.Count > 0) { //删除出运明细行佣金 for (int j = 0; j < BrokerageList.Count; j++) { BrokerageList[j].Remove(); } } } removeSession.Commit(); } using (ISession session = Session.Open()) { for (int i = 0; i < DtoList.Count; i++) { ShipPlanDetailLine shipLine = ShipPlanDetailLine.Finder.FindByID(DtoList[i].ShipPlanLineID.ID); if (shipLine == null) { continue; } SOLine soLine = SOLine.Finder.FindByID(shipLine.SrcLineID); OrderLineBrokerage.EntityList brokerage = OrderLineBrokerage.Finder.FindAll("OrderLineID='" + shipLine.SrcLineID + "'"); if (brokerage != null && brokerage.Count > 0) { OrderLineBrokerage shipLineBroke = null; foreach (OrderLineBrokerage orderBrokerage in brokerage) { shipLineBroke = OrderLineBrokerage.Create(); shipLineBroke.SourceType = AllEnumBE.SourceTypeEnum.ShipPlanDoc; shipLineBroke.ShipPlanLine = shipLine; shipLineBroke.ShipPlanRowNo = shipLine.RowNo; shipLineBroke.Client = orderBrokerage.Client; shipLineBroke.Product = orderBrokerage.Product; shipLineBroke.BrokerageRatio = orderBrokerage.BrokerageRatio; shipLineBroke.Payee = orderBrokerage.Payee; //shipLineBroke.PayAmount = orderBrokerage.PayAmount; shipLineBroke.BrokerageType = orderBrokerage.BrokerageType; shipLineBroke.Prices = orderBrokerage.Prices; shipLineBroke.PayAmount = orderBrokerage.PayAmount / soLine.OrderByQtyTU * shipLine.Qty; shipLineBroke.PayCurrency = orderBrokerage.PayCurrency; //shipLineBroke.OutPayment = orderBrokerage.OutPayment; shipLineBroke.OrderCurrency = orderBrokerage.OrderCurrency; shipLineBroke.Rate = orderBrokerage.Rate; shipLineBroke.SrcBrokerageLine = orderBrokerage.SrcBrokerageLine; } } } session.Commit(); } }
/// <summary> /// after Insert /// </summary> protected override void OnInserted() { SM.SO.SOLine soLine = null; using (ISession session = Session.Open()) { decimal shippedQty = 0; soLine = SM.SO.SOLine.Finder.FindByID(this.SrcLineID); if (soLine != null) { //校验修改的数量是否等于或者小于来源销售订单行.数量-来源销售订单行.已出运数量, // 如果大于,则修改无效,不提示,将数量还原至修改前, if (soLine.DescFlexField.PrivateDescSeg8 != "") { shippedQty = Convert.ToDecimal(soLine.DescFlexField.PrivateDescSeg8); } soLine.DescFlexField.PrivateDescSeg8 = (shippedQty + this.Qty).ToString(); #region 生成订单佣金 if (soLine.DescFlexField.PrivateDescSeg6.ToLower() == "true") { OrderLineBrokerage.EntityList brokerage = OrderLineBrokerage.Finder.FindAll("OrderLineID='" + soLine.ID + "'"); if (brokerage != null && brokerage.Count > 0) { OrderLineBrokerage shipLineBroke = null; foreach (OrderLineBrokerage orderBrokerage in brokerage) { shipLineBroke = OrderLineBrokerage.Create(); shipLineBroke.SourceType = AllEnumBE.SourceTypeEnum.ShipPlanDoc; shipLineBroke.ShipPlanLine = this; shipLineBroke.ShipPlanRowNo = this.RowNo; shipLineBroke.Client = orderBrokerage.Client; shipLineBroke.Product = orderBrokerage.Product; shipLineBroke.BrokerageRatio = orderBrokerage.BrokerageRatio; shipLineBroke.Payee = orderBrokerage.Payee; shipLineBroke.Prices = orderBrokerage.Prices; //支付金额根据明细单数量计算 shipLineBroke.PayAmount = orderBrokerage.PayAmount / soLine.OrderByQtyTU * this.Qty; shipLineBroke.PayCurrency = orderBrokerage.PayCurrency; //shipLineBroke.OutPayment = orderBrokerage.OutPayment; shipLineBroke.OrderCurrency = orderBrokerage.OrderCurrency; shipLineBroke.Rate = orderBrokerage.Rate; shipLineBroke.SrcBrokerageLine = orderBrokerage.SrcBrokerageLine; } } } #endregion } session.Commit(); } base.OnInserted(); // TO DO: write your business code here... }
/// <summary> /// 判断佣金存在,则删除 /// </summary> /// <param name="DtoList"></param> public void DeleteBrokerage(List <ReturnBrokerageDto> DtoList) { //判断销售订单行佣金是否存在 for (int i = 0; i < DtoList.Count; i++) { OrderLineBrokerage.EntityList BrokerageList = OrderLineBrokerage.Finder.FindAll("OrderLineID=@OrderLineID", new OqlParam(DtoList[i].SoLineID)); if (BrokerageList != null && BrokerageList.Count > 0) { //删除销售订单行佣金 for (int j = 0; j < BrokerageList.Count; j++) { BrokerageList[j].Remove(); } } } }
/// <summary> /// 计算行佣金, /// </summary> /// <param name="soLine">出运明细订单行</param> /// <returns>行佣金</returns> public static decimal GetBrokerage(GS.FT.ShipPlanDetailBE.ShipPlanDetailLine shipLine) { //if (soLine.SO.OrderBy == null || soLine.SO.OrderBy.CustomerKey == null) // return 0; //OrderLineBrokerage.EntityList orderLineList = OrderLineBrokerage.Finder.FindAll("ShipPlanLine=@ShipPlanLine and Client=@Custmer and Product=@Product", new OqlParam(shipLine.ID), new OqlParam(shipLine.ShipPlanDetailHead.ClientKey), new OqlParam(shipLine.ItemKey)); OrderLineBrokerage.EntityList orderLineList = OrderLineBrokerage.Finder.FindAll("ShipPlanLine=@ShipPlanLine", new OqlParam(shipLine.ID)); if (orderLineList == null || orderLineList.Count < 1) { return(0); } decimal brokerage = 0; foreach (OrderLineBrokerage line in orderLineList) { brokerage += line.Prices; } return(brokerage); }
/// <summary> /// 清空出运明细订单行佣金 /// </summary> /// <param name="SolineEntity"></param> public void DeleteShipLineBrokerage(List <ShipPlanDetailLine.EntityKey> shipLineEntity) { for (int i = 0; i < shipLineEntity.Count; i++) { OrderLineBrokerage.EntityList LineBrokerageList = OrderLineBrokerage.Finder.FindAll("ShipPlanLine=@ShipPlanLine and OutPayment=0", new OqlParam(shipLineEntity[i].ID)); if (LineBrokerageList != null) { for (int j = 0; j < LineBrokerageList.Count; j++) { if (LineBrokerageList[i].OutPayment > 0) { continue; } LineBrokerageList[i].Remove(); } } } }
private void CollectHeadData() { if (this.CustomsSingle == -1) { this.CustomsSingle = 0; } //汇总所有行所对应的明细单佣金中的支付金额,赋值至“出运明细单.佣金”字段中 //汇总所有行的价税合计至“出运明细单.价税合计”字段中 //汇总所有行中的总箱数、毛重、净重、体积至“出运明细单.总件数”、“出运明细单.总毛重”、“出运明细单.总净重”、“出运明细单.总体积 //循环行,判断总体积/5000(系统预制参数)和毛重的大小,取两者的最大值赋值给体积重量字段; decimal brokerage = 0; //佣金 decimal totalTax = 0; //价税合计 decimal discount = 0; //折扣 decimal sumGross = 0, sumSuttle = 0, sumBulk = 0; //毛重、净重、体积 int sumNumber = 0; //总箱数 decimal shippedQty = 0; //销售订单的已出运数量 OrderLineBrokerage.EntityList orderLine = null; SM.SO.SOLine soLine = null; foreach (ShipPlanDetailLine shipLine in this.ShipPlanDetailLine) { //修改出运明细单行.价税合计=出运明细单行.单价*修改后出运明细单行.数量, shipLine.TotalTax = shipLine.Ultimately * shipLine.Qty; discount += (shipLine.ExportSales - shipLine.Ultimately) * shipLine.Qty; orderLine = OrderLineBrokerage.Finder.FindAll("ShipPlanLine=" + shipLine.ID + "");//佣金汇总 foreach (OrderLineBrokerage line in orderLine) { brokerage += line.PayAmount; } totalTax += shipLine.TotalTax; sumNumber += shipLine.SumBoxNumber; sumGross += shipLine.SumGross; sumSuttle = shipLine.NetWeight; sumBulk += shipLine.Bulks; //this. } this.Brokerage = brokerage; this.TotalTax = totalTax; this.SumNumber = sumNumber; this.SumGross = sumGross; this.SumSuttle = sumSuttle; this.SumBulk = sumBulk; this.Discount = discount; }
/// <summary> /// 联动删除 BOM 佣金 费用 /// </summary> /// <param name="bpObj"></param> public void Delete(DeleteSo bpObj) { using (ISession session = Session.Open()) { //随单Bom OrderBomHead.EntityList BomList = OrderBomHead.Finder.FindAll("OrderHead=@OrderHead", new OqlParam(bpObj.SoID)); if (BomList != null && BomList.Count > 0) { foreach (OrderBomHead item in BomList) { item.Remove(); } } //订单行佣金 SOLine.EntityList LineList = bpObj.SoID.GetEntity().SOLines; if (LineList != null && LineList.Count > 0) { foreach (SOLine item in LineList) { OrderLineBrokerage.EntityList Brokerage = OrderLineBrokerage.Finder.FindAll("OrderLineID=@OrderLineID", new OqlParam(item.ID)); if (Brokerage != null && Brokerage.Count > 0) { foreach (OrderLineBrokerage items in Brokerage) { items.Remove(); } } } } //订单费用 SellOrderID OrderCost.EntityList CostList = OrderCost.Finder.FindAll("SellOrderID=@SellOrderID", new OqlParam(bpObj.SoID)); if (CostList != null && CostList.Count > 0) { foreach (OrderCost item in CostList) { item.Remove(); } } session.Commit(); } }
/// <summary> /// after Delete /// </summary> protected override void OnDeleted() { SM.SO.SOLine soLine = null; using (ISession session = Session.Open()) { decimal shippedQty = 0; soLine = SM.SO.SOLine.Finder.FindByID(this.SrcLineID); if (soLine != null) { //校验修改的数量是否等于或者小于来源销售订单行.数量-来源销售订单行.已出运数量, // 如果大于,则修改无效,不提示,将数量还原至修改前, if (soLine.DescFlexField.PrivateDescSeg8 != "") { shippedQty = Convert.ToDecimal(soLine.DescFlexField.PrivateDescSeg8); } if (shippedQty - this.Qty <= 0) { soLine.DescFlexField.PrivateDescSeg8 = "0"; } else { soLine.DescFlexField.PrivateDescSeg8 = (shippedQty - this.Qty).ToString(); } #region 除订单佣金 OrderLineBrokerage.EntityList brokerage = OrderLineBrokerage.Finder.FindAll("ShipPlanLine='" + this.OriginalData.ID + "'"); if (brokerage != null && brokerage.Count > 0) { foreach (OrderLineBrokerage orderBrokerage in brokerage) { orderBrokerage.Remove(); } } #endregion } session.Commit(); } base.OnDeleted(); // TO DO: write your business code here... }
/// <summary> /// 清空订单行佣金 /// </summary> /// <param name="SolineEntity"></param> public void DeleteSoLineBrokerage(List <SOLine.EntityKey> SolineEntity) { for (int i = 0; i < SolineEntity.Count; i++) { OrderLineBrokerage.EntityList LineBrokerageList = OrderLineBrokerage.Finder.FindAll("OrderLineID=@OrderLineID", new OqlParam(SolineEntity[i].ID)); if (LineBrokerageList != null) { foreach (OrderLineBrokerage doc in LineBrokerageList) { //校验是否已生成出运明细单佣金,如果生成则需要手动清除出运明细单佣金 OrderLineBrokerage shipBrokerage = OrderLineBrokerage.Finder.Find("ShipPlanLine.SrcLineID=" + SolineEntity[i].ID + ""); if (shipBrokerage != null) { throw new Exception("请手动清除此销售订单对应的出运明细单佣金再重新生成"); } if (doc.OutPayment > 0) { continue; } doc.Remove(); } } } }