Example #1
0
 /**
  * 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;
 }
Example #2
0
 /**
  * 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();
         }
     }
 }