public static function invoice_notification(SI_Invoice $invoice, $recipients = array(), $from_email = null, $from_name = null)
 {
     $estimate = '';
     if ($estimate_id = $invoice->get_estimate_id()) {
         $estimate = SI_Estimate::get_instance($estimate_id);
     }
     foreach (array_unique($recipients) as $user_id) {
         /**
          * sometimes the recipients list will pass an email instead of an id
          * attempt to find a user first.
          */
         if (is_email($user_id)) {
             if ($user = get_user_by('email', $user_id)) {
                 $user_id = $user->ID;
                 $to = self::get_user_email($user_id);
             } else {
                 // no user found
                 $to = $user_id;
             }
         } else {
             $to = self::get_user_email($user_id);
         }
         $data = array('user_id' => is_numeric($user_id) ? $user_id : '', 'invoice' => $invoice, 'estimate' => $estimate, 'to' => $to);
         self::send_notification('send_invoice', $data, $to, $from_email, $from_name);
     }
 }
 public static function invoice_data(SI_Invoice $invoice)
 {
     $invoice_data = array('title' => $invoice->get_title(), 'id' => $invoice->get_id(), 'invoice_id' => $invoice->get_invoice_id(), 'status' => $invoice->get_status(), 'balance' => $invoice->get_balance(), 'deposit' => $invoice->get_deposit(), 'issue_date' => $invoice->get_issue_date(), 'estimate_id' => $invoice->get_estimate_id(), 'due_date' => $invoice->get_due_date(), 'expiration_date' => $invoice->get_expiration_date(), 'client_id' => $invoice->get_client_id(), 'client_data' => array(), 'po_number' => $invoice->get_po_number(), 'discount' => $invoice->get_discount(), 'tax' => $invoice->get_tax(), 'tax2' => $invoice->get_tax2(), 'currency' => $invoice->get_currency(), 'subtotal' => $invoice->get_subtotal(), 'calculated_total' => $invoice->get_calculated_total(), 'project_id' => $invoice->get_project_id(), 'terms' => $invoice->get_terms(), 'notes' => $invoice->get_notes(), 'line_items' => $invoice->get_line_items(), 'user_id' => $invoice->get_user_id(), 'payment_ids' => $invoice->get_payments());
     if ($invoice->get_client_id()) {
         $client = SI_Client::get_instance($invoice->get_client_id());
         if (is_a($client, 'SI_Client')) {
             $invoice_data['client_data'] = self::client_data($client);
         }
     }
     return $invoice_data;
 }