推送销售出库单

This commit is contained in:
余宇波 2025-11-15 17:56:13 +08:00
parent 3a564d5b91
commit 5e087459df
5 changed files with 279 additions and 28 deletions

View File

@ -37,6 +37,7 @@ namespace MyCode.Project.Domain.Message.Request.KingDee.SaveModel
public class FOwnerIdHead
{
public string FOrgId { get; set; }
public string FNumber { get; set; }
}

View File

@ -554,6 +554,8 @@ namespace MyCode.Project.Domain.Message.Request.KingDee.SaveModel
public class FStockOrgId
{
public string FOrgId { get; set; }
/// <summary>
///
/// </summary>

View File

@ -1,4 +1,6 @@
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
namespace MyCode.Project.Domain.Message.Request.KingDee.SaveModel
@ -45,6 +47,7 @@ namespace MyCode.Project.Domain.Message.Request.KingDee.SaveModel
public class FSettleOrgID
{
public string FOrgId { get; set; }
public string FNumber { get; set; }
}
@ -58,7 +61,7 @@ namespace MyCode.Project.Domain.Message.Request.KingDee.SaveModel
public string FNumber { get; set; }
}
public class FSalesOutboundEntryItem
public class FSalesOutboundEntryItemOld
{
public string FRowType { get; set; }
public FMaterialID FMaterialID { get; set; }
@ -104,6 +107,231 @@ namespace MyCode.Project.Domain.Message.Request.KingDee.SaveModel
public bool? FVmiBusinessStatus { get; set; }
}
/// <summary>
/// 销售出库单明细行实体类
/// 用于描述销售出库业务中的物料明细信息
/// </summary>
public class FSalesOutboundEntryItem
{
/// <summary>
/// 条码
/// </summary>
public string Fcode { get; set; }
/// <summary>
/// 行类型
/// </summary>
public string FRowType { get; set; }
/// <summary>
/// 物料标识
/// </summary>
public FMaterialID FMaterialID { get; set; }
/// <summary>
/// 单位标识
/// </summary>
public FUnitID FUnitID { get; set; }
/// <summary>
/// 库存数量
/// </summary>
public decimal? FInventoryQty { get; set; }
/// <summary>
/// 实际出库数量
/// </summary>
public decimal? FRealQty { get; set; }
/// <summary>
/// 计价数量
/// </summary>
public decimal? FDisPriceQty { get; set; }
/// <summary>
/// 单价
/// </summary>
public decimal? FPrice { get; set; }
/// <summary>
/// 含税单价
/// </summary>
public decimal? FTaxPrice { get; set; }
/// <summary>
/// 是否赠品
/// </summary>
public bool? FIsFree { get; set; }
/// <summary>
/// 货主类型标识
/// </summary>
public string FOwnerTypeID { get; set; }
/// <summary>
/// 货主标识
/// </summary>
public FOwnerID FOwnerID { get; set; }
/// <summary>
/// 行税率
/// </summary>
public decimal? FEntryTaxRate { get; set; }
/// <summary>
/// 辅助单位数量
/// </summary>
public decimal? FAuxUnitQty { get; set; }
/// <summary>
/// 外部辅助单位数量
/// </summary>
public decimal? FExtAuxUnitQty { get; set; }
public FStockID FStockID { get; set; }
/// <summary>
/// 源单类型
/// </summary>
public string FSrcType { get; set; }
/// <summary>
/// 源单单号
/// </summary>
public string FSrcBillNo { get; set; }
/// <summary>
/// 折扣率
/// </summary>
public decimal? FDiscountRate { get; set; }
/// <summary>
/// 价格折扣
/// </summary>
public decimal? FPriceDiscount { get; set; }
/// <summary>
/// 实际数量
/// </summary>
public decimal? FActQty { get; set; }
/// <summary>
/// 销售单位标识
/// </summary>
public FSalUnitID FSalUnitID { get; set; }
/// <summary>
/// 销售单位数量
/// </summary>
public decimal? FSALUNITQTY { get; set; }
/// <summary>
/// 销售基本数量
/// </summary>
public decimal? FSALBASEQTY { get; set; }
/// <summary>
/// 价格基本数量
/// </summary>
public decimal? FPRICEBASEQTY { get; set; }
/// <summary>
/// 是否超发控制
/// </summary>
public bool? FOUTCONTROL { get; set; }
/// <summary>
/// 返修数量
/// </summary>
public decimal? FRepairQty { get; set; }
/// <summary>
/// 是否跨法人组织
/// </summary>
public bool? FIsOverLegalOrg { get; set; }
/// <summary>
/// 未参与数量
/// </summary>
public decimal? FARNOTJOINQTY { get; set; }
/// <summary>
/// 质量管理分录ID
/// </summary>
public int? FQmEntryID { get; set; }
/// <summary>
/// 转换分录ID
/// </summary>
public int? FConvertEntryID { get; set; }
/// <summary>
/// 销售订单分录ID
/// </summary>
public int? FSOEntryId { get; set; }
/// <summary>
/// 折扣前计价数量
/// </summary>
public decimal? FBeforeDisPriceQty { get; set; }
/// <summary>
/// 签收数量
/// </summary>
public decimal? FSignQty { get; set; }
/// <summary>
/// 是否检查交货
/// </summary>
public bool? FCheckDelivery { get; set; }
/// <summary>
/// 折扣前总金额
/// </summary>
public decimal? FAllAmountExceptDisCount { get; set; }
/// <summary>
/// 是否子组织结算
/// </summary>
public bool? FSettleBySon { get; set; }
/// <summary>
/// BOM分录ID
/// </summary>
public int? FBOMEntryId { get; set; }
/// <summary>
/// 自定义金额字段
/// </summary>
public decimal? F_dmi_Amount { get; set; }
/// <summary>
/// 销售物料标识
/// </summary>
public FMaterialID_Sal FMaterialID_Sal { get; set; }
/// <summary>
/// 入库分录ID
/// </summary>
public int? FInStockEntryId { get; set; }
/// <summary>
/// 收款分录ID
/// </summary>
public int? FReceiveEntryId { get; set; }
/// <summary>
/// 是否替换出库
/// </summary>
public bool? FIsReplaceOut { get; set; }
/// <summary>
/// VMI业务状态
/// </summary>
public bool? FVmiBusinessStatus { get; set; }
}
public class FMaterialID
{
public string FNumber { get; set; }
@ -111,6 +339,7 @@ namespace MyCode.Project.Domain.Message.Request.KingDee.SaveModel
public class FOwnerID
{
public string FOrgId { get; set; }
public string FNumber { get; set; }
}
@ -127,6 +356,11 @@ namespace MyCode.Project.Domain.Message.Request.KingDee.SaveModel
public class FCustomerID
{
public string FNumber { get; set; }
/// <summary>
/// 客户ID
/// </summary>
public string FCustId { get; set; }
}
public class FSaleDeptID
@ -153,5 +387,12 @@ namespace MyCode.Project.Domain.Message.Request.KingDee.SaveModel
{
public string FNumber { get; set; }
}
public class FStockID
{
public string FstockId { get; set; }
public string FNumber { get; set; }
}
}

View File

@ -25,7 +25,7 @@ namespace MyCode.Project.Services.Implementation
private const string EXCHANGE_TYPE = "HLTX01_SYS";
private const string DEFAULT_ORG = "100";
private const string DEFAULT_CURRENCY = "PRE001";
private const string DEFAULT_UNIT = "Pcs";
private const string DEFAULT_UNIT = "";
private const string ROW_TYPE_STANDARD = "Standard";
private const string ROW_TYPE_SERVICE = "Service";
private const string FORM_ID = "SAL_OUTSTOCK";
@ -65,7 +65,7 @@ namespace MyCode.Project.Services.Implementation
throw new BaseException($"未找到ID为 {id} 的销售出库单记录");
}
if (orderHead.Status != 0)
if (orderHead.Status == 2)
{
throw new BaseException($"销售出库单 {orderHead.Sheet} 已经推送过,状态为:{orderHead.Status},不允许重复推送");
}
@ -130,9 +130,10 @@ namespace MyCode.Project.Services.Implementation
// 获取销售组织ID
string orgId = param.FSALEORGID?.ToString() ?? DEFAULT_ORG;
// 获取仓库编码
string warehouseCode = orderHead.WarehouseCode ?? param.FWAREHOUSECODE ?? "";
// 获取仓库编码
//string warehouseCode = orderHead.WarehouseCode ?? param.FWAREHOUSECODE ?? "";
string warehouseCode = param.FWAREHOUSECODE ;
// 数据校验
if (string.IsNullOrEmpty(warehouseCode))
{
@ -154,7 +155,7 @@ namespace MyCode.Project.Services.Implementation
BillSave billSave = new BillSave()
{
Model = model,
IsAutoSubmitAndAudit = true,
IsAutoSubmitAndAudit = false,
};
// 调用金蝶服务保存单据
@ -184,15 +185,16 @@ namespace MyCode.Project.Services.Implementation
return new FSalesOutboundEntryItem()
{
Fcode= item.Barcode ?? "",
FRowType = rowType,
FMaterialID = new FMaterialID()
{
FNumber = item.Barcode ?? ""
},
FUnitID = new FUnitID()
{
FNumber = item.Unit ?? DEFAULT_UNIT
},
//FMaterialID = new FMaterialID()
//{
// FNumber = item.Barcode ?? ""
//},
//FUnitID = new FUnitID()
//{
// FNumber = item.Unit ?? DEFAULT_UNIT
//},
FInventoryQty = 0,
FRealQty = realQty,
FDisPriceQty = 0,
@ -202,7 +204,11 @@ namespace MyCode.Project.Services.Implementation
FOwnerTypeID = OWNER_TYPE,
FOwnerID = new FOwnerID()
{
FNumber = orgId
FOrgId = orgId
},
FStockID=new FStockID()
{
FNumber = param.FWAREHOUSECODE
},
FEntryTaxRate = param.FTAXRATE,
FAuxUnitQty = 0,
@ -264,16 +270,16 @@ namespace MyCode.Project.Services.Implementation
FDate = dateStr,
FSaleOrgId = new FSaleOrgId()
{
FNumber = orgId
FOrgId = orgId
},
FCustomerID = new FCustomerID()
{
FNumber = customerId
},
FSaleDeptID = new FSaleDeptID()
{
FNumber = "02"
FCustId = customerId
},
//FSaleDeptID = new FSaleDeptID()
//{
// FNumber = "02"
//},
FReceiverID = new FReceiverID()
{
FNumber = customerId
@ -284,7 +290,7 @@ namespace MyCode.Project.Services.Implementation
},
FStockOrgId = new FStockOrgId()
{
FNumber = orgId
FOrgId = orgId
},
FSettleID = new FSettleID()
{
@ -295,13 +301,14 @@ namespace MyCode.Project.Services.Implementation
FNumber = customerId
},
FOwnerTypeIdHead = OWNER_TYPE,
FOwnerIdHead = new FOwnerIdHead()
{
FNumber = orgId
FOrgId = orgId
},
FCDateOffsetValue = 0,
FIsTotalServiceOrCost = false,
F_dmi_Combo = "标准出库",
//F_dmi_Combo = "标准出库",
SubHeadEntity = new FSubHeadEntity()
{
FSettleCurrID = new FSettleCurrID()
@ -310,7 +317,7 @@ namespace MyCode.Project.Services.Implementation
},
FSettleOrgID = new FSettleOrgID()
{
FNumber = orgId
FOrgId = orgId
},
FIsIncludedTax = false,
FLocalCurrID = new FLocalCurrID()

View File

@ -49,7 +49,7 @@
<!-- 组织编码,启用多组织时配置对应的组织编码才有效 -->
<!--<add key="X-KDApi-OrgNum" value="*****"/>-->
<!-- 服务Url地址(私有云和公有云都须配置金蝶云星空产品地址K3Cloud/结尾)-->
<add key="X-KDApi-ServerUrl" value="http://127.0.0.1/k3Cloud/" />
<add key="X-KDApi-ServerUrl" value="https://k3.yygsbb.com/k3Cloud/" />
<!--解决swagger出错问题-->
<add key="aspnet:UseHostHeaderForRequestUrl" value="true" />
<!--当前环境,1:生产环境 0开发环境-->