/** * Output the metabox */ public static function output($post, $args) { global $theorder; if (!is_object($args['args']['invoice'])) { return; } $invoice = $args['args']['invoice']; $order = $theorder; wp_nonce_field('woocommerce_save_data', 'wc_gzdp_invoice_data'); ?> <div class="panel-wrap woocommerce"> <div id="invoice_data_<?php echo $invoice->id; ?> " class="panel invoice_data"> <h2><?php echo $invoice->get_title(); ?> </h2> <?php if (!$invoice->is_new()) { ?> <p class="invoice_summary"><?php echo $invoice->get_summary(); ?> </p> <?php } ?> <div class="order_data_column_container invoice_data_column_container"> <div class="order_data_column invoice_data_column"> <h4><?php _e('General Details', 'woocommerce-germanized-pro'); ?> </h4> <?php if (!$invoice->is_type('cancellation')) { ?> <p class="form-field form-field-wide"><label for="invoice_status"><?php _e('Invoice status:', 'woocommerce-germanized-pro'); ?> </label> <select id="invoice_status_<?php echo $invoice->id; ?> " name="invoice_status_<?php echo $invoice->id; ?> " class="chosen_select"> <?php $statuses = wc_gzdp_get_invoice_statuses(); foreach ($statuses as $status => $status_name) { echo '<option value="' . esc_attr($status) . '" ' . selected($status, $invoice->get_status(), false) . '>' . esc_html($status_name) . '</option>'; } ?> </select></p> <?php } ?> <p class="form-field form-field-wide"><label for="invoice_date"><?php _e('Invoice date:', 'woocommerce-germanized-pro'); ?> </label> <input type="text" class="date-picker-field" name="invoice_date_<?php echo $invoice->id; ?> " id="invoice_date_<?php echo $invoice->id; ?> " maxlength="10" value="<?php echo $invoice->is_new() ? '' : $invoice->get_date('Y-m-d'); ?> " pattern="[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])" /> </p> <?php if ($invoice->is_new() && !$invoice->is_cancellation()) { ?> <p><?php _e('Leave blank to use the current orders\' data.', 'woocommerce-germanized-pro'); ?> </p> <?php } elseif ($invoice->is_cancellation()) { ?> <p><?php printf(__('Leave blank to use the data from %s.', 'woocommerce-germanized-pro'), $invoice->parent_title); ?> </p> <?php } ?> <?php if (!$invoice->is_new()) { ?> <p class="form-field form-field-wide"><label for="invoice_delivery_status"><?php _e('Invoice delivery status:', 'woocommerce-germanized-pro'); ?> </label> <span class="delivery_status <?php echo $invoice->is_delivered() ? 'is_delivered' : 'not_delivered'; ?> "><?php echo $invoice->is_delivered() ? sprintf(__('Delivered @ %s', 'woocommerce-germanized-pro'), $invoice->get_delivery_date()) : __('Not yet delivered', 'woocommerce-germanized-pro'); ?> </span> </p> <?php } ?> </div> <div class="order_data_column invoice_data_column invoice-submit-area"> <h4><?php _e('Actions', 'woocommerce-germanized-pro'); ?> </h4> <input type="hidden" name="invoice[]" value="<?php echo $invoice->id; ?> " /> <?php if ($invoice->is_cancellation()) { ?> <input type="hidden" name="invoice_parent_<?php echo $invoice->id; ?> " value="<?php echo $invoice->parent_id; ?> " /> <?php } ?> <?php if (!$invoice->is_locked()) { ?> <p class="form-field form-field-wide"><label for="invoice_generate"><?php _e('This will (re)generate the PDF invoice.', 'woocommerce-germanized-pro'); ?> </label> <input type="hidden" name="invoice_generate_<?php echo $invoice->id; ?> " value="" class="invoice_generate invoice_generate_<?php echo $invoice->id; ?> " /> <button type="submit" class="button <?php echo $invoice->is_new() ? 'button-primary' : 'button-secondary'; ?> button-invoice" data-invoice="<?php echo $invoice->id; ?> " data-action="generate"><?php echo $invoice->get_submit_button_text(); ?> </button> </p> <?php } ?> <?php if ($invoice->has_attachment()) { ?> <p class="form-field form-field-wide"><label for="invoice_date"><?php _e('Sends the invoice to the customer by email. Invoice will be locked after sending.', 'woocommerce-germanized-pro'); ?> </label> <input type="hidden" name="invoice_send_<?php echo $invoice->id; ?> " value="" class="invoice_send invoice_send_<?php echo $invoice->id; ?> " /> <button type="submit" class="button <?php echo !$invoice->is_delivered() ? 'button-primary' : 'button-secondary'; ?> button-invoice" data-invoice="<?php echo $invoice->id; ?> " data-action="send"><?php echo $invoice->is_delivered() ? __('Resend to Customer', 'woocommerce-germanized-pro') : __('Send to Customer', 'woocommerce-germanized-pro'); ?> </button> </p> <?php } ?> </div> </div> <div class="clear"></div> <?php if ($invoice->has_attachment()) { ?> <p class="button-wrap"> <a class="invoice-delete delete" href="#"><?php _e('Delete', 'woocommerce-germanized-pro'); ?> </a> <a class="button button-primary" href="<?php echo $invoice->get_pdf_url(); ?> " target="_blank"><?php printf(__('Download %s', 'woocommerce-germanized-pro'), $invoice->get_title()); ?> </a> </p> <div class="invoice-delete-wrapper notice notice-error inline"> <p> <?php _e('Deleting an invoice can lead to data inconsistencies and taxation problems.', 'woocommerce-germanized-pro'); ?> <input type="hidden" name="invoice_delete_<?php echo $invoice->id; ?> " value="" class="invoice_delete invoice_delete_<?php echo $invoice->id; ?> " /> <button type="submit" class="button button-secondary button-invoice" data-invoice="<?php echo $invoice->id; ?> " data-action="delete"><?php _e('Delete permanently', 'woocommerce-germanized-pro'); ?> </button> <a class="button button secondary hide-invoice-delete" href="#"><?php _e('Stop deletion', 'woocommerce-germanized-pro'); ?> </a> </p> </div> <?php } ?> </div> </div> <?php }
public static function invoice_data($atts) { extract(shortcode_atts(array('meta' => ''), $atts)); if (!($invoice = self::get_invoice())) { return; } $return = ''; if ($meta == 'status') { $statuses = wc_gzdp_get_invoice_statuses(); $return = isset($statuses[$invoice->get_status()]) ? $statuses[$invoice->get_status()] : ''; } else { if ($meta == 'date') { $return = $invoice->get_date(get_option('woocommerce_gzdp_invoice_date_format')); } else { $data = $invoice->{$meta}; if (!$data) { $return = false; } elseif (is_array($data)) { $return = implode(', ', $data); } else { $return = $data; } } } return apply_filters('woocommerce_gzdp_shortcode_invoice_data', $return, $atts); }
} ?> </select> </li> <li> <label><?php echo _x('Status:', 'invoices', 'woocommerce-germanized-pro'); ?> </label> <select name="invoice_status"> <option value="0"><?php echo _x('All', 'invoices', 'woocommerce-germanized-pro'); ?> </option> <?php foreach (wc_gzdp_get_invoice_statuses() as $status => $label) { ?> <option value="<?php echo $status; ?> "><?php echo $label; ?> </option> <?php } ?> </select> </li> <li> <label><?php
private function set_query($args = array()) { $this->query_args = array('posts_per_page' => -1, 'post_type' => 'invoice', 'orderby' => 'date', 'order' => 'ASC', 'post_status' => array()); foreach (wc_gzdp_get_invoice_statuses() as $status => $val) { array_push($this->query_args['post_status'], $status); } if ($args['status']) { $this->query_args['post_status'] = $args['status']; } $this->query_args['meta_query'] = array(); // By default exclude packing slips if (!isset($args['type'])) { array_push($this->query_args['meta_query'], array('key' => '_invoice_exclude', 'compare' => 'NOT EXISTS')); } if (isset($args['type'])) { array_push($this->query_args['meta_query'], array('key' => '_type', 'value' => $args['type'], 'compare' => '=')); } if ($args['end_date'] || $args['start_date']) { $date_query = array('inclusive' => false); if (!empty($args['start_date'])) { $date_query['after'] = date('Y-m-d', strtotime('-1 day', strtotime($args['start_date']))); } if (!empty($args['end_date'])) { $date_query['before'] = date('Y-m-d', strtotime('+1 month', strtotime($args['end_date']))); } $this->query_args['date_query'] = array($date_query); } $this->query = new WP_Query($this->query_args); }