-
Notifications
You must be signed in to change notification settings - Fork 17
/
itauJasper.php
179 lines (159 loc) · 6.38 KB
/
itauJasper.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<?php
// para rodar este exemplo é necessario adicionar no seu composer
// "quilhasoft/jasperphp":"dev-master"
// "openboleto/openboleto":"dev-master"
//require '../autoloader.php';
//require '../../../rctnet/JasperPHP/autoloader.php';
require '../../autoload.php'; // necessario rodar o autoad principal do seu composer para pegar o openboleto, e JasperPHP
use OpenBoleto\Banco\Itau;
use OpenBoleto\Agente;
use JasperPHP\Report;
//use JasperPHP\ado\TTransaction;
//use JasperPHP\ado\TLoggerHTML;
class Boleto
{
/* Variavel que armazenara os dados do boleto
/ @var array();
*/
private $data = array();
/*
* método __set()
* executado sempre que uma propriedade for atribuída.
*/
public function __set($prop, $value)
{
// verifica se existe método set_<propriedade>
if (method_exists($this, 'set_'.$prop))
{
// executa o método set_<propriedade>
call_user_func(array($this, 'set_'.$prop), $value);
}
else
{
if ($value === NULL)
{
unset($this->data[$prop]);
}
else
{
// atribui o valor da propriedade
$this->data[$prop] = $value;
}
}
}
/*
* método __get()
* executado sempre que uma propriedade for requerida
*/
public function __get($prop)
{
// verifica se existe método get_<propriedade>
if (method_exists($this, 'get_'.$prop))
{
// executa o método get_<propriedade>
return call_user_func(array($this, 'get_'.$prop));
}
else
{
// retorna o valor da propriedade
if (isset($this->data[$prop]))
{
return ($this->data[$prop]);
}
}
}
public function __construct($sequencial = null)
{
//
// aqui voce pode acessar sua base de dados e coletar os dados do boleto e preencher os campos abaixo
//
$sacado = new Agente('Fernando Maia', '023.434.234-34', 'ABC 302 Bloco N', '72000-000', 'Brasília', 'DF');
$cedente = new Agente('Empresa de cosméticos LTDA', '02.123.123/0001-11', 'CLS 403 Lj 23', '71000-000', 'Brasília', 'DF');
$boleto = new Itau(array(
// Parâmetros obrigatórios
'dataVencimento' => new DateTime('2013-01-24'),
'valor' => 23.00,
'sequencial' => $sequencial, // 8 dígitos
'sacado' => $sacado,
'cedente' => $cedente,
'agencia' => 1724, // 4 dígitos
'carteira' => 112, // 3 dígitos
'conta' => 12345, // 5 dígitos
// Parâmetro obrigatório somente se a carteira for
// 107, 122, 142, 143, 196 ou 198
'codigoCliente' => 12345, // 5 dígitos
'numeroDocumento' => $sequencial, // 7 dígitos
// Parâmetros recomendáveis
//'logoPath' => 'http://empresa.com.br/logo.jpg', // Logo da sua empresa
'contaDv' => 2,
'agenciaDv' => 1,
'descricaoDemonstrativo' => array( // Até 5
'Compra de materiais cosméticos',
'Compra de alicate',
),
'instrucoes' => array( // Até 8
'Após o dia 30/11 cobrar 2% de mora e 1% de juros ao dia.',
'Não receber após o vencimento.',
),
// Parâmetros opcionais
//'resourcePath' => '../resources',
//'moeda' => Itau::MOEDA_REAL,
//'dataDocumento' => new DateTime(),
//'dataProcessamento' => new DateTime(),
//'contraApresentacao' => true,
//'pagamentoMinimo' => 23.00,
//'aceite' => 'N',
//'especieDoc' => 'ABC',
//'usoBanco' => 'Uso banco',
//'layout' => 'layout.phtml',
//'logoPath' => 'http://boletophp.com.br/img/opensource-55x48-t.png',
//'sacadorAvalista' => new Agente('Antônio da Silva', '02.123.123/0001-11'),
//'descontosAbatimentos' => 123.12,
//'moraMulta' => 123.12,
//'outrasDeducoes' => 123.12,
//'outrosAcrescimos' => 123.12,
//'valorCobrado' => 123.12,
//'valorUnitario' => 123.12,
//'quantidade' => 1,
));
$boleto->getOutput();
$this->data = array_merge($this->data,$boleto->getData());
}
/* método para interceptar a requisição e adicionar o codigo html necessario para correta exibição do demostrativo */
public function get_demonstrativo()
{
return '<table>
<tr>
<td>'.implode('<br>',$this->data['demonstrativo']).
'</td>
</tr>
<table>';
}
/* método para interceptar a requisição e adicionar o codigo html necessario para correta exibição das instrucoes */
public function get_instrucoes()
{
return '<table>
<tr>
<td>'.implode('<br>',$this->data['instrucoes']).'
</td>
</tr>
<table>';
}
/* este metodo esta aqui para manter compatibilidade do jxml criado para o meu sistema*/
public function get_carteiras_nome()
{
return $this->data['carteira'];
}
}
// altere aqui para o nome do arquivo de configuração no diretorio config desativado mas pode ser usado por usuarios avançados
//JasperPHP\ado\TTransaction::open('dev');
// instancição do objeto :1 parametro: caminho do layout do boleto , 2 parametro : array com os parametros para consulta no banco para localizar o boleto
// pode ser passado como paramtro um array com os numeros dos boletos que serão impressos desde que criado sql dentro do arquivo jrxml(desativado nesse exemplo)
$report =new JasperPHP\Report("bol01Files/boletoCarne.jrxml",array());
//$report =new JasperPHP\Report("bol01Files/boletoA4.jrxml",array());
JasperPHP\Instructions::prepare($report); // prepara o relatorio lendo o arquivo
$report->dbData = array(new Boleto(1),new boleto(2)); // aqui voce pode construir seu array de boletos em qualquer estrutura incluindo
$report->generate(array()); // gera o relatorio
$report->out(); // gera o pdf
$pdf = JasperPHP\PdfProcessor::get(); // extrai o objeto pdf de dentro do report
$pdf->Output('boleto.pdf',"I"); // metodo do TCPF para gerar saida para o browser