1
Changeset 986 – MultiMag

Changeset 986


Ignore:
Timestamp:
Sep 16, 2018, 12:26:03 AM (11 days ago)
Author:
blacklight
Message:
  • Добвлен вывод печати организации в печатную форму коммерческого предложения
  • Проведён рефакторинг печатных форм документов
Location:
trunk
Files:
35 edited

Legend:

Unmodified
Added
Removed
  • trunk/common/cri/atol/atol.php

    r984 r986  
    2626    var $recv;
    2727   
    28     protected $atolbuffer;
     28    protected $atolBuffer;
    2929    protected $password = [0, 0];   
    3030    protected $cur_tld = 0;
     
    3737    // Flags
    3838    const F_NOFLAGS = 0x00;
    39     const F_NEEDRESULT = 0x01;
    40     const F_IGNOREERROR = 0x02;
    41     const F_WAITASYNCDATA = 0x04;
     39    const F_NEED_RESULT = 0x01;
     40    const F_IGNORE_ERROR = 0x02;
     41    const F_WAIT_ASYNC_DATA = 0x04;
    4242   
    4343    // Check types
     
    5050
    5151    public function __construct() {
    52         $this->atolbuffer = new AtolBuffer([$this, 'asyncReceiveData'], [$this, 'asyncReceiveError']);
     52        $this->atolBuffer = new AtolBuffer([$this, 'asyncReceiveData'], [$this, 'asyncReceiveError']);
    5353    }
    5454
     
    8787
    8888    public function connect($connect_line) {       
    89         $this->atolbuffer->connect($connect_line);
    90         $this->atolbuffer->abort();
     89        $this->atolBuffer->connect($connect_line);
     90        $this->atolBuffer->abort();
    9191    }
    9292   
    9393    public function abortBuffer() {
    94         $this->atolbuffer->abort();
     94        $this->atolBuffer->abort();
    9595    }
    9696   
     
    9898        $data = [$this->password[0], $this->password[1], 0x47];
    9999        $this->cur_tld++;
    100         $this->atolbuffer->add($this->result_flags, $this->cur_tld, $data);     
     100        $this->atolBuffer->add($this->result_flags, $this->cur_tld, $data);
    101101    }
    102102   
     
    104104        $data = [$this->password[0], $this->password[1], 0xA5];
    105105        $this->cur_tld++;
    106         return $this->atolbuffer->add($this->result_flags, $this->cur_tld, $data);
     106        return $this->atolBuffer->add($this->result_flags, $this->cur_tld, $data);
    107107    }
    108108   
    109109    public function requestDeviceType() {
    110         $this->result_flags = self::F_NEEDRESULT;
     110        $this->result_flags = self::F_NEED_RESULT;
    111111        $this->cmdRequestDeviceType();       
    112         $this->atolbuffer->dispatchData(1);
     112        $this->atolBuffer->dispatchData(1);
    113113        $ret = $this->getFreeAsyncResult($this->cur_tld);
    114114        if($ret['data'][0]!=0) {
     
    135135        $data = [$this->password[0], $this->password[1], 0x3F];
    136136        $this->cur_tld++;
    137         return $this->atolbuffer->add($this->result_flags, $this->cur_tld, $data);       
     137        return $this->atolBuffer->add($this->result_flags, $this->cur_tld, $data);
    138138    }
    139139   
    140140    public function requestGetState() {
    141         $this->result_flags = self::F_NEEDRESULT;
     141        $this->result_flags = self::F_NEED_RESULT;
    142142        $this->cmdGetState();       
    143         $this->atolbuffer->dispatchData(1);
     143        $this->atolBuffer->dispatchData(1);
    144144        $ret = $this->getFreeAsyncResult($this->cur_tld);
    145145        if($ret['state']=='error') {
     
    180180        $data = [$this->password[0], $this->password[1], 0x45];
    181181        $this->cur_tld++;
    182         return $this->atolbuffer->add($this->result_flags, $this->cur_tld, $data);
     182        return $this->atolBuffer->add($this->result_flags, $this->cur_tld, $data);
    183183    }
    184184   
    185185    public function requestGetStateCode() {
    186         $this->result_flags = self::F_NEEDRESULT;
     186        $this->result_flags = self::F_NEED_RESULT;
    187187        $this->cmdGetStateCode();
    188         $this->atolbuffer->dispatchData(1);
     188        $this->atolBuffer->dispatchData(1);
    189189        $ret = $this->getFreeAsyncResult($this->cur_tld);
    190190        if($ret['state']=='error') {
     
    213213        $data = array_merge($data, $k_pass);
    214214        $this->cur_tld++;
    215         return $this->atolbuffer->add($this->result_flags, $this->cur_tld, $data);       
     215        return $this->atolBuffer->add($this->result_flags, $this->cur_tld, $data);
    216216    }
    217217   
    218218    public function requestEnterToMode($mode, $password) {
    219219        $this->cmdEnterToMode($mode, $password);
    220         $this->atolbuffer->dispatchData(3);
     220        $this->atolBuffer->dispatchData(3);
    221221        $ret = $this->getFreeAsyncResult($this->cur_tld);
    222222        if($ret['state']=='error') {
     
    233233        $data = [$this->password[0], $this->password[1], 0x48];
    234234        $this->cur_tld++;
    235         return $this->atolbuffer->add($this->result_flags, $this->cur_tld, $data);       
     235        return $this->atolBuffer->add($this->result_flags, $this->cur_tld, $data);
    236236    }
    237237   
    238238    public function requestExitFromMode() {
    239239        $this->cmdExitFromMode();
    240         $this->atolbuffer->dispatchData(3);
     240        $this->atolBuffer->dispatchData(3);
    241241        $ret = $this->getFreeAsyncResult($this->cur_tld);
    242242        if($ret['state']=='error') {
     
    259259        $data = [$this->password[0], $this->password[1], 0x9A, $flags, 0];
    260260        $this->cur_tld++;
    261         return $this->atolbuffer->add($this->result_flags, $this->cur_tld, $data);       
     261        return $this->atolBuffer->add($this->result_flags, $this->cur_tld, $data);
    262262    }
    263263   
    264264    public function requestNewSession() {
    265         $this->result_flags = self::F_NEEDRESULT;
     265        $this->result_flags = self::F_NEED_RESULT;
    266266        $this->cmdNewSession();
    267         $this->atolbuffer->dispatchData(3);
     267        $this->atolBuffer->dispatchData(3);
    268268        $ret = $this->getFreeAsyncResult($this->cur_tld);
    269269        if($ret['state']=='error') {
     
    287287        $data = [$this->password[0], $this->password[1], 0x92, $flags, $type];
    288288        $this->cur_tld++;
    289         return $this->atolbuffer->add($this->result_flags, $this->cur_tld, $data);       
     289        return $this->atolBuffer->add($this->result_flags, $this->cur_tld, $data);
    290290    }
    291291   
    292292    public function requestOpenCheck(int $type, bool $no_print = false) {
    293         $this->result_flags = self::F_NEEDRESULT;
     293        $this->result_flags = self::F_NEED_RESULT;
    294294        $this->cmdOpenCheck($type, $no_print);
    295         $this->atolbuffer->dispatchData(1);
     295        $this->atolBuffer->dispatchData(1);
    296296        $ret = $this->getFreeAsyncResult($this->cur_tld);
    297297        if($ret['state']=='error') {
     
    319319        $data = array_merge($data, $this->intToBCD(0, 17));
    320320        $this->cur_tld++;
    321         return $this->atolbuffer->add($this->result_flags, $this->cur_tld, $data);       
     321        return $this->atolBuffer->add($this->result_flags, $this->cur_tld, $data);
    322322    }
    323323   
    324324    public function requestRegisterNomenclature(string $name, float $price, float $count, int $type = 0, int $sign = 0, int $size = 0, int $tax = 0) {
    325         $this->result_flags = self::F_NEEDRESULT;
     325        $this->result_flags = self::F_NEED_RESULT;
    326326        $this->cmdRegisterNomenclature($name, $price, $count, $type, $sign, $size, $tax);
    327         $this->atolbuffer->dispatchData(1);
     327        $this->atolBuffer->dispatchData(1);
    328328        $ret = $this->getFreeAsyncResult($this->cur_tld);
    329329        if($ret['state']=='error') {
     
    345345        $data = array_merge($data, $this->intToBCD($sum*100, 5));
    346346        $this->cur_tld++;
    347         return $this->atolbuffer->add($this->result_flags, $this->cur_tld, $data);       
     347        return $this->atolBuffer->add($this->result_flags, $this->cur_tld, $data);
    348348    }
    349349   
    350350    public function requestCloseCheck(int $type, float $sum) {
    351         $this->result_flags = self::F_NEEDRESULT;
     351        $this->result_flags = self::F_NEED_RESULT;
    352352        $this->cmdCloseCheck($type, $sum);
    353         $this->atolbuffer->dispatchData(5);
     353        $this->atolBuffer->dispatchData(5);
    354354        $ret = $this->getFreeAsyncResult($this->cur_tld);
    355355        if($ret['state']=='error') {
     
    366366        $data = [$this->password[0], $this->password[1], 0x59];
    367367        $this->cur_tld++;
    368         return $this->atolbuffer->add($this->result_flags, $this->cur_tld, $data);       
     368        return $this->atolBuffer->add($this->result_flags, $this->cur_tld, $data);
    369369    }
    370370   
    371371    public function requestBreakCheck() {
    372         $this->result_flags = self::F_NEEDRESULT;
     372        $this->result_flags = self::F_NEED_RESULT;
    373373        $this->cmdBreakCheck();
    374         $this->atolbuffer->dispatchData(5);
     374        $this->atolBuffer->dispatchData(5);
    375375        $ret = $this->getFreeAsyncResult($this->cur_tld);
    376376        if($ret['state']=='error') {
     
    392392        $data = array_merge($data, $this->intToBCD($sum*100, 5));
    393393        $this->cur_tld++;
    394         return $this->atolbuffer->add($this->result_flags, $this->cur_tld, $data);       
     394        return $this->atolBuffer->add($this->result_flags, $this->cur_tld, $data);
    395395    }
    396396   
    397397    public function requestInCash(float $sum) {
    398         $this->result_flags = self::F_NEEDRESULT;
     398        $this->result_flags = self::F_NEED_RESULT;
    399399        $this->cmdInCash($sum);
    400         $this->atolbuffer->dispatchData(5);
     400        $this->atolBuffer->dispatchData(5);
    401401        $ret = $this->getFreeAsyncResult($this->cur_tld);
    402402        if($ret['state']=='error') {
     
    415415        $data = [$this->password[0], $this->password[1], 0x67, $type];
    416416        $this->cur_tld++;
    417         return $this->atolbuffer->add($this->result_flags, $this->cur_tld, $data);       
     417        return $this->atolBuffer->add($this->result_flags, $this->cur_tld, $data);
    418418    }
    419419   
    420420    public function requestXREport($type) {
    421         $this->result_flags = self::F_NEEDRESULT;
     421        $this->result_flags = self::F_NEED_RESULT;
    422422        $this->cmdXREport($type);
    423         $this->atolbuffer->dispatchData(1);
     423        $this->atolBuffer->dispatchData(1);
    424424        $ret = $this->getFreeAsyncResult($this->cur_tld);
    425425        if($ret['state']=='error') {
     
    438438        $data = [$this->password[0], $this->password[1], 0x5A];
    439439        $this->cur_tld++;
    440         return $this->atolbuffer->add($this->result_flags, $this->cur_tld, $data);       
     440        return $this->atolBuffer->add($this->result_flags, $this->cur_tld, $data);
    441441    }
    442442   
    443443    public function requestZREport() {
    444         $this->result_flags = self::F_NEEDRESULT;
     444        $this->result_flags = self::F_NEED_RESULT;
    445445        $this->cmdZREport();
    446         $this->atolbuffer->dispatchData(1);
     446        $this->atolBuffer->dispatchData(1);
    447447        $ret = $this->getFreeAsyncResult($this->cur_tld);
    448448        if($ret['state']=='error') {
     
    461461        $data = array_merge($data, $this->intToBCD($num, 5));
    462462        $this->cur_tld++;
    463         return $this->atolbuffer->add($this->result_flags, $this->cur_tld, $data);       
     463        return $this->atolBuffer->add($this->result_flags, $this->cur_tld, $data);
    464464    }
    465465   
    466466    public function requestRePrintDocument($num) {
    467         $this->result_flags = self::F_NEEDRESULT;
     467        $this->result_flags = self::F_NEED_RESULT;
    468468        $this->cmdRePrintDocument($num);
    469         $this->atolbuffer->dispatchData(1);
     469        $this->atolBuffer->dispatchData(1);
    470470        $ret = $this->getFreeAsyncResult($this->cur_tld);
    471471        $this->assertErrors($ret);
  • trunk/web/fpdf/fpdf_mc.php

    r797 r986  
    11<?php
     2
    23require('fpdf.php');
    34
    4 class PDF_MC_Table extends FPDF
    5 {
    6         var $widths;
    7         var $aligns;
    8         var $line_height=5;
    9         var $fsizes;
    10 
    11         function SetWidths($w)
    12         {
    13                 //Set the array of column widths
    14                 $this->widths=$w;
    15         }
    16 
    17         function SetHeight($h)
    18         {
    19                 //Set the line height
    20                 $this->line_height=$h;
    21         }
    22 
    23         function SetAligns($a)
    24         {
    25                 //Set the array of column alignments
    26                 $this->aligns=$a;
    27         }
    28        
    29         function SetFSizes($fs)
    30         {
    31                 //Set the array of column font sizes
    32                 $this->fsizes=$fs;
    33         }
    34 
    35         function Row($data)
    36         {
    37                 //Calculate the height of the row
    38                 $nb=0;
    39                 for($i=0;$i<count($data);$i++)
    40                 {
    41                         if(isset($this->fsizes[$i]))   
    42                         {
    43                                 //$this->SetFont('','',$this->fsizes[$i]);
    44                                 // Быстрый метод
    45                                 if($this->fsizes[$i]==0)        $this->fsizes[$i]=$this->FontSizePt;
    46                                 $this->FontSizePt=$this->fsizes[$i];
    47                                 $this->FontSize=$this->fsizes[$i]/$this->k;
    48                         }
    49                         $nb=@max($nb,$this->NbLines($this->widths[$i],$data[$i]));
    50                 }
    51                 $h=$this->line_height*$nb;
    52                 //Issue a page break first if needed
    53                 $this->CheckPageBreak($h);
    54                 //Draw the cells of the row
    55                 for($i=0;$i<count($data);$i++)
    56                 {
    57                         $w=@$this->widths[$i];
    58                         $a=isset($this->aligns[$i]) ? $this->aligns[$i] : 'L';
    59                         if(isset($this->fsizes[$i]))   
    60                         {
    61                                 //$this->SetFont('','',$this->fsizes[$i]);
    62                                 // Быстрый метод
    63                                 if($this->fsizes[$i]==0)        $this->fsizes[$i]=$this->FontSizePt;
    64                                 $this->FontSizePt=$this->fsizes[$i];
    65                                 $this->FontSize=$this->fsizes[$i]/$this->k;
    66                                 if($this->page>0)
    67                                         $this->_out(sprintf('BT /F%d %.2F Tf ET',$this->CurrentFont['i'],$this->FontSizePt));
    68                         }
    69                         //Save the current position
    70                         $x=$this->GetX();
    71                         $y=$this->GetY();
    72                         //Draw the border
    73                         $this->Rect($x,$y,$w,$h,'DF');
    74                         //Print the text
    75                         $this->MultiCell($w,$this->line_height,@$data[$i],0,$a);
    76                         //Put the position to the right of the cell
    77                         $this->SetXY($x+$w,$y);
    78                 }
    79                 //Go to the next line
    80                 $this->Ln($h);
    81         }
    82        
    83         function RowCommented($data,$comments)
    84         {
    85                 //Calculate the height of the row
    86                 $nb=0;
    87                 for($i=0;$i<count($data);$i++)
    88                 {
    89                         if(isset($this->fsizes[$i]))   
    90                         {
    91                                 //$this->SetFont('','',$this->fsizes[$i]);
    92                                 // Быстрый метод
    93                                 if($this->fsizes[$i]==0)        $this->fsizes[$i]=$this->FontSizePt;
    94                                 $this->FontSizePt=$this->fsizes[$i];
    95                                 $this->FontSize=$this->fsizes[$i]/$this->k;
    96                         }
    97                         $lines=$this->NbLines($this->widths[$i],$data[$i]);
    98                         if(isset($this->fsizes[$i]))   
    99                         {
    100                                 $font=round($this->fsizes[$i]/1.5);
    101                                 $this->FontSizePt=$font;
    102                                 $this->FontSize=$font/$this->k;
    103                         }
    104                         if($comments[$i])
    105                                 $lines+=$this->NbLines($this->widths[$i],$comments[$i]);
    106                         $nb=max($nb,$lines);
    107                 }
    108                 $h=$this->line_height*$nb;
    109                 //Issue a page break first if needed
    110                 $this->CheckPageBreak($h);
    111                 //Draw the cells of the row
    112                 for($i=0;$i<count($data);$i++)
    113                 {
    114                         $w=$this->widths[$i];
    115                         $a=isset($this->aligns[$i]) ? $this->aligns[$i] : 'L';
    116                         if(isset($this->fsizes[$i]))   
    117                         {
    118                                 //$this->SetFont('','',$this->fsizes[$i]);
    119                                 // Быстрый метод
    120                                 if($this->fsizes[$i]==0)        $this->fsizes[$i]=$this->FontSizePt;
    121                                 $this->FontSizePt=$this->fsizes[$i];
    122                                 $this->FontSize=$this->fsizes[$i]/$this->k;
    123                                 if($this->page>0)
    124                                         $this->_out(sprintf('BT /F%d %.2F Tf ET',$this->CurrentFont['i'],$this->FontSizePt));
    125                         }
    126                         //Save the current position
    127                         $x=$this->GetX();
    128                         $y=$this->GetY();
    129                         //Draw the border
    130                         $this->Rect($x,$y,$w,$h,'DF');
    131                         //Print the text
    132                         $this->MultiCell($w,$this->line_height,$data[$i],0,$a);
    133                         if($comments[$i])
    134                         {
    135                                 $oldfont=$this->FontSizePt;
    136                                 $this->FontSizePt/=1.5;
    137                                 $this->FontSize=$this->FontSizePt/$this->k;
    138                                 if($this->page>0)
    139                                         $this->_out(sprintf('BT /F%d %.2F Tf ET',$this->CurrentFont['i'],$this->FontSizePt));
    140                                        
    141                                 $this->SetX($x);
    142                                 $this->MultiCell($w,$this->line_height,$comments[$i],0,$a);
    143                                
    144                                 $this->FontSizePt=$oldfont;
    145                                 $this->FontSize=$this->FontSizePt/$this->k;
    146                                 if($this->page>0)
    147                                         $this->_out(sprintf('BT /F%d %.2F Tf ET',$this->CurrentFont['i'],$this->FontSizePt));
    148                         }
    149                         //Put the position to the right of the cell
    150                         $this->SetXY($x+$w,$y);
    151                 }
    152                 //Go to the next line
    153                 $this->Ln($h);
    154         }
    155        
    156         function RowIconv($_data)
    157         {
    158                 $data=array();
    159                 foreach($_data as $i => $s)
    160                         $data[$i] = @iconv('UTF-8', 'windows-1251', $s );
    161                 $this->Row($data);
    162         }
    163 
    164         function RowIconvCommented($_data, $_comments)
    165         {
    166                 $data=array();
    167                 foreach($_data as $i => $s)
    168                         $data[$i]=iconv('UTF-8', 'windows-1251', $s );
    169                 $comments=array();
    170                 foreach($_comments as $i => $s)
    171                         $comments[$i]=iconv('UTF-8', 'windows-1251', $s );
    172                 $this->RowCommented($data,$comments);
    173         }
    174 
    175 
    176         function CheckPageBreak($h)
    177         {
    178         //If the height h would cause an overflow, add a new page immediately
    179         if($this->GetY()+$h>$this->PageBreakTrigger)
    180                 $this->AddPage($this->CurOrientation);
    181         }
    182 
    183         function NbLines($w,$txt)
    184         {
    185                 //Computes the number of lines a MultiCell of width w will take
    186                 $cw=&$this->CurrentFont['cw'];
    187                 if($w==0)       $w=$this->w-$this->rMargin-$this->x;
    188                 $wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
    189                 $s=str_replace("\r",'',$txt);
    190                 $nb=strlen($s);
    191                 if($nb>0 and $s[$nb-1]=="\n")   $nb--;
    192                 $sep=-1;
    193                 $i=0;
    194                 $j=0;
    195                 $l=0;
    196                 $nl=1;
    197                 while($i<$nb)
    198                 {
    199                         $c=$s[$i];
    200                         if($c=="\n")
    201                         {
    202                                 $i++;
    203                                 $sep=-1;
    204                                 $j=$i;
    205                                 $l=0;
    206                                 $nl++;
    207                                 continue;
    208                         }
    209                         if($c==' ')
    210                         $sep=$i;
    211                         $l+=$cw[$c];
    212                         if($l>$wmax)
    213                         {
    214                                 if($sep==-1)
    215                                 {
    216                                         if($i==$j)
    217                                         $i++;
    218                                 }
    219                                 else
    220                                 $i=$sep+1;
    221                                 $sep=-1;
    222                                 $j=$i;
    223                                 $l=0;
    224                                 $nl++;
    225                         }
    226                         else
    227                         $i++;
    228                 }
    229                 return $nl;
    230         }
     5class PDF_MC_Table extends FPDF {
     6
     7    var $widths;
     8    var $aligns;
     9    var $line_height = 5;
     10    var $fsizes;
     11
     12    /// Set the array of column widths
     13    function setWidths($w) {       
     14        $this->widths = $w;
     15    }
     16   
     17    /// Set the line height
     18    function setHeight($h) {       
     19        $this->line_height = $h;
     20    }
     21
     22    /// Set the array of column alignments
     23    function SetAligns($a) {       
     24        $this->aligns = $a;
     25    }
     26
     27    /// Set the array of column font sizes
     28    function SetFSizes($fs) {       
     29        $this->fsizes = $fs;
     30    }
     31
     32    /// Calculate the height of the row
     33    function Row($data) {       
     34        $nb = 0;
     35        for ($i = 0; $i < count($data); $i++) {
     36            if (isset($this->fsizes[$i])) {
     37                //$this->SetFont('','',$this->fsizes[$i]);
     38                // Быстрый метод
     39                if ($this->fsizes[$i] == 0)
     40                    $this->fsizes[$i] = $this->FontSizePt;
     41                $this->FontSizePt = $this->fsizes[$i];
     42                $this->FontSize = $this->fsizes[$i] / $this->k;
     43            }
     44            $nb = @max($nb, $this->NbLines($this->widths[$i], $data[$i]));
     45        }
     46        $h = $this->line_height * $nb;
     47        //Issue a page break first if needed
     48        $this->CheckPageBreak($h);
     49        //Draw the cells of the row
     50        for ($i = 0; $i < count($data); $i++) {
     51            $w = @$this->widths[$i];
     52            $a = isset($this->aligns[$i]) ? $this->aligns[$i] : 'L';
     53            if (isset($this->fsizes[$i])) {
     54                //$this->SetFont('','',$this->fsizes[$i]);
     55                // Быстрый метод
     56                if ($this->fsizes[$i] == 0)
     57                    $this->fsizes[$i] = $this->FontSizePt;
     58                $this->FontSizePt = $this->fsizes[$i];
     59                $this->FontSize = $this->fsizes[$i] / $this->k;
     60                if ($this->page > 0)
     61                    $this->_out(sprintf('BT /F%d %.2F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
     62            }
     63            //Save the current position
     64            $x = $this->GetX();
     65            $y = $this->GetY();
     66            //Draw the border
     67            $this->Rect($x, $y, $w, $h, 'DF');
     68            //Print the text
     69            $this->MultiCell($w, $this->line_height, @$data[$i], 0, $a);
     70            //Put the position to the right of the cell
     71            $this->SetXY($x + $w, $y);
     72        }
     73        //Go to the next line
     74        $this->Ln($h);
     75    }
     76   
     77    function rowCommented($data, $comments = null) {
     78        //Calculate the height of the row
     79        $nb = 0;
     80        for ($i = 0; $i < count($data); $i++) {
     81            if (isset($this->fsizes[$i])) {
     82                //$this->SetFont('','',$this->fsizes[$i]);
     83                // Быстрый метод
     84                if ($this->fsizes[$i] == 0)
     85                    $this->fsizes[$i] = $this->FontSizePt;
     86                $this->FontSizePt = $this->fsizes[$i];
     87                $this->FontSize = $this->fsizes[$i] / $this->k;
     88            }
     89            $lines = $this->NbLines($this->widths[$i], $data[$i]);
     90            if (isset($this->fsizes[$i])) {
     91                $font = round($this->fsizes[$i] / 1.5);
     92                $this->FontSizePt = $font;
     93                $this->FontSize = $font / $this->k;
     94            }
     95            if ($comments[$i])
     96                $lines += $this->NbLines($this->widths[$i], $comments[$i]);
     97            $nb = max($nb, $lines);
     98        }
     99        $h = $this->line_height * $nb;
     100        //Issue a page break first if needed
     101        $this->CheckPageBreak($h);
     102        //Draw the cells of the row
     103        for ($i = 0; $i < count($data); $i++) {
     104            $w = $this->widths[$i];
     105            $a = isset($this->aligns[$i]) ? $this->aligns[$i] : 'L';
     106            if (isset($this->fsizes[$i])) {
     107                //$this->SetFont('','',$this->fsizes[$i]);
     108                // Быстрый метод
     109                if ($this->fsizes[$i] == 0)
     110                    $this->fsizes[$i] = $this->FontSizePt;
     111                $this->FontSizePt = $this->fsizes[$i];
     112                $this->FontSize = $this->fsizes[$i] / $this->k;
     113                if ($this->page > 0)
     114                    $this->_out(sprintf('BT /F%d %.2F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
     115            }
     116            //Save the current position
     117            $x = $this->GetX();
     118            $y = $this->GetY();
     119            //Draw the border
     120            $this->Rect($x, $y, $w, $h, 'DF');
     121            //Print the text
     122            $this->MultiCell($w, $this->line_height, $data[$i], 0, $a);
     123            if ($comments[$i]) {
     124                $oldfont = $this->FontSizePt;
     125                $this->FontSizePt /= 1.5;
     126                $this->FontSize = $this->FontSizePt / $this->k;
     127                if ($this->page > 0)
     128                    $this->_out(sprintf('BT /F%d %.2F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
     129
     130                $this->SetX($x);
     131                $this->MultiCell($w, $this->line_height, $comments[$i], 0, $a);
     132
     133                $this->FontSizePt = $oldfont;
     134                $this->FontSize = $this->FontSizePt / $this->k;
     135                if ($this->page > 0)
     136                    $this->_out(sprintf('BT /F%d %.2F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
     137            }
     138            //Put the position to the right of the cell
     139            $this->SetXY($x + $w, $y);
     140        }
     141        //Go to the next line
     142        $this->Ln($h);
     143    }
     144
     145    function rowIconv($_data) {
     146        $data = array();
     147        foreach ($_data as $i => $s) {
     148            $data[$i] = @iconv('UTF-8', 'windows-1251', $s);
     149        }
     150        $this->Row($data);
     151    }
     152
     153    function rowIconvCommented($_data, $_comments) {
     154        $data = array();
     155        foreach ($_data as $i => $s) {
     156            $data[$i] = iconv('UTF-8', 'windows-1251', $s);
     157        }
     158        $comments = array();
     159        foreach ($_comments as $i => $s) {
     160            $comments[$i] = iconv('UTF-8', 'windows-1251', $s);
     161        }
     162        $this->RowCommented($data, $comments);
     163    }
     164
     165    function checkPageBreak($h) {
     166        //If the height h would cause an overflow, add a new page immediately
     167        if ($this->GetY() + $h > $this->PageBreakTrigger) {
     168            $this->AddPage($this->CurOrientation);
     169        }
     170    }
     171
     172    function nbLines($w, $txt) {
     173        //Computes the number of lines a MultiCell of width w will take
     174        $cw = &$this->CurrentFont['cw'];
     175        if ($w == 0) {
     176            $w = $this->w - $this->rMargin - $this->x;
     177        }
     178        $wmax = ($w - 2 * $this->cMargin) * 1000 / $this->FontSize;
     179        $s = str_replace("\r", '', $txt);
     180        $nb = strlen($s);
     181        if ($nb > 0 and $s[$nb - 1] == "\n") {
     182            $nb--;
     183        }
     184        $sep = -1;
     185        $i = 0;
     186        $j = 0;
     187        $l = 0;
     188        $nl = 1;
     189        while ($i < $nb) {
     190            $c = $s[$i];
     191            if ($c == "\n") {
     192                $i++;
     193                $sep = -1;
     194                $j = $i;
     195                $l = 0;
     196                $nl++;
     197                continue;
     198            }
     199            if ($c == ' ') {
     200                $sep = $i;
     201            }
     202            $l += $cw[$c];
     203            if ($l > $wmax) {
     204                if ($sep == -1) {
     205                    if ($i == $j) {
     206                        $i++;
     207                    }
     208                } else {
     209                    $i = $sep + 1;
     210                }
     211                $sep = -1;
     212                $j = $i;
     213                $l = 0;
     214                $nl++;
     215            } else {
     216                $i++;
     217            }
     218        }
     219        return $nl;
     220    }
     221
    231222}
    232 ?>
  • trunk/web/include/doc/printcheck.php

    r975 r986  
    2121namespace doc;
    2222
    23 /// Трейт *печать кассового чека*
     23/**
     24 * Трейт *печать кассового чека*
     25 * @package doc
     26 */
    2427trait PrintCheck {
    25    
    26     protected function getCashRegister($cr_id) {
     28
     29    /**
     30     * @var \CRI\Atol\Atol Объект ККМ
     31     */
     32    private $crId;
     33
     34    /**
     35     * Получить объект взаимодействия с ККМ по id
     36     * @param $cr_id int ID регистратора
     37     * @throws \NotFoundException
     38     */
     39    private function useCashRegister($cr_id) {
    2740        global $db;
    28         $res = $db->query("SELECT `name`, `connect_line`, `password`, `section` FROM `cash_register` WHERE `id`='$cr_id'");
    29         $kkm_line = $res->fetch_assoc();
     41        $kkm_line = $db->selectRow('cash_register', $cr_id);
    3042        if(!$kkm_line) {
    3143            throw new \NotFoundException("ID кассового аппарата $cr_id не найден в базе данных");
    3244        }
    33         $cr = new \CRI\Atol\Atol();
    34         $cr->connect($kkm_line['connect_line']);
    35         $cr->setPassword($kkm_line['password']);
    36         $cr->setSection($kkm_line['section']);
    37         return $cr;
     45        $this->crId = new \CRI\Atol\Atol();
     46        $this->crId->connect($kkm_line['connect_line']);
     47        $this->crId->setPassword($kkm_line['password']);
     48        $this->crId->setSection($kkm_line['section']);
    3849    }
    39    
    40     protected function touchRegMode($cr) {
     50
     51    /**
     52     * Проверить, и при необходимости, установить нужный режим ККМ
     53     * @throws \Exception
     54     */
     55    private function touchRegMode() {
    4156        global $db;
    42         $statecode = $cr->requestGetStateCode();
    43         if($statecode['state']>0) {
    44             $cr->requestExitFromMode();
    45             $statecode = $cr->requestGetStateCode();
    46             if($statecode['state']>0) {
    47                 $cr->requestExitFromMode();
    48                 $statecode = $cr->requestGetStateCode();
     57        $stateCode = $this->crId->requestGetStateCode();
     58        if($stateCode['state']>0) {
     59            $this->crId->requestExitFromMode();
     60            $stateCode = $this->crId->requestGetStateCode();
     61            if($stateCode['state']>0) {
     62                $this->crId->requestExitFromMode();
     63                $stateCode = $this->crId->requestGetStateCode();
    4964            }
    5065        }   
     
    5772            throw new \Exception("Ваш пароль кассира не задан, и вы не можете распечатать чек!");
    5873        }
    59         if($statecode['state']==0) {
    60             $cr->requestEnterToMode(1, $ui['cr_password']);
     74        if($stateCode['state']==0) {
     75            $this->crId->requestEnterToMode(1, $ui['cr_password']);
    6176        }
    6277        else {
    63             throw new \Exception("Режим: {$statecode['state']} - в нём печать не возможна, и сменить не получается!");
     78            throw new \Exception("Режим: {$stateCode['state']} - в нём печать не возможна, и сменить не получается!");
    6479        }
    65         $state = $cr->requestGetState();
     80        $state = $this->crId->requestGetState();
    6681        if($state['flags']['session']==false) {
    6782            throw new \Exception("Смена не открыта, печать чека не возможна!");
    6883        }
    6984    }
    70    
    71     // Напечатать чек
     85
     86    /**
     87     * Напечатать чек
     88     * @param $cr_id
     89     * @throws \CRI\Atol\AtolException
     90     * @throws \CRI\Atol\AtolHLError
     91     * @throws \CRI\Atol\AtolHLException
     92     * @throws \NotFoundException
     93     * @throws \Exception
     94     */
    7295    protected function printCheck($cr_id) {
    7396        if($this->doc_data['p_doc']==0) {
     
    7598        }
    7699        $doc = \document::getInstanceFromDb($this->doc_data['p_doc']);
    77         $check_type = 0;
    78         $pay_type = 0;
    79         $pay_sum = 1;
    80100        if($doc->typename == 'realizaciya') {
    81101            if($this->typename == 'pko' || $this->typename == 'payinfo') {
     
    109129            throw new \Exception("Частичные поступления и возвраты не реализованы");
    110130        }       
    111         $cr = $this->getCashRegister($cr_id);
     131
    112132        try {
    113             $nom = $doc->getDocumentNomenclature('base_price,bulkcnt'); 
    114             $this->touchRegMode($cr);
    115             $cr->requestOpenCheck($check_type);
     133            $this->useCashRegister($cr_id);
     134            $this->touchRegMode();
     135            $this->crId->requestOpenCheck($check_type);
     136            $nom = $doc->getDocumentNomenclature('base_price,bulkcnt');
    116137            $sum = 0;
    117138            foreach ($nom as $line) {
    118139                $tax = $section = 0;
    119                 $cr->requestRegisterNomenclature($line['name'], $line['price'], $line['cnt']);
     140                $this->crId->requestRegisterNomenclature($line['name'], $line['price'], $line['cnt']);
    120141                //$cr->cmdRegisterNomenclature($line['name'], $line['price'], $line['cnt']);
    121142                $sum += $line['price'] * $line['cnt'];
    122143            }
    123144            $sum *= $pay_sum;
    124             $cr->requestCloseCheck($pay_type, $sum);
     145            $this->crId->requestCloseCheck($pay_type, $sum);
    125146            /// TODO: услуги, коды товаров
    126147        }
    127148        catch(\CRI\Atol\AtolHLError $e) {
    128149            try {
    129                 $cr->abortBuffer();
    130                 $cr->requestBreakCheck();               
     150                $this->crId->abortBuffer();
     151                $this->crId->requestBreakCheck();
    131152            } catch (\Exception $ex) {}
    132153            throw $e;
     
    134155        catch(\CRI\Atol\AtolException $e) {
    135156            try {
    136                 $cr->abortBuffer();
    137                 $cr->requestBreakCheck();
     157                $this->crId->abortBuffer();
     158                $this->crId->requestBreakCheck();
    138159            } catch (\Exception $ex) {}   
    139160            throw $e;
  • trunk/web/include/doc/printforms/corract/plus.php

    r963 r986  
    7474            $row[] = $line['name'];
    7575            $row = array_merge($row, array($line['cnt'], $line['unit_name'], $price, $sum_line));
    76             if ($this->pdf->h <= ($this->pdf->GetY() + 40 )) {
    77                 $this->pdf->AddPage();
    78                 $this->addTechFooter();
    79             }
     76            $this->controlPageBreak(30);
    8077            $this->pdf->RowIconv($row);
    8178            $this->form_sum += $line['sum'];
     
    121118    /// Сформировать печатную форму
    122119    public function make() {
    123         $this->pdf->AddPage();
    124         $this->addTechFooter();
    125        
     120        $this->addPage();       
    126121        $this->addFormHeaderBlock();     
    127122        $this->addPartnerInfoBlock();
  • trunk/web/include/doc/printforms/corract/torg16.php

    r963 r986  
    131131        $bank_info = $res->fetch_assoc();
    132132
    133         $this->pdf->AddPage('L');
    134         $y = $this->pdf->getY();
    135         $this->addTechFooter();
     133        $this->addPage('L');
     134        $y = $this->pdf->getY();       
    136135
    137136        $this->pdf->setY($y);
     
    333332            );
    334333            $this->pdf->RowIconv($row);
    335 
    336             if ($this->pdf->GetY() > 190) {
    337                 $this->pdf->AddPage('L');
    338                 $this->addTechFooter();
    339                 $y = $this->pdf->GetY();
    340             }
     334            $this->controlPageBreak(30, 'L');
    341335        }
    342336        $this->pdf->ln(5);
     
    475469            if ($this->pdf->GetY() > 190) {
    476470                $this->makeColRect($t_all_offset, $y);
    477                 $this->pdf->AddPage('L');
    478                 $this->addTechFooter();
     471                $this->addPage('L');               
    479472                $y = $this->pdf->GetY();
    480473                $list_summass = $list_sum = $list_sumnaloga = 0;
     
    485478        $this->makeSummary('Итого:', $t_all_width, 3.5, $sum);
    486479
    487         // Контроль расстояния до конца листа
    488         $workspace_h = $this->pdf->h - $this->pdf->bMargin - $this->pdf->tMargin;
    489         if ($workspace_h <= $this->pdf->GetY() + 61) {
    490             $this->pdf->AddPage('L');
    491             $this->addTechFooter();
    492         }
     480        $this->controlPageBreak(61);
    493481        $this->pdf->SetAutoPageBreak(0);
    494482       
  • trunk/web/include/doc/printforms/doveren/dov.php

    r963 r986  
    9090        $worker_info = $res->fetch_assoc();
    9191       
    92         $this->pdf->AddPage('P');
    93         $this->addTechFooter();
     92        $this->addPage();
    9493       
    9594        $this->pdf->SetLineWidth($this->line_normal_w);       
  • trunk/web/include/doc/printforms/iprintformidpdf.php

    r963 r986  
    6969            $row[] = $line['name'];
    7070            $row = array_merge($row, array("{$line['mult']} {$line['unit_name']}", "{$line['cnt']} {$line['unit_name']}", $price, $sum_line, $line['place']));
    71             if ($this->pdf->h <= ($this->pdf->GetY() + 18 )) {
    72                 $this->pdf->AddPage();
    73                 $this->addTechFooter();
    74             }
     71            $this->controlPageBreak(8);
    7572            $this->pdf->SetFont('', '', 8);
    7673            $this->pdf->RowIconv($row);
     
    119116    /// Сформировать данные печатной формы
    120117    public function make() {
    121         $this->pdf->AddPage();
    122         $this->addTechFooter();
     118        $this->addPage();
    123119       
    124120        $this->addFormHeaderBlock();     
  • trunk/web/include/doc/printforms/iprintforminvoicepdf.php

    r963 r986  
    9999            $row[] = $line['name'];
    100100            $row = array_merge($row, array("{$line['mult']} {$line['unit_name']}", "{$line['cnt']} {$line['unit_name']}", $price, $sum_line));
    101             if ($this->pdf->h <= ($this->pdf->GetY() + 40 )) {
    102                 $this->pdf->AddPage();
    103                 $this->addTechFooter();
    104             }
     101            $this->controlPageBreak(30);
    105102            $this->pdf->RowIconv($row);
    106103            $this->form_sum += $line['sum'];
     
    149146    /// Сформировать печатную форму
    150147    public function make() {
    151         $this->pdf->AddPage();
    152         $this->addTechFooter();
     148        $this->addPage();
    153149       
    154150        $this->addFormHeaderBlock();     
  • trunk/web/include/doc/printforms/iprintformpdf.php

    r980 r986  
    2222/// Абстрактный класс печатной формы
    2323abstract class iPrintFormPdf {
    24     protected $doc;   //< Ссылка на документ с данными для печати
    25     protected $pdf;   //< Объект FPDF
     24
     25    /**
     26     * @var \document|\doc_Nulltype Ссылка на документ с данными для печати
     27     */
     28    protected $doc;
     29
     30    /**
     31     * @var \PDF_MC_Table Объект FPDF
     32     */
     33    protected $pdf;
    2634   
    2735    // Параметы форм
     
    4654             
    4755    /// Инициализация модуля вывода данных
    48     public function initForm() {
     56    public function initForm($orient = 'P') {
    4957        require('fpdf/fpdf_mc.php');
    50         $this->pdf = new \PDF_MC_Table('P');
     58        $this->pdf = new \PDF_MC_Table($orient);
    5159        $this->pdf->Open();
    5260        $this->pdf->SetAutoPageBreak(1, 5);
     
    5664        $this->pdf->SetFillColor(255);
    5765    }
    58    
     66       
     67    /// Добавить страницу с техническим заголовком
     68    protected function addPage($orientation = '') {
     69        $this->pdf->AddPage($orientation);
     70        $this->addTechFooter();
     71    }
     72
    5973    /// Добавить к документу футер с технической информацией
    6074    protected function addTechFooter() {
     
    7286    }
    7387   
    74     /// Добавить стандартный заголовок формы
     88    // Контроль расстояния до конца листа
     89    protected function controlPageBreak($offset = 20, $orientation = '') {
     90        $workspace_h = $this->pdf->h - $this->pdf->bMargin - $this->pdf->tMargin;
     91        if ($workspace_h <= ($this->pdf->GetY() + $offset )) {
     92            $this->addPage($orientation);               
     93        }
     94    }
     95
     96        /// Добавить стандартный заголовок формы
    7597    protected function addHeader($text) {
    7698        $this->pdf->SetFontSize(18);
     
    112134        $this->pdf->SetFontSize(8);
    113135    }
    114    
    115     /// Добавить изображение шапки
     136
     137    /**
     138     * Добавить изображение шапки
     139     * @param $firm_id int ID организации
     140     * @throws \Exception
     141     */
    116142    protected function addHeadBanner($firm_id) {
    117         global $CONFIG;
    118         if (@$CONFIG['site']['doc_header']) {
    119             $header_img = str_replace('{FN}', $firm_id, $CONFIG['site']['doc_header']);
     143        if (\cfg::get('site', 'doc_header')) {
     144            $header_img = str_replace('{FN}', $firm_id, \cfg::get('site', 'doc_header'));
    120145            $size = getimagesize($header_img);
    121146            if (!$size) {
     
    123148            }
    124149            if ($size[2] != IMAGETYPE_JPEG) {
    125                 throw new Exception("Файл изображения не в jpeg формате");
     150                throw new \Exception("Файл изображения не в jpeg формате");
    126151            }
    127152            if ($size[0] < 800) {
     
    137162    /// Добавить информацию о сайте
    138163    protected function addSiteBanner() {
    139         global $CONFIG;
    140164        $pref = \pref::getInstance();
    141165        $this->pdf->SetFontSize(12);
     
    152176        $this->pdf->CellIconv(0, 8, $str, 0, 1, 'C', 0);
    153177    }
    154    
     178
     179    /**  Добавить изображение с печатью и подписью
     180     * @param $firm_id integer ID организации
     181     */
     182    protected function addSignAndStampImage($firm_id) {
     183        if($firm_id == 0) {
     184            throw new \OutOfBoundsException('ID организации не задан');
     185        }
     186        if (\cfg::get('site', 'doc_shtamp')) {
     187            $workspace_h = $this->pdf->h - $this->pdf->bMargin - $this->pdf->tMargin;
     188            $delta = $workspace_h - ($this->pdf->GetY() + 50);
     189            if ($delta > 17) {
     190                $delta = 17;
     191            }
     192            $shtamp_img = str_replace('{FN}', $firm_id, \cfg::get('site', 'doc_shtamp'));
     193            $this->pdf->Image($shtamp_img, 4, $this->pdf->GetY() + $delta, 120);
     194        }
     195    }
     196
     197
    155198    /// Добавить информацию о сторуднике в нижний правый угол страницы
    156199    protected function addWorkerInfo($doc_data) {
  • trunk/web/include/doc/printforms/kompredl/buisoff.php

    r963 r986  
    3232        $nomenclature = $this->doc->getDocumentNomenclature('comment');
    3333       
    34         $this->pdf->AddPage('P');
    35         $this->addTechFooter();       
     34        $this->addPage();     
    3635        $this->addHeadBanner($doc_data['firm_id']);
    3736       
     
    6059        }
    6160
    62         if ($this->pdf->h <= ($this->pdf->GetY() + 40)) {
    63             $this->pdf->AddPage();
    64         }
     61        $this->controlPageBreak(30);
    6562
    6663        if($firm_vars['param_nds']) {
     
    7673        }
    7774        $this->addSiteBanner();
     75        $this->addSignAndStampImage($doc_data['firm_id']);
    7876        $this->addWorkerInfo($doc_data);
    7977    }   
  • trunk/web/include/doc/printforms/kompredl/buisoffcnt.php

    r963 r986  
    3737            }
    3838        }
    39         $this->addInfoLine($text, 12);
     39        $this->addInfoLine($text );
    4040    }
    4141   
     
    4747        $nomenclature = $this->doc->getDocumentNomenclature('comment');
    4848       
    49         $this->pdf->AddPage('P');
    50         $this->addTechFooter();       
     49        $this->addPage();       
    5150        $this->addHeadBanner($doc_data['firm_id']);
    5251       
     
    8685        }
    8786        $this->form_linecount = $ii;
    88         if ($this->pdf->h <= ($this->pdf->GetY() + 40)) {
    89             $this->pdf->AddPage();
    90         }
     87        $this->controlPageBreak(30);
    9188        $this->addSummaryBlock();
    9289        if($firm_vars['param_nds']) {
     
    10299        }
    103100        $this->addSiteBanner();
     101        $this->addSignAndStampImage($doc_data['firm_id']);
    104102        $this->addWorkerInfo($doc_data);
    105103    }   
  • trunk/web/include/doc/printforms/kompredl/buisoffdesc.php

    r963 r986  
    3232        $nomenclature = $this->doc->getDocumentNomenclature('base_desc');
    3333       
    34         $this->pdf->AddPage('P');
    35         $this->addTechFooter();       
     34        $this->addPage();     
    3635        $this->addHeadBanner($doc_data['firm_id']);
    3736       
     
    6059        }
    6160
    62         if ($this->pdf->h <= ($this->pdf->GetY() + 40)) {
    63             $this->pdf->AddPage();
    64         }
     61        $this->controlPageBreak(30);
    6562
    6663        if($firm_vars['param_nds']) {
     
    7673        }
    7774        $this->addSiteBanner();
     75        $this->addSignAndStampImage($doc_data['firm_id']);
    7876        $this->addWorkerInfo($doc_data);
    7977    }   
  • trunk/web/include/doc/printforms/peremeshenie/invoice.php

    r963 r986  
    4141        $to_sklad = $sklad_info['name'];
    4242       
    43         $this->pdf->AddPage('P');
    44         $this->addTechFooter();
     43        $this->addPage();
    4544       
    4645        $dt = date("d.m.Y", $doc_data['date']);
     
    8483            $comm[] = $line['comment'];
    8584            $row = array_merge($row, array($line['place'], $line['dest_place'], "{$line['cnt']} {$line['unit_name']}", $line['mass'] * $line['cnt']));
    86             if ($this->pdf->h <= ($this->pdf->GetY() + 40 )) {
    87                 $this->pdf->AddPage();
    88                 $this->addTechFooter();
    89             }
     85            $this->controlPageBreak(30);
    9086            $comm  = array_merge($comm, array('', '',  '', ''));
    9187            $this->pdf->RowIconvCommented($row, $comm);
  • trunk/web/include/doc/printforms/permitout/permitout.php

    r963 r986  
    114114    /// Сформировать данные печатной формы
    115115    public function make() {
    116         $this->pdf->AddPage();
    117         $this->addTechFooter();
     116        $this->addPage();
    118117       
    119118        $this->addFormHeaderBlock();     
  • trunk/web/include/doc/printforms/pko/order.php

    r963 r986  
    3535        $firm_vars = $this->doc->getFirmVarsA();
    3636
    37         $this->pdf->AddPage('P');
    38         $this->addTechFooter();
     37        $this->addPage();
    3938       
    4039        $this->pdf->SetFillColor(255);
  • trunk/web/include/doc/printforms/postuplenie/komplekt.php

    r972 r986  
    115115                ) );
    116116            $rowc = array_merge($rowc, array('','','', '','','','') );
    117             if ($this->pdf->h <= ($this->pdf->GetY() + 18 )) {
    118                 $this->pdf->AddPage();
    119                 $this->addTechFooter();
    120             }
     117            $this->controlPageBreak();
    121118            $this->pdf->SetFont('', '', 8);
    122119            $this->pdf->RowIconvCommented($row, $rowc);
  • trunk/web/include/doc/printforms/predlojenie/request.php

    r963 r986  
    3333        $nomenclature = $this->doc->getDocumentNomenclature();
    3434       
    35         $this->pdf->AddPage('P');
    36         $this->addTechFooter();       
     35        $this->addPage();       
    3736        $this->addHeadBanner($doc_data['firm_id']);
    3837       
  • trunk/web/include/doc/printforms/realizaciya/certlist.php

    r963 r986  
    131131    /// Сформировать данные печатной формы
    132132    public function make() {
    133         global $db;
    134133        $doc_id = $this->doc->getId();
    135134        $doc_data = $this->doc->getDocDataA();
    136         $dop_data = $this->doc->getDopDataA();
    137135        $firm_vars = $this->doc->getFirmVarsA();
    138136       
    139         $this->pdf->AddPage('L');
    140         $y = $this->pdf->getY();
    141         $this->addTechFooter();
     137        $this->addPage('L');   
    142138       
    143139        $this->pdf->SetFont('', '', 14);
     
    184180        $this->pdf->SetFillColor(255, 255, 255);
    185181        $i = 1;
    186         $sumbeznaloga = $sumnaloga = $sum = 0;
     182        $sumnaloga = $sum = 0;
    187183        foreach ($nomenclature as $line ) {
    188184            $row = array(
     
    196192        }
    197193        // Контроль расстояния до конца листа
    198         $workspace_h = $this->pdf->h - $this->pdf->bMargin - $this->pdf->tMargin;
    199         if ($workspace_h  <= $this->pdf->GetY() + 81) {
    200             $this->pdf->AddPage('L');
    201             $this->addTechFooter();
    202         }
     194        $this->controlPageBreak(81, 'L');
    203195        $this->pdf->SetAutoPageBreak(0);       
    204196        $this->pdf->ln(3);
  • trunk/web/include/doc/printforms/realizaciya/discount.php

    r963 r986  
    9999            $row = array_merge($row, array($line['cnt'] . ' ' . $line['unit_name'], $def_price_s, $price_s, $skid_s, $skid_p_s, $def_sum_line_s,
    100100                $skid_sum_line_s, $sum_line_s));
    101             if ($this->pdf->h <= ($this->pdf->GetY() + 18 )) {
    102                 $this->pdf->AddPage();
    103                 $this->addTechFooter();
    104             }
     101            $this->controlPageBreak();
    105102            $this->pdf->SetFont('', '', 8);
    106103            $this->pdf->RowIconv($row);
     
    114111    /// Сформировать данные печатной формы
    115112    public function make() {
    116         $this->pdf->AddPage('L');
    117         $this->addTechFooter();
     113        $this->addPage('L');
    118114       
    119115        $this->addFormHeaderBlock();     
  • trunk/web/include/doc/printforms/realizaciya/komplekt.php

    r963 r986  
    116116                ) );
    117117            $rowc = array_merge($rowc, array('','','', '','','','') );
    118             if ($this->pdf->h <= ($this->pdf->GetY() + 18 )) {
    119                 $this->pdf->AddPage();
    120                 $this->addTechFooter();
    121             }
     118            $this->controlPageBreak();
    122119            $this->pdf->SetFont('', '', 8);
    123120            $this->pdf->RowIconvCommented($row, $rowc);
  • trunk/web/include/doc/printforms/realizaciya/komplektopt.php

    r963 r986  
    118118                ) );
    119119            $rowc = array_merge($rowc, array('','','', '','','','') );
    120             if ($this->pdf->h <= ($this->pdf->GetY() + 18 )) {
    121                 $this->pdf->AddPage();
    122                 $this->addTechFooter();
    123             }
     120            $this->controlPageBreak();
    124121            $this->pdf->SetFont('', '', 8);
    125122            $this->pdf->RowIconvCommented($row, $rowc);
  • trunk/web/include/doc/printforms/realizaciya/label.php

    r963 r986  
    3939        $firm_vars = $this->doc->getFirmVarsA();
    4040       
    41         $this->pdf->AddPage('P');
    42         $this->addTechFooter();
     41        $this->addPage();
    4342
    4443        $gruzop_info = new \models\agent($dop_data['gruzop']);
     
    9594        for ($c = 1; $c <= $pack_cnt; $c++) {
    9695            if($c>1) {
    97                 $rest = $this->pdf->h - $this->pdf->bMargin - $this->pdf->y - 5;
    98                 if($rest<$cell_height) {
    99                     $this->pdf->addPage();
    100                 }
     96                $this->controlPageBreak(5);
    10197            }
    10298            $start = $this->pdf->y - 5;
  • trunk/web/include/doc/printforms/realizaciya/markups.php

    r963 r986  
    193193    /// Сформировать печатную форму
    194194    public function make() {
    195         $this->pdf->AddPage('L');
    196         $this->addTechFooter();
     195        $this->addPage('L');
    197196       
    198197        $this->addFormHeaderBlock();     
  • trunk/web/include/doc/printforms/realizaciya/sfak.php

    r963 r986  
    7676        $firm_vars = $this->doc->getFirmVarsA();
    7777       
    78         $this->pdf->AddPage('L');
    79         $y = $this->pdf->getY();
    80         $this->addTechFooter();
     78        $this->addPage('L');
    8179       
    8280        $this->pdf->Setx(150);
     
    279277        }
    280278       
    281         // Контроль расстояния до конца листа
    282         $workspace_h = $this->pdf->h - $this->pdf->bMargin - $this->pdf->tMargin;
    283         if ($workspace_h  <= $this->pdf->GetY() + 65) {
    284             $this->pdf->AddPage('L');
    285             $this->addTechFooter();
    286         }
     279        $this->controlPageBreak(65, 'L');
    287280        $this->pdf->SetAutoPageBreak(0);       
    288281
  • trunk/web/include/doc/printforms/realizaciya/torg12.php

    r963 r986  
    147147        $bank_info = $res->fetch_assoc();
    148148
    149         $this->pdf->AddPage('L');
    150         $y = $this->pdf->getY();
    151         $this->addTechFooter();
    152 
    153         $this->pdf->setY($y);
     149        $this->addPage('L');
     150
    154151        $this->pdf->SetFont('', '', 6);
    155152        $str = 'Унифицированная форма ТОРГ-12 Утверждена постановлением госкомстата России от 25.12.98 № 132';
     
    527524                }
    528525                $this->makeSummary('Всего:', $t_all_width, 3.5, $list_cnt, $list_sumbeznaloga, $list_sum, $list_sumnaloga, $list_summass);
    529                 $this->pdf->AddPage('L');
    530                 $this->addTechFooter();
     526                $this->addPage('L');
    531527                $y = $this->pdf->GetY();
    532528                $list_summass = $list_sum = $list_sumnaloga = 0;
     
    537533        $this->makeSummary('Итого по накладной:', $t_all_width, 3.5, $cnt, $sumbeznaloga, $sum, $sumnaloga, $summass);
    538534
    539         // Контроль расстояния до конца листа
    540         $workspace_h = $this->pdf->h - $this->pdf->bMargin - $this->pdf->tMargin;
    541         if ($workspace_h <= $this->pdf->GetY() + 61) {
    542             $this->pdf->AddPage('L');
    543             $this->addTechFooter();
    544         }
     535        $this->controlPageBreak(61, 'L');
    545536        $this->pdf->SetAutoPageBreak(0);
    546537       
  • trunk/web/include/doc/printforms/realizaciya/upd.php

    r963 r986  
    7979        $firm_vars = $this->doc->getFirmVarsA();
    8080       
    81         $this->pdf->AddPage('L');
     81        $this->addPage('L');
    8282        $y = $this->pdf->getY();
    83         $this->addTechFooter();
    8483       
    8584        $this->pdf->SetLineWidth($this->line_bold_w);       
     
    318317            $this->pdf->SetLineWidth($this->line_normal_w);
    319318        }
    320         // Контроль расстояния до конца листа
    321         $workspace_h = $this->pdf->h - $this->pdf->bMargin - $this->pdf->tMargin;
    322         if ($workspace_h  <= $this->pdf->GetY() + 81) {
    323             $this->pdf->AddPage('L');
    324             $this->addTechFooter();
    325         }
     319        $this->controlPageBreak(81, 'L');
    326320        $this->pdf->SetAutoPageBreak(0);       
    327321
  • trunk/web/include/doc/printforms/realizaciya/upd2017.php

    r963 r986  
    7979        $firm_vars = $this->doc->getFirmVarsA();
    8080       
    81         $this->pdf->AddPage('L');
     81        $this->addPage('L');
    8282        $y = $this->pdf->getY();
    83         $this->addTechFooter();
    8483       
    8584        $this->pdf->SetLineWidth($this->line_bold_w);       
     
    316315            $this->pdf->SetLineWidth($this->line_normal_w);
    317316        }
    318         // Контроль расстояния до конца листа
    319         $workspace_h = $this->pdf->h - $this->pdf->bMargin - $this->pdf->tMargin;
    320         if ($workspace_h  <= $this->pdf->GetY() + 81) {
    321             $this->pdf->AddPage('L');
    322             $this->addTechFooter();
    323         }
     317        $this->controlPageBreak(81, 'L');
    324318        $this->pdf->SetAutoPageBreak(0);       
    325319
  • trunk/web/include/doc/printforms/realizaciya/updold.php

    r963 r986  
    7979        $firm_vars = $this->doc->getFirmVarsA();
    8080       
    81         $this->pdf->AddPage('L');
     81        $this->addPage('L');
    8282        $y = $this->pdf->getY();
    83         $this->addTechFooter();
    8483       
    8584        $this->pdf->SetLineWidth($this->line_bold_w);       
     
    312311            $this->pdf->SetLineWidth($this->line_normal_w);
    313312        }
    314         // Контроль расстояния до конца листа
    315         $workspace_h = $this->pdf->h - $this->pdf->bMargin - $this->pdf->tMargin;
    316         if ($workspace_h  <= $this->pdf->GetY() + 81) {
    317             $this->pdf->AddPage('L');
    318             $this->addTechFooter();
    319         }
     313        $this->controlPageBreak(81, 'L');
    320314        $this->pdf->SetAutoPageBreak(0);       
    321315
  • trunk/web/include/doc/printforms/rko/order.php

    r963 r986  
    3434        $firm_vars = $this->doc->getFirmVarsA();
    3535
    36         $this->pdf->AddPage('P');
    37         $this->addTechFooter();
     36        $this->addPage();
    3837       
    3938        $this->pdf->SetFont('Arial', '', 10);
  • trunk/web/include/doc/printforms/specific/invoice.php

    r965 r986  
    3333        $nomenclature = $this->doc->getDocumentNomenclature('vat');
    3434       
    35         $this->pdf->AddPage('P');
    36         $this->addTechFooter();       
     35        $this->addPage();     
    3736        $this->addHeadBanner($doc_data['firm_id']);
    3837       
     
    9291            $row[] = $line['name'];
    9392            $row = array_merge($row, array($line['unit_name'], $line['cnt'], $price_wo_vat, $price, $sum_line));
    94             if ($this->pdf->h <= ($this->pdf->GetY() + 40 )) {
    95                 $this->pdf->AddPage();
    96                 $this->addTechFooter();
    97             }
     93            $this->controlPageBreak(30);
    9894            $this->pdf->SetFont('', '', 8);
    9995            $this->pdf->RowIconv($row);
     
    108104        $summass = sprintf("%01.3f", $summass);
    109105
    110         if ($this->pdf->h <= ($this->pdf->GetY() + 60)) {
    111             $this->pdf->AddPage();
    112             $this->addTechFooter();
    113         }
     106        $this->controlPageBreak(50);
    114107       
    115108        $delta = $this->pdf->h - ($this->pdf->GetY() + 55);
  • trunk/web/include/doc/printforms/zayavka/invoice.php

    r963 r986  
    3535        $bank_data = $res->fetch_assoc();
    3636       
    37         $this->pdf->AddPage('P');
    38         $this->addTechFooter();       
     37        $this->addPage();       
    3938        $this->addHeadBanner($doc_data['firm_id']);
    4039        $this->addSiteBanner();
     
    157156            $row[] = $line['name'];
    158157            $row = array_merge($row, array("{$line['cnt']} {$line['unit_name']}", $price, $sum_line));
    159             if ($this->pdf->h <= ($this->pdf->GetY() + 40 )) {
    160                 $this->pdf->AddPage();
    161                 $this->addTechFooter();
    162             }
     158            $this->controlPageBreak(30);
    163159            $this->pdf->SetFont('', '', 8);
    164160            $this->pdf->RowIconv($row);
     
    173169        $summass = sprintf("%01.3f", $summass);
    174170
    175         if ($this->pdf->h <= ($this->pdf->GetY() + 60)) {
    176             $this->pdf->AddPage();
    177             $this->addTechFooter();
    178         }
    179        
    180         $delta = $this->pdf->h - ($this->pdf->GetY() + 55);
    181         if ($delta > 17) {
    182             $delta = 17;
    183         }
    184 
    185         if (@$CONFIG['site']['doc_shtamp']) {
    186             $shtamp_img = str_replace('{FN}', $doc_data['firm_id'], $CONFIG['site']['doc_shtamp']);
    187             $this->pdf->Image($shtamp_img, 4, $this->pdf->GetY() + $delta, 120);
    188         }
     171        $this->controlPageBreak(50);
     172        $this->addSignAndStampImage($doc_data['firm_id']);
    189173
    190174        $this->pdf->SetFont('', '', 10);
  • trunk/web/include/doc/printforms/zayavka/order.php

    r963 r986  
    3535        $bank_data = $res->fetch_assoc();
    3636       
    37         $this->pdf->AddPage('P');
    38         $this->addTechFooter();       
     37        $this->addPage();       
    3938        $this->addHeadBanner($doc_data['firm_id']);
    4039        $this->addSiteBanner();
     
    157156            $row[] = $line['name'];
    158157            $row = array_merge($row, array("{$line['cnt']} {$line['unit_name']}", $price, $sum_line));
    159             if ($this->pdf->h <= ($this->pdf->GetY() + 40 )) {
    160                 $this->pdf->AddPage();
    161                 $this->addTechFooter();
    162             }
     158            $this->controlPageBreak(30);
    163159            $this->pdf->SetFont('', '', 8);
    164160            $this->pdf->RowIconv($row);
     
    173169        $summass = sprintf("%01.3f", $summass);
    174170
    175         if ($this->pdf->h <= ($this->pdf->GetY() + 60)) {
    176             $this->pdf->AddPage();
    177             $this->addTechFooter();
    178         }
    179        
    180         $delta = $this->pdf->h - ($this->pdf->GetY() + 55);
    181         if ($delta > 17) {
    182             $delta = 17;
    183         }
    184 
    185         if (@$CONFIG['site']['doc_shtamp']) {
    186             $shtamp_img = str_replace('{FN}', $doc_data['firm_id'], $CONFIG['site']['doc_shtamp']);
    187             $this->pdf->Image($shtamp_img, 4, $this->pdf->GetY() + $delta, 120);
    188         }
     171        $this->controlPageBreak(50);       
     172        $this->addSignAndStampImage($doc_data['firm_id']);
    189173
    190174        $this->pdf->SetFont('', '', 10);
  • trunk/web/include/doc/printforms/zayavka/testcnt.php

    r963 r986  
    3333        $nomenclature = $this->doc->getDocumentNomenclature('comment,rto');
    3434       
    35         $this->pdf->AddPage('P');
    36         $this->addTechFooter();
     35        $this->addPage();
    3736       
    3837        $text = "Накладная на проверку наличия N {$doc_data['altnum']}{$doc_data['subtype']} от ".date("d.m.Y", $doc_data['date']);
  • trunk/web/include/doc/printforms/zsbor/invoice.php

    r963 r986  
    4343    /// Сформировать печатную форму
    4444    public function make() {
    45         $this->pdf->AddPage();
    46         $this->addTechFooter();
     45        $this->addPage();
    4746       
    4847        $this->addFormHeaderBlock();     
  • trunk/web/include/reports/revision_act.php

    r963 r986  
    434434            $pdf->MultiCell(0, 5, $str, 0, 'L', 0);
    435435
    436             if ($CONFIG['site']['doc_shtamp'] && !$no_stamp) {
    437                 $delta = -15;
    438                 $shtamp_img = str_replace('{FN}', $firm_id, $CONFIG['site']['doc_shtamp']);
    439                 if (file_exists($shtamp_img)) {
    440                     $pdf->Image($shtamp_img, 3, $pdf->GetY() + $delta, 120);
    441                 }
     436            if (!$no_stamp) {
     437                $this->addSignAndStampImage($firm_id);
    442438            }
    443439
Note: See TracChangeset for help on using the changeset viewer.