/// <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();
     }
 }
Example #2
0
        /// <summary>
        /// 订单佣金 上一行/下一行
        /// </summary>
        /// <param name="bpObj"></param>
        /// <returns></returns>
        public ReturnUpDownBrokerageDTO GetShipLineBrokerageInfo(UpDownLineBrokerage bpObj)
        {
            ReturnUpDownBrokerageDTO dto = new ReturnUpDownBrokerageDTO();

            if (bpObj.ShipPlanID != null)//出运明细订单ID不为空
            {
                if (bpObj.ShipLineRow != 0)
                {
                    int    Row = bpObj.ShipLineRow;//当前行号
                    string sql = string.Empty;
                    if (bpObj.Type == 1)
                    {
                        sql = "select MAX( RowNo) as DocLineNo ,ShipPlanDetailHead from GS_FT_ShipPlanDetailLine where RowNo<" + bpObj.ShipLineRow + " and ShipPlanDetailHead='" + bpObj.ShipPlanID.ID + "' group by ShipPlanDetailHead";
                    }
                    else
                    {
                        sql = "select Min( RowNo) as DocLineNo ,ShipPlanDetailHead from GS_FT_ShipPlanDetailLine where RowNo>" + bpObj.ShipLineRow + " and ShipPlanDetailHead='" + bpObj.ShipPlanID.ID + "' group by ShipPlanDetailHead";
                    }
                    DataSet ds = null;
                    UFSoft.UBF.Util.DataAccess.DataAccessor.RunSQL(UFSoft.UBF.Util.DataAccess.DataAccessor.GetConn(), sql.ToString(), null, out ds);
                    if (ds != null && ds.Tables[0].Rows.Count > 0)
                    {
                        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                        {
                            if (!string.IsNullOrEmpty(ds.Tables[0].Rows[i]["RowNo"] + ""))
                            {
                                Row = Convert.ToInt32(ds.Tables[0].Rows[i]["DocLineNo"]);
                            }
                        }
                    }
                    ShipPlanDetailLine line = ShipPlanDetailLine.Finder.Find(string.Format("ShipPlanDetailHead.ID={0} and RowNo={1}", bpObj.ShipPlanID.ID, Row));
                    if (line != null)
                    {
                        dto.ShipPlanID        = line.ShipPlanDetailHead.Key;                          //销售单ID
                        dto.RowNo             = line.RowNo;                                           //行号
                        dto.ShipPlanLineID    = line.Key;                                             //销售单行ID
                        dto.ItemInfo_Item     = line.ItemKey;                                         //料号
                        dto.ItemInfo_ItemName = line.Item.Name;                                       //品名
                        dto.ItemInfo_Code     = line.Item.Code;
                        dto.Qty            = decimal.Round(line.Qty, line.NumberUom.Round.Precision); //数量
                        dto.Uom            = line.NumberUom.Name;                                     //单位
                        dto.ItemInfo_Code  = line.Item.Code;                                          //料品code
                        dto.Currecy        = line.ShipPlanDetailHead.Currency.Name;
                        dto.TotalMoney     = decimal.Round(line.TotalTax, line.ShipPlanDetailHead.Currency.MoneyRound.Precision);
                        dto.ExportSales    = decimal.Round(line.ExportSales, line.ShipPlanDetailHead.Currency.PriceRound.Precision);
                        dto.FinallyPriceTC = decimal.Round(line.Ultimately, line.ShipPlanDetailHead.Currency.PriceRound.Precision);
                    }
                }
            }

            return(dto);
        }
Example #3
0
        /// <summary>
        /// 根据出运明细关联销售订单行的随单BOM生成报关协同行
        /// </summary>
        /// <param name="syneryHead"></param>
        /// <param name="shipPlanLine"></param>
        /// <param name="RowNo"></param>
        /// <param name="item"></param>
        private void CreateSOBomSynergyLine(UFIDA.U9.Cust.GS.FT.SynergyBE.SynergyHead syneryHead, ShipPlanDetailLine shipPlanLine, int RowNo, ItemMaster item)
        {
            OrderBomHead sobomhead = OrderBomHead.Finder.Find("OrderLine=@OrderLine", new OqlParam[1] {
                new OqlParam(shipPlanLine.SrcLineID)
            });

            if (sobomhead != null)
            {
                UFIDA.U9.Cust.GS.FT.SynergyBE.SynergyLine syneryline = UFIDA.U9.Cust.GS.FT.SynergyBE.SynergyLine.Create(syneryHead);
                //syneryline.SynergyProduct = shipPlanLine.SynergyProduct;//报关品名
                syneryline.RowNo             = shipPlanLine.RowNo;                    //行号
                syneryline.SourceSellNo      = shipPlanLine.SrcDocNo;                 //来源销售订单号
                syneryline.SourceSellID      = shipPlanLine.SrcSO.ID;                 //来源销售订单ID
                syneryline.SourceSellRowNo   = int.Parse(shipPlanLine.SrcLineNo);     //来源销售订单行号
                syneryline.SourceSellLineID  = shipPlanLine.SrcLineID;                //来源销售订单行ID
                syneryline.SourceLineID      = shipPlanLine.RowNo;                    //来源行号
                syneryline.SourceOrderLineID = shipPlanLine.ID;                       //来源单据行ID
                syneryline.SourceOrderNo     = shipPlanLine.ShipPlanDetailHead.DocNo; //来源单据号
                syneryline.SourceOrderID     = shipPlanLine.ShipPlanDetailHead.ID;    //来源单据ID
                syneryline.ParentPart        = shipPlanLine.Item;                     //母件
                syneryline.SubKey            = sobomhead.SubKey;                      //子件
                syneryline.SubkeyType        = AttibuerEnum.IsOut;                    //子件类型
                syneryline.Standard          = shipPlanLine.Standard;                 //规格
                syneryline.Qty        = shipPlanLine.Qty;                             //数量
                syneryline.Uom        = shipPlanLine.NumberUom;                       //计量单位
                syneryline.NeddSubkey = shipPlanLine.Qty;                             //子件用量
                // syneryline.CustomsQty = shipPlanLine.CustomsQty;//报关数量

                /*从出运明细单带出,取合同价
                 * 如果无合同价,则取最近一次采购价格,并将采购供应商带至供应商字段*/
                syneryline.Price = shipPlanLine.ExportSales;//单价
                //syneryline.Supplier = shipPlanLine.Supplier;//供应商

                //根据出运明显单计算
                syneryline.Cost = 0;          //成本
                //中类成品报关金额*子件成本/∑成品BOM的子件成本
                syneryline.CustomsAmount = 0; //报关金额
                //syneryline.HSCode = shipPlanLine.Item.;//HS编码
                //syneryline.CustomsProduct = shipPlanLine.CustomsProduct;//报关品名
                //syneryline.BillNo = shipPlanLine.bi;//发票号
                //syneryline.ISCustoms = shipPlanLine.ISCustoms;//是否报关
                //syneryline.Memo = shipPlanLine.Memo;//备注
                //syneryline.Descflexfield = shipPlanLine.Descflexfield;//实体扩展字段集合
                //syneryline.ParentPartCode = shipPlanLine.ParentPartCode;//母件编码
                //syneryline.ParentPartName = shipPlanLine.ParentPartName;//母件名称
                //syneryline.SubKeyCode = shipPlanLine.SubKeyCode;//子件编码
                //syneryline.SubKeyName = shipPlanLine.SubKeyName;//子件名称
            }
        }