/** * Check everyday if the settings are correct * * * @return Boolean */ public static function checkSettings() { $currentYear = date('Y'); if (date('m') == 1) { $record = Doctrine_Query::create()->from('InvoicesSettings is')->where("is.year = ?", $currentYear)->andWhere('is.isp_id = ?', Shineisp_Registry::get('ISP')->isp_id)->limit(1)->execute(array(), Doctrine_Core::HYDRATE_ARRAY); if (empty($record)) { $is = new InvoicesSettings(); $is['year'] = $currentYear; $is['next_number'] = 1; $is->save(); } return true; } return false; }
/** * Create * Create an invoice starting from an order id * @param $orderid * @return Doctrine Record */ public static function Create($orderid) { if (is_numeric($orderid)) { $invoice_number = InvoicesSettings::getLastInvoice(); $customer_id = Doctrine::getTable('Orders')->find($orderid)->customer_id; // Check if there is an invoice ID set for this order. $Invoice = Doctrine::getTable('Invoices')->findOneByOrderId($orderid); if (isset($Invoice->invoice_id) && is_numeric($Invoice->invoice_id) && $Invoice->invoice_id > 0) { // Set the invoice number to the order Orders::setInvoice($orderid, $Invoice->invoice_id); return $Invoice->invoice_id; } try { if (is_numeric($customer_id)) { $Invoice = new Invoices(); $Invoice->number = $invoice_number; $Invoice->order_id = $orderid; $Invoice->customer_id = $customer_id; $Invoice->invoice_date = date('Y-m-d'); $Invoice->save(); $invoice_id = $Invoice->getIncremented(); Shineisp_Commons_Utilities::log("Created new invoice with id #" . $invoice_id, 'invoices.log'); InvoicesSettings::setLastInvoice($invoice_number); Orders::setInvoice($orderid, $invoice_id); // Generate an Invoice Number $invoice_number = self::generateNumber($invoice_id); if (isset($invoice_number)) { Shineisp_Commons_Utilities::log("Generated invoice number " . $invoice_number . " for invoice with id #" . $invoice_id, 'invoices.log'); $Invoice->formatted_number = $invoice_number; $Invoice->save(); } // Create the pdf invoice document (dropbox event is triggered by this) self::PrintPDF($invoice_id, false, true); if (intval(Settings::findbyParam('auto_send_invoice')) === 1 && $invoice_id > 0) { Invoices::sendInvoice($invoice_id); } return $invoice_id; } } catch (Exception $e) { return $e->getMessage(); } } }