Files
old-experiments/backend/wordpress/wp-content/plugins/woocommerce-jetpack/includes/classes/class-wcj-invoice.php
2018-06-29 14:40:28 +02:00

117 lines
3.8 KiB
PHP
Executable File

<?php
/**
* Booster for WooCommerce Invoice
*
* @version 3.5.0
* @author Algoritmika Ltd.
*/
if ( ! defined( 'ABSPATH' ) ) exit;
if ( ! class_exists( 'WCJ_Invoice' ) ) :
class WCJ_Invoice {
public $order_id;
public $invoice_type;
/**
* Constructor.
*/
function __construct( $order_id, $invoice_type ) {
$this->order_id = $order_id;
$this->invoice_type = $invoice_type;
}
/**
* is_created.
*/
function is_created() {
return ( '' != get_post_meta( $this->order_id, '_wcj_invoicing_' . $this->invoice_type . '_date', true ) );
}
/**
* delete.
*
* @version 3.2.2
*/
function delete() {
update_post_meta( $this->order_id, '_wcj_invoicing_' . $this->invoice_type . '_number_id', 0 );
update_post_meta( $this->order_id, '_wcj_invoicing_' . $this->invoice_type . '_date', '' );
if ( 'yes' === get_option( 'wcj_invoicing_' . $this->invoice_type . '_sequential_enabled', 'no' ) ) {
$option_name = 'wcj_invoicing_' . $this->invoice_type . '_numbering_counter';
$the_invoice_counter = get_option( $option_name, 1 );
update_option( $option_name, ( $the_invoice_counter - 1 ) );
}
}
/**
* create.
*
* @version 3.2.2
* @todo use mysql transaction enabled (as in "wcj_order_number_use_mysql_transaction_enabled")
*/
function create( $date = '' ) {
$order_id = $this->order_id;
$invoice_type = $this->invoice_type;
if ( 'yes' === get_option( 'wcj_invoicing_' . $invoice_type . '_skip_zero_total', 'no' ) ) {
$_order = wc_get_order( $order_id );
if ( 0 == $_order->get_total() ) {
return;
}
}
if ( 'yes' === get_option( 'wcj_invoicing_' . $invoice_type . '_sequential_enabled', 'no' ) ) {
$the_invoice_number = get_option( 'wcj_invoicing_' . $invoice_type . '_numbering_counter', 1 );
update_option( 'wcj_invoicing_' . $invoice_type . '_numbering_counter', ( $the_invoice_number + 1 ) );
} else {
$the_invoice_number = $order_id;
}
$the_date = ( '' == $date ) ? current_time( 'timestamp' ) : $date;
update_post_meta( $order_id, '_wcj_invoicing_' . $invoice_type . '_number_id', $the_invoice_number );
update_post_meta( $order_id, '_wcj_invoicing_' . $invoice_type . '_date', $the_date );
}
/**
* get_file_name.
*
* @version 3.5.0
*/
function get_file_name() {
$_file_name = sanitize_file_name( do_shortcode( get_option( 'wcj_invoicing_' . $this->invoice_type . '_file_name', '' ) ) );
if ( '' === $_file_name ) {
$_file_name = $this->invoice_type . '-' . $this->order_id;
}
return apply_filters( 'wcj_get_' . $this->invoice_type . '_file_name', $_file_name . '.pdf', $this->order_id );
}
/**
* get_invoice_date.
*/
function get_invoice_date() {
$the_date = get_post_meta( $this->order_id, '_wcj_invoicing_' . $this->invoice_type . '_date', true );
return apply_filters( 'wcj_get_' . $this->invoice_type . '_date', $the_date, $this->order_id );
}
/**
* get_invoice_number.
*
* @version 3.2.2
*/
function get_invoice_number() {
$replaced_values = array(
'%prefix%' => get_option( 'wcj_invoicing_' . $this->invoice_type . '_numbering_prefix', '' ),
'%counter%' => sprintf( '%0' . get_option( 'wcj_invoicing_' . $this->invoice_type . '_numbering_counter_width', 0 ) . 'd',
get_post_meta( $this->order_id, '_wcj_invoicing_' . $this->invoice_type . '_number_id', true ) ),
'%suffix%' => get_option( 'wcj_invoicing_' . $this->invoice_type . '_numbering_suffix', '' ),
);
return apply_filters( 'wcj_get_' . $this->invoice_type . '_number',
do_shortcode( str_replace( array_keys( $replaced_values ), $replaced_values,
get_option( 'wcj_invoicing_' . $this->invoice_type . '_numbering_template', '%prefix%%counter%%suffix%' ) ) ),
$this->order_id
);
}
}
endif;