/// <summary> /// 取消出仓单 /// </summary> /// <param name="nId"></param> /// <param name="nOpStaffId"></param> /// <param name="strOpStaffName"></param> /// <param name="strErrText"></param> /// <returns></returns> public bool CancelShipmentBill(long nId, long nOpStaffId, string strOpStaffName, out string strErrText) { try { strErrText = string.Empty; long nDispatchBillId = 0; long nPlanId = 0; string strOutType = string.Empty; using (TransactionScope transScope = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(2, 0, 0))) { //删除出仓单数据 using (DeliverDAO dao = new DeliverDAO()) { //读取出仓单数据 ShipmentBill bill = dao.LoadShipmentBill(nId, nOpStaffId, strOpStaffName, out strErrText); if (bill == null) { return(false); } nDispatchBillId = bill.DispatchBillId; nPlanId = bill.PlanId; strOutType = bill.OutType; //删除出仓单数据 if (!dao.DeleteShipmentBill(nId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } //删除出仓单货物数据 if (!dao.DeleteShipmentBillAllGoods(nId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } } //删除出库单数据 using (StockDAO dao = new StockDAO()) { //读取出库单数据 OutWarehouseBill bill = dao.LoadOutWarehouseBillByShipmentBillId(nId, nOpStaffId, strOpStaffName, out strErrText); if (bill == null) { return(false); } //删除出库单数据 if (!dao.DeleteOutWarehouseBill(bill.Id, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } //删除出库单货物数据 if (!dao.DeleteOutWarehouseBillAllGoods(bill.Id, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } } //如果是划拨出库,则删除入库单数据 if (strOutType == InnoSoft.LS.Resources.Options.AllocateGoods) { using (StockDAO dao = new StockDAO()) { //读取入库单编码 EnterWarehouseBill bill = dao.LoadEnterWarehouseBillByPlanId(nPlanId, nOpStaffId, strOpStaffName, out strErrText); if (bill == null) { return(false); } //删除入库单货物数据 if (!dao.DeleteEnterWarehouseBillAllGoods(bill.Id, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } //删除入库单数据 if (!dao.DeleteEnterWarehouseBill(bill.Id, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } } } //如果是发货出库,则修改调度记录数据 if (strOutType == InnoSoft.LS.Resources.Options.DeliverGoods) { using (DispatchDAO dao = new DispatchDAO()) { //读取调度单计划数据 DispatchBillDeliverPlan plan = dao.LoadDispatchBillDeliverPlan(nDispatchBillId, nPlanId, nOpStaffId, strOpStaffName, out strErrText); if (plan == null) { return(false); } //读取调度单数据 DispatchBill bill = dao.LoadDispatchBill(nDispatchBillId, nOpStaffId, strOpStaffName, out strErrText); if (bill == null) { return(false); } //修改或删除调度单数据 bill.TotalPackages = bill.TotalPackages - plan.Packages; bill.TotalTunnages = bill.TotalTunnages - plan.Tunnages; bill.TotalPiles = bill.TotalPiles - plan.Piles; bill.TotalTenThousands = bill.TotalTenThousands - plan.TenThousands; bill.TotalTransportCharges = bill.TotalTransportCharges - plan.TransportCharges; if (bill.TotalPackages == 0 && bill.TotalTunnages == 0 && bill.TotalPiles == 0 && bill.TotalTenThousands == 0) { if (!dao.DeleteDispatchBill(nDispatchBillId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } } else { if (!dao.UpdateDispatchBill(bill, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } } //删除调度单计划数据 if (!dao.DeleteDispatchBillDeliverPlan(nDispatchBillId, nPlanId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } //删除调度计划货物数据 if (!dao.DeleteDispatchBillDeliverPlanAllGoods(nDispatchBillId, nPlanId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } //校验调度单数据 if (bill.TotalPackages != 0 || bill.TotalTunnages != 0 || bill.TotalPiles != 0 || bill.TotalTenThousands != 0) { if (!dao.CheckDispatchBill(nDispatchBillId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } } } } //如果是划拨出库,则直接取消发货计划 if (strOutType == InnoSoft.LS.Resources.Options.AllocateGoods) { using (PlanDAO dao = new PlanDAO()) { if (!dao.CancelDeliverPlan(nPlanId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } } } transScope.Complete(); } return(true); } catch (Exception e) { strErrText = e.Message; return(false); } }
/// <summary> /// 取消送货单数据 /// </summary> /// <param name="nId"></param> /// <param name="nOpStaffId"></param> /// <param name="strOpStaffName"></param> /// <param name="strErrText"></param> /// <returns></returns> public bool CancelDeliverBill(long nId, long nOpStaffId, string strOpStaffName, out string strErrText) { try { strErrText = string.Empty; long nShipmentBillId = 0; long nDispatchBillId = 0; long nPlanId = 0; using (TransactionScope transScope = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(2, 0, 0))) { using (DeliverDAO dao = new DeliverDAO()) { //读取送货单数据 DeliverBill bill = dao.LoadDeliverBill(nId, nOpStaffId, strOpStaffName, out strErrText); if (bill == null) { return(false); } nShipmentBillId = bill.ShipmentBillId; nDispatchBillId = bill.DispatchBillId; nPlanId = bill.PlanId; //删除送货单数据 if (!dao.DeleteDeliverBill(nId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } //删除送货单货物数据 if (!dao.DeleteDeliverBillAllGoods(nId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } //删除出仓单数据 if (!dao.DeleteShipmentBill(nShipmentBillId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } //删除出仓单货物数据 if (!dao.DeleteShipmentBillAllGoods(nShipmentBillId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } } using (StockDAO dao = new StockDAO()) { //读取出库单数据 OutWarehouseBill bill = dao.LoadOutWarehouseBillByShipmentBillId(nShipmentBillId, nOpStaffId, strOpStaffName, out strErrText); if (bill == null) { return(false); } //删除出库单数据 if (!dao.DeleteOutWarehouseBill(bill.Id, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } //删除出库单货物数据 if (!dao.DeleteOutWarehouseBillAllGoods(bill.Id, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } } using (DispatchDAO dao = new DispatchDAO()) { //读取调度单计划数据 DispatchBillDeliverPlan plan = dao.LoadDispatchBillDeliverPlan(nDispatchBillId, nPlanId, nOpStaffId, strOpStaffName, out strErrText); if (plan == null) { return(false); } //读取调度单数据 DispatchBill bill = dao.LoadDispatchBill(nDispatchBillId, nOpStaffId, strOpStaffName, out strErrText); if (bill == null) { return(false); } //修改或删除调度单数据 bill.TotalPackages = bill.TotalPackages - plan.Packages; bill.TotalTunnages = bill.TotalTunnages - plan.Tunnages; bill.TotalPiles = bill.TotalPiles - plan.Piles; bill.TotalTenThousands = bill.TotalTenThousands - plan.TenThousands; bill.TotalTransportCharges = bill.TotalTransportCharges - plan.TransportCharges; if (bill.TotalPackages == 0 && bill.TotalTunnages == 0 && bill.TotalPiles == 0 && bill.TotalTenThousands == 0) { if (!dao.DeleteDispatchBill(nDispatchBillId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } } else { if (!dao.UpdateDispatchBill(bill, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } } //删除调度单计划数据 if (!dao.DeleteDispatchBillDeliverPlan(nDispatchBillId, nPlanId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } //删除调度计划货物数据 if (!dao.DeleteDispatchBillDeliverPlanAllGoods(nDispatchBillId, nPlanId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } //校验调度单数据 if (bill.TotalPackages != 0 || bill.TotalTunnages != 0 || bill.TotalPiles != 0 || bill.TotalTenThousands != 0) { if (!dao.CheckDispatchBill(nDispatchBillId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } } } transScope.Complete(); } return(true); } catch (Exception e) { strErrText = e.Message; return(false); } }
/// <summary> /// 删除指定调度单编码和计划编码的已调度计划数据 /// </summary> /// <param name="nDispatchBillId"></param> /// <param name="nPlanId"></param> /// <param name="nOpStaffId"></param> /// <param name="strOpStaffName"></param> /// <param name="strErrText"></param> /// <returns></returns> public bool DeleteDispatchedPlan(long nDispatchBillId, long nPlanId, long nOpStaffId, string strOpStaffName, out string strErrText) { try { using (TransactionScope transScope = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(2, 0, 0))) { using (DispatchDAO dao = new DispatchDAO()) { #region 除计划和货物数据 int totalPackages = 0; decimal totalTunnages = 0; decimal totalPiles = 0; decimal totalTenThousands = 0; decimal totalTransportCharges = 0; //读取当前调度计划数据 DispatchBillDeliverPlan deliverPlan = dao.LoadDispatchBillDeliverPlan(nDispatchBillId, nPlanId, nOpStaffId, strOpStaffName, out strErrText); if (deliverPlan == null) { return(false); } totalPackages = deliverPlan.Packages; totalTunnages = deliverPlan.Tunnages; totalPiles = deliverPlan.Piles; totalTenThousands = deliverPlan.TenThousands; totalTransportCharges = deliverPlan.TransportCharges; //删除当前调度计划数据 if (!dao.DeleteDispatchBillDeliverPlan(nDispatchBillId, nPlanId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } //删除当前调度计划货物数据 if (!dao.DeleteDispatchBillDeliverPlanAllGoods(nDispatchBillId, nPlanId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } #endregion #region 修改调度单数据 //读取调度单原数据 DispatchBill bill = dao.LoadDispatchBill(nDispatchBillId, nOpStaffId, strOpStaffName, out strErrText); if (bill == null) { return(false); } bill.TotalPackages -= totalPackages; bill.TotalTunnages -= totalTunnages; bill.TotalPiles -= totalPiles; bill.TotalTenThousands -= totalTenThousands; bill.TotalTransportCharges -= totalTransportCharges; //如果调度单为空(即计划已经全部删除了),则同时删除调度单数据 if (bill.TotalPackages == 0 && bill.TotalPiles == 0) { if (!dao.DeleteDispatchBill(nDispatchBillId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } } else { if (!dao.UpdateDispatchBill(bill, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } if (!dao.CheckDispatchBill(nDispatchBillId, nOpStaffId, strOpStaffName, out strErrText)) { return(false); } } #endregion } transScope.Complete(); } return(true); } catch (Exception e) { strErrText = e.Message; return(false); } }