Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/woocomme.../src/Admin/API/Reports/Taxes
File: Controller.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* REST API Reports taxes controller
[2] Fix | Delete
*
[3] Fix | Delete
* Handles requests to the /reports/taxes endpoint.
[4] Fix | Delete
*/
[5] Fix | Delete
[6] Fix | Delete
namespace Automattic\WooCommerce\Admin\API\Reports\Taxes;
[7] Fix | Delete
[8] Fix | Delete
defined( 'ABSPATH' ) || exit;
[9] Fix | Delete
[10] Fix | Delete
use Automattic\WooCommerce\Admin\API\Reports\ExportableInterface;
[11] Fix | Delete
use Automattic\WooCommerce\Admin\API\Reports\ExportableTraits;
[12] Fix | Delete
use Automattic\WooCommerce\Admin\API\Reports\GenericController;
[13] Fix | Delete
use Automattic\WooCommerce\Admin\API\Reports\GenericQuery;
[14] Fix | Delete
use WP_REST_Request;
[15] Fix | Delete
use WP_REST_Response;
[16] Fix | Delete
[17] Fix | Delete
/**
[18] Fix | Delete
* REST API Reports taxes controller class.
[19] Fix | Delete
*
[20] Fix | Delete
* @internal
[21] Fix | Delete
* @extends GenericController
[22] Fix | Delete
*/
[23] Fix | Delete
class Controller extends GenericController implements ExportableInterface {
[24] Fix | Delete
/**
[25] Fix | Delete
* Exportable traits.
[26] Fix | Delete
*/
[27] Fix | Delete
use ExportableTraits;
[28] Fix | Delete
[29] Fix | Delete
/**
[30] Fix | Delete
* Route base.
[31] Fix | Delete
*
[32] Fix | Delete
* @var string
[33] Fix | Delete
*/
[34] Fix | Delete
protected $rest_base = 'reports/taxes';
[35] Fix | Delete
[36] Fix | Delete
/**
[37] Fix | Delete
* Get data from `'taxes'` GenericQuery.
[38] Fix | Delete
*
[39] Fix | Delete
* @override GenericController::get_datastore_data()
[40] Fix | Delete
*
[41] Fix | Delete
* @param array $query_args Query arguments.
[42] Fix | Delete
* @return mixed Results from the data store.
[43] Fix | Delete
*/
[44] Fix | Delete
protected function get_datastore_data( $query_args = array() ) {
[45] Fix | Delete
$query = new GenericQuery( $query_args, 'taxes' );
[46] Fix | Delete
return $query->get_data();
[47] Fix | Delete
}
[48] Fix | Delete
[49] Fix | Delete
/**
[50] Fix | Delete
* Maps query arguments from the REST request.
[51] Fix | Delete
*
[52] Fix | Delete
* @param array $request Request array.
[53] Fix | Delete
* @return array
[54] Fix | Delete
*/
[55] Fix | Delete
protected function prepare_reports_query( $request ) {
[56] Fix | Delete
$args = array();
[57] Fix | Delete
$args['before'] = $request['before'];
[58] Fix | Delete
$args['after'] = $request['after'];
[59] Fix | Delete
$args['page'] = $request['page'];
[60] Fix | Delete
$args['per_page'] = $request['per_page'];
[61] Fix | Delete
$args['orderby'] = $request['orderby'];
[62] Fix | Delete
$args['order'] = $request['order'];
[63] Fix | Delete
$args['taxes'] = $request['taxes'];
[64] Fix | Delete
$args['force_cache_refresh'] = $request['force_cache_refresh'];
[65] Fix | Delete
[66] Fix | Delete
return $args;
[67] Fix | Delete
}
[68] Fix | Delete
[69] Fix | Delete
/**
[70] Fix | Delete
* Prepare a report data item for serialization.
[71] Fix | Delete
*
[72] Fix | Delete
* @param mixed $report Report data item as returned from Data Store.
[73] Fix | Delete
* @param WP_REST_Request $request Request object.
[74] Fix | Delete
* @return WP_REST_Response
[75] Fix | Delete
*/
[76] Fix | Delete
public function prepare_item_for_response( $report, $request ) {
[77] Fix | Delete
$response = parent::prepare_item_for_response( $report, $request );
[78] Fix | Delete
[79] Fix | Delete
// Map to `object` for backwards compatibility.
[80] Fix | Delete
$report = (object) $report;
[81] Fix | Delete
$response->add_links( $this->prepare_links( $report ) );
[82] Fix | Delete
[83] Fix | Delete
/**
[84] Fix | Delete
* Filter a report returned from the API.
[85] Fix | Delete
*
[86] Fix | Delete
* Allows modification of the report data right before it is returned.
[87] Fix | Delete
*
[88] Fix | Delete
* @param WP_REST_Response $response The response object.
[89] Fix | Delete
* @param object $report The original report object.
[90] Fix | Delete
* @param WP_REST_Request $request Request used to generate the response.
[91] Fix | Delete
*/
[92] Fix | Delete
return apply_filters( 'woocommerce_rest_prepare_report_taxes', $response, $report, $request );
[93] Fix | Delete
}
[94] Fix | Delete
[95] Fix | Delete
/**
[96] Fix | Delete
* Prepare links for the request.
[97] Fix | Delete
*
[98] Fix | Delete
* @param WC_Reports_Query $object Object data.
[99] Fix | Delete
* @return array
[100] Fix | Delete
*/
[101] Fix | Delete
protected function prepare_links( $object ) {
[102] Fix | Delete
$links = array(
[103] Fix | Delete
'tax' => array(
[104] Fix | Delete
'href' => rest_url( sprintf( '/%s/taxes/%d', $this->namespace, $object->tax_rate_id ) ),
[105] Fix | Delete
),
[106] Fix | Delete
);
[107] Fix | Delete
[108] Fix | Delete
return $links;
[109] Fix | Delete
}
[110] Fix | Delete
[111] Fix | Delete
/**
[112] Fix | Delete
* Get the Report's schema, conforming to JSON Schema.
[113] Fix | Delete
*
[114] Fix | Delete
* @return array
[115] Fix | Delete
*/
[116] Fix | Delete
public function get_item_schema() {
[117] Fix | Delete
$schema = array(
[118] Fix | Delete
'$schema' => 'http://json-schema.org/draft-04/schema#',
[119] Fix | Delete
'title' => 'report_taxes',
[120] Fix | Delete
'type' => 'object',
[121] Fix | Delete
'properties' => array(
[122] Fix | Delete
'tax_rate_id' => array(
[123] Fix | Delete
'description' => __( 'Tax rate ID.', 'woocommerce' ),
[124] Fix | Delete
'type' => 'integer',
[125] Fix | Delete
'context' => array( 'view', 'edit' ),
[126] Fix | Delete
'readonly' => true,
[127] Fix | Delete
),
[128] Fix | Delete
'name' => array(
[129] Fix | Delete
'description' => __( 'Tax rate name.', 'woocommerce' ),
[130] Fix | Delete
'type' => 'string',
[131] Fix | Delete
'context' => array( 'view', 'edit' ),
[132] Fix | Delete
'readonly' => true,
[133] Fix | Delete
),
[134] Fix | Delete
'tax_rate' => array(
[135] Fix | Delete
'description' => __( 'Tax rate.', 'woocommerce' ),
[136] Fix | Delete
'type' => 'number',
[137] Fix | Delete
'context' => array( 'view', 'edit' ),
[138] Fix | Delete
'readonly' => true,
[139] Fix | Delete
),
[140] Fix | Delete
'country' => array(
[141] Fix | Delete
'description' => __( 'Country / Region.', 'woocommerce' ),
[142] Fix | Delete
'type' => 'string',
[143] Fix | Delete
'context' => array( 'view', 'edit' ),
[144] Fix | Delete
'readonly' => true,
[145] Fix | Delete
),
[146] Fix | Delete
'state' => array(
[147] Fix | Delete
'description' => __( 'State.', 'woocommerce' ),
[148] Fix | Delete
'type' => 'string',
[149] Fix | Delete
'context' => array( 'view', 'edit' ),
[150] Fix | Delete
'readonly' => true,
[151] Fix | Delete
),
[152] Fix | Delete
'priority' => array(
[153] Fix | Delete
'description' => __( 'Priority.', 'woocommerce' ),
[154] Fix | Delete
'type' => 'integer',
[155] Fix | Delete
'context' => array( 'view', 'edit' ),
[156] Fix | Delete
'readonly' => true,
[157] Fix | Delete
),
[158] Fix | Delete
'total_tax' => array(
[159] Fix | Delete
'description' => __( 'Total tax.', 'woocommerce' ),
[160] Fix | Delete
'type' => 'number',
[161] Fix | Delete
'context' => array( 'view', 'edit' ),
[162] Fix | Delete
'readonly' => true,
[163] Fix | Delete
),
[164] Fix | Delete
'order_tax' => array(
[165] Fix | Delete
'description' => __( 'Order tax.', 'woocommerce' ),
[166] Fix | Delete
'type' => 'number',
[167] Fix | Delete
'context' => array( 'view', 'edit' ),
[168] Fix | Delete
'readonly' => true,
[169] Fix | Delete
),
[170] Fix | Delete
'shipping_tax' => array(
[171] Fix | Delete
'description' => __( 'Shipping tax.', 'woocommerce' ),
[172] Fix | Delete
'type' => 'number',
[173] Fix | Delete
'context' => array( 'view', 'edit' ),
[174] Fix | Delete
'readonly' => true,
[175] Fix | Delete
),
[176] Fix | Delete
'orders_count' => array(
[177] Fix | Delete
'description' => __( 'Number of orders.', 'woocommerce' ),
[178] Fix | Delete
'type' => 'integer',
[179] Fix | Delete
'context' => array( 'view', 'edit' ),
[180] Fix | Delete
'readonly' => true,
[181] Fix | Delete
),
[182] Fix | Delete
),
[183] Fix | Delete
);
[184] Fix | Delete
[185] Fix | Delete
return $this->add_additional_fields_schema( $schema );
[186] Fix | Delete
}
[187] Fix | Delete
[188] Fix | Delete
/**
[189] Fix | Delete
* Get the query params for collections.
[190] Fix | Delete
*
[191] Fix | Delete
* @return array
[192] Fix | Delete
*/
[193] Fix | Delete
public function get_collection_params() {
[194] Fix | Delete
$params = parent::get_collection_params();
[195] Fix | Delete
$params['orderby']['default'] = 'tax_rate_id';
[196] Fix | Delete
$params['orderby']['enum'] = $this->apply_custom_orderby_filters(
[197] Fix | Delete
array(
[198] Fix | Delete
'name',
[199] Fix | Delete
'tax_rate_id',
[200] Fix | Delete
'tax_code',
[201] Fix | Delete
'rate',
[202] Fix | Delete
'order_tax',
[203] Fix | Delete
'total_tax',
[204] Fix | Delete
'shipping_tax',
[205] Fix | Delete
'orders_count',
[206] Fix | Delete
)
[207] Fix | Delete
);
[208] Fix | Delete
$params['taxes'] = array(
[209] Fix | Delete
'description' => __( 'Limit result set to items assigned one or more tax rates.', 'woocommerce' ),
[210] Fix | Delete
'type' => 'array',
[211] Fix | Delete
'sanitize_callback' => 'wp_parse_id_list',
[212] Fix | Delete
'validate_callback' => 'rest_validate_request_arg',
[213] Fix | Delete
'items' => array(
[214] Fix | Delete
'type' => 'string',
[215] Fix | Delete
),
[216] Fix | Delete
);
[217] Fix | Delete
[218] Fix | Delete
return $params;
[219] Fix | Delete
}
[220] Fix | Delete
[221] Fix | Delete
/**
[222] Fix | Delete
* Get the column names for export.
[223] Fix | Delete
*
[224] Fix | Delete
* @return array Key value pair of Column ID => Label.
[225] Fix | Delete
*/
[226] Fix | Delete
public function get_export_columns() {
[227] Fix | Delete
return array(
[228] Fix | Delete
'tax_code' => __( 'Tax code', 'woocommerce' ),
[229] Fix | Delete
'rate' => __( 'Rate', 'woocommerce' ),
[230] Fix | Delete
'total_tax' => __( 'Total tax', 'woocommerce' ),
[231] Fix | Delete
'order_tax' => __( 'Order tax', 'woocommerce' ),
[232] Fix | Delete
'shipping_tax' => __( 'Shipping tax', 'woocommerce' ),
[233] Fix | Delete
'orders_count' => __( 'Orders', 'woocommerce' ),
[234] Fix | Delete
);
[235] Fix | Delete
}
[236] Fix | Delete
[237] Fix | Delete
/**
[238] Fix | Delete
* Get the column values for export.
[239] Fix | Delete
*
[240] Fix | Delete
* @param array $item Single report item/row.
[241] Fix | Delete
* @return array Key value pair of Column ID => Row Value.
[242] Fix | Delete
*/
[243] Fix | Delete
public function prepare_item_for_export( $item ) {
[244] Fix | Delete
return array(
[245] Fix | Delete
'tax_code' => \WC_Tax::get_rate_code(
[246] Fix | Delete
(object) array(
[247] Fix | Delete
'tax_rate_id' => $item['tax_rate_id'],
[248] Fix | Delete
'tax_rate_country' => $item['country'],
[249] Fix | Delete
'tax_rate_state' => $item['state'],
[250] Fix | Delete
'tax_rate_name' => $item['name'],
[251] Fix | Delete
'tax_rate_priority' => $item['priority'],
[252] Fix | Delete
)
[253] Fix | Delete
),
[254] Fix | Delete
'rate' => $item['tax_rate'],
[255] Fix | Delete
'total_tax' => self::csv_number_format( $item['total_tax'] ),
[256] Fix | Delete
'order_tax' => self::csv_number_format( $item['order_tax'] ),
[257] Fix | Delete
'shipping_tax' => self::csv_number_format( $item['shipping_tax'] ),
[258] Fix | Delete
'orders_count' => $item['orders_count'],
[259] Fix | Delete
);
[260] Fix | Delete
}
[261] Fix | Delete
}
[262] Fix | Delete
[263] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function