public frmFacturesNumbers()
        {
            oFactureList = new FactureNumber();
            oFactureCur  = new FactureNumber();
            if (oFactureList.ErrorNumber != 0 ||
                oFactureCur.ErrorNumber != 0)
            {
                IsValid = false;
            }

            if (IsValid)
            {
                InitializeComponent();
            }
        }
        private void FacturesAnalysis()
        {
            // тестирование счетов-фактур за период
            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.2059");
                }
            }

            FactureNumber oFactureAnalysis = new FactureNumber();

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

            WaitOn(this);

            string sEol = Environment.NewLine;

            OutputDocument oOutputDocument = new OutputDocument();

            DataTable dtFacture = CopyTable(oFactureAnalysis.MainTable, "dtFacture", "", "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 dtFacture.Rows)
            {
                oFactureAnalysis.FillOne(rW);

                // новый партнер
                if (nPartnerSourceID != oFactureAnalysis.PartnerSourceID)
                {
                    sText += sEol +
                             "Cчета-фактуры выданы фирмой: " + oFactureAnalysis.PartnerSourceName +
                             sEol;
                    nPartnerSourceID = oFactureAnalysis.PartnerSourceID;

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

                nNumberInt = oFactureAnalysis.NumberInt;
                sNumber    = oFactureAnalysis.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 (oFactureAnalysis.OutputDocumentID.HasValue)
                {
                    oOutputDocument.ID = (int)oFactureAnalysis.OutputDocumentID;
                    oOutputDocument.FillData();
                    if (oOutputDocument.MainTable.Rows.Count == 0)
                    {
                        sText += sNumber + ": не найден расходный документ с кодом " + oFactureAnalysis.OutputDocumentID +
                                 sEol;
                        bOK = false;
                    }
                    else
                    {
                        oOutputDocument.FillOne();
                        // номера
                        if (oOutputDocument.FactureNumber != sNumber)
                        {
                            sText += sNumber + ": не совпадают номера счетов-фактур в журнале и в расходном документе (" + oOutputDocument.FactureNumber.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.FactureNumber;
                        if (sNumber == null)
                        {
                            sNumber = "";
                        }

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

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

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

                            oFactureAnalysis.FillOne();
                            if (oFactureAnalysis.OutputDocumentID != oOutputDocument.ID)
                            {
                                sText += sOutputDocument + ": в журнале найден счет-фактура по номеру (" + sNumber + "), но в нем указан другой заказ" +
                                         sEol;
                                bOK = false;
                            }
                            if (oFactureAnalysis.PartnerSourceID != oOutputDocument.PartnerSourceID ||
                                oFactureAnalysis.PartnerTargetID != oOutputDocument.PartnerTargetID)
                            {
                                sText += sOutputDocument + ": в журнале найден счет-фактура по номеру (" + sNumber + "), но в нем указан другой клиент" +
                                         sEol;
                                bOK = false;
                            }
                        }

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

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

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

            // выводим отчет
            WaitOff(this);
            StartForm(new frmSysTextReport(sText));
        }
Esempio n. 3
0
        public void FillFactures()
        {
            if (FactureNumber.ToString().Trim() != "0" && (FactureNumber % 1) == 0)
            {
                try
                {
                    FactureModel        fm   = new FactureModel();
                    List <FactureModel> list = new List <FactureModel>()
                    {
                        fm.GetMeByNumber(FactureNumber, Customer.Id)
                    };
                    if (list[0] == null)
                    {
                        throw new Exception("No facture for " + Customer.Name + " with number " + FactureNumber);
                    }
                    Factures = new BindableCollection <FactureModel>(list);
                }
                catch (Exception e)
                {
                    Factures = new BindableCollection <FactureModel>();
                }
            }
            else
            {
                switch (FactureType)
                {
                case "All":
                    switch (FacturesSeason.Id.ToString())
                    {
                    case "0":
                        if (FacturesSeason.Year == "None")
                        {
                            Factures = Customer.GetMyFactures(0);
                        }
                        else
                        {
                            Factures = Customer.GetMyFactures();
                        }
                        break;

                    default:
                        Factures = Customer.GetMyFactures(FacturesSeason.Id);
                        break;
                    }
                    break;

                case "Cleared":
                    switch (FacturesSeason.Id.ToString())
                    {
                    case "0":
                        if (FacturesSeason.Year == "None")
                        {
                            Factures = Customer.GetMyClearedFactures(0);
                        }
                        else
                        {
                            Factures = Customer.GetMyClearedFactures(FacturesSeason.Id);
                        }
                        break;

                    default:
                        Factures = Customer.GetMyClearedFactures(FacturesSeason.Id);
                        break;
                    }
                    break;

                case "Uncleared":
                    switch (FacturesSeason.Id.ToString())
                    {
                    case "0":
                        if (FacturesSeason.Year == "None")
                        {
                            Factures = Customer.GetMyUnClearedFactures(0);
                        }
                        else
                        {
                            Factures = Customer.GetMyUnClearedFactures(FacturesSeason.Id);
                        }
                        break;

                    default:
                        Factures = Customer.GetMyUnClearedFactures(FacturesSeason.Id);
                        break;
                    }
                    break;

                default:
                    break;
                }
            }
        }