/* 
    Export des Documents rattachés aux Fournisseurs vers BC
    - Spec 5083 - TSG
*/
/*<DELIMITEUR>;</DELIMITEUR>*/
/*<HEADER>1</HEADER>*/
/*<LAUNCH.wl>*/ 

/* Drop tmp tables */
if exists (select * from sysobjects where name='xxTABLExx' and xtype='U') drop table xxTABLExx
if exists (select * from sysobjects where name='xxTABLE2xx' and xtype='U') drop table xxTABLE2xx


/*
-- Uniquement en DEV
declare 
	@v_TYPETRAITEMENT	char(1)		= 'E', 
	@v_CODEOBJET		varchar(30) = 'DOC_ATT',
	@v_CODEINTERFACE	varchar(30) = 'BC', 
	@v_NUM_JOUR			int			= 1
*/

/*<SEPARATEUR>*/
/* <CMD_TO_EXECUTE_NOW> 
if not exist "%oxadata%tmp\180-TSG-DOCS" mkdir "%oxadata%tmp\180-TSG-DOCS" > "%oxadata%log\SPEC_5083_E_DOC_ATT_BC_CMD_TO_EXECUTE_NOW.log"
rmdir "%oxadata%tmp\180-TSG-DOCS" /s /q >> "%oxadata%log\SPEC_5083_E_DOC_ATT_BC_CMD_TO_EXECUTE_NOW.log"
*/


/*<SEPARATEUR>*/
/* REQ_1 : 
    Extraction des documents des fournisseurs 
    dans la table 1 (xxTABLExx) 
*/
select
    
    f.CODE                                                                          as CODE_FOURNISS,
    f.RS                                                                            as NOM_FOURNISS, 

    da.NO_ORDRE                                                                     as NO_ORDRE, 
    da.NOM_FIC                                                                      as NOM_FIC,
    da.NOM_ORI                                                                      as NOM_ORI,
    da.TITRE                                                                        as TITRE,

    da.CODE_CAT                                                                     as CODE_CAT, 
    isnull(cat.LIBELLE_CAT, '')                                                     as LIBELLE_CAT, 
    replicate(' ', 100)                                                             as CODE_DOC_CANEVAS,        -- Voir REQ_2 : Code document correspondant dans le canevas
    replicate(' ', 300)                                                             as ID_DOC_OFA,              -- Voir REQ_3 : Id. du document chez le partenaire "Once For All"

    '%oxadata%tmp\180-TSG-DOCS'                                                     as AZ32_NOM_DOSSIER_RACINE, -- Constante : dossier temp où copier les docs avant leur envoi vers SharePoint
    da.COD_ENR + ' - ' + f.RS                                                       as AZ32_NOM_DOSSIER_FOURN, 
    da.TITRE                                                                        as AZ32_NOM_SOUS_DOSSIER,   
    reverse(substring(reverse(da.NOM_FIC),1,charindex('.',reverse(da.NOM_FIC))-0))  as AZ32_EXTENSION,          -- Exemple : ".pdf", avec le point

    da.COD_ENR + '-' + cast(da.NO_ORDRE as varchar)                                 as AZ32_ORDRE, 
    da.COD_ENR + '-' + cast(da.NO_ORDRE as varchar)                                 as AZ32_KEY_FOR_LAUNCH_LOOP, 
    ''                                                                              as AZ32_EXPORT_KEY, 
    replicate(' ', 4000)                                                            as AZ32_OS_COMMAND_TO_EXECUTE 
    
into xxTABLExx 
from DOC_ATT da with(nolock) 
/* Lecture des fournisseurs */ 
left outer join FOURNISS f with(nolock) on da.COD_ENR = f.CODE
/* Lecture des lignes de journal */ 
inner join XT_LIG xt with(nolock) on da.COD_ENR = xt.ID_2 and da.NO_ORDRE = xt.ID_3 and xt.TYPETR='<TYPETRAITEMENT>' and xt.TYPEOBJ='<CODEOBJET>' and xt.CODE_INT='<CODEINTERFACE>' and xt.ID_1='FOURNISS' and xt.NUM_JOUR=1/*<NUMJOUR>*/
-- inner join XT_LIG xt with(nolock) ON da.COD_ENR = xt.ID_2 AND da.NO_ORDRE = xt.ID_3 and xt.TYPETR=@v_TYPETRAITEMENT and xt.TYPEOBJ=@v_CODEOBJET and xt.CODE_INT=@v_CODEINTERFACE and xt.ID_1='FOURNISS' and xt.NUM_JOUR=@v_NUM_JOUR/*<NUMJOUR>*/
/* Lecture de la catégorie du document */ 
left outer join DOC_CAT cat with(nolock) on cat.CODE_TABLE = 'FOURNISS' and cat.CODE_CAT = da.CODE_CAT 
where da.NO_DA = 'FOURNISS' 
and da.DOC_INUTILE = 0x46 


/*<SEPARATEUR>*/
/* REQ_2 : 
    Pour chaque document, on cherche le code document correspondant dans le canevas 
    (table LST_DOCS, avec cat et titre) 
    Dans la table 1 (xxTABLExx) 
*/
update t 
    set CODE_DOC_CANEVAS = d.CODE_DOC  
    from xxTABLExx t 
        inner join LST_DOCS d with(nolock) on d.CODE_CATEGORIE = t.CODE_CAT and d.TITRE_DOC = t.TITRE 


/*<SEPARATEUR>*/
/* REQ_3 : 
    Pour chaque document présent dans le canevas, on cherche si il est géré en externe par le partenaire "Once For All" (OFA)
    Dans la table 1 (xxTABLExx) 
*/
update t 
    set ID_DOC_OFA = p.LIBELLE  /* Id. du document chez le partenaire "Once For All" */
    from xxTABLExx t 
        inner join PARAMDICO p with(nolock) on p.TYPEDICO = 'DOCATTFNR_LSTDOCS_PARTNER' and p.ID1 = 'OFA' and p.ID2 = t.CODE_DOC_CANEVAS  
    where t.CODE_DOC_CANEVAS <> '' 
    and p.LIBELLE <> '' 


/*<SEPARATEUR>*/
/* REQ_4 : 
    Pour les Documents internes (non gérés par le partenaire OFA), 
    on ajoute la commande de copie de fic_pj vers le dossier : 
        dossier cible \ code fourn - RS fourn \ titre doc \ titre doc.pdf 
        (attention, 3 lignes max)
    Dans la table 1 (xxTABLExx) 
*/
update t 
    set AZ32_OS_COMMAND_TO_EXECUTE = ''  
        + 'if not exist ' + '"' + t.AZ32_NOM_DOSSIER_RACINE + '\' + t.AZ32_NOM_DOSSIER_FOURN + '"'                                  + ' mkdir ' + '"' + t.AZ32_NOM_DOSSIER_RACINE + '\' + t.AZ32_NOM_DOSSIER_FOURN + '"'                                    + '<RC>'
        + 'if not exist ' + '"' + t.AZ32_NOM_DOSSIER_RACINE + '\' + t.AZ32_NOM_DOSSIER_FOURN + '\' + t.AZ32_NOM_SOUS_DOSSIER + '"'  + ' mkdir ' + '"' + t.AZ32_NOM_DOSSIER_RACINE + '\' + t.AZ32_NOM_DOSSIER_FOURN + '\' + t.AZ32_NOM_SOUS_DOSSIER + '"'    + '<RC>' 
        + 'copy' + ' ' + '"' + '%oxadata%fic_pj\' + trim(t.NOM_FIC) + '"' + ' '  + '"' + t.AZ32_NOM_DOSSIER_RACINE + '\' + t.AZ32_NOM_DOSSIER_FOURN + '\' + t.AZ32_NOM_SOUS_DOSSIER + '\' + t.TITRE + t.AZ32_EXTENSION + '"'   
    from xxTABLExx t 
    where trim(t.ID_DOC_OFA) = '' 
    and t.NOM_FIC <> '' 
    and t.AZ32_NOM_DOSSIER_FOURN <> '' 


/*
declare @v_Dossier_Cible varchar(1000) = '%oxadata%Interfaces\Exports\180-TSG-DOCS'

update t 
    set AZ32_OS_COMMAND_TO_EXECUTE = ''  
        + 'if not exist ' + '"' + @v_Dossier_Cible + '\' + t.AZ32_NOM_DOSSIER_FOURN + '"'                   + ' mkdir ' + '"' + @v_Dossier_Cible + '\' + t.AZ32_NOM_DOSSIER_FOURN + '"'                 + '<RC>'
        + 'if not exist ' + '"' + @v_Dossier_Cible + '\' + t.AZ32_NOM_DOSSIER_FOURN + '\' + t.TITRE + '"'   + ' mkdir ' + '"' + @v_Dossier_Cible + '\' + t.AZ32_NOM_DOSSIER_FOURN + '\' + t.TITRE + '"' + '<RC>' 
        + 'copy' + ' ' + '"' + '%oxadata%fic_pj\' + trim(t.NOM_FIC) + '"' + ' '  + '"' + @v_Dossier_Cible + '\' + t.AZ32_NOM_DOSSIER_FOURN + '\' + t.TITRE + '\' + t.TITRE + t.AZ32_EXTENSION + '"'   
    from xxTABLExx t 
    where trim(t.ID_DOC_OFA) = '' 
    and t.NOM_FIC <> '' 
    and t.AZ32_NOM_DOSSIER_FOURN <> '' 
*/


-- TEST
-- select t.AZ32_ORDRE, t.* from xxTABLExx t with(nolock) order by t.AZ32_ORDRE


