/// <summary> /// /// </summary> /// <param name="wareHousesId"></param> /// <param name="info"></param> private void UpdateInventoryLederInfo(int wareHousesId, XMSaleReturnProductDetails info, string platformMerchantCode) { XMInventoryLedger inventoryLeder = null; if (platformMerchantCode != "") { inventoryLeder = base.XMInventoryLedgerService.GetXMInventoryLedgerByParm(wareHousesId, platformMerchantCode); if (inventoryLeder != null) //更新数据 { //更新入库数量(加上) inventoryLeder.InCount = (inventoryLeder.InCount == null ? 0 : inventoryLeder.InCount) + info.RejectionProdcutsCount; inventoryLeder.InMoney = info.RejectionProductsPrice * inventoryLeder.InCount; inventoryLeder.UpdateDate = DateTime.Now; inventoryLeder.UpdateID = HozestERPContext.Current.User.CustomerID; base.XMInventoryLedgerService.UpdateXMInventoryLedger(inventoryLeder); } else { XMInventoryLedger inventoryLederInfo = new XMInventoryLedger(); inventoryLederInfo.WarehouseId = wareHousesId; inventoryLederInfo.ProductId = info.ProductId; inventoryLederInfo.PlatformMerchantCode = platformMerchantCode; inventoryLederInfo.AfloatCount = 0; inventoryLederInfo.AfloatPrice = info.ProductPrice; inventoryLederInfo.AfloatMoney = inventoryLederInfo.AfloatCount * inventoryLederInfo.AfloatPrice; inventoryLederInfo.InCount = info.ProductCount; inventoryLederInfo.InPrice = info.ProductPrice; inventoryLederInfo.InMoney = inventoryLederInfo.InCount * inventoryLederInfo.InPrice; inventoryLederInfo.OutCount = 0; inventoryLederInfo.OutPrice = info.ProductPrice; inventoryLederInfo.OutMoney = inventoryLederInfo.OutCount * inventoryLederInfo.OutPrice; inventoryLederInfo.CreateDate = DateTime.Now; inventoryLederInfo.CreateID = HozestERPContext.Current.User.CustomerID; base.XMInventoryLedgerService.InsertXMInventoryLedger(inventoryLederInfo); } //新增库存总账明细(入库) var inventoryLederDetail = base.XMInventoryLedgerDetailService.GetXMInventoryLedgerDetailListByParm(wareHousesId, platformMerchantCode); decimal price = 0; decimal money = 0; XMInventoryLedgerDetail details = new XMInventoryLedgerDetail(); details.WarehouseId = wareHousesId; details.ProductId = info.ProductId; details.PlatformMerchantCode = platformMerchantCode; details.InCount = info.RejectionProdcutsCount; //入库数量 details.InPrice = info.RejectionProductsPrice; //入库单价 details.InMoney = info.RejectionsaleMoney; //金额 details.OutCount = 0; details.OutPrice = price; details.OutMoney = money; if (inventoryLederDetail != null && inventoryLederDetail.Count > 0) { //默认最后一条(余量) int BalanceCount = inventoryLederDetail[0].BalanceCount.Value; details.BalanceCount = BalanceCount + details.InCount; } else { details.BalanceCount = details.InCount; } details.BalancePrice = info.RejectionProductsPrice; details.BalanceMoney = details.BalancePrice * details.BalanceCount; var saleReturns = base.XMSaleReturnService.GetXMSaleReturnById(info.SaleReturnId); if (saleReturns != null) { details.RefNumber = saleReturns.Ref; } details.BizDate = DateTime.Now; details.BizUserId = HozestERPContext.Current.User.CustomerID; int refType = 1004; //业务类型 1 采购入库 1000 采购退货 1002 销售出库 1004 销售退货入库 1008 库存盘点-盘盈入库 1010 库存盘点-盘亏出库 details.RefType = refType; base.XMInventoryLedgerDetailService.InsertXMInventoryLedgerDetail(details); } }
protected void btnSave_Click(object sender, EventArgs e) { decimal value = 0; if (this.type == 0) //新增 { bool isFalse = false; string hiddjsonContent = hdfJsonContent.Value; string rf = AutoSaleReturnNumber(); //自动生成入库单号 int orderinfoID = 0; //暂时未与订单关联 if (ddlwareHouses.Value == "" || ddlwareHouses.Value == null) { base.ShowMessage("请添加仓库或未选择仓库!"); BindGrid(hiddjsonContent); return; } int wareHouseId = int.Parse(ddlwareHouses.Value.ToString()); int billStatus = 0; //状态为待入库 int BizUserId = HozestERPContext.Current.User.CustomerID; // 入库人 DateTime BizDt = txtStorageDate.Value == "" ? DateTime.Parse(DateTime.Now.ToShortDateString()) : Convert.ToDateTime(txtStorageDate.Value); //入库时间 decimal totalMoney = 0; int paymentType = int.Parse(ddlPayment.SelectedValue); string note = txtNote.Text.Trim(); if (hiddjsonContent != "") { JArray ja_goods = (JArray)JsonConvert.DeserializeObject(hiddjsonContent); for (int i = 0; i < ja_goods.Count; i++) { bool t = IsNumeric(ja_goods[i]["ProductCount"].ToString().Replace('\"', ' ').Trim() == "" ? "0" : ja_goods[i]["ProductCount"].ToString().Replace('\"', ' ').Trim()); if (!t) { base.ShowMessage("商品采购数量数量格式不正确!"); BindGrid(hiddjsonContent); return; } int kReturnCount = ja_goods[i]["KCount"].ToString().Replace('\"', ' ').Trim() == "" ? 0 : int.Parse(ja_goods[i]["KCount"].ToString().Replace('\"', ' ').Trim()); //可退货数量 int productCount = ja_goods[i]["ProductCount"].ToString().Replace('\"', ' ').Trim() == "" ? 0 : int.Parse(ja_goods[i]["ProductCount"].ToString().Replace('\"', ' ').Trim()); //退货数量 if (productCount < 0 || productCount > (kReturnCount + productCount)) { isFalse = true; } decimal productMoney = ja_goods[i]["money"].ToString().Replace('\"', ' ') == "" ? value : decimal.Parse(ja_goods[i]["money"].ToString().Replace('\"', ' ').Trim()); //采购总价 totalMoney += productMoney; } } if (isFalse) { base.ShowMessage("退货商品数量不能为0或退货数量不能大于出库数量!"); BindGrid(hiddjsonContent); return; } XMSaleReturn returnInfo = new XMSaleReturn(); returnInfo.Ref = rf; returnInfo.OrderInfoID = orderinfoID; returnInfo.WarehouseId = wareHouseId; returnInfo.BillStatus = billStatus; returnInfo.RejectionsaleMoney = totalMoney; returnInfo.SaleDeliveryId = this.SaleDeliveryID; returnInfo.PaymentType = paymentType; returnInfo.Remarks = note; returnInfo.BizUserId = BizUserId; returnInfo.BizDt = BizDt; returnInfo.CreateDate = returnInfo.UpdateDate = DateTime.Now; returnInfo.UpdateID = returnInfo.CreateID = HozestERPContext.Current.User.CustomerID; returnInfo.IsEnable = false; base.XMSaleReturnService.InsertXMSaleReturn(returnInfo); int saleReturnId = returnInfo.Id; if (hiddjsonContent != "") { JArray ja_goods = (JArray)JsonConvert.DeserializeObject(hiddjsonContent); for (int i = 0; i < ja_goods.Count; i++) { string PID = ja_goods[i]["PID"].ToString().Replace('\"', ' ').Trim(); //销售订单产品详情ID string productCode = ja_goods[i]["PlatformMerchantCode"].ToString().Replace('\"', ' ').Trim(); //厂家编码 int productCount = ja_goods[i]["ProductCount"].ToString().Replace('\"', ' ').Trim() == "" ? 0 : int.Parse(ja_goods[i]["ProductCount"].ToString().Replace('\"', ' ').Trim()); //退货数量 decimal productPrice = ja_goods[i]["price"].ToString().Replace('\"', ' ').Trim() == "" ? value : decimal.Parse(ja_goods[i]["price"].ToString().Replace('\"', ' ').Trim()); //退货单价 decimal productMoney = ja_goods[i]["money"].ToString().Replace('\"', ' ').Trim() == "" ? value : decimal.Parse(ja_goods[i]["money"].ToString().Replace('\"', ' ').Trim()); //退货金额 var saleDeliveryProductDetails = base.XMSaleDeliveryProductDetailsService.GetXMSaleDeliveryProductDetailsBySaleDeliveryID(this.SaleDeliveryID); XMSaleReturnProductDetails returnDetails = new XMSaleReturnProductDetails(); returnDetails.SaleReturnId = saleReturnId; var product = base.XMProductService.getXMProductByManufacturersCode(productCode); if (product != null) { returnDetails.ProductId = product.Id; } if (saleDeliveryProductDetails != null && saleDeliveryProductDetails.Count > 0) { foreach (XMSaleDeliveryProductDetails info in saleDeliveryProductDetails) { if (productCode == info.PlatformMerchantCode && productPrice == info.ProductPrice) { returnDetails.DeliveryProductsDetailID = info.Id; } } } returnDetails.RejectionProdcutsCount = productCount; //退货数量 returnDetails.RejectionProductsPrice = productPrice; // 退货单价 returnDetails.RejectionsaleMoney = productMoney; //退货金额 returnDetails.CreateDate = returnDetails.UpdateDate = DateTime.Now; returnDetails.CreateID = returnDetails.UpdateID = HozestERPContext.Current.User.CustomerID; returnDetails.IsEnable = false; base.XMSaleReturnProductDetailsService.InsertXMSaleReturnProductDetails(returnDetails); //插入退货商品条形码集合 // InsertSaleReturnBarCodes(returnDetails.Id, int.Parse(PID), productCount); } } base.ShowMessage("操作成功!"); BindGrid(returnInfo.Id); } else //编辑 { bool isFalse = false; string hiddjsonContent = hdfJsonContent.Value; int id = this.SaleReturnID; decimal totalMoney = 0; //总价 var saleReturnInfo = base.XMSaleReturnService.GetXMSaleReturnById(id); if (saleReturnInfo != null) { if (ddlwareHouses.Value == "" || ddlwareHouses.Value == null) { base.ShowMessage("请添加仓库或未选择仓库!"); BindGrid(hiddjsonContent); return; } int wareHoursesID = int.Parse(ddlwareHouses.Value.ToString()); var saleReturnDetails = base.XMSaleReturnProductDetailsService.GetXMSaleReturnProductDetailsListBySaleReturnID(saleReturnInfo.Id); saleReturnInfo.WarehouseId = wareHoursesID; saleReturnInfo.BizDt = txtStorageDate.Value == "" ? DateTime.Parse(DateTime.Now.ToShortDateString()) : Convert.ToDateTime(txtStorageDate.Value); //业务时间 if (hiddjsonContent != "") { JArray ja_goods = (JArray)JsonConvert.DeserializeObject(hiddjsonContent); for (int i = 0; i < ja_goods.Count; i++) { bool t = IsNumeric(ja_goods[i]["ProductCount"].ToString().Replace('\"', ' ').Trim() == "" ? "0" : ja_goods[i]["ProductCount"].ToString().Replace('\"', ' ').Trim()); if (!t) { base.ShowMessage("商品采购数量数量格式不正确!"); BindGrid(hiddjsonContent); return; } int kReturnCount = ja_goods[i]["KCount"].ToString().Replace('\"', ' ').Trim() == "" ? 0 : int.Parse(ja_goods[i]["KCount"].ToString().Replace('\"', ' ').Trim()); //可退货数量 int productCount = ja_goods[i]["ProductCount"].ToString().Replace('\"', ' ').Trim() == "" ? 0 : int.Parse(ja_goods[i]["ProductCount"].ToString().Replace('\"', ' ').Trim()); //退货数量 if (productCount < 0 || productCount > (kReturnCount + productCount)) { isFalse = true; } decimal productMoney = ja_goods[i]["money"].ToString().Replace('\"', ' ') == "" ? value : decimal.Parse(ja_goods[i]["money"].ToString().Replace('\"', ' ').Trim()); //采购总价 totalMoney += productMoney; } } if (isFalse) { base.ShowMessage("退货商品数量不能为0或退货数量不能大于出库数量!"); BindGrid(hiddjsonContent); return; } saleReturnInfo.RejectionsaleMoney = totalMoney; saleReturnInfo.PaymentType = int.Parse(ddlPayment.SelectedValue); saleReturnInfo.Remarks = txtNote.Text.Trim(); base.XMSaleReturnService.UpdateXMSaleReturn(saleReturnInfo); if (saleReturnDetails != null && saleReturnDetails.Count() > 0) { if (hiddjsonContent != "") { JArray ja_goods = (JArray)JsonConvert.DeserializeObject(hiddjsonContent); for (int i = 0; i < ja_goods.Count; i++) { string productCode = ja_goods[i]["PlatformMerchantCode"].ToString().Replace('\"', ' ').Trim(); //厂家编码 int productCount = ja_goods[i]["ProductCount"].ToString().Replace('\"', ' ').Trim() == "" ? 0 : int.Parse(ja_goods[i]["ProductCount"].ToString().Replace('\"', ' ').Trim()); //退货数量 decimal productPrice = ja_goods[i]["price"].ToString().Replace('\"', ' ').Trim() == "" ? value : decimal.Parse(ja_goods[i]["price"].ToString().Replace('\"', ' ').Trim()); //退货单价 decimal productMoney = ja_goods[i]["money"].ToString().Replace('\"', ' ').Trim() == "" ? value : decimal.Parse(ja_goods[i]["money"].ToString().Replace('\"', ' ').Trim()); //退货金额 foreach (XMSaleReturnProductDetails info in saleReturnDetails) { var details = base.XMSaleDeliveryProductDetailsService.GetXMSaleDeliveryProductDetailsById(info.DeliveryProductsDetailID.Value); if (details != null && productCode == details.PlatformMerchantCode && productPrice == details.ProductPrice) { info.RejectionProdcutsCount = productCount; info.RejectionProductsPrice = productPrice; info.RejectionsaleMoney = productMoney; info.UpdateDate = DateTime.Now; info.UpdateID = HozestERPContext.Current.User.CustomerID; base.XMSaleReturnProductDetailsService.UpdateXMSaleReturnProductDetails(info); } } } } foreach (XMSaleReturnProductDetails info in saleReturnDetails) { bool isDelete = true; var details2 = base.XMSaleDeliveryProductDetailsService.GetXMSaleDeliveryProductDetailsById(info.DeliveryProductsDetailID.Value); if (hiddjsonContent != "") { JArray ja_goods = (JArray)JsonConvert.DeserializeObject(hiddjsonContent); for (int i = 0; i < ja_goods.Count; i++) { string productCode2 = ja_goods[i]["PlatformMerchantCode"].ToString().Replace('\"', ' ').Trim(); //厂家编码 decimal productPrice2 = ja_goods[i]["price"].ToString().Replace('\"', ' ').Trim() == "" ? value : decimal.Parse(ja_goods[i]["price"].ToString().Replace('\"', ' ').Trim()); //退货单价 if (details2 != null && productCode2 == details2.PlatformMerchantCode && productPrice2 == details2.ProductPrice) { isDelete = false; break; } } } if (isDelete) { info.IsEnable = true; info.UpdateID = HozestERPContext.Current.User.CustomerID; info.UpdateDate = DateTime.Now; base.XMSaleReturnProductDetailsService.UpdateXMSaleReturnProductDetails(info); } } } } base.ShowMessage("操作成功!"); BindGrid(saleReturnInfo.Id); } }