use of com.axelor.apps.hr.service.timesheet.TimesheetService in project axelor-open-suite by axelor.
the class TimesheetController method updateTimeLoggingPreference.
/**
* Called from timesheet form, on user change. Call {@link
* TimesheetService#updateTimeLoggingPreference(Timesheet)} to update the timesheet, and update
* the dummy field $periodTotalConvert
*
* @param request
* @param response
*/
public void updateTimeLoggingPreference(ActionRequest request, ActionResponse response) {
try {
Timesheet timesheet = request.getContext().asType(Timesheet.class);
Beans.get(TimesheetService.class).updateTimeLoggingPreference(timesheet);
response.setAttr("$periodTotalConvert", "hidden", false);
response.setAttr("$periodTotalConvert", "value", Beans.get(TimesheetLineService.class).computeHoursDuration(timesheet, timesheet.getPeriodTotal(), false));
response.setAttr("$periodTotalConvert", "title", Beans.get(TimesheetService.class).getPeriodTotalConvertTitle(timesheet));
response.setValue("timeLoggingPreferenceSelect", timesheet.getTimeLoggingPreferenceSelect());
response.setValue("timesheetLineList", timesheet.getTimesheetLineList());
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
use of com.axelor.apps.hr.service.timesheet.TimesheetService in project axelor-open-suite by axelor.
the class TimesheetController method draft.
/**
* Called from timesheet form view, on clicking "return to draft" button. <br>
* Call {@link TimesheetService#draft(Timesheet)}
*
* @param request
* @param response
*/
public void draft(ActionRequest request, ActionResponse response) {
try {
Timesheet timesheet = request.getContext().asType(Timesheet.class);
timesheet = Beans.get(TimesheetRepository.class).find(timesheet.getId());
Beans.get(TimesheetService.class).draft(timesheet);
response.setReload(true);
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
use of com.axelor.apps.hr.service.timesheet.TimesheetService in project axelor-open-suite by axelor.
the class TimesheetController method timesheetPeriodTotalController.
public void timesheetPeriodTotalController(ActionRequest request, ActionResponse response) {
try {
Timesheet timesheet = request.getContext().asType(Timesheet.class);
TimesheetService timesheetService = Beans.get(TimesheetService.class);
BigDecimal periodTotal = timesheetService.computePeriodTotal(timesheet);
response.setAttr("periodTotal", "value", periodTotal);
response.setAttr("$periodTotalConvert", "hidden", false);
response.setAttr("$periodTotalConvert", "value", Beans.get(TimesheetLineService.class).computeHoursDuration(timesheet, periodTotal, false));
response.setAttr("$periodTotalConvert", "title", timesheetService.getPeriodTotalConvertTitle(timesheet));
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
use of com.axelor.apps.hr.service.timesheet.TimesheetService in project axelor-open-suite by axelor.
the class HumanResourceMobileController method insertOrUpdateTSLine.
/*
* This method is used in mobile application.
* It was in TimesheetServiceImpl
* @param request
* @param response
*
* POST /open-suite-webapp/ws/action/com.axelor.apps.hr.mobile.HumanResourceMobileController:insertOrUpdateTSLine
* Content-Type: application/json
*
* URL: com.axelor.apps.hr.mobile.HumanResourceMobileController:insertOrUpdateTSLine
* fields: (id,) project, activity, date, duration, comments
*
* payload:
* { "data": {
* "action": "com.axelor.apps.hr.mobile.HumanResourceMobileController:insertOrUpdateTSLine",
* "id": 1,
* "project": 1,
* "activity": 2,
* "date": "2018-02-22",
* "duration": 10,
* "comments": "no"
* } }
*/
@Transactional
public void insertOrUpdateTSLine(ActionRequest request, ActionResponse response) {
// insert TimesheetLine
try {
Map<String, Object> requestData = request.getData();
User user = AuthUtils.getUser();
Project project = Beans.get(ProjectRepository.class).find(new Long(request.getData().get("project").toString()));
Product product = Beans.get(ProductRepository.class).find(new Long(request.getData().get("activity").toString()));
LocalDate date = LocalDate.parse(request.getData().get("date").toString(), DateTimeFormatter.ISO_DATE);
TimesheetRepository timesheetRepository = Beans.get(TimesheetRepository.class);
TimesheetService timesheetService = Beans.get(TimesheetService.class);
TimesheetLineService timesheetLineService = Beans.get(TimesheetLineService.class);
if (user != null) {
Timesheet timesheet = timesheetRepository.all().filter("self.statusSelect = 1 AND self.user.id = ?1", user.getId()).order("-id").fetchOne();
if (timesheet == null) {
timesheet = timesheetService.createTimesheet(user, date, date);
}
BigDecimal hours = new BigDecimal(request.getData().get("duration").toString());
TimesheetLine line;
Object idO = requestData.get("id");
if (idO != null) {
line = timesheetLineService.updateTimesheetLine(Beans.get(TimesheetLineRepository.class).find(Long.valueOf(idO.toString())), project, product, user, date, timesheet, hours, request.getData().get("comments").toString());
} else {
line = timesheetLineService.createTimesheetLine(project, product, user, date, timesheet, hours, request.getData().get("comments").toString());
}
// convert hours to what is defined in timeLoggingPreferenceSelect
BigDecimal duration = timesheetLineService.computeHoursDuration(timesheet, hours, false);
line.setDuration(duration);
timesheet.addTimesheetLineListItem(line);
timesheetRepository.save(timesheet);
response.setTotal(1);
HashMap<String, Object> data = new HashMap<>();
data.put("id", line.getId());
response.setData(data);
}
} catch (Exception e) {
TraceBackService.trace(e);
}
}
use of com.axelor.apps.hr.service.timesheet.TimesheetService in project axelor-open-suite by axelor.
the class TimesheetController method valid.
/**
* Action called when validating a timesheet. Changing status + Sending mail to Applicant
*
* @param request
* @param response
* @throws AxelorException
*/
public void valid(ActionRequest request, ActionResponse response) throws AxelorException {
try {
Timesheet timesheet = request.getContext().asType(Timesheet.class);
timesheet = Beans.get(TimesheetRepository.class).find(timesheet.getId());
TimesheetService timesheetService = Beans.get(TimesheetService.class);
timesheetService.checkEmptyPeriod(timesheet);
computeTimeSpent(request, response);
Message message = timesheetService.validateAndSendValidationEmail(timesheet);
if (message != null && message.getStatusSelect() == MessageRepository.STATUS_SENT) {
response.setFlash(String.format(I18n.get("Email sent to %s"), Beans.get(MessageServiceBaseImpl.class).getToRecipients(message)));
}
Beans.get(PeriodService.class).checkPeriod(timesheet.getCompany(), timesheet.getToDate(), timesheet.getFromDate());
} catch (Exception e) {
TraceBackService.trace(response, e);
} finally {
response.setReload(true);
}
}
Aggregations