1
certlist.php in trunk/web/include/doc/printforms/realizaciya – MultiMag

source: trunk/web/include/doc/printforms/realizaciya/certlist.php @ 986

Last change on this file since 986 was 986, checked in by blacklight, 8 months ago
  • Добвлен вывод печати организации в печатную форму коммерческого предложения
  • Проведён рефакторинг печатных форм документов
File size: 9.5 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\realizaciya; 
20
21class certlist extends \doc\printforms\iPrintFormPdf {
22 
23    public function getName() {
24        return "Реестр сертификатов";
25    }
26   
27    protected function outHeaderLine($name, $value, $info) {
28        $h = 3.5;
29        $this->pdf->CellIconv(45, $h, $name, 0, 0, 'L');
30        $this->pdf->CellIconv(195, $h, $value, "B", 0, 'L');
31        $this->pdf->CellIconv(0, $h, $info, 0, 1, 'C');
32       
33    }
34   
35    // Вывод элемента *должность/подпись/фио*
36    protected function makeDPFItem($name, $num, $step = 4, $microstep = 2) {
37        $p1_w = array(35, 2, 35, 2, 45, 0);
38        $this->pdf->SetFont('', '', 7);
39        $this->pdf->CellIconv(0, $step, $name, 0, 1, 'L', 0); 
40        $this->pdf->CellIconv($p1_w[0], $step, '', 'B', 0, 'C', 0);
41        $this->pdf->CellIconv($p1_w[1], $step, '', 0, 0, 'C', 0);
42        $this->pdf->CellIconv($p1_w[2], $step, '', 'B', 0, 'R', 0);
43        $this->pdf->CellIconv($p1_w[3], $step, '', 0, 0, 'L', 0);
44        $this->pdf->CellIconv($p1_w[4], $step, '', 'B', 0, 'С', 0);
45        $this->pdf->CellIconv($p1_w[5], $step, '['.$num.']', 0, 1, 'R', 0);
46       
47        $this->pdf->SetFont('', '', 5);
48        $this->pdf->CellIconv($p1_w[0], $microstep, '(должность)', 0, 0, 'C', 0);
49        $this->pdf->CellIconv($p1_w[1], $microstep, '', 0, 0, 'C', 0);
50        $this->pdf->CellIconv($p1_w[2], $microstep, '(подпись)', 0, 0, 'C', 0);
51        $this->pdf->CellIconv($p1_w[3], $microstep, '',0, 0, 'C', 0);
52        $this->pdf->CellIconv($p1_w[4], $microstep, '(ф.и.о.)', 0, 0, 'C', 0);
53        $this->pdf->CellIconv($p1_w[5], $microstep, '', 0, 1, 'C', 0);
54    }
55   
56    // Вывод простого элемента блока подписей
57    protected function makeSimpleItem($name, $value, $num, $desc, $step, $microstep) {
58        $this->pdf->SetFont('', '', 7);
59        $this->pdf->CellIconv(0, $step, $name, 0, 1, 'L', 0);
60        $this->pdf->CellIconv(120, $step, $value, 'B', 0, 'L', 0);
61        $this->pdf->CellIconv(0, $step, '['.$num.']', 0, 1, 'R', 0);
62        $this->pdf->SetFont('', '', 5);
63        $this->pdf->CellIconv(120, $microstep, $desc, 0, 1, 'C', 0);
64    }
65    // Вывод простого элемента блока подписей *дата*
66    protected function makeDateItem($name, $num, $step) {
67        $this->pdf->SetFont('', '', 7);
68        $this->pdf->CellIconv(60, $step, $name, 0, 0, 'L', 0);
69        $this->pdf->CellIconv(60, $step, '"_____" _________________________ 20____г.', 0, 0, 'C', 0);
70        $this->pdf->CellIconv(0, $step, '['.$num.']', 0, 1, 'R', 0);
71    }
72
73    /// Получить список номенклатуры
74    function getDocumentNomenclature($doc_id) {
75        global $CONFIG, $db;
76        $list = array();
77
78        $cert_num_id = $cert_dates_id = $cert_creator_id = $exp_date_id = $t_store_id = 0;
79        $res = $db->query("SELECT `id`, `codename` FROM  `doc_base_params`");
80        while($line = $res->fetch_assoc()) {
81            switch($line['param']) {
82                case 'cert_num':
83                    $cert_num_id = $line['id'];
84                    break;
85                case 'cert_expire':
86                    $cert_dates_id = $line['id'];
87                    break;
88                case 'cert_publisher':
89                    $cert_creator_id = $line['id'];
90                    break;
91                case 'expiration_period':
92                    $exp_date_id = $line['id'];
93                    break;
94                case 'storage_temperature':
95                    $t_store_id = $line['id'];
96                    break;
97            }
98        }
99       
100        if(!$cert_num_id || !$cert_dates_id || !$cert_creator_id || !$exp_date_id || !$t_store_id) {
101            throw new \Exception('Не найден один из необходимых параметров складской номенклатуры. Необходимые параметры: *cert_num - N сертификата*, *cert_expire - Срок действия*, *cert_publisher - Орган сертификации*. *expiration_period - срок годности*, *storage_temperature - Температура хранения*.');
102        }
103       
104        $res = $db->query("SELECT `doc_list_pos`.`tovar` AS `pos_id`, `doc_group`.`printname` AS `group_printname`, `doc_base`.`name`,
105            `doc_base`.`proizv` AS `vendor`,  `doc_base`.`vc`, `certnum`.`value` AS `cert_num`, `certdate`.`value` AS `cert_dates`,
106            `certcreator`.`value` AS `cert_creator`, `exp`.`value` AS `exp_date`, `tst`.`value` AS `t_store`
107        FROM `doc_list_pos`
108        INNER JOIN `doc_base` ON `doc_list_pos`.`tovar`=`doc_base`.`id`
109        LEFT JOIN `doc_group` ON `doc_group`.`id`=`doc_base`.`group`
110        LEFT JOIN `doc_base_values` AS `certnum` ON `certnum`.`id`=`doc_list_pos`.`tovar` AND `certnum`.`param_id`=$cert_num_id
111        LEFT JOIN `doc_base_values` AS `certdate` ON `certdate`.`id`=`doc_list_pos`.`tovar` AND `certdate`.`param_id`=$cert_dates_id
112        LEFT JOIN `doc_base_values` AS `certcreator` ON `certcreator`.`id`=`doc_list_pos`.`tovar` AND `certcreator`.`param_id`=$cert_creator_id
113        LEFT JOIN `doc_base_values` AS `exp` ON `exp`.`id`=`doc_list_pos`.`tovar` AND `exp`.`param_id`=$exp_date_id 
114        LEFT JOIN `doc_base_values` AS `tst` ON `tst`.`id`=`doc_list_pos`.`tovar` AND `tst`.`param_id`=$t_store_id
115        WHERE `doc_list_pos`.`doc`='{$doc_id}'
116        ORDER BY `doc_list_pos`.`id`");
117
118        while ($line = $res->fetch_assoc()) {
119            if($line['group_printname']) {
120                $line['name'] = $line['group_printname'].' '.$line['name'];
121            }
122            $line['code'] = $line['pos_id'];
123            if($line['vc']) {
124                $line['code'] .= ' / '.$line['vc'];
125            }
126            $list[] = $line;
127        }
128        return $list;
129    }
130   
131    /// Сформировать данные печатной формы
132    public function make() {
133        $doc_id = $this->doc->getId();
134        $doc_data = $this->doc->getDocDataA();
135        $firm_vars = $this->doc->getFirmVarsA();
136       
137        $this->addPage('L');   
138       
139        $this->pdf->SetFont('', '', 14);
140        $str = 'Реестр сертификатов';
141        $this->pdf->CellIconv(0, 5, $str, 0, 1, 'C');
142        $str = "к накладной N {$doc_data['altnum']} от ". date("d.m.Y", $doc_data['date']);
143        $this->pdf->CellIconv(0, 5, $str, 0, 1, 'C');
144        $this->pdf->Ln(5);
145       
146        $this->pdf->SetFont('', '', 9);
147        $str = $firm_vars['firm_name'].' представляет список сертификатов на реализуемую продукцию, оригиналы которых хранятся в офисе предприятия по адресу '.
148            $firm_vars['firm_adres'];
149        $this->pdf->MultiCellIconv(0, 4, $str, 0, 'L');
150        $this->pdf->Ln(7);
151       
152        // Таблица номенклатуры - шапка       
153
154        $this->pdf->SetLineWidth($this->line_bold_w);
155        $t_width = array(10, 75, 40, 40, 40, 70);
156        $t_text = array(
157            'N п/п',
158            'Наименование товара',
159            'N сертификата',
160            'Срок действия',
161            'Орган сертификации',
162            'Срок реализации, температура хранения');
163
164        foreach ($t_width as $i => $w) {
165            $this->pdf->CellIconv($w, 5, $t_text[$i], 1, 0, 'C');
166        }
167        $this->pdf->ln();
168        // тело таблицы
169        $this->pdf->SetFont('', '', 8);
170        $this->pdf->SetLineWidth($this->line_normal_w); 
171        $nomenclature = $this->getDocumentNomenclature($doc_id);
172       
173        $this->pdf->SetWidths($t_width);
174        $font_sizes = array(0=>7);
175        $this->pdf->SetFSizes($font_sizes);
176        $this->pdf->SetHeight(3.5);
177
178        $aligns = array('R', 'L', 'C', 'C', 'C', 'C', 'C');
179        $this->pdf->SetAligns($aligns);
180        $this->pdf->SetFillColor(255, 255, 255);
181        $i = 1;
182        $sumnaloga = $sum = 0;
183        foreach ($nomenclature as $line ) {
184            $row = array(
185                $i++,
186                $line['name'],
187                $line['cert_num'],
188                $line['cert_dates'],
189                $line['cert_creator'],
190                $line['exp_date'].', '.$line['t_store']);
191            $this->pdf->RowIconv($row);
192        }
193        // Контроль расстояния до конца листа
194        $this->controlPageBreak(81, 'L');
195        $this->pdf->SetAutoPageBreak(0);       
196        $this->pdf->ln(3);
197       
198        $this->pdf->SetFont('', '', 9);
199        $this->pdf->CellIconv(0, 4, "Выдал: ___________________________", 0, 1, 'L', 0);             
200    }
201   
202   
203}
Note: See TracBrowser for help on using the repository browser.