diff --git a/BasicData/Tnb.BasicData.Entities/Consts/FactoryConfigConst.cs b/BasicData/Tnb.BasicData.Entities/Consts/FactoryConfigConst.cs
index 6f743894..d42718d2 100644
--- a/BasicData/Tnb.BasicData.Entities/Consts/FactoryConfigConst.cs
+++ b/BasicData/Tnb.BasicData.Entities/Consts/FactoryConfigConst.cs
@@ -49,5 +49,10 @@ namespace Tnb.BasicData
/// 换批号天数
///
public const string CHANGEBATCHDAY = "changeBatchDay";
+
+ ///
+ /// erp全物料更新
+ ///
+ public const string MATERIALALLUPDATE = "materialAllUpDate";
}
}
\ No newline at end of file
diff --git a/BasicData/Tnb.BasicData/ThirdApiRecordService.cs b/BasicData/Tnb.BasicData/ThirdApiRecordService.cs
index 13cdaf94..f46b7b3c 100644
--- a/BasicData/Tnb.BasicData/ThirdApiRecordService.cs
+++ b/BasicData/Tnb.BasicData/ThirdApiRecordService.cs
@@ -268,6 +268,59 @@ namespace Tnb.BasicData
}
}
+ if (thirdResult.Code == 200 && record.third_name == "BIP" && record.name == "委外到货")
+ {
+ Dictionary requestData = JsonConvert.DeserializeObject>(record.request_data);
+ //((JObject)requestData[0]["dtls"]).SelectTokens("csourcebid")
+
+ string billCode = requestData.ContainsKey("vbillcode") ? requestData["vbillcode"].ToString() : "";
+ if (string.IsNullOrEmpty(billCode))
+ {
+ Log.Error($"请求记录id{record.id}委外到货单号为空");
+ }
+ var requestDtos = ((JArray)requestData["dtls"]).Select(x => new ErpPurchaseDto()
+ {
+ csourcebid = x["csourcebid"]?.ToString(),
+ mes_detail_id = x["mes_detail_id"]?.ToString(),
+ }).ToList();
+
+ JObject data = (JObject)thirdResult.msg;
+ JToken children = data.SelectToken("children")[0];
+ var responsetDtos = children.Select(x => new ErpPurchaseDto()
+ {
+ pk_arriveorder = x["valueIndex"]["pk_arriveorder"].ToString(),
+ pk_arriveorder_b = x["valueIndex"]["pk_arriveorder_b"].ToString(),
+ csourcebid = x["valueIndex"]["csourcebid"].ToString()
+ }).ToList();
+
+ string pk_arriveorder = responsetDtos[0]?.pk_arriveorder ?? "";
+ int updateDRow = 0;
+ bool flag = !string.IsNullOrEmpty(pk_arriveorder);
+ foreach (var item in requestDtos)
+ {
+ string pk_arriveorder_b = responsetDtos.Find(x => x.csourcebid == item.csourcebid)?.pk_arriveorder_b;
+ if (string.IsNullOrEmpty(pk_arriveorder_b))
+ {
+ flag = true;
+ break;
+ }
+ updateDRow += await db.Updateable()
+ .SetColumns(x => x.erp_arriveorder_b_pk == pk_arriveorder_b)
+ .Where(x => x.id == item.mes_detail_id)
+ .ExecuteCommandAsync();
+ }
+
+ int updateRow = await db.Updateable()
+ .SetColumns(x => x.erp_arriveorder_pk == pk_arriveorder)
+ .Where(x => x.bill_code == billCode)
+ .ExecuteCommandAsync();
+
+ if (flag || updateRow <= 0 || updateDRow <= 0)
+ {
+ Log.Error($"更新失败,requestDtos:{JsonConvert.SerializeObject(requestDtos)},responsetDtos:{JsonConvert.SerializeObject(responsetDtos)}");
+ }
+ }
+
if (thirdResult.Code == 200 && record.third_name == "BIP" && record.name == "生产报告")
{
Dictionary requestData = JsonConvert.DeserializeObject>(record.request_data);
diff --git a/EquipMgr/Tnb.EquipMgr/EquipmentService.cs b/EquipMgr/Tnb.EquipMgr/EquipmentService.cs
index e6f6d370..b4b5d78b 100644
--- a/EquipMgr/Tnb.EquipMgr/EquipmentService.cs
+++ b/EquipMgr/Tnb.EquipMgr/EquipmentService.cs
@@ -78,6 +78,7 @@ namespace Tnb.EquipMgr
.WhereIF(!string.IsNullOrEmpty(code),a=>a.code.Contains(code))
.WhereIF(!string.IsNullOrEmpty(name),a=>a.name.Contains(name))
.WhereIF(!string.IsNullOrEmpty(contract_no),a=>a.contract_no.Contains(contract_no))
+ .OrderBy(a=>a.code)
.Select((a, b,c,d,e,f,g,h,i,j) => new EquipListOuput()
{
id = a.id,
diff --git a/ProductionMgr/Tnb.ProductionMgr/TimeWorkService.cs b/ProductionMgr/Tnb.ProductionMgr/TimeWorkService.cs
index 3ce5c9f0..b86cdf65 100644
--- a/ProductionMgr/Tnb.ProductionMgr/TimeWorkService.cs
+++ b/ProductionMgr/Tnb.ProductionMgr/TimeWorkService.cs
@@ -854,6 +854,7 @@ namespace Tnb.ProductionMgr
Dictionary materialcategoryDic = await _db.Queryable()
.Where(x => x.DictionaryTypeId == DictConst.MaterialCatagoryID)
.ToDictionaryAsync(x => x.FullName, y => y.EnCode);
+ BasFactoryConfig materialAllUpDate = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.MATERIALALLUPDATE);
List materials = await _db.Queryable().ToListAsync();
List basEbomHs = await _db.Queryable().ToListAsync();
List insertMaterial = new List();
@@ -975,7 +976,7 @@ namespace Tnb.ProductionMgr
string materialId = extendField?.table_id ?? "";
BasMaterial basMaterial = await _db.Queryable().SingleAsync(x => x.id == materialId);
// if (extendField.erp_modify_time==null || erpBdMaterial.MODIFIEDTIME != extendField.erp_modify_time)
- if (erpBdMaterial.MODIFIEDTIME != extendField.erp_modify_time)
+ if (materialAllUpDate.value=="1" || erpBdMaterial.MODIFIEDTIME != extendField.erp_modify_time)
{
string unitId = erpExtendFields.Find(x => x.cunitid == erpBdMaterial.PK_MEASDOC)?.table_id ?? "";
unitId = unitDic.ContainsKey(unitId) ? unitDic[unitId].ToString() : "";
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/FinishproductOutstockSortInput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/FinishproductOutstockSortInput.cs
index 43cf8a79..67daeb38 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/FinishproductOutstockSortInput.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/FinishproductOutstockSortInput.cs
@@ -9,5 +9,15 @@
/// 分拣任务id
///
public string? source_id { get; set; }
+
+ ///
+ /// 转移托盘
+ ///
+ public int? change_carry { get; set; }
+
+ ///
+ /// 新托盘
+ ///
+ public string? new_carrycode { get; set; }
}
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/OutsourceEditInput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/OutsourceEditInput.cs
new file mode 100644
index 00000000..41b7735d
--- /dev/null
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/OutsourceEditInput.cs
@@ -0,0 +1,145 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tnb.WarehouseMgr.Entities.Entity;
+
+namespace Tnb.WarehouseMgr.Entities.Dto
+{
+ ///
+ /// 委外收货编辑输入参数
+ ///
+ public class OutsourceEditInput
+ {
+
+ public string bill_code { get; set; }
+
+ ///
+ /// 委外订单号
+ ///
+ public string? outsource_order { get; set; }
+
+ ///
+ /// 联系人
+ ///
+ public string? contact_person { get; set; }
+
+ ///
+ /// 电话
+ ///
+ public string? tel { get; set; }
+
+ ///
+ /// 供应商ID
+ ///
+ public string? supplier_id { get; set; }
+
+ ///
+ /// 供应商编号
+ ///
+ public string? supplier_code { get; set; }
+
+ ///
+ /// 供应商名称
+ ///
+ public string? supplier_name { get; set; }
+
+ ///
+ /// 备注
+ ///
+ public string? remark { get; set; }
+
+ ///
+ /// 扩展字段
+ ///
+ public string? extras { get; set; }
+
+ ///
+ /// 时间戳
+ ///
+ public string? time_stamp { get; set; }
+
+ ///
+ /// 单据类型
+ ///
+ public string? document_type { get; set; }
+
+ ///
+ /// 凭证日期
+ ///
+ public string? certificate_date { get; set; }
+
+ ///
+ /// 创建用户
+ ///
+ public string? create_id { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ public DateTime? create_time { get; set; }
+
+ ///
+ /// 修改用户
+ ///
+ public string? modify_id { get; set; }
+
+ ///
+ /// 修改时间
+ ///
+ public DateTime? modify_time { get; set; }
+
+ ///
+ /// 所属组织
+ ///
+ public string? org_id { get; set; }
+
+ ///
+ /// 流程任务Id
+ ///
+ public string? f_flowtaskid { get; set; }
+
+ ///
+ /// 流程引擎Id
+ ///
+ public string? f_flowid { get; set; }
+
+ ///
+ /// erp_pk
+ ///
+ public string? erp_pk { get; set; }
+
+ ///
+ /// erp_bill_code
+ ///
+ public string? erp_bill_code { get; set; }
+
+ ///
+ /// 供货日期
+ ///
+ public DateTime? ship_date { get; set; }
+
+ ///
+ /// 交易类型
+ ///
+ public string? transaction_type { get; set; }
+
+ ///
+ /// erp到货单主表pk
+ ///
+ public string? erp_arriveorder_pk { get; set; }
+
+ ///
+ /// 制单方式(自制 同步)
+ ///
+ public string? make_method { get; set; }
+
+ ///
+ /// erp流水号
+ ///
+ public string? service_num { get; set; }
+
+ public List details { get; set; } = new();
+ }
+}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsOutsourceD.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsOutsourceD.cs
index b6999b4f..a1a61d45 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsOutsourceD.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsOutsourceD.cs
@@ -2,7 +2,7 @@
using JNPF.Common.Security;
using SqlSugar;
-namespace Tnb.WarehouseMgr.Entities.Entity;
+namespace Tnb.WarehouseMgr.Entities;
///
/// 委外收货表子表
@@ -19,6 +19,11 @@ public partial class WmsOutsourceD : BaseEntity
///
public string? fk_wms_outsource_order_id { get; set; }
+ ///
+ /// 委外订单子表id
+ ///
+ public string outsource_order_d_id { get; set; }
+
///
/// 物料id
///
@@ -39,17 +44,6 @@ public partial class WmsOutsourceD : BaseEntity
///
public string? unit { get; set; }
- ///
- /// 质检结果
- ///
- public string? qc_res { get; set; }
-
-
- ///
- /// 单位
- ///
- public string? unit_id { get; set; }
-
///
/// 委外数量
///
@@ -59,7 +53,7 @@ public partial class WmsOutsourceD : BaseEntity
/// 实收数量
///
public decimal? actual_quantity { get; set; }
-
+
///
/// 库存地点ID
///
@@ -126,7 +120,12 @@ public partial class WmsOutsourceD : BaseEntity
public DateTime? modify_time { get; set; }
///
- /// 已绑定数量
+ /// erp_line_pk
+ ///
+ public string? erp_line_pk { get; set; }
+
+ ///
+ /// 已绑定数量 本次到货数量
///
public decimal? bind_qty { get; set; }
@@ -141,17 +140,47 @@ public partial class WmsOutsourceD : BaseEntity
public string? auxprop_gys { get; set; }
///
- /// erp仓库类型
+ /// 单位id
+ ///
+ public string? unit_id { get; set; }
+
+ ///
+ /// 质检结果
+ ///
+ public string? qc_res { get; set; }
+
+ ///
+ /// erp_wh_type
///
public string? erp_wh_type { get; set; }
///
/// 单价
///
- public decimal? price { get; set; }
+ public string? price { get; set; }
///
- /// erp到货单子表pk
+ /// erp_arriveorder_b_pk
///
- public string erp_arriveorder_b_pk { get; set; }
+ public string? erp_arriveorder_b_pk { get; set; }
+
+ ///
+ /// 是否赠品
+ ///
+ public int? gift { get; set; }
+
+ ///
+ /// 本次收货数量
+ ///
+ public decimal? outsource_arriveqty { get; set; }
+
+ public string erp_outsource_order_d_pk { get; set; }
+
+ public string erp_outsource_order_d_lineno { get; set; }
+
+ ///
+ /// 生产单位(厂商)
+ ///
+ public string? production_unit { get; set; }
+
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsOutsourceH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsOutsourceH.cs
index e4b09bd5..fa5b6b18 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsOutsourceH.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsOutsourceH.cs
@@ -2,10 +2,10 @@
using JNPF.Common.Security;
using SqlSugar;
-namespace Tnb.WarehouseMgr.Entities.Entity;
+namespace Tnb.WarehouseMgr.Entities;
///
-/// 委外订单
+/// 委外收货
///
[SugarTable("wms_outsource_h")]
public partial class WmsOutsourceH : BaseEntity
@@ -14,15 +14,11 @@ public partial class WmsOutsourceH : BaseEntity
{
id = SnowflakeIdHelper.NextId();
}
-
+
///
- /// 交易类型
+ /// 委外收货单号
///
- public string? transaction_type { get; set; }
- ///
- ///
- ///
- public string? erp_bill_code { get; set; }
+ public string bill_code { get; set; }
///
/// 委外订单号
///
@@ -86,7 +82,7 @@ public partial class WmsOutsourceH : BaseEntity
///
/// 创建时间
///
- public DateTime? create_time { get; set; }
+ public DateTime create_time { get; set; }
///
/// 修改用户
@@ -113,24 +109,39 @@ public partial class WmsOutsourceH : BaseEntity
///
public string? f_flowid { get; set; }
+ ///
+ /// erp_pk
+ ///
+ public string? erp_pk { get; set; }
+
+ ///
+ /// erp_bill_code
+ ///
+ public string? erp_bill_code { get; set; }
+
///
/// 供货日期
///
public DateTime? ship_date { get; set; }
+ ///
+ /// 交易类型
+ ///
+ public string? transaction_type { get; set; }
+
///
/// erp到货单主表pk
///
- public string erp_arriveorder_pk { get; set; }
+ public string? erp_arriveorder_pk { get; set; }
///
/// 制单方式(自制 同步)
///
- public string make_method { get; set; }
+ public string? make_method { get; set; }
///
/// erp流水号
///
- public string service_num { get; set; }
+ public string? service_num { get; set; }
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceDService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceDService.cs
index f22cd249..a5b937f0 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceDService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceDService.cs
@@ -215,7 +215,7 @@ namespace Tnb.WarehouseMgr
["cunitid"] = erpExtendFields.Find(x => x.table_id == (unitDatas.Find(x => x.EnCode == item.unit_id)?.Id ?? ""))?.cunitid ?? "",
["cvendorid"] = erpExtendFields.Find(x => x.table_id == supplierId)?.supplier_id ?? "",
["cvendorvid"] = erpExtendFields.Find(x => x.table_id == supplierId)?.supplier_vid ?? "",
- ["dbizdate"] = wmsOutsourceH.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss"),
+ ["dbizdate"] = wmsOutsourceH.create_time.ToString("yyyy-MM-dd HH:mm:ss"),
["nnum"] = item.qty,
["nshouldnum"] = item.pr_qty,
// ["pk_creqwareid"] = erpExtendFields.Find(x => x.table_id == instock.warehouse_id)?.cotherwhid ?? "",
@@ -277,7 +277,7 @@ namespace Tnb.WarehouseMgr
thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN + "uapws/rest/purchaseIn/save";
thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData);
thirdWebapiRecord.create_time = DateTime.Now;
- thirdWebapiRecord.remark = "【WmsPurchaseDService SaveCheckResult】委外收货单号:" + (wmsOutsourceH?.outsource_order ?? "")+ ",erp委外订单号:" + (wmsPurchaseOrderH?.erp_bill_code ?? "");
+ thirdWebapiRecord.remark = "【WmsOutsourceDService SaveCheckResult】委外收货单号:" + (wmsOutsourceH?.outsource_order ?? "")+ ",erp委外订单号:" + (wmsPurchaseOrderH?.erp_bill_code ?? "");
await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceService.cs
index 9038da26..f9faff61 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutsourceService.cs
@@ -188,223 +188,230 @@ namespace Tnb.WarehouseMgr
///
///
[HttpPost]
- public async Task Purchase(PurchaseAndReceiveUpInput input)
+ public async Task Purchase(OutsourceEditInput input)
{
var blFlag = true;
- //try
- //{
- // WmsPurchaseH wmsPurchaseH = await _db.Queryable().Where(r => r.bill_code == input.bill_code).FirstAsync();
- // if (wmsPurchaseH.make_method == "自制")
- // {
- // throw Oops.Bah("自制采购收货单不能操作此按钮");
- // }
- // await _db.Ado.BeginTranAsync();
- // WmsInstockH? instock = null;
- // var purchaseDs = await PurchaseAndSaleUpdate(input);
- // List instockDs = new();
- // if (purchaseDs?.Count > 0)
- // {
- // instock = input.Adapt();
- // instock.id = SnowflakeIdHelper.NextId();
- // instock.bill_code = await _billRullService.GetBillNumber(WmsWareHouseConst.WMS_INSTOCK_ENCODE);
- // instock.create_id = _userManager.UserId;
- // instock.create_time = DateTime.Now;
- // instock.org_id = _userManager.User.OrganizeId;
- // if (instock.source_code != null)
- // {
- // instock.sync_status = WmsWareHouseConst.SYNC_STATUS__NOTSYNC;
- // }
- // else
- // {
- // instock.sync_status = WmsWareHouseConst.SYNC_STATUS_NONEEDSYNC;
- // }
- // instock.audit_status = 0;
- // instock.print_status = "0";
- // instock.is_check = 0;
- // await _db.Insertable(instock).ExecuteCommandAsync();
+ try
+ {
+ WmsOutsourceH wmsOutsourceH = await _db.Queryable().Where(r => r.bill_code == input.bill_code).FirstAsync();
+ if (wmsOutsourceH.make_method == "自制")
+ {
+ throw Oops.Bah("自制委外收货单不能操作此按钮");
+ }
+ await _db.Ado.BeginTranAsync();
+ WmsInstockH? instock = null;
+ var purchaseDs = input.details;
+ foreach (var item in input.details)
+ {
+ await _db.Updateable()
+ .SetColumns(x => x.actual_quantity == x.actual_quantity + item.bind_qty)
+ .Where(x => x.id == item.outsource_order_d_id)
+ .ExecuteCommandAsync();
+ }
- // instockDs = purchaseDs.Adapt>();
- // instockDs.ForEach(instockD =>
- // {
- // instockD.bill_id = instock.id;
- // instockD.create_id = _userManager.UserId;
- // instockD.create_time = DateTime.Now;
- // instockD.org_id = _userManager.User.OrganizeId;
- // });
- // await _db.Insertable(instockDs).ExecuteCommandAsync();
+ List instockDs = new();
+ if (purchaseDs?.Count > 0)
+ {
+ instock = input.Adapt();
+ instock.id = SnowflakeIdHelper.NextId();
+ instock.bill_code = await _billRullService.GetBillNumber(WmsWareHouseConst.WMS_INSTOCK_ENCODE);
+ instock.create_id = _userManager.UserId;
+ instock.create_time = DateTime.Now;
+ instock.org_id = _userManager.User.OrganizeId;
+ if (instock.source_code != null)
+ {
+ instock.sync_status = WmsWareHouseConst.SYNC_STATUS__NOTSYNC;
+ }
+ else
+ {
+ instock.sync_status = WmsWareHouseConst.SYNC_STATUS_NONEEDSYNC;
+ }
+ instock.audit_status = 0;
+ instock.print_status = "0";
+ instock.is_check = 0;
+ await _db.Insertable(instock).ExecuteCommandAsync();
- // var purchase = await _db.Queryable().FirstAsync(it => it.id == purchaseDs.First().bill_id);
-
- // if (string.IsNullOrEmpty(purchase.supplier_id))
- // {
- // BasSupplier basSupplier = await _db.Queryable().Where(x => x.supplier_code == purchase.supplier_code).FirstAsync();
- // if (basSupplier != null)
- // {
- // await _db.Updateable()
- // .SetColumns(x => x.supplier_id == basSupplier.id)
- // .Where(x => x.id == purchase.id)
- // .ExecuteCommandAsync();
-
- // purchase.supplier_id = basSupplier.id;
- // }
- // }
-
- // //purchase.supplier_code
+ instockDs = purchaseDs.Adapt>();
+ instockDs.ForEach(instockD =>
+ {
+ instockD.bill_id = instock.id;
+ instockD.create_id = _userManager.UserId;
+ instockD.create_time = DateTime.Now;
+ instockD.org_id = _userManager.User.OrganizeId;
+ });
+ await _db.Insertable(instockDs).ExecuteCommandAsync();
+ List dList = await _db.Queryable().Where(x => x.fk_wms_outsource_order_id == purchaseDs.First().fk_wms_outsource_order_id).OrderBy(x => x.id).ToListAsync();
- // List dList = await _db.Queryable().Where(x => x.bill_id == purchaseDs.First().bill_id).OrderBy(x => x.id).ToListAsync();
- // List materialIds = purchaseDs.Select(x => x.material_id).Distinct().ToList();
- // List unitCodes = purchaseDs.Select(x => x.unit_id).Distinct().ToList();
- // List unitDatas = await _db.Queryable()
- // .LeftJoin((x, y) => x.Id == y.DictionaryTypeId)
- // .Where((x, y) => x.EnCode == DictConst.MeasurementUnit && (unitCodes.Contains(y.EnCode) || unitCodes.Contains(y.Id)))
- // .Select((x, y) => y)
- // .ToListAsync();
- // List erpWarehouserelaHs = await _db.Queryable().Where(x => x.id != null).ToListAsync();
- // WmsPurchaseOrderH wmsPurchaseOrderH = await _db.Queryable().SingleAsync(x => x.id == purchase.erp_bill_code);
- // //todo 先取采购订单第一条
- // //WmsPurchaseOrderD wmsPurchaseOrderDs = await _db.Queryable().FirstAsync(x=>x.fk_wms_purchase_order_id==purchase.erp_bill_code);
-
- // //自制的不调erp接口
- // if (!string.IsNullOrEmpty(wmsPurchaseOrderH.erp_bill_code))
- // {
- // List ids = new List();
- // // ids.Add(_userManager.UserId);
- // // ids.Add(WmsWareHouseConst.AdministratorUserId);
- // ids.Add(WmsWareHouseConst.AdministratorOrgId);
- // ids.Add(purchase.warehouse_id);
- // ids.AddRange(materialIds);
- // ids.Add(wmsPurchaseOrderH.supplier_id);
- // ids.AddRange(unitDatas.Select(x => x.Id).ToList());
-
- // string userId = _userManager.UserId ?? WmsWareHouseConst.AdministratorUserId;
- // ids.Add(userId);
- // List erpExtendFields = await _db.Queryable().Where(x => ids.Contains(x.table_id)).ToListAsync();
- // // string erpCreateId = erpExtendFields.Find(x=>x.table_id==userId)?.user_id ?? WmsWareHouseConst.ERPUSERID;
- // string erpCreateId = WmsWareHouseConst.ERPUSERID;
- // ErpExtendField erpOrg = erpExtendFields.Find(x => x.table_id == (WmsWareHouseConst.AdministratorOrgId));
- // string nowStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
-
- // List> requestData = new List>();
- // Dictionary erpRequestData = new Dictionary();
- // erpRequestData.Add("approver", erpCreateId);
- // erpRequestData.Add("billmaker", erpCreateId);
- // erpRequestData.Add("creationtime", nowStr);
- // erpRequestData.Add("creator", erpCreateId);
- // erpRequestData.Add("dbilldate", purchase.create_time.ToString("yyyy-MM-dd HH:mm:ss"));
- // erpRequestData.Add("dmakedate", nowStr);
- // erpRequestData.Add("ntotalastnum", purchaseDs.Sum(x => x.purchase_arriveqty));
- // erpRequestData.Add("pk_arriveorder", null);
- // // erpRequestData.Add("pk_dept","1001A1100000001JFOPQ");
- // // erpRequestData.Add("pk_dept_v","0001A1100000000AOMIQ");
- // erpRequestData.Add("Pk_receivepsndoc", erpCreateId);
- // erpRequestData.Add("pk_org", erpOrg.pk_org);
- // erpRequestData.Add("pk_org_v", erpOrg.pk_org_v);
- // erpRequestData.Add("pk_group", erpOrg.pk_group);
- // erpRequestData.Add("pk_pupsndoc", "");
- // erpRequestData.Add("csourceid", wmsPurchaseOrderH?.erp_pk ?? "");
- // erpRequestData.Add("pk_purchaseorg", erpOrg.pk_org);
- // erpRequestData.Add("pk_purchaseorg_v", erpOrg.pk_org_v);
- // erpRequestData.Add("pk_supplier", erpExtendFields.Find(x => x.table_id == purchase.supplier_id)?.supplier_id ?? "");//先写死
- // erpRequestData.Add("pk_supplier_v", erpExtendFields.Find(x => x.table_id == purchase.supplier_id)?.supplier_vid ?? "");//先写死
- // erpRequestData.Add("vbillcode", purchase.bill_code);
- // erpRequestData.Add("vmemo", purchase.remark);
- // erpRequestData.Add("vtrantypecode", "");
-
- // List> erpRequestDataDetails = new List>();
- // foreach (WmsPurchaseD item in dList)
- // {
- // erpRequestDataDetails.Add(new Dictionary()
- // {
- // ["castunitid"] = erpExtendFields.Find(x => x.table_id == (unitDatas.Find(x => x.EnCode == item.unit_id || x.Id == item.unit_id)?.Id ?? ""))?.cunitid ?? "",
- // ["cfirstbid"] = wmsPurchaseOrderH?.erp_pk ?? "",
- // ["cfirstid"] = item.erp_purchase_order_d_pk,
- // ["cfirsttypecode"] = "",
- // ["crececountryid"] = "0001Z010000000079UJJ",
- // ["crowno"] = item.erp_purchase_order_d_lineno,
- // ["csendcountryid"] = "0001Z010000000079UJJ",
- // ["csourcetypecode"] = "",
- // ["ctaxcountryid"] = "0001Z010000000079UJJ",
- // ["cunitid"] = erpExtendFields.Find(x => x.table_id == (unitDatas.Find(x => x.EnCode == item.unit_id || x.Id == item.unit_id)?.Id ?? ""))?.cunitid ?? "",
- // ["dbilldate"] = purchase.create_time.ToString("yyyy-MM-dd HH:mm:ss"),
- // ["dplanreceivedate"] = purchase.create_time.ToString("yyyy-MM-dd HH:mm:ss"),
- // ["dproducedate"] = purchase.create_time.ToString("yyyy-MM-dd HH:mm:ss"),
- // // ["fbuysellflag"] = 2,
- // ["fproductclass"] = 1,
- // // ["naccumchecknum"] = 0,
- // // ["nastnum"] = item.purchase_arriveqty,
- // ["nnum"] = item.purchase_arriveqty,
- // // ["nplanastnum"] = 0,
- // ["nplannum"] = item.purchase_qty,
- // ["pk_apfinanceorg"] = erpOrg.corpoid,
- // ["pk_apfinanceorg_v"] = erpOrg.corpvid,
- // ["pk_arriveorder"] = null,
- // ["pk_arriveorder_b"] = null,
- // ["pk_group"] = erpOrg.pk_group,
- // ["pk_material"] = erpExtendFields.Find(x => x.table_id == item.material_id)?.cmaterialoid ?? "",
- // ["pk_order"] = wmsPurchaseOrderH?.erp_pk ?? "",
- // ["pk_order_b"] = item.erp_purchase_order_d_pk,
- // ["pk_org"] = erpOrg.pk_org,
- // ["pk_org_v"] = erpOrg.pk_org_v,
- // ["pk_psfinanceorg"] = erpOrg.corpoid,
- // ["pk_psfinanceorg_v"] = erpOrg.corpvid,
- // // ["pk_receivestore"] = erpExtendFields.Find(x=>x.table_id==purchase.warehouse_id)?.cotherwhid ?? "",
- // // ["pk_receivestore"] = erpWarehouserelaHs.Find(x => x.erp_warehousecode == item.erp_wh_type)?.erp_warehouseid ?? "",
- // ["pk_receivestore"] = item.erp_wh_type,
- // ["pk_reqstoorg"] = erpOrg.pk_org,
- // ["pk_reqstoorg_v"] = erpOrg.pk_org_v,
- // ["pk_srcmaterial"] = erpExtendFields.Find(x => x.table_id == item.material_id)?.cmaterialoid ?? "",
- // ["vbatchcode"] = item.code_batch,
- // ["Vfree1"] = item.code_batch,
- // ["mes_detail_id"] = item.id,
- // ["bpresent"] = item.gift == 1,
- // ["csourceid"] = wmsPurchaseOrderH?.erp_pk ?? "",
- // ["vsourcecode"] = wmsPurchaseOrderH.erp_bill_code,
- // ["csourcebid"] = item.erp_purchase_order_d_pk,
- // ["IsType"] = 0,
- // ["csourcetypecode"] = null,
- // ["vsourcerowno"] = null,
- // ["vsourcetrantype"] = null,
- // ["cproductorid"] = item.production_unit,
- // });
- // }
- // erpRequestData.Add("dtls", erpRequestDataDetails);
- // requestData.Add(erpRequestData);
- // BasFactoryConfig config = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.BIPURL);
-
- // ThirdWebapiRecord thirdWebapiRecord = new ThirdWebapiRecord();
- // thirdWebapiRecord.id = SnowflakeIdHelper.NextId();
- // thirdWebapiRecord.third_name = WmsWareHouseConst.BIP;
- // thirdWebapiRecord.name = "采购到货";
- // thirdWebapiRecord.method = "POST";
- // // thirdWebapiRecord.url = config.value+"uapws/rest/purarrvial/save";
- // thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN + "uapws/rest/purarrvial/save";
- // thirdWebapiRecord.request_data = JsonConvert.SerializeObject(erpRequestData);
- // thirdWebapiRecord.create_time = DateTime.Now;
- // thirdWebapiRecord.remark = $"【WmsPurchaseService Purchase】erp采购订单:{wmsPurchaseOrderH.erp_bill_code}";
-
- // await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
- // BasFactoryConfig callErp = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP);
- // if (callErp.value == "1")
- // {
- // await _thirdApiRecordService.Send(new List { thirdWebapiRecord }, "自动", _db);
- // }
- // }
+ List wmsOutsourceOrderDs = await _db.Queryable().Where(r => dList.Select(x => x.erp_outsource_order_d_pk).Contains(r.erp_line_pk)).OrderBy(x => x.id).ToListAsync();
+ foreach (var item in dList)
+ {
+ decimal? outsource_arriveqty = input.details.Where(r => r.id == item.id).ToList()[0].outsource_arriveqty;
+ item.actual_quantity += outsource_arriveqty;
+ if (item.actual_quantity > item.outsource_quantity)
+ {
+ throw Oops.Bah($"委外收货单明细行物料{item.matcode} 批次{item.code_batch} 到货数量不能超过采购数量!");
+ }
+ WmsOutsourceOrderD wmsOutsourceOrderD = wmsOutsourceOrderDs.Where(r => r.erp_line_pk == item.erp_outsource_order_d_pk).ToList()[0];
+ wmsOutsourceOrderD.actual_quantity += outsource_arriveqty;
+ if (wmsOutsourceOrderD.actual_quantity > wmsOutsourceOrderD.outsource_quantity)
+ {
+ throw Oops.Bah($"采购订单明细行物料{wmsOutsourceOrderD.matcode} 批次{wmsOutsourceOrderD.code_batch} 到货数量不能超过采购数量!");
+ }
+ }
+ await _db.Updateable(dList).UpdateColumns(r => r.actual_quantity).ExecuteCommandAsync();
+ await _db.Updateable(wmsOutsourceOrderDs).UpdateColumns(r => r.actual_quantity).ExecuteCommandAsync();
- // }
- // //通知Mes接口
- // //_ = SyncMesData(instock.id, instockDs.Select(x => x.material_id).ToList(), EnumTriggerEvent.入厂检按物料编号);
- // await _db.Ado.CommitTranAsync();
- //}
- //catch (Exception ex)
- //{
- // blFlag = false;
- // await _db.Ado.RollbackTranAsync();
- // Log.Error("采购收货失败", ex);
- // throw;
- //}
+ List materialIds = purchaseDs.Select(x => x.matcode_id).Distinct().ToList();
+ List unitCodes = purchaseDs.Select(x => x.unit_id).Distinct().ToList();
+ List unitDatas = await _db.Queryable()
+ .LeftJoin((x, y) => x.Id == y.DictionaryTypeId)
+ .Where((x, y) => x.EnCode == DictConst.MeasurementUnit && (unitCodes.Contains(y.EnCode) || unitCodes.Contains(y.Id)))
+ .Select((x, y) => y)
+ .ToListAsync();
+ List erpWarehouserelaHs = await _db.Queryable().Where(x => x.id != null).ToListAsync();
+ WmsOutsourceOrderH wmsOutsourceOrderH = await _db.Queryable().SingleAsync(x => x.id == wmsOutsourceH.erp_bill_code);
+
+ //自制的不调erp接口
+ if (!string.IsNullOrEmpty(wmsOutsourceOrderH.erp_bill_code))
+ {
+ List ids = new List();
+ // ids.Add(_userManager.UserId);
+ // ids.Add(WmsWareHouseConst.AdministratorUserId);
+ ids.Add(WmsWareHouseConst.AdministratorOrgId);
+ ids.AddRange(materialIds);
+ ids.Add(wmsOutsourceOrderH.supplier_id);
+ ids.AddRange(unitDatas.Select(x => x.Id).ToList());
+
+ string userId = _userManager.UserId ?? WmsWareHouseConst.AdministratorUserId;
+ ids.Add(userId);
+ List erpExtendFields = await _db.Queryable().Where(x => ids.Contains(x.table_id)).ToListAsync();
+ // string erpCreateId = erpExtendFields.Find(x=>x.table_id==userId)?.user_id ?? WmsWareHouseConst.ERPUSERID;
+ string erpCreateId = WmsWareHouseConst.ERPUSERID;
+ ErpExtendField erpOrg = erpExtendFields.Find(x => x.table_id == (WmsWareHouseConst.AdministratorOrgId));
+ string nowStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+ List> requestData = new List>();
+ Dictionary erpRequestData = new Dictionary();
+ erpRequestData.Add("approver", erpCreateId);
+ erpRequestData.Add("billmaker", erpCreateId);
+ erpRequestData.Add("creationtime", nowStr);
+ erpRequestData.Add("creator", erpCreateId);
+ erpRequestData.Add("dbilldate", wmsOutsourceH.create_time.ToString("yyyy-MM-dd HH:mm:ss"));
+ erpRequestData.Add("dmakedate", nowStr);
+ erpRequestData.Add("ntotalastnum", purchaseDs.Sum(x => x.bind_qty));
+ erpRequestData.Add("pk_arriveorder", null);
+ // erpRequestData.Add("pk_dept","1001A1100000001JFOPQ");
+ // erpRequestData.Add("pk_dept_v","0001A1100000000AOMIQ");
+ erpRequestData.Add("Pk_receivepsndoc", erpCreateId);
+ erpRequestData.Add("pk_org", erpOrg.pk_org);
+ erpRequestData.Add("pk_org_v", erpOrg.pk_org_v);
+ erpRequestData.Add("pk_group", erpOrg.pk_group);
+ erpRequestData.Add("pk_pupsndoc", "");
+ erpRequestData.Add("csourceid", wmsOutsourceOrderH?.erp_pk ?? "");
+ erpRequestData.Add("pk_purchaseorg", erpOrg.pk_org);
+ erpRequestData.Add("pk_purchaseorg_v", erpOrg.pk_org_v);
+ erpRequestData.Add("pk_supplier", erpExtendFields.Find(x => x.table_id == wmsOutsourceH.supplier_id)?.supplier_id ?? "");//先写死
+ erpRequestData.Add("pk_supplier_v", erpExtendFields.Find(x => x.table_id == wmsOutsourceH.supplier_id)?.supplier_vid ?? "");//先写死
+ erpRequestData.Add("vbillcode", wmsOutsourceH.bill_code);
+ erpRequestData.Add("vmemo", wmsOutsourceH.remark);
+ erpRequestData.Add("vtrantypecode", "");
+
+ List> erpRequestDataDetails = new List>();
+ foreach (WmsOutsourceD item in dList)
+ {
+ erpRequestDataDetails.Add(new Dictionary()
+ {
+ ["castunitid"] = erpExtendFields.Find(x => x.table_id == (unitDatas.Find(x => x.EnCode == item.unit_id || x.Id == item.unit_id)?.Id ?? ""))?.cunitid ?? "",
+ ["cfirstbid"] = wmsOutsourceOrderH?.erp_pk ?? "",
+ ["cfirstid"] = item.erp_outsource_order_d_pk,
+ ["cfirsttypecode"] = "",
+ ["crececountryid"] = "0001Z010000000079UJJ",
+ ["crowno"] = item.erp_outsource_order_d_lineno,
+ ["csendcountryid"] = "0001Z010000000079UJJ",
+ ["csourcetypecode"] = "",
+ ["ctaxcountryid"] = "0001Z010000000079UJJ",
+ ["cunitid"] = erpExtendFields.Find(x => x.table_id == (unitDatas.Find(x => x.EnCode == item.unit_id || x.Id == item.unit_id)?.Id ?? ""))?.cunitid ?? "",
+ ["dbilldate"] = wmsOutsourceH.create_time.ToString("yyyy-MM-dd HH:mm:ss"),
+ ["dplanreceivedate"] = wmsOutsourceH.create_time.ToString("yyyy-MM-dd HH:mm:ss"),
+ ["dproducedate"] = wmsOutsourceH.create_time.ToString("yyyy-MM-dd HH:mm:ss"),
+ // ["fbuysellflag"] = 2,
+ ["fproductclass"] = 1,
+ // ["naccumchecknum"] = 0,
+ // ["nastnum"] = item.purchase_arriveqty,
+ ["nnum"] = item.bind_qty,
+ // ["nplanastnum"] = 0,
+ ["nplannum"] = item.outsource_arriveqty,
+ ["pk_apfinanceorg"] = erpOrg.corpoid,
+ ["pk_apfinanceorg_v"] = erpOrg.corpvid,
+ ["pk_arriveorder"] = null,
+ ["pk_arriveorder_b"] = null,
+ ["pk_group"] = erpOrg.pk_group,
+ ["pk_material"] = erpExtendFields.Find(x => x.table_id == item.matcode_id)?.cmaterialoid ?? "",
+ ["pk_order"] = wmsOutsourceOrderH?.erp_pk ?? "",
+ ["pk_order_b"] = item.erp_outsource_order_d_pk,
+ ["pk_org"] = erpOrg.pk_org,
+ ["pk_org_v"] = erpOrg.pk_org_v,
+ ["pk_psfinanceorg"] = erpOrg.corpoid,
+ ["pk_psfinanceorg_v"] = erpOrg.corpvid,
+ // ["pk_receivestore"] = erpExtendFields.Find(x=>x.table_id==purchase.warehouse_id)?.cotherwhid ?? "",
+ // ["pk_receivestore"] = erpWarehouserelaHs.Find(x => x.erp_warehousecode == item.erp_wh_type)?.erp_warehouseid ?? "",
+ ["pk_receivestore"] = item.erp_wh_type,
+ ["pk_reqstoorg"] = erpOrg.pk_org,
+ ["pk_reqstoorg_v"] = erpOrg.pk_org_v,
+ ["pk_srcmaterial"] = erpExtendFields.Find(x => x.table_id == item.matcode_id)?.cmaterialoid ?? "",
+ ["vbatchcode"] = item.code_batch,
+ ["Vfree1"] = item.code_batch,
+ ["mes_detail_id"] = item.id,
+ ["bpresent"] = item.gift == 1,
+ ["csourceid"] = wmsOutsourceOrderH?.erp_pk ?? "",
+ ["vsourcecode"] = wmsOutsourceOrderH.erp_bill_code,
+ ["csourcebid"] = item.erp_outsource_order_d_pk,
+ ["IsType"] = 0,
+ ["csourcetypecode"] = null,
+ ["vsourcerowno"] = null,
+ ["vsourcetrantype"] = null,
+ ["cproductorid"] = item.production_unit,
+ });
+ }
+ erpRequestData.Add("dtls", erpRequestDataDetails);
+ requestData.Add(erpRequestData);
+ BasFactoryConfig config = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.BIPURL);
+
+ ThirdWebapiRecord thirdWebapiRecord = new ThirdWebapiRecord();
+ thirdWebapiRecord.id = SnowflakeIdHelper.NextId();
+ thirdWebapiRecord.third_name = WmsWareHouseConst.BIP;
+ thirdWebapiRecord.name = "委外到货";
+ thirdWebapiRecord.method = "POST";
+ // thirdWebapiRecord.url = config.value+"uapws/rest/purarrvial/save";
+ thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN + "uapws/rest/purarrvial/save";
+ thirdWebapiRecord.request_data = JsonConvert.SerializeObject(erpRequestData);
+ thirdWebapiRecord.create_time = DateTime.Now;
+ thirdWebapiRecord.remark = $"【WmsOutsourceService Purchase】erp委外订单:{wmsOutsourceOrderH.erp_bill_code}";
+
+ await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
+ BasFactoryConfig callErp = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP);
+ if (callErp.value == "1")
+ {
+ await _thirdApiRecordService.Send(new List { thirdWebapiRecord }, "自动", _db);
+ }
+ }
+
+
+ }
+ //通知Mes接口
+ //_ = SyncMesData(instock.id, instockDs.Select(x => x.material_id).ToList(), EnumTriggerEvent.入厂检按物料编号);
+ await _db.Ado.CommitTranAsync();
+ }
+ catch (Exception ex)
+ {
+ blFlag = false;
+ await _db.Ado.RollbackTranAsync();
+ Log.Error("委外收货失败", ex);
+ throw;
+ }
return await Task.FromResult(blFlag);
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseAndSaleCommonService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseAndSaleCommonService.cs
index 67f5f10f..7257dc43 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseAndSaleCommonService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseAndSaleCommonService.cs
@@ -88,7 +88,7 @@ namespace Tnb.WarehouseMgr
x.purchase_arriveqty = 0;
});
- await _db.Updateable(purchaseDs).UpdateColumns(it => new { it.purchase_prqty, it.line_status }).ExecuteCommandAsync();
+ await _db.Updateable(purchaseDs).UpdateColumns(it => new { it.line_status }).ExecuteCommandAsync();
if (purchaseDs.All(x => x.line_status == WmsWareHouseConst.BILLSTATUS_COMPLETE_ID))
{