* Vrifier que 101 et 102 sont les rubriques de fin de modulation
* + vrifier que pas de regul basse et haute
OPEN "","CIVILAIDANT" TO F.CIVILAIDANT ELSE PRINT "OUVERTURE CIVILAIDANT" ;* en lecture
OPEN "","CONTRAT" TO F.CONTRAT ELSE PRINT "OUVERTURE CONTRAT" ;* en lecture
OPEN "","DETAILCALCUL" TO F.DETAILCALCUL ELSE PRINT "OUVERTURE DETAILCALCUL" ;* en lecture
OPEN "","ARCHIVEBULL" TO F.ARCHIVEBULL ELSE STOP

*EXECUTE 'SELECT DETAILCALCUL AVEC 2 = "101" AND AVEC PeriodeDetailCalcul = "200909" AND AVEC 0 = "03402003]"'
EXECUTE 'SELECT DETAILCALCUL AVEC 2 = "101" AND AVEC PeriodeDetailCalcul = "200909" AND AVEC ConvColContratDetailCalcul # "02" AND AVEC TypeHeure = "M" AND AVEC FonctionContrat = "P"'
	
EXECUTE "COMO ON COMPAREREGULMODUL.TXT"

W_End="FAUX"

LOOP
READNEXT W_Cle ELSE W_End = "VRAI"
 WHILE W_End = "FAUX" DO
  W_REGULMODUL=0
  W_REGULMODULAV=0
  W_CUMHRESCONTRAT=0
  W_BASE102HISTO=0
  READ ENR_CONTRAT FROM F.CONTRAT,W_Cle[1,8] THEN
   I=1
   LOOP
    UNTIL ENR_CONTRAT<76,I>="" DO
     W_REGULMODUL=W_REGULMODUL+ENR_CONTRAT<100,I>
     IF ENR_CONTRAT<76,I>#"200909" THEN W_REGULMODULAV=W_REGULMODULAV+ENR_CONTRAT<100,I>
     W_CUMHRESCONTRAT=W_CUMHRESCONTRAT+ENR_CONTRAT<77,I>-ENR_CONTRAT<78,I>
	 IF ENR_CONTRAT<100,I>#0 AND ENR_CONTRAT<76,I>#"200909" THEN
	    READ ENR_DETAILCALCULBIS FROM F.DETAILCALCUL,W_Cle[1,8]:ENR_CONTRAT<76,I> THEN
		   D=1
		   LOOP
		   UNTIL ENR_DETAILCALCULBIS<2,D>="102" OR ENR_DETAILCALCULBIS<2,D>="" DO
		      D=D+1 
		   REPEAT
		   IF ENR_DETAILCALCULBIS<2,D>="102" THEN W_BASE102HISTO=W_BASE102HISTO+ENR_DETAILCALCULBIS<3,D>
		END
	 END
     I=I+1
   REPEAT
  END
*  PRINT W_CUMHRESCONTRAT
*  PRINT W_REGULMODULAV
*  PRINT W_REGULMODUL
*  DEBUG
  READ ENR_DETAILCALCUL FROM F.DETAILCALCUL,W_Cle ELSE ENR_DETAILCALCUL=""
  W_BASE101AV=0
  W_MONT101AV=0
  IND101=0
  W_BASE102AV=0
  W_MONT102AV=0
  IND102=0
  W_BASE810=0
  IND810=0
  J=1
  LOOP
   UNTIL ENR_DETAILCALCUL<2,J>="" DO
    IF ENR_DETAILCALCUL<2,J>="101" THEN
     W_BASE101AV=ENR_DETAILCALCUL<3,J>
     W_MONT101AV=ENR_DETAILCALCUL<5,J>
     IND101=J
    END
    IF ENR_DETAILCALCUL<2,J>="102" THEN
     W_BASE102AV=ENR_DETAILCALCUL<3,J>
     W_MONT102AV=ENR_DETAILCALCUL<5,J>
     IND102=J
    END
    IF ENR_DETAILCALCUL<2,J>="810" THEN
     W_BASE810=ENR_DETAILCALCUL<3,J>
     IND810=J
    END
    J=J+1
  REPEAT
*  PRINT "101 ":W_BASE101AV:" ":W_MONT101AV:" ":IND101
*  PRINT "102 ":W_BASE102AV:" ":W_MONT102AV:" ":IND102
  W_PLAFOND110=INT(W_CUMHRESCONTRAT*10/100+1/2) 
*  PRINT W_PLAFOND110
*  DEBUG

 IF W_BASE102HISTO#0 THEN
  IF W_REGULMODUL>W_PLAFOND110 THEN
   W_BASE101FINMOD=W_PLAFOND110 
   W_BASE102FINMOD=W_REGULMODUL-W_PLAFOND110 
  END ELSE
   W_BASE101FINMOD=W_REGULMODUL
   W_BASE102FINMOD=0
  END
  W_BASE101HISTO=W_REGULMODULAV-W_BASE102HISTO
  
  IF W_BASE101FINMOD # W_BASE101HISTO THEN W_BASE101=W_BASE101FINMOD-W_BASE101HISTO

  IF W_BASE102FINMOD # W_BASE102HISTO THEN W_BASE102=W_BASE102FINMOD-W_BASE102HISTO
  
  ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,3,IND101;W_BASE101)
  W_TAUXHOR=ENR_DETAILCALCUL<4,IND101>
  W_MONT101=INT(W_BASE101*W_TAUXHOR/10000+1/2)
  ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,5,IND101;W_MONT101)
  ENR_DETAILCALCUL<6>=ENR_DETAILCALCUL<6>-W_BASE101AV+W_BASE101
  ENR_DETAILCALCUL<7>=ENR_DETAILCALCUL<7>-W_MONT101AV+W_MONT101
*  IF IND810#0 THEN W_BASE810=W_BASE810-W_BASE101AV+W_BASE101
  IF IND102#0 THEN
   ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,3,IND102;W_BASE102)
   W_TAUXHOR=ENR_DETAILCALCUL<4,IND102>
   W_MONT102=INT(W_BASE102*W_TAUXHOR/10000+1/2)
   ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,5,IND102;W_MONT102)
  END ELSE
   ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,2,-1;"102")
   ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,3,-1;W_BASE102)
   W_TAUXHOR=INT(W_TAUXHOR/10)
   W_TAUXHOR=INT(W_TAUXHOR*115/100+1/2)
   W_TAUXHOR=W_TAUXHOR*10
   W_MONT102=INT(W_BASE102*W_TAUXHOR/10000+1/2)
   ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,4,-1;W_TAUXHOR)
   ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,5,-1;W_MONT102)
  END
  ENR_DETAILCALCUL<6>=ENR_DETAILCALCUL<6>-W_BASE102AV+W_BASE102
  ENR_DETAILCALCUL<7>=ENR_DETAILCALCUL<7>-W_MONT102AV+W_MONT102
*   IF IND810#0 THEN
*      W_REGULBASEAV=INT(W_BASE102AV*115/100+1/2)
*      W_REGULBASE=INT(W_BASE102*115/100+1/2)
*      W_BASE810=W_BASE810-W_REGULBASEAV+W_REGULBASE
*     END
*     IF IND810#0 THEN
*      ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,3,IND810;W_BASE810)
*      W_TAUXHOR=ENR_DETAILCALCUL<4,IND810>
*      W_MONT810=INT(W_BASE810*W_TAUXHOR/10000+1/2)
*      ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,5,IND810;W_MONT810)
*     END
  PRINT
  PRINT "AIDANT ":W_Cle[1,8]:" ":NOMAIDANT:" ":PRENOMAIDANT:" - AVANT RUB 101 ":W_BASE101AV:" HEURES POUR ":W_MONT101AV
  PRINT "                                      - APRES RUB 101 ":W_BASE101:" HEURES POUR ":W_MONT101
  PRINT "                                      - APRES RUB 102 ":W_BASE102:" HEURES POUR ":W_MONT102
*     IF IND810#0 THEN
*      PRINT "                                      - REGUL PRIME DIFFERENTIELLE"
*     END
  ENR_DETAILCALCUL<1>=""
  WRITE ENR_DETAILCALCUL ON F.DETAILCALCUL,W_Cle
  DELETE F.ARCHIVEBULL,W_Cle:"001"   
  EXECUTE "CALCULPAIE R 001 200909 ":W_Cle[1,8]:" 0 0 0"
 END ELSE
  IF W_REGULMODUL>W_PLAFOND110 THEN
   READ ENR_CIVILAIDANT FROM F.CIVILAIDANT,W_Cle[1,5] ELSE ENR_CIVILAIDANT=""
   NOMAIDANT=ENR_CIVILAIDANT<2>
   PRENOMAIDANT=ENR_CIVILAIDANT<3>
   W_BASE101=W_PLAFOND110-W_REGULMODULAV
   W_BASE102=W_REGULMODUL-W_PLAFOND110
   W_ANO="NON"
   IF W_BASE101<0 THEN
    PRINT
    PRINT "AIDANT ":W_Cle[1,8]:" ":NOMAIDANT:" ":PRENOMAIDANT:" - ANO RUB 101 NEGATIVE ":W_BASE101
*    W_ANO="OUI"
   END
   IF W_BASE102<0 THEN
    PRINT
    PRINT "AIDANT ":W_Cle[1,8]:" ":NOMAIDANT:" ":PRENOMAIDANT:" - ANO RUB 102 NEGATIVE ":W_BASE102
    W_ANO="OUI"
   END
   IF IND101=0 THEN
    PRINT
    PRINT "AIDANT ":W_Cle[1,8]:" ":NOMAIDANT:" ":PRENOMAIDANT:" - ANO RUB 101 NON PRESENTE "
    W_ANO="OUI"
   END   
   IF W_ANO="NON" THEN
    IF W_BASE101=W_BASE101AV AND W_BASE102=W_BASE102AV THEN
     NULL
    END ELSE
     ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,3,IND101;W_BASE101)
     W_TAUXHOR=ENR_DETAILCALCUL<4,IND101>
     W_MONT101=INT(W_BASE101*W_TAUXHOR/10000+1/2)
     ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,5,IND101;W_MONT101)
     ENR_DETAILCALCUL<6>=ENR_DETAILCALCUL<6>-W_BASE101AV+W_BASE101
     ENR_DETAILCALCUL<7>=ENR_DETAILCALCUL<7>-W_MONT101AV+W_MONT101
     IF IND810#0 THEN W_BASE810=W_BASE810-W_BASE101AV+W_BASE101
     IF IND102#0 THEN
      ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,3,IND102;W_BASE102)
      W_TAUXHOR=ENR_DETAILCALCUL<4,IND102>
      W_MONT102=INT(W_BASE102*W_TAUXHOR/10000+1/2)
      ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,5,IND102;W_MONT102)
     END ELSE
      ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,2,-1;"102")
      ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,3,-1;W_BASE102)
      W_TAUXHOR=INT(W_TAUXHOR/10)
      W_TAUXHOR=INT(W_TAUXHOR*115/100+1/2)
      W_TAUXHOR=W_TAUXHOR*10
      W_MONT102=INT(W_BASE102*W_TAUXHOR/10000+1/2)
      ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,4,-1;W_TAUXHOR)
      ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,5,-1;W_MONT102)
     END
     ENR_DETAILCALCUL<6>=ENR_DETAILCALCUL<6>-W_BASE102AV+W_BASE102
     ENR_DETAILCALCUL<7>=ENR_DETAILCALCUL<7>-W_MONT102AV+W_MONT102
*     IF IND810#0 THEN
*      W_REGULBASEAV=INT(W_BASE102AV*115/100+1/2)
*      W_REGULBASE=INT(W_BASE102*115/100+1/2)
*      W_BASE810=W_BASE810-W_REGULBASEAV+W_REGULBASE
*     END
*     IF IND810#0 THEN
*      ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,3,IND810;W_BASE810)
*      W_TAUXHOR=ENR_DETAILCALCUL<4,IND810>
*      W_MONT810=INT(W_BASE810*W_TAUXHOR/10000+1/2)
*      ENR_DETAILCALCUL=REPLACE(ENR_DETAILCALCUL,5,IND810;W_MONT810)
*     END
     PRINT
     PRINT "AIDANT ":W_Cle[1,8]:" ":NOMAIDANT:" ":PRENOMAIDANT:" - AVANT RUB 101 ":W_BASE101AV:" HEURES POUR ":W_MONT101AV
     PRINT "                                      - APRES RUB 101 ":W_BASE101:" HEURES POUR ":W_MONT101
     PRINT "                                      - APRES RUB 102 ":W_BASE102:" HEURES POUR ":W_MONT102
*     IF IND810#0 THEN
*      PRINT "                                      - REGUL PRIME DIFFERENTIELLE"
*     END
     ENR_DETAILCALCUL<1>=""
     WRITE ENR_DETAILCALCUL ON F.DETAILCALCUL,W_Cle
     DELETE F.ARCHIVEBULL,W_Cle:"001"   
     EXECUTE "CALCULPAIE R 001 200909 ":W_Cle[1,8]:" 0 0 0"
    END
   END
  END
 END
REPEAT
EXECUTE "COMO OFF"
STOP