/// <summary> /// Получение линии заказа /// </summary> /// <param name="iIndex">Индекс</param> /// <returns>Линия заказа</returns> public TSoLine GetLine(int iIndex) { TSoLine line = new TSoLine(); line = soHeader.m_Lines[iIndex]; return(line); }
/// <summary> /// Конструктор создания моделей двух таблиц SO_HEADER и SO_LINE /// </summary> public TSoHeaderRepo() { this.soHeader = new TSoHeader(); this.templine = new TSoLine(); }
/// <summary> /// Добавление линии заказа в модель таблицы SO_HEADER /// </summary> /// <param name="lines"></param> public void Add(TSoLine lines) { soHeader.m_iLinesCount++; soHeader.m_Lines.Add(lines); }
/// <summary> /// Создание и заполнение модели таблицы SO_HEADER /// </summary> /// <param name="l4l3soheader">Модель таблицы L4L3SoHeader для обработки</param> /// <param name="l4MsgInfo">Модель таблицы L4L3Event для обработки содержимого кода</param> /// <param name="iShipToCode">Код отгрузки</param> /// <param name="bVerifyData">Пометка об актуальности данных</param> /// <param name="bisUpdate">Пометка об обновлении данных</param> /// <returns></returns> public TSoHeader Create(L4L3SoHeader l4l3soheader, TL4MsgInfo l4MsgInfo, int iShipToCode, bool bVerifyData, bool bisUpdate = false) { TL4EngineInterfaceMngRepo mngRepo = new TL4EngineInterfaceMngRepo(l4MsgInfo); bool bIsValid = true; try { soHeader.m_iLinesCount = 0; if (bIsValid) { soHeader.m_iCustSoldDescrID = CheckValue(bIsValid, l4MsgInfo); } if (!ExistCustomer(soHeader.m_iCustSoldDescrID.ToString())) { mngRepo.NotifyErrorMessage($"Заказчик САП {l4l3soheader.customerId} неверен или срок валидности закончился"); bIsValid = false; } if (bIsValid) { if (oneToSeveralOrderFromSap == 'Y') { soHeader.m_sSoDescrID = l4l3soheader.soID + "_" + m_strSO_Line_Id_MET; } else { soHeader.m_sSoDescrID = l4l3soheader.soID; } if (l4l3soheader.customerPo.Length > 0) { soHeader.m_strCustPO = l4l3soheader.customerPo; } else { mngRepo.NotifyErrorMessage("'CUSTOMER_PO' поле не может быть пустым"); bIsValid = false; } if (l4l3soheader.customerPoDate.ToString().Length > 0) { soHeader.m_dCustPODate = l4l3soheader.customerPoDate; } else { soHeader.m_dCustPODate = l4l3soheader.insertDate; } if (l4l3soheader.inquiryRefNumber.Length > 0) { soHeader.m_strInquirtNumber = l4l3soheader.inquiryRefNumber; } else { soHeader.m_strInquirtNumber = soHeader.m_strCustPO; } if (l4l3soheader.inquiryRefDate.ToString().Length > 0) { soHeader.m_dInquiryDate = l4l3soheader.inquiryRefDate; } else { soHeader.m_dInquiryDate = soHeader.m_dCustPODate; } } if (bIsValid) { soHeader.m_iInsertUser = mngRepo.GetCreateUserId(); if (soHeader.m_iInsertUser == "") { bIsValid = false; } } if (bIsValid) { if (l4l3soheader.insertDate.ToString().Length > 0) { soHeader.m_dInsertDate = l4l3soheader.insertDate; } } if (bIsValid) { soHeader.m_iUpdateUser = mngRepo.GetModUserId(); if (soHeader.m_iUpdateUser == "") { bIsValid = false; } } if (bIsValid) { if (l4MsgInfo.opCode > 0) { soHeader.m_iOpCode = l4MsgInfo.opCode; } } if (bIsValid) { switch (som.DecodeContractType(soHeader.m_sSoDescrID, l4l3soheader.customerId.ToString())) { case TContractType.coInternal: if (som.IsCustomerInternal(soHeader.m_iCustSoldDescrID)) { mngRepo.NotifyErrorMessage("Заказ обозначен как внутренний, но имеет внешнего заказчика"); bIsValid = false; } break; } } if (bIsValid) { List <LinesCom> lines = new List <LinesCom>(); string str = "SELECT L4SOL.* " + "L4EVE.MSG_STATUS " + "L4EVE.MSG_REMARK, " + "L4SOL.SO_LINE_ID/10 AS SO_LINE_MET, " + "PTC.PRODUCT_TYPE AS PROD_MET, " + "L4EVE.OP_CODE, " + "L4SOL.LINE_NOTE " + "FROM L4_L3_SO_LINE L4SOL, " + "PRODUCT_TYPE_CATALOGUE PTC " + "L4_L3_EVENT L4EVE " + $"WHERE L4SOL.MSG_COUNTER = :{l4MsgInfo.msgCounter}" + "AND L4SOL.MSG_COUNTER = L4EVE.MSG_COUNTER " + "AND ptc.SAP_CODE = l4sol.PRODUCT_TYPE"; if (oneToSeveralOrderFromSap == 'Y') { str += $"AND L4SOL.SO_LINE_ID = '{m_strSO_Line_Id_Params}'"; } str += "ORDER BY L4SOL.SO_LINE_ID "; using (OracleConnection connection = GetConnection()) { lines = connection.Query <LinesCom>(str, null).AsList(); } foreach (LinesCom line in lines) { templine = lineRepo.Create(line, l4MsgInfo, soHeader.m_iCustSoldDescrID, iShipToCode, bisUpdate); templine.m_strDescription = line.lineNote; if (!bVerifyData) { mngRepo.NotifyErrorMessage($"Ошибка в строке {templine.m_iSoLineID} {templine.m_L4MsgInfoLine.tL4MsgInfo.msgReport.remark}"); templine.m_L4MsgInfoLine.tL4MsgInfo.msgReport.status = L4L3InterfaceServiceConst.MSG_STATUS_ERROR; Add(templine); break; } Add(templine); } } } catch (Exception e) { logger.Error($"Ошибка создания SoHeader: {e.Message}"); } return(soHeader); }
/// <summary> /// Конструктор создания таблицы SO_LINE и передача функций для выполнения из SOManagement /// </summary> public TSoLineRepo() { this.newData = new TSoLine(); this.som = new SOManagment(); }