18 package org.turro.erp.entity;
21 import javax.persistence.*;
22 import org.turro.string.Strings;
23 import org.turro.elephant.impl.util.StringParser;
24 import org.turro.erp.task.TaskStatusWrapper;
25 import org.turro.financials.db.FinancialsPU;
26 import org.turro.financials.entity.Contract;
27 import org.turro.jpa.Dao;
28 import org.turro.jpa.entity.DaoEntity;
29 import org.turro.plugin.contacts.IContact;
36 public class Task implements java.io.Serializable {
39 @GeneratedValue(strategy=GenerationType.IDENTITY)
40 @Column(name=
"IDENTIFIER")
43 @Column(name=
"TASK_NAME", nullable =
false)
48 private String description;
56 @Column(name=
"START_DATE")
57 @Temporal(value = TemporalType.TIMESTAMP)
58 private Date startDate;
60 @Column(name=
"END_DATE")
61 @Temporal(value = TemporalType.TIMESTAMP)
64 @Column(name=
"DELIVERY_DATE")
65 @Temporal(value = TemporalType.TIMESTAMP)
66 private Date delivery;
68 private boolean validated, milestone, waiting;
73 private org.turro.erp.entity.OrderReference orderReference;
75 private long departmentId;
77 @OneToMany(mappedBy =
"task", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval=
true)
79 private Set<Predecessor> predecessors =
new HashSet<Predecessor>();
81 @OneToMany(mappedBy =
"task", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval=
true)
82 private Set<RequiredUsage> requiredUsages =
new HashSet<RequiredUsage>();
89 this.delivery = delivery;
97 this.departmentId = departmentId;
105 this.description = description;
113 this.endDate = endDate;
117 return requiredUsages;
121 this.requiredUsages = requiredUsages;
137 this.milestone = milestone;
149 return aptitudeDegree;
153 this.aptitudeDegree = aptitudeDegree;
157 return orderReference;
161 this.orderReference = orderReference;
169 this.predecessors = predecessors;
177 this.startDate = startDate;
185 this.status = status;
193 this.supervised = supervised;
201 this.validated = validated;
209 this.waiting = waiting;
216 return Strings.isBlank(name) ||
221 Iterator<Predecessor> itp = predecessors.iterator();
222 while(itp.hasNext()) {
229 Iterator<RequiredUsage> ith = requiredUsages.iterator();
230 while(ith.hasNext()) {
253 double estimatedDuration = 0.0;
256 estimatedDuration = Math.max(hru.getEstimatedDuration(), estimatedDuration);
259 if(estimatedDuration == 0.0) {
260 if(startDate !=
null && endDate !=
null) {
261 estimatedDuration = (endDate.getTime() - startDate.getTime()) * (1000.0 * 60.0 * 60.0);
262 estimatedDuration = ((estimatedDuration / 24.0) / 7.0) * 5.0 * 8.0;
266 return estimatedDuration;
270 double realDuration = 0.0;
273 realDuration = Math.max(hru.getRealDuration(), realDuration);
280 ArrayList<AptitudeDegree> list =
new ArrayList<AptitudeDegree>();
281 if(aptitudeDegree !=
null) {
282 list.add(aptitudeDegree);
294 return id +
" - " + Strings.truncateAndWarn(name + (description ==
null ?
"" :
" - " + description), 50);
306 protected Dao createDao() {
310 protected boolean shouldLog() {
313 }.find(departmentId);
317 if(contract !=
null) {
318 departmentId = contract.
getId();
326 if(ru.getHumanResource() !=
null && ru.getHumanResource().fits(contact)) {
330 if(supervised !=
null && supervised.getHumanResource() !=
null &&
331 supervised.getHumanResource().fits(contact)) {
352 return orderReference !=
null &&
359 if(ru.fits(humanResource)) {
369 cost += ru.getMostRealCost();
static String toHTML(String value)
ReferenceStatusWrapper getStatusWrapper()
Collection< AptitudeDegree > getAptitudeDegrees()
OrderReference getOrderReference()
void setValidated(boolean validated)
void setEndDate(Date endDate)
TaskStatusWrapper getStatusWrapper()
Set< RequiredUsage > getRequiredUsages()
AptitudeDegree getAptitudeDegree()
Set< Predecessor > getPredecessors()
void setSupervised(OwnedAptitude supervised)
boolean fits(HumanResource humanResource)
boolean checkStatus(Date now)
void setOrderReference(OrderReference orderReference)
void setMilestone(boolean milestone)
void setDepartment(Contract contract)
void setDescription(String description)
double getEstimatedDuration()
String getHtmlDescription()
TaskStatusWrapper getStatusWrapper(Date now)
void setDepartmentId(long departmentId)
boolean fits(IContact contact)
void setDelivery(Date delivery)
void setRequiredUsages(Set< RequiredUsage > requiredUsages)
void setWaiting(boolean waiting)
boolean isValidationPending()
void setStatus(TaskStatus status)
void setAptitudeDegree(AptitudeDegree aptitudeDegree)
void setName(String name)
void setStartDate(Date startDate)
OwnedAptitude getSupervised()
void setPredecessors(Set< Predecessor > predecessors)
String getFullDescription()