r368 - in trunk/chorem-entities/src/main: java/org/chorem java/org/chorem/project xmi
Author: meynier Date: 2013-07-18 15:28:33 +0200 (Thu, 18 Jul 2013) New Revision: 368 Url: http://chorem.org/projects/chorem/repository/revisions/368 Log: Updated model. Removed Contract, put needed attributes in EmployeeHR and created CompanyHR Modified: trunk/chorem-entities/src/main/java/org/chorem/ChoremClient.java trunk/chorem-entities/src/main/java/org/chorem/ChoremUtil.java trunk/chorem-entities/src/main/java/org/chorem/project/Calculation.java trunk/chorem-entities/src/main/java/org/chorem/project/QuotationCalculation.java trunk/chorem-entities/src/main/xmi/chorem-model.properties trunk/chorem-entities/src/main/xmi/chorem-model.zargo Modified: trunk/chorem-entities/src/main/java/org/chorem/ChoremClient.java =================================================================== --- trunk/chorem-entities/src/main/java/org/chorem/ChoremClient.java 2013-07-17 14:34:12 UTC (rev 367) +++ trunk/chorem-entities/src/main/java/org/chorem/ChoremClient.java 2013-07-18 13:28:33 UTC (rev 368) @@ -172,7 +172,7 @@ exts.addAll(org.chorem.entities.CompanyAbstract.extensions); exts.addAll(org.chorem.entities.ConfigurationAbstract.extensions); exts.addAll(org.chorem.entities.ContactDetailsAbstract.extensions); - exts.addAll(org.chorem.entities.ContractAbstract.extensions); + exts.addAll(org.chorem.entities.CompanyHRAbstract.extensions); exts.addAll(org.chorem.entities.DeliveredAbstract.extensions); exts.addAll(org.chorem.entities.DraftAbstract.extensions); exts.addAll(org.chorem.entities.EmployeeAbstract.extensions); @@ -396,13 +396,13 @@ //Code commented before confirmation or modification of the contract implementation //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - //Wikitty w = this.restore(e.getWikittyId()); - //if(w.hasExtension("Contract") && w.getFieldAsDouble("Contract", "dailyReturn") != 0) { - // return w.getFieldAsDouble("Contract", "dailyReturn"); - //} - //else { + Wikitty w = this.restore(e.getWikittyId()); + if(w.hasExtension("Contract") && w.getFieldAsDouble("Contract", "dailyReturn") != 0) { + return w.getFieldAsDouble("Contract", "dailyReturn"); + } + else { return this.getConfiguration().getDailyReturn(); - //} + } } /** * Returns the daily hours worked of the given empoyee @@ -414,13 +414,12 @@ //Code commented before confirmation or modification of the contract implementation //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - //Wikitty w = this.restore(e.getWikittyId()); - //Divide the hours by the daily hours worked (default if it's not specified) - //if(w.hasExtension("Contract") && w.getFieldAsDouble("Contract", "dailyHoursWorked") != 0) { - // return w.getFieldAsDouble("Contract", "dailyHoursWorked"); - //} - //else { + Wikitty w = this.restore(e.getWikittyId()); + if(w.hasExtension("Contract") && w.getFieldAsDouble("Contract", "dailyHoursWorked") != 0) { + return w.getFieldAsDouble("Contract", "dailyHoursWorked"); + } + else { return this.getConfiguration().getDailyHoursWorked(); - //} + } } } Modified: trunk/chorem-entities/src/main/java/org/chorem/ChoremUtil.java =================================================================== --- trunk/chorem-entities/src/main/java/org/chorem/ChoremUtil.java 2013-07-17 14:34:12 UTC (rev 367) +++ trunk/chorem-entities/src/main/java/org/chorem/ChoremUtil.java 2013-07-18 13:28:33 UTC (rev 368) @@ -3,7 +3,9 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Calendar; import java.util.Date; +import java.util.GregorianCalendar; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -67,4 +69,19 @@ return getPeriodInSeconds(start, end)/3600; } + public static int getWorkingDays(Date begin, Date end) { + GregorianCalendar gBegin = new GregorianCalendar(); + GregorianCalendar gEnd = new GregorianCalendar(); + gBegin.setTime(begin); + gEnd.setTime(end); + int days = 0; + while(gBegin.before(gEnd)) { + if(gBegin.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY + && gBegin.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) { + days++; + } + gBegin.add(Calendar.DAY_OF_YEAR, 1); + } + return days; + } } Modified: trunk/chorem-entities/src/main/java/org/chorem/project/Calculation.java =================================================================== --- trunk/chorem-entities/src/main/java/org/chorem/project/Calculation.java 2013-07-17 14:34:12 UTC (rev 367) +++ trunk/chorem-entities/src/main/java/org/chorem/project/Calculation.java 2013-07-18 13:28:33 UTC (rev 368) @@ -36,8 +36,8 @@ private Double expectedProfit = null; private Double lossOrProfit = null; private Double resultPerDay = null; - private Double avgSrp = null; - private Double realSrp = null; + private Double avgReturn = null; + private Double realReturn = null; /** @@ -66,8 +66,8 @@ this.expectedProfit = expectedProfit(); this.lossOrProfit = lossOrProfit(); this.resultPerDay = resultPerDay(); - this.avgSrp = avgSrp(); - this.realSrp = realSrp(); + this.avgReturn = avgReturn(); + this.realReturn = realReturn(); } /** @@ -105,10 +105,10 @@ return timePercentages; } /** - * Return the average Srp for all the employees, ponderated by the percentages + * Return the average Return for all the employees, ponderated by the percentages * @return */ - public double avgSrp() { + public double avgReturn() { //Fetch the percentages per employee HashMap<Employee, Double> percentages = getPercentages(); @@ -116,38 +116,37 @@ return client.getConfiguration().getDailyReturn(); } Set<Employee> keySet = percentages.keySet(); - double avgSrp = 0; + double avgReturn = 0; for(Employee key : keySet) { - avgSrp += client.getDailyReturn(key)*(percentages.get(key)/100); - System.out.println("RETOUR JOURNALIER DE " + key + ": " + client.getDailyReturn(key)); + avgReturn += client.getDailyReturn(key)*(percentages.get(key)/100); } - return avgSrp; + return avgReturn; } /** * Calculates the real daily return from the different times object and the daily return of the employees. * @return */ - public double realSrp() { + public double realReturn() { HashMap<Employee, Double> times = getTimes(); if(times.size() == 0) { return client.getConfiguration().getDailyReturn(); } - double realSrp = 0; + double realReturn = 0; Set<Employee> keySet = times.keySet(); for(Employee key : keySet) { double srp = client.getDailyReturn(key); - double hoursPerDay = client.getConfiguration().getDailyHoursWorked(); + double hoursPerDay = client.getDailyHoursWorked(key); //TODO :Find a way to use the different work hours //} - realSrp += srp* ( times.get(key) / hoursPerDay ) ; + realReturn += srp* ( times.get(key) / hoursPerDay ) ; } - realSrp = realSrp/getRealDays(); + realReturn = realReturn/getRealDays(); - return realSrp; + return realReturn; } /** @@ -183,7 +182,7 @@ * @return */ public double expectedProfit() { - return amount - (nbDays*getAvgSrp()); + return amount - (nbDays*getAvgReturn()); } /** @@ -191,7 +190,7 @@ * @return */ public double lossOrProfit() { - return amount - (getRealDays() * getRealSrp()); + return amount - (getRealDays() * getRealReturn()); } /** @@ -213,58 +212,49 @@ public double getAdr() { if(adr == null) - return adr(); - else - return adr; + adr = adr(); + return adr; } public double getRealDays() { if(realDays == null) - return realDays(); - else - return realDays; + realDays = realDays(); + return realDays; } public double getDeltaDays() { if(deltaDays == null) - return deltaDays; - else - return deltaDays; + deltaDays = deltaDays(); + return deltaDays; } public double getRealAdr() { if(realAdr == null) - return realAdr(); - else - return realAdr; + realAdr = realAdr(); + return realAdr; } public double getExpectedProfit() { if(expectedProfit == null) - return expectedProfit(); - else - return expectedProfit; + expectedProfit = expectedProfit(); + return expectedProfit; } public double getLossOrProfit() { if(lossOrProfit == null) - return lossOrProfit(); - else - return lossOrProfit; + lossOrProfit = lossOrProfit(); + return lossOrProfit; } public double getResultPerDay() { if(resultPerDay == null) - return resultPerDay(); - else - return resultPerDay; + resultPerDay = resultPerDay(); + return resultPerDay; } - public double getAvgSrp() { - if(avgSrp == null) - return avgSrp(); - else - return avgSrp; + public double getAvgReturn() { + if(avgReturn == null) + avgReturn = avgReturn(); + return avgReturn; } - public double getRealSrp() { - if(realSrp == null) - return realSrp(); - else - return realSrp; + public double getRealReturn() { + if(realReturn == null) + realReturn = realReturn(); + return realReturn; } public T getObject() { Modified: trunk/chorem-entities/src/main/java/org/chorem/project/QuotationCalculation.java =================================================================== --- trunk/chorem-entities/src/main/java/org/chorem/project/QuotationCalculation.java 2013-07-17 14:34:12 UTC (rev 367) +++ trunk/chorem-entities/src/main/java/org/chorem/project/QuotationCalculation.java 2013-07-18 13:28:33 UTC (rev 368) @@ -33,27 +33,32 @@ @Override public HashMap<Employee, Double> getPercentages() { HashMap<Employee, Double> percentages = new HashMap<Employee, Double>(); + double totalDays = 0; + for(Task t : tasks) + totalDays += t.getEstimatedDays(); + List<Task> tasks = getTasks(); for(Task t : tasks) { HashMap<Employee, Double> taskPercentages = new TaskCalculation(t, client).getPercentages(); for(Employee emp : taskPercentages.keySet()) { + double rate = (t.getEstimatedDays()/totalDays); if(percentages.containsKey(emp)) { //We temporaly put the sum in the map. - percentages.put(emp, percentages.get(emp) + taskPercentages.get(emp)); + percentages.put(emp, percentages.get(emp) + taskPercentages.get(emp)*rate); } else { - percentages.put(emp, taskPercentages.get(emp)); + percentages.put(emp, taskPercentages.get(emp)*rate); } } } //Caluculate the average for each employee - Set<Employee> keySet = percentages.keySet(); + /*Set<Employee> keySet = percentages.keySet(); for(Employee emp : keySet) { percentages.put(emp, percentages.get(emp)/tasks.size()); - } + }*/ return percentages; } Modified: trunk/chorem-entities/src/main/xmi/chorem-model.properties =================================================================== --- trunk/chorem-entities/src/main/xmi/chorem-model.properties 2013-07-17 14:34:12 UTC (rev 367) +++ trunk/chorem-entities/src/main/xmi/chorem-model.properties 2013-07-18 13:28:33 UTC (rev 368) @@ -67,6 +67,11 @@ org.chorem.entities.Company.attribute.type.tagvalue.help=type de la soci\u00e9t\u00e9 (SARL, SA, SAS, ...) org.chorem.entities.Company.attribute.type.tagvalue.choiceQuery=SELECT Company.type WHERE extension=Company # +# CompanyHR +# +org.chorem.entities.Company.class.tagvalue.version=1.0 +org.chorem.entities.Company.class.tagvalue.toString=%Company.name|noname$s +# # Configuration # org.chorem.entities.Configuration.class.tagvalue.version=3.0 @@ -93,17 +98,11 @@ org.chorem.entities.Employee.attribute.description.tagvalue.subtype=text/rst org.chorem.entities.Employee.attribute.person.tagvalue.help=Autocompl\u00e8tion possible org.chorem.entities.Employee.attribute.company.tagvalue.help=Autocompl\u00e8tion possible + # -# Contract -# -org.chorem.entities.Contract.class.tagvalue.version=2.0 -org.chorem.entities.Contract.class.tagvalue.toString=%Employee.person$s - %Contract.dailyReturn$s (%Contract.salary$s) -org.chorem.entities.Contract.class.tagvalue.sortOrder=Contract.salary,Contract.dailyReturn -org.chorem.entities.Contract.attribute.dailyReturn.tagvalue.help=Seuil rentabilit\u00e8 productif -# # EmployeeHR # -org.chorem.entities.EmployeeHR.class.tagvalue.version=2.0 +org.chorem.entities.EmployeeHR.class.tagvalue.version=3.0 org.chorem.entities.EmployeeHR.class.tagvalue.toString=%Employee.person$s (%Employee.company$s) HR org.chorem.entities.EmployeeHR.attribute.type.tagvalue.help=Le type de contrat de travail (CDI, CDD, Stage, ...) org.chorem.entities.EmployeeHR.attribute.type.tagvalue.choiceQuery=SELECT EmployeeHR.type WHERE extension=EmployeeHR @@ -112,6 +111,9 @@ org.chorem.entities.EmployeeHR.attribute.otherLeave.tagvalue.help=Le nombre de jours de cong\u00e9s de diverses natures attribu\u00e9s (maternit\u00e9s, anciennet\u00e9s, sans-solde, autres...) org.chorem.entities.EmployeeHR.attribute.salary.tagvalue.help=Le salaire brut mensuel org.chorem.entities.EmployeeHR.attribute.workingTime.tagvalue.help=Le temps de travail mensuel +org.chorem.entities.EmployeeHR.attribute.dailyReturn.tagvalue.help=Seuil de rentabilite productif +org.chorem.entities.EmployeeHR.attribute.productivityRate.tagvalue.help=Taux de productivité +org.chorem.entities.EmployeeHR.attribute.partialTime.tagvalue.help=Taux de travail (temps complet:100, mi-temps:50) # # Evaluation (a mettre ici) # Modified: trunk/chorem-entities/src/main/xmi/chorem-model.zargo =================================================================== (Binary files differ)
participants (1)
-
meynier@users.chorem.org