1
Changeset 984 – MultiMag

Changeset 984


Ignore:
Timestamp:
Sep 11, 2018, 10:47:18 PM (2 months ago)
Author:
blacklight
Message:
  • Добавлена опция печати документа на ККТ по номеру из ФН
Location:
trunk
Files:
3 edited

Legend:

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

    r972 r984  
    455455        return $ret;
    456456    }
    457    
    458    
    459    
     457     
     458    // -------- Команды режима запроса к ФН ------------------
     459    public function cmdRePrintDocument($num) {
     460        $data = [$this->password[0], $this->password[1], 0xAB];
     461        $data = array_merge($data, $this->intToBCD($num, 5));
     462        $this->cur_tld++;
     463        return $this->atolbuffer->add($this->result_flags, $this->cur_tld, $data);       
     464    }
     465   
     466    public function requestRePrintDocument($num) {
     467        $this->result_flags = self::F_NEEDRESULT;
     468        $this->cmdRePrintDocument($num);
     469        $this->atolbuffer->dispatchData(1);
     470        $ret = $this->getFreeAsyncResult($this->cur_tld);
     471        $this->assertErrors($ret);
     472        return $ret;
     473    }
     474   
     475    protected function assertErrors($res) {
     476        if($res['state']=='error') {
     477            throw new AtolHLError($res['data'][1],$res['data'][2]);
     478        }
     479        $res = $res['data'];
     480        if($res[0]!=0x55) {
     481            throw new AtolHLException("Неверная сигнатура ответа");
     482        }
     483    }
     484
     485
    460486    protected function stringToArray(string $str, int $size) {
    461487        $str = iconv('UTF-8', 'CP866', $str);
  • trunk/common/cri/atol/atolhlerror.php

    r972 r984  
    123123                return 'Смена открыта, операция невозможна';
    124124                // ~~~~~~~~~~~~~~~~~~
     125            case 212:
     126                return 'Неверное состояние ФН';
     127            case 213:
     128                return 'Неисправимая ошибка ФН';
     129            case 214:
     130                return 'Ошибка КС ФН';
     131            case 215:
     132                return 'Закончен срок эксплуатации ФН';
     133            case 214:
     134                return 'Ошибка КС ФН';
     135            case 215:
     136                return 'Закончен срок эксплуатации ФН';
     137            case 216:
     138                return 'Архив ФН переполнен';
     139            case 217:
     140                return 'В ФН переданы неверная дата или время';
     141            case 218:
     142                return 'В ФН нет запрошенных данных';
     143                // ~~~~~~~~~~~~~~~~~~
    125144            case 246: 
    126145                return self::getnameForExtCode($extcode);
  • trunk/web/include/modules/docservice/cashregister.php

    r973 r984  
    4747            'zreport' => 'Закрытие смены и печать отчёта с гашением',
    4848            'incash' => 'Внесение денег',
     49            'printfn' => 'Печать документа по номеру',
    4950        ];
    5051        $tmpl->addContent("<form action='{$this->link_prefix}' method='post'>"
     
    6465        $type = rcvint('type');
    6566        $sum = rcvint('sum');
     67        $num = rcvint('num');
    6668        settype($kkm_id, 'int');
    6769        $res = $db->query("SELECT `name`, `connect_line`, `password` FROM `cash_register` WHERE `id`='$kkm_id'");
     
    106108                }
    107109                break;
     110            case 'printfn':
     111                if($num==0) {
     112                    $this->showPrintFNForm($kkm_id, $kkm_line['name']);
     113                }
     114                else {
     115                     $this->actionPrintFN($kkm_line['name'], $cr, $num);
     116                }
     117                break;
    108118            default:
    109119                throw new \NotFoundException("Действие не найдено");
    110120        }
     121    }
     122   
     123    protected function actionPrintFN($name, $cr, $num) {
     124        global $tmpl;
     125        $statecode = $cr->requestGetStateCode();
     126        if($statecode['state']>1) {
     127            $cr->requestExitFromMode();
     128            $statecode = $cr->requestGetStateCode();
     129            if($statecode['state']>1) {
     130                $cr->requestExitFromMode();
     131                $statecode = $cr->requestGetStateCode();
     132            }
     133        }       
     134        if($statecode['state']==0) {
     135            $cr->requestEnterToMode(6, 30);
     136        }
     137        else if($statecode['state']!=6) {
     138            throw new \Exception("Режим: {$statecode['state']} - в нём операция не возможна, и сменить не получается!");
     139        }
     140        $cr->requestRePrintDocument($num);
     141        $tmpl->msg("Идёт печать документа N{$num}!");
    111142    }
    112143   
     
    349380    }
    350381   
    351     protected function showInCashForm($kkm_id, $kkm_name) {
     382    protected function showPrintFNForm($kkm_id, $kkm_name) {
     383        global $tmpl;
     384        $tmpl->addContent("<form action='{$this->link_prefix}' method='post'>"
     385        . "<input type='hidden' name='sect' value='action'>"
     386        . "<input type='hidden' name='kkm_id' value='$kkm_id'>"
     387        . "<input type='hidden' name='action' value='printfn'>"
     388        . "<label>Кассовый аппарат: ".html_out($kkm_name)."</label><br>"
     389        . "<label>Номер документа:</label><br>"
     390        . "<input type='text' name='num'><br>"
     391        . "<button type='submit'>Выполнить операцию</button>"
     392        . "</form>");
     393    }
     394   
     395        protected function showInCashForm($kkm_id, $kkm_name) {
    352396        global $tmpl;
    353397        $tmpl->addContent("<form action='{$this->link_prefix}' method='post'>"
Note: See TracChangeset for help on using the changeset viewer.