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

source: web/include/doc.zsbor.php @ 1c9737e

Last change on this file since 1c9737e was 1c9737e, checked in by BlackLight <blacklight@…>, 2 years ago
  • Добавлена поддержка импорта платёжных поручений из формата банк-клиента 1.03
  • Экспорт CSV вынесен во внешние печатные формы
  • Заявка на комплектующие вынесена во внешние печатные формы
  • Рефакторинг: вынес получение списка модулей в ядро
  • Property mode set to 100644
File size: 4.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                $this->def_dop_data = array();
27                parent::__construct($doc);
28                $this->doc_type = 21;
29                $this->typename = 'zsbor';
30                $this->viewname = 'Заявка на производство';
31                $this->sklad_editor_enable = true;
32                $this->header_fields = 'sklad cena';
33                settype($this->id, 'int');
34        }
35
36    /// Формирование другого документа на основании текущего
37    function MorphTo($target_type) {
38        global $tmpl, $db;
39        $morphs = array(
40            '8' => ['acl_object' => 'doc.peremeshenie', 'viewname' => 'Перемещение',],
41        );
42        if ($target_type == '') {
43            $tmpl->ajax = 1;           
44            $base_link = "window.location='/doc.php?mode=morphto&amp;doc={$this->id}&amp;tt=";
45            foreach($morphs as $id => $line) {
46                if(\acl::testAccess($line['acl_object'], \acl::CREATE)) {
47                    $tmpl->addContent("<div onclick=\"{$base_link}{$id}\">{$line['viewname']}</div>");
48                }
49            }
50        } else if ($target_type == '8') {
51            \acl::accessGuard($morphs[$target_type]['acl_object'], \acl::CREATE);
52            $new_doc = new doc_Peremeshenie();
53            $dd = $new_doc->createFrom($this);
54            $new_doc->setDopData('na_sklad', $this->doc_data['sklad']);
55            $res = $db->query("SELECT `doc_base_kompl`.`kompl_id`, SUM(`doc_base_kompl`.`cnt`*`doc_list_pos`.`cnt`) AS `cnt`,
56                    `doc_base_cnt`.`cnt` AS `sklad_cnt`, `doc_base`.`cost`
57                FROM `doc_list_pos`
58                INNER JOIN `doc_base_kompl` ON `doc_base_kompl`.`pos_id` = `doc_list_pos`.`tovar`
59                INNER JOIN `doc_base` ON `doc_base_kompl`.`kompl_id` = `doc_base`.`id`
60                LEFT JOIN `doc_base_cnt` ON `doc_base_cnt`.`id` = `doc_base_kompl`.`kompl_id` AND `doc_base_cnt`.`sklad` = '{$this->doc_data['sklad']}'
61                WHERE `doc_list_pos`.`doc`='{$this->id}' AND `doc_base`.`pos_type`=0
62                GROUP BY  `doc_base_kompl`.`kompl_id`
63                ORDER BY `doc_list_pos`.`id`");
64            while ($nxt = $res->fetch_assoc()) {
65                if ($nxt['cnt'] > $nxt['sklad_cnt']) {
66                    $need_cnt = $nxt['cnt'] - $nxt['sklad_cnt'];
67                } else {
68                    $need_cnt = 0;
69                }
70
71                $db->insertA('doc_list_pos', array('doc' => $dd, 'tovar' => $nxt['kompl_id'], 'cnt' => $need_cnt, 'cost' => $nxt['cost']));
72            }
73            redirect("/doc.php?mode=body&doc=$dd");
74        }
75    }
76
77    function getDocumentNomenclatureForMakeOrder() {
78            global $db;
79        $res = $db->query("SELECT `doc_base_kompl`.`kompl_id`, SUM(`doc_base_kompl`.`cnt`*`doc_list_pos`.`cnt`) AS `cnt`,
80                                `doc_group`.`printname` AS `group_printname`, `doc_base`.`name`, `doc_base`.`proizv` AS `vendor`, `doc_base`.`vc`,
81                                `class_unit`.`rus_name1` AS `units`, `doc_base_cnt`.`cnt` AS `sklad_cnt`
82                        FROM `doc_list_pos`
83                        LEFT JOIN `doc_base_kompl` ON `doc_base_kompl`.`pos_id` = `doc_list_pos`.`tovar`
84                        INNER JOIN `doc_base` ON `doc_base`.`id`=`doc_base_kompl`.`kompl_id`
85                        INNER JOIN `doc_group` ON `doc_group`.`id`=`doc_base`.`group`
86                        INNER JOIN `class_unit` ON `doc_base`.`unit`=`class_unit`.`id`
87                        LEFT JOIN `doc_base_cnt` ON `doc_base_cnt`.`id` = `doc_base_kompl`.`kompl_id` AND `doc_base_cnt`.`sklad` = '{$this->doc_data['sklad']}'
88                        WHERE `doc_list_pos`.`doc`='{$this->id}' AND `doc_base`.`pos_type`=0
89                        GROUP BY  `doc_base_kompl`.`kompl_id`
90                        ORDER BY `doc_list_pos`.`id`");
91        $list = [];
92        while ($line = $res->fetch_assoc()) {
93            $list[] = $line;
94        }
95        $res->free();
96        return $line;
97    }
98
99}
Note: See TracBrowser for help on using the repository browser.