Eutanasio Posted August 6 Share Posted August 6 Bonjour, Je cherche à modifier la façon dont Prestashop 1.7 attribue la date de la facture. La logique souhaitée est : - Si la commande est entièrement payée, la date de la facture doit être la date du dernier paiement enregistré. - Sinon, elle doit continuer à utiliser la date actuelle attribuée automatiquement lors de la génération de la facture. J'ai essayé de modifier OrderInvoice.php avec le code suivant sans succès. La facture continue de se générer avec la date actuelle. Voici le code original : public function add($autodate = true, $null_values = false) { $order = new Order($this->id_order); $this->shop_address = OrderInvoice::getCurrentFormattedShopAddress($order->id_shop); return parent::add(); } Et voici la modification que j'ai essayée : public function add($autodate = true, $null_values = false) { $order = new Order($this->id_order); $this->shop_address = OrderInvoice::getCurrentFormattedShopAddress($order->id_shop); // Initialiser la date d'ajout $invoice_date = date('Y-m-d H:i:s'); // Vérifier si la commande est entièrement payée if ($order->getCurrentState() == Configuration::get('PS_OS_PAYMENT')) { // Obtenir la date du dernier paiement enregistré $payments = OrderPayment::getByOrderReference($order->reference); if (!empty($payments)) { $last_payment = end($payments); $invoice_date = $last_payment->date_add; } } // Attribuer la date de la facture $this->date_add = $invoice_date; // Appeler la méthode parent pour ajouter la facture return parent::add($autodate, $null_values); } Quelqu'un peut-il indiquer quelle est la méthode correcte ou l'approche adéquate pour y parvenir ? Toute aide serait grandement appréciée. Merci d'avance ! Link to comment Share on other sites More sharing options...
Eutanasio Posted August 8 Author Share Posted August 8 J'ai résolu le problème de la personnalisation de la date de la facture dans PrestaShop 1.7. Voici la solution finale qui a fonctionné pour moi : public function add($autodate = true, $null_values = false) { $order = new Order($this->id_order); // Obtain the payments for this order $payments = OrderPayment::getByOrderReference($order->reference); if (!empty($payments)) { // Get the date of the last payment $last_payment = end($payments); if ($last_payment && property_exists($last_payment, 'date_add')) { $this->date_add = $last_payment->date_add; } } // Call the parent method to add the invoice $result = parent::add($autodate, $null_values); // If the date was overwritten, set it again if (!empty($payments) && $this->date_add !== $last_payment->date_add) { $this->date_add = $last_payment->date_add; Db::getInstance()->update('order_invoice', ['date_add' => $this->date_add], 'id_order_invoice = ' . (int)$this->id); } // Set the shop address $this->shop_address = OrderInvoice::getCurrentFormattedShopAddress($order->id_shop); return $result; } Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now