/// <summary> /// 保存发货单信息 /// </summary> /// <returns></returns> private bool SaveOrderInfo() { //从配置文件获取订单提交是否进行库存处理 bool IsStock = bool.Parse(ConfigurationManager.AppSettings["IsStock"]); //更新订单状态为正式订单 IList <ICriterion> qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("OrderNO", OrderNO)); ContractOrderInfo orderInfo = Core.Container.Instance.Resolve <IServiceContractOrderInfo>().GetEntityByFields(qryList); orderInfo.Remark = txtRemark.Text; //检查订单发货明细是否调整 qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("OrderNO", OrderNO)); qryList.Add(Expression.Gt("FixGoodsNumber", 0M)); int recordCount = Core.Container.Instance.Resolve <IServiceContractOrderDetail>().GetRecordCountByFields(qryList); orderInfo.IsFix = recordCount > 0 ? 1 : 0; //更新订单信息 Core.Container.Instance.Resolve <IServiceContractOrderInfo>().Update(orderInfo); return(true); }
/// <summary> /// 记录列表行记录操作 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) { int ID = GetSelectedDataKeyID(Grid1); //获取当前选中记录信息 ContractOrderInfo orderInfo = Core.Container.Instance.Resolve <IServiceContractOrderInfo>().GetEntity(ID); if (orderInfo != null) { if (orderInfo.IsTemp == 1) { //删除收货单 if (e.CommandName == "Delete") { //删除订单信息及附属信息 DeleteOrderByID(ID, orderInfo.OrderNO); //加载收货单信息 BindGrid(); } //编辑收货单 if (e.CommandName == "editField") { PageContext.Redirect(string.Format("~/Contract/SH/ContractSHEdit.aspx?id={0}", ID)); } } else { Alert.Show("正式订单不能删除或者修改!"); } } }
/// <summary> /// 创建新订单 /// </summary> private void CreateOrderInfo() { dpStartDate.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //创建新订单信息,默认为临时订单 ContractOrderInfo order = new ContractOrderInfo(); order.Operator = User.Identity.Name; order.OrderAmount = 0; order.OrderDate = DateTime.Now; order.ValuationDate = DateTime.Now.ToString("yyyy-MM-dd"); order.ManualNO = ""; order.OrderNO = string.Format("SH{0}", DateTime.Now.ToString("yyyyMMddHHmmss")); order.OrderNumber = 0; order.Remark = ""; order.IsTemp = 1; //默认临时订单 order.OrderType = 2; order.IsFix = 0; //默认订单未调整 order.ContractInfo = Core.Container.Instance.Resolve <IServiceContractInfo>().GetEntity(int.Parse(ddlContract.SelectedValue)); order.ContractNO = order.ContractInfo.ContractNO; order.OrderState = "1"; //默认执行中 order.CustomerName = order.ContractInfo.CustomerName; order.CarID = 0; order.CarNO = ""; //创建临时单据 Core.Container.Instance.Resolve <IServiceContractOrderInfo>().Create(order); //保存订单号到页面缓存 OrderNO = order.OrderNO; //创建合同相关费用信息 CreateCostInfo(order.OrderNO); //初始化页面数据 lblOrderNo.Text = OrderNO; }
/// <summary> /// 合同客户选择 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void ddlContract_SelectedIndexChanged(object sender, EventArgs e) { IList <ICriterion> qryList = new List <ICriterion>(); //获取合同价格套系信息 //PriceSetInfo priceSetInfo = Core.Container.Instance.Resolve<IServicePriceSetInfo>().GetEntity(contractInfo.PriceSetID); //根据选择的客户合同更新发货商品的价格 qryList.Add(Expression.Eq("OrderNO", OrderNO)); IList <ContractOrderDetail> orderGoodsList = Core.Container.Instance.Resolve <IServiceContractOrderDetail>().GetAllByKeys(qryList); //获取订单信息并更新订单合同信息 ContractOrderInfo orderInfo = Core.Container.Instance.Resolve <IServiceContractOrderInfo>().GetEntityByFields(qryList); Core.Container.Instance.Resolve <IServiceContractOrderInfo>().Update(orderInfo); //更新订单材料单价信息 foreach (ContractOrderDetail goodsInfo in orderGoodsList) { //根据价格套系编号和商品ID获取合同商品价格信息 qryList = new List <ICriterion>(); //qryList.Add(Expression.Eq("SetID", priceSetInfo.ID)); qryList.Add(Expression.Eq("EquipmentID", goodsInfo.GoodsID)); } //更新显示发货信息 BindOrderDetail(); }
protected void Grid1_PreRowDataBound(object sender, GridPreRowEventArgs e) { ContractOrderInfo row = e.DataItem as ContractOrderInfo; int isTemp = Convert.ToInt32(row.OrderState); LinkButtonField lbtnEditField = Grid1.FindColumn("lbtnEditField") as LinkButtonField; lbtnEditField.Enabled = isTemp == 1; }
/// <summary> /// 订单材料出库处理 /// </summary> /// <param name="whID">出库仓库ID</param> /// <param name="orderInfo">发货单信息</param> private void OrderStockOutPress(int whID, ContractOrderInfo orderInfo) { //获取销售仓库信息 WareHouse houseInfo = Core.Container.Instance.Resolve <IServiceWareHouse>().GetEntity(whID); // 生成出库单信息 WHOutBoundOrder storageOrder = new WHOutBoundOrder(); storageOrder.BOrderNO = OrderNO; storageOrder.Operator = User.Identity.Name; storageOrder.OrderAmount = 0; storageOrder.OrderNumber = 0; storageOrder.OrderDate = DateTime.Now; storageOrder.OrderNO = string.Format("CK{0}", DateTime.Now.ToString("yyyyMMddHHmmss")); storageOrder.OrderType = 1; //storageOrder.SuplierID = orderInfo.ContractInfo.CustomerID; storageOrder.WareHouseID = houseInfo.ID; storageOrder.OutOrderNO = ""; storageOrder.Remark = "发货出库"; #region 出库商品出库明细处理 /*---- 主材出库明细处理 ----*/ //获取订单商品主材明细,生成出库商品明细信息 IList <ICriterion> qryListDetail = new List <ICriterion>(); qryListDetail.Add(Expression.Eq("OrderNO", OrderNO)); qryListDetail.Add(Expression.Eq("WareHouseID", whID)); IList <ContractOrderDetail> list = Core.Container.Instance.Resolve <IServiceContractOrderDetail>().GetAllByKeys(qryListDetail); //写入出库商品明细 foreach (ContractOrderDetail detail in list) { //出库单出库明细处理 CreateStockOutOrder(whID, detail.GoodsNumber, detail.GoodsID, detail.GoodsUnit, ref storageOrder); } /*---- 辅材出库明细处理 ----*/ //获取订单商品辅材明细,生成出库商品明细信息 string sql = string.Format(@"select GoodsID,GoodsUnit,sum(GoodsNumber) as GoodsNumber from ContractOrderSecondaryDetail where OrderNO ='{0}' and WareHouseID ={1} group by GoodsID,GoodsUnit " , OrderNO, whID); DataSet ds = DbHelperSQL.Query(sql); if (ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0) { //写入出库商品明细 foreach (DataRow detail in ds.Tables[0].Rows) { //出库单出库明细处理 CreateStockOutOrder(whID, decimal.Parse(detail["GoodsNumber"].ToString()) , int.Parse(detail["GoodsID"].ToString()) , detail["GoodsUnit"].ToString() , ref storageOrder); } } #endregion 出库商品出库明细处理 //创建出库单信息 Core.Container.Instance.Resolve <IServiceWHOutBoundOrder>().Create(storageOrder); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { IList <ICriterion> qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("OrderNO", OrderNO)); ContractOrderInfo orderInfo = Core.Container.Instance.Resolve <IServiceSaleOrder>().GetEntityByFields(qryList); labMoneys.Text = orderInfo.OrderAmount.ToString(); labFactPrice.Text = orderInfo.OrderAmount.ToString(); } }
private void BindOrderInfo() { IList <ICriterion> qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("OrderNO", OrderNO)); ContractOrderInfo orderInfo = Core.Container.Instance.Resolve <IServiceContractOrderInfo>().GetEntityByFields(qryList); OrderID = orderInfo != null ? orderInfo.ID : 0; ContractID = orderInfo != null ? orderInfo.ContractInfo.ID : 0; OrderType = orderInfo != null ? orderInfo.OrderType : 1; lblTitle.Text = string.Format("发货单号:{0}", OrderNO); }
/// <summary> /// 根据订单号,获取订单信息 /// </summary> private void GetOrderInfo() { //获取订单信息 ContractOrderInfo order = Core.Container.Instance.Resolve <IServiceContractOrderInfo>().GetEntity(OrderID); OrderNO = order.OrderNO; //初始化页面数据 dpStartDate.Text = order.ValuationDate; txtRemark.Text = order.Remark; lblOrderNo.Text = OrderNO; tbManualNO.Text = order.ManualNO; ddlContract.SelectedValue = order.ContractInfo.ID.ToString(); }
protected void ddlCar_SelectedIndexChanged(object sender, EventArgs e) { //获取订单信息 IList <ICriterion> qryList = new List <ICriterion>(); qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("OrderNO", OrderNO)); ContractOrderInfo orderInfo = Core.Container.Instance.Resolve <IServiceContractOrderInfo>().GetEntityByFields(qryList); //更新发货单送货车辆信息 Core.Container.Instance.Resolve <IServiceContractOrderInfo>().Update(orderInfo); }
/// <summary> /// 保存发货单信息 /// </summary> /// <param name="isTemp">订单类型 0:正式订单 1:临时订单</param> /// <returns></returns> private bool SaveOrderInfo(int isTemp) { //从配置文件获取订单提交是否进行库存处理 bool IsStock = bool.Parse(ConfigurationManager.AppSettings["IsStock"]); //通过订单号获取当前订单信息 IList <ICriterion> qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("OrderNO", OrderNO)); ContractOrderInfo orderInfo = Core.Container.Instance.Resolve <IServiceContractOrderInfo>().GetEntityByFields(qryList); //更新订单信息 orderInfo.IsTemp = isTemp; orderInfo.OrderAmount = decimal.Parse(lblAmount.Text); orderInfo.OrderNumber = 0; orderInfo.ManualNO = tbManualNO.Text; orderInfo.ValuationDate = dpStartDate.Text; orderInfo.Remark = txtRemark.Text; orderInfo.Operator = User.Identity.Name; orderInfo.ContractInfo = Core.Container.Instance.Resolve <IServiceContractInfo>().GetEntity(int.Parse(ddlContract.SelectedValue)); orderInfo.ContractNO = orderInfo.ContractInfo.ContractNO; orderInfo.CustomerName = orderInfo.ContractInfo.CustomerName; //发货车辆信息 CarInfo carInfo = Core.Container.Instance.Resolve <IServiceCarInfo>().GetEntity(int.Parse(ddlCar.SelectedValue)); orderInfo.CarNO = carInfo.CarNO; orderInfo.CarID = int.Parse(ddlCar.SelectedValue); //正式订单处理,更新出库信息及流水信息等 if (isTemp == 0) { //检查是否做出库处理 if (IsStock) { //根据订单号,获取订单中所有材料的出库仓库ID信息 List <int> listWH = new InventoryHelper().GetWHInfo(OrderNO); //按出库仓库各个计算出库信息 foreach (int whID in listWH) { //订单材料出库处理 OrderStockOutPress(whID, orderInfo); } } } //更新订单信息 Core.Container.Instance.Resolve <IServiceContractOrderInfo>().Update(orderInfo); //更新费用信息 new ContractOrderBase().CalcOrderCost(OrderNO); //CalcOrderCost(); return(true); }
protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) { int ID = GetSelectedDataKeyID(Grid1); //获取当前选中记录信息 ContractOrderInfo orderInfo = Core.Container.Instance.Resolve <IServiceContractOrderInfo>().GetEntity(ID); if (e.CommandName == "editField") { if (orderInfo != null) { PageContext.Redirect(string.Format("~/Contract/SH/ReceivingOrderEdit.aspx?id={0}", ID)); } } }
private void GetOrderInfo() { ContractOrderInfo order = Core.Container.Instance.Resolve <IServiceContractOrderInfo>().GetEntity(OrderID); OrderNO = order.OrderNO; //初始化页面数据 lblDate.Text = order.OrderDate.ToString("yyyy-MM-dd HH:mm:ss"); txtRemark.Text = order.Remark; lblOrderNo.Text = order.ManualNO; //获取合同客户信息 ContractInfo contractInfo = Core.Container.Instance.Resolve <IServiceContractInfo>().GetEntity(order.ContractInfo.ID); lblContract.Text = contractInfo.CustomerName; }
protected void Accept_Click(object sender, EventArgs e) { IList <ICriterion> qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("OrderNO", OrderNO)); ContractOrderInfo orderInfo = Core.Container.Instance.Resolve <IServiceSaleOrder>().GetEntityByFields(qryList); decimal Amount = 0; tm_SalePayInfo PayEntity = new tm_SalePayInfo(); if (!string.IsNullOrEmpty(nbxVip.Text) && decimal.Parse(nbxVip.Text) > 0) { PayEntity.VipcardMoneys = decimal.Parse(nbxVip.Text); PayEntity.PayWayVipcard = "1"; Amount += decimal.Parse(nbxVip.Text); } if (!string.IsNullOrEmpty(nbCash.Text) && decimal.Parse(nbCash.Text) > 0) { PayEntity.CashMoneys = decimal.Parse(nbCash.Text); PayEntity.PayWayCash = "1"; Amount += decimal.Parse(nbCash.Text); } if (!string.IsNullOrEmpty(nbCard.Text) && decimal.Parse(nbCard.Text) > 0) { PayEntity.CreditMoneys = decimal.Parse(nbCard.Text); PayEntity.PayWayCredit = "1"; Amount += decimal.Parse(nbCard.Text); } if (!string.IsNullOrEmpty(nbWX.Text) && decimal.Parse(nbWX.Text) > 0) { PayEntity.OnlineMoneys = decimal.Parse(nbWX.Text); PayEntity.PayWayOnline = "1"; Amount += decimal.Parse(nbWX.Text); } if (!string.IsNullOrEmpty(nbZFB.Text) && decimal.Parse(nbZFB.Text) > 0) { PayEntity.OnlineMoneys = decimal.Parse(nbZFB.Text); PayEntity.PayWayOnline = "2"; Amount += decimal.Parse(nbZFB.Text); } PayEntity.PayTime = DateTime.Now; PayEntity.SaleOrderID = orderInfo.ID; Core.Container.Instance.Resolve <IServiceSalePayInfo>().Create(PayEntity); //更新订单状态为正式订单 orderInfo.IsTemp = 0; Core.Container.Instance.Resolve <IServiceSaleOrder>().Update(orderInfo); PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference()); }
private void GetOrderInfo() { ContractOrderInfo order = Core.Container.Instance.Resolve <IServiceContractOrderInfo>().GetEntity(OrderID); OrderNO = order.OrderNO; //初始化页面数据 lblDate.Text = order.OrderDate.ToString("yyyy-MM-dd HH:mm:ss"); txtRemark.Text = order.Remark; lblOrderNo.Text = OrderNO; lblAmount.Text = order.ManualNO; ddlContract.SelectedValue = order.ContractInfo.ID.ToString(); ddlCar.SelectedValue = order.CarID.ToString(); }
/// <summary> /// 合同客户选择 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void ddlContract_SelectedIndexChanged(object sender, EventArgs e) { IList <ICriterion> qryList = new List <ICriterion>(); //获取合同信息 ContractInfo contractInfo = Core.Container.Instance.Resolve <IServiceContractInfo>().GetEntity(int.Parse(ddlContract.SelectedValue)); //获取合同价格套系信息 //PriceSetInfo priceSetInfo = Core.Container.Instance.Resolve<IServicePriceSetInfo>().GetEntity(contractInfo.PriceSetID); //根据选择的客户合同更新发货商品的价格 qryList.Add(Expression.Eq("OrderNO", OrderNO)); IList <ContractOrderDetail> orderGoodsList = Core.Container.Instance.Resolve <IServiceContractOrderDetail>().GetAllByKeys(qryList); //获取订单信息并更新订单合同信息 ContractOrderInfo orderInfo = Core.Container.Instance.Resolve <IServiceContractOrderInfo>().GetEntityByFields(qryList); orderInfo.ContractInfo = contractInfo; Core.Container.Instance.Resolve <IServiceContractOrderInfo>().Update(orderInfo); //更新订单材料单价信息 foreach (ContractOrderDetail goodsInfo in orderGoodsList) { //根据价格套系编号和商品ID获取合同商品价格信息 qryList = new List <ICriterion>(); //qryList.Add(Expression.Eq("SetID", priceSetInfo.ID)); qryList.Add(Expression.Eq("EquipmentID", goodsInfo.GoodsID)); PriceSetGoodsInfo priceSetGoodsInfo = Core.Container.Instance.Resolve <IServicePriceSetGoodsInfo>().GetEntityByFields(qryList); if (priceSetGoodsInfo != null) { goodsInfo.GoodsUnitPrice = priceSetGoodsInfo.DailyRents; //获取材料信息 EquipmentInfo equipmentInfo = Core.Container.Instance.Resolve <IServiceEquipmentInfo>().GetEntity(goodsInfo.GoodsID); //判断物品费用是日租金还是现金买赔 //if (equipmentInfo.IsPayNow == 1) //{ // goodsInfo.GoodsUnitPrice = priceSetGoodsInfo.UnitPrice; //} Core.Container.Instance.Resolve <IServiceContractOrderDetail>().Update(goodsInfo); } } //绑定车辆价格套系 BindCarInfo(); ddlCar.SelectedValue = orderInfo.CarID.ToString(); //更新费用信息 new ContractOrderBase().CalcOrderCost(OrderNO); //更新显示发货信息 BindOrderDetail(); }
/// <summary> /// 各类费用项费用计算 /// </summary> /// <param name="costInfo">费用项信息</param> private void CalcCost(ContractOrderCostInfo costInfo) { //获取费用项信息 RepairProjectInfo costProjectInfo = Core.Container.Instance.Resolve <IServiceRepairProjectInfo>().GetEntity(costInfo.CostID); //获取订单信息 IList <ICriterion> qryList = new List <ICriterion>(); qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("OrderNO", costInfo.OrderNO)); ContractOrderInfo orderInfo = Core.Container.Instance.Resolve <IServiceContractOrderInfo>().GetEntityByFields(qryList); //获取费用项单价 costInfo.PayPrice = GetCostPayPrice(costProjectInfo, orderInfo); //获取费用项计价数量 costInfo.OrderNumber = GetCostPayNumber(costProjectInfo, orderInfo); //计算费用金额,更新费用项信息 costInfo.CostAmount = costInfo.PayPrice * costInfo.OrderNumber; Core.Container.Instance.Resolve <IServiceContractOrderCostInfo>().Update(costInfo); }
/// <summary> /// 批量删除订单 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnDeleteSelected_Click(object sender, EventArgs e) { List <int> ids = GetSelectedDataKeyIDs(Grid1); foreach (int id in ids) { //获取当前选中记录信息 ContractOrderInfo orderInfo = Core.Container.Instance.Resolve <IServiceContractOrderInfo>().GetEntity(id); if (orderInfo != null) { if (orderInfo.IsTemp == 1) { //删除订单信息及附属信息 DeleteOrderByID(id, orderInfo.OrderNO); } } } //加载收货单信息 BindGrid(); }
/// <summary> /// 根据费用项费用价格获取类型获取价格 /// </summary> /// <param name="costProjectInfo">费用项信息</param> /// <param name="orderInfo">订单信息</param> /// <returns>价格</returns> private decimal GetCostPayPrice(RepairProjectInfo costProjectInfo, ContractOrderInfo orderInfo) { decimal payPrice = costProjectInfo.PayPrice; IList <ICriterion> qryList = new List <ICriterion>(); //获取费用项适用范围 string[] ids = costProjectInfo.UsingGoods.Split(','); //如果费用单价是从合同获取,根据合同获取单价【费用价格获取类型 0:自定义 1:合同客户运费 2:合同司机运费 3:合同单价 4:合同维修单价】 if (costProjectInfo.PriceSourceType > 0) { switch (costProjectInfo.PriceSourceType) { //合同客户运费(获取合同设定运费) case 1: //payPrice = orderInfo.ContractInfo.CarCostPrice; break; //合同司机运费(获取订单选择的车辆在合同中设定运费) case 2: //获取合同车辆信息 qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("CarID", orderInfo.CarID)); qryList.Add(Expression.Eq("ContractID", orderInfo.ContractInfo.ID)); ContractCarPriceSetInfo carPriceSetInfo = Core.Container.Instance.Resolve <IServiceContractCarPriceSetInfo>().GetEntityByFields(qryList); payPrice = carPriceSetInfo.TonPayPrice; break; //合同单价(获取租赁物品在合同中设定的单价) case 3: if (ids.Length > 0) { qryList = new List <ICriterion>(); // qryList.Add(Expression.Eq("SetID", orderInfo.ContractInfo.PriceSetID)); qryList.Add(Expression.Eq("GoodsTypeID", ids[0])); Order[] orderList = new Order[1]; Order orderli = new Order("ID", true); orderList[0] = orderli; //获取价格套系中物品设定信息 PriceSetGoodsInfo goodsInfo = Core.Container.Instance.Resolve <IServicePriceSetGoodsInfo>().GetFirstEntityByFields(qryList, orderList); //获取物品单价 payPrice = goodsInfo.UnitPrice; } break; //合同维修单价(获取租赁物品在合同中设定的维修价) case 4: if (ids.Length > 0) { qryList = new List <ICriterion>(); //qryList.Add(Expression.Eq("SetID", orderInfo.ContractInfo.PriceSetID)); qryList.Add(Expression.Eq("GoodsTypeID", int.Parse(ids[0]))); Order[] orderList = new Order[1]; Order orderli = new Order("ID", true); orderList[0] = orderli; //获取价格套系中物品设定信息 PriceSetGoodsInfo goodsInfo = Core.Container.Instance.Resolve <IServicePriceSetGoodsInfo>().GetFirstEntityByFields(qryList, orderList); //获取物品维修单价 payPrice = goodsInfo.FixPrice; } break; default: break; } } return(payPrice); }
/// <summary> /// 根据费用项计费单位类型获取费用项计价数量 /// </summary> /// <param name="costProjectInfo">费用项信息</param> /// <param name="orderInfo">订单信息</param> /// <returns>价格</returns> private decimal GetCostPayNumber(RepairProjectInfo costProjectInfo, ContractOrderInfo orderInfo) { decimal payNumber = 0M; IList <ICriterion> qryList = new List <ICriterion>(); string sql = string.Empty; string orderNO = orderInfo.OrderNO; //1:数量 2:计价单位 3:客户吨位 4:员工吨位 5:司机吨位 6:其他 switch (costProjectInfo.PayUnit) { //发货出库数量,发货明细表:GoodsNumber case "1": //获取运送获取重量信息 if (!string.IsNullOrEmpty(costProjectInfo.UsingGoods)) { sql = string.Format(@"select isnull(sum(GoodsNumber),0) as GoodsNumber from ContractOrderDetail where OrderNO ='{0}' and GoodTypeID in ({1}) ", orderNO, costProjectInfo.UsingGoods.TrimEnd(',')); DataSet ds = DbHelperSQL.Query(sql); if (ds.Tables[0] != null) { payNumber = decimal.Parse(ds.Tables[0].Rows[0]["GoodsNumber"].ToString()); } } break; //发货计价单位,例如米,发货明细表:GoodCalcPriceNumber case "2": //获取运送获取重量信息 if (!string.IsNullOrEmpty(costProjectInfo.UsingGoods)) { sql = string.Format(@"select isnull(sum(GoodCalcPriceNumber),0) as GoodsNumber from ContractOrderDetail where OrderNO ='{0}' and GoodTypeID in ({1}) ", orderNO, costProjectInfo.UsingGoods.TrimEnd(',')); DataSet ds = DbHelperSQL.Query(sql); if (ds.Tables[0] != null) { payNumber = decimal.Parse(ds.Tables[0].Rows[0]["GoodsNumber"].ToString()); } } break; //客户吨位,发货明细表:GoodsCustomerWeight case "3": //获取运送获取重量信息 if (!string.IsNullOrEmpty(costProjectInfo.UsingGoods)) { sql = string.Format(@"select isnull(sum(GoodsCustomerWeight),0) as GoodsNumber from ContractOrderDetail where OrderNO ='{0}' and GoodTypeID in ({1}) ", orderNO, costProjectInfo.UsingGoods.TrimEnd(',')); DataSet ds = DbHelperSQL.Query(sql); if (ds.Tables[0] != null) { payNumber = decimal.Parse(ds.Tables[0].Rows[0]["GoodsNumber"].ToString()); } } break; //员工吨位,发货明细表:GoodsStaffWeight case "4": //获取运送获取重量信息 if (!string.IsNullOrEmpty(costProjectInfo.UsingGoods)) { sql = string.Format(@"select isnull(sum(GoodsStaffWeight),0) as GoodsNumber from ContractOrderDetail where OrderNO ='{0}' and GoodTypeID in ({1}) ", orderNO, costProjectInfo.UsingGoods.TrimEnd(',')); DataSet ds = DbHelperSQL.Query(sql); if (ds.Tables[0] != null) { payNumber = decimal.Parse(ds.Tables[0].Rows[0]["GoodsNumber"].ToString()); } } break; //司机吨位,发货明细表:GoodsDriverWeight case "5": //获取运送获取重量信息 if (!string.IsNullOrEmpty(costProjectInfo.UsingGoods)) { sql = string.Format(@"select isnull(sum(GoodsDriverWeight),0) as GoodsNumber from ContractOrderDetail where OrderNO ='{0}' and GoodTypeID in ({1}) ", orderNO, costProjectInfo.UsingGoods.TrimEnd(',')); DataSet ds = DbHelperSQL.Query(sql); if (ds.Tables[0] != null) { payNumber = decimal.Parse(ds.Tables[0].Rows[0]["GoodsNumber"].ToString()); } } break; //其他,默认1 case "6": payNumber = 1; break; default: payNumber = 1; break; } return(payNumber); }
/// <summary> /// 各类费用计算 /// </summary> /// <param name="costInfo">费用项信息</param> private void CalcCost(ContractOrderCostInfo costInfo) { //获取费用项信息 RepairProjectInfo costProjectInfo = Core.Container.Instance.Resolve <IServiceRepairProjectInfo>().GetEntity(costInfo.CostID); //获取费用项适用范围 string[] ids = costProjectInfo.UsingGoods.Split(','); //获取订单信息 IList <ICriterion> qryList = new List <ICriterion>(); qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("OrderNO", OrderNO)); ContractOrderInfo orderInfo = Core.Container.Instance.Resolve <IServiceContractOrderInfo>().GetEntityByFields(qryList); #region 获取费用项单价 costInfo.PayPrice = costProjectInfo.PayPrice; //如果费用单价是从合同获取,根据合同获取单价【费用价格获取类型 0:自定义 1:合同客户运费 2:合同司机运费 3:合同单价 4:合同维修单价】 if (costProjectInfo.PriceSourceType > 0) { switch (costProjectInfo.PriceSourceType) { //合同客户运费(获取合同设定运费) case 1: //costInfo.PayPrice = orderInfo.ContractInfo.CarCostPrice; break; //合同司机运费(获取订单选择的车辆在合同中设定运费) case 2: //获取合同车辆信息 qryList = new List <ICriterion>(); qryList.Add(Expression.Eq("CarID", orderInfo.CarID)); ContractCarPriceSetInfo carPriceSetInfo = Core.Container.Instance.Resolve <IServiceContractCarPriceSetInfo>().GetEntityByFields(qryList); costInfo.PayPrice = carPriceSetInfo.TonPayPrice; break; //合同单价(获取租赁物品在合同中设定的单价) case 3: if (ids.Length > 0) { qryList = new List <ICriterion>(); //qryList.Add(Expression.Eq("SetID", orderInfo.ContractInfo.PriceSetID)); qryList.Add(Expression.Eq("GoodsTypeID", ids[0])); Order[] orderList = new Order[1]; Order orderli = new Order("ID", true); orderList[0] = orderli; //获取价格套系中物品设定信息 PriceSetGoodsInfo goodsInfo = Core.Container.Instance.Resolve <IServicePriceSetGoodsInfo>().GetFirstEntityByFields(qryList, orderList); //获取物品单价 costInfo.PayPrice = goodsInfo.UnitPrice; } break; //合同维修单价(获取租赁物品在合同中设定的维修价) case 4: if (ids.Length > 0) { qryList = new List <ICriterion>(); //qryList.Add(Expression.Eq("SetID", orderInfo.ContractInfo.PriceSetID)); qryList.Add(Expression.Eq("GoodsTypeID", ids[0])); Order[] orderList = new Order[1]; Order orderli = new Order("ID", true); orderList[0] = orderli; //获取价格套系中物品设定信息 PriceSetGoodsInfo goodsInfo = Core.Container.Instance.Resolve <IServicePriceSetGoodsInfo>().GetFirstEntityByFields(qryList, orderList); //获取物品维修单价 costInfo.PayPrice = goodsInfo.FixPrice; } break; default: break; } } #endregion 获取费用项单价 #region 获取费用项计价数量 string sql = string.Empty; //1:数量 2:计价单位 3:客户吨位 4:员工吨位 5:司机吨位 6:其他 switch (costProjectInfo.PayUnit) { //收货出库数量,收货明细表:GoodsNumber case "1": //获取运送获取重量信息 if (!string.IsNullOrEmpty(costProjectInfo.UsingGoods)) { sql = string.Format(@"select sum(GoodsNumber) as GoodsNumber from ContractOrderDetail where OrderNO ='{0}' and GoodTypeID in ({1}) ", OrderNO, costProjectInfo.UsingGoods.TrimEnd(',')); DataSet ds = DbHelperSQL.Query(sql); if (ds.Tables[0] != null) { costInfo.OrderNumber = decimal.Parse(ds.Tables[0].Rows[0]["GoodsNumber"].ToString()); } } break; //收货计价单位,例如米,收货明细表:GoodCalcPriceNumber case "2": //获取运送获取重量信息 if (!string.IsNullOrEmpty(costProjectInfo.UsingGoods)) { sql = string.Format(@"select isnull(sum(GoodCalcPriceNumber),0) as GoodsNumber from ContractOrderDetail where OrderNO ='{0}' and GoodTypeID in ({1}) ", OrderNO, costProjectInfo.UsingGoods.TrimEnd(',')); DataSet ds = DbHelperSQL.Query(sql); if (ds.Tables[0] != null) { costInfo.OrderNumber = decimal.Parse(ds.Tables[0].Rows[0]["GoodsNumber"].ToString()); } } break; //客户吨位,收货明细表:GoodsCustomerWeight case "3": //获取运送获取重量信息 if (!string.IsNullOrEmpty(costProjectInfo.UsingGoods)) { sql = string.Format(@"select isnull(sum(GoodsCustomerWeight),0) as GoodsNumber from ContractOrderDetail where OrderNO ='{0}' and GoodTypeID in ({1}) ", OrderNO, costProjectInfo.UsingGoods.TrimEnd(',')); DataSet ds = DbHelperSQL.Query(sql); if (ds.Tables[0] != null) { costInfo.OrderNumber = decimal.Parse(ds.Tables[0].Rows[0]["GoodsNumber"].ToString()); } } break; //员工吨位,收货明细表:GoodsStaffWeight case "4": //获取运送获取重量信息 if (!string.IsNullOrEmpty(costProjectInfo.UsingGoods)) { sql = string.Format(@"select isnull(sum(GoodsStaffWeight),0) as GoodsNumber from ContractOrderDetail where OrderNO ='{0}' and GoodTypeID in ({1}) ", OrderNO, costProjectInfo.UsingGoods.TrimEnd(',')); DataSet ds = DbHelperSQL.Query(sql); if (ds.Tables[0] != null) { costInfo.OrderNumber = decimal.Parse(ds.Tables[0].Rows[0]["GoodsNumber"].ToString()); } } break; //司机吨位,收货明细表:GoodsDriverWeight case "5": //获取运送获取重量信息 if (!string.IsNullOrEmpty(costProjectInfo.UsingGoods)) { sql = string.Format(@"select isnull(sum(GoodsDriverWeight),0) as GoodsNumber from ContractOrderDetail where OrderNO ='{0}' and GoodTypeID in ({1}) ", OrderNO, costProjectInfo.UsingGoods.TrimEnd(',')); DataSet ds = DbHelperSQL.Query(sql); if (ds.Tables[0] != null) { costInfo.OrderNumber = decimal.Parse(ds.Tables[0].Rows[0]["GoodsNumber"].ToString()); } } break; //其他,默认1 case "6": costInfo.OrderNumber = 1; break; default: costInfo.OrderNumber = 1; break; } #endregion 获取费用项计价数量 //更新费用项信息 costInfo.CostAmount = costInfo.PayPrice * costInfo.OrderNumber; Core.Container.Instance.Resolve <IServiceContractOrderCostInfo>().Update(costInfo); }
/// <summary> /// 订单材料入库处理 /// </summary> /// <param name="whID">入库仓库ID</param> /// <param name="orderInfo">收货单信息</param> private void OrderStockInPress(int whID, ContractOrderInfo orderInfo) { //获取入库仓库信息 WareHouse houseInfo = Core.Container.Instance.Resolve <IServiceWareHouse>().GetEntity(whID); // 生成入库单信息 WHStorageOrder storageOrder = new WHStorageOrder(); storageOrder.BOrderNO = OrderNO; storageOrder.Operator = User.Identity.Name; storageOrder.OrderAmount = 0; storageOrder.OrderNumber = 0; storageOrder.OrderDate = DateTime.Now; storageOrder.OrderNO = string.Format("RK{0}", DateTime.Now.ToString("yyyyMMddHHmmss")); storageOrder.OrderType = 2; //storageOrder.SuplierID = orderInfo.ContractInfo.CustomerID; storageOrder.WareHouseID = houseInfo.ID; storageOrder.OutOrderNO = ""; storageOrder.Remark = "收货入库"; #region 收货单入库明细处理 /*---- 主材出库明细处理 ----*/ // 1、获取订单商品主材明细,生成入库商品明细信息(获取入库不需要经过维修分拣步骤的材料) IList <ICriterion> qryListDetail = new List <ICriterion>(); qryListDetail.Add(Expression.Eq("OrderNO", OrderNO)); qryListDetail.Add(Expression.Eq("WareHouseID", whID)); qryListDetail.Add(Expression.Eq("IsStockByRepaired", 0)); IList <ContractOrderDetail> list = Core.Container.Instance.Resolve <IServiceContractOrderDetail>().GetAllByKeys(qryListDetail); //写入出库商品明细 foreach (ContractOrderDetail detail in list) { //出库单出库明细处理 CreateStockInOrder(whID, detail.GoodsNumber, detail.GoodsID, detail.GoodsUnit, ref storageOrder); } /*---- 辅材出库明细处理 ----*/ //获取订单商品辅材明细,生成出库商品明细信息 string sql = string.Format(@"select GoodsID,GoodsUnit,sum(GoodsNumber) as GoodsNumber from ContractOrderSecondaryDetail where OrderNO ='{0}' and WareHouseID ={1} group by GoodsID,GoodsUnit " , OrderNO, whID); DataSet ds = DbHelperSQL.Query(sql); if (ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0) { //写入出库商品明细 foreach (DataRow detail in ds.Tables[0].Rows) { //出库单出库明细处理 CreateStockInOrder(whID, decimal.Parse(detail["GoodsNumber"].ToString()) , int.Parse(detail["GoodsID"].ToString()) , detail["GoodsUnit"].ToString() , ref storageOrder); } } // 2、获取订单商品主材明细,生成入库商品明细信息(获取入库需要经过维修分拣步骤的材料) string sqlGoods = string.Format(@"select GoodTypeID, sum(GoodsNumber) as GoodsNumber from ContractOrderDetail where OrderNO ='{0}' and WareHouseID={1} and IsStockByRepaired=1 group by GoodTypeID ", OrderNO, whID); DataSet dsGoods = DbHelperSQL.Query(sqlGoods); //写入带分拣商品明细 if (ds.Tables[0] != null) { foreach (DataRow detail in dsGoods.Tables[0].Rows) { SortingGoodsDetail sortingGoods = new SortingGoodsDetail(); sortingGoods.GoodsNumber = decimal.Parse(detail["GoodsNumber"].ToString()); sortingGoods.GoodTypeID = int.Parse(detail["GoodTypeID"].ToString()); sortingGoods.OrderDate = DateTime.Now; sortingGoods.OrderType = 1; sortingGoods.OrderNO = OrderNO; //写入分拣明细处理 Core.Container.Instance.Resolve <IServiceSortingGoodsDetail>().Create(sortingGoods); //更新分拣总数 qryListDetail = new List <ICriterion>(); qryListDetail.Add(Expression.Eq("GoodTypeID", sortingGoods.GoodTypeID)); SortingGoodsInfo SGoodsInfo = Core.Container.Instance.Resolve <IServiceSortingGoodsInfo>().GetEntityByFields(qryListDetail); if (SGoodsInfo != null) { SGoodsInfo.GoodsNumber += sortingGoods.GoodsNumber; SGoodsInfo.UpdateDate = sortingGoods.OrderDate; Core.Container.Instance.Resolve <IServiceSortingGoodsInfo>().Update(SGoodsInfo); } else { SGoodsInfo = new SortingGoodsInfo(); SGoodsInfo.GoodsNumber = sortingGoods.GoodsNumber; SGoodsInfo.UpdateDate = sortingGoods.OrderDate; SGoodsInfo.GoodTypeID = sortingGoods.GoodTypeID; SGoodsInfo.GoodsTypeName = ""; Core.Container.Instance.Resolve <IServiceSortingGoodsInfo>().Create(SGoodsInfo); } } } #endregion 收货单入库明细处理 //创建入库单信息 Core.Container.Instance.Resolve <IServiceWHStorageOrder>().Create(storageOrder); }