# Fonction PCODE ID = 860026233
REGISTRE ENTIER ic_sortie
REGISTRE ARTOBJ article
REGISTRE ENTIER ic_entree
###########################################################################
#             	       	   Fonction ConvTransgrp                          #  
#                                                                         #
# 		FONCTION DE CONVERSION TRANSGROUPE POUR LE CHAMP          #
# 		          DEDE_NUM DE g_iartin :                          # 
#                                                                         #
###########################################################################
# nom du fichier: ConvTransgrp.src                                        #
#									  #
# ENTIER retour = ConvTransgrp(  ENTIER indice du champ en entree         #
#				 ARTOBJ artobj de sortie                  #
#                                ENTIER indice du champ en sortie  )      #
# retour=0  =>  OK 							  #
# retour=1  =>  NOK							  #
#									  #
# Plages des valeurs de DEDE_NUM:					  #
# 									  #
#			****** => *31*#9  DEDE_NUM = DEDE_NUM             #
# 			*31*0* => *31*09                                  #
# 			*31*10 => *31*99  DEDE_NUM = DEDE_NUM             #
#			*31#** => #99999  DEDE_NUM = DEDE_NUM             #
#			0***** => 0*31*#                                  #
#			0*31*0                                            #
#			0*31*1 => 0*31*9  DEDE_NUM = DEDE_NUM             #
#			0*31#* => 03172#  DEDE_NUM = DEDE_NUM(2,n)	  #
#			0*31#* => 03651#  DEDE_NUM = DEDE_NUM(2,n)        #
#			031720            DEDE_NUM = 3172+DEDE_NUM(7,n)   #
#			036510            DEDE_NUM = 3651+DEDE_NUM(7,n)   #
#			036511 => 036519  DEDE_NUM = DEDE_NUM             #
#			031721 => 031729  DEDE_NUM = DEDE_NUM             #
#			03652* => 099999                                  #
#			1***** => 999999  DEDE_NUM = DEDE_NUM             #
#			                                                  #
# Creation: LRA - 28/05/2001                                              #
#									  # 
#	    LRA - 25/07/2001						  #    
#           Ajout de la transformation des caracteres alphanumeriques     #
#	    A, B, C => A, *, #						  #
#									  #	
# Modif.  : LRA - 05/02/2002 FOEX341					  #
# 17/05/2013 DRE G4R3 lot2 + 19/06/2013 G4R3 QC731		  	  #
# 		   		Plage  0*31#* => 03172#			  #
#      				Cas    031720 		  		  #
#			     	Plage 031721 => 031729			  #
###########################################################################


#---------------------------------------------------------------------------
# CONSTANTES LOCALES
#---------------------------------------------------------------------------

DEFINITION	 OK	 0
DEFINITION 	 NOK 	 1

#---------------------------------------------------------------------------
# VARIABLES LOCALES
#---------------------------------------------------------------------------	 	

REGISTRE POINTEUR pt_dede
REGISTRE ENTIER dede0
REGISTRE ENTIER dede1
REGISTRE ENTIER dede2
REGISTRE ENTIER dede3
REGISTRE ENTIER dede4
REGISTRE ENTIER dede5
REGISTRE ENTIER res
REGISTRE ENTIER bornSup
REGISTRE ENTIER bornInf
REGISTRE ENTIER pas_de_modif

#---------------------------------------------------------------------------
# DEBUT DES TRAITEMENTS
#---------------------------------------------------------------------------

#trace("Debut de ConvTransgrp")

# Recuperation de l'artobj

# Allocation
ic_sortie = depilerENTIER()
article = depilerARTOBJ()
ic_entree = depilerENTIER()
pt_dede="01234567890123456789012345612345"

# Recuperation des valeurs de DEDE_NUM
dede0=i_get_art_fieldtab(g_iartin,ic_entree,0)
dede1=i_get_art_fieldtab(g_iartin,ic_entree,1)
dede2=i_get_art_fieldtab(g_iartin,ic_entree,2)
dede3=i_get_art_fieldtab(g_iartin,ic_entree,3)
dede4=i_get_art_fieldtab(g_iartin,ic_entree,4)
dede5=i_get_art_fieldtab(g_iartin,ic_entree,5)

#trace("AVANT =>")
#trace1("dede0=<%d>",dede0)
#trace1("dede1=<%d>",dede1)
#trace1("dede2=<%d>",dede2)
#trace1("dede3=<%d>",dede3)
#trace1("dede4=<%d>",dede4)
#trace1("dede5=<%d>",dede5)

# Initialisations
bornSup=NOK
bornInf=NOK
pas_de_modif=NOK


## Plage *31*0* => *31*09
SI ( (dede0==0xB)&&(dede1==0x3)&&(dede2==0x1)&&(dede3==0xB)&&(dede4==0x0) )
ALORS
	SI ( (dede5==0xB)||(dede5==0xC)||(dede5<=0x9) )
	ALORS
		#res = i_supp_quart_num(ic_entree,4,2,0x0f,g_iartin,g_iartout8)	
		#SI (res!=2)
		res = i_supp_quart_num(ic_entree,4,1,0x0f,g_iartin,g_iartout8)
		SI (res!=1)
		ALORS
#			trace1("Retour i_supp_quart_num: <%d>",res)
			SAUT FONC_NOK
		FINSI				
		SAUT FONC_OK
	FINSI
FINSI
				
## Plage 0***** => 0*31*#
SI ( (dede0==0x0)&&(dede1==0xB) )
ALORS
	SI ( (dede2==0xB)||(dede2==0xC)||(dede2<0x3) )
	ALORS
		#res = i_supp_quart_num(ic_entree,0,2,0x0f,g_iartin,g_iartout8)
		#SI (res!=2)
		res = i_supp_quart_num(ic_entree,0,1,0x0f,g_iartin,g_iartout8)
		SI (res!=1)
		ALORS
#			trace1("Retour i_supp_quart_num: <%d>",res)
			SAUT FONC_NOK
		FINSI				
		SAUT FONC_OK
	FINSI			
					
	# Gestion de la borne sup. uniquement
	SI (dede2==0x3)
	ALORS
		SI ( (dede3==0xB)||(dede3==0xC)||(dede3<0x1) )	
		ALORS
			bornSup=OK
		FINSI						
		SI (dede3==0x1)					
		ALORS
			SI ( (dede4==0xB)&&( (dede5==0xB)||(dede5==0xC) ) )	
			ALORS
				bornSup=OK
			FINSI
		FINSI
	FINSI
	
	SI ( bornSup==OK) 
	ALORS
		#res = i_supp_quart_num(ic_entree,0,2,0x0f,g_iartin,g_iartout8)
		#SI (res!=2)
		res = i_supp_quart_num(ic_entree,0,1,0x0f,g_iartin,g_iartout8)
		SI (res!=1)
		ALORS
#			trace1("Retour i_supp_quart_num: <%d>",res)
			SAUT FONC_NOK
		FINSI				
		SAUT FONC_OK
	FINSI					
FINSI
		
		
## Cas 0*31*0
			
SI ( (dede0==0x0)&&(dede1==0xB)&&(dede2==0x3)&&(dede3==0x1)&&(dede4==0xB)&&(dede5==0x0) )
ALORS
	#res = i_supp_quart_num(ic_entree,5,2,0x0f,g_iartin,g_iartout9)
	#SI (res!=2)
	res = i_supp_quart_num(ic_entree,5,1,0x0f,g_iartin,g_iartout9)
	SI (res!=1)
	ALORS
#		trace1("Retour i_supp_quart_num: <%d>",res)
		SAUT FONC_NOK
	FINSI				

	res = i_supp_quart_num(ic_entree,0,1,0x0f,g_iartout9,g_iartout8)
	SI (res!=1)
	ALORS
#		trace1("Retour i_supp_quart_num: <%d>",res)
		SAUT FONC_NOK
	FINSI			
	SAUT FONC_OK
FINSI
	

#DRE G4R3 lot2
# Plage  0*31#* => 03651#   03172#	
								
SI (dede0==0x0)
ALORS
	SI ( (dede1==0xC)||(dede1<0x3) )
	ALORS
		#res = i_supp_quart_num(ic_entree,0,2,0x0f,g_iartin,g_iartout8)
		#SI (res!=2)
		res = i_supp_quart_num(ic_entree,0,1,0x0f,g_iartin,g_iartout8)
		SI (res!=1)
		ALORS
#			trace1("Retour i_supp_quart_num: <%d>",res)
			SAUT FONC_NOK
		FINSI				
		SAUT FONC_OK
	FINSI
				
	# Gestion de la borne inf.
	SI (dede1==0xB)
	ALORS
		SI ( (dede2>0x3)&&(dede2!=0xB)&&(dede2!=0xC) )
		ALORS
			bornInf=OK
		FINSI
		SI (dede2==0x3)
		ALORS
			SI ( (dede3>0x1)&&(dede3!=0xB)&&(dede3!=0xC) )		
			ALORS
				bornInf=OK	
			FINSI
			SI (dede3==0x1)
			ALORS
				SI ( (dede4>=0x0)&&(dede4!=0xB)&&(dede4!=0xC) )
				ALORS
					bornInf=OK	
				FINSI
				SI (dede4==0xC)			
				ALORS
					SI (dede5>=0x0)
					ALORS
						bornInf=OK	
					FINSI
				FINSI
			FINSI
		FINSI
	FINSI
	
	# gestion de la borne sup.
	SI (dede1==0x3)	
	ALORS
#DRE QC731	SI ( (dede2==0xB)||(dede2==0xC)||(dede2<0x6) )
		SI ( (dede2==0xB)||(dede2==0xC)||(dede2!=0x6 && dede2!=0x1) )
		ALORS
			bornSup=OK
		FINSI
#DRE QC731	SI (dede2==0x6)	
		SI (dede2==0x6 || dede2==0x1)	
		ALORS
#DRE QC731		SI ( (dede3==0xB)||(dede3==0xC)||(dede3<0x5) )
			SI ( (dede3==0xB)||(dede3==0xC)||(dede3!=0x5 && dede3!=0x7) )
			ALORS		
				bornSup=OK	
			FINSI
#DRE QC731		SI (dede3==0x5)
			SI (dede3==0x5 || dede3==0x7)
			ALORS
#DRE QC731			SI ( (dede4==0xB)||(dede4==0xC)||(dede4<0x1) )
				SI ( (dede4==0xB)||(dede4==0xC)||(dede4!=0x1 && dede4!=0x2) )
				ALORS
					bornSup=OK
				FINSI
#DRE QC731			SI (dede4==0x1)
				SI (dede4==0x1 || dede4==0x2)
				ALORS
					SI ( (dede5==0xB)||(dede5==0xC) )
					ALORS
						bornSup=OK
					FINSI
				FINSI
			FINSI
		FINSI
	FINSI
			
	SI ( (bornInf==OK)||(bornSup==OK) )
	ALORS
		#res = i_supp_quart_num(ic_entree,0,2,0x0f,g_iartin,g_iartout8)
		#SI (res!=2)
		res = i_supp_quart_num(ic_entree,0,1,0x0f,g_iartin,g_iartout8)
		SI (res!=1)
		ALORS
#			trace1("Retour i_supp_quart_num: <%d>",res)
			SAUT FONC_NOK
		FINSI				
		SAUT FONC_OK	
	FINSI			
			
FINSI

# Cas 031720	
		
SI ( (dede0==0x0)&&(dede1==0x3)&&(dede2==0x1)&&(dede3==0x7)&&(dede4==0x2)&&(dede5==0x0) )
ALORS			
	#res = i_supp_quart_num(ic_entree,5,2,0x0f,g_iartin,g_iartout9)
	#SI (res!=2)	
	res = i_supp_quart_num(ic_entree,5,1,0x0f,g_iartin,g_iartout9)
	SI (res!=1)
	ALORS
#		trace1("Retour i_supp_quart_num: <%d>",res)
		SAUT FONC_NOK
	FINSI				
			
	res = i_supp_quart_num(ic_entree,0,1,0x0f,g_iartout9,g_iartout8)
	SI (res!=1)
	ALORS
#		trace1("Retour i_supp_quart_num: <%d>",res)
		SAUT FONC_NOK	
	FINSI				
	SAUT FONC_OK
FINSI

#\DRE G4R3 lot2
############	
		
## Cas 036510	
		
SI ( (dede0==0x0)&&(dede1==0x3)&&(dede2==0x6)&&(dede3==0x5)&&(dede4==0x1)&&(dede5==0x0) )
ALORS			
	#res = i_supp_quart_num(ic_entree,5,2,0x0f,g_iartin,g_iartout9)
	#SI (res!=2)	
	res = i_supp_quart_num(ic_entree,5,1,0x0f,g_iartin,g_iartout9)
	SI (res!=1)
	ALORS
#		trace1("Retour i_supp_quart_num: <%d>",res)
		SAUT FONC_NOK
	FINSI				
			
	res = i_supp_quart_num(ic_entree,0,1,0x0f,g_iartout9,g_iartout8)
	SI (res!=1)
	ALORS
#		trace1("Retour i_supp_quart_num: <%d>",res)
		SAUT FONC_NOK	
	FINSI				
	SAUT FONC_OK
FINSI
	
		
## Plage 03652* => 099999
	
SI (dede0==0x0)
ALORS
	SI ( (dede1>0x3)&&(dede1<0x9) )
	ALORS
		#res = i_supp_quart_num(ic_entree,0,2,0x0f,g_iartin,g_iartout8)
		#SI (res!=2)		
		res = i_supp_quart_num(ic_entree,0,1,0x0f,g_iartin,g_iartout8)
		SI (res!=1)
		ALORS
#			trace1("Retour i_supp_quart_num: <%d>",res)
			SAUT FONC_NOK
		FINSI				
		SAUT FONC_OK
	FINSI
				
	# Gestion de la borne sup.
	SI (dede1==0x9)
	ALORS
		SI ( (dede2==0xB)||(dede2==0xC)||(dede2<0x9) )
		ALORS
			bornSup=OK
		FINSI
		SI (dede2==0x9)
		ALORS
			SI ( (dede3==0xB)||(dede3==0xC)||(dede3<0x9) )		
			ALORS
				bornSup=OK	
			FINSI
			SI (dede3==0x9)
			ALORS
				SI ( (dede4==0xB)||(dede4==0xC)||(dede4<0x9) )
				ALORS
					bornSup=OK	
				FINSI
				SI (dede4==0x9)			
				ALORS
					SI ((dede5==0xB)||(dede5==0xC)||(dede5<=0x9) )
					ALORS
						bornSup=OK	
					FINSI
				FINSI
			FINSI
		FINSI
	FINSI
			
	# Gestion de la borne inf.
	SI (dede1==0x3)	
	ALORS
		SI ( (dede2>0x6)&&(dede2!=0xB)&&(dede2!=0xC) )
		ALORS
			bornInf=OK
		FINSI
		SI (dede2==0x6)	
		ALORS
			SI ( (dede3>0x5)&&(dede3!=0xB)&&(dede3!=0xC) )
			ALORS		
				bornInf=OK	
			FINSI
			SI (dede3==0x5)
			ALORS
				SI ( (dede4>0x2)&&(dede4!=0xB)&&(dede4!=0xC) )
				ALORS
					bornInf=OK
				FINSI
				SI (dede4==0x2)
				ALORS
					SI (dede5>=0) 
					ALORS
						bornInf=OK
					FINSI
				FINSI
			FINSI
		FINSI
	FINSI
				
	SI ( (bornInf==OK)||(bornSup==OK) )
	ALORS
		#res = i_supp_quart_num(ic_entree,0,2,0x0f,g_iartin,g_iartout8)
		#SI (res!=2)
		res = i_supp_quart_num(ic_entree,0,1,0x0f,g_iartin,g_iartout8)
		SI (res!=1)
		ALORS
#			trace1("Retour i_supp_quart_num: <%d>",res)
			SAUT FONC_NOK
		FINSI				
		SAUT FONC_OK
	FINSI			
FINSI

# Cas ou le numero n est pas modifie:
# plages  =>	****** => *31*#9	 	
#               *31*10 => *31*99
#               *31#** => #99999
#		0*31*1 => 0*31*9
#		036511 => 036519
#DRE G4R3 lot2
#		031721 => 031729
#		1***** => 999999
#
#trace("Pas de modification de DEDE_NUM !")
pas_de_modif=OK
				
# Retour OK de la fonction
POINT FONC_OK
		
#trace(g_iartin!NOM[])
#trace(article!NOM[])
#trace1("ic_entree=<%d>",ic_entree)
#trace1("ic_sortie=<%d>",ic_sortie)

		
SI (pas_de_modif==OK)
ALORS
	res=i_get_art_str(g_iartin,ic_entree,pt_dede)
SINON
	res=i_get_art_str(g_iartout8,ic_entree,pt_dede)	
FINSI	

i_replace_str(pt_dede,"ABC","A*#",pt_dede) 
res=i_set_art_str(article,ic_sortie,pt_dede)

#trace2("DEDE Apres => <<< %s >>>",pt_dede,"")
	
trace("Retour OK de ConvTransgrp")
RETOUR OK

# Retour NOK de la fonction
POINT FONC_NOK
trace("Retour NOK de ConvTransgrp")
RETOUR NOK

#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#
#- - - - - - - - - - - -  - - - - - Fin formatage DEDE_NUM - - - - - - - - - - - - - - - - - - - - - - - -#
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#

