委外订单接口,原材料移库策略调整
This commit is contained in:
@@ -362,14 +362,14 @@ namespace Tnb.WarehouseMgr
|
||||
wmsPurchaseOrderD.fk_wms_purchase_order_id = wmsPurchaseOrderH.id;
|
||||
wmsPurchaseOrderD.matcode = detail.material_code;
|
||||
wmsPurchaseOrderD.unit = detail.unit_code;
|
||||
wmsPurchaseOrderD.purchase_quantity = detail.purchase_quantity.ToString();
|
||||
wmsPurchaseOrderD.purchase_quantity = detail.purchase_quantity;
|
||||
wmsPurchaseOrderD.stock_location = detail.stock_location;
|
||||
wmsPurchaseOrderD.code_batch = detail.code_batch;
|
||||
wmsPurchaseOrderD.delivery_date = detail.delivery_date.Value.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
wmsPurchaseOrderD.erp_line_pk = detail.erp_line_pk;
|
||||
wmsPurchaseOrderD.create_id = WmsWareHouseConst.ErpUserId;
|
||||
wmsPurchaseOrderD.create_time = DateTime.Now;
|
||||
wmsPurchaseOrderD.actual_quantity = "0";
|
||||
wmsPurchaseOrderD.actual_quantity = 0;
|
||||
|
||||
var material = await db.Queryable<BasMaterial>().Where(p => p.code == detail.material_code).FirstAsync();
|
||||
if (material != null)
|
||||
@@ -401,6 +401,112 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 委外订单
|
||||
/// </summary>
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Entities.Dto.Outputs.Result> OutsourceOrder(OutsourceOrderInput input)
|
||||
{
|
||||
LoggerErp2Mes.LogInformation($"【OutsourceOrderInput】ERP传入数据:{JsonConvert.SerializeObject(input)}");
|
||||
var db = _repository.AsSugarClient();
|
||||
|
||||
if (string.IsNullOrEmpty(input.erp_pk))
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($"【OutsourceOrderInput】主表主键不能为空!");
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, $"主表主键不能为空!");
|
||||
}
|
||||
|
||||
int count_erp_line_pk = input.details.Where(r => string.IsNullOrEmpty(r.erp_line_pk)).Count();
|
||||
if (count_erp_line_pk > 0)
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($@"【OutsourceOrderInput】子表主键不能为空!");
|
||||
throw new AppFriendlyException($@"子表主键不能为空!", 500);
|
||||
}
|
||||
|
||||
var wmsPurchaseOrdersDistinct = input.details.Select(r => new
|
||||
{
|
||||
material_id = r.material_code,
|
||||
code_batch = r.code_batch,
|
||||
}).Distinct();
|
||||
if (wmsPurchaseOrdersDistinct.Count() < input.details.Count)
|
||||
{
|
||||
_LoggerErp2Mes.LogWarning($@"【OutsourceOrderInput】表体存在物料和批号重复的明细!");
|
||||
throw new AppFriendlyException($@"表体存在物料和批号重复的明细!", 500);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
await db.Ado.BeginTranAsync();
|
||||
WmsOutsourceOrderH wmsOutsourceOrderH = new WmsOutsourceOrderH();
|
||||
string Code = await _billRuleService.GetBillNumber("Purchase");
|
||||
|
||||
wmsOutsourceOrderH.outsource_order = Code;
|
||||
wmsOutsourceOrderH.erp_bill_code = input.outsource_order;
|
||||
wmsOutsourceOrderH.contact_person = input.contact_person;
|
||||
wmsOutsourceOrderH.tel = input.tel;
|
||||
wmsOutsourceOrderH.supplier_code = input.supplier_code;
|
||||
wmsOutsourceOrderH.certificate_date = input.certificate_date.Value.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
wmsOutsourceOrderH.ship_date = input.ship_date;
|
||||
wmsOutsourceOrderH.erp_pk = input.erp_pk;
|
||||
wmsOutsourceOrderH.create_id = WmsWareHouseConst.ErpUserId;
|
||||
wmsOutsourceOrderH.create_time = DateTime.Now;
|
||||
var supplier = await db.Queryable<BasSupplier>().Where(p => p.supplier_code == input.supplier_code).FirstAsync();
|
||||
if (supplier != null)
|
||||
{
|
||||
wmsOutsourceOrderH.supplier_id = supplier.id;
|
||||
wmsOutsourceOrderH.supplier_name = supplier.supplier_name;
|
||||
}
|
||||
|
||||
await db.Insertable(wmsOutsourceOrderH).ExecuteCommandAsync();
|
||||
|
||||
|
||||
List<WmsOutsourceOrderD> wmsOutsourceOrderDs = new List<WmsOutsourceOrderD>();
|
||||
foreach (var detail in input.details)
|
||||
{
|
||||
WmsOutsourceOrderD wmsOutsourceOrderD = new WmsOutsourceOrderD();
|
||||
|
||||
wmsOutsourceOrderD.fk_wms_outsource_order_id = wmsOutsourceOrderH.id;
|
||||
wmsOutsourceOrderD.matcode = detail.material_code;
|
||||
wmsOutsourceOrderD.unit = detail.unit_code;
|
||||
wmsOutsourceOrderD.outsource_quantity = detail.outsource_quantity;
|
||||
wmsOutsourceOrderD.stock_location = detail.stock_location;
|
||||
wmsOutsourceOrderD.code_batch = detail.code_batch;
|
||||
wmsOutsourceOrderD.delivery_date = detail.delivery_date.Value.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
wmsOutsourceOrderD.erp_line_pk = detail.erp_line_pk;
|
||||
wmsOutsourceOrderD.create_id = WmsWareHouseConst.ErpUserId;
|
||||
wmsOutsourceOrderD.create_time = DateTime.Now;
|
||||
wmsOutsourceOrderD.actual_quantity = 0;
|
||||
|
||||
var material = await db.Queryable<BasMaterial>().Where(p => p.code == detail.material_code).FirstAsync();
|
||||
if (material != null)
|
||||
{
|
||||
wmsOutsourceOrderD.matcode_id = material.id;
|
||||
wmsOutsourceOrderD.matspecification = material.material_specification;
|
||||
}
|
||||
|
||||
wmsOutsourceOrderDs.Add(wmsOutsourceOrderD);
|
||||
}
|
||||
|
||||
await db.Insertable(wmsOutsourceOrderDs).ExecuteCommandAsync();
|
||||
|
||||
await db.Ado.CommitTranAsync();
|
||||
|
||||
LoggerErp2Mes.LogInformation($"【OutsourceOrderInput】成功生成单据:{Code}");
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LoggerErp2Mes.LogError($"【OutsourceOrderInput】{ex.Message}");
|
||||
LoggerErp2Mes.LogError($"【OutsourceOrderInput】{ex.StackTrace}");
|
||||
await db.Ado.RollbackTranAsync();
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 转库单
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user