Commit Graph

493 Commits

Author SHA1 Message Date
Paul Sealock 2f022ffdba dry interval.php 2019-01-29 10:23:44 +13:00
Paul Sealock 3d0890a704 basic working 2019-01-29 09:21:11 +13:00
Paul Sealock bca0785e64 Customers Report: support between args for dates 2019-01-29 08:58:07 +13:00
Jeff Stieler 7592dae4bb Merge pull request woocommerce/woocommerce-admin#1385 from woocommerce/add/customers-report-table-summary
Add table summary to Customers Report
2019-01-28 09:59:52 -07:00
Peter Fabian 71dc581f53 Merge pull request woocommerce/woocommerce-admin#1394 from woocommerce/fix/1393
Added zero-filling for intervals for taxes/stats endpoint
2019-01-28 13:09:02 +01:00
Joshua T Flowers 9c9ff13c2b Allow customer date_last_active to be null (https://github.com/woocommerce/woocommerce-admin/pull/1377)
* Allow customer date_last_active to be null

* Only show last active in customers report table if set
2019-01-25 09:37:50 -08:00
Peter Fabian b87ca4f6aa Added filling in zeros for interval not having records in the database. 2019-01-25 14:54:14 +01:00
Peter Fabian c8c9cd4943 Updated error message to point to the correct report. 2019-01-25 13:30:27 +01:00
Peter Fabian 4c8a95cb89 Added fetching of db intervals for later use in zero-filling. 2019-01-25 13:29:59 +01:00
Peter Fabian 1c09b6836d Adjusted default return value when page is out of range. 2019-01-25 13:14:41 +01:00
Jeff Stieler 6a215ceca9 Exclude customers with no orders from average orders count calculation. 2019-01-23 17:47:44 -07:00
Peter Fabian 64f1418f22 Merge branch 'master' into fix/1012-2 2019-01-23 21:40:09 +01:00
Peter Fabian 33f1240987 Fix to remove extra intervals correctly. 2019-01-23 17:18:39 +01:00
Peter Fabian eff341d832 Made the interval sorting stable (second level sort by time_interval).
This is required so that intervals are sorted in the same way each time when going through pages of results.
2019-01-23 16:58:03 +01:00
Peter Fabian bc42e6d985 Fixed bug introduced during refactoring. 2019-01-23 10:34:55 +01:00
Peter Fabian 507ee13825 Merge branch 'master' into fix/1035
# Conflicts:
#	client/analytics/report/customers/table.js
#	includes/api/class-wc-admin-rest-reports-orders-stats-controller.php
#	tests/reports/class-wc-tests-reports-orders-stats.php
2019-01-23 10:13:55 +01:00
Peter Fabian 012e14c589 Corrected time-calculation of last interval. 2019-01-22 19:50:35 +01:00
Peter Fabian 8a9a2c0673 Fixed interval arithmetic for hours and days. 2019-01-22 17:49:02 +01:00
Justin Shreve 1f8caf106e Fix performance-indicators/allowed schema. 2019-01-21 12:28:32 -05:00
Joshua T Flowers 3ac97e00c4 Add single category filter to products report (https://github.com/woocommerce/woocommerce-admin/pull/1350)
* Add namespace v4 for WC product/categories endpoint

* Update categories wc-api to use v4 namespace constant

* Add single product category filter to product categories report

* Add link to filtered product report from category report

* Use persistedQuery for category links

* Check if category is defined before displaying category link

* Remove selectedTags when filter does not match queried filter
2019-01-22 01:12:00 +08:00
Joshua T Flowers 4869401ec4 REST API: Allow sorting by stock_status in stocks endpoint (https://github.com/woocommerce/woocommerce-admin/pull/1335)
* REST API: Allow sorting by stock_status in stocks endpoint

* Set stock_status as default orderby

* Sort by both stock status and quantity in meta query

* Use stock_status sort order by default in Stock table (https://github.com/woocommerce/woocommerce-admin/pull/1340)

* Reverse stock quantity order when sorting by stock status
2019-01-22 01:11:20 +08:00
Jeff Stieler 4a6f2652b6 Hook customers report table summary up to stats endpoint. 2019-01-21 08:46:21 -07:00
Jeff Stieler 07cbaae2a5 Add customers report stats endpoint. 2019-01-18 20:29:50 -07:00
Justin Shreve 2f60837ba5 Add performance indicators to dashboard (https://github.com/woocommerce/woocommerce-admin/pull/1343)
* Add label and generated report URL to the performance indicator response.

* Hook up performance indicators to the REST API

* Handle PR feedback

* Fix setting default values
2019-01-18 14:22:11 -05:00
Justin Shreve 7c418a4a45 Add v4 of the data/countries filter so that the country autocompleter work and a notice goes away. (https://github.com/woocommerce/woocommerce-admin/pull/1354) 2019-01-18 14:17:12 -05:00
Peter Fabian f2634ca5c8 Added support for segmenting to coupons/stats. 2019-01-18 17:11:46 +01:00
Justin Shreve 01b96ebea5 Hook up performance indicators to the REST API 2019-01-18 08:19:19 -05:00
Justin Shreve 96fc10747f Add label and generated report URL to the performance indicator response. 2019-01-18 08:16:52 -05:00
Peter Fabian e8f264c346 Moved common code to parent class. 2019-01-18 14:08:34 +01:00
Peter Fabian ea2f5ca5d9 Fixed number of parameters for product lookup update. 2019-01-18 13:07:19 +01:00
Peter Fabian caea199852 Updated revenue/stats REST controller to include segmentation options/fields. 2019-01-18 13:06:40 +01:00
Peter Fabian 128f52fdc8 Restrict products/stats only to supported segmentby options. 2019-01-18 12:28:12 +01:00
Peter Fabian 1d79714295 Added segmenting to products/stats. 2019-01-18 11:41:15 +01:00
Joshua T Flowers 7cdbbf87e8 Update all wc-admin endpoints to v4 (https://github.com/woocommerce/woocommerce-admin/pull/1298)
* Update all wc-admin endpoints to v4

* Add namespace for products and customers controllers

* Include product quantity in orders data store

* Add coupons to extended data in the orders data store

* Format order statuses response from database

* Hook up orders table to orders endpoint

* Add namespace to data endpoint controller

* Add namespaces to remaining extended controllers

* Use NAMESPACE var in place of wc/v4

* Update product links in orders table to products reports

* Add coupons rest controller override

* Format coupon code in response

Co-Authored-By: joshuatf <joshuatf@gmail.com>
2019-01-18 10:52:58 +08:00
Jeff Stieler 4407e05bc4 Merge pull request woocommerce/woocommerce-admin#1342 from woocommerce/fix/1090-currency-settings-formatting
Honor WooCommerce Settings When Formatting Currency/Price
2019-01-17 17:06:13 -07:00
Peter Fabian 25bb5e06df Factor out the segmentation code so that it's more reusable and clutters orders/stats data store less. 2019-01-17 12:14:24 +01:00
Jeff Stieler ddae6d3955 Add currency symbol to orders endpoint response. 2019-01-17 00:01:09 -07:00
Joshua T Flowers da22cbdc9d Update returning customer data to use customer ID (https://github.com/woocommerce/woocommerce-admin/pull/1180)
* Change check for returning customers to check customer_id

* Count distinct returning and new customers in totals

* Fix priority action misplacement and order date timestamp

* Change expected num returning/new customers to fix failing tests

Previously these included references to number of returning vs new orders.  Update to refer to the newly updated customer count.

* Use new get_customer_id_by_user_id() to get customer ID

* Fix 0 returning customers expectation

* Move returning customer function to order stats data store

* Sync order stats on order delete

* Change date compare for is_returning_customer

* Add test case for returning customer order

* Add references to  instead of 2
2019-01-17 10:47:30 +08:00
Jeff Stieler 149ee08f4b Include all users in customer lookup table generation. 2019-01-16 10:20:11 -07:00
Jeff Stieler 11cb74cccd Fix variable name nitpick. 2019-01-16 09:45:52 -07:00
Jeff Stieler a2f94c11ba Add coupons and taxes lookup table generation to reports rebuild. 2019-01-16 09:45:51 -07:00
Jeff Stieler 84732137bc Bail out of creating batches for customers and orders if there are none. 2019-01-16 09:45:51 -07:00
Jeff Stieler ffe11650a8 Remove now-defunct order stats background process. 2019-01-16 09:45:50 -07:00
Jeff Stieler 763cc972a7 Regenerate all reports from rebuild stats endpoint. 2019-01-16 09:45:04 -07:00
Jeff Stieler 5c6174066e Add tests for report regeneration batch queuing methods. 2019-01-16 09:45:04 -07:00
Jeff Stieler 4786938bdf Fix customers report tests. 2019-01-16 09:45:03 -07:00
Jeff Stieler 6eca20c5fd Reports regenerate: add mechanism to queue an action after another completes - use to queue orders lookup init after customers lookup. 2019-01-16 09:45:03 -07:00
Jeff Stieler 4740f93985 Reports regenerate: use queue to update order stats and products lookup table. 2019-01-16 09:45:02 -07:00
Jeff Stieler 3b9a4ef4a1 Report regeneration: allow batch sizes to differ between actions. 2019-01-16 09:45:02 -07:00
Jeff Stieler fabc1dc70b Reports regenerate: use queue to update customers lookup table. 2019-01-16 09:45:02 -07:00
Jeff Stieler c361119a0d Report table generation: add method for enqueuing a large number of batch jobs with a limited batch size. 2019-01-16 09:45:01 -07:00
Peter Fabian 05c7670090 Merge branch 'master' into fix/1035
# Conflicts:
#	includes/class-wc-admin-reports-interval.php
#	includes/data-stores/class-wc-admin-reports-data-store.php
#	includes/data-stores/class-wc-admin-reports-products-data-store.php
2019-01-16 12:51:23 +01:00
Joshua T Flowers 33a7cfa1b0 Store all order statuses (https://github.com/woocommerce/woocommerce-admin/pull/1285)
* Store all orders regardless of status in wc_order_stats

* Only query select statuses if status_is or status_is_not is not set

* Fix order stats example query

* Filter category store by default order statuses

* Add table_name to interval functions to avoid ambiguity

* Filter coupon store by default order statuses

* Fix interval stats by adding table_name to interval function

* Filter products store by default order statuses

* Remove unused order_status in coupons data store

* Store products with any order status

* Fix ambiguous order by call in products data store

* Apply status filter after other filters to avoid logical OR matching

* Store all coupon data regardless of order status

* Filter taxes by default order statuses

* Filter customer stats by default order status

* Filter default order statuses in variations data store

* Use excluded statuses to filter reports by default

* DRY up default excluded statuses query

* Fix up new orders data store after rebase
2019-01-16 10:23:00 +08:00
Peter Fabian c324157483 Merge branch 'master' into fix/1035
# Conflicts:
#	includes/data-stores/class-wc-admin-reports-orders-data-store.php
#	includes/data-stores/class-wc-admin-reports-orders-stats-data-store.php
2019-01-15 11:39:39 +01:00
Peter Fabian 2fc9de0bb0 Preparation for merge of a moved file. 2019-01-15 11:36:56 +01:00
Peter Fabian d067c2148d Added sorting of segments so that they have predictable order. 2019-01-15 11:13:43 +01:00
Peter Fabian ea2d5bfe35 Removed double refund subtracting. 2019-01-15 11:11:58 +01:00
Peter Fabian 93b331243b Corrected JSON response in case no fields are selected in $query_params. 2019-01-15 11:11:14 +01:00
Peter Fabian b593163dff Added more general function for sorting array of arrays based on subarray's key. 2019-01-15 11:08:23 +01:00
Joshua T Flowers 14f8f08edf Add v4 orders endpoint (https://github.com/woocommerce/woocommerce-admin/pull/1246)
* Rename orders controllers and data store to order stats

* Add orders data store and controller

* Add coupon, product, and status filters

* Add customer type query filter

* Add extended info for products and categories

* Bump API namespace to v4

* Add missing schema properties

* Set default customer_type and extended_info params

* Add orders endpoint tests

* Only use one JOIN if both excluded and included queries are used

* Optimize query calls to get product and category data

* Split product and category fetch and limit to product_cat taxonomy
2019-01-15 09:53:02 +08:00
Peter Fabian 13ec8e2851 FOrmula for shipping distribution among line items updated to reflect qty, so that sum of shipping per line item equals total shipping amount. 2019-01-14 16:10:13 +01:00
Peter Fabian 562e21ff54 Replace time interval keys with numeric ones to format REST response correctly. 2019-01-11 18:20:43 +01:00
Peter Fabian 26925872ec Corrected return types so that no segmented queries work fine. 2019-01-11 15:25:17 +01:00
Peter Fabian ebe76c2d43 Added missing parameter to new data stores. 2019-01-11 15:23:13 +01:00
Peter Fabian 7308aa415b Schema updates. 2019-01-11 15:22:19 +01:00
Peter Fabian 5edc60d30b Added refund_total also to intervals (to be able to calculate net_total correctly). 2019-01-11 11:32:59 +01:00
Peter Fabian ff6b4ffb26 Added refund_total to unique orders table to be able to calculate net_total correctly. 2019-01-11 11:31:21 +01:00
Peter Fabian d14426cbc1 Corrected type of parameter in the docblock. 2019-01-11 11:30:43 +01:00
Peter Fabian 69f63f48d2 Ain't Nobody Got Time for That. 2019-01-11 11:25:49 +01:00
Peter Fabian 250c0910a1 Merge branch 'master' into fix/1035 2019-01-11 11:16:01 +01:00
Peter Fabian 411ff59788 WIP on orders/stats segmenting. 2019-01-11 11:11:23 +01:00
Jeff Stieler adf8bbeb23 Merge pull request woocommerce/woocommerce-admin#1260 from woocommerce/fix/1239-handle-between-rest-api-param
Handle *_between params in Reports controllers
2019-01-10 10:52:08 -07:00
Justin Shreve 350e296d2c Allow sorting by title and SKU to report tables (https://github.com/woocommerce/woocommerce-admin/pull/1266) 2019-01-10 12:10:31 -05:00
Jeff Stieler 2246a1e075 Expect array value for _between params.
Add param validation method and normalize to min/max based by comparing values.
2019-01-09 14:19:37 -07:00
Justin Shreve d46ce1df7a Add store performance indicator endpoint (https://github.com/woocommerce/woocommerce-admin/pull/1255)
* Add store performance REST API endpoint

* Clean up validation, add list of allowed stats to OPTIONS endpoint, and rename endpoint to performance-indicators

* Add tests

* Add additional filters to make extending the performance indiciators area easier.

* Add docblocks for filters
2019-01-09 16:08:39 -05:00
Jeff Stieler 06763cc3a5 Don’t cast date values to strings in customers report data store since they’re allowed to be null.
NULL column values resulted in NOW() in the response.
2019-01-08 18:49:49 -07:00
Jeff Stieler 6e369bd145 Handle *_between parameters in Customers Report endpoint controller. 2019-01-08 17:41:48 -07:00
Jeff Stieler b15a4bc804 Add utility method to normalize numeric “between” parameters in REST API requests. 2019-01-08 17:41:24 -07:00
Jeff Stieler d9fd8568df Customers report: perform a LEFT JOIN on the order stats table to include customers that have not yet placed an order. 2019-01-08 10:47:19 -07:00
Jeff Stieler 46b503dd54 Update customers report lookup table when customers/users are updated. 2019-01-08 10:33:17 -07:00
Jeff Stieler 154482acc9 Derive orders_count, total_spend, avg_order_value, and date_late_order for customer reports from the order stats report table. 2019-01-08 10:33:17 -07:00
Jeff Stieler 8105ddb38a Add new guest customers to lookup when syncing the order stats report table. 2019-01-08 10:33:16 -07:00
Jeff Stieler 1a90840e97 Add customer_id to order stats report table to reference with customer lookup. 2019-01-08 10:30:16 -07:00
Jeff Stieler d42e04cd59 Short circuit registered customer data update when the given ID is bad. 2019-01-08 10:29:44 -07:00
Jeff Stieler a1317f2152 Customer lookup table: allow registration date to be null (for guests). 2019-01-08 10:29:43 -07:00
Jeff Stieler c337944cf6 Backfill guests into customer report lookup table using order data and billing email. 2019-01-08 10:29:43 -07:00
Jeff Stieler fa3379e62f Customer report data store: fix handling of ‘name’ parameter in WHERE clause. 2019-01-08 10:29:42 -07:00
Jeff Stieler 714c1ee030 Customer report data store: fix comparison operator for date param “after” where clause. 2019-01-08 10:29:42 -07:00
Jeff Stieler 737331dd3b Add missing _gmt date fields to customers report response items. 2019-01-08 10:29:41 -07:00
Jeff Stieler 04a30e668b Customer report data store: fix SQL when where clauses are empty. 2019-01-08 10:29:40 -07:00
Jeff Stieler 1832450fd1 Update customer lookup table when orders (with registered customers) are created, updated, or refunded. 2019-01-08 10:29:40 -07:00
Jeff Stieler 2ea61e9a86 Move registered customer lookup update logic into data store class. 2019-01-08 10:29:40 -07:00
Jeff Stieler d0e2c5162f Place a UNIQUE constraint on the user_id key for the customer report lookup table. 2019-01-08 10:29:39 -07:00
Jeff Stieler dd87522a5e Customers report endpoint: only include customer link if they’re a registered user. 2019-01-08 10:29:39 -07:00
Jeff Stieler fc20d2bb1b Remove unnecessary subquery from customer reports data store records count query. 2019-01-08 10:29:38 -07:00
Jeff Stieler a75a33c32f Handle match parameter in customers report data store.
Note: before/after and min/max ranges are always ‘AND’.
2019-01-08 10:29:38 -07:00
Jeff Stieler 97e6f795e9 Fix copy-pasta in customers report REST controller. 2019-01-08 10:29:38 -07:00
Jeff Stieler a180566c2f Set default parameters for customers report query. 2019-01-08 10:29:37 -07:00
Jeff Stieler 0c919add5d Fix query params in customers report controller. 2019-01-08 10:29:37 -07:00
Jeff Stieler 6e5fef2f7b Include customers report files. 2019-01-08 10:29:37 -07:00
Jeff Stieler 746120e254 Change customer report lookup table columns to match API parameters. 2019-01-08 10:29:36 -07:00
Jeff Stieler 9670719fc6 Add customers report query endpoint implementation. 2019-01-08 10:29:36 -07:00
Jeff Stieler b9f0d9fe5f Update customers report endpoint item schema to match (visual) table designs. 2019-01-08 10:29:35 -07:00
Jeff Stieler 56beada220 Update customers report endpoint parameters to match new lookup table filters. 2019-01-08 10:29:35 -07:00
Jeff Stieler a2154daa4c Register customer report lookup table with core WC. 2019-01-08 10:29:35 -07:00
Jeff Stieler 281c06a5d4 Add username column to customer report lookup table. 2019-01-08 10:29:34 -07:00
Jeff Stieler 9131932910 First pass at initializing the customer lookup table with existing registered customer data. 2019-01-08 10:29:34 -07:00
Jeff Stieler a5cf136037 Add customer report lookup table creation to initialization query. 2019-01-08 10:29:33 -07:00
Justin Shreve f37b9319e1 Download Report API: Add path to response, fix ordering, and fix schema typo (https://github.com/woocommerce/woocommerce-admin/pull/1248)
* Add download_path to download report endpoint and fix schema typo

* Fix ordering and add tests
2019-01-08 09:51:28 -05:00
Joshua T Flowers d9e7e1b952 Remove unused show_product_categories_in_rest function (https://github.com/woocommerce/woocommerce-admin/pull/1235) 2019-01-08 09:53:02 +08:00
Joshua T Flowers f3346e9298 Add the order status column to lookup table (https://github.com/woocommerce/woocommerce-admin/pull/1211)
* Add the order status column to lookup table

* Fix order status filter for order stats

* Fix normalize order status and make static function
2019-01-08 09:16:10 +08:00
Albert Juhé Lluveras 6ca0c628b2 Connect Downloads report to REST API (https://github.com/woocommerce/woocommerce-admin/pull/1238)
* Connect downloads chart and table to REST API

* Display date picker in Downloads report

* Fix missing value for 'days' in Downloads table summary

* Fix download_count being a string instead of a number

* Minor date packages comment fixes

* Fix filters in Downloads report

* Add back empty line

* JSDoc comments style fixes

* Fix username filter not working

* Fix days counter off by 1

* Fix alignment issue
2019-01-07 12:54:42 +01:00
Justin Shreve e3e9ccb6a4 Add `reports/downloads/stats` REST API Endpoint (https://github.com/woocommerce/woocommerce-admin/pull/1142)
* First pass at downloads REST API

* Add reports/downloads/stats endpoint.

* Add tests

* Update cache key
2019-01-03 13:00:48 -05:00
Peter Fabian 13022fee4f WIP on orders/stats segmenting. 2019-01-03 18:59:07 +01:00
Peter Fabian 6bceabe095 Fixed extra parameters after refactoring. 2019-01-02 15:40:47 +01:00
Peter Fabian 52e1ed920f Added placeholders for new db columns. 2019-01-02 15:29:43 +01:00
Peter Fabian 4cc042ebd8 Added back updates to product lookup update routine after wc-admin-order-functions.php was removed and code moved to individual data stores. 2019-01-02 15:26:33 +01:00
Peter Fabian 1e39bc0756 Merge branch 'master' into fix/1035
# Conflicts:
#	includes/wc-admin-order-functions.php
2019-01-02 14:08:23 +01:00
Peter Fabian 4eaa5d911f WIP on segmenting for orders/stats. 2019-01-02 13:35:40 +01:00
Peter Fabian a9a0ccd185 Added refund_amount to products lookup as it needs to be reported on product level. 2019-01-02 11:33:05 +01:00
Peter Fabian 1931f3bf48 Added table name to time limit clauses. 2019-01-02 11:31:48 +01:00
Joshua T Flowers 7bbdd78bde Add missing intervals to product reports (https://github.com/woocommerce/woocommerce-admin/pull/1200)
* Add missing intervals to product reports

* Fix failing tests for product stats API

Before and after query should be within today's date since missing intervals for other days will be filled in with remaining dates.
2018-12-31 13:20:22 +08:00
Joshua T Flowers 3f388028ac Sort default category response by category ID (https://github.com/woocommerce/woocommerce-admin/pull/1201) 2018-12-28 09:50:58 -08:00
Joshua T Flowers e0596ea249 Add 404 response to REST response for invalid note ID (https://github.com/woocommerce/woocommerce-admin/pull/1194) 2018-12-28 09:51:22 +08:00
Joshua T Flowers b3979ff984 Fix order status product sync (https://github.com/woocommerce/woocommerce-admin/pull/1151)
* Move order product sync to product data store

* Move order taxes sync to taxes data store

* Move order coupons sync to coupons data store

* Use table_name constant in data syncs

* Remove order data for incomplete order statuses

* Fix report rebuild tool

* Update comments to describe create/update entry reference

* Fix data_store_init function name change
2018-12-27 11:49:00 +08:00
Joshua T Flowers 987929da83 Filter by categories query param in categories data store (https://github.com/woocommerce/woocommerce-admin/pull/1179) 2018-12-27 11:31:08 +08:00
Joshua T Flowers 017db0b339 Sync order status on refund delete (https://github.com/woocommerce/woocommerce-admin/pull/1074) 2018-12-27 11:11:33 +08:00
Peter Fabian 48dfb54a48 Switched average order value from gross to net revenue (https://github.com/woocommerce/woocommerce-admin/pull/1158)
* Switched Average order value calculation from gross to net revenue.

* Updated tests to reflect switch of average order value from gross to net revenue.
2018-12-26 15:49:46 -08:00
Joshua T Flowers c747d3399e Use unbounded per_page limit in apiFetch for categories (https://github.com/woocommerce/woocommerce-admin/pull/1149) 2018-12-26 10:37:02 +08:00
Joshua T Flowers dcaa35c7bf Add product SKU to products report (https://github.com/woocommerce/woocommerce-admin/pull/1161)
* Add product SKU to products report

* Add tests for SKU data
2018-12-25 11:02:06 +08:00
Justin Shreve 579113910d Add remaining filters to the downloads report (https://github.com/woocommerce/woocommerce-admin/pull/1141)
* Add order number, username, and IP address filters to the downloads report.

* Adds tests
2018-12-21 16:40:41 -08:00
Justin Shreve 49a0f0f6d2 Add `reports/downloads` REST API endpoint. (https://github.com/woocommerce/woocommerce-admin/pull/1122)
* First pass at downloads REST API

* Handle PR feedback
2018-12-21 14:57:46 -08:00
Joshua T Flowers 56577101c4 Add customer numeric filters (https://github.com/woocommerce/woocommerce-admin/pull/1116)
* Add customer numeric filters

* Add between params to customers controller

* Escape strings for translation and change inputs to currency

* Add Currency shorthand filter
2018-12-21 12:07:54 +08:00
Joshua T Flowers f83b0e0615 Add product categories wc-api and breadcrumbs (https://github.com/woocommerce/woocommerce-admin/pull/1131)
* Add support for product cats in wp rest api

* Add categories to WC API

* Add category breadcrumbs component

* Increase per_page limit size for product cat API

* Use wc/v3 API to pull product categories

* Return category IDs in API

* Add categories to product reports

* Add category IDs test for REST API

* Switch to getResource instead of require for total count selector
2018-12-21 10:44:27 +08:00
Paul Sealock 46c313cdc7 REST API: Categories: optimize query by removing get_the_terms 2018-12-21 11:08:08 +13:00
Joshua T Flowers 5bab0767b6 Fix item refunds report data (https://github.com/woocommerce/woocommerce-admin/pull/1059)
* Fix product report data issue when issuing item refund

* Modify product order lookup stats when refund is given

* Remove products where orders are refunded

* Remove unused  var and add comment about early return

* Reduce product revenue if quantity still remains after refund

* Fix subtotal array key and abs value for float

* Change product_gross_revenue to product_net_revenue
2018-12-21 02:40:44 +08:00
Peter Fabian 999c7fe8ca Updated REST API controller for segmenting, added schema changes missed before. 2018-12-20 12:35:45 +01:00
Peter Fabian 4d6ea24e9e Db update for product lookup table to enable segmenting. 2018-12-20 12:28:29 +01:00
Peter Fabian dff8b63271 Merge pull request woocommerce/woocommerce-admin#1010 from woocommerce/fix/845
Added /reports/coupons and /reports/coupons/stats endpoints
2018-12-19 13:55:28 +01:00
Peter Fabian 4802736a0e Switched from using coupon code filter to coupon id filter by query parameter. 2018-12-19 13:37:54 +01:00
Joshua T Flowers 08d3e2c38d Change product_gross_revenue to product_net_revenue (https://github.com/woocommerce/woocommerce-admin/pull/1105)
* Change product_gross_revenue to product_net_revenue

* Change product_gross_revenue to product_net_revenue in category data store

* Change to net_revenue in frontend category report
2018-12-19 08:56:27 +08:00
Paul Sealock 15bbbe739d Hook up Categories table to endpoint 2018-12-19 08:36:42 +13:00
Peter Fabian 85e6e8df8d Added correct cache handling. 2018-12-18 12:01:42 +08:00
Peter Fabian 6c456657e8 Changed coupon_gross_discount to amount. 2018-12-18 12:01:42 +08:00
Peter Fabian f0b97a42b0 Changed data type in schema for dates to date-time. 2018-12-18 12:01:41 +08:00
Peter Fabian 21ac75d21e Made extended_info always appear in coupons endpoint. 2018-12-18 12:01:40 +08:00
Peter Fabian 3e45c6a82c Fixed invalid sort criterion for coupons endpoint. 2018-12-18 12:01:39 +08:00
Peter Fabian 3535f52d78 Removed interval parameter for coupons endpoint. 2018-12-18 12:01:39 +08:00
Peter Fabian 6950522f91 Removed timezone info that was added incorrectly 2018-12-18 12:01:39 +08:00
Peter Fabian a346f13beb Added extended info. 2018-12-18 12:01:38 +08:00
Peter Fabian 5eee869a74 Added small fixes to set up coupon endpoints. 2018-12-18 12:01:38 +08:00
Peter Fabian 1630cb9c6f Removed unsupported parameter from coupons endpoint. 2018-12-18 12:01:18 +08:00
Peter Fabian 357b8f914a Added query classes and data stores for coupons and coupons/stats. 2018-12-18 12:01:17 +08:00
Peter Fabian e273d055ef Moved functions from orders data store to allow code reuse. 2018-12-18 12:00:33 +08:00
Joshua T Flowers 9486ab7896 Update/taxes endpoint hookup/941 (https://github.com/woocommerce/woocommerce-admin/pull/1008)
* Hook up taxes to endpoint

* Hook up tax stats endpoint

* Add default tax stat totals for empty results

* Create subtotals from intervals in API

* Change orders to orders_count to keep consistent naming
2018-12-18 10:26:46 +08:00
Justin Shreve e42ad6956b Add customer email filter (https://github.com/woocommerce/woocommerce-admin/pull/1092)
* Add customer email filter

* Handle PR feedback: Fix up if statement and add extra info to validation comment
2018-12-17 11:20:11 -05:00
Claudio Sanches 80f1b2f256 [REST API] Stock endpoint (https://github.com/woocommerce/woocommerce-admin/pull/974)
* New reports stock endpoint

* Register new endpoint

* Unit tests

* Included "name" into stock results

* Fixed sku type

* Improve stock _links returning properly links for variations and parent products

* Fixed docblock

* Sort stock by stock_quantity by default

* Fixed orderby

* Ignore sticky posts

* Fixed variable names
2018-12-14 07:43:39 -08:00
Justin Shreve 20e202080a Add Live Data to Reviews Panel (https://github.com/woocommerce/woocommerce-admin/pull/1055)
* Add Live Data to Reviews Panel
Adds the ability to embed the product in a product review response

* Clean up code needed to embed some product fields.

* Add API response tests
2018-12-12 08:35:56 -05:00
Allen Snook de105648be Activity Panel: Inbox: Filter update and error notes out of the inbox (https://github.com/woocommerce/woocommerce-admin/pull/893)
* Filter update and error notes out of the inbox

* Remove redundant trim().

* Fix test for admin notes API type parameter.
2018-12-11 09:00:57 +08:00
Joshua T Flowers 04d3ce6eb1 Add taxes endpoint and data store (https://github.com/woocommerce/woocommerce-admin/pull/1000)
* Add taxes endpoint and data store

* Add sorting options and normalize orderby param

* Add report taxes unit tests

* Add tax rate to response

* Add country, state, priority, and name to response

* Fix tax codes query param

* Add class comment

* Add missing  to record query

* Add comment about ambiguous column
2018-12-11 08:58:05 +08:00
Joshua T Flowers 557cec57cb Add tax stats endpoint (https://github.com/woocommerce/woocommerce-admin/pull/1019) 2018-12-11 08:55:05 +08:00
Paul Sealock 93a7472e54 REST API: Add stock info to products and variations 2018-12-11 07:19:46 +13:00
Jeff Stieler c170e289f5 Merge pull request woocommerce/woocommerce-admin#853 from woocommerce/add/711-bump-notes
Activity Panel: Inbox: Bump notes for expiring subs at certain days-remaining thresholds
2018-12-05 13:40:04 -07:00
Joshua T Flowers 5d3c771d45 Trigger sync_order on order stats table when refunding (https://github.com/woocommerce/woocommerce-admin/pull/990) 2018-12-05 10:10:22 +08:00
Joshua T Flowers 755b9c94f7 Reduce order table net revenue by refund total (https://github.com/woocommerce/woocommerce-admin/pull/988)
* Reduce order table net revenue by refund total

* Use order utils to get refund total
2018-12-05 10:06:00 +08:00
Peter Fabian 1c8459244a Merge branch 'master' into fix/749
# Conflicts:
#	includes/data-stores/class-wc-admin-reports-products-data-store.php
2018-12-04 12:07:43 +01:00
Peter Fabian 670801cee8 Merge pull request woocommerce/woocommerce-admin#978 from woocommerce/fix/PHP52-compat
Fixed PHP 5.2 compatibility
2018-12-04 12:00:37 +01:00
Paul Sealock bf0e025b05 REST API: isolate extened info in /reports/products 2018-12-04 13:01:36 +13:00
Peter Fabian 15b4681d30 Updated refactored function call from variations data store. 2018-12-03 20:14:05 +01:00
Peter Fabian ef0f11182a Added missing function parameter. 2018-12-03 20:07:44 +01:00
Peter Fabian e297e5ba7f Fixed TABLE_NAME references.
To be compatible with PHP 5.2.
2018-12-03 18:01:50 +01:00
Peter Fabian 1acb9827e7 Merge branch 'master' into fix/749
# Conflicts:
#	includes/data-stores/class-wc-admin-reports-products-data-store.php
2018-12-03 16:21:04 +01:00
Peter Fabian b8dff97e00 Fixed PHP 5.2 compatibility. 2018-12-03 14:44:43 +01:00
Peter Fabian 6e68247701 Merge pull request woocommerce/woocommerce-admin#953 from woocommerce/fix/740
Added support for ordering by product name in products endpoint.
2018-12-03 11:56:28 +01:00
Paul Sealock 516062975b try/variations-endpoint 2018-12-03 12:02:58 +13:00
Paul Sealock 164a67144b try/variations-endpoint 2018-12-03 11:49:37 +13:00
Peter Fabian 8b80de9bc2 Added support for ordering by product name in products endpoint. 2018-11-28 15:14:34 +01:00
Peter Fabian 99e2c463c7 Added parameter mapping for products/stats endpoint. 2018-11-28 11:04:18 +01:00
Peter Fabian e6cca3c083 Replaced code_includes/_excludes with coupon_* as agreed. 2018-11-28 10:53:11 +01:00
Peter Fabian eff3a97573 Added time clause to WHERE subquery and fixed product selection. 2018-11-27 21:41:52 +01:00
Peter Fabian bc29615454 Removed unnecessary SQL conditions. 2018-11-27 21:40:13 +01:00
Peter Fabian a765a6df97 Added tests for advanced filters of orders report. 2018-11-27 21:39:14 +01:00
Peter Fabian f9a46423e0 Added get_order_statuses to REST controllers where it's required. 2018-11-27 16:39:11 +01:00
Peter Fabian c1af1da752 Updated structure of SQL queries for coupons and products.
As there can be multiple couopns and products assigned to one order, it requires different handling to what was initially implemented.
2018-11-27 16:34:12 +01:00
Peter Fabian 8e5709ce26 Updated get_unique_products to be more versatile and support running in other contexts.
In some cases of advanced filters, it produced incorrect SQL code.
Additionally, split of where clause to time clause and rest needed to be reflected here, too.
2018-11-27 16:32:42 +01:00
Peter Fabian 32e30ac274 Made sync of order stats table run also on clean_post_cache.
Otherwise, some changes in master data for orders would not be reflected, as save_post action is skipped if order is updated while the save_post action is running.
2018-11-27 16:29:21 +01:00
Peter Fabian 216b7c94ca Updated structure for includes/excludes coupons and products subqueries.
As there can be multiple coupons and products assigned to one order, it needs to ba handled differently when constructing SQL query.
2018-11-27 16:26:50 +01:00
Peter Fabian 7dd611f4d4 Added table name to time period sql params.
Without this, the subquery could not be used in some contexts, as the column name was ambiguous.
2018-11-27 16:23:40 +01:00
Peter Fabian 8dbcbfc6cb Store coupon id, not coupon item id in the stat table. 2018-11-27 16:18:42 +01:00
Peter Fabian 942db641e8 Added extra trigger for updating stats tables.
If order is updated while save_post action is in progress, then the update does not trigger stats table update, thus stats table gets out of sync with master data.
2018-11-27 16:17:30 +01:00
Peter Fabian a86560498e Added primary key to coupon lookup.
Otherwise REPLACE query adds a multiple identical rows.
2018-11-23 22:29:47 +01:00
Peter Fabian db9d6e03e7 Added spaces around operator. 2018-11-16 18:22:40 +01:00
Peter Fabian c1cf221773 Fixed typos. 2018-11-16 18:02:19 +01:00
Peter Fabian 26debd77c3 WIP on advanced filters.
Plus fixing bugs:
- fixed tests
- fixed schema definition to reflect response data
- split WHERE SQL clause into time constraints and rest
2018-11-16 17:51:33 +01:00
Peter Fabian 46923de3d2 Removed superfluous unsets. 2018-11-16 12:37:15 +01:00
Peter Fabian 7c6d0dc314 Handled case where match parameter is missing. 2018-11-16 12:32:13 +01:00
Peter Fabian ea766b83ca Renamed method to better reflect its purpose.
Plus added conversion of count as string to integer.
2018-11-16 12:30:00 +01:00
Peter Fabian 16d5265aed Merge branch 'master' into fix/749 2018-11-16 12:16:50 +01:00
Peter Fabian ba09fea35d Updated filters subqueries to correctly handle no filter case. 2018-11-16 12:12:47 +01:00
Allen Snook a60497c9f6 Remove error_log, set note to false to avoid a uninitialized var warning 2018-11-15 13:19:29 -08:00
Allen Snook a65ff9e797 Bump notes for expiring subscriptions at certain days-remaining thresholds 2018-11-15 12:52:58 -08:00
Peter Fabian 723ac1e506 Added defaults for new params to Data Store. 2018-11-15 19:01:52 +01:00
Peter Fabian 9d86e01f4e Updated REST controller with new parameters. 2018-11-15 19:01:22 +01:00
Peter Fabian d009deb3e1 Added initial implementation of advanced filters. 2018-11-15 15:27:19 +01:00
Peter Fabian 11d6f2e93a Updated query parameters according to spec. 2018-11-13 16:24:57 +01:00
Allen Snook 9246ab6ef4 Correct merge of class-wc-admin-reports-data-store 2018-11-07 07:25:17 -05:00
Allen Snook 962bb73288 Remove temporary comments on reports data store 2018-11-07 07:22:53 -05:00
Allen Snook 24c80427fc Fix a bug in the notes updater; better handle test case where
note expiration/expired date changes at woocommerce.com causing
an expired note to become an expiring note (corner case)
2018-11-07 07:21:23 -05:00
Allen Snook 8851a8cfe7 Refresh subscription notes daily 2018-11-07 07:21:23 -05:00
Allen Snook 3acd858d37 Hook up the expiring, expired subscription notes 2018-11-07 07:21:22 -05:00
Allen Snook dcfc8ea17d Start adding subscription notes to the merchant inbox 2018-11-07 07:21:22 -05:00
Peter Fabian bcf21687d3 Updated parameters in the REST controller. 2018-11-01 12:37:49 +01:00
Joshua T Flowers 0f45a08f20 Update order summary in Orders report (https://github.com/woocommerce/woocommerce-admin/pull/613)
* Move TableSummary below pagination

* Add summary to order table

* Add new and returning customers

* Add product to totals in API

* Use get_var instead of get_results for unique products

* Change table summary styling

Remove slashes and increase padding between items based on discussion with @LevinMedia

Change margin to padding to overlap table shadow when pagination is not present.

* Fix wp_posts prefix and move to separate fxn

* Change new/returning customer column types to intval

* Add new/returning customer data to tests and fix formatting
2018-10-31 14:09:38 -05:00
Kelly Dwan f62537fc17 Try: Add Lerna to split out utility packages (https://github.com/woocommerce/woocommerce-admin/pull/678)
* Add lerna & GB package-building script

* Move currency library to lerna module

* Update lerna config

* Add publish commands

* Add currency as an faux-external module

* Add separate command to build just core files

* Update dependency path

* Update build script to build all packages into `dist`

* Add packages to the jest test setup

* Move date library to packages

* Update imports to use @woocommerce/date

* Output wcSettings definition before any scripts are output

Fixes issues where wc-dates lib relies on settings object

* Add the build step into travis

* Update jest config to dynamically get package paths

* Update package postcss config to match wc-admin’s main config

* Add combined watch scripts for package+app, add a `clean` command to clean up old build files

* Ignore PHPCS error (leave todo message to fix)

* Concat files with a space, fix issue where all files join in one continuous string and fail the check
2018-10-30 14:57:48 -04:00
Peter Fabian bfb6f246f0 Return correct object for REST products controller. (https://github.com/woocommerce/woocommerce-admin/pull/710) 2018-10-30 11:06:23 -07:00
Peter Fabian 44c90d8ef1 Added zero-padding to hours coming from the db. (https://github.com/woocommerce/woocommerce-admin/pull/687)
* Added zero-padding to hours coming from the db.

* Added info about code dependency.
2018-10-30 11:04:03 -07:00
Jonathan Belcher 360c4c7083 Fix automattically fixable php lint warnings (https://github.com/woocommerce/woocommerce-admin/pull/720) 2018-10-29 12:19:07 -04:00
Peter Fabian 3d71ec9208 Simplified compound expression to fix code for older PHP versions. 2018-10-26 14:02:53 +02:00
Allen Snook a8be179ebd Merge pull request woocommerce/woocommerce-admin#649 from woocommerce/add/store-notice-setting-moved
Activity Panel: Inbox: When the user updates WooCommerce, add a note alerting that the store notice setting has moved
2018-10-25 10:06:30 -07:00
Allen Snook e7ba47e958 Go ahead and 1) handle the variety of queries that can be used
as action button links and 2) enable the button (tracking will
come next). Also had to tweak CSS for activity panel item buttons
a little
2018-10-24 18:13:44 -07:00
Jonathan Belcher fff67b1e4b Fixes PHP 5.2 compatibility issues (https://github.com/woocommerce/woocommerce-admin/pull/653) 2018-10-24 14:49:58 -04:00
Jonathan Belcher 46c369afb1 Fixes lints in class-wc-admin-reports-data-store (https://github.com/woocommerce/woocommerce-admin/pull/643)
* Fixes lints in class-wc-admin-reports-data-store

* Fix documentation
2018-10-23 13:55:03 -04:00
Allen Snook c45a6cf5de On update, add a note alerting that the store notice setting has moved 2018-10-23 10:30:33 -07:00
Claudio Sanches 8b67f5f50d Merge pull request woocommerce/woocommerce-admin#646 from woocommerce/fix/lints-class-wc-admin-reports-products-query.php
Fixes PHP 5.2 compatibility issues
2018-10-23 14:04:40 -03:00
Claudio Sanches ebf79b489a Merge pull request woocommerce/woocommerce-admin#647 from woocommerce/fix/lints-class-wc-admin-reports-products-stats-query.php
Fixes PHP 5.2 compatibility issues
2018-10-23 14:04:03 -03:00
Jonathan Belcher 2be2d78306 Fixes PHP 5.2 compatibility issues 2018-10-23 12:50:34 -04:00
Jonathan Belcher b58043380e Fixes PHP 5.2 compatibility issues 2018-10-23 12:47:51 -04:00
Jonathan Belcher 39ee05cc70 Fixes PHP 5.2 compatibility issues 2018-10-23 12:43:55 -04:00
Jonathan Belcher daa929b887 Add file doc block to fix linting issue (https://github.com/woocommerce/woocommerce-admin/pull/628) 2018-10-23 11:08:49 -04:00
Allen Snook 2147b23c4d Correctly define admin notes schema 2018-10-22 13:15:44 -07:00
Allen Snook bf898e642b Merge pull request woocommerce/woocommerce-admin#566 from woocommerce/add/admin-notices-new-sales-record
Activity Panel: Inbox: New Sales Record Note
2018-10-22 09:26:13 -07:00
Jonathan Belcher ecb3013fd3 Uses PHPBCF to autofix warnings and errors (https://github.com/woocommerce/woocommerce-admin/pull/611) 2018-10-22 12:20:14 -04:00
Joshua T Flowers 88058b2bf4 Add default report data if empty product data is returned (https://github.com/woocommerce/woocommerce-admin/pull/581)
* Add default report data if empty product data is returned

* Remove unused argument ''

* Remove filter params
2018-10-22 11:51:24 -04:00
Allen Snook 6a25fb2249 Remove unneeded set_id in note deletion handler 2018-10-19 16:24:03 -07:00
Allen Snook a46d83aea3 Rewrite the queries a bit to leverage prepare when possible 2018-10-19 15:48:38 -07:00
Allen Snook bb14dcd995 One argument per line in multi argument calls 2018-10-19 15:05:40 -07:00
Allen Snook 0032da31f5 Remove constructor for notes class as not needed 2018-10-19 14:52:53 -07:00
Allen Snook 3d7b92f58f Make it a proper daily scheduled event 2018-10-19 14:47:39 -07:00
Allen Snook 04b33f9e6b Hook up the remainder of the sales record message. There can only be one. 2018-10-19 14:45:03 -07:00
Allen Snook d05a1c63ff Calculate previous days sales, add note if new max 2018-10-19 14:41:37 -07:00
Allen Snook 3155d5ec24 Merge pull request woocommerce/woocommerce-admin#507 from woocommerce/add/admin-notices-rest-api
Activity Panel: Inbox: Add REST API (GETters only)
2018-10-19 08:04:46 -07:00
Jonathan Belcher f6d90821af Fix phpcs errors 2018-10-17 12:51:48 -04:00
Jonathan Belcher d800054c1e Merge branch 'master' into fix/474 2018-10-17 12:42:03 -04:00
Allen Snook 2a94177f71 Fix per_page default handling, json encoding options, schema help 2018-10-16 12:49:01 -07:00
Allen Snook d450ea6545 Strip slashes from titles, content and action (button) labels 2018-10-16 12:49:01 -07:00
Allen Snook 80ace9c9f3 Add publicly consumable schema info 2018-10-16 12:49:01 -07:00
Allen Snook 054fbb4ee3 Accept page and per page params in REST query, return total count of notes in header 2018-10-16 12:49:01 -07:00
Allen Snook 68b799f796 Correctly prepare dates in the response 2018-10-16 12:49:01 -07:00
Allen Snook 3b988d954c Correct copypasta in comments 2018-10-16 12:49:01 -07:00
Allen Snook 6dc4564feb Add single and multiple note GETters 2018-10-16 12:49:01 -07:00