Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- include "QRCodeGenerator.class.php";
- require 'app/core/Url.php';
- require 'app/core/Redirect.php';
- require realpath(__DIR__) . '/../../../../vendor/autoload.php';
- function product_name($name) {
- return character_limiter($name, (isset($Settings->char_per_line) ? ($Settings->char_per_line - 8) : 35));
- }
- $fetchProduct = Func::array_table("tec_sales", array("id" => $this->data['sid']));
- $fetchPurchase = Func::array_table("tec_reports_nfe", array("purchase" => $this->data['sid']));
- if (is_array($fetchPurchase)) {
- $path = $fetchPurchase["tpAmb"] > 1 ? "homologacao" : "producao";
- $base = BASE_URL . "/vendor/nfephp-org/nfephp/schemes/NFe/{$path}/pdf/{$fetchPurchase["pdf"]}";
- echo <<<EOF
- <object id="exPDF" type="application/pdf" data="{$base}" width="100%" height="100%"/>
- <script src="{$assets}plugins/jQuery/jQuery-2.1.4.min.js" type="text/javascript"></script>
- <script type="text/javascript">
- $(document).ready(function () {
- $(window).load(function () {
- window.print();
- });
- });
- </script>
- EOF;
- die();
- }
- if (!is_array($fetchProduct)) {
- Redirect::home();
- }
- if ($modal) {
- echo '<div class="modal-dialog no-modal-header"><div class="modal-content"><div class="modal-body"><button type="button" class="close" data-dismiss="modal" aria-hidden="true"><i class="fa fa-2x">×</i></button>';
- } else {
- ?>
- <!doctype html>
- <html>
- <head>
- <meta charset="utf-8">
- <title><?= $page_title . " " . lang("no") . " " . $inv->id; ?></title>
- <base href="<?= base_url() ?>"/>
- <meta http-equiv="cache-control" content="max-age=0"/>
- <meta http-equiv="cache-control" content="no-cache"/>
- <meta http-equiv="expires" content="0"/>
- <meta http-equiv="pragma" content="no-cache"/>
- <link rel="shortcut icon" href="<?= $assets ?>images/icon.png"/>
- <link href="<?= $assets ?>bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
- <style type="text/css" media="all">
- body { color: #000; }
- #wrapper { max-width: 480px; margin: 0 auto; padding-top: 20px; }
- .btn { border-radius: 0; margin-bottom: 5px; }
- .table { border-radius: 3px; }
- .table th { background: #f5f5f5; }
- .table th, .table td { vertical-align: middle !important; }
- h3 { margin: 5px 0; }
- @media print {
- .no-print { display: none; }
- #wrapper { max-width: 480px; width: 100%; min-width: 250px; margin: 0 auto; }
- }
- </style>
- </head>
- <body>
- <?php } ?>
- <div id="wrapper">
- <div id="receiptData">
- <div class="no-print">
- <?php if ($message) { ?>
- <div class="alert alert-success">
- <button data-dismiss="alert" class="close" type="button">×</button>
- <?= is_array($message) ? print_r($message, true) : $message; ?>
- </div>
- <?php } ?>
- </div>
- <div id="receipt-data">
- <div class="text-center">
- <?= $Settings->header; ?>
- <p>
- <?= lang('sale') . ' ' . lang('no') . ': ' . $inv->id; ?><br>
- <?= lang("customer") . ': ' . $inv->customer_name; ?> <br>
- <?= lang("date") . ': ' . $this->tec->hrld($inv->date); ?> <br>
- </p>
- <div style="clear:both;"></div>
- <table class="table table-striped table-condensed">
- <thead>
- <tr>
- <th class="text-center col-xs-6"><?= lang('description'); ?></th>
- <th class="text-center col-xs-1"><?= lang('quantity'); ?></th>
- <th class="text-center col-xs-2"><?= lang('price'); ?></th>
- <th class="text-center col-xs-3"><?= lang('subtotal'); ?></th>
- </tr>
- </thead>
- <tbody>
- <?php
- $tax_summary = array();
- foreach ($rows as $row) {
- echo '<tr><td class="text-left">' . product_name($row->product_name) . '</td>';
- echo '<td class="text-center">' . $this->tec->formatNumber($row->quantity) . '</td>';
- echo '<td class="text-right">';
- if ($inv->total_discount != 0) {
- $price_with_discount = $this->tec->formatMoney($row->net_unit_price + $this->tec->formatDecimal($row->item_discount / $row->quantity));
- $pr_tax = $row->tax_method ?
- $this->tec->formatDecimal((($price_with_discount) * $row->tax) / 100) :
- $this->tec->formatDecimal((($price_with_discount) * $row->tax) / (100 + $row->tax));
- echo '<del>' . $this->tec->formatMoney($price_with_discount + $pr_tax) . '</del> ';
- }
- echo $this->tec->formatMoney($row->net_unit_price + ($row->item_tax / $row->quantity)) . '</td><td class="text-right">' . $this->tec->formatMoney($row->subtotal) . '</td></tr>';
- }
- ?>
- </tbody>
- <tfoot>
- <tr>
- <th colspan="2"><?= lang("total"); ?></th>
- <th colspan="2" class="text-right"><?= $this->tec->formatMoney($inv->total + $inv->product_tax); ?></th>
- </tr>
- <?php
- if ($inv->order_tax != 0) {
- echo '<tr><th colspan="2">' . lang("order_tax") . '</th><th colspan="2" class="text-right">' . $this->tec->formatMoney($inv->order_tax) . '</th></tr>';
- }
- if ($inv->total_discount != 0) {
- echo '<tr><th colspan="2">' . lang("order_discount") . '</th><th colspan="2" class="text-right">' . $this->tec->formatMoney($inv->total_discount) . '</th></tr>';
- }
- if ($Settings->rounding) {
- $round_total = $this->tec->roundNumber($inv->grand_total, $Settings->rounding);
- $rounding = $this->tec->formatMoney($round_total - $inv->grand_total);
- ?>
- <tr>
- <th colspan="2"><?= lang("rounding"); ?></th>
- <th colspan="2" class="text-right"><?= $rounding; ?></th>
- </tr>
- <tr>
- <th colspan="2"><?= lang("grand_total"); ?></th>
- <th colspan="2" class="text-right"><?= $this->tec->formatMoney($inv->grand_total + $rounding); ?></th>
- </tr>
- <?php
- } else {
- $round_total = $inv->grand_total;
- ?>
- <tr>
- <th colspan="2"><?= lang("grand_total"); ?></th>
- <th colspan="2" class="text-right"><?= $this->tec->formatMoney($inv->grand_total); ?></th>
- </tr>
- <?php
- }
- if ($inv->paid < $round_total) {
- ?>
- <tr>
- <th colspan="2"><?= lang("paid_amount"); ?></th>
- <th colspan="2" class="text-right"><?= $this->tec->formatMoney($inv->paid); ?></th>
- </tr>
- <tr>
- <th colspan="2"><?= lang("due_amount"); ?></th>
- <th colspan="2" class="text-right"><?= $this->tec->formatMoney($inv->grand_total - $inv->paid); ?></th>
- </tr>
- <?php } ?>
- </tfoot>
- </table>
- <?php
- #if ($payments) {
- echo '<table class="table table-striped table-condensed"><tbody>';
- $paid_by = lang("paid_by");
- $languageAmount = lang('amount');
- $languageChannge = lang('change');
- # $TotalAmount = Func::FloatToReal($payment->pos_paid);
- #foreach ($payments as $payment) {
- $xchange = Func::FloatToReal($fetchProduct["change"]);
- $value = Func::FloatToReal($fetchProduct["paid"] + $fetchProduct["change"]);
- echo '<tr>';
- switch ($fetchProduct["paid_by"]) {
- case 'CC':
- echo <<<EOF
- Cartão de Crédito - {$inv->pcc_type}
- Cartão de Crédito No : {$inv->cc_no}
- Títular : {$inv->cc_holder}</td>
- <td>{$languageAmount} : R$ {$value}</td>
- <td>{$languageChannge} : R$ {$xchange} </td>
- EOF;
- break;
- case 'Cheque':
- echo <<<EOF
- <td>{$paid_by} : Cheque </td>
- <td>Cheque No : {$inv->cheque_no}</td>
- <td>{$languageAmount} : R$ {$value}</td>
- <td>{$languageChannge} : R$ {$xchange} </td>
- EOF;
- break;
- case'gift_card':
- echo <<<EOF
- <td>{$paid_by} : Cartão da Loja</td>
- <td>Cartão da Loja No : {$inv->gift_card}</td>
- <td>{$languageAmount} : R$ {$value}</td>
- <td>{$languageChannge} : R$ {$xchange} </td>
- EOF;
- break;
- case 'stripe':
- echo <<<EOF
- <td>Cartão de Débito - {$inv->pcc_type} </td>
- <td>Cartão de Débido No : {$inv->cc_no} </td>
- <td>Títular : {$inv->cc_holder} </td>
- <td>{$languageAmount} : R$ {$value}</td>
- <td>{$languageChannge} : R$ {$xchange} </td>
- EOF;
- break;
- default:
- echo <<<EOF
- <td>{$paid_by} : Dinheiro</td>
- <td>{$languageAmount} : R$ {$value}</td>
- <td>{$languageChannge} : R$ {$xchange} </td>
- EOF;
- break;
- #}
- echo '</tr>';
- }
- $mesa = Func::array_table("tec_mesas", array("id" => $inv->mesa), "name");
- echo '</tbody></table>';
- echo!empty($inv->senha) ? "<p><h3>Senha : <strong><h3>{$inv->senha}</strong> </p></h3>" : "";
- echo!empty($inv->mesa) ? "<p><h3>Mesa : <strong>{$mesa}</strong> </p></h3>" : "";
- $ex1 = new QRCodeGenerator('http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=MobLanche_PDVPARATODOS.COM.BR');
- echo "<img src=" . $ex1->generate() . ">";
- # }
- ?>
- <?= $inv->note ? '<p class="text-center">' . $this->tec->decode_html($inv->note) . '</p>' : ''; ?>
- <div class="well well-sm">
- <?= $Settings->footer; ?>
- </div>
- </div>
- <div style="clear:both;"></div>
- </div>
- <?php
- if ($modal) {
- echo '</div></div></div></div>';
- } else {
- ?>
- <div id="buttons" style="padding-top:10px; text-transform:uppercase;" class="no-print">
- <hr>
- <?php if ($message) { ?>
- <div class="alert alert-success">
- <button data-dismiss="alert" class="close" type="button">×</button>
- <?= is_array($message) ? print_r($message, true) : $message; ?>
- </div>
- <?php } ?>
- <?php if ($Settings->java_applet) { ?>
- <span class="col-xs-12"><a class="btn btn-block btn-primary" onClick="printReceipt()"><?= lang("print"); ?></a></span>
- <span class="col-xs-12"><a class="btn btn-block btn-info" type="button" onClick="openCashDrawer()"><?= lang('open_cash_drawer'); ?></a></span>
- <div style="clear:both;"></div>
- <?php } else { ?>
- <span class="pull-right col-xs-12">
- <a href="javascript:window.print()" id="web_print" class="btn btn-block btn-primary"
- onClick="window.print();return false;"><?= lang("web_print"); ?></a>
- </span>
- <?php } ?>
- <!---->
- <span class="pull-left col-xs-12"><a class="btn btn-block btn-success" href="#" id="email"><?= lang("email"); ?></a></span>
- <?php if (is_array($fetchPurchase)): ?>
- <span class="pull-left col-xs-12"><a class="btn btn-block btn-primary" href="<?php echo BASE_URL . "/vendor/nfephp-org/nfephp/schemes/NFe/homologacao/pdf/{$fetchPurchase["pdf"]}" ?>" target="_blank">PDF Nfe</a></span>
- <?php endif; ?>
- <span class="col-xs-12">
- <a class="btn btn-block btn-warning" href="<?= site_url('pos'); ?>"><?= lang("back_to_pos"); ?></a>
- </span>
- <?php if (!$Settings->java_applet) { ?>
- <div style="clear:both;"></div>
- <div class="col-xs-12" style="background:#F5F5F5; padding:10px;">
- <font size="-2">
- <p style="font-weight:bold;">Favor alterar as configurações de impressão de seu browser</p>
- <p style="text-transform: capitalize;"><strong>FireFox:</strong> Arquivo > Configurar impressora > Margem &Cabeçalho/Rodapé --Nenhum--</p>
- <p style="text-transform: capitalize;"><strong>Chrome:</strong> Menu > Impressora > Disabilitar Cabeçalho/Rodapé Opções & Setar margem em branco</p></div>
- <font>
- <?php } ?>
- <div style="clear:both;"></div>
- </div>
- </div>
- <canvas id="hidden_screenshot" style="display:none;">
- </canvas>
- <div class="canvas_con" style="display:none;"></div>
- <script src="<?= $assets ?>plugins/jQuery/jQuery-2.1.4.min.js" type="text/javascript"></script>
- <?php
- if ($Settings->java_applet) {
- function drawLine($Settings) {
- $size = $Settings->char_per_line;
- $new = '';
- for ($i = 1; $i < $size; $i++) {
- $new .= '-';
- }
- $new .= ' ';
- return $new;
- }
- function printLine($str, $Settings, $sep = ":", $space = NULL) {
- $size = $space ? $space : $Settings->char_per_line;
- $lenght = strlen($str);
- list($first, $second) = explode(":", $str, 2);
- $new = $first . ($sep == ":" ? $sep : '');
- for ($i = 1; $i < ($size - $lenght); $i++) {
- $new .= ' ';
- }
- $new .= ($sep != ":" ? $sep : '') . $second;
- return $new;
- }
- function printText($text, $Settings) {
- $size = $Settings->char_per_line;
- $new = wordwrap($text, $size, "\\n");
- return $new;
- }
- function taxLine($name, $code, $qty, $amt, $tax) {
- return printLine(printLine(printLine(printLine($name . ':' . $code, '', 18) . ':' . $qty, '', 25) . ':' . $amt, '', 35) . ':' . $tax, ' ');
- }
- ?>
- <script type="text/javascript" src="<?= $assets ?>plugins/qz/js/deployJava.js"></script>
- <script type="text/javascript" src="<?= $assets ?>plugins/qz/qz-functions.js"></script>
- <script type="text/javascript">
- deployQZ('themes/<?= $Settings->theme ?>/assets/plugins/qz/qz-print.jar', '<?= $assets ?>plugins/qz/qz-print_jnlp.jnlp');
- usePrinter("<?= $Settings->receipt_printer; ?>");
- <?php /* $image = $this->tec->save_barcode($inv->reference_no); */ ?>
- function printReceipt() {
- //var barcode = 'data:image/png;base64,<?php /* echo $image; */ ?>';
- receipt = "";
- receipt += chr(27) + chr(69) + "\r" + chr(27) + "\x61" + "\x31\r";
- receipt += "<?= printText(strip_tags(preg_replace('/\s+/', ' ', $Settings->header)), $Settings); ?>" + "\n";
- receipt += " \x1B\x45\x0A\r ";
- receipt += "<?= drawLine($Settings); ?>\r\n";
- //receipt += "<?php // if($Settings->invoice_view == 1) { echo lang('tax_invoice'); } ?>\r\n";
- //receipt += "<?php // if($Settings->invoice_view == 1) { echo drawLine(); } ?>\r\n";
- receipt += "\x1B\x61\x30";
- receipt += "<?= printLine(lang("sale_no") . ": " . $inv->id, $Settings) ?>" + "\n";
- receipt += "<?= printLine(lang("sales_person") . ": " . $created_by->first_name . " " . $created_by->last_name, $Settings); ?>" + "\n";
- receipt += "<?= printLine(lang("customer") . ": " . $inv->customer_name, $Settings); ?>" + "\n";
- receipt += "<?= printLine(lang("date") . ": " . $this->tec->hrld($inv->date), $Settings); ?>" + "\n\n";
- receipt += "<?php
- $r = 1;
- foreach ($rows as $row):
- ?>";
- receipt += "<?= "#" . $r . " "; ?>";
- receipt += "<?= product_name(addslashes($row->product_name)); ?>" + "\n";
- receipt += "<?= printLine($this->tec->formatNumber($row->quantity) . "x" . $this->tec->formatMoney($row->net_unit_price + ($row->item_tax / $row->quantity)) . ": " . $this->tec->formatMoney($row->subtotal), $Settings, ' ') . ""; ?>" + "\n";
- receipt += "<?php
- $r++;
- endforeach;
- ?>";
- receipt += "\x1B\x61\x31";
- receipt += "<?= drawLine($Settings); ?>\r\n";
- receipt += "\x1B\x61\x30";
- receipt += "<?= printLine(lang("total") . ": " . $this->tec->formatMoney($inv->total + $inv->product_tax), $Settings); ?>" + "\n";
- <?php if ($inv->order_tax != 0) { ?>
- receipt += "<?= printLine(lang("tax") . ": " . $this->tec->formatMoney($inv->order_tax), $Settings); ?>" + "\n";
- <?php } ?>
- <?php if ($inv->total_discount != 0) { ?>
- receipt += "<?= printLine(lang("discount") . ": " . $this->tec->formatMoney($inv->total_discount), $Settings); ?>" + "\n";
- <?php } ?>
- <?php if ($Settings->rounding) { ?>
- receipt += "<?= printLine(lang("rounding") . ": " . $rounding, $Settings); ?>" + "\n";
- receipt += "<?= printLine(lang("grand_total") . ": " . $this->tec->formatMoney($inv->grand_total + $rounding), $Settings); ?>" + "\n";
- <?php } else { ?>
- receipt += "<?= printLine(lang("grand_total") . ": " . $this->tec->formatMoney($inv->grand_total), $Settings); ?>" + "\n";
- <?php } ?>
- <?php if ($inv->paid < $inv->grand_total) { ?>
- receipt += "<?= printLine(lang("paid_amount") . ": " . $this->tec->formatMoney($inv->paid), $Settings); ?>" + "\n";
- receipt += "<?= printLine(lang("due_amount") . ": " . $this->tec->formatMoney($inv->grand_total - $inv->paid), $Settings); ?>" + "\n\n";
- <?php } ?>
- <?php
- if ($payments) {
- foreach ($payments as $payment) {
- if ($payment->paid_by == 'cash' && $payment->pos_paid) {
- ?>
- receipt += "<?= printLine(lang("paid_by") . ": " . lang($payment->paid_by), $Settings); ?>" + "\n";
- receipt += "<?= printLine(lang("amount") . ": " . $this->tec->formatMoney($payment->pos_paid), $Settings); ?>" + "\n";
- receipt += "<?= printLine(lang("change") . ": " . ($payment->pos_balance > 0 ? $this->tec->formatMoney($payment->pos_balance) : 0), $Settings); ?>" + "\n";
- <?php } if (($payment->paid_by == 'CC' || $payment->paid_by == 'ppp' || $payment->paid_by == 'stripe') && $payment->cc_no) { ?>
- receipt += "<?= printLine(lang("paid_by") . ": " . lang($payment->paid_by), $Settings); ?>" + "\n";
- receipt += "<?= printLine(lang("amount") . ": " . $this->tec->formatMoney($payment->pos_paid), $Settings); ?>" + "\n";
- receipt += "<?= printLine(lang("card_no") . ": xxxx xxxx xxxx " . substr($payment->cc_no, -4), $Settings); ?>" + "\n";
- <?php } if ($payment->paid_by == 'gift_card') { ?>
- receipt += "<?= printLine(lang("paid_by") . ": " . lang($payment->paid_by), $Settings); ?>" + "\n";
- receipt += "<?= printLine(lang("amount") . ": " . $this->tec->formatMoney($payment->pos_paid), $Settings); ?>" + "\n";
- receipt += "<?= printLine(lang("card_no") . ": " . $payment->gc_no, $Settings); ?>" + "\n";
- <?php } if ($payment->paid_by == 'Cheque' && $payment->cheque_no) { ?>
- receipt += "<?= printLine(lang("paid_by") . ": " . lang($payment->paid_by), $Settings); ?>" + "\n";
- receipt += "<?= printLine(lang("amount") . ": " . $this->tec->formatMoney($payment->pos_paid), $Settings); ?>" + "\n";
- receipt += "<?= printLine(lang("cheque_no") . ": " . $payment->cheque_no, $Settings); ?>" + "\n";
- <?php if ($payment->paid_by == 'other' && $payment->amount) { ?>
- receipt += "<?= printLine(lang("paid_by") . ": " . lang($payment->paid_by), $Settings); ?>" + "\n";
- receipt += "<?= printLine(lang("amount") . ": " . $this->tec->formatMoney($payment->amount), $Settings); ?>" + "\n";
- receipt += "<?= printText(lang("payment_note") . ": " . $payment->note, $Settings); ?>" + "\n";
- <?php
- }
- }
- }
- }
- /* if($Settings->invoice_view == 1) {
- if(!empty($tax_summary)) {
- ?>
- receipt += "\n" + "<?= lang('tax_summary'); ?>" + "\n";
- receipt += "<?= taxLine(lang('name'),lang('code'),lang('qty'),lang('tax_excl'),lang('tax_amt')); ?>" + "\n";
- receipt += "<?php foreach ($tax_summary as $summary): ?>";
- receipt += "<?= taxLine($summary['name'],$summary['code'],$this->tec->formatNumber($summary['items']),$this->tec->formatMoney($summary['amt']),$this->tec->formatMoney($summary['tax'])); ?>" + "\n";
- receipt += "<?php endforeach; ?>";
- receipt += "<?= printLine(lang("total_tax_amount") . ":" . $this->tec->formatMoney($inv->product_tax)); ?>" + "\n";
- <?php
- }
- } */
- ?>
- receipt += "\x1B\x61\x31";
- <?php if ($inv->note) { ?>
- receipt += "<?= printText(strip_tags(preg_replace('/\s+/', ' ', $this->tec->decode_html($inv->note))), $Settings); ?>" + "\n";
- <?php } ?>
- receipt += "<?= printText(strip_tags(preg_replace('/\s+/', ' ', $Settings->footer)), $Settings); ?>" + "\n";
- receipt += "\x1B\x61\x30";
- <?php if (isset($Settings->cash_drawer_cose)) { ?>
- print(receipt, '', '<?= $Settings->cash_drawer_cose; ?>');
- <?php } else { ?>
- print(receipt, '', '');
- <?php } ?>
- }
- </script>
- <?php } ?>
- <script type="text/javascript">
- $(document).ready(function () {
- $('#email').click(function () {
- var email = prompt("<?= lang("email_address"); ?>", "<?= $customer->email; ?>");
- if (email != null) {
- $.ajax({
- type: "post",
- url: "<?= site_url('pos/email_receipt') ?>",
- data: {<?= $this->security->get_csrf_token_name(); ?>: "<?= $this->security->get_csrf_hash(); ?>", email: email, id: <?= $inv->id; ?>},
- dataType: "json",
- success: function (data) {
- alert(data.msg);
- },
- error: function () {
- alert('<?= lang('ajax_request_failed'); ?>');
- return false;
- }
- });
- }
- return false;
- });
- });
- <?php if (!$Settings->java_applet && !$noprint) { ?>
- $(window).load(function () {
- window.print();
- });
- <?php } ?>
- </script>
- </body>
- </html>
- <?php } ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement