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

source: web/include/doc/printforms/realizaciya/updcsv.php @ 339a669

Last change on this file since 339a669 was 339a669, checked in by Blacklight <blacklight@…>, 4 years ago
  • УПД в CSV
  • Экспериментальный новый редактор шапки документов
  • Property mode set to 100644
File size: 4.8 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 updCsv extends \doc\printforms\iPrintForm {
22
23    protected $buf = '';
24
25    public function __construct() {
26        parent::__construct();
27        $this->mime = "text/csv";
28    }
29
30    public function getName() {
31        return "Универсальный передаточный документ";
32    }
33
34    /// Инициализация модуля вывода данных
35    public function initForm() {
36        $this->buf = fopen('php://memory', 'r+');
37    }
38
39    protected function out($fields) {
40        fputcsv($this->buf, $fields);
41    }
42
43    /// Вывод данных
44    /// @param $to_str Если истина - вернёт буфер с данными. Иначе - вывод в файл.
45    public function outData($to_str=false) {
46        global $tmpl;
47        rewind($this->buf);
48        $csv_data = stream_get_contents($this->buf);
49        fclose($this->buf);
50
51        $fname = get_class($this);
52        $matches = null;
53        if (preg_match('@\\\\([\w]+)$@', $fname, $matches)) {
54            $fname = $matches[1];
55        }
56
57        if ($to_str) {
58            return $csv_data;
59        }
60        else {
61            $tmpl->ajax = 1;
62            header("Content-type: 'application/octet-stream'");
63            header("Content-Disposition: 'attachment'; filename=$fname.csv;");
64            echo $csv_data;
65        }
66    }
67
68    /// Сформировать данные печатной формы
69    public function make() {
70        global $db;
71
72        $doc_data = $this->doc->getDocDataA();
73        $dop_data = $this->doc->getDopDataA();
74        $firm_vars = $this->doc->getFirmVarsA();
75
76        $this->out(["Счёт - фактура N", $doc_data['altnum'], "от", date("d.m.Y", $doc_data['date'])]);
77
78        $t_text = array(
79            'N',
80            'Code',
81            'Name',
82            'TypeCode',
83            'UnitCode',
84            'UnitName',
85            'Count',
86            'Price',
87            'Sum',
88            'Excise',
89            'Tax',
90            'TaxSum',
91            'SumWTax',
92            'CountryCode',
93            'CountryName',
94            'NCD');
95        $this->out($t_text);
96
97        // тело таблицы
98        $nomenclature = $this->doc->getDocumentNomenclatureWVATandNums();
99
100        $i = 1;
101        $sumbeznaloga = $sumnaloga = $sum = $summass = 0;
102        foreach ($nomenclature as $line ) {
103            $sumbeznaloga += $line['sum_wo_vat'];
104            $sum += $line['sum'];
105            $sumnaloga += $line['vat_s'];
106            $summass += $line['mass']*$line['cnt'];
107            if($line['vat_p']>0) {
108                $p_vat_p = $line['vat_p'].'%';
109                $vat_s_p = sprintf("%01.2f", $line['vat_s']);
110            }   else {
111                $p_vat_p = $vat_s_p = 'без налога';
112            }
113            $row = array(
114                $i++,
115                $line['code'],
116                $line['name'],
117                '--',
118                $line['unit_code'],
119                $line['unit_name'],               
120                $line['cnt'],
121                sprintf("%01.2f", $line['price']),
122                sprintf("%01.2f", $line['sum_wo_vat']),
123                $line['excise'],
124                $p_vat_p,
125                $vat_s_p,
126                sprintf("%01.2f", $line['sum']),
127                $line['country_code'],
128                $line['country_name'],
129                $line['gtd']);
130            $this->out($row);
131        }
132        $this->out([]);
133
134        // Итоги
135        $sum = sprintf("%01.2f", $sum);
136        if($sumnaloga>0) {
137            $sumnaloga = sprintf("%01.2f", $sumnaloga);
138        }   else {
139            $sumnaloga = 'без налога';
140        }
141        $sumbeznaloga = sprintf("%01.2f", $sumbeznaloga);
142
143        $sums = array(
144            '',
145            '',
146            'Итого:',
147            '',
148            '',
149            '',
150            '',
151            '',
152            $sumbeznaloga,
153            'X',
154            'X',
155            $sumnaloga,
156            $sum,
157            '',
158            '',
159            '');
160        $this->out($sums);
161    }
162   
163   
164}
Note: See TracBrowser for help on using the repository browser.