*****************************************************
* Programme de rcupration des donnes de Cervelle *
*                                                   *
* 11/09/04 -> Grgory                               *
*****************************************************

*****************************************************
* Ouverture des fichiers                            *
*****************************************************

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","FUSION" TO F.FUSION ELSE STOP
OPEN "","CIVILAIDE" TO F.CIVILAIDANT ELSE STOP
OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","TPSDETAILSINTERV" TO F.TPSDETAILSINTERV ELSE STOP
OPEN "","ACTIVITESAIDE" TO F.ACTIVITESAIDE ELSE STOP

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

* Les 3 variables suivantes sont  renseigner en fonction des besoins.
* Il s'agit de l'activit prestataire, l'activit mandataire
* et la date qui sert de rfrence pour vrifier que les liens sont actifs.
W_ActPrest="001001"
W_ActMand="001002"
W_DateRef=ICONV("01/09/2004","D4/")

IErreur=1
IFusion=1

ENR_FUSION=""
ENR_ERREUR=""
ENR_CIVILAIDANT=""
ENR_CIVILAIDE=""
ENR_CONTRAT=""
ENR_TPSDETAILSINTERV=""
ENR_ACTIVITESAIDE=""

*****************************************************
* Dbut du programme                                *
*****************************************************

	READ ENR_FUSION FROM F.FUSION,"Interventions.csv" ELSE STOP
	ENR_FUSION = CONVERT(";",CHAR(253),ENR_FUSION)
	LOOP
		IFusion=IFusion+1
	WHILE ENR_FUSION<IFusion>#"" DO
		ENR_FUSION<IFusion,12>=ENR_FUSION<IFusion,12> "R%5"
		READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, ENR_FUSION<IFusion,12> THEN
			J=14
			W_NumLien=0
			LOOP
				W_NumLien=W_NumLien+1
			WHILE W_NumLien<= 26
				IF ENR_FUSION<IFusion,J>#"libre" THEN
					READ ENR_CIVILAIDE FROM F.CIVILAIDE, ENR_FUSION<IFusion,J+2>[1,5] THEN
						W_DateDeb=ICONV(ENR_FUSION<IFusion,J+1>[234,8],"D2/")
						IF ENR_FUSION<IFusion,J+1>[242,8]="inconnue" OR TRIM(ENR_FUSION<IFusion,J+1>[242,8])="" THEN
							W_DateFin = ""
						END ELSE
							W_DateFin=ICONV(ENR_FUSION<IFusion,J+1>[242,8],"D2/")
						END
						IF W_DateDeb<=W_DateRef AND (W_DateFin>=W_DateRef OR W_DateFin="") THEN
							W_Lien=ENR_FUSION<IFusion,J+1>
							W_Activite=W_Lien[232,1]
							IF W_Activite="1" OR W_Activite="2" OR W_Activite="5" OR W_Activite="6" THEN
								IF W_Activite="5" OR W_Activite="6" THEN
									ENR_ERREUR<IErreur>="Message d'information"
									Ierreur=IErreur+1
									ENR_ERREUR<IErreur>="Code aidant -> ": ENR_FUSION<IFusion,12>
									Ierreur=IErreur+1			
									ENR_ERREUR<IErreur>="Code aid -> ":ENR_FUSION<IFusion,J+2>[1,5]
									Ierreur=IErreur+1			
									ENR_ERREUR<IErreur>="Lien -> ":W_NumLien + 64
									Ierreur=IErreur+1
									ENR_ERREUR<IErreur>="Ce cas est un remplacement sous Cervelle mais a t enregistr comme une intervention normale sous INFOLOGIS"
									Ierreur=IErreur+1		
									ENR_ERREUR<IErreur>="******************************************************************************************"
									Ierreur=IErreur+1
								END
								IF W_Activite="1" OR W_Activite="5" THEN
									IF W_ActPrest="" THEN
										GOSUB 100
									END ELSE
										W_ActInterv=W_ActPrest
									END
								END ELSE
									IF W_ActMand="" THEN
										GOSUB 100
									END ELSE
										W_ActInterv=W_ActMand
									END
								END
								IF W_ActInterv#"" THEN
									W_Freq=W_Lien[233,1]
	
									IF W_Freq="0" OR W_Freq="6" OR W_Freq="7" OR W_Freq="9" THEN
										K=1
										W_NumJour=0
										LOOP
											W_NumJour=W_NumJour+1
										WHILE W_NumJour<=7
											W_LienTemp=W_Lien[K,32]
											L=1
											W_NumInterv=0
											LOOP
												W_NumInterv=W_NumInterv+1
											WHILE W_NumInterv<=4
												IF W_LienTemp[L,4]#"0000" THEN
													ENR_TPSDETAILSINTERV=""
													ENR_TPSDETAILSINTERV<1>=W_DateFin
													ENR_TPSDETAILSINTERV<2>=W_LienTemp[L+4,4] "R%4"
													BEGIN CASE
														CASE W_Freq="0"
															ENR_TPSDETAILSINTERV<3>="1"
														CASE W_Freq="6"
															ENR_TPSDETAILSINTERV<3>="4"
														CASE W_Freq="7"
															ENR_TPSDETAILSINTERV<3>="2"
														CASE W_Freq="9"
															ENR_TPSDETAILSINTERV<3>="3"
													END CASE
													ENR_TPSDETAILSINTERV<4>=""
													ENR_TPSDETAILSINTERV<5>=W_LienTemp[L+4,4]-W_LienTemp[L,4]
													ENR_TPSDETAILSINTERV<5>=ENR_TPSDETAILSINTERV<5> "R%4"
													W_CleInterv=ENR_FUSION<IFusion,12>:ENR_FUSION<IFusion,J+2>[1,5]
													W_CleInterv=W_CleInterv:W_DateDeb:W_ActInterv:W_NumJour-1:W_LienTemp[L,4]
													WRITE ENR_TPSDETAILSINTERV ON F.TPSDETAILSINTERV, W_CleInterv
												END
												L=L+8
											REPEAT
											K=K+32
										REPEAT
									END ELSE
										ENR_ERREUR<IErreur>="Code aidant -> ": ENR_FUSION<IFusion,12>
										Ierreur=IErreur+1			
										ENR_ERREUR<IErreur>="Code aid -> ":ENR_FUSION<IFusion,J+2>[1,5]
										Ierreur=IErreur+1			
										ENR_ERREUR<IErreur>="Lien -> ":W_NumLien + 64
										Ierreur=IErreur+1			
										ENR_ERREUR<IErreur>="Frquence non gre par INFOLOGIS"
										Ierreur=IErreur+1
										ENR_ERREUR<IErreur>="******************************************************************************************"
										Ierreur=IErreur+1
									END
								END ELSE
									ENR_ERREUR<IErreur>="Code aidant -> ": ENR_FUSION<IFusion,12>
									Ierreur=IErreur+1			
									ENR_ERREUR<IErreur>="Code aid -> ":ENR_FUSION<IFusion,J+2>[1,5]
									Ierreur=IErreur+1			
									ENR_ERREUR<IErreur>="Lien -> ":W_NumLien + 64
									Ierreur=IErreur+1			
									ENR_ERREUR<IErreur>="Aucune activit commune n'a t trouve"
									Ierreur=IErreur+1
									ENR_ERREUR<IErreur>="******************************************************************************************"
									Ierreur=IErreur+1
								END
							END ELSE
								ENR_ERREUR<IErreur>="Code aidant -> ": ENR_FUSION<IFusion,12>
								Ierreur=IErreur+1			
								ENR_ERREUR<IErreur>="Code aid -> ":ENR_FUSION<IFusion,J+2>[1,5]
								Ierreur=IErreur+1			
								ENR_ERREUR<IErreur>="Lien -> ":W_NumLien + 64
								Ierreur=IErreur+1			
								ENR_ERREUR<IErreur>="Activit (type de lien) non gre par INFOLOGIS"
								Ierreur=IErreur+1
								ENR_ERREUR<IErreur>="******************************************************************************************"
								Ierreur=IErreur+1
							END
						END
					END ELSE
						ENR_ERREUR<IErreur>="Code aidant -> ": ENR_FUSION<IFusion,12>
						Ierreur=IErreur+1			
						ENR_ERREUR<IErreur>="Donnes aid Cervelle -> ":ENR_FUSION<IFusion,J>
						Ierreur=IErreur+1			
						ENR_ERREUR<IErreur>="Lien -> ":W_NumLien + 64
						Ierreur=IErreur+1			
						ENR_ERREUR<IErreur>="Aid non trouv dans les donnes INFOLOGIS"
						Ierreur=IErreur+1
						ENR_ERREUR<IErreur>="******************************************************************************************"
						Ierreur=IErreur+1
					END
				END
				J=J+3
			REPEAT
		END ELSE
			ENR_ERREUR<IErreur>="Nom et prnom aidant Cervelle -> ":ENR_FUSION<IFusion,1>
			IErreur=IErreur+1			
			ENR_ERREUR<IErreur>="Aidant non trouv dans les donnes INFOLOGIS"
			IErreur=IErreur+1
			ENR_ERREUR<IErreur>="******************************************************************************************"
			IErreur=IErreur+1			
		END
	REPEAT

	IF ENR_ERREUR<2> # "" THEN WRITE ENR_ERREUR ON F.FUSION, "Erreurs.txt"

STOP
*****************************************************
* Recherche activit                                *
*****************************************************
100

	READ ENR_ACTIVITESAIDE FROM F.ACTIVITESAIDE, ENR_FUSION<IFusion,J+2>[1,5] THEN
		W_ActInterv=""
		****************************************
 		* ATTENTION                            *
		* Les codes des conventions sont      *
                * renseigner en fonction de l'asso     *
		****************************************
		IF W_Activite="1" OR W_Activite="5" THEN
			W_Select='SSELECT CONTRAT AVEC 1 = "01"'
		END ELSE
			W_Select='SSELECT CONTRAT AVEC 1 = "02"'
		END
		IF W_DateFin#"" THEN
			W_Select=W_Select:'" AND AVEC 7 <= "':W_DateFin:'" AND AVEC 8 = "" OR >= "':W_DateDeb:'"'
		END ELSE
			W_Select=W_Select:'" AND AVEC 8 = "" OR >= "':W_DateDeb:'"'
		END
		W_Select=W_Select:'" AND AVEC CodeAidant = "':ENR_FUSION<IFusion,12>:'"'

		W_ReqContratPourCerv=""

		EXECUTE W_Select
		EXECUTE 'SAUVE-LISTE W_ReqContratPourCerv'
		EXECUTE "LISTE W_ReqContratPourCerv" RETURNING MSGCODE

		IF MSGCODE<1> # 209 THEN
			SELECT F.CONTRAT TO W_ReqContratPourCerv

			W_Fini="FAUX"
			LOOP
				READNEXT W_Cle FROM W_ReqContratPourCerv ELSE W_Fini="VRAI"
			WHILE W_Fini="FAUX" DO
				READ ENR_CONTRAT FROM F.CONTRAT,W_Cle ELSE PRINT "Erreur CONTRAT"
				I=0
				W_Trouve="FAUX"
				W_ChercheDansContrat="FAUX"
				LOOP
					I=I+1
				WHILE ENR_ACTIVITESAIDE<1,I>#"" AND W_Trouve="FAUX" DO
					W_ChercheDansContrat="FAUX"
					IF ENR_ACTIVITESAIDE<3,I>>=W_DateDeb OR ENR_ACTIVITESAIDE<3,I>="" THEN
						IF W_DateFin="" THEN
							W_ChercheDansContrat="VRAI"
						END
					END ELSE
						IF ENR_ACTIVITESAIDE<2,I><=W_DateFin THEN
							W_ChercheDansContrat="VRAI"
						END
					END
					IF W_ChercheDansContrat="VRAI" THEN
						W_ChercheDansContrat="FAUX"
						M=0
						LOOP
							M=M+1
						WHILE ENR_CONTRAT<36,M>#"" DO
							IF ENR_CONTRAT<36,M>=ENR_ACTIVITESAIDE<1,I> THEN
								W_ActInterv=ENR_ACTIVITESAIDE<1,I>
								W_Trouve="VRAI"
							END
						REPEAT
					END
				REPEAT
				IF W_Trouve="VRAI" THEN W_Fini="VRAI"
			REPEAT
		END
	END ELSE
		ENR_ERREUR<IErreur>="Code aidant -> ": ENR_FUSION<IFusion,12>
		Ierreur=IErreur+1			
		ENR_ERREUR<IErreur>="Code aid -> ":ENR_FUSION<IFusion,J+2>[1,5]
		Ierreur=IErreur+1			
		ENR_ERREUR<IErreur>="Lien -> ":W_NumLien + 64
		Ierreur=IErreur+1			
		ENR_ERREUR<IErreur>="Aucune activit trouve pour l'aid"
		Ierreur=IErreur+1
		ENR_ERREUR<IErreur>="******************************************************************************************"
		Ierreur=IErreur+1
		W_ActInterv=""
	END

RETURN
