コード例 #1
0
        protected static FR_L6SH_GMDfPH_0500_Array Execute(DbConnection Connection, DbTransaction Transaction, P_L6SH_GMDfPH_0500 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L6SH_GMDfPH_0500_Array();
            //Put your code here

            var supplier = cls_Get_Suppliers_for_PrivateSubscribedCatalogs.Invoke(Connection, Transaction, securityTicket).Result.FirstOrDefault();

            #region Get All OrganizationalUnits

            //TODO: This is quick and dirty solution, remove it as soon as SLorenz remove MaveFile

            var organizationalUnits = ORM_CMN_BPT_CTM_OrganizationalUnit.Query.Search(Connection, Transaction, new ORM_CMN_BPT_CTM_OrganizationalUnit.Query()
            {
                Tenant_RefID = Guid.Parse(supplier.TenantITL)
            });

            #endregion

            var paramShoppingProducts = new P_L5PO_GPPaSCIfH_1750();
            paramShoppingProducts.ProcurementOrderHeaderID = Parameter.ProcurementHeaderID;
            var shoppingCartProcurementPositions = cls_Get_ProcurementPositions_and_ShoppingCartInfo_for_HeaderID.Invoke(Connection, Transaction, paramShoppingProducts, securityTicket)
                                                   .Result.OrderBy(x => x.ORD_PRC_ShoppingCart_RefID);

            var maveResults = new List <L6SH_GMDfPH_0500>();

            var procurementHeader = new ORM_ORD_PRC_ProcurementOrder_Header();
            procurementHeader.Load(Connection, Transaction, Parameter.ProcurementHeaderID);

            var previousShoppingCartID = Guid.Empty;
            var currentShoppingCart    = new ORM_ORD_PRC_ShoppingCart();

            var accountsForTenant = cls_Get_AllDisplayNames_of_Accounts_for_TenantID.Invoke(Connection, Transaction, securityTicket).Result;

            foreach (var shoppingCartProcurementPosition in shoppingCartProcurementPositions)
            {
                var maveResult = new L6SH_GMDfPH_0500();

                var currentProduct = new ORM_CMN_PRO_Product();
                currentProduct.Load(Connection, Transaction, shoppingCartProcurementPosition.CMN_PRO_Product_RefID);

                if (currentShoppingCart.ORD_PRC_ShoppingCartID == Guid.Empty || shoppingCartProcurementPosition.ORD_PRC_ShoppingCart_RefID != previousShoppingCartID)
                {
                    currentShoppingCart.Load(Connection, Transaction, shoppingCartProcurementPosition.ORD_PRC_ShoppingCart_RefID);
                }

                var userThatApproved = accountsForTenant.FirstOrDefault(x => x.USR_AccountID == currentShoppingCart.CreatedBy_Account_RefID);

                #region Add ShoppingCart Position

                //TODO: This is quick and dirty solution, remove it as soon as SLorenz remove MaveFile
                var organizationalUnit = organizationalUnits.Where(i => i.CustomerTenant_OfficeITL == shoppingCartProcurementPosition.CMN_STR_OfficeID.ToString()).Single();

                maveResult.CustomerNumber             = supplier.ExternalSupplierProvidedIdentifier;
                maveResult.OrgUnitNumber              = organizationalUnit.InternalOrganizationalUnitNumber;
                maveResult.OrderDateTime              = procurementHeader.ProcurementOrder_Date;
                maveResult.PriceOfAllPositionsOverAll = procurementHeader.TotalValue_BeforeTax;
                maveResult.PZNorTXT             = currentProduct.Product_Number;
                maveResult.UserThatApproved     = userThatApproved.DisplayName;
                maveResult.OrderQuantity        = Convert.ToInt32(shoppingCartProcurementPosition.Position_Quantity);
                maveResult.PositionPricePerUnit = shoppingCartProcurementPosition.Position_ValuePerUnit;
                maveResult.Comment          = string.Empty;
                maveResult.IncreasingNumber = "108384";

                maveResults.Add(maveResult);
                #endregion

                #region Add ShoppingCart Comment
                // get all comments for current shopping chart and do that just once!
                if (currentShoppingCart.ORD_PRC_ShoppingCartID != previousShoppingCartID)
                {
                    previousShoppingCartID = currentShoppingCart.ORD_PRC_ShoppingCartID;

                    var shoppingNoteParameter = new P_L5AWSAR_GSCNfSC_1454();
                    shoppingNoteParameter.ShoppingCartID = currentShoppingCart.ORD_PRC_ShoppingCartID;
                    var shoppingCartNotes = cls_Get_ShoppingCart_Notes_for_ShoppingCartID.Invoke(Connection, Transaction, shoppingNoteParameter, securityTicket).Result;

                    foreach (var note in shoppingCartNotes)
                    {
                        if (!note.IsNoteForProcurementOrder)
                        {
                            continue;
                        }

                        maveResult = new L6SH_GMDfPH_0500();

                        maveResult.CustomerNumber             = supplier.ExternalSupplierProvidedIdentifier;
                        maveResult.OrgUnitNumber              = organizationalUnit.InternalOrganizationalUnitNumber;
                        maveResult.OrderDateTime              = procurementHeader.ProcurementOrder_Date;
                        maveResult.PriceOfAllPositionsOverAll = procurementHeader.TotalValue_BeforeTax;
                        maveResult.PZNorTXT             = "TEXT";
                        maveResult.UserThatApproved     = userThatApproved.DisplayName;
                        maveResult.OrderQuantity        = 0;
                        maveResult.PositionPricePerUnit = 0;
                        maveResult.Comment          = note.Memo_Text;
                        maveResult.IncreasingNumber = "108384";

                        maveResults.Add(maveResult);
                    }
                }

                #endregion
            }


            returnValue.Result = maveResults.ToArray();
            return(returnValue);

            #endregion UserCode
        }
        protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            //Leave UserCode region to enable user code saving
            #region UserCode
            var returnValue = new FR_Guid();

            // Get shopping cart status - Ordered
            var statusOrdered = 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.Ordered),
                Tenant_RefID             = securityTicket.TenantID,
                IsDeleted = false
            }).Single();

            var tenant = securityTicket.TenantID;

            #region Find All Shopping Carts in Approved state for TenantID

            var statusApproved = CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart_Status.Query.Search(Connection, Transaction,
                                                                                          new CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart_Status.Query
            {
                Tenant_RefID             = securityTicket.TenantID,
                GlobalPropertyMatchingID = DLCore_DBCommons.Utils.EnumUtils.GetEnumDescription(DLCore_DBCommons.APODemand.EShoppingCartStatus.Approved),
                IsDeleted = false
            }).Single();

            var approvedShoppingCarts = CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart.Query.Search(Connection, Transaction,
                                                                                          new CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart.Query
            {
                ShoppingCart_CurrentStatus_RefID = statusApproved.ORD_PRC_ShoppingCart_StatusID,
                Tenant_RefID = securityTicket.TenantID,
                IsDeleted    = false
            });

            if (approvedShoppingCarts == null || approvedShoppingCarts.Count() == 0)
            {
                returnValue.Result = Guid.Empty;
                return(returnValue);
            }
            #endregion

            #region Procurement Order
            // Get procurement order status
            var procurementOrderStatus = CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Status.Query.Search(Connection, Transaction,
                                                                                                      new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Status.Query()
            {
                GlobalPropertyMatchingID = DLCore_DBCommons.Utils.EnumUtils.GetEnumDescription(DLCore_DBCommons.APODemand.EProcurementStatus.Active),
                Tenant_RefID             = securityTicket.TenantID,
                IsDeleted = false
            }).Single();

            var account = new CL1_USR.ORM_USR_Account();
            account.Load(Connection, Transaction, securityTicket.AccountID);

            #region

            var incrNumberParam = new P_L2NR_GaIINfUA_1454()
            {
                GlobalStaticMatchingID = EnumUtils.GetEnumDescription(ENumberRangeUsageAreaType.ProcurementOrderNumber)
            };
            var procurementNumber = cls_Get_and_Increase_IncreasingNumber_for_UsageArea.Invoke(Connection, Transaction, incrNumberParam, securityTicket).Result.Current_IncreasingNumber;

            #endregion

            // Create procurement order header
            var procurementOrderHeader = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Header();
            procurementOrderHeader.Tenant_RefID = securityTicket.TenantID;
            procurementOrderHeader.CreatedBy_BusinessParticipant_RefID  = account.BusinessParticipant_RefID;
            procurementOrderHeader.Current_ProcurementOrderStatus_RefID = procurementOrderStatus.ORD_PRC_ProcurementOrder_StatusID;
            procurementOrderHeader.ProcurementOrder_Supplier_RefID      = Guid.Empty;
            procurementOrderHeader.ProcurementOrder_Date   = DateTime.Now;
            procurementOrderHeader.TotalValue_BeforeTax    = 0;
            procurementOrderHeader.ProcurementOrder_Number = procurementNumber;
            procurementOrderHeader.Save(Connection, Transaction);

            // Create procurement order status history
            var procurementOrderStatusHistory = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_StatusHistory();
            procurementOrderStatusHistory.Tenant_RefID = securityTicket.TenantID;
            procurementOrderStatusHistory.ProcurementOrder_Header_RefID = procurementOrderHeader.ORD_PRC_ProcurementOrder_HeaderID;
            procurementOrderStatusHistory.ProcurementOrder_Status_RefID = procurementOrderStatus.ORD_PRC_ProcurementOrder_StatusID;
            procurementOrderStatusHistory.Save(Connection, Transaction);

            // Set return value
            returnValue.Result = procurementOrderHeader.ORD_PRC_ProcurementOrder_HeaderID;
            #endregion

            foreach (var item in approvedShoppingCarts)
            {
                #region Procurement Order Shopping Products

                var param = new P_L5AWSSC_GSPfSC_1650();
                param.ShoppingCartID = item.ORD_PRC_ShoppingCartID;
                var shoppingProducts = cls_Get_ShoppingProducts_for_ShoppingCartID.Invoke(Connection, Transaction, param, securityTicket).Result;

                //when office is deleted but there is ordered items for it
                if (shoppingProducts == null)
                {
                    continue;
                }

                // Create and save procurement order for shopping products
                foreach (var shoppingProduct in shoppingProducts.Products)
                {
                    #region Skip if Product is not good

                    if (shoppingProduct.IsProductCanceled || shoppingProduct.IsProductDeleted)
                    {
                        continue;
                    }

                    #endregion

                    var procurementOrderPosition = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position();
                    procurementOrderPosition.ORD_PRC_ProcurementOrder_PositionID = Guid.NewGuid();
                    procurementOrderPosition.ProcurementOrder_Header_RefID       = procurementOrderHeader.ORD_PRC_ProcurementOrder_HeaderID;
                    procurementOrderPosition.Position_Quantity                = shoppingProduct.Quantity;
                    procurementOrderPosition.Position_ValuePerUnit            = shoppingProduct.Price;
                    procurementOrderPosition.Position_ValueTotal              = shoppingProduct.Price * (Decimal)shoppingProduct.Quantity;
                    procurementOrderPosition.Position_Unit_RefID              = Guid.Empty;
                    procurementOrderPosition.Position_RequestedDateOfDelivery = new DateTime();
                    procurementOrderPosition.CMN_PRO_Product_RefID            = shoppingProduct.CMN_PRO_Product_RefID;
                    procurementOrderPosition.CMN_PRO_Product_Release_RefID    = shoppingProduct.CMN_PRO_Product_Release_RefID;
                    procurementOrderPosition.CMN_PRO_Product_Variant_RefID    = shoppingProduct.CMN_PRO_Product_Variant_RefID;
                    procurementOrderPosition.Creation_Timestamp               = DateTime.Now;
                    procurementOrderPosition.Tenant_RefID = securityTicket.TenantID;
                    procurementOrderPosition.IsProductReplacementAllowed = shoppingProduct.IsProductReplacementAllowed;
                    procurementOrderPosition.Save(Connection, Transaction);

                    var shoppingCart2ProcurementOrder = new CL1_ORD_PRC.ORM_ORD_PRC_ShoppingCart_2_ProcurementOrderPosition();
                    shoppingCart2ProcurementOrder.AssignmentID = Guid.NewGuid();
                    shoppingCart2ProcurementOrder.ORD_PRC_ShoppingCart_Product_RefID      = shoppingProduct.ORD_PRC_ShoppingCart_ProductID;
                    shoppingCart2ProcurementOrder.ORD_PRC_ProcurementOrder_Position_RefID = procurementOrderPosition.ORD_PRC_ProcurementOrder_PositionID;
                    shoppingCart2ProcurementOrder.Tenant_RefID = securityTicket.TenantID;
                    shoppingCart2ProcurementOrder.Save(Connection, Transaction);

                    procurementOrderHeader.TotalValue_BeforeTax += procurementOrderPosition.Position_ValueTotal;
                }
                #endregion

                #region ShoppingCartNotes

                var notesParam = new P_L5AWSAR_GSCNfSC_1454()
                {
                    ShoppingCartID = item.ORD_PRC_ShoppingCartID
                };
                var scNotes = cls_Get_ShoppingCart_Notes_for_ShoppingCartID.Invoke(Connection, Transaction, notesParam, securityTicket).Result;

                var count = 1;
                foreach (var scNote in scNotes)
                {
                    if (!scNote.IsNoteForProcurementOrder)
                    {
                        continue;
                    }

                    var officeInfo = ORM_ORD_PRC_Office_ShoppingCart.Query.Search(Connection, Transaction, new ORM_ORD_PRC_Office_ShoppingCart.Query()
                    {
                        ORD_PRC_ShoppingCart_RefID = item.ORD_PRC_ShoppingCartID,
                        IsDeleted = false
                    }).Single();

                    var note = new ORM_ORD_PRC_ProcurementOrder_Note();
                    note.ORD_PRC_ProcurementOrder_NoteID         = Guid.NewGuid();
                    note.ORD_PRC_ProcurementOrder_Header_RefID   = procurementOrderHeader.ORD_PRC_ProcurementOrder_HeaderID;
                    note.ORD_PRC_ProcurementOrder_Position_RefID = Guid.Empty;
                    note.CMN_STR_Office_RefID = officeInfo.CMN_STR_Office_RefID;
                    note.Comment             = scNote.Memo_Text;
                    note.Title               = "";
                    note.NotePublishDate     = scNote.UpdatedOn;
                    note.SequenceOrderNumber = count;
                    note.Tenant_RefID        = securityTicket.TenantID;

                    note.Save(Connection, Transaction);

                    count++;
                }

                #endregion

                #region Shopping Cart

                // Change shopping cart status
                item.ShoppingCart_CurrentStatus_RefID = statusOrdered.ORD_PRC_ShoppingCart_StatusID;
                item.IsProcurementOrderCreated        = true;
                item.Save(Connection, Transaction);

                // 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 = statusOrdered.ORD_PRC_ShoppingCart_StatusID;
                shoppingHistory.PerformedBy_Account_RefID         = securityTicket.AccountID;
                shoppingHistory.Tenant_RefID = securityTicket.TenantID;
                shoppingHistory.Save(Connection, Transaction);

                #endregion
            }

            //Save TotalValue_BeforeTax after updates
            procurementOrderHeader.Save(Connection, Transaction);

            return(returnValue);

            #endregion UserCode
        }