Esempio n. 1
0
        public Batch()
        {
            InitializeComponent();

            Loaded += (sender, args) => {
                ApplyStyles();
            };

            DataGridHelper.CalculateColumnWidths(ReportLines);
            DataGridHelper.CalculateColumnWidth(ReportLines, "Нет", "Заказано");
            DataGridHelper.CalculateColumnWidth(ReportLines, "Нет", "Есть производитель");
            DataGridHelper.CalculateColumnWidth(ReportLines, "0000.00", "Цена поставщика");
            DataGridHelper.CalculateColumnWidth(ReportLines, "0000.00", "Цена");
            DataGridHelper.CalculateColumnWidth(ReportLines, "0000.00", "Количество");
            DataGridHelper.CalculateColumnWidth(ReportLines, "0000.00", "Заказ");
            DataGridHelper.CalculateColumnWidth(ReportLines, "0000.00", "Сумма");
            DataGridHelper.CalculateColumnWidth(ReportLines, "0000000000000", "Штрихкод");

            new Editable().Attach(Offers);
            DataGridHelper.CalculateColumnWidths(Offers);
            DataGridHelper.CalculateColumnWidth(HistoryOrders, "00.00.0000", "Срок годн.");
            DataGridHelper.CalculateColumnWidth(HistoryOrders, "000", "Заказ");
            DataGridHelper.CalculateColumnWidth(HistoryOrders, "000.00", "Цена производителя");
            DataGridHelper.CalculateColumnWidth(HistoryOrders, "000.00", "Цена");
            DataGridHelper.CalculateColumnWidth(HistoryOrders, "00.00.0000", "Дата");

            ReportLines.CommandBindings.Add(new CommandBinding(DataGrid.DeleteCommand,
                                                               Commands.DoInvokeViewModel,
                                                               Commands.CanInvokeViewModel));
            new Editable().Attach(ReportLines);
        }
        public MatchedWaybills()
        {
            InitializeComponent();

            DataGridHelper.CalculateColumnWidth(WaybillLines, "99999.99", "Цена производителя без НДС");
            DataGridHelper.CalculateColumnWidth(WaybillLines, "99999.99", "Цена ГР");
            DataGridHelper.CalculateColumnWidth(WaybillLines, "99999.99", "Торговая наценка оптовика");
            DataGridHelper.CalculateColumnWidth(WaybillLines, "99999.99", "Цена поставщика без НДС");
            DataGridHelper.CalculateColumnWidth(WaybillLines, "999", "НДС");
            DataGridHelper.CalculateColumnWidth(WaybillLines, "99999.99", "Цена поставщика с НДС");
            DataGridHelper.CalculateColumnWidth(WaybillLines, "99999.99", "Заказ");
        }
Esempio n. 3
0
        private void Init()
        {
            if (model?.Waybill == null)
            {
                return;
            }
            //борьба за производительность
            //операции установки стиля приводят к перестроению дерева элементов wpf
            //что негативно отражается на производительности
            //что бы избежать ненужных перестроений дерева
            //сначала конструируем таблицу и настраиваем ее а затем добавляем в дерево элементов
            lines         = new DataGrid2();
            lines.Loaded += (sender, args) => {
                DataGridHelper.Focus(lines);
            };
            lines.IsReadOnly = false;
            lines.Name       = "Lines";
            lines.Columns.Add(new DataGridTextColumnEx {
                Header        = "Наименование",
                Binding       = new Binding("Product"),
                Width         = new DataGridLength(180, DataGridLengthUnitType.Star),
                SortDirection = ListSortDirection.Ascending,
                IsReadOnly    = model.User.IsStockEnabled
            });
            lines.Columns.Add(new DataGridTextColumnEx {
                Header     = "Производитель",
                Binding    = new Binding("Producer"),
                Width      = new DataGridLength(180, DataGridLengthUnitType.Star),
                IsReadOnly = model.User.IsStockEnabled
            });
            lines.Columns.Add(new DataGridTextColumnEx {
                Header  = "Страна",
                Binding = new Binding("Country"),
                Width   = new DataGridLength(100, DataGridLengthUnitType.Star),
            });
            lines.Columns.Add(DataGridHelper.CheckBoxColumn("Печатать", "Print",
                                                            x => lines.Items.OfType <WaybillLine>().Each(l => l.Print = x), true));
            lines.Columns.Add(new DataGridTextColumnEx {
                Header         = "Срок годности",
                Binding        = new Binding("Period"),
                SortMemberPath = "Exp",
                Width          = new DataGridLength(160, DataGridLengthUnitType.Star),
            });
            lines.Columns.Add(new DataGridTextColumnEx {
                Header  = "Серия товара",
                Binding = new Binding("SerialNumber"),
                Width   = new DataGridLength(160, DataGridLengthUnitType.Star),
            });
            lines.Columns.Add(new DataGridTextColumnEx {
                Width   = new DataGridLength(13, DataGridLengthUnitType.Star),
                Header  = "Штрихкод",
                Binding = new Binding("EAN13"),
            });
            lines.Columns.Add(new CustomDataGridColumn((c, i) => null)
            {
                Header    = "Сертификаты",
                Name      = "CertificateLink",
                Width     = new DataGridLength(1, DataGridLengthUnitType.SizeToHeader),
                Generator = (c, i) => new ContentControl {
                    Style = (Style)FindResource("DownloadLink")
                }
            });
            if (model.Waybill.IsCreatedByUser == true)
            {
                lines.CanUserAddRows    = !model.User.IsStockEnabled;
                lines.CanUserDeleteRows = true;
                lines.Columns.Add(new CustomDataGridColumn {
                    Header    = "ЖНВЛС",
                    Width     = new DataGridLength(1, DataGridLengthUnitType.SizeToHeader),
                    Generator = (c, i) => {
                        var el = new CheckBox {
                            VerticalAlignment   = VerticalAlignment.Center,
                            HorizontalAlignment = HorizontalAlignment.Center
                        };
                        BindingOperations.SetBinding(el, CheckBox.IsCheckedProperty, new Binding("VitallyImportant")
                        {
                            UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
                        });
                        return(el);
                    }
                });
            }
            lines.Columns.Add(new DataGridTextColumnEx {
                Header     = "Номер сертификата",
                Binding    = new Binding("Certificates"),
                Width      = new DataGridLength(180, DataGridLengthUnitType.Star),
                Visibility = Visibility.Collapsed
            });
            lines.Columns.Add(new DataGridTextColumnEx {
                Header  = "Цена производителя без НДС",
                Binding = new Binding("ProducerCost"),
                Width   = new DataGridLength(1, DataGridLengthUnitType.Star),
            });
            lines.Columns.Add(new DataGridTextColumnEx {
                Header  = "Цена ГР",
                Binding = new Binding("RegistryCost"),
                Width   = new DataGridLength(1, DataGridLengthUnitType.Star),
            });
            lines.Columns.Add(new DataGridTextColumnEx {
                Header  = "Торговая наценка оптовика",
                Binding = new Binding("SupplierPriceMarkup"),
                Width   = new DataGridLength(1, DataGridLengthUnitType.Star),
            });
            lines.Columns.Add(new DataGridTextColumnEx {
                Header  = "Цена поставщика без НДС",
                Binding = new Binding("SupplierCostWithoutNds"),
                Width   = new DataGridLength(1, DataGridLengthUnitType.Star),
            });
            lines.Columns.Add(new DataGridTextColumnEx {
                Header  = "НДС",
                Binding = new Binding("Nds"),
                Width   = new DataGridLength(1, DataGridLengthUnitType.Star),
            });
            lines.Columns.Add(new DataGridTextColumnEx {
                Header  = "Цена поставщика с НДС",
                Binding = new Binding("SupplierCost")
                {
                    Converter = InputConverter.Instance, ValidatesOnExceptions = true,
                },
                Width      = new DataGridLength(1, DataGridLengthUnitType.Star),
                IsReadOnly = false
            });
            lines.Columns.Add(new DataGridTextColumnEx {
                Header     = "Макс. розничная наценка",
                Binding    = new Binding("MaxRetailMarkup"),
                Width      = new DataGridLength(1, DataGridLengthUnitType.Star),
                IsReadOnly = true,
            });
            lines.Columns.Add(new DataGridTextColumnEx {
                Header  = "Розничная наценка",
                Binding = new Binding("RetailMarkup")
                {
                    Converter = InputConverter.Instance, ValidatesOnExceptions = true,
                },
                Width      = new DataGridLength(1, DataGridLengthUnitType.Star),
                IsReadOnly = false,
            });
            lines.Columns.Add(new DataGridTextColumnEx {
                Header  = "Реальная наценка",
                Binding = new Binding("RealRetailMarkup")
                {
                    Converter = InputConverter.Instance, ValidatesOnExceptions = true,
                },
                Width      = new DataGridLength(1, DataGridLengthUnitType.Star),
                IsReadOnly = false,
            });
            lines.Columns.Add(new DataGridTextColumnEx {
                Header  = "Розничная цена",
                Binding = new Binding("RetailCost")
                {
                    Converter = InputConverter.Instance, ValidatesOnExceptions = true,
                },
                Width      = new DataGridLength(1, DataGridLengthUnitType.Star),
                IsReadOnly = false,
            });
            lines.Columns.Add(new DataGridTextColumnEx {
                Header  = "Заказ",
                Binding = new Binding("Quantity")
                {
                    Converter = InputConverter.Instance, ValidatesOnExceptions = true,
                },
                Width      = new DataGridLength(1, DataGridLengthUnitType.Star),
                IsReadOnly = false
            });
            lines.Columns.Add(new DataGridTextColumnEx {
                Header     = "Розничная сумма",
                Binding    = new Binding("RetailSum"),
                Width      = new DataGridLength(1, DataGridLengthUnitType.Star),
                IsReadOnly = true,
            });

            var grid = lines;

            DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Цена производителя без НДС");
            DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Цена ГР");
            DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Торговая наценка оптовика");
            DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Цена поставщика без НДС");
            DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Цена поставщика с НДС");
            DataGridHelper.CalculateColumnWidth(grid, "000", "НДС");
            DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Макс. розничная наценка");
            DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Розничная наценка");
            DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Реальная наценка");
            DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Розничная цена");
            DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Заказ");
            DataGridHelper.CalculateColumnWidth(grid, "00000", "Оприходовано");
            DataGridHelper.CalculateColumnWidth(grid, "00000.00", "Розничная сумма");
            DataGridHelper.CalculateColumnWidth(grid, "0000000000000", "Штрихкод");

            StyleHelper.ApplyStyles(typeof(WaybillLine), lines, Application.Current.Resources, Legend);
            Conventions.ConfigureDataGrid(lines, typeof(WaybillLine));

            Grid.SetRow(lines, 2);
            Grid.SetColumn(lines, 1);
            Editable.AutoEditOnDigit(grid, "Розничная наценка");
            if (model != null)
            {
                model.TableSettings.Restore(lines);
                model.TableSettings.Restore(OrderLines);

                foreach (var gridColumn in lines.Columns.OfType <DataGridTextColumn>().Where(c => !c.IsReadOnly))
                {
                    if (gridColumn.ReadLocalValue(DataGridColumn.IsReadOnlyProperty) == DependencyProperty.UnsetValue)
                    {
                        gridColumn.IsReadOnly = model.Waybill.IsReadOnly;
                    }
                }
                model.Waybill.PropertyChanged += (sender, args) => {
                    if (args.PropertyName == "IsCreatedByUser")
                    {
                        MainGrid.Children.Remove(lines);
                        Init();
                        lines.ItemsSource = model.Lines.Value;
                    }
                    else if (args.PropertyName == "Status")
                    {
                        lines.CommitEdit();                        //Завершаем редактирование, чтобы не исчезла текущая строка
                        lines.IsReadOnly = model.Waybill.Status == DocStatus.Posted;
                    }
                };

                lines.IsReadOnly = model.Waybill.Status == DocStatus.Posted;
            }
            grid.BeginningEdit += (sender, args) => {
                var line = args.Row.DataContext as WaybillLine;
                if (line == null)
                {
                    return;
                }
                if (line.ServerRetailCost != null)
                {
                    MessageBox.Show(Application.Current.MainWindow, "Редактирование розничной цены запрещено поставщиком",
                                    Consts.WarningTitle, MessageBoxButton.OK, MessageBoxImage.Warning);
                    args.Cancel = true;
                }
                else if (model.Waybill.Status == DocStatus.Posted)
                {
                    MessageBox.Show(Application.Current.MainWindow, "Накладная оприходована, редактирование запрещено",
                                    Consts.WarningTitle, MessageBoxButton.OK, MessageBoxImage.Warning);
                    args.Cancel = true;
                }
            };

            MainGrid.Children.Add(lines);

            DataGridHelper.CalculateColumnWidth(OrderLines, "00000.00", "Цена");
            DataGridHelper.CalculateColumnWidth(OrderLines, "00000.00", "Заказ");
            DataGridHelper.CalculateColumnWidth(OrderLines, "00000.00", "Сумма");
        }
Esempio n. 4
0
 public Main()
 {
     InitializeComponent();
     DataGridHelper.CalculateColumnWidth(Newses, "0000.00.00", "Дата");
 }