├── .gitignore
├── .htaccess
├── OB_init.php
├── README.textile
├── exemplos
├── exemplo_banco_amazonia.php
├── exemplo_bancoob.php
├── exemplo_banrisul.php
├── exemplo_bb.php
├── exemplo_bnb.php
├── exemplo_bradesco.php
├── exemplo_brb.php
├── exemplo_caixa.php
├── exemplo_hsbc.php
└── exemplo_itau.php
├── gerar_boleto.php
├── lib
├── bancos
│ ├── BB.php
│ ├── BNB.php
│ ├── BRB.php
│ ├── BancoAmazonia.php
│ ├── Bancoob.php
│ ├── Banrisul.php
│ ├── Bradesco.php
│ ├── Caixa.php
│ ├── Hsbc.php
│ └── Itau.php
├── core
│ ├── Banco.php
│ ├── Boleto.php
│ ├── Cliente.php
│ ├── Configuracao.php
│ ├── OB.php
│ ├── Plugin.php
│ ├── Template.php
│ └── Vendedor.php
├── plugins
│ ├── Pdf.plugin.php
│ └── Pdf
│ │ ├── DomPdf_Library.php
│ │ ├── Pdf.php
│ │ ├── mPdf_Library.php
│ │ └── mpdf
│ │ └── mpdf-dir.txt
└── utils
│ ├── Barcode.php
│ ├── Date.php
│ ├── Debug.php
│ ├── Math.php
│ ├── String.php
│ ├── Validar.php
│ ├── Validate_BR.php
│ └── Validation.php
├── ob_logo.png
├── ob_logo_compacto.png
├── public
├── css
│ ├── bb.css
│ ├── blueprint
│ │ ├── ie.css
│ │ ├── print.css
│ │ └── screen.css
│ ├── caixa.css
│ └── default.css
└── images
│ ├── banco_da_amazonia.png
│ ├── banco_fiat.png
│ ├── banco_pan.png
│ ├── banco_pine.png
│ ├── bancoob.png
│ ├── banespa.png
│ ├── banestes.png
│ ├── banrisul.png
│ ├── bb.png
│ ├── besc.png
│ ├── bgn.png
│ ├── bmc.png
│ ├── bmg.png
│ ├── bnb.png
│ ├── bradesco.png
│ ├── brb.png
│ ├── bva.png
│ ├── caixa.png
│ ├── hsbc.png
│ ├── itau.png
│ ├── nossa_caixa.png
│ ├── paranabanco.png
│ ├── real.png
│ ├── safra.png
│ ├── santander.png
│ ├── sicoob.png
│ ├── sudameris.png
│ └── unibanco.png
└── templates
├── README.textile
├── blocks
├── ficha_compensacao.htm.php
└── recibo.htm.php
├── default.htm.php
└── html5.htm.php
/.gitignore:
--------------------------------------------------------------------------------
1 | logo_empresa.png
2 | esquema.png
3 | *git*
4 | *.komodoproject
5 | TODO.txt
6 | arquivos/*
7 | teste.php
8 | lib/utils/validation_component.php
9 | tests/*
10 | lib/bancos/Santander/
11 |
--------------------------------------------------------------------------------
/.htaccess:
--------------------------------------------------------------------------------
1 | Options +FollowSymlinks
2 |
3 | RewriteEngine On
4 |
5 | #Reescreve as chamadas a barcode/23836473254735243524753274527354732
6 | #para lib/utils/Barcode.php?n=23836473254735243524753274527354732
7 | RewriteRule ^barcode/([\d]{44})$ lib/utils/Barcode.php?n=$1 [L]
8 |
--------------------------------------------------------------------------------
/OB_init.php:
--------------------------------------------------------------------------------
1 | Vendedor
54 | ->setAgencia('2345')
55 | ->setConta('67890')
56 | ->setRazaoSocial('Jose Claudio Medeiros de Lima')
57 | ->setCnpj('12.345.678/0001-90')
58 | ->setEndereco('Rua dos Mororós 111 Centro, São Paulo/SP CEP 12345-678')
59 | ->setEmail('joseclaudiomedeirosdelima@uol.com.br')
60 | ;
61 | //Definindo configurações gerais
62 | $ob->Configuracao
63 | ->setLocalPagamento('Pagável em qualquer banco até o vencimento')
64 | ;
65 | //Definindo configurações do template. Variáveis enviadas para a configuração do template
66 | $ob->Template
67 | ->setTitle('ObjBoleto')
68 | ->setTemplate('html5')
69 | ->set('variavel', 'valor')
70 | ;
71 | //Identificando o cliente
72 | $ob->Cliente
73 | ->setNome('Maria Joelma Bezerra de Medeiros')
74 | ->setCpf('111.999.888-39')
75 | ->setEmail('mariajoelma85@hotmail.com')
76 | ;
77 | //Passando dados pro boleto
78 | $ob->Boleto
79 | ->setValor(129.45)
80 | ->setDiasVencimento(5)
81 | ->setNossoNumero('123456')
82 | ->setNumDocumento('873245')
83 | ;
84 | //Renderizando o boleto
85 | $ob->render();
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
--------------------------------------------------------------------------------
/exemplos/exemplo_banco_amazonia.php:
--------------------------------------------------------------------------------
1 | Vendedor
9 |
10 | ->setAgencia('7') //Agência, sem dígito. O dígito será calculado para exibir no boleto
11 | ->setConta('1')
12 | ->setConvenio('386')
13 | ->setCarteira('CNR')
14 | ->setRazaoSocial('José Claudio Medeiros de Lima')
15 | ->setCpf('012.345.678-39')
16 | ->setEndereco('Rua dos Mororós 111 Centro, São Paulo/SP CEP 12345-678')
17 | ->setEmail('joseclaudiomedeirosdelima@uol.com.br')
18 | ;
19 |
20 | //Define as configurações do boleto
21 | $ob->Configuracao
22 | ->setLocalPagamento('Pagável em qualquer banco até o vencimento')
23 | ->addInstrucao('Sr. Caixa. Não receber após 20 dias de atraso.')
24 | ->addInstrucao('Multa de 2% por atraso e 1% ao dia.')
25 | ;
26 |
27 | //Envia variáveis para ser usada nos templates
28 | $ob->Template
29 | //Define o título da página
30 | ->setTitle('PHP->OB ObjectBoleto')
31 | //Define o template que será usado
32 | ->setTemplate('html5')
33 | ;
34 |
35 | //Define as configurações do cliente
36 | $ob->Cliente
37 | ->setNome('Maria Joelma Bezerra de Medeiros')
38 | ->setCpf('111.999.888-39')
39 | ->setEmail('mariajoelma85@hotmail.com')
40 | ->setEndereco('')
41 | ->setCidade('')
42 | ->setUf('')
43 | ->setCep('')
44 | ;
45 |
46 | //Define as configurações do boleto
47 | $ob->Boleto
48 | ->setValor(15.56)
49 | ->setNumParcela(1)
50 | ->setVencimento(27,6,2014)
51 | ->setNossoNumero('123')
52 | ;
53 |
54 | //Renderiza o boleto
55 | $ob->render(); /**/
--------------------------------------------------------------------------------
/exemplos/exemplo_bancoob.php:
--------------------------------------------------------------------------------
1 | Vendedor
9 |
10 | ->setAgencia('100')
11 | ->setConta('1193')
12 | ->setCodigoCedente('1')
13 | ->setCarteira('2')
14 | ->setRazaoSocial('José Claudio Medeiros de Lima')
15 | ->setCpf('012.345.678-39')
16 | ->setEndereco('Rua dos Mororós 111 Centro, São Paulo/SP CEP 12345-678')
17 | ->setEmail('joseclaudiomedeirosdelima@uol.com.br')
18 | ;
19 |
20 | $ob->Configuracao
21 | ->setLocalPagamento('Pagável em qualquer banco até o vencimento')
22 | ;
23 |
24 | $ob->Template
25 | ->setTitle('PHP->OB ObjectBoleto')
26 | ->setTemplate('html5')
27 | ;
28 |
29 | $ob->Cliente
30 | ->setNome('Maria Joelma Bezerra de Medeiros')
31 | ->setCpf('111.999.888-39')
32 | ->setEmail('mariajoelma85@hotmail.com')
33 | ->setEndereco('')
34 | ->setCidade('')
35 | ->setUf('')
36 | ->setCep('')
37 | ;
38 |
39 | $ob->Boleto
40 | ->setValor(550)
41 | ->setNumParcela(1)
42 | ->setVencimento(4,7,2000)
43 | ->setNossoNumero('228563')
44 | ;
45 |
46 | $ob->render(); /**/
--------------------------------------------------------------------------------
/exemplos/exemplo_banrisul.php:
--------------------------------------------------------------------------------
1 | Vendedor
9 |
10 | ->setAgencia('100')
11 | ->setConta('1193')
12 | ->setCodigoCedente('1')
13 | ->setCarteira('2')
14 | ->setRazaoSocial('José Claudio Medeiros de Lima')
15 | ->setCpf('012.345.678-39')
16 | ->setEndereco('Rua dos Mororós 111 Centro, São Paulo/SP CEP 12345-678')
17 | ->setEmail('joseclaudiomedeirosdelima@uol.com.br')
18 | ;
19 |
20 | $ob->Configuracao
21 | ->setLocalPagamento('Pagável em qualquer banco até o vencimento')
22 | ;
23 |
24 | $ob->Template
25 | ->setTitle('PHP->OB ObjectBoleto')
26 | ->setTemplate('html5')
27 | ;
28 |
29 | $ob->Cliente
30 | ->setNome('Maria Joelma Bezerra de Medeiros')
31 | ->setCpf('111.999.888-39')
32 | ->setEmail('mariajoelma85@hotmail.com')
33 | ->setEndereco('')
34 | ->setCidade('')
35 | ->setUf('')
36 | ->setCep('')
37 | ;
38 |
39 | $ob->Boleto
40 | ->setValor(550)
41 | //->setDiasVencimento(5)
42 | ->setVencimento(4,7,2000)
43 | ->setNossoNumero('22832563')
44 | ;
45 |
46 | $ob->render(); /**/
--------------------------------------------------------------------------------
/exemplos/exemplo_bb.php:
--------------------------------------------------------------------------------
1 | Vendedor
9 |
10 | ->setAgencia('9999')
11 | ->setConta('00099999')
12 | ->setCarteira('18-7')
13 | ->setRazaoSocial('José Claudio Medeiros de Lima')
14 | ->setCpf('012.345.678-39')
15 | ->setEndereco('Rua dos Mororós 111 Centro, São Paulo/SP CEP 12345-678')
16 | ->setEmail('joseclaudiomedeirosdelima@uol.com.br')
17 | ->setCodigoCedente('7777777')
18 | ;
19 |
20 | $ob->Configuracao
21 | ->setLocalPagamento('Pagável em qualquer banco até o vencimento')
22 | ;
23 |
24 | $ob->Template
25 | ->setTitle('PHP->OB ObjectBoleto')
26 | ->setTemplate('html5')
27 | ;
28 |
29 | $ob->Cliente
30 | ->setNome('Maria Joelma Bezerra de Medeiros')
31 | ->setCpf('111.999.888-39')
32 | ->setEmail('mariajoelma85@hotmail.com')
33 | ->setEndereco('')
34 | ->setCidade('')
35 | ->setUf('')
36 | ->setCep('')
37 | ;
38 |
39 | $ob->Boleto
40 | ->setValor(2952.95)
41 | //->setDiasVencimento(5)
42 | ->setVencimento(6,9,2011)
43 | ->setNossoNumero('87654')
44 | ->setNumDocumento('27.030195.10')
45 | ->setQuantidade(1)
46 | ;
47 |
48 | $ob->render(); /**/
49 |
--------------------------------------------------------------------------------
/exemplos/exemplo_bnb.php:
--------------------------------------------------------------------------------
1 | Vendedor
9 |
10 | ->setAgencia('0035')
11 | ->setConta('0036098')
12 | ->setCarteira('55') //Cobrança Simples - fichamento emitido pelo cliente
13 | ->setRazaoSocial('José Claudio Medeiros de Lima')
14 | ->setCpf('012.345.678-39')
15 | ->setEndereco('Rua dos Mororós 111 Centro, São Paulo/SP CEP 12345-678')
16 | ->setEmail('joseclaudiomedeirosdelima@uol.com.br')
17 | ;
18 |
19 | $ob->Configuracao
20 | ->setLocalPagamento('Pagável em qualquer banco até o vencimento')
21 | ->addInstrucao('- Sr. Caixa, cobrar multa de 2% após o vencimento')
22 | ->addInstrucao('- Receber até 10 dias após o vencimento')
23 | ->addInstrucao('- Em caso de dúvidas entre em contato conosco: xxxx@xxxx.com.br')
24 | ;
25 |
26 | $ob->Template
27 | ->setTitle('PHP->OB ObjectBoleto')
28 | ->setTemplate('html5')
29 | ;
30 |
31 | $ob->Cliente
32 | ->setNome('Maria Joelma Bezerra de Medeiros')
33 | ->setCpf('111.999.888-39')
34 | ->setEmail('mariajoelma85@hotmail.com')
35 | ->setEndereco('')
36 | ->setCidade('')
37 | ->setUf('')
38 | ->setCep('')
39 | ;
40 |
41 | $ob->Boleto
42 | ->setValor(949.50)
43 | ->setDiasVencimento(1)
44 | //->setVencimento(18,2,2013)
45 | ->setNossoNumero('0009946')
46 | ->setNumDocumento('666688')
47 | ->setQuantidade(1)
48 | ;
49 |
50 | $ob->render(); /**/
51 |
--------------------------------------------------------------------------------
/exemplos/exemplo_bradesco.php:
--------------------------------------------------------------------------------
1 | Vendedor
9 |
10 | ->setAgencia('1172')
11 | ->setConta('0403005')
12 | ->setCarteira('06')
13 | ->setRazaoSocial('José Claudio Medeiros de Lima')
14 | ->setCpf('012.345.678-39')
15 | ->setEndereco('Rua dos Mororós 111 Centro, São Paulo/SP CEP 12345-678')
16 | ->setEmail('joseclaudiomedeirosdelima@uol.com.br')
17 | ->setCodigoCedente('0403005')
18 | ->setInsertDVAtPosFour(false)
19 | ;
20 |
21 | $ob->Configuracao
22 | ->setLocalPagamento('Pagável em qualquer banco até o vencimento')
23 | ;
24 |
25 | $ob->Template
26 | ->setTitle('PHP->OB ObjectBoleto')
27 | ->setTemplate('html5')
28 | ;
29 |
30 | $ob->Cliente
31 | ->setNome('Maria Joelma Bezerra de Medeiros')
32 | ->setCpf('111.999.888-39')
33 | ->setEmail('mariajoelma85@hotmail.com')
34 | ->setEndereco('')
35 | ->setCidade('')
36 | ->setUf('')
37 | ->setCep('')
38 | ;
39 |
40 | $ob->Boleto
41 | ->setValor(2952.95)
42 | //->setDiasVencimento(5)
43 | ->setVencimento(6,9,2011)
44 | ->setNossoNumero('75896452')
45 | ->setNumDocumento('27.030195.10')
46 | ->setQuantidade(1)
47 | ;
48 |
49 | $ob->render(); /**/
50 |
--------------------------------------------------------------------------------
/exemplos/exemplo_brb.php:
--------------------------------------------------------------------------------
1 | Vendedor
9 |
10 | ->setAgencia('172')
11 | ->setConta('1000345')
12 | ->setCarteira('1')
13 | ->setRazaoSocial('José Claudio Medeiros de Lima')
14 | ->setCpf('012.345.678-39')
15 | ->setEndereco('Rua dos Mororós 111 Centro, São Paulo/SP CEP 12345-678')
16 | ->setEmail('joseclaudiomedeirosdelima@uol.com.br')
17 | ;
18 |
19 | //Define as configurações do boleto
20 | $ob->Configuracao
21 | ->setLocalPagamento('Pagável em qualquer banco até o vencimento')
22 | ->addInstrucao('Sr. Caixa. Não receber após 20 dias de atraso.')
23 | ->addInstrucao('Multa de 2% por atraso e 1% ao dia.')
24 | ;
25 |
26 | //Envia variáveis para ser usada nos templates
27 | $ob->Template
28 | //Define o título da página
29 | ->setTitle('PHP->OB ObjectBoleto')
30 | //Define o template que será usado
31 | ->setTemplate('html5')
32 | ;
33 |
34 | //Define as configurações do cliente
35 | $ob->Cliente
36 | ->setNome('Maria Joelma Bezerra de Medeiros')
37 | ->setCpf('111.999.888-39')
38 | ->setEmail('mariajoelma85@hotmail.com')
39 | ->setEndereco('')
40 | ->setCidade('')
41 | ->setUf('')
42 | ->setCep('')
43 | ;
44 |
45 | //Define as configurações do boleto
46 | $ob->Boleto
47 | ->setValor(23)
48 | ->setNumParcela(1)
49 | ->setVencimento(24,1,2013)
50 | ->setNossoNumero(758964)
51 | ;
52 |
53 | //Renderiza o boleto
54 | $ob->render(); /**/
--------------------------------------------------------------------------------
/exemplos/exemplo_caixa.php:
--------------------------------------------------------------------------------
1 | Vendedor
9 |
10 | //->setAgencia('756')
11 | //->setCodigoCedente('10812')
12 | //->setCarteira('SR') //1 = SR - Sem Registro
13 | //->setRazaoSocial('Educandário Nossa Senhora das Vitórias')
14 | //->setCnpj('08.009.235/0001-56')
15 | //->setEndereco('Rua Augusto Severo, 200 Centro - Assu/RN 59.650-000')
16 | //->setEmail('financeiro@ensvassu.com.br')
17 |
18 | ->setAgencia('756')
19 | ->setCodigoCedente('00002')
20 | ->setCarteira('1') //1 = SR - Sem Registro
21 | ->setRazaoSocial('Educandário Nossa Senhora das Vitórias')
22 | ->setCnpj('08.009.235/0001-56')
23 | ->setEndereco('Rua Augusto Severo, 200 Centro - Assu/RN 59.650-000')
24 | ->setEmail('financeiro@ensvassu.com.br')
25 | ;
26 |
27 | $ob->Configuracao
28 | ->setLocalPagamento('Pagável em qualquer banco até o vencimento')
29 | ;
30 |
31 | $ob->Template
32 | ->setTitle('PHP->OB ObjectBoleto')
33 | ->setTemplate('html5')
34 | ;
35 |
36 | $ob->Cliente
37 | ->setNome('Maria Joelma Bezerra de Medeiros')
38 | ->setCpf('111.999.888-39')
39 | ->setEmail('mariajoelma85@hotmail.com')
40 | ->setEndereco('')
41 | ->setCidade('')
42 | ->setUf('')
43 | ->setCep('')
44 | ;
45 |
46 | $ob->Boleto
47 | //->setValor(195)
48 | //->setDiasVencimento(5)
49 | //->setVencimento(31,1,2013)
50 | //->setNossoNumero('000000368101138')
51 | //->setNumDocumento('00002')
52 | //->setQuantidade(1)
53 | ->setValor(123.5)
54 | ->setVencimento(17,6,2002)
55 | ->setNossoNumero('0000000000000017')
56 | ->setNumDocumento('00002')
57 | ->setQuantidade(1)
58 | ;
59 |
60 | $ob->render(); /**/
61 |
--------------------------------------------------------------------------------
/exemplos/exemplo_hsbc.php:
--------------------------------------------------------------------------------
1 | Vendedor
9 |
10 | ->setAgencia('100')
11 | ->setConta('1122334')
12 | ->setCodigoCedente('1122334')
13 | ->setCarteira('CNR')
14 | ->setRazaoSocial('José Claudio Medeiros de Lima')
15 | ->setCpf('012.345.678-39')
16 | ->setEndereco('Rua dos Mororós 111 Centro, São Paulo/SP CEP 12345-678')
17 | ->setEmail('joseclaudiomedeirosdelima@uol.com.br')
18 | ;
19 |
20 | $ob->Configuracao
21 | ->setLocalPagamento('Pagável em qualquer banco até o vencimento')
22 | ;
23 |
24 | $ob->Template
25 | ->setTitle('PHP->OB ObjectBoleto')
26 | ->setTemplate('html5')
27 | ;
28 |
29 | $ob->Cliente
30 | ->setNome('Maria Joelma Bezerra de Medeiros')
31 | ->setCpf('111.999.888-39')
32 | ->setEmail('mariajoelma85@hotmail.com')
33 | ->setEndereco('')
34 | ->setCidade('')
35 | ->setUf('')
36 | ->setCep('')
37 | ;
38 |
39 | $ob->Boleto
40 | ->setValor(2952.95)
41 | ->setVencimento(5,6,2011)
42 | ->setNossoNumero('0000012345678943')
43 | ;
44 |
45 | $ob->render();
46 |
--------------------------------------------------------------------------------
/exemplos/exemplo_itau.php:
--------------------------------------------------------------------------------
1 | Vendedor
9 |
10 | ->setAgencia('0148')
11 | ->setConta('34851')
12 | ->setCarteira('175')
13 | ->setRazaoSocial('José Claudio Medeiros de Lima')
14 | ->setCpf('012.345.678-39')
15 | ->setEndereco('Rua dos Mororós 111 Centro, São Paulo/SP CEP 12345-678')
16 | ->setEmail('joseclaudiomedeirosdelima@uol.com.br')
17 | ;
18 |
19 | $ob->Configuracao
20 | ->setLocalPagamento('Pagável em qualquer banco até o vencimento')
21 | ;
22 |
23 | $ob->Template
24 | ->setTitle('PHP->OB ObjectBoleto')
25 | ->setTemplate('html5')
26 | ;
27 |
28 | $ob->Cliente
29 | ->setNome('Maria Joelma Bezerra de Medeiros')
30 | ->setCpf('111.999.888-39')
31 | ->setEmail('mariajoelma85@hotmail.com')
32 | ->setEndereco('')
33 | ->setCidade('')
34 | ->setUf('')
35 | ->setCep('')
36 | ;
37 |
38 | $ob->Boleto
39 | ->setValor(666.06)
40 | ->setNumParcela(1)
41 | ->setVencimento(5,3,2006)
42 | ->setNossoNumero('51')
43 | ;
44 |
45 | $ob->render(); /**/
--------------------------------------------------------------------------------
/gerar_boleto.php:
--------------------------------------------------------------------------------
1 | Vendedor
9 |
10 | ->setAgencia('0016')
11 | ->setConta('1193')
12 | ->setCarteira('55')
13 | ->setRazaoSocial('José Claudio Medeiros de Lima')
14 | ->setCpf('012.345.678-39')
15 | ->setEndereco('Rua dos Mororós 111 Centro, São Paulo/SP CEP 12345-678')
16 | ->setEmail('joseclaudiomedeirosdelima@uol.com.br')
17 | ;
18 |
19 | $ob->Configuracao
20 | ->setLocalPagamento('Pagável em qualquer banco até o vencimento')
21 | ;
22 |
23 | $ob->Template
24 | ->setTitle('PHP->OB ObjectBoleto')
25 | ->setTemplate('html5')
26 | ->set('instrucao', array('linha1', 'linha2', 'linha3'))
27 | ;
28 |
29 | $ob->Cliente
30 | ->setNome('Maria Joelma Bezerra de Medeiros')
31 | ->setCpf('111.999.888-39')
32 | ->setEmail('mariajoelma85@hotmail.com')
33 | ->setEndereco('')
34 | ->setCidade('')
35 | ->setUf('')
36 | ->setCep('')
37 | ;
38 |
39 | $ob->Boleto
40 | ->setValor(1000)
41 | //->setDiasVencimento(5)
42 | ->setVencimento(10,9,2000)
43 | ->setNossoNumero('1234567')
44 | ->setNumDocumento('27.030195.10')
45 | ->setQuantidade(1)
46 | ;
47 |
48 | $ob->render(); /**/
49 | /*
50 | $ob->Vendedor
51 | ->setAgencia('1565')
52 | ->setConta('87000000414')
53 | ->setCodigoCedente('87000000414')
54 | ->setCarteira('55')
55 | ->setRazaoSocial('José Claudio Medeiros de Lima')
56 | ->setCpf('012.345.678-39')
57 | ->setEndereco('Rua dos Mororós 111 Centro, São Paulo/SP CEP 12345-678')
58 | ->setEmail('joseclaudiomedeirosdelima@uol.com.br')
59 | ;
60 |
61 | $ob->Configuracao
62 | ->setLocalPagamento('Pagável em qualquer banco até o vencimento')
63 | ;
64 |
65 | $ob->Template
66 | ->setTitle('PHP->OB ObjectBoleto')
67 | ->setTemplate('html5')
68 | ;
69 |
70 | $ob->Cliente
71 | ->setNome('Maria Joelma Bezerra de Medeiros')
72 | ->setCpf('111.999.888-39')
73 | ->setEmail('mariajoelma85@hotmail.com')
74 | ->setEndereco('')
75 | ->setCidade('')
76 | ->setUf('')
77 | ->setCep('')
78 | ;
79 |
80 | $ob->Boleto
81 | ->setValor(1000)
82 | ->setDiasVencimento(5)
83 | //->setVencimento(10,9,2000)
84 | ->setNossoNumero('1234567')
85 | ->setNumDocumento('27.030195.10')
86 | ->setQuantidade(1)
87 | ;
88 |
89 | $ob->render();/**/
--------------------------------------------------------------------------------
/lib/bancos/BB.php:
--------------------------------------------------------------------------------
1 |
10 | @package ObjectBoleto http://github.com/klawdyo/PHP-Object-Boleto
11 | @subpackage ObjectBoleto.Lib.Bancos
12 | @license http://www.opensource.org/licenses/mit-license.php The MIT License
13 |
14 | -----------------------
15 | CHANGELOG
16 | -----------------------
17 | 17/05/2011
18 | [+] Inicial
19 |
20 |
21 |
22 | */
23 | class BB extends Banco{
24 | public $Codigo = '001';
25 | public $Nome = 'Banco do Brasil';
26 | public $Css = 'bb.css';
27 | public $Image = 'bb.png';
28 |
29 | public $tamanhos = array(
30 | #Campos comuns a todos os bancos
31 | 'Banco' => 3, //identificação do banco
32 | 'Moeda' => 1, //Código da moeda: real=9
33 | 'DV' => 1, //Dígito verificador geral da linha digitável
34 | 'FatorVencimento' => 4, //Fator de vencimento (Dias passados desde 7/out/1997)
35 | 'Valor' => 10, //Valor nominal do título
36 | #Campos variávies
37 | 'Agencia' => 4, //Código da agencia, sem dígito
38 | 'Conta' => 8, //Número da conta
39 | 'CodigoCedente' => 6, //Número do convênio fornecido pelo banco
40 | 'DigitoConta' => 1, //Dígito da conta do Cedente
41 | 'NossoNumero' => 5, //Nosso número
42 | 'DigitoNossoNumero' => 5, //Dígito do nosso número
43 | 'Carteira' => 2, //Código da carteira
44 | );
45 |
46 | /*
47 | @var string $layoutCodigoBarras
48 | armazena o layout que será usado para gerar o código de barras desse banco.
49 | Cada variável é precedida por dois-pontos (:), que serão substituídas
50 | pelos seus respectivos valores
51 | */
52 | // public $layoutCodigoBarras = ':Banco:Moeda:FatorVencimento:Valor:CodigoCedente:NossoNumero:Agencia:Conta:Carteira';
53 |
54 | /**
55 | * particularidade() Faz em tempo de execução mudanças que sejam imprescindíveis
56 | * para a geração correta do código de barras
57 | * Especificamente para o Hsbc, temos duas particularidas: Data no formato juliano, e
58 | * um dígito verificador triplo para o nosso número.
59 | *
60 | *
61 | * @version 0.1 28/05/2011 Initial
62 | */
63 | public function particularidade($object){
64 | switch ($object->Vendedor->Carteira) {
65 | case '18-6':
66 | $object->Boleto->NossoNumero = $object->Data['CodigoCedente'] . Math::Mod11($object->Data['NossoNumero'], 0, 0, true);
67 | break;
68 | case '18-6-17':
69 | $this->layoutCodigoBarras = ':Banco:Moeda:FatorVencimento:Valor:CodigoCedente:NossoNumero21';
70 | break;
71 | case '18-7':
72 | $this->layoutCodigoBarras = ':Banco:Moeda:FatorVencimento:Valor000000:CodigoCedente:NossoNumero:Carteira';
73 | $object->Boleto->NossoNumero = $object->Data['CodigoCedente'] . $object->Data['NossoNumero'];
74 | break;
75 | case '18-8':
76 | $this->layoutCodigoBarras = ':Banco:Moeda:FatorVencimento:Valor000000:CodigoCedente:NossoNumero:Carteira';
77 | $object->Boleto->NossoNumero = $object->Data['CodigoCedente'] . Math::Mod11($object->Data['NossoNumero'], 0, 0, true);
78 | break;
79 | }
80 | $object->Vendedor->Carteira = '18';
81 | //Gerando o número do dígito da conta
82 | $object->Data['DigitoConta'] = Math::Mod11($object->Cliente->Conta);
83 | $object->Data['DigitoNossoNumero'] = Math::Mod11($object->Boleto->NossoNumero);
84 | }
85 |
86 | /*
87 | @var $carteiras
88 | Identifica as carteiras disponíveis para esse banco.
89 |
90 | - A primeira carteira sempre é a carteira padrão.
91 | - Se a carteira for um array, esse array deverá conter as diferenças
92 | nos tamanhos entre essa carteira e a carteira padrão. Se for uma
93 | string, será considerado que os tamanahos são os mesmos da carteira
94 | padrão, e o valor será o nome da carteira.
95 | - Só é necessário informar os campos cujos tamanhos sejam diferentes
96 | dos da carteira padrão.
97 | Abaixo, "CNR" é a carteira padrão, e "CNR Fácil" é a segunda opção
98 | de carteira. No "CNR Fácil", há apenas as mudanças no NossoNumero e no
99 | CodigoCedente. Os demais campos são iguais
100 | */
101 | public $carteiras = array(
102 | '18-6',
103 | '18-6-17' => array('NossoNumero' => 17, 'CodigoCedente' => 7),
104 | '18-7' => array('NossoNumero' => 10, 'CodigoCedente' => 7),
105 | '18-8' => array('NossoNumero' => 9, 'CodigoCedente' => 8)
106 | );
107 |
108 | /*
109 | @var array $obrigatorios
110 | Armazena os campos obrigatórios para a geração do código de
111 | barras e a linha digitável neste banco, assim como a emissão
112 | do boleto bancário
113 | */
114 | public $obrigatorios = array(
115 | 'Agencia', 'CodigoCedente',
116 | 'Nome', 'Valor', 'Vencimento',
117 | 'Banco', 'Moeda', 'NossoNumero', 'Carteira'
118 | );
119 |
120 |
121 |
122 |
123 |
124 | }
--------------------------------------------------------------------------------
/lib/bancos/BNB.php:
--------------------------------------------------------------------------------
1 |
10 | @package ObjectBoleto http://github.com/klawdyo/PHP-Object-Boleto
11 | @subpackage ObjectBoleto.Lib.Bancos
12 | @license http://www.opensource.org/licenses/mit-license.php The MIT License
13 |
14 | -----------------------
15 | CHANGELOG
16 | -----------------------
17 | 25/05/2011
18 | [+] Inicial
19 |
20 |
21 |
22 | */
23 | class BNB extends Banco{
24 | public $Codigo = '004';
25 | public $Nome = 'Banco do Nordeste';
26 | //public $Css = 'bnb.css';
27 | public $Image = 'bnb.png';
28 |
29 | /*
30 | @var array $tamanhos
31 | Armazena os tamanhos dos campos na geração do código de barras
32 | e da linha digitável
33 | */
34 | public $tamanhos = array(
35 | #Campos comuns a todos os bancos
36 | 'Banco' => 3, //identificação do banco
37 | 'Moeda' => 1, //Código da moeda: real=9
38 | 'DV' => 1, //Dígito verificador geral da linha digitável
39 | 'FatorVencimento' => 4, //Fator de vencimento (Dias passados desde 7/out/1997)
40 | 'Valor' => 10, //Valor nominal do título
41 | #Campos variávies
42 | 'Agencia' => 4, //Código da agencia, sem dígito
43 | 'Conta' => 7, //Número da conta
44 | 'DigitoConta' => 1, //Dígito da conta do Cedente
45 | 'NossoNumero' => 7, //Nosso número
46 | 'DigitoNossoNumero' => 1, //Dígito do nosso número
47 | 'Carteira' => 2, //Código da carteira
48 | // 'Zeros' => 3, //Zeros
49 | );
50 |
51 | /*
52 | @var string $layoutCodigoBarras
53 | armazena o layout que será usado para gerar o código de barras desse banco.
54 | Cada variável é precedida por dois-pontos (:), que serão substituídas
55 | pelos seus respectivos valores
56 | */
57 | public $layoutCodigoBarras = ':Banco:Moeda:FatorVencimento:Valor:Agencia:Conta:DigitoConta:NossoNumero:DigitoNossoNumero:Carteira000';
58 |
59 | /**
60 | * particularidade() Faz em tempo de execução mudanças que sejam imprescindíveis
61 | * para a geração correta do código de barras
62 | *
63 | *
64 | *
65 | * @version 0.1 28/05/2011 Initial
66 | */
67 | public function particularidade($object){
68 | $object->Boleto->NossoNumero = Math::Mod11($object->Boleto->NossoNumero, 0, 0, true);
69 | $object->Data['DigitoConta'] = Math::Mod10($object->Data['Conta']);
70 | $object->Data['DigitoNossoNumero'] = Math::Mod10($object->Data['NossoNumero']);
71 | }
72 |
73 | }
--------------------------------------------------------------------------------
/lib/bancos/BRB.php:
--------------------------------------------------------------------------------
1 |
10 | @package ObjectBoleto http://github.com/klawdyo/PHP-Object-Boleto
11 | @subpackage ObjectBoleto.Lib.Bancos
12 | @license http://www.opensource.org/licenses/mit-license.php The MIT License
13 |
14 | -----------------------
15 | CHANGELOG
16 | -----------------------
17 | 18/10/2013
18 | [+] Inicial
19 |
20 |
21 |
22 | */
23 | class BRB extends Banco{
24 | public $Codigo = '070';
25 | public $Nome = 'Banco de Brasília';
26 | //public $Css = 'bnb.css';
27 | public $Image = 'brb.png';
28 |
29 | /*
30 | @var array $tamanhos
31 | Armazena os tamanhos dos campos na geração do código de barras
32 | e da linha digitável
33 |
34 | ----
35 | Formatação no bloqueto
36 | ----
37 | Os 3 primeiros campos da chave ASBACE (zeros, agencia e conta), devem ser separados
38 | por um traço ou espaço e impressos no quadrilátero "Agência/Código Cedente" no bloqueto
39 | de cobrança
40 | Ex.:
41 | Agência/ Código do Cedente
42 | 000–058-6002006
43 |
44 | Os demais campos são juntos e impressos no quadrilátero "Nosso Número"
45 | Ex.:
46 | Nosso Número
47 | 100000107045
48 |
49 | ----
50 | Descrição dos campos
51 | ----
52 | O campo "Carteira" (ou "categoria") identifica os tipos de cobrança. Que são:
53 | Tipo "1" - Cobrança direta sem registro
54 | - Bloqueto pré impresso fornecido pelo BRB- Banco de Brasília S.A ao cedente;
55 | - Emissão própria do cedente em papel A4;
56 | - Impressão local pelo cedente em papel A4 utilizando o módulo de Cobrança Offline)
57 | Tipo "2" - Cobrança direta com registro
58 | - Bloqueto impresso pelo cliente e entregue diretamente ao Sacado. É necessário a
59 | transmissão do arquivo de remessa para o Banco.
60 |
61 | O campo "sequencial", ou "nosso número", é montado a critério do cedente. Pode
62 | ser um número sequencial iniciado em 1, ou um número composto.
63 | Ex.: As 2 primeiras posições pode ser o ano, e as outras 4 uma sequência. O mais
64 | importante é que esse número não se repita
65 |
66 | O campo "banco" sempre é 070, que é o código para Banco de Brasília S.A.
67 |
68 | DV1 e DV2 são calculados a partir das 23 posições anteriores
69 |
70 | */
71 | public $tamanhos = array(
72 | #Campos comuns a todos os bancos
73 | 'Banco' => 3, //identificação do banco
74 | 'Moeda' => 1, //Código da moeda: real=9
75 | 'DV' => 1, //Dígito verificador geral da linha digitável
76 | 'FatorVencimento' => 4, //Fator de vencimento (Dias passados desde 7/out/1997)
77 | 'Valor' => 10, //Valor nominal do título
78 | #Campos variávies. Neste banco, chamado de Chave ASBACE, com 25 posições
79 | //'Zeros' => 3 //Zeros
80 | 'Agencia' => 3, //Código da agencia, sem dígito
81 | 'Conta' => 7, //Número da conta
82 | 'Categoria' => 1, //Carteira, chama de "Categoria" por este banco
83 | 'NossoNumero' => 6, //Nosso número, também chamado de sequencial
84 | 'Banco' => 3, //Código do Banco: 070
85 | 'DV1' => 1, //Dígito verificador 1, baseado nos 23 algarismos anteriores
86 | 'DV2' => 1, //Dígito verificador 2, baseado nos 24 algarismos anteriores, incluindo o DV1
87 | );
88 |
89 | /*
90 | @var string $layoutCodigoBarras
91 | armazena o layout que será usado para gerar o código de barras desse banco.
92 | Cada variável é precedida por dois-pontos (:), que serão substituídas
93 | pelos seus respectivos valores
94 | */
95 | public $layoutCodigoBarras = ':Banco:Moeda:FatorVencimento:Valor000:Agencia:Conta:Categoria:NossoNumero:Banco:DV1:DV2';
96 |
97 |
98 | /**
99 | * particularidade() Faz em tempo de execução mudanças que sejam imprescindíveis
100 | * para a geração correta do código de barras
101 | *
102 | *
103 | *
104 | * @version 0.1 18/10/2013 Initial
105 | */
106 | public function particularidade($object){
107 | //Formato os dados
108 | $object->Data['Categoria'] = $object->Vendedor->Carteira;
109 | $object->Data['DV1'] = $this->dv1($object->Data);
110 | $object->Data['DV2'] = $this->dv2($object->Data);
111 |
112 | //Formato o Nosso Número de acordo com o padrão do banco
113 | $object->Boleto->NossoNumero = $this->layoutNossoNumero($object->Data);
114 | }
115 |
116 | /**
117 | * Formata o Nosso Número desse banco
118 | *
119 | * @version 0.1 18/1/2013
120 | *
121 | * @param array $data Array com todos os dados constantes na classe
122 | * @return string String formatada no padrão do Nosso Número do banco
123 | */
124 | public function layoutNossoNumero($data){
125 | return String::insert(':Categoria:NossoNumero:Banco:DV1:DV2', $data);
126 | }
127 |
128 | /**
129 | * Formata o campo Agência/Codigo do Cliente no boleto, de acordo com as especificações de cada banco
130 | * Esse método é opcional na classe, e quando não é declarado, o boleto bancário exibe
131 | * a agência com dígito e a conta com dígito, no formato: 123-4/ 23346-3
132 | *
133 | * @version 0.1 18/01/2013 Initial
134 | *
135 | * @param array $data Array com todos os dados constantes na classe
136 | * @return string String formatada no padrão do Nosso Número do banco
137 | */
138 | public function agenciaCodigoCedente(){
139 | return String::insert('000-:Agencia-:Conta', $this->parent->Data);
140 | }
141 |
142 | /**
143 | * Cálculo do Dígito Verificador 1
144 | *
145 | * Módulo 10 das 23 posições anteriores da chave ASBACE
146 | *
147 | * @version 0.1 18/10/2013
148 | *
149 | * @param array $data Array com todos os dados constantes na classe
150 | * @return int Inteiro contendo o dígito procurado
151 | */
152 | public function dv1($data){
153 | //pr($data);
154 | $string = String::insert('000:Agencia:Conta:Categoria:NossoNumero:Banco', $data);
155 | //pr('00017201326131758964070');
156 | //pr($string);
157 | //pr(Math::Mod11($string, 0, 0, false, 7));
158 | //pr(Math::Mod10($string));
159 | return Math::Mod10($string);
160 | }
161 |
162 | /**
163 | * Cálculo do Dígito Verificador 2
164 | *
165 | * Módulo 10 das 24 posições anteriores da chave ASBACE, incluindo o DV1
166 | *
167 | * @version 0.1 18/10/2013
168 | *
169 | * @param array $data Array com todos os dados constantes na classe
170 | * @return int Inteiro contendo o dígito procurado
171 | */
172 | public function dv2($data){
173 | $string = String::insert('000:Agencia:Conta:Carteira:NossoNumero:Banco:DV1', $data);
174 | //pr($string);
175 | return Math::Mod11($string, 0, 0, false, 7);
176 | }
177 | }
--------------------------------------------------------------------------------
/lib/bancos/BancoAmazonia.php:
--------------------------------------------------------------------------------
1 |
10 | @package ObjectBoleto http://github.com/klawdyo/PHP-Object-Boleto
11 | @subpackage ObjectBoleto.Lib.Bancos
12 | @license http://www.opensource.org/licenses/mit-license.php The MIT License
13 |
14 | -----------------------
15 | CHANGELOG
16 | -----------------------
17 | 19/10/2013
18 | [+] Inicial
19 |
20 |
21 |
22 | */
23 | class BancoAmazonia extends Banco{
24 | public $Codigo = '003';
25 | public $Nome = 'Banco da Amazônia';
26 | //public $Css = 'bnb.css';
27 | public $Image = 'banco_da_amazonia.png';
28 |
29 | /*
30 | @var array $tamanhos
31 | Armazena os tamanhos dos campos na geração do código de barras
32 | e da linha digitável
33 |
34 | ----
35 | Descrição dos campos
36 | ----
37 | O campo "sequencial", ou "nosso número", é montado a critério do cedente. Precisa
38 | ser um número único com no máximo 16 caracteres
39 | */
40 | public $tamanhos = array(
41 | #Campos comuns a todos os bancos
42 | 'Banco' => 3, //identificação do banco
43 | 'Moeda' => 1, //Código da moeda: real=9
44 | 'DV' => 1, //Dígito verificador geral da linha digitável
45 | 'FatorVencimento' => 4, //Fator de vencimento (Dias passados desde 7/out/1997)
46 | 'Valor' => 10, //Valor nominal do título
47 | #Campos variávies.
48 | 'AgComDigito' => 4, //Agencia, COM dígito calculado pelo Mod11
49 | 'Convenio' => 4, //Número do convênio firmado com o banco
50 | 'NossoNumero' => 16, //Nosso número, também chamado de sequencial.
51 | //'Identificador' => 1, //Identificador no Sistema: 8. Sempre 8
52 | );
53 |
54 | /*
55 | @var string $layoutCodigoBarras
56 | armazena o layout que será usado para gerar o código de barras desse banco.
57 | Cada variável é precedida por dois-pontos (:), que serão substituídas
58 | pelos seus respectivos valores
59 | */
60 | public $layoutCodigoBarras = ':Banco:Moeda:FatorVencimento:Valor:AgComDigito:Convenio:NossoNumero8';
61 |
62 |
63 | /**
64 | * particularidade() Faz em tempo de execução mudanças que sejam imprescindíveis
65 | * para a geração correta do código de barras
66 | *
67 | *
68 | *
69 | * @version 0.1 18/10/2013 Initial
70 | */
71 | public function particularidade($object){
72 | //Inserindo a informação de convênio, com 4 dígitos
73 | $object->Data['Convenio'] = OB::zeros($object->Vendedor->Convenio, 4);
74 |
75 | //Incluindo os dados da agencia com o dígito, exigência do boleto e
76 | //necessário para criar o código de barras e a linha digitável
77 | $object->Data['AgComDigito'] = OB::zeros(Math::Mod11($object->Vendedor->Agencia, 0,0,true,9,''),4);
78 |
79 | //Formato o "Nosso Número" que é enviado pro boleto de acordo
80 | //com o padrão do banco, com 16 caracteres
81 | $object->Boleto->NossoNumero = OB::zeros($object->Data['NossoNumero'], 16);
82 | }
83 |
84 | /**
85 | * Formata o Nosso Número desse banco
86 | *
87 | * @version 0.1 18/1/2013
88 | *
89 | * @param array $data Array com todos os dados constantes na classe
90 | * @return string String formatada no padrão do Nosso Número do banco
91 | */
92 | //public function layoutNossoNumero($data){
93 | //return String::insert(':NossoNumero:Banco:DV1:DV2', $data);
94 | //}
95 |
96 | /**
97 | * Formata o campo Agência/Codigo do Cliente no boleto, de acordo com as especificações de cada banco
98 | * Esse método é opcional na classe, e quando não é declarado, o boleto bancário exibe
99 | * a agência com dígito e a conta com dígito, no formato: 123-4/ 23346-3
100 | *
101 | * @version 0.1 18/01/2013 Initial
102 | *
103 | * @param array $data Array com todos os dados constantes na classe
104 | * @return string String formatada no padrão do Nosso Número do banco
105 | */
106 | public function agenciaCodigoCedente(){
107 | $data = $this->parent->Data;
108 | $string = OB::zeros(Math::Mod11($data['Agencia'], 0,0, true), 5) . ' / ' . OB::zeros(Math::Mod11($data['Conta'], 0,0, true), 7);
109 |
110 | return $string;
111 | }
112 | }
--------------------------------------------------------------------------------
/lib/bancos/Bancoob.php:
--------------------------------------------------------------------------------
1 |
10 | @package ObjectBoleto http://github.com/klawdyo/PHP-Object-Boleto
11 | @subpackage ObjectBoleto.Lib.Bancos
12 | @license http://www.opensource.org/licenses/mit-license.php The MIT License
13 |
14 | -----------------------
15 | CHANGELOG
16 | -----------------------
17 | 28/05/2011
18 | [+] Inicial
19 |
20 |
21 |
22 | */
23 | class Bancoob extends Banco{
24 | public $Codigo = '756';
25 | public $Nome = 'Bancoob';
26 | //public $Css;
27 | public $Image = 'bancoob.png';
28 |
29 | /*
30 | @var array $tamanhos
31 | Armazena os tamanhos dos campos na geração do código de barras
32 | e da linha digitável
33 |
34 | 1 5 10 15 20 25 30 35 40 44
35 | | | | | | | | | | |
36 | 75692100100000550002010001000000111228563001
37 | └-┘↓↓└--┘└--------┘↓└--┘└┘└-----┘└┘└----┘└-┘
38 | | || | | | | | | | | └--- Número da Parcela do boleto
39 | | || | | | | | | | └-------- Nosso número
40 | | || | | | | | | └------------ Ano da emisão
41 | | || | | | | | └---------------- Código do Cedente
42 | | || | | | | └--------------------- Modalidade de cobrança (01)
43 | | || | | | └------------------------ Agência
44 | | || | | └-------------------------- Carteira
45 | | || | └-------------------------------- Valor
46 | | || └-------------------------------------- Fator de Vencimento
47 | | |└----------------------------------------- Dígito do código de barras
48 | | └------------------------------------------ Código da moeda
49 | └-------------------------------------------- Código do banco
50 |
51 |
52 | */
53 | public $tamanhos = array(
54 | #Campos comuns a todos os bancos
55 | 'Banco' => 3, //identificação do banco
56 | 'Moeda' => 1, //Código da moeda: real=9
57 | 'DV' => 1, //Dígito verificador geral da linha digitável
58 | 'FatorVencimento' => 4, //Fator de vencimento (Dias passados desde 7/out/1997)
59 | 'Valor' => 10, //Valor nominal do título
60 | #Campos variávies
61 | 'Carteira' => 1, //Código da agência
62 | 'Agencia' => 4, //Código do cedente
63 | //'ModalidadeCobranca'=> 2, //Nosso número
64 | 'CodigoCedente' => 7, //Nosso número
65 | 'AnoEmissao' => 2, //Nosso número //São 8 números, mas os 2 primeiros são sempre referente ao ano de emissão do boleto. Exemplo: 2011, todos os nossos números devem iniciar com 11
66 | 'NossoNumero' => 6, //Nosso número //São 8 números, mas os 2 primeiros são sempre referente ao ano de emissão do boleto. Exemplo: 2011, todos os nossos números devem iniciar com 11
67 | 'NumParcela' => 3, //Nosso número
68 | );
69 |
70 | /*
71 | @var string $layoutCodigoBarras
72 | Armazena o layout que será usado para gerar o código de barras desse banco.
73 | Cada variável é precedida por dois-pontos (:), que serão substituídas
74 | pelos seus respectivos valores
75 | */
76 | public $layoutCodigoBarras = ':Banco:Moeda:FatorVencimento:Valor:Carteira:Agencia01:CodigoCedente:AnoEmissao:NossoNumero:NumParcela';
77 |
78 | /**
79 | * particularidade() Faz em tempo de execução mudanças que sejam imprescindíveis
80 | * para a geração correta do código de barras
81 | * Particularmente para o Banrisul, ele acrescenta ao array OB::$Data, que
82 | * guarda as variáveis que geram o código de barras, uma nova variável
83 | * $DuploDigito, específica desse banco
84 | *
85 | * @version 0.1 28/05/2011 Initial
86 | */
87 | public function particularidade($object){
88 | $object->Data['NumParcela'] = OB::zeros($object->Boleto->NumParcela, 3);
89 | $object->Data['AnoEmissao'] = date('y');
90 | $object->Boleto->NossoNumero = Math::Mod11($object->Boleto->NossoNumero, 0, 0, true);
91 | }
92 | }
--------------------------------------------------------------------------------
/lib/bancos/Banrisul.php:
--------------------------------------------------------------------------------
1 |
10 | @package ObjectBoleto http://github.com/klawdyo/PHP-Object-Boleto
11 | @subpackage ObjectBoleto.Lib.Bancos
12 | @license http://www.opensource.org/licenses/mit-license.php The MIT License
13 |
14 | -----------------------
15 | CHANGELOG
16 | -----------------------
17 | 28/05/2011
18 | [+] Inicial
19 |
20 |
21 |
22 | */
23 | class Banrisul extends Banco{
24 | public $Codigo = '041';
25 | public $Nome = 'Banrisul';
26 | //public $Css;
27 | public $Image = 'banrisul.png';
28 |
29 | /*
30 | @var array $tamanhos
31 | Armazena os tamanhos dos campos na geração do código de barras
32 | e da linha digitável
33 |
34 | Especificações sobre as posições 20 a 44 do código de barras
35 | Posições 20 a 20 Produto:
36 | "1" Cobrança Normal, Fichário emitido pelo BANRISUL
37 | "2" Cobrança Direta, Fichário emitido pelo CLIENTE.
38 | Posição 21 a 21 Constante "1"
39 | Posição 22 a 24 Agência Cedente sem Número de Controle.
40 | Posição 25 a 31 Código do Cedente sem Número de Controle.
41 | Posição 32 a 39 Nosso Número sem Número de Controle.
42 | Posição 40 a 42 Constante "041".
43 | Posição 43 a 44 Duplo Dígito referente às posições 20 a 42 (módulos 10 e 11).
44 |
45 |
46 | 1 5 10 15 20 25 30 35 40 44
47 | | | | | | | | | | |
48 | 0419 100100000550002110000000012283256304168 //manual
49 | 04191100100000550002110000000012283256304168 //gerado
50 | | | \/
51 | dv dig.duplo
52 |
53 | */
54 | public $tamanhos = array(
55 | #Campos comuns a todos os bancos
56 | 'Banco' => 3, //identificação do banco
57 | 'Moeda' => 1, //Código da moeda: real=9
58 | 'DV' => 1, //Dígito verificador geral da linha digitável
59 | 'FatorVencimento' => 4, //Fator de vencimento (Dias passados desde 7/out/1997)
60 | 'Valor' => 10, //Valor nominal do título
61 | #Campos variávies
62 | 'Agencia' => 3, //Código da agência
63 | 'CodigoCedente' => 7, //Código do cedente
64 | 'NossoNumero' => 8, //Nosso número
65 | );
66 |
67 | /*
68 | @var string $layoutCodigoBarras
69 | Armazena o layout que será usado para gerar o código de barras desse banco.
70 | Cada variável é precedida por dois-pontos (:), que serão substituídas
71 | pelos seus respectivos valores
72 | */
73 | public $layoutCodigoBarras = ':Banco:Moeda:FatorVencimento:Valor21:Agencia:CodigoCedente:NossoNumero041:DuploDigito';
74 |
75 | /**
76 | * particularidade() Faz em tempo de execução mudanças que sejam imprescindíveis
77 | * para a geração correta do código de barras
78 | * Particularmente para o Banrisul, ele acrescenta ao array OB::$Data, que
79 | * guarda as variáveis que geram o código de barras, uma nova variável
80 | * $DuploDigito, específica desse banco
81 | *
82 | * @version 0.1 28/05/2011 Initial
83 | */
84 | public function particularidade($object){
85 | $codigo = String::insert('21:Agencia:CodigoCedente:NossoNumero041', $object->Data);
86 | $dv1 = Math::Mod10($codigo);
87 | $dv2 = Math::Mod11($codigo . $dv1);
88 | $object->Boleto->NossoNumero = Math::Mod11($object->Boleto->NossoNumero, 0, 0, true);
89 |
90 | return $object->Data['DuploDigito'] = self::DuploDigito($codigo);
91 | }
92 |
93 | /*
94 |
95 | 3.4.1.1 PRIMEIRO DÍGITO – MÓDULO 10
96 | P1 – Multiplicar Os Dígitos Do Argumento Pelos Pesos 2,1,2,....Da Direita Para Esquerda;
97 | P2 – Subtrair 9 Do Valor Obtido Em Cada Multiplicação Do P1 Se Superior A 9;
98 | P3 – Efetuar Somatório Dos Resultados Das Multiplicações P1 Após P2;
99 | P4 – Obter O Resto Da Divisão Inteira Do Somatório De P3 Por 10;
100 | P5 – O Primeiro Dígito Será 10 Menos O Resto Da Divisão Inteira De P4;
101 | P6 – Se O Resto Da Divisão Inteira De P4 For Zero, Então O Primeiro Dígito Será Zero.
102 |
103 | 3.4.1.2 SEGUNDO DÍGITO – MÓDULO 11
104 | P7 – Multiplicar Os Dígitos Do Novo Argumento (Original Acrescido Do Primeiro Dígito) Pelos Pesos 2 A 7 Da Direita Para Esquerda;
105 | P8 – Efetuar Somatório Dos Resultados Das Multiplicações De P7;
106 | P9 – Obter O Resto Da Divisão Inteira Do Somatório De P8 Por 11;
107 | P10 – O Segundo Dígito Será 11 Menos O Resto Da Divisão Inteira De P9;
108 | P11 – Se O Resto Da Divisão Inteira De P9 For Zero, Então O Segundo Dígito Será Zero;
109 | P12 – Se O Resto Da Divisão Inteira De P9 For 1 (Um), Então Somar 1 (Um)
110 | Ao Primeiro Dígito Calculado (Módulo 10) E Reiniciar A Partir De P7;
111 | P13 – Se A Soma De 1 (Um) Ao Primeiro Dígito, Descrito No P12, For Maior Que 9, Então
112 | O Primeiro Dígito (Módulo 10) Será Zero;
113 | P14 – Nos Casos De P12 E P13 O Primeiro Conserva Seu Valor Para O Seu Duplo-Dígito Final.
114 |
115 | EXEMPLO DE CÁLCULO DO DUPLO-DÍGITO (NC):
116 | Toma-se o argumento 00009194:
117 | P1 - 9x1, 1x2, 9x1, 4x2
118 | P2 - = 9, =2, =9, =8
119 | P3 - 9 + 2 + 9 + 8 = 28
120 | P4 - 28/10 resto 8
121 | P5 - 10 - 8 = 2 (Primeiro Dígito)
122 | P6 - (Não Se Aplica Neste Caso)
123 | P7 - 9x6, 1x5, 9x4, 4x3, 2x2
124 | P8 - 54 + 5 + 36 + 12 + 4 = 111
125 | P9 - 111/11 resto 1
126 | P10 – 11 – 1 = 10 (Inválido)
127 | P11 - (Não Se Aplica Neste Caso)
128 | P12 – 91943 (Novo Argumento)
129 | P13 – (Não Se Aplica Neste Caso)
130 | P14 – Primeiro Dígito Passa A Ser 3
131 | P7 - 9x6, 1x5, 9x4, 4x3, 3x2
132 | P8 - 54 + 5 + 36 + 12 + 6 = 113
133 | P9 - 113/11 resto 3
134 | P10 – 11 – 3 = 8 (Segundo Dígito)
135 | P11 – (Não Se Aplica Neste Caso)
136 | P12 – (Não Se Aplica Neste Caso)
137 | P13 – (Não Se Aplica Neste Caso)
138 | P14 – Primeiro Dígito Permanece Com 3 Resultado:
139 | Argumento 00009194 Duplo Dígito = 38
140 | Nota: Mesmo Não Constando No Exemplo, O Número Do Título Para O Banco Sempre Deve Ser Composto Por 8 (Oito) Dígitos, Neste Caso Deve Ser Completado Com Zeros A Esquerda.
141 | */
142 | public static function DuploDigito($num){
143 | #DV1
144 | $dv1 = Math::Mod10($num);
145 |
146 | #DV2 - $num concatenado com $dv1, calculado com Mod11 com
147 | #multiplicador máximo 7
148 | $dv2 = Math::Mod11($num . $dv1, 10, 0, false, 7);
149 |
150 | #Se $dv2 = 10, adiciona 1 a $dv1 e recalcula $dv2
151 | #concatenando agora o novo $dv1
152 | if($dv2 == 10){
153 | $dv1++;
154 |
155 | #Se o novo valor de $dv1 for maior que 9, então
156 | #$dv1 passará a ser 0
157 | if($dv1 > 9){
158 | $dv1 = 0;
159 | }
160 |
161 | $dv2 = Math::Mod11($num . $dv1, 10, 0, false, 7);
162 | }
163 |
164 | return $dv1 . $dv2;
165 | }
166 | }
167 |
--------------------------------------------------------------------------------
/lib/bancos/Bradesco.php:
--------------------------------------------------------------------------------
1 |
10 | @package ObjectBoleto http://github.com/klawdyo/PHP-Object-Boleto
11 | @subpackage ObjectBoleto.Lib.Bancos
12 | @license http://www.opensource.org/licenses/mit-license.php The MIT License
13 |
14 | -----------------------
15 | CHANGELOG
16 | -----------------------
17 | 01/09/2011
18 | [+] Inicial
19 |
20 |
21 |
22 | */
23 | class Bradesco extends Banco{
24 | public $Codigo = '237';
25 | public $Nome = 'Bradesco';
26 | //public $Css = 'bb.css';
27 | public $Image = 'bradesco.png';
28 |
29 | public $tamanhos = array(
30 | #Campos comuns a todos os bancos
31 | 'Banco' => 3, //identificação do banco
32 | 'Moeda' => 1, //Código da moeda: real=9
33 | 'DV' => 1, //Dígito verificador geral da linha digitável
34 | 'FatorVencimento' => 4, //Fator de vencimento (Dias passados desde 7/out/1997)
35 | 'Valor' => 10, //Valor nominal do título
36 | #Campos variávies
37 | 'Agencia' => 4, //Código da agencia, sem dígito
38 | 'Conta' => 6, //Número da conta
39 | 'CodigoCedente' => 7, //Número do convênio fornecido pelo banco
40 | 'DigitoConta' => 1, //Dígito da conta do Cedente
41 | 'NossoNumero' => 11, //Nosso número
42 | 'DigitoNossoNumero' => 5, //Dígito do nosso número
43 | 'Carteira' => 2, //Código da carteira
44 | );
45 |
46 | /*
47 | @var string $layoutCodigoBarras
48 | armazena o layout que será usado para gerar o código de barras desse banco.
49 | Cada variável é precedida por dois-pontos (:), que serão substituídas
50 | pelos seus respectivos valores
51 | */
52 | public $layoutCodigoBarras = ':Banco:Moeda:FatorVencimento:Valor:Agencia:CartNum:CodigoCedente0';
53 |
54 | /**
55 | * particularidade() Faz em tempo de execução mudanças que sejam imprescindíveis
56 | * para a geração correta do código de barras
57 | * Especificamente para o Hsbc, temos duas particularidas: Data no formato juliano, e
58 | * um dígito verificador triplo para o nosso número.
59 | *
60 | *
61 | * @version 0.1 28/05/2011 Initial
62 | */
63 | public function particularidade($object){
64 | $object->Data['CartNum'] = $object->Data['Carteira'] . $object->Data['NossoNumero'];
65 | $object->Boleto->NossoNumero = $object->Vendedor->Carteira . ' / ' . $this->dvNossoNumero($object->Data);;
66 | }
67 |
68 | /*
69 | @var $carteiras
70 | Identifica as carteiras disponíveis para esse banco.
71 |
72 | - A primeira carteira sempre é a carteira padrão.
73 | - Se a carteira for um array, esse array deverá conter as diferenças
74 | nos tamanhos entre essa carteira e a carteira padrão. Se for uma
75 | string, será considerado que os tamanahos são os mesmos da carteira
76 | padrão, e o valor será o nome da carteira.
77 | - Só é necessário informar os campos cujos tamanhos sejam diferentes
78 | dos da carteira padrão.
79 | */
80 | public $carteiras = array(
81 | '06',
82 | '03'
83 | );
84 |
85 | /*
86 | @var array $obrigatorios
87 | Armazena os campos obrigatórios para a geração do código de
88 | barras e a linha digitável neste banco, assim como a emissão
89 | do boleto bancário
90 | */
91 | public $obrigatorios = array(
92 | 'Agencia', 'CodigoCedente',
93 | 'Nome', 'Valor', 'Vencimento',
94 | 'Banco', 'Moeda', 'NossoNumero', 'Carteira'
95 | );
96 |
97 | function dvNossoNumero($data) {
98 | $dv = Math::Mod11($data['Carteira'] . $data['NossoNumero'], 0, 0, false, 7);
99 | return $data['NossoNumero'] . '-' . $dv;
100 | }
101 |
102 | }
--------------------------------------------------------------------------------
/lib/bancos/Caixa.php:
--------------------------------------------------------------------------------
1 |
10 | @package ObjectBoleto http://github.com/klawdyo/PHP-Object-Boleto
11 | @subpackage ObjectBoleto.Lib.Bancos
12 | @license http://www.opensource.org/licenses/mit-license.php The MIT License
13 |
14 | -----------------------
15 | CHANGELOG
16 | -----------------------
17 | 17/05/2011
18 | [+] Inicial
19 |
20 |
21 |
22 | */
23 | class Caixa extends Banco{
24 | public $Codigo = '104';
25 | public $Nome = 'Caixa';
26 | public $Css = 'caixa.css';
27 | public $Image = 'caixa.png';
28 |
29 | /*
30 | @var array $tamanhos
31 | Armazena os tamanhos dos campos na geração do código de barras
32 | e da linha digitável
33 | */
34 | public $tamanhos = array(
35 | #Campos comuns a todos os bancos
36 | 'Banco' => 3, //identificação do banco
37 | 'Moeda' => 1, //Código da moeda: real=9
38 | 'DV' => 1, //Dígito verificador geral da linha digitável
39 | 'FatorVencimento' => 4, //Fator de vencimento (Dias passados desde 7/out/1997)
40 | 'Valor' => 10, //Valor nominal do título
41 | #Campos variávies
42 | 'CodigoCedente' => 6, //Código do cedente
43 | 'NossoNumero' => 17, //Nosso número
44 | );
45 |
46 | /*
47 | @var string $layoutCodigoBarras
48 | armazena o layout que será usado para gerar o código de barras desse banco.
49 | Cada variável é precedida por dois-pontos (:), que serão substituídas
50 | pelos seus respectivos valores
51 | */
52 | public $layoutCodigoBarras = ':Banco:Moeda:FatorVencimento:Valor1:CodigoCedente9:NossoNumero';
53 |
54 |
55 | /**
56 | * particularidade() Faz em tempo de execução mudanças que sejam imprescindíveis
57 | * para a geração correta do código de barras
58 | * Especificamente para o Hsbc, temos duas particularidas: Data no formato juliano, e
59 | * um dígito verificador triplo para o nosso número.
60 | *
61 | *
62 | * @version 0.1 28/05/2011 Initial
63 | */
64 | public function particularidade($object){
65 | $object->Boleto->NossoNumero = Math::Mod11($object->Boleto->NossoNumero, 0, 0, true);
66 | }
67 |
68 | }
--------------------------------------------------------------------------------
/lib/bancos/Hsbc.php:
--------------------------------------------------------------------------------
1 |
10 | @package ObjectBoleto http://github.com/klawdyo/PHP-Object-Boleto
11 | @subpackage ObjectBoleto.Lib.Bancos
12 | @license http://www.opensource.org/licenses/mit-license.php The MIT License
13 |
14 | -----------------------
15 | CHANGELOG
16 | -----------------------
17 | 28/05/2011
18 | [+] Inicial
19 |
20 |
21 |
22 | */
23 | class Hsbc extends Banco{
24 | public $Codigo = '399';
25 | public $Nome = 'Hsbc';
26 | //public $Css;
27 | public $Image = 'hsbc.png';
28 |
29 | /*
30 | @var array $tamanhos
31 | Armazena os tamanhos dos campos na geração do código de barras
32 | e da linha digitável
33 |
34 | 1 5 10 15 20 25 30 35 40 44
35 | | | | | | | | | | |
36 | 39999498900002952951122334000001234567815512
37 | 39991498900002952951122334001234567894315512 -
38 | └-┘↓↓└--┘└--------┘└-----┘└-----------┘└--┘↓
39 | | || | | | | | └-- Código do aplicativo (2 fixo)
40 | | || | | | | └---- Data no formato juliano
41 | | || | | | └------------- Nosso número
42 | | || | | └----------------------- Código do cedente
43 | | || | └------------------------------- Valor
44 | | || └-------------------------------------- Fator de vencimento
45 | | |└----------------------------------------- Dígito verificador do código
46 | | └------------------------------------------ Código da Moeda
47 | └-------------------------------------------- Código do banco
48 |
49 |
50 | Array
51 | (
52 | [Banco] => 399
53 | [Moeda] => 9
54 | [Valor] => 0000055000
55 | [NossoNumero] => 0039104766340
56 | [FatorVencimento] => 1001
57 | [CodigoCedente] => 0351202
58 | [DataVencimentoCalendarioJuliano] => 0000
59 | )
60 | */
61 | public $tamanhos = array(
62 | #Campos comuns a todos os bancos
63 | 'Banco' => 3, //identificação do banco
64 | 'Moeda' => 1, //Código da moeda: real=9
65 | 'DV' => 1, //Dígito verificador geral da linha digitável
66 | 'FatorVencimento' => 4, //Fator de vencimento (Dias passados desde 7/out/1997)
67 | 'Valor' => 10, //Valor nominal do título
68 | #Campos variávies
69 | 'CodigoCedente' => 7,
70 | 'NossoNumero' => 13,
71 | 'DataVencimentoCalendarioJuliano' => 4,
72 | //'CodigoAplicativo' => 1,
73 | );
74 |
75 |
76 | /*
77 | @var $carteiras
78 | Identifica as carteiras disponíveis para esse banco.
79 |
80 | - A primeira carteira sempre é a carteira padrão.
81 | - Se a carteira for um array, esse array deverá conter as diferenças
82 | nos tamanhos entre essa carteira e a carteira padrão. Se for uma
83 | string, será considerado que os tamanahos são os mesmos da carteira
84 | padrão, e o valor será o nome da carteira.
85 | - Só é necessário informar os campos cujos tamanhos sejam diferentes
86 | dos da carteira padrão.
87 | Abaixo, "CNR" é a carteira padrão, e "CNR Fácil" é a segunda opção
88 | de carteira. No "CNR Fácil", há apenas as mudanças no NossoNumero e no
89 | CodigoCedente. Os demais campos são iguais
90 | */
91 | public $carteiras = array(
92 | 'CNR',
93 | 'CNR Fácil' => array('NossoNumero' => 7, 'CodigoCedente' => 13),
94 | );
95 |
96 | /*
97 | @var string $layoutCodigoBarras
98 | Armazena o layout que será usado para gerar o código de barras desse banco.
99 | Cada variável é precedida por dois-pontos (:), que serão substituídas
100 | pelos seus respectivos valores
101 | */
102 | public $layoutCodigoBarras = ':Banco:Moeda:FatorVencimento:Valor:CodigoCedente:NossoNumero:DataVencimentoCalendarioJuliano2';
103 |
104 | /**
105 | * particularidade() Faz em tempo de execução mudanças que sejam imprescindíveis
106 | * para a geração correta do código de barras
107 | * Especificamente para o Hsbc, temos duas particularidas: Data no formato juliano, e
108 | * um dígito verificador triplo para o nosso número.
109 | *
110 | *
111 | * @version 0.1 28/05/2011 Initial
112 | */
113 | public function particularidade($object){
114 | if($object->Vendedor->Carteira == 'CNR Fácil'){
115 | $object->Data['DataVencimentoCalendarioJuliano'] = '0000';
116 | }
117 | else{
118 | $object->Data['DataVencimentoCalendarioJuliano'] = $this->julianDays($object->Boleto->Vencimento);
119 | }
120 | $object->Data['NossoNumero'] = $this->geraCodigoDocumento($object->Data);
121 | $object->Boleto->NossoNumero = Math::Mod11($object->Boleto->NossoNumero, 0, 0, true);
122 | }
123 |
124 | /**
125 | * HSBC usa um dígito verificador triplo no NossoNumero.
126 | *
127 | * @version 0.1 28/05/2011 Inicial
128 | */
129 | public function geraCodigoDocumento($dados){
130 | #dv1 é o Mod11 do NossoNumero
131 | $dv1 = Math::Mod11($dados['NossoNumero']);
132 |
133 | #Concatena o NossoNumero a dv1
134 | $codigo = (int) $dados['NossoNumero'] . $dv1;
135 |
136 | #Calcula a data de vencimento no formato dmy, em barras e com o ano com 2 digitos
137 | $data = OB::fatorVencimentoParaData($dados['FatorVencimento'], 'dmy');
138 |
139 | #Se o identificador for "4", dv3 é o Mod11 da soma do NossoNumero
140 | #concatenado a dv1 e dv2, a data sem barras e o código do cedente.
141 | #Se o identificador for "5", dv3 é o modulo 11 da soma donosso
142 | #numero concatenado e do codigo do cedente
143 | if($dados['Carteira'] == 'CNR'){
144 | $codigo .= 4;
145 | $dv3 = Math::Mod11($codigo + $data + $dados['CodigoCedente']);
146 | }
147 | else{
148 | $codigo .= 5;
149 | $dv3 = Math::Mod11($codigo + $dados['CodigoCedente']);
150 | }
151 |
152 | #Retorno com 13 caracteres
153 | return OB::zeros($codigo . $dv3, $this->tamanhos['NossoNumero']);
154 | }
155 |
156 | /**
157 | * Calcula a data juliana para uma data informada no formato d/m/a
158 | *
159 | * @version 0.1 28/05/2011 Initial
160 | * 0.2 31/05/2011 Formatação geral
161 | */
162 | public function julianDays($date) {
163 | $date = preg_split('%[/-]+%', $date);
164 |
165 | $dataFinal = mktime(0,0,0,$date[1],$date[0],$date[2]);
166 | $dataInicial = mktime(0,0,0,12,31,$date[2]-1);
167 |
168 | return OB::zeros((int)(($dataFinal - $dataInicial)/(60*60*24)), 3) . String::right($date[2],1);
169 | }
170 |
171 |
172 | }
--------------------------------------------------------------------------------
/lib/bancos/Itau.php:
--------------------------------------------------------------------------------
1 |
10 | @package ObjectBoleto http://github.com/klawdyo/PHP-Object-Boleto
11 | @subpackage ObjectBoleto.Lib.Bancos
12 | @license http://www.opensource.org/licenses/mit-license.php The MIT License
13 |
14 | -----------------------
15 | CHANGELOG
16 | -----------------------
17 | 17/05/2011
18 | [+] Inicial
19 |
20 |
21 |
22 | */
23 | class Itau extends Banco{
24 | public $Codigo = '341';
25 | public $Nome = 'Itau';
26 | public $Css;
27 | public $Image = 'itau.png';
28 |
29 | /*
30 | @var array $tamanhos
31 | Armazena os tamanhos dos campos na geração do código de barras
32 | e da linha digitável
33 |
34 | 1 5 10 15 20 25 30 35 40 44
35 | | | | | | | | | | |
36 | 34196307200000666061750000005160148348516000
37 | 34198307100000666061750000005190148348519000
38 | └-┘↓↓└--┘└--------┘└-┘└------┘↓└--┘└---┘↓└-┘
39 | | || | | | | | | | | |--- Zeros fixos
40 | | || | | | | | | | └----- Módulo10 da agência e conta
41 | | || | | | | | | └-------- Código do aplicativo (2 fixo)
42 | | || | | | | | └------------ Data no formato juliano
43 | | || | | | | └--------------- Módulo10 da ag, conta, carteira e NoNum
44 | | || | | | └------------------- Nosso número
45 | | || | | └------------------------- Código do cedente
46 | | || | └------------------------------- Valor
47 | | || └-------------------------------------- Fator de vencimento
48 | | |└----------------------------------------- Dígito verificador do código
49 | | └------------------------------------------ Código da Moeda
50 | └-------------------------------------------- Código do banco
51 |
52 |
53 | */
54 | public $tamanhos = array(
55 | #Campos comuns a todos os bancos
56 | 'Banco' => 3, //identificação do banco
57 | 'Moeda' => 1, //Código da moeda: real=9
58 | 'DV' => 1, //Dígito verificador geral da linha digitável
59 | 'FatorVencimento' => 4, //Fator de vencimento (Dias passados desde 7/out/1997)
60 | 'Valor' => 10, //Valor nominal do título
61 | #Campos variávies
62 | 'Carteira' => 3,
63 | 'NossoNumero' => 8, //Nosso número
64 | 'Agencia' => 4,
65 | 'Conta' => 5
66 | );
67 |
68 | /*
69 | @var string $layoutCodigoBarras
70 | armazena o layout que será usado para gerar o código de barras desse banco.
71 | Cada variável é precedida por dois-pontos (:), que serão substituídas
72 | pelos seus respectivos valores
73 | */
74 | public $layoutCodigoBarras = ':Banco:Moeda:FatorVencimento:Valor:Carteira:NossoNumero:DigitoAgContaCarteiraNNum:Agencia:Conta:DigitoAgConta000';
75 |
76 |
77 | public function particularidade($object){
78 | //pr($object->Data);
79 | $digAgConta = $object->Data['Agencia'] . $object->Data['Conta'];
80 | $digAgContaCartNNum = $object->Data['Agencia'] . $object->Data['Conta']
81 | . $object->Data['Carteira'] . $object->Data['NossoNumero'];
82 |
83 | $object->Data['DigitoAgContaCarteiraNNum'] = Math::Mod10($digAgContaCartNNum);
84 | $object->Data['DigitoAgConta'] = Math::Mod10($digAgConta);
85 | $object->Boleto->NossoNumero = Math::Mod11($object->Boleto->NossoNumero, 0, 0, true);
86 | }
87 |
88 | }
--------------------------------------------------------------------------------
/lib/core/Banco.php:
--------------------------------------------------------------------------------
1 | 'BB',
43 | '003' => 'BancoAmazonia',
44 | '004' => 'BNB',
45 | '033' => 'Santander',
46 | '041' => 'Banrisul',
47 | '070' => 'BRB', //Banco de Brasília
48 | '104' => 'Caixa',
49 | '237' => 'Bradesco',
50 | '318' => 'Bmg',
51 | '341' => 'Itau',
52 | '356' => 'Real',
53 | '399' => 'Hsbc',
54 | '409' => 'Unibanco',
55 | '623' => 'Panamericano',
56 | '756' => 'Bancoob',
57 | );
58 |
59 |
60 | /*
61 | @var array $tamanhos
62 | Armazena os dados de posições dos valores dentro do código de barras.
63 |
64 | */
65 | public $tamanhos = array();
66 |
67 | /*
68 | @var array $carteiras
69 | Armazena todas as carteiras disponíveis e as diferenças de tamanhos
70 | dos campos entre elas.
71 | */
72 | public $carteiras = array();
73 |
74 | /*
75 | @var $layoutCodigoBarras
76 | armazena o layout que será usado para gerar o código de barras desse banco
77 | */
78 | public $layoutCodigoBarras;
79 |
80 | /*
81 | @var $formataLinhaDigitavel
82 | Máscara para a linha digitável
83 | */
84 | public $mascaraLinhaDigitavel = '00000.00000 00000.000000 00000.000000 0 00000000000000';
85 |
86 |
87 | /**
88 | * Construtor da classe
89 | *
90 | * @version 0.1 18/05/2011 Initial
91 | */
92 | public function __construct($object = null){
93 | if(!empty($object)){
94 | $this->parent = $object;
95 | }
96 | }
97 |
98 | /**
99 | * Carrega o arquivo e as configurações de layout do banco informado
100 | *
101 | * @version 0.1 20/05/2011 Initial
102 | */
103 | public function load($codigo, $object){
104 |
105 |
106 | if(array_key_exists($codigo, $this->relacoes)){
107 | $banco = $this->relacoes[$codigo];
108 | $filename = OB_DIR . '/lib/bancos/' . $banco . '.php';
109 |
110 | if(file_exists($filename)){
111 | require $filename;
112 | return new $banco($object);
113 | }
114 | else{
115 | throw new Exception('O arquivo /lib/bancos/' . $banco. '.php não existe.');
116 | }
117 | }
118 | else{
119 | throw new Exception('O banco ' . $codigo. ' não existe em Banco::$relacoes');
120 | }
121 | }
122 |
123 | /**
124 | * Normaliza as variáveis de acordo com os seus tamanhos exatos
125 | *
126 | * @version 0.1 18/05/2011 Initial
127 | */
128 | public function normalize($valor, $variavel){
129 | if(array_key_exists($variavel, $this->tamanhos)){
130 | $length = $this->tamanhos[$variavel];
131 | if(strlen($valor) < $length){
132 | return OB::zeros($valor, $length);
133 | }
134 | else{
135 | return String::left($valor, $length);
136 | }
137 | }
138 | else{
139 | throw new Exception(" A chave \"{$variavel}\" não existe no layout");
140 | }
141 | }
142 |
143 | /**
144 | * engenhariaReversa() pega um número de código de barras e o transforma em um array
145 | * com os valores, baseando os detalhes de cada banco.
146 | */
147 | public function engenhariaReversa($banco, $codigoBarras){
148 |
149 | }
150 |
151 |
152 | /**
153 | * particularidade() Faz em tempo de execução mudanças que sejam imprescindíveis
154 | * para a geração correta do código de barras
155 | * Esse método será estendido por todas as classes filhas, portanto só é
156 | * necessário declará-la caso haja algo para mudar
157 | *
158 | * @version 0.1 28/05/2011 Initial
159 | */
160 | public function particularidade($data){}
161 |
162 | /**
163 | * agenciaCondigoCedente()
164 | * Retorna a agência e a conta/código do cedente formatada de acordo
165 | * com o padrão visual do banco.
166 | * Caso esse método não seja declarado na classe individual dos bancos,
167 | * ele irá herdar esta definição
168 | */
169 | public function agenciaCodigoCedente(){
170 | $object = $this->parent;
171 |
172 | return Math::Mod10($object->Data['Agencia'], true) . ' / ' . Math::Mod10($object->Data['Conta'], true);
173 | }
174 |
175 |
176 | /**
177 | * Avalia se todos os campos necessários para a geração do código de barras
178 | * estão preenchidos
179 | *
180 | * @version 0.1 28/05/2011
181 | * 0.2 18/10/2013 Reabilitado. Agora não verifica a o DV, pois este é calculado
182 | * só ao final da geração do código de barras
183 | */
184 | public function verificaObrigatorios($data){
185 | $obrigatorios = array_keys($this->tamanhos);
186 |
187 | foreach($this->tamanhos as $chave => $valor){
188 | //Se a chave for diferente de 'DV' e
189 | if($chave != 'DV' && (!array_key_exists($chave, $data) || is_null($data[$chave]))){
190 | throw new Exception('O campo "' . $chave . '" é obrigatório para
191 | a geração do código de barras do banco "' . $this->Nome . '"');
192 | }
193 | }
194 | }
195 |
196 | /**
197 | * Retorna as carteiras aceitas por esse boleto
198 | *
199 | * @version 0.1 31/05/2011
200 | */
201 | public function getCarteiras(){
202 | $buff = array();
203 |
204 | foreach($this->carteiras as $key => $carteira){
205 | if(is_array($carteira)){
206 | $buff[] = $key;
207 | }
208 | else{
209 | $buff[] = $carteira;
210 | }
211 | }
212 | return $buff;
213 | }
214 |
215 | /**
216 | * Retorna as posições desse banco, para essa carteira,
217 | * já considerando as diferenças. Se informar o parâmetro
218 | * $campo, retorna o tamanho específico desse campo
219 | *
220 | * @version 0.1 31/05/2011
221 | * 0.2 31/05/2011 Se passar um nome de campo, ele retorna só aquele campo específico
222 | */
223 | public function getTamanhos($campo = null){
224 | if(is_null($campo)){
225 | $carteira = $this->parent->Vendedor->Carteira;
226 | if(array_key_exists($carteira, $this->carteiras)){
227 | return array_merge($this->tamanhos, $this->carteiras[$carteira]);
228 | }
229 | else{
230 | return $this->tamanhos;
231 | }
232 | }
233 | else{
234 | $tamanhos = $this->getTamanhos();
235 | if(array_key_exists($campo, $tamanhos)){
236 | return $tamanhos[$campo];
237 | }
238 | }
239 | }
240 | }
--------------------------------------------------------------------------------
/lib/core/Boleto.php:
--------------------------------------------------------------------------------
1 | parent = $obj;
11 |
12 | //Pré-configurando o boleto
13 | $this->setDataEmissao();
14 | }
15 |
16 |
17 |
18 | # # # # # # # # # # # # # # # # # # # # # #
19 | # #
20 | # # SETTERS E TRATAMENTO DOS VALORES DE ENTRADA
21 | # #
22 | # # # # # # # # # # # # # # # # # # # # # #
23 |
24 |
25 | //Setters Valores
26 | public $Valor;
27 | public $ValorUnitario;
28 | public $FatorVencimento;
29 | public $Vencimento;
30 | public $VencimentoContraApresentacao = false;
31 | public $NossoNumero;
32 | public $NumDocumento;
33 | public $DataEmissao;
34 | public $NumParcela;
35 | //Opcionais
36 | public $Quantidade;
37 | public $Desconto;
38 | public $OutrosAbatimentos;
39 | public $Multa;
40 | public $OutrosAcrescimos;
41 | //
42 | public $CodigoBarras;
43 | public $LinhaDigitavel;
44 |
45 | /**
46 | * Configura os dados dos clientes a partir de um array
47 | *
48 | * @version 0.1 20/05/2011 Initial
49 | */
50 | public function set($array){
51 | foreach($array as $var => $value){
52 | $method = 'set' . $var;
53 | $this->$method($value);
54 | }
55 | return $this;
56 | }
57 |
58 | /**
59 | * Define a data da emissão do boleto. Qualquer um dos parâmetros
60 | * deixados em branco seraá preenchido com o valor referente ao dia
61 | * atual
62 | *
63 | * @version 0.1 19/05/2011 Initial
64 | */
65 | public function setDataEmissao($dia = null, $mes = null, $ano = null){
66 | $dia = empty($dia) ? date('d') : $dia;
67 | $mes = empty($mes) ? date('m') : $mes;
68 | $ano = empty($ano) ? date('Y') : $ano;
69 |
70 | $this->DataEmissao = $dia . '/' . $mes . '/' . $ano;
71 | return $this;
72 | }
73 |
74 | /**
75 | * Define o número do documento
76 | *
77 | * @version 0.1 19/05/2011 Initial
78 | */
79 | public function setNumDocumento($numero){
80 | $this->NumDocumento = $numero;
81 | return $this;
82 | }
83 |
84 | /**
85 | * Define a propriedade Valor e ValorUnitario, retirando a vírgula.
86 | * setValor() verifica o valor da propriedade Quantidade e ajusta
87 | * o valor da propriedade Valor
88 | *
89 | * @version 0.1 18/05/2011 Initial
90 | */
91 | public function setValor($valor){
92 | $this->ValorUnitario = (int) ($valor * 100);
93 | if(empty($this->Quantidade)){
94 | $this->Quantidade = 1;
95 | }
96 | $this->Valor = $this->ValorUnitario * $this->Quantidade;
97 |
98 | return $this;
99 | }
100 |
101 | /**
102 | * Define o nosso número do boleto
103 | *
104 | * @version 0.1 18/05/2011 Initial
105 | */
106 | public function setNossoNumero($valor){
107 | if(!preg_match('/[^0-9]/', $valor)){
108 | $this->NossoNumero = $valor;
109 | return $this;
110 | }
111 | else{
112 | throw new Exception('Boleto::setNossoNumero só permite números');
113 | }
114 |
115 | }
116 |
117 | /**
118 | * Define uma data específica de vencimento
119 | *
120 | * @version 0.1 18/05/2011 Initial
121 | */
122 | public function setVencimento($dia, $mes, $ano){
123 | $this->FatorVencimento = OB::fatorVencimento($dia, $mes, $ano);
124 | //$this->Vencimento = $dia . '/' . $mes . '/' . $ano;
125 | $this->Vencimento = sprintf("%02d", $dia) . '/' . sprintf("%02d", $mes) . '/' . $ano;
126 |
127 | return $this;
128 | }
129 |
130 | /**
131 | * Define o vencimento como contra-apresentação
132 | *
133 | * @version 0.1 27/05/2011 Initial
134 | */
135 | public function setVencimentoContraApresentacao(){
136 | $time = strtotime('+15 days');
137 | $this->VencimentoContraApresentacao = true;
138 | $this->FatorVencimento = OB::fatorVencimento(date('d', $time), date('m', $time), date('Y', $time));
139 |
140 | return $this;
141 | }
142 |
143 | /**
144 | * Adiciona dias à data de hoje para definir o vencimento
145 | *
146 | * @version 0.1 18/05/2011 Initial
147 | */
148 | public function setDiasVencimento($num){
149 | $time = strtotime('+' . $num . ' days');
150 | $this->setVencimento(date('d', $time), date('m', $time), date('Y', $time));
151 |
152 | return $this;
153 | }
154 |
155 | /**
156 | * Define a multa a ser impressa no boleto
157 | *
158 | * @version 0.1 20/05/2011 Initial
159 | */
160 | public function setMulta($valor){
161 | $this->Multa = $valor;
162 |
163 | return $this;
164 | }
165 |
166 | /**
167 | * Define o desconto
168 | *
169 | * @version 0.1 20/05/2011 Initial
170 | */
171 | public function setDesconto($valor){
172 | $this->Desconto = $valor;
173 |
174 | return $this;
175 | }
176 |
177 | /**
178 | * Define outros acréscimos
179 | *
180 | * @version 0.1 20/05/2011 Initial
181 | */
182 | public function setOutrosAcrescimos($valor){
183 | $this->OutrosAcrescimos = $valor;
184 |
185 | return $this;
186 | }
187 |
188 | /**
189 | * Define outros abatimentos
190 | *
191 | * @version 0.1 20/05/2011 Initial
192 | */
193 | public function setOutrosAbatimentos($valor){
194 | $this->OutrosAbatimentos = $valor;
195 |
196 | return $this;
197 | }
198 |
199 | /**
200 | * Define o índice quantidade desse boleto.
201 | * Se $this->ValorUnitario não estiver vazio, setQuantidade() irá
202 | * preencher $this->Valor com o produto da multiplicação entre
203 | * $this->ValorUnitario e $this->Quantidade.
204 | *
205 | * @version 0.1 20/05/2011 Initial
206 | * 0.2 21/05/2011 Ajusta o valor nominal do boleto de acordo
207 | * com a quantidade
208 | * 0.3 21/05/2011 Obriga $num a ser maior ou igual a 1
209 | */
210 | public function setQuantidade($num = 1){
211 | if($num < 1) {
212 | $num = (int) 1;
213 | }
214 |
215 | $this->Quantidade = $num;
216 |
217 | if(!empty($this->ValorUnitario)){
218 | $this->Valor = $this->ValorUnitario * $this->Quantidade;
219 | }
220 |
221 | return $this;
222 | }
223 |
224 | /**
225 | * Define o número da parcela
226 | *
227 | * @version 0.1 28/05/2011 Initial
228 | */
229 | public function setNumParcela($num){
230 | $this->NumParcela = $num;
231 |
232 | return $this;
233 | }
234 |
235 | }
--------------------------------------------------------------------------------
/lib/core/Cliente.php:
--------------------------------------------------------------------------------
1 | parent = $obj;
23 | }
24 |
25 | /**
26 | * Configura os dados dos clientes a partir de um array
27 | *
28 | * @version 0.1 20/05/2011 Initial
29 | */
30 | public function set($array){
31 | foreach($array as $var => $value){
32 | $method = 'set' . $var;
33 | $this->$method($value);
34 | }
35 | return $this;
36 | }
37 |
38 | /**
39 | * Configura o nome do cliente
40 | *
41 | * @version 0.1 20/05/2011 Initial
42 | */
43 | public function setNome($value){
44 | $this->Nome = $value;
45 | return $this;
46 | }
47 |
48 | /**
49 | * Configura o email do cliente
50 | *
51 | * @version 0.1 20/05/2011 Initial
52 | */
53 | public function setEmail($value){
54 | $this->Email = $value;
55 | return $this;
56 | }
57 |
58 | /**
59 | * Configura o cpf do cliente
60 | *
61 | * @version 0.1 20/05/2011 Initial
62 | * 0.2 27/05/2011 Adicionada Validação do cpf
63 | */
64 | public function setCpf($value){
65 | if(Validar::cpf($value)){
66 | $this->Cpf = $value;
67 | }
68 | else{
69 | throw new Exception('CPF "' . $value . '" inválido');
70 | }
71 | return $this;
72 | }
73 |
74 | /**
75 | * Configura o cnpj do cliente
76 | *
77 | * @version 0.1 20/05/2011 Initial
78 | * 0.2 27/05/2011 Adicionada Validação do cnpj
79 | */
80 | public function setCnpj($value){
81 | if(Validar::cnpj($value)){
82 | $this->Cnpj = $value;
83 | }
84 | else{
85 | throw new Exception('CNPJ "' . $value . '" inválido');
86 | }
87 | return $this;
88 | }
89 |
90 | /**
91 | * Configura o endereço do cliente
92 | *
93 | * @version 0.1 20/05/2011 Initial
94 | */
95 | public function setEndereco($value){
96 | $this->Endereco = $value;
97 | return $this;
98 | }
99 | /**
100 | * Configura a cidade do cliente
101 | *
102 | * @version 0.1 20/05/2011 Initial
103 | */
104 | public function setCidade($value){
105 | $this->Cidade = $value;
106 | return $this;
107 | }
108 | /**
109 | * Configura a uf do cliente
110 | *
111 | * @version 0.1 20/05/2011 Initial
112 | */
113 | public function setUf($value){
114 | $this->Uf = $value;
115 | return $this;
116 | }
117 | /**
118 | * Configura o cep do cliente
119 | *
120 | * @version 0.1 20/05/2011 Initial
121 | */
122 | public function setCep($value){
123 | $this->Cep = $value;
124 | return $this;
125 | }
126 | }
--------------------------------------------------------------------------------
/lib/core/Configuracao.php:
--------------------------------------------------------------------------------
1 | parent = $obj;
14 | }
15 |
16 | /**
17 | *
18 | * @version 0.1 18/05/2011 Initial
19 | *
20 | */
21 | public function addInstrucao($frase){
22 | if(!empty($frase)){
23 | $this->Instrucoes[] = $frase;
24 | }
25 | return $this;
26 | }
27 |
28 | /**
29 | * Devolve as instruções
30 | *
31 | * @version 0.1 19/10/2013
32 | *
33 | */
34 | public function getInstrucoes(){
35 | return $this->Instrucoes;
36 | }
37 |
38 | /**
39 | * Devolve as instruções
40 | *
41 | * @version 0.1 19/10/2013
42 | *
43 | */
44 | public function getLocalPagamento(){
45 | return $this->LocalPagamento;
46 | }
47 |
48 | /**
49 | *
50 | * @version 0.1 19/05/2011 Initial
51 | *
52 | */
53 | public function setLocalPagamento($frase){
54 | if(!empty($frase)){
55 | $this->LocalPagamento = $frase;
56 | }
57 | return $this;
58 | }
59 |
60 | }
--------------------------------------------------------------------------------
/lib/core/Plugin.php:
--------------------------------------------------------------------------------
1 | plugin('Pdf')->save('/public/files/filename.pdf');
3 |
4 | class Plugin{
5 |
6 | public $plugins = array();
7 | public static $object;
8 |
9 | /**
10 | *
11 | * @version 0.1 18/05/2011 Initial
12 | *
13 | */
14 | public function __construct(){
15 |
16 | }
17 |
18 | /**
19 | *
20 | * @version 0.1 18/05/2011 Initial
21 | *
22 | */
23 | public static function instance(){
24 | if(empty(self::$object)){
25 | self::$object = new Plugin;
26 | }
27 | return self::$object;
28 | }
29 | /**
30 | *
31 | * @version 0.1 18/05/2011 Initial
32 | *
33 | */
34 | public static function load($pluginName){
35 | $self = self::instance();
36 | $filename = self::path($pluginName);
37 | if(file_exists($filename)){
38 | $className = $pluginName . 'Plugin';
39 | require $filename;
40 | return $self->plugins[$pluginName] = new $className($self->parent);
41 | }
42 | else{
43 | throw new Exception('Plugin nao existe');
44 | }
45 | }
46 | /**
47 | *
48 | * @version 0.1 18/05/2011 Initial
49 | *
50 | */
51 | public static function path($pluginName){
52 | return OB_DIR . '/lib/plugins/' . $pluginName . '.plugin.php';
53 | }
54 |
55 | }
--------------------------------------------------------------------------------
/lib/core/Template.php:
--------------------------------------------------------------------------------
1 | parent = $obj;
41 | }
42 |
43 | /**
44 | * Adiciona estilos css ao template
45 | *
46 | * @version 0.1 18/05/2011 Initial
47 | * 0.2 19/05/2011 - Só um estilo igual é adicionado
48 | * - Styles podem ser adicionados a partir dos
49 | * templates, blocks e serão enviados diretamente
50 | * para o template padrão
51 | * 0.3 22/05/2011 - $filename pode receber um array de estilos
52 | * - Não é mais possível o envio de variáveis dos
53 | * blocks para o template.
54 | */
55 | public function addStyle($filename, $media = 'all' ){
56 | #$filename pode receber um array de arquivos
57 | if(is_array($filename)){
58 | foreach($filename as $file){
59 | $this->addStyle($file);
60 | }
61 | return $this;
62 | }
63 | #Tornando opcional informar a extensão do CSS
64 | if(!preg_match('/(.css)$/', $filename)){
65 | $filename .= '.css';
66 | }
67 | #Guardando o estilo
68 | $this->Styles[$filename] = $media;
69 |
70 | return $this;
71 | }
72 | /**
73 | * Retorna os styles css formatados como html
74 | *
75 | * @version 0.1 19/05/2011 Initial
76 | */
77 | public function getStyles(){
78 | if(!empty($this->Styles)){
79 | $html = '';
80 | foreach($this->Styles as $file => $media){
81 | $html .= '' . PHP_EOL;
84 | }
85 | }
86 | return $html;
87 | }
88 |
89 | /**
90 | * Pega o html do bloco pré-carregado
91 | *
92 | * @version 0.1 18/05/2011 Initial
93 | */
94 | public function getBlock($blockName, $data = array()){
95 | //$data = array_merge($data, array('OB' => (object)$this->Data));
96 |
97 | return $this->render('/blocks/'.$blockName, $data);
98 | }
99 |
100 | /**
101 | * Renderiza templates
102 | *
103 | * @version 0.1 18/05/2011 Initial
104 | * 1.0 22/05/2011 Consertado o bug dos Output bufferin
105 | */
106 | public function render($template, $data = array()){
107 | $data = array_merge($data, array('OB' => $this->parent));
108 | $template = OB_DIR . '/templates/' . $template . '.htm.php';
109 |
110 | if(file_exists($template)){
111 | extract($data);
112 | ob_start();
113 | require $template;
114 | }
115 | else{
116 | throw new Exception('Template "' . $template . '" não existe.');
117 | }
118 | }
119 |
120 | /**
121 | * Manda variáveis para os templates/blocks
122 | *
123 | * @version 0.1 20/05/2011 Initial
124 | */
125 | public function set($var, $value){
126 | $this->$var = $value;
127 | return $this;
128 | }
129 |
130 |
131 | # # # # # # # # # # # # # # # # # # # # # #
132 | # #
133 | # # SETTERS E TRATAMENTO DOS VALORES DE ENTRADA
134 | # #
135 | # # # # # # # # # # # # # # # # # # # # # #
136 |
137 |
138 | /**
139 | * Configura o título da página do template
140 | *
141 | * @version 0.1 18/05/2011 Initial
142 | */
143 | public function setTitle($title){
144 | $this->Title = $title;
145 | return $this;
146 | }
147 |
148 | /**
149 | * Define qual o template que será usado
150 | *
151 | * @version 0.1 18/05/2011 Initial
152 | */
153 | public function setTemplate($template){
154 | $this->Template = $template;
155 | return $this;
156 | }
157 |
158 | }
--------------------------------------------------------------------------------
/lib/core/Vendedor.php:
--------------------------------------------------------------------------------
1 | parent = $obj;
29 | }
30 |
31 | /**
32 | * Chama os métodos inexistentes
33 | *
34 | * @version 0.1 18/05/2011 Initial
35 | */
36 | public function __call($name, $arg = null){
37 | preg_match('/^(set|get)([a-zA-Z]+)$/', $name, $output);
38 |
39 | if($output[1] == 'set'){
40 | $this->$output[2] = $arg[0];
41 | return $this;
42 | }
43 | elseif($output[1] == 'get'){
44 | if(isset($this->$output[2])){
45 | return $this->$output[2];
46 | }
47 | else{
48 | throw new Exception("A propriedade \"{$output[2]}\" não existe na class Vendedor");
49 | }
50 | }
51 | }
52 |
53 | /**
54 | * Configura os dados do vendedor a partir de um array
55 | *
56 | * @version 0.1 20/05/2011 Initial
57 | */
58 | public function set($array){
59 | foreach($array as $var => $value){
60 | $method = 'set' . $var;
61 | $this->$method($value);
62 | }
63 |
64 | return $this;
65 | }
66 |
67 | /**
68 | * Configura a Razão Social
69 | *
70 | * @version 0.1 27/05/2011 Initial
71 | * 0.2 27/05/2011 Renomeado de setNome() para setRazaoSocial()
72 | */
73 | public function setRazaoSocial($value){
74 | $this->RazaoSocial = $value;
75 |
76 | return $this;
77 | }
78 |
79 | /**
80 | * Configura a agência
81 | *
82 | * @version 0.1 27/05/2011 Initial
83 | * 0.2 28/05/2011 Removido bug que forçava 4 caracteres
84 | * no campo Agencia, sendo que alguns bancos usam 3
85 | */
86 | public function setAgencia($codigo){
87 | $this->Agencia = $codigo;
88 |
89 | return $this;
90 | }
91 |
92 | /**
93 | * Configura o número da conta do cliente.
94 | * Em alguns bancos, esse campo é desnecessário, sendo substituído pelo
95 | * número do contrato. Os código de barras serão gerados corretamente de
96 | * acordo com o padrão de cada banco, e os templates exibirão correta-
97 | * mente cada dado em seu lugar.
98 | *
99 | * @version 0.1 27/05/2011 Initial
100 | */
101 | public function setConta($value){
102 | $this->Conta = $value;
103 |
104 | return $this;
105 | }
106 |
107 | /**
108 | * Configura o número do contrato do Vendedor com o banco
109 | * Em alguns bancos, esse campo é desnecessário, sendo substituído pelo
110 | * número do contrato. Os código de barras serão gerados corretamente de
111 | * acordo com o padrão de cada banco, e os templates exibirão corre-
112 | * tamente cada dado em seu lugar.
113 | *
114 | * @version 0.1 27/05/2011 Initial
115 | * 0.2 27/05/2011 Renomeado de setNumCodigoCedente() para
116 | * setCodigoCedente()
117 | */
118 | public function setCodigoCedente($value){
119 | $this->CodigoCedente = $value;
120 |
121 | return $this;
122 | }
123 |
124 | /**
125 | * Configura a carteira
126 | *
127 | * @version 0.1 27/05/2011 Initial
128 | */
129 | public function setCarteira($value){
130 | $this->Carteira = $value;
131 |
132 | return $this;
133 | }
134 |
135 | /**
136 | * Configura o cnpj do vendedor
137 | *
138 | * @version 0.1 27/05/2011 Initial
139 | * 0.2 27/05/2011 Adicionada validação do CNPJ informado
140 | */
141 | public function setCnpj($value){
142 | if(Validar::cnpj($value)){
143 | $this->Cnpj = $value;
144 | }
145 | else{
146 | throw new Exception('CNPJ "' . $value . '" inválido');
147 | }
148 | return $this;
149 | }
150 |
151 | /**
152 | * Configura o endereço do vendedor
153 | *
154 | * @version 0.1 27/05/2011 Initial
155 | */
156 | public function setEndereco($value){
157 | $this->Endereco = $value;
158 |
159 | return $this;
160 | }
161 |
162 | /**
163 | * Configura o e-mail do vendedor
164 | *
165 | * @version 0.1 27/05/2011 Initial
166 | * 0.2 27/05/2011 Adicionada validação do e-mail
167 | */
168 | public function setEmail($value){
169 | if(Validar::email($value)){
170 | $this->Email = $value;
171 | }
172 | else{
173 | throw new Exception('E-mail "' . $value . '" inválido');
174 | }
175 | return $this;
176 | }
177 | }
--------------------------------------------------------------------------------
/lib/plugins/Pdf.plugin.php:
--------------------------------------------------------------------------------
1 | object = $object;
7 | }
8 |
9 | public function save(){
10 |
11 | }
12 | }
--------------------------------------------------------------------------------
/lib/plugins/Pdf/DomPdf_Library.php:
--------------------------------------------------------------------------------
1 | 'certificados/participantes',
23 |
24 | //Layout to be used
25 | 'layout' => 'certificados',
26 |
27 | //Url. Only if a remote file. Required constant DOMPDF_ENABLE_REMOTE as TRUE
28 | //'url' => 'http://www.google.com.br',
29 |
30 | //Paper settings.
31 | 'paper' => array(
32 | 'size'=>'A4',
33 | 'orientation'=>'landscape' //portrait or landscape
34 | ),
35 |
36 | //Sending data to view
37 | 'data' => array(
38 | 'name' => 'Cláudio Medeiros',
39 | 'email' => 'contato@claudiomedeiros.net'
40 | ),
41 | ));
42 |
43 | //To download
44 | $pdf->download('download'.time().'.pdf');
45 |
46 | //To save
47 | $pdf->save('/files/'.time().'.pdf');
48 |
49 | -----------------------------------------
50 |
51 | /**/
52 |
53 |
54 | require_once 'lib/utils/Pdf/dompdf/dompdf_config.inc.php';
55 |
56 | class DomPdf_Library {
57 | protected $view = null;
58 | protected $data = array();
59 | protected $layout = false;
60 | public $DomPdf = null;
61 | protected $url = null;//if a remote file.
62 | protected $paper = array();
63 |
64 | public function __construct($data = array()) {
65 | foreach($data as $key => $value):
66 | $this->{$key} = $value;
67 | endforeach;
68 |
69 | $this->DomPdf = new DOMPDF();
70 | $this->paper();
71 | }
72 | public function render() {
73 | if(!$this->url):
74 | $view = new View();
75 | $content = $view->render($this->view, $this->data, $this->layout);
76 | $this->DomPdf->load_html($content);
77 | else:
78 | $this->DomPdf->load_html_file($this->url);
79 | endif;
80 |
81 | $this->DomPdf->render();
82 | }
83 | public function download($filename = null){
84 | $this->render();
85 | $this->DomPdf->stream($filename);
86 | }
87 | public function save($filename) {
88 | $this->render();
89 | file_put_contents($filename, $this->DomPdf->output());
90 | }
91 | public function paper(){
92 | $this->paper =
93 | array_merge(array('size'=>'A4', 'orientation'=>'portrait'), $this->paper);
94 |
95 | $this->DomPdf->set_paper($this->paper['size'], $this->paper['orientation']);
96 | }
97 |
98 | }
--------------------------------------------------------------------------------
/lib/plugins/Pdf/Pdf.php:
--------------------------------------------------------------------------------
1 | 'mPdf', //DomPdf is available
22 |
23 | //View to render
24 | 'view' => 'certificados/participantes',
25 |
26 | //Layout to be used
27 | 'layout' => 'certificados',
28 |
29 | //Url. Only if a remote file.
30 | //'url' => 'http://www.google.com.br',
31 |
32 | //Paper settings.
33 | 'paper' => array(
34 | 'size'=>'A4',
35 | 'orientation'=>'landscape' //portrait or landscape
36 | ),
37 |
38 | //Sending data to view
39 | 'data' => array(
40 | 'name' => 'Cláudio Medeiros',
41 | 'email' => 'contato@claudiomedeiros.net'
42 | ),
43 | ));
44 |
45 | //To download
46 | $pdf->download('download'.time().'.pdf');
47 |
48 | //To save
49 | $pdf->save('/files/'.time().'.pdf');
50 |
51 |
52 | */
53 |
54 |
55 |
56 | class Pdf {
57 | protected $object = array();
58 |
59 | public function __construct($data = array()) {
60 | if(array_key_exists('library', $data)):
61 | $library = array_unset($data, 'library');
62 | $library .= '_Library';
63 | require_once 'lib/utils/Pdf/' . $library . '.php';
64 | //pr($library);
65 | $this->object = new $library($data);
66 | else:
67 | throw new PdfException('Library name not specified');
68 | endif;
69 | }
70 | public function render() {
71 | $this->object->render();
72 | }
73 | public function download($filename = null){
74 | $this->object->download($filename);
75 | }
76 | public function save($filename) {
77 | $this->object->save($filename);
78 | }
79 | }
80 |
81 | class PdfException extends Exception{}
--------------------------------------------------------------------------------
/lib/plugins/Pdf/mPdf_Library.php:
--------------------------------------------------------------------------------
1 | 'certificados/participantes',
21 |
22 | //Layout to be used
23 | 'layout' => 'certificados',
24 |
25 | //Url. Only if a remote file. Required constant DOMPDF_ENABLE_REMOTE as TRUE
26 | //'url' => 'http://www.google.com.br',
27 |
28 | //Paper settings.
29 | 'paper' => array(
30 | 'size'=>'A4',
31 | 'orientation'=>'landscape' //portrait or landscape
32 | ),
33 |
34 | //Sending data to view
35 | 'data' => array(
36 | 'name' => 'Cláudio Medeiros',
37 | 'email' => 'contato@claudiomedeiros.net'
38 | ),
39 | ));
40 |
41 | //To download
42 | $pdf->download('downloaded-filename.pdf');
43 |
44 | //To save. Path relative to /SPAGHETTI_ROOT
45 | $pdf->save('/files/saved-filename.pdf');
46 |
47 | -----------------------------------------
48 |
49 | /**/
50 |
51 |
52 | require_once 'lib/utils/Pdf/mpdf/mpdf.php';
53 |
54 | class mPdf_Library {
55 | protected $view = null;
56 | protected $data = array();
57 | protected $layout = false;
58 | public $mPDF = null;
59 | protected $url = null;//if a remote file.
60 | protected $paper = array();
61 |
62 | public function __construct($data = array()) {
63 | foreach($data as $key => $value):
64 | $this->{$key} = $value;
65 | endforeach;
66 |
67 | $this->paper();
68 | pr($this->paper);
69 | $this->mPDF = new mPDF('UTF-8', $this->paper);
70 | //pr($this->mPDF->CurOrientation);
71 | }
72 | public function render() {
73 | if(!$this->url):
74 | $view = new View();
75 | $content = $view->render($this->view, $this->data, $this->layout);
76 | $this->mPDF->WriteHTML($content);
77 | else:
78 | $this->mPDF->WriteHTML(file_get_contents($this->url));
79 | endif;
80 | }
81 | public function download($filename = null){
82 | $this->render();
83 | $this->mPDF->Output($filename, 'D');
84 | }
85 | public function save($filename) {
86 | $this->render();
87 | $filename = Filesystem::path($filename);
88 | $this->mPDF->Output($filename, 'F');
89 | }
90 | protected function paper(){
91 | $paper = array_merge(array('size' => 'A4', 'orientation' => 'portrait'), $this->paper);
92 |
93 | if($paper['orientation'] == 'portrait'):
94 | $this->paper = $paper['size'];
95 | else:
96 | $this->paper = $paper['size'] . '-L';
97 | endif;
98 | }
99 | }
--------------------------------------------------------------------------------
/lib/plugins/Pdf/mpdf/mpdf-dir.txt:
--------------------------------------------------------------------------------
1 | -----------------
2 | Configuration
3 | -----------------
4 |
5 | 1) Download DomPdf (http://mpdf.bpm1.com/download) and copy mpdf folder to /lib/utils/Pdf/mpdf in your application.
6 |
7 | 2) Copy Pdf.php to /lib/utils/Pdf.php and mPdf_Library.php to /lib/utils/Pdf/
8 | 3) Require lib/utils/Pdf.php in your controllers and start using it.
9 |
--------------------------------------------------------------------------------
/lib/utils/Barcode.php:
--------------------------------------------------------------------------------
1 |
15 | @package ObjectBoleto http://github.com/klawdyo/PHP-Object-Boleto
16 | @subpackage ObjectBoleto.Lib.Utils
17 | @license http://www.opensource.org/licenses/mit-license.php The MIT License
18 |
19 | -----------------------------------------------
20 | HOW TO USE
21 | -----------------------------------------------
22 | //Inclua a class no arquivo
23 | require 'lib/utils/Barcode.php';
24 |
25 | //Chame as funções normalmente
26 | Barcode::getImage('123455689') pega o resource da imagem gerada
27 | echo Barcode::getHtml('123455689') retorna o html para gerar a imagem
28 |
29 | -----------------------------------------------
30 | CHANGELOG
31 | -----------------------------------------------
32 |
33 | 17/05/2011
34 | [+] Initial
35 |
36 | -----------------------------------------------
37 | TO DO
38 | -----------------------------------------------
39 |
40 |
41 |
42 | -----------------------------------------------
43 | KNOWN BUGS
44 | -----------------------------------------------
45 |
46 |
47 | */
48 | class Barcode{
49 | //Imagem
50 | public $image;
51 | //dimensões do código de barras
52 | public $width = 480;
53 | public $height= 50;
54 | //Cores
55 | public $white;
56 | public $black;
57 | public $poolblue;
58 | //Configurações
59 | public $n = 1 ; //narrow: fino
60 | public $w = 3 ; //wide:largo
61 | public $start_code = '0000';
62 | public $end_code = '100';
63 | public $codes = array( //0111000010
64 | //0 //1 //2 //3 //4
65 | '00110', '10001', '01001', '11000', '00101',
66 | //5 //6 //7 //8 //9
67 | '10100', '01100', '00011', '10010', '01010'
68 | );
69 |
70 | private $current_x = 0;
71 | private $color = 0;
72 |
73 |
74 | /**
75 | *
76 | *
77 | * @version 0.1 17/05/2011 Initial
78 | */
79 | public function __construct(){
80 | header("Content-type:image/png");
81 | $this->image = imagecreate( $this->width, $this->height);
82 |
83 | //Alocando cores
84 | $this->white = imagecolorallocate($this->image, 255, 255, 255);
85 | $this->black = imagecolorallocate($this->image, 0, 0, 0);
86 |
87 | }
88 |
89 | /**
90 | *
91 | *
92 | * @version 0.1 17/05/2011 Initial
93 | */
94 | public function addBar($x, $width, $color){
95 | $color = $color == 0 ? $this->black : $this->white;
96 | imagefilledrectangle($this->image, $x, 0, $x + $width, $this->height, $color);
97 | }
98 |
99 | /**
100 | *
101 | *
102 | * @version 0.1 17/05/2011 Initial
103 | */
104 | public function getBarcode($code){
105 | //Chamando quem vai processar a imagem
106 | $this->process($code);
107 | //Exibindo a image
108 | imagepng($this->image);
109 | imagedestroy($this->image);
110 | }
111 |
112 | /**
113 | *
114 | *
115 | * @version 0.1 17/05/2011 Initial
116 | */
117 | public function __destruct(){
118 | $this->current_x = 0;
119 | $this->color = 0;
120 | $this->image = null;
121 | }
122 |
123 | /**
124 | *
125 | *
126 | * @version 0.1 17/05/2011 Initial
127 | */
128 | public static function getImage($code){
129 | $barcode = new Barcode();
130 | $barcode->getBarcode($code);
131 | }
132 |
133 | /**
134 | *
135 | *
136 | * @version 0.1 17/05/2011 Initial
137 | */
138 | public static function getHtml($code){
139 | //return '
';
140 | return '
';
141 | }
142 |
143 | /**
144 | *
145 | *
146 | * @version 0.1 17/05/2011 Initial
147 | */
148 | public function interleave($code){
149 | $n1 = substr($code, 0, 1);
150 | $n2 = substr($code, 1, 1);
151 | $buff = '';
152 |
153 | for($i = 0; $i < 5; $i++){
154 | $buff .= substr($this->codes[$n1], $i, 1) . substr($this->codes[$n2], $i, 1);
155 | }
156 |
157 | return $buff;
158 | }
159 |
160 | /**
161 | *
162 | *
163 | * @version 0.1 17/05/2011 Initial
164 | */
165 | public function process($code){
166 | $n = strlen($code);
167 | //se o número de caracteres for ímpar, adicione um 0 no início
168 | $code = (strlen($code) % 2) <> 0 ? '0' . $code : $code;
169 |
170 | //Pegando cada número do código
171 | for($i = 0; $i < $n; $i+=2){
172 | $current = $this->interleave(substr($code, $i, 1) . substr($code, $i+1, 1));
173 |
174 | //Está no início? Adiciona o início
175 | if($i == 0) $current = $this->start_code . $current;
176 | //Está no final? Adiciono o final
177 | if($i == ($n - 2)) $current .= $this->end_code;
178 |
179 | //Transformando cada número os binários utilizados
180 | for($j = 0; $j < strlen($current); $j++){
181 | //Se for 1, a largura é 3. Se for 0, a largura é 1
182 | $width = substr($current, $j, 1) == 1 ? 3 : 1;
183 | //pr($width);
184 |
185 | $this->addBar($this->current_x, $width, $this->color);
186 | //Se a última cor for preta, mudo pra branca
187 | $this->color = $this->color == 0 ? 1 : 0;
188 | //Adiciona o x atual
189 | $this->current_x += $width;
190 | }
191 | }
192 | //Adiciona espaço em branco ao final
193 | $this->addBar($this->current_x, 1, $this->color);
194 | }
195 | }
196 | if(isset($_GET['n'])) Barcode::getImage($_GET['n']);
--------------------------------------------------------------------------------
/lib/utils/Date.php:
--------------------------------------------------------------------------------
1 | 217728000,
6 | 'months' => 18144000,
7 | 'weeks' => 604800,
8 | 'days' => 86400,
9 | 'hours' => 3600,
10 | 'minutes' => 60,
11 | 'seconds' => 1
12 | );
13 | public static $holidays = array(
14 | '01/01', '21/04', '01/05', '07/09', '12/10',
15 | '02/11', '20/11', '15/11', '25/12'
16 | );
17 | public static $format = 'Y-m-d';
18 |
19 |
20 | /**
21 | * Calcula a diferença entre duas datas
22 | *
23 | * @version 0.1 Initial
24 | *
25 | * @param date $date Data informada
26 | * @param date optional $otherDate Data a ser comparada com a
27 | * informada em $date. Caso seja nula, será considerada o
28 | * dia de hoje
29 | * @param $unit optional Informa o tipo de retorno, podendo ser em
30 | * days, months, years, hours, etc.
31 | */
32 | public static function diff($date, $otherDate = null, $unit = 'days') {
33 | if(is_null($otherDate)):
34 | $otherDate = time();
35 | else:
36 | $otherDate = strtotime($otherDate);
37 | endif;
38 | $date = strtotime($date);
39 | $time = abs($date - $otherDate);
40 |
41 | return ceil($time / self::$convert[$unit]);
42 | }
43 |
44 | /**
45 | * Adiciona um período de tempo a uma data
46 | *
47 | * @version 0.1 Initial
48 | *
49 | * @param $date Data inicial
50 | * @param $num Número de períodos a serem adicionados
51 | * @param $unit Tipo do período que está sendo adicionado
52 | * @param $format Formato de saída
53 | */
54 | public static function add($date, $num, $unit = 'days', $format = null) {
55 | $new_date = self::addInTime($date, $num, $unit);
56 | return self::format($new_date, $format);
57 | }
58 |
59 | /**
60 | * Devolve o próximo dia útil
61 | *
62 | * @version 0.1 Initial
63 | * 0.2 24/05/2011 Adicionado o parâmetro $format
64 | *
65 | * @param $date Data a ser comparada
66 | * @param $format Formato opcional de saída
67 | */
68 | public static function nextWorkday($date = null, $format = null) {
69 | if(is_null($date)):
70 | $date = date('Y-m-d');
71 | endif;
72 | $date = self::add($date, 1, 'days', 'Y-m-d');
73 |
74 | while(!self::isWorkday($date)):
75 | $date = self::add($date, 1, 'days', 'Y-m-d');
76 | endwhile;
77 |
78 | return self::format($date, $format);
79 | }
80 |
81 | /**
82 | * Retorna true se a data informada é um dia útil
83 | *
84 | * @version 0.1 Initial
85 | *
86 | * @param $date optional Data a ser verificada. HOJE se nada for
87 | * informado
88 | */
89 | public static function isWorkday($date = null) {
90 | if(is_null($date)):
91 | $date = date('Y-m-d');
92 | endif;
93 | return !self::isWeekend($date) && !self::isHoliday($date);
94 | }
95 |
96 | /**
97 | * Verifica se a data informada é no final de semana
98 | *
99 | * @version 0.1 Initial
100 | *
101 | * @param $date optional Data a ser verificada. HOJE se nada for
102 | * informado
103 | */
104 | public static function isWeekend($date = null) {
105 | if(is_null($date)):
106 | $time = time();
107 | else:
108 | $time = strtotime($date);
109 | endif;
110 |
111 | return date('N', $time) >= 6;
112 | }
113 |
114 | /**
115 | * Verifica se a data informada é um feriado
116 | *
117 | * @version 0.1 Initial
118 | *
119 | * @param $date optional Data a ser verificada. HOJE se nada for
120 | * informado
121 | */
122 | public static function isHoliday($date = null) {
123 | $date = self::format($date, 'd/m');
124 | return in_array($date, self::$holidays);
125 | }
126 |
127 | /**
128 | * Formata uma data informada
129 | *
130 | * @version 0.1 Initial
131 | *
132 | * @param $date A data a ser formatada
133 | * @param $format O formato de saída. Se não for informado, será
134 | * utilizado o formato definido em Date::$format
135 | */
136 | public static function format($date, $format = null) {
137 | if(is_null($format)):
138 | $format = self::$format;
139 | endif;
140 | if(is_null($date)):
141 | $date = time();
142 | elseif(!is_numeric($date)):
143 | $date = strtotime($date);
144 | endif;
145 |
146 | return date($format, $date);
147 | }
148 |
149 | /**
150 | * Retorna o tempo decorrido entre a data informada em $date e agora.
151 | *
152 | * @version 0.1 Initial
153 | *
154 | * @param $date a data a ser comparada
155 | */
156 | public static function timeAgo($date = null) {
157 | if(is_null($date)):
158 | $date = time();
159 | else:
160 | $date = strtotime($date);
161 | endif;
162 | $now = time();
163 | $since = $now - $date;
164 |
165 | $times = array_values(self::$convert);
166 | $names = array_keys(self::$convert);
167 | foreach($times as $i => $seconds):
168 | if(($count = floor($since / $seconds))):
169 | break;
170 | endif;
171 | endforeach;
172 | $name = preg_replace('/s$/', '', $names[$i]);
173 | $ago = ($count == 1) ? '1 ' . $name : $count . ' ' . $name . 's';
174 |
175 | if($i + 1 < count(self::$convert)):
176 | $name = preg_replace('/s$/', '', $names[$i + 1]);
177 | $seconds2 = $times[$i + 1];
178 | if(($count = floor(($since - ($seconds * $count)) / $seconds2))):
179 | $ago .= ', ' . (($count == 1) ? '1 ' . $name : $count . ' ' . $name . 's');
180 | endif;
181 | endif;
182 |
183 | return $ago;
184 | }
185 |
186 | /**
187 | * Adiciona um feriado à tabela de feriados em tempo de execução
188 | *
189 | * @version 0.1 Initial
190 | *
191 | * @param $date
192 | */
193 | public static function addHoliday($date) {
194 | self::$holidays []= $date;
195 | }
196 |
197 | /**
198 | * Define a formatação padrão a ser utilizada pela classe
199 | *
200 | * @version 0.1 Initial
201 | *
202 | * @param $format O formato padrão
203 | */
204 | public static function setDefaultFormat($format) {
205 | self::$format = $format;
206 | }
207 |
208 | /**
209 | * Adiciona unidades de tempo a uma data informada, mas retorna o
210 | * valor em UnixTimeStamp
211 | *
212 | * @version 0.1 Initial
213 | *
214 | * @param $date A data informada
215 | * @param $num O número de períodos
216 | * @param $unit A unidade dos períodos adicionados
217 | */
218 | protected static function addInTime($date, $num, $unit = 'days') {
219 | if(is_null($date)):
220 | $date = time();
221 | else:
222 | $date = strtotime($date);
223 | endif;
224 | return $date + $num * self::$convert[$unit];
225 | }
226 |
227 | /**
228 | * @todo
229 | * Converte entre formatos de data
230 | *
231 | * @version 0.1 Initial
232 | *
233 | * @param
234 | * @param
235 | * @param
236 | */
237 | public static function convertFrom($fromFormat, $date, $toFormat = null){
238 |
239 |
240 | }
241 | }
--------------------------------------------------------------------------------
/lib/utils/Debug.php:
--------------------------------------------------------------------------------
1 | ' .PHP_EOL . print_r($data, true) . PHP_EOL . '' . PHP_EOL;
24 | else:
25 | echo '
';
29 | endif;
30 | }
31 |
32 | public static function dump($data) {
33 | self::pr(var_export($data, true));
34 | }
35 |
36 | public static function trace() {
37 | return debug_backtrace();
38 | }
39 | }
40 |
41 | function pr($data, $legend = null) {
42 | Debug::pr($data, $legend);
43 | }
44 |
45 | function dump($data) {
46 | Debug::dump($data);
47 | }
--------------------------------------------------------------------------------
/lib/utils/Math.php:
--------------------------------------------------------------------------------
1 |
15 | @package ObjectBoleto http://github.com/klawdyo/PHP-Object-Boleto
16 | @subpackage ObjectBoleto.Lib.Utils
17 | @license http://www.opensource.org/licenses/mit-license.php The MIT License
18 |
19 | -----------------------------------------------
20 | HOW TO USE
21 | -----------------------------------------------
22 | //Inclua a class no arquivo
23 | require 'lib/utils/Math.php';
24 |
25 | //Chame as funções normalmente
26 | echo Math::Mod11('261533'); //Retorna 9
27 | echo Math::Mod10('261533'); //Retorna 4
28 |
29 | -----------------------------------------------
30 | CHANGELOG
31 | -----------------------------------------------
32 |
33 | 17/05/2011
34 | [+] Mod11() calcula o módulo 11 do número informado
35 | [+] Mod10() calcula o módulo 10 do número informado
36 | [+] financing() calcula a prestacao de um financiamento considerando
37 | periodo, valor inicial e juros
38 |
39 | 22/05/2011
40 | [m] Correção de bug em Mod11()
41 |
42 | 24/05/2011
43 | [m] Mod10() e Mod11() agora podem retornar o valor original formatado
44 | juntamente com o dígito calculado pelo algoritmo
45 |
46 | 28/05/2011
47 | [m] Adicionado $maxFactor em Mod11() como quinto parâmetro
48 | [m] $separator foi movido para o sexto parâmetro
49 |
50 | -----------------------------------------------
51 | TO DO
52 | -----------------------------------------------
53 |
54 | - Cálculo de parcelas em um parcelamento simples, com arredondamento,
55 | retirada dos centavos para outra prestação, etc.
56 |
57 | -----------------------------------------------
58 | KNOWN BUGS
59 | -----------------------------------------------
60 | Ao passar números como inteiros, e que comecem com 0, o PHP
61 | entendará tratar-se de um octal e o cálculo será errado. A solução
62 | é sempre evitar adicionar à esquerda do número, ou sempre passar
63 | o número entre aspas, mantendo como string e evitando a conversão
64 | automática para octal.
65 |
66 |
67 | */
68 | class Math{
69 |
70 | /**
71 | * method Mod11()
72 | * Calcula o módulo 11 de um número, conforme esquema abaixo, retirado
73 | * de http://pt.wikipedia.org/wiki/D%C3%ADgito_verificador
74 |
75 | +---+---+---+---+---+---+ +---+
76 | | 2 | 6 | 1 | 5 | 3 | 3 | - | 9 |<---
77 | +---+---+---+---+---+---+ +---+
78 | | | | | | |
79 | x7 x6 x5 x4 x3 x2
80 | | | | | | |
81 | =14 =36 =5 =20 =9 =6
82 | +---+---+---+---+---+-> = (90 x 10) / 11 = 81, resto 9 => Dígito = 9
83 |
84 | +---+---+---+---+---+---+ +---+---+
85 | | 2 | 6 | 1 | 5 | 3 | 3 | - | 9 | 4 |<---
86 | +---+---+---+---+---+---+ +---+---+
87 | | | | | | | |
88 | x8 x7 x6 x5 x4 x3 x2
89 | | | | | | | |
90 | =16 =42 =6 =25 =12 =9 =18
91 | +---+---+---+---+---+-> = (128 x 10) / 11 = 116, resto 4 => Dígito = 4
92 |
93 | * @version 0.1 17/05/2011 Initial
94 | * 0.2 22/05/2011 Bug corrigido
95 | * 0.3 24/05/2011 Adicionados os parâmetros $returnFull e $separator
96 | * 0.4 28/05/2011 Adicionado o parâmetro $maxFactor
97 | * 0.5 19/10/2013 Corrigido erro no retorno
98 | *
99 | * @param $number O número informado
100 | * @param $ifTen Caso o resto da divisão seja 10, o que colocar
101 | * em seu lugar? Existem exemplos de bancos que adicionam
102 | * "0", outros "1", outros "X", outros "P", etc
103 | * @param $ifZero Se o resultado for zero, substituir por algum outro valor?
104 | * @param $returnFull Deve retornar o valor completo, incluindo o dígito,
105 | * ou somente o cálculo da divisão?
106 | * @param $maxFactor Estipula o fator máximo de múltiplicação a ser aplicado
107 | * nos algarismos do número informado
108 | * @param $separator Separador para o dígito calculado
109 | * @return mixed
110 | */
111 | public static function Mod11($number, $ifTen = '0', $ifZero = '0',
112 | $returnFull = false, $maxFactor = 9, $separator = '-'){
113 | $numLen = strlen($number) - 1;
114 | $sum = 0;
115 | $factor = 2; //Inicial
116 |
117 | #Loop pelos algarismos, de trás pra frente. O último número
118 | #é multiplicado pelo fator 2, o penúltimo por 3, e assim por diante.
119 | #Quando o fator ficar maior que $maxFactor, retorno seu valor para 2
120 | for($i = $numLen; $i >= 0; $i --){
121 | $sum += substr($number, $i, 1) * $factor;
122 | $factor = $factor >= $maxFactor ? 2 : $factor + 1;
123 | }
124 |
125 | #Resto da divisão
126 | $rest = ($sum * 10) % 11;
127 |
128 | #Verificando se o resto é 10 ou zero. //v0.5
129 | if($rest === 10){$rest = $ifTen;}
130 | elseif($rest === 0){$rest = $ifZero;}
131 |
132 | #Se $returnFull===false, retorna só o resto
133 | if($returnFull === false)
134 | return $rest;
135 | else
136 | return $number . $separator . $rest;
137 | }
138 |
139 |
140 | /**
141 | * Method Mod10()
142 | * Calcula o módulo 10 de um número, conforme o esquema a seguir
143 | *
144 | * @version 0.1 17/05/2011 Initial
145 | * 0.2 24/05/2011 Adicionados os parâmetros $returnFullNumber e $separator
146 | *
147 | * @tutorial
148 | +---+---+---+---+---+---+ +---+
149 | | 2 | 6 | 1 | 5 | 3 | 3 | - | 4 |
150 | +---+---+---+---+---+---+ +---+
151 | | | | | | |
152 | x1 x2 x1 x2 x1 x2
153 | | | | | | |
154 | =2 =12 =1 =10 =3 =6
155 | +2 +1+2 +1 +1+0 +3 +6 = 16
156 | +---+---+---+---+---+-> = (16 / 10) = 1, resto 6 => DV = (10 - 6) = 4
157 | * Se o resto for diferente de 0, o resultado será 10 menos esse número
158 | *
159 | * @param $number Número a ser calculado o módulo 10
160 | * @param $returnFull Deve retornar o valor completo, incluindo o dígito,
161 | * ou somente o cálculo da divisão?
162 | * @param $separator Separador para o dígito calculado
163 | * @return integer
164 | */
165 | public static function Mod10($number, $returnFullNumber = false, $separator = '-'){
166 | $numLen = strlen($number) - 1;
167 | $sum = 0;
168 | $factor = 2;
169 |
170 | for($i = $numLen; $i >= 0; $i --){
171 | $result = substr($number, $i, 1) * $factor;
172 |
173 | if($result >= 10){
174 | $result = substr($result, 0, 1) + substr($result, 1, 1);
175 | }
176 |
177 | $sum += $result;
178 | $factor = $factor == 2 ? 1 : 2;
179 | }
180 | //Resto da divisão
181 | $rest = $sum % 10;
182 |
183 | $rest = $rest <> 0 ? 10 - $rest : $rest;
184 |
185 | if($returnFullNumber === false){
186 | return $rest;
187 | }
188 | else{
189 | return $number . $separator . $rest;
190 | }
191 | }
192 |
193 | /**
194 | * http://pt.wikipedia.org/wiki/Tabela_price#C.C3.A1lculo
195 | */
196 | public static function financing($investimento, $juros, $periodo) {
197 | return ($investimento * $juros) / (1 - (1 / pow((1 + $juros), $periodo)));
198 | }
199 | }
--------------------------------------------------------------------------------
/lib/utils/String.php:
--------------------------------------------------------------------------------
1 | $length):
89 | //O último espaço encontrado na string
90 | $lastSpacePos = mb_strrpos($newText, " ");
91 |
92 | //Tem que encontrar pelo menos 1 espaço. Se encontrar, defina o
93 | //tamanho a ser cortado como sendo a posição desse espaço
94 | if($lastSpacePos !== false):
95 | $length = $lastSpacePos;
96 | endif;
97 |
98 | return mb_substr($newText, 0, $length) . $complement;
99 | else:
100 | return $text;
101 | endif;
102 | }
103 |
104 | /**
105 | * Checa se a string passada está em UTF-8
106 | *
107 | * @version
108 | * 0.1 09/10/2010 Initial
109 | *
110 | * @param string $text
111 | * @return bool TRUE caso a string esteja em utf-8
112 | */
113 | public function isUtf8($text){
114 | return mb_check_encoding($text, 'utf-8');
115 | }
116 |
117 |
118 | /**
119 | * Checa se a string passada está em UTF-8
120 | *
121 | * @version
122 | * 0.1 09/10/2010 Initial
123 | *
124 | * @param string $text
125 | * @param mixed $verifyFollowings A lista dos charsets que serão usados
126 | * para verificar se a string informada está em um deles.
127 | * @return string O nome do charset utilizado na string. A busca é feita
128 | * entre os charsets indicados em $verifyFollowings
129 | */
130 | public function getCharset($text,
131 | $verifyFollowings = array('utf-8', 'iso-8859-1')){
132 |
133 | //O "x" corrige um bug da função "mb_detect_string", que falha caso
134 | //a última letra da string seja acentuada.
135 | return mb_detect_encoding($text . 'x', $verifyFollowings);
136 | }
137 |
138 | /**
139 | * Converte para utf8 se ainda não estiver
140 | *
141 | * @version
142 | * 0.1 09/10/2010 Initial
143 | *
144 | * @param string $text A string que será convertida
145 | * @return String O texto convertido
146 | */
147 | public function toUtf8($text){
148 | if(!$this->isUtf8($text)):
149 | return utf8_encode($text);
150 | endif;
151 |
152 | return $text;
153 | }
154 |
155 | public static function insert($string, $data) {
156 | foreach($data as $key => $value):
157 | $regex = '%(:' . $key . ')%';
158 | $string = preg_replace($regex, $value, $string);
159 | endforeach;
160 | return $string;
161 | }
162 | public static function extract($string) {
163 | preg_match_all('%:([a-zA-Z-_]+)%', $string, $extracted);
164 | return $extracted[1];
165 | }
166 | //18/05/2011
167 | public static function putAt($text, $put, $at){
168 | return self::left($text, $at) . $put . mb_substr($text, $at);
169 | }
170 | //18/05/2011
171 | public static function applyMask($text, $mask){
172 | $length = strlen($text);
173 | $buff = '';
174 |
175 | $special = array('/', '.', '-', '_', ' ');
176 |
177 | for($i = 0, $j = 0; $i < $length; $i++, $j++){
178 | if(!isset($text[$i]) || !isset($mask[$j])) break;
179 |
180 | if(in_array($mask[$j], $special)){
181 | $buff .= $mask[$j];
182 | $j++;
183 | }
184 | $buff .= $text[$i];
185 | }
186 |
187 | return $buff;
188 | }
189 |
190 | }
--------------------------------------------------------------------------------
/lib/utils/Validar.php:
--------------------------------------------------------------------------------
1 | 'SP','02'=> 'MG','03'=> 'RJ','04'=> 'RS','05'=> 'BA',
33 | '06'=> 'PR','07'=> 'CE','08'=> 'PE','09'=> 'SC','10'=> 'GO',
34 | '11'=> 'MA','12'=> 'PB','13'=> 'PA','14'=> 'ES','15'=> 'PI',
35 | '16'=> 'RN','17'=> 'AL','18'=> 'MT','19'=> 'MS','20'=> 'DF',
36 | '21'=> 'SE','22'=> 'AM','23'=> 'RO','24'=> 'AC','25'=> 'AP',
37 | '26'=> 'RR','27'=> 'TO','28'=> 'EX'
38 | );
39 | * @param $msg Mensagem personalizada para esse campo. Caso seja null, error()
40 | * roteará a mensagem para o padrão da função de validação
41 | */
42 | public static function titulo($sigla_uf = null, $msg = null){
43 | //Só permite números
44 | if(eregi("([^0-9]+)", $this->nowdata())){
45 | $this->error($msg, 'titulo', null, 'Só números são permitidos');
46 | }
47 | else{
48 | // precisa ter 12 caracteres numéricos. retira tudo q nao for número e adiciona zeros à esquerda.
49 | $titulo = str_pad($this->nowdata(),12,"0",STR_PAD_LEFT);
50 |
51 | $tit = substr($titulo,0,8);
52 | $num_uf = substr($titulo,8,2);
53 | $dv = substr($titulo,10,2);
54 | $ignore_list = array('000000000000');
55 |
56 | if(in_array($titulo, $ignore_list))
57 | return false;
58 |
59 | //1 dv
60 | for($i = 0; $i < 8; $i++){
61 | $soma1 += $tit[$i] * ($i+2);
62 | }
63 | //2 dv
64 | $soma2 = $num_uf[0] * 7 + $num_uf[1] * 8 + ($soma1 % 11) * 9;
65 |
66 | if(($soma1 % 11) . ($soma2%11) != $dv){
67 | $error = 5;
68 | }
69 |
70 | if($error > 0){
71 | $this->error($msg, 'titulo');
72 | }
73 | }
74 | return $this;
75 | }
76 |
77 | /**
78 | * Valida um PIS (Programa de Integração Social)
79 | *
80 | * @version: 0.3 18/05/2009
81 | * 1.0 23/05/2011 - Importado do ValidationComponent.
82 | * - Agora retorna true or false
83 | * - Método static
84 | * @param $pis Número do PIS
85 | * @return boolean True se for um número válido
86 | */
87 | public static function pis($pis){
88 | #permite pontos e traços, mas não deve permitir outras coisas
89 | $pis = str_pad(preg_replace("([^0-9]+)", '', $pis), 10, '0', STR_PAD_LEFT);
90 | #DV informado
91 | $dv = substr($pis,-1,1);
92 | #sequencia de números a serem calculados
93 | $seqcalc = "3298765432";
94 |
95 | $soma = 0;
96 |
97 | for($i = 0; $i < 10; $i++){
98 | $soma += $pis[$i] * $seqcalc[$i];
99 | }
100 |
101 | $dv1 = (($soma % 11) < 2) ? 0 : (11 - ($soma % 11));
102 |
103 | return ($dv1 != $dv);
104 | }
105 |
106 | /**
107 | * function cpf()
108 | * Valida um CPF verificando seus algarismos e seus dígitos verificadores.
109 | * Para fins de validação, cpf() não leva em consideração as presenças de pontos e
110 | * traços ao número informado.
111 | *
112 | * @version: 0.3 18/05/2009 Initial
113 | * 1.0 23/05/2011 - Método agora é static
114 | * - Retorna true se for válido
115 | * - Importado do ValidationComponent.
116 | *
117 | * @param $value CPF a ser verificado
118 | * @return $this
119 | */
120 | public static function cpf($value) {
121 | #permite pontos e traços, mas não deve permitir outras coisas
122 | $value = str_pad(preg_replace("([^0-9]+)", '', $value), 11, '0', STR_PAD_LEFT);
123 |
124 | $cpf = substr($value, 0, 9);
125 | $dv = substr($value,9,2);
126 |
127 | $soma = $soma2 = 0;
128 | for($i = 0; $i <= 9; $i++){
129 | $ignore_list[] = str_repeat($i, 11); //gerando ignore list
130 | @$soma += $cpf[$i] * (10 - $i);
131 | @$soma2 += $cpf[$i] * (11 - $i);
132 | }
133 |
134 | if(in_array($value, $ignore_list)){
135 | return false;
136 | }
137 |
138 | $dv1 = (($soma % 11) <= 1) ? 0 : (11 - ($soma % 11));
139 | $soma2 = ($soma2 + $dv[0] * 2) % 11;
140 | $dv2 = (($soma2 % 11) <= 1) ? 0 : (11 - ($soma2 % 11));
141 | //pr($dv1.$dv2);
142 | if($dv1 . $dv2 != $dv[0] . $dv[1]){
143 | return false;
144 | }
145 | return true;
146 | }
147 |
148 | /**
149 | * Valida uma CNH (Carteira nacional de habilitação)
150 | *
151 | * @version 0.1 Initial. Retirado da internet
152 | * 0.2 23/05/2011 - Transformado em static
153 | * - Algumas adaptações
154 | * - Importado do ValidationComponent.
155 | *
156 | */
157 | public static function cnh($cnh) {
158 | $ret = false;
159 |
160 | if((strlen($cnh = preg_replace('/[^\d]/' , '' , $cnh)) == 11 )){
161 | $dsc = 0;
162 |
163 | for ( $i = 0 , $j = 9 , $v = 0 ; $i < 9 ; ++$i , --$j ){
164 | $v += (int) $cnh{ $i } * $j;
165 | }
166 |
167 | if ( ( $vl1 = $v % 11 ) >= 10 ) {
168 | $vl1 = 0;
169 | $dsc = 2;
170 | }
171 |
172 | for ( $i = 0 , $j = 1 , $v = 0 ; $i < 9 ; ++$i , ++$j ){
173 | $v += (int) $cnh{ $i } * $j;
174 | }
175 |
176 | $vl2 = ( $x = ( $v % 11 ) ) >= 10 ? 0 : $x - $dsc;
177 | $ret = sprintf( '%d%d' , $vl1 , $vl2 ) == substr( $cnh , -2 );
178 | }
179 |
180 | return $ret;
181 | }
182 |
183 | /**
184 | * function cnpj()
185 | * Valida um CNPJ.
186 | * cnpj() não considera pontos, traços e barras.
187 | *
188 | * @version: 0.2 18/05/2009
189 | * 0.3 23/05/2011 - Agora retorna True se for um cnpj válido
190 | * - Importado do ValidationComponent.
191 | * 0.4 27/05/2011 Método transformado em static
192 | * 0.5 27/05/2011 Mudança do algoritmo
193 | *
194 | * @param $cnpj CNPJ a ser verificado
195 | * @return boolean
196 | */
197 | public static function cnpj($cnpj = null){
198 | /*elimina tudo que não for números e acrescenta zeros à esquerda
199 | $cnpj = String::left(preg_replace("([^0-9])", "", $cnpj), 14);
200 | $dv = String::right($cnpj, 2);
201 | $seqcalc1 = "543298765432";
202 | $seqcalc2 = "6543298765432";
203 |
204 | $soma1 = $soma2 = 0;
205 | //faz as multiplicações
206 | for($i = 0; $i < 12; $i++){
207 | $soma1 += $cnpj[$i] * $seqcalc1[$i];
208 | $soma2 += $cnpj[$i] * $seqcalc2[$i];
209 | }
210 |
211 | $dv1 = (($soma1 % 11) < 2) ? 0 : (11 - ($soma1 % 11));
212 |
213 | $soma2 += $dv1 * 2;
214 | $dv2 = (($soma2 % 11) < 2) ? 0 : (11 - ($soma2 % 11));
215 |
216 | return $dv1 . $dv2 != $dv;/**/
217 | // Canonicalize input
218 | $cnpj = sprintf('%014s', preg_replace('{\D}', '', $cnpj));
219 |
220 | // Validate length and CNPJ order
221 | if ((strlen($cnpj) != 14)
222 | || (intval(substr($cnpj, -4)) == 0)) {
223 | return false;
224 | }
225 |
226 | // Validate check digits using a modulus 11 algorithm
227 | for ($t = 11; $t < 13;) {
228 | for ($d = 0, $p = 2, $c = $t; $c >= 0; $c--, ($p < 9) ? $p++
229 | : $p = 2) {
230 | $d += $cnpj[$c] * $p;
231 | }
232 |
233 | if ($cnpj[++$t] != ($d = ((10 * $d) % 11) % 10)) {
234 | return false;
235 | }
236 | }
237 |
238 | return true;
239 |
240 | }
241 |
242 |
243 | }
--------------------------------------------------------------------------------
/lib/utils/Validate_BR.php:
--------------------------------------------------------------------------------
1 |
9 | * @version 20100404
10 | * @copyright 2005-2010 Paulo Freitas
11 | * @license http://creativecommons.org/licenses/by-sa/3.0
12 | */
13 | class Validate_BR
14 | {
15 | /*
16 | * Credit card flag constants
17 | */
18 | const CARD_AMEX = 1;
19 | const CARD_DINERS = 2;
20 | const CARD_DISCOVER = 4;
21 | const CARD_MASTERCARD = 8;
22 | const CARD_VISA = 16;
23 | const CARD_ALL = 32;
24 |
25 | /**
26 | * Validates credit card
27 | *
28 | * @param string $cc credit card number to validate
29 | * @param int $flag card flag to validate
30 | * @return bool TRUE if the number is a valid credit card, FALSE otherwise
31 | * @access public
32 | * @since 20060317
33 | */
34 | public static function CC($cc, $flag = Validate_BR::CARD_ALL)
35 | {
36 | // Canonicalize input
37 | $cc = preg_replace('{\D}', '', $cc);
38 |
39 | // Validate choosed flags
40 | $er = array();
41 |
42 | if ($flag & self::CARD_AMEX) {
43 | $er[] = '^3[47].{13}$';
44 | }
45 |
46 | if ($flag & self::CARD_DINERS) {
47 | $er[] = '^3(0[0-5].{11}|6.{12})$';
48 | }
49 |
50 | if ($flag & self::CARD_DISCOVER) {
51 | $er[] = '^6(011.{12}|5.{14})$';
52 | }
53 |
54 | if ($flag & self::CARD_MASTERCARD) {
55 | $er[] = '^5[1-5].{14}$';
56 | }
57 |
58 | if ($flag & self::CARD_VISA) {
59 | $er[] = '^4.{15}$';
60 | }
61 |
62 | if (empty($er) || !preg_match('~' . implode('|', $er) . '~', $cc)) {
63 | return false;
64 | }
65 |
66 | // Validate digits using a modulus 10 algorithm (aka Luhn)
67 | for ($sum = 0, $idx = strlen($cc) - 1, $wt = 1; $idx >= 0;
68 | $wt = ($wt % 2) + 1, --$idx) {
69 | $sum += (($d = intval($cc[$idx]) * $wt) > 9) ? $d - 9 : $d;
70 | }
71 |
72 | return (($sum % 10) == 0);
73 | }
74 |
75 | /**
76 | * Validates CNH (Carteira Nacional de Habilitação)
77 | *
78 | * CNH is the Brazilian driving license.
79 | *
80 | * @param string $cnh CNH number to validate
81 | * @return bool TRUE if the number is a valid CNH, FALSE otherwise
82 | * @access public
83 | * @since 20100404
84 | */
85 | public static function CNH($cnh)
86 | {
87 | // Canonicalize input
88 | $cnh = sprintf('%011s', preg_replace('{\D}', '', $cnh));
89 |
90 | // Validate length and invalid numbers
91 | if ((strlen($cnh) != 11) || (intval($cnh) == 0)) {
92 | return false;
93 | }
94 |
95 | // Validate check digits using a modulus 11 algorithm
96 | for ($c = $s1 = $s2 = 0, $p = 9; $c < 9; $c++, $p--) {
97 | $s1 += intval($cnh[$c]) * $p;
98 | $s2 += intval($cnh[$c]) * (10 - $p);
99 | }
100 |
101 | if ($cnh[9] != (($dv1 = $s1 % 11) > 9) ? 0 : $dv1) {
102 | return false;
103 | }
104 |
105 | if ($cnh[10] != (((($dv2 = ($s2 % 11) - (($dv1 > 9) ? 2 : 0)) < 0)
106 | ? $dv2 + 11 : $dv2) > 9) ? 0 : $dv2) {
107 | return false;
108 | }
109 |
110 | return true;
111 | }
112 |
113 | /**
114 | * Validates CNPJ (Cadastro Nacional da Pessoa Jurídica)
115 | *
116 | * CNPJ is the Brazilian corporate taxpayer identification number.
117 | *
118 | * @param string $cnpj CNPJ number to validate
119 | * @return bool TRUE if the number is a valid CNPJ, FALSE otherwise
120 | * @access public
121 | * @since 20050619
122 | */
123 | public static function CNPJ($cnpj)
124 | {
125 | // Canonicalize input
126 | $cnpj = sprintf('%014s', preg_replace('{\D}', '', $cnpj));
127 |
128 | // Validate length and CNPJ order
129 | if ((strlen($cnpj) != 14)
130 | || (intval(substr($cnpj, -4)) == 0)) {
131 | return false;
132 | }
133 |
134 | // Validate check digits using a modulus 11 algorithm
135 | for ($t = 11; $t < 13;) {
136 | for ($d = 0, $p = 2, $c = $t; $c >= 0; $c--, ($p < 9) ? $p++
137 | : $p = 2) {
138 | $d += $cnpj[$c] * $p;
139 | }
140 |
141 | if ($cnpj[++$t] != ($d = ((10 * $d) % 11) % 10)) {
142 | return false;
143 | }
144 | }
145 |
146 | return true;
147 | }
148 |
149 | /**
150 | * Validates CPF (Cadastro de Pessoas Físicas)
151 | *
152 | * CPF is the Brazilian individual taxpayer identification number.
153 | *
154 | * @param string $cpf CPF number to validate
155 | * @return bool TRUE if the number is a valid CPF, FALSE otherwise
156 | * @access public
157 | * @since 20050617
158 | */
159 | public static function CPF($cpf)
160 | {
161 | // Canonicalize input
162 | $cpf = sprintf('%011s', preg_replace('{\D}', '', $cpf));
163 |
164 | // Validate length and invalid numbers
165 | if ((strlen($cpf) != 11)
166 | || ($cpf == '00000000000')
167 | || ($cpf == '99999999999')) {
168 | return false;
169 | }
170 |
171 | // Validate check digits using a modulus 11 algorithm
172 | for ($t = 8; $t < 10;) {
173 | for ($d = 0, $p = 2, $c = $t; $c >= 0; $c--, $p++) {
174 | $d += $cpf[$c] * $p;
175 | }
176 |
177 | if ($cpf[++$t] != ($d = ((10 * $d) % 11) % 10)) {
178 | return false;
179 | }
180 | }
181 |
182 | return true;
183 | }
184 |
185 | /**
186 | * Validates DDD (Discagem Direta a Distância)
187 | *
188 | * DDD is the Brazilian phone area code (NPA).
189 | *
190 | * @param string $ddd 2-digit DDD code
191 | * @return bool TRUE if the code is a valid DDD, FALSE otherwise
192 | * @access public
193 | * @since 20080719
194 | */
195 | public static function DDD($ddd)
196 | {
197 | return preg_match('{^([14689][1-9]|2[14]|[23][278]|[357][13-5]|7[79])$}',
198 | $ddd) != false;
199 | }
200 |
201 | /**
202 | * Validates NIS (PIS/PASEP/NIT)
203 | *
204 | * PIS/PASEP/NIT is the Brazilian social integration program.
205 | *
206 | * @param string $nis NIS number to validate
207 | * @return bool TRUE if the number is a valid NIS, FALSE otherwise
208 | * @access public
209 | * @since 20050620
210 | */
211 | public static function NIS($nis)
212 | {
213 | // Canonicalize input
214 | $nis = sprintf('%011s', preg_replace('{\D}', '', $nis));
215 |
216 | // Validate length and invalid numbers
217 | if ((strlen($nis) != 11)
218 | || (intval($nis) == 0)) {
219 | return false;
220 | }
221 |
222 | // Validate check digit using a modulus 11 algorithm
223 | for ($d = 0, $p = 2, $c = 9; $c >= 0; $c--, ($p < 9) ? $p++ : $p = 2) {
224 | $d += $nis[$c] * $p;
225 | }
226 |
227 | return ($nis[10] == (((10 * $d) % 11) % 10));
228 | }
229 |
230 | /**
231 | * Validates TE (Título Eleitoral)
232 | *
233 | * Título Eleitoral is the Brazilian voter registration card.
234 | *
235 | * @param string $te TE number to validate
236 | * @return bool TRUE if the number is a valid TE, FALSE otherwise
237 | * @access public
238 | * @since 20060315
239 | */
240 | public static function TE($te)
241 | {
242 | // Canonicalize input and parse UF
243 | $te = sprintf('%012s', preg_replace('{\D}', '', $te));
244 | $uf = intval(substr($te, 8, 2));
245 |
246 | // Validate length and invalid UFs
247 | if ((strlen($te) != 12)
248 | || ($uf < 1)
249 | || ($uf > 28)) {
250 | return false;
251 | }
252 |
253 | // Validate check digits using a slightly modified modulus 11 algorithm
254 | foreach (array(7, 8 => 10) as $s => $t) {
255 | for ($d = 0, $p = 2, $c = $t; $c >= $s; $c--, $p++) {
256 | $d += $te[$c] * $p;
257 | }
258 |
259 | if ($te[($s) ? 11 : 10] != ((($d %= 11) < 2) ? (($uf < 3) ? 1 - $d
260 | : 0)
261 | : 11 - $d)) {
262 | return false;
263 | }
264 | }
265 |
266 | return true;
267 | }
268 |
269 | /**
270 | * Validates UF (Unidade Federativa)
271 | *
272 | * UF is the Brazilian federal unit.
273 | *
274 | * @param string $uf 2-letter UF code
275 | * @return bool TRUE if the code is a valid UF, FALSE otherwise
276 | * @access public
277 | * @since 20050620
278 | */
279 | public static function UF($uf)
280 | {
281 | return preg_match('{^A[CLMP]|BA|CE|DF|ES|[GT]O|M[AGST]|P[ABEIR]|R[JNORS]'
282 | . '|S[CEP]$}', $uf) != false;
283 | }
284 | }
--------------------------------------------------------------------------------
/lib/utils/Validation.php:
--------------------------------------------------------------------------------
1 | array(
15 | 'min_range' => $min,
16 | 'max_range' => $max,
17 | )
18 | )) !== false;
19 | }
20 |
21 | public static function blank($value) {
22 | return !preg_match('/[^\s]/', $value);
23 | }
24 |
25 | public static function boolean($value) {
26 | $boolean = array(0, 1, '0', '1', true, false);
27 |
28 | return in_array($value, $boolean, true);
29 | }
30 |
31 | public static function creditCard($value) {
32 | return preg_match('/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13})$/', $value);
33 | }
34 |
35 | public static function comparison($value1, $operator, $value2) {
36 | switch($operator) {
37 | case '>':
38 | case 'greater':
39 | return $value1 > $value2;
40 | case '<':
41 | case 'less':
42 | return $value1 < $value2;
43 | case '>=':
44 | case 'greaterorequal':
45 | return $value1 >= $value2;
46 | case '<=':
47 | case 'lessorequal':
48 | return $value1 <= $value2;
49 | case '==':
50 | case 'equal':
51 | return $value1 == $value2;
52 | case '!=':
53 | case 'notequal':
54 | return $value1 != $value2;
55 | }
56 |
57 | return false;
58 | }
59 |
60 | public function regex($value, $regex) {
61 | return preg_match($regex, $value);
62 | }
63 |
64 | public static function date($value) {
65 | $regex = '%^(?:(?:31(/|-|\\.)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(/|-|\\.)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(/|-|\\.)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(/|-|\\.)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$%';
66 |
67 | return (bool) preg_match($regex, $value);
68 | }
69 |
70 | public static function decimal($value, $places = null) {
71 | if(is_null($places)) {
72 | $regex = '/^[+-]?[\d]+\.[\d]+([eE][+-]?[\d]+)?$/';
73 | }
74 | else {
75 | $regex = '/^[+-]?[\d]+\.[\d]{' . $places . '}$/';
76 | }
77 |
78 | return (bool) preg_match($regex, $value);
79 | }
80 |
81 | public static function email($value) {
82 | return filter_var($value, FILTER_VALIDATE_EMAIL) !== false;
83 | }
84 |
85 | public static function equal($value, $compare) {
86 | return $value === $compare;
87 | }
88 |
89 | public static function ip($value) {
90 | return filter_var($value, FILTER_VALIDATE_IP) !== false;
91 | }
92 |
93 | public static function minLength($value, $length) {
94 | $value_length = strlen($value);
95 |
96 | return $value_length >= $length;
97 | }
98 |
99 | public static function maxLength($value, $length) {
100 | $value_length = strlen($value);
101 |
102 | return $value_length <= $length;
103 | }
104 |
105 | public static function multiple($values, $list, $min = null, $max = null) {
106 | $values = array_filter($values);
107 |
108 | if(empty($values)) {
109 | return false;
110 | }
111 | else if(!is_null($min) && count($values) < $min) {
112 | return false;
113 | }
114 | else if(!is_null($max) && count($values) > $max) {
115 | return false;
116 | }
117 | else {
118 | foreach(array_keys($values) as $value) {
119 | if(!in_array($value, $list)) {
120 | return false;
121 | }
122 | }
123 | }
124 |
125 | return true;
126 | }
127 |
128 | public static function inList($value, $list) {
129 | return in_array($value, $list);
130 | }
131 |
132 | public static function numeric($value) {
133 | return is_numeric($value);
134 | }
135 |
136 | public static function notEmpty($value) {
137 | return (bool) preg_match('/[^\s]+/m', $value);
138 | }
139 |
140 | public static function range($value, $lower = null, $upper = null) {
141 | if(is_numeric($value)) {
142 | if(!is_null($lower) || !is_null($upper)) {
143 | $check_lower = $check_upper = true;
144 | if(!is_null($lower)) {
145 | $check_lower = $value > $lower;
146 | }
147 | if(!is_null($upper)) {
148 | $check_upper = $value < $upper;
149 | }
150 | }
151 | else {
152 | return is_finite($value);
153 | }
154 |
155 | return $check_lower && $check_upper;
156 | }
157 |
158 | return false;
159 | }
160 |
161 | public static function time($value) {
162 | $regex = '/^([01]\d|2[0-3])(:[0-5]\d){1,2}$'
163 | . '|^(0?[1-9]|1[0-2])(:[0-5]\d){1,2}\s?[AaPp]m$/';
164 |
165 | return (bool) preg_match($regex, $value);
166 | }
167 |
168 | public static function url($value) {
169 | return filter_var($value, FILTER_VALIDATE_URL) !== false;
170 | }
171 | }
--------------------------------------------------------------------------------
/ob_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/ob_logo.png
--------------------------------------------------------------------------------
/ob_logo_compacto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/ob_logo_compacto.png
--------------------------------------------------------------------------------
/public/css/bb.css:
--------------------------------------------------------------------------------
1 | /****** SEPARADORES DOS CAMPOS ****/
2 | #recibo .linha div,
3 | #ficha_compensacao #colunadireita div,
4 | #ficha_compensacao #colunaprincipal .item,
5 | #ficha_compensacao #colunaprincipal .mensagens{
6 | border-left-color:#FF0;
7 | }
8 |
9 | /****** LINHAS NO CABEÇALHO ******/
10 | .cabecalho, .cabecalho .banco_codigo{
11 | border-color:#009;
12 | }
13 |
14 | /****** LINHAS INFERIORES DOS CAMPOS ******/
15 | #recibo div,
16 | #ficha_compensacao #colunaprincipal div,
17 | #ficha_compensacao #colunadireita div,
18 | #ficha_compensacao #sacado{
19 | border-bottom-color:#009;
20 | }
21 |
22 | /***** CORES DOS TEXTOS **********/
23 | #ficha_compensacao{
24 | color:#000;
25 | }
26 |
27 | /***** CORES DOS LABELS **********/
28 | #ficha_compensacao label, #recibo label{
29 | color:#009;
30 | }
31 |
32 | /***** CORES DOS TEXTOS DO CABEÇALHO**********/
33 | .cabecalho{
34 | color:#009;
35 | }
--------------------------------------------------------------------------------
/public/css/blueprint/ie.css:
--------------------------------------------------------------------------------
1 | /* -----------------------------------------------------------------------
2 |
3 |
4 | Blueprint CSS Framework 0.9
5 | http://blueprintcss.org
6 |
7 | * Copyright (c) 2007-Present. See LICENSE for more info.
8 | * See README for instructions on how to use Blueprint.
9 | * For credits and origins, see AUTHORS.
10 | * This is a compressed file. See the sources in the 'src' directory.
11 |
12 | ----------------------------------------------------------------------- */
13 |
14 | /* ie.css */
15 | body {text-align:center;}
16 | .container {text-align:left;}
17 | * html .column, * html div.span-1, * html div.span-2, * html div.span-3, * html div.span-4, * html div.span-5, * html div.span-6, * html div.span-7, * html div.span-8, * html div.span-9, * html div.span-10, * html div.span-11, * html div.span-12, * html div.span-13, * html div.span-14, * html div.span-15, * html div.span-16, * html div.span-17, * html div.span-18, * html div.span-19, * html div.span-20, * html div.span-21, * html div.span-22, * html div.span-23, * html div.span-24 {display:inline;overflow-x:hidden;}
18 | * html legend {margin:0px -8px 16px 0;padding:0;}
19 | sup {vertical-align:text-top;}
20 | sub {vertical-align:text-bottom;}
21 | html>body p code {*white-space:normal;}
22 | hr {margin:-8px auto 11px;}
23 | img {-ms-interpolation-mode:bicubic;}
24 | .clearfix, .container {display:inline-block;}
25 | * html .clearfix, * html .container {height:1%;}
26 | fieldset {padding-top:0;}
27 | textarea {overflow:auto;}
28 | input.text, input.title, textarea {background-color:#fff;border:1px solid #bbb;}
29 | input.text:focus, input.title:focus {border-color:#666;}
30 | input.text, input.title, textarea, select {margin:0.5em 0;}
31 | input.checkbox, input.radio {position:relative;top:.25em;}
32 | form.inline div, form.inline p {vertical-align:middle;}
33 | form.inline label {position:relative;top:-0.25em;}
34 | form.inline input.checkbox, form.inline input.radio, form.inline input.button, form.inline button {margin:0.5em 0;}
35 | button, input.button {position:relative;top:0.25em;}
--------------------------------------------------------------------------------
/public/css/blueprint/print.css:
--------------------------------------------------------------------------------
1 | /* -----------------------------------------------------------------------
2 |
3 |
4 | Blueprint CSS Framework 0.9
5 | http://blueprintcss.org
6 |
7 | * Copyright (c) 2007-Present. See LICENSE for more info.
8 | * See README for instructions on how to use Blueprint.
9 | * For credits and origins, see AUTHORS.
10 | * This is a compressed file. See the sources in the 'src' directory.
11 |
12 | ----------------------------------------------------------------------- */
13 |
14 | /* print.css */
15 | body {line-height:1.5;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;color:#000;background:none;font-size:10pt;}
16 | .container {background:none;}
17 | hr {background:#ccc;color:#ccc;width:100%;height:2px;margin:2em 0;padding:0;border:none;}
18 | hr.space {background:#fff;color:#fff;visibility:hidden;}
19 | h1, h2, h3, h4, h5, h6 {font-family:"Helvetica Neue", Arial, "Lucida Grande", sans-serif;}
20 | code {font:.9em "Courier New", Monaco, Courier, monospace;}
21 | a img {border:none;}
22 | p img.top {margin-top:0;}
23 | blockquote {margin:1.5em;padding:1em;font-style:italic;font-size:.9em;}
24 | .small {font-size:.9em;}
25 | .large {font-size:1.1em;}
26 | .quiet {color:#999;}
27 | .hide {display:none;}
28 | a:link, a:visited {background:transparent;font-weight:700;text-decoration:underline;}
29 | a:link:after, a:visited:after {content:" (" attr(href) ")";font-size:90%;}
--------------------------------------------------------------------------------
/public/css/blueprint/screen.css:
--------------------------------------------------------------------------------
1 | /* -----------------------------------------------------------------------
2 |
3 |
4 | Blueprint CSS Framework 0.9
5 | http://blueprintcss.org
6 |
7 | * Copyright (c) 2007-Present. See LICENSE for more info.
8 | * See README for instructions on how to use Blueprint.
9 | * For credits and origins, see AUTHORS.
10 | * This is a compressed file. See the sources in the 'src' directory.
11 |
12 | ----------------------------------------------------------------------- */
13 |
14 | /* reset.css */
15 | html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;}
16 | body {line-height:1.5;}
17 | table {border-collapse:separate;border-spacing:0;}
18 | caption, th, td {text-align:left;font-weight:normal;}
19 | table, td, th {vertical-align:middle;}
20 | blockquote:before, blockquote:after, q:before, q:after {content:"";}
21 | blockquote, q {quotes:"" "";}
22 | a img {border:none;}
23 |
24 | /* typography.css */
25 | html {font-size:100.01%;}
26 | body {font-size:75%;color:#222;background:#fff;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;}
27 | h1, h2, h3, h4, h5, h6 {font-weight:normal;color:#111;}
28 | h1 {font-size:2em;line-height:1;margin-bottom:0.5em;}
29 | h2 {font-size:1.6em;margin-bottom:0.75em;}
30 | h3 {font-size:1.4em;line-height:1;margin-bottom:1em;}
31 | h4 {font-size:1.2em;line-height:1.25;margin-bottom:1.25em;}
32 | h5 {font-size:1em;font-weight:bold;margin-bottom:1.5em;}
33 | h6 {font-size:1em;font-weight:bold;}
34 | h1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin:0;}
35 | p {margin:0 0 1.5em;}
36 | p img.left {float:left;margin:1.5em 1.5em 1.5em 0;padding:0;}
37 | p img.right {float:right;margin:1.5em 0 1.5em 1.5em;}
38 | a:focus, a:hover {color:#000;}
39 | a {color:#009;text-decoration:underline;}
40 | blockquote {margin:1.5em;color:#666;font-style:italic;}
41 | strong {font-weight:bold;}
42 | em, dfn {font-style:italic;}
43 | dfn {font-weight:bold;}
44 | sup, sub {line-height:0;}
45 | abbr, acronym {border-bottom:1px dotted #666;}
46 | address {margin:0 0 1.5em;font-style:italic;}
47 | del {color:#666;}
48 | pre {margin:1.5em 0;white-space:pre;}
49 | pre, code, tt {font:1em 'andale mono', 'lucida console', monospace;line-height:1.5;}
50 | li ul, li ol {margin:0;}
51 | ul, ol {margin:0 1.5em 1.5em 0;padding-left:3.333em;}
52 | ul {list-style-type:disc;}
53 | ol {list-style-type:decimal;}
54 | dl {margin:0 0 1.5em 0;}
55 | dl dt {font-weight:bold;}
56 | dd {margin-left:1.5em;}
57 | table {margin-bottom:1.4em;width:100%;}
58 | th {font-weight:bold;}
59 | thead th {background:#c3d9ff;}
60 | th, td, caption {padding:4px 10px 4px 5px;}
61 | tfoot {font-style:italic;}
62 | caption {background:#eee;}
63 | .small {font-size:.8em;margin-bottom:1.875em;line-height:1.875em;}
64 | .large {font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;}
65 | .hide {display:none;}
66 | .quiet {color:#666;}
67 | .loud {color:#000;}
68 | .highlight {background:#ff0;}
69 | .added {background:#060;color:#fff;}
70 | .removed {background:#900;color:#fff;}
71 | .first {margin-left:0;padding-left:0;}
72 | .last {margin-right:0;padding-right:0;}
73 | .top {margin-top:0;padding-top:0;}
74 | .bottom {margin-bottom:0;padding-bottom:0;}
75 |
76 | /* grid.css */
77 | .container {width:950px;margin:0 auto;}
78 | .showgrid {background:url(src/grid.png);}
79 | .column, div.span-1, div.span-2, div.span-3, div.span-4, div.span-5, div.span-6, div.span-7, div.span-8, div.span-9, div.span-10, div.span-11, div.span-12, div.span-13, div.span-14, div.span-15, div.span-16, div.span-17, div.span-18, div.span-19, div.span-20, div.span-21, div.span-22, div.span-23, div.span-24 {float:left;margin-right:10px;}
80 | .last, div.last {margin-right:0;}
81 | .span-1 {width:30px;}
82 | .span-2 {width:70px;}
83 | .span-3 {width:110px;}
84 | .span-4 {width:150px;}
85 | .span-5 {width:190px;}
86 | .span-6 {width:230px;}
87 | .span-7 {width:270px;}
88 | .span-8 {width:310px;}
89 | .span-9 {width:350px;}
90 | .span-10 {width:390px;}
91 | .span-11 {width:430px;}
92 | .span-12 {width:470px;}
93 | .span-13 {width:510px;}
94 | .span-14 {width:550px;}
95 | .span-15 {width:590px;}
96 | .span-16 {width:630px;}
97 | .span-17 {width:670px;}
98 | .span-18 {width:710px;}
99 | .span-19 {width:750px;}
100 | .span-20 {width:790px;}
101 | .span-21 {width:830px;}
102 | .span-22 {width:870px;}
103 | .span-23 {width:910px;}
104 | .span-24, div.span-24 {width:950px;margin-right:0;}
105 | input.span-1, textarea.span-1, input.span-2, textarea.span-2, input.span-3, textarea.span-3, input.span-4, textarea.span-4, input.span-5, textarea.span-5, input.span-6, textarea.span-6, input.span-7, textarea.span-7, input.span-8, textarea.span-8, input.span-9, textarea.span-9, input.span-10, textarea.span-10, input.span-11, textarea.span-11, input.span-12, textarea.span-12, input.span-13, textarea.span-13, input.span-14, textarea.span-14, input.span-15, textarea.span-15, input.span-16, textarea.span-16, input.span-17, textarea.span-17, input.span-18, textarea.span-18, input.span-19, textarea.span-19, input.span-20, textarea.span-20, input.span-21, textarea.span-21, input.span-22, textarea.span-22, input.span-23, textarea.span-23, input.span-24, textarea.span-24 {border-left-width:1px!important;border-right-width:1px!important;padding-left:5px!important;padding-right:5px!important;}
106 | input.span-1, textarea.span-1 {width:18px!important;}
107 | input.span-2, textarea.span-2 {width:58px!important;}
108 | input.span-3, textarea.span-3 {width:98px!important;}
109 | input.span-4, textarea.span-4 {width:138px!important;}
110 | input.span-5, textarea.span-5 {width:178px!important;}
111 | input.span-6, textarea.span-6 {width:218px!important;}
112 | input.span-7, textarea.span-7 {width:258px!important;}
113 | input.span-8, textarea.span-8 {width:298px!important;}
114 | input.span-9, textarea.span-9 {width:338px!important;}
115 | input.span-10, textarea.span-10 {width:378px!important;}
116 | input.span-11, textarea.span-11 {width:418px!important;}
117 | input.span-12, textarea.span-12 {width:458px!important;}
118 | input.span-13, textarea.span-13 {width:498px!important;}
119 | input.span-14, textarea.span-14 {width:538px!important;}
120 | input.span-15, textarea.span-15 {width:578px!important;}
121 | input.span-16, textarea.span-16 {width:618px!important;}
122 | input.span-17, textarea.span-17 {width:658px!important;}
123 | input.span-18, textarea.span-18 {width:698px!important;}
124 | input.span-19, textarea.span-19 {width:738px!important;}
125 | input.span-20, textarea.span-20 {width:778px!important;}
126 | input.span-21, textarea.span-21 {width:818px!important;}
127 | input.span-22, textarea.span-22 {width:858px!important;}
128 | input.span-23, textarea.span-23 {width:898px!important;}
129 | input.span-24, textarea.span-24 {width:938px!important;}
130 | .append-1 {padding-right:40px;}
131 | .append-2 {padding-right:80px;}
132 | .append-3 {padding-right:120px;}
133 | .append-4 {padding-right:160px;}
134 | .append-5 {padding-right:200px;}
135 | .append-6 {padding-right:240px;}
136 | .append-7 {padding-right:280px;}
137 | .append-8 {padding-right:320px;}
138 | .append-9 {padding-right:360px;}
139 | .append-10 {padding-right:400px;}
140 | .append-11 {padding-right:440px;}
141 | .append-12 {padding-right:480px;}
142 | .append-13 {padding-right:520px;}
143 | .append-14 {padding-right:560px;}
144 | .append-15 {padding-right:600px;}
145 | .append-16 {padding-right:640px;}
146 | .append-17 {padding-right:680px;}
147 | .append-18 {padding-right:720px;}
148 | .append-19 {padding-right:760px;}
149 | .append-20 {padding-right:800px;}
150 | .append-21 {padding-right:840px;}
151 | .append-22 {padding-right:880px;}
152 | .append-23 {padding-right:920px;}
153 | .prepend-1 {padding-left:40px;}
154 | .prepend-2 {padding-left:80px;}
155 | .prepend-3 {padding-left:120px;}
156 | .prepend-4 {padding-left:160px;}
157 | .prepend-5 {padding-left:200px;}
158 | .prepend-6 {padding-left:240px;}
159 | .prepend-7 {padding-left:280px;}
160 | .prepend-8 {padding-left:320px;}
161 | .prepend-9 {padding-left:360px;}
162 | .prepend-10 {padding-left:400px;}
163 | .prepend-11 {padding-left:440px;}
164 | .prepend-12 {padding-left:480px;}
165 | .prepend-13 {padding-left:520px;}
166 | .prepend-14 {padding-left:560px;}
167 | .prepend-15 {padding-left:600px;}
168 | .prepend-16 {padding-left:640px;}
169 | .prepend-17 {padding-left:680px;}
170 | .prepend-18 {padding-left:720px;}
171 | .prepend-19 {padding-left:760px;}
172 | .prepend-20 {padding-left:800px;}
173 | .prepend-21 {padding-left:840px;}
174 | .prepend-22 {padding-left:880px;}
175 | .prepend-23 {padding-left:920px;}
176 | div.border {padding-right:4px;margin-right:5px;border-right:1px solid #eee;}
177 | div.colborder {padding-right:24px;margin-right:25px;border-right:1px solid #eee;}
178 | .pull-1 {margin-left:-40px;}
179 | .pull-2 {margin-left:-80px;}
180 | .pull-3 {margin-left:-120px;}
181 | .pull-4 {margin-left:-160px;}
182 | .pull-5 {margin-left:-200px;}
183 | .pull-6 {margin-left:-240px;}
184 | .pull-7 {margin-left:-280px;}
185 | .pull-8 {margin-left:-320px;}
186 | .pull-9 {margin-left:-360px;}
187 | .pull-10 {margin-left:-400px;}
188 | .pull-11 {margin-left:-440px;}
189 | .pull-12 {margin-left:-480px;}
190 | .pull-13 {margin-left:-520px;}
191 | .pull-14 {margin-left:-560px;}
192 | .pull-15 {margin-left:-600px;}
193 | .pull-16 {margin-left:-640px;}
194 | .pull-17 {margin-left:-680px;}
195 | .pull-18 {margin-left:-720px;}
196 | .pull-19 {margin-left:-760px;}
197 | .pull-20 {margin-left:-800px;}
198 | .pull-21 {margin-left:-840px;}
199 | .pull-22 {margin-left:-880px;}
200 | .pull-23 {margin-left:-920px;}
201 | .pull-24 {margin-left:-960px;}
202 | .pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 {float:left;position:relative;}
203 | .push-1 {margin:0 -40px 1.5em 40px;}
204 | .push-2 {margin:0 -80px 1.5em 80px;}
205 | .push-3 {margin:0 -120px 1.5em 120px;}
206 | .push-4 {margin:0 -160px 1.5em 160px;}
207 | .push-5 {margin:0 -200px 1.5em 200px;}
208 | .push-6 {margin:0 -240px 1.5em 240px;}
209 | .push-7 {margin:0 -280px 1.5em 280px;}
210 | .push-8 {margin:0 -320px 1.5em 320px;}
211 | .push-9 {margin:0 -360px 1.5em 360px;}
212 | .push-10 {margin:0 -400px 1.5em 400px;}
213 | .push-11 {margin:0 -440px 1.5em 440px;}
214 | .push-12 {margin:0 -480px 1.5em 480px;}
215 | .push-13 {margin:0 -520px 1.5em 520px;}
216 | .push-14 {margin:0 -560px 1.5em 560px;}
217 | .push-15 {margin:0 -600px 1.5em 600px;}
218 | .push-16 {margin:0 -640px 1.5em 640px;}
219 | .push-17 {margin:0 -680px 1.5em 680px;}
220 | .push-18 {margin:0 -720px 1.5em 720px;}
221 | .push-19 {margin:0 -760px 1.5em 760px;}
222 | .push-20 {margin:0 -800px 1.5em 800px;}
223 | .push-21 {margin:0 -840px 1.5em 840px;}
224 | .push-22 {margin:0 -880px 1.5em 880px;}
225 | .push-23 {margin:0 -920px 1.5em 920px;}
226 | .push-24 {margin:0 -960px 1.5em 960px;}
227 | .push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 {float:right;position:relative;}
228 | .prepend-top {margin-top:1.5em;}
229 | .append-bottom {margin-bottom:1.5em;}
230 | .box {padding:1.5em;margin-bottom:1.5em;background:#E5ECF9;}
231 | hr {background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:.1em;margin:0 0 1.45em;border:none;}
232 | hr.space {background:#fff;color:#fff;visibility:hidden;}
233 | .clearfix:after, .container:after {content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;}
234 | .clearfix, .container {display:block;}
235 | .clear {clear:both;}
--------------------------------------------------------------------------------
/public/css/caixa.css:
--------------------------------------------------------------------------------
1 | /****** SEPARADORES DOS CAMPOS ****/
2 | #recibo .linha div,
3 | #ficha_compensacao #colunadireita div,
4 | #ficha_compensacao #colunaprincipal .item,
5 | #ficha_compensacao #colunaprincipal .mensagens{
6 | border-left-color:rgb(231,130,39);
7 | }
8 |
9 | /****** LINHAS NO CABEÇALHO ******/
10 | .cabecalho, .cabecalho .banco_codigo{
11 | border-color:rgb(0,94,151);
12 | }
13 |
14 | /****** LINHAS INFERIORES DOS CAMPOS ******/
15 | #recibo div,
16 | #ficha_compensacao #colunaprincipal div,
17 | #ficha_compensacao #colunadireita div,
18 | #ficha_compensacao #sacado{
19 | border-bottom-color:rgb(0,94,151);
20 | }
21 |
22 | /***** CORES DOS TEXTOS **********/
23 | #ficha_compensacao{
24 | color:#000;
25 | }
26 |
27 | /***** CORES DOS LABELS **********/
28 | #ficha_compensacao label, #recibo label{
29 | color:rgb(0,94,151);
30 | }
31 |
32 | /***** CORES DOS TEXTOS DO CABEÇALHO**********/
33 | .cabecalho{
34 | color:rgb(0,94,151);
35 | }
--------------------------------------------------------------------------------
/public/css/default.css:
--------------------------------------------------------------------------------
1 | div#container{
2 | width:700px;
3 | font-family:arial;
4 | font-size:12px;
5 | }
6 | div#container div, div#container{
7 | float:left;
8 | }
9 | div#ficha_compensacao{
10 | margin-top:20px;
11 | }
12 | #ficha_compensacao #colunaprincipal div,
13 | #ficha_compensacao #colunadireita div,
14 | #recibo .linha div{
15 | height:27px;
16 | margin:0;
17 | margin-bottom:2px;
18 | float:left;
19 | border-bottom: 1px solid #C0C0C0;
20 | }
21 | #ficha_compensacao #colunaprincipal div .item{
22 | border-bottom:0;
23 | }
24 | #ficha_compensacao #colunaprincipal .item,
25 | #ficha_compensacao #colunaprincipal .mensagens,
26 | #ficha_compensacao #colunadireita div,
27 | #recibo .item
28 | {
29 | border-left:5px solid #C0C0C0;
30 | padding-left:5px;
31 | padding-right:0px;
32 | }
33 | /******************************************************
34 | Cabeçalho
35 | *******************************************************/
36 | .cabecalho{
37 | border-bottom: 3px solid #000000;
38 | width:690px;
39 | margin-bottom:5px;
40 | }
41 | .cabecalho div{float:left;height:25px;margin-top:25px;border:0}
42 | .cabecalho .banco_logo{width:160px;height:40px;margin-top:10px;}
43 | .cabecalho .banco_codigo{width:70px;font-size:20px;font-weight:bold;text-align:center;border:0;border-left:3px solid #000000;border-right:3px solid #000000;}
44 | .cabecalho .linha_digitavel{width:450px;font-size:15px;font-weight:bold;text-align:right}
45 |
46 | #ficha_compensacao #colunaprincipal{
47 | border:0;
48 | }
49 | #ficha_compensacao #colunaprincipal,
50 | #ficha_compensacao .local_pagamento,#ficha_compensacao .mensagens,
51 | #ficha_compensacao .cedente, #ficha_compensacao .linha{
52 | width:480px;
53 | }
54 | #ficha_compensacao label, #recibo label{
55 | font-size:9px;
56 | display:block;
57 | }
58 | #ficha_compensacao .local_pagamento,#ficha_compensacao .mensagens,
59 | #ficha_compensacao .cedente, #ficha_compensacao .linha{
60 | clear:left;
61 | }
62 |
63 | /* Mensagens */
64 | #ficha_compensacao #colunaprincipal .mensagens{height:147px;}
65 |
66 | /* Linha 3 */
67 | #ficha_compensacao #colunaprincipal .data_doc{width:100px;}
68 | #ficha_compensacao #colunaprincipal .num_doc{width:120px;}
69 | #ficha_compensacao #colunaprincipal .espec_doc{width:70px;}
70 | #ficha_compensacao #colunaprincipal .aceite{width:40px;}
71 | #ficha_compensacao #colunaprincipal .dt_proc{width:90px;}
72 |
73 | /* Linha 4 */
74 | #ficha_compensacao #colunaprincipal .uso_banco{width:100px;}
75 | #ficha_compensacao #colunaprincipal .carteira{width:90px;}
76 | #ficha_compensacao #colunaprincipal .moeda{width:40px;}
77 | #ficha_compensacao #colunaprincipal .qtd{width:55px;}
78 | #ficha_compensacao #colunaprincipal .valor{width:130px;}
79 |
80 | /* Coluna lado direito */
81 | #ficha_compensacao #colunadireita{width:200px;}
82 | #ficha_compensacao #colunadireita div{display:block;width:200px}
83 |
84 |
85 | /*Sacado*/
86 | #ficha_compensacao #sacado, #ficha_compensacao #codigo_barras{
87 | clear:both;
88 | width:680px;
89 | height:70px;
90 | border-left:5px solid #fff;
91 | padding-left:5px;
92 | }
93 |
94 | #ficha_compensacao #sacado{
95 | border-bottom:1px solid #c0c0c0;
96 | }
97 | #ficha_compensacao #codigo_barras{
98 |
99 | }
100 |
101 | /*Recibo*/
102 | #recibo div{float:left}
103 | /*Linha1*/
104 | #recibo .linha .cedente{width:270px;}
105 | #recibo .linha .agencia{width:130px;}
106 | #recibo .linha .moeda{width:50px;}
107 | #recibo .linha .qtd{width:30px;}
108 | #recibo .linha .nosso_numero{width:160px;}
109 | /*Linha2*/
110 | #recibo .linha .num_doc{width:150px;}
111 | #recibo .linha .cpf_cnpj{width:150px;}
112 | #recibo .linha .vencimento{width:150px;}
113 | #recibo .linha .valor{width:200px;}
114 | /*Linha3*/
115 | #recibo .linha .descontos{width:110px;}
116 | #recibo .linha .outras_deducoes{width:110px;}
117 | #recibo .linha .multa{width:110px;}
118 | #recibo .linha .outros_acrescimos{width:110px;}
119 | /*Linha4*/
120 | #recibo .linha .sacado{width:680px;}
121 |
122 | #recibo .linha .demonstrativo{width:480px;border-bottom:0;height:100px;}
123 | #recibo .linha .autenticacao_mecanica{width:200px;border-bottom:0}
124 |
125 |
126 | .linha_corte{
127 | border-bottom:1px dotted #000;
128 | height:10px;
129 | width:690px;
130 | }
131 | .linha_corte label, .autenticacao_mecanica label{
132 | text-align:right;
133 | }
134 |
--------------------------------------------------------------------------------
/public/images/banco_da_amazonia.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/banco_da_amazonia.png
--------------------------------------------------------------------------------
/public/images/banco_fiat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/banco_fiat.png
--------------------------------------------------------------------------------
/public/images/banco_pan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/banco_pan.png
--------------------------------------------------------------------------------
/public/images/banco_pine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/banco_pine.png
--------------------------------------------------------------------------------
/public/images/bancoob.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/bancoob.png
--------------------------------------------------------------------------------
/public/images/banespa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/banespa.png
--------------------------------------------------------------------------------
/public/images/banestes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/banestes.png
--------------------------------------------------------------------------------
/public/images/banrisul.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/banrisul.png
--------------------------------------------------------------------------------
/public/images/bb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/bb.png
--------------------------------------------------------------------------------
/public/images/besc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/besc.png
--------------------------------------------------------------------------------
/public/images/bgn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/bgn.png
--------------------------------------------------------------------------------
/public/images/bmc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/bmc.png
--------------------------------------------------------------------------------
/public/images/bmg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/bmg.png
--------------------------------------------------------------------------------
/public/images/bnb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/bnb.png
--------------------------------------------------------------------------------
/public/images/bradesco.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/bradesco.png
--------------------------------------------------------------------------------
/public/images/brb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/brb.png
--------------------------------------------------------------------------------
/public/images/bva.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/bva.png
--------------------------------------------------------------------------------
/public/images/caixa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/caixa.png
--------------------------------------------------------------------------------
/public/images/hsbc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/hsbc.png
--------------------------------------------------------------------------------
/public/images/itau.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/itau.png
--------------------------------------------------------------------------------
/public/images/nossa_caixa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/nossa_caixa.png
--------------------------------------------------------------------------------
/public/images/paranabanco.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/paranabanco.png
--------------------------------------------------------------------------------
/public/images/real.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/real.png
--------------------------------------------------------------------------------
/public/images/safra.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/safra.png
--------------------------------------------------------------------------------
/public/images/santander.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/santander.png
--------------------------------------------------------------------------------
/public/images/sicoob.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/sicoob.png
--------------------------------------------------------------------------------
/public/images/sudameris.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/sudameris.png
--------------------------------------------------------------------------------
/public/images/unibanco.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/klawdyo/PHP-Object-Boleto/f7f5628387a4bb10f9c8eea1f51f0ac2ff3852c1/public/images/unibanco.png
--------------------------------------------------------------------------------
/templates/README.textile:
--------------------------------------------------------------------------------
1 | h1. Introdução
2 |
3 | ObjectBoleto trabalha com uma camada de visualização que se divide em 2 partes:
4 | Templates e Blocks
5 |
6 | h2. Templates
7 |
8 | Os Templates são o que podemos chamar de layouts. Você, usuário, poderá criar quantos templates quiser, pois cada cliente pode exigir um modelo diferente.
9 | Por padrão, ObjectBoleto vem com os templates default, html5 e carne.
10 |
11 | * "default" é um modelo em tabelas, com estilos inline, importado e adaptado do boletophp.
12 | * "html5" é totalmente tabless. Ele acompanha um recibo de cliente, e uma ficha de compensação. É o padrão geralmente utilizado. "html5" é personalisado por arquivos .css externos para cada banco.
13 | * "carne" também não usa tabelas, e seus estilos são oriundos de um arquivo css externo. A diferença para o "html" é que ele é no formato de um carnê pagamento, onde, além da ficha de compensação, à sua esquerda tem um recibo para o cliente.
14 |
15 | Os templates padrão do ObjectBoleto tem por objetivo facilitar a personalização dos boletos, com imagens, textos e etc.
16 |
17 | h2. Blocks
18 |
19 | Os blocks são códigos html que geralmente são usados em vários locais, como a ficha de compensação. Nesse sentido, o ObjectBoleto dispõe de 3 blocks padrão:
20 |
21 | * "ficha_compensacao" concentra o boleto bancário propriamente dito, inclusive com o código de barras;
22 | * "recibo" contém a parte superior de uma folha A4, acima da ficha de compensação;
23 | * "canhoto" é o comprovante que fica à esquerda das fichas de compensação em um carnê.
24 |
25 | O objetivo dos blocks é minimizar a repetição de código, concentrando tudo em um só lugar.
26 |
27 | h3. Exemplo
28 |
29 | A ficha de compensação é utilizada tanto no template "html", como no "carne". Você, usuário, também poderia criar seu próprio template, utilizando os blocks prontos do ObjectBoleto.
30 | Supondo que eu quero um template com uma imagem grande na parte de cima, com propaganda do produto do seu cliente, e um boleto bancário na parte de baixo.
31 | Crio o arquivo "novotemplate.htm.php". Todos os templates e blocks devem ter a extensão ".htm.php". Os templates ficam no diretório "/templates", e os blocks no diretório "/templates/blocks".
32 |
33 | pre.
34 |
35 | Meu template
36 |
37 |
38 |
39 | Template->getBlock('novotemplate');
42 | ?>
43 |
44 |
45 |
46 | Pronto. Está criado o seu template personalizado.
47 |
48 | Agora, para usá-lo, é só indicar no momento da configuração do ObjectBoleto.
49 |
50 | pre. $ob = new OB();
51 | $ob->Template->setTemplate('novotemplate');
52 |
53 |
--------------------------------------------------------------------------------
/templates/blocks/ficha_compensacao.htm.php:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
Banco->Codigo, 0, 0, true)?>
10 |
linhaDigitavel();?>
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | Configuracao->LocalPagamento; ?>
19 |
20 |
21 |
22 |
23 |
24 |
25 | Vendedor->RazaoSocial; ?>
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | Boleto->DataEmissao; ?>
34 |
35 |
36 |
37 |
38 | Boleto->NumDocumento; ?>
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | Boleto->DataEmissao; ?>
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 | Vendedor->Carteira; ?>
68 |
69 |
70 |
71 |
72 | R$
73 |
74 |
75 |
76 |
77 | Boleto->Quantidade; ?>
78 |
79 |
80 |
81 |
82 | Boleto->ValorUnitario/100,2,',','.'); ?>
83 |
84 |
85 |
86 |
87 |
88 |
89 | Configuracao->getInstrucoes();
91 | echo implode('
', $instrucoes);
92 | ?>
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 | Boleto->VencimentoContraApresentacao == false){
102 | echo $OB->Boleto->Vencimento;
103 | }
104 | else{
105 | echo 'Contra-Apresentacao';
106 | }
107 | ?>
108 |
109 |
110 |
111 | Banco->agenciaCodigoCedente(); ?>
112 |
113 |
114 |
115 | Boleto->NossoNumero; ?>
116 |
117 |
118 |
119 | Boleto->Valor) ? number_format($OB->Boleto->Valor/100, 2, ',', '.') : ''; ?>
120 |
121 |
122 |
123 | Boleto->Desconto ? number_format($OB->Boleto->Desconto, 2, ',', '.') : ''; ?>
124 |
125 |
126 |
127 | Boleto->OutrosAbatimentos ? number_format($OB->Boleto->OutrosAbatimentos, 2, ',', '.') : ''; ?>
128 |
129 |
130 |
131 | Boleto->Multa ? number_format($OB->Boleto->Multa, 2, ',', '.') : ''; ?>
132 |
133 |
134 |
135 | Boleto->OutrosAcrescimos ? number_format($OB->Boleto->OutrosAcrescimos, 2, ',', '.') : ''; ?>
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 | Cliente->Nome
148 | . '
'
149 | . 'CPF: ' . $OB->Cliente->Cpf
150 | . '
'
151 | . $OB->Cliente->Endereco
152 | ;
153 | ?>
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 | geraCodigo());
163 | ?>
164 |
165 |
166 | Ficha de Compensação
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
--------------------------------------------------------------------------------
/templates/blocks/recibo.htm.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
Banco->Codigo, 0, 0, true)?>
6 |
linhaDigitavel();?>
7 |
8 |
9 |
10 |
11 |
12 |
13 | Vendedor->RazaoSocial; ?>
14 |
15 |
16 |
17 |
18 | Banco->agenciaCodigoCedente(); ?>
19 |
20 |
21 |
22 |
23 | R$
24 |
25 |
26 |
27 |
28 | Boleto->Quantidade;?>
29 |
30 |
31 |
32 |
33 | Boleto->NossoNumero; ?>
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | Boleto->NumDocumento;?>
43 |
44 |
45 |
46 |
47 | Vendedor->Cpf)){
49 | echo $OB->Vendedor->Cpf;
50 | }
51 | elseif(isset($OB->Vendedor->Cnpj)){
52 | echo $OB->Vendedor->Cnpj;
53 | }
54 |
55 | ?>
56 |
57 |
58 |
59 |
60 | Boleto->VencimentoContraApresentacao == false){
62 | echo $OB->Boleto->Vencimento;
63 | }
64 | else{
65 | echo 'Contra-Apresentacao';
66 | }
67 | ?>
68 |
69 |
70 |
71 |
72 | Boleto->Valor/100, 2, ',', '.');?>
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 | Cliente->Nome;?>
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 | Detalhes da compra
115 | Detalhes da compra
116 | Detalhes da compra
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
--------------------------------------------------------------------------------
/templates/html5.htm.php:
--------------------------------------------------------------------------------
1 | Template->addStyle('default');
4 |
5 | #Carregando o estilo referente ao banco, caso ele tenha
6 | if(!empty($OB->Banco->Css))
7 | $OB->Template->addStyle($OB->Banco->Css);
8 |
9 | ?>
10 |
11 |
12 |
13 | Template->Title;?>
14 | Template->getStyles();?>
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | Template->getBlock('recibo');
29 | ?>
30 |
31 |
32 | Template->getBlock('ficha_compensacao', array('viaparam'=>'viaparam'));
34 | ?>
35 |
36 |
37 |
--------------------------------------------------------------------------------