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

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

Last change on this file since 965 was 965, checked in by blacklight, 14 months ago
  • Продолжение разработки нового редактора документов: реализовано создание подчинённых документов
  • Рефакторинг создания подчинённых документов
File size: 7.3 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->pdf->AddPage('P');
36        $this->addTechFooter();       
37        $this->addHeadBanner($doc_data['firm_id']);
38       
39        $dres = $db->query("SELECT `altnum`, `date` FROM `doc_list` WHERE `id`='{$doc_data['p_doc']}'");
40        $dog = $dres->fetch_assoc();
41        if ($dog) {
42            $dog['date'] = date("Y-m-d", $dog['date']);
43            $text = "К договору N{$dog['altnum']} от {$dog['date']}";
44            $this->addInfoLine($text);
45        }
46        elseif ($doc_data['contract']) {
47            $contract = new \doc_Dogovor($doc_data['contract']);
48            $contract_data = $contract->getDocDataA();
49            $text = 'К договору № ' . $contract_data['altnum'] . ' от ' . date("d.m.Y", $contract_data['date']);
50            $this->addInfoLine($text);
51        }
52       
53        $dt = date("d.m.Y", $doc_data['date']);
54        $str = 'Спецификация № ' . $doc_data['altnum'] . ' от ' . $dt;
55        $this->addHeader($str);
56        $str = "на поставку продукции";
57        $this->addHeader($str);       
58       
59        $text = "Поставщик: {$firm_vars['firm_name']}, {$firm_vars['firm_adres']}, тел: {$firm_vars['firm_telefon']}";
60        $this->addInfoLine($text);
61        $this->pdf->Ln(3);     
62       
63        $th_widths = array(7);
64        $th_texts = array('№');
65        $tbody_aligns = array('R');
66        if(\cfg::get('poseditor', 'vc')) {
67            $th_widths[] = 15;
68            $th_texts[] = 'Код';
69            $tbody_aligns[] = 'R';
70            $th_widths[] = 76;
71        } else {
72            $th_widths[] = 96;
73        }
74        $th_texts[] = 'Наименование';
75        $tbody_aligns[] = 'L';
76        $th_widths = array_merge($th_widths, array(12, 12, 24, 21, 22));
77        $th_texts = array_merge($th_texts, array('Ед.изм.', 'Кол-во', 'Цена без НДС', 'Цена с НДС', 'Сумма с НДС'));
78        $tbody_aligns = array_merge($tbody_aligns, array('C', 'R', 'R', 'R', 'R'));
79        $this->addTableHeader($th_widths, $th_texts, $tbody_aligns, 9);       
80       
81        $i = 0;
82        $sum = $cnt = $summass = $sum_vat = 0;
83        foreach($nomenclature as $line) {
84            $i++;
85            $price_wo_vat = sprintf("%01.2f р.", $line['price_wo_vat']);
86            $price = sprintf("%01.2f р.", $line['price']);
87            $sum_line = sprintf("%01.2f р.", $line['sum']);
88            $row = array($i);
89            if (@$CONFIG['poseditor']['vc']) {
90                $row[] = $line['vc'];
91            }
92            $row[] = $line['name'];
93            $row = array_merge($row, array($line['unit_name'], $line['cnt'], $price_wo_vat, $price, $sum_line));
94            if ($this->pdf->h <= ($this->pdf->GetY() + 40 )) {
95                $this->pdf->AddPage();
96                $this->addTechFooter();
97            }
98            $this->pdf->SetFont('', '', 8);
99            $this->pdf->RowIconv($row);
100            $sum += $line['sum'];
101            $cnt += $line['cnt'];
102            $summass += $line['mass'] * $line['cnt'];
103            $sum_vat += $line['vat_s'];
104        }
105       
106        $cost = num2str($sum);
107        $sumcost = sprintf("%01.2f", $sum);
108        $summass = sprintf("%01.3f", $summass);
109
110        if ($this->pdf->h <= ($this->pdf->GetY() + 60)) {
111            $this->pdf->AddPage();
112            $this->addTechFooter();
113        }
114       
115        $delta = $this->pdf->h - ($this->pdf->GetY() + 55);
116        if ($delta > 17) {
117            $delta = 17;
118        }
119       
120        if ($doc_data['comment']) {
121            $text = str_replace("<br>", ", ", $doc_data['comment']);
122            $this->addInfoLine($text, 11);
123            $this->pdf->Ln(3);
124        }
125       
126        $this->pdf->Ln(2);
127        $allsum_p = sprintf("%01.2f", $sumcost);
128        $str = "Общая сумма спецификации N {$this->doc_data['altnum']} с учетом НДС составляет $allsum_p рублей.";
129        $this->addInfoLine($str, 11);
130        $nds_sum_p = sprintf("%01.2f", $sum_vat);
131        $str = "Сумма НДС составляет $nds_sum_p рублей.";
132        $this->addInfoLine($str, 11);
133        $this->pdf->Ln(7);
134       
135        $this->pdf->SetFont('', '', 16);
136        $str = "Покупатель";
137        $str = iconv('UTF-8', 'windows-1251', $str);
138        $this->pdf->Cell(90, 6, $str, 0, 0, 'L', 0);
139        $str = "Поставщик";
140        $str = iconv('UTF-8', 'windows-1251', $str);
141        $this->pdf->Cell(0, 6, $str, 0, 0, 'L', 0);
142
143        $this->pdf->Ln(5);
144        $this->pdf->SetFont('', '', 10);
145
146        $phone = $agent->getPhone();
147        $str = "{$agent->fullname}\n{$agent->adres}, тел. {$phone}\nИНН {$agent->inn}, КПП {$agent->kpp} ОКПО {$agent->okpo}, ОКВЭД {$agent->okved}\n".
148                "Р/С {$agent->rs}, в банке {$agent->bank}\nК/С {$agent->ks}, БИК {$agent->bik}\n__________________ / _________________ /\n\n      М.П.";
149        $str = iconv('UTF-8', 'windows-1251', $str);
150
151        $y = $this->pdf->GetY();
152
153        $this->pdf->MultiCell(90, 5, $str, 0, 'L', 0);
154        $this->pdf->SetY($y);
155        $this->pdf->SetX(100);
156
157        $res = $db->query("SELECT `name`, `bik`, `rs`, `ks` FROM `doc_kassa` WHERE `ids`='bank' AND `num`='{$doc_data['bank']}'");
158        $bank_info = $res->fetch_assoc();
159
160        $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      М.П.";
161        $str = iconv('UTF-8', 'windows-1251', $str);
162        $this->pdf->MultiCell(0, 5, $str, 0, 'L', 0);
163
164        if (\cfg::get('site', 'doc_shtamp')) {
165            $shtamp_img = str_replace('{FN}', $doc_data['firm_id'], \cfg::get('site', 'doc_shtamp'));
166            $this->pdf->Image($shtamp_img, 4, $this->pdf->GetY() + $delta, 120);
167        }
168
169        $this->addWorkerInfo($doc_data);
170
171        return;
172    }   
173}
Note: See TracBrowser for help on using the repository browser.