Source of file SpecificPrice.php
Size: 3,027 Bytes - Last Modified: 2021-12-24T06:35:13+00:00
/var/www/docs.ssmods.com/process/src/src/Model/SpecificPrice.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | <?php namespace SilverShop\Discounts\Model; use SilverStripe\ORM\DataObject; use SilverShop\Page\Product; use SilverShop\Model\Variation\Variation; use SilverStripe\Security\Group; use SilverStripe\Security\Permission; use SilverStripe\ORM\DataList; /** * Represents a price change applied to a Product or ProductVariation, for a * period of time or for a specific group. * * @property float Price * @property float DiscountPercent * @property string StartDate * @property string EndDate * @property int ProductID * @property int ProductVariationID * @property int GroupID * @method Product Product() * @method Variation ProductVariation() * @method Group Group() */ class SpecificPrice extends DataObject { private static $db = [ 'Price' => 'Currency', 'DiscountPercent' => 'Percentage', 'StartDate' => 'Date', 'EndDate' => 'Date' ]; private static $has_one = [ 'Product' => Product::class, 'ProductVariation' => Variation::class, 'Group' => Group::class ]; private static $summary_fields = [ 'Price' => 'Price', 'StartDate' => 'Start', 'EndDate' => 'End', 'Group.Code' => 'Group' ]; private static $default_sort = '"Price" ASC'; private static $table_name = 'SilverShop_SpecificPrice'; public function canView($member = null) { return parent::canView($member) || Permission::checkMember($member, 'MANAGE_DISCOUNTS'); } public function canEdit($member = null) { return parent::canEdit($member) || Permission::checkMember($member, 'MANAGE_DISCOUNTS'); } public function canCreate($member = null, $context = []) { return parent::canCreate($member, $context) || Permission::checkMember($member, 'MANAGE_DISCOUNTS'); } public function canDelete($member = null) { return parent::canDelete($member) || Permission::checkMember($member, 'MANAGE_DISCOUNTS'); } public static function filter(DataList $list, $member = null) { $now = date('Y-m-d H:i:s'); $nowminusone = date('Y-m-d H:i:s', strtotime('-1 day')); $groupids = [0]; if ($member) { $groupids = array_merge($member->Groups()->map('ID', 'ID')->toArray(), $groupids); } $list = $list->where( "(\"SilverShop_SpecificPrice\".\"StartDate\" IS NULL) OR (\"SilverShop_SpecificPrice\".\"StartDate\" < '$now')" ) ->where( "(\"SilverShop_SpecificPrice\".\"EndDate\" IS NULL) OR (\"SilverShop_SpecificPrice\".\"EndDate\" > '$nowminusone')" ) ->filter('GroupID', $groupids); return $list; } public function getCMSFields() { $fields = parent::getCMSFields(); $fields->removeByName('ProductID'); $fields->removeByName('ProductVariationID'); return $fields; } } |