/// <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();
             }
         }
     }
 }
Exemple #7
0
        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;
        }
Exemple #8
0
 /// <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();
             }
         }
     }
 }