LSTTRC : paramétrage de la liste des traces dans Easy Fit

(Paramètre actif depuis la version ACE202)

Standard

Ce paramètre permet de définir le type de donnée et la fonction oracle permettant de lister les traces.

L’écran est accessible depuis le menu « Historique des modifications » dans la fiche de l’élément consulté/

Fonctions concernées: toutes dans le module Easy Fit

A1

Type de donnée gérée :

  • PRO : fiche produit
  • TIE : tiers
  • ASS : assortiment
  • EVE : événement
  • LOT : fiche lot
  • INV : inventaire
  • CNT : contrat
  • FIL : filière logistique
  • TAL : élaboration tarifaire
  • CTS : condition tarifaire
  • CAT : catalogue web
  • DOS : dossier import
  • COT : coût

 
L1

Code de la fonction Oracle listant les traces pour la fiche consultée

M1

Valeur envoyée à la fonction permettant d’utiliser la même fonction dans différents contextes

Paramètres en entrée de la fonction

-- Contexte

p_codsoc IN NUMBER, -- Code société du contexte

p_codpev IN VARCHAR2, -- Cible (codpev)

p_uticod IN VARCHAR2, -- Utilisateur courant

p_codlan IN VARCHAR2, -- Code langue de lutilisateur courant

p_datsys IN VARCHAR2, -- Date du serveur (format AAAAMMJJ)

p_heusys IN NUMBER, -- Heure du serveur (format HH.MMSS)

-- Référence de l’élément

(voir çi-dessous)

-- Options

p_lsttrc_parm1 IN VARCHAR2 -- Valeur donnée par le M1 du ppe CTRBLC

Références de l’élément pour PRO

p_socpro PRO.CODSOC%TYPE,

p_codpro PRO.CODPRO%TYPE,

Références de l’élément pour TIE

p_soctie TIE.CODSOC%TYPE,

p_typtie TIE.TYPTIE%TYPE,

p_sigtie TIE.SIGTIE%TYPE,

Références de l’élément pour ASS

p_socass ASS_ENT.CODSOC%TYPE,

p_code_assort ASS_ENT.CODE_ASSORT%TYPE,

Références de l’élément pour EVE

p_soceve EVE.CODSOC%TYPE,

p_achvte EVE.ACHVTE%TYPE,

p_typeve EVE.TYPEVE%TYPE,

p_numeve EVE.NUMEVE%TYPE,

Références de l’élément pour LOT

p_soclot OST.CODSOC%TYPE,

p_codpro OST.CODPRO%TYPE,

p_numlot OST.NUMLOT%TYPE,

Références de l’élément pour INV

p_socinv ISK.CODSOC%TYPE,

p_numinv ISK.NUMINV%TYPE,

Références de l’élément pour CNT

p_soccnt CNT.CODSOC%TYPE,

p_achvte CNT.ACHVTE%TYPE,

p_numcnt CNT.NUMCNT%TYPE,

Références de l’élément pour FIL

p_socfil FIL_E.CODSOC%TYPE,

p_codfil FIL_E.CODFIL%TYPE,

Références de l’élément pour TAL

p_soctal TAL.CODSOC%TYPE,

p_achvte TAL.ACHVTE%TYPE,

p_numelabo TAL.NUMELABO%TYPE,

Références de l’élément pour CTS

p_soccts CTS.CODSOC%TYPE,

p_achvte CTS.ACHVTE%TYPE,

p_typcot CTS.TYPCOT%TYPE,

p_numcot CTS.NUMCOT%TYPE,

Références de l’élément pour CAT

p_soccat CAT.CODSOC%TYPE,

p_achvte CAT.ACHVTE%TYPE,

p_codcat CAT.CODCAT%TYPE,

Références de l’élément pour DOS

p_socfap FAP_E.CODSOC%TYPE,

p_typfap FAP_E.TYPFAP%TYPE,

p_numfap FAP_E.NUMFAP%TYPE,

Références de l’élément pour COT

p_soccot COT.CODSOC%TYPE,

p_codcou COT.CODCOU%TYPE,

p_achvte COT.ACHVTE%TYPE,

Paramètres en sortie

En sortie, la function retourne 0 à n lignes de structure GNX_FCT_LSTTRC_RECORD constituée ainsi :

create or replace

type GNX_FCT_LSTTRC_RECORD AS OBJECT

(

TABLE_NAME VARCHAR2(256 CHAR),

CHP_NAME VARCHAR2(256 CHAR),

TYPACT VARCHAR2(1 BYTE),

DATTRC VARCHAR2(10 BYTE),

HEUTRC NUMBER,

UTIMOD VARCHAR2(12 BYTE),

VALPREC VARCHAR2(256 CHAR),

VALNEW VARCHAR2(256 CHAR),

VALZN1 VARCHAR2( 40 CHAR),

VALZN2 VARCHAR2( 40 CHAR),

VALZN3 VARCHAR2( 40 CHAR),

VALZN4 VARCHAR2( 40 CHAR),

VALZN5 VARCHAR2( 40 CHAR),

LIB256 VARCHAR2( 256 CHAR)

);

Structure de la fonction Oracle (ici, avec pour les produits)

 create or replace FUNCTION FCT_TRACE_PRO(
    -- Contexte
    p_codsoc IN NUMBER,
    p_codpev IN VARCHAR2,
    p_uticod IN VARCHAR2,
    p_codlan IN VARCHAR2,
    p_datsys IN VARCHAR2,
    p_heusys IN NUMBER,
    -- Reference pro
    p_socpro PRO.CODSOC%TYPE,
    p_codpro PRO.CODPRO%TYPE,
    -- Options
    p_LSTTRC_parm1 IN VARCHAR2 )
  RETURN GNX_FCT_LSTTRC_RECORD_LIST pipelined
AS
  p_v_table       VARCHAR2(256);
  p_v_chp         VARCHAR2(256);
  p_v_DATTRC      VARCHAR2(10);
  p_n_HEUTRC      NUMBER;
  p_v_UTIMOD      VARCHAR2(12);
  p_v_VALPREC     VARCHAR2(256);
  p_v_VALNEW      VARCHAR2(256);
  p_v_typact      VARCHAR2(1);
  p_v_lannat      VARCHAR2(3);
  p_v_segment_zon VARCHAR2(3);
  p_v_ppe_return gnx_commun.PPE_RET_LIRE;
  p_v_codzn  VARCHAR2(40);
  p_v_lib256 VARCHAR2(256);
BEGIN
  BEGIN
    -- initialisation des variables globales
    -- rcupration de la langue par dfaut dans le ppe LANNAT, si pas de langue alors FRA
    p_v_ppe_return         := gnx_commun.lire_ppe (p_socpro, p_codpev, 'LANNAT');
    IF p_v_ppe_return.codret=1 THEN
      p_v_lannat           := p_v_ppe_return.a1;
    ELSE
      p_v_lannat := 'FRA';
    END IF;
  END;
  -- lecture des traces sur la table pro
  DECLARE
    CURSOR TRACE_PRO
    IS
      SELECT *
      FROM ut_trace_data
      WHERE pk_valchp1 = p_socpro
      AND pk_valchp2   = p_codpro
      AND codent      IN ('PRO','PRL', 'PRC', 'PRU', 'PRB', 'PRD', 'PRM', 'PRO_DANGER', 'PRO_STRATE', 'PRO_TAX', 'PRP', 'DSK', 'PRO_CMP', 'ASS_PRO') ;
  BEGIN
    FOR C IN trace_pro
    LOOP
      -- initialisation des valeurs avant et après
      p_v_valprec := c.valprec;
      p_v_valnew  := c.valnew;
      p_v_table   := fct_trd_codent(c.codent, c.numpartrcd, p_codlan, p_v_lannat);
      p_v_chp     := fct_trd_chp(c.codent, c.numpartrcd, c.nomchp, p_codlan, p_v_lannat);
      -- si le champ trac est CODZN alors lecture du libell des valeurs dans le paramtrage
      -- recherche du segment de codzn avec le ppe PZNPRO
      BEGIN
        IF (C.CODENT = 'PRO' and c.nomchp LIKE 'CODZN%') THEN
          BEGIN
            p_v_ppe_return         := gnx_commun.lire_ppe (p_socpro, p_codpev, 'PZNPRO');
            IF p_v_ppe_return.codret=1 THEN
              p_v_segment_zon      := p_v_ppe_return.a1;
            ELSE
              p_v_segment_zon := 'PRO';
            END IF;
          EXCEPTION
          WHEN OTHERS THEN
            p_v_segment_zon := 'PRO';
          END;
          -- appel de la fonction lire_valeur_zn pour la valeur codzn
          BEGIN
            p_v_codzn   := p_v_segment_zon||lpad(trim(SUBSTR(c.nomchp,6,3)),3,'0');
            p_v_valprec := gnx_commun.lire_valeur_zn(p_codsoc, p_v_codzn, c.valprec);
            p_v_valnew  := gnx_commun.lire_valeur_zn(p_codsoc, p_v_codzn, c.valnew);
          END;
        END IF;
      END;
      pipe row (GNX_FCT_LSTTRC_RECORD (p_v_table, p_v_chp, c.typact, c.datmaj, c.heumaj, c.utimod, p_v_valprec, p_v_valnew, '','','','','',p_v_lib256 ));
    END LOOP;
  END;
  -- lecture des traces sur la table TSC
  DECLARE
    CURSOR TRACE_TSC
    IS
      SELECT *
      FROM ut_trace_data
      WHERE pk_valchp1 = p_socpro
      AND pk_valchp4   = p_codpro
      AND codent       = 'TSC';
  BEGIN
    FOR C IN trace_tsc
    LOOP
      -- initialisation des valeurs avant et aprés
      p_v_valprec := c.valprec;
      p_v_valnew  := c.valnew;
      p_v_table   := fct_trd_codent(c.codent, c.numpartrcd, p_codlan, p_v_lannat);
      p_v_chp     := fct_trd_chp(c.codent, c.numpartrcd, c.nomchp, p_codlan, p_v_lannat);
      pipe row (GNX_FCT_LSTTRC_RECORD (p_v_table, p_v_chp, c.typact, c.datmaj, c.heumaj, c.utimod, p_v_valprec, p_v_valnew, '','','','','', 'Date dbut : '||TO_CHAR(to_date(c.pk_valchp10,'YYYYMMDD'), 'DD/MM/YYYY')||', Devise : '||c.pk_valchp7 ));
    END LOOP;
  END;
  -- lecture des traces sur la table PRR et ASS_PRO
  DECLARE
    CURSOR TRACE_PRR
    IS
      SELECT *
      FROM ut_trace_data
      WHERE pk_valchp1 = p_socpro
      AND pk_valchp3   = p_codpro
      AND codent      IN ('PRR', 'ASS_PRO');
  BEGIN
    FOR C IN trace_prr
    LOOP
      -- initialisation des valeurs avant et aprés
      p_v_valprec := c.valprec;
      p_v_valnew  := c.valnew;
      p_v_table   := fct_trd_codent(c.codent, c.numpartrcd, p_codlan, p_v_lannat);
      p_v_chp     := fct_trd_chp(c.codent, c.numpartrcd, c.nomchp, p_codlan, p_v_lannat);
      pipe row (GNX_FCT_LSTTRC_RECORD (p_v_table, p_v_chp, c.typact, c.datmaj, c.heumaj, c.utimod, p_v_valprec, p_v_valnew, '','','','','',p_v_lib256 ));
    END LOOP;
  END;
  -- lecture des traces sur la table MEDIA_BLOB
  DECLARE
    CURSOR TRACE_MEDIA
    IS
      SELECT *
      FROM ut_trace_data
      WHERE pk_valchp1 = p_socpro
      AND pk_valchp2   = 'PRO'
      AND pk_valchp3   = p_codpro
      AND codent       = ('MEDIA_BLOB');
  BEGIN
    FOR C IN trace_media
    LOOP
      -- initialisation des valeurs avant et aprés
      p_v_valprec := c.valprec;
      p_v_valnew  := c.valnew;
      p_v_table   := fct_trd_codent(c.codent, c.numpartrcd, p_codlan, p_v_lannat);
      p_v_chp     := fct_trd_chp(c.codent, c.numpartrcd, c.nomchp, p_codlan, p_v_lannat);
      pipe row (GNX_FCT_LSTTRC_RECORD (p_v_table, p_v_chp, c.typact, c.datmaj, c.heumaj, c.utimod, p_v_valprec, p_v_valnew, '','','','','',p_v_lib256 ));
    END LOOP;
  END;
  -- lecture des traces sur la table ZOD
  DECLARE
    CURSOR TRACE_ZOD
    IS
      SELECT *
      FROM ut_trace_data
      WHERE pk_valchp1 = p_socpro
      AND pk_valchp2  IN
        (SELECT DISTINCT cletbl
        FROM tbl
        WHERE codsoc=f_codsoc(p_socpro, 'TBL', 'RZO')
        AND codtbl  = 'rzo'
        AND lib2    = 'PRO'
        )
    AND pk_valchp3 = p_codpro
    AND codent     = 'ZOD';
  BEGIN
    FOR C IN trace_zod
    LOOP
      -- initialisation des valeurs avant et aprés
      p_v_valprec := c.valprec;
      p_v_valnew  := c.valnew;
      p_v_table   := fct_trd_codent(c.codent, c.numpartrcd, p_codlan, p_v_lannat);
      p_v_chp     := fct_trd_chp(c.codent, c.numpartrcd, c.nomchp, p_codlan, p_v_lannat);
      -- si le champ trac est VALZOD alors lecture du libell des valeurs dans le paramtrage
      BEGIN
        IF c.nomchp = 'VALZOD' THEN
          -- appel de la fonction lire_valeur_zn pour la valeur codzn
          BEGIN
            p_v_codzn   := c.pk_valchp2||lpad(trim(c.pk_valchp4),3,'0');
            p_v_valprec := gnx_commun.lire_valeur_zn(p_codsoc, p_v_codzn, c.valprec);
            p_v_valnew  := gnx_commun.lire_valeur_zn(p_codsoc, p_v_codzn, c.valnew);
          END;
        END IF;
      END;
      pipe row (GNX_FCT_LSTTRC_RECORD (p_v_table, p_v_chp, c.typact, c.datmaj, c.heumaj, c.utimod, p_v_valprec, p_v_valnew, '','','','','',p_v_lib256 ));
    END LOOP;
  END;
  -- lecture des traces sur la table TXT
  DECLARE
    CURSOR TRACE_TXT
    IS
      SELECT *
      FROM ut_trace_data
      WHERE pk_valchp1 = p_socpro
      AND pk_valchp2   = 'PRO'
      AND pk_valchp3   = p_codpro
      AND codent       = 'TXT';
  BEGIN
    FOR C IN trace_txt
    LOOP
      -- initialisation des valeurs avant et après
      p_v_valprec := c.valprec;
      p_v_valnew  := c.valnew;
      p_v_table   := fct_trd_codent(c.codent, c.numpartrcd, p_codlan, p_v_lannat);
      p_v_chp     := fct_trd_chp(c.codent, c.numpartrcd, c.nomchp, p_codlan, p_v_lannat);
      pipe row (GNX_FCT_LSTTRC_RECORD (p_v_table, p_v_chp, c.typact, c.datmaj, c.heumaj, c.utimod, p_v_valprec, p_v_valnew, '','','','','',p_v_lib256 ));
    END LOOP;
  END;
  RETURN;
EXCEPTION
WHEN OTHERS THEN
  pipe row (GNX_FCT_LSTTRC_RECORD('ERREUR','','','',-1,'','','','','','','','','' ));
END;