use of com.axelor.apps.account.db.Move in project axelor-open-suite by axelor.
the class ExpenseServiceImpl method cancelPayment.
@Override
@Transactional(rollbackOn = { Exception.class })
public void cancelPayment(Expense expense) throws AxelorException {
BankOrder bankOrder = expense.getBankOrder();
if (bankOrder != null) {
if (bankOrder.getStatusSelect() == BankOrderRepository.STATUS_CARRIED_OUT || bankOrder.getStatusSelect() == BankOrderRepository.STATUS_REJECTED) {
throw new AxelorException(TraceBackRepository.CATEGORY_INCONSISTENCY, I18n.get(IExceptionMessage.EXPENSE_PAYMENT_CANCEL));
} else if (bankOrder.getStatusSelect() != BankOrderRepository.STATUS_CANCELED) {
Beans.get(BankOrderService.class).cancelBankOrder(bankOrder);
}
}
Move paymentMove = expense.getPaymentMove();
if (paymentMove != null) {
expense.setPaymentMove(null);
Beans.get(MoveCancelService.class).cancel(paymentMove);
}
expense.setPaymentStatusSelect(InvoicePaymentRepository.STATUS_CANCELED);
expense.setStatusSelect(ExpenseRepository.STATUS_VALIDATED);
expense.setPaymentDate(null);
expense.setPaymentAmount(BigDecimal.ZERO);
expenseRepository.save(expense);
}
use of com.axelor.apps.account.db.Move in project axelor-open-suite by axelor.
the class ExpenseServiceImpl method createMoveForExpensePayment.
public Move createMoveForExpensePayment(Expense expense) throws AxelorException {
Company company = expense.getCompany();
PaymentMode paymentMode = expense.getPaymentMode();
Partner partner = expense.getUser().getPartner();
LocalDate paymentDate = expense.getPaymentDate();
BigDecimal paymentAmount = expense.getInTaxTotal();
BankDetails companyBankDetails = company.getDefaultBankDetails();
Account employeeAccount;
Journal journal = paymentModeService.getPaymentModeJournal(paymentMode, company, companyBankDetails);
MoveLine expenseMoveLine = this.getExpenseEmployeeMoveLineByLoop(expense);
if (expenseMoveLine == null) {
return null;
}
employeeAccount = expenseMoveLine.getAccount();
Move move = moveService.getMoveCreateService().createMove(journal, company, expense.getMove().getCurrency(), partner, paymentDate, paymentMode, MoveRepository.TECHNICAL_ORIGIN_AUTOMATIC, MoveRepository.FUNCTIONAL_ORIGIN_PAYMENT);
move.addMoveLineListItem(moveLineService.createMoveLine(move, partner, paymentModeService.getPaymentModeAccount(paymentMode, company, companyBankDetails), paymentAmount, false, paymentDate, null, 1, expense.getExpenseSeq(), null));
MoveLine employeeMoveLine = moveLineService.createMoveLine(move, partner, employeeAccount, paymentAmount, true, paymentDate, null, 2, expense.getExpenseSeq(), null);
employeeMoveLine.setTaxAmount(expense.getTaxTotal());
move.addMoveLineListItem(employeeMoveLine);
moveService.getMoveValidateService().validate(move);
expense.setPaymentMove(move);
Beans.get(ReconcileService.class).reconcile(expenseMoveLine, employeeMoveLine, true, false);
expenseRepository.save(expense);
return move;
}
use of com.axelor.apps.account.db.Move in project axelor-open-suite by axelor.
the class ExpenseServiceImpl method cancel.
@Override
@Transactional(rollbackOn = { Exception.class })
public void cancel(Expense expense) throws AxelorException {
Move move = expense.getMove();
if (move == null) {
expense.setStatusSelect(ExpenseRepository.STATUS_CANCELED);
expenseRepository.save(expense);
return;
}
Beans.get(PeriodService.class).testOpenPeriod(move.getPeriod());
try {
Beans.get(MoveRepository.class).remove(move);
expense.setMove(null);
expense.setVentilated(false);
expense.setStatusSelect(ExpenseRepository.STATUS_CANCELED);
} catch (Exception e) {
throw new AxelorException(e, expense, TraceBackRepository.CATEGORY_CONFIGURATION_ERROR, I18n.get(com.axelor.apps.hr.exception.IExceptionMessage.EXPENSE_CANCEL_MOVE));
}
expenseRepository.save(expense);
}
use of com.axelor.apps.account.db.Move in project axelor-open-suite by axelor.
the class ExpenseServiceImpl method ventilate.
@Override
@Transactional(rollbackOn = { Exception.class })
public Move ventilate(Expense expense) throws AxelorException {
Move move = null;
setExpenseSeq(expense);
if (expense.getInTaxTotal().signum() != 0) {
move = createAndSetMove(expense);
}
expense.setVentilated(true);
expenseRepository.save(expense);
return move;
}
use of com.axelor.apps.account.db.Move in project axelor-open-suite by axelor.
the class ExpenseController method ventilate.
public void ventilate(ActionRequest request, ActionResponse response) throws AxelorException {
try {
Expense expense = request.getContext().asType(Expense.class);
expense = Beans.get(ExpenseRepository.class).find(expense.getId());
Move move = Beans.get(ExpenseService.class).ventilate(expense);
response.setReload(true);
if (move != null) {
response.setView(ActionView.define(I18n.get("Move")).model(Move.class.getName()).add("grid", "move-grid").add("form", "move-form").param("search-filters", "move-filters").context("_showRecord", String.valueOf(move.getId())).map());
}
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
Aggregations