*********************************************************
* MOULINETTE DE MISE A JOUR DES CONGES D'ANCIENNETE     *
*                                                       *
* OCTOBRE 2000                          STEPHANE HERVET *
*********************************************************

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","CONVENTIONCOL" TO F.CONVENTIONCOL ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE PRINT "OUVERTURE CONTRAT" ;* en criture

W_PERIODE1="200004"
W_PERIODE=W_PERIODE1

FOR I=1 TO 6

  W_DEBUT="01/":W_PERIODE[5,2]:"/":W_PERIODE[1,4]
  W_FIN="01/":W_PERIODE[5,2]+1:"/":W_PERIODE[1,4]

  W_DEBUT=ICONV(W_DEBUT,"D4/")
  W_FIN=ICONV(W_FIN,"D4/")-1

  EXECUTE 'SSELECT CONTRAT AVEC 65 <> "O" AND AVEC 7 < "':W_FIN:'" AND AVEC 8 = "" OR = "':W_DEBUT:'"'

  W_FINI="FAUX"
  LOOP 
     READNEXT CLE ELSE W_FINI="VRAI"
     UNTIL W_FINI="VRAI" DO

     GOSUB 500
  REPEAT

  W_PERIODE=W_PERIODE1+I
NEXT I

STOP

*********************************************************
*********************************************************
* GESTION DE BASCULEMENT DES COMPTEURS

500 *

    * LECTURE CONTRAT EN COURS
    READ ENR_CONTRAT FROM F.CONTRAT,CLE ELSE
	 PRINT "ERREUR CONTRAT"
         STOP
    END

    W_CODECONVENTION=ENR_CONTRAT<1>

    * BASCULEMENT COMPTEUR
    READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,W_CODECONVENTION ELSE
	 PRINT "ERREUR CONVCOL"
   	 STOP
    END

    W_DATEDEBUTCONTRAT=OCONV(ENR_CONTRAT<7>,"D4/")
    W_DATEDEBUTCONTRAT=W_DATEDEBUTCONTRAT[7,4]:W_DATEDEBUTCONTRAT[4,2]

    IF ENR_CONVENTIONCOL<28>="0" OR ENR_CONVENTIONCOL<28>="" THEN
      IF W_PERIODE[5,2]="05" THEN    
	 * VERIFICATION SI BASCULEMENT CONGES ANCIENNETE EN MAI
	 IF ENR_CONVENTIONCOL<13>=1 THEN
	      GOSUB 700
	 END
      END
    END ELSE
      IF W_PERIODE[5,2]="12" THEN    
	 * VERIFICATION SI BASCULEMENT CONGES ANCIENNETE EN JANVIER
	 IF ENR_CONVENTIONCOL<13>=1 THEN
	      GOSUB 700
	 END
      END
    END
    * VERIFICATION SI BASCULEMENT CONGES ANCIENNETE MOIS ANNIVERSAIRE
    IF ENR_CONVENTIONCOL<13>=2 THEN

	 * CALCULE MOIS -1
	 W_DATEDEBUTCONTRATANC=W_DATEDEBUTCONTRAT

 	 IF W_DATEDEBUTCONTRATANC[5,2]<>"01" THEN 
	      W_DATEDEBUTCONTRATANC=W_DATEDEBUTCONTRATANC-1
	 END ELSE
	      W_DATEDEBUTCONTRATANC[1,4]=W_DATEDEBUTCONTRATANC[1,4]-1:"12"
	 END

	 IF W_DATEDEBUTCONTRATANC[5,2]=W_PERIODE[5,2] THEN
	      GOSUB 700
	 END	
    END         

    WRITE ENR_CONTRAT ON F.CONTRAT,CLE  

RETURN

*********************************************************
*********************************************************
* GESTION DE BASCULEMENT DES COMPTEURS DE CONGES ANCIENNETE

700 *

    * CALCUL DE L'ANCIENNETE DU CONTRAT
    W_DATECLOTURE=W_PERIODE+1
    * SI DATE CLOTURE > DECEMBRE
    IF W_DATECLOTURE[5,2]=13 THEN
	 W_DATECLOTURE=W_DATECLOTURE[1,4]+1:"01"
    END

    IF W_DATECLOTURE>"200003" AND W_CODECONVENTION="02" THEN W_DATECLOTURE="200003"

    W_ANCIENNETE=INT(W_DATECLOTURE-W_DATEDEBUTCONTRAT)/100

    BEGIN CASE

         * EMPLOYES DE MAISON OU AIDE A DOMICLIE
	 CASE W_CODECONVENTION="02" OR W_CODECONVENTION="01"		

	      * BLOCAGE ANCIENNETE DANS CCN 02 SI DEBUT CONTRAT >= 01/04/00
	      IF W_DATEDEBUTCONTRAT>="11780" AND W_CODECONVENTION="02" THEN
		   W_NBJOURANCIEN=0
	      END ELSE 
		   * GESTION HABITUELLE DES C.A
                   W_NBJOURANCIEN=INT(W_ANCIENNETE/5)
                   IF W_NBJOURANCIEN>4 THEN	
		        W_NBJOURANCIEN=4
	           END
	      END

         * FAMILLES RURALES
	 CASE W_CODECONVENTION="04"		
              W_NBJOURANCIEN=INT(W_ANCIENNETE/4)
              IF W_NBJOURANCIEN>5 THEN	
		   W_NBJOURANCIEN=5
	      END

         * TRAVAILLEUSES FAMILLIALES
	 CASE W_CODECONVENTION="06"		
              W_NBJOURANCIEN=INT(W_ANCIENNETE/5)*2
              IF W_NBJOURANCIEN>6 THEN	
		   W_NBJOURANCIEN=6
	      END

         * ADMR DU 6 MAI 1970
	 CASE W_CODECONVENTION="03"		
	      IF W_ANCIENNETE>=5 AND W_ANCIENNETE<=10 THEN
	           W_NBJOURANCIEN=2
	      END ELSE
		   IF W_ANCIENNETE>10 THEN
  		        W_NBJOURANCIEN=5
	           END
              END

    END CASE

    * MET A JOUR UNIQUEMENT DIFF. DE JOUR
    
    W_DIFF=((ENR_CONTRAT<47>*100)-ENR_CONTRAT<48>)
    ENR_CONTRAT<47>=W_NBJOURANCIEN
    IF W_DIFF<>0 THEN
        ENR_CONTRAT<48>=(ENR_CONTRAT<47>*100)-W_DIFF
    END ELSE
 	ENR_CONTRAT<48>=ENR_CONTRAT<47>*100
    END
RETURN
