**************************************************************************
*******   Programme d'impression des annivairsaires des aidants   ********
**************************************************************************
**************************************************************************
*                   Cr par Guillaume le 02/02/2006                     * 
**************************************************************************
*Requete sur contrat pour trouver les anniversaires des aidants selon les*
*paramtres de l'interface VB.                                           *
*                                                                        *
* -Ouvertures des fichiers                                               *
* -Initialisation des variables                                          *
* -Rcupration des paramtres de l'IHM                                  *
* -Requete sur CONTRAT                                                   *
* -Tri de la requete sur bornage                                         *
* -Test de l'age dans l'intervalle                                       *
* -Sub 100 : "Marquage" des contrats valides                               *
* -Sub 200 : Vrification des marques sur les conventions collectives et *
*            enregistrement des information sur l'aidant                 *
**************************************************************************
* Modifications: date, technicien                                        *
*																		 *
*																		 *
**************************************************************************
**************************************************************************

*Ouverture des fichiers

EXECUTE 'DATE.FORMAT'
EXECUTE 'SET-DEC ,'
EXECUTE "SET-THOUS ."

OPEN "", "CONTRAT" TO F.CONTRAT ELSE RETURN 
OPEN "", "ASSOCIATION" TO F.ASSOCIATION ELSE RETURN
OPEN "", "CIVILAIDANT" TO F.CIVILAIDANT ELSE RETURN
OPEN "", "SECTEUR" TO F.SECTEUR ELSE RETURN
OPEN "", "CONVENTIONCOL" TO F.CONVENTIONCOL ELSE RETURN
OPEN "", "STATAIDANT" TO F.STATAIDANT ELSE RETURN
OPEN "", "TEMPO" TO F.TEMPO ELSE RETURN

**************************************************************************
*Initialisation des variables
**************************************************************************

W_Requete=""
W_RequeteContrat=""
W_Temp=""
W_ConvCol=""
W_TestConv=""
W_ListeImpression=""
ENR_CONTRAT=""
ENR_CIVILAIDANT=""
W_CleContrat=0
W_FichierGraphique=""
W_AnniAidant=""
W_AgeAidantSur=""

**************************************************************************
*Rcupration des paramtres
**************************************************************************

PROCREAD PARAMETRES ELSE STOP

W_CodAsso= FIELD(PARAMETRES, "|",2)

W_Temp = FIELD(PARAMETRES, "|", 3)
W_NBConvCol = DCOUNT(W_Temp,"-")

FOR i = 1 TO W_NBConvCol
	W_ConvCol<i> = FIELD(W_Temp, "-", i)
	W_TestConv<i,1> = FIELD(W_Temp, "-", i)
	W_TestConv<i,2> = 0
NEXT i

W_Exclu = FIELD(PARAMETRES, "|", 4)
W_Sect = FIELD(PARAMETRES, "|", 5)
W_DateDebut = ICONV(FIELD(PARAMETRES, "|",6),"D4/")
W_DateFin = ICONV(FIELD(PARAMETRES, "|",7),"D4/")
W_AgeDe = FIELD(PARAMETRES, "|",8)
W_AgeA = FIELD(PARAMETRES, "|",9)
W_Tri = FIELD(PARAMETRES, "|",10)
W_Format = FIELD(PARAMETRES , "|",11)
W_User = FIELD(PARAMETRES , "|",12)



**************************************************************************
*Requete sur Contrat
**************************************************************************

W_Requete='SELECT CONTRAT AVEC SupprContrat = "" AND AVEC NaissanceAidant <> "" AND AVEC DatDebContrat <= "':W_DateFin:'" AND AVEC DatFinContrat >= "':W_DateDebut:'" OR = "" AND AVEC ConvColContrat = "':W_ConvCol<1>:'" '

FOR i=2 TO DCOUNT(W_ConvCol,CHAR(254))
   W_Requete=W_Requete:'OR = "':W_ConvCol<i>:'" '
NEXT i

IF W_CodAsso # "" THEN
   W_Requete=W_Requete:'AND AVEC AssocContrat = "':W_CodAsso:'" '
END

IF W_Sect[1,1]="S" THEN
	IF W_Sect[2,3]#"" THEN
		W_Requete=W_Requete:'AND AVEC SecteurContrat = "':W_Sect[2,3]:'" '
	END
	W_Requete=W_Requete:'PAR SecteurContrat '
END
IF W_Sect[1,1]="C" THEN
	IF W_Sect[2,23]#"" THEN
		W_Requete = W_Requete:'AND AVEC LibCommuneAidant = "':W_Sect[2,23]:'" '
	END
	IF W_Format#"E" THEN
		W_Requete = W_Requete:'PAR LibCommuneAidant '
	END
END

IF W_Tri="A" OR W_Format="E" THEN
   W_Requete=W_Requete:'PAR NomPrenomAidantContrat PAR CodAidantContrat '
END
IF W_Tri="D" AND W_Format#"E" THEN
   W_Requete=W_Requete:'PAR MoisAnni PAR JourAnni PAR NomPrenomAidantContrat PAR CodAidantContrat '
END

PRINT W_Requete
EXECUTE W_Requete
EXECUTE 'SAUVE-LISTE W_RequeteContrat'
EXECUTE "LISTE W_RequeteContrat" RETURNING MSGCODE




*******************************************************************************
*Tri de la requete par bornage
*******************************************************************************

IF MSGCODE<1>#209 THEN
	SELECT F.CONTRAT TO W_RequeteContrat
	i=1
	W_Fini="FAUX"
	W_ClePrec=0
	LOOP
		READNEXT W_CleContrat FROM W_RequeteContrat ELSE W_Fini="VRAI"
		IF W_CleContrat[1,5]#W_ClePrec[1,5] AND W_ClePrec#0 THEN
			GOSUB 200
		END
		
		WHILE W_Fini="FAUX"
			READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_CleContrat[1,5] ELSE ENR_CIVILAIDANT = ""
			READ ENR_CONTRAT FROM F.CONTRAT,W_CleContrat ELSE ENR_CONTRAT = ""
			
			W_ClePrec = W_CleContrat
		*Ressrage des bornes de priode en fonction des dates de contrat
			
			IF ENR_CONTRAT<7> > W_DateDebut THEN
				W_BornageDeb = ENR_CONTRAT<7>
			END ELSE
				W_BornageDeb = W_DateDebut
			END
			
			IF ENR_CONTRAT<8> # "" AND ENR_CONTRAT<8> < W_DateFin THEN
				W_BornageFin = ENR_CONTRAT<8>
			END ELSE
				W_BornageFin = W_DateFin
			END
			
			W_AnniAidant=OCONV(ENR_CIVILAIDANT<26>,"D4/")
			W_AnniAidant=W_AnniAidant[1,6]:OCONV(W_BornageDeb,"D4/")[7,4]
			W_AnniAidant=ICONV(W_AnniAidant,"D4/")
************************************************************************************************************			
* test si anniversaire compris dans l'intervalle et anniversaire pour un age compris dans les bornes
************************************************************************************************************

			IF W_BornageDeb < W_AnniAidant AND W_AnniAidant < W_BornageFin THEN
				IF W_AgeDe # "" AND W_AgeA # "" THEN
					IF W_AgeDe <= OCONV(W_AnniAidant,"D4/")[7,4] - OCONV(ENR_CIVILAIDANT<26>,"D4/")[7,4] AND OCONV(W_AnniAidant,"D4/")[7,4] - OCONV(ENR_CIVILAIDANT<26>,"D4/")[7,4] <= W_AgeA THEN
						GOSUB 100
					END
				END ELSE
					GOSUB 100
				END
				
			END ELSE
				W_AnniAidant=OCONV(ENR_CIVILAIDANT<26>,"D4/")
				W_AnniAidant=W_AnniAidant[1,6]:OCONV(W_BornageFin,"D4/")[7,4]
				W_AnniAidant=ICONV(W_AnniAidant,"D4/")
*				W_AgeAidant=OCONV(W_AnniAidant,"D4/")[4,7] - OCONV(ENR_CIVILAIDANT<26>,"D4/")[7,4]
				IF W_BornageDeb <= W_AnniAidant AND W_AnniAidant <= W_BornageFin THEN
					IF W_AgeDe # "" AND W_AgeA # "" THEN
						IF W_AgeDe <= OCONV(W_AnniAidant,"D4/")[7,4] - OCONV(ENR_CIVILAIDANT<26>,"D4/")[7,4] AND OCONV(W_AnniAidant,"D4/")[7,4] - OCONV(ENR_CIVILAIDANT<26>,"D4/")[7,4] < W_AgeA THEN
							GOSUB 100
						END
					END ELSE
						GOSUB 100
					END
				END
			END	
	REPEAT
END
	W_J=OCONV(DATE(),"D4/")[1,2]
	W_M=OCONV(DATE(),"D4/")[4,2]
	W_A=OCONV(DATE(),"D4/")[7,4]	
	W_Aujourdhui=W_A:W_M:W_J
	
	W_Message = ""
	PRINT " user "W_User
	IF W_Format = "G" THEN
		W_Ecrit="FAUX"
		i=1
		j=1
		W_FichierGraphique<1> = "Secteur;Code;Titre;Nom;Prnom;Adresse;Complment d'adresse;Code postal;Commune;Tlphone;Date de naissance;Age"
		LOOP
			UNTIL W_ListeImpression<j,1>=""
			W_FichierGraphique<j+1>=W_ListeImpression<j,1>:";":W_ListeImpression<j,2>:";":W_ListeImpression<j,3>:";":W_ListeImpression<j,4>:";":W_ListeImpression<j,5>:";":W_ListeImpression<j,6>:";":W_ListeImpression<j,7>:";":W_ListeImpression<j,8>:";":W_ListeImpression<j,9>:";":W_ListeImpression<j,10>:";":W_ListeImpression<j,11>:";":W_ListeImpression<j,12>
			j=j+1
		REPEAT
		LOOP
			WHILE W_Ecrit = "FAUX"
			READ ENR_STATAIDANT FROM F.STATAIDANT,"AnniversaireAidant-":W_Aujourdhui:"-":i:".csv" ELSE
				IF W_FichierGraphique#"" THEN
					WRITE W_FichierGraphique ON F.STATAIDANT,"AnniversaireAidant-":W_Aujourdhui:"-":i:".csv"
					W_Message="AnniversaireAidant-":W_Aujourdhui:"-":i:".csv"
				END ELSE
					W_Message="0"
				END
				W_Ecrit = "VRAI"
				WRITE W_Message ON F.TEMPO, "ANNIAIDANT":W_User
			END
			i=i+1
		REPEAT
		
	END ELSE
			WRITE  W_ListeImpression ON F.TEMPO, "ANNIAIDANT":W_User
			STOP
	END

***************************************************************
*Marquage des contrats pour les CCN
***************************************************************
100

j=1
LOOP
	UNTIL W_TestConv<j,1>=ENR_CONTRAT<1>
		j=j+1
REPEAT
W_TestConv<j,2>=1
W_AgeAidantSur=OCONV(W_AnniAidant,"D4/")[7,4] - OCONV(ENR_CIVILAIDANT<26>,"D4/")[7,4]
RETURN

*********************************************************************
*Vrification dans le cas d'une selection commune aux diffrentes CCN Chargement des infos sur les contrats/aidants selectionns
*********************************************************************
200

IF W_Exclu=1 THEN
	W_Ok=1
	FOR j=1 TO W_NBConvCol
		IF W_TestConv<j,2>=0 THEN
			W_Ok=0
		END
	NEXT j
END ELSE
	W_Ok=0
	FOR j=1 TO W_NBConvCol
		IF W_TestConv<j,2>=1 THEN
			W_Ok=1
		END
	NEXT j
END

IF W_Ok=1 THEN
	READ ENR_SECTEUR FROM F.SECTEUR,ENR_CIVILAIDANT<31> ELSE ENR_SECTEUR = ""
	READ ENR_ASSOCIATION FROM F.ASSOCIATION,ENR_CONTRAT<2> ELSE ENR_ASSOCIATION = ""
	READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,ENR_CONTRAT<1> ELSE ENR_CONVENTIONCOL = ""

	W_ListeImpression<i,1>=TRIM(ENR_SECTEUR<1>)
	W_ListeImpression<i,2>=W_ClePrec[1,5]
	W_ListeImpression<i,3>=TRIM(ENR_CIVILAIDANT<1>)
	W_ListeImpression<i,4>=TRIM(ENR_CIVILAIDANT<2>)
	W_ListeImpression<i,5>=TRIM(ENR_CIVILAIDANT<3>)
	
	IF TRIM(ENR_CIVILAIDANT<5>)#"" THEN
		W_ListeImpression<i,6>=TRIM(ENR_CIVILAIDANT<5>):" "
	END
	IF TRIM(ENR_CIVILAIDANT<6>)#"" THEN
		W_ListeImpression<i,6>=W_ListeImpression<i,6>:TRIM(ENR_CIVILAIDANT<6>):" "
	END
	IF TRIM(ENR_CIVILAIDANT<7>)#"" THEN
		W_ListeImpression<i,6>=W_ListeImpression<i,6>:TRIM(ENR_CIVILAIDANT<7>):" "
	END
	IF TRIM(ENR_CIVILAIDANT<8>)#"" THEN
		W_ListeImpression<i,6>=W_ListeImpression<i,6>:TRIM(ENR_CIVILAIDANT<8>)
	END
	
	W_ListeImpression<i,7>=TRIM(ENR_CIVILAIDANT<9>)
	W_ListeImpression<i,8>=TRIM(ENR_CIVILAIDANT<10>)
	W_ListeImpression<i,9>=TRIM(ENR_CIVILAIDANT<11>)
	W_ListeImpression<i,10>=TRIM(ENR_CIVILAIDANT<12>)
	W_ListeImpression<i,11>=OCONV(ENR_CIVILAIDANT<26>,"D4/")
	W_ListeImpression<i,12>=W_AgeAidantSur
	i=i+1
END
FOR j=1 TO W_NBConvCol
	W_TestConv<j,2>=0
NEXT j

RETURN