public void Execute(Document document) { if (document.IsBeforeSystemStart) { return; } CommercialDocument commercialDocument = document as CommercialDocument; #region Outcome From Sales if (this.method == OutcomeFromSalesMethod) { //Pobranie konfiguracji dla typu dokumentu XElement configurationSettings = commercialDocument.DocumentType.Options; String templateName; try { templateName = (string)configurationSettings.Descendants("generateDocument").Attributes("templateName").Single(); } catch (Exception) { //RoboFramework.Tools.RandomLogHelper.GetLog().Debug("FractusRefactorTraceCatch:4"); templateName = "externalOutcome"; } ICollection <WarehouseDocument> warehouses = CommercialWarehouseDocumentFactory.Generate(commercialDocument, templateName, true, false); if (warehouses.Count > 0) { CommercialWarehouseDocumentFactory.RelateCommercialLinesToWarehousesLines(commercialDocument, warehouses, false, false, true, false); XElement source = document.Source; if (source != null && (source.Attribute("type").Value == "order" || source.Attribute("type").Value == SourceType.SalesOrderRealization)) { DocumentMapper mapper = DependencyContainerManager.Container.Get <DocumentMapper>(); CommercialDocument order = (CommercialDocument)mapper.LoadBusinessObject(BusinessObjectType.CommercialDocument, new Guid(source.Attribute("commercialDocumentId").Value)); CommercialWarehouseDocumentFactory.RelateWarehousesLinesToOrderLines(warehouses, order, commercialDocument.Source, true, false); /*if (SalesOrderFactory.TryCloseSalesOrder(order)) * commercialDocument.AddRelatedObject(order);*/ } else if (source != null && source.Attribute("type").Value == "multipleReservations") { DocumentMapper mapper = DependencyContainerManager.Container.Get <DocumentMapper>(); List <CommercialDocument> reservations = new List <CommercialDocument>(); foreach (var orderXml in source.Elements().Where(e => e.Name != "extraParams")) { CommercialDocument order = (CommercialDocument)mapper.LoadBusinessObject(BusinessObjectType.CommercialDocument, new Guid(orderXml.Value)); reservations.Add(order); } CommercialWarehouseDocumentFactory.RelateWarehousesLinesToMultipleOrdersLines(warehouses, reservations, true, false); } } } #endregion #region Income From Purchase else if (this.method == IncomeFromPurchaseMethod) { ICollection <WarehouseDocument> warehouses = CommercialWarehouseDocumentFactory.Generate(commercialDocument, "externalIncome", true, false); if (warehouses.Count > 0) { CommercialWarehouseDocumentFactory.RelateCommercialLinesToWarehousesLines(commercialDocument, warehouses, true, false, true, false); XElement source = document.Source; if (source != null && source.Attribute("type").Value == "order") { DocumentMapper mapper = DependencyContainerManager.Container.Get <DocumentMapper>(); CommercialDocument order = (CommercialDocument)mapper.LoadBusinessObject(BusinessObjectType.CommercialDocument, new Guid(source.Attribute("commercialDocumentId").Value)); CommercialWarehouseDocumentFactory.RelateWarehousesLinesToOrderLines(warehouses, order, commercialDocument.Source, true, false); } } } #endregion else if (this.method == FinancialFromCommercialMethod) { //Warunek na istnienie jakiego kolwiek settlementu, bez tego nie chciał się dogenerować dokument finansowy //Błąd mówił o niejednoznacznych relacjach uniemożliwiających zaktualizowanie dokumentu finansowego bool cos = commercialDocument.Payments.Any(p => p.Settlements.Children.Count > 0); if (document.IsNew || !cos) { FinancialDocumentFactory.GenerateFinancialDocumentToCommercialDocument(commercialDocument); } else { FinancialDocumentFactory.UpdateFinancialDocumentsInCommercialDocument(commercialDocument); } } }