/** * Procédure permettant de récupérer l'objet de gestion déjà créé lors du prélèvement d'une autre * facture * * @param mlList La liste des lignes d'écriture de facture à prélever * @param ml Une ligne d'écriture de facture ) prélever * @return L'objet de gestion trouvé */ public DirectDebitManagement getDirectDebitManagement( List<MoveLine> moveLineList, MoveLine ml, long directDebitManagementMaxId) { Partner partner = ml.getPartner(); log.debug("Récupération de l'objet de prélèvement du tiers {}", partner.getFullName()); List<MoveLine> moveLineListResult = moveLineRepo .all() .filter("self IN (?1) and self.partner = ?2", moveLineList, partner) .fetch(); for (MoveLine moveLine : moveLineListResult) { Invoice invoice = cfonbExportService.getInvoice(moveLine); DirectDebitManagement directDebitManagement = invoice.getDirectDebitManagement(); if (directDebitManagement != null && directDebitManagement.getId() > directDebitManagementMaxId) { log.debug("Objet de prélèvement trouvé : {} pour le tiers {}", partner.getFullName()); return invoice.getDirectDebitManagement(); } } log.debug("Aucun objet de prélèvement trouvé pour le tiers {}", partner.getFullName()); return null; }
/** * Méthode permettant de récupérer les factures d'échéance mensu grand compte d'un échéancier * * @param paymentSchedule Un échéancier * @return */ public List<MoveLine> getInvoiceMoveLineListToReconcile(PaymentSchedule paymentSchedule) { return moveLineRepo .all() .filter( "self.move.statusSelect = ?1 AND self.exportedDirectDebitOk = 'false' " + "AND self.account.reconcileOk = ?2 AND self.amountRemaining > 0 " + "AND self.move.invoice.operationTypeSelect = ?3 " + "AND self.move.invoice.schedulePaymentOk = 'true' " + "AND self.move.invoice.paymentSchedule = ?4 " + "ORDER BY self.date", MoveRepository.STATUS_VALIDATED, true, InvoiceRepository.OPERATION_TYPE_CLIENT_SALE, paymentSchedule) .fetch(); }
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; }