public void ShowNotice(DTP dtp)
        {
            _excelDoc = openDocumentExcel("Извещение о страховом случае");

            var owners = Owners.getInstance();

            _excelDoc.setValue(6, 5, owners.getItem(Convert.ToInt32(_car.ownerID))); //страхователь
            _excelDoc.setValue(7, 6, "а/я 34, 196128");                              //почтовый адрес
            _excelDoc.setValue(8, 7, "320-40-04");                                   //телефон

            var driverCarList = DriverCarList.getInstance();
            var driver        = driverCarList.GetDriver(_car, dtp.Date);

            var passportList = PassportList.getInstance();
            var passport     = passportList.getLastPassport(driver);

            if (passport.Number != string.Empty)
            {
                var number  = passport.Number;
                var numbers = number.Split(' ');

                _excelDoc.setValue(10, 3, numbers[0]);                            //серия
                _excelDoc.setValue(10, 6, numbers[1]);                            //номер

                _excelDoc.setValue(11, 3, passport.GiveOrg);                      //кем выдан
                _excelDoc.setValue(12, 4, passport.GiveDate.ToShortDateString()); //дата выдачи
            }

            var policyList = PolicyList.getInstance();
            var policy     = policyList.getItem(_car, PolicyType.КАСКО);

            _excelDoc.setValue(14, 6, policy.Number);                                       //полис

            _excelDoc.setValue(16, 6, string.Concat(_car.Mark.Name, " ", _car.info.Model)); //марка а/м
            _excelDoc.setValue(18, 6, _car.Grz);                                            //рег номер а/м
            _excelDoc.setValue(20, 6, _car.vin);                                            //вин

            _excelDoc.setValue(22, 6, dtp.Date.ToShortDateString());                        //дата дтп

            _excelDoc.setValue(27, 2, driver.GetName(NameType.Full));                       //водитель фио

            var regions = Regions.getInstance();

            _excelDoc.setValue(29, 3, regions.getItem(Convert.ToInt32(dtp.IDRegion))); //город
            _excelDoc.setValue(31, 14, dtp.Damage);                                    //повреждения
            _excelDoc.setValue(33, 2, dtp.Facts);                                      //обстоятельства происшествия

            //SsDTP ssDTP = SsDTPList.getInstance().getItem(_car.Mark);

            //_excelDoc.setValue(63, 11, ssDTP.ServiceStantion);

            //DateTime date = DateTime.Today;
            //MyDateTime myDate = new MyDateTime(date.ToShortDateString());

            //_excelDoc.setValue(71, 3, string.Concat("« ", date.Day.ToString(), " »"));
            //_excelDoc.setValue(71, 4, myDate.MonthToStringGenitive());
            //_excelDoc.setValue(71, 8, date.Year.ToString().Substring(2, 2));

            _excelDoc.Show();
        }
        private void CreateExcelFromDGV(DataGridView dgv, int minRow, int rowCount, int minColumn, int columnCount)
        {
            _excelDoc = new ExcelDoc();
            WriteHeader(dgv, minColumn, columnCount);

            int diffRow    = GetDiffRows(minRow);
            int diffColumn = GetDiffColumns(minColumn);

            int index = 2;

            for (int i = minRow; i < rowCount; i++)
            {
                var isAdded = false;
                for (int j = minColumn; j < columnCount; j++)
                {
                    if (dgv.Rows[i].Cells[j].Visible)
                    {
                        _excelDoc.setValue(index, dgv.Rows[i].Cells[j].ColumnIndex - diffColumn,
                                           dgv.Rows[i].Cells[j].Value.ToString());
                        isAdded = true;
                    }
                }
                if (isAdded)
                {
                    index++;
                }
            }
        }
        private void ReadFile(string filename)
        {
            try
            {
                using (var excelDoc = new ExcelDoc(filename))
                {
                    try
                    {
                        excelDoc.SetList("Расходы по а-м");

                        var grz = (excelDoc.getValue("B4") != null) ? excelDoc.getValue("B4").ToString() : string.Empty;

                        var car = GetCar(grz);

                        if (car == null)
                        {
                            var driverFio = (excelDoc.getValue("B5") != null) ? excelDoc.getValue("B5").ToString() : string.Empty;

                            var driverList = DriverList.getInstance();
                            var driver     = driverList.getItemByFIO(driverFio);

                            if (driver != null)
                            {
                                var driverCarList = DriverCarList.getInstance();
                                car = driverCarList.GetCar(driver);
                            }

                            if (car == null)
                            {
                                _mileageReportList.Add(new MileageReport(null,
                                                                         string.Concat("Не найден автомобиль: ", grz, " сотрудник: ", driverFio, ". Файл: ", filename)));
                            }
                        }

                        if (car != null)
                        {
                            string value = excelDoc.getValue("C8") != null?excelDoc.getValue("C8").ToString() : string.Empty;

                            SetMileage(car, value);
                        }
                    }

                    catch (IndexOutOfRangeException)
                    {
                        _mileageReportList.Add(new MileageReport(null, string.Concat("Ошибка при чтении файла: ", filename)));
                    }
                    catch (OverflowException)
                    {
                        _mileageReportList.Add(new MileageReport(null,
                                                                 string.Concat("Указан слишком большой пробег в файле: ", filename)));
                    }
                }
            }
            catch
            {
                _mileageReportList.Add(new MileageReport(null, string.Concat("Ошибка при чтении файла: ", filename)));
            }
        }
        public void ShowAttacheToOrder()
        {
            _excelDoc = openDocumentExcel("Приложение к приказу");

            string fullNameAuto = string.Concat(_car.Mark.Name, " ", _car.info.Model);

            _excelDoc.setValue(18, 2, fullNameAuto);
            _excelDoc.setValue(18, 3, _car.Grz);

            var driver = _driverList.getItem(Convert.ToInt32(_invoice.DriverToID));

            _excelDoc.setValue(18, 4, driver.GetName(NameType.Full));
            _excelDoc.setValue(18, 5, driver.Position);

            _excelDoc.Show();
        }
        public void CreatePolicyTable()
        {
            const int indexBegin = 6;
            var       date       = DateTime.Today.AddMonths(1);

            _excelDoc = openDocumentExcel("Таблица страхования");

            var myDate = new MyDateTime(date.ToShortDateString());

            _excelDoc.setValue(2, 1, "Страхуем в " + myDate.MonthToStringPrepositive() + " " + myDate.Year + " г.");

            var policyList = PolicyList.getInstance();
            var list       = policyList.GetPolicyList(date);
            var listCar    = policyList.GetCarListByPolicyList(list);

            var diagCardList = DiagCardList.getInstance();

            var rowIndex = indexBegin;

            foreach (var car in listCar)
            {
                _excelDoc.setValue(rowIndex, 2, car.Grz);
                _excelDoc.setValue(rowIndex, 3, car.Mark.Name);
                _excelDoc.setValue(rowIndex, 4, car.info.Model);
                _excelDoc.setValue(rowIndex, 5, car.vin);
                _excelDoc.setValue(rowIndex, 6, car.Year);
                _excelDoc.setValue(rowIndex, 7, GetPolicyBeginDate(list, car, PolicyType.ОСАГО));
                _excelDoc.setValue(rowIndex, 8, GetPolicyBeginDate(list, car, PolicyType.КАСКО));
                _excelDoc.setValue(rowIndex, 9, car.info.Owner);
                _excelDoc.setValue(rowIndex, 10, car.info.Owner);
                _excelDoc.setValue(rowIndex, 11, car.info.Owner);

                var diagCard = diagCardList.getItem(car);

                if (diagCard != null)
                {
                    _excelDoc.setValue(rowIndex, 12, diagCard.Date.ToShortDateString());
                    _excelDoc.setValue(rowIndex, 13, diagCard.Number);
                }

                rowIndex++;
            }

            _excelDoc.Show();
        }
        public void ShowInvoice()
        {
            _excelDoc = openDocumentExcel("Накладная");

            _excelDoc.setValue(7, 2, _car.info.Owner);

            _excelDoc.setValue(16, 82, _invoice.Number);
            _excelDoc.setValue(16, 98, _invoice.Date.ToShortDateString());

            string fullNameAuto = string.Concat("Автомобиль ", _car.Mark.Name, " ", _car.info.Model, ", ", _car.Grz);

            _excelDoc.setValue(22, 10, fullNameAuto);
            _excelDoc.setValue(22, 53, _car.dateGet.ToShortDateString());

            var grades = GradeList.getInstance();

            var grade = grades.getItem(Convert.ToInt32(_car.GradeID));

            var ptsList = PTSList.getInstance();
            var pts     = ptsList.getItem(_car);

            var fullDetailAuto = string.Concat("VIN ", _car.vin, ", Двигатель ", _car.eNumber, ", № кузова ",
                                               _car.bodyNumber, ", Год выпуска ", _car.Year, " г., Паспорт ",
                                               pts.Number, " от ", pts.Date.ToShortDateString(), ", мощность двигателя ", grade.EPower, " л.с.");

            _excelDoc.setValue(47, 2, fullDetailAuto);

            Driver driver1 = _driverList.getItem(Convert.ToInt32(_invoice.DriverFromID));
            Driver driver2 = _driverList.getItem(Convert.ToInt32(_invoice.DriverToID));

            _excelDoc.setValue(9, 10, driver1.Dept);
            _excelDoc.setValue(56, 11, driver1.Position);
            _excelDoc.setValue(56, 63, driver1.GetName(NameType.Full));

            _excelDoc.setValue(11, 13, driver2.Dept);
            _excelDoc.setValue(60, 11, driver2.Position);
            _excelDoc.setValue(60, 63, driver2.GetName(NameType.Full));

            _excelDoc.Show();
        }
        /* Старое извещение
         * public void showNotice(DTP dtp)
         * {
         *  _excelDoc = openDocumentExcel("Извещение о страховом случае");
         *
         *  Owners owners = Owners.getInstance();
         *
         *  _excelDoc.setValue(7, 4, owners.getItem(Convert.ToInt32(_car.ownerID)));
         *  _excelDoc.setValue(8, 5, "а/я 34, 196128");
         *  _excelDoc.setValue(9, 6, "320-40-04");
         *
         *  DriverCarList driverCarList = DriverCarList.getInstance();
         *  Driver driver = driverCarList.GetDriver(_car, dtp.Date);
         *
         *  PassportList passportList = PassportList.getInstance();
         *  Passport passport = passportList.getLastPassport(driver);
         *
         *  if (passport.Number != string.Empty)
         *  {
         *      string number = passport.Number;
         *      string[] numbers = number.Split(' ');
         *
         *      _excelDoc.setValue(11, 2, numbers[0]);
         *      _excelDoc.setValue(11, 5, numbers[1]);
         *
         *      _excelDoc.setValue(12, 2, passport.GiveOrg);
         *      _excelDoc.setValue(13, 3, passport.GiveDate.ToShortDateString());
         *  }
         *
         *  PolicyList policyList = PolicyList.getInstance();
         *  Policy policy = policyList.getItem(_car, PolicyType.КАСКО);
         *  _excelDoc.setValue(15, 5, policy.Number);
         *
         *  _excelDoc.setValue(17, 5, string.Concat(_car.Mark.Name, " ", _car.info.Model));
         *  _excelDoc.setValue(19, 5, _car.Grz);
         *  _excelDoc.setValue(21, 5, _car.vin);
         *
         *  _excelDoc.setValue(23, 5, dtp.Date.ToShortDateString());
         *
         *  _excelDoc.setValue(28, 1, driver.GetName(NameType.Full));
         *
         *  Regions regions = Regions.getInstance();
         *
         *  _excelDoc.setValue(30, 2, regions.getItem(Convert.ToInt32(dtp.IDRegion)));
         *  _excelDoc.setValue(32, 13, dtp.Damage);
         *  _excelDoc.setValue(34, 1, dtp.Facts);
         *
         *  SsDTP ssDTP = SsDTPList.getInstance().getItem(_car.Mark);
         *
         *  _excelDoc.setValue(63, 11, ssDTP.ServiceStantion);
         *
         *  DateTime date = DateTime.Today;
         *  MyDateTime myDate = new MyDateTime(date.ToShortDateString());
         *
         *  _excelDoc.setValue(71, 3, string.Concat("« ", date.Day.ToString(), " »"));
         *  _excelDoc.setValue(71, 4, myDate.MonthToStringGenitive());
         *  _excelDoc.setValue(71, 8, date.Year.ToString().Substring(2, 2));
         *
         *  _excelDoc.Show();
         * }
         *
         */

        public void CreateWaybill(DateTime date, Driver driver = null)
        {
            date = new DateTime(date.Year, date.Month, 1);

            if (driver == null)
            {
                var driverCarList = DriverCarList.getInstance();
                driver = driverCarList.GetDriver(_car, date);

                if (driver == null)
                {
                    driver = driverCarList.GetDriver(_car);
                    var invoiceList = InvoiceList.getInstance();
                    var invoice     = invoiceList.getItem(_car);

                    if (!string.IsNullOrEmpty(invoice?.DateMove))
                    {
                        DateTime.TryParse(invoice.DateMove, out DateTime dateMove);
                        if (dateMove.Year == date.Year && dateMove.Month == date.Month)
                        {
                            date = new DateTime(date.Year, date.Month, dateMove.Day);
                        }
                    }
                }
            }

            _excelDoc = openDocumentExcel("Путевой лист");

            _excelDoc.setValue(4, 28, _car.BBNumber);

            var myDate = new MyDateTime(date.ToShortDateString());

            _excelDoc.setValue(4, 39, driver.Id + "/01/" + myDate.MonthSlashYear());
            _excelDoc.setValue(6, 15, myDate.DaysRange);
            _excelDoc.setValue(6, 19, myDate.MonthToStringNominative());
            _excelDoc.setValue(6, 32, date.Year.ToString());

            _excelDoc.setValue(29, 35, _car.info.Grade.EngineType.ShortName);

            var mml = new MileageMonthList(_car.Id, date.Year + "-" + date.Month + "-01");

            /* Из файла Татьяны Мироновой пробег за месяц */
            _excelDoc.setValue(19, 39, mml.PSN);
            _excelDoc.setValue(33, 41, mml.Gas);
            _excelDoc.setValue(35, 41, mml.GasBegin);
            _excelDoc.setValue(36, 41, mml.GasEnd);
            _excelDoc.setValue(37, 41, mml.GasNorm);
            _excelDoc.setValue(38, 41, mml.GasNorm);
            _excelDoc.setValue(43, 39, mml.PSK);
            _excelDoc.setValue(41, 59, mml.Mileage);

            var owners = Owners.getInstance();
            var owner  = owners.getItem(1);

            _excelDoc.setValue(8, 8, owner);

            _excelDoc.setValue(10, 11, string.Concat(_car.Mark.Name, " ", _car.info.Model));
            _excelDoc.setValue(11, 17, _car.Grz);

            _excelDoc.setValue(12, 6, driver.GetName(NameType.Full));
            _excelDoc.setValue(44, 16, driver.GetName(NameType.Short));
            _excelDoc.setValue(26, 40, driver.GetName(NameType.Short));

            var licencesList  = LicenseList.getInstance();
            var driverLicense = licencesList.getItem(driver);

            _excelDoc.setValue(14, 10, driverLicense.Number);

            _excelDoc.setValue(20, 9, owner);

            string suppyAddressName;

            if (driver.suppyAddress != string.Empty)
            {
                suppyAddressName = driver.suppyAddress;
            }
            else
            {
                var suppyAddressList = SuppyAddressList.getInstance();
                var suppyAddress     = suppyAddressList.getItemByRegion(driver.Region.Id);

                if (suppyAddress != null)
                {
                    suppyAddressName = suppyAddress.ToString();
                }
                else
                {
                    var passportList = PassportList.getInstance();
                    var passport     = passportList.getLastPassport(driver);
                    suppyAddressName = passport.Address;
                }
            }

            var suppyAddressName2 = string.Empty;

            if (suppyAddressName.Length > 40)
            {
                for (var i = 30; i < suppyAddressName.Length; i++)
                {
                    if (suppyAddressName[i] == ' ')
                    {
                        suppyAddressName2 = suppyAddressName.Substring(i, suppyAddressName.Length - i);
                        suppyAddressName  = suppyAddressName.Substring(0, i);
                    }
                }
            }

            _excelDoc.setValue(25, 8, suppyAddressName);
            _excelDoc.setValue(26, 1, suppyAddressName2);

            string mechanicName;

            var employeesList = EmployeesList.getInstance();
            var accountant    = employeesList.getItem(driver.Region, "Бухгалтер Б.Браун");

            if (driver.IsOne)
            {
                mechanicName = driver.GetName(NameType.Short);
            }
            else
            {
                var mechanic = employeesList.getItem(driver.Region, "Механик", true);
                mechanicName = mechanic == null
          ? driver.GetName(NameType.Short)
          : mechanic.Name;
            }

            var dispatcher     = employeesList.getItem(driver.Region, "Диспечер-нарядчик");
            var dispatcherName = dispatcher.Name;

            _excelDoc.setValue(22, 40, mechanicName);
            _excelDoc.setValue(44, 40, mechanicName);

            _excelDoc.setValue(31, 18, dispatcherName);
            _excelDoc.setValue(35, 18, dispatcherName);

            _excelDoc.setValue(43, 72, accountant.Name);
        }