samverdyck Posted March 31, 2016 Share Posted March 31, 2016 Ik ben op zoek naar een manier waarop ik per klantengroep een andere facturatienummering kan laten lopen. Dus dat bijvoorbeeld klantengroep "Professionelen" een factuurnummering heeft op deze manier: PROF001 en dat klantengroep "Particulieren" een klantennummering heeft op deze manier: PART001. Achterliggende reden van deze vraag is dat ik eigenlijk op zoek ben naar een oplossing om enkel de klanten die bestellen met een BTW nummer in de facturatieflow te laten, de particulieren moeten eruit. (die filter ik met een query, om ze boekhoudkundig op een bepaalde manier te verwerken). Ik heb een module gevonden die automatisch de klanten sorteert per klantengroep, op basis van een al dan niet ingevuld BTW-nummer veld. Nu moet ik er dus enkel voor zorgen dat enkel de orders binnen die klantengroep met BTW-nummers in de facturatieflow vallen. Link to comment Share on other sites More sharing options...
samverdyck Posted March 31, 2016 Author Share Posted March 31, 2016 Verder aan het zoeken geweest. In de Classe Order (classes/order/order.php) ben ik de functie setInvoice tegenkomen, die het aanmaken van de eerste factuur per order regelt. Zou ik daar een conditie aan kunnen toevoegen in de stijl van: "als klantengroep id = 2, dan voer deze functie uit"? De orders van de klanten die niet in die klantengroep zitten zouden zo uit de factuurflow vallen, omdat ze niet aan de conditie voldoen. Dit is de functie setInvoice /** * This method allows to generate first invoice of the current order */ public function setInvoice($use_existing_payment = false) { // if ((int)$this->$id_customer > 2 ){ if (!$this->hasInvoice()) { if ($id = (int)$this->getOrderInvoiceIdIfHasDelivery()) { $order_invoice = new OrderInvoice($id); } else { $order_invoice = new OrderInvoice(); } $order_invoice->id_order = $this->id; if (!$id) { $order_invoice->number = 0; } // Save Order invoice $this->setInvoiceDetails($order_invoice); if (Configuration::get('PS_INVOICE')) { $this->setLastInvoiceNumber($order_invoice->id, $this->id_shop); } // Update order_carrier $id_order_carrier = Db::getInstance()->getValue(' SELECT `id_order_carrier` FROM `'._DB_PREFIX_.'order_carrier` WHERE `id_order` = '.(int)$order_invoice->id_order.' AND (`id_order_invoice` IS NULL OR `id_order_invoice` = 0)'); if ($id_order_carrier) { $order_carrier = new OrderCarrier($id_order_carrier); $order_carrier->id_order_invoice = (int)$order_invoice->id; $order_carrier->update(); } // Update order detail Db::getInstance()->execute(' UPDATE `'._DB_PREFIX_.'order_detail` SET `id_order_invoice` = '.(int)$order_invoice->id.' WHERE `id_order` = '.(int)$order_invoice->id_order); // Update order payment if ($use_existing_payment) { $id_order_payments = Db::getInstance()->executeS(' SELECT DISTINCT op.id_order_payment FROM `'._DB_PREFIX_.'order_payment` op INNER JOIN `'._DB_PREFIX_.'orders` o ON (o.reference = op.order_reference) LEFT JOIN `'._DB_PREFIX_.'order_invoice_payment` oip ON (oip.id_order_payment = op.id_order_payment) WHERE (oip.id_order != '.(int)$order_invoice->id_order.' OR oip.id_order IS NULL) AND o.id_order = '.(int)$order_invoice->id_order); if (count($id_order_payments)) { foreach ($id_order_payments as $order_payment) { Db::getInstance()->execute(' INSERT INTO `'._DB_PREFIX_.'order_invoice_payment` SET `id_order_invoice` = '.(int)$order_invoice->id.', `id_order_payment` = '.(int)$order_payment['id_order_payment'].', `id_order` = '.(int)$order_invoice->id_order); } // Clear cache Cache::clean('order_invoice_paid_*'); } } // Update order cart rule Db::getInstance()->execute(' UPDATE `'._DB_PREFIX_.'order_cart_rule` SET `id_order_invoice` = '.(int)$order_invoice->id.' WHERE `id_order` = '.(int)$order_invoice->id_order); // Keep it for backward compatibility, to remove on 1.6 version $this->invoice_date = $order_invoice->date_add; if (Configuration::get('PS_INVOICE')) { $this->invoice_number = $this->getInvoiceNumber($order_invoice->id); $invoice_number = Hook::exec('actionSetInvoice', array( get_class($this) => $this, get_class($order_invoice) => $order_invoice, 'use_existing_payment' => (bool)$use_existing_payment )); if (is_numeric($invoice_number)) { $this->invoice_number = (int)$invoice_number; } else { $this->invoice_number = $this->getInvoiceNumber($order_invoice->id); } } $this->update(); } // } } 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