public DisplacementDocumentWaybill(DisplacementDoc d, IList <DisplacementLine> lines, WaybillSettings waybillSettings)
        {
            this.d               = d;
            this.lines           = lines;
            this.waybillSettings = waybillSettings;
            ((IDocumentPaginatorSource)doc).DocumentPaginator.PageSize = new Size(1069, 756);

            BlockStyle = new Style(typeof(Paragraph))
            {
                Setters =
                {
                    new Setter(Control.FontSizeProperty,                                 10d),
                    new Setter(System.Windows.Documents.Block.MarginProperty, new Thickness(0, 3, 0, 3))
                }
            };

            HeaderStyle = new Style(typeof(Run), HeaderStyle)
            {
                Setters =
                {
                    new Setter(Control.FontSizeProperty, 12d),
                }
            };
            TableHeaderStyle = new Style(typeof(TableCell), TableHeaderStyle)
            {
                Setters =
                {
                    new Setter(Control.FontSizeProperty, 10d),
                }
            };
        }
        public void Process_protek_waybills()
        {
            var settings = WaybillSettings.Find(order1.Client.Id);

            //Формат сохранения в dbf теперь не является форматом по умолчанию
            settings.ProtekWaybillSavingType = WaybillFormat.ProtekDbf;
            settings.Save();

            fake.Process();

            var documents = Documents();

            Assert.That(documents.Count, Is.EqualTo(1));
            var document = documents[0];

            Assert.That(document.Lines.Count, Is.EqualTo(1));
            var line = document.Lines[0];

            Assert.That(line.Product, Is.EqualTo("Коринфар таб п/о 10мг № 50"));
            Assert.That(line.NdsAmount, Is.EqualTo(12.3));
            var log = document.Log;

            Assert.That(log, Is.Not.Null);
            Assert.That(log.FileName, Is.EqualTo(String.Format("{0}.dbf", log.Id)));
            Assert.That(log.DocumentSize, Is.GreaterThan(0));
            Check_DocumentLine_SetProductId(document);
        }
Пример #3
0
        public ReturnWaybill(ReturnDoc returnToSupplier, WaybillSettings waybillSettings, User user)
        {
            _returnToSupplier = returnToSupplier;
            _waybillSettings  = waybillSettings;
            _user             = user;
            doc.PagePadding   = new Thickness(29);
            ((IDocumentPaginatorSource)doc).DocumentPaginator.PageSize = new Size(1069, 756);

            BlockStyle = new Style(typeof(Paragraph))
            {
                Setters =
                {
                    new Setter(Control.FontSizeProperty,                                 10d),
                    new Setter(System.Windows.Documents.Block.MarginProperty, new Thickness(0, 3, 0, 3))
                }
            };

            HeaderStyle = new Style(typeof(Run), HeaderStyle)
            {
                Setters =
                {
                    new Setter(Control.FontSizeProperty, 12d),
                }
            };
            TableHeaderStyle = new Style(typeof(TableCell), TableHeaderStyle)
            {
                Setters =
                {
                    new Setter(Control.FontSizeProperty, 10d),
                }
            };
        }
        public void ProcessProtekWaybillsSst()
        {
            var settings = WaybillSettings.Find(order1.Client.Id);

            //По умолчанию форматом сохранения является формат sst
            Assert.That(settings.ProtekWaybillSavingType, Is.EqualTo(WaybillFormat.Sst));

            fake.Process();

            var documents = Documents();

            Assert.That(documents.Count, Is.EqualTo(1));
            var document = documents[0];

            Assert.That(document.Lines.Count, Is.EqualTo(1));
            var line = document.Lines[0];

            Assert.That(line.Product, Is.EqualTo("Коринфар таб п/о 10мг № 50"));
            Assert.That(line.NdsAmount, Is.EqualTo(12.3));
            var log = document.Log;

            Assert.That(log, Is.Not.Null);
            Assert.That(log.FileName, Is.EqualTo(String.Format("{0}.sst", log.Id)));
            Assert.That(log.DocumentSize, Is.GreaterThan(0));
            Check_DocumentLine_SetProductId(document);
        }
Пример #5
0
        public void Update_address()
        {
            var fixtureAddressChange    = Fixture <CreateAddress>();
            var fixtureAddressNotChange = Fixture <CreateAddress>();

            User            user                  = new User();
            Address         AddressChange         = new Address("тестовый адрес доставки до изменения");
            WaybillSettings WaybillSettingsChange = new WaybillSettings(user, AddressChange);

            Address         AddressNotChange         = new Address("тестовый адрес доставки до изменения");
            WaybillSettings WaybillSettingsNotChange = new WaybillSettings(user, AddressNotChange);


            using (var transaction = localSession.BeginTransaction())
            {
                AddressChange.Id                 = fixtureAddressChange.Address.Id;
                AddressNotChange.Id              = fixtureAddressNotChange.Address.Id;
                WaybillSettingsChange.Address    = "тестовый адрес доставки до изменения";
                WaybillSettingsNotChange.Address = "тестовый адрес доставки после ручного изменения";

                localSession.Save(AddressChange);
                localSession.Save(AddressNotChange);
                localSession.Save(WaybillSettingsChange);
                localSession.Save(WaybillSettingsNotChange);
                transaction.Commit();
            }

            localSession.Clear();
            Run(new UpdateCommand());

            WaybillSettingsChange = localSession.Query <WaybillSettings>().FirstOrDefault(x => x.BelongsToAddress.Id == AddressChange.Id);
            Assert.AreEqual(fixtureAddressChange.Address.Value, WaybillSettingsChange.Address);
            WaybillSettingsNotChange = localSession.Query <WaybillSettings>().FirstOrDefault(x => x.BelongsToAddress.Id == AddressNotChange.Id);
            Assert.AreEqual("тестовый адрес доставки после ручного изменения", WaybillSettingsNotChange.Address);
        }
Пример #6
0
        public DisplacementWDocument(DisplacementDoc d, IList <DisplacementLine> lines, WaybillSettings waybillSettings, RequirementWaybillName result)
        {
            requirementWaybillName = result;
            doc.PagePadding        = new Thickness(29);
            ((IDocumentPaginatorSource)doc).DocumentPaginator.PageSize = new Size(1069, 756);

            this.d               = d;
            this.lines           = lines;
            this.waybillSettings = waybillSettings;

            BlockStyle = new Style(typeof(Paragraph))
            {
                Setters =
                {
                    new Setter(Control.FontSizeProperty,                                 10d),
                    new Setter(System.Windows.Documents.Block.MarginProperty, new Thickness(0, 3, 0, 3))
                }
            };

            HeaderStyle = new Style(typeof(Run), HeaderStyle)
            {
                Setters =
                {
                    new Setter(Control.FontSizeProperty,                  14d),
                    new Setter(Control.FontWeightProperty, FontWeights.Normal),
                }
            };
            TableHeaderStyle = new Style(typeof(TableCell), TableHeaderStyle)
            {
                Setters =
                {
                    new Setter(Control.FontSizeProperty, 10d),
                }
            };
        }
Пример #7
0
 public static bool ConvertIfNeeded(Document document, WaybillSettings settings)
 {
     return(SessionHelper.WithSession(x => {
         if (document.SetAssortimentInfo(x, settings))
         {
             ConvertAndSave(document, settings.WaybillConvertFormat, settings);
             return true;
         }
         return false;
     }));
 }
Пример #8
0
        public void Setup()
        {
            address  = new Address("Тестовый");
            settings = new Settings(address);
            settings.Markups.Each(x => x.Address = address);
            waybillSettings = new WaybillSettings();
            settings.Waybills.Add(waybillSettings);

            waybill = new Waybill {
                Address = address
            };
        }
Пример #9
0
 public void Setup()
 {
     client       = TestClient.Create(session);
     testAddress  = client.Addresses[0];
     address      = Address.Find(testAddress.Id);
     settings     = WaybillSettings.Find(client.Id);
     supplier     = TestSupplier.CreateNaked(session);
     price        = supplier.Prices[0];
     appSupplier  = Supplier.Find(supplier.Id);
     docRoot      = Path.Combine(Settings.Default.DocumentPath, address.Id.ToString());
     waybillsPath = Path.Combine(docRoot, "Waybills");
     Directory.CreateDirectory(waybillsPath);
 }
        public void ConvertWaybillToDBFWithAssortmentCodes()
        {
            var doc = WaybillParser.Parse("9046752.DBF");

            settings.IsConvertFormat    = true;
            settings.AssortimentPriceId = price.Id;
            settings.Save();
            var order   = TestOrder.FindFirst();
            var address = Address.Find(client.Addresses[0].Id);
            var log     = new DocumentReceiveLog {
                Supplier     = Supplier.Find(supplier.Id),
                ClientCode   = settings.Id,
                Address      = address,
                MessageUid   = 123,
                DocumentSize = 100
            };

            doc.Log        = log;
            doc.OrderId    = order.Id;
            doc.Address    = address;
            doc.FirmCode   = log.Supplier.Id;
            doc.ClientCode = (uint)log.ClientCode;

            doc.SetProductId();

            var path = Path.GetDirectoryName(log.GetRemoteFileNameExt());

            Directory.Delete(path, true);

            Exporter.ConvertIfNeeded(doc, WaybillSettings.Find(doc.ClientCode));

            var files_dbf = Directory.GetFiles(path, "*.dbf");

            Assert.That(files_dbf.Count(), Is.EqualTo(1));
            var file_dbf = files_dbf[0];
            var data     = Dbf.Load(file_dbf, Encoding.GetEncoding(866));

            Assert.That(data.Rows.Count, Is.EqualTo(45));
            Assert.IsTrue(data.Columns.Contains("ID_ARTIS"));
            Assert.IsTrue(data.Columns.Contains("NAME_ARTIS"));
            Assert.IsTrue(data.Columns.Contains("NAME_POST"));
            Assert.That(data.Rows[0]["NAME_POST"], Is.EqualTo("Амоксициллин 500мг таб. Х20 (R)"));
            Assert.That(data.Rows[1]["NAME_POST"], Is.EqualTo("Андипал Таб Х10"));

            Assert.That(data.Rows[0]["ID_ARTIS"], Is.Not.EqualTo("100208"));
            Assert.That(data.Rows[0]["NAME_ARTIS"], Is.Not.EqualTo("МилдронатR р-р д/ин., 10 % 5 мл № 10"));

            Assert.That(data.Rows[1]["ID_ARTIS"], Is.Not.EqualTo("100208"));
            Assert.That(data.Rows[1]["NAME_ARTIS"], Is.Not.EqualTo("МилдронатR р-р д/ин., 10 % 5 мл № 10"));
        }
Пример #11
0
        private void ChangeAdress(List <Address> ListAdresesBeforeImport)
        {
            var ListAdresesAfterImport = Session.Query <Address>().OrderBy(a => a.Name).ToList();

            var result = ListAdresesAfterImport.Where(n => ListAdresesBeforeImport.Any(t => t.Id == n.Id && t.Name != n.Name));

            foreach (var adr in result)
            {
                WaybillSettings waybillSettings = Session.Query <WaybillSettings>().FirstOrDefault(x => x.BelongsToAddress.Id == adr.Id);
                if (ListAdresesBeforeImport.Where(n => n.Id == waybillSettings.BelongsToAddress.Id && n.Name == waybillSettings.Address).Count() > 0)
                {
                    waybillSettings.Address = adr.Name;
                    Session.Save(waybillSettings);
                }
            }
        }
Пример #12
0
        public static void SaveProtek(Document document)
        {
            var settings            = WaybillSettings.Find(document.ClientCode);
            var log                 = document.Log;
            var converted           = ConvertIfNeeded(document, settings);
            var lipetskFarmaciaFlag = settings.IsConvertFormat && settings.WaybillConvertFormat == WaybillFormat.LipetskFarmacia;

            if (!converted || lipetskFarmaciaFlag)
            {
                ConvertAndSave(document, settings.ProtekWaybillSavingType, settings);
                //липецкфармации мы даем 2 файла, но экспорт - делает фейковым изначальный лог файла и заменяет его, поэтому надо ручками сделать его не фейковым
                if (lipetskFarmaciaFlag)
                {
                    log.IsFake = false;
                }
            }
        }
Пример #13
0
        public RegistryDocument(Waybill waybill, IList <WaybillLine> lines)
        {
            this.waybill    = waybill;
            this.lines      = lines;
            doc.PagePadding = new Thickness(29);
            //мнения о размере страницы разошлись
            //придерживаемся мнения delphi тк размеры колонок скопированы от туда
            ((IDocumentPaginatorSource)doc).DocumentPaginator.PageSize = new Size(1069, 756);

            settings    = waybill.WaybillSettings;
            docSettings = waybill.GetRegistryDocSettings();
            Settings    = docSettings;

            BlockStyle = new Style(typeof(Paragraph))
            {
                Setters =
                {
                    new Setter(Control.FontSizeProperty,                                 10d),
                    new Setter(System.Windows.Documents.Block.MarginProperty, new Thickness(0, 3, 0, 3))
                }
            };
            HeaderStyle = new Style(typeof(Run), HeaderStyle)
            {
                Setters =
                {
                    new Setter(Control.FontSizeProperty,                  12d),
                    new Setter(Control.FontWeightProperty, FontWeights.Normal),
                }
            };
            TableHeaderStyle = new Style(typeof(TableCell), TableHeaderStyle)
            {
                Setters =
                {
                    new Setter(Control.FontSizeProperty, 10d),
                }
            };
            TableStyle = new Style(typeof(Table), TableStyle)
            {
                Setters =
                {
                    new Setter(Control.FontSizeProperty, 10d),
                }
            };
        }
        public WaybillActDocument(Waybill waybill, IList <WaybillLine> lines)
        {
            doc.PagePadding = new Thickness(29);
            ((IDocumentPaginatorSource)doc).DocumentPaginator.PageSize = new Size(1069, 756);

            this.waybill  = waybill;
            this.settings = waybill.WaybillSettings;
            this.lines    = lines;
            docSettings   = waybill.GetWaybillActDocSettings();
            Settings      = docSettings;

            BlockStyle = new Style(typeof(Paragraph))
            {
                Setters =
                {
                    new Setter(Control.FontSizeProperty,                                 10d),
                    new Setter(System.Windows.Documents.Block.MarginProperty, new Thickness(0, 3, 0, 3))
                }
            };

            HeaderStyle = new Style(typeof(Run), HeaderStyle)
            {
                Setters =
                {
                    new Setter(Control.FontSizeProperty,                                     14d),
                    new Setter(Control.FontWeightProperty,                    FontWeights.Normal),
                    new Setter(System.Windows.Documents.Block.MarginProperty, new Thickness(0, 0, 0, 0))
                }
            };
            TableHeaderStyle = new Style(typeof(TableCell), TableHeaderStyle)
            {
                Setters =
                {
                    new Setter(Control.FontSizeProperty, 10d),
                }
            };
            CellStyle = new Style(typeof(TableCell), CellStyle)
            {
                Setters =
                {
                    new Setter(Control.FontSizeProperty, 10d),
                }
            };
        }
        private static Document ProcessWaybill(DocumentReceiveLog log, string filename)
        {
            if (log.DocumentType == DocType.Reject)
            {
                return(null);
            }

            var settings = WaybillSettings.Find(log.ClientCode.Value);

            if (log.DocumentSize == 0)
            {
                return(null);
            }

            // ждем пока файл появится в удаленной директории
            if (!log.FileIsLocal())
            {
                ShareFileHelper.WaitFile(filename, 5000);
            }

            var doc = SessionHelper.WithSession(s => {
                var detector = new WaybillFormatDetector();
                var result   = detector.Parse(s, filename, log);
                WaybillFormatDetector.Process(s, result);
                return(result);
            });

            // для мульти файла, мы сохраняем в источнике все файлы,
            // а здесь, если нужна накладная в dbf формате, то сохраняем merge-файл в dbf формате.
            if (doc != null)
            {
                Exporter.ConvertIfNeeded(doc, settings);
            }

            return(doc);
        }
Пример #16
0
        public static void Convert(Document document, DocumentReceiveLog log, WaybillFormat type, WaybillSettings settings)
        {
            if (String.IsNullOrEmpty(document.Log.FileName))
            {
                var extention = settings.GetExportExtension(type);
                log.IsFake = false;
                var id = (document.ProviderDocumentId ?? document.Log.Id.ToString()).Replace('/', '_');
                log.FileName = id + extention;
            }

            var filename = log.GetRemoteFileNameExt();

            if (type == WaybillFormat.ProtekDbf)
            {
                DbfExporter.SaveProtek(document, filename);
            }
            else if (type == WaybillFormat.LessUniversalDbf)
            {
                DbfExporter.SaveUniversalV1(document, filename);
            }
            else if (type == WaybillFormat.UniversalDbf)
            {
                DbfExporter.SaveUniversalV2(document, filename);
            }
            else if (type == WaybillFormat.LipetskFarmacia)
            {
                document.Log.IsFake = false;
                ExcelExporter.SaveLipetskFarmacia(document, filename);
            }
            else if (type == WaybillFormat.InfoDrugstoreXml)
            {
                using (var session = SessionHelper.GetSessionFactory().OpenSession())
                    XmlExporter.SaveInfoDrugstore(session, settings, document, filename);
            }
            else if (type == WaybillFormat.InproXml)
            {
                using (var session = SessionHelper.GetSessionFactory().OpenSession()) {
                    var map = session.Query <SupplierMap>().ToList();
                    XmlExporter.SaveInpro(document, log, filename, map);
                }
            }
            else
            {
                using (var fs = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite)) {
                    using (var sw = new StreamWriter(fs, Encoding.GetEncoding(1251))) {
                        if (type == WaybillFormat.Sst)
                        {
                            SstExport.SaveShort(document, sw);
                        }
                        else
                        {
                            SstExport.SaveLong(document, sw);
                        }
                    }
                }
            }

            log.DocumentSize = new FileInfo(filename).Length;
        }
Пример #17
0
        public static FlowDocument BuildFlowDoc(Waybill waybill, IList <WaybillLine> lines, WaybillSettings settings, Func <WaybillLine, FrameworkElement> map, double borderThickness)
        {
            var document = new FlowDocument();

            document.PagePadding = new Thickness(0, 0, 0, 0);
            var left = lines.Count;

            while (left > 0)
            {
                var border = new Border {
                    Margin = new Thickness(1)
                };
                var section = new Section();
                section.BreakPageBefore = true;
                var leftSize = new Size(pageSize.Width - border.Margin.Left - border.Margin.Right,
                                        pageSize.Height - border.DesiredSize.Height - border.Margin.Top - border.Margin.Bottom);
                var grid = new BlockUIContainer(BuildMapGrid(i => map(lines[i]), lines.Count, leftSize, ref left, borderThickness));
                section.Blocks.Add(grid);
                document.Blocks.Add(section);
            }
            return(document);
        }
Пример #18
0
        public static DocumentReceiveLog ConvertAndSave(Document document, WaybillFormat type, WaybillSettings settings)
        {
            var extention = settings.GetExportExtension(type);
            var log       = document.Log;

            //если нет файла значит документ из сервиса протека и ему можно просто назначить файл
            //если мы конвертируем существующий файл то нужно создать новую запись а стурую отметить флагом
            //что бы избежать загрузки ее клиентом
            if (!String.IsNullOrEmpty(document.Log.FileName))
            {
                log.IsFake = true;
                ActiveRecordMediator.SaveAndFlush(log);
                log = new DocumentReceiveLog(log, extention);
                ActiveRecordMediator.SaveAndFlush(log);
            }
            Convert(document, log, type, settings);
            ActiveRecordMediator.Save(document.Log);
            ActiveRecordMediator.Save(log);
            return(log);
        }
Пример #19
0
        public static void SaveInfoDrugstore(ISession session, WaybillSettings settings, Document document, string filename)
        {
            var addressId = session.CreateSQLQuery(@"
select ai.SupplierDeliveryId
from Customers.Intersection i
	join Customers.AddressIntersection ai on ai.IntersectionId = i.Id
where ai.AddressId = :addressId
	and ai.SupplierDeliveryId is not null
	and i.PriceId = :priceId
group by ai.SupplierDeliveryId")
                            .SetParameter("addressId", document.Address.Id)
                            .SetParameter("priceId", settings.AssortimentPriceId)
                            .List <string>()
                            .FirstOrDefault();

            var xmlsettings = new XmlWriterSettings {
                Encoding = Encoding.GetEncoding(1251)
            };

            using (var writer = XmlWriter.Create(filename, xmlsettings)) {
                writer.WriteStartDocument(true);
                writer.WriteStartElement("PACKET");
                writer.WriteAttributeString("NAME", "Электронная накладная");
                writer.WriteAttributeString("ID", document.ProviderDocumentId);
                writer.WriteAttributeString("FROM", document.Log.Supplier.Name);
                writer.WriteAttributeString("TYPE", "12");

                writer.WriteStartElement("SUPPLY");
                writer.Element("INVOICE_NUM", document.ProviderDocumentId);
                writer.Element("INVOICE_DATE", document.DocumentDate.Value.ToString("dd.MM.yyyy"));
                writer.Element("DEP_ID", addressId);
                writer.Element("ORDER_ID", document.OrderId);

                writer.WriteStartElement("ITEMS");
                foreach (var line in document.Lines)
                {
                    writer.WriteStartElement("ITEM");
                    writer.Element("CODE", line.ExportCode);
                    writer.Element("NAME", line.ExportProduct);
                    writer.Element("VENDOR", line.ExportProducer);
                    writer.Element("QTTY", line.Quantity);
                    writer.Element("SPRICE", line.SupplierCostWithoutNDS);
                    writer.Element("VPRICE", line.ProducerCostWithoutNDS);
                    writer.Element("NDS", line.Nds);
                    writer.Element("SNDSSUM", line.NdsAmount);
                    writer.Element("SERIA", line.SerialNumber);
                    writer.Element("VALID_DATE", line.Period);
                    writer.Element("GTD", line.BillOfEntryNumber);
                    writer.Element("SERT_NUM", line.Certificates);
                    writer.Element("VENDORBARCODE", line.EAN13.ToString().Slice(12));
                    writer.Element("REG_PRICE", line.RegistryCost);
                    writer.Element("ISGV", line.VitallyImportant);
                    writer.WriteEndElement();
                }
                writer.WriteEndElement();                 //ITEMS

                writer.WriteEndElement();                 //SUPPLY

                writer.WriteEndElement();                 //PACKET
            }
        }
 public ReturnToSuppliersDetailsDocument(ReturnLine[] items, ReturnDoc doc, WaybillSettings waybillSettings)
 {
     _items           = items;
     _doc             = doc;
     _waybillSettings = waybillSettings;
 }
Пример #21
0
        public virtual void Print(string printer, WaybillSettings settings)
        {
            var dialog = new PrintDialog();

            dialog.PrintQueue = new PrintQueue(new PrintServer(), printer);

            var doc = new FlowDocument();

            doc.ColumnGap   = 0;
            doc.PagePadding = new Thickness(0, 0, 0, 0);
            doc.ColumnWidth = double.PositiveInfinity;
            doc.FontFamily  = new FontFamily("Arial");
            var width = dialog.PrintableAreaWidth;

            doc.PageWidth = width;
            doc.Blocks.Add(new Paragraph(new Run(settings.FullName)
            {
                FontSize = 20,
            })
            {
                TextAlignment = TextAlignment.Center
            });
            var table = new Table();

            table.CellSpacing = 0;
            var value = width / 2;

            table.Columns.Add(new TableColumn {
                Width = new GridLength(value, GridUnitType.Pixel)
            });
            table.Columns.Add(new TableColumn {
                Width = new GridLength(value, GridUnitType.Pixel)
            });
            var tableRowGroup = new TableRowGroup();

            tableRowGroup.Rows.Add(new TableRow {
                Cells =
                {
                    new TableCell(new Paragraph(new Run($"Чек №{Id}")))
                    {
                        FontSize = 8,
                    },
                    new TableCell(new Paragraph(new Run(Date.ToString())))
                    {
                        TextAlignment = TextAlignment.Right,
                        FontSize      = 8
                    },
                }
            });
            table.RowGroups.Add(tableRowGroup);
            var paragraph = new Paragraph()
            {
                FontSize        = 10,
                BorderBrush     = Brushes.Black,
                BorderThickness = new Thickness(0, 1, 0, 0)
            };

            doc.Blocks.Add(table);
            doc.Blocks.Add(paragraph);
            foreach (var line in Lines)
            {
                paragraph.Inlines.Add(new Run($"{line.Product} {line.RetailCost:C} x {line.Quantity} = {line.Sum:C}"));
                paragraph.Inlines.Add(new LineBreak());
            }
            doc.Blocks.Add(new Paragraph()
            {
                Inlines =
                {
                    new Run($"Итого = {Sum:C}")
                    {
                        FontSize   = 20,
                        FontWeight = FontWeights.Bold,
                    },
                    new LineBreak(),
                    new Run($"Наличными = {Payment:C}")
                    {
                        FontSize = 10,
                    },
                    new LineBreak(),
                    new Run($"Картой = {PaymentByCard:C}")
                    {
                        FontSize = 10,
                    },
                    new LineBreak(),
                    new Run($"Сдача = {Charge:C}")
                    {
                        FontSize = 10
                    }
                },
                BorderBrush     = Brushes.Black,
                BorderThickness = new Thickness(0, 1, 0, 0)
            });

            doc.Blocks.Add(new Paragraph(new LineBreak()));
            doc.Blocks.Add(new Paragraph(new LineBreak()));

            dialog.PrintDocument(((IDocumentPaginatorSource)doc).DocumentPaginator, "Чек");
        }