diff --git a/MyCode.Project.Domain/Model/InvoiceOrder.cs b/MyCode.Project.Domain/Model/InvoiceOrder.cs index 20492af..055d934 100644 --- a/MyCode.Project.Domain/Model/InvoiceOrder.cs +++ b/MyCode.Project.Domain/Model/InvoiceOrder.cs @@ -134,5 +134,12 @@ namespace MyCode.Project.Domain.Model /// public string F_URXD_Date {get;set;} + /// + /// Desc:采购订单的单据类型 + /// Default: + /// Nullable:True + /// + public string FBILLTYPEID {get;set;} + } } diff --git a/MyCode.Project.Domain/Model/PurchaseOrder.cs b/MyCode.Project.Domain/Model/PurchaseOrder.cs index 16281c1..924a5cb 100644 --- a/MyCode.Project.Domain/Model/PurchaseOrder.cs +++ b/MyCode.Project.Domain/Model/PurchaseOrder.cs @@ -170,5 +170,12 @@ namespace MyCode.Project.Domain.Model /// public string FPurchaseOrgName {get;set;} + /// + /// Desc:单据类型 + /// Default: + /// Nullable:True + /// + public string FBILLTYPEID {get;set;} + } } diff --git a/MyCode.Project.ScheduleTask/App.config b/MyCode.Project.ScheduleTask/App.config index ef3a9d0..e2d70bf 100644 --- a/MyCode.Project.ScheduleTask/App.config +++ b/MyCode.Project.ScheduleTask/App.config @@ -17,7 +17,7 @@ - + @@ -30,7 +30,7 @@ - + @@ -38,15 +38,15 @@ - + - + - + @@ -56,11 +56,12 @@ - + - + + diff --git a/MyCode.Project.Services/Implementation/InvoiceOrder/InvoiceOrderService.cs b/MyCode.Project.Services/Implementation/InvoiceOrder/InvoiceOrderService.cs index d06c45a..ccf1ba5 100644 --- a/MyCode.Project.Services/Implementation/InvoiceOrder/InvoiceOrderService.cs +++ b/MyCode.Project.Services/Implementation/InvoiceOrder/InvoiceOrderService.cs @@ -200,7 +200,7 @@ namespace MyCode.Project.Services.Implementation var oldItem = oldItems.FirstOrDefault(); if (oldItems.Count > 1) { - oldItem= oldItems.Where(t=>t.MSSSupplierLot=="0" || t.MSSSupplierLot == null).FirstOrDefault(h=>h.FSupplierLot== FSupplierLot); + oldItem= oldItems.Where(t=>t.MSSSupplierLot=="0" || t.MSSSupplierLot == null).FirstOrDefault(); } if (oldItem == null) { diff --git a/MyCode.Project.Services/Implementation/PurchaseOrder/PurchaseOrderService.cs b/MyCode.Project.Services/Implementation/PurchaseOrder/PurchaseOrderService.cs index d725901..f1314bc 100644 --- a/MyCode.Project.Services/Implementation/PurchaseOrder/PurchaseOrderService.cs +++ b/MyCode.Project.Services/Implementation/PurchaseOrder/PurchaseOrderService.cs @@ -151,7 +151,7 @@ namespace MyCode.Project.Services.Implementation queryParam = new BillQuery() { FormId = "PUR_PurchaseOrder", - FieldKeys = $@"FID,FBillNo,FDate,FBILLTYPEID,FSUPPLIERID,FSupplierId.FNAME,FSupplierId,FSupplierId.FShortName,FModifyDate,FPurchaserId,FMaterialId,FPOOrderEntry_FEntryId + FieldKeys = $@"FID,FBillNo,FDate,FBILLTYPEID,FBILLTYPEID.FName,FSUPPLIERID,FSupplierId.FNAME,FSupplierId,FSupplierId.FShortName,FModifyDate,FPurchaserId,FMaterialId,FPOOrderEntry_FEntryId ,FSupplierLot,FLot,FBaseDeliveryMaxQty,FBaseJoinQty ,FEntryNote,FBillAllAmount_LC,FMaterialId.FNAME,FQty,FEntryNote,FUnitId.fname,FDeliveryDate,FMaterialId.FSpecification,FPurchaserId.fname,FSupplierId.FNumber,FMaterialId.FNumber ,FSettleCurrId.fname,FBillTaxAmount,FExchangeTypeId.fname,FExchangeRate,FEntryTaxRate,FPrice,FAllAmount,FEntryAmount,FEntryTaxAmount,FReceiveQty,FMRPCloseStatus @@ -563,8 +563,9 @@ namespace MyCode.Project.Services.Implementation purchaseOrder.FModifyDate = item["FModifyDate"]; purchaseOrder.FPurchaseOrgId= item["FPurchaseOrgId"]; purchaseOrder.FPurchaseOrgName = item["FPurchaseOrgId.FName"]; + purchaseOrder.FBILLTYPEID = item["FBILLTYPEID"]; _purchaseOrderRepository.Add(purchaseOrder); - //if (purchaseOrder.FBillNo == "C20250401048") + //if (purchaseOrder.FBillNo == "C20250401048")FBILLTYPEID //{ // int kk = 8; //} @@ -586,6 +587,7 @@ namespace MyCode.Project.Services.Implementation oldOrder.FModifyDate = item["FModifyDate"]; oldOrder.FPurchaseOrgId = item["FPurchaseOrgId"]; oldOrder.FPurchaseOrgName = item["FPurchaseOrgId.FName"]; + oldOrder.FBILLTYPEID = item["FBILLTYPEID.FName"]; _purchaseOrderRepository.Update(oldOrder); //if (oldOrder.FBillNo == "C20250401048") //{ @@ -631,7 +633,7 @@ namespace MyCode.Project.Services.Implementation purchaseOrderItem.MSSSupplierLot = item["FLot"]; purchaseOrderItem.SpecificationModel = item["FMaterialId.FSpecification"]; purchaseOrderItem.F_TSPR_Text_qtr1 = item["F_TSPR_Text_qtr1"]; - purchaseOrderItem.FDEMANDBILLNO = item["FDEMANDBILLNO"]; + purchaseOrderItem.FDEMANDBILLNO = item["FBILLTYPEID.FName"]; _purchaseOrderItemRepository.Add(purchaseOrderItem); } else @@ -736,9 +738,194 @@ namespace MyCode.Project.Services.Implementation } - - + #region BatchAddInvoiceOrder(选中明细生成发货通知单) + /// + /// 选中明细生成发货通知单 + /// + /// + /// + /// + [TransactionCallHandler] + public string BatchAddInvoiceOrderNew(AddOrder act, LoginInfo loginInfo) + { + if (!act.FaHuoDate.HasValue) + act.FaHuoDate = DateTime.Now; + List updateList = act.UpDateList; + string supplierId = loginInfo.SupplierId; + var ids = updateList.Select(t => t.Id).ToList(); ; + var listAll = _purchaseOrderItemRepository.Queryable().Where(t => t.SupplierId == supplierId && ids.Contains(t.Id)).ToList(); + var fidList = listAll.Select(t => t.Fid).ToList(); + var orderHeadList = _purchaseOrderRepository.Queryable().Where(t => fidList.Contains(t.FiD)).ToList(); + if (orderHeadList == null) + { + throw new BaseException("订单不属于此供应商"); + } + var FPurchaseOrgIdList = orderHeadList.Select(t => t.FPurchaseOrgId).Distinct().ToList(); + if (FPurchaseOrgIdList.Count > 1) + { + throw new BaseException("不能跨采购组织创建发货通知单"); + } + + if (loginInfo.IfForeign == 1 && string.IsNullOrWhiteSpace(act.F_VHUB_Text)) + { + throw new BaseException("国外的供应商发票号和发票日期是必填."); + } + var caiGouLeiXingList = orderHeadList.Select(t => t.FBILLTYPEID).Distinct().ToList(); + List invoiceOrders = new List(); + caiGouLeiXingList.ForEach(leixing => + { + var tempFids = orderHeadList.Where(h => h.FBILLTYPEID == leixing).Select(h => h.FiD).ToList(); + var list = listAll.Where(h => tempFids.Contains(h.Fid)).ToList(); + InvoiceOrder NewInvoiceOrder = new InvoiceOrder(); + NewInvoiceOrder.Id = Guid.NewGuid(); + NewInvoiceOrder.FiD = null; + NewInvoiceOrder.Status = 1; + NewInvoiceOrder.EditTime = DateTime.Now; + NewInvoiceOrder.Editor = loginInfo.Name; + NewInvoiceOrder.CreateTime = DateTime.Now; + NewInvoiceOrder.Creater = loginInfo.Name; + NewInvoiceOrder.SupplierId = supplierId; + NewInvoiceOrder.SupplierName = orderHeadList.FirstOrDefault().SupplierName; + NewInvoiceOrder.FDate = act.FaHuoDate; + NewInvoiceOrder.Sheet = DateTime.Now.ToString("yyMMddhhmmssfff"); + NewInvoiceOrder.PurchaseOrderId = 0; + NewInvoiceOrder.F_VHUB_Text = act.F_VHUB_Text; + + NewInvoiceOrder.F_URXD_Date = act.F_URXD_Date; + NewInvoiceOrder.FPurchaseOrgId = orderHeadList.FirstOrDefault().FPurchaseOrgId; + NewInvoiceOrder.FPurchaseOrgName = orderHeadList.FirstOrDefault().FPurchaseOrgName; + NewInvoiceOrder.FBILLTYPEID = leixing; + List invoiceOrderItems = new List(); + //invoiceOrderItems=list.Select(t=>new InvoiceOrderItem {Id=Guid.NewGuid(), Amount1=t.Amount1, Amount2=t.Amount2,t }) + var allInvoiceOrderItem = _invoiceOrderItemRepository.Queryable().Where(t => ids.Contains(t.PurchaseOrderItemId.Value)).ToList(); + List errorList = new List(); + + string FormId = "PUR_PurchaseOrder"; + var entityIdList = list.Select(t => t.EntityId).ToList(); + BillPush billPush = new BillPush(); + billPush.EntryIds = string.Join(",", entityIdList); + billPush.TargetFormId = "PUR_ReceiveBill"; + billPush.IsEnableDefaultRule = true; + billPush.CustomParams = new CustomParams(); + billPush.CustomParams.AutoAudit = false; + billPush.CustomParams.ScanEntry = new List(); + + List addTiaoMas = new List(); + + list.ForEach(t => + { + //var allqty = allInvoiceOrderItem.Where(h => h.PurchaseOrderItemId == t.Id ).Sum(h => h.Qty).SafeValue(); + var temp = updateList.Where(h => h.Id == t.Id).FirstOrDefault(); + if (temp != null) + { + var purchaseOrder = orderHeadList.FirstOrDefault(h => h.FiD == t.Fid); + if (purchaseOrder == null) + throw new BaseException("找不到对应的采购订单主表信息"); + if ((temp.Qty) > (t.Qty - t.MSSReceiveQty)) + { + string error = $@"{t.MaterialName}"; + errorList.Add(error); + } + //else if ((temp.Qty + allqty) == t.Qty) + //{ + + //} + else + { + InvoiceOrderItem invoiceOrderItemTemp = new InvoiceOrderItem(); + invoiceOrderItemTemp.Id = Guid.NewGuid(); + invoiceOrderItemTemp.InvoiceOrderId = NewInvoiceOrder.Id; + invoiceOrderItemTemp.NewChengNuoJiaoQi = t.NewChengNuoJiaoQi; + invoiceOrderItemTemp.ChengNuoJiaoQi = t.ChengNuoJiaoQi; + invoiceOrderItemTemp.UnitPrice = t.UnitPrice; + invoiceOrderItemTemp.PurchaseOrderId = t.Fid; + invoiceOrderItemTemp.MaterialCode = t.MaterialCode; + invoiceOrderItemTemp.MaterialName = t.MaterialName; + invoiceOrderItemTemp.Amount1 = t.UnitPrice * temp.Qty; + invoiceOrderItemTemp.Amount2 = t.UnitPrice * temp.Qty * t.TaxRate; + invoiceOrderItemTemp.DeliveryDate = act.FaHuoDate; + invoiceOrderItemTemp.Qty = temp.Qty; + invoiceOrderItemTemp.Remark = t.Remark; + invoiceOrderItemTemp.SpecificationModel = t.SpecificationModel; + invoiceOrderItemTemp.TaxAmount = t.TaxAmount; + invoiceOrderItemTemp.PurchaseOrderItemId = t.Id; + invoiceOrderItemTemp.FSupplierLot = temp.FSupplierLot == null ? "" : temp.FSupplierLot; + invoiceOrderItemTemp.MSSSupplierLot = t.MSSSupplierLot; + invoiceOrderItemTemp.UnitName = t.UnitName; + invoiceOrderItemTemp.FBillNo = purchaseOrder.FBillNo; + invoiceOrderItemTemp.PurchaseEntityId = t.EntityId; + invoiceOrderItems.Add(invoiceOrderItemTemp); + ScanEntry tempUpdate = new ScanEntry(); + tempUpdate.Qty = (int)temp.Qty; + tempUpdate.FENTRYID = t.EntityId.SafeValue(); + tempUpdate.FSupplierLot = temp.FSupplierLot; + billPush.CustomParams.ScanEntry.Add(tempUpdate); + billPush.CustomParams.FPH = act.F_VHUB_Text; + billPush.CustomParams.F_URXD_Date = act.F_URXD_Date; + if (string.IsNullOrWhiteSpace(billPush.CustomParams.F_URXD_Date)) + billPush.CustomParams.F_URXD_Date = null; + t.FReceiveQty = t.FReceiveQty + temp.Qty; + t.FRemainReceiveQty = t.FRemainReceiveQty - temp.Qty; + + + } + + } + }); + + if (errorList.Count > 0) + { + string e = string.Join(",", errorList); + if (loginInfo.IfForeign == 0) + e = e + "的总发货数量大于总采购数量,请检查"; + else + e = e + " The delivery QTY exceeds the PO's maximum QTY!"; + throw new BaseException(e); + } + else + { + try + { + var resultKD = _kingDeeService.Push(FormId, billPush); + LogHelper.Info("推送收料订单"); + LogHelper.Info(resultKD); + //var sda = resultKD.GetProperty("IsSuccess") [["SuccessEntitys"]; + dynamic data = JsonHelper.ToObject(resultKD); + int row = 0; + foreach (var item in data) + { + NewInvoiceOrder.FBillNo = item["Number"]; + NewInvoiceOrder.FiD = item["Id"]; + row++; + } + _invoiceOrderRepository.Add(NewInvoiceOrder); + _invoiceOrderItemRepository.Add(invoiceOrderItems); + _purchaseOrderItemRepository.Update(list); + invoiceOrders.Add(NewInvoiceOrder); + ////物料编码,数量,收料通知单号,供应商批号,key + //AddTiaoMa addTiao = new AddTiaoMa(); + + //addTiaoMas = invoiceOrderItems.Select(t => new AddTiaoMa { + // FBarCode = $@"{t.MaterialCode}*{t.Qty.Value.ToString("F2")}*{NewInvoiceOrder.FBillNo}*{t.FSupplierLot}" + //, FBarCodeRule= "03", FBillCode= NewInvoiceOrder.FBillNo, FSupplierLot=t.FSupplierLot==null?"": t.FSupplierLot, FMaterialId=t.MaterialCode, FQty=t.Qty.Value.ToString() + //}).ToList(); + _workProcessService.Add(this.MerchantId, "SetMSSSupplierLot", "写入金蝶的美塞斯批号", NewInvoiceOrder.Sheet, 1); + } + catch (Exception ex) + { + LogHelper.Error("推送收料订单出错"); + LogHelper.Error(ex); + throw new BaseException(ex.Message); + } + } + }); + + return string.Join(",", invoiceOrders.Select(t=>t.Sheet).ToList()); + } + #endregion + + } } diff --git a/MyCode.Project.WebApi/Web.config b/MyCode.Project.WebApi/Web.config index 71010ef..e11e8cc 100644 --- a/MyCode.Project.WebApi/Web.config +++ b/MyCode.Project.WebApi/Web.config @@ -24,7 +24,9 @@ - + + + @@ -66,7 +68,8 @@ - + +