*************************************************
*	PROGRAMME DE VERIFICATION DES REPARTIONS	*
* Valentin							le 19/09/07 *
*************************************************

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

OPEN "","CONTRAT" TO F.CONTRAT ELSE PRINT "ERREUR OUVERTURE CONTRAT"
OPEN "","FUSION" TO F.FUSION ELSE PRINT "ERREUR OUVERTURE FUSION"

w_fini="non"
ENR_FUSION=""
W_ListeReq=""

*Dbut du traitement*
PRINT "PROGRAMME DE VERIFICATION DES REPARTITIONS"

W_Requete='SELECT CONTRAT AVEC 37 = "0" OR = "" AND AVEC 6 = "A"'

EXECUTE W_Requete
EXECUTE 'SAUVE-LISTE W_ListeReq'
EXECUTE "LISTE W_ListeReq" RETURNING MSGCODE

IF MSGCODE<1>=209 THEN
	W_Vide="VRAI"
END ELSE
    SELECT F.CONTRAT TO W_ListeReq
    
    LOOP
		READNEXT W_CLE FROM W_ListeReq ELSE w_fini="oui"
	UNTIL w_fini="oui"
		
		READ ENR_CONTRAT FROM F.CONTRAT,W_CLE ELSE ENR_CONTRAT=""
		
		**Si une seule activite et repartition=0 ou ="" alors repartition=100%
		IF DCOUNT(ENR_CONTRAT<36>,CHAR(253))=1 AND ENR_CONTRAT<37>="0" OR ENR_CONTRAT<37>="" AND DCOUNT(ENR_CONTRAT<36>,CHAR(253))=1 THEN
			ENR_FUSION<-1>=W_CLE:";Cas 1 activite => 100%"
			ENR_CONTRAT<37>="10000"
			WRITE ENR_CONTRAT ON F.CONTRAT,W_CLE
		END ELSE
			
			**Sinon on cumul le total des repartitions et on regarde si une des repartitions=0 ou =""
			w_bool="faux"
			Cumul=0
			FOR i=1 TO DCOUNT(ENR_CONTRAT<36>,CHAR(253))
				Cumul=Cumul+ENR_CONTRAT<37,i>
				IF ENR_CONTRAT<37,i>="0" OR ENR_CONTRAT<37,i>="" THEN
					w_bool="vrai"
				END
			NEXT i
			
			**Si une des repartitions=0 ou =""
			IF w_bool="vrai" THEN
				
				**Si le cumul des repartitions=100%
				IF Cumul="10000" THEN
					FOR i=1 TO DCOUNT(ENR_CONTRAT<36>,CHAR(253))
						IF ENR_CONTRAT<37,i>="0" OR ENR_CONTRAT<37,i>="" THEN
							ENR_CONTRAT=DELETE(ENR_CONTRAT,36,i)
							ENR_CONTRAT=DELETE(ENR_CONTRAT,37,i)
							ENR_FUSION<-1>=W_CLE:"Cas cumul = 100% et repartition a 0 ou a vide trouve"
						END
					NEXT i
				END ELSE
					
					**Sinon si cumul des repartitions different de 100%
					ENR_CONTRAT<37>="10000"
					ENR_CONTRAT<36>=ENR_CONTRAT<36,1>
					ENR_FUSION<-1>=W_CLE:"Cas cumul different de 100% et repartition a 0 ou a vide trouve"
				END
				
			END
			
		END
		
		WRITE ENR_CONTRAT ON F.CONTRAT,W_CLE
		
	REPEAT
	
	WRITE ENR_FUSION ON F.FUSION,"FichierContratRepartitionModifie.txt"
	PRINT "LE FICHIER FichierContratRepartitionModifie.txt A ETE GENERE DANS LE DOSSIER FUSION"
	PRINT "IL CONTIENT LA LISTE DES CONTRATS DONT LA REPARTITION DES ACTIVITES A ETE MODIFIEE"
END

EXECUTE 'EFFACER-LISTE W_ListeReq'
PRINT "TRAITEMENT TERMINE"

STOP