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

            #region Create and Save ReceivedCreditNotes and ReturnShipmentCreditNoteHeader
            var newCreditNoteHeader    = new ORM_LOG_SHP_ReturnShipment_ReceivableCreditNote_Header();
            var newReceivedCreditNotes = new ORM_ACC_CRN_ReceivedCreditNote();
            if (Parameter.headerId == Guid.Empty)
            {
                #region Create ReceivedCreditNotes
                newReceivedCreditNotes.ACC_CRN_ReceivedCreditNoteID = Guid.NewGuid();
                newReceivedCreditNotes.Creation_Timestamp           = DateTime.Now;
                newReceivedCreditNotes.CreditNote_Number            = Parameter.headerNumber;
                newReceivedCreditNotes.CreditNote_Value             = Parameter.headerValue;
                newReceivedCreditNotes.CreditNote_Currency_RefID    = Parameter.currencyRef;
                newReceivedCreditNotes.DateOnCreditNote             = Parameter.creditNoteDate;
                newReceivedCreditNotes.Tenant_RefID   = securityTicket.TenantID;
                newReceivedCreditNotes.CreditNoteITPL = ""; // TODO:Marko - Temporary! We are not sure how to set this field. Will be decided in the future.
                var resultReceivedCreditNote = newReceivedCreditNotes.Save(Connection, Transaction);
                if (resultReceivedCreditNote.Status != FR_Status.Success)
                {
                    returnValue.Status = FR_Status.Error_Internal;
                    returnValue.Result = Guid.Empty;
                    return(returnValue);
                }
                #endregion

                #region Create ReturnShipment_ReceivableCreditNote_Header
                newCreditNoteHeader.LOG_SHP_ReturnShipment_ReceivableCreditNote_HeaderID = Guid.NewGuid();
                newCreditNoteHeader.Ext_ACC_CRN_ReceivedCreditNote_RefID = newReceivedCreditNotes.ACC_CRN_ReceivedCreditNoteID;
                newCreditNoteHeader.Creation_Timestamp = DateTime.Now;
                newCreditNoteHeader.IsDeleted          = false;
                newCreditNoteHeader.Tenant_RefID       = securityTicket.TenantID;
                var resultCreditNoteHeader = newCreditNoteHeader.Save(Connection, Transaction);
                if (resultCreditNoteHeader.Status != FR_Status.Success)
                {
                    returnValue.Status = FR_Status.Error_Internal;
                    returnValue.Result = Guid.Empty;
                    return(returnValue);
                }
                #endregion
            }
            else
            {
                #region Load ReceivedCreditNotes and update Value
                newCreditNoteHeader.Load(Connection, Transaction, Parameter.headerId);
                if (newCreditNoteHeader.LOG_SHP_ReturnShipment_ReceivableCreditNote_HeaderID == Guid.Empty)
                {
                    returnValue.Status = FR_Status.Error_Internal;
                    returnValue.Result = Guid.Empty;
                    return(returnValue);
                }

                newReceivedCreditNotes.Load(Connection, Transaction, newCreditNoteHeader.Ext_ACC_CRN_ReceivedCreditNote_RefID);
                if (newReceivedCreditNotes.ACC_CRN_ReceivedCreditNoteID == Guid.Empty)
                {
                    returnValue.Status = FR_Status.Error_Internal;
                    returnValue.Result = Guid.Empty;
                    return(returnValue);
                }

                newReceivedCreditNotes.CreditNote_Value = newReceivedCreditNotes.CreditNote_Value + Parameter.headerValue;
                var resultReceivedCreditNotes = newReceivedCreditNotes.Save(Connection, Transaction);
                if (resultReceivedCreditNotes.Status != FR_Status.Success)
                {
                    returnValue.Status = FR_Status.Error_Internal;
                    returnValue.Result = Guid.Empty;
                    return(returnValue);
                }
                #endregion
            }
            #endregion

            #region Create CreditNote Positions with CreditNote 2 Receipt positions
            if (Parameter.receiptPositions != null)
            {
                foreach (var position in Parameter.receiptPositions)
                {
                    #region Create CreditNote Position
                    var newRetShpCreditNotePosition = new ORM_LOG_SHP_ReturnShipment_ReceivableCreditNote_Position();
                    newRetShpCreditNotePosition.LOG_SHP_ReturnShipment_ReceivableCreditNote_PositionID = Guid.NewGuid();
                    newRetShpCreditNotePosition.Creation_Timestamp = DateTime.Now;
                    newRetShpCreditNotePosition.IsDeleted          = false;
                    newRetShpCreditNotePosition.Tenant_RefID       = securityTicket.TenantID;
                    newRetShpCreditNotePosition.LOG_SHP_ReturnShipment_CreditNotes_Header_RefID = newCreditNoteHeader.LOG_SHP_ReturnShipment_ReceivableCreditNote_HeaderID;
                    var resultRetShpCreditNotePosition = newRetShpCreditNotePosition.Save(Connection, Transaction);
                    if (resultRetShpCreditNotePosition.Status != FR_Status.Success)
                    {
                        returnValue.Status = FR_Status.Error_Internal;
                        returnValue.Result = Guid.Empty;
                        return(returnValue);
                    }
                    #endregion

                    #region Create CreditNote 2 Receipt Position
                    var newReceiptCreditNotePosition = new ORM_LOG_SHP_RSH_ReceivableCreditNote_2_ReceiptPosition();
                    newReceiptCreditNotePosition.AssignmentID       = Guid.NewGuid();
                    newReceiptCreditNotePosition.Creation_Timestamp = DateTime.Now;
                    newReceiptCreditNotePosition.Tenant_RefID       = securityTicket.TenantID;
                    newReceiptCreditNotePosition.LOG_SHP_ReturnShipment_ReceivableCreditNote_Position_RefID = newRetShpCreditNotePosition.LOG_SHP_ReturnShipment_ReceivableCreditNote_PositionID;
                    newReceiptCreditNotePosition.LOG_RCP_Receipt_Position_RefID = position.receiptPositionId;
                    newReceiptCreditNotePosition.IsFullCompensationForReceivableCreditNotePosition = position.IsFullCompesationForReceivableCreditNotePosition;
                    newReceiptCreditNotePosition.CompensationValue = (float)position.compesationValue;
                    var resultReceiptCreditNotePosition = newReceiptCreditNotePosition.Save(Connection, Transaction);
                    if (resultReceiptCreditNotePosition.Status != FR_Status.Success)
                    {
                        returnValue.Status = FR_Status.Error_Internal;
                        returnValue.Result = Guid.Empty;
                        return(returnValue);
                    }
                    #endregion
                }
            }
            #endregion

            #region Create ReturnShipment Position 2 CreditNote
            if (Parameter.returnShipmentPositions != null)
            {
                foreach (Guid position in Parameter.returnShipmentPositions)
                {
                    var newRetShpCreditNotePosition = new ORM_LOG_SHP_ReturnShipment_ReceivableCreditNote_Position();
                    newRetShpCreditNotePosition.LOG_SHP_ReturnShipment_ReceivableCreditNote_PositionID = Guid.NewGuid();
                    newRetShpCreditNotePosition.Creation_Timestamp = DateTime.Now;
                    newRetShpCreditNotePosition.IsDeleted          = false;
                    newRetShpCreditNotePosition.Tenant_RefID       = securityTicket.TenantID;
                    newRetShpCreditNotePosition.LOG_SHP_ReturnShipment_CreditNotes_Header_RefID = newCreditNoteHeader.LOG_SHP_ReturnShipment_ReceivableCreditNote_HeaderID;
                    var resultRetShpCreditNotePosition = newRetShpCreditNotePosition.Save(Connection, Transaction);
                    if (resultRetShpCreditNotePosition.Status != FR_Status.Success)
                    {
                        returnValue.Status = FR_Status.Error_Internal;
                        returnValue.Result = Guid.Empty;
                        return(returnValue);
                    }

                    var newRetShipmentPosForCN = new ORM_LOG_SHP_ReturnShipment_Position_2_ReceivableCreditNote();
                    newRetShipmentPosForCN.Creation_Timestamp = DateTime.Now;
                    newRetShipmentPosForCN.IsDeleted          = false;
                    newRetShipmentPosForCN.Tenant_RefID       = securityTicket.TenantID;
                    newRetShipmentPosForCN.AssignmentID       = Guid.NewGuid();
                    newRetShipmentPosForCN.LOG_SHP_ReturnShipment_Position_RefID = position;
                    newRetShipmentPosForCN.LOG_SHP_ReturnShipment_ReceivableCreditNotes_Position_RefID = newRetShpCreditNotePosition.LOG_SHP_ReturnShipment_ReceivableCreditNote_PositionID;
                    var resultRetShipmentPosForCN = newRetShipmentPosForCN.Save(Connection, Transaction);
                    if (resultRetShipmentPosForCN.Status != FR_Status.Success)
                    {
                        returnValue.Status = FR_Status.Error_Internal;
                        returnValue.Result = Guid.Empty;
                        return(returnValue);
                    }
                }
            }
            #endregion

            returnValue.Status = FR_Status.Success;
            returnValue.Result = newCreditNoteHeader.LOG_SHP_ReturnShipment_ReceivableCreditNote_HeaderID;

            return(returnValue);

            #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_L5RS_CNfRS_1119 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_L5RS_CNfRS_1119 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_Save_CreditNote_for_ReturnShipment", 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_L5RS_CNfRS_1119 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null)
 {
     return(Invoke(null, null, ConnectionString, Parameter, securityTicket));
 }