* Display channel column in Orders Analytics UI.
* Set $data to false to not use cache.
For development purpose.
* Get channel info from order meta and put into extended_info.
* Set channel in order item level.
* Replace channel with get_origin_label in extended_info.
* Remove unnneeded channel in orders_data.
* Display origin instead of channel in table.
* Fix lint errors.
* Query order meta table based on HPOS.
* Remove code for development purpose.
* Add changelog.
* Fix code comment.
* Guard against null values.
`_wc_order_attribution_utm_source` can be null when the order is created via web admin.
* Set default origin label to "Unknown".
This default is the same as found in `output_origin_column` function in plugins/woocommerce/src/Internal/Orders/OrderAttributionController.php.
* Support server side report download.
This is needed when there are more than 25 records in the Orders Analytics report.
* Fix failed test.
* Fix lint error.
* Simplify code.
We loop through $orders_data instead of $order_attributions data. This is because $order_attributions may not have attributions data for some orders.
By looping through $orders_data, it would automatically cater for "Unknown" data from get_origin_label function call, and we don't need to specify "Unknown" as default value for origin.
* Change "channel" to "attribution" object in controller.
This is because we need more than one piece of information, so we need it to be an object with properties like `origin`, `device` etc.
Co-authored-by: Kader Ibrahim S <kader.ibrahim.s@a8c.com>
* Change `origin` string to `attribution` array in Orders DataStore.
Co-authored-by: Kader Ibrahim S <kader.ibrahim.s@a8c.com>
* Change origin string to attribution object.
* Fix indexing after changing from origin string to attribution object.
* Change from origin string to attribution object in table.js.
* Simplify code.
To make code shorter and easier to read, instead of long horizontal code.
* Fix lint errors.
* Fix failed test.
* Fix lint error.
* Fix retrieving origin in CSV export.
* Use $wpdb->postmeta; cosmetic change.
Co-authored-by: Kader Ibrahim S <kader.ibrahim.s@a8c.com>
* Cosmetic change.
Co-authored-by: Kader Ibrahim S <kader.ibrahim.s@a8c.com>
* Sanitize order IDs by using absint.
Co-authored-by: Kader Ibrahim S <kader.ibrahim.s@a8c.com>
---------
Co-authored-by: Kader Ibrahim S <kader.ibrahim.s@a8c.com>
* fix: fixed all instances of translator lint rule violations
* Add changefile(s) from automation for the following project(s): @woocommerce/eslint-plugin, @woocommerce/components, woocommerce
* fix i18n lint violations in @woo/components
* fix all i18n lint rule violations in @woo/product-editor
* Add changefile(s) from automation for the following project(s): @woocommerce/product-editor, @woocommerce/eslint-plugin, @woocommerce/components, woocommerce
* empty commit to trigger CI
---------
Co-authored-by: github-actions <github-actions@github.com>
* Add `RevenueReportDateTour` component
* Add changelog
* Fix styles
* Rename RevenueReportDateTour to ReportDateTour to use it in two different reports: Orders and Revenue
* Change default sort date to date_paid
# Conflicts:
# plugins/woocommerce/src/Admin/API/Reports/Orders/Stats/DataStore.php
* Update changelog
* Assign date_column_name before calling parent constructor
* Remove date_type default value from configuration and show tour only if user didn't assign a value
---------
Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com>
Co-authored-by: Nathan Schneider <nsschneider1@gmail.com>
* Update husky from 4 to 7
* Update @types/jest from 26 to 27
* Update lint-staged from 10 to 12
* Update babel-jest from 26 to 27
* Update @typescript-eslint/eslint-plugin from 4 to 5
* Update @typescript-eslint/parser from 4 to 5
* Update chalk from 4 to 5
* Update concurrently from 5 to 7
* Update stylelint from 9 to 14 and stylelint-config-wordpress from 13 to 17
* Update @wordpress/prettier-config from 0.4 to 1.1
* Update eslint from 7 to 8, @wordpress/eslint-plugin from 8 to 10, eslint-plugin-testing-library to 5
* Fix lint errors after updating eslint-plugin-testing-library
* Fix style lint
* Rename .stylelintrc.json -> stylelint.config.js & add todo comment
Fix stylelint.config.js
* Remove @wordpress/e2e-test-utils
* Add changelogs for eslint-plugin
* Update storybook/preview.js since addDecorator has been deprecated
Remove parameters
* Import directly from @storybook/addon-docs
* Migrate some stories to use @storybook/addon-controls
Add a comment for @storybook/addon-knobs
* Update changelogs
* Update preview.js to fix lint warning
* Update pnpm-lock.yaml
* Fix eslint layout errors (https://github.com/woocommerce/woocommerce-admin/pull/8484)
* Add hook reference README
* update hook reference
* better
* changelog
* add pr number
* remove example
* add desc
* add stats
* jsdoc REPORTS_FILTER
* Category configs
* configs
* data
* dashboard
* dashboard charts
* save
* save
* save
* done with filters
* Add scope to slotFill docs
* data
* add all slotfills
* data
* Fix error when scope is not present, and make use of typedef imports
* Move chart and filter jsdoc definitions to the reports index file
* Update hook reference data.json
* Make use of import for filter typedef and address some typos
Co-authored-by: Lourens Schep <lourensschep@gmail.com>
* Fix misaligned status column on order report
Add labelPositionToLeft prop to order-status component
Set labelPositionToLeft=true for <OrderStatus> on orders report table
Remove style import
* Add changelogs
Add changelogs
* Remove use of wc-admin-settings from packages
* Move getSetting to getAdminSetting and remove wc-admin-settings package
* Add changelog
* Update package.json and remove last use of wc-admin-settings
* Sentence case all the things
* Update a few more things that were missed on the first round
* update documentation titles to use title case
* Add changelog
* Handle PR feedback
* Revert readme changelog changes
* Revert changes to ALT text in dev documentation
* Revert a change to ALT text in dev documentation
* Fix failing tests
Co-authored-by: David Levin <davidlevin@Davids-MacBook-Pro-2.local>
Co-authored-by: Joshua Flowers <joshuatf@gmail.com>
Co-authored-by: Adrian Duffell <9312929+adrianduffell@users.noreply.github.com>
* Add initial Variations Report to analytics feature.
* Restrict query to variations when not specifying any product IDs.
* Add route to get variations without specifying a parent.
* Move variations table component to variations report directory.
* Add missing LIMIT clause to variations report query.
* Remove broken features from Variations table.
* Add Variations report controller to CSV emailer.
* Add initial Variation Stats endpoint, based on Product Stats.
* Hook Variations Report components up to new stats endpoint.
* Hook attribute filter up to variations report queries.
* Remove variation title filter usage.
See: https://github.com/woocommerce/woocommerce-admin/pull/5100
* Use filtered separator in variation name formatting.
* Add "single variation" to variations report, fix autocompleter API request.
* Fix segmentation by variation.
* Add comparison to variations report.
* Always include manually specified variations in report results.
* Fix variations report table comparison mode.
The ReportTable component expects the `filter` query param.
* Fixing styling of compare button without table search component.
* Add variation filter to Orders report.
* Link orders count to orders report filtered by variation.
* Orders report: include variation attributes in product names.
* Further style tweaks for variations report download button.
* Add variations filter to order stats query.
* Clean up "category includes" login in REST controllers.
Prep for "category excludes" in the Variations report.
* Support category exclusion in report filters.
* Fix filter param used by the variation report table component.
* Add category filter to variations report.
* Fix initial selected ReportTable rows when using non-default compareParam.
* Add a new autocompleter for variable products.
* Add products filter to variations report.
* Fix tests.
* Handle variation IDs that are no longer found.
* Add documentation.
* Use getSetting() instead of directly accessing window properties in client code.
* Fix ordering Variations by SKU.
* Add product attribute filter to Orders report config.
* Add attribute args to Orders report controller.
* Include attribute filters in orders report query.
* Add attribute args to Orders Stats report controller.
* Include attribute filters in orders report stats query.
* Add test for product attribute filter in orders report.
* Add tests for invalid parameter values.
* Add tests for product attribute filter in order stats endpoint.
* Fix tests for PHP 5.6 and WC 3.8.x.
* Add advanced args to configured static args so it is persistent
* Make sure unique keys are set in loaded labels
* Simplify the key selection because javascript
* Smarten up the filter picker so it only navigates if the selected button has changed
* Add static params for advanced order filters
* Add static param to product comparison config
* Add static param to category comparison config
* Add static param to coupon comparison config
* Add static param to taxes comparison config
* Add static params to downloads comparison config
Co-authored-by: Rebecca Scott <me@becdetat.com>
* Count total unique customers instead of new/returning in order stats
* Add customer name to table instead of customer type
* Add customer total to segments
* Update tests for new stats
Co-authored-by: Joshua Flowers <joshuatf@gmail.com>
* Fix Filters' staticParams
* Don't update report table page when chart type is changed or filter menu has been opened.
Co-authored-by: Jeff Stieler <jeff.m.stieler@gmail.com>
* Pass specified totals/intervals fields parameter to the Order Stats Query.
* Only request stats used in render for report summaries and charts.
Implement Orders as an example.
* Specify stats fields for all report requests.
* Add 'fields' parameter handling to all stats endpoint controllers.
* Reduce stats fields requested by dashboard charts.
* Make analytics tables use the site's date format setting
* Use getSetting instead of the wcSettings global
* Use configured date format in coupons analytics table
* Use default date format as fallback in analytics
* Rename downloads table class name
* align code styles with the same configuration as Woo-Blocks
* initial pass of reformat-files
* applies manual fixes to various new linting errors surfaced by the configuration change.
* Fix state mutation in image-upload
* remove unused pre-commit-hook.js
* requestAnimationFrame -> window.requestAnimationFrame
* wc-api eslint changes
* eslint fixes on client/lib and client/settings
* client/header eslint changes
* fixes for client/dashboard part 1
* fixes client/dashboard part 2 of 2
* client/analytics part 1
* client/analytics continued
* client/analytics, last batch
* rename __mock__ directory
* pass in useEffect, useState from React component or function
* remove '+' from sprintf string argument
* use ref instead of findDOMNode
* reformat and repaply package.json changes
* install deps before running linter in Travis
* useGetCountryStateAutofill
* counryStateAutofill
* countryStateAutofill
Co-authored-by: Paul Sealock <psealock@gmail.com>
* Decouple date package from wcSettings.
* Update missed documentation and example.
* Expect simpler prop values for date filter.
* Remove unused props from primary/secondary dates.
* Avoid introducing moment dependency for type checking.
* Handle null moment/date values in DateRangeFilterPicker.
* Fix missing ISO date format.
* Fix moment instance detection.
* Relabel Net Revenue to Net Sales, revert previous refund work on Gross revenue and rename to total sales. Update the orer of all the things
* Add gross sales calculation to revenue stats endpoint.
* Restore coupon_total when updating order stats.
* Wire up gross sales to revenue report.
* Fix revenue report refunds calculation when there are no refunds.
* update net sales labels and cases in order, product and category tables
* Subtract refunded shipping and taxes from gross sales.
* pluses to minuses to fix the gross revenue and refund totals when refunding
* Add gross_sales to revenue stats orderby enum.
* Change refund labels to Returns
* Remove usage of defunct coupon_total column.
* Store refunded amount in stats table.
* Rename "gross_total" column to "total_sales".
* Net total for refund orders can be used instead of a new column.
* Rename gross_revenue to total_sales.
* Coalesce coupons total in order stats query.
SUM()ing all nulls gives null, not zero.
* Use segmentation selections to backfill missing data.
Fo when report columns and segmentation columns don't match.
* Remove errant gross_sales from expected interval test data.
* Fix gross sales tests for revenue/stats.
* Move missing segment fills back to their original locations.
* Fix remaining tests failing because of gross sales.
* Fix db upgrade function rename of gross_total column.
* Fix linter errors.
* Remove wcSettings dependency from currency and number packages.
Either take a configuration object in function calls or in a new class constructor.
* Use new Currency class and number format methods in client/.
Compose with store settings to keep the same API.
* Don't reintroduce lodash dependency to currency package.
* Add changelog entries to currency and number packages.
* Update docs, example, and changelog for AdvancedFilters component.
* Use precision-less formatValue() for integer report values.
* Make Currency instance immutable.
* Add tax rates filter to orders report
* Add tax rate filters to orders data store
* Add tax rate query filters to order stats data store
* Add tax rate orders link to taxes table
* Add "exportable" report interface for defining CSV export values.
* Define export values for Orders Report.
* Define export values for Products Report.
* Define export values for Categories Report.
* Define export values for Coupons Report.
* Allow commas and double quotes in CSV exported values.
* Fix in-browser export formatting of orders report products.
* Align server-side orders report export formatting with in-browser.
* Cover comma and double quote escaping in CSV export package tests.
* Define export values for Customers Report.
* Embed response links when requesting data for CSV exports.
* Define export values for Downloads Report.
* Move reusable report export functions to a trait.
* Define export values for Stock Report.
* Define export values for Taxes Report.
* Define export values for Variations Report.
* Define export values for Revenue Report.
* Always pass export row data through the filter.
* Fix formatting in test case for CSV coupon export.
* Quote escape CSV headers in client-side export.
Escape values with spaces as well.
* Check if inventory is managed at the product level before using the stock status/quantity.
* Prevent CSV injection in csv-export package.
* refactor wcSettings in components to use new api
* update test snapshot
* refactor wcSettings in other packages
* fix how defaults are set for setting
* decouple siteLocale from ReportsFilters and AdvancedFilters
* Decouple currency settings from packages
AdvancedFilters, ReportFilters, and NumberFilters now receive currency info as props.
* decouple currency settings from `ReportChart`
* decouple `wcAdminAssetsUrl` setting from `EmptyContent`
- also refactors to remove the need for `ImageAsset` component.
* decouple OrderStatus from wcSettings
* decouple wcAdminUrl setting from ProductImage component
- this also implements a SVG for default product image.
* remove export for image-asset that is no longer present
* remove console.log
* update test snapshots for ProductImage
* integrate with new asset data registration (php side)
- includes back-compatibility.
* update js configuration and implement settings alias
- this aliases `@woocommerce/wc-admin-settings` to the settings api exposed via blocks (either the blocks plugin or core) and all the settings provided via the server.
- Adds fallback for back-compat if `wc.wcSettings` is not available in the environment (fallsback to `wcSettings`).
* initial pass to update all wcSettings direct usage to the new api
- this is just an initial pass, more can be done in separate pulls.
* missed one spot for adding new filter implementation
* fix incorrect jest config
* Avoid unnecessary assignment and directly return.
* Remove unnecessary defaults
* Fix inline comment text case.
Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com>
* Remove unnecessary inline comment.
* use @todo instead of TODO
Co-Authored-By: Albert Juhé Lluveras <contact@albertjuhe.com>
* fix incorrect reference in webpack config.
* add missing import and slightly delay dependency injection for scripts
* update get-setting and set-setting callbacks
* disable lint rule for console.error on dev doc builds
* Add customer functions to order and refund classes
* Use parent order for refund order number
* Add renderCurrency method to format negative currencies
* Allow negative number of items for refund fields in database
* Add customer functions to order and refund classes
* Extract shared order and refund methods to trait
* Add refund filter to advanced filters in orders report
* Filter refund types in orders data store
* Extract refunds subquery to parent report data store method
* Add refund subquery filtering to order stats data store
* Add tests around refund type filtering
* Change the default option for the refunds filter
* Change coupons sum to distinct coupon count in REST API
* Hook up unique coupon count to orders summary numbers
* Add coupons count to order segmenting
* Add coupons count to expected stats in order test and revenue tests
* Translation call text domain change from “wc-admin” to “woocommerce-admin”.
* Fix .pot file generation.
* Fix errantly closed array item in /revenue/stats controller.
* Rename plugin zip, main file, and repo name to "woocommerce-admin".
* Display order number on reports, and add to API response.
* Add method for getting order number, avoiding loading the data store if no filter is attached.