bireumdione
Messages postés14Date d'inscriptionsamedi 19 août 2006StatutMembreDernière intervention11 novembre 2020
-
Modifié le 8 nov. 2020 à 14:30
bireumdione
Messages postés14Date d'inscriptionsamedi 19 août 2006StatutMembreDernière intervention11 novembre 2020
-
8 nov. 2020 à 15:17
Bonjour,
j'ai un tableau
Date de debut
Date de fin
Salaire
TauxSal
TauxEmp
Niveau
Prime
Nom rubrique
Taux rubrique
1991-11-14
1995-12-31
908
0,1
0,15
cadre
0
Sujétion
0,0
1996-01-01
2001-12-31
908
0,12
0,15
cadre
30
Sujétion
0,2
2002-01-01
2005-09-30
908
0,15
0,20
cadre
45
Sujétion
0,2
2005-10-01
2009-11-12
908
0,15
0,20
cadre
52
Sujétion
0,4
1991-11-14
1995-12-31
908
0,1
0,15
cadre
0
HeureSup
0,0
1996-01-01
2001-12-31
908
0,12
0,15
cadre
30
HeureSup
0,2
2002-01-01
2005-09-30
908
0,15
0,20
cadre
45
HeureSup
0,2
2005-10-01
2009-11-12
908
0,15
0,20
cadre
52
HeureSup
0,14
Il s'agit de calculer un résultat selon la formule
Nbjour nombre de jour entre Date de debut et Date de fin
base=Salaire + somme( Nom rubrique X Taux rubrique) +prime
part salarié=base X TauxSal X Nbjour
part employeur = base X TauxEmp X Nbjour
resulta attendu:
enfin calculer total part employé =somme(part employé)
total part salarié =somme(part salarié )
j'ai mis le tableau dans un arraylist et je l'ai parcouru en faisant les calculs mais quand le TauxSal ou TauxEmp change il faut sauvegarder le resultat dans un autre tabeau et recommencer avec les nouvelle valeurs.Dons il faut detecter quand TauxSal et TauxEmp changent.
Exemple de code
ArrayList<tablecalcul> tablecalcullist = new ArrayList<>();
ArrayList<assiettecalcul> assiettecalcullist = new ArrayList<>();
// remplissage du tableau tablecalcullist
while (srs.next()) {
tablecalcul tbcal = new tablecalcul();
tbcal.setBegin_date2(srs.getDate("Date de debut"));
tbcal.setEnd_date2(srs.getDate("Date de fin"));
tbcal.setSal_base(srs.getInt("Salaire"));
tbcal.setTauxsal(srs.getFloat("TauxSal"));
tbcal.setTauxemp(srs.getFloat("TauxEmp"));
tbcal.setMontant(srs.getFloat("Prime"));
tbcal.setLblrubrique(srs.getString("Nom Rubrique"));
tbcal.setTauxrubrique(srs.getFloat("Taux rubrique"));
// assiette=tablecalcullist.get(0).getSal_base();
// assiette de calcul (somme des rubrique)
assiette=0;
//si=tablecalcullist.get(0).getSal_base();
si=Integer.parseInt(txt_soldeindiciaire.getText().trim());
base=si;
// assiette de calcul (somme des assiettes)
calassiette=0;
ArrayList<AuraitDu> tableauraitdulist = new ArrayList<>();
for (i=0;i<tablecalcullist.size();i++) {
// on verifie si les taux salarié et employeur ont pas changé
if ((tauxsal == tablecalcullist.get(i).getTauxemp())&&(tauxemp == tablecalcullist.get(i).getTauxsal())) {
long millis1a = jDateChooser1.getCalendar().getTimeInMillis();
long millis2a = jDateChooser2.getCalendar().getTimeInMillis();
// Calculate difference in milliseconds
long diffa = millis2a - millis1a;
// Calculate difference in days
long diffDaysa = diffa / (24 * 60 * 60 * 1000);
D'autre part, un tableau n'a pas de nom de champ, je pense que tu parles une fois de plus de tables.
Si tu persistes à appeler un chat "chien", ne soit pas étonné qu'on te réponde "os" alors que tu cherches "souris".
bireumdione
Messages postés14Date d'inscriptionsamedi 19 août 2006StatutMembreDernière intervention11 novembre 2020 8 nov. 2020 à 15:17
Bonjour, je m’excuse
alors j'ai une table
Date de debut
Date de fin
Salaire
TauxSal
TauxEmp
Niveau
Prime
Nom rubrique
Taux rubrique
1991-11-14
1995-12-31
908
0,1
0,15
cadre
0
Sujétion
0,0
1996-01-01
2001-12-31
908
0,12
0,15
cadre
30
Sujétion
0,2
2002-01-01
2005-09-30
908
0,15
0,20
cadre
45
Sujétion
0,2
2005-10-01
2009-11-12
908
0,15
0,20
cadre
52
Sujétion
0,4
1991-11-14
1995-12-31
908
0,1
0,15
cadre
0
HeureSup
0,0
1996-01-01
2001-12-31
908
0,12
0,15
cadre
30
HeureSup
0,2
2002-01-01
2005-09-30
908
0,15
0,20
cadre
45
HeureSup
0,2
2005-10-01
2009-11-12
908
0,15
0,20
cadre
52
HeureSup
0,14
Il s'agit de calculer un résultat selon la formule
Nbjour nombre de jour entre Date de debut et Date de fin
base=Salaire + somme( Nom rubrique X Taux rubrique) +prime
part salarié=base X TauxSal X Nbjour
part employeur = base X TauxEmp X Nbjour
resulta attendu:
enfin calculer total part employé =somme(part employé)
total part salarié =somme(part salarié )
j'ai mis le tableau dans un arraylist et je l'ai parcouru en faisant les calculs mais quand le TauxSal ou TauxEmp change il faut sauvegarder le resultat dans un autre tabeau et recommencer avec les nouvelle valeurs.Dons il faut detecter quand TauxSal et TauxEmp changent.
Exemple de code
ArrayList<tablecalcul> tablecalcullist = new ArrayList<>();
ArrayList<assiettecalcul> assiettecalcullist = new ArrayList<>();
// remplissage du tableau tablecalcullist
while (srs.next()) {
tablecalcul tbcal = new tablecalcul();
tbcal.setBegin_date2(srs.getDate("Date de debut"));
tbcal.setEnd_date2(srs.getDate("Date de fin"));
tbcal.setSal_base(srs.getInt("Salaire"));
tbcal.setTauxsal(srs.getFloat("TauxSal"));
tbcal.setTauxemp(srs.getFloat("TauxEmp"));
tbcal.setMontant(srs.getFloat("Prime"));
tbcal.setLblrubrique(srs.getString("Nom Rubrique"));
tbcal.setTauxrubrique(srs.getFloat("Taux rubrique"));
tablecalcullist.add(tbcal);
}
// initialisation des valeurs pour la comparaison
montant=tablecalcullist.get(0).getMontant();
tauxsal=tablecalcullist.get(0).getTauxsal();
tauxemp=tablecalcullist.get(0).getTauxemp();
// assiette=tablecalcullist.get(0).getSal_base();
// assiette de calcul (somme des rubrique)
assiette=0;
//si=tablecalcullist.get(0).getSal_base();
si=Integer.parseInt(txt_soldeindiciaire.getText().trim());
base=si;
// assiette de calcul (somme des assiettes)
calassiette=0;
ArrayList<AuraitDu> tableauraitdulist = new ArrayList<>();
for (i=0;i<tablecalcullist.size();i++) {
// on verifie si les taux salarié et employeur ont pas changé
if ((tauxsal == tablecalcullist.get(i).getTauxemp())&&(tauxemp == tablecalcullist.get(i).getTauxsal())) {
calassiette = (tablecalcullist.get(i).getSal_base()*tablecalcullist.get(i).getTauxrubrique());
assiette = assiette + calassiette;
date1a=tablecalcullist.get(0).getBegin_date2();
date2a=tablecalcullist.get(i).getEnd_date2();
} else {
jDateChooser1.setDate(tablecalcullist.get(i-1).getdatedebut());
jDateChooser2.setDate(tablecalcullist.get(i-1).getdatefin());
long millis1a = jDateChooser1.getCalendar().getTimeInMillis();
long millis2a = jDateChooser2.getCalendar().getTimeInMillis();
// Calculate difference in milliseconds
long diffa = millis2a - millis1a;
// Calculate difference in days
long diffDaysa = diffa / (24 * 60 * 60 * 1000);
base=(si+assiette+montant)*12;
partsalarie=(base*tauxsal*diffDaysa)/36000;
partemployeur=(base*tauxemp*diffDaysa)/36000;
//reinitialise les valeus de comparaison
tauxsal=tablecalcullist.get(i).getTauxsal();
tauxemp=tablecalcullist.get(i).getTauxemp();
AuraitDu tbad = new AuraitDu();
tbad.setDatedebutad(tablecalcullist.get(i-1).getdatedebut());
tbad.setDatefinad(tablecalcullist.get(i-1).getdatefin());
tbad.setNbjour(diffDaysa);
tbad.setSi(tablecalcullist.get(i-1).getSal_base());
tbad.setBase(base);
tbad.setAr(partsalarie);
tbad.setRr(partemployeur);
tbad.setTauxagad(tablecalcullist.get(i-1).getTauxsal());
tbad.setTauxempad(tablecalcullist.get(i-1).getTauxemp());
tableauraitdulist.add(tbad);
}
// insertion dans la base de donnée pour faciliter le calcul avec des intervalles sans variation de taux
String val = txt_matricule.getText();
// try{
for (i=0;i<tableauraitdulist.size();i++) {
//JOptionPane.showMessageDialog(null," "+val+ " "+date1+" "+date2+" "+diffDays+" "+si+" "+eb+" "+rr+" "+ar);
String reg= "insert into auraitdu (matricule,datedebutad,datefinad,nbjourad,tauxagad,tauxempad,si,eb,rr,ar) values ('"+val+"','"+tableauraitdulist.get(i).getDatedebutad()+"','"+tableauraitdulist.get(i).getDatefinad()+"','"+tableauraitdulist.get(i).getNbjour()+"','"+tableauraitdulist.get(i).getTauxagad()+"','"+tableauraitdulist.get(i).getTauxempad()+"','"+tableauraitdulist.get(i).getSi()+"','"+tableauraitdulist.get(i).getEb()+"','"+tableauraitdulist.get(i).getRr()+"','"+tableauraitdulist.get(i).getAr()+"' )";
//Days.daysBetween(new DateTime(date1), new DateTime(date2)).getDays()
pst1=conn.prepareStatement(reg);
pst1.execute();
}
Le code n'est pas complet mais je crois que l'idée y est .
Merci pour votre aide
Et encore mille excuses
--