Eutanasio Posted August 5 Share Posted August 5 Buenas, Estoy buscando modificar cómo Prestashop 1.7 asigna la fecha de la factura. La lógica deseada es: - Si el pedido está pagado completamente, la fecha de la factura debe ser la fecha del último pago registrado. - Si no, debe seguir utilizando la fecha actual autoasignada al generarse la factura. He intentado modificar OrderInvoice.php con el siguiente código sin éxito. La factura sigue generándose con la fecha actual. Este es el código que había originalmente: 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(); } Esta es la modificación que he intentado: public function add($autodate = true, $null_values = false) { $order = new Order($this->id_order); $this->shop_address = OrderInvoice::getCurrentFormattedShopAddress($order->id_shop); // Inicializar fecha de adición $invoice_date = date('Y-m-d H:i:s'); // Verificar si el pedido está pagado completamente if ($order->getCurrentState() == Configuration::get('PS_OS_PAYMENT')) { // Obtener la fecha del último pago registrado $payments = OrderPayment::getByOrderReference($order->reference); if (!empty($payments)) { $last_payment = end($payments); $invoice_date = $last_payment->date_add; } } // Asignar la fecha de la factura $this->date_add = $invoice_date; // Llamar al método padre para agregar la factura return parent::add($autodate, $null_values); } ¿Alguien puede indicar cuál es el método correcto o el enfoque adecuado para lograr esto? Cualquier ayuda sería muy apreciada. Gracias de antemano! Link to comment Share on other sites More sharing options...
Eutanasio Posted August 8 Author Share Posted August 8 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; } He resuelto el problema con la personalización de la fecha de la factura en PrestaShop 1.7. Aquí está la solución final que me funcionó 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