private void grdData_CurrentRowChanged(object sender) { RFMDataGridView grd = (RFMDataGridView)sender; if (grd.CurrentRow == null || grd.CurrentRow.Index < 0) { return; } int rowIndex = grd.CurrentRow.Index; if (grd.IsStatusRow(rowIndex)) { oFactureCur.ClearOne(); btnPrint.Enabled = btnService.Enabled = false; } else { DataRow r = ((DataRowView)((DataGridViewRow)grd.Rows[rowIndex]).DataBoundItem).Row; oFactureCur.FillOne(r); SetButtonStatus(r); } }
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)); }