Delimiter //
/**
* In batchnum Int : num du lot, si 0 ou null traitement de l'ensembles des lignes
*/

Drop Procedure if exists LOADER_ATTACHEDMEMBERS_COPY//

Create Procedure LOADER_ATTACHEDMEMBERS_COPY (
    In batchnum int
)
Begin
    lamc_main: Begin

        set @lamc_batchnum  = batchnum;
        -- Set @lamc_batchnum = 1;
        if @lamc_batchnum  = 0 Then
            leave lamc_main;
        End if;

        Set @lamc_ref = CASH_LOADER_ACCOUNTS_has_MEMBERS_GET_REF(@lamc_batchnum);

        call LOADER_TMP_ACCOUNTS_has_MEMBERS_INSERT(@lamc_batchnum);

        Set @lamc_identities = GET_LOADER_INFO('ID_ENTITIES', @lamc_batchnum);
        -- select @lamc_batchnum, @lamc_ref, @lamc_identities, @lamu_ref, @lamu_idEntities  ;
        -- debug
        -- set @lamu_ref = @lamc_ref; set @lamu_idEntities = @lamc_identities;
        -- la ref est lié aux numéro de lot, on peut lancer l'update avec la ref par defaut
        call BUSINESS_ATTACHED_MEMBERS_UPDATE(@lamc_ref, @lamc_identities);

        Set @lamc_max_batch = GET_LOADER_INFO('MAX_BATCH', @lamc_batchnum);
        if @lamc_batchnum = @lamc_max_batch Then

            --
            -- persistance des données
            --
            -- purges dans anciennes règles auto
            call LOADER_ATTACHEDMEMBERS_NORMALIZE_MAP_DEL_SAVED_TMPACCHASMBR();
            -- sauvegardes des règle actuelles
            call LOADER_ATTACHEDMEMBERS_COPY_SAVE_TMP_ACC_HAS_MBR();

            -- lancement des update pour les ref fourni non lié au numero de batch
            -- @tmp provisoirement désactivé
            -- call LOADER_ATTACHEDMEMBERS_COPY_UPD_ALL_ATTCHDMBR_REF(@lamc_batchnum);
            -- select * from TMP_ACCOUNTS_has_MEMBERS;
--             on ne peux pas faire de truncate dans les lot > 0 en raison de l'auto commit
            Delete TMP_ACCOUNTS_has_MEMBERS From TMP_ACCOUNTS_has_MEMBERS ;
        End if;
    End ;
End //

Delimiter ;