Commit Graph

173 Commits

Author SHA1 Message Date
Mike Jolley b4746e28cf Optimise read_manual_coupon 2016-08-26 13:13:50 +01:00
Mike Jolley 69c48db0a8 Correct ids method 2016-08-26 12:53:02 +01:00
Mike Jolley cd81622d15 Read props 2016-08-26 12:52:22 +01:00
Mike Jolley 7405053a6a Add exceptions 2016-08-26 12:33:33 +01:00
Mike Jolley 48243109c0 This is ran on set 2016-08-26 12:23:53 +01:00
Mike Jolley c6d0d059fd Remove typecasts on get 2016-08-26 12:22:05 +01:00
Justin Shreve a243829db6 Convert Coupon Controller to use CRUD operations 2016-08-22 15:06:21 -07:00
Mike Jolley 1bc9da3e91 Merge branch 'master' into WC-CRUD
# Conflicts:
#	includes/class-wc-coupon.php
2016-08-04 12:10:04 +01:00
Claudio Sanches 7778583340 Fixed wrong number of decimal precision, closes #11368 2016-07-11 17:26:54 +02:00
Mike Jolley 48bba78cae Only apply new logic to product coupons 2016-06-27 15:58:08 +01:00
Mike Jolley 01b48e699a Fix exclude_product_ids prop 2016-06-27 15:02:58 +01:00
Mike Jolley 0ed58784fd Fix - add validate_excluded_items function to validate product coupons before applying them 2016-06-27 15:02:32 +01:00
Mike Jolley 8a46831eb1 Made coupon valid check more readable 2016-06-27 14:59:50 +01:00
Mike Jolley 731c134d9e Maximum coupon check should allow the 'maximum' value. 2016-06-18 19:54:02 +01:00
Mike Jolley 78142a8ebb Merge branch 'master' into WC-CRUD
# Conflicts:
#	includes/class-wc-checkout.php
#	includes/class-wc-coupon.php
#	includes/class-wc-customer.php
#	tests/unit-tests/cart/cart.php
#	tests/unit-tests/cart/functions.php
#	tests/unit-tests/coupon/coupon.php
#	woocommerce.php
2016-06-13 15:01:58 +01:00
Mike Jolley a0c01d963b Vars and docs 2016-06-06 18:18:26 +01:00
Mike Jolley e00c3450c5 Discount rounding logic improvements
Instead of rounding the single item discount amount, this rounds the
line to the store DP setting before running tax logic.

Fixes #10963
Also works with #10573

Includes unit tests
2016-05-23 16:56:31 +01:00
Mike Jolley 33d325cd88 Only cache valid coupon codes
Fixes #10950
2016-05-20 10:36:36 +01:00
Mike Jolley a77735432b Use get_displayed_subtotal() to determine if conditions for coupons and free shipping is met.
@claudiosmweb

Closes #10711
2016-04-18 11:39:00 +01:00
Mike Jolley 534cd2a384 Use discount rounding mode when getting discounted price.
#10573 @claudiosmweb
2016-03-23 11:27:36 +00:00
Justin Shreve 7f0e0c8f0c Finish proper integetration with WC_Data's meta methods. 2016-03-17 11:14:15 -07:00
Justin Shreve f65c9305bf Update WC_Coupon to use the new WC_Data class and meta methods. 2016-03-17 09:38:56 -07:00
Justin Shreve 60085e582a Fix some comments/spacing issues. 2016-03-17 09:19:29 -07:00
Justin Shreve f973b9d122 Make some improvements to metadata. Don't return [0] array, allow setting custom meta with a WC_Coupon method. Fix up some tests. 2016-03-17 09:19:29 -07:00
Justin Shreve 7e97ee94c1 Update deprecated and doing it wrong version numbers 2016-03-17 09:19:28 -07:00
Justin Shreve 69973d520e Update version strings 2016-03-17 09:19:28 -07:00
Justin Shreve 5ea607e236 Handle the rest of the PR feedback:
* Run get_code through the woocommerce_coupon_code filter
* Convert expiry dates to timestamps in set_expiry_date
* Simplify product ID array explodes to get an empty array
2016-03-17 09:19:28 -07:00
Justin Shreve 0268a67c4b Address a few of the feedback items from the PR:
* Switch all coupon fields to _data
* Move coupon custom fields to _meta_data
* Shorten the 'yes' -> true checks
* Add a test for getting custom fields
2016-03-17 09:19:28 -07:00
Justin Shreve 61ae531de0 Add hooks for create, update, and delete. 2016-03-17 09:19:28 -07:00
Justin Shreve 50e1bc7117 Add tests for the getter/setter methods 2016-03-17 09:19:28 -07:00
Justin Shreve 7a0c8d146b Add the ability to create coupons via code (so things like Points & Rewards will still work). 2016-03-17 09:19:27 -07:00
Justin Shreve 3eacb992bc Address issues from Mike's Feedback:
* Rename individual use, free shipping, and exclude sale items to match their meta names closer.
* Sanitize emails when using set_email_restrictions
* Remove some unnecessary explict true checks
* Move ID into _data with the rest of the fields
* Fixed some spacing issues
2016-03-17 09:19:27 -07:00
Justin Shreve 447462b274 Allow access to coupon properties directly to allow for back-compat usage, but throw a deprecated notice. Also adds a test to make sure these properties work as they should. 2016-03-17 09:19:27 -07:00
Justin Shreve d738dec05d Coupon CRUD (WIP). 2016-03-17 09:19:27 -07:00
Mike Jolley f1eefa902c [2.5] When getting coupon by code used twice, latest should be queried
Closes #10487
2016-03-07 13:08:02 +00:00
Mike Jolley 1979138666 Use unformatted coupon post title for comparison
Fixes #10476
2016-03-04 15:55:46 +00:00
Mike Jolley f9d019df87 [2.5] Fix query/missing variable in validate_user_usage_limit
Closes #10122
2016-01-21 19:06:42 +00:00
Mike Jolley e15c123510 Fix - Missing validation rule for product cat exclusion coupons (validate_excluded_product_categories)
Fixes #10058
2016-01-12 09:49:46 +00:00
Fredrik Forsmo 0f74f805b0 Improve docblock comments in WC_Coupon class
* Added missing throws tags to various methods
2016-01-06 15:53:59 +01:00
Mike Jolley 9aee0ac1cb Functions and filters to determine which coupons need product and cart validation rules.
Closes #9854
2015-12-16 11:47:56 +00:00
Mike Jolley 3b409f1bbf For coupons with category restrictions, respect the category hierarchy.
Closes #9704
2015-11-30 12:29:16 +00:00
Claudio Sanches 753014da5a Merge pull request #9631 from woothemes/transient-tweaks
Transient tweaks
2015-11-21 22:48:14 -02:00
Mehdi Esmaeili 101c7f47e1 Better Documentation: Put throws tag 2015-11-17 16:21:42 +03:30
Mike Jolley e6859dc0f4 Change get_coupon_id_from_code to use wp_cache instead of transient
Persistent caching is more relevant here. Smaller stores won’t see much
gain from using the transient.

This commit also removes the woocommerce_coupon_code_query filter due
to limitations of it being within a prepare() call. Checked github and
no plugins appear to use this filter so should have minimal impact.
woocommerce_get_coupon_id_from_code filter added in place.
2015-11-13 23:09:35 +00:00
Nicola Mustone c9da4f928a check if ABSPATH is defined 2015-11-06 10:22:19 +01:00
Claudio Sanches 5893875b0c Removed period for file headers 2015-11-03 11:53:50 -02:00
Claudio Sanches ee30b5b308 Fixed php docs standards 2015-11-03 11:31:20 -02:00
Jeff Stieler 883170e261 Cache coupon id from code lookup in a transient. 2015-10-20 21:42:46 -06:00
Mike Jolley 3e55364e3a Merge pull request #8940 from woothemes/issues/8482
Tidy up how we're dealing with coupon postmeta around `_used_by` which can get big.
2015-09-15 16:42:51 +01:00
Geoffrey de Vlugt 9d7d40ced1 Coupon usage count can become negative
This commit fixes issue #9086
2015-09-09 09:56:32 +02:00
George Stephanis f71af3b1de Account for the fact that when fetching all meta, maybe_unserialize() hasn't run yet.
@see
https://github.com/WordPress/WordPress/blob/a7b38bf90a8b4e070ae98faa076e
41403c59f951/wp-includes/meta.php#L499-L508
2015-08-24 16:08:04 -04:00
George Stephanis 6ef4cf0d18 Optimization. Don't call `get_post_meta` 17+ odd times.
As @pmgarman remarked here:
https://pmgarman.me/blog/woocommerce-and-coupon-_used_by-logging/ — for
very large values of postmeta, when using memcached that cannot handle
data stores of over 1M, the store seems to fail at pulling it back in,
resulting in large query results on each call.

At the least, this change should avoid those cache misses and
re-queries, although I do feel that not being able to keep the cached
in php’s memory and losing it in the cache is indeed a failing here of
the object cache plugin.

Still, this should have some optimizations, as we’re caching the data
right here, closer to usage.
2015-08-24 15:06:19 -04:00
George Stephanis a17addae0a Migrate the actual querying of the underlying data structure.
Move it into the relative class for tidiness, and have it be called via
an access function.
2015-08-24 14:30:13 -04:00
George Stephanis 4692afacdd Add a conditional to match `inc_usage_count()`
Otherwise, for empty $used_by values, it will fire off a needless db
query.
2015-08-24 14:20:30 -04:00
George Stephanis 40dfb59bde Clarify a comment as to why we're not using a core method. 2015-08-24 14:19:08 -04:00
George Stephanis fd3ceb3e04 Allow a user to be specified for validating the limit of. 2015-08-24 13:08:44 -04:00
George Stephanis e6b7d5c49a Simplify the data we're working with.
This provides slightly safer bounds for large data sets.
2015-08-24 13:08:23 -04:00
Mike Jolley d222dd4c37 Don't apply product discount if price is already 0
Closes #8725
2015-08-05 13:45:32 +01:00
Claudio Sanches 9e41552342 Removed all "@return void" 2015-07-16 16:55:48 -03:00
Mike Jolley d1db647c05 Fix validate_sale_items logic for variable products
Closes #8591
2015-07-16 17:53:52 +01:00
Mike Jolley a148e867b0 [2.3] Fix sale item exclusion logic for variations
Closes #8324
2015-06-09 16:10:46 +01:00
Mike Jolley f1af777368 [2.3] Fix typo in validate_maximum_amount
Closes #8207
2015-05-26 17:40:07 +01:00
Nikki DelRosso 940c2369b0 Added method to check if cart is empty 2015-05-14 14:18:53 -07:00
Mike Jolley af6998fe4d [2.3] Correct coupon % calc. Added inline note to prevent regression.
Closes #8074
2015-05-05 14:33:35 +01:00
Mike Jolley c8467b143a [2.3] Use exclusive price and exclusive subtotal to work out % of discount 2015-04-17 20:42:18 +01:00
Mike Jolley 809573af41 [2.3] Coupon product id and category id checks should run for all coupon types
Closes #7936
2015-04-14 10:21:52 +01:00
Mike Jolley 2ddd07b252 FIx fixed product discount 2015-04-10 10:55:40 +01:00
Mike Jolley 68194bf0ed Round discount totals 2015-04-10 10:28:46 +01:00
Caleb Burks 3728f8b001 Enhanced Error Message
As pointed out by jnachtigall (https://github.com/woothemes/woocommerce/issues/7870), this could help customers who may have accidentally mis-typed the coupon.
2015-04-01 16:56:10 -07:00
Mike Jolley 65bc9db763 Tweak get_coupon() method
Closes #7830
2015-03-27 15:36:53 +00:00
Mike Jolley f23f1bbd27 format values to prevent issues due to floats
Closes #7822
2015-03-27 15:15:00 +00:00
Mike Jolley 457050ae9d Improved coupon percent calculation for fixed discounts.
Closes #7669
2015-03-09 17:05:09 +00:00
justinstern 809f4be1a3 get_coupon_error vs get_coupon_message 2015-03-06 11:36:34 -05:00
justinstern 9f3ae48b8f Skip coupon notices if there's no message
Handy for defining programmatic coupons to apply cart discounts, when
you wouldn't necessarily want to have a notice displayed
2015-03-06 00:36:01 -05:00
Mike Jolley b6e7e4e8ad Improve category coupon message.
Closes #7463
2015-02-18 11:17:58 +00:00
Mike Jolley 62cb430eaa Run coupon codes through html_entity_decode.
Closes #7395
2015-02-12 22:50:22 +00:00
Mike Jolley e99b3a9bf8 limit_usage_to_x_items option in coupons.
Closes #7396
2015-02-12 22:39:40 +00:00
Mike Jolley c71bff2844 Only apply product/cat coupon checks for cart to cart coupons.
Closes #7389
2015-02-12 16:15:28 +00:00
Mike Jolley a54b9c61e2 Define coupon magic props 2015-02-03 14:20:46 +00:00
Claudio Sanches d6023818fd Fixed the increase and decreate of coupons usage count 2015-01-30 12:14:34 -02:00
Mike Jolley 147258d5b8 Fix cart coupon on-sale checks for variations.
Closes #7078
2015-01-13 16:12:54 +00:00
Mike Jolley 549d7ab2c0 Removed 'apply before tax' options for coupons - this should be the default core behaviour 2014-11-24 17:24:25 +00:00
Mike Jolley 537233efcc Split is_valid() into separate methods 2014-11-14 17:18:02 +00:00
Mike Jolley f600c5ec05 Limit coupons to X needs to persist across lines during calc
Fixes #6745
2014-11-14 16:38:33 +00:00
Mike Jolley 1d3b8db754 Move formatting logic 2014-11-14 16:22:01 +00:00
Mike Jolley 668e5ffb5c Some refactoring of the coupon class to load data with less code 2014-11-14 16:22:01 +00:00
Marin Atanasov 5ad973eac2 fixing small typo 2014-11-11 22:52:45 +02:00
Mike Jolley 0bc3ad868d [2.2] Fix error message with maximum amount
Fixes #6567
2014-10-21 14:55:43 +01:00
Mike Jolley 5ff8f65d1f Merge pull request #6507 from chrisnharvey/master
Pass cart item values to is_valid_for_product method in WC_Coupon
2014-10-17 12:09:23 +01:00
Barry Kooij b353c75d43 Display excluded categories in coupon error message.
Related #6400.
2014-10-14 16:18:31 +02:00
Barry Kooij 4371c661ec Codestyle. 2014-10-14 16:11:46 +02:00
Barry Kooij 389eae28c2 Display what products are excluded from using with a coupon.
Fixes #6400.
2014-10-14 16:09:56 +02:00
Chris Harvey 4119e70b3c Setting values to an optional argument 2014-10-13 09:32:40 +01:00
Chris Harvey 00c77d1716 Accept cart item values in is_valid_for_product method and pass these to the woocommerce_coupon_is_valid_for_product filter 2014-10-10 15:45:01 +01:00
shivapoudel 342d3186db Found and fix indendation for multiline comments for class-wc-coupon.php :) 2014-09-21 00:31:22 +05:45
Mike Jolley c4ef86d44e scrutinizer patches 2014-09-08 00:37:55 +01:00
adamawesomeface 0e22412a7d maximum ammount for coupon functionality added 2014-08-08 07:38:58 -04:00
Mike Jolley 0130caec2b indentation 2014-07-30 17:07:35 +01:00
wilgert 0b032ab469 Update class-wc-coupon.php
add middle statement to ternary operator has ommitting this is only supported since PHP 5.3 and WooCommerce requires >5.2.4
2014-07-21 15:59:20 +02:00
wilgert 6ccd084e52 Update class-wc-coupon.php
If you loaded custom coupon data using the  `'woocommerce_get_shop_coupon_data'` filter. Only `$coupon->amount` was set. While the 'normal' coupons loaded from the database get both `$coupon->coupon_amount` and `$coupon->amount` set.

This change also adds `$coupon->coupon_amount` for in code generated coupons and allows functions using the `'woocommerce_get_shop_coupon_data'` filter to use either `amount` or `coupon_amount`.
2014-07-21 15:54:10 +02:00