Source of file Order.php
Size: 6,532 Bytes - Last Modified: 2021-12-24T06:46:14+00:00
/var/www/docs.ssmods.com/process/src/src/Model/Order.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 | <?php namespace Dynamic\Foxy\Orders\Model; use Dynamic\Foxy\Extension\Purchasable; use SilverStripe\Forms\DateField; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\GridField\GridField; use SilverStripe\Forms\GridField\GridFieldConfig_RecordViewer; use SilverStripe\ORM\DataObject; use SilverStripe\ORM\FieldType\DBHTMLVarchar; use SilverStripe\ORM\HasManyList; use SilverStripe\Security\Member; use SilverStripe\Security\Permission; use SilverStripe\Security\PermissionProvider; /** * Class Order * @package Dynamic\Foxy\Model * * @property \SilverStripe\ORM\FieldType\DBInt StoreID * @property \SilverStripe\ORM\FieldType\DBInt OrderID * @property \SilverStripe\ORM\FieldType\DBVarchar Email * @property \SilverStripe\ORM\FieldType\DBDatetime TransactionDate * @property \SilverStripe\ORM\FieldType\DBCurrency ProductTotal * @property \SilverStripe\ORM\FieldType\DBCurrency TaxTotal * @property \SilverStripe\ORM\FieldType\DBCurrency ShippingTotal * @property \SilverStripe\ORM\FieldType\DBCurrency OrderTotal * @property \SilverStripe\ORM\FieldType\DBVarchar ReceiptURL * @property \SilverStripe\ORM\FieldType\DBVarchar OrderStatus * @property \SilverStripe\ORM\FieldType\DBText Response * * @property int MemberID * @method Member Member * * @method HasManyList Details */ class Order extends DataObject implements PermissionProvider { /** * @var array */ private static $db = [ 'StoreID' => 'Int', 'OrderID' => 'Int', 'Email' => 'Varchar(255)', 'TransactionDate' => 'DBDatetime', 'ProductTotal' => 'Currency', 'TaxTotal' => 'Currency', 'ShippingTotal' => 'Currency', 'OrderTotal' => 'Currency', 'ReceiptURL' => 'Varchar(255)', 'OrderStatus' => 'Varchar(255)', 'Response' => 'Text', 'CustomerID' => 'Int', ]; /** * @var array */ private static $has_one = [ 'Member' => Member::class, ]; /** * @var array */ private static $has_many = [ 'Details' => OrderDetail::class, ]; /** * @var string */ private static $singular_name = 'Order'; /** * @var string */ private static $plural_name = 'Orders'; /** * @var string */ private static $description = 'Orders from FoxyCart Datafeed'; /** * @var string */ private static $default_sort = 'TransactionDate DESC, ID DESC'; /** * @var array */ private static $summary_fields = [ 'OrderID', 'TransactionDate.Nice', 'Email', 'ProductTotal.Nice', 'ShippingTotal.Nice', 'TaxTotal.Nice', 'OrderTotal.Nice', 'ReceiptLink', ]; /** * @var array */ private static $searchable_fields = [ 'OrderID', 'TransactionDate' => [ 'field' => DateField::class, 'filter' => 'PartialMatchFilter', ], 'Email', 'OrderTotal', ]; /** * @var array */ private static $casting = [ 'ReceiptLink' => 'HTMLVarchar', ]; /** * @var array */ private static $indexes = [ 'OrderID' => true, // make unique ]; /** * @var string */ private static $table_name = 'FoxyOrder'; /** * @param bool $includerelations * * @return array|string */ public function fieldLabels($includerelations = true) { $labels = parent::fieldLabels(); $labels['StoreID'] = _t(__CLASS__ . '.StoreID', 'Store ID#'); $labels['OrderID'] = _t(__CLASS__ . '.OrderID', 'Order ID#'); $labels['TransactionDate'] = _t(__CLASS__ . '.TransactionDate', 'Date'); $labels['TransactionDate.NiceUS'] = _t(__CLASS__ . '.TransactionDate', 'Date'); $labels['Email'] = _t(__CLASS__ . '.Email', 'Email'); $labels['ProductTotal.Nice'] = _t(__CLASS__ . '.ProductTotal', 'Sub Total'); $labels['TaxTotal.Nice'] = _t(__CLASS__ . '.TaxTotal', 'Tax'); $labels['ShippingTotal.Nice'] = _t(__CLASS__ . '.ShippingTotal', 'Shipping'); $labels['OrderTotal'] = _t(__CLASS__ . '.OrderTotal', 'Total'); $labels['OrderTotal.Nice'] = _t(__CLASS__ . '.OrderTotal', 'Total'); $labels['ReceiptLink'] = _t(__CLASS__ . '.ReceiptLink', 'Invoice'); $labels['Details.ProductID'] = _t(__CLASS__ . '.Details.ProductID', 'Product'); return $labels; } /** * @return FieldList */ public function getCMSFields() { $this->beforeUpdateCMSFields(function (FieldList $fields) { $fields->removeByName(['Response']); }); return parent::getCMSFields(); } /** * @return mixed */ public function ReceiptLink() { return $this->getReceiptLink(); } /** * @return mixed */ public function getReceiptLink() { $obj = DBHTMLVarchar::create(); $obj->setValue( '<a href="' . $this->ReceiptURL . '" target="_blank" class="cms-panel-link action external-link">view</a>' ); return $obj; } /** * @return array */ public function providePermissions() { return [ 'MANAGE_FOXY_ORDERS' => [ 'name' => _t( __CLASS__ . '.PERMISSION_MANAGE_ORDERS_DESCRIPTION', 'Manage orders' ), 'category' => _t( Purchasable::class . '.PERMISSIONS_CATEGORY', 'Foxy' ), 'help' => _t( __CLASS__ . '.PERMISSION_MANAGE_ORDERS_HELP', 'Manage orders and view recipts' ), 'sort' => 400, ], ]; } /** * @param bool $member * * @return bool|int */ public function canView($member = null) { return Permission::checkMember($member, 'MANAGE_FOXY_ORDERS'); } /** * @param null $member * * @return bool */ public function canEdit($member = null) { return false; } /** * @param null $member * * @return bool */ public function canDelete($member = null) { return false; } /** * @param null $member * @param array $context * * @return bool */ public function canCreate($member = null, $context = []) { return false; } } |