// Vérification et correction des cumuls SMIC pour la cotisation AF TotalSMIC est un réel BulletinClos est un entier NbDifférenceMoisClos, NbDifférenceMoisNonClos sont des entiers tDifférences est un tableau associatif de réels PremièreLigneTracée est un booléen POUR i=1 à tablesql..occurrence TotalSMIC=0 BulletinClos=Faux // Parcours de tous les bulletins du même contrat, en s'arrêtant au début de l'exercice HLitRecherchePremier("CAENBU","KENBU",[{"TableSQL._COL2",indchamp}[i],{"TableSQL._COL3",indchamp}[i], ... {"TableSQL._COL5",indchamp}[i],{"TableSQL._COL6",indchamp}[i] ]) SI HTrouve("CAENBU") BulletinClos=CAENBU.CLOS TANTQUE PAS HEnDehors("CAENBU") // On s'arrête si on n'est plus sur le salarié courant, ou si on est remonté au delà du début de l'exercice SI CAENBU.COSO<>{"TableSQL._COL2",indchamp}[i] OU CAENBU.NPPE<>{"TableSQL._COL3",indchamp}[i] OU ... CAENBU.MPAY < Gauche({"TableSQL._COL5",indchamp}[i],4) ALORS SORTIR // Lecture du SMIC dans le cumul MTSMIF ou MTSMIC SI HLitRecherchePremier("CACUMU","KCUMU",[CAENBU.COSO,CAENBU.NPPE,"MTSMIF",CAENBU.MPAY,CAENBU.NOBU]) ALORS TotalSMIC+= Arrondi(CACUMU.VACU*3.5,2) SINON SI HLitRecherchePremier("CACUMU","KCUMU",[CAENBU.COSO,CAENBU.NPPE,"MTSMIC",CAENBU.MPAY,CAENBU.NOBU]) ALORS TotalSMIC+= Arrondi(CACUMU.VACU*3.5,2) FIN // On s'arrête là si on est arrivé sur un bulletin calculé sans l'option "Reprise des cumuls antérieurs" SI PAS CAENBU.RCPP ALORS SORTIR HLitPrécédent("CAENBU","KENBU") FIN SI Arrondi({"TableSQL._COL10",indchamp}[i],2)<>Arrondi(TotalSMIC,2) ALORS SI BulletinClos ALORS NbDifférenceMoisClos++ tDifférences[{"TableSQL._COL2",indchamp}[i]+tab+{"TableSQL._COL3",indchamp}[i]+tab+... {"TableSQL._COL4",indchamp}[i]+tab+{"TableSQL._COL5",indchamp}[i]+tab+... {"TableSQL._COL6",indchamp}[i]+tab+{"TableSQL._COL7",indchamp}[i] ]=TotalSMIC SINON NbDifférenceMoisNonClos++ FIN SI PAS PremièreLigneTracée ALORS Trace("Début trace à "+HeureVersChaîne(HeureSys(),"HH:MM:SS")+Répète(" -",20)) PremièreLigneTracée=Vrai Trace("Différence sur bulletin "+(BulletinClos ? "clos " SINON "non clos ")+ ... "Salarié "+{"TableSQL._COL2",indchamp}[i]+" "+{"TableSQL._COL3",indchamp}[i]+" "+... "Bulletin "+{"TableSQL._COL5",indchamp}[i]+" "+ {"TableSQL._COL6",indchamp}[i]+... " : "+{"TableSQL._COL10",indchamp}[i]+" <> "+TotalSMIC) FIN FIN SI NbDifférenceMoisNonClos > 0 ALORS Avertissement(NbDifférenceMoisNonClos+" différence(s) trouvée(s) sur des bulletins non clos (Voir fenêtre de trace).",... "Il faut recalculer tous les bulletins non clos signalés en différence, puis relancer cet outil de contrôle.") FIN SI (NbDifférenceMoisClos+NbDifférenceMoisNonClos)=0 ALORS Info("Aucune différence constatée dans les cumuls de SMIC des cotisations AF.") FIN SI NbDifférenceMoisClos > 0 ALORS SI OuiNon(NbDifférenceMoisClos+" différence(s) trouvée(s) sur des bulletins clos (voir fenêtre de trace).",... "Voulez-vous corriger ces différences ?", ... "Notez que les bulletins suivant ceux corrigés ici devront être recalculés.",... "Il faudra ensuite relancer cet outil de contrôle pour s'assurer que plus aucune différence n'est signalée.") ALORS POUR tout element Valeur,Clé de tDifférences SI HLitRecherchePremier("CACOCU","KCOCU",[ExtraitChaîne(Clé,1),ExtraitChaîne(Clé,2),... ExtraitChaîne(Clé,3),ExtraitChaîne(Clé,4),... ExtraitChaîne(Clé,5),ExtraitChaîne(Clé,6)]) ALORS CACOCU.PLAF=Valeur HModifie(CACOCU) FIN FIN FIN FIN