Beispiel #1
0
        /// <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);
            }
        }
Beispiel #2
0
        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);
            }
        }