1
doc.zsbor.php in web/include – MultiMag

source: web/include/doc.zsbor.php @ fc24318

Last change on this file since fc24318 was fc24318, checked in by Blacklight <blacklight@…>, 4 years ago
  • В интерфейсе прослушивания записей разговоров добавлено использование поля fname, а так же реализована поддержка нескольких типов расширений файлов записей
  • Добавлен модуль перекодирования записей телефонных разговоров. В данный момент поддерживается только opus.
  • Property mode set to 100644
File size: 7.6 KB
Line 
1<?php
2
3//      MultiMag v0.2 - Complex sales system
4//
5//      Copyright (C) 2005-2018, BlackLight, TND Team, http://tndproject.org
6//
7//      This program is free software: you can redistribute it and/or modify
8//      it under the terms of the GNU Affero General Public License as
9//      published by the Free Software Foundation, either version 3 of the
10//      License, or (at your option) any later version.
11//
12//      This program is distributed in the hope that it will be useful,
13//      but WITHOUT ANY WARRANTY; without even the implied warranty of
14//      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15//      GNU Affero General Public License for more details.
16//
17//      You should have received a copy of the GNU Affero General Public License
18//      along with this program.  If not, see <http://www.gnu.org/licenses/>.
19//
20/// Документ *Заявка на производство*
21class doc_ZSbor extends doc_Nulltype {
22
23        /// Конструктор
24        /// @param doc id документа
25        function __construct($doc = 0) {
26                global $CONFIG, $db;
27                $this->def_dop_data = array();
28                parent::__construct($doc);
29                $this->doc_type = 21;
30                $this->typename = 'zsbor';
31                $this->viewname = 'Заявка на производство';
32                $this->sklad_editor_enable = true;
33                $this->header_fields = 'sklad cena';
34                settype($this->id, 'int');
35                $this->PDFForms = array(
36                    array('name' => 'z_kompl', 'desc' => 'Заявка на комплектующие', 'method' => 'PrintKompl')
37                );
38        }
39
40    /// Формирование другого документа на основании текущего
41    function MorphTo($target_type) {
42        global $tmpl, $db;
43        $morphs = array(
44            '8' => ['acl_object' => 'doc.peremeshenie', 'viewname' => 'Перемещение',],
45        );
46        if ($target_type == '') {
47            $tmpl->ajax = 1;           
48            $base_link = "window.location='/doc.php?mode=morphto&amp;doc={$this->id}&amp;tt=";
49            foreach($morphs as $id => $line) {
50                if(\acl::testAccess($line['acl_object'], \acl::CREATE)) {
51                    $tmpl->addContent("<div onclick=\"{$base_link}{$id}'\">{$line['viewname']}</div>");
52                }
53            }
54        } else if ($target_type == '8') {
55            \acl::accessGuard($morphs[$target_type]['acl_object'], \acl::CREATE);
56            $new_doc = new doc_Peremeshenie();
57            $dd = $new_doc->createFrom($this);
58            $new_doc->setDopData('na_sklad', $this->doc_data['sklad']);
59            $res = $db->query("SELECT `doc_base_kompl`.`kompl_id`, SUM(`doc_base_kompl`.`cnt`*`doc_list_pos`.`cnt`) AS `cnt`,
60                    `doc_base_cnt`.`cnt` AS `sklad_cnt`, `doc_base`.`cost`
61                FROM `doc_list_pos`
62                INNER JOIN `doc_base_kompl` ON `doc_base_kompl`.`pos_id` = `doc_list_pos`.`tovar`
63                INNER JOIN `doc_base` ON `doc_base_kompl`.`kompl_id` = `doc_base`.`id`
64                LEFT JOIN `doc_base_cnt` ON `doc_base_cnt`.`id` = `doc_base_kompl`.`kompl_id` AND `doc_base_cnt`.`sklad` = '{$this->doc_data['sklad']}'
65                WHERE `doc_list_pos`.`doc`='{$this->id}' AND `doc_base`.`pos_type`=0
66                GROUP BY  `doc_base_kompl`.`kompl_id`
67                ORDER BY `doc_list_pos`.`id`");
68            while ($nxt = $res->fetch_assoc()) {
69                if ($nxt['cnt'] > $nxt['sklad_cnt']) {
70                    $need_cnt = $nxt['cnt'] - $nxt['sklad_cnt'];
71                } else {
72                    $need_cnt = 0;
73                }
74
75                $db->insertA('doc_list_pos', array('doc' => $dd, 'tovar' => $nxt['kompl_id'], 'cnt' => $need_cnt, 'cost' => $nxt['cost']));
76            }
77            redirect("/doc.php?mode=body&doc=$dd");
78        }
79    }
80
81    /// Заявка на комплектующие
82        /// @param to_str       Вернуть в виде строки (иначе - вывести в броузер)
83        function PrintKompl($to_str = 0) {
84                require('fpdf/fpdf_mc.php');
85                global $tmpl, $CONFIG, $db;
86               
87                if (!$to_str)   $tmpl->ajax = 1;
88
89                $pdf = new PDF_MC_Table('P');
90                $pdf->Open();
91                $pdf->SetAutoPageBreak(0, 10);
92                $pdf->AddFont('Arial', '', 'arial.php');
93                $pdf->tMargin = 5;
94                $pdf->AddPage();
95                $pdf->SetFont('Arial', '', 10);
96                $pdf->SetFillColor(255);
97
98                $dt = date("d.m.Y", $this->doc_data['date']);
99               
100                $pdf->SetFont('', '', 16);
101                $str="Заявка на комплектующие к заявке на сборку\nN {$this->doc_data['altnum']}{$this->doc_data['subtype']} ({$this->id}), от $dt";
102                $pdf->MultiCellIconv(0, 7, $str, 0, 'C');
103                $pdf->Ln();
104
105                $pdf->SetLineWidth(0.5);
106               
107                $t_width = array(10, 110, 20, 20, 20, 10);
108                $t_text = array('№', 'Наименование', 'Заявка', 'Есть', 'Нужно', 'Ед.');
109                $aligns = array('R', 'L', 'R', 'R', 'R', 'L');
110                $pdf->SetFont('', '', 12);
111                foreach($t_width as $id=>$w) {
112                        $pdf->CellIconv($w, 6, $t_text[$id], 1, 0, 'C', 0);
113                }
114
115                $pdf->Ln();
116                $pdf->SetWidths($t_width);
117                $pdf->SetAligns($aligns);
118                $pdf->SetHeight(3.8);
119                $pdf->SetLineWidth(0.2);
120                $pdf->SetFont('', '', 8);
121
122                $res = $db->query("SELECT `doc_base_kompl`.`kompl_id`, SUM(`doc_base_kompl`.`cnt`*`doc_list_pos`.`cnt`) AS `cnt`,
123                                `doc_group`.`printname` AS `group_printname`, `doc_base`.`name`, `doc_base`.`proizv` AS `vendor`, `doc_base`.`vc`,
124                                `class_unit`.`rus_name1` AS `units`, `doc_base_cnt`.`cnt` AS `sklad_cnt`
125                        FROM `doc_list_pos`
126                        LEFT JOIN `doc_base_kompl` ON `doc_base_kompl`.`pos_id` = `doc_list_pos`.`tovar`
127                        INNER JOIN `doc_base` ON `doc_base`.`id`=`doc_base_kompl`.`kompl_id`
128                        INNER JOIN `doc_group` ON `doc_group`.`id`=`doc_base`.`group`
129                        INNER JOIN `class_unit` ON `doc_base`.`unit`=`class_unit`.`id`
130                        LEFT JOIN `doc_base_cnt` ON `doc_base_cnt`.`id` = `doc_base_kompl`.`kompl_id` AND `doc_base_cnt`.`sklad` = '{$this->doc_data['sklad']}'
131                        WHERE `doc_list_pos`.`doc`='{$this->id}' AND `doc_base`.`pos_type`=0
132                        GROUP BY  `doc_base_kompl`.`kompl_id`
133                        ORDER BY `doc_list_pos`.`id`");
134                $i = 0;
135                $sum = $summass = 0;
136                while ($nxt = $res->fetch_assoc()) {
137                        $i++;
138                        $name = '';
139                        if($nxt['vc']!=='' && @$CONFIG['poseditor']['vc'])
140                                $name .= $nxt['vc'].' ';
141                        if($nxt['group_printname']!=='')
142                                $name .= $nxt['group_printname'].' ';
143                        $name .= $nxt['name'];
144                        if($nxt['vendor']!=='' && !@$CONFIG['doc']['no_print_vendor'])
145                                $name .= ' ('.$nxt['vendor'].')';
146
147                        if ($pdf->h <= ($pdf->GetY() + 40 ))
148                                $pdf->AddPage();
149                        $cnt = sprintf("%0.3f", $nxt['cnt']);
150                        $sklad_cnt = sprintf("%0.3f", $nxt['sklad_cnt']);
151                        if($nxt['cnt'] > $nxt['sklad_cnt'])
152                                $need_cnt = sprintf("%0.3f", $nxt['cnt'] - $nxt['sklad_cnt']);
153                        else    $need_cnt = '0.000';
154                       
155                        $row = array($i, $name, $cnt, $sklad_cnt, $need_cnt, $nxt['units']);
156                       
157                        $pdf->RowIconv($row);
158                }
159
160               
161
162                $res = $db->query("SELECT `worker_real_name`, `worker_phone`, `worker_email` FROM `users_worker_info` WHERE `user_id`='{$this->doc_data['user']}'");
163                if ($res->num_rows) {
164                        $worker_info = $res->fetch_assoc();
165                        $pdf->SetAutoPageBreak(0, 10);
166                        $pdf->SetY($pdf->h - 18);
167                        $pdf->Ln(1);
168                        $pdf->SetFont('', '', 10);
169                        $str = "Отв. оператор " . $worker_info['worker_real_name'];
170                        $pdf->CellIconv(0, 4, $str, 0, 1, 'R', 0);
171                        $str = "Контактный телефон: " . $worker_info['worker_phone'];
172                        $pdf->CellIconv(0, 4, $str, 0, 1, 'R', 0);
173                        $str = "Электронная почта: " . $worker_info['worker_email'];
174                        $pdf->CellIconv(0, 4, $str, 0, 1, 'R', 0);
175                } else {
176                        $pdf->SetAutoPageBreak(0, 10);
177                        $pdf->SetY($pdf->h - 12);
178                        $pdf->Ln(1);
179                        $pdf->SetFont('', '', 10);
180                        $str = "Login автора: " . $_SESSION['name'];
181                        $pdf->CellIconv(0, 4, $str, 0, 1, 'R', 0);
182                }
183
184                if ($to_str)
185                        return $pdf->Output('zayavka.pdf', 'S');
186                else
187                        $pdf->Output('zayavka.pdf', 'I');
188        }
189
190}
191
192;
193?>
Note: See TracBrowser for help on using the repository browser.