Пример #1
0
 /**
  * Генерирует акт исполнитель-физ. лицо (Подряд) в PDF после выбора валюты выплаты.
  * 
  * @param array $error   вернет массив с ошибками.
  * @return CFile   загруженный документ.
  */
 function generateFrlActPdrd(&$error, $init_date = false)
 {
     require_once dirname(__FILE__) . '/fpdf/fpdf.php';
     define('FPDF_FONTPATH', dirname(__FILE__) . '/fpdf/font/');
     require_once dirname(__FILE__) . '/num_to_word.php';
     $error = NULL;
     if (!($payout = $this->getPayouts($this->sbr->frl_id))) {
         return false;
     }
     if (!($act = $this->getActSums($this->sbr->frl_id))) {
         return false;
     }
     $payout = $payout[$this->sbr->frl_id];
     if (!$payout) {
         return false;
     }
     $cnum = $this->sbr->getContractNum();
     //$this->sbr->getFrlReqvs();
     $this->sbr->getUserReqvHistoryData($this->id, 'frl', true);
     // Силой возьмем данные
     if (!$this->sbr->checkUserReqvs($this->sbr->frl_reqvs)) {
         $error['frl'] = 'Для формирования Акта об оказании услуги исполнителю<br/> необходимо заполнить реквизиты на странице "Финансы"';
     }
     $acc = new account();
     $acc->GetInfo($this->sbr->frl_id);
     $ffio = sbr_meta::getFioFromReqvs($this->sbr->frl_reqvs);
     $rq = $this->sbr->frl_reqvs[$this->sbr->frl_reqvs['form_type']];
     $act_ssum = num2strEx($act['act_sum']);
     $act_ndfl = num2strEx($act['act_lndfl']);
     $act_np = num2strEx($act['act_lnp']);
     $frl_sum = $this->getPayoutSum(sbr::FRL, exrates::BANK);
     $payout_sum = num2strEx($frl_sum);
     $payout_nds_sum = num2strEx(18 * $frl_sum / 118);
     $from_date_act = date('«d» ' . $GLOBALS['MONTHA'][date('n', strtotime($this->getFirstTime()))] . ' Y г.', strtotime($this->getFirstTime()));
     $to_date_act = $init_date ? date('«d» ' . $GLOBALS['MONTHA'][date('n', strtotime($init_date))] . ' Y г.', strtotime($init_date)) : date('«d» ' . $GLOBALS['MONTHA'][date('n')] . ' Y г.');
     // изменен по тикету #0017135
     if ($this->sbr->frl_reqvs['form_type'] == sbr::FT_PHYS) {
         if ($this->sbr->frl_reqvs['rez_type'] == sbr::RT_RU) {
             $pssinn = ", страховое свидетельство обязательного пенсионного страхования № {$rq['pss']}";
             if ($rq['inn']) {
                 $pssinn .= ", ИНН {$rq['inn']}";
             }
         }
         $rq['birthday'] = date('d.m.Y', strtotime($rq['birthday']));
         $rq['idcard_from'] = date('d.m.Y', strtotime($rq['idcard_from']));
         $frl_details = "{$ffio}, {$rq['birthday']} года рождения, зарегистрированный по адресу: {$rq['address_reg']}" . ", {$rq['idcard_name']}: № {$rq['idcard']}, выдан {$rq['idcard_from']} {$rq['idcard_by']}{$pssinn}";
         if ($act['act_lndfl'] != 0) {
             $ndfl_tax_id = $this->sbr->frl_reqvs['rez_type'] == sbr::RT_RU ? $this->sbr->getTaxByCode('TAX_NDFL') : $this->sbr->getTaxByCode('TAX_NDFL_NR');
             $ntax_per = (int) ($this->sbr->scheme['taxes'][sbr::FRL][$ndfl_tax_id]['percent'] * 100);
             $ntax_s = ", удержанный НДФЛ {$ntax_per}% – {$act_ndfl}";
             $reward2 = " К перечислению {$payout_sum}{$ntax_s}.";
         }
     } else {
         $frl_details = $ffio;
         $nds_s = ', в том числе НДС 18%';
         if ($this->sbr->frl_reqvs['rez_type'] == sbr::RT_RU) {
             $ntax_s = ", в том числе НДС 18% – {$payout_nds_sum}";
             $reward2 = " К перечислению {$payout_sum}{$ntax_s}.";
         } else {
             if ($act['act_lnds'] != 0) {
                 $act_lnds = num2strEx($act['act_lnds']);
                 $reward2 = "\r\nК  перечислению налоговым агентом в бюджет РФ – НДС 18 процентов – {$act_lnds}.\r\n\r\nК перечислению Подрядчику {$payout_sum}{$ntax_s}.";
             }
         }
     }
     if ($payout['credit_sys'] != exrates::FM) {
         $reqvs_str = "\r\n" . sbr_meta::getPayoutReqvsStr($this->sbr->frl_reqvs, $payout['credit_sys']);
         $payout_method = ', способ оплаты – ' . $GLOBALS['EXRATE_CODES'][$payout['credit_sys']][4];
     } else {
         $reqvs_str = ' –';
     }
     $reward_sum = num2strEx($frl_sum + $act['act_lndfl'] + $act['act_lnds']);
     $reward = "{$from_date_act} по {$to_date_act} составляет сумму {$reward_sum}{$nds_s}{$payout_method}.{$reward2}";
     $side_b = sbr_meta::getReqvsStr($this->sbr->frl_reqvs, $bossname);
     $pr['$adr_act'] = "129223, Москва, а/я 33";
     if ($this->sbr->frl_reqvs['rez_type'] == sbr::RT_RU) {
         $pr['$adr_act'] .= ";\r\n";
         $pr['$adr_act'] .= "190031, Санкт-Петербург, Сенная пл., д.13 / 52, а/я 427;\r\n";
         $pr['$adr_act'] .= "420032, Казань, а/я 624;\r\n";
         $pr['$adr_act'] .= "454014, Челябинск-14, а/я 2710.\r\n";
     } else {
         $pr['$adr_act'] .= ".\r\n";
     }
     $replace = array('$sbr_num' => $this->sbr->getContractNum(), '$ssnum' => $this->getOuterNum4Docs(), '$from_date_act' => $from_date_act, '$to_date_act' => $to_date_act, '$maker_info' => $frl_details, '$from_date_make' => $from_date_act, '$job_name' => "«{$this->name}»", '$reward_text' => $reward, '$bank_details' => $reqvs_str, '$make_date' => $init_date ? $init_date : date('d.m.Y'), '$side_b' => $side_b, '$bossname' => $bossname, '$adr_act' => $pr['$adr_act']);
     $pdf = sbr::xml2pdf($_SERVER['DOCUMENT_ROOT'] . '/norisk2/xml/WorkAct.xml', $replace);
     if (!($file = $this->sbr->_saveDocFile($pdf->Output(NULL, 'S')))) {
         $error['fatal'] = "Ошибка при формировании Акта об оказании услуги";
     }
     return $file;
 }
Пример #2
0
 /**
  * Формирует отчет по арбитражу за определенный период.
  *
  * @param string $sStartDate дата начала периода
  * @param string $sEndDate   дата конца периода
  */
 public function printArbitrageReport($sStartDate = null, $sEndDate = null)
 {
     global $EXRATE_CODES;
     // имя итогового файла
     $sWorkTitle = 'Arbitrage report';
     $sWorkTitle .= $sStartDate ? ' ' . $sStartDate : '';
     $sWorkTitle .= $sEndDate ? ' - ' . $sEndDate : '';
     $sWorkTitle .= '.xls';
     // выбираем все этапы которые закрыты арбитражом
     global $DB;
     $sQuery = 'SELECT ss.id, sd.num FROM sbr_stages ss 
         LEFT JOIN sbr_docs sd ON ss.sbr_id = sd.sbr_id AND sd.type = 8 
         WHERE ss.status = ' . sbr_stages::STATUS_ARBITRAGED;
     $sQuery .= $sStartDate ? " AND ss.closed_time >= '{$sStartDate}'" : '';
     $sQuery .= $sEndDate ? " AND ss.closed_time <= '{$sEndDate}'" : '';
     $aRows = $DB->rows($sQuery . ' ORDER BY ss.closed_time');
     // подключаем pear
     require_once 'Spreadsheet/Excel/Writer.php';
     // создаем документ
     $workbook = new Spreadsheet_Excel_Writer();
     $workbook->setVersion(8);
     // создаем лист
     $worksheet =& $workbook->addWorksheet('1');
     $worksheet->setInputEncoding('CP1251');
     // заголовок листа
     $worksheet->write(0, 0, 'ООО "Ваан"');
     $worksheet->write(2, 1, 'Таблица по актам арбитража');
     $m_sty = array('NumFormat' => '### ### ##0.00', 'Align' => 'right');
     $d_sty = array('NumFormat' => 'DD MMM, YYYY HH:MM:SS');
     $td_sty = array('FontFamily' => 'Calibri', 'VAlign' => 'vequal_space', 'Align' => 'center', 'Border' => 1, 'BorderColor' => 'black');
     $th_sty = array('FontFamily' => 'Arial', 'Size' => 10, 'Align' => 'center', 'Border' => 1, 'BorderColor' => 'black', 'Bold' => 1);
     $format_top =& $workbook->addFormat($th_sty);
     $format_td =& $workbook->addFormat($td_sty);
     $format_money =& $workbook->addFormat(array_merge($td_sty, $m_sty));
     $format_date =& $workbook->addFormat(array_merge($td_sty, $d_sty));
     $format_top->setTextWrap(1);
     $aHeader = array('№ п/п', 'Номер акта', 'Дата', 'Номер «Безопасной Сделки»', 'Наименование Работодателя', 'Наименование Исполнителя', 'Сумма к выплате Работодателю, руб.коп.', 'Сумма к выплате Исполнителю, руб.коп.', 'Способ выплаты');
     for ($i = 0; $i < count($aHeader); ++$i) {
         $worksheet->write(3, $i, $aHeader[$i], $format_top);
     }
     // данные
     if ($aRows) {
         $nCnt = 1;
         $aRates = exrates::GetAll();
         foreach ($aRows as $aOne) {
             $sbr = sbr_meta::getInstance(sbr_meta::ADMIN_ACCESS);
             $stage = $sbr->initFromStage($aOne['id'], false);
             $stage->getArbitrage(true);
             // № п/п
             $worksheet->write($nCnt + 3, 0, $nCnt, $format_td);
             // Номер акта
             $worksheet->write($nCnt + 3, 1, $aOne['num'], $format_td);
             // Дата
             $sDate = date('Y-m-d H:i:s', strtotime($stage->arbitrage['resolved']));
             $worksheet->write($nCnt + 3, 2, $sDate, $format_date);
             // Номер СБР
             $worksheet->write($nCnt + 3, 3, $stage->sbr->getContractNum(), $format_td);
             // Наименование Работодателя
             $stage->sbr->getEmpReqvs();
             $sEmpFio = sbr_meta::getFioFromReqvs($stage->sbr->emp_reqvs);
             if (!$sEmpFio) {
                 $emp = new employer();
                 $emp->GetUserByUID($stage->sbr->emp_id);
                 $sEmpFio = $emp->uname . ' ' . $emp->usurname . ' [' . $emp->login . ']';
             }
             $worksheet->write($nCnt + 3, 4, $sEmpFio, $format_td);
             // Наименование Исполнителя
             $stage->sbr->getFrlReqvs();
             $sFrlFio = sbr_meta::getFioFromReqvs($stage->sbr->frl_reqvs);
             if (!$sFrlFio) {
                 $frl = new freelancer();
                 $frl->GetUserByUID($stage->sbr->frl_id);
                 $sFrlFio = $frl->uname . ' ' . $frl->usurname . ' [' . $frl->login . ']';
             }
             $worksheet->write($nCnt + 3, 5, $sFrlFio, $format_td);
             // Сумма к выплате Работодателю, руб.коп.
             $nSumm = $stage->getPayoutSum(sbr::EMP, exrates::BANK);
             $worksheet->write($nCnt + 3, 6, $nSumm, $format_money);
             // Сумма к выплате Исполнителю, руб.коп.
             $nSumm = $stage->getPayoutSum(sbr::FRL, exrates::BANK);
             $worksheet->write($nCnt + 3, 7, $nSumm, $format_money);
             // Способ выплаты
             $worksheet->write($nCnt + 3, 8, $EXRATE_CODES[$stage->sbr->cost_sys][1], $format_td);
             ++$nCnt;
         }
     }
     // отправляем на скачивание
     $workbook->send($sWorkTitle);
     // закрываем документ
     $workbook->close();
 }
Пример #3
0
 /**
  * Возвращает текстовый блок банковских реквизитов
  *
  * @param  array $reqvs реквизиты
  * @param  string $bossname возвращает Генерального директора, если указан в реквизитах
  * @return string
  */
 function getReqvsStr($reqvs, &$bossname = NULL)
 {
     $rq = $reqvs[$reqvs['form_type']];
     $norf = $reqvs['rez_type'] != sbr::RT_RU;
     $r = sbr_meta::getFioFromReqvs($reqvs) . "\r\n";
     if ($reqvs['form_type'] == sbr::FT_JURI) {
         if (!$norf) {
             if ($rq['adress_jry']) {
                 $r .= "\r\nЮридический адрес: {$rq['address_jry']}";
             }
             if ($rq['address']) {
                 $r .= "\r\nПочтовый адрес: {$rq['address']}";
             }
             if ($rq['inn']) {
                 $r .= "\r\nИНН {$rq['inn']}";
             }
             if ($rq['kpp']) {
                 $r .= " / КПП {$rq['kpp']}";
             }
             $r .= "\r\n" . $this->getBankReqvsStr($reqvs);
             if ($rq['okpo']) {
                 $r .= "\r\nОКПО {$rq['okpo']}";
             }
             if ($rq['ogrn']) {
                 $r .= "\r\nОГРН {$rq['ogrn']}";
             }
             if ($rq['orved']) {
                 $r .= "\r\nОКВЭД {$rq['okved']}";
             }
         }
         if ($norf) {
             if ($rq['country'] && $rq['city']) {
                 $r .= "\r\nСтрана и город регистрации организации: {$rq['country']}, г. {$rq['city']}";
             }
             if ($rq['address_fct']) {
                 $r .= "\r\nАдрес: {$rq['address_fct']}";
             }
             if ($rq['address']) {
                 $r .= "\r\nПочтовый адрес: {$rq['address']}";
             }
             // if($rq['reg_num'] && $rq['reg_date']) $r .= "\r\nСвидетельство о регистрации № {$rq['reg_num']} от {$rq['reg_date']}";
             if ($rq['rnn']) {
                 $r .= "\r\nРегистрационный номер в налоговом органе: {$rq['rnn']}";
             }
             $r .= "\r\n" . $this->getBankReqvsStr($reqvs);
         }
         if ($rq['bossname']) {
             $bossname = "Генеральный директор: " . $rq['bossname'];
         } else {
             if (sbr_meta::getFioFromReqvs($reqvs)) {
                 $bossname = sbr_meta::getFioFromReqvs($reqvs);
             }
         }
     } else {
         if (!$norf) {
             //if($rq['inn'] && $rq['inn'] != '0000000000')
             //    $r .= "\r\nИНН {$rq['inn']}";
         }
         // #0023353
         if ($rq['idcard_name'] && $rq['idcard'] && $rq['idcard_from'] && $rq['idcard_by'] && $rq['address_reg'] && $reqvs['is_agree_view_sbr'] == 't') {
             // Если паспортные данные заполнены
             $rq['idcard_from'] = date('d.m.Y', strtotime($rq['idcard_from']));
             $r .= "\r\n{$rq['idcard_name']}: № {$rq['idcard']}, выдан {$rq['idcard_from']} {$rq['idcard_by']}" . "\r\nАдрес регистрации: {$rq['address_reg']}\r\n\r\n";
         }
     }
     return $r;
 }