1
invoice.php in trunk/web/include/doc/printforms/specific – MultiMag

source: trunk/web/include/doc/printforms/specific/invoice.php @ 986

Last change on this file since 986 was 986, checked in by blacklight, 8 months ago
  • Добвлен вывод печати организации в печатную форму коммерческого предложения
  • Проведён рефакторинг печатных форм документов
File size: 7.0 KB
Line 
1<?php
2//      MultiMag v0.2 - Complex sales system
3//
4//      Copyright (C) 2005-2018, BlackLight, TND Team, http://tndproject.org
5//
6//      This program is free software: you can redistribute it and/or modify
7//      it under the terms of the GNU Affero General Public License as
8//      published by the Free Software Foundation, either version 3 of the
9//      License, or (at your option) any later version.
10//
11//      This program is distributed in the hope that it will be useful,
12//      but WITHOUT ANY WARRANTY; without even the implied warranty of
13//      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14//      GNU Affero General Public License for more details.
15//
16//      You should have received a copy of the GNU Affero General Public License
17//      along with this program.  If not, see <http://www.gnu.org/licenses/>.
18//
19namespace doc\printforms\specific; 
20
21class invoice extends \doc\printforms\iPrintFormPdf {
22 
23    public function getName() {
24        return "Спецификация";
25    }
26       
27    /// Сформировать данные печатной формы
28    public function make() {
29        global $db, $CONFIG;
30        $doc_data = $this->doc->getDocDataA();
31        $firm_vars = $this->doc->getFirmVarsA();
32        $agent = new \models\agent($doc_data['agent']);
33        $nomenclature = $this->doc->getDocumentNomenclature('vat');
34       
35        $this->addPage();     
36        $this->addHeadBanner($doc_data['firm_id']);
37       
38        $dres = $db->query("SELECT `altnum`, `date` FROM `doc_list` WHERE `id`='{$doc_data['p_doc']}'");
39        $dog = $dres->fetch_assoc();
40        if ($dog) {
41            $dog['date'] = date("Y-m-d", $dog['date']);
42            $text = "К договору N{$dog['altnum']} от {$dog['date']}";
43            $this->addInfoLine($text);
44        }
45        elseif ($doc_data['contract']) {
46            $contract = new \doc_Dogovor($doc_data['contract']);
47            $contract_data = $contract->getDocDataA();
48            $text = 'К договору № ' . $contract_data['altnum'] . ' от ' . date("d.m.Y", $contract_data['date']);
49            $this->addInfoLine($text);
50        }
51       
52        $dt = date("d.m.Y", $doc_data['date']);
53        $str = 'Спецификация № ' . $doc_data['altnum'] . ' от ' . $dt;
54        $this->addHeader($str);
55        $str = "на поставку продукции";
56        $this->addHeader($str);       
57       
58        $text = "Поставщик: {$firm_vars['firm_name']}, {$firm_vars['firm_adres']}, тел: {$firm_vars['firm_telefon']}";
59        $this->addInfoLine($text);
60        $this->pdf->Ln(3);     
61       
62        $th_widths = array(7);
63        $th_texts = array('№');
64        $tbody_aligns = array('R');
65        if(\cfg::get('poseditor', 'vc')) {
66            $th_widths[] = 15;
67            $th_texts[] = 'Код';
68            $tbody_aligns[] = 'R';
69            $th_widths[] = 76;
70        } else {
71            $th_widths[] = 96;
72        }
73        $th_texts[] = 'Наименование';
74        $tbody_aligns[] = 'L';
75        $th_widths = array_merge($th_widths, array(12, 12, 24, 21, 22));
76        $th_texts = array_merge($th_texts, array('Ед.изм.', 'Кол-во', 'Цена без НДС', 'Цена с НДС', 'Сумма с НДС'));
77        $tbody_aligns = array_merge($tbody_aligns, array('C', 'R', 'R', 'R', 'R'));
78        $this->addTableHeader($th_widths, $th_texts, $tbody_aligns, 9);       
79       
80        $i = 0;
81        $sum = $cnt = $summass = $sum_vat = 0;
82        foreach($nomenclature as $line) {
83            $i++;
84            $price_wo_vat = sprintf("%01.2f р.", $line['price_wo_vat']);
85            $price = sprintf("%01.2f р.", $line['price']);
86            $sum_line = sprintf("%01.2f р.", $line['sum']);
87            $row = array($i);
88            if (@$CONFIG['poseditor']['vc']) {
89                $row[] = $line['vc'];
90            }
91            $row[] = $line['name'];
92            $row = array_merge($row, array($line['unit_name'], $line['cnt'], $price_wo_vat, $price, $sum_line));
93            $this->controlPageBreak(30);
94            $this->pdf->SetFont('', '', 8);
95            $this->pdf->RowIconv($row);
96            $sum += $line['sum'];
97            $cnt += $line['cnt'];
98            $summass += $line['mass'] * $line['cnt'];
99            $sum_vat += $line['vat_s'];
100        }
101       
102        $cost = num2str($sum);
103        $sumcost = sprintf("%01.2f", $sum);
104        $summass = sprintf("%01.3f", $summass);
105
106        $this->controlPageBreak(50);
107       
108        $delta = $this->pdf->h - ($this->pdf->GetY() + 55);
109        if ($delta > 17) {
110            $delta = 17;
111        }
112       
113        if ($doc_data['comment']) {
114            $text = str_replace("<br>", ", ", $doc_data['comment']);
115            $this->addInfoLine($text, 11);
116            $this->pdf->Ln(3);
117        }
118       
119        $this->pdf->Ln(2);
120        $allsum_p = sprintf("%01.2f", $sumcost);
121        $str = "Общая сумма спецификации N {$this->doc_data['altnum']} с учетом НДС составляет $allsum_p рублей.";
122        $this->addInfoLine($str, 11);
123        $nds_sum_p = sprintf("%01.2f", $sum_vat);
124        $str = "Сумма НДС составляет $nds_sum_p рублей.";
125        $this->addInfoLine($str, 11);
126        $this->pdf->Ln(7);
127       
128        $this->pdf->SetFont('', '', 16);
129        $str = "Покупатель";
130        $str = iconv('UTF-8', 'windows-1251', $str);
131        $this->pdf->Cell(90, 6, $str, 0, 0, 'L', 0);
132        $str = "Поставщик";
133        $str = iconv('UTF-8', 'windows-1251', $str);
134        $this->pdf->Cell(0, 6, $str, 0, 0, 'L', 0);
135
136        $this->pdf->Ln(5);
137        $this->pdf->SetFont('', '', 10);
138
139        $phone = $agent->getPhone();
140        $str = "{$agent->fullname}\n{$agent->adres}, тел. {$phone}\nИНН {$agent->inn}, КПП {$agent->kpp} ОКПО {$agent->okpo}, ОКВЭД {$agent->okved}\n".
141                "Р/С {$agent->rs}, в банке {$agent->bank}\nК/С {$agent->ks}, БИК {$agent->bik}\n__________________ / _________________ /\n\n      М.П.";
142        $str = iconv('UTF-8', 'windows-1251', $str);
143
144        $y = $this->pdf->GetY();
145
146        $this->pdf->MultiCell(90, 5, $str, 0, 'L', 0);
147        $this->pdf->SetY($y);
148        $this->pdf->SetX(100);
149
150        $res = $db->query("SELECT `name`, `bik`, `rs`, `ks` FROM `doc_kassa` WHERE `ids`='bank' AND `num`='{$doc_data['bank']}'");
151        $bank_info = $res->fetch_assoc();
152
153        $str = "{$firm_vars['firm_name']}\n{$firm_vars['firm_adres']}\nИНН/КПП {$firm_vars['firm_inn']}\nР/С {$bank_info['rs']}, в банке {$bank_info['name']}\nК/С {$bank_info['ks']}, БИК {$bank_info['bik']}\n__________________ / {$firm_vars['firm_director']} /\n\n      М.П.";
154        $str = iconv('UTF-8', 'windows-1251', $str);
155        $this->pdf->MultiCell(0, 5, $str, 0, 'L', 0);
156
157        if (\cfg::get('site', 'doc_shtamp')) {
158            $shtamp_img = str_replace('{FN}', $doc_data['firm_id'], \cfg::get('site', 'doc_shtamp'));
159            $this->pdf->Image($shtamp_img, 4, $this->pdf->GetY() + $delta, 120);
160        }
161
162        $this->addWorkerInfo($doc_data);
163
164        return;
165    }   
166}
Note: See TracBrowser for help on using the repository browser.