protected static FR_L6WS_GSCDfSCID_1458 Execute(DbConnection Connection, DbTransaction Transaction, P_L6WS_GSCDfSCID_1458 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_L6WS_GSCDfSCID_1458(); //Put your code here if (Parameter.ShoppingCartID == Guid.Empty) { return(null); } returnValue.Result = new L6WS_GSCDfSCID_1458(); #region ShoppingCart returnValue.Result.ShoppingCart = cls_Get_ShoppingCart_for_ShoppingCartID.Invoke(Connection, Transaction, new P_L6WS_GSCfSCID_1448() { ShoppingCartID = Parameter.ShoppingCartID }, securityTicket).Result; if (returnValue.Result.ShoppingCart == null) { return(null); } #endregion #region ShoppingCart_Notes returnValue.Result.ShoppingCart_Notes = cls_Get_ShoppingCart_Notes_for_ShoppingCartID.Invoke(Connection, Transaction, new P_L5AWSAR_GSCNfSC_1454() { ShoppingCartID = Parameter.ShoppingCartID }, securityTicket).Result.OrderBy(i => i.UpdatedOn).ToArray(); #endregion #region Articles ORM_ORD_PRC_ShoppingCart_Product.Query shoppingCartProductsQuery = new ORM_ORD_PRC_ShoppingCart_Product.Query(); shoppingCartProductsQuery.ORD_PRC_ShoppingCart_RefID = returnValue.Result.ShoppingCart.ORD_PRC_ShoppingCartID; shoppingCartProductsQuery.IsDeleted = false; shoppingCartProductsQuery.IsCanceled = false; shoppingCartProductsQuery.Tenant_RefID = securityTicket.TenantID; List <ORM_ORD_PRC_ShoppingCart_Product> productList = ORM_ORD_PRC_ShoppingCart_Product.Query.Search(Connection, Transaction, shoppingCartProductsQuery); List <Guid> articleIds = new List <Guid>(); if (productList != null && productList.Count > 0) { articleIds.AddRange(productList.Select(i => i.CMN_PRO_Product_RefID)); } List <L3AR_GAfAL_0942> articleInfos = new List <L3AR_GAfAL_0942>(); if (articleIds.Count > 0) { articleInfos = cls_Get_Articles_for_ArticleList.Invoke(Connection, Transaction, new P_L3AR_GAfAL_0942() { ProductID_List = articleIds.ToArray() }, securityTicket).Result.ToList(); } List <L6WS_GSCDfSCID_1458_Product> products = new List <L6WS_GSCDfSCID_1458_Product>(); L6WS_GSCDfSCID_1458_Product product; L3AR_GAfAL_0942 articleInfo; double taxRate = 0; #region ORM and Querie objects ORM_CMN_PRO_Product orm_product; ORM_CMN_SLS_Price.Query priceQuery; ORM_CMN_PRO_Product_SalesTaxAssignmnet.Query taxAssignmentQuery; ORM_ACC_TAX_Tax orm_tax; #endregion foreach (var productItem in productList) { #region check procurement order date and number if (returnValue.Result.OrderDate == null || returnValue.Result.OrderDate.Ticks == 0) { ORM_ORD_PRC_ShoppingCart_2_ProcurementOrderPosition.Query shoppingCartOrderPositionQuery = new ORM_ORD_PRC_ShoppingCart_2_ProcurementOrderPosition.Query(); shoppingCartOrderPositionQuery.IsDeleted = false; shoppingCartOrderPositionQuery.Tenant_RefID = securityTicket.TenantID; shoppingCartOrderPositionQuery.ORD_PRC_ShoppingCart_Product_RefID = productItem.ORD_PRC_ShoppingCart_ProductID; List <ORM_ORD_PRC_ShoppingCart_2_ProcurementOrderPosition> shoppingCartOrderPositionList = ORM_ORD_PRC_ShoppingCart_2_ProcurementOrderPosition.Query.Search(Connection, Transaction, shoppingCartOrderPositionQuery); foreach (var shoppingCartOrderPosition in shoppingCartOrderPositionList) { ORM_ORD_PRC_ProcurementOrder_Position procurementOrder_Position = new ORM_ORD_PRC_ProcurementOrder_Position(); var procurementOrder_PositionResult = procurementOrder_Position.Load(Connection, Transaction, shoppingCartOrderPosition.ORD_PRC_ProcurementOrder_Position_RefID); if (procurementOrder_PositionResult.Status != FR_Status.Success || procurementOrder_Position.ORD_PRC_ProcurementOrder_PositionID == Guid.Empty) { continue; } ORM_ORD_PRC_ProcurementOrder_Header procurementOrder_Header = new ORM_ORD_PRC_ProcurementOrder_Header(); var procurementOrder_HeaderResult = procurementOrder_Header.Load(Connection, Transaction, procurementOrder_Position.ProcurementOrder_Header_RefID); if (procurementOrder_HeaderResult.Status != FR_Status.Success || procurementOrder_Header.ORD_PRC_ProcurementOrder_HeaderID == Guid.Empty) { continue; } returnValue.Result.OrderDate = procurementOrder_Header.ProcurementOrder_Date; returnValue.Result.OrderNumber = procurementOrder_Header.ProcurementOrder_Number; break; } } #endregion #region get product orm_product = new ORM_CMN_PRO_Product(); var productResult = orm_product.Load(Connection, Transaction, productItem.CMN_PRO_Product_RefID); if (productResult.Status != FR_Status.Success || orm_product.CMN_PRO_ProductID == Guid.Empty) { continue; } #endregion #region get price ORM_CMN_PRO_SubscribedCatalog.Query catalogQuery = new ORM_CMN_PRO_SubscribedCatalog.Query(); catalogQuery.Tenant_RefID = securityTicket.TenantID; catalogQuery.IsDeleted = false; List <ORM_CMN_PRO_SubscribedCatalog> catalogList = ORM_CMN_PRO_SubscribedCatalog.Query.Search(Connection, Transaction, catalogQuery); priceQuery = new ORM_CMN_SLS_Price.Query(); priceQuery.CMN_PRO_Product_RefID = orm_product.CMN_PRO_ProductID; priceQuery.Tenant_RefID = securityTicket.TenantID; priceQuery.IsDeleted = false; List <ORM_CMN_SLS_Price> prices = ORM_CMN_SLS_Price.Query.Search(Connection, Transaction, priceQuery); ORM_CMN_SLS_Price price = prices.Where(i => catalogList.Select(j => j.SubscribedCatalog_PricelistRelease_RefID).Contains(i.PricelistRelease_RefID)).FirstOrDefault(); #endregion #region get taxes taxRate = 0; taxAssignmentQuery = new ORM_CMN_PRO_Product_SalesTaxAssignmnet.Query(); taxAssignmentQuery.Product_RefID = orm_product.CMN_PRO_ProductID; taxAssignmentQuery.Tenant_RefID = securityTicket.TenantID; taxAssignmentQuery.IsDeleted = false; List <ORM_CMN_PRO_Product_SalesTaxAssignmnet> taxAssignmentList = ORM_CMN_PRO_Product_SalesTaxAssignmnet.Query.Search(Connection, Transaction, taxAssignmentQuery); foreach (var taxAssignment in taxAssignmentList) { orm_tax = new ORM_ACC_TAX_Tax(); var taxResult = orm_tax.Load(Connection, Transaction, taxAssignment.ApplicableSalesTax_RefID); if (taxResult.Status == FR_Status.Success && orm_tax.ACC_TAX_TaxeID != Guid.Empty) { taxRate += orm_tax.TaxRate; } } #endregion #region set product item product = new L6WS_GSCDfSCID_1458_Product(); product.CMN_PRO_Product_RefID = orm_product.CMN_PRO_ProductID; product.PriceAmount = price == null ? 0 : (price.PriceAmount == null ? 0 : Double.Parse(price.PriceAmount.ToString())); product.TaxRate = taxRate; product.Quantity = productItem.Quantity.ToString(); product.IsProductCanceled = productItem.IsCanceled; if (!String.IsNullOrEmpty(productItem.Comment)) { string[] comments = productItem.Comment.Split('@'); if (comments.Length == 2) { product.ProductComment = comments[1]; } } product.IsProductReplacementAllowed = productItem.IsProductReplacementAllowed; articleInfo = articleInfos.FirstOrDefault(i => i.CMN_PRO_ProductID == orm_product.CMN_PRO_ProductID); if (articleInfo != null) { product.Product_Name = articleInfo.Product_Name; product.Product_Number = articleInfo.Product_Number; product.UnitAmount = articleInfo.UnitAmount.ToString(); product.UnitIsoCode = articleInfo.UnitIsoCode; product.DossageFormName = articleInfo.DossageFormName; } #endregion products.Add(product); } returnValue.Result.Products = products.ToArray(); #endregion #region Person info // current user ORM_CMN_PER_PersonInfo_2_Account.Query accountQuery = new ORM_CMN_PER_PersonInfo_2_Account.Query(); accountQuery.USR_Account_RefID = securityTicket.AccountID; accountQuery.Tenant_RefID = securityTicket.TenantID; accountQuery.IsDeleted = false; ORM_CMN_PER_PersonInfo_2_Account account = ORM_CMN_PER_PersonInfo_2_Account.Query.Search(Connection, Transaction, accountQuery).FirstOrDefault(); if (account != null) { ORM_CMN_PER_PersonInfo personInfo = new ORM_CMN_PER_PersonInfo(); var personInfoResult = personInfo.Load(Connection, Transaction, account.CMN_PER_PersonInfo_RefID); if (personInfoResult.Status == FR_Status.Success && personInfo.CMN_PER_PersonInfoID != Guid.Empty) { returnValue.Result.CurrentUser = personInfo.FirstName + " " + personInfo.LastName; } } #region Approved by user ORM_ORD_PRC_ShoppingCart_Status.Query stusesQuery = new ORM_ORD_PRC_ShoppingCart_Status.Query(); stusesQuery.Tenant_RefID = securityTicket.TenantID; stusesQuery.IsDeleted = false; List <ORM_ORD_PRC_ShoppingCart_Status> statuses = ORM_ORD_PRC_ShoppingCart_Status.Query.Search(Connection, Transaction, stusesQuery); ORM_ORD_PRC_ShoppingCart_Status approvedStatus = statuses.FirstOrDefault(i => i.GlobalPropertyMatchingID.Contains("approved")); if (approvedStatus != null) { ORM_ORD_PRC_ShoppingCartStatus_History.Query statusHistoryQuery = new ORM_ORD_PRC_ShoppingCartStatus_History.Query(); statusHistoryQuery.Tenant_RefID = securityTicket.TenantID; statusHistoryQuery.IsDeleted = false; statusHistoryQuery.ORD_PRC_ShoppingCart_RefID = returnValue.Result.ShoppingCart.ORD_PRC_ShoppingCartID; statusHistoryQuery.ORD_PRC_ShoppingCart_Status_RefID = approvedStatus.ORD_PRC_ShoppingCart_StatusID; ORM_ORD_PRC_ShoppingCartStatus_History statusHistory = ORM_ORD_PRC_ShoppingCartStatus_History.Query.Search(Connection, Transaction, statusHistoryQuery).FirstOrDefault(); if (statusHistory != null) { accountQuery = new ORM_CMN_PER_PersonInfo_2_Account.Query(); accountQuery.USR_Account_RefID = statusHistory.PerformedBy_Account_RefID; accountQuery.Tenant_RefID = securityTicket.TenantID; accountQuery.IsDeleted = false; account = ORM_CMN_PER_PersonInfo_2_Account.Query.Search(Connection, Transaction, accountQuery).FirstOrDefault(); if (account != null) { ORM_CMN_PER_PersonInfo personInfo = new ORM_CMN_PER_PersonInfo(); var personInfoResult = personInfo.Load(Connection, Transaction, account.CMN_PER_PersonInfo_RefID); if (personInfoResult.Status == FR_Status.Success && personInfo.CMN_PER_PersonInfoID != Guid.Empty) { returnValue.Result.ApprovedByUser = personInfo.FirstName + " " + personInfo.LastName; returnValue.Result.DateOfApproval = statusHistory.Creation_Timestamp; } } } } #endregion #endregion return(returnValue); #endregion UserCode }
protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5AR_SA_1525 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guid(); var languageQuery = new ORM_CMN_Language.Query(); languageQuery.Tenant_RefID = securityTicket.TenantID; languageQuery.IsDeleted = false; var languages = ORM_CMN_Language.Query.Search(Connection, Transaction, languageQuery); var product = new ORM_CMN_PRO_Product(); if (Parameter.ArticleID == Guid.Empty) { #region ORM_CMN_PRO_Product product = new ORM_CMN_PRO_Product(); product.CMN_PRO_ProductID = Guid.NewGuid(); product.ProductITL = Guid.NewGuid().ToString(); product.IsProduct_Article = true; product.IsProductAvailableForOrdering = true; product.IsImportedFromExternalCatalog = false; product.Product_Name = new Dict(ORM_CMN_PRO_Product.TableName); product.Product_Description = new Dict(ORM_CMN_PRO_Product.TableName); product.PackageInfo_RefID = Guid.NewGuid(); product.Creation_Timestamp = DateTime.Now; product.Tenant_RefID = securityTicket.TenantID; product.Save(Connection, Transaction); #endregion #region CustomArticles Group var customerArticlesGroupID = Guid.Empty; var customArticlesGlobalMatching = EnumUtils.GetEnumDescription(EProductGroup.CustomArticles); var customerArticlesGroup = ORM_CMN_PRO_ProductGroup.Query.Search(Connection, Transaction, new ORM_CMN_PRO_ProductGroup.Query() { GlobalPropertyMatchingID = customArticlesGlobalMatching, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }); if (customerArticlesGroup == null || customerArticlesGroup.Count() == 0) { var group = new ORM_CMN_PRO_ProductGroup(); group.CMN_PRO_ProductGroupID = Guid.NewGuid(); group.GlobalPropertyMatchingID = customArticlesGlobalMatching; group.ProductGroup_Name = new Dict(ORM_CMN_PRO_ProductGroup.TableName); foreach (var language in languages) { group.ProductGroup_Name.AddEntry(language.CMN_LanguageID, "Custom Articles"); } group.ProductGroup_Description = new Dict(ORM_CMN_PRO_ProductGroup.TableName); group.IsDeleted = false; group.Creation_Timestamp = DateTime.Now; group.Tenant_RefID = securityTicket.TenantID; group.Save(Connection, Transaction); customerArticlesGroupID = group.CMN_PRO_ProductGroupID; } else { customerArticlesGroupID = customerArticlesGroup.Single().CMN_PRO_ProductGroupID; } var product2Group = new ORM_CMN_PRO_Product_2_ProductGroup(); product2Group.AssignmentID = Guid.NewGuid(); product2Group.CMN_PRO_Product_RefID = product.CMN_PRO_ProductID; product2Group.CMN_PRO_ProductGroup_RefID = customerArticlesGroupID; product2Group.Creation_Timestamp = DateTime.Now; product2Group.Tenant_RefID = securityTicket.TenantID; product2Group.Save(Connection, Transaction); #endregion } else { product.Load(Connection, Transaction, Parameter.ArticleID); } #region ORM_CMN_PRO_Product product.Product_Number = Parameter.PZN; foreach (var language in languages) { product.Product_Name.UpdateEntry(language.CMN_LanguageID, Parameter.ArticleName); } foreach (var language in languages) { product.Product_Description.UpdateEntry(language.CMN_LanguageID, Parameter.Notice); } product.DefaultStorageTemperature_min_in_kelvin = Parameter.StorageTemperatureFrom_in_kelvin; product.DefaultStorageTemperature_max_in_kelvin = Parameter.StorageTemperatureTo_in_kelvin; product.DefaultExpirationPeriod_in_sec = Parameter.Expiring_in_seconds; product.ProductType_RefID = Parameter.ArticleType_RefID; product.IsPlaceholderArticle = Parameter.IsDummy; product.IsStorage_CoolingRequired = Parameter.IsStorage_CoolingRequired; product.IsStorage_BatchNumberMandatory = Parameter.IsStorage_BatchNumberMandatory; product.IsStorage_ExpiryDateMandatory = Parameter.IsStorage_ExpiryDateMandatory; product.IsProductPartOfDefaultStock = Parameter.IsProduct_PartOfDefaultStock; var xml = new ProductAdditionalInfoXML() { IsPharmacyOnlyDistribution = Parameter.IsProduct_PharmacyOnlyDistribution }; product.ProductAdditionalInfoXML = xml.ToPayload(); product.ProductSuccessor_RefID = Parameter.ProductSuccessor_RefID; product.Save(Connection, Transaction); #endregion #region ORM_HEC_Product var query = new ORM_HEC_Product.Query(); query.Ext_PRO_Product_RefID = product.CMN_PRO_ProductID; query.IsDeleted = false; query.Tenant_RefID = securityTicket.TenantID; var hecProduct = ORM_HEC_Product.Query.Search(Connection, Transaction, query).SingleOrDefault(); if (hecProduct == null) { hecProduct = new ORM_HEC_Product(); hecProduct.HEC_ProductID = Guid.NewGuid(); hecProduct.Ext_PRO_Product_RefID = product.CMN_PRO_ProductID; hecProduct.Creation_Timestamp = DateTime.Now; hecProduct.Tenant_RefID = securityTicket.TenantID; } hecProduct.ProductDosageForm_RefID = Parameter.DosageForm_RefID; hecProduct.IsProduct_AddictiveDrug = Parameter.IsProduct_AddictiveDrug; hecProduct.Save(Connection, Transaction); #endregion #region ORM_CMN_PRO_Product_2_ProductGroup var groupQuery = new ORM_CMN_PRO_Product_2_ProductGroup.Query(); groupQuery.CMN_PRO_Product_RefID = product.CMN_PRO_ProductID; groupQuery.IsDeleted = false; groupQuery.Tenant_RefID = securityTicket.TenantID; var alreadyPersistedGroups = ORM_CMN_PRO_Product_2_ProductGroup.Query.Search(Connection, Transaction, groupQuery); //delete removed groups foreach (var item in alreadyPersistedGroups) { var globalGroup = new ORM_CMN_PRO_ProductGroup(); globalGroup.Load(Connection, Transaction, item.CMN_PRO_ProductGroup_RefID); if (!Parameter.ArticleGroup_RefIDs.Contains(item.CMN_PRO_ProductGroup_RefID) && String.IsNullOrEmpty(globalGroup.GlobalPropertyMatchingID)) { item.IsDeleted = true; item.Save(Connection, Transaction); } } //add new groups foreach (var groupID in Parameter.ArticleGroup_RefIDs) { if (!alreadyPersistedGroups.Select(i => i.CMN_PRO_ProductGroup_RefID).Contains(groupID)) { var group = new ORM_CMN_PRO_Product_2_ProductGroup(); group.AssignmentID = Guid.NewGuid(); group.CMN_PRO_Product_RefID = product.CMN_PRO_ProductID; group.CMN_PRO_ProductGroup_RefID = groupID; group.Creation_Timestamp = DateTime.Now; group.Tenant_RefID = securityTicket.TenantID; group.Save(Connection, Transaction); } } #endregion #region ORM_CMN_PRO_Product_SalesTaxAssignmnet var salesTaxQuery = new ORM_CMN_PRO_Product_SalesTaxAssignmnet.Query(); salesTaxQuery.Product_RefID = product.CMN_PRO_ProductID; salesTaxQuery.IsDeleted = false; salesTaxQuery.Tenant_RefID = securityTicket.TenantID; var salesTax = ORM_CMN_PRO_Product_SalesTaxAssignmnet.Query.Search(Connection, Transaction, salesTaxQuery).SingleOrDefault(); if (salesTax == null) { salesTax = new ORM_CMN_PRO_Product_SalesTaxAssignmnet(); salesTax.CMN_PRO_Product_SalesTaxAssignmnetID = Guid.NewGuid(); salesTax.Product_RefID = product.CMN_PRO_ProductID; salesTax.Creation_Timestamp = DateTime.Now; salesTax.Tenant_RefID = securityTicket.TenantID; } salesTax.ApplicableSalesTax_RefID = Parameter.VAT_RefID; salesTax.Save(Connection, Transaction); #endregion #region ORM_CMN_PRO_Product_2_ProductCode var product2CodeQuery = new ORM_CMN_PRO_Product_2_ProductCode.Query(); product2CodeQuery.CMN_PRO_Product_RefID = product.CMN_PRO_ProductID; product2CodeQuery.Tenant_RefID = securityTicket.TenantID; product2CodeQuery.IsDeleted = false; var productCodeAssignment = ORM_CMN_PRO_Product_2_ProductCode.Query.Search(Connection, Transaction, product2CodeQuery).SingleOrDefault(); if (productCodeAssignment == null) { #region ORM_CMN_PRO_ProductCode //Get Product Code Type or create it if not exist var eanID = DMProductCodeTypes.Get_ProductCodeType_ByGlobalMatchingID(Connection, Transaction, EProductCodeType.EAN, securityTicket); var productCode = new ORM_CMN_PRO_ProductCode(); productCode.CMN_PRO_ProductCodeID = Guid.NewGuid(); productCode.ProductCode_Type_RefID = eanID; productCode.ProductCode_Value = Parameter.EAN; productCode.Creation_Timestamp = DateTime.Now; productCode.Tenant_RefID = securityTicket.TenantID; productCode.Save(Connection, Transaction); #endregion #region ORM_CMN_PRO_Product_2_ProductCode var product2Code = new ORM_CMN_PRO_Product_2_ProductCode(); product2Code.AssignmentID = Guid.NewGuid(); product2Code.CMN_PRO_Product_RefID = product.CMN_PRO_ProductID; product2Code.CMN_PRO_ProductCode_RefID = productCode.CMN_PRO_ProductCodeID; product2Code.Creation_Timestamp = DateTime.Now; product2Code.Tenant_RefID = securityTicket.TenantID; product2Code.Save(Connection, Transaction); #endregion } else { #region ORM_CMN_PRO_ProductCode var productCode = new ORM_CMN_PRO_ProductCode(); productCode.Load(Connection, Transaction, productCodeAssignment.CMN_PRO_ProductCode_RefID); productCode.ProductCode_Value = Parameter.EAN; productCode.Save(Connection, Transaction); #endregion } #endregion #region ORM_CMN_PRO_PackageInfo var packageInfo = new ORM_CMN_PRO_PAC_PackageInfo(); packageInfo.Load(Connection, Transaction, product.PackageInfo_RefID); if (packageInfo.CMN_PRO_PAC_PackageInfoID == Guid.Empty) { packageInfo = new ORM_CMN_PRO_PAC_PackageInfo(); packageInfo.CMN_PRO_PAC_PackageInfoID = product.PackageInfo_RefID; packageInfo.Creation_Timestamp = DateTime.Now; packageInfo.Tenant_RefID = securityTicket.TenantID; } packageInfo.PackageContent_Amount = PackageAmountUtils.GetPackageAmount(Parameter.UnitAmount); packageInfo.PackageContent_DisplayLabel = Parameter.UnitAmount; packageInfo.PackageContent_MeasuredInUnit_RefID = Parameter.Unit_RefID; packageInfo.Save(Connection, Transaction); #endregion #region Producer var producer = new ORM_CMN_BPT_BusinessParticipant(); producer.Load(Connection, Transaction, product.ProducingBusinessParticipant_RefID); if (producer.CMN_BPT_BusinessParticipantID == Guid.Empty) { producer.CMN_BPT_BusinessParticipantID = Guid.NewGuid(); producer.IsCompany = true; producer.Tenant_RefID = securityTicket.TenantID; producer.Creation_Timestamp = DateTime.Now; product.ProducingBusinessParticipant_RefID = producer.CMN_BPT_BusinessParticipantID; product.Save(Connection, Transaction); } producer.DisplayName = Parameter.Producer; producer.Save(Connection, Transaction); #endregion returnValue.Result = product.CMN_PRO_ProductID; return(returnValue); #endregion UserCode }