Search in sources :

Example 66 with Move

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);
}
Also used : AxelorException(com.axelor.exception.AxelorException) MoveCancelService(com.axelor.apps.account.service.move.MoveCancelService) Move(com.axelor.apps.account.db.Move) BankOrder(com.axelor.apps.bankpayment.db.BankOrder) Transactional(com.google.inject.persist.Transactional)

Example 67 with Move

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;
}
Also used : AnalyticAccount(com.axelor.apps.account.db.AnalyticAccount) Account(com.axelor.apps.account.db.Account) ReconcileService(com.axelor.apps.account.service.ReconcileService) Company(com.axelor.apps.base.db.Company) Move(com.axelor.apps.account.db.Move) BankDetails(com.axelor.apps.base.db.BankDetails) MoveLine(com.axelor.apps.account.db.MoveLine) AnalyticMoveLine(com.axelor.apps.account.db.AnalyticMoveLine) Journal(com.axelor.apps.account.db.Journal) Partner(com.axelor.apps.base.db.Partner) LocalDate(java.time.LocalDate) BigDecimal(java.math.BigDecimal) PaymentMode(com.axelor.apps.account.db.PaymentMode)

Example 68 with 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);
}
Also used : MoveRepository(com.axelor.apps.account.db.repo.MoveRepository) AxelorException(com.axelor.exception.AxelorException) Move(com.axelor.apps.account.db.Move) PeriodService(com.axelor.apps.base.service.PeriodService) MessagingException(javax.mail.MessagingException) AxelorException(com.axelor.exception.AxelorException) JSONException(wslite.json.JSONException) IOException(java.io.IOException) Transactional(com.google.inject.persist.Transactional)

Example 69 with Move

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;
}
Also used : Move(com.axelor.apps.account.db.Move) Transactional(com.google.inject.persist.Transactional)

Example 70 with 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);
    }
}
Also used : Expense(com.axelor.apps.hr.db.Expense) Move(com.axelor.apps.account.db.Move) ExpenseService(com.axelor.apps.hr.service.expense.ExpenseService) AxelorException(com.axelor.exception.AxelorException)

Aggregations

Move (com.axelor.apps.account.db.Move)101 MoveLine (com.axelor.apps.account.db.MoveLine)51 Transactional (com.google.inject.persist.Transactional)37 Company (com.axelor.apps.base.db.Company)36 AxelorException (com.axelor.exception.AxelorException)34 BigDecimal (java.math.BigDecimal)33 Partner (com.axelor.apps.base.db.Partner)31 LocalDate (java.time.LocalDate)28 Journal (com.axelor.apps.account.db.Journal)25 Account (com.axelor.apps.account.db.Account)22 ArrayList (java.util.ArrayList)22 AccountConfig (com.axelor.apps.account.db.AccountConfig)18 Reconcile (com.axelor.apps.account.db.Reconcile)14 AnalyticMoveLine (com.axelor.apps.account.db.AnalyticMoveLine)11 Invoice (com.axelor.apps.account.db.Invoice)11 List (java.util.List)7 BankDetails (com.axelor.apps.base.db.BankDetails)6 InvoicePayment (com.axelor.apps.account.db.InvoicePayment)5 MoveRepository (com.axelor.apps.account.db.repo.MoveRepository)5 MoveService (com.axelor.apps.account.service.move.MoveService)5