DEFINITION EMPTY_840000854 "            "
DEFINITION XX_840000854 "XX"
DEFINITION NN_840000854 "NN"
DEFINITION NameOfFile_840000854 "NameOfFile"
DEFINITION Ttapin10_840000854 "Ttapin10"
DEFINITION Ttapin12_840000854 "Ttapin12"
DEFINITION Ttapin14_840000854 "Ttapin14"
DEFINITION Ttapin20_840000854 "Ttapin20"
DEFINITION Ttapin30_840000854 "Ttapin30"
DEFINITION Ttapin40_840000854 "Ttapin40"
DEFINITION Ttapin80_840000854 "Ttapin80"
DEFINITION Ttapin82_840000854 "Ttapin82"
DEFINITION Ttapin84_840000854 "Ttapin84"
DEFINITION Ttapin86_840000854 "Ttapin86"
DEFINITION Ttapin88_840000854 "Ttapin88"
DEFINITION Ttapin14_iecc_840000854 "Ttapin14_iecc"
DEFINITION Ttapin90_iecc_840000854 "Ttapin90_iecc"
DEFINITION TtapinTemp_840000854 "TtapinTemp"
DEFINITION DEF00_840000854 "00"
DEFINITION DEF14_840000854 "14"
DEFINITION DEF90_840000854 "90"
DEFINITION DEF000000000000_840000854 "000000000000"
DEFINITION TotalTollValue_840000854 "TotalTollValue"
DEFINITION TotalCharge_840000854 "TotalCharge"
DEFINITION TotalNbRecord_840000854 "TotalNbRecord"
DEFINITION TotCAMELFeeVal_840000854 "TotCAMELFeeVal"
DEFINITION RecordType_840000854 "RecordType"
DEFINITION Sender_840000854 "Sender"
DEFINITION Recipient_840000854 "Recipient"
DEFINITION SeqNumber_840000854 "SeqNumber"
DEFINITION FirstCallDate_840000854 "FirstCallDate"
DEFINITION LastCallDate_840000854 "LastCallDate"
DEFINITION UTCFirstTime_840000854 "UTCFirstTime"
DEFINITION UTCLastTime_840000854 "UTCLastTime"
DEFINITION UTCTimeOffCode_840000854 "UTCTimeOffCode"
DEFINITION UTCTimeOff_840000854 "UTCTimeOff"
DEFINITION Unused_840000854 "Unused"
DEFINITION OK_840000854 0
DEFINITION NOK_840000854 1
REGISTRE ENTIER TtNbRecored_840000854
REGISTRE ENTIER erreur_840000854
REGISTRE ENTIER indice_840000854
REGISTRE ENTIER TtCharge_out_840000854
REGISTRE ENTIER TtCharge_in_840000854
REGISTRE POINTEUR pt_casart_840000854
REGISTRE POINTEUR pt_TtNbRecored_840000854
REGISTRE POINTEUR pt_TtCharge_out_840000854
REGISTRE POINTEUR pt_TtCharge_in_840000854
REGISTRE POINTEUR pt_TtNbRecoredAdj_840000854
REGISTRE POINTEUR pt_TtChargeAdj_840000854
REGISTRE POINTEUR pt_DateArt_840000854
REGISTRE POINTEUR pt_DateDebut_840000854
REGISTRE POINTEUR pt_DateFin_840000854
REGISTRE POINTEUR pt_UTCOffCode_840000854
REGISTRE POINTEUR pt_UTCOffCodeArt_840000854
REGISTRE POINTEUR pt_UTCOffTime_840000854
REGISTRE POINTEUR pt_FileNameMem_840000854
REGISTRE POINTEUR pt_FileNameTemp_840000854
REGISTRE POINTEUR pt_Var_840000854
REGISTRE POINTEUR pt_Var2_840000854
REGISTRE POINTEUR pt_Var3_840000854
REGISTRE ENTIER l_IdCrae_840000854
REGISTRE ENTIER map_840000854
REGISTRE ENTIER flag_840000854
REGISTRE ENTIER NBCHAMP_840000854
REGISTRE POINTEUR pt_TempUTCOffCode_840000854
REGISTRE POINTEUR pt_TempMap_840000854
REGISTRE ENTIER VAL_840000854
##############################################################
#
#	Pcode IECC de generation de l'article Trailer TAPIN_90
#	22/09/09 - DECI - G2R3 QC367 - mapping dynamique UTCTimeOffCode
#
#	29/03/2011 THE DRE : QC837 Modif chargement article TtapinTemp Pb UTCcode = "00"
#
##############################################################



# Declaration des variables





### Declaration de 2 variables contenant le nom de fichier.
### Leur utilisation pour repondre au probleme part du postulat
### que les chaine de caracteres sont persistantes (Confirme par C Baillif le 10/10/07)
### Variable destinee a memoriser s'il y a eu rupture de nom de fichier (donc de lot)
### lors de la reception du Ttapin10 precedent
### "0" -> il faut comptabiliser les Ttapin12 et Ttapin14 qui suivent
### "N" -> il ne faut pas les comptabiliser
### Variable local pour r?cup?rer l'Id du CRAE

# QC 367

#29/03/2011 QC837 THE DRE : Modif chargement article TtapinTemp Pb UTCcode = "00"

# Initialisation des variables
# TT0053
pt_casart_840000854="Ttapinxx_allocation_memoire_augmentee"
pt_TtNbRecored_840000854 ="TtNbRecored_allocation_memoire_augmentee"
pt_TtCharge_out_840000854 ="1234567890123_allocation_memoire_augmentee"
pt_TtCharge_in_840000854 ="2345678901_allocation_memoire_augmentee"
pt_TtNbRecoredAdj_840000854 ="3456789_allocation_memoire_augmentee"
pt_TtChargeAdj_840000854 ="45678901234567_allocation_memoire_augmentee"
pt_DateArt_840000854 ="070425131711_allocation_memoire_augmentee"
pt_DateDebut_840000854 ="070314153014_allocation_memoire_augmentee"
pt_DateFin_840000854 ="070509163715_allocation_memoire_augmentee"
pt_UTCOffCode_840000854 ="CD_allocation_memoire_augmentee"
pt_UTCOffCodeArt_840000854="AR_allocation_memoire_augmentee"
pt_UTCOffTime_840000854 = "+HHMMS_allocation_memoire_augmentee"

pt_FileNameMem_840000854 ="pt_FileNameMem12345_allocation_memoire_augmentee"
pt_FileNameTemp_840000854="pt_FileNameTemp1234_allocation_memoire_augmentee"

pt_Var_840000854="01_allocation_memoire_augmentee"
pt_Var2_840000854="02_allocation_memoire_augmentee"
pt_Var3_840000854="03_allocation_memoire_augmentee"
# /TT0053

pt_TempUTCOffCode_840000854="pt_TempUTCOffCode"
pt_TempMap_840000854="pt_TempMap"





trace("[IECC] : Debut pcode Ttapin90")

#################################################
# fin execution pcode en fonction de g_iposinlot
SI (g_iposinlot == 2)
	ALORS
	trace("CRAE-Traitement d un article de l'enpied du lot")
	RETOUR OK_840000854
FINSI

SI (g_iposinlot == 3)
	ALORS
	RETOUR OK_840000854
FINSI

SI ((g_iposinlot < 0)) ||(g_iposinlot > 3)
	ALORS
	trace("ERREUR de valorisation de la variable g_iposinlot")
	RETOUR NOK_840000854
FINSI
# /fin execution pcode en fonction de g_iposinlot
#################################################

SI (i_get_art_name (g_iartin, pt_casart_840000854))
	ALORS
	trace("i_get_art_name : erreur de lecture du cas d'article")
	RETOUR NOK_840000854
FINSI
trace2("## i_get_art_name == <%s>%s", pt_casart_840000854, EMPTY_840000854)
SI (g_iposinlot == 0)
	ALORS
	i_strcpy(pt_Var_840000854,XX_840000854)
	i_strcpy(pt_Var2_840000854,XX_840000854)
	i_strcpy(pt_Var3_840000854,XX_840000854)
	trace("CRAE-Traitement d un article de l'entete du lot")
	RETOUR OK_840000854
FINSI
trace2("i_get_art_name : recuperation du cas d article <%s> du corps OK",pt_casart_840000854,0)
# Traitement des article du corps du lot : Ttapinxx

SI (g_iposinlot == 1)
	ALORS
	trace("CRAE-Traitement d un article du corps du lot")

	### On extrait le NameOfFile de l'artin
	erreur_840000854 = i_get_field_str(g_iartin, NameOfFile_840000854, pt_FileNameTemp_840000854)

	#########################  Article Header  ####################################
	############### TAPIN 10 ################
	SI ( i_strcmp(pt_casart_840000854, Ttapin10_840000854)==0 )
		ALORS
		### Si pt_NameOfFile est egal a au nom de fichier de l'artin, alors, il n'y a pas de rupture de lot
		SI ( i_strcmp(pt_FileNameMem_840000854, pt_FileNameTemp_840000854) != 0)
			ALORS
			### Il faut compabiliser les Ttapin 12 et 14 qui suivent meme si IdCrae ==0
			trace2("Rupture de lot  : <%s> <%s>", pt_Var2_840000854, pt_Var_840000854)
			i_strcpy(pt_Var_840000854,XX_840000854)
			i_strcpy(pt_Var2_840000854,XX_840000854)
			i_strcpy(pt_Var3_840000854,XX_840000854)

			### recuperation du NameOfFile de l'artin
			i_strcpy(pt_FileNameMem_840000854, pt_FileNameTemp_840000854)

			trace2("i_get_art_name : recuperation du cas d article <%s> du corps OK",pt_casart_840000854,0)
			### Creation de l'article g_iartout et initialisation
			erreur_840000854 = i_cree_art(Ttapin90_iecc_840000854,g_iartout)

			#### Mise a jour du champ RecordType
			erreur_840000854 = i_memcpy_art_field(g_iartout, RecordType_840000854, DEF90_840000854, 2)

			### Initialisation dates et unused avec des espaces
# TT 0042
			erreur_840000854 = i_memcpy_art_field(g_iartout, FirstCallDate_840000854, "            ", 12)
			erreur_840000854 = i_memcpy_art_field(g_iartout, UTCFirstTime_840000854, "     ", 5)
			erreur_840000854 = i_memcpy_art_field(g_iartout, LastCallDate_840000854, "            ", 12)
			erreur_840000854 = i_memcpy_art_field(g_iartout, UTCLastTime_840000854, "     ", 5)
			erreur_840000854 = i_memcpy_art_field(g_iartout, Unused_840000854, "                                                                   ", 67)
# /TT 0042

			### Initialisation des champs TotalCharge, TotalTollValue et TotalCAMELFeeVal
# TT 0042
			erreur_840000854 = i_memcpy_art_field(g_iartout, TotalCharge_840000854, DEF000000000000_840000854, 12)
# /TT 0042
			erreur_840000854 = i_memcpy_art_field(g_iartout, TotalTollValue_840000854, DEF000000000000_840000854, 12)
			erreur_840000854 = i_memcpy_art_field(g_iartout, TotCAMELFeeVal_840000854, DEF000000000000_840000854, 12)

# TT 61
			### init champ TotalNbRecord
			erreur_840000854 = i_memcpy_art_field(g_iartout, TotalNbRecord_840000854, "000000", 6)
# /TT 61

			### creation des 3 articles de sauvegarde des UTCTimeOffsetCode
			erreur_840000854 = i_cree_art(Ttapin14_iecc_840000854,g_iartout2)
			erreur_840000854= i_memcpy_art_field(g_iartout2, RecordType_840000854, DEF00_840000854, 2)
			erreur_840000854 = i_cree_art(Ttapin14_iecc_840000854,g_iartout3)
			erreur_840000854= i_memcpy_art_field(g_iartout3, RecordType_840000854, DEF00_840000854, 2)
			erreur_840000854 = i_cree_art(Ttapin14_iecc_840000854,g_iartout4)
			erreur_840000854= i_memcpy_art_field(g_iartout4, RecordType_840000854, DEF00_840000854, 2)

		SINON
			### Initialisation des variables ? NN
			i_strcpy(pt_Var_840000854,NN_840000854)
			i_strcpy(pt_Var2_840000854,NN_840000854)
		FINSI
		### Fin sur la rupture de nom de fichier

		### Mise a jour des champs Sender et Recipient
		erreur_840000854 = i_memcpy_art_field(g_iartout, Sender_840000854, g_iartin.Sender[],5)
		erreur_840000854 = i_memcpy_art_field(g_iartout, Recipient_840000854, g_iartin.Recipient[],5)

		#### Mise a jour du SequenceNumber
		erreur_840000854 = i_memcpy_art_field(g_iartout, SeqNumber_840000854, g_iartin.FileSeqNumber[],5)

		### Initialisation du champ LastCallDate
		### erreur = i_memcpy_art_field(g_iartout, FirstCallDate, "AAMMJJhhmmss", 12)


	FINSI

	trace2("pt_Var2 : <%s>", pt_Var2_840000854, 0)
	############### TAPIN 12 ################
	SI ( i_strcmp(pt_casart_840000854, Ttapin12_840000854)==0 )
		ALORS
		### Il ne faut pas etre passe dans un article de corps pour pouvoir traiter un Ttapin12
		SI (  i_strcmp(pt_Var2_840000854, XX_840000854)==0 && i_strcmp(pt_Var3_840000854, XX_840000854)==0)
			ALORS
			trace2("i_get_art_name : recuperation du cas d article <%s> du corps OK",pt_casart_840000854,0)

			# Mise a jours du champ TtNbRecored
# TT 60
#						erreur = i_ConvertirChaine(g_iartout.TotalNbRecord[], 6, 3, pt_TtNbRecored, 6, 3)
##          	i_get_sub_str(g_iartout.TotalNbRecord[],0,5, pt_TtNbRecored)
#          	i_get_sub_str(pt_TtNbRecored, 0, 5, pt_TtNbRecored)
			i_get_sub_string(g_iartout.TotalNbRecord[], 0, 5, pt_TtNbRecored_840000854)
# /TT 60
			TtNbRecored_840000854 = Conv_CHAINE_ENTIER_840000677(pt_TtNbRecored_840000854)
			TtNbRecored_840000854 = TtNbRecored_840000854 +1
			erreur_840000854 = i_EntierToString(TtNbRecored_840000854, pt_TtNbRecored_840000854, 6)
			pt_TtNbRecoredAdj_840000854= Ajuster_taille_string_840000677(pt_TtNbRecored_840000854,6)
			erreur_840000854 = i_memcpy_art_field(g_iartout,TotalNbRecord_840000854,pt_TtNbRecoredAdj_840000854,6)


			# Aucune mise a jour de g_iartout prevue par cet article
			### SINON
			### Si IdCrae == 0 alors, on est dans le cas d'un Ttapin12 issu du Ttapin10
			### On ne comptabilise que les premiers (supture de fichier)
		FINSI
		i_strcpy(pt_Var2_840000854,NN_840000854)
	FINSI

	trace2("pt_Var : <%s>", pt_Var_840000854, 0)
	############### TAPIN 14 ################
	SI ( i_strcmp(pt_casart_840000854, Ttapin14_840000854)==0 )
		ALORS
		### Il ne faut pas etre passe dans un article de corps pour pouvoir traiter un Ttapin14
		SI ( i_strcmp(pt_Var_840000854, XX_840000854)==0 && i_strcmp(pt_Var3_840000854, XX_840000854)==0 )
			ALORS
			trace2("i_get_art_name : recuperation du cas d article <%s> du corps OK",pt_casart_840000854,0)
			# Mise a jours du champ TtNbRecored
# TT 60
#						erreur = i_ConvertirChaine(g_iartout.TotalNbRecord[], 6, 3, pt_TtNbRecored, 6, 3)
##          	i_get_sub_str(g_iartout.TotalNbRecord[],0,5, pt_TtNbRecored)
#						i_get_sub_str(pt_TtNbRecored, 0, 5, pt_TtNbRecored)
			i_get_sub_string(g_iartout.TotalNbRecord[], 0, 5, pt_TtNbRecored_840000854)
# /TT 60
			TtNbRecored_840000854 = Conv_CHAINE_ENTIER_840000677(pt_TtNbRecored_840000854)
			TtNbRecored_840000854 = TtNbRecored_840000854 +1
			erreur_840000854 = i_EntierToString(TtNbRecored_840000854, pt_TtNbRecored_840000854, 6)
			pt_TtNbRecoredAdj_840000854= Ajuster_taille_string_840000677(pt_TtNbRecored_840000854,6)
			erreur_840000854 = i_memcpy_art_field(g_iartout,TotalNbRecord_840000854,pt_TtNbRecoredAdj_840000854,6)
			trace("## manips Ttapin14")
			### Sauvegarde des articles dans des g_iartout 2, 3 et 4
			SI(i_strplcmp(g_iartout2.RecordType[], DEF00_840000854, 0, 2) ==0 )
				ALORS
# QC 367 : creation article temporaire pour sauvegarde mapping
				erreur_840000854 = i_cree_art(TtapinTemp_840000854, g_iartout5)
# Enrichissement avec les valeurs du 1er Tapin14
				indice_840000854 = 0
				flag_840000854 = 0
				map_840000854 = 0x60

				erreur_840000854 = i_dup_art_id(g_iartin, g_iartout2)

				POINT INIT_TEMP1


				SI (indice_840000854 < 15 )
					ALORS
					erreur_840000854 = i_get_art_str(g_iartin, $Ttapin14::UTCOfTimeCode1 + (indice_840000854 * 2) +1 , pt_UTCOffTime_840000854)
					SI (i_strcmp(pt_UTCOffTime_840000854, "     ") != 0)
						ALORS
						erreur_840000854 = i_get_art_str(g_iartin, $Ttapin14::UTCOfTimeCode1 + (indice_840000854 * 2) , pt_UTCOffCode_840000854)

# 29/03/2011 QC837 THE DRE : Modif chargement article TtapinTemp Pb UTCcode = "00"
#						erreur = i_set_art_str(g_iartout5, $TtapinTemp::CODE0 + (indice * 2), pt_UTCOffCode)
						VAL_840000854 = i_strtab( pt_UTCOffCode_840000854, 0 )
						erreur_840000854 = i_memset_field_n(g_iartout5,$TtapinTemp::CODE0 + (indice_840000854 * 2), VAL_840000854)
# 29/03/2011 QC837 THE DRE : FIN Modif 

						SI ( flag_840000854 == 0 )
							ALORS
							map_840000854 = map_840000854 - 0x20 + 1
							flag_840000854 = 1
						SINON
							map_840000854 = map_840000854 + 0x20
							flag_840000854 = 0
						FINSI

						erreur_840000854 = i_memset_field_n(g_iartin,$Ttapin14::UTCOfTimeCode1 + (indice_840000854 * 2),map_840000854)
						erreur_840000854 = i_memset_field_n(g_iartout5,$TtapinTemp::CODE0 + (indice_840000854 * 2) + 1,map_840000854)
						indice_840000854 = indice_840000854 + 1

						SAUT INIT_TEMP1
					FINSI
				FINSI
				erreur_840000854 = i_set_art_field(g_iartout5, $TtapinTemp::NBCHAMP, indice_840000854)
# QC 367 : fin enrichissement avec 1er Tapin14

			SINON
				SI(i_strplcmp(g_iartout3.RecordType[], DEF00_840000854, 0, 2) ==0 )
					ALORS
# Enrichissement avec les valeurs du 2eme Tapin14
					indice_840000854 = 0
					flag_840000854 = i_get_art_field(g_iartout5, $TtapinTemp::NBCHAMP) % 2
					map_840000854 = 0x48

# QC 367 : debut enrichissement avec 2eme Tapin14
					erreur_840000854 = i_dup_art_id(g_iartin, g_iartout3)

					POINT INIT_TEMP2


					SI (indice_840000854 < 15 )
						ALORS
						erreur_840000854 = i_get_art_str(g_iartin, $Ttapin14::UTCOfTimeCode1 + (indice_840000854 * 2) +1 , pt_UTCOffTime_840000854)
						SI (i_strcmp(pt_UTCOffTime_840000854, "     ") != 0)
							ALORS
							erreur_840000854 = i_get_art_str(g_iartin, $Ttapin14::UTCOfTimeCode1 + (indice_840000854 * 2) , pt_UTCOffCode_840000854)

# 29/03/2011 QC837 THE DRE : Modif chargement article TtapinTemp Pb UTCcode = "00"
#					  		erreur = i_set_art_str(g_iartout5, $TtapinTemp::CODE0 + ((indice + 15) * 2), pt_UTCOffCode)
							VAL_840000854 = i_strtab( pt_UTCOffCode_840000854, 0 )
							erreur_840000854 = i_memset_field_n(g_iartout5,$TtapinTemp::CODE0 + ((indice_840000854 + 15) * 2), VAL_840000854)
# 29/03/2011 QC837 THE DRE : FIN Modif 

							SI ( flag_840000854 == 0 )
								ALORS
								map_840000854 = map_840000854 - 0x20 + 1
								flag_840000854 = 1
							SINON
								map_840000854 = map_840000854 + 0x20
								flag_840000854 = 0
							FINSI

							erreur_840000854 = i_memset_field_n(g_iartin,$Ttapin14::UTCOfTimeCode1 + (indice_840000854 * 2),map_840000854)
							erreur_840000854 = i_memset_field_n(g_iartout5,$TtapinTemp::CODE0 + ((indice_840000854 + 15) * 2) + 1,map_840000854)
							indice_840000854 = indice_840000854 + 1

							SAUT INIT_TEMP2
						FINSI
					FINSI

					erreur_840000854 = i_set_art_field(g_iartout5, $TtapinTemp::NBCHAMP, indice_840000854 + 15)
# QC 367 : fin enrichissement avec 2eme Tapin14



				SINON

# Enrichissement avec les valeurs du 3eme Tapin14
					indice_840000854 = 0
					flag_840000854 = i_get_art_field(g_iartout5, $TtapinTemp::NBCHAMP) % 2
					map_840000854 = 0x6F

# QC 367 : debut enrichissement avec 3eme Tapin14
					erreur_840000854 = i_dup_art_id(g_iartin, g_iartout4)

					POINT INIT_TEMP3


					SI (indice_840000854 < 15 )
						ALORS
						erreur_840000854 = i_get_art_str(g_iartin, $Ttapin14::UTCOfTimeCode1 + (indice_840000854 * 2) +1 , pt_UTCOffTime_840000854)
						SI (i_strcmp(pt_UTCOffTime_840000854, "     ") != 0)
							ALORS
							erreur_840000854 = i_get_art_str(g_iartin, $Ttapin14::UTCOfTimeCode1 + (indice_840000854 * 2) , pt_UTCOffCode_840000854)

# 29/03/2011 QC837 THE DRE : Modif chargement article TtapinTemp Pb UTCcode = "00"
#							erreur = i_set_art_str(g_iartout5, $TtapinTemp::CODE0 + ((indice + 30) * 2), pt_UTCOffCode)
							VAL_840000854 = i_strtab( pt_UTCOffCode_840000854, 0 )
							erreur_840000854 = i_memset_field_n(g_iartout5,$TtapinTemp::CODE0 + ((indice_840000854 + 30) * 2), VAL_840000854)
# 29/03/2011 QC837 THE DRE : FIN Modif 

							SI ( flag_840000854 == 0 )
								ALORS
								map_840000854 = map_840000854 - 0x20 + 1
								flag_840000854 = 1
							SINON
								map_840000854 = map_840000854 + 0x20
								flag_840000854 = 0
							FINSI

							erreur_840000854 = i_memset_field_n(g_iartin,$Ttapin14::UTCOfTimeCode1 + (indice_840000854 * 2),map_840000854)
							erreur_840000854 = i_memset_field_n(g_iartout5,$TtapinTemp::CODE0 + ((indice_840000854 + 30) * 2) + 1,map_840000854)
							indice_840000854 = indice_840000854 + 1

							SAUT INIT_TEMP3
						FINSI
					FINSI
					erreur_840000854 = i_set_art_field(g_iartout5, $TtapinTemp::NBCHAMP, indice_840000854 + 30)
# QC 367 : fin enrichissement avec 3eme Tapin14
					i_strcpy(pt_Var_840000854,NN_840000854)

				FINSI
			FINSI
			### SINON
			### Si IdCrae == 0 alors, on est dans le cas d'un Ttapin14 issu du Ttapin10
			### On ne comptabilise que les premiers (supture de fichier)
		FINSI
# QC 367 : inhibation a tort du traitement du 2eme Ttapin14 => ligne remontee pour etre active apres le traitement du 3eme Ttapin14
#		i_strcpy(pt_Var,NN)


#
	FINSI

	#########################  TRAITEMENT DES CDRS  ####################################
	############### TAPIN 20 ,30, 40 80, ################

	SI ( (i_strcmp(pt_casart_840000854, Ttapin20_840000854)==0 ) || (i_strcmp(pt_casart_840000854, Ttapin30_840000854)==0 )
		|| (i_strcmp(pt_casart_840000854, Ttapin40_840000854)==0 ) || (i_strcmp(pt_casart_840000854, Ttapin80_840000854)==0 )
		)

		ALORS

		trace2("i_get_art_name : recuperation du cas d article <%s> du corps OK",pt_casart_840000854,0)

		## TT00036 : Un article de corps d?sactive la prise en compte des 12 et 14
		i_strcpy(pt_Var3_840000854,NN_840000854)

		# Mise a jours du champ TtNbRecored
# TT 60
#						erreur = i_ConvertirChaine(g_iartout.TotalNbRecord[], 6, 3, pt_TtNbRecored, 6, 3)
##          	i_get_sub_str(g_iartout.TotalNbRecord[],0,5, pt_TtNbRecored)
#						i_get_sub_str(pt_TtNbRecored, 0, 5, pt_TtNbRecored)
		i_get_sub_string(g_iartout.TotalNbRecord[], 0, 5, pt_TtNbRecored_840000854)
# /TT 60
		TtNbRecored_840000854 = Conv_CHAINE_ENTIER_840000677(pt_TtNbRecored_840000854)
		TtNbRecored_840000854 = TtNbRecored_840000854 +1
		erreur_840000854 = i_EntierToString(TtNbRecored_840000854, pt_TtNbRecored_840000854, 6)
		pt_TtNbRecoredAdj_840000854= Ajuster_taille_string_840000677(pt_TtNbRecored_840000854,6)
		erreur_840000854 = i_memcpy_art_field(g_iartout,TotalNbRecord_840000854,pt_TtNbRecoredAdj_840000854,6)

		# Mise a jour du champ  TotalCharge
# TT 60
#						erreur = i_ConvertirChaine(g_iartin.Charge[], 9, 3, pt_TtCharge_in, 9, 3)
##          i_get_sub_str(g_iartin.Charge[],0,8, pt_TtCharge_in)
#						i_get_sub_str(pt_TtCharge_in, 0, 8, pt_TtCharge_in)
		i_get_sub_string(g_iartin.Charge[], 0, 8, pt_TtCharge_in_840000854)
# /TT 60
		TtCharge_in_840000854 = Conv_CHAINE_ENTIER_840000677(pt_TtCharge_in_840000854)

# TT 60
#						erreur = i_ConvertirChaine(g_iartout.TotalCharge[], 12, 3, pt_TtCharge_out, 12, 3)
##          i_get_sub_str(g_iartout.TotalCharge[],0,11, pt_TtCharge_out)
#						i_get_sub_str(pt_TtCharge_out, 0, 11, pt_TtCharge_out)
		i_get_sub_string(g_iartout.TotalCharge[], 0, 11, pt_TtCharge_out_840000854)
# /TT 60
		TtCharge_out_840000854 = Conv_CHAINE_ENTIER_840000677(pt_TtCharge_out_840000854)

		TtCharge_out_840000854 = TtCharge_out_840000854 + TtCharge_in_840000854
		erreur_840000854 = i_EntierToString(TtCharge_out_840000854, pt_TtCharge_out_840000854, 12)
		pt_TtChargeAdj_840000854= Ajuster_taille_string_840000677(pt_TtCharge_out_840000854,12)
		erreur_840000854= i_memcpy_art_field(g_iartout,TotalCharge_840000854, pt_TtChargeAdj_840000854,12)
		trace("## Manips article du corps du lot")
		# Mise a jour des dates debut et fin de communication
		#
		SI((i_strcmp(pt_casart_840000854, Ttapin20_840000854)==0 ) || (i_strcmp(pt_casart_840000854, Ttapin30_840000854)==0 ))
			ALORS
# TT 60
#						erreur = i_ConvertirChaine(g_iartin.CharginDate[], 12, 3, pt_DateArt, 12, 3)
##               i_get_sub_str(g_iartin.CharginDate[], 0, 11, pt_DateArt)
#						i_get_sub_str(pt_DateArt, 0, 11, pt_DateArt)
			i_get_sub_string(g_iartin.CharginDate[], 0, 11, pt_DateArt_840000854)
# /TT 60
		SINON
			SI(i_strcmp(pt_casart_840000854, Ttapin40_840000854)==0 )
				ALORS
# TT 60
#						erreur = i_ConvertirChaine(g_iartin.CStartDateTime[], 12, 3, pt_DateArt, 12, 3)
##                                     i_get_sub_str(g_iartin.CStartDateTime[], 0, 11, pt_DateArt)
#						i_get_sub_str(pt_DateArt, 0, 11, pt_DateArt)
				i_get_sub_string(g_iartin.CStartDateTime[], 0, 11, pt_DateArt_840000854)
# /TT 60
			SINON
# TT 60
#						erreur = i_ConvertirChaine(g_iartin.ChgStartDateTim[], 12, 3, pt_DateArt, 12, 3)
##                      i_get_sub_str(g_iartin.ChgStartDateTim[], 0, 11, pt_DateArt)
#						i_get_sub_str(pt_DateArt, 0, 11, pt_DateArt)
				i_get_sub_string(g_iartin.ChgStartDateTim[], 0, 11, pt_DateArt_840000854)
# /TT 60
			FINSI
		FINSI


# TT 60
#						erreur = i_ConvertirChaine(g_iartout.FirstCallDate[], 12, 3, pt_DateDebut, 12, 3)
##          i_get_sub_str(g_iartout.FirstCallDate[], 0, 11, pt_DateDebut)
#						i_get_sub_str(pt_DateDebut, 0, 11, pt_DateDebut)
		i_get_sub_string(g_iartout.FirstCallDate[], 0, 11, pt_DateDebut_840000854)

#						erreur = i_ConvertirChaine(g_iartout.LastCallDate[], 12, 3, pt_DateFin, 12, 3)
##          i_get_sub_str(g_iartout.LastCallDate[], 0, 11, pt_DateFin)
#						i_get_sub_str(pt_DateFin, 0, 11, pt_DateFin)
		i_get_sub_string(g_iartout.LastCallDate[], 0, 11, pt_DateFin_840000854)
# /TT 60

		SI( (i_strcmp(pt_DateArt_840000854, pt_DateDebut_840000854) <0) || ((i_strcmp(EMPTY_840000854, pt_DateDebut_840000854)==0)) )
			ALORS
			erreur_840000854 = i_memcpy_art_field(g_iartout,FirstCallDate_840000854, pt_DateArt_840000854, i_strlen(pt_DateArt_840000854))
			### Recherche de l'UTCOffsetTime correspondant
			SI(i_strcmp(pt_casart_840000854, Ttapin80_840000854)==0)
				ALORS
				erreur_840000854 = i_get_field_str(g_iartin,UTCTimeOffCode_840000854, pt_UTCOffCodeArt_840000854)
			SINON
				erreur_840000854 = i_get_field_str(g_iartin,UTCTimeOff_840000854, pt_UTCOffCodeArt_840000854)
			FINSI

			### Recheche de l'UTC dans le 1er TAPIN14
			SI(i_strplcmp(g_iartout2.RecordType[], DEF14_840000854, 0, 2) ==0 )
				ALORS
				indice_840000854 = 1
				POINT DECALAGE_DEBUT2

				erreur_840000854 = i_get_art_str(g_iartout2, indice_840000854 , pt_UTCOffCode_840000854)
				SI(i_strcmp(pt_UTCOffCode_840000854, pt_UTCOffCodeArt_840000854)==0)
					ALORS
					erreur_840000854 = i_get_art_str(g_iartout2, indice_840000854+1 , pt_UTCOffTime_840000854)
					erreur_840000854 = i_memcpy_art_field(g_iartout,UTCFirstTime_840000854, pt_UTCOffTime_840000854, 5)
					SAUT FIN_DECALAGE_DEBUT
				FINSI
				indice_840000854 = indice_840000854 + 2
				SI(indice_840000854 < 30 )
					ALORS
					SAUT DECALAGE_DEBUT2
				FINSI
			FINSI

			### Recheche de l'UTC dans le 2 eme TAPIN14
			SI(i_strplcmp(g_iartout3.RecordType[], DEF14_840000854, 0, 2) ==0 )
				ALORS
				indice_840000854 = 1
				POINT DECALAGE_DEBUT3

				erreur_840000854 = i_get_art_str(g_iartout3, indice_840000854 , pt_UTCOffCode_840000854)
				SI(i_strcmp(pt_UTCOffCode_840000854, pt_UTCOffCodeArt_840000854)==0)
					ALORS
					erreur_840000854 = i_get_art_str(g_iartout3, indice_840000854+1 , pt_UTCOffTime_840000854)
					erreur_840000854 = i_memcpy_art_field(g_iartout,UTCFirstTime_840000854, pt_UTCOffTime_840000854, 5)
					SAUT FIN_DECALAGE_DEBUT
				FINSI
				indice_840000854 = indice_840000854 + 2
				SI(indice_840000854 < 30 )
					ALORS
					SAUT DECALAGE_DEBUT3
				FINSI
			FINSI

			### Recheche de l'UTC dans le 3 eme TAPIN14
			SI(i_strplcmp(g_iartout3.RecordType[], DEF14_840000854, 0, 2) ==0 )
				ALORS
				indice_840000854 = 1
				POINT DECALAGE_DEBUT4

				erreur_840000854 = i_get_art_str(g_iartout4, indice_840000854 , pt_UTCOffCode_840000854)
				SI(i_strcmp(pt_UTCOffCode_840000854, pt_UTCOffCodeArt_840000854)==0)
					ALORS
					erreur_840000854 = i_get_art_str(g_iartout4, indice_840000854+1 , pt_UTCOffTime_840000854)
					erreur_840000854 = i_memcpy_art_field(g_iartout,UTCFirstTime_840000854, pt_UTCOffTime_840000854, 5)
					SAUT FIN_DECALAGE_DEBUT
				FINSI
				indice_840000854 = indice_840000854 + 2
				SI(indice_840000854 < 30 )
					ALORS
					SAUT DECALAGE_DEBUT4
				FINSI
			FINSI

		FINSI
		trace("## FirstTime")
		POINT FIN_DECALAGE_DEBUT

# QC 367 : deplacement du bloc
### Recherche de l'UTCOffsetTime correspondant
		SI(i_strcmp(pt_casart_840000854, Ttapin80_840000854)==0)
			ALORS
			erreur_840000854 = i_get_field_str(g_iartin,UTCTimeOffCode_840000854, pt_UTCOffCodeArt_840000854)
		SINON
			erreur_840000854 = i_get_field_str(g_iartin,UTCTimeOff_840000854, pt_UTCOffCodeArt_840000854)
		FINSI
# QC 367 : fin deplacement



		#########################################
		# Mise a jour de la date Fin

		SI(i_strcmp(pt_DateArt_840000854, pt_DateFin_840000854)> 0)
			ALORS
			erreur_840000854 = i_memcpy_art_field(g_iartout,LastCallDate_840000854, pt_DateArt_840000854, i_strlen(pt_DateArt_840000854))
# QC 367 : deplacement du bloc plus haut
#                ### Recherche de l'UTCOffsetTime correspondant
#                SI(i_strcmp(pt_casart, Ttapin80)==0)
#                ALORS
#                      erreur = i_get_field_str(g_iartin,UTCTimeOffCode, pt_UTCOffCodeArt)
#                SINON
#                      erreur = i_get_field_str(g_iartin,UTCTimeOff, pt_UTCOffCodeArt)
#                FINSI
# QC 367 : fin deplacement du bloc plus haut
			### Recheche de l'UTC dans le 1er TAPIN14
			SI(i_strplcmp(g_iartout2.RecordType[], DEF14_840000854, 0, 2) ==0 )
				ALORS
				indice_840000854 = 1
				POINT DECALAGE_FIN2

				erreur_840000854 = i_get_art_str(g_iartout2, indice_840000854 , pt_UTCOffCode_840000854)
				SI(i_strcmp(pt_UTCOffCode_840000854, pt_UTCOffCodeArt_840000854)==0)
					ALORS
					erreur_840000854 = i_get_art_str(g_iartout2, indice_840000854+1 , pt_UTCOffTime_840000854)
					erreur_840000854 = i_memcpy_art_field(g_iartout,UTCLastTime_840000854, pt_UTCOffTime_840000854, 5)
					SAUT FIN_DECALAGE_FIN
				FINSI
				indice_840000854 = indice_840000854 + 2
				SI(indice_840000854 < 30 )
					ALORS
					SAUT DECALAGE_FIN2
				FINSI
			FINSI

			### Recheche de l'UTC dans le 2 eme TAPIN14
			SI(i_strplcmp(g_iartout3.RecordType[], DEF14_840000854, 0, 2) ==0 )
				ALORS
				indice_840000854 = 1
				POINT DECALAGE_FIN3

				erreur_840000854 = i_get_art_str(g_iartout3, indice_840000854 , pt_UTCOffCode_840000854)
				SI(i_strcmp(pt_UTCOffCode_840000854, pt_UTCOffCodeArt_840000854)==0)
					ALORS
					erreur_840000854 = i_get_art_str(g_iartout3, indice_840000854+1 , pt_UTCOffTime_840000854)
					erreur_840000854 = i_memcpy_art_field(g_iartout,UTCLastTime_840000854, pt_UTCOffTime_840000854, 5)
					SAUT FIN_DECALAGE_FIN
				FINSI
				indice_840000854 = indice_840000854 + 2
				SI(indice_840000854 < 30 )
					ALORS
					SAUT DECALAGE_FIN3
				FINSI
			FINSI

			### Recheche de l'UTC dans le 3 eme TAPIN14
			SI(i_strplcmp(g_iartout3.RecordType[], DEF14_840000854, 0, 2) ==0 )
				ALORS
				indice_840000854 = 1
				POINT DECALAGE_FIN4

				erreur_840000854 = i_get_art_str(g_iartout4, indice_840000854 , pt_UTCOffCode_840000854)
				SI(i_strcmp(pt_UTCOffCode_840000854, pt_UTCOffCodeArt_840000854)==0)
					ALORS
					erreur_840000854 = i_get_art_str(g_iartout4, indice_840000854+1 , pt_UTCOffTime_840000854)
					erreur_840000854 = i_memcpy_art_field(g_iartout,UTCLastTime_840000854, pt_UTCOffTime_840000854, 5)
					SAUT FIN_DECALAGE_FIN
				FINSI
				indice_840000854 = indice_840000854 + 2
				SI(indice_840000854 < 30 )
					ALORS
					SAUT DECALAGE_FIN4
				FINSI
			FINSI
		FINSI
# QC 367 : mise a jour UTCTimeOffCode en fonction du Tapin14
		trace("## LastTime")
		POINT FIN_DECALAGE_FIN

		NBCHAMP_840000854 = i_get_art_field(g_iartout5, $TtapinTemp::NBCHAMP)
		indice_840000854 = 0
#					erreur = i_get_field_str(g_iartin,UTCTimeOffCode, pt_UTCOffCodeArt)

		POINT RECHERCHE_UTCOffCodeArt
		SI (indice_840000854 < NBCHAMP_840000854)
			ALORS
			erreur_840000854 = i_get_art_str(g_iartout5,$TtapinTemp::CODE0 + (indice_840000854 * 2), pt_TempUTCOffCode_840000854)
			SI (i_strcmp(pt_UTCOffCodeArt_840000854, pt_TempUTCOffCode_840000854) == 0)
				ALORS
				erreur_840000854 = i_get_art_str(g_iartout5,$TtapinTemp::CODE0 + (indice_840000854 * 2) + 1, pt_TempMap_840000854)

				SI(i_strcmp(pt_casart_840000854, Ttapin80_840000854)==0)
					ALORS
					erreur_840000854 = i_set_field_str(g_iartin, UTCTimeOffCode_840000854, pt_TempMap_840000854)
				SINON
					erreur_840000854 = i_set_field_str(g_iartin, UTCTimeOff_840000854, pt_TempMap_840000854)
				FINSI
			SINON
				indice_840000854 =indice_840000854 + 1
				SAUT RECHERCHE_UTCOffCodeArt
			FINSI
		FINSI
# QC 367 : fin MAJ

	FINSI
#trace("## LastTime")
#     POINT FIN_DECALAGE_FIN




	############### TAPIN 82 ,84, 86 88, ################
	SI (( i_strcmp(pt_casart_840000854, Ttapin82_840000854)==0 ) || ( i_strcmp(pt_casart_840000854, Ttapin84_840000854)==0 )
		|| ( i_strcmp(pt_casart_840000854, Ttapin86_840000854)==0 ) || ( i_strcmp(pt_casart_840000854, Ttapin88_840000854)==0 )
		)
		ALORS
		trace2("i_get_art_name : recuperation du cas d article <%s> du corps OK",pt_casart_840000854,0)
		## TT00036 : Un article de corps d?sactive la prise en compte des 12 et 14
		i_strcpy(pt_Var3_840000854,NN_840000854)
## ano 3316
		# Mise a jours du champ TtNbRecored
# TT 60
#						erreur = i_ConvertirChaine(g_iartout.TotalNbRecord[], 6, 3, pt_TtNbRecored, 6, 3)
##			i_get_sub_str(g_iartout.TotalNbRecord[],0,5, pt_TtNbRecored)
#						i_get_sub_str(pt_TtNbRecored, 0, 5, pt_TtNbRecored)
		i_get_sub_string(g_iartout.TotalNbRecord[], 0, 5, pt_TtNbRecored_840000854)
# /TT 60
		TtNbRecored_840000854 = Conv_CHAINE_ENTIER_840000677(pt_TtNbRecored_840000854)
		TtNbRecored_840000854 = TtNbRecored_840000854 +1
		erreur_840000854 = i_EntierToString(TtNbRecored_840000854, pt_TtNbRecored_840000854, 6)
		pt_TtNbRecoredAdj_840000854= Ajuster_taille_string_840000677(pt_TtNbRecored_840000854,6)
		erreur_840000854 = i_memcpy_art_field(g_iartout,TotalNbRecord_840000854,pt_TtNbRecoredAdj_840000854,6)
## /ano 3316

# QC 367 : mise a jour UTCTimeOffCode en fonction du Tapin14
		SI ( i_strcmp(pt_casart_840000854, Ttapin88_840000854)==0 )
			ALORS

			NBCHAMP_840000854 = i_get_art_field(g_iartout5, $TtapinTemp::NBCHAMP)
			indice_840000854 = 0
			erreur_840000854 = i_get_field_str(g_iartin,"UTC_Time_Off_1", pt_UTCOffCodeArt_840000854)

			POINT RECHERCHE_UTCOffCodeArt88
			SI (indice_840000854 < NBCHAMP_840000854)
				ALORS
				erreur_840000854 = i_get_art_str(g_iartout5,$TtapinTemp::CODE0 + (indice_840000854 * 2), pt_TempUTCOffCode_840000854)
				SI (i_strcmp(pt_UTCOffCodeArt_840000854, pt_TempUTCOffCode_840000854) == 0)
					ALORS
					erreur_840000854 = i_get_art_str(g_iartout5,$TtapinTemp::CODE0 + (indice_840000854 * 2) + 1, pt_TempMap_840000854)
					erreur_840000854 = i_set_field_str(g_iartin, "UTC_Time_Off_1", pt_TempMap_840000854)
				SINON
					indice_840000854 =indice_840000854 + 1
					SAUT RECHERCHE_UTCOffCodeArt88
				FINSI
			FINSI
		FINSI
# QC 367 : fin MAJ


	FINSI
	RETOUR OK_840000854
FINSI

# -----  Fin pcode Trailer  --------------
