
*******************************************************************************
*   					PR EDIT-DEMCAF						*
*													*
* Destin  l'AMF de Cambrai : NE PAS MODIFIER !!!					*
*										Michal Thouvenin	*
*													*
* Rq : on est oblig de faire un select sur ACCORD pour chaque demande : 	*
* Car on notifie TOUTES les demandes (si demandes de motifs diffrents). 	*
* Donc il faut parfois	RE parcourir les accords du bnficiaires, et de plus *
* les demandes ne sont pas classes : impossible de savoir quel			*
* sera le premier motif lu !	 								*
*******************************************************************************

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "", "ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "", "DEMANDACC" TO F.DEMANDACC ELSE STOP
OPEN "", "ACCORD" TO F.ACCORD ELSE STOP
OPEN "", "TABLES" TO F.TABLES ELSE STOP
OPEN "", "ORGPRISECHARGE" TO F.ORGPRISECHARGE ELSE STOP
OPEN "", "CIVILAIDE" TO F.CIVILAIDE ELSE STOP
OPEN "", "ACTIVITES" TO F.ACTIVITES ELSE STOP


W_Asso = ""
LOOP
   PRINT "Code organisme ? (3 chiffres)"
   INPUT W_CodOrg

   READ ENRCAISSE FROM F.ORGPRISECHARGE, W_CodOrg THEN
	READ ENRASSO FROM F.ASSOCIATION, ENRCAISSE<46> THEN

		NOMASSO=EXTRACT(ENRASSO,1)
		NOMASSO=NOMASSO "L(#30)"
		RUEASSO=TRIM(EXTRACT(ENRASSO,3):" ":EXTRACT(ENRASSO,4):" ":EXTRACT(ENRASSO,5):" ":EXTRACT(ENRASSO,6))
		RUEASSO = RUEASSO[1,30]
		RUEASSO=RUEASSO "L(#30)"
		LIEUASSO=EXTRACT(ENRASSO,7)
		LIEUASSO=LIEUASSO "L(#30)"
		CPASSO=EXTRACT(ENRASSO,8)
		VILLEASSO=EXTRACT(ENRASSO,9)
		VILLEASSO1=VILLEASSO
		VILLEASSO=CPASSO:" ":VILLEASSO
		VILLEASSO=VILLEASSO "L(#30)"

		SIGLECAISSE=EXTRACT(ENRCAISSE,1)
		TYPEPREST=ENRCAISSE<47,1>
		READ ENR_ACTIVITES FROM F.ACTIVITES, TYPEPREST THEN
			TYPEPREST = ENR_ACTIVITES<1>
		END ELSE
			* * * * * * * * * Mettre ici le libelle par dfaut * * * * * * * * *
			* (Travailleuses familiales ou Aide  domicile)
			TYPEPREST = ""
			PRINT "Type de prestation ? (Intervention d'aide mnagre ou de Travailleuse familiale)"
			INPUT TYPEPREST
			* Conversion majuscules
			TYPEPREST = ICONV(TYPEPREST,"MCU")
		END
		LIBPREST = TYPEPREST		

	END ELSE

		PRINT "  L'entit juridique n'est pas dfinie au niveau de l'organnisme ":W_CodOrg
		PRINT "Indiquez-la  dans l'onglet 'Activits couvertes' en consultation des"
		PRINT "organismes de prise en charge dans le Menu Infologis avant d'excuter"
		PRINT " nouveau ce programme..."
	
	END

   END ELSE
	PRINT "Cet organisme n'existe pas."
	W_CodOrg = ""
   END 

WHILE LEN(W_CodOrg) # 3
REPEAT

LOOP
PRINT "Date de la plus ancienne demande ? (JJ/MM/AAAA)"
* remarque : si W_DateDeb pas numerique, on a W_DateDeb < 10000 (ICONV = "") 
INPUT W_DateDeb
W_DateDeb = ICONV(W_DateDeb,"D4/")
WHILE W_DateDeb < 10000 AND W_DateDeb > 99999
REPEAT

LOOP
PRINT "Date de la plus rcente demande ? (JJ/MM/AAAA)"
* remarque : si W_DateDeb pas numerique, on a W_DateDeb < 10000 (ICONV = "") 
INPUT W_DateFin
W_DateFin = ICONV(W_DateFin,"D4/")
WHILE W_DateFin < 10000 AND W_DateFin > 99999
REPEAT

W_ReqProlong = ""
W_DemandesAcc = ""

EXECUTE 'SELECT DEMANDACC AVEC 1 = "':W_CodOrg:'" AND AVEC 2 >= "':W_DateDeb:'" AND AVEC 2 <= "':W_DateFin:'" AND AVEC 2 # "" AND AVEC AideSuppr >= "':W_DateDeb:'" OR = ""'
EXECUTE 'SAUVE-LISTE W_DemandesAcc'
EXECUTE 'LISTE W_DemandesAcc' RETURNING MSGCODE
IF MSGCODE<1> = 209 THEN
	PRINT "Aucune demande d'accord sur l'organisme ":ENRCAISSE<1>
	PRINT "n'a t saisie entre le ":OCONV(W_DateDeb,"D4/"):" et le ":OCONV(W_DateFin,"D4/")
	STOP
END

READ ENR_MOTIF FROM F.TABLES, "MOTIFACCORD" ELSE
	PRINT "Erreur en lecture des motifs d'accords..."
END

DATESYST=DATE()
DATESYST=OCONV(DATESYST,"D4/")

SELECT F.ACCORD TO W_DemandesAcc

PRINTER ON

W_Fin = "F"
W_TamponAide = ""
LOOP
	READNEXT W_CleDde FROM W_DemandesAcc ELSE W_Fin = "V"
WHILE W_Fin = "F"
	READ ENR_DEMANDACC FROM F.DEMANDACC, W_CleDde THEN
		W_MotifsTraites = ""
		W_IndDde = 0
		LOOP
			W_IndDde = W_IndDde + 1
		WHILE ENR_DEMANDACC<1,W_IndDde> # ""
			* Rq : On ne s'arrte pas quand la date de dde (att. 2) est < date de dbut,
			* car les demandes sont classes par date de dbut d'accord : on peut demander 
			* un accord plus tard qu'un autre, alors qu'il commence avant...
			
			IF ENR_DEMANDACC<1,W_IndDde> = W_CodOrg THEN
			   IF INDEX(W_MotifsTraites, ENR_DEMANDACC<8,W_IndDde>:" ",1) = 0 THEN
			   * = test pour ne traiter qu'un dde par motif...
				
				IF INT(ENR_DEMANDACC<2,W_IndDde>) <= INT(W_DateFin) AND INT(ENR_DEMANDACC<2,W_IndDde>) >= INT(W_DateDeb) THEN
					* Traitement de la demande 
					GOSUB 100	
				END

			   END
			END
		REPEAT
	END
REPEAT

STOP

100
*************************************************
* 		Traitement d'une demande		*
*************************************************
IF W_CleDde # W_TamponAide THEN
	READ ENRPAIDEES FROM F.CIVILAIDE, W_CleDde THEN
		
		NOMPB=TRIM(EXTRACT(ENRPAIDEES,1):" ":EXTRACT(ENRPAIDEES,2):" ":EXTRACT(ENRPAIDEES,3))[1,30]
		NOMPB=NOMPB "L(#30)"
		RUEPB=TRIM(EXTRACT(ENRPAIDEES,5):" ":EXTRACT(ENRPAIDEES,6):" ":EXTRACT(ENRPAIDEES,7):" ":EXTRACT(ENRPAIDEES,8))[1,30]
		RUEPB=RUEPB "L(#30)"
		LIEUPB=EXTRACT(ENRPAIDEES,9)
		LIEUPB=LIEUPB "L(#30)"
		CPPB=EXTRACT(ENRPAIDEES,10)
		VILLEPB=EXTRACT(ENRPAIDEES,11)
		VILLEPB=CPPB:" ":VILLEPB
		VILLEPB=VILLEPB "L(#30)"

		ENRPAIDEES<42> = ""
		ENRPAIDEES<43> = ""

		j = 0
		k = 1
		LOOP
		j = j + 1
		WHILE ENRPAIDEES<37,j> # ""
			IF TRIM(ENRPAIDEES<37,j>) = "Enfant" THEN
				IF TRIM(ENRPAIDEES<34,j>) = "" THEN
					ENRPAIDEES<34,j> = ENRPAIDEES<2>
				END
				ENRPAIDEES<42,k> = TRIM(ENRPAIDEES<35,j>:" ":ENRPAIDEES<34,j>)
				ENRPAIDEES<43,k> = ENRPAIDEES<36,j>
				k = k + 1
			END
		REPEAT

		W_AideLu = "V"
		W_TamponAide = W_CleDde

	END ELSE
		W_AideLu = "F"
	END
END

IF W_AideLu = "V" THEN

	ALLOCPB=EXTRACT(ENR_DEMANDACC,7,W_IndDde)
	ALLOCPB=ALLOCPB "L(#20)"

	MOTIFDEMACC=EXTRACT(ENR_DEMANDACC,8,W_IndDde)
	W_IndMotif = 0
	W_Trouve = "F"
	LIBPARAM=""
	LOOP
	W_IndMotif = W_IndMotif + 1
	WHILE ENR_MOTIF<2,W_IndMotif> # "" AND W_Trouve = "F"
		IF ENR_MOTIF<2,W_IndMotif> = MOTIFDEMACC THEN
			LIBPARAM=EXTRACT(ENR_MOTIF,3,W_IndMotif)
			W_Trouve = "V"
		END
	REPEAT
	LIBPARAM=LIBPARAM "L(#40)"
	DEBDEMACC=EXTRACT(ENR_DEMANDACC,3,W_IndDde)
	DEBDEMACC=OCONV(DEBDEMACC,"D4/")
	HHDEMACC=EXTRACT(ENR_DEMANDACC,5,W_IndDde)
	HHDEMACC=HHDEMACC "R26,(#8)"

	**********************************************
	* dbut recherche demandes prcdentes (si prologation)
	W_Prolong1 = "F"
	W_DateDebProlong = ENR_DEMANDACC<3,W_IndDde>
	W_Prolong2 = "F"
	
	* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
	* rq : on recherche les demandes dont la date de fin est >=  la date de debut de la dde traitee - 1
	* => on peut parcourir les demandes dans l'ordre, car elles sont classes par date de dbut...
	* On suppose que les dates de fin se suivent dans le mme ordre que les dates de dbut
	* !!!!!!!!!!!!!!!!!!!! Cela peut ne pas tre le cas !!!!!!!!!!!!!!!!!!!!!!!!!!!!
	k = W_IndDde
	LOOP
	k = k + 1
	WHILE ENR_DEMANDACC<1,k> # "" AND W_Prolong2 = "F"
	   IF ENR_DEMANDACC<1,k> = W_CodOrg THEN
		* Si (Chevauchement) ou (fin dde = jour prcdent dbut accord trait) ALORS
		IF ( INT(ENR_DEMANDACC<4,k>) >= INT(W_DateDebProlong) AND INT(ENR_DEMANDACC<3,k>) <= INT(ENR_DEMANDACC<4,W_IndDde>) ) OR ENR_DEMANDACC<4,k> = INT(W_DateDebProlong) - 1 THEN
			IF W_Prolong1 = "F" THEN
				W_Prolong1 = "V"
				W_DateDebProlong = ENR_DEMANDACC<3,k> 
			END ELSE
				W_Prolong2 = "V"
			END
		END
	   END
	REPEAT

	IF W_Prolong2 = "F" THEN
		* Parcours des accords
		GOSUB 200
	END

	BEGIN CASE
		CASE W_Prolong2 = "V"
			LIBTYPEDEMACC = "2EME PROLONGATION"
		CASE W_Prolong1 = "V"
			LIBTYPEDEMACC = "1ERE PROLONGATION"
		CASE 1
			LIBTYPEDEMACC = "1ERE DEMANDE"
	END CASE

	GOSUB 1000

END

W_MotifsTraites = W_MotifsTraites:ENR_DEMANDACC<8,W_IndDde>:" "

RETURN

200
*************************************************
* Version 1 : select sur les accords de l'aid,	*
* mme organisme, mme motif...			*
*************************************************
EXECUTE 'SELECT ACCORD AVEC @ID = "':W_CleDde:']" AND AVEC 1 = "':W_CodOrg:'" AND AVEC 3 = "':ENR_DEMANDACC<8,W_IndDde>:'" PAR-DECR 6'
EXECUTE 'SAUVE-LISTE W_ReqProlong'
EXECUTE 'LISTE W_ReqProlong' RETURNING MSGCODE2
IF MSGCODE2<1> # 209 THEN

	SELECT F.ACCORD TO W_ReqProlong
	W_FinAcc = "F"
	LOOP
		READNEXT W_CleAcc FROM W_ReqProlong ELSE W_FinAcc = "V"
	WHILE W_FinAcc = "F" AND W_Prolong2 = "F"
		READ ENR_ACCORD FROM F.ACCORD, W_CleAcc THEN
			* Si ( chevauchement ) ou fin accord = debut dde (ou debut accord suivant) - 1 jour
			IF ( INT(ENR_ACCORD<6>) >= INT(W_DateDebProlong) AND INT(ENR_ACCORD<5>) <= INT(ENR_DEMANDACC<4,W_IndDde>) ) OR ENR_ACCORD<6> = INT(W_DateDebProlong) - 1 THEN
				IF W_Prolong1 = "F" THEN
					W_Prolong1 = "V"
					W_DateDebProlong = ENR_ACCORD<5> 
				END ELSE
					W_Prolong2 = "V"
				END
			END

		END
	REPEAT

END
RETURN

1000
*************************************************
*         Impression des donnes			*
*************************************************
PRINT
PRINT
PRINT "C A I S S E  D' A L L O C A T I O N S  F A M I L I A L E S  D E  C A M B R A I"
PRINT
PRINT
PRINT
PRINT "                 DEMANDE DE PRISE EN CHARGE - ":LIBTYPEDEMACC
PRINT
PRINT "                 ":LIBPREST
PRINT "                 ":SIGLECAISSE
PRINT
PRINT
PRINT " ORIGINE DE LA DEMANDE     : ":NOMASSO
PRINT "                             ":RUEASSO
PRINT "                             ":LIEUASSO
PRINT "                             ":VILLEASSO
PRINT
PRINT
PRINT
PRINT " NOM ET PRENOM ALLOCATAIRE : ":NOMPB
PRINT
PRINT "        NUMERO ALLOCATAIRE : ":ALLOCPB
PRINT
PRINT "        ADRESSE            : ":RUEPB
PRINT "                             ":LIEUPB
PRINT "                             ":VILLEPB
PRINT
PRINT
PRINT
PRINT " COMPOSITION DE LA FAMILLE"
PRINT
PRINT "        ENFANT                              DATE DE NAISSANCE"
PRINT
FOR K=1 TO 10
 ENFANT=EXTRACT(ENRPAIDEES,42,K)
 ENFANT=ENFANT "L(#30)"
 DATENAISS=EXTRACT(ENRPAIDEES,43,K)
 IF DATENAISS#"" THEN DATENAISS=OCONV(DATENAISS,"D4/")
 PRINT "        ":ENFANT:"         ":DATENAISS
NEXT K
PRINT
PRINT
PRINT
PRINT " MOTIF DE L'INTERVENTION   : ":LIBPARAM
PRINT
PRINT
PRINT " NOMBRE D'HEURES DEMANDEES : ":HHDEMACC
PRINT
PRINT
PRINT " DATE DEBUT INTERVENTION   : ":DEBDEMACC
PRINT
PRINT
PRINT
PRINT
PRINT "                                      FAIT A ":TRIM(VILLEASSO1):", LE ":DATESYST
PRINT
PRINT
PRINT
PRINT
PRINT "                                         LE SERVICE AIDE AUX MERES"                        
FOR K=1 TO 9
 PRINT
NEXT K
RETURN
