/**
  * Show custom information box.
  *
  * @param WP_Post $post
  * @param array   $metabox
  * @return
  */
 public static function show_information_meta_box($post, $metabox)
 {
     // For client creation
     add_thickbox();
     $args = array('post_type' => SI_Client::POST_TYPE, 'post_status' => 'publish', 'posts_per_page' => -1, 'fields' => 'ids');
     $clients = get_posts($args);
     $client_options = array();
     foreach ($clients as $client_id) {
         $client_options[$client_id] = get_the_title($client_id);
     }
     $invoice = SI_Invoice::get_instance($post->ID);
     $status = is_a($invoice, 'SI_Invoice') && $invoice->get_status() != 'auto-draft' ? $invoice->get_status() : SI_Invoice::STATUS_TEMP;
     $due_date = is_a($invoice, 'SI_Invoice') ? $invoice->get_due_date() : current_time('timestamp') + 60 * 60 * 24 * 30;
     $expiration_date = is_a($invoice, 'SI_Invoice') ? $invoice->get_expiration_date() : current_time('timestamp') + 60 * 60 * 24 * 30;
     $issue_date = is_a($invoice, 'SI_Invoice') ? $invoice->get_issue_date() : strtotime($post->post_date);
     $estimate_id = is_a($invoice, 'SI_Invoice') ? $invoice->get_estimate_id() : 0;
     $invoice_id = is_a($invoice, 'SI_Invoice') ? $invoice->get_invoice_id() : '00001';
     $po_number = is_a($invoice, 'SI_Invoice') ? $invoice->get_po_number() : '';
     $client_id = is_a($invoice, 'SI_Invoice') ? $invoice->get_client_id() : 0;
     $deposit = is_a($invoice, 'SI_Invoice') ? $invoice->get_deposit() : '';
     $discount = is_a($invoice, 'SI_Invoice') ? $invoice->get_discount() : '';
     $tax = is_a($invoice, 'SI_Invoice') ? $invoice->get_tax() : '';
     $tax2 = is_a($invoice, 'SI_Invoice') ? $invoice->get_tax2() : '';
     $currency = is_a($invoice, 'SI_Invoice') ? $invoice->get_currency() : '';
     self::load_view('admin/meta-boxes/invoices/information', array('id' => $post->ID, 'post' => $post, 'invoice' => $invoice, 'status' => $status, 'status_options' => SI_Invoice::get_statuses(), 'estimate_id' => $estimate_id, 'invoice_id' => $invoice_id, 'expiration_date' => $expiration_date, 'due_date' => $due_date, 'issue_date' => $issue_date, 'client_id' => $client_id, 'client_options' => $client_options, 'clients' => $clients, 'po_number' => $po_number, 'deposit' => $deposit, 'discount' => $discount, 'tax' => $tax, 'tax2' => $tax2, 'currency' => $currency), false);
     // add the client modal
     self::load_view('admin/meta-boxes/clients/creation-modal', array('fields' => SI_Clients::form_fields(false)));
 }
 public static function maybe_create_new_invoices()
 {
     $args = array('post_type' => SI_Invoice::POST_TYPE, 'post_status' => array_keys(SI_Invoice::get_statuses()), 'posts_per_page' => -1, 'fields' => 'ids', 'meta_query' => array('relation' => 'AND', array('key' => self::$meta_keys['is_recurring'], 'value' => 1, 'compare' => '='), array('key' => self::$meta_keys['clone_time'], 'value' => array(strtotime('Last year'), current_time('timestamp')), 'compare' => 'BETWEEN'), array('key' => self::$meta_keys['cloned_from'], 'compare' => 'NOT EXISTS')));
     $invoice_ids = get_posts($args);
     foreach ($invoice_ids as $invoice_id) {
         $cloned_post_id = self::clone_post($invoice_id, SI_Invoice::STATUS_PENDING, SI_Invoice::POST_TYPE);
         // Issue date is today.
         $cloned_invoice = SI_Invoice::get_instance($cloned_post_id);
         $cloned_invoice->set_issue_date(time());
         // Due date is in the future
         $due_date = apply_filters('si_new_recurring_invoice_due_date_in_days', 14);
         $cloned_invoice->set_due_date(time() + 60 * 60 * 24 * $due_date);
         // adjust the clone time after the next invoice
         self::set_clone_time($invoice_id, current_time('timestamp'));
         self::set_parent($cloned_post_id, $invoice_id);
         do_action('si_recurring_invoice_created', $invoice_id, $cloned_post_id);
     }
 }