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 @@
-
+
+