/** * Procédure permettant d'exporter des factures * * @param company Une société * @param pse Un Export des prélèvement * @param pm Un mode de paiement * @throws AxelorException */ @Transactional(rollbackOn = {AxelorException.class, Exception.class}) public Invoice exportInvoice( MoveLine moveLine, List<MoveLine> moveLineList, Company company, long directDebitManagementMaxId) throws AxelorException { /** * Important : Doit être executé avant la méthode 'createPaymentMove()' afin de récupérer le * montant restant à prélever * */ BigDecimal amountExported = moveLine.getAmountRemaining(); this.testBankDetails(moveLine.getPartner()); // creation d'une ecriture de paiement Invoice invoice = this.updateInvoice( moveLine, this.createPaymentMove( company, moveLine, company.getAccountConfig().getDirectDebitPaymentMode()), moveLineList, amountExported, directDebitManagementMaxId); invoiceRepo.save(invoice); return invoice; }
public List<MoveLine> getInvoiceToExport( Company company, LocalDate scheduleDate, Currency currency) { List<MoveLine> moveLineInvoiceList = new ArrayList<MoveLine>(); PaymentMode paymentMode = company.getAccountConfig().getDirectDebitPaymentMode(); /** * Selection des lignes d'écritures dont : - l'état est validé - la société est celle * selectionnée sur l'objet export - le compte est lettrable - le montant restant à payer est * supérieur à 0 et débit supérieur à 0 (équivaut à une facture et non un avoir) - le mode de * règlement de la facture est en prélèvement - la date d'échéance est passée - la facture est * remplie sur l'écriture - la facture n'est pas selectionnée sur un échéancier */ List<MoveLine> moveLineList = moveLineRepo .all() .filter( "self.move.statusSelect = ?1 AND self.exportedDirectDebitOk = 'false' " + "AND self.move.company = ?2 " + "AND self.account.reconcileOk = ?3 AND self.amountRemaining > 0 " + "AND self.debit > 0 " + "AND self.dueDate <= ?5 AND self.move.invoice IS NOT NULL " + "AND self.move.invoice.paymentMode = ?4 " + "AND self.move.invoice.schedulePaymentOk = 'false' " + "AND self.move.invoice.currency = ?5", MoveRepository.STATUS_VALIDATED, company, true, paymentMode, currency) .fetch(); // Ajout des factures for (MoveLine moveLine : moveLineList) { if (!this.isDebitBlocking(moveLine.getMove().getInvoice())) { moveLineInvoiceList.add(moveLine); } } // Récupération des factures rejetées List<Invoice> invoiceRejectList = invoiceRepo .all() .filter( "self.rejectMoveLine IS NOT NULL AND self.rejectMoveLine.amountRemaining > 0 AND self.rejectMoveLine.debit > 0" + " AND self.paymentMode = ?1 AND self.company = ?2 AND self.rejectMoveLine.exportedDirectDebitOk = 'false' AND self.move.statusSelect = ?3" + " AND self.rejectMoveLine.account.reconcileOk = 'true' " + " AND self.rejectMoveLine.invoiceReject IS NOT NULL" + " AND self.currency = ?4", paymentMode, company, MoveRepository.STATUS_VALIDATED, currency) .fetch(); // Ajout des factures rejetées for (Invoice invoice : invoiceRejectList) { if (!this.isDebitBlocking(invoice)) { moveLineInvoiceList.add(invoice.getRejectMoveLine()); } } return moveLineInvoiceList; }