/** * Закрывает арбитраж. * * @param array $reserve_data данные резерва * @param array data Массив данных * * @return bool true если успешно */ public function closeArbitrage($reserve_data, $data) { if (!$this->is_allowed()) { throw new ReservesArbitrageException(ReservesArbitrageException::NOT_ALLOWED); } $ok = $this->db()->update($this->TABLE, array('price' => (int) $data['price_pay'], 'allow_fb_frl' => $data['allow_fb_frl'], 'allow_fb_emp' => $data['allow_fb_emp'], 'status' => self::STATUS_CLOSED, 'date_close' => date('Y-m-d H:i:s')), 'reserve_id = ?i AND status = ' . self::STATUS_OPEN, (int) $reserve_data['id']); if ($ok) { $reserveInstance = ReservesModelFactory::getInstance($reserve_data['type']); $reserveInstance->setReserveData($reserve_data); $payStatusDone = true; $backStatusDone = true; if ($data['price_pay'] > 0) { $payStatusDone = $reserveInstance->changePayStatus(ReservesModel::SUBSTATUS_NEW); } if ($data['price_back'] > 0) { $backStatusDone = $reserveInstance->changeBackStatus(ReservesModel::SUBSTATUS_NEW); //Ставим задачу на возврат средств в очередь if ($backStatusDone && $reserve_data['invoice_id'] > 0) { ReservesPayback::getInstance()->requestPayback($reserve_data['id'], $reserve_data['invoice_id'], $data['price_back']); } } if ($payStatusDone && $backStatusDone) { return true; } } throw new ReservesArbitrageException(ReservesArbitrageException::CLOSE_FAIL); }
function parseFile($filename) { //@todo: это не красиво :( ini_set('max_execution_time', 300); //ini_set('memory_limit', '512M'); $uri = WDCPREFIX_LOCAL . '/reserves/factura/' . $filename; $list = array(); $ids = array(); $handle = fopen($uri, 'r'); while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { if ($data[0] == 'order_id' || count($data) != 7) { continue; } //order_id;sf_num;sf_date;sf_summa;pp_num;pp_date;pp_type $res = array('id' => getOrderId($data[0]), 'sf_num' => $data[1], 'sf_date' => $data[2], 'sf_summa' => $data[3], 'pp_num' => $data[4], 'pp_date' => $data[5], 'pp_type' => $data[6]); $ids[] = $res['id']; $list[] = $res; } fclose($handle); //print_r($list); if ($list) { $reserveModel = ReservesModelFactory::getInstance(ReservesModelFactory::TYPE_TSERVICE_ORDER); $empData = $reserveModel->getEmpByReserveIds($ids); print_r($empData); /* foreach ($list as $data) { if (!isset($empData[$data['id']])) { continue; } $data['employer']['login'] = $empData[$data['id']]['login']; $data['employer']['uid'] = $empData[$data['id']]['uid']; try { $doc = new DocGenReserves($data); $doc->generateFactura(); } catch (Exception $e) { require_once($_SERVER['DOCUMENT_ROOT'] . '/classes/log.php'); $log = new log('reserves_docs/' . SERVER . '-%d%m%Y.log'); $log->trace(sprintf("Order Id = %s: %s", $data['id'], $e->getMessage())); } } */ } }
/** * Парсим реестр и генерируем счет-фактуры. * * @param type $filename */ public function parseFile($filename) { //@todo: это не красиво :( ini_set('max_execution_time', 300); //ini_set('memory_limit', '512M'); $uri = WDCPREFIX_LOCAL . $this->path . $filename; $list = array(); $ids = array(); $handle = fopen($uri, 'r'); while (($data = fgetcsv($handle, 1000, ';')) !== false) { if ($data[0] == 'order_id' || count($data) != 7) { continue; } //order_id;sf_num;sf_date;sf_summa;pp_num;pp_date;pp_type $res = array('id' => $this->getOrderId($data[0]), 'sf_num' => $data[1], 'sf_date' => $data[2], 'sf_summa' => $data[3], 'pp_num' => $data[4], 'pp_date' => $data[5], 'pp_type' => $data[6]); $ids[] = $res['id']; $list[] = $res; } fclose($handle); if ($list) { $reserveModel = ReservesModelFactory::getInstance(ReservesModelFactory::TYPE_TSERVICE_ORDER); $empData = $reserveModel->getEmpByReserveIds($ids); foreach ($list as $key => $data) { if (!isset($empData[$data['id']])) { continue; } $data['employer']['login'] = $empData[$data['id']]['login']; $data['employer']['uid'] = $empData[$data['id']]['uid']; $reserveModel->getReserve($ids[$key]); $data['employer']['reqv'] = $reserveModel->getEmpReqv(); try { $doc = new DocGenReserves($data); $doc->generateFactura(); } catch (Exception $e) { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/log.php'; $log = new log('reserves_docs/' . SERVER . '-%d%m%Y.log', 'a', '%d.%m.%Y %H:%M:%S: '); $log->writeln(sprintf('Order Id = %s: %s', $data['id'], iconv('CP1251', 'UTF-8', $e->getMessage()))); } } } }
/** * Переопределяем события после изменения статуса * резерва оплаты для заказов ТУ * * @param type $new_status */ public function afterChangeStatus($new_status) { $success = false; $time = time(); switch ($new_status) { case self::STATUS_CANCEL: //Отмена заказа заказчиком то отменяем заказ если была попытка зарезервировать if ($_SESSION['uid'] == $this->reserve_data['emp_id']) { require_once ABS_PATH . "/classes/billing.php"; $billing = new billing($this->reserve_data['emp_id']); $billing->cancelReserveByOrder('reserves', $this->reserve_data['id']); } $success = true; break; case self::STATUS_ERR: $this->getOrderHistory()->reservePriceErr(); break; case self::STATUS_RESERVE: //После успешного резервирования средств //переводим заказ в статус начала работы $src_id = @$this->reserve_data['src_id']; $success = $this->db()->update($this->TABLE_TSERVICE_ORDER, array('status' => TServiceOrderModel::STATUS_ACCEPT, 'accept_date' => date('Y-m-d H:i:s', $time)), 'id = ?i', $src_id); if ($success) { $orderModel = TServiceOrderModel::model(); $order = $orderModel->getShortCard($src_id); if ($order) { //@todo: можно передать просто $this ? $reserveInstance = ReservesModelFactory::getInstance(ReservesModelFactory::TYPE_TSERVICE_ORDER); if ($reserveInstance) { $reserveInstance->setSrcObject($orderModel); $reserveInstance->setReserveData($this->reserve_data); $order['reserve'] = $reserveInstance; } $this->getOrderHistory()->reservePriceSuccess($this->reserve_data['price']); $order['reserve_data'] = $this->reserve_data; $reservesSmail = new ReservesSmail(); $reservesSmail->attributes(array('order' => $order)); $reservesSmail->onReserveOrder(); //Генерируем документы require_once ABS_PATH . '/classes/DocGen/DocGenReserves.php'; $doc = new DocGenReserves($order); $doc->generateSpecification(); } } break; case self::STATUS_PAYED: case self::STATUS_ARBITRAGE: //@todo: генерируем документ когда резерв закрыт после всех выплат $src_id = @$this->reserve_data['src_id']; $orderModel = TServiceOrderModel::model(); $order = $orderModel->getShortCard($src_id); if ($order) { $this->getOrderHistory(); require_once ABS_PATH . '/classes/DocGen/DocGenReserves.php'; $order['reserve_data'] = $this->reserve_data; $order['reserve'] = $this; $doc = new DocGenReserves($order); $doc->generateActServiceEmp(); $doc->generateAgentReport(); } default: $success = true; } return $success; }
/** * @deprecated Не использовать. Выплата делается в очереди PGQ там же и повторяется * * Крон переодического опроса API сервиса выплат * по сделкам в статусе ожидания выплаты * * @todo: документация API рекомендует опрашивать с интервалом мах 30 минут * @todo: возможно не лучшее место для этого? * * @param type $limit - количество сделок обрабатываемых за запуск * @return int - количество успешно обработанных сделок */ public function cron($limit = 10) { return false; $reservesModel = new ReservesModel(); $reserveDataList = $reservesModel->getReservesWithStatusPayByService(ReservesModel::SUBSTATUS_INPROGRESS, $limit); $cnt = 0; if ($reserveDataList) { $log = new log('reserves_docs/' . SERVER . '-%d%m%Y.log', 'a', "%d.%m.%Y %H:%M:%S: "); foreach ($reserveDataList as $reserveData) { $reserveInstance = ReservesModelFactory::getInstance($reserveData['type']); $reserveInstance->setReserveData($reserveData); $status = $this->payout($reserveInstance, $reserveData['pay_type']); $is_done = $reserveInstance->changePayStatus($status); if ($is_done && $reserveInstance->isClosed()) { $cnt++; $orderData = array('id' => $reserveData['src_id'], 'reserve_data' => $reserveInstance->getReserveData(), 'reserve' => $reserveInstance, 'employer' => array('login' => $reserveData['emp_login'], 'email' => $reserveData['emp_email'])); try { $doc = new DocGenReserves($orderData); $doc->generateActServiceEmp(); $doc->generateAgentReport(); } catch (Exception $e) { $log->writeln(sprintf("Order Id = %s: %s", $orderData['id'], iconv('CP1251', 'UTF-8', $e->getMessage()))); } } } } return $cnt; }
/** * Читает загруженный файл и обновляет данные резерва. * * @param string $file */ public function parseFile($file) { $uri = WDCPREFIX_LOCAL . $this->path . $file; $list = array(); $handle = fopen($uri, 'r'); while (($data = fgetcsv($handle, 1000, ';')) !== false) { if ($data[0] == 'order_id' || count($data) != 5) { continue; } $dateObject = DateTime::createFromFormat('d.m.Y H:i', $data[3]); $res = array('order_id' => $this->getOrderId($data[0]), 'pay_type' => (int) $data[1], 'pay_sum' => (double) $data[2], 'pay_date' => $dateObject->getTimestamp(), 'pay_status' => (int) $data[4]); $list[$res['order_id']][$res['pay_type']] = $res['pay_status']; } fclose($handle); $employer = new employer(); foreach ($list as $oid => $operations) { $reserveModel = ReservesModelFactory::getInstance(ReservesModelFactory::TYPE_TSERVICE_ORDER); $reserveData = $reserveModel->getReserve($oid); if (!$reserveData) { continue; } foreach ($operations as $type => $status) { switch ($type) { case self::OPERATION_RESERVE: $new_status = $status == self::STATUS_OK ? $reserveModel::STATUS_RESERVE : $reserveModel::STATUS_ERR; $reserveModel->changeStatus($new_status); break; case self::OPERATION_PAY: $new_status = $status == self::STATUS_OK ? $reserveModel::SUBSTATUS_PAYED : $reserveModel::SUBSTATUS_ERR; $reserveModel->changePayStatus($new_status); break; case self::OPERATION_BACK: $new_status = $status == self::STATUS_OK ? $reserveModel::SUBSTATUS_PAYED : $reserveModel::SUBSTATUS_ERR; $reserveModel->changeBackStatus($new_status); break; } } } return $list; }
/** * Обработка входящей операции помещения услуги в "Список услуг" согласно входящей op_code. * * @param int $op_code ИД операции * @param array $code Данные операции (если есть на момент вызова функции) * * @return array */ public function prepareOperationCode($op_code, $code = null) { $code = $code == null ? current(op_codes::getCodes($op_code)) : $code; $_op_code = self::getOpCodeByDiscount($op_code); $data = array(); switch ($_op_code) { // Конкурс case 9: case 106: case 121: case 122: case 123: case 124: case 125: case 126: case 127: case 128: case 129: case 130: //Платный конкурс //Платный конкурс case 86: //Платный проект (вакансия, устаревший опкод) //Платный проект (вакансия, устаревший опкод) case 53: //Покупка вакансии //Покупка вакансии case 113: //пользователь не PRO //пользователь не PRO case 192: //пользователь PRO //Платные услуги проектов //пользователь PRO //Платные услуги проектов case 138: case 139: case 140: case 141: if (is_emp($this->user['role'])) { $data = array('ammount' => 0, 'pro_ammount' => 0, 'descr' => '', 'comment' => 'Платный проект / ', 'service' => 'projects'); if (!empty($this->_option)) { $i = 0; if ($this->_option['items']['bold'] > 0) { $data['option'] = 'bold'; $data['comment'] .= ($i++ ? ', ' : '') . 'жирный шрифт'; $data['ammount'] += $this->_option['items']['bold']; } if ($this->_option['items']['color'] > 0) { $data['option'] = 'color'; $data['comment'] .= ($i++ ? ', ' : '') . 'подсветка фоном'; $data['ammount'] += $this->_option['items']['color']; } if ($this->_option['items']['urgent'] > 0) { $data['option'] = 'urgent'; $data['comment'] .= ($i++ ? ', ' : '') . 'срочный'; $data['ammount'] += $this->_option['items']['urgent']['no_pro']; $data['pro_ammount'] += (int) $this->_option['items']['urgent']['pro']; } if ($this->_option['items']['hide'] > 0) { $data['option'] = 'hide'; $data['comment'] .= ($i++ ? ', ' : '') . 'скрытый'; $data['ammount'] += $this->_option['items']['hide']['no_pro']; $data['pro_ammount'] += (int) $this->_option['items']['hide']['pro']; } if ($this->_option['items']['logo'] > 0) { $data['option'] = 'logo'; $data['descr'] = $this->_option['logo_link']; $data['src_id'] = $this->_option['logo_id']; $data['comment'] .= ($i++ ? ', ' : '') . 'логотип'; $data['ammount'] += $this->_option['items']['logo']['no_pro']; $data['pro_ammount'] += (int) $this->_option['items']['logo']['pro']; } if ($this->_option['items']['office'] > 0) { $data['option'] = 'office'; $data['comment'] .= ($i++ ? ', ' : '') . 'в офис'; $data['ammount'] += $this->_option['items']['office']; } if ($this->_option['items']['top'] > 0) { $data['option'] = 'top'; $data['op_count'] = $this->_option['addTop']; $topDays = $this->_option['addTop']; $data['comment'] .= ($i++ ? ', ' : '') . 'закрепление наверху на ' . $topDays . ' ' . getTermination($topDays, array(0 => 'день', 1 => 'дня', 2 => 'дней')); $data['ammount'] += $this->_option['items']['top']['no_pro']; $data['pro_ammount'] += (int) $this->_option['items']['top']['pro']; } if ($this->_option['items']['contest'] > 0) { $data['option'] = 'contest'; $data['comment'] = 'Публикация конкурса'; $data['ammount'] += is_pro() ? $this->_option['items']['contest']['pro'] : $this->_option['items']['contest']['no_pro']; $data['pro_ammount'] += $this->_option['items']['contest']['pro']; } $data['parent_id'] = $this->_option['prj_id']; if ($this->_option['is_edit']) { $data['parent_table'] = 'projects'; } else { $data['parent_table'] = 'draft_projects'; } } } break; // Поднятие платных мест // Поднятие платных мест case 21: if (!is_emp($this->user['role'])) { $data = array('ammount' => round($code['sum'], 2), 'descr' => '', 'comment' => $code['op_name'], 'service' => 'first_page_up'); if (!empty($this->_option)) { $data['descr'] = $this->_option['prof_id']; $data['src_id'] = $this->_option['prof_id']; $data['ammount'] = $this->_option['sum']; if ($this->_option['prof_id'] == -1) { $data['comment'] = 'Поднятие платного места на главной'; } else { $data['comment'] = 'Поднятие платного места в каталоге'; } } } break; // Поднятие на первое место в платных местах // Поднятие на первое место в платных местах case 145: case 146: case 154: if (!is_emp($this->user['role'])) { $data = array('ammount' => $code['sum'], 'descr' => '', 'comment' => $code['op_name'], 'service' => 'first_page_top'); if (!empty($this->_option)) { $data['descr'] = $this->_option['prof_id']; $data['src_id'] = $this->_option['prof_id']; $data['comment'] = $this->_option['comment']; } } break; // Пополнение счета // Пополнение счета case 135: $data = array('ammount' => $this->_option['acc_sum'], 'descr' => '', 'comment' => 'Погашение задолженности - ' . $this->_option['acc_sum']); break; //Резервирование средств //Резервирование средств case 136: require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/reserves/ReservesModelFactory.php'; $reserve_data = @$this->_option['reserve_data']; if (!$reserve_data) { break; } $comment = ReservesModelFactory::getInstance($reserve_data['type'])->getBillComment($reserve_data['src_id']); $data = array('ammount' => $this->_option['acc_sum'], 'parent_id' => $reserve_data['id'], 'parent_table' => 'reserves', 'comment' => $comment); break; // Автоответы // Автоответы case 137: $data = array('ammount' => $this->_option['acc_sum'], 'comment' => 'Покупка автоответа', 'parent_id' => $this->_option['autoresponse_id'], 'parent_table' => 'autoresponse'); break; // Платное место в карусели // Платное место в карусели case 65: // На главной странице // На главной странице case 73: // В каталоге if (!is_emp($this->user['role'])) { $data = array('ammount' => round($code['sum'], 2), 'descr' => 'Оплачено', 'comment' => 'Оплата новых платных мест', 'service' => 'pay_place'); if (!empty($this->_option)) { $data['option'] = serialize($this->_option); //поддержка старого режима где небыло возможности //приобрести несколько размещений if (isset($this->_option['num'])) { $data['ammount'] = $data['ammount'] * $this->_option['num']; $data['op_count'] = $this->_option['num']; } } } break; // Аккаунт PROFI для фрилансера // Аккаунт PROFI для фрилансера case 164: // Аккаунт PROFI на 1 месяц $to = 'на 1 месяц'; if (!is_emp($this->user['role'])) { $data = array('ammount' => round($code['sum'] * 10, 2), 'descr' => 'Все разделы', 'comment' => "Аккаунт PROFI {$to}", 'service' => 'pro'); } break; // Аккаунт ПРО для фрилансера // Аккаунт ПРО для фрилансера case 47: // Тестовый аккаунт ПРО if ($this->IsUserWasPro()) { break; } $to = 'на 1 неделю'; case 132: // Аккаунт ПРО на 1 день $to = !$to ? 'на 1 день' : $to; case 131: // Аккаунт ПРО на 1 неделю $to = !$to ? 'на 1 неделю' : $to; case 163: //Тестовый ПРО на месяц //Тестовый ПРО на месяц case 48: // Аккаунт ПРО на 1 месяц $to = !$to ? 'на 1 месяц' : $to; case 49: // Аккаунт ПРО на 3 месяца $to = !$to ? 'на 3 месяца' : $to; case 50: // Аккаунт ПРО на 6 месяцев $to = !$to ? 'на 6 месяцев' : $to; case 51: // Аккаунт ПРО на 12 месяцев $to = !$to ? 'на 1 год' : $to; if (!is_emp($this->user['role'])) { $data = array('ammount' => round($code['sum'] * 10, 2), 'descr' => 'Все разделы', 'comment' => "Аккаунт PRO {$to}", 'service' => 'pro'); } break; // Аккаунт ПРО для работодателей // Аккаунт ПРО для работодателей case 15: // Аккаунт ПРО на 1 месяц $code['sum'] = $code['sum'] * payed::PRICE_EMP_PRO / 10; $to = 'на 1 месяц'; case 118: // Аккаунт ПРО на 3 месяца $to = !$to ? 'на 3 месяца' : $to; case 119: // Аккаунт ПРО на 6 месяцев $to = !$to ? 'на 6 месяцев' : $to; case 120: // Аккаунт ПРО на 12 месяцев $to = !$to ? 'на 1 год' : $to; if (is_emp($this->user['role'])) { $data = array('ammount' => round($code['sum'] * 10, 2), 'descr' => 'Все разделы', 'comment' => "Аккаунт PRO {$to}", 'service' => 'pro'); } break; case 45: $data = array('ammount' => round($this->_option['amount'], 2), 'parent_id' => $this->_option['masssending_id'], 'parent_table' => 'mass_sending', 'descr' => 'Рассылка по каталогу', 'comment' => 'Рассылка по каталогу', 'service' => 'massending'); break; case 117: // Оплата верификации $data = array('option' => serialize($this->_option['data']), 'src_id' => $this->_option['prev']['id'], 'ammount' => round($code['sum'], 2), 'descr' => 'Верификация через сервис FF.RU', 'comment' => 'Верификация через сервис FF.RU', 'service' => 'verify_ff'); break; case 133: $data = array('ammount' => round($code['sum'] * 10, 2), 'descr' => 'Верификация WebMoney', 'comment' => 'Верификация WebMoney', 'service' => 'verify_webmoney'); break; //Верификация банковской картой через ЯКассу //Верификация банковской картой через ЯКассу case 191: $data = array('ammount' => round($code['sum'], 2), 'descr' => 'Верификация банковской картой', 'comment' => 'Верификация банковской картой', 'option' => serialize($this->_option)); break; // Закрепление в каталоге фрилансеров // Закрепление в каталоге фрилансеров case 142: // Корневой каталог // Корневой каталог case 143: // Раздел // Раздел case 144: // Подраздел // Подраздел case 148: // Продление в корневом каталоге // Продление в корневом каталоге case 149: // Продление в разделе // Продление в разделе case 150: // Продление в подразделе if (!is_emp($this->user['role'])) { //Получаем диф.цену $sum = op_codes_price::getOpCodePrice($op_code, $this->_option['prof_id']); $code['sum'] = $sum ? $sum : $code['sum']; $data = array('ammount' => $code['sum'], 'descr' => '', 'comment' => 'Закрепление в каталоге фрилансеров', 'service' => 'frlbind'); if (!empty($this->_option)) { $data['src_id'] = $this->_option['prof_id']; $data['ammount'] = $data['ammount'] * $this->_option['weeks']; $data['op_count'] = $this->_option['weeks']; } } break; // Поднятие закрепления в каталоге фрилансеров // Поднятие закрепления в каталоге фрилансеров case 151: // Корневой каталог // Корневой каталог case 152: // Раздел // Раздел case 153: // Подраздел // Подраздел case 194: // Оплата из буфера if (!is_emp($this->user['role'])) { //Получаем диф.цену $sum = op_codes_price::getOpCodePrice($op_code, $this->_option['prof_id']); $code['sum'] = $sum ? $sum : $code['sum']; $data = array('ammount' => $code['sum'], 'descr' => '', 'comment' => 'Поднятие закрепления в каталоге фрилансеров', 'service' => 'frlbindup'); if (!empty($this->_option)) { $data['src_id'] = $this->_option['prof_id']; $data['op_count'] = 1; } } break; // Закрепление в каталоге услуг // Закрепление в каталоге услуг case 155: // Лендинг // Лендинг case 156: // Корневой каталог // Корневой каталог case 157: // Раздел // Раздел case 158: // Подраздел if (!is_emp($this->user['role'])) { //Получаем диф.цену $sum = op_codes_price::getOpCodePrice($op_code, $this->_option['prof_id']); $code['sum'] = $sum ? $sum : $code['sum']; $data = array('ammount' => $code['sum'], 'descr' => '', 'comment' => 'Закрепление в каталоге услуг', 'service' => 'tservicebind'); if (!empty($this->_option)) { $data['src_id'] = $this->_option['prof_id']; $data['ammount'] = $data['ammount'] * $this->_option['weeks']; $data['op_count'] = $this->_option['weeks']; $data['option'] = serialize(array('tservice_id' => $this->_option['tservice_id'], 'is_prolong' => $this->_option['is_prolong'])); } } break; // Поднятие закрепления в каталоге услуг // Поднятие закрепления в каталоге услуг case 159: // Лендинг // Лендинг case 160: // Корневой каталог // Корневой каталог case 161: // Раздел // Раздел case 162: // Подраздел // Подраздел case 193: // Оплата из буфера if (!is_emp($this->user['role'])) { //Получаем диф.цену $sum = op_codes_price::getOpCodePrice($op_code, $this->_option['prof_id']); $code['sum'] = $sum ? $sum : $code['sum']; $data = array('ammount' => $code['sum'], 'descr' => '', 'comment' => 'Поднятие закрепления в каталоге услуг', 'service' => 'tservicebindup'); if (!empty($this->_option)) { $data['src_id'] = $this->_option['bind_id']; $data['op_count'] = 1; } } break; } unset($this->_option); // Сбрасываем опции чтобы не путалось при покупке сразу нескольких услуг на странице //Перебиваем примечание к платежу по опкоду (любому и скидочному тоже) if ($_descr = $this->getDescrByOpCode($op_code)) { $data['descr'] = $_descr; } if ($this->promoCode) { $data['promo_code'] = $this->promoCode['id']; if (!isset($this->promoCode['is_original_price'])) { $promoCodes = new PromoCodes(); $data['ammount'] = $data['ammount'] - $promoCodes->getDiscount($this->promoCode, $data['ammount']); //@todo: для чего pro_ammount ? if (isset($data['pro_ammount']) && $data['pro_ammount'] > 0) { $data['pro_ammount'] = $data['pro_ammount'] - $promoCodes->getDiscount($this->promoCode, $data['pro_ammount']); } } } return $data; }
<?php ini_set('display_errors', 1); error_reporting(E_ALL ^ E_NOTICE); ini_set('max_execution_time', 0); ini_set('memory_limit', '512M'); if (!isset($_SERVER['DOCUMENT_ROOT']) || !strlen($_SERVER['DOCUMENT_ROOT'])) { $_SERVER['DOCUMENT_ROOT'] = rtrim(realpath(pathinfo(__FILE__, PATHINFO_DIRNAME) . '/../../'), '/'); } //require_once($_SERVER['DOCUMENT_ROOT'] . "/classes/config.php"); require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php"; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/reserves/ReservesModelFactory.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/DocGen/DocGenReserves.php'; //------------------------------------------------------------------------------ $results = array(); if (count($argv) > 1) { parse_str(implode('&', array_slice($argv, 1)), $_GET); } //------------------------------------------------------------------------------ $order_id = intval($_GET['order_id']); $reserveModel = ReservesModelFactory::getInstance(ReservesModelFactory::TYPE_TSERVICE_ORDER); $reserveData = $reserveModel->getReserve($order_id); if ($reserveData) { $results['changeStatus'] = (int) $reserveModel->changeStatus(ReservesModel::STATUS_RESERVE); } //------------------------------------------------------------------------------ array_walk($results, function (&$value, $key) { $value = sprintf('%s = %s' . PHP_EOL, $key, $value); }); print_r(implode('', $results)); exit;