CTRVAL : Appel d’une fonction Oracle de pré-contrôles de validation

(Paramètre actif depuis la version 1.6.2)

Standard

Ce paramètre permet, en tout début de la validation (ou d’invalidation) d’un événement, d’effectuer un ensemble de contrôles via une fonction Oracle (donnée en L1), avec possibilité d’abandon de la validation (ou d’invalidation) en cours.

Fonctions concernées : GCOVV1GBLVV1 - GBFAV1 -

L1     Nom de la fonction Oracle de contrôle.
M1    

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

N2    

En web uniquement :

  = 0  

La fonction Oracle de contrôle est appelée en validation par l’API GestionEvenementvaliderEvenement.

  = 1  

La fonction Oracle de contrôle est appelée en pré-contrôle de la validation de l’événement par l’API GestionEvenementcontrolerValidationEvenement (API appelée en EASYFIT depuis la FS e_event_validation.xsl).

Utilisation en mode N1= 1

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 l’utilisateur courant 
p_datsys IN VARCHAR2, -- Date du serveur de traitement (format AAAAMMJJ)  
p_heusys IN NUMBER, -- Heure du serveur de traitement (format HH.MMSS) 
p_socspl IN NUMBER, -- Code société du spool 
p_numspl IN NUMBER, -- Numéro du spool 
-- Référence eve 
p_soceve EVE.CODSOC%TYPE, -- Code société de l’événement 
p_achvte EVE.ACHVTE%TYPE, -- Achat/vente de la facture (achvte) 
p_typeve EVE.TYPEVE%TYPE, -- Type de l’événement 
p_numeve EVE.NUMEVE%TYPE, -- Numéro de l’événement 
-- Options 
p_ctrvcxx_parm1 IN VARCHAR2 -- Valeur donnée par le M1 du ppe CTRVAL 
p_indval IN NUMBER -- 1 si appel en validation, 0 si appel en invalidation

En mode web, les paramètres P_SOCSPL et P_NUMSPL sont vides

Paramètres en sortie

En sortie, la fonction retourne 0 à n lignes de structure GNX_FCT_CTRVAL_RECORD constituées ainsi :

create or replace
type GNX_FCT_CTRVAL_RECORD AS OBJECT
(
INDVALEVE NUMBER, -- 0 : validation impossible, 1 : information
INDAFFMES NUMBER,
CODCTRVAL VARCHAR2(6 BYTE),
CODUT_MES VARCHAR2(10 BYTE),
NATTXT VARCHAR2(6 BYTE),
TXTRAW VARCHAR2(4000 CHAR)
);

Traitement d’un row en retour de la fonction Oracle

La fonction Oracle permet d’effectuer des contrôles « spécifique » avant la validation (ou l’invalidation) d’un événement. Suite à ces contrôles, on peut ramener de l’information sur ces contrôles, avec ou pas arrêt de la validation (ou de l’invalidation) de l’événement. Il y a arrêt de la validation (ou de l’invalidation) si on rencontre au moins une fois l’indicateur indvaleve à 0 sur les lignes retournées par la fonction Oracle). Pas d’arrêt de la validation (ou de l’invalidation) si aucune ligne retournée (c’’st que tous les contrôles sont OK, et qu’il n’y a pas d’information particulière à afficher).

Traitement de l’information retournée :

Si le code erreur (codut_mes) est renseigné,

l’information correspond au libellé associé à ce code (suivant la langue de l’utilisateur), avec substitution des @x par la liste de valeurs, séparées par « ; », fournies dans le champ txtraw,

sinon

l’information correspond au texte retournée dans le champ txtraw, affichée via le code erreur « CTRVAL_LIB »

En mode web (par l’API GestionEvenementvaliderEvenement (si N2=0) ou par l’API GestionEvenementcontrolerValidationEvenement (si N2=0)

Les informations sont chargées dans l’attribut Information de GnxService

En Batch

Si indaffmes = 2

Si le champ nattxt est renseigné

le champ txtraw est mémorisé sur le txt associé au numéro de traitement, avec comme valeur pour le champ nattxt celle retournée par la fonction Oracle.

Sinon

le champ txtraw est affiché via le code erreur « CTRVAL_LIB »

Sinon (indaffmes = 0 ou 1)

l’information, constituée comme en mode web, est affichée dans le .log du traitement, à la différence qu’au lieu de prendre le code erreur « CTRVAL_LIB » (si la fonction ne retourne pas de code erreur), on prend le code erreur « CTRVAL_BLO » si le message est bloquant (indvaleve à 0), « CTRVAL_INF » sinon, avec en 1er paramètre la valeur (codctrval) retournée par la fonction Oracle.

Si indaffmes = 0 (ou =2 avec nattxt vide), et que le paramètre maquette « MEMO_MESSAGE_SPL » est positionné, l’information sera aussi mémorisée sur le txt associé au numéro de traitement (avec nattxt à blanc) si la validation (ou invalidation) est impossible.

Utiliser P MEMO_MESSAGE_TXT_SPL="ALWAYS" si l’on veut mémoriser les messages dans txt même si la validation (ou invalidation) est possible.

On considère la validation possible si aucune ligne n’est retournée par la fctOracle

Structure de la fonction Oracle (ici, avec des sorties pour test)

drop type GNX_FCT_CTRVAL_RECORD_LIST;
drop type GNX_FCT_CTRVAL_RECORD;
drop function FCT_CTRVAL;
create or replace
type GNX_FCT_CTRVAL_RECORD AS OBJECT
(
INDVALEVE NUMBER,
INDAFFMES NUMBER,
CODCTRVAL VARCHAR2(6 BYTE),
CODUT_MES VARCHAR2(10 BYTE),
NATTXT VARCHAR2(6 BYTE),
TXTRAW VARCHAR2(4000 CHAR)
);
create or replace
type GNX_FCT_CTRVAL_RECORD_LIST is table of GNX_FCT_CTRVAL_RECORD;
create or replace
function FCT_CTRVAL( 
   -- 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, 
   p_socspl IN NUMBER, 
   p_numspl IN NUMBER, 
   -- Référence eve 
   p_soceve EVE.CODSOC%TYPE, 
   p_achvte EVE.ACHVTE%TYPE, 
   p_typeve EVE.TYPEVE%TYPE, 
   p_numeve EVE.NUMEVE%TYPE, 
   -- Options 
   p_ctrvcxx_parm1 IN VARCHAR2, 
   p_indval IN NUMBER 
   ) return GNX_FCT_CTRVAL_RECORD_LIST pipelined as
v_txtraw VARCHAR2(4000 CHAR);
begin 
   if p_indval <> 1 then 
      -- Sortir si on n'est pas en validation 
      return; 
   end if; 
   pipe row (GNX_FCT_CTRVAL_RECORD( 
      0, 
      0, 
      'CTRV01', 
      ' ', 
      ' ', 
      '***** Vérification des informations client *****' 
   ));
    pipe row (GNX_FCT_CTRVAL_RECORD( 
      0, 
      0, 
      'CTRV01', 
      'TEST', 
      ' ', 
      'Val1;Val2;' 
   )); 
   return;
end FCT_CTRVAL;
Messages d’erreur à créer
"CTRVAL_BLO" Contrôle bloquant @1 : @2
"CTRVAL_ERR" ppe CTRVAL : problème sur la fonction Oracle @1
"CTRVAL_INF" Contrôle @1 : @2
"CTRVAL_LIB" @1
"CTRVAL_NVA" Evénement @1 non validable