
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE PRINT "OUVERTURE ASSOCIATION" ;* en lecture
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE PRINT "OUVERTURE CIVILAIDANT" ;* en lecture
OPEN "","CONTRAT" TO F.CONTRAT ELSE PRINT "OUVERTURE CONTRAT" ;* en lecture
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE PRINT "OUVERTURE DETAILCALCUL" ;* en lecture
OPEN "","ETABLISSEMENT" TO F.ETABLISSEMENT ELSE PRINT "OUVERTURE ETABLISSEMENT" ;* en lecture
OPEN "","FUSION" TO F.FUSION ELSE PRINT "OUVERTURE FUSION" ;* en lecture criture
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE PRINT "OUVERTURE RUBSAISIE" ;* en lecture

READ ENR_ASSOCIATION FROM F.ASSOCIATION,"001" ELSE ENR_ASSOCIATION=""

FOR Boucle=1 TO 2
	IF ENR_ASSOCIATION<25>="0" THEN
		IF Boucle=1 THEN
			W_Debut="200601"
			W_Fin="200612"
		END ELSE
			W_Debut="200701"
			W_Fin="200712"		
		END
	END ELSE
		IF Boucle=1 THEN	
			W_Debut="200512"
			W_Fin="200611"	
		END ELSE
			W_Debut="200612"
			W_Fin="200711"			
		END
	END
	
	EXECUTE 'SELECT DETAILCALCUL AVEC PeriodeDetailCalcul >= "':W_Debut:'" AND AVEC PeriodeDetailCalcul <= "':W_Fin:'" AND AVEC 2 = "804" AND AVEC 8 = "904" OR = "907" PAR CodAssoContratDetailCalcul PAR CodEtabContrat PAR PeriodeDetailCalcul PAR NomPrenomAidantDetailCalcul'
	
	W_End="FAUX"
	W_Ind=2
	W_Temp=""
	
	LOOP
		READNEXT W_Cle ELSE W_End = "VRAI"
	WHILE W_End = "FAUX" DO
		READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_Cle ELSE ENR_DETAILCALCUL=""
		
		GOSUB 20
		i=1
		LOOP
		UNTIL ENR_DETAILCALCUL<2,i>="804"
			i=i+1
		REPEAT
		
		IF ENR_DETAILCALCUL<2,i>="804" AND ENR_DETAILCALCUL<3,i>="" THEN
		
	 		READ ENR_CONTRAT FROM F.CONTRAT,W_Cle[1,8] ELSE ENR_CONTRAT=""
			READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_Cle[1,5] ELSE ENR_CIVILAIDANT=""
			READ ENR_ASSOCIATION FROM F.ASSOCIATION,ENR_CONTRAT<2> ELSE ENR_ASSOCIATION=""
	 		READ ENR_ETABLISSEMENT FROM F.ETABLISSEMENT,ENR_CONTRAT<3> ELSE ENR_ETABLISSEMENT=""

			W_Temp<W_Ind>=ENR_ASSOCIATION<1>:";":ENR_ETABLISSEMENT<1>:";":W_Cle[9,6]:";":W_Cle[1,5]:";":ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>:";"
			
			* valeurs actuelles			
			j=1
			LOOP UNTIL ENR_DETAILCALCUL<8,j>="904" OR ENR_DETAILCALCUL<8,j>="907"
				j=j+1
			REPEAT
			W_SalaireSoumis = ENR_DETAILCALCUL<9,j> / 100
			W_BaseCalcul = W_SalaireSoumis
			IF ENR_DETAILCALCUL<32> = "" THEN
				ENR_DETAILCALCUL<32> = 0
			END
			W_Coefficient = ENR_DETAILCALCUL<32> / 1000
	        IF ENR_DETAILCALCUL<53> # "" THEN
	            W_ReductionGlobale = ENR_DETAILCALCUL<53> / 100
	        END ELSE
	            W_ReductionGlobale = ENR_DETAILCALCUL<14,j> / 100 * (-1)
	        END
			W_HrePayees = ENR_DETAILCALCUL<6> / 100
			W_HreMaladie = ENR_DETAILCALCUL<31> / 100
			W_HreTotales = W_HrePayees + W_HreMaladie
			W_Reduction = ENR_DETAILCALCUL<14,j> / 100
			W_Temp<W_Ind>=W_Temp<W_Ind>:W_SalaireSoumis:";":W_BaseCalcul:";":W_Coefficient:";":W_ReductionGlobale:";":W_HrePayees:";":W_HreMaladie:";":W_HreTotales:";":W_Reduction:";"
			
			* valeurs recalcules
			W_Count=DCOUNT(ENR_DETAILCALCUL<2>,CHAR(253))
			W_TxHor=0
			FOR j=1 TO W_Count
				READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,j> ELSE ENR_RUBSAISIE=""
				IF ENR_RUBSAISIE<8>="2" AND ENR_RUBSAISIE<9>="1000000" THEN
					W_TxHor=ENR_DETAILCALCUL<4,j>/10000
					EXIT
				END
			NEXT j
			IF W_TxHor=0 THEN
				PRINT "Anomalie taux horaire : ":W_Cle:" ":ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>
			END ELSE
				W_BaseCPSolde=ENR_DETAILCALCUL<5,i>/W_TxHor
				W_BaseCPSolde=INT(W_BaseCPSolde+(1/2))
				W_HrePayees=W_HrePayees+(W_BaseCPSolde/100)
				W_HreTotales = W_HrePayees + W_HreMaladie
				
				GOSUB 10
				j=1
				LOOP UNTIL ENR_DETAILCALCUL<8,j>="904" OR ENR_DETAILCALCUL<8,j>="907"
					j=j+1
				REPEAT
				IF ENR_DETAILCALCUL<8,j>="904" THEN
					W_COEFFICIENTREDUC=INT((26/60)*((16*(ValSmicHor*W_HreTotales/W_SalaireSoumis))/1000-1)*1000+1/2)
				    IF W_COEFFICIENTREDUC>260 THEN W_COEFFICIENTREDUC=260
				    IF W_COEFFICIENTREDUC<0 THEN W_COEFFICIENTREDUC=0
				    W_REDUCNETTE=INT((W_COEFFICIENTREDUC*(W_SalaireSoumis*100)/1000)+1/2)					
				END
				IF ENR_DETAILCALCUL<8,j>="907" THEN
					W_COEFFICIENTREDUC=INT((281/600)*((16*(ValSmicHor*W_HreTotales/W_SalaireSoumis))/1000-1)*1000+1/2)
					IF W_COEFFICIENTREDUC>281 THEN W_COEFFICIENTREDUC=281
					IF W_COEFFICIENTREDUC<0 THEN W_COEFFICIENTREDUC=0
					W_REDUCNETTE=INT((W_COEFFICIENTREDUC*(W_SalaireSoumis*100)/1000)+1/2)					
				END				
				W_Temp<W_Ind>=W_Temp<W_Ind>:W_COEFFICIENTREDUC/1000:";":W_REDUCNETTE/100:";":W_HrePayees:";":W_HreMaladie:";":W_HreTotales:";":(W_REDUCNETTE/100)*(-1)
				
				W_Ind=W_Ind+1				
			END
			
		END
		
	REPEAT
	
	WRITE W_Temp ON F.FUSION,"REDUCFILLON":W_Fin[1,4]:".csv"
	
NEXT Boucle

STOP

**************************************************************************
* dtermination de la valeur du smic
10

W_Periode=W_Cle[9,6]
IF ENR_ASSOCIATION<25>="0" THEN
	IF W_Periode < 200607 THEN
		ValSmicHor=803
	END ELSE
		IF W_Periode < 200707 THEN	
			ValSmicHor=827
		END ELSE
			ValSmicHor=844		
		END
	END
END ELSE
	IF W_Periode < 200606 THEN
		ValSmicHor=803
	END ELSE
		IF W_Periode < 200706 THEN	
			ValSmicHor=827
		END ELSE
			ValSmicHor=844		
		END
	END
END

RETURN

**************************************************************************
* entte
20

W_Temp<1>="Entit juridique;Etablissement;Priode;Code;Nom prnom aidant;Salaire soumis;Base calcul;Coefficient;Rduction globale;Heures payes;Heures maladie;Heures totales;Rduction;"
W_Temp<1>=W_Temp<1>:"Coefficient modif;Rduction globale modif;Heures payes modif;Heures maladie modif;Heures totales modif;Rduction modif"

RETURN
