use of com.axelor.apps.hr.service.expense.ExpenseService in project axelor-open-suite by axelor.
the class ExpenseController method cancelPayment.
/**
* Called on clicking cancelPaymentButton, call {@link ExpenseService#cancelPayment(Expense)}.
*
* @param request
* @param response
*/
public void cancelPayment(ActionRequest request, ActionResponse response) {
Expense expense = request.getContext().asType(Expense.class);
expense = Beans.get(ExpenseRepository.class).find(expense.getId());
try {
Beans.get(ExpenseService.class).cancelPayment(expense);
response.setReload(true);
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
use of com.axelor.apps.hr.service.expense.ExpenseService in project axelor-open-suite by axelor.
the class HumanResourceMobileController method insertKMExpenses.
/**
* This method is used in mobile application. It was in ExpenseController
*
* @param request
* @param response
* @throws AxelorException
* <p>POST
* /open-suite-webapp/ws/action/com.axelor.apps.hr.mobile.HumanResourceMobileController:insertKMExpenses
* Content-Type: application/json
* <p>URL: com.axelor.apps.hr.mobile.HumanResourceMobileController:insertKMExpenses fields:
* kmNumber, locationFrom, locationTo, allowanceTypeSelect, comments, date, projectTask,
* kilometricAllowParam
* <p>payload: { "data": { "action":
* "com.axelor.apps.hr.mobile.HumanResourceMobileController:insertKMExpenses", "kmNumber":
* 350.00, "locationFrom": "Paris", "locationTo": "Marseille", "allowanceTypeSelect": 1,
* "comments": "no", "date": "2018-02-22", "expenseProduct": 43 } }
*/
@Transactional(rollbackOn = { Exception.class })
public void insertKMExpenses(ActionRequest request, ActionResponse response) throws AxelorException {
User user = AuthUtils.getUser();
if (user != null) {
ExpenseService expenseService = Beans.get(ExpenseService.class);
Expense expense = expenseService.getOrCreateExpense(user);
ExpenseLine expenseLine = new ExpenseLine();
expenseLine.setDistance(new BigDecimal(request.getData().get("kmNumber").toString()));
expenseLine.setFromCity(request.getData().get("locationFrom").toString());
expenseLine.setToCity(request.getData().get("locationTo").toString());
expenseLine.setKilometricTypeSelect(new Integer(request.getData().get("allowanceTypeSelect").toString()));
expenseLine.setComments(request.getData().get("comments").toString());
expenseLine.setExpenseDate(LocalDate.parse(request.getData().get("date").toString()));
expenseLine.setProject(Beans.get(ProjectRepository.class).find(Long.valueOf(request.getData().get("projectTask").toString())));
HRConfigService hrConfigService = Beans.get(HRConfigService.class);
HRConfig hrConfig = hrConfigService.getHRConfig(expense.getCompany());
Product expenseProduct = hrConfigService.getKilometricExpenseProduct(hrConfig);
expenseLine.setExpenseProduct(expenseProduct);
Employee employee = user.getEmployee();
if (employee != null && !EmployeeHRRepository.isEmployeeFormerNewOrArchived(employee)) {
KilometricAllowParamRepository kilometricAllowParamRepo = Beans.get(KilometricAllowParamRepository.class);
expenseLine.setKilometricAllowParam(kilometricAllowParamRepo.find(Long.valueOf(request.getData().get("kilometricAllowParam").toString())));
expenseLine.setTotalAmount(Beans.get(KilometricService.class).computeKilometricExpense(expenseLine, employee));
expenseLine.setUntaxedAmount(expenseLine.getTotalAmount());
}
expense.addKilometricExpenseLineListItem(expenseLine);
Beans.get(ExpenseRepository.class).save(expense);
response.setValue("id", expenseLine.getId());
}
}
use of com.axelor.apps.hr.service.expense.ExpenseService in project axelor-open-suite by axelor.
the class HumanResourceMobileController method insertOrUpdateExpenseLine.
/*
* This method is used in mobile application.
* It was in ExpenseServiceImpl
* @param request
* @param response
*
* POST /open-suite-webapp/ws/action/com.axelor.apps.hr.mobile.HumanResourceMobileController:insertOrUpdateExpenseLine
* Content-Type: application/json
*
* URL: com.axelor.apps.hr.mobile.HumanResourceMobileController:insertOrUpdateExpenseLine
* fields: (id,) project, expenseType, date, comments, toInvoice, unTaxTotal, taxTotal, justification
*
* payload:
* { "data": {
* "action": "com.axelor.apps.hr.mobile.HumanResourceMobileController:insertOrUpdateExpenseLine",
* "id": 1,
* "project": 2,
* "expenseType": 10,
* "date": "2018-02-22",
* "comments": "No",
* "toInvoice": "no",
* "unTaxTotal": 100,
* "taxTotal": 2,
* "justification": "no"
* } }
*/
@Transactional
public void insertOrUpdateExpenseLine(ActionRequest request, ActionResponse response) {
try {
User user = AuthUtils.getUser();
Map<String, Object> requestData = request.getData();
Project project = Beans.get(ProjectRepository.class).find(Long.valueOf(requestData.get("project").toString()));
Product product = Beans.get(ProductRepository.class).find(Long.valueOf(requestData.get("expenseType").toString()));
if (user != null) {
ExpenseService expenseService = Beans.get(ExpenseService.class);
Expense expense = expenseService.getOrCreateExpense(user);
ExpenseLine expenseLine;
Object idO = requestData.get("id");
if (idO != null) {
expenseLine = Beans.get(ExpenseLineRepository.class).find(Long.valueOf(idO.toString()));
} else {
expenseLine = new ExpenseLine();
}
expenseLine.setExpenseDate(LocalDate.parse(requestData.get("date").toString(), DateTimeFormatter.ISO_DATE));
expenseLine.setComments(requestData.get("comments").toString());
expenseLine.setExpenseProduct(product);
expenseLine.setProject(project);
expenseLine.setUser(user);
expenseLine.setTotalAmount(new BigDecimal(requestData.get("unTaxTotal").toString()));
expenseLine.setTotalTax(new BigDecimal(requestData.get("taxTotal").toString()));
expenseLine.setUntaxedAmount(expenseLine.getTotalAmount().subtract(expenseLine.getTotalTax()));
expenseLine.setToInvoice(new Boolean(requestData.get("toInvoice").toString()));
String justification = (String) requestData.get("justification");
if (!Strings.isNullOrEmpty(justification)) {
String MIME_IMAGE_X_ICON = "image/x-icon";
String MIME_IMAGE_SVG_XML = "image/svg+xml";
String MIME_IMAGE_BMP = "image/bmp";
String MIME_IMAGE_GIF = "image/gif";
String MIME_IMAGE_JPEG = "image/jpeg";
String MIME_IMAGE_TIFF = "image/tiff";
String MIME_IMAGE_PNG = "image/png";
Map<String, String> mimeTypeMapping = new HashMap<>(200);
mimeTypeMapping.put(MIME_IMAGE_X_ICON, "ico");
mimeTypeMapping.put(MIME_IMAGE_SVG_XML, "svg");
mimeTypeMapping.put(MIME_IMAGE_BMP, "bmp");
mimeTypeMapping.put(MIME_IMAGE_GIF, "gif");
mimeTypeMapping.put(MIME_IMAGE_JPEG, "jpg");
mimeTypeMapping.put(MIME_IMAGE_TIFF, "tif");
mimeTypeMapping.put(MIME_IMAGE_PNG, "png");
byte[] decodedFile = Base64.getDecoder().decode(justification);
String formatName = URLConnection.guessContentTypeFromStream(new ByteArrayInputStream(decodedFile));
String extension = "";
if (mimeTypeMapping.containsKey(formatName)) {
extension = "." + mimeTypeMapping.get(formatName);
File file = MetaFiles.createTempFile("justification", extension).toFile();
Files.write(decodedFile, file);
MetaFile metaFile = Beans.get(MetaFiles.class).upload(file);
expenseLine.setJustificationMetaFile(metaFile);
}
}
expense.addGeneralExpenseLineListItem(expenseLine);
expense = expenseService.compute(expense);
Beans.get(ExpenseRepository.class).save(expense);
HashMap<String, Object> data = new HashMap<>();
data.put("id", expenseLine.getId());
response.setData(data);
response.setTotal(1);
}
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
Aggregations