'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 Multisite WaaS 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;