*PARAMETRES*
*Mise  jour des revenus imposables avec part patronale frais de sant*
*ATTENTION ! Traitement de mise  jour des revenus imposables. Saisir l'anne DADS (AAAA) |4N|TXT|O*
*FIN PARAMETRES*

*************************************************************
* Mise  jour des revenus imposables avec part patronale 	*
* frais de sant 											*
* A EXECUTER IMPERATIVEMENT APRES LA CLOTURE DE PAIE		*
* 												           	*
* vanessa - 02/12/2013 - DA 13100                          	*
*************************************************************

SUBROUTINE FRAISSANTEIMPOSABLE(RETURNVAL,PARAMETRES,W_Sortie)

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"

** Dclaration des fichiers **
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE RETURN
OPEN "","COMPTEUR" TO F.COMPTEUR ELSE RETURN
OPEN "","RUBCHARGE" TO F.RUBCHARGE ELSE RETURN
OPEN "","HISTORCUMUL" TO F.HISTORCUMUL ELSE RETURN
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE RETURN
OPEN "","FUSION" TO F.FUSION ELSE RETURN

********************************
* Rcupration des paramtres  *
********************************

W_Annee = PARAMETRES<1>

********************************
*     Dbut du traitement      *
********************************

ENR_FUSION="Code aidant;Revenu imposable avant traitement;Revenu imposable aprs"
W_Ind=2

IF LEN(W_Annee)=4 THEN
	READ ENR_COMPTEUR FROM F.COMPTEUR,"999" THEN
		IF ENR_COMPTEUR<37> # 1 THEN
		
			GOSUB 10
			
			IF W_TabRub # "" THEN
				W_CodeAsso="001"
				READ ENR_ASSO FROM F.ASSOCIATION,W_CodeAsso ELSE ENR_ASSO=""
				LOOP
				UNTIL ENR_ASSO=""
					IF ENR_ASSO<25>="1" THEN
						IF ENR_ASSO<48>=W_Annee THEN
							W_PerDeb=W_Annee:"01"
							W_PerFin=W_Annee:"11"					 
						END ELSE
							W_PerDeb=W_Annee-1:"12"
							W_PerFin=W_Annee:"11"
						END
					END ELSE
						W_PerDeb=W_Annee:"01"
						W_PerFin=W_Annee:"12"
					END
					
					GOSUB 20
					
					W_CodeAsso=W_CodeAsso+1 "R%3"			
					READ ENR_ASSO FROM F.ASSOCIATION,W_CodeAsso ELSE ENR_ASSO=""
				REPEAT
				
				ENR_COMPTEUR<37> = 1
				WRITE ENR_COMPTEUR ON F.COMPTEUR,"999"			
				WRITE ENR_FUSION ON F.FUSION,"MAJRevenuImposable.csv"
				
				W_Sortie="Traitement termin."
			END ELSE
				W_Sortie="Traitement annul : aucune rubrique paramtre avec une inclusion part patronale."
			END
		END ELSE
			W_Sortie="Le traitement de mise  jour des revenus imposables a dj t effectu."
		END
	END
END ELSE
	W_Sortie="Traitement annul : l'anne doit tre sur 4 caractres."
END

RETURN

*******************************************
* RECHERCHE LES CODES DES RUBRIQUES DE CHARGES 
10

W_TabRub=""
i=1
W_ReqRub=""

EXECUTE 'SSELECT RUBCHARGE AVEC 11 = "Montant" AND AVEC 15 = "Montant" AND AVEC 16 = "08" AND AVEC 31 = "1"'
EXECUTE 'SAUVE-LISTE W_ReqRub'
EXECUTE "LISTE W_ReqRub" RETURNING MSGCODE

IF MSGCODE<1> # 209 THEN
	SELECT F.RUBCHARGE TO W_ReqRub
	
	W_Fin="FAUX"
   	LOOP
		READNEXT W_Cle FROM W_ReqRub ELSE W_Fin = "VRAI"
   	WHILE W_Fin = "FAUX" DO
		W_TabRub<i>=W_Cle
		i=i+1
	REPEAT
	W_CountRub=DCOUNT(W_TabRub,CHAR(254))
END

RETURN

*******************************************
* SELECTION DETAILCALCUL
20

W_Req=""
W_SauveAidant=""
W_CumulNetImposable=0

EXECUTE 'SSELECT DETAILCALCUL AVEC CodAssoContratDetailCalcul = "':W_CodeAsso:'" AND AVEC ConvColContratDetailCalcul <> "02" AND AVEC PeriodeDetailCalcul >= "':W_PerDeb:'" AND AVEC PeriodeDetailCalcul <= "':W_PerFin:'" PAR CodeAidantDetailCalcul'
EXECUTE 'SAUVE-LISTE W_Req'
EXECUTE "LISTE W_Req" RETURNING MSGCODE

IF MSGCODE<1> # 209 THEN
	SELECT F.DETAILCALCUL TO W_Req
	
	W_Fin="FAUX"
   	LOOP
		READNEXT W_Cle FROM W_Req ELSE W_Fin = "VRAI"
   	WHILE W_Fin = "FAUX" DO
		READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_Cle THEN
			
			IF W_SauveAidant # W_Cle[1,5] THEN
				IF W_SauveAidant # "" THEN
					IF W_CumulNetImposable # 0 THEN
						W_CleHistorCumul=W_SauveAidant:W_Annee:W_CodeAsso
						READ ENR_HISTORCUMUL FROM F.HISTORCUMUL,W_CleHistorCumul THEN
							ENR_FUSION<W_Ind>=W_SauveAidant:";":ENR_HISTORCUMUL<6>:";":W_CumulNetImposable
							W_Ind=W_Ind+1
							ENR_HISTORCUMUL<6>=W_CumulNetImposable
							WRITE ENR_HISTORCUMUL ON F.HISTORCUMUL,W_CleHistorCumul
						END
					END
				END
				W_SauveAidant = W_Cle[1,5] 
				W_CumulNetImposable=0
			END
			
			FOR i8=1 TO DCOUNT(ENR_DETAILCALCUL<8>,CHAR(253))
				FOR iRub = 1 TO W_CountRub
					IF ENR_DETAILCALCUL<8,i8>=W_TabRub<iRub> THEN
						ENR_DETAILCALCUL<15>=ENR_DETAILCALCUL<15>+ENR_DETAILCALCUL<14,i8>
						WRITE ENR_DETAILCALCUL ON F.DETAILCALCUL,W_Cle
						W_CumulNetImposable=W_CumulNetImposable+ENR_DETAILCALCUL<15>
					END
				NEXT iRub
			NEXT i8
		END
	REPEAT
	
	IF W_CumulNetImposable # 0 THEN
		W_CleHistorCumul=W_SauveAidant:W_Annee:W_CodeAsso
		READ ENR_HISTORCUMUL FROM F.HISTORCUMUL,W_CleHistorCumul THEN
			ENR_FUSION<W_Ind>=W_SauveAidant:";":ENR_HISTORCUMUL<6>:";":W_CumulNetImposable
			W_Ind=W_Ind+1	
			ENR_HISTORCUMUL<6>=W_CumulNetImposable
			WRITE ENR_HISTORCUMUL ON F.HISTORCUMUL,W_CleHistorCumul
		END
	END
END

RETURN
