/// <summary> /// Обработчик заказа /// </summary> /// <param name="l4MsgInfo">Модель таблицы L4L3Event для обработки кода</param> /// <returns>Результат обработки</returns> public TCheckResult SalesOrderMng(TL4MsgInfo l4MsgInfo) { TCheckResult checkResult = new TCheckResult(); checkResult.isOK = false; tSo = new TSoHeaderRepo(); L4L3SoHeaderRepo header = new L4L3SoHeaderRepo(); L4L3SoHeader soHeader = header.GetData(l4MsgInfo); BlockForProcess(l4MsgInfo, true); string charval; string sqlstr = "SELECT CHAR_VALUE FROM AUX_CONSTANT WHERE CONSTANT_ID='ONE_TO_SEVERAL_ORDER_FROM_SAP'"; using (OracleConnection connection = BaseRepo.GetDBConnection()) { charval = connection.QueryFirstOrDefault <string>(sqlstr, null); } if (charval != null) { onetoSeveralirderFromSap = charval; } else { onetoSeveralirderFromSap = "N"; } if (onetoSeveralirderFromSap == "Y") { List <l4sol> l4s = new List <l4sol>(); sqlstr = "SELECT L4SOL.SO_LINE_ID, L4SOL.SO_LINE_ID/10 as MET_SO_LINE_ID " + "FROM L4_L3_SO_LINE L4SOL WHERE L4SOL.MSG_COUNTER = :MSG_COUNTER"; if (m_strSo_Lines_For_Where != "") { sqlstr += $"AND L4SOL.SO_LINE_ID IN {m_strSo_Lines_For_Where}"; } sqlstr += "ORDER BY L4SOL.SO_LINE_ID"; OracleDynamicParameters odp = new OracleDynamicParameters(); odp.Add("MSG_COUNTER", l4MsgInfo.msgCounter); using (OracleConnection connection = BaseRepo.GetDBConnection()) { l4s = connection.Query <l4sol>(sqlstr, null).AsList(); } if (l4s != null) { foreach (l4sol kSol in l4s) { if (!OrderCanBeProcess(soHeader.soID, l4MsgInfo.opCode, "")) { l4MsgInfo.msgReport.status = L4L3InterfaceServiceConst.MSG_STATUS_ERROR; l4MsgInfo.msgReport.remark = ""; } else if (!OrderCanBeProcess($"{soHeader.soID}_{kSol.metSoLineId}", l4MsgInfo.opCode, "")) { l4MsgInfo.msgReport.status = L4L3InterfaceServiceConst.MSG_STATUS_ERROR; l4MsgInfo.msgReport.remark = ""; } else { m_strSO_Line_Id_Params = kSol.soLineId; m_strSO_Line_Id_MET = kSol.metSoLineId; tSo.m_strSO_Line_Id_MET = kSol.metSoLineId; tSo.m_strSO_Line_Id_Params = kSol.soLineId; l4MsgInfo.msgReport.status = L4L3InterfaceServiceConst.MSG_STATUS_SUCCESS; l4MsgInfo.msgReport.remark = ""; l4MsgInfo = CheckUpdateOPCODE(l4MsgInfo); switch (l4MsgInfo.opCode) { case L4L3InterfaceServiceConst.OP_CODE_NEW: CreateNewOrder(soHeader, l4MsgInfo); break; case L4L3InterfaceServiceConst.OP_CODE_DEL: UpdateOrder(soHeader, l4MsgInfo, true); break; case L4L3InterfaceServiceConst.OP_CODE_UPD: UpdateOrder(soHeader, l4MsgInfo); break; default: l4MsgInfo.msgReport.status = L4L3InterfaceServiceConst.MSG_STATUS_ERROR; l4MsgInfo.msgReport.remark = $"{l4MsgInfo.opCode} неверный код операции"; break; } } } } checkResult.isOK = true; return(checkResult); } else { if (!OrderCanBeProcess(soHeader.soID, l4MsgInfo.opCode, "")) { l4MsgInfo.msgReport.status = L4L3InterfaceServiceConst.MSG_STATUS_ERROR; l4MsgInfo.msgReport.remark = "Заказ уже принимался по схеме с разбиением на несколько заказов."; return(checkResult); } CheckUpdateOPCODE(l4MsgInfo); switch (l4MsgInfo.opCode) { case L4L3InterfaceServiceConst.OP_CODE_NEW: CreateNewOrder(soHeader, l4MsgInfo); break; case L4L3InterfaceServiceConst.OP_CODE_DEL: UpdateOrder(soHeader, l4MsgInfo, true); break; case L4L3InterfaceServiceConst.OP_CODE_UPD: UpdateOrder(soHeader, l4MsgInfo); break; default: l4MsgInfo.msgReport.status = L4L3InterfaceServiceConst.MSG_STATUS_ERROR; l4MsgInfo.msgReport.remark = $"{l4MsgInfo.opCode} неверный код операции"; break; } BlockForProcess(l4MsgInfo, false); checkResult.isOK = true; return(checkResult); } }