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

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

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