Delimiter //
/**
 * matching code' normalization
 * 
 * @lmcn_author Jean-François
 */
Drop Procedure If Exists LOADER_MATCHINGCODES_NORMALIZE//
Create Procedure LOADER_MATCHINGCODES_NORMALIZE(
    In batchnum Int
)
MAIN_MATCHINGCODES_NORMALIZE: Begin
	set @lmcn_batchnum = batchnum;

    -- initialise dependents tables on init batch (0)
    if @lmcn_batchnum = 0 Then
        -- correction du mappaage MATCHINGCODES_CODE / MATCHINGCODES_ACCOUNTS_COD
        -- en fonction de l'option d'import ('MTCHNG-IN-ENTTS' / 'MTCHNG-IN-ACCNT')
        Call LOADER_MATCHINGCODE_NORMALIZE_MAP_FIX_MATCHINGCODE_FIELD;

        Call LOADER_MATCHINGCODE_NORMALIZE_MAP_BATCH_NUM;

        -- ATTENTION ci dessous re-creation de table standard (non TEMPORARY)
        -- => commit implicite, ne pas les réinitialiser en dehors de la boucle 0
        call LOADER_CREATE_TABLE_MATCHINGCODES_ENTRIES_TOREMOVE;
        call LOADER_CREATE_TABLE_MATCHINGCODES_MATCHINGCODES_TOREMOVE;
        call LOADER_CREATE_TABLE_MATCHINGCODES_ENTRIES;
        call LOADER_CREATE_TABLE_MATCHINGCODES_MATCHINGCODES;

        call LOADER_CREATE_TABLE_MATCHINGCODES_NEW_RECLAIMS_DETAILS;
        
        leave MAIN_MATCHINGCODES_NORMALIZE;
    End if;


    clearData: Begin
        -- purges des données dans les tables
        -- on ne fait pas de trunctate en raison des transactions

        Delete From LOADER_MATCHINGCODES_ENTRIES;
        Delete from LOADER_MATCHINGCODES_MATCHINGCODES;
        Delete from LOADER_MATCHINGCODES_MATCHINGCODES_TOREMOVE;
        Delete from LOADER_MATCHINGCODES_ENTRIES_TOREMOVE;
    End ;



    -- Mapping and linking
    Call LOADER_MATCHINGCODE_NORMALIZE_MAP_ENTRY(@lmcn_batchnum); -- doit être lancer avant LOADER_MATCHINGCODE_NORMALIZE_CHECK_ENTRY_EXISTS

    -- Mandatory check
    Call LOADER_MATCHINGCODE_NORMALIZE_CHECK_ENTRY_EXISTS(@lmcn_batchnum); -- doit être lancer apres LOADER_MATCHINGCODE_NORMALIZE_MAP_ENTRY

    Call LOADER_MATCHINGCODE_NORMALIZE_CHECK_ENTRY_UNIQUE(@lmcn_batchnum); -- doit être lancer apres LOADER_MATCHINGCODE_NORMALIZE_MAP_ENTRY

    Call LOADER_MATCHINGCODE_NORMALIZE_MAP_DATE_NOT_PROVIDED(@lmcn_batchnum);
    Call LOADER_MATCHINGCODE_NORMALIZE_MAP_MATCHING_STATE(@lmcn_batchnum);


	Call LOADER_MATCHINGCODE_NORMALIZE_CHECK_MATCHING_CODE_EXISTS(@lmcn_batchnum, @lmcn_stdLetteringMode); -- doit être lancer apres LOADER_MATCHINGCODE_NORMALIZE_MAP_ENTRY
	-- @lmcn_stdLetteringMode est initalisé par la procédure LOADER_MATCHINGCODE_NORMALIZE_CHECK_MATCHING_CODE_EXISTS
    --  select @lmcn_batchnum, @lmcn_stdLetteringMode;
    Call LOADER_MATCHINGCODE_NORMALIZE_MAP_MATCHINGCODE_UPDATE_OR_CREATE(@lmcn_batchnum ,@lmcn_stdLetteringMode); -- The last One
    
--     -- Last actions
    Set @lmcn_max_batch = GET_LOADER_INFO('MAX_BATCH', @lmcn_batchnum);
    if @lmcn_batchnum = @lmcn_max_batch Then
		Call LOADER_MATCHINGCODE_NORMALIZE_MAP_NEW_RECLAIMS_DETAILS(@lmcn_batchnum);
    End if;

End//
Delimiter ;