* COMPARAISON DES CUMUL DES DETAILCALCUL ET DES HISTORCUMULS *
**PRINTER ON
EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","HISTORCUMUL" TO F.HISTORCUMUL ELSE STOP
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","ASSOCIATION" TO F.ASSOCIATION ELSE STOP
OPEN "","RUBSAISIE" TO F.RUBSAISIE ELSE STOP
OPEN "","RUBCHARGE" TO F.RUBCHARGE ELSE STOP
OPEN "","PROFIL" TO F.PROFIL ELSE STOP
OPEN "","TRANCHE" TO F.TRANCHE ELSE STOP

COMPTEUR=0
PASSE=0
***********
* REQUETE *
***********
	EXECUTE 'SSELECT DETAILCALCUL AVEC ConvColContratDetailCalcul # "02" AND AVEC PeriodeDetailCalcul >= "200101" AND AVEC PeriodeDetailCalcul <= "200105" PAR CodeAidantDetailCalcul PAR CodEtabContrat'
	EXECUTE 'SAUVE-LISTE W_REQDETAIL'
	EXECUTE "LISTE W_REQDETAIL" RETURNING MSGCODE	

	IF MSGCODE<1>#209 THEN
		SELECT F.DETAILCALCUL TO W_REQDETAIL
		GOSUB 100
	END
PRINT COMPTEUR
STOP

*************************************************
* PARCOURS DES DETAILCALCUL ET CUMUL PAR AIDANT *
*************************************************
100

	W_ANCIENAIDANT=""
	W_ANCIENEMPLOYEUR=""
	W_Fini="FAUX"
	LOOP
   		READNEXT W_CLE FROM W_REQDETAIL ELSE W_Fini="VRAI"
		W_CODECONTRAT=W_CLE
	WHILE W_Fini="FAUX" DO

		IF W_ANCIENAIDANT="" THEN
			W_ANCIENAIDANT=W_CLE[1,5]
			READ ENR_CONTRAT FROM F.CONTRAT,W_CLE[1,8] THEN
				W_ANCIENEMPLOYEUR=ENR_CONTRAT<3>
			END ELSE
				PRINT "PAS DE CONTRAT"
			END
			W_CUMUL7=0
			W_CUMUL5=0
		END

		READ ENR_CONTRAT FROM F.CONTRAT,W_CLE[1,8] ELSE PRINT "PAS DE CONTRAT"

		IF W_ANCIENAIDANT=W_CLE[1,5] AND W_ANCIENEMPLOYEUR=ENR_CONTRAT<3> AND LEN(W_ANCIENEMPLOYEUR)=LEN(ENR_CONTRAT<3>) THEN
			GOSUB 300
		END ELSE
			GOSUB 200
			PASSE=0
			W_CUMUL5=0
			W_CUMUL7=0
			W_ANCIENAIDANT=W_CLE[1,5]
			W_ANCIENEMPLOYEUR=ENR_CONTRAT<3>
			GOSUB 300
		END

	REPEAT
	GOSUB 200

RETURN

**********************************************
* RECHERCHE POUR COMPARAISON SUR HISTORCUMUL *
**********************************************
200

	W_CUMUL5=0

	IF LEN(W_ANCIENEMPLOYEUR)=6 THEN
		W_CLERECH=W_ANCIENEMPLOYEUR[1,3]
	END ELSE
		W_CLERECH=W_ANCIENEMPLOYEUR
	END

	READ ENR_HISTORCUMUL FROM F.HISTORCUMUL,W_ANCIENAIDANT:"2001":W_CLERECH THEN
		W_CUMUL5=ENR_HISTORCUMUL<5>
		IF W_CUMUL5 # W_CUMUL7 THEN
                        COMPTEUR=COMPTEUR+1
			READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_ANCIENAIDANT THEN
                                WNOMAIDANT=ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>
                                WNOMAIDANT=WNOMAIDANT  "L#25"
				PRINT W_ANCIENAIDANT:" ":WNOMAIDANT:" ":W_ANCIENEMPLOYEUR "R#6":" DIFF D-H ":W_CUMUL7-W_CUMUL5 "R#10"
			END ELSE 
				PRINT "PAS CIVILAIDANT AVEC HISTOR ":W_ANCIENAIDANT
			END
		END ELSE
                        PRINT "PAS DE PB SUR HISTORCUMUL ":W_ANCIENAIDANT
                END
	END ELSE
                COMPTEUR=COMPTEUR+1
		READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_ANCIENAIDANT THEN
                        WNOMAIDANT=ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>
                        WNOMAIDANT=WNOMAIDANT  "L#25"
			PRINT W_ANCIENAIDANT:" PAS HISTOR ":WNOMAIDANT:" ":W_ANCIENEMPLOYEUR "R#6":" DIFF D-H ":W_CUMUL7 "R#10"
		END ELSE 
			PRINT W_ANCIENAIDANT:" PAS CIVILAIDANT"
		END

	END

RETURN

**********************
* CUMUL DETAILCALCUL *
**********************
300
	READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CLE THEN
		W_CUMUL7=W_CUMUL7+ENR_DETAILCALCUL<7>
	END ELSE
		PRINT "DETAILCALCUL"
	END
	GOSUB 999

	PASSE=PASSE+1

RETURN


**********************
* MAJ HISTORCUMUL    *
**********************

999

  W_CodeAidant=W_CODECONTRAT
  W_CleContrat=W_CODECONTRAT[1,8]

  * test si dcallage de paie
  READ ENR_ASSOCIATION FROM F.ASSOCIATION,ENR_CONTRAT<2> ELSE ENR_ASSOCIATION="" 
  IF ENR_ASSOCIATION<25> = "1" AND ENR_CONTRAT<1> # "02" AND ENR_CONTRAT<81>[5,2] = "12" THEN
     W_CodeAnnee=ENR_CONTRAT<81>[1,4] + 1
  END ELSE
     W_CodeAnnee=ENR_CONTRAT<81>[1,4]
  END

  W_CodeAnnee="2001"

  IF ENR_CONTRAT<1>="02" THEN
     W_CleHistorCumul=W_CodeAidant[1,5]:W_CodeAnnee:ENR_CONTRAT<3>
  END ELSE 
     W_CleHistorCumul=W_CodeAidant[1,5]:W_CodeAnnee:ENR_CONTRAT<2>
  END

  READ ENR_HISTORCUMUL FROM F.HISTORCUMUL,W_CleHistorCumul ELSE ENR_HISTORCUMUL=""
  IF PASSE=0 THEN ENR_HISTORCUMUL=""

  IF ENR_HISTORCUMUL<11>="" AND ENR_CONTRAT<7> >= ICONV("01/01/":W_CodeAnnee[1,4],"D4/") AND ENR_CONTRAT<7> <= ICONV("31/12/":W_CodeAnnee[1,4],"D4/") THEN
     ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,11;ENR_CONTRAT<7>)
  END
  IF ENR_HISTORCUMUL<12>="" AND ENR_CONTRAT<8> >= ICONV("01/01/":W_CodeAnnee[1,4],"D4/") AND ENR_CONTRAT<8> <= ICONV("31/12/":W_CodeAnnee[1,4],"D4/") THEN
     ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,12;ENR_CONTRAT<8>)
  END
  IF ENR_HISTORCUMUL<12> # "" AND ENR_CONTRAT<7> # ENR_HISTORCUMUL<11> AND ENR_CONTRAT<7> >= ICONV("01/01/":W_CodeAnnee[1,4],"D4/") AND ENR_CONTRAT<7> <= ICONV("31/12/":W_CodeAnnee[1,4],"D4/") THEN
     ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,13;ENR_CONTRAT<7>)
  END
  IF ENR_HISTORCUMUL<12> # "" AND ENR_CONTRAT<8> # ENR_HISTORCUMUL<12> AND ENR_CONTRAT<8> >= ICONV("01/01/":W_CodeAnnee[1,4],"D4/") AND ENR_CONTRAT<8> <= ICONV("31/12/":W_CodeAnnee[1,4],"D4/") THEN
     ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,14;ENR_CONTRAT<8>)
  END

  READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_CODECONTRAT ELSE ENR_DETAILCALCUL="" 
  ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,2;ENR_HISTORCUMUL<2>+ENR_DETAILCALCUL<6>)

  IF ENR_DETAILCALCUL<6> >= 6000 THEN
     W_Mois=ENR_CONTRAT<81>
     ENR_HISTORCUMUL<3>=W_Mois[5,2]
  END

  ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,4;ENR_HISTORCUMUL<4>+ENR_DETAILCALCUL<29>)
  W_CumulBrut=ENR_HISTORCUMUL<5>
  ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,5;ENR_HISTORCUMUL<5>+ENR_DETAILCALCUL<7>)
  ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,6;ENR_HISTORCUMUL<6>+ENR_DETAILCALCUL<15>)
  ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,7;ENR_HISTORCUMUL<7>+ENR_DETAILCALCUL<16>)

  W_Temp=DCOUNT(ENR_DETAILCALCUL<2>,CHAR(253))

  FOR i=1 TO W_Temp
     
     READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<2,i> ELSE ENR_RUBSAISIE="" 

     IF ENR_RUBSAISIE<2>="3" OR ENR_RUBSAISIE<2>="4" THEN
        ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,1;ENR_HISTORCUMUL<1>+ENR_DETAILCALCUL<3,i>)
     END

     IF ENR_RUBSAISIE<2>="0" THEN
        ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,8;ENR_HISTORCUMUL<8>+ENR_DETAILCALCUL<5,i>)

        W_Count=DCOUNT(ENR_HISTORCUMUL<9>,CHAR(253))
	IF W_Count < 4 THEN
           W_Passe="FALSE"
           FOR j=1 TO W_Count
               IF ENR_RUBSAISIE<3>=ENR_HISTORCUMUL<9,j> THEN
                   W_Passe="TRUE"
               END 
           NEXT j 
           IF W_Passe="FALSE" THEN
	     ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,9,W_Count+1;ENR_RUBSAISIE<3>)
	   END
 	END

     END
  NEXT i

  W_Temp=DCOUNT(ENR_DETAILCALCUL<17>,CHAR(253))

  FOR i=1 TO W_Temp
     READ ENR_RUBSAISIE FROM F.RUBSAISIE,ENR_DETAILCALCUL<17,i> ELSE ENR_RUBSAISIE="" 
     IF ENR_RUBSAISIE<2>="2" THEN
        ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,10;ENR_HISTORCUMUL<10>+ENR_DETAILCALCUL<20,i>)
     END
  NEXT i
  
  i=1
  LOOP
  WHILE ENR_DETAILCALCUL<8,i> # "" DO
      j=1
      LOOP
      WHILE ENR_DETAILCALCUL<8,i> # ENR_HISTORCUMUL<15,j> AND ENR_HISTORCUMUL<15,j> # "" DO
	  j=j+1
      REPEAT		
      IF ENR_DETAILCALCUL<8,i>=ENR_HISTORCUMUL<15,j> THEN
  	  ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,16,j;ENR_HISTORCUMUL<16,j>+ENR_DETAILCALCUL<28,i>)
	  IF ENR_DETAILCALCUL<9,i>="" THEN  
 	       ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,17,j;ENR_HISTORCUMUL<17,j>+ENR_DETAILCALCUL<12,i>)
	  END ELSE
	       ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,17,j;ENR_HISTORCUMUL<17,j>+ENR_DETAILCALCUL<9,i>)
	  END
  	  ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,18,j;ENR_HISTORCUMUL<18,j>+ENR_DETAILCALCUL<11,i>)
  	  ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,19,j;ENR_HISTORCUMUL<19,j>+ENR_DETAILCALCUL<14,i>)
      END ELSE	
          IF ENR_HISTORCUMUL<15,j> = "" THEN

	      W_Count=DCOUNT(ENR_HISTORCUMUL<15>,CHAR(253))
	      ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,15,W_Count+1;ENR_DETAILCALCUL<8,i>)
	      
	      READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_DETAILCALCUL<8,i> ELSE ENR_RUBCHARGE="" 

	      IF ENR_RUBCHARGE<18>="3" THEN
	           ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,16,W_Count+1;W_CumulBrut+ENR_DETAILCALCUL<28,i>)
	           IF ENR_DETAILCALCUL<9,i>="" THEN
	              ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,17,W_Count+1;W_CumulBrut+ENR_DETAILCALCUL<12,i>)
                   END ELSE
	              ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,17,W_Count+1;W_CumulBrut+ENR_DETAILCALCUL<9,i>)
                   END
	      END ELSE
	           ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,16,W_Count+1;ENR_HISTORCUMUL<16,W_Count+1>+ENR_DETAILCALCUL<28,i>)
	           IF ENR_DETAILCALCUL<9,i>="" THEN
	              ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,17,W_Count+1;ENR_HISTORCUMUL<17,W_Count+1>+ENR_DETAILCALCUL<12,i>)
                   END ELSE
	              ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,17,W_Count+1;ENR_HISTORCUMUL<17,W_Count+1>+ENR_DETAILCALCUL<9,i>)
                   END
  	      END
	      ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,18,W_Count+1;ENR_HISTORCUMUL<18,W_Count+1>+ENR_DETAILCALCUL<11,i>)
  	      ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,19,W_Count+1;ENR_HISTORCUMUL<19,W_Count+1>+ENR_DETAILCALCUL<14,i>)
	  END
      END		
      i=i+1	
  REPEAT

  W_RUBAFFECT=""
  * GESTION DES HISTORIQUES // PROFILS DE PAIE DANS CONTRAT
  READ ENR_PROFIL FROM F.PROFIL,ENR_CONTRAT<26> THEN
       GOSUB 1000
  END

  IF ENR_CONTRAT<64><>"" THEN
       READ ENR_PROFIL FROM F.PROFIL,ENR_CONTRAT<64> THEN
            GOSUB 1000
       END
  END

  IF ENR_HISTORCUMUL<8> = "" THEN
     ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,8;"0")
  END 

  IF ENR_HISTORCUMUL<10> = "" THEN
     ENR_HISTORCUMUL=REPLACE(ENR_HISTORCUMUL,10;"0")
  END 

   * WRITE ENR_HISTORCUMUL ON F.HISTORCUMUL,W_CleHistorCumul
   * mis en commentaire le 03/06/02 - Michael
RETURN

*********************************************************
*********************************************************
1000 *

      I=1
      LOOP
	   UNTIL ENR_PROFIL<3,I>="" DO

	   * LECTURE RUB CHARGE DU PROFIL
	   READ ENR_RUBCHARGE FROM F.RUBCHARGE,ENR_PROFIL<3,I> THEN
		* LECTURE TRANCHE
		READ ENR_TRANCHE FROM F.TRANCHE,ENR_RUBCHARGE<2> THEN   
  	          * SI TRANCHE APPLI. = 03 OU 04
		  IF ENR_TRANCHE<10>="03" OR ENR_TRANCHE<10>="04" THEN
		    * PARCOURS DETAILCALCUL POUR VOIR SI RUB TRAITEE
		    J=1
		    LOOP
			 UNTIL ENR_DETAILCALCUL<8,J>=ENR_PROFIL<3,I> OR ENR_DETAILCALCUL<8,J>="" DO
			 J=J+1
		    REPEAT
		    * SI RUB PAS TROUVEE
		    IF ENR_DETAILCALCUL<8,J>="" THEN
			 * RECHERCHE DANS HISTORCUMUL
			 K=1
			 LOOP 
			      UNTIL ENR_HISTORCUMUL<15,K>=ENR_PROFIL<3,I> OR ENR_HISTORCUMUL<15,K>="" DO
			      K=K+1
			 REPEAT
			 * SI RUB TROUVEE DANS HISTORCUMUL
			 IF ENR_HISTORCUMUL<15,K><>"" THEN
			      * RECHERCHE DANS W_RUBAFFECT
			      L=1
			      LOOP 
				   UNTIL W_RUBAFFECT<L>=ENR_PROFIL<3,I> OR W_RUBAFFECT<L>="" DO
				   L=L+1
			      REPEAT
			      IF W_RUBAFFECT<L>="" THEN
				   W_RUBAFFECT<-1>=ENR_PROFIL<3,I>
  			           ENR_HISTORCUMUL<16,K>=ENR_HISTORCUMUL<16,K>+ENR_DETAILCALCUL<7>
			      END
			 END ELSE
			      W_RUBAFFECT<-1>=ENR_PROFIL<3,I>
			      ENR_HISTORCUMUL<15,-1>=ENR_PROFIL<3,I>
			      ENR_HISTORCUMUL<16,-1>=ENR_DETAILCALCUL<7>
			      ENR_HISTORCUMUL<17,-1>="0"
			      ENR_HISTORCUMUL<18,-1>="0"
			      ENR_HISTORCUMUL<19,-1>="0"
			 END
		    END
 		  END
		END
	   END
	   I=I+1
      REPEAT
RETURN
