Delimiter //
/** 
 * - Le type Règlement annulé/Impayé est automatiquement transformé en Règlement lorsque le montant au crédit
 * DOIT être placé après LOADER_ENTRIES_MAP_NEGATIVE_AMOUNTS()
 * 
 * @ticket 3756
 */
Drop Procedure If Exists LOADER_ENTRIES_MAP_NEGATIVE_AMOUNTS_CAN_TO_PAY//
Create Procedure LOADER_ENTRIES_MAP_NEGATIVE_AMOUNTS_CAN_TO_PAY(
    In batchnum Int
)
Begin
    -- Normalement on n'a pas besoin de tester ET Débit, ET ent_debit, ET admin_debit car ils sont sensés êtres cohérents. 
    -- pour plus de sûreté ici on check tout

    Set 
        @reglement    = (Select ID_DF_ENTRIES_TYPE From DF_ENTRIES_TYPE Where DF_ENTRIES_TYPE_CODE = 'PAY'),
        @impaye       = (Select ID_DF_ENTRIES_TYPE From DF_ENTRIES_TYPE Where DF_ENTRIES_TYPE_CODE = 'CAN')
    ;

    Update
        LOADER_ENTRIES E
        Inner Join
            LOADER_STATUS S
            On S.ID_LOADER_STATUS = E.LOADER_STATUS_ID_LOADER_STATUS
    Set
--         -- Type
        DF_ENTR_TYPE_ID_DF_ENTR_TYPE = @reglement
    Where 
        S.LOADER_STATUS_BATCH_NUM = batchnum
        And DF_ENTR_TYPE_ID_DF_ENTR_TYPE = @impaye
        And (   
                Coalesce(ENTRIES_CREDIT, 0) > 0
                Or Coalesce(ENTRIES_ENT_CREDIT, 0) > 0
                Or Coalesce(ENTRIES_ADMIN_CREDIT, 0) > 0
            )
    ;
End//
Delimiter ;