Delimiter //
/**
 * Author:  armen
 * Created: 21 juil. 2020
 */


Drop Procedure if exists LOADER_EDMINDEX_NORMALIZE_CHECK_ACCOUNTS_PROVIDED//

Create Procedure LOADER_EDMINDEX_NORMALIZE_CHECK_ACCOUNTS_PROVIDED (
    In batchnum int
)
Begin

    -- la procédure LOADER_EDMINDEX_NORMALIZE_MAP_ENTRIES_REF_PROVIDED
    -- permet de retrouver les ecritures UNIQUEMENT à l'aide de l'entité et de la référénce
    -- d'ecriture. De fait, la recherche d'ecriture par la référence d'ecriture implique que 
    -- la référence de compte n'est pas utilisé.
    -- la recherche d'ecriture prioritaire s'effectue à partir de la référence UNIQUE d'écriture et
    -- de la référence de compte
    -- Si la référence unique de l'écriture n'est pas founir, la recherche s'effectue à partir
    -- de la référence de l'ecriture uniquement.
    --
    -- la regle compète de vérification de la référence de compte est la suivante :
    -- SI la référence UNIQUE d'ecriture est fournie 
    -- ALORS : 
    --    => la référence de compte est OBLIGATOIRE.
    --    => la référence d'écriture n'est pas utilisée (ignorée)
    --    @see LOADER_EDMINDEX_NORMALIZE_MAP_ACCOUNT_REF_PROVIDED
    --    @see LOADER_EDMINDEX_NORMALIZE_MAP_ENTRIES_ACC_EXT_REF_PROVIDED
    --
    -- SI la référence UNIQUE d'ecriture n'est pas fournie 
    --    => la référence de compte n'est pas utilisé donc non obligatoire
    --    => la référence d'écriture est OBLIGATOIRE
    --    @see de LOADER_EDMINDEX_NORMALIZE_MAP_ENTRIES_REF_PROVIDED
    
        call LOADER_BUILD_EDMINDEX_CHECK_BASE_QUERY (
                'LOADER_EDMINDEX_TYPE'
                , batchnum
                , 'LOADER_EDMINDEX_ERRMSGS'
                , null
                , 0
                , @lencap_query
            )
        ;
        set @lencap_query = Concat(@lencap_query, 
                        ' And Coalesce(ACCOUNTS_REF, '''') = '''' ' 
--                         ' And Coalesce(ENTRIES_ACC_EXT_REF, '''') <> '''' ' -- implicite
                        ' And Coalesce(ENTRIES_REF, '''') = '''' ' 
                    )
                ;
        PREPARE lencap_stmt FROM @lencap_query;
        execute lencap_stmt			
			;
        Deallocate prepare lencap_stmt;

--     Set @flagCountField='LOADER_EDMINDEX_ERRCOUNT';
--     Set @flagMsgField='LOADER_EDMINDEX_ERRMSGS';
--     Set @lastStatusField=null;
--     Set @lastStatus=null;
--     Set @checkedFieldName = 'ACCOUNTS_REF';
-- 
--     CALL LOADER_CHECK_NULL (
--         'LOADER_EDMINDEX'
--         , @checkedFieldName
--         , 'LOADER_EDMINDEX_BATCH_NUM'
--         , batchnum
--         , @flagCountField
--         , @flagMsgField
--         , @lastStatusField
--         , @lastStatus
--     );

End //

Delimiter ;