/** * Revalidate all the invoices * * @author korotkov@ud * @global object $wpdb */ function total_revalidate() { global $wpdb; /** Recalculate all invoices */ $invoices = $wpdb->get_col(" SELECT ID FROM {$wpdb->posts} WHERE post_type = 'wpi_object' "); foreach ($invoices as $post_id) { $invoice_id = wpi_post_id_to_invoice_id($post_id); $this_invoice = new WPI_Invoice(); $this_invoice->load_invoice("id={$invoice_id}"); $this_invoice->save_invoice(); } }
function invoice_id($args = '') { global $invoice; $defaults = array('return' => false, 'force_original' => false); extract(wp_parse_args($args, $defaults), EXTR_SKIP); if (!empty($invoice['custom_id']) && !$force_original) { $result = $invoice['custom_id']; } else { $result = wpi_post_id_to_invoice_id($invoice['ID']); } if ($return) { return $result; } echo $result; }
<form action="<?php echo $wpi_settings['links']['manage_invoice']; ?>" method='POST' id="wpi_new_invoice_form"> <?php echo WPI_UI::input("name=wpi[new_invoice][invoice_id]&value=".rand(10000000, 90000000)."&type=hidden"); ?> <table class="form-table" id="get_user_info"> <tr class="invoice_main"> <th><label for="wp_invoice_userlookup"><?php _e('E-mail Address:', WPI); ?></label></th> <td> <?php WPI_UI::draw_user_auto_complete_field(); ?> <input type="submit" class="button" id="wp_invoice_create_new_invoice" value="<?php esc_attr(_e('Create New', WPI)); ?>"> <?php if($wpi_settings['total_invoice_count']) { ?> <span id="wp_invoice_copy_invoice" class="wp_invoice_click_me">copy from another</span><br /> <div class="wp_invoice_copy_invoice"> <?php $all_invoices = $wpdb->get_results("SELECT ID FROM ".$wpdb->posts." WHERE post_type = 'wpi_object' AND post_title != ''"); ?> <select name="wpi[new_invoice][template_copy]"> <option><?php _e('-- Select Invoice --', WPI) ?></option> <?php foreach ($all_invoices as $invoice) { $invoice_id = wpi_post_id_to_invoice_id($invoice->ID); $invoice_obj = new WPI_Invoice(); $invoice_obj->load_invoice("id=".$invoice_id); //print_r( $invoice_obj ); if ( $invoice_obj->data['type'] != 'single_payment' ) : ?> <option value="<?php echo $invoice_id; ?>"> <?php if( $invoice_obj->data['type'] == 'recurring' ) { ?> <?php _e('[Recurring]', WPI) ?> <?php } ?> <?php echo $invoice_obj->data['post_title'] . " - " .$wpi_settings['currency']['symbol'][$invoice_obj->data['default_currency_code']] . wp_invoice_currency_format($invoice_obj->data['subtotal']); ?> <?php
/** * Handler for Silent Post Url */ static function server_callback() { $arb = false; $fields = array(); foreach ($_REQUEST as $name => $value) { $fields[$name] = $value; if ($name == 'x_subscription_id') { $arb = true; } } // Handle recurring billing payments if ($arb == true && $fields['x_response_code'] == 1) { $paynum = $fields['x_subscription_paynum']; $subscription_id = $fields['x_subscription_id']; $amount = $fields['x_amount']; $invoice_id = wpi_post_id_to_invoice_id(wpi_subscription_id_to_post_id($subscription_id)); $invoice_obj = new WPI_Invoice(); $invoice_obj->load_invoice("id={$invoice_id}"); // Add payment amount $event_note = WPI_Functions::currency_format(abs($amount), $invoice_id) . ". ARB payment {$paynum} of {$invoice_obj->data['recurring']['wpi_authorize']['cycles']}"; $event_amount = $amount; $event_type = 'add_payment'; $invoice_obj->add_entry("attribute=balance¬e={$event_note}&amount={$event_amount}&type={$event_type}"); // Complete subscription if last payment done if ($invoice_obj->data['recurring']['wpi_authorize']['cycles'] <= $paynum) { WPI_Functions::log_event(wpi_invoice_id_to_post_id($invoice_id), 'invoice', 'update', '', __('Subscription completely paid', WPI)); wp_invoice_mark_as_paid($invoice_id); } $invoice_obj->save_invoice(); } }
/** * get invoices by user and status * * @global object $wpdb * * @param type $args * * @return boolean|\WPI_Invoice */ static function get_user_invoices($args) { $defaults = array('user_id' => false, 'status' => false, 'type' => false); extract(wp_parse_args($args, $defaults), EXTR_SKIP); //** User email and id are the same thing */ if (!$user_id && isset($user_email)) { $user_id = $user_email; } //** If nothing is set, nothing we can do */ if (!isset($user_id)) { return; } $query_invoices = new WP_Query(array('post_type' => 'wpi_object', 'post_status' => $status, 'meta_query' => array(array('key' => 'user_email', 'value' => $user_id), array('key' => 'type', 'value' => $type)), 'posts_per_page' => -1)); //** Nothing found */ if (empty($query_invoices->posts)) { return array(); } $return = array(); foreach ($query_invoices->posts as $_post) { $invoice_id = wpi_post_id_to_invoice_id($_post->ID); $this_invoice = new WPI_Invoice(); $this_invoice->load_invoice("id={$invoice_id}"); $return[] = $this_invoice; } return $return; }