Example #1
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5AWSAR_CAPCfSCBO_1349 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();

            // Find priviges for current user
            var checkParam = new P_L5AWSSC_CUPfSCBO_1414();
            checkParam.ORD_PRC_ShoppingCartID = Parameter.ShoppingCartID;
            var checkResult = cls_Check_User_Permissions_for_ShoppingCart_Before_Order.Invoke(Connection, Transaction, checkParam, securityTicket).Result;

            if (!checkResult.HasPrivileges)
            {
                throw new Exception("User doesn't have privileges to order!");
            }

            if (checkResult.CreateApprovalShoppingCart)
            {
                // Check does user have ABDA articles
                var paramShoppingProducts = new P_L5AWSSC_GSPfSC_1650 {
                    ShoppingCartID = Parameter.ShoppingCartID
                };

                var shoppingProducts            = cls_Get_ShoppingProducts_for_ShoppingCartID.Invoke(Connection, Transaction, paramShoppingProducts, securityTicket).Result;
                var shoppingProductsForApproval = new List <CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart_Product>();

                foreach (var p in shoppingProducts.Products)
                {
                    if (p.Groups.Count() == 1 &&
                        p.Groups.Select(i => i.Group_GlobalPropertyMatchingID).Contains(EnumUtils.GetEnumDescription(EProductGroup.ABDA)))
                    {
                        var product = new CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart_Product();
                        product.Load(Connection, Transaction, p.ORD_PRC_ShoppingCart_ProductID);
                        shoppingProductsForApproval.Add(product);
                    }
                }

                // Create new approval shopping cart
                if (shoppingProductsForApproval.Count > 0)
                {
                    #region Create approval shopping cart
                    // Find office for current shopping cart
                    var officeShoppingCart = CL1_ORD_PRC.ORM_ORD_PRC_Office_ShoppingCart.Query.Search(Connection, Transaction,
                                                                                                      new CL1_ORD_PRC.ORM_ORD_PRC_Office_ShoppingCart.Query
                    {
                        ORD_PRC_ShoppingCart_RefID = Parameter.ShoppingCartID,
                        Tenant_RefID = securityTicket.TenantID,
                        IsDeleted    = false
                    }).Single();

                    // Create new shopping cart that will contain ABDA articles
                    var paramCreateShoppingCart = new P_L5AWSAR_CSC_1809();
                    paramCreateShoppingCart.IsWaitingForApproval = true;
                    paramCreateShoppingCart.OfficeID             = officeShoppingCart.CMN_STR_Office_RefID;
                    var newShoppingCartId = cls_Create_ShoppingChart_for_CurrentOffice.Invoke(Connection, Transaction, paramCreateShoppingCart, securityTicket).Result;

                    // Move products from current shopping cart to new shopping cart
                    foreach (var p in shoppingProductsForApproval)
                    {
                        p.ORD_PRC_ShoppingCart_RefID = newShoppingCartId;
                        p.Save(Connection, Transaction);
                    }
                    #endregion

                    #region Copy Comments to new shopping cart
                    // Copy comments from current cart to new cart
                    var comments = CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart_Note.Query.Search(Connection, Transaction,
                                                                                          new CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart_Note.Query
                    {
                        ORD_PRC_ShoppingCart_RefID = Parameter.ShoppingCartID,
                        Tenant_RefID = securityTicket.TenantID,
                        IsDeleted    = false
                    });

                    foreach (var comment in comments)
                    {
                        var memo = new CL1_CMN_BPT.ORM_CMN_BPT_Memo();
                        memo.Load(Connection, Transaction, comment.CMN_BPT_Memo_RefID);

                        var newMemo = new CL1_CMN_BPT.ORM_CMN_BPT_Memo();
                        newMemo.CreatedBy_Account_RefID       = memo.CreatedBy_Account_RefID;
                        newMemo.DocumentStructureHeader_RefID = memo.DocumentStructureHeader_RefID;
                        newMemo.Memo_Abbreviation             = memo.Memo_Abbreviation;
                        newMemo.Memo_Date               = memo.Memo_Date;
                        newMemo.Memo_Text               = memo.Memo_Text;
                        newMemo.Memo_Title              = memo.Memo_Title;
                        newMemo.Tenant_RefID            = securityTicket.TenantID;
                        newMemo.UpdatedBy_Account_RefID = memo.UpdatedBy_Account_RefID;
                        newMemo.UpdatedOn               = memo.UpdatedOn;
                        newMemo.Save(Connection, Transaction);

                        var newNote = new CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart_Note();
                        newNote.CMN_BPT_Memo_RefID         = newMemo.CMN_BPT_MemoID;
                        newNote.ORD_PRC_ShoppingCart_RefID = newShoppingCartId;
                        newNote.Tenant_RefID = securityTicket.TenantID;
                        newNote.Save(Connection, Transaction);
                    }
                    #endregion
                }
            }

            return(returnValue);

            #endregion UserCode
        }
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5AWSAR_CSC_1809 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Guid();

            var item = new CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart();

            CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart_Status statusShoppingCart;

            if (Parameter.IsWaitingForApproval)
            {
                // Get status
                statusShoppingCart = CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart_Status.Query.Search(Connection, Transaction,
                                                                                              new CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart_Status.Query()
                {
                    GlobalPropertyMatchingID = DLCore_DBCommons.Utils.EnumUtils.GetEnumDescription
                                                   (DLCore_DBCommons.APODemand.EShoppingCartStatus.WaitingForApproval),
                    Tenant_RefID = securityTicket.TenantID,
                    IsDeleted    = false
                }).Single();
            }
            else
            {
                // Get status
                statusShoppingCart = CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart_Status.Query.Search(Connection, Transaction,
                                                                                              new CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart_Status.Query()
                {
                    GlobalPropertyMatchingID = DLCore_DBCommons.Utils.EnumUtils.GetEnumDescription
                                                   (DLCore_DBCommons.APODemand.EShoppingCartStatus.Active),
                    Tenant_RefID = securityTicket.TenantID,
                    IsDeleted    = false
                }).Single();
            }

            // Check does already exist available shopping cart for current office.
            var shoppingCartOffice = new CL1_ORD_PRC.ORM_ORD_PRC_Office_ShoppingCart();
            item.Tenant_RefID = securityTicket.TenantID;

            var lastShoppingCart = CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart.Query.Search(Connection, Transaction,
                                                                                     new CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart.Query
            {
                Tenant_RefID = securityTicket.TenantID
            }
                                                                                     ).OrderByDescending(x => x.Creation_Timestamp).FirstOrDefault();

            // Set shopping cart number
            double internalIdentifier = 0;

            if (lastShoppingCart != null)
            {
                double.TryParse(lastShoppingCart.InternalIdentifier, out internalIdentifier);
            }

            // Create shopping cart office
            shoppingCartOffice.ORD_PRC_ShoppingCart_RefID = item.ORD_PRC_ShoppingCartID;
            shoppingCartOffice.CMN_STR_Office_RefID       = Parameter.OfficeID;
            shoppingCartOffice.Tenant_RefID = securityTicket.TenantID;
            shoppingCartOffice.Save(Connection, Transaction);

            // Create shoppping cart
            item.ShoppingCart_CurrentStatus_RefID = statusShoppingCart.ORD_PRC_ShoppingCart_StatusID;
            item.InternalIdentifier        = (++internalIdentifier).ToString();
            item.CreatedBy_Account_RefID   = securityTicket.AccountID;
            item.IsProcurementOrderCreated = false;

            // Create and save new shopping cart history
            var shoppingHistory = new CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCartStatus_History();
            shoppingHistory.ORD_PRC_ShoppingCart_RefID        = item.ORD_PRC_ShoppingCartID;
            shoppingHistory.ORD_PRC_ShoppingCart_Status_RefID = statusShoppingCart.ORD_PRC_ShoppingCart_StatusID;
            shoppingHistory.PerformedBy_Account_RefID         = securityTicket.AccountID;
            shoppingHistory.Tenant_RefID = securityTicket.TenantID;
            shoppingHistory.Save(Connection, Transaction);

            return(new FR_Guid(item.Save(Connection, Transaction), item.ORD_PRC_ShoppingCartID));

            #endregion UserCode
        }
 ///<summary>
 /// Invokes the method for the given Connection, and Transaction, leaving them open/not commited if no exceptions occured
 ///<summary>
 public static FR_Guid Invoke(DbConnection Connection, DbTransaction Transaction, P_L5AWSAR_CSC_1809 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
 {
     return(Invoke(Connection, Transaction, null, Parameter, securityTicket));
 }
        ///<summary>
        /// Method Invocation of wrapper classes
        ///<summary>
        protected static FR_Guid Invoke(DbConnection Connection, DbTransaction Transaction, string ConnectionString, P_L5AWSAR_CSC_1809 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            bool cleanupConnection  = Connection == null;
            bool cleanupTransaction = Transaction == null;

            FR_Guid functionReturn = new FR_Guid();

            try
            {
                if (cleanupConnection == true)
                {
                    Connection = CSV2Core_MySQL.Support.DBSQLSupport.CreateConnection(ConnectionString);
                    Connection.Open();
                }
                if (cleanupTransaction == true)
                {
                    Transaction = Connection.BeginTransaction();
                }

                functionReturn = Execute(Connection, Transaction, Parameter, securityTicket);

                #region Cleanup Connection/Transaction
                //Commit the transaction
                if (cleanupTransaction == true)
                {
                    Transaction.Commit();
                }
                //Close the connection
                if (cleanupConnection == true)
                {
                    Connection.Close();
                }
                #endregion
            }
            catch (Exception ex)
            {
                try
                {
                    if (cleanupTransaction == true && Transaction != null)
                    {
                        Transaction.Rollback();
                    }
                }
                catch { }

                try
                {
                    if (cleanupConnection == true && Connection != null)
                    {
                        Connection.Close();
                    }
                }
                catch { }

                throw new Exception("Exception occured in method cls_Create_ShoppingChart_for_CurrentOffice", ex);
            }
            return(functionReturn);
        }
 ///<summary>
 /// Opens the connection/transaction for the given connectionString, and closes them when complete
 ///<summary>
 public static FR_Guid Invoke(string ConnectionString, P_L5AWSAR_CSC_1809 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
 {
     return(Invoke(null, null, ConnectionString, Parameter, securityTicket));
 }