********************************************
* REGARDE NBRE JOURS ABS POUR MALADIE      *
* EN PRESTATAIRE DE XX/XX/XXXX->YY/YY/YYYY *
*                                          *
* 03/12/01                        STEPHANE *
********************************************

EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "","CONVENTIONCOL" TO F.CONVENTIONCOL ELSE STOP
OPEN "","ABSENCESAIDANT" TO F.ABSENCESAIDANT ELSE STOP
OPEN "","CONTRAT" TO F.CONTRAT ELSE STOP

* INITIALISE LISTE
CONTRAT=""
ABS=""

PRINT "PERIODE DE DEBUT DE TRAITEMENT DES CONGES "
INPUT W_DEBUTMAL

PRINT "PERIODE DE FIN DE TRAITEMENT DES CONGES "
INPUT W_FINMAL

PRINT "CONVENTION COLLECTIVE A TRAITER "
INPUT W_CONVCOL

1
PRINT "CONSULTATION SUR ECRAN OU IMPRIMANTE OU MISE A JOUR DES ERREURS (C/I/M)"
INPUT W_CHOIX

IF W_CHOIX#"C" AND W_CHOIX#"I" AND W_CHOIX#"M" THEN GOTO 1
W_DEBUTMAL=ICONV(W_DEBUTMAL,"D4/")
W_FINMAL=ICONV(W_FINMAL,"D4/")

* VERIFIE SI CONTRAT ACTIF AU 01/11/01
EXECUTE 'SSELECT CONTRAT AVEC 1 = "':W_CONVCOL:'" AND AVEC 7 <= "':W_FINMAL:'" AND AVEC 8 >= "':W_FINMAL:'" OR = "" AND AVEC 65 <> "O"'
EXECUTE 'SAUVE-LISTE CONTRAT'
EXECUTE "LISTE CONTRAT" RETURNING W_MSG
SELECT F.CONTRAT TO CONTRAT

IF W_MSG<1>="209" THEN STOP

IF W_CHOIX="I" THEN 
	PRINTER ON
	W_CHOIX="C"
END

W_FINI=0
W_CODE=""
W_DUREEABS=0

* LECTURE CONVENTION COLLECTIVE
READ ENR_CONVENTIONCOL FROM F.CONVENTIONCOL,W_CONVCOL ELSE ENR_CONVENTIONCOL=""

LOOP
     READNEXT CLECONTRAT FROM CONTRAT ELSE W_FINI=1
     UNTIL W_FINI=1 DO

     READ ENR_CONTRAT FROM F.CONTRAT,CLECONTRAT ELSE ENR_CONTRAT=""

     IF ENR_CONTRAT<7><W_DEBUTMAL THEN ENR_CONTRAT<7>=W_DEBUTMAL

     * CALCUL NBRE DE JOURS TRAVAIL EFFECTIF
     W_FINJR=0
     W_NBTOUR=0

     W_FINMAL2=OCONV(W_FINMAL,"D4/")
     LOOP
	  UNTIL W_FINJR=1 DO

	  IF W_FINMAL2[4,2]>="06" THEN
		W_NBTOUR=W_NBTOUR+1
	  END
	
	  W_FINMAL2[7,4]=W_FINMAL2[7,4]-1

	  IF INT(ICONV(W_FINMAL2,"D4/"))<INT(ENR_CONTRAT<7>) THEN W_FINJR=1
     REPEAT
     W_DUREEMALAUTO=ENR_CONVENTIONCOL<17>*W_NBTOUR

     * VERIFIE SI ABS SUR CONTRAT
     EXECUTE 'SSELECT ABSENCESAIDANT AVEC @ID = "':CLECONTRAT[1,5]:']" AND AVEC NumMotifAidant = "01" AND AVEC DebAbsAidant <= "':W_FINMAL:'" AND AVEC 2 >= "':ENR_CONTRAT<7>:'" PAR CodeAidant'
     EXECUTE 'SAUVE-LISTE ABS'
     EXECUTE "LISTE ABS" CAPTURING MSG RETURNING W_MSG
     SELECT F.ABSENCESAIDANT TO ABS

     IF W_MSG<1><>209 THEN 
           * RECHERCHE NB JOUR / CONTRAT
	   W_FIN=0
	   LOOP
		 READNEXT CLE FROM ABS ELSE W_FIN=1
		 UNTIL W_FIN=1 DO

	         READ ENR_ABSENCESAIDANT FROM F.ABSENCESAIDANT,CLE ELSE ENR_ABSENCESAIDANT=""
		
	         IF ENR_ABSENCESAIDANT<2>>W_FINMAL THEN ENR_ABSENCESAIDANT<2>=W_FINMAL
	         IF CLE[8,5]<W_DEBUTMAL THEN 
	   	     W_DEBUT=W_DEBUTMAL
		 END ELSE
	  	     W_DEBUT=CLE[8,5]
		 END

		 W_ABS=0
		 W_ABS=ENR_ABSENCESAIDANT<2>-W_DEBUT
		 W_DUREEABS=W_DUREEABS+(W_ABS+1)
           REPEAT

           IF W_DUREEABS>W_DUREEMALAUTO AND ENR_CONTRAT<70>#(W_DUREEABS-W_DUREEMALAUTO) THEN
	       IF W_CHOIX="C" THEN
		       PRINT CLECONTRAT:" DEBUT CONTRAT = ":OCONV(ENR_CONTRAT<7>,"D4/"):" FIN CONTRAT = ":OCONV(ENR_CONTRAT<8>,"D4/"):" JRS SUSP = ":ENR_CONTRAT<70>:" DUREE ABS = ":W_DUREEABS:" JRS AUTO = ":W_DUREEMALAUTO:" CUMUL = ":W_DUREEABS-W_DUREEMALAUTO
	       END ELSE
		       ENR_CONTRAT<70>=W_DUREEABS-W_DUREEMALAUTO
		       WRITE ENR_CONTRAT ON F.CONTRAT,CLECONTRAT
	       END
	   END

 	   W_DUREEABS=0
     END

REPEAT
