Пример #1
0
 /**
  * @param array $opts - массив опций для генерации отчета:
  * $opts = array (
  *   "filename" => Имя файла для генерации (default: file.rtf)
  *   "tpl" => Обработчик данных отчета
  *   "time" => Опция позволяет добавить дату и время генерации в название файла (default: false)
  * )
  *
  * @param array  $data - массив данных, по которым получаем отчет
  * @param string $optfile - имя файла настроек для генератора RTF (default: rtf_config.inc)
  * @return bool - выводит false в случае неудачи
  */
 public static function generate($opts, $data, $optfile = 'rtf_config.inc')
 {
     $result = false;
     $opts = (array) $opts;
     $data = (array) $data;
     $opts = array("filename" => array_key_exists("filename", $opts) ? $opts["filename"] : "file.rtf", "tpl" => array_key_exists("tpl", $opts) ? $opts["tpl"] : "", "time" => array_key_exists("time", $opts) ? $opts["time"] : false);
     $finfo = pathinfo($opts["filename"]);
     $name = $finfo["filename"];
     if ($opts["time"]) {
         $cur_date = toZendDate('now');
         $name .= "_" . $cur_date->get(getTimeFormat('datetimef'));
     }
     $opts["filename"] = $name . "." . $finfo["extension"];
     $tpl = ucfirst(strtolower($opts["tpl"]));
     $postfix = isEtpGazprom() ? 'Gaz' : 'Etp';
     $class = 'Model_Docs_' . $postfix . "_" . $tpl;
     try {
         if (class_exists($class)) {
             $template = new $class($data);
             $template->prepare();
             self::renderTpl($opts["filename"], $template, $optfile);
         }
         return $result;
     } catch (ResponseException $e) {
         return array('success' => false, 'message' => $e->getMessage());
     }
 }
Пример #2
0
 protected function prepareTransactions($transactions, Zend_Date $start_from, Zend_Date $start_till)
 {
     $start_till = clone $start_till;
     $start_till->addDay(1);
     $prepared = array();
     $total_debet = 0;
     $total_credit = 0;
     $deposit_from_correct = 0;
     $deposit_till_correct = 0;
     foreach ($transactions as $tr) {
         $date = toZendDate($tr['date']);
         if (in_array($date->compare($start_from), array(0, 1)) && in_array($date->compare($start_till), array(-1, 0))) {
             $doc = "";
             $debet = 0;
             $credit = 0;
             $colored = false;
             switch ($tr['operation_type']) {
                 case 'money_deposit':
                     if ($tr['fee_revert']) {
                         $doc = "Возврат платы за участие " . $tr['act_number'];
                         $colored = true;
                     } else {
                         $doc = "Оплата п\\п" . $tr['number'];
                     }
                     $credit = (double) $tr['sum'];
                     $total_credit += $credit;
                     break;
                 case 'service_fee':
                     $doc = "Списание " . $tr['act_number'];
                     $debet = (double) $tr['sum'];
                     $total_debet += $debet;
                     break;
                 case 'money_back':
                     $doc = "Возврат на р\\с" . $tr['bank_account'];
                     $debet = (double) $tr['sum'];
                     $total_debet += $debet;
                     break;
             }
             $data = array('date' => $date, 'doc' => $doc, 'debet' => $debet, 'credit' => $credit, 'colored' => $colored);
             $prepared[] = $data;
         } else {
             if ($date->compare($start_from) == -1) {
                 $deposit_from_correct += (double) $tr['sum'];
             }
             if ($date->compare($start_till) == 1) {
                 $deposit_till_correct += (double) $tr['sum'];
             }
         }
         //      Теперь отредактируем интервалы из-за транзакций пополнения, которые попали из других интервалов
         $tr_date = toZendDate($tr['tr_date']);
         if ($tr_date->compare($start_from) == -1) {
             //        Уменьшение  нижней границы
             $deposit_from_correct -= (double) $tr['sum'];
         }
         if ($tr_date->compare($start_till) == 1) {
             //      Увеличение верхней границы
             $deposit_till_correct -= (double) $tr['sum'];
         }
     }
     return array('transactions' => $prepared, 'total_debet' => $total_debet, 'total_credit' => $total_credit, 'deposit_from_correct' => $deposit_from_correct, 'deposit_till_correct' => $deposit_till_correct);
 }