FVERS = 2
REFOBJET : ID = 860026202 ; ID_INIT = 800007566 ; NOM = ri2g118/118_CORR ; VERSION = V3 ; DATE = 06/06/14-09:25:53 ( 1402046753 ) ; CAT = 21 ; ETAT = 0 ; NB_FILS =0 ; ID_FILS = 
ID_EST = 860000105
COMMENT = "28/09/2009 Creation pour remplacer 712_CORR Modif repertoire le 14/10/2009"
CREATEUR = drey
# DEBUT_CORPS
// Parametres des regles ri2g118/712_CORR 
// Historique
//      DRE THE 24/03/2009    Creation
//      DRE THE 15/04/2009    QC 231 (agreg+orph) spec RI2G118FT S14F5
//      BEA THE 15/04/2009    Changt de nom (118_CORR)
//	DRE 	06/06/2014    G4R6 QC824
//
//---------------------------------------------
import ilog.rules.compat.*;
import nts_interface_rules.*;

//---------------------------
//FONCTION : DELAI_MAX_CORR
//---------------------------
function int DELAI_MAX_CORR(){
        return 3600;  // 60 mn
};

//------------------------------------------------
// Tri2g118 : Ri2g118_Dedoublonnage
// 
//------------------------------------------------
rule Ri2g118_Dedoublonnage
{
// + prioritaire que
priority = high; 
   when
   {
   ?dcA: Article(

	?IDCORREL_dcA      : LireChpCdc("IDCORREL");
	?SCATDC_dcA        : LireChpNum("SCATDC");
	?GCOM_ICAR_dcA     : LireChpDate("GCOM_ICAR");
	?IDUS_NUM_dcA      : LireChpCdc("IDUS_NUM");
	);

   ?dcB: Article(
	?this != ?dcA;

	?IDCORREL_dcB      : LireChpCdc("IDCORREL");
	?IDCORREL_dcB  equals  ?IDCORREL_dcA;

	?SCATDC_dcB        : LireChpNum("SCATDC");
	?SCATDC_dcB       ==    ?SCATDC_dcA;

	?GCOM_ICAR_dcB     : LireChpDate("GCOM_ICAR");
	?GCOM_ICAR_dcB    ==    ?GCOM_ICAR_dcA;

	?IDUS_NUM_dcB      : LireChpCdc("IDUS_NUM");
	?IDUS_NUM_dcB  equals  ?IDUS_NUM_dcA;
	);
   }
   then
   {
	?context.Tracer("===============================================") ;
	?context.Tracer("--Tri2g118---> Correlation Ri2g118_Dedoublonnage") ;
	?context.Tracer("===============================================") ;

	?context.EliminerDc ( ?dcB );
   }
};

//------------------------------------------------
// Ri2g118_AGREGATION
//------------------------------------------------
rule Ri2g118_AGREGATION
{
// + prioritaire que
   priority = 500;
   when
   {
	?dcA: Article(

	?SCATDC_dcA        : LireChpNum("SCATDC");
	?SCATDC_dcA  == 2;
	?IDCORREL_dcA      : LireChpCdc("IDCORREL");
	?TRAA_DCONV_dcA        : LireChpNum("TRAA_DCONV");
	?TREP_DURCONV_dcA        : LireChpNum("TREP_DURCONV");
	?NUMNAS_dcA        : LireChpCdc("NUMNAS");
		);

	?dcB: Article(
	?this != ?dcA;

	?SCATDC_dcB        : LireChpNum("SCATDC");
	?SCATDC_dcB  != 2;
	?IDCORREL_dcB      : LireChpCdc("IDCORREL");
	?IDCORREL_dcB  equals  ?IDCORREL_dcA;
	?GCOM_ICAR_dcB     : LireChpDate("GCOM_ICAR");
		);
   }
   then
   {
	?context.Tracer("=============================================") ;
	?context.Tracer("--Tri2g118 ---> Correlation Ri2g118_AGREGATION") ;
	?context.Tracer("=============================================") ;

	?context.TransformerDc ( ?dcA );
	?dcA.EcrireChpNum("TRAA_DCONV", ?TRAA_DCONV_dcA + ?TREP_DURCONV_dcA);
	?dcA.EcrireChpDate("TRAA_HDEB", ?GCOM_ICAR_dcB);
// G4R6 QC824: Probleme d'interpretation du F de bourrage (devient 15). La copie corrige ce pb
//	?dcA.EcrireChpCdc("DECO_NUM",?NUMNAS_dcA);
        ?dcA.CopierChpDc("NUMNAS","DECO_NUM",?dcA) ;
	?dcA.EcrireChpNum("DECO_TRAF",2);
	?context.EmettreDcCorrele ( ?dcA );
	?context.EliminerDc ( ?dcB );
    }
};

//------------------------------------------------
// Ri2g118_ORPHELIN
//
//------------------------------------------------
rule Ri2g118_ORPHELIN
{
// + prioritaire que
priority = 100;
   when
   {
	?dcA: Article(
	?dateCourante : ?context.LireDateCourante();
	?dateCourante > dateEntree + DELAI_MAX_CORR();
	?NUMNAS_dcA        : LireChpCdc("NUMNAS");
	?SCATDC_dcA        : LireChpNum("SCATDC");
		);
   }
   then
   {
	if ( ?SCATDC_dcA == 2 )
	{
// 	G4R6 QC824: Probleme d'interpretation du F de bourrage (devient 15). La copie corrige ce pb
//		?dcA.EcrireChpCdc("DECO_NUM",?NUMNAS_dcA);
       		?dcA.CopierChpDc("NUMNAS","DECO_NUM",?dcA) ;
		?dcA.EcrireChpNum("DECO_TRAF",2);
	}
	?context.EmettreDcEltNonUtilise ( ?dcA );
	?context.Tracer("==============================================") ;
	?context.Tracer("--Tri2g118---> Correlation Ri2g118_ORPHELIN") ;
	?context.Tracer("==============================================") ;
   }
};




# FIN_CORPS
