Exemplo n.º 1
0
        void YtreeviewNotLoaded_RowActivated(object o, Gtk.RowActivatedArgs args)
        {
            var notLoadedNomenclature = ytreeviewNotLoaded.GetSelectedObject() as RouteListControlNotLoadedNode;

            if (notLoadedNomenclature == null)
            {
                return;
            }

            var dlg = new CarLoadDocumentDlg(Entity.Id, notLoadedNomenclature.Nomenclature.Warehouse?.Id);

            TabParent.AddTab(dlg, this);
        }
        private void SendToLoadingAndPrint(RouteListJournalNode selectedNode, Warehouse warehouse)
        {
            using (var localUow = UnitOfWorkFactory.CreateWithoutRoot())
            {
                var routeList = localUow.GetById <RouteList>(selectedNode.Id);
                routeList.ChangeStatusAndCreateTask(RouteListStatus.InLoading, _callTaskWorker);

                var carLoadDocument = new CarLoadDocument();
                FillCarLoadDocument(carLoadDocument, localUow, routeList.Id, warehouse.Id);

                var routeListFullyShipped = routeList.ShipIfCan(localUow, _callTaskWorker, out var notLoadedGoods, carLoadDocument);
                localUow.Save(routeList);

                //Не погружен остался только терминал
                var routeListShippedWithoutTerminal = notLoadedGoods.Count == 1 &&
                                                      notLoadedGoods.All(x => x.NomenclatureId == _terminalNomenclatureProvider.GetNomenclatureIdForTerminal);

                var valid = commonServices.ValidationService.Validate(carLoadDocument, showValidationResults: false);

                if ((routeListFullyShipped || routeListShippedWithoutTerminal) && valid)
                {
                    carLoadDocument.ClearItemsFromZero();
                    carLoadDocument.UpdateOperations(localUow);

                    if (!carLoadDocument.Items.Any())
                    {
                        localUow.Commit();
                        return;
                    }

                    localUow.Save(carLoadDocument);
                    localUow.Commit();

                    if (routeListShippedWithoutTerminal)
                    {
                        commonServices.InteractiveService.ShowMessage(ImportanceLevel.Info,
                                                                      "Водителю необходимо получить терминал на кассе");
                    }

                    var reportInfo = new ReportInfo
                    {
                        Title      = carLoadDocument.Title,
                        Identifier = "Store.CarLoadDocument",
                        Parameters = new Dictionary <string, object> {
                            { "id", carLoadDocument.Id }
                        },
                        PrintType = ReportInfo.PrintingType.MultiplePrinters
                    };

                    _reportPrinter.Print(reportInfo);
                }
                else
                {
                    localUow.Commit();
                    commonServices.InteractiveService.ShowMessage(ImportanceLevel.Warning,
                                                                  "Не удалось автоматически отгрузить Маршрутный лист");

                    var dlg = new CarLoadDocumentDlg();
                    FillCarLoadDocument(dlg.Entity, dlg.UoW, routeList.Id, warehouse.Id);
                    TabParent.OpenTab(() => dlg);
                }
            }
        }