From 362fb69c690a2b36e251996f8b22d87e97d385ba Mon Sep 17 00:00:00 2001
From: cnf <3200815559@qq.com>
Date: 星期三, 12 二月 2025 16:06:33 +0800
Subject: [PATCH] 新增销售订单保存接口,销售退货通知单保存接口,销售发货通知单保存接口
---
MES.Service/service/BasicData/SalesReturnNoticeManager.cs | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 179 insertions(+), 0 deletions(-)
diff --git a/MES.Service/service/BasicData/SalesReturnNoticeManager.cs b/MES.Service/service/BasicData/SalesReturnNoticeManager.cs
index 206f0ea..c8395f6 100644
--- a/MES.Service/service/BasicData/SalesReturnNoticeManager.cs
+++ b/MES.Service/service/BasicData/SalesReturnNoticeManager.cs
@@ -1,4 +1,5 @@
锘縰sing MES.Service.DB;
+using MES.Service.Dto.webApi;
using MES.Service.Modes;
using SqlSugar;
@@ -75,4 +76,182 @@
}
#endregion
+
+ private readonly SalesReturnNoticeDetailManager salesReturnNoticeDetailManager = new();
+
+ // Save 鏂规硶鐢ㄤ簬淇濆瓨鍗曚釜 閿�鍞鍗�(SalesOrder) 璁板綍锛屾牴鎹被鍨嬫墽琛屼笉鍚岀殑鎿嶄綔
+ public bool Save(SaleReturnNotice saleReturnNotice)
+ {
+ var salesReturnNoticeErpSalesReturnNotice = saleReturnNotice.erpSalesReturnNotice;
+ var mesSalesReturnNotice = GetSalesReturnNotice(salesReturnNoticeErpSalesReturnNotice);
+ var mesSalesReturnNoticeDetails = GetErpSalesOrderDetail(saleReturnNotice.erpSalesReturnNoticeDetail, salesReturnNoticeErpSalesReturnNotice.type);
+
+ return UseTransaction(db =>
+ {
+ switch (salesReturnNoticeErpSalesReturnNotice.type)
+ {
+ case "3":
+ return UpdateData(db, mesSalesReturnNotice, mesSalesReturnNoticeDetails) ? 1 : 0;
+ case "2":
+ case "4":
+ case "5":
+ case "6":
+ return SaveOrUpdateData(db, mesSalesReturnNotice, mesSalesReturnNoticeDetails)
+ ? 1
+ : 0;
+ default:
+ throw new NotImplementedException(
+ $"type娌℃湁{salesReturnNoticeErpSalesReturnNotice.type}杩欎釜绫诲瀷");
+ }
+ }) > 0;
+
+ }
+
+
+
+ // 鏇存柊鏁版嵁鐨勬柟娉�(鍗曠函鐨勫垹闄�)
+ private bool UpdateData(SqlSugarScope db, SalesReturnNotice salesReturnNotice,
+ List<SalesReturnNoticeDetail> salesReturnNoticeDetails)
+ {
+ var decimals = salesReturnNoticeDetails.Select(s => s.Id).ToArray();
+ var update = base.DeleteById(salesReturnNotice.Id);
+ var insertOrUpdate = db
+ .Deleteable<SalesOrderDetail>().In(decimals)
+ .ExecuteCommand() > 0;
+
+ if (update && insertOrUpdate) return true;
+ throw new NotImplementedException("鍒犻櫎澶辫触");
+ }
+
+ // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶
+ private bool SaveOrUpdateData(SqlSugarScope db, SalesReturnNotice salesReturnNotice,
+ List<SalesReturnNoticeDetail> salesReturnNoticeDetails)
+ {
+ if (salesReturnNotice.Id != null) base.DeleteById(salesReturnNotice.Id);
+
+ if (salesReturnNoticeDetails.Count > 0)
+ db.Deleteable<SalesOrderDetail>()
+ .Where(s => s.ErpId == salesReturnNotice.Id).ExecuteCommand();
+
+ var orUpdate = base.Insert(salesReturnNotice);
+ var baOrUpdate = salesReturnNoticeDetailManager.InsertRange(salesReturnNoticeDetails);
+ if (orUpdate && baOrUpdate) return true;
+ throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�");
+ }
+
+ // 鎵归噺淇濆瓨璁板綍鐨勬柟娉�
+ public bool SaveList(List<SaleReturnNotice> saleReturnNotices)
+ {
+ var result = saleReturnNotices.Select(Save).ToList();
+ return result.All(b => b);
+ }
+
+
+ // 灏� ErpSalesReturnNotice 瀵硅薄杞崲涓� SalesReturnNotice 瀵硅薄鐨勬柟娉�
+ public SalesReturnNotice GetSalesReturnNotice(ErpSalesReturnNotice erpSalesReturnNotice)
+ {
+
+ var eid = Convert.ToDecimal(erpSalesReturnNotice.Id);
+ var MesSalesReturnNotice = new SalesReturnNotice();
+
+ var single = base.GetSingle(it => it.Id == eid);
+ if (single != null) MesSalesReturnNotice.Id = single.Id;
+
+ MesSalesReturnNotice.ErpId = erpSalesReturnNotice.erpID;
+ MesSalesReturnNotice.BillType = erpSalesReturnNotice.fBillTypeID;
+ MesSalesReturnNotice.BillNo = erpSalesReturnNotice.fBillNo;
+
+ if (erpSalesReturnNotice.fDate != null)
+ MesSalesReturnNotice.FDate = DateTime.ParseExact(erpSalesReturnNotice.fDate, "yyyy-MM-dd HH:mm:ss", null);
+
+ MesSalesReturnNotice.Currency = erpSalesReturnNotice.fSettleCurrld;
+ MesSalesReturnNotice.SalesDept = erpSalesReturnNotice.fSaleDeptId;
+ MesSalesReturnNotice.ReturnCustomer = erpSalesReturnNotice.fRetcustId;
+ MesSalesReturnNotice.ReturnReason = erpSalesReturnNotice.fRetcustReason;
+ MesSalesReturnNotice.DeliveryLocation = erpSalesReturnNotice.fHeadLocId;
+ MesSalesReturnNotice.InventoryDept = erpSalesReturnNotice.fRetDeptId;
+ MesSalesReturnNotice.InventoryGroup = erpSalesReturnNotice.fStockerGroupId;
+ MesSalesReturnNotice.WarehouseManager = erpSalesReturnNotice.fStockerId;
+ MesSalesReturnNotice.SalesGroup = erpSalesReturnNotice.fSaleGroupId;
+ MesSalesReturnNotice.SalesPerson = erpSalesReturnNotice.fSalesManId;
+ MesSalesReturnNotice.Receiver = erpSalesReturnNotice.fReceiveCusId;
+ MesSalesReturnNotice.ReceiverContact = erpSalesReturnNotice.fReceiveCusContact;
+ MesSalesReturnNotice.ReceiverAddress = erpSalesReturnNotice.fReceiveAddress;
+ MesSalesReturnNotice.ReceiverName = erpSalesReturnNotice.fLinkMan;
+ MesSalesReturnNotice.SettleParty = erpSalesReturnNotice.fSettleCusId;
+ MesSalesReturnNotice.CreatedBy = erpSalesReturnNotice.fCreatorId;
+
+ if (erpSalesReturnNotice.fCreateDate != null)
+ MesSalesReturnNotice.CreatedDate = DateTime.ParseExact(erpSalesReturnNotice.fCreateDate, "yyyy-MM-dd HH:mm:ss", null);
+
+ MesSalesReturnNotice.ModifiedBy = erpSalesReturnNotice.fModifierId;
+
+ if (erpSalesReturnNotice.fModifyDate != null)
+ MesSalesReturnNotice.ModifiedDate = DateTime.ParseExact(erpSalesReturnNotice.fModifyDate, "yyyy-MM-dd HH:mm:ss", null);
+
+ MesSalesReturnNotice.ClosedBy = erpSalesReturnNotice.fCloserId;
+ MesSalesReturnNotice.CloseReason = erpSalesReturnNotice.fCloseReason;
+
+ if (erpSalesReturnNotice.fCloseDate != null)
+ MesSalesReturnNotice.CloseDate = DateTime.ParseExact(erpSalesReturnNotice.fCloseDate, "yyyy-MM-dd HH:mm:ss", null);
+
+ MesSalesReturnNotice.ApprovedBy = erpSalesReturnNotice.fApproverId;
+
+ if (erpSalesReturnNotice.fApproveDate != null)
+ MesSalesReturnNotice.ApprovedDate = DateTime.ParseExact(erpSalesReturnNotice.fApproveDate, "yyyy-MM-dd HH:mm:ss", null);
+
+ MesSalesReturnNotice.CancelStatus = erpSalesReturnNotice.fCancelStatus;
+ MesSalesReturnNotice.CancelledBy = erpSalesReturnNotice.fCancellerId;
+
+ if (erpSalesReturnNotice.fCancelDate != null)
+ MesSalesReturnNotice.CancelDate = DateTime.ParseExact(erpSalesReturnNotice.fCancelDate, "yyyy-MM-dd HH:mm:ss", null);
+
+ MesSalesReturnNotice.CloseStatus = erpSalesReturnNotice.fBillCloseStatus;
+ MesSalesReturnNotice.BillStatus = erpSalesReturnNotice.fDocumentStatus;
+
+ return MesSalesReturnNotice;
+ }
+
+ // 灏� ErpSalesReturnNoticeDetail 瀵硅薄杞崲涓� SalesReturnNoticeDetail 瀵硅薄鐨勬柟娉�
+ public List<SalesReturnNoticeDetail> GetErpSalesOrderDetail(
+ List<ErpSalesReturnNoticeDetail> erpSalesReturnNoticeDetails, string type)
+ {
+ return erpSalesReturnNoticeDetails.Select(s =>
+ {
+ var entity = new SalesReturnNoticeDetail
+ {
+ Id = Convert.ToDecimal(s.Id),
+ ErpLineId = s.erpID,
+ ErpHeadId =s.ehid,
+ MaterialId = s.fMaterialId,
+ MaterialName = s.fMaterialName,
+ MaterialSpecification = s.fMaterialModel,
+ SalesUnitId = s.fUnitID,
+ SalesQuantity = Convert.ToDecimal(s.fQty),
+ IsFree = s.fIsFree,
+ ReturnDate = s.fDeliverydate != null ? DateTime.ParseExact(s.fDeliverydate, "yyyy-MM-dd HH:mm:ss", null) : null,
+ WareHouse = s.fStockId,
+ PlanTrackingNumber = s.fMtoNo,
+ LotNumber = s.fLot,
+ Note = s.fEntryDescription,
+ ReturnType = s.fRmType,
+ InventoryUnit = s.fStockUnitID,
+ InventoryQuantity = Convert.ToDecimal(s.fStockQty),
+ MaterialCategory = s.fMaterialType,
+ OwnerTypeId = s.fOwnerTypeID,
+ OwnerId = s.fOwnerId,
+ SourceBillType = s.fSrcType,
+ SourceBillNo = s.fSrcBillNo,
+ OrderBillNo = s.fOrderNo,
+
+ };
+
+ var single = salesReturnNoticeDetailManager.GetSingle(it =>
+ it.Id == entity.Id);
+ if (single != null) entity.Id = single.Id;
+
+ return entity;
+ }).ToList();
+ }
+
}
\ No newline at end of file
--
Gitblit v1.9.3