protected static FR_Base Execute(DbConnection Connection, DbTransaction Transaction, P_L3AS_SAVV_0040[] Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Base(); foreach (var vendorVariant in Parameter) { ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant vendorVariantToCreateUpdate = new ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant(); var vendorProductExists = ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant.Query.Exists(Connection, Transaction, new ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant.Query() { CMN_PRO_ASS_AssortmentVariant_VendorVariantID = vendorVariant.AssortmentVendorVariantID }); if (vendorVariant.AssortmentVendorVariantID == Guid.Empty) { vendorProductExists = false; } if (vendorProductExists) { vendorVariantToCreateUpdate.Load(Connection, Transaction, vendorVariant.AssortmentVendorVariantID); } vendorVariantToCreateUpdate.CMN_PRO_Product_Variant_RefID = vendorVariant.ProductVariantID; vendorVariantToCreateUpdate.CMN_PRO_ASS_AssortmentVariant_RefID = vendorVariant.AssortmentVariantID; vendorVariantToCreateUpdate.IsDeleted = vendorVariant.IsDeleted; vendorVariantToCreateUpdate.IsDefaultVendorVariant = vendorVariant.IsDefaultVendorVariant; vendorVariantToCreateUpdate.OrderSequence = vendorVariant.OrderSequence; vendorVariantToCreateUpdate.Tenant_RefID = securityTicket.TenantID; vendorVariantToCreateUpdate.Save(Connection, Transaction); } return(returnValue); #endregion UserCode }
protected static FR_L5PR_GPCaCV_1310 Execute(DbConnection Connection, DbTransaction Transaction, P_L5PR_GPCaCV_1310 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { //Leave UserCode region to enable user code saving #region UserCode var returnValue = new FR_L5PR_GPCaCV_1310(); returnValue.Result = new L5PR_GPCaCV_1310(); ORM_CMN_PRO_Product product; List <ORM_CMN_PRO_CUS_Customization> customizations = new List <ORM_CMN_PRO_CUS_Customization>(); List <ORM_CMN_PRO_CUS_Customization_Variant> customizationVariants = new List <ORM_CMN_PRO_CUS_Customization_Variant>(); #region Check if product is customizable product = ORM_CMN_PRO_Product.Query.Search(Connection, Transaction, new ORM_CMN_PRO_Product.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, CMN_PRO_ProductID = Parameter.ProductId, //IsCustomizable = true }).FirstOrDefault(); if (product == null) { returnValue.Status = FR_Status.Error_Internal; returnValue.ErrorMessage = String.Format("Product with ID = {0} is not customizable or does not exist in database!", Parameter.ProductId.ToString()); return(returnValue); } #endregion ORM_CMN_PRO_ASS_AssortmentProduct assortmentProduct; #region Product is not part of an assortment // If product is not part of any assortment product, // then it is local product so take all customizations and customization variants for that product and return that as result. assortmentProduct = ORM_CMN_PRO_ASS_AssortmentProduct.Query.Search(Connection, Transaction, new ORM_CMN_PRO_ASS_AssortmentProduct.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, Ext_CMN_PRO_Product_RefID = product.CMN_PRO_ProductID }).FirstOrDefault(); if (assortmentProduct == null) { #region Retrieve all customizations and values for product customizations = ORM_CMN_PRO_CUS_Customization.Query.Search(Connection, Transaction, new ORM_CMN_PRO_CUS_Customization.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, Product_RefID = product.CMN_PRO_ProductID }); foreach (var customization in customizations) { List <ORM_CMN_PRO_CUS_Customization_Variant> variants = ORM_CMN_PRO_CUS_Customization_Variant.Query.Search(Connection, Transaction, new ORM_CMN_PRO_CUS_Customization_Variant.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, Customization_RefID = customization.CMN_PRO_CUS_CustomizationID }); customizationVariants.AddRange(variants); } #endregion returnValue.Result.Customizations = customizations.ToArray(); returnValue.Result.CustomizationVariants = customizationVariants.ToArray(); return(returnValue); } #endregion #region Product is part of an assortment // Find all assortment vendor products that are bound to it List <ORM_CMN_PRO_ASS_AssortmentProduct_VendorProduct> assortmentProductVendorProducts = ORM_CMN_PRO_ASS_AssortmentProduct_VendorProduct.Query.Search(Connection, Transaction, new ORM_CMN_PRO_ASS_AssortmentProduct_VendorProduct.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, CMN_PRO_ASS_AssortmentProduct_RefID = assortmentProduct.CMN_PRO_ASS_AssortmentProductID }); // Check if there is customization for each asortment product vendor product int numberOfBoundProductsThatHaveCustomizations = 0; List <Guid> boundProductIds = new List <Guid>(); foreach (var assortmentProductVendorProduct in assortmentProductVendorProducts) { ORM_CMN_PRO_Product vendorProduct = ORM_CMN_PRO_Product.Query.Search(Connection, Transaction, new ORM_CMN_PRO_Product.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, CMN_PRO_ProductID = assortmentProductVendorProduct.CMN_PRO_Product_RefID, IsCustomizable = true }).FirstOrDefault(); if (vendorProduct == null) { continue; } bool hasCustomizations = ORM_CMN_PRO_CUS_Customization.Query.Exists(Connection, Transaction, new ORM_CMN_PRO_CUS_Customization.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, Product_RefID = vendorProduct.CMN_PRO_ProductID }); if (hasCustomizations) { numberOfBoundProductsThatHaveCustomizations++; boundProductIds.Add(vendorProduct.CMN_PRO_ProductID); } } if (numberOfBoundProductsThatHaveCustomizations == 0) { // Nothing! } else if (numberOfBoundProductsThatHaveCustomizations == 1) { #region Retrieve all customizations and values for product customizations = ORM_CMN_PRO_CUS_Customization.Query.Search(Connection, Transaction, new ORM_CMN_PRO_CUS_Customization.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, Product_RefID = boundProductIds[0] }); foreach (var customization in customizations) { List <ORM_CMN_PRO_CUS_Customization_Variant> variants = ORM_CMN_PRO_CUS_Customization_Variant.Query.Search(Connection, Transaction, new ORM_CMN_PRO_CUS_Customization_Variant.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, Customization_RefID = customization.CMN_PRO_CUS_CustomizationID }); customizationVariants.AddRange(variants); } #endregion } else { #region More then one product that is bound to assortment product has variants ORM_CMN_PRO_ASS_AssortmentVariant assortmentProductVariant = ORM_CMN_PRO_ASS_AssortmentVariant.Query.Search(Connection, Transaction, new ORM_CMN_PRO_ASS_AssortmentVariant.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, Ext_CMN_PRO_Product_Variant_RefID = Parameter.ProductVariantId }).FirstOrDefault(); if (assortmentProductVariant != null) { List <ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant> assortmentVariantVendorVariants = ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant.Query.Search(Connection, Transaction, new ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, CMN_PRO_ASS_AssortmentVariant_RefID = assortmentProductVariant.CMN_PRO_ASS_AssortmentVariantID }); ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant defaultAssortmentVariantVendorVariant = assortmentVariantVendorVariants.FirstOrDefault(x => x.IsDefaultVendorVariant == true); if (defaultAssortmentVariantVendorVariant == null) { defaultAssortmentVariantVendorVariant = assortmentVariantVendorVariants.OrderBy(x => x.OrderSequence).FirstOrDefault(); } if (defaultAssortmentVariantVendorVariant != null) { ORM_CMN_PRO_Product_Variant productVariant = ORM_CMN_PRO_Product_Variant.Query.Search(Connection, Transaction, new ORM_CMN_PRO_Product_Variant.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, CMN_PRO_Product_VariantID = defaultAssortmentVariantVendorVariant.CMN_PRO_Product_Variant_RefID }).FirstOrDefault(); if (productVariant != null) { product = ORM_CMN_PRO_Product.Query.Search(Connection, Transaction, new ORM_CMN_PRO_Product.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, CMN_PRO_ProductID = productVariant.CMN_PRO_Product_RefID }).FirstOrDefault(); if (product != null) { customizations = ORM_CMN_PRO_CUS_Customization.Query.Search(Connection, Transaction, new ORM_CMN_PRO_CUS_Customization.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, Product_RefID = product.CMN_PRO_ProductID }); foreach (var customization in customizations) { List <ORM_CMN_PRO_CUS_Customization_Variant> variants = ORM_CMN_PRO_CUS_Customization_Variant.Query.Search(Connection, Transaction, new ORM_CMN_PRO_CUS_Customization_Variant.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, Customization_RefID = customization.CMN_PRO_CUS_CustomizationID }); customizationVariants.AddRange(variants); } } } } } #endregion } #endregion returnValue.Result.Customizations = customizations.ToArray(); returnValue.Result.CustomizationVariants = customizationVariants.ToArray(); return(returnValue); #endregion UserCode }
protected static FR_L3DO_SDO_1801 Execute(DbConnection Connection, DbTransaction Transaction, P_L3DO_SDO_1801 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_L3DO_SDO_1801(); returnValue.Result = new L3DO_SDO_1801(); ORM_CMN_UniversalContactDetail universalContactDetails = new ORM_CMN_UniversalContactDetail(); universalContactDetails.CMN_UniversalContactDetailID = Guid.NewGuid(); universalContactDetails.Contact_Email = Parameter.UniversalContactDetails.Email; universalContactDetails.Contact_Telephone = Parameter.UniversalContactDetails.Phone; universalContactDetails.Country_Name = Parameter.UniversalContactDetails.Country; universalContactDetails.Country_639_1_ISOCode = Parameter.UniversalContactDetails.CountryIso; universalContactDetails.Creation_Timestamp = DateTime.Now; universalContactDetails.First_Name = Parameter.UniversalContactDetails.FirstName; universalContactDetails.Last_Name = Parameter.UniversalContactDetails.LastName; universalContactDetails.Street_Name = Parameter.UniversalContactDetails.StreetName; universalContactDetails.Street_Number = Parameter.UniversalContactDetails.StreetNumber; universalContactDetails.ZIP = Parameter.UniversalContactDetails.Zip; universalContactDetails.Town = Parameter.UniversalContactDetails.Town; universalContactDetails.Tenant_RefID = securityTicket.TenantID; universalContactDetails.POBox = Parameter.UniversalContactDetails.POBox; universalContactDetails.Save(Connection, Transaction); ORM_CMN_NumberRange_UsageArea numberRangeUsageArea = ORM_CMN_NumberRange_UsageArea.Query.Search(Connection, Transaction, new ORM_CMN_NumberRange_UsageArea.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, GlobalStaticMatchingID = NumberRangeGlobalPropertyMatchingID }).FirstOrDefault(); if (numberRangeUsageArea == null) { throw new Exception(String.Format("Number range usage area with GPMID = {0} was not found.", NumberRangeGlobalPropertyMatchingID)); } ORM_CMN_NumberRange numberRange = ORM_CMN_NumberRange.Query.Search(Connection, Transaction, new ORM_CMN_NumberRange.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, NumberRange_UsageArea_RefID = numberRangeUsageArea.CMN_NumberRange_UsageAreaID }).FirstOrDefault(); if (numberRange == null) { throw new Exception(String.Format("Number range for area with GPMID = {0} was not found.", NumberRangeGlobalPropertyMatchingID)); } numberRange.Value_Current++; numberRange.Save(Connection, Transaction); string distributionOrderNumber = numberRange.FixedPrefix + numberRange.Value_Current.ToString().PadLeft(numberRange.Formatting_NumberLength, numberRange.Formatting_LeadingFillCharacter[0]); ORM_ORD_DIS_DistributionOrder_Header header = new ORM_ORD_DIS_DistributionOrder_Header(); header.Charged_CostCenter_RefID = Parameter.IsCostCenterOrderRefID; header.Creation_Timestamp = DateTime.Now; header.DistributeTo_UCDAddress_RefID = universalContactDetails.CMN_UniversalContactDetailID; header.DistributionOrderDate = DateTime.Now; header.DistributionOrderNumber = distributionOrderNumber; header.IfForDelivery_LogisticsProvider_RefID = Parameter.IsForDeliveryLogisticProviderRefID.ToString(); header.IfForDelivery_ShipmentType_RefID = Parameter.IsForDeliveryShipmentTypeRefID; header.IfForPickup_PointOfSale_RefID = Parameter.IsForPickupPointOfSaleRefID; header.IsCostCenterOrder = Parameter.IsCostCenterOrder; header.IsDeleted = false; header.IsForDelivery = Parameter.IsForDelivery; header.ORD_DIS_DistributionOrder_HeaderID = Guid.NewGuid(); header.Tenant_RefID = securityTicket.TenantID; header.InternallyCharged_Currency_RefID = Parameter.CurrencyID; header.InternallyCharged_TotalNetPriceValue = 0; header.IsForPickup = Parameter.IsForPickup; foreach (var item in Parameter.DistributionOrderPositions) { if (item.Quantity == 0) { continue; } ORM_CMN_PRO_ASS_AssortmentVariant assortmentVariant = ORM_CMN_PRO_ASS_AssortmentVariant.Query.Search(Connection, Transaction, new ORM_CMN_PRO_ASS_AssortmentVariant.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, Ext_CMN_PRO_Product_Variant_RefID = item.ProductVariantID }).FirstOrDefault(); ORM_ORD_DIS_DistributionOrder_Position position = null; if (assortmentVariant == null) { //This means that this product might be local one position = new ORM_ORD_DIS_DistributionOrder_Position(); position.Product_RefID = item.ProductID; position.Product_Variant_RefID = item.ProductVariantID; } else { //This means that product is from assortment and we are supposed to take orginal product. List <ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant> assortmentVendorVariats = ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant.Query.Search(Connection, Transaction, new ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, CMN_PRO_ASS_AssortmentVariant_RefID = assortmentVariant.CMN_PRO_ASS_AssortmentVariantID }); ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant defaultVendorVariant = assortmentVendorVariats.FirstOrDefault(x => x.IsDefaultVendorVariant == true); if (defaultVendorVariant == null) { defaultVendorVariant = assortmentVendorVariats.First(); } if (defaultVendorVariant != null) { ORM_CMN_PRO_Product_Variant productVariant = ORM_CMN_PRO_Product_Variant.Query.Search(Connection, Transaction, new ORM_CMN_PRO_Product_Variant.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, CMN_PRO_Product_VariantID = defaultVendorVariant.CMN_PRO_Product_Variant_RefID }).FirstOrDefault(); if (productVariant != null) { position = new ORM_ORD_DIS_DistributionOrder_Position(); position.Product_RefID = productVariant.CMN_PRO_Product_RefID; position.Product_Variant_RefID = productVariant.CMN_PRO_Product_VariantID; } } } if (position != null) { position.Creation_Timestamp = DateTime.Now; position.DistributionOrder_Header_RefID = header.ORD_DIS_DistributionOrder_HeaderID; position.ORD_DIS_DistributionOrder_PositionID = Guid.NewGuid(); position.Quantity = item.Quantity; position.Tenant_RefID = securityTicket.TenantID; position.InternallyCharged_TotalNetPriceValue = item.PriceValueTotal; position.Save(Connection, Transaction); if (item.DistributionOrderPositionCustomizations != null && item.DistributionOrderPositionCustomizations.Where(x => x.CustomizationVariantID != Guid.Empty).Count() > 0) { foreach (var itemCustomization in item.DistributionOrderPositionCustomizations) { if (itemCustomization.CustomizationVariantID != Guid.Empty) { ORM_ORD_DIS_DistributionOrder_Position_Customization customization = new ORM_ORD_DIS_DistributionOrder_Position_Customization(); customization.ORD_DIS_DistributionOrder_Position_CustomizationID = itemCustomization.DistributionOrderPositionCustomizationID; customization.Tenant_RefID = securityTicket.TenantID; customization.DistributionOrder_Position_RefID = position.ORD_DIS_DistributionOrder_PositionID; customization.CustomizationVariant_Name = itemCustomization.CustomizationVariantName; customization.Customization_Variant_RefID = itemCustomization.CustomizationVariantID; customization.Customization_Name = itemCustomization.CustomizationName; customization.Save(Connection, Transaction); } } } } header.InternallyCharged_TotalNetPriceValue += position.InternallyCharged_TotalNetPriceValue; } header.Save(Connection, Transaction); foreach (var item in Parameter.Documents) { ORM_DOC_Document document = new ORM_DOC_Document(); document.Alias = item.Alias; document.PrimaryType = item.PrimaryType; document.DOC_DocumentID = item.DocumentID; document.Creation_Timestamp = DateTime.Now; document.Tenant_RefID = securityTicket.TenantID; document.Save(Connection, Transaction); ORM_ORD_DIS_DistributionOrder_Header_Document orderDocument = new ORM_ORD_DIS_DistributionOrder_Header_Document(); orderDocument.Creation_Timestamp = DateTime.Now; orderDocument.DistributionOrder_Header_RefID = header.ORD_DIS_DistributionOrder_HeaderID; orderDocument.Document_RefID = document.DOC_DocumentID; orderDocument.ORD_DIS_DistributionOrder_Header_DocumentID = Guid.NewGuid(); orderDocument.Tenant_RefID = securityTicket.TenantID; orderDocument.Save(Connection, Transaction); } ORM_USR_Account account = ORM_USR_Account.Query.Search(Connection, Transaction, new ORM_USR_Account.Query() { Tenant_RefID = securityTicket.TenantID, USR_AccountID = securityTicket.AccountID, IsDeleted = false }).FirstOrDefault(); ORM_ORD_DIS_DistributionOrder_Header_History history = new ORM_ORD_DIS_DistributionOrder_Header_History(); history.Comment = Parameter.UniversalContactDetails.Comment; history.Creation_Timestamp = DateTime.Now; history.DistributionOrder_Header_RefID = header.ORD_DIS_DistributionOrder_HeaderID; history.IsCreated = true; history.ORD_DIS_DistributionOrder_Header_HistoryID = Guid.NewGuid(); history.Tenant_RefID = securityTicket.TenantID; history.TriggeredBy_BusinessParticipant_RefID = account != null ? account.BusinessParticipant_RefID : Guid.Empty; history.Save(Connection, Transaction); returnValue.Result.DistributionOrderHeaderID = header.ORD_DIS_DistributionOrder_HeaderID; returnValue.Result.DistributionOrderNumber = header.DistributionOrderNumber; return(returnValue); #endregion UserCode }
protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5PR_SPfA_1023 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guid(); var productParameters = Parameter.Products; returnValue = cls_Save_Product.Invoke(Connection, Transaction, productParameters, securityTicket); var productService = CatalogServiceFactory.GetProductService(); foreach (var vendorProduct in Parameter.VendorProducts) { Guid vendorProductID = vendorProduct.VendorProductID; if (!string.IsNullOrEmpty(vendorProduct.ProductITL)) { ProductDetailsRequest productDetailsRequest = new ProductDetailsRequest(); productDetailsRequest.CatalogCode = vendorProduct.CatalogITL; productDetailsRequest.ProductIDs = new List <string>(); productDetailsRequest.ProductIDs.Add(vendorProduct.ProductITL); List <Product> products = new List <Product>(); products.AddRange(productService.GetProductDetails <Product>(productDetailsRequest).ProductDetails); foreach (var product in products) { P_L5PR_IPfC_1648 parameter = new P_L5PR_IPfC_1648(); parameter.Product = new ProductsForImport(); parameter.Product.Code = product.Code; parameter.Product.Custom = product.Custom; parameter.Product.Description = product.Description; parameter.Product.LongName = product.LongName; parameter.Product.Name = product.Name; parameter.Product.ProductITL = product.ProductITL; parameter.Product.CatalogITL = vendorProduct.CatalogITL; parameter.Product.Variants = new List <Variant>(); foreach (var variant in product.Variants) { parameter.Product.Variants.Add(variant); } parameter.Product.Vat = product.Vat; vendorProductID = cls_Import_Product_from_Catalog.Invoke(Connection, Transaction, parameter, securityTicket).Result; vendorProduct.ProductRefID = vendorProductID; } } ORM_CMN_PRO_ASS_AssortmentProduct_VendorProduct vendorProductToSave = new ORM_CMN_PRO_ASS_AssortmentProduct_VendorProduct(); var vendorProductExists = ORM_CMN_PRO_ASS_AssortmentProduct_VendorProduct.Query.Exists(Connection, Transaction, new ORM_CMN_PRO_ASS_AssortmentProduct_VendorProduct.Query() { CMN_PRO_ASS_AssortmentProduct_VendorProductID = vendorProduct.VendorProductID }); if (vendorProductExists) { vendorProductToSave.Load(Connection, Transaction, vendorProduct.VendorProductID); } vendorProductToSave.CMN_PRO_ASS_AssortmentProduct_RefID = vendorProduct.AssortmentProductID; vendorProductToSave.CMN_PRO_Product_RefID = vendorProduct.ProductRefID; vendorProductToSave.IsDeleted = vendorProduct.IsDeleted; vendorProductToSave.Tenant_RefID = securityTicket.TenantID; vendorProductToSave.Save(Connection, Transaction); if (vendorProduct.IsDeleted == true) { P_L3VA_GAVVfAP_1926 parameterAssortmentVendorVariants = new P_L3VA_GAVVfAP_1926(); parameterAssortmentVendorVariants.ProductID = Parameter.Products.ProductID; var assortmentVendorProductVariants = cls_Get_Assortment_Vendor_Variants_for_AssortmentProductID.Invoke(Connection, Transaction, parameterAssortmentVendorVariants, securityTicket).Result; P_L3VA_GAVfP_1300 parameterVendorVariantToDelete = new P_L3VA_GAVfP_1300(); parameterVendorVariantToDelete.ProductID = vendorProductToSave.CMN_PRO_Product_RefID; var vendorProductVariantsToDelete = cls_Get_All_Variants_for_Product.Invoke(Connection, Transaction, parameterVendorVariantToDelete, securityTicket).Result; if (vendorProductVariantsToDelete != null) { foreach (var vendorProductVariantToDelete in vendorProductVariantsToDelete) { if (assortmentVendorProductVariants.ToList().Count(x => x.CMN_PRO_Product_Variant_RefID == vendorProductVariantToDelete.CMN_PRO_Product_VariantID) > 0) { var assortmentProductVariantsIDs = assortmentVendorProductVariants.Where(x => x.CMN_PRO_Product_Variant_RefID == vendorProductVariantToDelete.CMN_PRO_Product_VariantID).Select(x => x.CMN_PRO_ASS_AssortmentVariant_VendorVariantID).ToList(); foreach (var assortmentProductVariantsID in assortmentProductVariantsIDs) { ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant variantToDelete = new ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant(); variantToDelete.Load(Connection, Transaction, assortmentProductVariantsID); variantToDelete.IsDeleted = true; variantToDelete.IsDefaultVendorVariant = false; variantToDelete.Save(Connection, Transaction); } assortmentVendorProductVariants.ToList().RemoveAll(x => x.CMN_PRO_Product_Variant_RefID == vendorProductVariantToDelete.CMN_PRO_Product_VariantID); var assortmentVariantIDs = assortmentVendorProductVariants.Select(x => x.CMN_PRO_ASS_AssortmentVariantID).ToList(); foreach (var assortmentVariantID in assortmentVariantIDs.Distinct().ToList()) { var vendorVariantsToUpdate = ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant.Query.Search(Connection, Transaction, new ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant.Query() { CMN_PRO_ASS_AssortmentVariant_RefID = assortmentVariantID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }).ToList(); var orderSequence = 1; foreach (var variantToUpdate in vendorVariantsToUpdate) { variantToUpdate.OrderSequence = orderSequence; if (orderSequence == 0 && vendorVariantsToUpdate.Count(x => x.IsDefaultVendorVariant) == 0) { variantToUpdate.IsDefaultVendorVariant = true; } variantToUpdate.Save(Connection, Transaction); orderSequence++; } } } } } } } return(returnValue); #endregion UserCode }
protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5ASS_SAVV_2359 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guid(); //Put your code here foreach (var assortmentVariant in Parameter.BoundingData) { var vendorVariants = ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant.Query.Search(Connection, Transaction, new ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant.Query { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, CMN_PRO_ASS_AssortmentVariant_RefID = assortmentVariant.AssortmentVariantID }); //Delete those which don't exist any more var vendorVariantsToDelete = vendorVariants.Where(x => !assortmentVariant.ProductVariantRefID.Contains(x.CMN_PRO_Product_Variant_RefID)); if (vendorVariantsToDelete != null) { foreach (var item in vendorVariantsToDelete.ToList()) { item.IsDefaultVendorVariant = false; item.IsDeleted = true; item.Save(Connection, Transaction); } } //Edit or create the existing ones int orderSequence = 0; foreach (var productVariantID in assortmentVariant.ProductVariantRefID) { orderSequence++; var vendorVariant = new ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant(); var findVendorVariant = ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant.Query.Search(Connection, Transaction, new ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant.Query { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, CMN_PRO_ASS_AssortmentVariant_RefID = assortmentVariant.AssortmentVariantID, CMN_PRO_Product_Variant_RefID = productVariantID }); if (findVendorVariant != null && findVendorVariant.Count > 0) { vendorVariant = findVendorVariant.SingleOrDefault(); vendorVariant.OrderSequence = orderSequence; vendorVariant.IsDefaultVendorVariant = orderSequence == 1 ? true : false; vendorVariant.Save(Connection, Transaction); } else { if (productVariantID != null && productVariantID != Guid.Empty) { vendorVariant.CMN_PRO_ASS_AssortmentVariant_VendorVariantID = Guid.NewGuid(); vendorVariant.CMN_PRO_ASS_AssortmentVariant_RefID = assortmentVariant.AssortmentVariantID; vendorVariant.CMN_PRO_Product_Variant_RefID = productVariantID ?? Guid.Empty; vendorVariant.OrderSequence = orderSequence; vendorVariant.Tenant_RefID = securityTicket.TenantID; vendorVariant.IsDefaultVendorVariant = orderSequence == 1 ? true : false; vendorVariant.Save(Connection, Transaction); } } } } return(returnValue); #endregion UserCode }