*************************************************************************
*         				PR REPAIDANT									*
*																		*
* MICHAEL THOUVENIN, AOUT 02											*
* VALENTIN, AOUT 07 : EDITION PAR LISTE OU GRAPHIQUE					*
*************************************************************************

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "", "CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "", "CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "", "SECTEUR" TO F.SECTEUR ELSE STOP
OPEN "", "TEMPO" TO F.TEMPO ELSE STOP
OPEN "", "STATAIDANT" TO F.STATAIDANT ELSE STOP
OPEN "", "INFOSAIDANT" TO F.INFOSAIDANT ELSE STOP

PROCREAD PARAMETRES ELSE STOP
W_Asso = FIELD(PARAMETRES,"|",2)
W_Statut = FIELD(PARAMETRES,"|",3)
W_Contrat = FIELD(PARAMETRES,"|",4)
W_DateDeb = FIELD(PARAMETRES,"|",5)
W_DateFin = FIELD(PARAMETRES,"|",6)
W_CCN = FIELD(PARAMETRES,"|",7)
* Rq : max 9 CCN, donc les codes sont ici spars par des espaces
W_Tri = FIELD(PARAMETRES,"|",8)
W_Sel = FIELD(PARAMETRES,"|",9)
W_Exclu = FIELD(PARAMETRES,"|",10)
W_Edition = FIELD(PARAMETRES,"|",11)

*** variable de test ***
*W_Asso="001"
*W_Statut="P"
*W_Contrat="A"
*W_DateDeb="14366"
*W_DateFin="14396"
*W_CCN="3 1"
*W_Tri="A"
*W_Exclu="0"
*W_Edition="Graphique"
ENR_GRAPH<1>="Code Aidant;Nom;Prnom;Adresse1;Adresse2;Code Postal;Commune;Secteur;Tlphone1;Tlphone2;Date de dbut de contrat;Date de fin de contrat;Type de fin;Personne  prvenir;Tlphone Personne  prvenir"
y=2
************************


IF W_Asso # "" THEN
	W_Str = 'SELECT CONTRAT AVEC 65 # "O" AND AVEC 2 = "':W_Asso:'"'
END ELSE
	W_Str = 'SELECT CONTRAT AVEC 65 # "O"'
END
IF W_Statut # "T" THEN
	W_Str = W_Str:' AND AVEC 6 = "':W_Statut:'"'
END
BEGIN CASE
	CASE W_Contrat = "A"
		W_Str = W_Str:' AND AVEC 7 <= "':W_DateFin:'" AND AVEC 8 >= "':W_DateDeb:'" OR = ""'
	CASE W_Contrat = "D"
		W_Str = W_Str:' AND AVEC 7 <= "':W_DateFin:'" AND AVEC 7 >= "':W_DateDeb:'"'
	CASE W_Contrat = "F"
		W_Str = W_Str:' AND AVEC 8 <= "':W_DateFin:'" AND AVEC 8 >= "':W_DateDeb:'" AND AVEC 8 # ""'
END CASE

W_TabCCN = ""
W_NbCCN = COUNT(W_CCN," ")+1
i = 0
LOOP
	i = i + 1
WHILE i <= W_NbCCN
   W_TabCCN<i> = FIELD(W_CCN," ",i)"R%2"
REPEAT

W_Str = W_Str:' AND AVEC 1 = "':W_TabCCN<1>:'"'
FOR i = 2 TO W_NbCCN
	W_Str = W_Str:' OR = "':W_TabCCN<i>:'"'
NEXT i

IF W_Sel # "" THEN
	IF W_Tri = "C" THEN
		W_Str = W_Str:' AND AVEC LibCommuneAidant = "':W_Sel:'"'
	END ELSE
		IF W_Tri = "S" THEN
			W_Str = W_Str:' AND AVEC CodSecteurContrat = "':W_Sel:'"'
		END
	END
END ELSE
	IF W_Tri = "C" THEN
		W_Str = W_Str:' PAR LibCommuneAidant'
	END ELSE
		IF W_Tri = "S" THEN
			W_Str = W_Str:'PAR LibSecteurContrat'
		END
	END
END

W_Str = W_Str:' PAR NomPrenomAidantContrat PAR @ID PAR 1 PAR 7 PAR 8'


EXECUTE W_Str
REPAIDANT = ""
EXECUTE 'SAUVE-LISTE REPAIDANT'
EXECUTE 'LISTE REPAIDANT' RETURNING MSGCODE
IF MSGCODE<1> = 209 THEN
	ENR_TEMPO<1> = "Vide"
	WRITE ENR_TEMPO ON F.TEMPO,"REPAIDANT"
	STOP
END

SELECT F.CONTRAT TO REPAIDANT

W_Fin = "F"
W_TamponAidant = ""
W_TamponTri = ""
ENR_TEMPO = "" 
W_IndTempo = 1
LOOP
	READNEXT W_Cle FROM REPAIDANT ELSE W_Fin = "V"
WHILE W_Fin = "F"
	IF W_Cle[1,5] # W_TamponAidant THEN
		IF W_TamponAidant # "" THEN
			* trt aidant prcdent 
			GOSUB 100
			
		END
		W_TamponAidant = W_Cle[1,5]
		W_TabAidant = ""
		FOR i = 1 TO W_NbCCN
			W_TabAidant<INT(W_TabCCN<i>),1> = 99999
		NEXT i
	END
	READ ENR_CONTRAT FROM F.CONTRAT,W_Cle THEN	
		IF INT(W_TabAidant<INT(ENR_CONTRAT<1>),1>) > INT(ENR_CONTRAT<7>) THEN
			W_TabAidant<INT(ENR_CONTRAT<1>),1> = ENR_CONTRAT<7>
		END
		IF W_TabAidant<INT(ENR_CONTRAT<1>),2> # "99999" THEN
		   IF ENR_CONTRAT<8> = "" THEN
			IF ENR_CONTRAT<60> = "" THEN
				W_TabAidant<INT(ENR_CONTRAT<1>),2> = "99999"
				W_TabAidant<INT(ENR_CONTRAT<1>),3> = " "
			END ELSE
				IF INT(W_TabAidant<INT(ENR_CONTRAT<1>),2>) < INT(ENR_CONTRAT<60>) THEN
					W_TabAidant<INT(ENR_CONTRAT<1>),2> = ENR_CONTRAT<60>
					W_TabAidant<INT(ENR_CONTRAT<1>),3> = "P"
				END
			END
		   END ELSE
			IF INT(W_TabAidant<INT(ENR_CONTRAT<1>),2>) < INT(ENR_CONTRAT<8>) THEN
				W_TabAidant<INT(ENR_CONTRAT<1>),2> = ENR_CONTRAT<8>
				W_TabAidant<INT(ENR_CONTRAT<1>),3> = "R"
			END
		   END
		END
	END

	
REPEAT

GOSUB 100

IF ENR_TEMPO<1> = "" THEN
	ENR_TEMPO<1> = "Vide"
END


IF W_Edition="Liste" THEN
	WRITE ENR_TEMPO ON F.TEMPO, "REPAIDANT"
	
END ELSE

	W_NomFichier="RepAidant-":W_Asso:"-":OCONV(DATE(),"D4/"):"-1.csv"
	W_NomFichier=CONVERT("/","",W_NomFichier)
	
	x=1
	W_BOOOL="FALSE"
	LOOP
		READ ENR_GRAPH2 FROM F.STATAIDANT, W_NomFichier ELSE W_BOOOL="TRUE"
		x=x+1
	WHILE W_BOOOL="FALSE" DO
		W_NomFichier=W_NomFichier[1,23]:x:".csv"
	REPEAT
	
	WRITE ENR_GRAPH ON F.STATAIDANT, W_NomFichier
	
	** ecriture du nom du fichier pour que le vb le recupere **
	WRITE W_NomFichier ON F.TEMPO,"REPAIDANTNOMFICHIER"
END
	
STOP

******************************************************
* Procedure pour generer les repertoires des aidants *
******************************************************
100

W_Tel = ""

IF W_Exclu = "1" THEN
	GOSUB 200
END ELSE
	W_Inclu = "V"
END

IF W_Inclu = "V" THEN

   READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, W_TamponAidant THEN

	IF W_Sel = "" AND W_Tri # "A" THEN
		IF W_Tri = "S" THEN
			IF ENR_CIVILAIDANT<31> # W_TamponTri THEN
				READ ENR_SECTEUR 	FROM F.SECTEUR, ENR_CIVILAIDANT<31> THEN
					ENR_TEMPO<W_IndTempo,1> = "#":ENR_SECTEUR<1>
					W_IndTempo = W_IndTempo + 1
				END
				W_TamponTri = ENR_CIVILAIDANT<31>
			END	
		END ELSE
			IF ENR_CIVILAIDANT<11> # W_TamponTri THEN
				ENR_TEMPO<W_IndTempo,1> = "#":ENR_CIVILAIDANT<11>
				W_IndTempo = W_IndTempo + 1
				W_TamponTri = ENR_CIVILAIDANT<11>
			END	
			
		END
	END

	W_Str = " ":W_TamponAidant:"  ":TRIM(ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>)
	W_Str = W_Str[1,44]
	W_Str = W_Str"L 45"

	W_Addr1 = TRIM(ENR_CIVILAIDANT<5>:" ":ENR_CIVILAIDANT<6>:" ":ENR_CIVILAIDANT<7>:" ":ENR_CIVILAIDANT<8>)
	
	IF ENR_CIVILAIDANT<9> # "" THEN
		W_Addr3 = TRIM(ENR_CIVILAIDANT<10>:" ":ENR_CIVILAIDANT<11>)
		W_Addr2 = TRIM(ENR_CIVILAIDANT<9>)
	END ELSE
		W_Addr2 = TRIM(ENR_CIVILAIDANT<10>:" ":ENR_CIVILAIDANT<11>)
		W_Addr3 = ""
	END
	IF W_Addr1 = "" THEN
		W_Addr1 = W_Addr2
		W_Addr2 = W_Addr3
		W_Addr3 = ""
	END
	IF W_Addr1 = "" THEN
		W_Addr1 = W_Addr2
		W_Addr2 = W_Addr3
		W_Addr3 = ""
	END
	IF W_Addr2 = "" THEN
		W_Addr2 = W_Addr3
		W_Addr3 = ""
	END
	
	W_Addr1 = W_Addr1[1,39]
	W_Addr1 = W_Addr1"L 40"
	W_Addr2 = W_Addr2[1,39]
	W_Addr2 = W_Addr2"L 40"
	W_Addr3 = W_Addr3[1,39]
	W_Addr3 = W_Addr3"L 40"

	W_Tel = ENR_CIVILAIDANT<12>"L 16"
	W_Tel2 = ENR_CIVILAIDANT<14>"L 16"

	IF ENR_CIVILAIDANT<12> = "" THEN
		W_Tel = ENR_CIVILAIDANT<14>"L 16"
		W_Tel2 = SPACE(16)
	END

	W_Ligne1Impr = "F"

	
	IF W_Exclu # "1" THEN
	   * 1 ligne par CCN
	   FOR i = 1 TO W_NbCCN
		IF W_TabAidant<INT(W_TabCCN<i>),1> # "99999" THEN
			IF W_TabAidant<INT(W_TabCCN<i>),2> # "99999" THEN
				W_InfosContrat = OCONV(W_TabAidant<INT(W_TabCCN<i>),1>,"D4/"):SPACE(3):OCONV(W_TabAidant<INT(W_TabCCN<i>),2>,"D4/"):SPACE(1):TRIM(W_TabAidant<INT(W_TabCCN<i>),3>):"  ":W_TabCCN<i>
			END ELSE
				W_InfosContrat = OCONV(W_TabAidant<INT(W_TabCCN<i>),1>,"D4/"):SPACE(17):W_TabCCN<i>
			END
			IF W_Ligne1Impr = "F" THEN
				ENR_TEMPO<W_IndTempo,1> = W_Str:W_Addr1:W_Tel:W_InfosContrat
				ENR_TEMPO<W_IndTempo,2> = ENR_CIVILAIDANT<31>
				W_IndTempo = W_IndTempo + 1
				W_Ligne1Impr = "V"
			END ELSE
				IF W_Addr2 # "" THEN
					ENR_TEMPO<W_IndTempo,1> = SPACE(45):W_Addr2:W_Tel2:W_InfosContrat
					ENR_TEMPO<W_IndTempo,2> = ENR_CIVILAIDANT<31>
					W_IndTempo = W_IndTempo + 1
					W_Addr2 = ""
				END ELSE
					IF W_Addr3 # "" THEN
						ENR_TEMPO<W_IndTempo,1> = SPACE(45):W_Addr3:SPACE(16):W_InfosContrat
						ENR_TEMPO<W_IndTempo,2> = ENR_CIVILAIDANT<31>
						W_IndTempo = W_IndTempo + 1
						W_Addr3 = ""
					END ELSE
						IF W_Addr2 = "" AND i = "2" THEN
							ENR_TEMPO<W_IndTempo,1> = SPACE(85):W_Tel2:W_InfosContrat
						END ELSE
							ENR_TEMPO<W_IndTempo,1> = SPACE(101):W_InfosContrat
						END
						ENR_TEMPO<W_IndTempo,2> = ENR_CIVILAIDANT<31>
						W_IndTempo = W_IndTempo + 1
					END
				END	
			END
		END
	   NEXT i
	   IF W_Addr2 # "" THEN
		* Il n'y a de contrat que sur une convention => n'est pas pass une deuxime fois ds la boucle...
		ENR_TEMPO<W_IndTempo,1> = SPACE(45):W_Addr2:W_Tel2
		ENR_TEMPO<W_IndTempo,2> = ENR_CIVILAIDANT<31>
		W_IndTempo = W_IndTempo + 1
	   END 
	   IF W_Addr3 # "" THEN
		* Il n'y a de contrat que sur une convention => n'est pas pass une deuxime fois ds la boucle...
		ENR_TEMPO<W_IndTempo,1> = SPACE(45):W_Addr3
		ENR_TEMPO<W_IndTempo,2> = ENR_CIVILAIDANT<31>
		W_IndTempo = W_IndTempo + 1
	   END
	   IF W_Addr2 = "" AND W_Tel2 # "" THEN
		ENR_TEMPO<W_IndTempo,1> = SPACE(85):W_Tel2
		ENR_TEMPO<W_IndTempo,2> = ENR_CIVILAIDANT<31>
		W_IndTempo = W_IndTempo + 1
	   END
		
		W_Addr2 = ""
		W_Addr3 = ""
	   
	END ELSE
	   * 1 ligne au total (dates les plus larges de tous les contrats)
		W_Min = 99999
		W_Max = 0
		W_TypeFin = ""
		FOR i = 1 TO W_NbCCN
			IF W_Min > INT(W_TabAidant<INT(W_TabCCN<i>),1>) THEN
				W_Min = INT(W_TabAidant<INT(W_TabCCN<i>),1>)
			END
			IF W_Max < INT(W_TabAidant<INT(W_TabCCN<i>),2>) THEN
				W_Max = INT(W_TabAidant<INT(W_TabCCN<i>),2>)
				W_TypeFin = W_TabAidant<INT(W_TabCCN<i>),3>
			END
		NEXT i
		IF W_Max # "99999" THEN
			W_InfosContrat = OCONV(W_Min,"D4/"):SPACE(5):OCONV(W_Max,"D4/"):SPACE(1):TRIM(W_TypeFin)
		END ELSE
			W_InfosContrat = OCONV(W_Min,"D4/")
		END

		ENR_TEMPO<W_IndTempo,1> = W_Str:W_Addr1:W_Tel:" ":W_InfosContrat
		ENR_TEMPO<W_IndTempo,2> = ENR_CIVILAIDANT<31>
		W_IndTempo = W_IndTempo + 1
		ENR_TEMPO<W_IndTempo,1> = SPACE(45):W_Addr2:W_Tel2
		ENR_TEMPO<W_IndTempo,2> = ENR_CIVILAIDANT<31>
		W_IndTempo = W_IndTempo + 1
		IF TRIM(W_Addr3) # "" THEN
			ENR_TEMPO<W_IndTempo,1> = SPACE(45):W_Addr3
			ENR_TEMPO<W_IndTempo,2> = ENR_CIVILAIDANT<31>
			W_IndTempo = W_IndTempo + 1
		END
		
	END

   END

END

IF W_Edition="Graphique" THEN
	ENR_GRAPH<y>=W_TamponAidant:";":ENR_CIVILAIDANT<2>:";":ENR_CIVILAIDANT<3>:";":ENR_CIVILAIDANT<5>:" ":ENR_CIVILAIDANT<6>:" ":ENR_CIVILAIDANT<7>:" ":ENR_CIVILAIDANT<8>
	ENR_GRAPH<y>=ENR_GRAPH<y>:";":ENR_CIVILAIDANT<9>:";":ENR_CIVILAIDANT<10>:";":ENR_CIVILAIDANT<11>:";"
	
	READ ENR_SECTEUR FROM F.SECTEUR, ENR_CIVILAIDANT<31> THEN
		ENR_GRAPH<y>=ENR_GRAPH<y>:ENR_SECTEUR<1>:";":W_Tel:";":W_Tel2
	END
	
	ENR_GRAPH<y>=ENR_GRAPH<y>:";":W_InfosContrat[1,10]:";":W_InfosContrat[14,10]:";":W_TabAidant<INT(ENR_CONTRAT<1>),3>:";"
	
	READ ENR_INFOSAIDANT FROM F.INFOSAIDANT, W_TamponAidant THEN
		ENR_GRAPH<y>=ENR_GRAPH<y>:ENR_INFOSAIDANT<1>:";":ENR_INFOSAIDANT<2>
	END
	y=y+1
END


RETURN


********************************************************
* Uniquement si l'aidant  un contrat au moins par CCN *
********************************************************
200

W_Inclu = "V"
FOR i = 1 TO W_NbCCN
	IF W_TabAidant<INT(W_TabCCN<i>),1> = "99999" THEN
		* Pas de date de dbut => pas de contrat !
		W_Inclu = "F"
	END
NEXT i
RETURN
