
*********************************************************
* RATTRAPAGE TRANSPORT MAUBEUGE  ET ECRITURE DETAILPREST*
* 17/12/2003 ALAIN                                      *
*********************************************************


***************************
* Ouvertures des fichiers *
***************************

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","DETAILPREST" TO F.DETAILPREST ELSE STOP
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE STOP

*********************
* TRAITEMENT GLOBAL *
*********************
W_RESULTATDET = ""
W_RESULTATCONT = ""
PERIODEDETAIL = ""

PRINT "Saisissez la priode de dbut sous la forme AAAAMM"
INPUT W_PeriodeDeb

PRINT "Saisissez la priode de fin sous la forme AAAAMM"
INPUT W_PeriodeFin

MOIS = W_PeriodeFin[5,2]
AN = W_PeriodeFin[1,4]

MOIS = MOIS + 1

IF MOIS > 12 THEN
	MOIS = MOIS - 12
	AN = AN + 1
END

MOIS = MOIS "R(%2)"

EXECUTE 'COMO ON TRACETRANPORT'

PERIODEDETAIL = AN:MOIS
W_DATEDEB = ICONV("01/":MOIS:"/":AN,"D4/")

EXECUTE 'SSELECT CONTRAT AVEC 6 = "P" AND AVEC 7 <= "':W_DATEDEB:'" AND AVEC 8 => "':W_DATEDEB:'" OR = "" AND AVEC 65 = "" AND AVEC 36 = "001001" OR = "001008"'
EXECUTE 'SAUVE-LISTE W_RESULTATCONT' 
EXECUTE "LISTE W_RESULTATCONT" RETURNING MSGCODECONT

IF MSGCODECONT<1> # 209 THEN

	W_FINICONT = "FAUX"			
	CLE.CONTRAT = ""

	SELECT F.CONTRAT TO W_RESULTATCONT

	LOOP
		READNEXT CLE.CONTRAT FROM W_RESULTATCONT ELSE W_FINICONT="VRAI"
	WHILE W_FINICONT = "FAUX" DO

		READ ENR_CONTRAT FROM F.CONTRAT,CLE.CONTRAT ELSE ENR_CONTRAT = ""

		CUMUL29 = 0
		CUMULHRSTRAV = 0

		EXECUTE 'SSELECT DETAILCALCUL AVEC 0 = "':CLE.CONTRAT[1,5]:']" AND AVEC PeriodeDetailCalcul >= "':W_PeriodeDeb:'" AND AVEC PeriodeDetailCalcul <= "':W_PeriodeFin:'" AND AVEC FonctionContrat = "P" AND AVEC ContratSupp = "" AND AVEC ActiviteContratDetailCalcul = "001001" OR = "001008" PAR CodeAidantDetailCalcul PAR PeriodeDetailCalcul'
		EXECUTE 'SAUVE-LISTE W_RESULTATDET' 
		EXECUTE "LISTE W_RESULTATDET" RETURNING MSGCODEDET

		IF MSGCODEDET<1> # 209 THEN

			W_FINIDET = "FAUX"			

			SELECT F.DETAILCALCUL TO W_RESULTATDET

			LOOP
				READNEXT CLE.DETAILCALCUL FROM W_RESULTATDET ELSE W_FINIDET="VRAI"
			WHILE W_FINIDET = "FAUX" DO
				READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,CLE.DETAILCALCUL ELSE ENR_DETAILCALCUL = ""
				CLE.AIDANT = CLE.DETAILCALCUL[1,5]
				I = 1
				LOOP
				WHILE ENR_DETAILCALCUL<2,I> # "" DO
					READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,I> ELSE ENR_RUBSAISIE = ""
					IF ENR_RUBSAISIE<2> = "3" OR ENR_RUBSAISIE<2> = "4" THEN
						CUMULHRSTRAV = CUMULHRSTRAV + ENR_DETAILCALCUL<3,I>
					END
					I = I + 1
				REPEAT

				I = 1
				LOOP
				WHILE ENR_DETAILCALCUL<17,I> # "" DO
					IF ENR_DETAILCALCUL<17,I> = "029" THEN
						CUMUL29 = CUMUL29 + ENR_DETAILCALCUL<20,I>
					END
					I = I + 1
				REPEAT

			REPEAT

			EXECUTE 'EFFACER-LISTE W_RESULTATDET'
			
			CUMUL29 = CUMUL29/100
			CUMULHRSTRAV = ((CUMULHRSTRAV/100)*(17/100))
			PRINT CLE.CONTRAT:' CUM29 : ':CUMUL29:' CUMHRSTRAV : ':CUMULHRSTRAV 
			IF CUMULHRSTRAV > CUMUL29 THEN
				CUMULHRSTRAV = INT(((CUMULHRSTRAV-CUMUL29)*100)+(1/2))
				READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,CLE.CONTRAT:PERIODEDETAIL ELSE ENR_DETAILCALCUL = "RIEN"
				IF ENR_DETAILCALCUL = "RIEN" THEN
					READ ENR_DETAILPREST FROM F.DETAILPREST,CLE.CONTRAT:PERIODEDETAIL ELSE ENR_DETAILPREST = ""
					ENR_DETAILPREST<5,-1> = "119"
					ENR_DETAILPREST<6,-1> = "0"
					ENR_DETAILPREST<7,-1> = "0"
					ENR_DETAILPREST<8,-1> = CUMULHRSTRAV

					I = 1
					TROUV = "FAUX"

					LOOP
					WHILE ENR_CONTRAT<36,I> # "" AND TROUV # "VRAI" DO
						IF ENR_CONTRAT<36,I> = "001001" OR ENR_CONTRAT<36,I> = "001008" THEN
							TROUV = "VRAI"
							ENR_DETAILPREST<9,-1> = ENR_CONTRAT<36,I>
						END
						I = I + 1
					REPEAT
					
					IF TROUV = "VRAI" THEN
						PRINT 'enrg : ':CLE.CONTRAT
						WRITE ENR_DETAILPREST ON F.DETAILPREST,CLE.CONTRAT:PERIODEDETAIL
					END
				END
			END
		END
	REPEAT
END

EXECUTE 'EFFACER-LISTE W_RESULTATCONT'
EXECUTE 'COMO OFF'

STOP
