/// <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; } }