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

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

Last change on this file since 986 was 986, checked in by blacklight, 8 months ago
  • Добвлен вывод печати организации в печатную форму коммерческого предложения
  • Проведён рефакторинг печатных форм документов
File size: 5.2 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 discount extends \doc\printforms\iPrintFormIDPdf {
22
23    /// Возвращает имя документа
24    public function getName() {
25        return "Детализация скидок";
26    }
27   
28    /// Добавить блок с заголовком формы
29    protected function addFormHeaderBlock() {
30        $doc_id = $this->doc->getId();
31        $doc_data = $this->doc->getDocDataA();
32        $text = "Детализация скидок к накладной N {$doc_data['altnum']}{$doc_data['subtype']} ($doc_id) от " . date("d.m.Y", $doc_data['date']);
33        $this->addHeader($text); 
34    }
35   
36    protected function addPartnerInfoBlock() {
37        $this->addOutPartnerInfoBlock();
38    }
39   
40    /// Добавить блок с таблицей номенклатуры
41    protected function addNomenclatureTableBlock() {
42        global $CONFIG;
43        $doc_data = $this->doc->getDocDataA();
44        $dop_data = $this->doc->getDopDataA();
45
46        $nomenclature = $this->doc->getDocumentNomenclature('base_price,bulkcnt');
47        $pc = \PriceCalc::getInstance();
48        $pc->setFirmId($doc_data['firm_id']);
49        $pc->setAgentId($doc_data['agent']);
50        $pc->setUserId($doc_data['user']);
51        if(isset($dop_data['ishop'])) {
52            $pc->setFromSiteFlag($dop_data['ishop']);
53        }
54       
55        $th_widths = array(8);
56        $th_texts = array('№');
57        $tbody_aligns = array('R');
58        if ($CONFIG['poseditor']['vc']) {
59            $th_widths[] = 20;
60            $th_texts[] = 'Код';
61            $tbody_aligns[] = 'R';
62            $th_widths[] = 76;
63        } else {
64            $th_widths[] = 96;
65        }
66        $th_texts[] = 'Наименование';
67        $tbody_aligns[] = 'L';
68        $th_widths = array_merge($th_widths, array(16,20,20,18,15,26,23,26));
69        $th_texts = array_merge($th_texts, array('Кол-во', 'Цена б/ск.', 'Цена со ск.', 'Ск. р.', 'Ск., %', 'Сумма б/ск.', 'Сумма ск.', 'Сумма со ск.'));
70        $tbody_aligns = array_merge($tbody_aligns, array('R','R','R','R','R','R','R','R'));
71        $this->addTableHeader($th_widths, $th_texts, $tbody_aligns);       
72       
73        $this->form_linecount = 0;
74        $this->form_sum = $this->form_summass = 0;
75        $this->form_basesum = 0;
76        foreach ($nomenclature as $line) {
77            $this->form_linecount++;
78            $row = array($this->form_linecount);
79            if ($CONFIG['poseditor']['vc']) {
80                $row[] = $line['vc'];
81            }
82            $row[] = $line['name'];
83
84            $def_price = $pc->getPosDefaultPriceValue($line['pos_id']);
85            $skid = round($def_price - $line['price'], 2);
86            $skid_p = round($skid / $def_price * 100, 2);
87            $sum_line = $line['cnt'] * $line['price'];
88            $def_sum_line = $line['cnt'] * $def_price;
89            $skid_sum_line = $line['cnt'] * $skid;
90
91            $def_price_s = sprintf("%01.2f руб.", $def_price);
92            $price_s = sprintf("%01.2f руб.", $line['price']);
93            $skid_s = sprintf("%01.2f руб.", $skid);
94            $skid_p_s = sprintf("%01.2f %%", $skid_p);
95            $sum_line_s = sprintf("%01.2f руб.", $sum_line);
96            $def_sum_line_s = sprintf("%01.2f руб.", $def_sum_line);
97            $skid_sum_line_s = sprintf("%01.2f руб.", $skid_sum_line);
98
99            $row = array_merge($row, array($line['cnt'] . ' ' . $line['unit_name'], $def_price_s, $price_s, $skid_s, $skid_p_s, $def_sum_line_s,
100                $skid_sum_line_s, $sum_line_s));
101            $this->controlPageBreak();
102            $this->pdf->SetFont('', '', 8);
103            $this->pdf->RowIconv($row);
104            $this->form_sum += $line['sum'];
105            $this->form_summass += $line['mass'] * $line['cnt'];
106            $this->form_basesum += $pc->getPosDefaultPriceValue($line['pos_id'], $line)*$line['cnt'];
107        }   
108        $pc->setOrderSum($this->form_basesum);   
109    }
110   
111    /// Сформировать данные печатной формы
112    public function make() {
113        $this->addPage('L');
114       
115        $this->addFormHeaderBlock();     
116        $this->addPartnerInfoBlock(); 
117        $this->addNomenclatureTableBlock();
118        $this->pdf->Ln();
119       
120        $this->addSummaryBlock();
121        $this->addPaymentInfoBlock();
122        $this->addDiscountInfoBlock();
123
124        return;
125    }
126}
Note: See TracBrowser for help on using the repository browser.