/** * 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; }
/** * Methode permettant de mettre à jour les informations de la facture * * @param moveLine * @param paymentMove * @param pse * @param mlList * @return * @throws AxelorException */ public Invoice updateInvoice( MoveLine moveLine, Move paymentMove, List<MoveLine> mlList, BigDecimal amountExported, long directDebitManagementMaxId) throws AxelorException { Invoice invoice = cfonbExportService.getInvoice(moveLine); this.testBankDetails(invoice); Company company = invoice.getCompany(); // Mise à jour du champ 'Ecriture de paiement' sur la facture log.debug( "generateAllExportInvoice - Mise à jour du champ 'Ecriture de paiement' sur la facture"); invoice.setPaymentMove(paymentMove); // Mise à jour du montant prélever invoice.setDirectDebitAmount(amountExported); // Mise à jour du Numéro de prélèvement sur la facture log.debug("Mise à jour du Numéro de prélèvement sur la facture"); if (this.hasOtherInvoice(mlList, moveLine)) { DirectDebitManagement directDebitManagement = this.getDirectDebitManagement(mlList, moveLine, directDebitManagementMaxId); if (directDebitManagement == null) { directDebitManagement = this.createDirectDebitManagement(this.getDirectDebitSequence(company), company); } invoice.setDirectDebitManagement(directDebitManagement); invoice.setDebitNumber(null); directDebitManagement.getInvoiceSet().add(invoice); directDebitManagementRepo.save(directDebitManagement); } else { invoice.setDebitNumber(this.getDirectDebitSequence(company)); invoice.setDirectDebitManagement(null); } return invoice; }