| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 | 
							- <?php
 
- /**
 
-  *
 
-  * PHP Pro Bid $Id$ H2ZluzpPfZhz1mQiv795bx8ElEItbGgGVSGsjYQoYTU=
 
-  *
 
-  * @link        http://www.phpprobid.com
 
-  * @copyright   Copyright (c) 2015 Online Ventures Software & CodeCube SRL
 
-  * @license     http://www.phpprobid.com/license Commercial License
 
-  *
 
-  * @version     7.4
 
-  */
 
- /**
 
-  * accounting table row object model
 
-  */
 
- namespace Ppb\Db\Table\Row;
 
- use Ppb\Form\Element\Range,
 
-         Ppb\Service;
 
- class Accounting extends AbstractAccounting
 
- {
 
-     /**
 
-      * refund flags
 
-      */
 
-     const REFUND_ALLOWED = 'allowed';
 
-     const REFUND_REQUESTED = 'requested';
 
-     const REFUND_REFUNDED = 'refunded';
 
-     const REFUND_DECLINED = 'declined';
 
-     /**
 
-      *
 
-      * invoice details page caption
 
-      *
 
-      * @return string
 
-      */
 
-     public function caption()
 
-     {
 
-         $translate = $this->getTranslate();
 
-         return ($this->getData('amount') > 0) ? $translate->_('Debit') : $translate->_('Credit');
 
-     }
 
-     /**
 
-      *
 
-      * check if a refund can be requested for the selected accounting row
 
-      *
 
-      * refunds can be requested by the payer only,
 
-      * and only if the refund requests admin settings are met
 
-      *
 
-      * @return bool
 
-      */
 
-     public function canRequestRefund()
 
-     {
 
-         $settings = $this->getSettings();
 
-         if ($settings['enable_sale_fee_refunds']) {
 
-             $days = (time() - strtotime($this->getData('created_at'))) / (60 * 60 * 24);
 
-             $range = \Ppb\Utility::unserialize($settings['sale_fee_refunds_range']);
 
-             $from = isset($range[Range::RANGE_FROM]) ? doubleval($range[Range::RANGE_FROM]) : 0;
 
-             $to = isset($range[Range::RANGE_TO]) ? doubleval($range[Range::RANGE_TO]) : null;
 
-             $user = $this->getUser();
 
-             if (
 
-                     ($from == 0 || $from < $days) &&
 
-                     ($to == 0 || $to > $days) &&
 
-                     $this->getData('user_id') == $user['id'] &&
 
-                     $this->getData('refund_flag') == self::REFUND_ALLOWED
 
-             ) {
 
-                 return true;
 
-             }
 
-         }
 
-         return false;
 
-     }
 
-     /**
 
-      *
 
-      * check if the logged in user can process a refund request (admin)
 
-      *
 
-      * @return bool
 
-      */
 
-     public function canProcessRefund()
 
-     {
 
-         if ($this->getData('refund_flag') == self::REFUND_REQUESTED) {
 
-             $user = $this->getUser();
 
-             if ($user->getData('role') == 'Admin') {
 
-                 return true;
 
-             }
 
-         }
 
-         return false;
 
-     }
 
-     /**
 
-      *
 
-      * the payer makes a refund request
 
-      *
 
-      * @return bool
 
-      */
 
-     public function makeRefundRequest()
 
-     {
 
-         if ($this->canRequestRefund()) {
 
-             $this->save(array(
 
-                 'refund_flag' => self::REFUND_REQUESTED,
 
-             ));
 
-             // MAIL REFUND REQUEST ADMIN NOTIFICATION
 
-             return true;
 
-         }
 
-         return false;
 
-     }
 
-     /**
 
-      *
 
-      * admin accepts the refund request and credits the payer's account balance
 
-      *
 
-      * @param bool $override override settings
 
-      * @return bool
 
-      */
 
-     public function acceptRefundRequest($override = false)
 
-     {
 
-         if ($this->canProcessRefund() || $override) {
 
-             $this->save(array(
 
-                 'refund_flag' => self::REFUND_REFUNDED,
 
-             ));
 
-             // MAIL REFUND ACCEPTED USER NOTIFICATION
 
-             // add credit to payer account balance
 
-             /** @var \Ppb\Db\Table\Row\User $user */
 
-             $user = $this->findParentRow('\Ppb\Db\Table\Users');
 
-             $user->save(array(
 
-                 'balance' => ($user['balance'] - $this->getData('amount'))
 
-             ));
 
-             $name = sprintf('Sale Transaction Refund -  "%s"', $this->displayName());
 
-             $settings = $this->getSettings();
 
-             $accountingService = new Service\Accounting();
 
-             $accountingService->save(array(
 
-                 'name'     => $name,
 
-                 'amount'   => (-1) * $this->getData('amount'),
 
-                 'user_id'  => $this->getData('user_id'),
 
-                 'currency' => $settings['currency'],
 
-             ));
 
-             return true;
 
-         }
 
-         return false;
 
-     }
 
-     /**
 
-      *
 
-      * admin rejects the refund request
 
-      *
 
-      * @return bool
 
-      */
 
-     public function rejectRefundRequest()
 
-     {
 
-         if ($this->canProcessRefund()) {
 
-             $this->save(array(
 
-                 'refund_flag' => self::REFUND_DECLINED,
 
-             ));
 
-             // MAIL REFUND REJECTED USER NOTIFICATION
 
-             return true;
 
-         }
 
-         return false;
 
-     }
 
- }
 
 
  |