1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
/** |
4
|
|
|
* MÓDULO DE EMISIÓN ELECTRÓNICA F72X |
5
|
|
|
* UBL 2.1 |
6
|
|
|
* Version 1.0 |
7
|
|
|
* |
8
|
|
|
* Copyright 2019, Jaime Cruz |
9
|
|
|
*/ |
10
|
|
|
|
11
|
|
|
namespace F72X\Tools; |
12
|
|
|
|
13
|
|
|
use F72X\F72X; |
14
|
|
|
use F72X\Sunat\DataMap; |
15
|
|
|
use F72X\Sunat\Operations; |
16
|
|
|
use F72X\Company; |
17
|
|
|
use Codelint\QRCode\QRCode; |
18
|
|
|
|
19
|
|
|
class QrGenerator { |
20
|
|
|
|
21
|
|
|
public static function getQrString(DataMap $inv) { |
22
|
|
|
$documentName = $inv->getDocumentName(); |
23
|
|
|
$qr = new QRCode(); |
24
|
|
|
$qrContent = self::getQrContent($inv); |
25
|
|
|
$qrTempPath = F72X::getTempDir() . "/QR-$documentName.png"; |
26
|
|
|
$qr->png($qrContent, $qrTempPath, 'Q', 8, 2); |
27
|
|
|
$qrs = base64_encode(file_get_contents($qrTempPath)); |
28
|
|
|
unlink($qrTempPath); |
29
|
|
|
return $qrs; |
30
|
|
|
} |
31
|
|
|
|
32
|
|
|
//---------------------------------------------------------------------- |
33
|
|
|
private static function image($frame, $pixelPerPoint = 4, $outerFrame = 4) { |
|
|
|
|
34
|
|
|
$h = count($frame); |
35
|
|
|
$w = strlen($frame[0]); |
36
|
|
|
|
37
|
|
|
$imgW = $w + 2 * $outerFrame; |
38
|
|
|
$imgH = $h + 2 * $outerFrame; |
39
|
|
|
|
40
|
|
|
$base_image = ImageCreate($imgW, $imgH); |
41
|
|
|
|
42
|
|
|
$col[0] = ImageColorAllocate($base_image, 255, 255, 255); |
|
|
|
|
43
|
|
|
$col[1] = ImageColorAllocate($base_image, 0, 0, 0); |
44
|
|
|
|
45
|
|
|
imagefill($base_image, 0, 0, $col[0]); |
46
|
|
|
|
47
|
|
|
for ($y = 0; $y < $h; $y++) { |
48
|
|
|
for ($x = 0; $x < $w; $x++) { |
49
|
|
|
if ($frame[$y][$x] == '1') { |
50
|
|
|
ImageSetPixel($base_image, $x + $outerFrame, $y + $outerFrame, $col[1]); |
51
|
|
|
} |
52
|
|
|
} |
53
|
|
|
} |
54
|
|
|
|
55
|
|
|
$target_image = ImageCreate($imgW * $pixelPerPoint, $imgH * $pixelPerPoint); |
56
|
|
|
ImageCopyResized($target_image, $base_image, 0, 0, 0, 0, $imgW * $pixelPerPoint, $imgH * $pixelPerPoint, $imgW, $imgH); |
57
|
|
|
ImageDestroy($base_image); |
58
|
|
|
|
59
|
|
|
return $target_image; |
60
|
|
|
} |
61
|
|
|
|
62
|
|
|
private static function getQrContent(DataMap $inv) { |
63
|
|
|
$ruc = Company::getRUC(); |
64
|
|
|
$invoiveType = $inv->getDocumentType(); |
65
|
|
|
$documentSeries = $inv->getDocumentSeries(); |
66
|
|
|
$seriesNumber = $inv->getDocumentNumber(); |
67
|
|
|
$igv = Operations::formatAmount($inv->getIGV()); |
68
|
|
|
$payableAmount = Operations::formatAmount($inv->getPayableAmount()); |
69
|
|
|
$issueDate = $inv->getIssueDate()->format('Y-m-d'); |
70
|
|
|
$customerDocType = $inv->getCustomerDocType(); |
71
|
|
|
$customerDocNumber = $inv->getCustomerDocNumber(); |
72
|
|
|
return "$ruc|$invoiveType|$documentSeries|$seriesNumber|$igv|$payableAmount|$issueDate|$customerDocType|$customerDocNumber"; |
73
|
|
|
} |
74
|
|
|
|
75
|
|
|
} |
76
|
|
|
|
This check looks for private methods that have been defined, but are not used inside the class.