Example #1
0
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5WS_SSCP_1533 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            //Leave UserCode region to enable user code saving
            #region UserCode
            var returnValue = new FR_Guid();
            //Put your code here

            foreach (var paramShoppingCart in Parameter.ShoppingCart)
            {
                var item = new CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart_Product();
                if (paramShoppingCart.ORD_PRC_ShoppingCart_ProductID != Guid.Empty)
                {
                    item.Load(Connection, Transaction, paramShoppingCart.ORD_PRC_ShoppingCart_ProductID);
                }

                // Check does for current shopping cart exist product with same id
                if (paramShoppingCart.ORD_PRC_ShoppingCart_ProductID == Guid.Empty)
                {
                    var existingProduct = CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart_Product.Query.Search(Connection, Transaction,
                                                                                                    new CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart_Product.Query
                    {
                        CMN_PRO_Product_RefID      = paramShoppingCart.CMN_PRO_Product_RefID,
                        ORD_PRC_ShoppingCart_RefID = paramShoppingCart.ORD_PRC_ShoppingCart_RefID,
                        Tenant_RefID = securityTicket.TenantID,
                        IsCanceled   = false,
                        IsDeleted    = false
                    }).FirstOrDefault();

                    if (existingProduct != null)
                    {
                        item = existingProduct;
                        paramShoppingCart.Quantity += item.Quantity;
                    }
                }

                if (paramShoppingCart.IsDeleted == true)
                {
                    item.IsDeleted = true;
                    return(new FR_Guid(item.Save(Connection, Transaction), item.ORD_PRC_ShoppingCart_ProductID));
                }

                //Creation specific parameters (Tenant, Account ... )
                if (paramShoppingCart.ORD_PRC_ShoppingCart_ProductID == Guid.Empty)
                {
                    item.Tenant_RefID = securityTicket.TenantID;
                }

                item.ORD_PRC_ShoppingCart_RefID    = paramShoppingCart.ORD_PRC_ShoppingCart_RefID;
                item.CMN_PRO_Product_RefID         = paramShoppingCart.CMN_PRO_Product_RefID;
                item.CMN_PRO_Product_Variant_RefID = paramShoppingCart.CMN_PRO_Product_Variant_RefID;
                item.CMN_PRO_Product_Release_RefID = paramShoppingCart.CMN_PRO_Product_Release_RefID;
                item.SequenceNumber = paramShoppingCart.SequenceNumber;
                item.Quantity       = paramShoppingCart.Quantity;
                item.IsCanceled     = paramShoppingCart.IsCanceled;
                item.Save(Connection, Transaction);
            }
            return(new FR_Guid(Guid.NewGuid()));

            #endregion UserCode
        }
Example #2
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
        }