public static Document DeserializeRelatedDocument(DocumentRelation relation, XElement relatedDocument) { Document parent = (Document)relation.Parent; DocumentRelationType relationType = relation.RelationType; Document retDocument = null; if (relatedDocument == null) { throw new ClientException(ClientExceptionId.IncompleteRelation); } switch (relationType) { case DocumentRelationType.SalesDocumentToSimulatedInvoice: case DocumentRelationType.InvoiceToBill: retDocument = new CommercialDocument(); retDocument.Deserialize(relatedDocument); break; case DocumentRelationType.ServiceToOutcomeShift: if (parent.BOType == BusinessObjectType.ServiceDocument) { retDocument = new WarehouseDocument(); retDocument.Deserialize(relatedDocument); } else { retDocument = new ServiceDocument(); retDocument.Deserialize(relatedDocument); } break; case DocumentRelationType.ServiceToInvoice: if (parent.BOType == BusinessObjectType.ServiceDocument) { retDocument = new CommercialDocument(); retDocument.Deserialize(relatedDocument); } else { retDocument = new ServiceDocument(); retDocument.Deserialize(relatedDocument); } break; case DocumentRelationType.ServiceToInternalOutcome: if (parent.BOType == BusinessObjectType.ServiceDocument) { retDocument = new WarehouseDocument(); retDocument.Deserialize(relatedDocument); } else { retDocument = new ServiceDocument(); retDocument.Deserialize(relatedDocument); } break; case DocumentRelationType.ComplaintToInternalOutcome: if (parent.BOType == BusinessObjectType.ComplaintDocument) { retDocument = new WarehouseDocument(); retDocument.Deserialize(relatedDocument); } else { retDocument = new ComplaintDocument(); retDocument.Deserialize(relatedDocument); } break; case DocumentRelationType.InventoryToWarehouse: if (parent.BOType == BusinessObjectType.InventoryDocument) { retDocument = new WarehouseDocument(); retDocument.Deserialize(relatedDocument); } else { retDocument = new InventoryDocument(); retDocument.Deserialize(relatedDocument); } break; case DocumentRelationType.SalesOrderToInvoice: case DocumentRelationType.SalesOrderToCorrectiveCommercialDocument: case DocumentRelationType.SalesOrderToSimulatedInvoice: retDocument = new CommercialDocument(); retDocument.Deserialize(relatedDocument); break; case DocumentRelationType.SalesOrderToWarehouseDocument: if (parent.BOType == BusinessObjectType.CommercialDocument) { retDocument = new WarehouseDocument(); retDocument.Deserialize(relatedDocument); } else { retDocument = new CommercialDocument(); retDocument.Deserialize(relatedDocument); } break; case DocumentRelationType.SalesOrderToOutcomeFinancialDocument: if (parent.BOType == BusinessObjectType.CommercialDocument) { retDocument = new FinancialDocument(); retDocument.Deserialize(relatedDocument); } else { retDocument = new CommercialDocument(); retDocument.Deserialize(relatedDocument); } break; case DocumentRelationType.ProductionOrderToIncome: case DocumentRelationType.ProductionOrderToOutcome: if (parent.BOType == BusinessObjectType.CommercialDocument) { retDocument = new WarehouseDocument(); retDocument.Deserialize(relatedDocument); } else { retDocument = new CommercialDocument(); retDocument.Deserialize(relatedDocument); } break; default: throw new InvalidOperationException("Unknown DocumentRelationType"); } return(retDocument); }
public bool HasRelations(DocumentRelationType relationType) { return(this.Children.Any(rel => rel.RelationType == relationType)); }
public static void GetColumnNames(DocumentRelation relation, ref string parentColumnName, ref string relatedDocumentColumnName) { Document parent = (Document)relation.Parent; DocumentRelationType relationType = relation.RelationType; switch (relationType) { case DocumentRelationType.SalesDocumentToSimulatedInvoice: if (parent.DocumentType.CommercialDocumentOptions.SimulatedInvoice != null) { parentColumnName = "firstCommercialDocumentHeaderId"; relatedDocumentColumnName = "secondCommercialDocumentHeaderId"; } else { parentColumnName = "secondCommercialDocumentHeaderId"; relatedDocumentColumnName = "firstCommercialDocumentHeaderId"; } break; case DocumentRelationType.InvoiceToBill: if (parent.DocumentType.CommercialDocumentOptions.IsInvoiceAppendable) //parent relacji to paragon { parentColumnName = "firstCommercialDocumentHeaderId"; relatedDocumentColumnName = "secondCommercialDocumentHeaderId"; } else { parentColumnName = "secondCommercialDocumentHeaderId"; relatedDocumentColumnName = "firstCommercialDocumentHeaderId"; } break; case DocumentRelationType.ServiceToOutcomeShift: if (parent.BOType == BusinessObjectType.ServiceDocument) { parentColumnName = "firstCommercialDocumentHeaderId"; relatedDocumentColumnName = "secondWarehouseDocumentHeaderId"; } else { parentColumnName = "secondWarehouseDocumentHeaderId"; relatedDocumentColumnName = "firstCommercialDocumentHeaderId"; } break; case DocumentRelationType.ServiceToInvoice: if (parent.BOType == BusinessObjectType.ServiceDocument) { parentColumnName = "firstCommercialDocumentHeaderId"; relatedDocumentColumnName = "secondCommercialDocumentHeaderId"; } else { parentColumnName = "secondCommercialDocumentHeaderId"; relatedDocumentColumnName = "firstCommercialDocumentHeaderId"; } break; case DocumentRelationType.ServiceToInternalOutcome: if (parent.BOType == BusinessObjectType.ServiceDocument) { parentColumnName = "firstCommercialDocumentHeaderId"; relatedDocumentColumnName = "secondWarehouseDocumentHeaderId"; } else { parentColumnName = "secondWarehouseDocumentHeaderId"; relatedDocumentColumnName = "firstCommercialDocumentHeaderId"; } break; case DocumentRelationType.ComplaintToInternalOutcome: if (parent.BOType == BusinessObjectType.ComplaintDocument) { parentColumnName = "firstComplaintDocumentHeaderId"; relatedDocumentColumnName = "secondWarehouseDocumentHeaderId"; } else { parentColumnName = "secondWarehouseDocumentHeaderId"; relatedDocumentColumnName = "firstComplaintDocumentHeaderId"; } break; case DocumentRelationType.InventoryToWarehouse: if (parent.BOType == BusinessObjectType.InventoryDocument) { parentColumnName = "firstInventoryDocumentHeaderId"; relatedDocumentColumnName = "secondWarehouseDocumentHeaderId"; } else { parentColumnName = "secondWarehouseDocumentHeaderId"; relatedDocumentColumnName = "firstInventoryDocumentHeaderId"; } break; case DocumentRelationType.SalesOrderToInvoice: case DocumentRelationType.SalesOrderToCorrectiveCommercialDocument: case DocumentRelationType.SalesOrderToSimulatedInvoice: if (parent.Attributes[DocumentFieldName.Attribute_ProcessObject] != null && parent.Attributes[DocumentFieldName.Attribute_ProcessObject].Value.Value == ProcessObjectName.SalesOrder) { parentColumnName = "firstCommercialDocumentHeaderId"; relatedDocumentColumnName = "secondCommercialDocumentHeaderId"; } else { parentColumnName = "secondCommercialDocumentHeaderId"; relatedDocumentColumnName = "firstCommercialDocumentHeaderId"; } break; case DocumentRelationType.SalesOrderToWarehouseDocument: if (parent.BOType == BusinessObjectType.CommercialDocument) { parentColumnName = "firstCommercialDocumentHeaderId"; relatedDocumentColumnName = "secondWarehouseDocumentHeaderId"; } else { parentColumnName = "secondWarehouseDocumentHeaderId"; relatedDocumentColumnName = "firstCommercialDocumentHeaderId"; } break; case DocumentRelationType.SalesOrderToOutcomeFinancialDocument: if (parent.BOType == BusinessObjectType.CommercialDocument) { parentColumnName = "firstCommercialDocumentHeaderId"; relatedDocumentColumnName = "secondFinancialDocumentHeaderId"; } else { parentColumnName = "secondFinancialDocumentHeaderId"; relatedDocumentColumnName = "firstCommercialDocumentHeaderId"; } break; case DocumentRelationType.ProductionOrderToIncome: case DocumentRelationType.ProductionOrderToOutcome: if (parent.BOType == BusinessObjectType.CommercialDocument) { parentColumnName = "firstCommercialDocumentHeaderId"; relatedDocumentColumnName = "secondWarehouseDocumentHeaderId"; } else { parentColumnName = "secondWarehouseDocumentHeaderId"; relatedDocumentColumnName = "firstCommercialDocumentHeaderId"; } break; default: throw new InvalidOperationException("Unknown DocumentRelationType"); } }
public IEnumerable <Document> GetRelatedDocuments(DocumentRelationType relationType) { return(this.Children.Where(rel => rel.RelationType == relationType).Select(rel => rel.RelatedDocument)); }