diff --git a/MyCode.Project.Services/IServices/IInvoiceOrderService.cs b/MyCode.Project.Services/IServices/IInvoiceOrderService.cs index 8dafd8f..f6c469b 100644 --- a/MyCode.Project.Services/IServices/IInvoiceOrderService.cs +++ b/MyCode.Project.Services/IServices/IInvoiceOrderService.cs @@ -51,5 +51,15 @@ namespace MyCode.Project.Services /// void BatchSetFaPiao(FaPiaoAct act); + + /// + /// 删除某个发货单明细 + /// + /// + /// + /// + /// + + void DeleteOrderDetail(IdAct act, LoginInfo loginInfo); } } diff --git a/MyCode.Project.Services/Implementation/InvoiceOrder/InvoiceOrderService.cs b/MyCode.Project.Services/Implementation/InvoiceOrder/InvoiceOrderService.cs index e9ef9a8..358379f 100644 --- a/MyCode.Project.Services/Implementation/InvoiceOrder/InvoiceOrderService.cs +++ b/MyCode.Project.Services/Implementation/InvoiceOrder/InvoiceOrderService.cs @@ -445,6 +445,107 @@ namespace MyCode.Project.Services.Implementation } #endregion + + #region DeleteOrderDetail(删除某个发货单明细) + /// + /// 删除某个发货单明细 + /// + /// + /// + /// + /// + [TransactionCallHandler] + public void DeleteOrderDetail(IdAct act, LoginInfo loginInfo) + { + var orderItems = _invoiceOrderItemRepository.Queryable().Where(t => t.Id == act.Id).ToList(); + Guid pid = orderItems.Select(t => t.InvoiceOrderId.Value).FirstOrDefault(); + var orderHead = _invoiceOrderRepository.Queryable().Where(t => t.SupplierId == loginInfo.SupplierId && t.Id == pid).First(); + var ids = orderItems.Select(t => t.Id).ToList(); + + if (orderHead == null) + { + throw new BaseException("订单数据不正确"); + } + orderItems = _invoiceOrderItemRepository.Queryable().Where(t => t.InvoiceOrderId == orderHead.Id).ToList(); + var OrderItemIds = orderItems.Select(t => t.PurchaseOrderItemId).ToList(); + BillDelete billDelete = new BillDelete(); + if (orderItems.Count == 1) + { + billDelete.Numbers = orderHead.FBillNo; + try + { + var result = _kingDeeService.Delete("PUR_ReceiveBill", billDelete); + //LogHelper.Info(result); + + var purchaseItem = _purchaseOrderItemRepository.Queryable().Where(t => OrderItemIds.Contains(t.Id)).ToList(); + purchaseItem.ForEach(t => + { + var temp = orderItems.FirstOrDefault(h => h.PurchaseOrderItemId == t.Id); + if (temp != null) + { + t.FRemainReceiveQty = t.FRemainReceiveQty + temp.Qty.SafeValue(); + t.FReceiveQty = t.FReceiveQty - temp.Qty.SafeValue(); + } + }); + _purchaseOrderItemRepository.Update(purchaseItem); + _invoiceOrderItemRepository.Delete(t => t.InvoiceOrderId == orderHead.Id); + _invoiceOrderRepository.Delete(t => t.Id == orderHead.Id); + + _tiaoMaRepository.Delete(t => ids.Contains(t.InvoceOrderItemId.Value)); + } + catch (Exception ex) + { + throw new BaseException($"删除失败,原因是{ex.Message}"); + } + } + else + { + var one = orderItems.FirstOrDefault(t=>t.Id==act.Id); + if (one != null) + { + if (one.EntityId != null) + { + SetMSSSupplierLot(orderHead.Sheet); + } + one = _invoiceOrderItemRepository.Queryable().Where(t => t.Id == act.Id).First(); + if (one.EntityId == null) + { + _invoiceOrderItemRepository.Delete(t => t.Id == act.Id); + } + else + { + billDelete.Ids = one.EntityId.ToString(); + try + { + var result = _kingDeeService.Delete("PUR_ReceiveBill", billDelete); + //LogHelper.Info(result); + + var purchaseItem = _purchaseOrderItemRepository.Queryable().Where(t => one.PurchaseOrderItemId==t.Id).ToList(); + purchaseItem.ForEach(t => + { + var temp = orderItems.FirstOrDefault(h => h.PurchaseOrderItemId == t.Id); + if (temp != null) + { + t.FRemainReceiveQty = t.FRemainReceiveQty + temp.Qty.SafeValue(); + t.FReceiveQty = t.FReceiveQty - temp.Qty.SafeValue(); + } + }); + _purchaseOrderItemRepository.Update(purchaseItem); + _invoiceOrderItemRepository.Delete(t => t.Id == one.Id); + + + _tiaoMaRepository.Delete(t => t.InvoceOrderItemId== one.Id); + } + catch (Exception ex) + { + throw new BaseException($"删除失败,原因是{ex.Message}"); + } + } + } + } + } + #endregion + } } diff --git a/MyCode.Project.WebApi/Areas/Admin/Controllers/InvoiceOrderController.cs b/MyCode.Project.WebApi/Areas/Admin/Controllers/InvoiceOrderController.cs index e1f8e20..0d54874 100644 --- a/MyCode.Project.WebApi/Areas/Admin/Controllers/InvoiceOrderController.cs +++ b/MyCode.Project.WebApi/Areas/Admin/Controllers/InvoiceOrderController.cs @@ -85,5 +85,16 @@ namespace MyCode.Project.WebApi.Areas.Admin.Controllers } #endregion + #region DeleteOrderDetail(删除某个发货单明细) + /// + /// 删除某个发货单明细 + /// + /// + [HttpPost] + public void DeleteOrderDetail(IdAct act) + { + _invoiceOrderService.DeleteOrderDetail(act, this.CurrentLogin); + } + #endregion } }