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); }
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)); */ }