use of com.axelor.apps.account.db.Move in project axelor-open-suite by axelor.
the class DoubtfulCustomerService method getMove.
/**
* Fonction permettant de récupérer les écritures de facture à transférer sur le compte client
* douteux
*
* @param rule Le règle à appliquer :
* <ul>
* <li>0 = Créance de + 6 mois
* <li>1 = Créance de + 3 mois
* </ul>
*
* @param doubtfulCustomerAccount Le compte client douteux
* @param company La société
* @return Les écritures de facture à transférer sur le compte client douteux
*/
public List<Move> getMove(int rule, Account doubtfulCustomerAccount, Company company) {
LocalDate date = null;
switch(rule) {
// Créance de + 6 mois
case 0:
date = Beans.get(AppBaseService.class).getTodayDate(company).minusMonths(company.getAccountConfig().getSixMonthDebtMonthNumber());
break;
// Créance de + 3 mois
case 1:
date = Beans.get(AppBaseService.class).getTodayDate(company).minusMonths(company.getAccountConfig().getThreeMonthDebtMontsNumber());
break;
default:
break;
}
log.debug("Date de créance prise en compte : {} ", date);
String request = "SELECT DISTINCT m FROM MoveLine ml, Move m WHERE ml.move = m AND m.company.id = " + company.getId() + " AND ml.account.useForPartnerBalance = true " + "AND m.invoice IS NOT NULL AND ml.amountRemaining > 0.00 AND ml.debit > 0.00 AND ml.dueDate < '" + date.toString() + "' AND ml.account.id != " + doubtfulCustomerAccount.getId() + " AND m.invoice.operationTypeSelect = " + InvoiceRepository.OPERATION_TYPE_CLIENT_SALE;
log.debug("Requete : {} ", request);
Query query = JPA.em().createQuery(request);
@SuppressWarnings("unchecked") List<Move> moveList = query.getResultList();
return moveList;
}
use of com.axelor.apps.account.db.Move in project axelor-open-suite by axelor.
the class DoubtfulCustomerService method createDoubtFulCustomerRejectMove.
/**
* Procédure permettant de créer les écritures de passage en client douteux pour chaque ligne
* d'écriture de rejet de facture
*
* @param moveLine Une ligne d'écritures de rejet de facture
* @param doubtfulCustomerAccount Un compte client douteux
* @param debtPassReason Un motif de passage en client douteux
* @throws AxelorException
*/
@Transactional(rollbackOn = { Exception.class })
public void createDoubtFulCustomerRejectMove(MoveLine moveLine, Account doubtfulCustomerAccount, String debtPassReason) throws AxelorException {
log.debug("Ecriture concernée : {} ", moveLine.getName());
Company company = moveLine.getMove().getCompany();
Partner partner = moveLine.getPartner();
LocalDate todayDate = appBaseService.getTodayDate(company);
Move newMove = moveService.getMoveCreateService().createMove(company.getAccountConfig().getAutoMiscOpeJournal(), company, null, partner, moveLine.getMove().getPaymentMode(), MoveRepository.TECHNICAL_ORIGIN_AUTOMATIC, moveLine.getMove().getFunctionalOriginSelect());
BigDecimal amountRemaining = moveLine.getAmountRemaining();
// Ecriture au crédit sur le 411
MoveLine creditMoveLine = moveLineService.createMoveLine(newMove, partner, moveLine.getAccount(), amountRemaining, false, todayDate, 1, moveLine.getName(), debtPassReason);
newMove.addMoveLineListItem(creditMoveLine);
Reconcile reconcile = reconcileService.createReconcile(moveLine, creditMoveLine, amountRemaining, false);
if (reconcile != null) {
reconcileService.confirmReconcile(reconcile, true);
}
// Ecriture au débit sur le 416 (client douteux)
MoveLine debitMoveLine = moveLineService.createMoveLine(newMove, newMove.getPartner(), doubtfulCustomerAccount, amountRemaining, true, todayDate, 2, moveLine.getName(), debtPassReason);
newMove.getMoveLineList().add(debitMoveLine);
debitMoveLine.setInvoiceReject(moveLine.getInvoiceReject());
debitMoveLine.setPassageReason(debtPassReason);
moveService.getMoveValidateService().validate(newMove);
moveRepo.save(newMove);
this.invoiceRejectProcess(debitMoveLine, doubtfulCustomerAccount, debtPassReason);
}
use of com.axelor.apps.account.db.Move in project axelor-open-suite by axelor.
the class ExtractContextMoveServiceImpl method getMapFromMoveWizardGenerateReverseForm.
@Override
public Map<String, Object> getMapFromMoveWizardGenerateReverseForm(Context context) throws AxelorException {
Move move = context.asType(Move.class);
Map<String, Object> assistantMap = new HashMap<String, Object>();
int dateOfReversionSelect = (int) context.get("dateOfReversionSelect");
LocalDate dateOfReversion;
switch(dateOfReversionSelect) {
case MoveRepository.DATE_OF_REVERSION_TODAY:
dateOfReversion = Beans.get(AppBaseService.class).getTodayDate(move.getCompany());
break;
case MoveRepository.DATE_OF_REVERSION_ORIGINAL_MOVE_DATE:
dateOfReversion = move.getDate();
break;
case MoveRepository.DATE_OF_REVERSION_CHOOSE_DATE:
dateOfReversion = LocalDate.parse(context.get("dateOfReversion").toString());
break;
default:
throw new AxelorException(move, TraceBackRepository.CATEGORY_MISSING_FIELD, I18n.get(IExceptionMessage.REVERSE_DATE_SELECT_UNKNOW_TYPE), dateOfReversionSelect);
}
assistantMap.put("dateOfReversion", dateOfReversion);
assistantMap.put("isAutomaticReconcile", (boolean) context.get("isAutomaticReconcile"));
assistantMap.put("isAutomaticAccounting", (boolean) context.get("isAutomaticAccounting"));
assistantMap.put("isUnreconcileOriginalMove", (boolean) context.get("isUnreconcileOriginalMove"));
return assistantMap;
}
use of com.axelor.apps.account.db.Move in project axelor-open-suite by axelor.
the class MoveAdjustementService method createAdjustmentCreditMove.
/**
* Creating move of passage in gap regulation (on credit)
*
* @param debitMoveLine
* @return
* @throws AxelorException
*/
public MoveLine createAdjustmentCreditMove(MoveLine debitMoveLine) throws AxelorException {
Partner partner = debitMoveLine.getPartner();
Account account = debitMoveLine.getAccount();
Move debitMove = debitMoveLine.getMove();
Company company = debitMove.getCompany();
BigDecimal debitAmountRemaining = debitMoveLine.getAmountRemaining();
AccountConfig accountConfig = accountConfigService.getAccountConfig(company);
Journal miscOperationJournal = accountConfigService.getAutoMiscOpeJournal(accountConfig);
Move adjustmentMove = moveCreateService.createMove(miscOperationJournal, company, null, partner, null, MoveRepository.TECHNICAL_ORIGIN_AUTOMATIC, debitMove.getFunctionalOriginSelect());
// Création de la ligne au crédit
MoveLine creditAdjustmentMoveLine = moveLineService.createMoveLine(adjustmentMove, partner, account, debitAmountRemaining, false, appAccountService.getTodayDate(company), 1, null, null);
// Création de la ligne au débit
MoveLine debitAdjustmentMoveLine = moveLineService.createMoveLine(adjustmentMove, partner, accountConfigService.getCashPositionVariationAccount(accountConfig), debitAmountRemaining, true, appAccountService.getTodayDate(company), 2, null, null);
adjustmentMove.addMoveLineListItem(creditAdjustmentMoveLine);
adjustmentMove.addMoveLineListItem(debitAdjustmentMoveLine);
moveValidateService.validate(adjustmentMove);
moveRepository.save(adjustmentMove);
return creditAdjustmentMoveLine;
}
use of com.axelor.apps.account.db.Move in project axelor-open-suite by axelor.
the class MoveAdjustementService method createMoveToPassOnTheOtherAccount.
/**
* Méthode permettant de créer une écriture du passage du compte de l'écriture au debit vers le
* compte de l'écriture au credit.
*
* @param debitMoveLineToReconcile Ecriture au débit
* @param creditMoveLineToReconcile Ecriture au crédit
* @param amount Montant
* @return L'écriture de passage du compte de l'écriture au debit vers le compte de l'écriture au
* credit.
* @throws AxelorException
*/
public Move createMoveToPassOnTheOtherAccount(MoveLine debitMoveLineToReconcile, MoveLine creditMoveLineToReconcile, BigDecimal amount) throws AxelorException {
Partner partnerDebit = debitMoveLineToReconcile.getPartner();
Partner partnerCredit = creditMoveLineToReconcile.getPartner();
Company company = debitMoveLineToReconcile.getMove().getCompany();
AccountConfig accountConfig = accountConfigService.getAccountConfig(company);
Journal journal = accountConfigService.getAutoMiscOpeJournal(accountConfig);
// Move
Move move = moveCreateService.createMove(journal, company, null, partnerDebit, null, MoveRepository.TECHNICAL_ORIGIN_AUTOMATIC, debitMoveLineToReconcile.getMove().getFunctionalOriginSelect());
MoveLine debitMoveLine = moveLineService.createMoveLine(move, partnerCredit, creditMoveLineToReconcile.getAccount(), amount, true, appAccountService.getTodayDate(company), 1, null, null);
MoveLine creditMoveLine = moveLineService.createMoveLine(move, partnerDebit, debitMoveLineToReconcile.getAccount(), amount, false, appAccountService.getTodayDate(company), 2, null, null);
move.addMoveLineListItem(debitMoveLine);
move.addMoveLineListItem(creditMoveLine);
moveValidateService.validate(move);
return move;
}
Aggregations