DEFINITION INCREMENT_840000670 1
DEFINITION CPT_840000670 1501
DEFINITION NUMTAB_840000670 4
DEFINITION SvcKeySimRing_840000670 0x97
REGISTRE ENTIER date_plat_840000670
REGISTRE ENTIER erreur_840000670
REGISTRE ENTIER adrcallingnb_840000670
REGISTRE ENTIER adrcallednb_840000670
REGISTRE ENTIER adrorigcallednb_840000670
REGISTRE ENTIER adrvlrnb_840000670
REGISTRE ENTIER adrlocationnb_840000670
REGISTRE ENTIER adrtransnb_840000670
REGISTRE ENTIER svckey_840000670
REGISTRE ENTIER telsvci_840000670
REGISTRE ENTIER date_audit_840000670
REGISTRE ENTIER RedirReason_840000670
REGISTRE ENTIER X_840000670
REGISTRE ENTIER Y_840000670
REGISTRE ENTIER Z_840000670
REGISTRE ENTIER code_rejet_840000670
REGISTRE POINTEUR pt_chp_840000670
############################################################################
# TRAITEMENT Tincc_trt.src
#   Article DC Tincc en entree de Platine
#   Pcode de traitement
#   Creation le 09/01/2006
# Historique
# 19/04/06 FO 180 dump article
# 14/08/06 PKH GRETA-ITX(temps d'attente gratuit)
# 04/09/06 JLG FO 240 complements
# 03/10/06 DRE G3R0CdME spec Traitement INCC S3F0
# 17/10/06 DRE G3R0CdME spec Traitement INCC S3F1
# 15/11/06 PSA G3R0CdME spec Traitement INCC S3F2
# 05/09/07 JLG G1R5     spec Traitement INCC S6F1
# 10/09/07 RHE G1R5  FO 587 INCC test de presence des champs optionnels AdrVLRNb et AdrOrigCalledNb
# 21/09/07 JLG G1R5     spec Traitement INCC S6F2
# 18/10/07 RHE G1R5 : TT35 : remplacement g_iartin par g_iartout (report G1R4)
# 18/10/07 RHE G1R5 : TT12 (report G1R4)
# 09/11/09 PSA G2R5 : prise en compte champ RedirReason (offre SimRing)
# 16/02/10 JLG G2R6 QC517, 556 evolution spec sur champ RedirReason (offre SimRing)
# 07/01/11 PSA G3R2 modification ajout CE pour champ MSISDN dans le cas de SimRing
# 16/03/11 JLG G3R2C4 fusion avec G3R1C600 pointeurs
############################################################################





trace("[Tincc_trt] =========== debut Pcode TRAITEMENT  =============")

# ALLOCATION DES POINTEURS
pt_chp_840000670		= "11111111111111111111111111111111111111111111167"

erreur_840000670 = i_dup_art_id(g_iartin, g_iartout)
#erreur = i_fdump_art(g_iartout)

################################################################
#   Test syntaxique
################################################################
# neant

################################################################
#   Tests semantiques
################################################################

# FO 587 : test presence AdrOrCalled
SI (i_valid_field_n(g_iartout, $Tincc::AdrOrCalled))
ALORS
	adrorigcallednb_840000670 = i_get_art_field(g_iartout, $Tincc::AdrOrCalled)
	SI adrorigcallednb_840000670 != 0x03 && adrorigcallednb_840000670 != 0x04
	ALORS
		code_rejet_840000670 = 0x5042
		i_strcpy(pt_chp_840000670,"AdrOrCalled")
		erreur_840000670 = i_PlvMessEmettre(6300,2,g_iartin,"",2,code_rejet_840000670,pt_chp_840000670, 0)
		SAUT STOCKE_ERRONE
	FINSI
FINSI

# FO 587 : test presence AdrVLRNb
SI (i_valid_field_n(g_iartout, $Tincc::AdrVLRNb))
ALORS
	adrvlrnb_840000670 = i_get_art_field(g_iartout, $Tincc::AdrVLRNb)
	SI adrvlrnb_840000670 != 0x03 && adrvlrnb_840000670 != 0x04
	ALORS
		code_rejet_840000670 = 0x5042
		i_strcpy(pt_chp_840000670,"AdrVLRNb")
		erreur_840000670 = i_PlvMessEmettre(6300,2,g_iartin,"",2,code_rejet_840000670,pt_chp_840000670, 0)
		SAUT STOCKE_ERRONE
	FINSI
FINSI

adrcallingnb_840000670 = i_get_art_field(g_iartout, $Tincc::AdrCallingNb)
SI (adrcallingnb_840000670 != 0x03 && adrcallingnb_840000670 != 0x04)
ALORS
#	trace1("[Tincc_tr] NOK adrcallingnb = 0x%x",adrcallingnb)
	code_rejet_840000670 = 0x5042
	i_strcpy(pt_chp_840000670,"AdrCallingNb")
	erreur_840000670 = i_PlvMessEmettre(6300,2,g_iartin,"",2,code_rejet_840000670,pt_chp_840000670, 0)
	SAUT STOCKE_ERRONE
FINSI
#trace1("[Tincc_trt] OK adrcallingnb = 0x%x",adrcallingnb)


adrcallednb_840000670 = i_get_art_field(g_iartout, $Tincc::AdrCalledNb)
SI (adrcallednb_840000670 < 0x01 || adrcallednb_840000670 > 0x04)
ALORS
#	trace1("[Tincc_trt] NOK adrcallednb = 0x%x",adrcallednb)
	code_rejet_840000670 = 0x5042
	i_strcpy(pt_chp_840000670,"AdrCalledNb")
	erreur_840000670 = i_PlvMessEmettre(6300,2,g_iartin,"",2,code_rejet_840000670,pt_chp_840000670, 0)
	SAUT STOCKE_ERRONE
FINSI
#trace1("[Tincc_trt] OK adrcallednb = 0x%x",adrcallednb)


SI (i_valid_field_n(g_iartout, $Tincc::AdrLocationNb))
ALORS
	adrlocationnb_840000670 = i_get_art_field(g_iartout, $Tincc::AdrLocationNb)
	SI adrlocationnb_840000670 != 0x03 && adrlocationnb_840000670 != 0x04
	ALORS
#		trace1("Alarme 6100_9 [Tincc_trt] NOK LocationInd = 0x%x",adrlocationnb)
		code_rejet_840000670 = 0x5042
		i_strcpy(pt_chp_840000670,"AdrLocationNb")
		erreur_840000670 = i_PlvMessEmettre(6300,2,g_iartin,"",2,code_rejet_840000670,pt_chp_840000670, 0)
		SAUT STOCKE_ERRONE
	FINSI
FINSI
#trace1("[Tincc_trt] OK adrlocationnb = 0x%x",adrlocationnb)


SI (i_valid_field_n(g_iartout, $Tincc::AdrTransNb))
ALORS
	adrtransnb_840000670 = i_get_art_field(g_iartout, $Tincc::AdrTransNb)
	SI adrtransnb_840000670 != 0x02 && adrtransnb_840000670 != 0x03 && adrtransnb_840000670 != 0x04
	ALORS
		code_rejet_840000670 = 0x5042
		i_strcpy(pt_chp_840000670,"AdrTransNb")
		erreur_840000670 = i_PlvMessEmettre(6300,2,g_iartin,"",2,code_rejet_840000670,pt_chp_840000670, 0)
		SAUT STOCKE_ERRONE
	FINSI
FINSI
#trace1("[Tincc_trt] OK adrtransnb = 0x%x",adrtransnb)

# G1R5 jlg
SI (i_valid_field_n(g_iartout, $Tincc::SvcKey))
ALORS
	svckey_840000670 = i_get_art_field(g_iartout, $Tincc::SvcKey)
#	trace1("[Tincc_trt] OK svckey = 0x%x",svckey)
	SI (svckey_840000670 != 0x23) && (svckey_840000670 != 0x24) && (svckey_840000670 != 0x43) && (svckey_840000670 != 0x55) && (svckey_840000670 != 0x95) && (svckey_840000670 != SvcKeySimRing_840000670)
	ALORS
		code_rejet_840000670 = 0x5042
		i_strcpy(pt_chp_840000670,"SvcKey")
		erreur_840000670 = i_PlvMessEmettre(6300,2,g_iartin,"",2,code_rejet_840000670,pt_chp_840000670, 0)
		SAUT STOCKE_ERRONE
	FINSI
FINSI
#trace1(">>>__LINE__>>>__FILE__>>> OK SvcKey = 0x%x",svckey)
#/G1R5 jlg

SI (i_valid_field_n(g_iartout, $Tincc::TelSvcI))
ALORS
	telsvci_840000670 = i_get_art_field(g_iartout, $Tincc::TelSvcI)
#	trace1(">>>__LINE__>>>__FILE__>>> OK svckey = 0x%x",svckey)
	SI (telsvci_840000670 != 0x00) && (telsvci_840000670 != 0x01) && (telsvci_840000670 != 0x0F)
	ALORS
		code_rejet_840000670 = 0x5042
		i_strcpy(pt_chp_840000670,"TelSvcI")
		erreur_840000670 = i_PlvMessEmettre(6300,2,g_iartin,"",2,code_rejet_840000670,pt_chp_840000670, 0)
		SAUT STOCKE_ERRONE
	FINSI
FINSI

#########################################################################
# Variables fonctionnelles
#########################################################################

#########################################################################
#   Tests croises
#########################################################################

SI (i_valid_field_n(g_iartout, $Tincc::LocationNb)) && (! i_valid_field_n(g_iartout, $Tincc::AdrLocationNb))
ALORS
	code_rejet_840000670 = 0x5042
	i_strcpy(pt_chp_840000670,"LocationNb present et AdrLocationNb absent")
	erreur_840000670 = i_PlvMessEmettre(6301,2,g_iartin,"",2,code_rejet_840000670,pt_chp_840000670, 0)
	SAUT STOCKE_ERRONE
FINSI
#trace("===========================ca passe =======================")

SI  (i_valid_field_n(g_iartout, $Tincc::TransNb)) && (! i_valid_field_n(g_iartout, $Tincc::AdrTransNb))
ALORS
	code_rejet_840000670 = 0x5042
	i_strcpy(pt_chp_840000670,"TransNb present et AdrTransNb absent")
	erreur_840000670 = i_PlvMessEmettre(6301,2,g_iartin,"",2,code_rejet_840000670,pt_chp_840000670, 0)
	SAUT STOCKE_ERRONE
FINSI

SI  (i_valid_field_n(g_iartout, $Tincc::VLRNb)) && (! i_valid_field_n(g_iartout, $Tincc::AdrVLRNb))
ALORS
	code_rejet_840000670 = 0x5042
	i_strcpy(pt_chp_840000670,"VLRNb present et AdrVLRNb absent")
	erreur_840000670 = i_PlvMessEmettre(6301,2,g_iartin,"",2,code_rejet_840000670,pt_chp_840000670, 0)
	SAUT STOCKE_ERRONE
FINSI

SI  (i_valid_field_n(g_iartout, $Tincc::OrigCalledNb)) && (! i_valid_field_n(g_iartout, $Tincc::AdrOrCalled))
ALORS
	code_rejet_840000670 = 0x5042
	i_strcpy(pt_chp_840000670,"OrigCalledNb present et AdrOrigCalledNb absent")
	erreur_840000670 = i_PlvMessEmettre(6301,2,g_iartin,"",2,code_rejet_840000670,pt_chp_840000670, 0)
	SAUT STOCKE_ERRONE
FINSI

SI (svckey_840000670 == 0x43) || (svckey_840000670 == 0x55)
ALORS
	SI !(i_valid_field_n(g_iartout, $Tincc::VLRNb))
	ALORS
			code_rejet_840000670 = 0x5042
			i_strcpy(pt_chp_840000670,"SvcKey vaut 0x43 ou 0x55 et VLRNb absent")
			erreur_840000670 = i_PlvMessEmettre(6301,2,g_iartin,"",2,code_rejet_840000670,pt_chp_840000670, 0)
			SAUT STOCKE_ERRONE
	FINSI

	SI !(i_valid_field_n(g_iartout, $Tincc::TelSvcI))
	ALORS
			code_rejet_840000670 = 0x5042
			i_strcpy(pt_chp_840000670,"SvcKey vaut 0x43 ou 0x55 et TelSvcI absent")
			erreur_840000670 = i_PlvMessEmettre(6301,2,g_iartin,"",2,code_rejet_840000670,pt_chp_840000670, 0)
			SAUT STOCKE_ERRONE
	FINSI

	SI !(i_valid_field_n(g_iartout, $Tincc::OrigCalledNb))
	ALORS
			code_rejet_840000670 = 0x5042
			i_strcpy(pt_chp_840000670,"SvcKey vaut 0x43 ou 0x55 et OrigCalledNb absent")
			erreur_840000670 = i_PlvMessEmettre(6301,2,g_iartin,"",2,code_rejet_840000670,pt_chp_840000670, 0)
			SAUT STOCKE_ERRONE
	FINSI
FINSI

#QC517, 556 evolution spec pour RedirReason
SI (svckey_840000670 == SvcKeySimRing_840000670) 
ALORS
	SI !(i_valid_field_n(g_iartout, $Tincc::RedirReason))
	ALORS
		code_rejet_840000670 = 0x5042
		i_strcpy(pt_chp_840000670,"SvcKeySimRing et RedirReason absent")
		erreur_840000670 = i_PlvMessEmettre(6301,2,g_iartin,"",2,code_rejet_840000670,pt_chp_840000670, 0)
		SAUT STOCKE_ERRONE
	SINON
		RedirReason_840000670 = i_get_art_field(g_iartout, $Tincc::RedirReason)
		SI (RedirReason_840000670 != 0x01 && RedirReason_840000670 != 0x02)
			ALORS
			code_rejet_840000670 = 0x5042
			i_strcpy(pt_chp_840000670,"SvcKeySimRing, RedirReason")
			erreur_840000670 = i_PlvMessEmettre(6301,2,g_iartin,"",2,code_rejet_840000670,pt_chp_840000670, 0)
			SAUT STOCKE_ERRONE
		FINSI
	FINSI
FINSI
########################################################
# Mise a jour du T3ace, les T4 pour normalisation
#
########################################################
#erreur = i_fdump_art(g_iartout)
# Creation des champs ajout T3ace

erreur_840000670 = i_ajoutChampNum(g_iartout, $Tincc::T4msisdn,$Tincc::Adrmsisdn,6)

# G1R5 jlg

#idpartNb correspondra au V3t2=idpart du Tdpvgsm
############ V3t2 idpart et V3t4 MSISDN
SI (svckey_840000670 == 0x43 || svckey_840000670 == 0x55 || svckey_840000670 == 0x95 || svckey_840000670 == SvcKeySimRing_840000670)
ALORS
	#V3t2 idpart (CallingNb)
	erreur_840000670 = i_set_art_field(g_iartout, $Tincc::Adridpart, adrcallingnb_840000670)
	erreur_840000670 = i_dup_chp_1val(g_iartout, g_iartout, $Tincc::CallingNb, $Tincc::idpartNb)
SINON	
	#V3t2 idpart (CalledNb)
	erreur_840000670 = i_dup_chp_1val(g_iartout, g_iartout, $Tincc::CalledNb, $Tincc::idpartNb)
	erreur_840000670 = i_set_art_field(g_iartout, $Tincc::Adridpart, adrcallednb_840000670)
FINSI

#localNb correspondra au V3t3=local du Tdpvgsm
############ V3t3 local
SI (svckey_840000670 == 0x43 || svckey_840000670 == 0x55 || svckey_840000670 == SvcKeySimRing_840000670)
ALORS
	erreur_840000670 = i_set_art_field(g_iartout, $Tincc::Adrlocal, adrvlrnb_840000670)
	erreur_840000670 = i_dup_chp_1val(g_iartout, g_iartout, $Tincc::VLRNb, $Tincc::localNb)
SINON
	SI (svckey_840000670 == 0x95)
	ALORS
		SI (i_valid_field_n(g_iartout, $Tincc::TransNb))
		ALORS
			erreur_840000670 = i_set_art_field(g_iartout, $Tincc::Adrlocal, adrtransnb_840000670)
			erreur_840000670 = i_dup_chp_1val(g_iartout, g_iartout, $Tincc::TransNb, $Tincc::localNb)
		SINON
			erreur_840000670 = i_set_art_field(g_iartout, $Tincc::Adrlocal, adrcallednb_840000670)
			erreur_840000670 = i_dup_chp_1val(g_iartout, g_iartout, $Tincc::CalledNb, $Tincc::localNb)
		FINSI
	SINON
		SI (i_valid_field_n(g_iartout, $Tincc::LocationNb))
		ALORS
			erreur_840000670 = i_dup_chp_1val(g_iartout, g_iartout, $Tincc::LocationNb, $Tincc::localNb)
			erreur_840000670 = i_set_art_field(g_iartout, $Tincc::Adrlocal, adrlocationnb_840000670)
		SINON
			erreur_840000670 = i_supprChamp(g_iartout, "T4local")
		FINSI
	FINSI
FINSI

#msisdnNb correspondra au V3t4=MSISDN du Tdpvgsm
############ V3t2 idpart et V3t4 MSISDN
SI (svckey_840000670 == 0x43 || svckey_840000670 == 0x55 || svckey_840000670 == 0x95 || svckey_840000670 == SvcKeySimRing_840000670)
	&& (i_valid_field_n(g_iartout, $Tincc::OrigCalledNb))
ALORS
	#V3t4 MSISDN (OrigCalledNb)
	erreur_840000670 = i_set_art_field(g_iartout, $Tincc::Adrmsisdn, adrorigcallednb_840000670)
	erreur_840000670 = i_dup_chp_1val(g_iartout, g_iartout, $Tincc::OrigCalledNb, $Tincc::msisdnNb)
SINON	
	#V3t4 MSISDN (CallingNb)
	erreur_840000670 = i_dup_chp_1val(g_iartout, g_iartout, $Tincc::CallingNb, $Tincc::msisdnNb)
	erreur_840000670 = i_set_art_field(g_iartout, $Tincc::Adrmsisdn, adrcallingnb_840000670)
FINSI

#scpinNb correspondra au V4t11.3=SCPIN du Tdpvgsm
############ V3t11.3 SCPIN
SI (i_valid_field_n(g_iartout, $Tincc::TransNb))
ALORS
	erreur_840000670 = i_set_art_field(g_iartout, $Tincc::Adrscpin, adrtransnb_840000670)
	erreur_840000670 = i_dup_chp_1val(g_iartout, g_iartout, $Tincc::TransNb, $Tincc::scpinNb)
	#trace("[Tincc_trt] scpin = TransNb")
SINON
	#trace("[Tincc_tr] TransNb absent")
	SI (svckey_840000670 == 0x43 || svckey_840000670 == 0x55 || svckey_840000670 == SvcKeySimRing_840000670)
	ALORS
		erreur_840000670 = i_set_art_field(g_iartout, $Tincc::Adrscpin, adrcallednb_840000670)
		erreur_840000670 = i_dup_chp_1val(g_iartout, g_iartout, $Tincc::CalledNb, $Tincc::scpinNb)
		#trace("[Tincc_trt] scpin = CalledNb")
	SINON
		#trace("[Tincc_tr] T4scpin absent")
		erreur_840000670 = i_supprChamp(g_iartout, "T4scpin")
	FINSI
FINSI
#/G1R5 jlg

	


#erreur = i_fdump_art(g_iartout)
########################################################
# Cpt applicatifs
########################################################
########### Date_Audit
date_audit_840000670=i_date_audit()
#trace1("[Tincc_tr] date_audit=%x",date_audit)
########### date_plat
date_plat_840000670 = i_DHgetLocalTime(NUMTAB_840000670, 7, date_audit_840000670)
#trace1("======== date_plat = %d ========",date_plat)

# CPT = 1501
# X : type de CRA, Y : EEC, Z : inutilise, date : date_plat, Increment : 1

# G1R5 : TT12
SI (svckey_840000670 == 0x43) || (svckey_840000670 == 0x55) || (svckey_840000670 == 0x95) || (svckey_840000670 == SvcKeySimRing_840000670)
ALORS
	X_840000670 = 0x02
SINON
	X_840000670 = 0x00
FINSI


Y_840000670=g_ieec
Z_840000670=0
erreur_840000670=i_incr_cpt(CPT_840000670,X_840000670,Y_840000670,Z_840000670,date_plat_840000670,INCREMENT_840000670)
erreur_840000670 = i_stocke_art(g_iartout, 0, PT_OK, 0)
#erreur = i_fdump_art(g_iartout)
RETOUR TRAIT_OK


########################################################
#   Stockage en errone
########################################################

POINT   STOCKE_ERRONE

trace2("[Tincc_trt] Stockage en ERRONE %s", "", "")

erreur_840000670 = i_make_art_rej(g_iartout, g_iartout5, code_rejet_840000670)
erreur_840000670 = i_stocke_art(g_iartout5, 0, PT_ERRONE, 0)

RETOUR TRAIT_OK

########################################################
# Stockage en Elimine Divers
########################################################

POINT STOCKE_DIV

trace( "[Tincc_trt] Pcode de traitement   Stockage en DIVERS" )

erreur_840000670 = i_stocke_art( g_iartout, 0, PT_DIVERS, 0 )

RETOUR TRAIT_OK
#---------------------- Fin Tincc_tr.src ----------------------------------------------
