示例#1
0
        public int generatePackingList(
            string template,
            string savePath,
            BatchTableC batchTbl,
            CodesTableC codesTbl,
            Car car,
            Driver driver,
            string number
            )
        {
            XLWorkbook   workbook;
            IXLWorksheet ws;

            try{
                workbook = new XLWorkbook(template);
                ws       = workbook.Worksheet(1);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                throw new ArgumentException("[PackingGeneratorC] Error in file: " + template);
            }

            replaceTemplateValues(ws, templatePackageMap, car, driver, number);

            //копируем футер в другое место и удаляем со старого места
            moveFooterTo(ws, "A10:M16", 1, 16);

            //------
            //вставляем таблицу со значениями
            var insertTable = GetTable(batchTbl, codesTbl, savePath);

            if (insertTable != null)
            {
                ws.Cell(9, 1).InsertTable(insertTable);
            }
            else
            {
                return(1);
            }

            int lastItemPos = insertTable.Rows.Count + 9;

            //копируем футер на новое место с последующим удалением со старого
            moveFooterTo(ws, "P1:AB7", lastItemPos + 1, 1);

            ws.Range("J10:K" + lastItemPos + 1).Style.NumberFormat.Format = "0.000";

            Common.Log("Сохранение Упаковочник в '" + savePath + "'");
            workbook.SaveAs(savePath + "\\" + Common.fileParty);

            return(0);
        }
示例#2
0
        public void GenerateCMR(
            string template,
            string savePath,
            BatchTableC batchTbl,
            CodesTableC codesTbl,

            Car car,
            Driver driver,
            string number,

            string city)
        {
            XLWorkbook   workbook;
            IXLWorksheet ws;

            try
            {
                workbook = new XLWorkbook(template);
                ws       = workbook.Worksheet(1);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                throw new ArgumentException("[PackingGeneratorC] Error in file: " + template);
            }

            Common.setCellString(ws, cmrTemplateMap.carNumberAndDate_0, car.numberShort + DateTime.Now.ToString("ddMM"));

            Common.setCellString(ws, cmrTemplateMap.senderCity_4, city);
            Common.setCellString(ws, cmrTemplateMap.dayAndMonth_4, DateTime.Now.ToString("dd MMMM", CultureInfo.CreateSpecificCulture("ru-RU")));
            Common.setCellString(ws, cmrTemplateMap.year_4, DateTime.Now.ToString("yyyyг.", CultureInfo.CreateSpecificCulture("ru-RU")));

            Common.setCellString(ws, cmrTemplateMap.specificationNumber_5, number);
            Common.setCellString(ws, cmrTemplateMap.shortDate_spec_5, DateTime.Now.ToString("dd.MM.yy."));

            Common.setCellString(ws, cmrTemplateMap.totalPlaces_6, totalPlaces + " мешка п/п (интернет заказы для личного пользования)");
            Common.setCellString(ws, cmrTemplateMap.totalGrossWeight_11, totalGross.ToString("0.000"));
            Common.setCellString(ws, cmrTemplateMap.totalPrice_13, totalPrice.ToString());

            Common.setCellString(ws, cmrTemplateMap.driverName_23, driver.name);
            Common.setCellString(ws, cmrTemplateMap.driverPassport_23, "пас. " + driver.passport);

            Common.setCellString(ws, cmrTemplateMap.carNumberFull_25, car.number);
            Common.setCellString(ws, cmrTemplateMap.carBrand_26, car.name);

            Common.Log("Сохранение СМР в '" + savePath + "'");
            workbook.SaveAs(savePath + "\\" + Common.fileCMR);
        }
示例#3
0
        public int GenerateSpecification(
            string template,
            string savePath,
            BatchTableC batchTbl,
            CodesTableC codesTbl,
            HashSet <UInt64> excludeList,
            Car car,
            Driver driver,
            string number
            )
        {
            XLWorkbook   workbook;
            IXLWorksheet ws;

            try{
                workbook = new XLWorkbook(template);
                ws       = workbook.Worksheet(1);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                throw new ArgumentException("[PackingGeneratorC] Error in file: " + template);
            }

            replaceTemplateValues(ws, templateSpecificationMap, car, driver, number);

            //копируем футер в другое место и удаляем со старого места
            moveFooterTo(ws, "A10:K21", 1, 16);

            //------
            //вставляем таблицу со значениями
            var insertTable = GetSpecificationTable(batchTbl, codesTbl, excludeList);

            ws.Cell(9, 1).InsertTable(insertTable);

            int lastItemPos = insertTable.Rows.Count + 9;

            //копируем футер на новое место с последующим удалением со старого
            moveFooterTo(ws, "P1:AA12", lastItemPos + 1, 1);

            ws.Range("I10:J" + lastItemPos + 1).Style.NumberFormat.Format = "0.000";
            ws.Range("K10:K" + lastItemPos + 1).Style.NumberFormat.Format = "0.00";

            Common.Log("Сохранение Спецификация в '" + savePath + "'");
            workbook.SaveAs(savePath + "\\" + Common.fileSpecification);

            return(0);
        }
示例#4
0
        public DataTable GetSpecificationTable(BatchTableC batchTbl, CodesTableC codesTbl, HashSet <UInt64> excludeList)
        {
            DataTable table = new DataTable();

            table.TableName = "спецификация";

            table.Columns.Add("№ П/П", typeof(UInt64));
            table.Columns.Add("Наименование", typeof(string));
            table.Columns.Add("Пломба", typeof(UInt64));
            table.Columns.Add("КОД ТНВЭД", typeof(UInt64));
            table.Columns.Add("Кол.", typeof(UInt32));
            table.Columns.Add("Ед.изм.", typeof(string));
            table.Columns.Add("Мест", typeof(Byte));
            table.Columns.Add("УПАКОВКА", typeof(string));
            table.Columns.Add("БРУТТО", typeof(double));
            table.Columns.Add("НЕТТО", typeof(double));
            table.Columns.Add("СТОИМОСТЬ", typeof(decimal));

            var codes        = codesTbl.codes;
            var groupedCodes = codesTbl.GetGroupedByCode(null);

            UInt32 itemsCount    = CalcItemsCount(batchTbl);
            double packageWeight = (double)batchTbl.weightPackage / (double)itemsCount;


            Random rnd = new Random();

            var specificationData = new Dictionary <UInt32, BidloProduct>();
            var removed           = new Dictionary <string, BidloProduct>();

            Common.Log("Кол-во эл-ов: " + bidloProducts.Count);

            for (int i = bidloProducts.Count - 1; i >= 0; i--)
            {
                var itemsWithSameName = from item in bidloProducts
                                        where item.name == bidloProducts[i].name
                                        select item;

                var itemsWithSameCode = from item in bidloProducts
                                        where item.code == bidloProducts[i].code
                                        select item;

                var itemsWithSameBagNumber = from item in bidloProducts
                                             where item.bagNumber == bidloProducts[i].bagNumber
                                             select item;

                if (!excludeList.Contains(bidloProducts[i].code))
                {
                    if (itemsWithSameCode.ToArray().Count() > 1 && itemsWithSameBagNumber.ToArray().Count() > 1)
                    {
                        var tmp = bidloProducts[i];

                        bidloProducts.Remove(bidloProducts[i]);

                        for (var j = 0; j < bidloProducts.Count; j++)
                        {
                            if (bidloProducts[j].bagNumber == tmp.bagNumber)
                            {
                                var item = bidloProducts[j];
                                tmp.grossWeight += item.grossWeight;
                                tmp.price       += item.price;
                                tmp.places      += item.places;
                                tmp.netWeight   += item.netWeight;
                                bidloProducts[j] = tmp;
                                break;
                            }
                        }
                    }
                }
                else
                {
                    if (itemsWithSameName.ToArray().Count() > 1 && itemsWithSameBagNumber.ToArray().Count() > 1)
                    {
                        var tmp = bidloProducts[i];

                        bidloProducts.Remove(bidloProducts[i]);

                        for (var j = 0; j < bidloProducts.Count; j++)
                        {
                            if (bidloProducts[j].name.Equals(tmp.name))
                            {
                                var item = bidloProducts[j];
                                tmp.grossWeight += item.grossWeight;
                                tmp.price       += item.price;
                                tmp.places      += item.places;
                                tmp.netWeight   += item.netWeight;

                                bidloProducts[j] = tmp;
                                break;
                            }
                        }
                    }
                }
            }


            ////фиксим повторения
            //Dictionary<string, BidloProduct> fixedProducts = new Dictionary<string, BidloProduct>(200);

            //foreach (var entry in removed)
            //{
            //	var item = entry.Value;

            //	BidloProduct found;
            //	var key = "" + item.code + "" + item.bagNumber;

            //	if (!fixedProducts.TryGetValue(key, out found))
            //	{
            //		fixedProducts.Add(key, item);
            //	}
            //	else {
            //		var tmp = item;

            //		tmp.grossWeight += found.grossWeight;
            //		tmp.price += found.price;
            //		tmp.places += found.places;
            //		tmp.netWeight += found.netWeight;

            //		fixedProducts[key] = tmp;
            //	}
            //}

            var bagsUsed = new HashSet <UInt64>();
            var num      = 0;

            foreach (var entry in bidloProducts)
            {
                var item     = entry;
                var bagPlace = 0;

                if (!bagsUsed.Contains(item.bagNumber))
                {
                    bagPlace = 1;
                    bagsUsed.Add(item.bagNumber);
                }


                ++num;
                Common.Log(item.bagNumber + " " + item.name);
                //             №  П/П   Наименование  пломба     КОД ТНВЭД  Кол.   Ед.изм.  Мест        УПАКОВКА   БРУТТО       НЕТТО      СТОИМОСТЬ
                table.Rows.Add(num, item.name, item.bagNumber, item.code, item.places, "шт.", bagPlace, "мешок", item.grossWeight, item.netWeight, item.price);
            }

            return(table);
        }
示例#5
0
        private DataTable GetTable(BatchTableC batchTbl, CodesTableC codesTbl, string savePath)
        {
            DataTable table = new DataTable();

            table.Columns.Add("№ П/П", typeof(UInt64));
            table.Columns.Add("Наименование", typeof(string));
            table.Columns.Add("Маркировка", typeof(string));
            table.Columns.Add("Пломба", typeof(UInt64));
            table.Columns.Add("КОД ТНВЭД", typeof(UInt64));
            table.Columns.Add("Кол.", typeof(UInt32));
            table.Columns.Add("Ед.изм.", typeof(string));
            table.Columns.Add("Мест", typeof(Byte));
            table.Columns.Add("УПАКОВКА", typeof(string));
            table.Columns.Add("БРУТТО", typeof(double));
            table.Columns.Add("НЕТТО", typeof(double));
            table.Columns.Add("ЦЕНА", typeof(double));
            table.Columns.Add("СТОИМОСТЬ", typeof(double));

            var codes         = codesTbl.codes;
            var notfoundNames = new HashSet <string>();

            UInt32 itemsCount    = CalcItemsCount(batchTbl);
            double packageWeight = (double)batchTbl.weightPackage / (double)itemsCount;

            UInt32 i = 0;

            ulong prevBagNumber = 0;

            totalGross = 0;
            totalNet   = 0;
            totalPrice = new decimal(0.0);

            foreach (XlsFormat.BatchTableC.Product value in batchTbl.sortedProducts)
            {
                ++i;

                int place = (prevBagNumber != value.bagNumber ? 1 : 0);
                prevBagNumber = value.bagNumber;

                if (place == 1)
                {
                    ++totalPlaces;
                }

                ulong code;
                if (!codes.TryGetValue(value.name, out code))
                {
                    code = 0;
                    notfoundNames.Add(value.name);
                }

                var netWeight   = (value.bagWeight / (double)value.allPlaces) * (double)value.placesByType;
                var grossWeight = netWeight + packageWeight;                 //* (double)value.placesByType
                var sumPrice    = value.price * value.placesByType;

                totalNet   += netWeight;
                totalGross += grossWeight;
                totalPrice += sumPrice;

                //             № П/П   Наименование    Маркировка    пломба           КОД ТНВЭД  Кол.                Ед.изм.  Мест   УПАКОВКА    БРУТТО       НЕТТО      ЦЕНА         СТОИМОСТЬ
                table.Rows.Add(i, value.name, value.number, value.bagNumber, code, value.placesByType, "шт.", place, "мешок", grossWeight, netWeight, value.price, sumPrice);

                bidloProducts.Add(new BidloProduct
                {
                    uid = i,

                    bagNumber = value.bagNumber,
                    name      = value.name,
                    code      = code,

                    places      = value.placesByType,
                    netWeight   = netWeight,
                    grossWeight = grossWeight,

                    price = sumPrice
                });
            }

            Common.Log("Уникальных мешков в упаковочнике: " + totalPlaces);

            if (notfoundNames.Count != 0)
            {
                Common.Log("Добавляем ненайденные коды ТН ВЭД");
                codesTbl.AppendNotFoundNames(notfoundNames);
                return(null);
            }

            Common.Log(totalNet + " " + totalGross + " " + (totalGross - totalNet));

            return(table);
        }