This commit is contained in:
余宇波 2025-05-29 11:55:50 +08:00
parent 6835351a94
commit bb755db86f
6 changed files with 220 additions and 15 deletions

View File

@ -134,5 +134,12 @@ namespace MyCode.Project.Domain.Model
/// </summary>
public string F_URXD_Date {get;set;}
/// <summary>
/// Desc:采购订单的单据类型
/// Default:
/// Nullable:True
/// </summary>
public string FBILLTYPEID {get;set;}
}
}

View File

@ -170,5 +170,12 @@ namespace MyCode.Project.Domain.Model
/// </summary>
public string FPurchaseOrgName {get;set;}
/// <summary>
/// Desc:单据类型
/// Default:
/// Nullable:True
/// </summary>
public string FBILLTYPEID {get;set;}
}
}

View File

@ -17,7 +17,7 @@
<!--新测试环境数据库 -->
<!--<add name="MasterConn" connectionString="Data Source=127.0.0.1; Initial Catalog=AIS20250304232155; User ID=sa;Password=1; Connect Timeout=120; MultipleActiveResultSets=True;App=bfy" providerName="System.Data.SqlClient" />-->
<add name="MasterConn" connectionString="Data Source=8.134.66.212,30003; Initial Catalog=xietong; User ID=meisaisi2;Password=ghjktyui126@#$; Connect Timeout=120; MultipleActiveResultSets=True;App=XieTong" providerName="System.Data.SqlClient" />
<add name="MasterConn" connectionString="Data Source=8.210.205.196,30003; Initial Catalog=xietong; User ID=meisaisi2;Password=ghjktyui126@#$; Connect Timeout=120; MultipleActiveResultSets=True;App=XieTong" providerName="System.Data.SqlClient" />
<!--正式主库的链接地址-->
@ -30,7 +30,7 @@
<!-- 在第三方系统登录授权页面点击“生成测试链接”按钮后即可查看 -->
<add key="X-KDApi-AcctID" value="65edc24ab975db"/>
<add key="X-KDApi-AcctID" value="2196398464252873728"/>
<!-- 第三方系统登录授权的 集成用户名称 -->
@ -38,15 +38,15 @@
<!-- 若第三方系统登录授权已勾选“允许全部用户登录”,则无以上限制 -->
<add key="X-KDApi-UserName" value="TiaoMa" />
<add key="X-KDApi-UserName" value="Tiaoma" />
<!-- 第三方系统登录授权的 应用ID -->
<add key="X-KDApi-AppID" value="302967_20fp7YsL2kpWR9VG5Y3LSbUHzv3/SDmv"/>
<add key="X-KDApi-AppID" value="310430_7c0J4wFGTODe640JX4RLVx0r6K6+7ANO"/>
<!-- 第三方系统登录授权的 应用密钥 -->
<add key="X-KDApi-AppSec" value="5e38f16711514126ae1511ca4ead3232"/>
<add key="X-KDApi-AppSec" value="e008547257064fe99ace3d74eb0b0de5"/>
<!-- 账套语系默认2052 -->
@ -56,11 +56,12 @@
<!--<add key="X-KDApi-OrgNum" value="*****"/>-->
<add key="TiaoMaUrl" value="http://8.130.121.29:5000/"/>
<!-- 服务Url地址(私有云和公有云都须配置金蝶云星空产品地址K3Cloud/结尾)-->
<add key="X-KDApi-ServerUrl" value="http://8.138.110.197/K3Cloud/"/>
<add key="X-KDApi-ServerUrl" value="https://maxcess1.test.ik3cloud.com/k3cloud/"/>
<!--测试redis-->
<add key="RedisAddress" value=",password=" />

View File

@ -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)
{

View File

@ -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
@ -737,6 +739,191 @@ namespace MyCode.Project.Services.Implementation
}
#region BatchAddInvoiceOrder()
/// <summary>
/// 选中明细生成发货通知单
/// </summary>
/// <param name="updateList"></param>
/// <param name="loginInfo"></param>
/// <exception cref="BaseException"></exception>
[TransactionCallHandler]
public string BatchAddInvoiceOrderNew(AddOrder act, LoginInfo loginInfo)
{
if (!act.FaHuoDate.HasValue)
act.FaHuoDate = DateTime.Now;
List<UpdateQty> 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<InvoiceOrder> invoiceOrders = new List<InvoiceOrder>();
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<InvoiceOrderItem> invoiceOrderItems = new List<InvoiceOrderItem>();
//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<string> errorList = new List<string>();
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<ScanEntry>();
List<AddTiaoMa> addTiaoMas = new List<AddTiaoMa>();
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<dynamic>(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<IInvoiceOrderService>(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

View File

@ -24,7 +24,9 @@
</httpProtocol>
</system.webServer>
<connectionStrings>
<add name="MasterConn" connectionString="Data Source=8.148.230.89,30003; Initial Catalog=xietong; User ID=meisaisi2;Password=ghjktyui126@#$; Connect Timeout=120; MultipleActiveResultSets=True;App=XieTong" providerName="System.Data.SqlClient" />
<!--<add name="MasterConn" connectionString="Data Source=8.210.205.196,30003; Initial Catalog=xietong; User ID=meisaisi2;Password=ghjktyui126@#$; Connect Timeout=120; MultipleActiveResultSets=True;App=XieTong" providerName="System.Data.SqlClient" />-->
<add name="MasterConn" connectionString="Data Source=58.252.252.77,30003; Initial Catalog=xietong; User ID=meisaisi;Password=ghjktyui126@#$; Connect Timeout=120; MultipleActiveResultSets=True;App=XieTong" providerName="System.Data.SqlClient" />
<!--<add name="MasterConn" connectionString="Data Source=127.0.0.1; Initial Catalog=tempdata; User ID=sa;Password=1; Connect Timeout=120; MultipleActiveResultSets=True;App=XieTong" providerName="System.Data.SqlClient" />-->
</connectionStrings>
<appSettings>
@ -66,7 +68,8 @@
<!-- 服务Url地址(私有云和公有云都须配置金蝶云星空产品地址K3Cloud/结尾)-->
<add key="X-KDApi-ServerUrl" value="https://maxcess1.test.ik3cloud.com/k3cloud/"/>
<add key="TiaoMaUrl" value="http://8.130.121.29:5000/"/>
<add key="TiaoMaUrl" value="http://8.210.205.196:5000/"/>
<!--测试redis-->