openbuildings / promotions
Promotions for Purchases
Installs: 166 076
Dependents: 0
Suggesters: 1
Security: 0
Stars: 2
Watchers: 7
Forks: 1
Open Issues: 2
Type:kohana-module
Requires
- php: ^7.3
- composer/installers: *
- openbuildings/jam: ^0.6
- openbuildings/jam-monetary: ^0.2
- openbuildings/purchases: ^0.12
- openbuildings/shipping: ^0.15
Requires (Dev)
- kohana/auth: ^3.3
- openbuildings/jam-auth: ^0.5
- openbuildings/kohana-test-bootstrap: ^0.2
- phpunit/phpunit: ^9
- dev-master
- 0.10.0
- 0.9.1
- 0.9.0
- 0.8.0
- 0.7.5
- 0.7.4
- 0.7.3
- 0.7.2
- 0.7.1
- 0.7.0
- 0.6.2
- 0.6.1
- 0.6.0
- 0.6.0-rc.1
- 0.5.0
- 0.5.0-rc.1
- 0.5.0-alpha.1
- 0.4.0
- 0.3.8
- 0.3.7
- 0.3.6
- 0.3.5
- 0.3.4
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.0
- dev-dependabot/composer/guzzlehttp/psr7-1.9.1
- dev-dependabot/composer/guzzlehttp/guzzle-7.5.0
- dev-upgrade-phpunit9
- dev-clippings-commission-fix
This package is auto-updated.
Last update: 2024-12-20 00:16:04 UTC
README
This module gives the ability to define promotions with a set of requirements that add themselves to purchases, based on these rules. Each promotion can have a static or dynamic/configurable amount.
Promotions can also have ontime or multiple time uses for promo_codes
Usage
Add a behavior to the purchase and brand_purchase models:
class Model_Brand_Purchase extends Kohana_Model_Brand_Purchase { public static function initialize(Jam_Meta $meta) { parent::initialize($meta); $meta ->behaviors(array( 'promotable_brand_purchase' => Jam::behavior('promotable_brand_purchase'), )); } } // ... class Model_Purchase extends Kohana_Model_Purchase { public static function initialize(Jam_Meta $meta) { parent::initialize($meta); $meta ->behaviors(array( 'promotable_purchase' => Jam::behavior('promotable_purchase'), )); } }
And you'll need to add actual promotions to the database. The promtion modle uses single table inheritence to have a different class for each promotion. Each of these has to define "applies_to" and "price_for_purchase_item" which your promotions will have to implement. There is also the Model_Promotion_Promocode
class which gives the promotion the ability to use promo codes which exhaust themselves when are used.
There are 2 availbale predefined promotions:
- Model_Promotion_Promocode_Giftcard - to use it you'll need to enter requirement - the minimum price where the promotion applies, and amount - the amount (Jam_Price) to be reducted from the purchase
- Model_Promotion_Promocode_Percent - get a static reduction of some percent (amount). Amount is a value from 0 to 1.
promo_code_text
The promotable_purchase
behavior adds a promo_code_text field to the purchase (its not in the database). When you set a promocode to this field it would try to find it, and then run "validate_purchase" of the appropriate promotion, if found. If everything checks out, the promotion associated with this promocode will be added to the purchase.
License
Copyright (c) 2012-2013, OpenBuildings Ltd. Developed by Yasen Yanev as part of clippings.com
Under BSD-3-Clause license, read LICENSE file.