private void tmrRestore_Tick(object sender, EventArgs e)
        {
            tmrRestore.Enabled = false;

            if (grdInputsDocuments.CurrentRow == null)
            {
                return;
            }

            int rowIndex = grdInputsDocuments.CurrentRow.Index;

            // заказы на поставку
            if (grdInputsDocuments.IsStatusRow(rowIndex))
            {
            }
            else
            {
                // заполнение объекта по текущей строке
                DataRow r = ((DataRowView)((DataGridViewRow)grdInputsDocuments.Rows[rowIndex]).DataBoundItem).Row;
                oInputDocumentCur.FillOne(r);
            }
            tcInputsDocumentsGoods.SetAllNeedRestore(true);
        }
Ejemplo n.º 2
0
        private void WarrantsAnalysis()
        {
            // тестирование доверенностей за период
            DateTime dDateBeg = DateTime.Now.Date;
            DateTime dDateEnd = DateTime.Now.Date.AddMonths(-1);

            if (StartForm(new frmDateRange(dDateBeg, dDateEnd)) == DialogResult.Yes)
            {
                if (GotParam[0] != null)
                {
                    dDateBeg = (DateTime)GotParam[0];
                }
                else
                {
                    dDateBeg = Convert.ToDateTime("01.01.1900");
                }

                if (GotParam[1] != null)
                {
                    dDateEnd = (DateTime)GotParam[1];
                }
                else
                {
                    dDateEnd = Convert.ToDateTime("31.12.2099");
                }
            }

            WarrantNumber oWarrantAnalysis = new WarrantNumber();

            oWarrantAnalysis.FilterDateBeg = dDateBeg;
            oWarrantAnalysis.FilterDateEnd = dDateEnd;
            oWarrantAnalysis.FillData();
            if (oWarrantAnalysis.ErrorNumber != 0 || oWarrantAnalysis.MainTable == null)
            {
                RFMMessage.MessageBoxError("Ошибка при анализе списка доверенностей...");
                return;
            }
            if (oWarrantAnalysis.MainTable.Rows.Count == 0)
            {
                RFMMessage.MessageBoxError("Нет данных о доверенностях за период...");
                return;
            }

            WaitOn(this);

            string sEol = Environment.NewLine;

            OutputDocument oOutputDocument = new OutputDocument();
            InputDocument  oInputDocument  = new InputDocument();

            DataTable dtWarrant = CopyTable(oWarrantAnalysis.MainTable, "dtWarrant", "", "PartnerSourceID, NumberInt, Number, DateIssue");

            string sText = "Анализ журнала выдачи доверенностей за период " + dDateBeg.ToString("dd.MM.yyyy") + " - " + dDateEnd.ToString("dd.MM.yyyy") +
                           sEol;

            int    nPartnerSourceID = -1;
            int    nNumberInt       = -1;
            int    nNumberIntOld    = -1;
            string sNumber          = "";
            bool   bOK = true;

            foreach (DataRow rW in dtWarrant.Rows)
            {
                oWarrantAnalysis.FillOne(rW);

                // новый партнер
                if (nPartnerSourceID != oWarrantAnalysis.PartnerSourceID)
                {
                    sText += sEol +
                             "Доверенности выданы фирмой: " + oWarrantAnalysis.PartnerSourceName +
                             sEol;
                    nPartnerSourceID = oWarrantAnalysis.PartnerSourceID;

                    nNumberInt    = -1;
                    nNumberIntOld = -1;
                    sNumber       = "";
                    bOK           = true;
                }

                nNumberInt = oWarrantAnalysis.NumberInt;
                sNumber    = oWarrantAnalysis.Number;

                // нумерация
                if (nNumberIntOld != -1)
                {
                    if (nNumberInt == nNumberIntOld)
                    {
                        sText += sNumber + "(" + nNumberInt.ToString().Trim() + "): доверенности с одинаковым порядковым номером" +
                                 sEol;
                        bOK = false;
                    }
                    if (nNumberInt != nNumberIntOld + 1)
                    {
                        sText += sNumber + " (" + nNumberIntOld.ToString() + " - " + nNumberInt.ToString().Trim() + "): пропуск в порядковых номерах доверенностей" +
                                 sEol;
                        bOK = false;
                    }
                }

                // заказы

                // заказ на отгрузку
                if (oWarrantAnalysis.OutputDocumentID.HasValue)
                {
                    oOutputDocument.ID = (int)oWarrantAnalysis.OutputDocumentID;
                    oOutputDocument.FillData();
                    if (oOutputDocument.MainTable.Rows.Count == 0)
                    {
                        sText += sNumber + ": не найден заказ на отгрузку с кодом " + oWarrantAnalysis.OutputDocumentID +
                                 sEol;
                        bOK = false;
                    }
                    else
                    {
                        oOutputDocument.FillOne();
                        // номера
                        if (oOutputDocument.WarrantNumber != sNumber)
                        {
                            sText += sNumber + ": не совпадают номера доверенностей в журнале и в заказе на отгрузку (" + oOutputDocument.WarrantNumber.ToString().Trim() + ")" +
                                     sEol;
                            bOK = false;
                        }
                        //
                        if (oOutputDocument.IsWarrantReturned && !oWarrantAnalysis.IsReturned)
                        {
                            sText += sNumber + ": в заказе на отгрузку доверенность возвращена, в журнале нет" +
                                     sEol;
                            bOK = false;
                        }
                        if (!oOutputDocument.IsWarrantReturned && oWarrantAnalysis.IsReturned)
                        {
                            sText += sNumber + ": в журнале доверенность возвращена, в заказе на отгрузку нет" +
                                     sEol;
                            bOK = false;
                        }
                        if (oWarrantAnalysis != null && oWarrantAnalysis.CurrencyID != null &&
                            (oOutputDocument.GetMoneyConfirmed != oWarrantAnalysis.Amount ||
                             oOutputDocument.GetCurrencyID != oWarrantAnalysis.CurrencyID))
                        {
                            sText += sNumber + ": сумма/валюта в журнале (" + ((decimal)oWarrantAnalysis.Amount).ToString("#####0.00") + oWarrantAnalysis.CurrencyName +
                                     ") и в заказе на отгрузку (" + oOutputDocument.GetMoneyConfirmed.ToString("#####0.00") + oOutputDocument.GetCurrencyName + ") не совпадают" +
                                     sEol;
                            bOK = false;
                        }
                    }
                }

                // заказ на поставку
                if (oWarrantAnalysis.InputDocumentID.HasValue)
                {
                    oInputDocument.ID = (int)oWarrantAnalysis.InputDocumentID;
                    oInputDocument.FillData();
                    if (oInputDocument.MainTable.Rows.Count != 1)
                    {
                        sText += sNumber + ": не найден заказ на поставку с кодом " + oWarrantAnalysis.InputDocumentID +
                                 sEol;
                        bOK = false;
                    }
                    else
                    {
                        oInputDocument.FillOne();
                        // номера
                        if (oInputDocument.WarrantNumber != sNumber)
                        {
                            sText += sNumber + ": не совпадают номера доверенностей в журнале и в заказе на поставку (" + oInputDocument.WarrantNumber.ToString().Trim() + ")" +
                                     sEol;
                            bOK = false;
                        }
                    }
                }
                // проверки законечены, переходим к следующей доверенности в списке

                nNumberIntOld = (int)rW["NumberInt"];
            }
            if (bOK)
            {
                sText += "OK" + sEol;
            }

            // анализ таблиц заказов

            // заказы на отгрузку
            bOK = true;
            oOutputDocument.FilterDateBeg = dDateBeg;
            oOutputDocument.FilterDateEnd = dDateEnd;
            oOutputDocument.FillData();
            if (oOutputDocument.ErrorNumber != 0 || oOutputDocument.MainTable == null)
            {
                RFMMessage.MessageBoxError("Ошибка при анализе списка заказов на отгрузку...");
            }
            else
            {
                if (oOutputDocument.MainTable.Rows.Count > 0)
                {
                    sText += sEol +
                             "Анализ списка заказов на отгрузку: " +
                             sEol;

                    string sOutputDocument = "";
                    foreach (DataRow rO in oOutputDocument.MainTable.Rows)
                    {
                        oOutputDocument.FillOne();
                        sOutputDocument = oOutputDocument.ID.ToString().Trim();
                        sNumber         = oOutputDocument.WarrantNumber;
                        if (sNumber == null)
                        {
                            sNumber = "";
                        }

                        // наличие доверенности
                        if (oOutputDocument.IsConfirmed)
                        {
                            if (oOutputDocument.PF_WarrantNeed && sNumber.Length == 0)
                            {
                                sText += sOutputDocument + ": не определен номер доверенности для заказа, где требуется доверенность" +
                                         sEol;
                                bOK = false;
                            }
                        }
                        if (!oOutputDocument.PF_WarrantNeed && sNumber.Length > 0)
                        {
                            sText += sOutputDocument + ": определен номер доверенности (" + sNumber + ") для заказа, где не требуется доверенность" +
                                     sEol;
                            bOK = false;
                        }

                        if (oOutputDocument.PF_WarrantNeed && sNumber.Length > 0)
                        {
                            oWarrantAnalysis.FilterOutputsDocumentsList = sOutputDocument;
                            oWarrantAnalysis.FillData();
                            if (oWarrantAnalysis.MainTable.Rows.Count == 0)
                            {
                                sText += sOutputDocument + ": в журнале не найдена доверенность (" + sNumber + ") для заказа" +
                                         sEol;
                                bOK = false;
                            }
                            if (oWarrantAnalysis.MainTable.Rows.Count > 1)
                            {
                                sText += sOutputDocument + ": в журнале найдено несколько доверенностей для заказа (" + sNumber + ")" +
                                         sEol;
                                bOK = false;
                            }

                            oWarrantAnalysis.FilterNumberContext      = sNumber;
                            oWarrantAnalysis.FilterPartnersSourceList = oOutputDocument.PartnerSourceID.ToString();
                            oWarrantAnalysis.FilterDateBeg            = oOutputDocument.DateOutput.AddDays(-10);
                            oWarrantAnalysis.FilterDateEnd            = oOutputDocument.DateOutput.AddDays(10);
                            oWarrantAnalysis.FillData();
                            if (oWarrantAnalysis.MainTable.Rows.Count == 0)
                            {
                                sText += sOutputDocument + ": в журнале не найдена доверенность по номеру (" + sNumber + "), указанному в заказе" +
                                         sEol;
                                bOK = false;
                            }
                            if (oWarrantAnalysis.MainTable.Rows.Count > 1)
                            {
                                sText += sOutputDocument + ": в журнале найдено несколько доверенностей по номеру (" + sNumber + "), указанному в заказе" +
                                         sEol;
                                bOK = false;
                            }

                            oWarrantAnalysis.FillOne();
                            if (oWarrantAnalysis.OutputDocumentID != oOutputDocument.ID)
                            {
                                sText += sOutputDocument + ": в журнале найдена доверенность по номеру (" + sNumber + "), но в ней указан другой заказ" +
                                         sEol;
                                bOK = false;
                            }
                            if (oWarrantAnalysis.PartnerSourceID != oOutputDocument.PartnerSourceID ||
                                oWarrantAnalysis.PartnerTargetID != oOutputDocument.PartnerTargetID)
                            {
                                sText += sOutputDocument + ": в журнале найдена доверенность по номеру (" + sNumber + "), но в ней указан другой клиент" +
                                         sEol;
                                bOK = false;
                            }
                            if (oWarrantAnalysis.Amount != null && oWarrantAnalysis.CurrencyID != null &&
                                ((decimal)oWarrantAnalysis.Amount != oOutputDocument.GetMoneyConfirmed ||
                                 (int)oWarrantAnalysis.CurrencyID != oOutputDocument.GetCurrencyID))
                            {
                                sText += sOutputDocument + ": в журнале найдена доверенность по номеру (" + sNumber + "), но в ней указана другая сумма" +
                                         sEol;
                                bOK = false;
                            }
                        }

                        if (!oOutputDocument.PF_WarrantNeed)
                        {
                            oWarrantAnalysis.FilterOutputsDocumentsList = sOutputDocument;
                            if (oWarrantAnalysis.MainTable.Rows.Count > 0)
                            {
                                sText += sOutputDocument + ": в журнале найдена доверенность (" + oWarrantAnalysis.MainTable.Rows[0]["Number"].ToString() + ") для заказа, для которого она не требуется" +
                                         sEol;
                                bOK = false;
                            }
                        }

                        // переходим к след.заказу
                    }
                    if (bOK)
                    {
                        sText += "OK";
                    }
                }
            }

            // здесь должны быть аналогичные проверки для заказов на поставку InputsDocuments
            bOK = true;

            // выводим отчет
            WaitOff(this);
            StartForm(new frmSysTextReport(sText));

            /*
             * string sFileName = ((RFMFormMain)Application.OpenForms[0]).UserInfo.UserLocPath + "WarrantsAnalysis.txt";
             * File.AppendAllText(sFileName, sText, Encoding.Default);
             * StartForm(new frmSysTextReport(true, sFileName));
             */
        }