private bool grdInputsDocuments_Restore()
        {
            grdInputsDocuments.GetGridState();
            grdInputsDocuments.DataSource = null;
            if (grdInputs.Rows.Count == 0 ||
                oInputCur.ID == null ||
                (grdInputs.CurrentRow != null && grdInputs.IsStatusRow(grdInputs.CurrentRow.Index)))
            {
                return(true);
            }

            oInputDocumentInInput.FilterInputsList = oInputCur.ID.ToString();
            oInputDocumentInInput.FillData();
            grdInputsDocuments.Restore(oInputDocumentInInput.MainTable);
            return(oInputDocumentInInput.ErrorNumber == 0);
        }
        private void btnInputDocumentSelect_Click(object sender, EventArgs e)
        {
            InputDocument oInputDocument = new InputDocument();

            oInputDocument.FilterDateBeg = DateTime.Today.AddMonths(-1);
            oInputDocument.FilterDateEnd = DateTime.Today;
            if (StartForm(new frmSelectOneInputDocument(this, false, oInputDocument)) == DialogResult.Yes)
            {
                oInputDocument.ID = _SelectedInputDocumentID;
                oInputDocument.FillData();
                if ((_SelectedInputDocumentID != null) && (oInputDocument.MainTable.Rows.Count > 0))
                {
                    txtInputDocument.Text = oInputDocument.MainTable.Rows[0]["ID"].ToString() + " [" +
                                            ((DateTime)oInputDocument.MainTable.Rows[0]["DateInput"]).ToShortDateString() + "] " +
                                            oInputDocument.MainTable.Rows[0]["PartnerSourceName"].ToString();
                    btnInputSelect.Enabled = btnInputClear.Enabled = false;
                }
            }
        }
Example #3
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));
             */
        }
        private bool grdInputsDocuments_Restore()
        {
            RFMCursorWait.Set(true);
            RFMCursorWait.LockWindowUpdate(FindForm().Handle);

            oInputDocumentCur.ClearOne();

            oInputDocumentList.ClearError();
            oInputDocumentList.ClearFilters();
            oInputDocumentList.ID     = null;
            oInputDocumentList.IDList = null;

            // собираем условия

            // даты
            if (!dtrDates.dtpBegDate.IsEmpty)
            {
                oInputDocumentList.FilterDateBeg = dtrDates.dtpBegDate.Value.Date;
            }
            if (!dtrDates.dtpEndDate.IsEmpty)
            {
                oInputDocumentList.FilterDateEnd = dtrDates.dtpEndDate.Value.Date;
            }

            // доставка?
            if (optDeliveryNeed.Checked)
            {
                oInputDocumentList.FilterDeliveryNeed = true;
            }
            if (optDeliveryNeedNot.Checked)
            {
                oInputDocumentList.FilterDeliveryNeed = false;
            }

            // клиенты-поставщики
            if (txtPartnerSourceNameContext.Text.Trim().Length > 0)
            {
                Partner oPartnerSource = new Partner();
                oPartnerSource.FilterNameContext = txtPartnerSourceNameContext.Text.Trim();
                oPartnerSource.FillData();
                oInputDocumentList.FilterPartnersSourceList = "";
                foreach (DataRow rcs in oPartnerSource.MainTable.Rows)
                {
                    oInputDocumentList.FilterPartnersSourceList += rcs["ID"].ToString() + ",";
                }
            }
            if (ucSelectRecordID_PartnersSource.IsSelectedExist)
            {
                oInputDocumentList.FilterPartnersSourceList += ucSelectRecordID_PartnersSource.GetIdString();
            }

            // клиенты-получатели
            if (txtPartnerTargetNameContext.Text.Trim().Length > 0)
            {
                Partner oPartnerTarget = new Partner();
                oPartnerTarget.FilterNameContext = txtPartnerTargetNameContext.Text.Trim();
                oPartnerTarget.FillData();
                oInputDocumentList.FilterPartnersTargetList = "";
                foreach (DataRow rct in oPartnerTarget.MainTable.Rows)
                {
                    oInputDocumentList.FilterPartnersTargetList += rct["ID"].ToString() + ",";
                }
            }
            if (ucSelectRecordID_PartnersTarget.IsSelectedExist)
            {
                oInputDocumentList.FilterPartnersTargetList += ucSelectRecordID_PartnersTarget.GetIdString();
            }

            // владельцы
            if (ucSelectRecordID_Owners.IsSelectedExist)
            {
                oInputDocumentList.FilterOwnersList = ucSelectRecordID_Owners.GetIdString();
            }

            // рейс?
            if (optTripExists.Checked)
            {
                oInputDocumentList.FilterTripExists = true;
            }
            if (optTripExistsNot.Checked)
            {
                oInputDocumentList.FilterTripExists = false;
            }

            // выбранные товары
            if (sSelectedPackingsIDList.Length > 0)
            {
                oInputDocumentList.FilterPackingsList = sSelectedPackingsIDList;
            }

            // подтверждение
            if (optInputsDocumentsIsConfirmedNot.Checked)
            {
                oInputDocumentList.FilterIsConfirmed = false;
            }
            if (optInputsDocumentsIsConfirmed.Checked)
            {
                oInputDocumentList.FilterIsConfirmed = true;
            }

            // по рейсу
            string sTripsList = "";

            if (txtTripAliasContext.Text.Trim().Length > 0)
            {
                Trip oTripFilter = new Trip();
                oTripFilter.FilterAliasContext = txtTripAliasContext.Text.Trim();
                oTripFilter.FillData();
                if (oTripFilter.ErrorNumber == 0 && oTripFilter.MainTable != null)
                {
                    foreach (DataRow tr in oTripFilter.MainTable.Rows)
                    {
                        sTripsList += tr["ID"].ToString() + ",";
                    }
                }
                oInputDocumentList.FilterTripsList = sTripsList;
            }
            if (numTripID.Value > 0)
            {
                if (oInputDocumentList.FilterTripsList == null)
                {
                    oInputDocumentList.FilterTripsList = Convert.ToInt32(numTripID.Value).ToString();
                }
                else
                {
                    oInputDocumentList.FilterTripsList += Convert.ToInt32(numTripID.Value).ToString();
                }
            }

            // хосты
            if (nUserHostID.HasValue)
            {
                oInputDocumentList.FilterHostsList = nUserHostID.ToString();
            }
            else
            {
                if (ucSelectRecordID_Hosts.IsSelectedExist)
                {
                    oInputDocumentList.FilterHostsList = ucSelectRecordID_Hosts.GetIdString();
                }
            }

            // начальные условия
            if (oInputDocument != null)
            {
                if (oInputDocument.FilterOwnersList != null)
                {
                    oInputDocumentList.FilterOwnersList = oInputDocument.FilterOwnersList;
                }
                if (oInputDocument.FilterPartnersSourceList != null)
                {
                    oInputDocumentList.FilterPartnersSourceList = oInputDocument.FilterPartnersSourceList;
                }
                if (oInputDocument.FilterPartnersTargetList != null)
                {
                    oInputDocumentList.FilterPartnersTargetList = oInputDocument.FilterPartnersTargetList;
                }
                if (oInputDocument.FilterHostsList != null)
                {
                    if (!nUserHostID.HasValue)
                    {
                        oInputDocumentList.FilterHostsList = oInputDocument.FilterHostsList;
                    }
                    else
                    {
                        if (!((string)("," + oInputDocument.FilterHostsList + ",")).Contains("," + nUserHostID.ToString().Trim() + ","))
                        {
                            oInputDocumentList.FilterHostsList = "-1";
                        }
                    }
                }
            }
            //

            grdInputsDocumentsGoods.DataSource = null;

            grdInputsDocuments.GetGridState();

            oInputDocumentList.FillData();
            grdInputsDocuments.IsLockRowChanged = true;
            grdInputsDocuments.Restore(oInputDocumentList.MainTable);
            tmrRestore.Enabled = true;

            RFMCursorWait.LockWindowUpdate(IntPtr.Zero);
            RFMCursorWait.Set(false);

            return(oInputDocumentList.ErrorNumber == 0);
        }
Example #5
0
        private bool dgvInputDocumentGoods_Restore()
        {
            oInputDocument.ClearError();
            oInputDocument.FillData();
            if (oInputDocument.ErrorNumber == 0)
            {
                if (nInputDocumentID != 0)
                {
                    oInputDocument.FillTableInputsDocumentsGoods();
                }
                else
                {
                    oInputDocument.FillTableInputsDocumentsGoodsFromInput((int)nInputID);
                }
                if (oInputDocument.ErrorNumber == 0)
                {
                    oInputDocument.TableInputsDocumentsGoods.PrimaryKey                                 = null;
                    oInputDocument.TableInputsDocumentsGoods.Columns["ID"].Unique                       = false;
                    oInputDocument.TableInputsDocumentsGoods.Columns["ID"].AllowDBNull                  = true;
                    oInputDocument.TableInputsDocumentsGoods.Columns["InputDocumentGoodID"].Unique      = false;
                    oInputDocument.TableInputsDocumentsGoods.Columns["InputDocumentGoodID"].AllowDBNull = true;
                    //oInputDocument.TableInputsDocumentsGoods.Columns["InputDocumentGoodID"].DefaultValue = -1;
                    //oInputDocument.TableInputsDocumentsGoods.PrimaryKey = new DataColumn[] { oInputDocument.TableInputsDocumentsGoods.Columns["InputDocumentGoodID"] };

                    // колонки для исправления
                    if (oInputDocument.TableInputsDocumentsGoods.Columns["QntWished"] == null)
                    {
                        oInputDocument.TableInputsDocumentsGoods.Columns.Add("QntWished", System.Type.GetType("System.Decimal"));
                    }
                    if (oInputDocument.TableInputsDocumentsGoods.Columns["QntBrought"] == null)
                    {
                        oInputDocument.TableInputsDocumentsGoods.Columns.Add("QntBrought", System.Type.GetType("System.Decimal"));
                    }
                    if (oInputDocument.TableInputsDocumentsGoods.Columns["BoxWished"] == null)
                    {
                        oInputDocument.TableInputsDocumentsGoods.Columns.Add("BoxWished", System.Type.GetType("System.Decimal"));
                    }
                    if (oInputDocument.TableInputsDocumentsGoods.Columns["BoxBrought"] == null)
                    {
                        oInputDocument.TableInputsDocumentsGoods.Columns.Add("BoxBrought", System.Type.GetType("System.Decimal"));
                    }
                    // колонка для суммы
                    if (oInputDocument.TableInputsDocumentsGoods.Columns["PriceSum"] == null)
                    {
                        oInputDocument.TableInputsDocumentsGoods.Columns.Add("PriceSum", System.Type.GetType("System.Decimal"));
                    }

                    // заполнить начальные значения
                    decimal nAmount = 0;
                    decimal nQnt    = 0;
                    decimal nBox    = 0;
                    foreach (DataRow droRow in oInputDocument.TableInputsDocumentsGoods.Rows)
                    {
                        droRow["BoxBrought"]    =
                            droRow["BoxWished"] =
                                droRow["Box"];
                        droRow["QntBrought"]    =
                            droRow["QntWished"] =
                                droRow["Qnt"];
                        droRow["PriceSum"] = (decimal)droRow["QntBrought"] * (decimal)droRow["Price"];
                        nQnt    += (decimal)droRow["QntBrought"];
                        nBox    += (decimal)droRow["BoxBrought"];
                        nAmount += (decimal)droRow["PriceSum"];

                        // НДС
                        if (Convert.IsDBNull(droRow["Vat"]) || droRow["Vat"] == null)
                        {
                            droRow["Vat"] = 0;
                        }

                        /*
                         * if (Convert.IsDBNull(droRow["Vat"]) || droRow["Vat"] == null || (decimal)droRow["Vat"] == 0)
                         * {
                         *      droRow["Vat"] = oGood.Vat((int)droRow["PackingID"], oInputDocument.DateInput);
                         * }
                         */
                    }
                    dgvInputDocumentGoods.Restore(oInputDocument.TableInputsDocumentsGoods);
                    lblTotalAmount.Text = nAmount.ToString("### ### ##0.00").Trim();
                    lblTotalQnt.Text    = nQnt.ToString("### ### ##0").Trim();
                    lblTotalBox.Text    = nBox.ToString("# ### ##0.0").Trim();
                }
            }
            return(oInputDocument.ErrorNumber == 0);
        }