Bonjour à tous,
Je vous sollicite aujourd’hui car j’ai un problème, je cherche à supprimer un paiement sur une facture payé (utilisation des classes facture et paiement).
j’ai le module multicompany en place avec 5 entités, la gestion des utilisateurs est centralisée, lorsque j’exécute ma requête depuis l’entité principale, tout se passe correctement, mais dès que j’exécute la requête depuis une autre entité, la fonction delete ne fonctionne pas… je sais que lorsque j’exécute des requêtes via l’API, il me faut passer le paramètre DOLAPIENTITY dans les header mais la je ne vois pas vraiment comment faire, voici mon code compet
// Inclure les fichiers nécessaires
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; // Inclure la classe Account
// Vérifiez le jeton CSRF
if ($_POST['token'] !== $_SESSION['newtoken']) {
error_log('Erreur de jeton CSRF');
die(json_encode(['status' => 'error', 'message' => 'Erreur de jeton CSRF']));
}
$entity = $_POST['entity'];
$invoice_id = $_POST['invoice_id'];
error_log("Entity: $entity, Invoice ID: $invoice_id");
// Récupération de la facture
$invoice = new Facture($db);
if ($invoice->fetch($invoice_id) <= 0) {
error_log('Erreur lors de la récupération de la facture.');
die(json_encode(['status' => 'error', 'message' => 'Erreur lors de la récupération de la facture.']));
}
error_log('Facture récupérée avec succès.');
// Réouvrir la facture en changeant son statut
if ($invoice->statut == Facture::STATUS_CLOSED) {
if ($invoice->set_unpaid($user) > 0) {
error_log('Facture réouverte avec succès (statut non payé).');
} else {
error_log('Erreur lors de la réouverture de la facture (statut non payé): ' . $invoice->error);
die(json_encode(['status' => 'error', 'message' => 'Erreur lors de la réouverture de la facture (statut non payé): ' . $invoice->error]));
}
}
// Supprimer les paiements associés à la facture
$invoice->fetch_thirdparty();
$payments = $invoice->getListOfPayments();
foreach ($payments as $payment) {
$paiement = new Paiement($db);
if ($paiement->fetch($payment['paiement_id']) > 0) {
if ($paiement->delete($user) > 0) {
error_log("Paiement ID {$payment['paiement_id']} supprimé avec succès.");
} else {
error_log("Erreur lors de la suppression du paiement ID {$payment['paiement_id']}: " . $paiement->error);
die(json_encode(['status' => 'error', 'message' => "Erreur lors de la suppression du paiement ID {$payment['paiement_id']}: " . $paiement->error]));
}
} else {
error_log("Erreur lors de la récupération du paiement ID {$payment['paiement_id']}: " . $paiement->error);
die(json_encode(['status' => 'error', 'message' => "Erreur lors de la récupération du paiement ID {$payment['paiement_id']}: " . $paiement->error]));
}
}
echo json_encode(['status' => 'success', 'message' => 'Facture réouverte et paiements supprimés.']);
}
si quelqu’un a une idée…
Merci par avance.