Esempio n. 1
0
        /// <summary>
        /// Получение линии заказа
        /// </summary>
        /// <param name="iIndex">Индекс</param>
        /// <returns>Линия заказа</returns>
        public TSoLine GetLine(int iIndex)
        {
            TSoLine line = new TSoLine();

            line = soHeader.m_Lines[iIndex];
            return(line);
        }
Esempio n. 2
0
 /// <summary>
 /// Конструктор создания моделей двух таблиц SO_HEADER и SO_LINE
 /// </summary>
 public TSoHeaderRepo()
 {
     this.soHeader = new TSoHeader();
     this.templine = new TSoLine();
 }
Esempio n. 3
0
 /// <summary>
 /// Добавление линии заказа в модель таблицы SO_HEADER
 /// </summary>
 /// <param name="lines"></param>
 public void Add(TSoLine lines)
 {
     soHeader.m_iLinesCount++;
     soHeader.m_Lines.Add(lines);
 }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
 /// <summary>
 /// Конструктор создания таблицы SO_LINE и передача функций для выполнения из SOManagement
 /// </summary>
 public TSoLineRepo()
 {
     this.newData = new TSoLine();
     this.som     = new SOManagment();
 }