コード例 #1
0
        protected static FR_L5SO_RSP_1524 Execute(DbConnection Connection, DbTransaction Transaction, P_L5SO_RSP_1524 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_L5SO_RSP_1524();
            returnValue.Result = new L5SO_RSP_1524();

            var shipmentPositionToReplace = new ORM_LOG_SHP_Shipment_Position();
            shipmentPositionToReplace.Load(Connection, Transaction, Parameter.PositionID);

            var startProduct = new ORM_CMN_PRO_Product();
            startProduct.Load(Connection, Transaction, shipmentPositionToReplace.CMN_PRO_Product_RefID);

            var finalProduct = new ORM_CMN_PRO_Product();
            finalProduct.Load(Connection, Transaction, Parameter.ProductID);


            shipmentPositionToReplace.ShipmentPosition_PricePerUnitValueWithoutTax = Parameter.Price;
            shipmentPositionToReplace.ShipmentPosition_ValueWithoutTax             = Parameter.Price * (Decimal)shipmentPositionToReplace.QuantityToShip;
            shipmentPositionToReplace.CMN_PRO_Product_RefID = Parameter.ProductID;

            returnValue.Result.ReplacedPosition = new FR_Guid(shipmentPositionToReplace.Save(Connection, Transaction), shipmentPositionToReplace.LOG_SHP_Shipment_PositionID).Result;

            P_L2LN_GALFTID_1530 langParam = new P_L2LN_GALFTID_1530();
            langParam.Tenant_RefID = securityTicket.TenantID;
            SessionSecurityTicket fakeTicket = new SessionSecurityTicket();
            var DBLanguages = cls_Get_All_Languages_ForTenantID.Invoke(Connection, Transaction, langParam, fakeTicket).Result;
            var languages   = DBLanguages.Select(i => new ISOLanguage()
            {
                ISO = i.ISO_639_1, LanguageID = i.CMN_LanguageID
            }).ToList();

            var dicts = EnumUtils.GetDictObjectsForStaticListData <ECustomMessages>(ResourceFilePath.CustomMessages, ORM_LOG_SHP_Shipment_Note.TableName, languages);

            ORM_LOG_SHP_Shipment_Note note = new ORM_LOG_SHP_Shipment_Note();
            note.LOG_SHP_Shipment_NoteID = Guid.NewGuid();
            note.Shipment_Header_RefID   = Parameter.ShipmentHeaderID;
            note.Comment = String.Format(dicts["comment.article-replaced"].Contents[1].Content,
                                         startProduct.Product_Name.Contents[0].Content, startProduct.Product_Number, finalProduct.Product_Name.Contents[0].Content, finalProduct.Product_Number);
            note.Tenant_RefID = securityTicket.TenantID;
            note.IsNotePrintedOnDeliveryPaper = true;
            note.Save(Connection, Transaction);

            returnValue.Result.ReplacedPosition = new FR_Guid(shipmentPositionToReplace.Save(Connection, Transaction), shipmentPositionToReplace.LOG_SHP_Shipment_PositionID).Result;

            ORM_LOG_RSV_Reservation.Query.SoftDelete(Connection, Transaction,
                                                     new ORM_LOG_RSV_Reservation.Query
            {
                LOG_SHP_Shipment_Position_RefID = shipmentPositionToReplace.LOG_SHP_Shipment_PositionID,
                IsDeleted = false
            });

            #region CommentedUseful

            #endregion

            cls_Update_Current_TotalValue_on_ShipmentHeader_from_Positions.Invoke(Connection, Transaction, new P_L5SO_UCTVoSHfP_1549 {
                ShipmentHeaderID = Parameter.ShipmentHeaderID
            }, securityTicket);

            return(returnValue);

            #endregion UserCode
        }
コード例 #2
0
        protected static FR_Base Execute(DbConnection Connection, DbTransaction Transaction, P_L5CO_CSHwP_1519 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
        {
            #region UserCode
            var returnValue = new FR_Base();

            #region Get CustomerOrderPositions

            var param = new P_L5CO_GACOPaOUDfCH_1623()
            {
                CustomerOrderHeaderID = Parameter.CustomerOrderHeaderID
            };
            var customerOrderPositions = cls_Get_AllCustomerOrderPositions_and_OrganizationalUnitDistributions_for_CustomerOrderHeaderID.Invoke(Connection, Transaction, param, securityTicket).Result;

            #endregion

            #region Create ShipmentHeaders

            var orgUnit2ShipmentHeader = new Dictionary <Guid, Guid>();

            var allOrganizationalUnitsInOrder = customerOrderPositions.SelectMany(i => i.OrgUnitAssigments).Select(j => j.CMN_BPT_CTM_OrganizationalUnit_RefID).Distinct();

            foreach (var organizationalUnits in allOrganizationalUnitsInOrder)
            {
                var shipmentHeaderParam = new P_L5CO_CSHfCO_1528()
                {
                    CustomerOrderHeaderID = Parameter.CustomerOrderHeaderID
                };

                var shipmentHeaderID = cls_Create_ShipmentHeader_for_CustomerOrderID.Invoke(Connection, Transaction, shipmentHeaderParam, securityTicket).Result;

                orgUnit2ShipmentHeader.Add(organizationalUnits, shipmentHeaderID);
            }

            #endregion

            #region Positions

            if (customerOrderPositions != null)
            {
                foreach (var position in customerOrderPositions)
                {
                    #region Orders for office

                    foreach (var item in position.OrgUnitAssigments)
                    {
                        var shippmentHeaderID = orgUnit2ShipmentHeader[item.CMN_BPT_CTM_OrganizationalUnit_RefID];

                        var shipmentPosition = new CL1_LOG_SHP.ORM_LOG_SHP_Shipment_Position
                        {
                            LOG_SHP_Shipment_PositionID   = Guid.NewGuid(),
                            LOG_SHP_Shipment_Header_RefID = shippmentHeaderID,
                            CMN_PRO_Product_RefID         = position.CMN_PRO_Product_RefID,
                            Tenant_RefID       = securityTicket.TenantID,
                            Creation_Timestamp = DateTime.Now,
                            QuantityToShip     = item.Quantity,
                            ShipmentPosition_PricePerUnitValueWithoutTax = position.Position_ValuePerUnit,
                            ShipmentPosition_ValueWithoutTax             = (decimal)item.Quantity * position.Position_ValuePerUnit
                        };
                        shipmentPosition.Save(Connection, Transaction);

                        var customerOrderToShipmentPosition = new CL1_ORD_CUO.ORM_ORD_CUO_CustomerOrder_Position_2_ShipmentPosition
                        {
                            AssignmentID       = Guid.NewGuid(),
                            Creation_Timestamp = DateTime.Now,
                            Tenant_RefID       = securityTicket.TenantID,
                            LOG_SHP_Shipment_Position_RefID      = shipmentPosition.LOG_SHP_Shipment_PositionID,
                            ORD_CUO_CustomerOrder_Position_RefID = position.ORD_CUO_CustomerOrder_PositionID,
                            CMN_BPT_CTM_OrganizationalUnit_RefID = item.CMN_BPT_CTM_OrganizationalUnit_RefID,
                            IsDeleted = false
                        };
                        customerOrderToShipmentPosition.Save(Connection, Transaction);

                        #region Update ShipmentHeader

                        var shipmentHeader = new CL1_LOG_SHP.ORM_LOG_SHP_Shipment_Header();
                        shipmentHeader.Load(Connection, Transaction, shippmentHeaderID);

                        shipmentHeader.ShipmentHeader_ValueWithoutTax += shipmentPosition.ShipmentPosition_ValueWithoutTax;
                        shipmentHeader.Save(Connection, Transaction);

                        #endregion
                    }

                    #endregion

                    #region Orders for company

                    var quantitiesForOffices = position.OrgUnitAssigments.Sum(i => i.Quantity);
                    var quantitiesForCompany = position.Position_Quantity - quantitiesForOffices;

                    if (quantitiesForCompany > 0)
                    {
                        var shippmentHeaderID    = Guid.Empty;
                        var containsOrderCompany = orgUnit2ShipmentHeader.ContainsKey(Guid.Empty);

                        if (!containsOrderCompany)
                        {
                            var shipmentHeaderParam = new P_L5CO_CSHfCO_1528()
                            {
                                CustomerOrderHeaderID = Parameter.CustomerOrderHeaderID
                            };

                            shippmentHeaderID = cls_Create_ShipmentHeader_for_CustomerOrderID.Invoke(Connection, Transaction, shipmentHeaderParam, securityTicket).Result;
                            orgUnit2ShipmentHeader.Add(Guid.Empty, shippmentHeaderID);
                        }

                        shippmentHeaderID = orgUnit2ShipmentHeader[Guid.Empty];

                        var shipmentPosition = new CL1_LOG_SHP.ORM_LOG_SHP_Shipment_Position
                        {
                            LOG_SHP_Shipment_PositionID   = Guid.NewGuid(),
                            LOG_SHP_Shipment_Header_RefID = shippmentHeaderID,
                            CMN_PRO_Product_RefID         = position.CMN_PRO_Product_RefID,
                            Tenant_RefID       = securityTicket.TenantID,
                            Creation_Timestamp = DateTime.Now,
                            QuantityToShip     = quantitiesForCompany,
                            ShipmentPosition_PricePerUnitValueWithoutTax = position.Position_ValuePerUnit,
                            ShipmentPosition_ValueWithoutTax             = (decimal)quantitiesForCompany * position.Position_ValuePerUnit
                        };
                        shipmentPosition.Save(Connection, Transaction);

                        var customerOrderToShipmentPosition = new CL1_ORD_CUO.ORM_ORD_CUO_CustomerOrder_Position_2_ShipmentPosition
                        {
                            AssignmentID       = Guid.NewGuid(),
                            Creation_Timestamp = DateTime.Now,
                            Tenant_RefID       = securityTicket.TenantID,
                            LOG_SHP_Shipment_Position_RefID      = shipmentPosition.LOG_SHP_Shipment_PositionID,
                            ORD_CUO_CustomerOrder_Position_RefID = position.ORD_CUO_CustomerOrder_PositionID,
                            CMN_BPT_CTM_OrganizationalUnit_RefID = Guid.Empty
                        };
                        customerOrderToShipmentPosition.Save(Connection, Transaction);

                        #region Update ShipmentHeader

                        var shipmentHeader = new CL1_LOG_SHP.ORM_LOG_SHP_Shipment_Header();
                        shipmentHeader.Load(Connection, Transaction, shippmentHeaderID);

                        shipmentHeader.ShipmentHeader_ValueWithoutTax += shipmentPosition.ShipmentPosition_ValueWithoutTax;
                        shipmentHeader.Save(Connection, Transaction);

                        #endregion
                    }

                    #endregion
                }
            }

            #endregion

            #region Comments

            var allOrgUnitIDs = orgUnit2ShipmentHeader.Select(x => x.Key);

            foreach (var orgUnitID in allOrgUnitIDs)
            {
                var currentShipmentID = orgUnit2ShipmentHeader[orgUnitID];

                var custOrderNotes = ORM_ORD_CUO_CustomerOrder_Note.Query.Search(Connection, Transaction, new ORM_ORD_CUO_CustomerOrder_Note.Query()
                {
                    CustomerOrder_Header_RefID           = Parameter.CustomerOrderHeaderID,
                    CMN_BPT_CTM_OrganizationalUnit_RefID = orgUnitID,
                    IsDeleted = false
                }
                                                                                 );

                foreach (var custOrderNote in custOrderNotes)
                {
                    var shipmentHeader = new CL1_LOG_SHP.ORM_LOG_SHP_Shipment_Header();
                    shipmentHeader.Load(Connection, Transaction, currentShipmentID);

                    var shipmentNote = new ORM_LOG_SHP_Shipment_Note()
                    {
                        LOG_SHP_Shipment_NoteID      = Guid.NewGuid(),
                        Shipment_Header_RefID        = currentShipmentID,
                        Shipment_Position_RefID      = Guid.Empty,
                        IsNotePrintedOnDeliveryPaper = true,
                        Title               = custOrderNote.Title,
                        Comment             = custOrderNote.Comment,
                        NotePublishDate     = custOrderNote.NotePublishDate,
                        SequenceOrderNumber = custOrderNote.SequenceOrderNumber,
                        Creation_Timestamp  = DateTime.Now,
                        Tenant_RefID        = securityTicket.TenantID,
                        CreatedBy_BusinessParticipant_RefID = shipmentHeader.RecipientBusinessParticipant_RefID
                    };

                    shipmentNote.Save(Connection, Transaction);
                }
            }

            #endregion

            return(returnValue);

            #endregion UserCode
        }