/// <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> /// 订单佣金 上一行/下一行 /// </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); }
/// <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;//子件名称 } }