コード例 #1
0
ファイル: StockRule.cs プロジェクト: zjchenxk/SYLS
        /// <summary>
        /// 新增入库单数据
        /// </summary>
        /// <param name="bill"></param>
        /// <param name="listGoods"></param>
        /// <param name="nOpStaffId"></param>
        /// <param name="strOpStaffName"></param>
        /// <param name="strErrText"></param>
        /// <returns></returns>
        public long InsertEnterWarehouseBill(EnterWarehouseBill bill, List<EnterWarehouseBillGoods> listGoods, long nOpStaffId, string strOpStaffName, out string strErrText)
        {
            long nEnterWarehouseBillId = 0;

            try
            {
                using (TransactionScope transScope = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(2, 0, 0)))
                {
                    using (StockDAO dao = new StockDAO())
                    {
                        //新增入库单数据
                        nEnterWarehouseBillId = dao.InsertEnterWarehouseBill(bill, nOpStaffId, strOpStaffName, out strErrText);
                        if (nEnterWarehouseBillId <= 0)
                            return 0;

                        //新增入库货物数据
                        foreach (EnterWarehouseBillGoods goods in listGoods)
                        {
                            goods.EnterWarehouseBillId = nEnterWarehouseBillId;

                            if (!dao.InsertEnterWarehouseBillGoods(goods, nOpStaffId, strOpStaffName, out strErrText))
                            {
                                return 0;
                            }
                        }
                    }

                    using (CustomerDAO dao = new CustomerDAO())
                    {
                        //修改下力支费价格数据
                        List<CustomerForceFeePrice> listForceFeePrice = dao.LoadCustomerForceFeePricesByCustomerId(bill.CustomerId, nOpStaffId, strOpStaffName, out strErrText);
                        if (listForceFeePrice.Count == 0)
                        {
                            //新增力支费价格数据
                            CustomerForceFeePrice data = new CustomerForceFeePrice();
                            data.CustomerId = bill.CustomerId;
                            data.StartTime = bill.CreateTime;
                            data.EndTime = DateTime.Parse("9999-12-31");
                            data.LoadingForceFeePrice = 0;
                            data.UnloadingForceFeePrice = bill.UnloadingForceFeePrice;

                            if (!dao.InsertCustomerForceFeePrice(data, nOpStaffId, strOpStaffName, out strErrText))
                            {
                                return 0;
                            }
                        }
                        else
                        {
                            int i = 0;
                            while (i < listForceFeePrice.Count)
                            {
                                if (bill.CreateTime.Date >= listForceFeePrice[i].StartTime.Date && bill.CreateTime.Date <= listForceFeePrice[i].EndTime.Date)
                                {
                                    break;
                                }
                                i++;
                            }
                            if (i < listForceFeePrice.Count)
                            {
                                //修改力支费价格数据
                                listForceFeePrice[i].UnloadingForceFeePrice = bill.UnloadingForceFeePrice;

                                if (!dao.UpdateCustomerForceFeePrice(listForceFeePrice[i], nOpStaffId, strOpStaffName, out strErrText))
                                {
                                    return 0;
                                }
                            }
                            else
                            {
                                //新增力支费价格数据
                                CustomerForceFeePrice data = new CustomerForceFeePrice();
                                data.CustomerId = bill.CustomerId;
                                data.StartTime = bill.CreateTime;
                                data.LoadingForceFeePrice = 0;
                                data.UnloadingForceFeePrice = bill.UnloadingForceFeePrice;

                                //计算截止时间
                                i = 0;
                                while (i < listForceFeePrice.Count)
                                {
                                    if (bill.CreateTime.Date < listForceFeePrice[i].StartTime.Date)
                                    {
                                        break;
                                    }
                                    i++;
                                }
                                if (i < listForceFeePrice.Count)
                                {
                                    data.EndTime = listForceFeePrice[i].StartTime.Date.AddDays(-1);
                                }
                                else
                                {
                                    data.EndTime = DateTime.Parse("9999-12-31");
                                }

                                if (!dao.InsertCustomerForceFeePrice(data, nOpStaffId, strOpStaffName, out strErrText))
                                {
                                    return 0;
                                }
                            }
                        }

                        //修改仓储费价格数据
                        List<CustomerStorageFeePrice> listStorageFeePrice = dao.LoadCustomerStorageFeePricesByCustomerId(bill.CustomerId, nOpStaffId, strOpStaffName, out strErrText);
                        if (listStorageFeePrice.Count == 0)
                        {
                            //新增仓储费价格数据
                            CustomerStorageFeePrice data = new CustomerStorageFeePrice();
                            data.CustomerId = bill.CustomerId;
                            data.StartTime = bill.CreateTime;
                            data.EndTime = DateTime.Parse("9999-12-31");
                            data.StorageFeePrice = bill.StorageFeePrice;

                            if (!dao.InsertCustomerStorageFeePrice(data, nOpStaffId, strOpStaffName, out strErrText))
                            {
                                return 0;
                            }
                        }
                        else
                        {
                            int i = 0;
                            while (i < listStorageFeePrice.Count)
                            {
                                if (bill.CreateTime.Date >= listStorageFeePrice[i].StartTime.Date && bill.CreateTime.Date <= listStorageFeePrice[i].EndTime.Date)
                                {
                                    break;
                                }
                                i++;
                            }
                            if (i < listStorageFeePrice.Count)
                            {
                                //修改仓储费价格数据
                                listStorageFeePrice[i].StorageFeePrice = bill.StorageFeePrice;

                                if (!dao.UpdateCustomerStorageFeePrice(listStorageFeePrice[i], nOpStaffId, strOpStaffName, out strErrText))
                                {
                                    return 0;
                                }
                            }
                            else
                            {
                                //新增仓储费价格数据
                                CustomerStorageFeePrice data = new CustomerStorageFeePrice();
                                data.CustomerId = bill.CustomerId;
                                data.StartTime = bill.CreateTime;
                                data.StorageFeePrice = bill.StorageFeePrice;

                                //计算截止时间
                                i = 0;
                                while (i < listStorageFeePrice.Count)
                                {
                                    if (bill.CreateTime.Date < listStorageFeePrice[i].StartTime.Date)
                                    {
                                        break;
                                    }
                                    i++;
                                }
                                if (i < listStorageFeePrice.Count)
                                {
                                    data.EndTime = listStorageFeePrice[i].StartTime.Date.AddDays(-1);
                                }
                                else
                                {
                                    data.EndTime = DateTime.Parse("9999-12-31");
                                }

                                if (!dao.InsertCustomerStorageFeePrice(data, nOpStaffId, strOpStaffName, out strErrText))
                                {
                                    return 0;
                                }
                            }
                        }
                    }
                    transScope.Complete();
                }
                return nEnterWarehouseBillId;
            }
            catch (Exception e)
            {
                strErrText = e.Message;
                return 0;
            }
        }