Example #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;
 }