Source of file api.deferredsale.php
Size: 5,187 Bytes - Last Modified: 2024-04-27T15:26:05+03:00
/tmp/current_snapshot/api/libs/api.deferredsale.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 | <?php /** * Deferred sales basic implementation */ class DeferredSale { /** * Minimum sale term in months * * @var int */ protected $minMonth = 1; /** * Maximum sale term in months * * @var int */ protected $maxMonth = 12; /** * Contains current instance user login * * @var string */ protected $login = ''; /** * Some other predefined stuff */ const PROUTE_RUN = 'dsalerun'; const PROUTE_SUMM = 'dsalesumm'; const PROUTE_TERM = 'dsaleterm'; const PROUTE_NOTE = 'dsalenote'; const NOTE_PREFIX = 'DEFSALE:'; public function __construct($userLogin) { $this->setLogin($userLogin); } /** * Sets current instance user login * * @param string $userLogin * * @return void */ protected function setLogin($userLogin) { $this->login = $userLogin; } /** * Returns months term array for term selector * * @return array */ protected function getTermsArr() { $result = array(); for ($i = $this->minMonth; $i <= $this->maxMonth; $i++) { $result[$i] = $i; } return($result); } /** * Returns deferred sale form * * @return string */ public function renderForm() { $result = ''; // // m // / \ // . \ // ( O \ This pretty mushroom is for you // / _ O\ When it's spreading in the clouds // / (_) . // . O \ // (__O__________) // \((((())))))/ // / X // | / //_m.n.(___)nmm._.,n._ // $inputs = wf_HiddenInput(self::PROUTE_RUN, 'true'); $inputs .= wf_TextInput(self::PROUTE_SUMM, __('Withdraw from user account'), '', true, 5, 'finance'); $inputs .= wf_Selector(self::PROUTE_TERM, $this->getTermsArr(), __('for so many months'), '', true); $inputs .= wf_TextInput(self::PROUTE_NOTE, __('Notes'), '', true, 30); $inputs .= wf_delimiter(0); $inputs .= wf_Submit(__('Charge')); $form = wf_Form('', 'POST', $inputs, 'glamour'); $result .= ' ' . wf_modalAuto(wf_img_sized('skins/letter-r16.png', __('Deferred sale'), '10'), __('Deferred sale'), $form); return($result); } /** * Catches sale request and performs sale * * @return void/string on error */ public function catchRequest() { $result = ''; if (ubRouting::checkPost(array(self::PROUTE_RUN, self::PROUTE_SUMM, self::PROUTE_TERM))) { $chargeSumm = ubRouting::post(self::PROUTE_SUMM, 'mres'); $chargeTerm = ubRouting::post(self::PROUTE_TERM, 'int'); $chargeNoteRaw = ubRouting::post(self::PROUTE_NOTE, 'mres'); if (zb_checkMoney($chargeSumm)) { if ($chargeTerm) { $dealWithIt = new DealWithIt(); $chargeSumm = abs($chargeSumm); //always positive $chargeFee = $chargeSumm / $chargeTerm; //calculating monthly fee $chargeFee = round($chargeFee, 2); //rounded to cents $chargeFee = '-' . $chargeFee; //yes, its fee for ($monthCount = 1; $monthCount <= $chargeTerm; $monthCount++) { $chargeNote = self::NOTE_PREFIX . $chargeNoteRaw . ' #' . $monthCount; //calculating each next month start date $targetChargeDate = date('Y-m-d', mktime(0, 0, 0, date('m') + $monthCount, 1, date('Y'))); //planning tasks $dealWithIt->createTask($targetChargeDate, $this->login, 'corrcash', $chargeFee, $chargeNote); } log_register('DEFSALE (' . $this->login . ') SCHEDULED `' . $chargeSumm . '` FOR `' . $chargeTerm . '` MONTHS'); //preventing charge duplicates if (ubRouting::checkGet('module')) { $currentModule = ubRouting::get('module'); $redirectUrl = ''; if ($currentModule == 'userprofile') { $redirectUrl = '?module=userprofile&username=' . $this->login; } if ($currentModule == 'addcash') { $redirectUrl = '?module=addcash&username=' . $this->login . '#cashfield'; } if (!empty($redirectUrl)) { //must be an header redirect to avoid fails with URLs that contains #anchor ubRouting::nav($redirectUrl, true); } } } } else { $result .= wf_modalOpened(__('Error'), __('Wrong format of a sum of money to pay'), '400', '200'); log_register('DEFSALE (' . $this->login . ') WRONG SUMM `' . $chargeSumm . '`'); } } return($result); } } |