Initial Commit
This commit is contained in:
275
inc/tax/class-dashboard-taxes-tab.php
Normal file
275
inc/tax/class-dashboard-taxes-tab.php
Normal file
@ -0,0 +1,275 @@
|
||||
<?php
|
||||
/**
|
||||
* WP Ultimo Dashboard Tax Admin Panel
|
||||
*
|
||||
* @package WP_Ultimo
|
||||
* @subpackage Admin_Pages
|
||||
* @since 2.0.0
|
||||
*/
|
||||
|
||||
namespace WP_Ultimo\Tax;
|
||||
|
||||
// Exit if accessed directly
|
||||
defined('ABSPATH') || exit;
|
||||
|
||||
/**
|
||||
* WP Ultimo Dashboard Tax Admin Panel
|
||||
*/
|
||||
class Dashboard_Taxes_Tab {
|
||||
|
||||
/**
|
||||
* Reference to the main admin page object so we can
|
||||
* access its methods on the render functions.
|
||||
*
|
||||
* @since 2.0.11
|
||||
* @var \WP_Ultimo\Admin_Pages\Base_Admin_Page
|
||||
*/
|
||||
protected $dashboard_page;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
public function __construct() {
|
||||
|
||||
add_filter('wu_dashboard_filter_bar', array($this, 'add_tab'));
|
||||
|
||||
add_action('wu_dashboard_taxes_widgets', array($this, 'register_widgets'), 10, 3);
|
||||
|
||||
} // end __construct;
|
||||
|
||||
/**
|
||||
* Checks if tax support is enabled or not.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @return boolean
|
||||
*/
|
||||
protected function is_enabled() {
|
||||
|
||||
return wu_get_setting('enable_taxes');
|
||||
|
||||
} // end is_enabled;
|
||||
|
||||
/**
|
||||
* Add_tab to dashboard
|
||||
*
|
||||
* @since 2.0.0
|
||||
*
|
||||
* @param array $dashboard_filters Dashboard tabs.
|
||||
*/
|
||||
public function add_tab($dashboard_filters) {
|
||||
|
||||
$dashboard_filters['taxes'] = array(
|
||||
'field' => 'type',
|
||||
'label' => __('Taxes', 'wp-ultimo'),
|
||||
'url' => add_query_arg('tab', 'taxes'),
|
||||
'count' => 0,
|
||||
);
|
||||
|
||||
return $dashboard_filters;
|
||||
|
||||
} // end add_tab;
|
||||
|
||||
/**
|
||||
* Renders the disabled message, if taxes are not enabled.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @return void
|
||||
*/
|
||||
public function disabled_message() {
|
||||
|
||||
echo wu_render_empty_state(array(
|
||||
'message' => __('You do not have tax support enabled yet...'),
|
||||
'sub_message' => __('If you need to collect taxes, you\'ll be glad to hear that WP Ultimo offers tax support!'),
|
||||
'link_label' => __('Enable Tax Support', 'wp-ultimo'),
|
||||
'link_url' => wu_network_admin_url('wp-ultimo-settings', array(
|
||||
'tab' => 'taxes',
|
||||
)),
|
||||
));
|
||||
|
||||
} // end disabled_message;
|
||||
|
||||
/**
|
||||
* Adds a back link to the taxes without tax.
|
||||
*
|
||||
* @since 2.0.0
|
||||
*
|
||||
* @param array $links The already existent links.
|
||||
* @return array
|
||||
*/
|
||||
public function add_back_link($links) {
|
||||
|
||||
$back_link = array(
|
||||
array(
|
||||
'url' => wu_network_admin_url('wp-ultimo'),
|
||||
'label' => __('Go Back', 'wp-ultimo'),
|
||||
'icon' => 'wu-reply',
|
||||
),
|
||||
);
|
||||
|
||||
return array_merge($back_link, $links);
|
||||
|
||||
} // end add_back_link;
|
||||
|
||||
/**
|
||||
* Register_widgets
|
||||
*
|
||||
* @since 2.0.0
|
||||
*
|
||||
* @param string $tab Name of selected tab.
|
||||
* @param \WP_Screen $screen The current screen object.
|
||||
* @param \WP_Ultimo\Admin_Pages\Dashboard_Admin_Page $dashboard_page Name of selected tab.
|
||||
* @return void
|
||||
*/
|
||||
public function register_widgets($tab, $screen, $dashboard_page) {
|
||||
|
||||
/**
|
||||
* Set the dashboard page as a property
|
||||
* to make the helper methods available on the render
|
||||
* functions for the metaboxes.
|
||||
*/
|
||||
$this->dashboard_page = $dashboard_page;
|
||||
|
||||
/*
|
||||
* Displays an empty page with the option to activate tax support.
|
||||
*/
|
||||
if (!$this->is_enabled()) {
|
||||
|
||||
add_filter('wu_dashboard_display_filter', '__return_false');
|
||||
|
||||
add_filter('wu_dashboard_display_widgets', '__return_false');
|
||||
|
||||
add_action('wu_dash_before_metaboxes', array($this, 'disabled_message'));
|
||||
|
||||
add_filter('wu_page_get_title_links', array($this, 'add_back_link'));
|
||||
|
||||
return;
|
||||
|
||||
} // end if;
|
||||
|
||||
$this->dashboard_page = $dashboard_page;
|
||||
|
||||
add_meta_box('wp-ultimo-taxes', __('Taxes', 'wp-ultimo'), array($this, 'output_widget_taxes'), $screen->id, 'full', 'high');
|
||||
|
||||
add_meta_box('wp-ultimo-taxes-by-rate', __('Taxes by Code', 'wp-ultimo'), array($this, 'output_widget_taxes_by_rate'), $screen->id, 'normal', 'high');
|
||||
|
||||
add_meta_box('wp-ultimo-taxes-by-day', __('Taxes by Day', 'wp-ultimo'), array($this, 'output_widget_taxes_by_day'), $screen->id, 'side', 'high');
|
||||
|
||||
$this->register_scripts();
|
||||
|
||||
} // end register_widgets;
|
||||
|
||||
/**
|
||||
* Registers the necessary scripts to handle the tax graph.
|
||||
*
|
||||
* @todo: extract the calculations onto their own function.
|
||||
* @since 2.0.0
|
||||
* @return void
|
||||
*/
|
||||
public function register_scripts() {
|
||||
|
||||
$payments_per_month = array(
|
||||
'january' => array(),
|
||||
'february' => array(),
|
||||
'march' => array(),
|
||||
'april' => array(),
|
||||
'may' => array(),
|
||||
'june' => array(),
|
||||
'july' => array(),
|
||||
'august' => array(),
|
||||
'september' => array(),
|
||||
'october' => array(),
|
||||
'november' => array(),
|
||||
'december' => array()
|
||||
);
|
||||
|
||||
$data = wu_calculate_taxes_by_month();
|
||||
|
||||
$index = 1;
|
||||
|
||||
foreach ($payments_per_month as &$month) {
|
||||
|
||||
$month = $data[$index];
|
||||
|
||||
$index++;
|
||||
|
||||
} // end foreach;
|
||||
|
||||
$month_list = array();
|
||||
|
||||
$start = date_i18n('Y-m-d 00:00:00', strtotime('first day of january this year'));
|
||||
|
||||
for ($i = 0; $i < 12; $i++) {
|
||||
|
||||
$start_date = wu_date($start);
|
||||
|
||||
$month_list[] = date_i18n('M y', $start_date->addMonths($i)->format('U'));
|
||||
|
||||
} // end for;
|
||||
|
||||
wp_register_script('wu-tax-stats', wu_get_asset('tax-statistics.js', 'js'), array('jquery', 'wu-functions', 'wu-ajax-list-table', 'moment', 'wu-block-ui', 'dashboard', 'wu-apex-charts', 'wu-vue-apex-charts'), wu_get_version(), true);
|
||||
|
||||
wp_localize_script('wu-tax-stats', 'wu_tax_statistics_vars', array(
|
||||
'data' => $payments_per_month,
|
||||
'start_date' => date_i18n('Y-m-d', strtotime((string) wu_request('start_date', '-1 month'))),
|
||||
'end_date' => date_i18n('Y-m-d', strtotime((string) wu_request('end_date', 'tomorrow'))),
|
||||
'today' => date_i18n('Y-m-d', strtotime('tomorrow')),
|
||||
'month_list' => $month_list,
|
||||
'i18n' => array(
|
||||
'net_profit_label' => __('Net Profit', 'wp-ultimo'),
|
||||
'taxes_label' => __('Taxes Collected', 'wp-ultimo'),
|
||||
)
|
||||
));
|
||||
|
||||
wp_enqueue_script('wu-tax-stats');
|
||||
|
||||
} // end register_scripts;
|
||||
|
||||
/**
|
||||
* Renders the tax graph.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @return void
|
||||
*/
|
||||
public function output_widget_taxes() {
|
||||
|
||||
wu_get_template('dashboard-statistics/widget-tax-graph');
|
||||
|
||||
} // end output_widget_taxes;
|
||||
|
||||
/**
|
||||
* Renders the taxes by rate widget.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @return void
|
||||
*/
|
||||
public function output_widget_taxes_by_rate() {
|
||||
|
||||
$taxes_by_rate = wu_calculate_taxes_by_rate($this->dashboard_page->start_date, $this->dashboard_page->end_date);
|
||||
|
||||
wu_get_template('dashboard-statistics/widget-tax-by-code', array(
|
||||
'taxes_by_rate' => $taxes_by_rate,
|
||||
'page' => $this->dashboard_page,
|
||||
));
|
||||
|
||||
} // end output_widget_taxes_by_rate;
|
||||
|
||||
/**
|
||||
* Renders the taxes by date widget.
|
||||
*
|
||||
* @since 2.0.0
|
||||
* @return void
|
||||
*/
|
||||
public function output_widget_taxes_by_day() {
|
||||
|
||||
$taxes_by_day = wu_calculate_taxes_by_day($this->dashboard_page->start_date, $this->dashboard_page->end_date);
|
||||
|
||||
wu_get_template('dashboard-statistics/widget-tax-by-day', array(
|
||||
'taxes_by_day' => $taxes_by_day,
|
||||
'page' => $this->dashboard_page,
|
||||
));
|
||||
|
||||
} // end output_widget_taxes_by_day;
|
||||
|
||||
} // end class Dashboard_Taxes_Tab;
|
Reference in New Issue
Block a user