*********************************************************
* REDUCTION DES HEURES DES ACCORDS CRAM DE 20 %		*
* SUR OCTOBRE A DECEMBRE 2005                      	*
* SPECIFIQUE TROYES                         		*
* VANESSA                      		 OCTOBRE 2005  	*
*************************************************************************

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

W_Anomalie=""
W_Ind=2
W_RequeteAcc=""
W_Anomalie<1>="Code aid;Nom Prnom;N de dossier;Date dbut accord;Date fin accord;Heures de l'accord;Heures rduites;Motif anomalie"

EXECUTE "SET-THOUS ."
OPEN "","ACCORDCRAM" TO F.ACCORDCRAM THEN
	*EXECUTE "VIDER-FICHIER ACCORDCRAM"
	ENR_ACCORDCRAM=""
END ELSE
	EXECUTE "CREER-FICHIER ACCORDCRAM 1,1"
	OPEN "","ACCORDCRAM" TO F.ACCORDCRAM ELSE PRINT "OUVERTURE ACCORDCRAM"
END
W_CramGarde = "039"
OPEN "","ACCORD" TO F.ACCORD ELSE PRINT "OUVERTURE ACCORD" ;* en lecture criture
OPEN "","CIVILAIDE" TO F.CIVILAIDE ELSE PRINT "OUVERTURE CIVILAIDE" ;* en lecture
OPEN "","FUSION" TO F.FUSION ELSE PRINT "OUVERTURE FUSION" ;* en lecture
OPEN "", "RESPONSABLE" TO F.RESPONSABLE ELSE STOP

*	PRINT "PERIODE DE DEBUT DE REDUCTION (AAAAMM) ="
*	INPUT PERIODEDEB

*	PRINT "PERIODE DE FIN DE REDUCTION (AAAAMM) ="
*	INPUT PERIODEFIN

*	PRINT "NOM DU FICHIER DES PRISES EN CHARGE CRAM"
*	INPUT FICHIER

*	READ ENR_FUSION FROM F.FUSION,FICHIER THEN

		W_ListeFusion = ""
		W_IndFusion = 1

		W_DateDeb = ICONV("01/11/2005","D4/")
		W_DateFin = ICONV("31/12/2005","D4/")

		GOSUB 10

*	END ELSE
*		PRINT "Le fichier n'existe pas dans le rpertoire FUSION."
*	END

STOP

****************************************************************
* REQUETE ACCORD
10

	W_Temp='SELECT ACCORD AVEC 18 = "" AND AVEC 1 = "001"'
	W_Temp=W_Temp:' AND AVEC 5 <= "':W_DateFin:'" AND AVEC 6 >= "':W_DateDeb:'" AND AVEC DateSortieAideAccord >= "':W_DateDeb:'" OR = "" PAR NomPrenomAide'

	EXECUTE W_Temp
	EXECUTE 'SAUVE-LISTE W_RequeteAcc'
   	EXECUTE "LISTE W_RequeteAcc" RETURNING MSGCODE

   	IF MSGCODE<1> # 209 THEN

      	SELECT F.ACCORD TO W_RequeteAcc
      	W_Fin="FAUX"
      	LOOP
         		READNEXT W_CleAcc FROM W_RequeteAcc ELSE W_Fin = "VRAI"
     		WHILE W_Fin = "FAUX" DO
         		READ ENR_ACCORD FROM F.ACCORD,W_CleAcc ELSE ENR_ACCORD=""

			W_CleCram=W_CleAcc[1,5]

         		READ ENR_ACCORDCRAM FROM F.ACCORDCRAM,W_CleCram THEN
				IF ENR_ACCORD<5> >= W_DateDeb THEN
					GOSUB 20
				END ELSE
					GOSUB 30
				END
				READ ENR_CIVILAIDE FROM F.CIVILAIDE, W_CleAcc[1,5] THEN
					W_ListeFusion<W_IndFusion,1> = W_CleAcc[1,5]
					W_ListeFusion<W_IndFusion,2> = ENR_CIVILAIDE<2>
					W_ListeFusion<W_IndFusion,3> = ENR_CIVILAIDE<3>
					W_ListeFusion<W_IndFusion,4> = TRIM(ENR_CIVILAIDE<5>:" ":ENR_CIVILAIDE<6>:" ":ENR_CIVILAIDE<7>:" ":ENR_CIVILAIDE<8>)
					W_ListeFusion<W_IndFusion,5> = ENR_CIVILAIDE<9>
					W_ListeFusion<W_IndFusion,6> = ENR_CIVILAIDE<10>
					W_ListeFusion<W_IndFusion,7> = ENR_CIVILAIDE<11>
					W_ListeFusion<W_IndFusion,8> = ENR_ACCORDCRAM<1>
					W_ListeFusion<W_IndFusion,9> = ENR_ACCORD<13,1>"MR2"
					READ ENR_RESPONSABLE FROM F.RESPONSABLE,ENR_CIVILAIDE<39> THEN
						W_ListeFusion<W_IndFusion,10> = ENR_RESPONSABLE<1>
					END ELSE
							W_ListeFusion<W_IndFusion,10> = ""
					END
					W_IndFusion = W_IndFusion + 1
				END
			END ELSE
				W_Anomalie<W_Ind>=W_CleAcc[1,5]:";"

         			READ ENR_CIVILAIDE FROM F.CIVILAIDE,W_CleAcc[1,5] ELSE ENR_CIVILAIDE =""
				W_Anomalie<W_Ind>=W_Anomalie<W_Ind>:ENR_CIVILAIDE<2>:" ":ENR_CIVILAIDE<3>:";"
				W_Anomalie<W_Ind>=W_Anomalie<W_Ind>:ENR_ACCORD<2>:";"
				W_Anomalie<W_Ind>=W_Anomalie<W_Ind>:OCONV(ENR_ACCORD<5>,"D4/"):";"
				W_Anomalie<W_Ind>=W_Anomalie<W_Ind>:OCONV(ENR_ACCORD<6>,"D4/"):";"
				W_Anomalie<W_Ind>=W_Anomalie<W_Ind>:ENR_ACCORD<9>/100:";"
				W_Anomalie<W_Ind>=W_Anomalie<W_Ind>:"0;"
				W_Anomalie<W_Ind>=W_Anomalie<W_Ind>:"Accord non prsent dans fichier de rfrence"
				W_Ind=W_Ind+1
			END

		REPEAT

		WRITE W_Anomalie ON F.FUSION,"ANOMALIE_REDUC_ACC.txt"
		W_NumOrdre = 1
		ENR_FUSION = ""
		ENR_FUSION<1> = "Code;Nom;Prnom;Adresse;Complment d'adresse;Code postal;Ville;Nombre d'heures rduites;Participation horaire;Nom responsable"
		i = 0
		LOOP
		i = i + 1
		WHILE i < W_IndFusion
			ENR_FUSION<-1> = W_ListeFusion<i>
			IF  MOD(i,100) = 0 THEN
				ENR_FUSION = CONVERT(CHAR(253),";",ENR_FUSION)
				WRITE ENR_FUSION ON F.FUSION, "PublipostageReducAccordsCram":W_NumOrdre:".txt" 
				W_NumOrdre = W_NumOrdre + 1	
				ENR_FUSION = ""	
				ENR_FUSION<1> = "Code;Nom;Prnom;Adresse;Complment d'adresse;Code postal;Ville;Nombre d'heures rduites;Participation horaire;Nom responsable"
			END
		REPEAT

	END

RETURN

****************************************************************
* SI DATE DE DEBUT ACCORD >= DATE DEBUT REDUCTION
20

	IF ENR_ACCORD <6> <= W_DateFin THEN
		ENR_ACCORD<1> = W_CramGarde
		ENR_ACCORD<9>=ENR_ACCORDCRAM<1>*100
		ENR_ACCORD<13,1> = "334"
		ENR_ACCORD<22>=""
		WRITE ENR_ACCORD ON F.ACCORD,W_CleAcc
	END ELSE

		* modifie accord existant
		W_SauveDateFin=ENR_ACCORD<6>
		
		W_SauveOrg = ENR_ACCORD<1>
		ENR_ACCORD<1> = W_CramGarde
		ENR_ACCORD<6>=W_DateFin
		W_SauveHres = ENR_ACCORD<9>
		ENR_ACCORD<9>=ENR_ACCORDCRAM<1>*100
		W_SauvePart = ENR_ACCORD<13,1>
		ENR_ACCORD<13,1> = "334"
		ENR_ACCORD<20>="O"
		W_SauveMax = ENR_ACCORD<22>
		ENR_ACCORD<22>=""

		WRITE ENR_ACCORD ON F.ACCORD,W_CleAcc

		* cre nouvel accord
		ENR_ACCORD<1> = W_SauveOrg
		ENR_ACCORD<5>=W_DateFin+1
		ENR_ACCORD<6>=W_SauveDateFin
		ENR_ACCORD<9>=W_SauveHres
		ENR_ACCORD<22>=W_SauveMax
		ENR_ACCORD<20>="O"
		ENR_ACCORD<11>=ENR_ACCORD<5>
		ENR_ACCORD<12>=""
		ENR_ACCORD<13>=W_SauvePart
		ENR_ACCORD<14>=""
		ENR_ACCORD<15>=""
		ENR_ACCORD<16>=""
		ENR_ACCORD<17>=""

		W_CleSuiv=W_CleAcc+1 "R%8"
         	READ W_Temp FROM F.ACCORD,W_CleSuiv THEN
			W_Trouve="FAUX"
			LOOP
			UNTIL W_Trouve="VRAI" DO
				W_CleSuiv=W_CleSuiv+1 "R%8"
				READ W_Temp FROM F.ACCORD,W_CleSuiv ELSE W_Trouve="VRAI"
			REPEAT
			WRITE ENR_ACCORD ON F.ACCORD,W_CleSuiv
		END ELSE
			WRITE ENR_ACCORD ON F.ACCORD,W_CleSuiv
		END

	END

RETURN

****************************************************************
* SI DATE DE DEBUT ACCORD < DATE DEBUT REDUCTION
30

	W_SauveHres = ENR_ACCORD<9>
	W_SauveMax = ENR_ACCORD<22>

	W_SauveDateFin=ENR_ACCORD<6>
	ENR_ACCORD<6>=W_DateDeb-1
	WRITE ENR_ACCORD ON F.ACCORD,W_CleAcc

	IF W_SauveDateFin <= W_DateFin THEN
		
		* cre nouvel accord
		ENR_ACCORD<1>  = W_CramGarde
		ENR_ACCORD<5>=W_DateDeb
		ENR_ACCORD<6>=W_SauveDateFin
		ENR_ACCORD<9>=ENR_ACCORDCRAM<1>*100
		ENR_ACCORD<22>=""
		ENR_ACCORD<20>="O"
		ENR_ACCORD<11>=ENR_ACCORD<5>
		ENR_ACCORD<12>=""
		ENR_ACCORD<13>="334"
		ENR_ACCORD<14>=""
		ENR_ACCORD<15>=""
		ENR_ACCORD<16>=""
		ENR_ACCORD<17>=""

		W_CleSuiv=W_CleAcc+1 "R%8"
         	READ W_Temp FROM F.ACCORD,W_CleSuiv THEN
			W_Trouve="FAUX"
			LOOP
			UNTIL W_Trouve="VRAI" DO
				W_CleSuiv=W_CleSuiv+1 "R%8"
				READ W_Temp FROM F.ACCORD,W_CleSuiv ELSE W_Trouve="VRAI"
			REPEAT
			WRITE ENR_ACCORD ON F.ACCORD,W_CleSuiv
		END ELSE
			WRITE ENR_ACCORD ON F.ACCORD,W_CleSuiv
		END


	END ELSE
		* cre nouvel accord
		ENR_ACCORD<5>=W_DateDeb
		ENR_ACCORD<6>=W_DateFin
		ENR_ACCORD<9>=ENR_ACCORDCRAM<1>*100
		ENR_ACCORD<22>=""
		ENR_ACCORD<20>="O"
		ENR_ACCORD<11>=ENR_ACCORD<5>
		ENR_ACCORD<12>=""
		ENR_ACCORD<13>=ENR_ACCORD<13,1>
		ENR_ACCORD<14>=""
		ENR_ACCORD<15>=""
		ENR_ACCORD<16>=""
		ENR_ACCORD<17>=""

		W_CleSuiv=W_CleAcc+1 "R%8"
         	READ W_Temp FROM F.ACCORD,W_CleSuiv THEN
			W_Trouve="FAUX"
			LOOP
			UNTIL W_Trouve="VRAI" DO
				W_CleSuiv=W_CleSuiv+1 "R%8"
				READ W_Temp FROM F.ACCORD,W_CleSuiv ELSE W_Trouve="VRAI"
			REPEAT
			WRITE ENR_ACCORD ON F.ACCORD,W_CleSuiv
		END ELSE
			WRITE ENR_ACCORD ON F.ACCORD,W_CleSuiv
		END

		* cre nouvel accord
		ENR_ACCORD<5>=W_DateFin+1
		ENR_ACCORD<6>=W_SauveDateFin
		ENR_ACCORD<9>=W_SauveHres
		ENR_ACCORD<22>=W_SauveMax
		ENR_ACCORD<20>="O"
		ENR_ACCORD<11>=ENR_ACCORD<5>
		ENR_ACCORD<12>=""
		*ENR_ACCORD<13>=ENR_ACCORD<13,1>
		ENR_ACCORD<14>=""
		ENR_ACCORD<15>=""
		ENR_ACCORD<16>=""
		ENR_ACCORD<17>=""

		W_CleSuiv=W_CleAcc+1 "R%8"
         	READ W_Temp FROM F.ACCORD,W_CleSuiv THEN
			W_Trouve="FAUX"
			LOOP
			UNTIL W_Trouve="VRAI" DO
				W_CleSuiv=W_CleSuiv+1 "R%8"
				READ W_Temp FROM F.ACCORD,W_CleSuiv ELSE W_Trouve="VRAI"
			REPEAT
			WRITE ENR_ACCORD ON F.ACCORD,W_CleSuiv
		END ELSE
			WRITE ENR_ACCORD ON F.ACCORD,W_CleSuiv
		END

	END

RETURN
