EXECUTE "SET-THOUS ."
EXECUTE "SET-DEC ,"
EXECUTE "DATE.FORMAT"
OPEN "", "DETAILCALCUL" TO F.DETAILCALCUL ELSE STOP
OPEN "", "HISTORCUMUL" TO F.HISTORCUMUL ELSE STOP
OPEN "", "CIVILAIDANT" TO F.CIVILAIDANT ELSE STOP
OPEN "", "CONTRAT" TO F.CONTRAT ELSE STOP
OPEN "","TDSCASPARTICULIERSDADSU" TO F.TDSCASPART ELSE STOP
*****************************************************************************************
*                                            IMPORTANT                                  *
*											*
* Suite aux pb rencontrs lors de la mise en place de l'exo activit :			*
* Le programme ne signale pas d'anomalies lorsque la somme des URSSAF cas part et plafonnee
* de la DADS est egale a la somme des URSSAF plaf + cas part des bulletins.		*
*											*
* + On signale tous les cas avec URSSAF < 0 : ces cas ne sont pas totaliss lors du trt DADS papier...
*****************************************************************************************
W_CumulNeg = 0
W_CumulNegPart = 0
EXECUTE 'SELECT TDSURSSAFTOTALITE'
W_TabTot = ""
W_Fin = "F"
LOOP
READNEXT W_Cle ELSE W_Fin = "V"
WHILE W_Fin = "F"
	W_TabTot<-1> = W_Cle
REPEAT
EXECUTE 'SELECT TDSURSSAFPLAFOND'
W_TabPlaf = ""
W_Fin = "F"
LOOP
READNEXT W_Cle ELSE W_Fin = "V"
WHILE W_Fin = "F"
	W_TabPlaf<-1> = W_Cle
REPEAT
W_TabCasPart = ""
READ ENRTEMP FROM F.TDSCASPART, "1" THEN
	W_TabCasPart = ENRTEMP<1>
END
W_CumulFNAL = 0
W_DiffFNAL = 0
PRINT "Mois de debut de l'anne de dclaration (AAAAMM)"
INPUT W_MoisDeb
PRINT "Mois de fin de l'anne de dclaration (AAAAMM)"
INPUT W_MoisFin
PRINT "Code entit juridique"
INPUT W_CodeAsso
W_DateFinPer = ICONV("01/":W_MoisFin[5,2]:"/":W_MoisFin[1,4],"D4/")
EXECUTE 'COMO ON VerifUrssafDADS.txt'
W_Str =  'SELECT DETAILCALCUL AVEC CodAssoContratDetailCalcul = "':W_CodeAsso:'" AND AVEC ConvColContratDetailCalcul # "02" AND AVEC PeriodeDetailCalcul >= "':W_MoisDeb:'" AND AVEC PeriodeDetailCalcul <= "':W_MoisFin:'" PAR CodeAidantDetailCalcul PAR CodeAideDetailCalcul PAR PeriodeDetailCalcul'
EXECUTE W_Str
W_TamponAidant = ""
W_CumulURSSAFTOT = 0
W_CumulURSSAFPLA = 0
W_CumulURSSAFCASPART = 0
W_NbAidants = 0
W_NbAidantsMod = 0
W_CleCont = ""
W_IndCont = 1
W_SommeBullTOT = 0
W_SommeBullPLA = 0
W_SommeBullCasPart = 0
W_SommeDADSTOT = 0
W_SommeDADSArrondieTOT = 0
W_SommeDADSCASPART = 0
W_SommeDADSArrondieCASPART = 0
W_SommeDADSPLA = 0
W_SommeDADSArrondiePLA = 0
W_CasRectifieDADS = 0
W_TamponAide = ""
W_Fin = "F"
LOOP
	READNEXT W_Cle ELSE W_Fin = "V"
WHILE W_Fin = "F"
	READ ENR_CONTRAT FROM F.CONTRAT, W_Cle[1,8] ELSE ENR_CONTRAT = ""
	IF ENR_CONTRAT<3> # W_TamponAide OR W_Cle[1,5] # W_TamponAidant THEN
		IF W_TamponAide # "" THEN
			READ ENR_CIVILAIDANT FROM F.CIVILAIDANT, W_TamponAidant THEN
			GOSUB 400
			END
		END
		W_TamponAidant = W_Cle[1,5]
		W_TamponAide = ENR_CONTRAT<3>
	END
	READ ENR_DETAILCALCUL FROM F.DETAILCALCUL, W_Cle ELSE ENR_DETAILCALCUL = ""
	J=1
	LOOP
 	 CODERUBCHG=EXTRACT(ENR_DETAILCALCUL,8,J)
	  UNTIL CODERUBCHG="" DO
  	 IF INDEX(W_TabTot,CODERUBCHG,1) # 0 THEN W_CumulURSSAFTOT=W_CumulURSSAFTOT+EXTRACT(ENR_DETAILCALCUL,9,J)
	 IF INDEX(W_TabPlaf,CODERUBCHG,1) # 0 THEN W_CumulURSSAFPLA=W_CumulURSSAFPLA+EXTRACT(ENR_DETAILCALCUL,9,J)
	IF INDEX(W_TabCasPart,CODERUBCHG,1) # 0 AND CODERUBCHG # "903" AND CODERUBCHG # "904" THEN
		W_CumulURSSAFCASPART=W_CumulURSSAFCASPART+EXTRACT(ENR_DETAILCALCUL,9,J)
		W_CumulURSSAFPLA = W_CumulURSSAFPLA - EXTRACT(ENR_DETAILCALCUL,9,J)
	END
  	 J=J+1
	REPEAT	
	*W_CumulURSSAFPLA = W_CumulURSSAFPLA - W_CumulURSSAFCASPART
	*W_CumulURSSAFTOT = W_CumulURSSAFTOT + COTISRUB035 + COTISRUB038 + COTISRUB001
	*W_CumulURSSAFPLA = W_CumulURSSAFPLA + COTISRUB037 + COTISRUB036 + COTISRUB002
REPEAT
GOSUB 400
PRINT 	W_NbAidants:" parcourus, ":W_NbAidantsMod:" prsentaient une anomalie "
PRINT "Totaux :"
PRINT "   - DADS URSSAF TOT               : ":W_SommeDADSTOT/100
PRINT "   - DADS arrondie URSSAF TOT      : ":W_SommeDADSArrondieTOT
PRINT "   - Bulletins URSSAF TOT          : ":W_SommeBullTOT/100
PRINT
PRINT "   - DADS URSSAF PLAF              : ":W_SommeDADSPLA/100
PRINT "   - DADS arrondie URSSAF PLAF     : ":W_SommeDADSArrondiePLA
PRINT "   - Bulletins URSSAF PLAF         : ":W_SommeBullPLA/100
PRINT
PRINT "   - DADS URSSAF CAS PART          : ":W_SommeDADSCASPART/100
PRINT "   - DADS arrondie URSSAF CAS PART : ":W_SommeDADSArrondieCASPART
PRINT "   - Bulletins URSSAF CAS PART         : ":W_SommeBullCasPart/100
PRINT " "
PRINT "Cumul FNAL : ":W_CumulFNAL/100
PRINT "Diff FNAL totale : ":W_DiffFNAL/100 
PRINT " "
PRINT "Somme URSSAF plafonnes negatives : ":W_CumulNeg
PRINT " "
PRINT "Somme des cas dont la base plafonnee a ete rectifes : ":W_CasRectifieDADS/100
EXECUTE 'COMO OFF'
STOP
100
* Impression de la rubrique
W_Diff = W_CumulURSSAFTOT - W_BASEURSSAFTOT
IF W_Diff > 1 OR W_Diff < -1 THEN
 W_NbAidantsMod = W_NbAidantsMod + 1
 PRINT W_TamponAidant:" ":ENR_CIVILAIDANT<4>:" ":ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>:" ":W_TamponAide
 PRINT " Urssaf TOT DADS : ":W_BASEURSSAFTOT/100"R2 8":"   Urssaf TOT bulletins : ":W_CumulURSSAFTOT/100"R2 8":"   Diff. : ":W_Diff/100"R2 8"
 PRINT
END
RETURN
110
* Impression de la rubrique
W_Diff = W_CumulURSSAFPLA - W_BASEURSSAFPLA
IF W_Diff > 1 OR W_Diff < -1 THEN
 W_NbAidantsMod = W_NbAidantsMod + 1
 PRINT W_TamponAidant:" ":ENR_CIVILAIDANT<4>:" ":ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>:" ":W_TamponAide
 PRINT " Urssaf PLA DADS : ":W_BASEURSSAFPLA/100"R2 8":"   Urssaf PLA bulletins : ":W_CumulURSSAFPLA/100"R2 8":"   Diff. : ":W_Diff/100"R2 8"
 PRINT
END
RETURN
120
* Impression de la rubrique
W_Diff = W_CumulURSSAFCASPART - W_BASEURSSAFCASPART
IF W_Diff > 1 OR W_Diff < -1 THEN
 W_NbAidantsMod = W_NbAidantsMod + 1
 PRINT W_TamponAidant:" ":ENR_CIVILAIDANT<4>:" ":ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>:" ":W_TamponAide
 PRINT " Urssaf CAS PART DADS : ":W_BASEURSSAFCASPART/100"R2 8":"   Urssaf CAS PART bulletins : ":W_CumulURSSAFCASPART/100"R2 8":"   Diff. : ":W_Diff/100"R2 8"
 PRINT
END
RETURN
200
* Pas de DADS
IF W_CumulURSSAFTOT > 1 OR W_CumulURSSAFTOT < -1 THEN
	W_NbAidantsMod = W_NbAidantsMod + 1
	PRINT W_TamponAidant:" ":ENR_CIVILAIDANT<4>:" ":ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>:" ":W_TamponAide
	PRINT "Cet aidant n'a pas de DADS ! "	
END
RETURN
***************************************
* Total Aide
******************************************			
400
W_SommeBullTOT = W_SommeBullTOT + W_CumulURSSAFTOT
W_SommeBullPLA = W_SommeBullPLA + W_CumulURSSAFPLA
W_SommeBullCasPart = W_SommeBullCasPart + W_CumulURSSAFCASPART
W_NbAidants = W_NbAidants + 1
 W_BASEURSSAFPLA=0
 W_BASEURSSAFTOT=0
 W_BASEURSSAFCASPART=0
READ ENR_HISTORCUMUL FROM F.HISTORCUMUL, W_TamponAidant[1,5]:W_MoisFin[1,4]:W_TamponAide[1,3] THEN
 W_BASEURSSAFPLA=0
 W_BASEURSSAFTOT=0
 W_BASEURSSAFCASPART=0
 W_BaseFNAL = 0
 I=1
 LOOP
  CODERUBCHG=EXTRACT(ENR_HISTORCUMUL,15,I)
  UNTIL CODERUBCHG="" DO
   *IF CODERUBCHG="035" THEN BASERUB035=EXTRACT(ENR_HISTORCUMUL,17,I)
   *IF CODERUBCHG="037" THEN BASERUB037=EXTRACT(ENR_HISTORCUMUL,17,I)
   IF INDEX(W_TabTot,CODERUBCHG,1) # 0 THEN W_BASEURSSAFTOT=W_BASEURSSAFTOT+EXTRACT(ENR_HISTORCUMUL,17,I)
   IF INDEX(W_TabPlaf,CODERUBCHG,1) # 0 THEN W_BASEURSSAFPLA=W_BASEURSSAFPLA+EXTRACT(ENR_HISTORCUMUL,17,I)   
   IF INDEX(W_TabCasPart,CODERUBCHG,1) # 0 AND CODERUBCHG # "903" AND CODERUBCHG # "904" THEN W_BASEURSSAFCASPART=W_BASEURSSAFCASPART+EXTRACT(ENR_HISTORCUMUL,17,I)   
   IF CODERUBCHG = "059" THEN W_BaseFNAL = EXTRACT(ENR_HISTORCUMUL,17,I)	
   I=I+1
 REPEAT
  W_BASEURSSAFPLA = W_BASEURSSAFPLA - W_BASEURSSAFCASPART
  *W_BASEURSSAFTOT=BASERUB035 + BASERUB038 + BASERUB001
  *W_BASEURSSAFPLA=BASERUB037 + BASERUB036 + BASERUB002
  IF W_BASEURSSAFPLA < 0 THEN
	W_CumulNeg = W_CumulNeg + W_BASEURSSAFPLA
	*PRINT W_TamponAidant:" ":ENR_CIVILAIDANT<4>:" ":ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>:" ":W_TamponAide:" Base < 0 : ":W_BASEURSSAFPLA/100
  END
  IF W_BASEURSSAFCASPART < 0 THEN
	W_CumulNegPart = W_CumulNegPart + W_BASEURSSAFCASPART
	*PRINT W_TamponAidant:" ":ENR_CIVILAIDANT<4>:" ":ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>:" ":W_TamponAide:" Base < 0 : ":W_BASEURSSAFCASPART/100
  END
  IF ABS(W_BaseFNAL - W_BASEURSSAFTOT) > 100 THEN
	PRINT " ******* "
	PRINT W_TamponAidant:" ":ENR_CIVILAIDANT<4>:" ":ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>:" ":W_TamponAide
	PRINT "Diff entre base FNAL et URSSAF totalite : ":INT(W_BaseFNAL - W_BASEURSSAFTOT)/100
	W_DiffFNAL = W_DiffFNAL + W_BaseFNAL - W_BASEURSSAFTOT
	PRINT " ***** "
  END
  IF W_BASEURSSAFTOT <= ENR_HISTORCUMUL<4> THEN
  IF W_BASEURSSAFPLA + W_BASEURSSAFCASPART # W_BASEURSSAFTOT THEN
     IF ABS(W_BASEURSSAFPLA + W_BASEURSSAFCASPART - W_BASEURSSAFTOT) > 100 THEN
	*PRINT W_TamponAidant:" ":ENR_CIVILAIDANT<4>:" ":ENR_CIVILAIDANT<2>:" ":ENR_CIVILAIDANT<3>:" ":W_TamponAide
	*PRINT "Va etre rectifie pour ":INT((W_BASEURSSAFPLA + W_BASEURSSAFCASPART - W_BASEURSSAFTOT)/100 +1/2)	
	W_CasRectifieDADS = W_CasRectifieDADS + W_BASEURSSAFPLA + W_BASEURSSAFCASPART - W_BASEURSSAFTOT
     END
  END
  END
  W_CumulFNAL = W_CumulFNAL + W_BaseFNAL
  W_SommeDADSTOT = W_SommeDADSTOT + W_BASEURSSAFTOT
  W_SommeDADSPLA = W_SommeDADSPLA + W_BASEURSSAFPLA
  W_SommeDADSCASPART = W_SommeDADSCASPART + W_BASEURSSAFCASPART
  W_SommeDADSArrondieTOT = W_SommeDADSArrondieTOT + INT(W_BASEURSSAFTOT/100 + 1/2)
  W_SommeDADSArrondiePLA = W_SommeDADSArrondiePLA + INT(W_BASEURSSAFPLA/100 + 1/2)
  W_SommeDADSArrondieCASPART = W_SommeDADSArrondieCASPART + INT(W_BASEURSSAFCASPART/100 + 1/2)
  IF W_CumulURSSAFTOT # W_BASEURSSAFTOT THEN	
	*GOSUB 100
  END
  *IF W_CumulURSSAFPLA+W_CumulURSSAFCASPART # W_BASEURSSAFPLA+W_BASEURSSAFCASPART THEN
  IF W_CumulURSSAFPLA # W_BASEURSSAFPLA THEN	
	*GOSUB 110
  END
  IF W_CumulURSSAFCASPART # W_BASEURSSAFCASPART THEN	
	*GOSUB 120
  END
  *END
END ELSE
	ENR_HISTORCUMUL = ""
	*GOSUB 200
END
W_CumulURSSAFTOT = 0
W_CumulURSSAFPLA = 0
W_CumulURSSAFCASPART = 0
W_CleCont = ""
W_IndCont = 1
RETURN

