commit inicial
commit
d6e3bc82ca
|
@ -0,0 +1,6 @@
|
|||
/bin
|
||||
/target
|
||||
.classpath
|
||||
.DS_Store
|
||||
.project
|
||||
.settings
|
|
@ -0,0 +1,75 @@
|
|||
Bopepo Changelog
|
||||
====================================================
|
||||
|
||||
0.2.3 (2014/02/01) main release GitHub
|
||||
----------------------------------------------------------------------
|
||||
|
||||
**Improvement**
|
||||
|
||||
* #1: Mudar passagem de parâmetros bancários de string para enum
|
||||
* #2: Colocar complemento do endereço do sacado como campo padrão no boleto
|
||||
* #4: Novo Banco: BRB
|
||||
* #5: Novo enum com todos os campos padrões do boleto
|
||||
* #6: Atualizar templates dos boletos em função da nova nomenclatura BACEN
|
||||
* #7: Substituir funções de texto do utilix por similar em texgit
|
||||
* #8: Inserir meta-dados realcionados ao PDF
|
||||
* #9: Campos formatados em função do padrão de cada Banco
|
||||
* #11: Novo Banco: CECRED
|
||||
|
||||
|
||||
0.2.3-SNAPSHOT (2011-02-09) TracSVN
|
||||
----------------------------------------------------------------------
|
||||
|
||||
**Fix**
|
||||
|
||||
* #25: Implementação BANCO SANTANDER S.A. - Correção do uso de dígitos verificadores.
|
||||
* #13: Banco Real - Mudança do número do documento pelo nosso número
|
||||
|
||||
**Improvement**
|
||||
|
||||
* #54: Implementação Campo Livre SICOB - CEF
|
||||
* #58: Bancoob
|
||||
* Novas formas de processamento em lote
|
||||
* Novas formas para definição de template
|
||||
* Opção de definição de compressão do PDF
|
||||
* Classe para geração isolada de código de barras
|
||||
* Classe para geração de pdfs estilo relatório
|
||||
|
||||
|
||||
0.3-Litio-GeracaoGuia-VersaoAvaliacao-2011-04-14 (2011/04/14) TracSVN
|
||||
----------------------------------------------------------------------
|
||||
|
||||
* Ajustes construtores de OrgaoRecebedor e Arrecadacao, que sofreram ajustes básicos nos parâmetros.
|
||||
* Novo exemplo MinhaPrimeiraGuiaASerPagaEmVariosBancos.
|
||||
|
||||
|
||||
0.2.3-SNAPSHOT (2011-02-09) TracSVN
|
||||
----------------------------------------------------------------------
|
||||
|
||||
**Improvement**
|
||||
|
||||
* Novo Banco: Banco do Nordeste
|
||||
* Novo Boleto: Banco do Brasil convênio 7 dígitos nosso número 17 dígitos.
|
||||
|
||||
|
||||
0.3-Litio-GeracaoGuia-VersaoAvaliacao-2010-09-17 (2010/09/17) TracSVN
|
||||
----------------------------------------------------------------------
|
||||
|
||||
0.3-Litio-GeracaoGuia-VersaoAvaliacao-2010-09-09 (2010/09/09) TracSVN
|
||||
----------------------------------------------------------------------
|
||||
|
||||
0.3-Litio-GeracaoGuia-VersaoAvaliacao-2010-06-10 (2010/06/10) TracSVN
|
||||
----------------------------------------------------------------------
|
||||
|
||||
0.2.2 (2009/10/18) main release TracSVN
|
||||
----------------------------------------------------------------------
|
||||
|
||||
0.2.1-INC2X (2008/11/13) incubation TracSVN
|
||||
----------------------------------------------------------------------
|
||||
|
||||
0.2.1-INC2 (2008/07/15) incubation TracSVN
|
||||
----------------------------------------------------------------------
|
||||
|
||||
0.2.1-INC (2008/06/15) incubation TracSVN
|
||||
----------------------------------------------------------------------
|
||||
|
|
@ -0,0 +1,191 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction, and
|
||||
distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright
|
||||
owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all other entities
|
||||
that control, are controlled by, or are under common control with that entity.
|
||||
For the purposes of this definition, "control" means (i) the power, direct or
|
||||
indirect, to cause the direction or management of such entity, whether by
|
||||
contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity exercising
|
||||
permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications, including
|
||||
but not limited to software source code, documentation source, and configuration
|
||||
files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical transformation or
|
||||
translation of a Source form, including but not limited to compiled object code,
|
||||
generated documentation, and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or Object form, made
|
||||
available under the License, as indicated by a copyright notice that is included
|
||||
in or attached to the work (an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object form, that
|
||||
is based on (or derived from) the Work and for which the editorial revisions,
|
||||
annotations, elaborations, or other modifications represent, as a whole, an
|
||||
original work of authorship. For the purposes of this License, Derivative Works
|
||||
shall not include works that remain separable from, or merely link (or bind by
|
||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including the original version
|
||||
of the Work and any modifications or additions to that Work or Derivative Works
|
||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
|
||||
by the copyright owner or by an individual or Legal Entity authorized to submit
|
||||
on behalf of the copyright owner. For the purposes of this definition,
|
||||
"submitted" means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems, and
|
||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
|
||||
the purpose of discussing and improving the Work, but excluding communication
|
||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
||||
owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
|
||||
of whom a Contribution has been received by Licensor and subsequently
|
||||
incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License.
|
||||
|
||||
Subject to the terms and conditions of this License, each Contributor hereby
|
||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the Work and such
|
||||
Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License.
|
||||
|
||||
Subject to the terms and conditions of this License, each Contributor hereby
|
||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
||||
irrevocable (except as stated in this section) patent license to make, have
|
||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
|
||||
such license applies only to those patent claims licensable by such Contributor
|
||||
that are necessarily infringed by their Contribution(s) alone or by combination
|
||||
of their Contribution(s) with the Work to which such Contribution(s) was
|
||||
submitted. If You institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
||||
Contribution incorporated within the Work constitutes direct or contributory
|
||||
patent infringement, then any patent licenses granted to You under this License
|
||||
for that Work shall terminate as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution.
|
||||
|
||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
|
||||
in any medium, with or without modifications, and in Source or Object form,
|
||||
provided that You meet the following conditions:
|
||||
|
||||
You must give any other recipients of the Work or Derivative Works a copy of
|
||||
this License; and
|
||||
You must cause any modified files to carry prominent notices stating that You
|
||||
changed the files; and
|
||||
You must retain, in the Source form of any Derivative Works that You distribute,
|
||||
all copyright, patent, trademark, and attribution notices from the Source form
|
||||
of the Work, excluding those notices that do not pertain to any part of the
|
||||
Derivative Works; and
|
||||
If the Work includes a "NOTICE" text file as part of its distribution, then any
|
||||
Derivative Works that You distribute must include a readable copy of the
|
||||
attribution notices contained within such NOTICE file, excluding those notices
|
||||
that do not pertain to any part of the Derivative Works, in at least one of the
|
||||
following places: within a NOTICE text file distributed as part of the
|
||||
Derivative Works; within the Source form or documentation, if provided along
|
||||
with the Derivative Works; or, within a display generated by the Derivative
|
||||
Works, if and wherever such third-party notices normally appear. The contents of
|
||||
the NOTICE file are for informational purposes only and do not modify the
|
||||
License. You may add Your own attribution notices within Derivative Works that
|
||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
|
||||
provided that such additional attribution notices cannot be construed as
|
||||
modifying the License.
|
||||
You may add Your own copyright statement to Your modifications and may provide
|
||||
additional or different license terms and conditions for use, reproduction, or
|
||||
distribution of Your modifications, or for any such Derivative Works as a whole,
|
||||
provided Your use, reproduction, and distribution of the Work otherwise complies
|
||||
with the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions.
|
||||
|
||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
|
||||
for inclusion in the Work by You to the Licensor shall be under the terms and
|
||||
conditions of this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
|
||||
any separate license agreement you may have executed with Licensor regarding
|
||||
such Contributions.
|
||||
|
||||
6. Trademarks.
|
||||
|
||||
This License does not grant permission to use the trade names, trademarks,
|
||||
service marks, or product names of the Licensor, except as required for
|
||||
reasonable and customary use in describing the origin of the Work and
|
||||
reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty.
|
||||
|
||||
Unless required by applicable law or agreed to in writing, Licensor provides the
|
||||
Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
|
||||
including, without limitation, any warranties or conditions of TITLE,
|
||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
|
||||
solely responsible for determining the appropriateness of using or
|
||||
redistributing the Work and assume any risks associated with Your exercise of
|
||||
permissions under this License.
|
||||
|
||||
8. Limitation of Liability.
|
||||
|
||||
In no event and under no legal theory, whether in tort (including negligence),
|
||||
contract, or otherwise, unless required by applicable law (such as deliberate
|
||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special, incidental,
|
||||
or consequential damages of any character arising as a result of this License or
|
||||
out of the use or inability to use the Work (including but not limited to
|
||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
||||
any and all other commercial damages or losses), even if such Contributor has
|
||||
been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability.
|
||||
|
||||
While redistributing the Work or Derivative Works thereof, You may choose to
|
||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
|
||||
other liability obligations and/or rights consistent with this License. However,
|
||||
in accepting such obligations, You may act only on Your own behalf and on Your
|
||||
sole responsibility, not on behalf of any other Contributor, and only if You
|
||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason of your
|
||||
accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work
|
||||
|
||||
To apply the Apache License to your work, attach the following boilerplate
|
||||
notice, with the fields enclosed by brackets "[]" replaced with your own
|
||||
identifying information. (Don't include the brackets!) The text should be
|
||||
enclosed in the appropriate comment syntax for the file format. We also
|
||||
recommend that a file or class name and description of purpose be included on
|
||||
the same "printed page" as the copyright notice for easier identification within
|
||||
third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
|
@ -0,0 +1,8 @@
|
|||
Bopepo
|
||||
======
|
||||
|
||||
[](https://ci-jrimum.rhcloud.com)
|
||||
|
||||
Biblioteca Java para geração de boletos bancários.
|
||||
|
||||
* http://jrimum.org/bopepo
|
|
@ -0,0 +1,263 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>br.com.rjconsultores</groupId>
|
||||
<artifactId>jrimum-bopepo</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>Projeto Bopepo</name>
|
||||
<version>1.0.0</version>
|
||||
<description>Projeto open source de componentes de software para o domínio de negócios do Brasil.</description>
|
||||
<url>http://www.jrimum.org/bopepo</url>
|
||||
|
||||
<licenses>
|
||||
<license>
|
||||
<name>The Apache Software License, Version 2.0</name>
|
||||
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
||||
<distribution>repo</distribution>
|
||||
</license>
|
||||
</licenses>
|
||||
|
||||
<organization>
|
||||
<name>Projeto JRimum</name>
|
||||
<url>http://www.jrimum.org</url>
|
||||
</organization>
|
||||
|
||||
<issueManagement>
|
||||
<url>http://github.com/jrimum/bopepo/issues</url>
|
||||
<system>GitHub</system>
|
||||
</issueManagement>
|
||||
|
||||
<scm>
|
||||
<url>http://github.com/jrimum/bopepo</url>
|
||||
</scm>
|
||||
|
||||
<developers>
|
||||
<developer>
|
||||
<name>Gilmar P. S. L.</name>
|
||||
<email>gilmatryx@gmail.com</email>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Misael Barreto</name>
|
||||
<email>misaelbarreto@gmail.com</email>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Rômulo Augusto</name>
|
||||
<email>romulomail@gmail.com</email>
|
||||
</developer>
|
||||
</developers>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
</properties>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>disable-java8-doclint</id>
|
||||
<activation>
|
||||
<jdk>[1.8,)</jdk>
|
||||
</activation>
|
||||
<properties>
|
||||
<additionalparam>-Xdoclint:none</additionalparam>
|
||||
</properties>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
<build>
|
||||
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<excludes>
|
||||
<exclude>**/*.odt</exclude>
|
||||
</excludes>
|
||||
</resource>
|
||||
</resources>
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.1</version>
|
||||
<configuration>
|
||||
<source>1.5</source>
|
||||
<target>1.5</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>animal-sniffer-maven-plugin</artifactId>
|
||||
<version>1.6</version>
|
||||
<configuration>
|
||||
<signature>
|
||||
<groupId>org.codehaus.mojo.signature</groupId>
|
||||
<artifactId>java18</artifactId>
|
||||
<version>1.0</version>
|
||||
</signature>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>animal-sniffer</id>
|
||||
<phase>compile</phase>
|
||||
<goals>
|
||||
<goal>check</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<version>2.4</version>
|
||||
<configuration>
|
||||
<descriptors>
|
||||
<descriptor>src/main/assembly/jrimum-bopepo-with-dependencies.xml</descriptor>
|
||||
<descriptor>src/main/assembly/jrimum-bopepo-with-dependencies-src.xml</descriptor>
|
||||
<descriptor>src/main/assembly/jrimum-bopepo-examples.xml</descriptor>
|
||||
</descriptors>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>make-assembly</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>2.16</version>
|
||||
<configuration>
|
||||
<skipTests>false</skipTests>
|
||||
<includes>
|
||||
<include>org/jrimum/bopepo/**/*</include>
|
||||
</includes>
|
||||
<excludes>
|
||||
<exclude>org/jrimum/bopepo/excludes/**/*</exclude>
|
||||
<exclude>org/jrimum/bopepo/**/*$*</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-source-plugin</artifactId>
|
||||
<version>2.2.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>attach-sources</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
<version>2.9.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>attach-javadoc</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<charset>UTF-8</charset>
|
||||
<docencoding>UTF-8</docencoding>
|
||||
<docfilessubdirs>true</docfilessubdirs>
|
||||
<show>private</show>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-deploy-plugin</artifactId>
|
||||
<version>2.8.1</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
||||
</build>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>br.com.rjconsultores</groupId>
|
||||
<artifactId>jrimum-domkee</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>br.com.rjconsultores</groupId>
|
||||
<artifactId>jrimum-texgit</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.lowagie</groupId>
|
||||
<artifactId>itext</artifactId>
|
||||
<version>2.0.8</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>bouncycastle</groupId>
|
||||
<artifactId>bcmail-jdk14</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>bouncycastle</groupId>
|
||||
<artifactId>bcprov-jdk14</artifactId>
|
||||
</exclusion>
|
||||
<exclusion>
|
||||
<groupId>bouncycastle</groupId>
|
||||
<artifactId>bctsp-jdk14</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<!-- Test -->
|
||||
<dependency>
|
||||
<groupId>com.itextpdf</groupId>
|
||||
<artifactId>itextpdf</artifactId>
|
||||
<version>5.4.5</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
<artifactId>guava-jdk5</artifactId>
|
||||
<version>14.0.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.hamcrest</groupId>
|
||||
<artifactId>hamcrest-all</artifactId>
|
||||
<version>1.3</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-all</artifactId>
|
||||
<version>1.9.5</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>2.4</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.11</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>rj-releases</id>
|
||||
<url>http://52.5.53.15:8081/nexus/content/repositories/releases/</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
</project>
|
|
@ -0,0 +1,158 @@
|
|||
package org.jrimum.bopepo.exemplo;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.jrimum.bopepo.BancosSuportados;
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.pdf.Files;
|
||||
import org.jrimum.bopepo.view.BoletoViewer;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Agencia;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Carteira;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.utilix.ClassLoaders;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
|
||||
import com.lowagie.text.Document;
|
||||
import com.lowagie.text.DocumentException;
|
||||
import com.lowagie.text.pdf.PdfContentByte;
|
||||
import com.lowagie.text.pdf.PdfImportedPage;
|
||||
import com.lowagie.text.pdf.PdfReader;
|
||||
import com.lowagie.text.pdf.PdfWriter;
|
||||
|
||||
/**
|
||||
* Exemplo de boleto no estilo carnê com três boletos em uma página.
|
||||
*
|
||||
* @author Rômulo Augusto
|
||||
*/
|
||||
public class BoletoCarne3PorPagina {
|
||||
|
||||
public static void main(String[] args) throws DocumentException, IOException {
|
||||
|
||||
Boleto boletoBBNossoNumero10 = crieBoletoBBNossoNumero10();
|
||||
Boleto boletoBradesco = crieBoletoBradesco();
|
||||
|
||||
List<Boleto> boletos = new ArrayList<Boleto>();
|
||||
boletos.add(boletoBBNossoNumero10);
|
||||
boletos.add(boletoBradesco);
|
||||
boletos.add(boletoBBNossoNumero10);
|
||||
boletos.add(boletoBradesco);
|
||||
boletos.add(boletoBBNossoNumero10);
|
||||
boletos.add(boletoBBNossoNumero10);
|
||||
boletos.add(boletoBradesco);
|
||||
boletos.add(boletoBBNossoNumero10);
|
||||
|
||||
//Informando o template personalizado:
|
||||
File templatePersonalizado = new File(ClassLoaders.getResource("/templates/BoletoCarne3PorPagina.pdf").getFile());
|
||||
|
||||
File boletosPorPagina = groupInPages(boletos, "Carne3PorPagina.pdf", templatePersonalizado);
|
||||
|
||||
Exemplos.mostreBoletoNaTela(boletosPorPagina);
|
||||
}
|
||||
|
||||
private static File groupInPages(List<Boleto> boletos, String filePath, File templatePersonalizado) {
|
||||
|
||||
File arq = null;
|
||||
BoletoViewer boletoViewer = new BoletoViewer(boletos.get(0));
|
||||
boletoViewer.setTemplate(templatePersonalizado);
|
||||
|
||||
List<byte[]> boletosEmBytes = new ArrayList<byte[]>(boletos.size());
|
||||
|
||||
for (Boleto bop : boletos) {
|
||||
boletosEmBytes.add(boletoViewer.setBoleto(bop).getPdfAsByteArray());
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
arq = Files.bytesToFile(filePath, mergeFilesInPages(boletosEmBytes));
|
||||
|
||||
} catch (Exception e) {
|
||||
Exceptions.throwIllegalStateException("Erro durante geração do PDF! Causado por " + e.getLocalizedMessage(), e);
|
||||
}
|
||||
|
||||
return arq;
|
||||
}
|
||||
|
||||
private static Boleto crieBoletoBBNossoNumero10() {
|
||||
|
||||
Titulo titulo = Exemplos.crieTitulo();
|
||||
|
||||
ContaBancaria contaBancaria = titulo.getContaBancaria();
|
||||
contaBancaria.setBanco(BancosSuportados.BANCO_DO_BRASIL.create());
|
||||
contaBancaria.setNumeroDaConta(new NumeroDaConta(1234567));
|
||||
contaBancaria.setCarteira(new Carteira(12));
|
||||
|
||||
titulo.setNossoNumero("1234567890");
|
||||
|
||||
Boleto boletoBBNossoNumero10 = Exemplos.crieBoleto(titulo);
|
||||
|
||||
return boletoBBNossoNumero10;
|
||||
}
|
||||
|
||||
private static Boleto crieBoletoBradesco() {
|
||||
|
||||
Titulo titulo = Exemplos.crieTitulo();
|
||||
|
||||
ContaBancaria contaBancaria = titulo.getContaBancaria();
|
||||
contaBancaria.setBanco(BancosSuportados.BANCO_BRADESCO.create());
|
||||
contaBancaria.setAgencia(new Agencia(1234));
|
||||
contaBancaria.setCarteira(new Carteira(12));
|
||||
titulo.setNossoNumero("01234567891");
|
||||
contaBancaria.setNumeroDaConta(new NumeroDaConta(1234567));
|
||||
|
||||
Boleto boletoBradesco = Exemplos.crieBoleto(titulo);
|
||||
|
||||
return boletoBradesco;
|
||||
}
|
||||
|
||||
public static byte[] mergeFilesInPages(List<byte[]> pdfFilesAsByteArray) throws DocumentException, IOException {
|
||||
|
||||
Document document = new Document();
|
||||
ByteArrayOutputStream byteOS = new ByteArrayOutputStream();
|
||||
|
||||
PdfWriter writer = PdfWriter.getInstance(document, byteOS);
|
||||
|
||||
document.open();
|
||||
|
||||
PdfContentByte cb = writer.getDirectContent();
|
||||
float positionAnterior = 0;
|
||||
|
||||
for (byte[] in : pdfFilesAsByteArray) {
|
||||
|
||||
PdfReader reader = new PdfReader(in);
|
||||
|
||||
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
|
||||
|
||||
float documentHeight = cb.getPdfDocument().getPageSize().getHeight();
|
||||
|
||||
//import the page from source pdf
|
||||
PdfImportedPage page = writer.getImportedPage(reader, i);
|
||||
float pagePosition = positionAnterior;
|
||||
|
||||
if ( (documentHeight - positionAnterior) <= page.getHeight()) {
|
||||
document.newPage();
|
||||
pagePosition = 0;
|
||||
positionAnterior = 0;
|
||||
}
|
||||
|
||||
//add the page to the destination pdf
|
||||
cb.addTemplate(page, 0, pagePosition);
|
||||
|
||||
positionAnterior += page.getHeight();
|
||||
}
|
||||
}
|
||||
|
||||
byteOS.flush();
|
||||
document.close();
|
||||
|
||||
byte[] arquivoEmBytes = byteOS.toByteArray();
|
||||
byteOS.close();
|
||||
|
||||
return arquivoEmBytes;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
package org.jrimum.bopepo.exemplo;
|
||||
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.domkee.comum.pessoa.endereco.CEP;
|
||||
import org.jrimum.domkee.comum.pessoa.endereco.Endereco;
|
||||
import org.jrimum.domkee.comum.pessoa.endereco.UnidadeFederativa;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Cedente;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Sacado;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.SacadorAvalista;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* Exemplo de código para geração de um boleto simples com Sacador Avalista.
|
||||
*
|
||||
* <p>
|
||||
* Baseado no {@linkplain org.jrimum.bopepo.exemplo.MeuPrimeiroBoleto}.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class BoletoComSacadorAvalista extends MeuPrimeiroBoleto{
|
||||
|
||||
/**
|
||||
* Executa o exemplo.
|
||||
*
|
||||
* @param args
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
|
||||
new BoletoComSacadorAvalista().exemplo();
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria um boleto com sacador avalista, em passos distintos, com os dados necessários para a visualização.
|
||||
*
|
||||
* @return boleto com dados
|
||||
*/
|
||||
@Override
|
||||
Boleto crieUmBoleto() {
|
||||
|
||||
/*
|
||||
* PASSO 1: Faça o mesmo que se fez em MeuPrimeiroBoleto.
|
||||
*/
|
||||
ContaBancaria contaBancaria = crieUmaContaBancaria();
|
||||
Cedente cedente = crieUmCedente();
|
||||
Sacado sacado = crieUmSacado();
|
||||
|
||||
/*
|
||||
* PASSO 2: Informe os dados do Sacador Avalista.
|
||||
*/
|
||||
SacadorAvalista sacadorAvalista = crieUmSacadorAvalista();
|
||||
|
||||
/*
|
||||
* PASSO 3: Crie um novo título/cobrança e informe os dados.
|
||||
*/
|
||||
Titulo titulo = crieOsDadosDoNovoTitulo(new Titulo(contaBancaria,sacado,cedente,sacadorAvalista));
|
||||
|
||||
/*
|
||||
* PASSO 4: Crie o boleto e informe os dados necessários do mesmo jeito.
|
||||
*/
|
||||
Boleto boleto = crieOsDadosDoNovoBoleto(new Boleto(titulo));
|
||||
|
||||
return boleto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria uma instância de sacador avalista com os principais dados para o boleto.
|
||||
*
|
||||
* @return sacadorAvalista com os dados necssários
|
||||
*/
|
||||
private final SacadorAvalista crieUmSacadorAvalista() {
|
||||
|
||||
SacadorAvalista sacadorAvalista = new SacadorAvalista("JRimum Enterprise", "00.000.000/0001-91");
|
||||
|
||||
// Informando o endereço do sacador avalista.
|
||||
Endereco enderecoSacAval = new Endereco();
|
||||
enderecoSacAval.setUF(UnidadeFederativa.DF);
|
||||
enderecoSacAval.setLocalidade("Brasília");
|
||||
enderecoSacAval.setCep(new CEP("70150-903"));
|
||||
enderecoSacAval.setBairro("Grande Centro");
|
||||
enderecoSacAval.setLogradouro("Rua Eternamente Principal");
|
||||
enderecoSacAval.setNumero("001");
|
||||
sacadorAvalista.addEndereco(enderecoSacAval);
|
||||
|
||||
return sacadorAvalista;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,117 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 01/11/2010 - 10:30:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 01/11/2010 - 10:30:00
|
||||
*
|
||||
*/
|
||||
package org.jrimum.bopepo.exemplo;
|
||||
|
||||
import static org.jrimum.texgit.type.component.Fillers.ZERO_LEFT;
|
||||
|
||||
import org.jrimum.bopepo.campolivre.CampoLivre;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Campo Livre fictício para usar junto com o <code>JRimumBank</code>.
|
||||
* Como todo campo livre, deve possuir o tamanho de 25 dígitos.
|
||||
* </p>
|
||||
* <p>
|
||||
* O campo livre é, geralmente, formado através de dados do título. Assim, essa implementação
|
||||
* recebe um título através de seu construtor.
|
||||
* </p>
|
||||
* Segue abaixo o layout desse campo livre fictício:
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse:
|
||||
* collapse" bordercolor="#111111" width="60%">
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Posição</th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td>20-25</td>
|
||||
* <td>6</td>
|
||||
* <td>9 (6)</td>
|
||||
* <td>Código da conta (sem o dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>26-29</td>
|
||||
* <td>4</td>
|
||||
* <td>9 (4)</td>
|
||||
* <td>Código da agência (sem o dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>30-35</td>
|
||||
* <td>6</td>
|
||||
* <td>9 (6)</td>
|
||||
* <td>ZEROS</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>36-44</td>
|
||||
* <td>9</td>
|
||||
* <td>9 (9)</td>
|
||||
* <td>Nosso número (sem o dígito)</td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
*
|
||||
* @author Rômulo Augusto
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
*
|
||||
*/
|
||||
public class CampoLivreJRimumBank implements CampoLivre {
|
||||
|
||||
private static final long serialVersionUID = 338556606717660573L;
|
||||
|
||||
private Titulo titulo;
|
||||
|
||||
public CampoLivreJRimumBank(Titulo titulo) {
|
||||
this.titulo = titulo;
|
||||
}
|
||||
|
||||
|
||||
public void read(String g) {
|
||||
//Sem leitura
|
||||
}
|
||||
|
||||
public String write() {
|
||||
|
||||
ContaBancaria conta = titulo.getContaBancaria();
|
||||
|
||||
FixedField<Integer> fieldConta = new FixedField<Integer>(conta.getNumeroDaConta().getCodigoDaConta(), 6, ZERO_LEFT);
|
||||
FixedField<Integer> fieldAgencia = new FixedField<Integer>(conta.getAgencia().getCodigo(), 4, ZERO_LEFT);
|
||||
FixedField<Integer> fieldZeros = new FixedField<Integer>(0, 6, ZERO_LEFT);
|
||||
FixedField<String> fieldNossoNumero = new FixedField<String>(titulo.getNossoNumero(), 9);
|
||||
|
||||
return fieldConta.write() + fieldAgencia.write() + fieldZeros.write() + fieldNossoNumero.write();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,365 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 18/05/2008 - 21:15:39
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 18/05/2008 - 21:15:39
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.exemplo;
|
||||
|
||||
import java.io.File;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.List;
|
||||
|
||||
import org.jrimum.bopepo.BancosSuportados;
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.view.BoletoViewer;
|
||||
import org.jrimum.domkee.comum.pessoa.endereco.Endereco;
|
||||
import org.jrimum.domkee.comum.pessoa.endereco.UnidadeFederativa;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Agencia;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Carteira;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Cedente;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Sacado;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.SacadorAvalista;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.TipoDeTitulo;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo.Aceite;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
|
||||
/**
|
||||
* Classe utilitária para criação de objetos necessários para geração dos
|
||||
* boletos de exemplo.
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author Rômulo Augusto
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class Exemplos {
|
||||
|
||||
/**
|
||||
* Utility class pattern: classe não instanciável
|
||||
*
|
||||
* @throws AssertionError Caso haja alguma tentativa de utilização deste construtor.
|
||||
*/
|
||||
private Exemplos() {
|
||||
Exceptions.throwIllegalStateException("Instanciação não permitida!");
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Devolve uma lista com mais de um boleto.
|
||||
* </p>
|
||||
*
|
||||
* @return List<Boleto>
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
public static List<Boleto> getVariosBoletos() {
|
||||
|
||||
List<Boleto> boletos = new ArrayList<Boleto>(5);
|
||||
|
||||
Titulo titulo;
|
||||
|
||||
final Date VENCIMENTO = new GregorianCalendar(2000, Calendar.JULY, 3).getTime();
|
||||
|
||||
final Date DATA_DO_DOCUMENTO = new GregorianCalendar(2000, Calendar.APRIL, 14).getTime();
|
||||
|
||||
Sacado sacado = crieSacado();
|
||||
|
||||
Cedente cedente = crieCedente();
|
||||
|
||||
ContaBancaria contaBancaria = new ContaBancaria(BancosSuportados.BANCO_DO_BRASIL.create());
|
||||
|
||||
contaBancaria.setAgencia(new Agencia(1234, "7"));
|
||||
contaBancaria.setCarteira(new Carteira(5));
|
||||
contaBancaria.setNumeroDaConta(new NumeroDaConta(6789, "12"));
|
||||
|
||||
cedente.addContaBancaria(contaBancaria);
|
||||
|
||||
SacadorAvalista sacadorAvalista = crieSacadorAvalista();
|
||||
|
||||
// Fim Código em teste
|
||||
titulo = new Titulo(contaBancaria,sacado, cedente, sacadorAvalista);
|
||||
titulo.setNumeroDoDocumento("123456789");
|
||||
titulo.setNossoNumero("1234567890");
|
||||
titulo.setDigitoDoNossoNumero("5");
|
||||
titulo.setValor(BigDecimal.valueOf(100.23));
|
||||
titulo.setDataDoDocumento(DATA_DO_DOCUMENTO);
|
||||
titulo.setDataDoVencimento(VENCIMENTO);
|
||||
titulo.setTipoDeDocumento(TipoDeTitulo.DM_DUPLICATA_MERCANTIL);
|
||||
titulo.setAceite(Aceite.A);
|
||||
|
||||
Boleto b1,b2,b3,b4,b5;
|
||||
b1 = new Boleto(titulo);
|
||||
|
||||
b1.setLocalPagamento("Pagável preferencialmente na Rede X ou em qualquer Banco até o Vencimento.");
|
||||
b1.setInstrucaoAoSacado("Senhor sacado, sabemos sim que o valor cobrado é injusto e esperamos seu pagamento assim mesmo.");
|
||||
b1.setInstrucao1("PARA PAGAMENTO 1 ");
|
||||
b1.getTitulo().getSacado().setNome("Misael Martins Motriz");
|
||||
|
||||
b2 = new Boleto(titulo);
|
||||
|
||||
b2.setLocalPagamento(b1.getLocalPagamento());
|
||||
b2.setInstrucaoAoSacado(b1.getInstrucaoAoSacado());
|
||||
b2.setInstrucao1("PARA PAGAMENTO 2 ");
|
||||
b2.getTitulo().getSacado().setNome("Samuca Meu Carro");
|
||||
|
||||
b3 = new Boleto(titulo);
|
||||
|
||||
b3.setLocalPagamento(b1.getLocalPagamento());
|
||||
b3.setInstrucaoAoSacado(b1.getInstrucaoAoSacado());
|
||||
b3.setInstrucao1("PARA PAGAMENTO 3 ");
|
||||
b3.getTitulo().getSacado().setNome("Romulo O Namorador");
|
||||
|
||||
b4 = new Boleto(titulo);
|
||||
|
||||
b4.setLocalPagamento(b1.getLocalPagamento());
|
||||
b4.setInstrucaoAoSacado(b1.getInstrucaoAoSacado());
|
||||
b4.setInstrucao1("PARA PAGAMENTO 4 ");
|
||||
b1.getTitulo().getSacado().setNome("Michelx E Seus Irmãos");
|
||||
|
||||
b5 = new Boleto(titulo);
|
||||
|
||||
b5.setLocalPagamento(b1.getLocalPagamento());
|
||||
b5.setInstrucaoAoSacado(b1.getInstrucaoAoSacado());
|
||||
b5.setInstrucao1("PARA PAGAMENTO 5 ");
|
||||
b5.getTitulo().getSacado().setNome("É o doido o que sobrescreveu.");
|
||||
|
||||
boletos.add(b1);
|
||||
boletos.add(b2);
|
||||
boletos.add(b3);
|
||||
boletos.add(b4);
|
||||
boletos.add(b5);
|
||||
|
||||
return boletos;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria uma conta bancária com dados padrão. Esta contabancária não tem banco definido.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static ContaBancaria crieContaBancaria() {
|
||||
|
||||
ContaBancaria contaBancaria = new ContaBancaria();
|
||||
|
||||
Agencia agencia = new Agencia(1234, "0");
|
||||
contaBancaria.setAgencia(agencia);
|
||||
|
||||
NumeroDaConta numeroDaConta = new NumeroDaConta(123456, "0");
|
||||
contaBancaria.setNumeroDaConta(numeroDaConta);
|
||||
|
||||
contaBancaria.setCarteira(new Carteira(1));
|
||||
|
||||
return contaBancaria;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria um cedente com dados padrão.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static Cedente crieCedente() {
|
||||
|
||||
Cedente cedente = new Cedente("PROJETO JRimum", "00.000.208/0001-00");
|
||||
|
||||
cedente.addContaBancaria(crieContaBancaria());
|
||||
|
||||
return cedente;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria um Sacado com dados padrão.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static Sacado crieSacado() {
|
||||
|
||||
Sacado sacado = new Sacado("JRimum Developer", "111.111.111-11");
|
||||
|
||||
Endereco endereco = new Endereco();
|
||||
endereco.setUF(UnidadeFederativa.RN);
|
||||
endereco.setLocalidade("Natal");
|
||||
endereco.setCep("59064-120");
|
||||
endereco.setBairro("Centro");
|
||||
endereco.setLogradouro("Rua JRimum");
|
||||
endereco.setNumero("2332");
|
||||
|
||||
sacado.addEndereco(endereco);
|
||||
|
||||
return sacado;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria um Sacador Avalista padrão.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static SacadorAvalista crieSacadorAvalista() {
|
||||
|
||||
SacadorAvalista sacadorAvalista = new SacadorAvalista("JavaRN", "00.000.000/0001-91");
|
||||
|
||||
Endereco endereco = new Endereco();
|
||||
endereco.setUF(UnidadeFederativa.PB);
|
||||
endereco.setLocalidade("João Pessoa");
|
||||
endereco.setCep("59064-120");
|
||||
endereco.setBairro("Centro");
|
||||
endereco.setLogradouro("Rua JRimum Paraiba");
|
||||
endereco.setNumero("3223");
|
||||
|
||||
sacadorAvalista.addEndereco(endereco);
|
||||
|
||||
return sacadorAvalista;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria um título com dados padrão.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static Titulo crieTitulo() {
|
||||
return crieTitulo(crieCedente(), crieSacado(), crieSacadorAvalista());
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria um título com dados padrão sem sacador avalista.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static Titulo crieTituloSemSacadorAvalista() {
|
||||
return crieTitulo(crieCedente(), crieSacado(), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria um título a partir de um cedente, um sacado e um sacador avalista.
|
||||
*
|
||||
* @param cedente
|
||||
* @param sacado
|
||||
* @param sacadorAvalista
|
||||
* @return
|
||||
*/
|
||||
public static Titulo crieTitulo(Cedente cedente, Sacado sacado, SacadorAvalista sacadorAvalista) {
|
||||
|
||||
ContaBancaria contaBancariaDoCedente = cedente.getContasBancarias().iterator().next();
|
||||
Titulo titulo = null;
|
||||
|
||||
if (sacadorAvalista != null) {
|
||||
titulo = new Titulo(contaBancariaDoCedente, sacado, cedente, sacadorAvalista);
|
||||
|
||||
} else {
|
||||
titulo = new Titulo(contaBancariaDoCedente, sacado, cedente);
|
||||
}
|
||||
|
||||
titulo.setNumeroDoDocumento("123465");
|
||||
titulo.setNossoNumero("1");
|
||||
titulo.setDigitoDoNossoNumero("0");
|
||||
titulo.setValor(BigDecimal.TEN);
|
||||
titulo.setDataDoDocumento(new Date());
|
||||
titulo.setDataDoVencimento(new Date());
|
||||
titulo.setTipoDeDocumento(TipoDeTitulo.DM_DUPLICATA_MERCANTIL);
|
||||
titulo.setAceite(Aceite.A);
|
||||
titulo.setDesconto(BigDecimal.ONE);
|
||||
|
||||
return titulo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria um boleto a partir de um título. Para as informações extras, como instruções,
|
||||
* é configurado um texto padrão.
|
||||
*
|
||||
* @param titulo
|
||||
* @return
|
||||
*/
|
||||
public static Boleto crieBoleto(Titulo titulo) {
|
||||
|
||||
Boleto boleto = new Boleto(titulo);
|
||||
|
||||
boleto.setLocalPagamento("Pagável preferencialmente na Rede X ou em qualquer Banco até o Vencimento.");
|
||||
|
||||
boleto.setInstrucaoAoSacado("Senhor sacado, sabemos sim que o valor cobrado não é o esperado, aproveite o DESCONTÃO!");
|
||||
|
||||
boleto.setInstrucao1("PARA PAGAMENTO 1 até Hoje não cobrar nada!");
|
||||
boleto.setInstrucao2("PARA PAGAMENTO 2 até Amanhã Não cobre!");
|
||||
boleto.setInstrucao3("PARA PAGAMENTO 3 até Depois de amanhã, OK, não cobre.");
|
||||
boleto.setInstrucao4("PARA PAGAMENTO 4 até 04/xx/xxxx de 4 dias atrás COBRAR O VALOR DE: R$ 01,00");
|
||||
boleto.setInstrucao5("PARA PAGAMENTO 5 até 05/xx/xxxx COBRAR O VALOR DE: R$ 02,00");
|
||||
boleto.setInstrucao6("PARA PAGAMENTO 6 até 06/xx/xxxx COBRAR O VALOR DE: R$ 03,00");
|
||||
boleto.setInstrucao7("PARA PAGAMENTO 7 até xx/xx/xxxx COBRAR O VALOR QUE VOCÊ QUISER!");
|
||||
boleto.setInstrucao8("APÓS o Vencimento, Pagável Somente na Rede X.");
|
||||
|
||||
return boleto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gera o boleto.
|
||||
*
|
||||
* @param boleto
|
||||
*/
|
||||
public static void execute(Boleto boleto) {
|
||||
execute(boleto, null);
|
||||
}
|
||||
|
||||
public static void executeComTemplate(Boleto boleto, File template) {
|
||||
execute(boleto, template);
|
||||
}
|
||||
|
||||
/**
|
||||
* Abre o arquivo no aplicativo padrão do sistema.
|
||||
*
|
||||
* @param arquivoBoleto
|
||||
*/
|
||||
public static void mostreBoletoNaTela(File arquivoBoleto) {
|
||||
|
||||
try {
|
||||
// Descomente se estiver usando java 6 ou superior
|
||||
// java.awt.Desktop.getDesktop().open(arquivoBoleto);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private static void execute(Boleto boleto, File template) {
|
||||
|
||||
BoletoViewer viewer = new BoletoViewer(boleto);
|
||||
|
||||
if (template != null) {
|
||||
viewer.setTemplate(template);
|
||||
}
|
||||
|
||||
File boletoPDF = viewer.getPdfAsFile("BOLETO_" + boleto.getClass().getSimpleName().toUpperCase() + ".PDF");
|
||||
|
||||
mostreBoletoNaTela(boletoPDF);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 01/11/2010 - 09:37:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 01/11/2010 - 09:37:00
|
||||
*
|
||||
*/
|
||||
package org.jrimum.bopepo.exemplo;
|
||||
|
||||
import javax.swing.ImageIcon;
|
||||
|
||||
import org.jrimum.domkee.comum.pessoa.id.cprf.CNPJ;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Banco;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.CodigoDeCompensacaoBACEN;
|
||||
import org.jrimum.utilix.ClassLoaders;
|
||||
|
||||
/**
|
||||
* Banco fictício usado para exemplos genéricos.
|
||||
*
|
||||
* @author Rômulo Augusto
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
*
|
||||
*/
|
||||
public class JRimumBank extends Banco {
|
||||
|
||||
public JRimumBank() {
|
||||
super(new CodigoDeCompensacaoBACEN("999"), "JRimum Bank", new CNPJ("02756617000167"),
|
||||
"Banco Múltiplo", new ImageIcon(ClassLoaders.getResource("/img/999.png")).getImage());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,270 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 01/11/2010 - 09:37:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 01/11/2010 - 09:37:00
|
||||
*
|
||||
*/
|
||||
package org.jrimum.bopepo.exemplo;
|
||||
|
||||
import java.io.File;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import org.jrimum.bopepo.BancosSuportados;
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.view.BoletoViewer;
|
||||
import org.jrimum.domkee.comum.pessoa.endereco.CEP;
|
||||
import org.jrimum.domkee.comum.pessoa.endereco.Endereco;
|
||||
import org.jrimum.domkee.comum.pessoa.endereco.UnidadeFederativa;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Agencia;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Carteira;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Cedente;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Sacado;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.TipoDeTitulo;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo.Aceite;
|
||||
|
||||
/**
|
||||
* Exemplo de código para geração de um boleto simples.
|
||||
*
|
||||
* <p>
|
||||
* Utiliza o Banco Bradesco como exemplo, já que possui um implementação simples.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class MeuPrimeiroBoleto {
|
||||
|
||||
/**
|
||||
* Executa o exemplo.
|
||||
*
|
||||
* @param args
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
|
||||
new MeuPrimeiroBoleto().exemplo();
|
||||
}
|
||||
|
||||
/**
|
||||
* Um simples exemplo de como gerar um boleto.
|
||||
*/
|
||||
final void exemplo() {
|
||||
|
||||
/*
|
||||
* Para gerar um boleto é preciso dos dados do boleto e de um
|
||||
* visualizador de boletos.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Primeiro crie os dados do boleto.
|
||||
*/
|
||||
Boleto boleto = crieUmBoleto();
|
||||
|
||||
/*
|
||||
* Em seguida, basta criar um visualizador para o boleto.
|
||||
*/
|
||||
BoletoViewer boletoViewer = new BoletoViewer(boleto);
|
||||
|
||||
/*
|
||||
* Depois, gere um arquivo, byte array ou stream. Nesse exemplo, um
|
||||
* arquivo será salvo na mesma pasta do seu "projeto"
|
||||
*/
|
||||
|
||||
// Exemplos de uso:
|
||||
// WINDOWS: boletoViewer.getAsPDF("C:/Temp/MeuBoleto.pdf");
|
||||
// LINUX: boletoViewer.getAsPDF("/home/temp/MeuBoleto.pdf");
|
||||
File arquivoPdf = boletoViewer.getPdfAsFile("MeuPrimeiroBoleto.pdf");
|
||||
|
||||
// Agora veja o arquivo gerado na tela.
|
||||
mostreBoletoNaTela(arquivoPdf);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria um boleto, em passos distintos, com os dados necessários para a visualização.
|
||||
*
|
||||
* @return boleto com dados
|
||||
*/
|
||||
Boleto crieUmBoleto() {
|
||||
|
||||
/*
|
||||
* PASSO 1: Você precisa dos dados de uma conta bancária habilitada para
|
||||
* emissão de boletos.
|
||||
*/
|
||||
ContaBancaria contaBancaria = crieUmaContaBancaria();
|
||||
|
||||
/*
|
||||
* PASSO 2: Informe os dados do cedente.
|
||||
*/
|
||||
Cedente cedente = crieUmCedente();
|
||||
|
||||
/*
|
||||
* PASSO 3: Informe os dados do Sacado.
|
||||
*/
|
||||
Sacado sacado = crieUmSacado();
|
||||
|
||||
/*
|
||||
* PASSO 4: Crie um novo título/cobrança e informe os dados.
|
||||
*/
|
||||
Titulo titulo = crieOsDadosDoNovoTitulo(new Titulo(contaBancaria,sacado,cedente));
|
||||
|
||||
/*
|
||||
* PASSO 5: Crie o boleto e informe os dados necessários.
|
||||
*/
|
||||
Boleto boleto = crieOsDadosDoNovoBoleto(new Boleto(titulo));
|
||||
|
||||
return boleto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Preenche os principais dados do boleto.
|
||||
*
|
||||
* @param boleto
|
||||
* @return boleto com os dados necssários
|
||||
*/
|
||||
final Boleto crieOsDadosDoNovoBoleto(Boleto boleto) {
|
||||
|
||||
boleto.setLocalPagamento("Pagável preferencialmente na Rede X ou em qualquer Banco até o Vencimento.");
|
||||
boleto.setInstrucaoAoSacado("Senhor sacado, sabemos sim que o valor cobrado não é o esperado, aproveite o DESCONTÃO!");
|
||||
boleto.setInstrucao1("PARA PAGAMENTO 1 até Hoje não cobrar nada!");
|
||||
boleto.setInstrucao2("PARA PAGAMENTO 2 até Amanhã Não cobre!");
|
||||
boleto.setInstrucao3("PARA PAGAMENTO 3 até Depois de amanhã, OK, não cobre.");
|
||||
boleto.setInstrucao4("PARA PAGAMENTO 4 até 04/xx/xxxx de 4 dias atrás COBRAR O VALOR DE: R$ 01,00");
|
||||
boleto.setInstrucao5("PARA PAGAMENTO 5 até 05/xx/xxxx COBRAR O VALOR DE: R$ 02,00");
|
||||
boleto.setInstrucao6("PARA PAGAMENTO 6 até 06/xx/xxxx COBRAR O VALOR DE: R$ 03,00");
|
||||
boleto.setInstrucao7("PARA PAGAMENTO 7 até xx/xx/xxxx COBRAR O VALOR QUE VOCÊ QUISER!");
|
||||
boleto.setInstrucao8("APÓS o Vencimento, Pagável Somente na Rede X.");
|
||||
|
||||
return boleto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Preenche os principais dados do título.
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @return título com os dados necssários
|
||||
*/
|
||||
final Titulo crieOsDadosDoNovoTitulo(Titulo titulo) {
|
||||
|
||||
/*
|
||||
* DADOS BÁSICOS.
|
||||
*/
|
||||
|
||||
titulo.setNumeroDoDocumento("123456");
|
||||
titulo.setNossoNumero("99345678912");
|
||||
titulo.setDigitoDoNossoNumero("5");
|
||||
titulo.setValor(BigDecimal.valueOf(0.23));
|
||||
|
||||
// Para informar a data de maneira simples você pode utilizar as
|
||||
// classes utilitárias do JRimum. Abaixo temos alguns exemplos:
|
||||
// (1) titulo.setDataDoVencimento( DateFormat.DDMMYYYY_B.parse("11/03/2011") );
|
||||
// (2) titulo.setDataDoVencimento( Dates.parse("11/03/2011", "dd/MM/yyyy") );
|
||||
titulo.setDataDoDocumento(new Date());
|
||||
titulo.setDataDoVencimento(new Date());
|
||||
|
||||
titulo.setTipoDeDocumento(TipoDeTitulo.DM_DUPLICATA_MERCANTIL);
|
||||
titulo.setAceite(Aceite.A);
|
||||
titulo.setDesconto(new BigDecimal(0.05));
|
||||
titulo.setDeducao(BigDecimal.ZERO);
|
||||
titulo.setMora(BigDecimal.ZERO);
|
||||
titulo.setAcrecimo(BigDecimal.ZERO);
|
||||
titulo.setValorCobrado(BigDecimal.ZERO);
|
||||
|
||||
return titulo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria uma instância de sacado com os principais dados para o boleto.
|
||||
*
|
||||
* @return sacado com os dados necssários
|
||||
*/
|
||||
final Sacado crieUmSacado() {
|
||||
|
||||
Sacado sacado = new Sacado("Java Developer Pronto Para Férias", "222.222.222-22");
|
||||
|
||||
// Informando o endereço do sacado.
|
||||
Endereco enderecoSac = new Endereco();
|
||||
enderecoSac.setUF(UnidadeFederativa.RN);
|
||||
enderecoSac.setLocalidade("Natal");
|
||||
enderecoSac.setCep(new CEP("59064-120"));
|
||||
enderecoSac.setBairro("Grande Centro");
|
||||
enderecoSac.setLogradouro("Rua poeta dos programas");
|
||||
enderecoSac.setNumero("1");
|
||||
sacado.addEndereco(enderecoSac);
|
||||
|
||||
return sacado;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria uma instância de cedente com os principais dados para o boleto.
|
||||
*
|
||||
* @return cedente com os dados necssários
|
||||
*/
|
||||
final Cedente crieUmCedente() {
|
||||
|
||||
return new Cedente("Projeto JRimum", "00.000.208/0001-00");
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria uma instância de conta bancária com os principais dados para o
|
||||
* boleto em questão (Banco Bradesco).
|
||||
*
|
||||
* @return conta com os dados necssários
|
||||
*/
|
||||
final ContaBancaria crieUmaContaBancaria(){
|
||||
|
||||
ContaBancaria contaBancaria = new ContaBancaria(BancosSuportados.BANCO_BRADESCO.create());
|
||||
contaBancaria.setNumeroDaConta(new NumeroDaConta(123456, "0"));
|
||||
contaBancaria.setCarteira(new Carteira(30));
|
||||
contaBancaria.setAgencia(new Agencia(1234, "1"));
|
||||
|
||||
return contaBancaria;
|
||||
}
|
||||
|
||||
/**
|
||||
* Exibe o arquivo na tela.
|
||||
*
|
||||
* @param arquivoBoleto
|
||||
*/
|
||||
final void mostreBoletoNaTela(File arquivoBoleto) {
|
||||
|
||||
try {
|
||||
// Descomente se estiver usando java 6 ou superior
|
||||
// java.awt.Desktop.getDesktop().open(arquivoBoleto);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,197 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 01/11/2010 - 09:37:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 01/11/2010 - 09:37:00
|
||||
*
|
||||
*/
|
||||
package org.jrimum.bopepo.exemplo;
|
||||
|
||||
import java.io.File;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.campolivre.CampoLivre;
|
||||
import org.jrimum.bopepo.view.BoletoViewer;
|
||||
import org.jrimum.domkee.comum.pessoa.endereco.CEP;
|
||||
import org.jrimum.domkee.comum.pessoa.endereco.Endereco;
|
||||
import org.jrimum.domkee.comum.pessoa.endereco.UnidadeFederativa;
|
||||
import org.jrimum.domkee.financeiro.banco.Banco;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Agencia;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Carteira;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Cedente;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Sacado;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.SacadorAvalista;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.TipoDeTitulo;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo.Aceite;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Exemplo de código para geração de um boleto simples.
|
||||
* </p>
|
||||
* <p>
|
||||
* Utiliza o Banco Bradesco como exemplo, já que possui um implementação simples.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class MeuPrimeiroBoletoBancoNaoSuportado {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
/*
|
||||
* INFORMANDO DADOS SOBRE O CEDENTE.
|
||||
*/
|
||||
Cedente cedente = new Cedente("PROJETO JRimum", "00.000.208/0001-00");
|
||||
|
||||
/*
|
||||
* INFORMANDO DADOS SOBRE O SACADO.
|
||||
*/
|
||||
Sacado sacado = new Sacado("JavaDeveloper Pronto Para Férias", "222.222.222-22");
|
||||
|
||||
// Informando o endereço do sacado.
|
||||
Endereco enderecoSac = new Endereco();
|
||||
enderecoSac.setUF(UnidadeFederativa.RN);
|
||||
enderecoSac.setLocalidade("Natal");
|
||||
enderecoSac.setCep(new CEP("59064-120"));
|
||||
enderecoSac.setBairro("Grande Centro");
|
||||
enderecoSac.setLogradouro("Rua poeta dos programas");
|
||||
enderecoSac.setNumero("1");
|
||||
sacado.addEndereco(enderecoSac);
|
||||
|
||||
/*
|
||||
* INFORMANDO DADOS SOBRE O SACADOR AVALISTA.
|
||||
*/
|
||||
SacadorAvalista sacadorAvalista = new SacadorAvalista("JRimum Enterprise", "00.000.000/0001-91");
|
||||
|
||||
// Informando o endereço do sacador avalista.
|
||||
Endereco enderecoSacAval = new Endereco();
|
||||
enderecoSacAval.setUF(UnidadeFederativa.DF);
|
||||
enderecoSacAval.setLocalidade("Brasília");
|
||||
enderecoSacAval.setCep(new CEP("59000-000"));
|
||||
enderecoSacAval.setBairro("Grande Centro");
|
||||
enderecoSacAval.setLogradouro("Rua Eternamente Principal");
|
||||
enderecoSacAval.setNumero("001");
|
||||
sacadorAvalista.addEndereco(enderecoSacAval);
|
||||
|
||||
/*
|
||||
* INFORMANDO OS DADOS SOBRE O TÍTULO.
|
||||
*/
|
||||
// RECURSO PONTO DE EXTENSÃO:
|
||||
// Informando um banco que AINDA não é suportado nativamente pelo componente.
|
||||
Banco banco = new JRimumBank();
|
||||
|
||||
|
||||
|
||||
// Informando dados sobre a conta bancária do título.
|
||||
ContaBancaria contaBancaria = new ContaBancaria(banco);
|
||||
contaBancaria.setNumeroDaConta(new NumeroDaConta(123456, "0"));
|
||||
contaBancaria.setCarteira(new Carteira(30));
|
||||
contaBancaria.setAgencia(new Agencia(1234, "1"));
|
||||
|
||||
Titulo titulo = new Titulo(contaBancaria, sacado, cedente, sacadorAvalista);
|
||||
titulo.setNumeroDoDocumento("123456");
|
||||
titulo.setNossoNumero("993456789");
|
||||
titulo.setDigitoDoNossoNumero("5");
|
||||
titulo.setValor(BigDecimal.valueOf(0.23));
|
||||
titulo.setDataDoDocumento(new Date());
|
||||
titulo.setDataDoVencimento(new Date());
|
||||
titulo.setTipoDeDocumento(TipoDeTitulo.DM_DUPLICATA_MERCANTIL);
|
||||
titulo.setAceite(Aceite.A);
|
||||
titulo.setDesconto(new BigDecimal(0.05));
|
||||
titulo.setDeducao(BigDecimal.ZERO);
|
||||
titulo.setMora(BigDecimal.ZERO);
|
||||
titulo.setAcrecimo(BigDecimal.ZERO);
|
||||
titulo.setValorCobrado(BigDecimal.ZERO);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* INFORMANDO OS DADOS SOBRE O BOLETO.
|
||||
*/
|
||||
|
||||
// RECURSO PONTO DE EXTENSÃO:
|
||||
// Informando o campo livre do banco que AINDA não é suportado nativamente pelo componente.
|
||||
CampoLivre campoLivre = new CampoLivreJRimumBank(titulo);
|
||||
|
||||
Boleto boleto = new Boleto(titulo, campoLivre);
|
||||
|
||||
boleto.setLocalPagamento("Pagável preferencialmente na Rede X ou em " +
|
||||
"qualquer Banco até o Vencimento.");
|
||||
boleto.setInstrucaoAoSacado("Senhor sacado, sabemos sim que o valor " +
|
||||
"cobrado não é o esperado, aproveite o DESCONTÃO!");
|
||||
boleto.setInstrucao1("PARA PAGAMENTO 1 até Hoje não cobrar nada!");
|
||||
boleto.setInstrucao2("PARA PAGAMENTO 2 até Amanhã Não cobre!");
|
||||
boleto.setInstrucao3("PARA PAGAMENTO 3 até Depois de amanhã, OK, não cobre.");
|
||||
boleto.setInstrucao4("PARA PAGAMENTO 4 até 04/xx/xxxx de 4 dias atrás COBRAR O VALOR DE: R$ 01,00");
|
||||
boleto.setInstrucao5("PARA PAGAMENTO 5 até 05/xx/xxxx COBRAR O VALOR DE: R$ 02,00");
|
||||
boleto.setInstrucao6("PARA PAGAMENTO 6 até 06/xx/xxxx COBRAR O VALOR DE: R$ 03,00");
|
||||
boleto.setInstrucao7("PARA PAGAMENTO 7 até xx/xx/xxxx COBRAR O VALOR QUE VOCÊ QUISER!");
|
||||
boleto.setInstrucao8("APÓS o Vencimento, Pagável Somente na Rede X.");
|
||||
|
||||
/*
|
||||
* GERANDO O BOLETO BANCÁRIO.
|
||||
*/
|
||||
// Instanciando um objeto "BoletoViewer", classe responsável pela
|
||||
// geração do boleto bancário.
|
||||
BoletoViewer boletoViewer = new BoletoViewer(boleto);
|
||||
|
||||
// Gerando o arquivo. No caso o arquivo mencionado será salvo na mesma
|
||||
// pasta do projeto. Outros exemplos:
|
||||
// WINDOWS: boletoViewer.getAsPDF("C:/Temp/MeuBoleto.pdf");
|
||||
// LINUX: boletoViewer.getAsPDF("/home/temp/MeuBoleto.pdf");
|
||||
File arquivoPdf = boletoViewer.getPdfAsFile("MeuPrimeiroBoleto.pdf");
|
||||
|
||||
// Mostrando o boleto gerado na tela.
|
||||
mostreBoletoNaTela(arquivoPdf);
|
||||
}
|
||||
|
||||
/**
|
||||
* Exibe o arquivo na tela.
|
||||
*
|
||||
* @param arquivoBoleto
|
||||
*/
|
||||
private static void mostreBoletoNaTela(File arquivoBoleto) {
|
||||
|
||||
try {
|
||||
// Descomente se estiver usando java 6 ou superior
|
||||
// java.awt.Desktop.getDesktop().open(arquivoBoleto);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 01/11/2010 - 09:37:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 01/11/2010 - 09:37:00
|
||||
*
|
||||
*/
|
||||
package org.jrimum.bopepo.exemplo;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.jrimum.bopepo.BancosSuportados;
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.view.BoletoViewer;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.utilix.ClassLoaders;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Exemplo de código para geração de um boleto simples usando um template personalizado.
|
||||
* </p>
|
||||
* <p>
|
||||
* Utiliza a classe utilitária <code>Exemplos</code> para criar os objetos necessários para gerar o boleto.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class MeuPrimeiroBoletoPersonalizado {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
Titulo titulo = Exemplos.crieTitulo();
|
||||
titulo.getContaBancaria().setBanco(BancosSuportados.BANCO_DO_BRASIL.create());
|
||||
titulo.setNossoNumero("1234567890");
|
||||
|
||||
Boleto boleto = Exemplos.crieBoleto(titulo);
|
||||
|
||||
//Informando o template personalizado:
|
||||
File templatePersonalizado = new File(ClassLoaders.getResource("/templates/BoletoTemplatePersonalizacaoSimples.pdf").getFile());
|
||||
BoletoViewer boletoViewer = new BoletoViewer(boleto, templatePersonalizado);
|
||||
|
||||
File arquivoPdf = boletoViewer.getPdfAsFile("MeuBoletoPersonalizado.pdf");
|
||||
|
||||
Exemplos.mostreBoletoNaTela(arquivoPdf);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,109 @@
|
|||
|
||||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 18/05/2008 - 21:13:29
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 18/05/2008 - 21:13:29
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.exemplo;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.jrimum.bopepo.BancosSuportados;
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.view.BoletoViewer;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Agencia;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Carteira;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Exemplo de código para geração de vários boletos em um único arquivo PDF.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class VariosBoletosEmUmArquivo {
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
Boleto boletoBB = crieBoletoBB();
|
||||
Boleto boletoBradesco = crieBoletoBradesco();
|
||||
|
||||
List<Boleto> boletos = new ArrayList<Boleto>();
|
||||
boletos.add(boletoBB);
|
||||
boletos.add(boletoBradesco);
|
||||
|
||||
File pdf = BoletoViewer.groupInOnePDF(boletos, "PDFComVariosBoletos.pdf");
|
||||
Exemplos.mostreBoletoNaTela(pdf);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria um boleto do banco Bradesco.
|
||||
* @return
|
||||
*/
|
||||
private static Boleto crieBoletoBradesco() {
|
||||
|
||||
Titulo tituloBradesco = Exemplos.crieTitulo();
|
||||
tituloBradesco.setNossoNumero("01234567891");
|
||||
|
||||
ContaBancaria contaBancariaBradesco = tituloBradesco.getContaBancaria();
|
||||
contaBancariaBradesco.setBanco(BancosSuportados.BANCO_BRADESCO.create());
|
||||
contaBancariaBradesco.setAgencia(new Agencia(1234));
|
||||
contaBancariaBradesco.setCarteira(new Carteira(12));
|
||||
contaBancariaBradesco.setNumeroDaConta(new NumeroDaConta(1234567));
|
||||
|
||||
return Exemplos.crieBoleto(tituloBradesco);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria um boleto do Banco do Brasil.
|
||||
* @return
|
||||
*/
|
||||
private static Boleto crieBoletoBB() {
|
||||
|
||||
Titulo tituloBB = Exemplos.crieTitulo();
|
||||
tituloBB .setNossoNumero("1234567890");
|
||||
|
||||
ContaBancaria contaBancariaBB = tituloBB.getContaBancaria();
|
||||
contaBancariaBB.setBanco(BancosSuportados.BANCO_DO_BRASIL.create());
|
||||
|
||||
return Exemplos.crieBoleto(tituloBB);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 18/05/2008 - 21:13:29
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 18/05/2008 - 21:13:29
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.exemplo;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.view.BoletoViewer;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* <p>
|
||||
* Exemplo de código para geração de vários boletos em um único arquivo PDF.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
|
||||
public class VariosBoletosEmVariosArquivos {
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
/*
|
||||
* É bem simples, consiga os boletos
|
||||
*/
|
||||
|
||||
List<Boleto> boletos = Exemplos.getVariosBoletos();
|
||||
|
||||
/*
|
||||
* Depois diga o nome do diretorio para onde os boletos serão gerados.
|
||||
*/
|
||||
|
||||
BoletoViewer.onePerPDF(boletos, new File("./"), "prefixo-boleto-", "-sufixo-DePagamento");
|
||||
|
||||
|
||||
/*
|
||||
* Pronto, agora vamos conferir um:
|
||||
*/
|
||||
try{
|
||||
// Descomente se estiver usando java 6 ou superior
|
||||
//java.awt.Desktop.getDesktop().open(new File("prefixo-boleto-1-sufixo-DePagamento.pdf"));
|
||||
|
||||
}catch(Exception e){
|
||||
throw new RuntimeException("Arquivo não gerado!",e);
|
||||
}
|
||||
|
||||
/*
|
||||
* É sério, é só isso mesmo!
|
||||
* Se não acredita confira os vários arquivos que estão no diretório.
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,225 @@
|
|||
/*
|
||||
* Copyright 2011 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 11/04/2011 - 23:20:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2011 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 11/04/2011 - 23:20:00
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.exemplo.banco.banrisul;
|
||||
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.utilix.Objects;
|
||||
import org.jrimum.vallia.digitoverificador.Modulo;
|
||||
|
||||
/**
|
||||
* Classe responsável pela criação do Nosso Número referente ao Banco Banrisul.
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
*/
|
||||
public class NossoNumero {
|
||||
|
||||
private int numero;
|
||||
|
||||
private int dvMod10;
|
||||
private int dvMod11;
|
||||
|
||||
/**
|
||||
* Nosso número calculado.
|
||||
*/
|
||||
private StringBuilder nossoNumero = new StringBuilder("");
|
||||
|
||||
/**
|
||||
* Para uso interno.
|
||||
*/
|
||||
private NossoNumero() {}
|
||||
|
||||
public static NossoNumero valueOf(int numero){
|
||||
|
||||
Objects.checkArgument(numero > 0, "Número [ "+numero+" ] inválido!");
|
||||
|
||||
NossoNumero nn = new NossoNumero();
|
||||
nn.numero = numero;
|
||||
nn.create();
|
||||
|
||||
return nn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Responsável pela lógica de cálculo do dígito verificador informada pelo
|
||||
* Bradesco.
|
||||
* <p>
|
||||
* Para maiores esclarecimentos ver o manual do Bradesco.
|
||||
* </p>
|
||||
*/
|
||||
private void create(){
|
||||
|
||||
nossoNumero.append(Fillers.ZERO_LEFT.fill(numero, 8));
|
||||
|
||||
calculeDvMod10();
|
||||
calculeDvMod11();
|
||||
}
|
||||
|
||||
private void calculeDvMod11() {
|
||||
|
||||
int somatorio = Modulo.calculeSomaSequencialMod11(nossoNumero.toString()+getDvMod10(),2,7);
|
||||
|
||||
int restoDivisao;
|
||||
|
||||
/*
|
||||
* Caso o somatório obtido seja menor que 11, considerar como resto da divisão o próprio somatório.
|
||||
*/
|
||||
if(somatorio < 11){
|
||||
restoDivisao = somatorio;
|
||||
}else{
|
||||
restoDivisao = somatorio % 11;
|
||||
}
|
||||
|
||||
int restoSubtracao = (11 - restoDivisao);
|
||||
|
||||
/*
|
||||
* Caso o resto obtido no cálculo do módulo 11 seja 0, o segundo NC será
|
||||
* igual ao próprio resto.
|
||||
*/
|
||||
if(restoDivisao == 0){
|
||||
this.dvMod11 = 0;
|
||||
}else{
|
||||
|
||||
if(restoDivisao != 1){
|
||||
|
||||
this.dvMod11 = restoSubtracao;
|
||||
|
||||
}else{
|
||||
/*
|
||||
* Caso o resto obtido no cálculo do módulo 11 seja igual a 1,
|
||||
* considera-se o DV inválido. Soma-se, então, "1" ao DV obtido
|
||||
* do módulo "10" e refaz-se o cálculo do módulo “11” .
|
||||
*/
|
||||
this.dvMod10++;
|
||||
|
||||
/*
|
||||
* Se o dígito obtido pelo módulo “10” era igual a "9",
|
||||
* considera-se então (9+1=10) DV inválido. Neste caso, o DV do
|
||||
* módulo "10" automaticamente será igual a "0" e procede-se
|
||||
* assim novo cálculo pelo módulo "11".
|
||||
*/
|
||||
if(this.dvMod10 == 10){
|
||||
|
||||
dvMod10 = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Novo cálculo
|
||||
*/
|
||||
calculeDvMod11();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void calculeDvMod10() {
|
||||
|
||||
int somatorio = Modulo.calculeSomaSequencialMod10(nossoNumero.toString(),1,2);
|
||||
|
||||
int restoDivisao;
|
||||
|
||||
/*
|
||||
* Quando o somatório for menor que 10, o resto da divisão por 10 será o
|
||||
* próprio somatório.
|
||||
*/
|
||||
if(somatorio < 10){
|
||||
restoDivisao = somatorio;
|
||||
}else{
|
||||
restoDivisao = somatorio % 10;
|
||||
}
|
||||
|
||||
int restoSubtracao = (10 - restoDivisao);
|
||||
|
||||
if(restoDivisao == 0){
|
||||
this.dvMod10 = 0;
|
||||
}else{
|
||||
this.dvMod10 = restoSubtracao;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retorna o digito verificador calculado.
|
||||
*
|
||||
* @return String Digito Verificador de dois dígitos
|
||||
*/
|
||||
public String getDv(){
|
||||
return dvMod10+""+dvMod11;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the dvMod10
|
||||
*/
|
||||
public int getDvMod10() {
|
||||
return dvMod10;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the dvMod11
|
||||
*/
|
||||
public int getDvMod11() {
|
||||
return dvMod11;
|
||||
}
|
||||
|
||||
/**
|
||||
* String com o nosso número sem o digito verificador.
|
||||
*
|
||||
* @return nosso número
|
||||
*/
|
||||
public String writeRaw(){
|
||||
return Fillers.ZERO_LEFT.fill(numero, 8);
|
||||
}
|
||||
|
||||
/**
|
||||
* String com o nosso número com o digito verificador.
|
||||
*
|
||||
* @return nosso número
|
||||
*/
|
||||
public String writeFull(){
|
||||
return nossoNumero.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* String com o nosso número formatado com o digito verificador.
|
||||
*
|
||||
* @return nosso número
|
||||
*/
|
||||
public String writeFormated(){
|
||||
return Fillers.ZERO_LEFT.fill(numero, 8)+"."+getDv();
|
||||
}
|
||||
|
||||
/**
|
||||
* Escreve o nosso número formatado.
|
||||
*
|
||||
* @see java.lang.Object#toString()
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return writeFormated();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 16/09/2009 - 00:44:51
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 16/09/2009 - 00:44:51
|
||||
*
|
||||
*/
|
||||
package org.jrimum.bopepo.exemplo.banco.bb;
|
||||
|
||||
import org.jrimum.bopepo.BancosSuportados;
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.exemplo.Exemplos;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Exemplo do boleto para o Banco do Brasil com Nosso Número 10
|
||||
* </p>
|
||||
* <p>
|
||||
* Mostra um exemplo funcional que gera um boleto para a implementação de campo livre
|
||||
* do Banco do Brasil com Nosso Número 10
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class BoletoBBNossoNumero10Exemplo {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
Titulo titulo = Exemplos.crieTitulo();
|
||||
|
||||
//Campos específicos para o Banco do Brasil com nosso número 10.
|
||||
titulo.setNossoNumero("1234567890");
|
||||
|
||||
ContaBancaria contaBancaria = titulo.getContaBancaria();
|
||||
contaBancaria.setBanco(BancosSuportados.BANCO_DO_BRASIL.create());
|
||||
|
||||
Boleto boleto = Exemplos.crieBoleto(titulo);
|
||||
|
||||
Exemplos.execute(boleto);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 16/09/2009 - 00:44:51
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 16/09/2009 - 00:44:51
|
||||
*
|
||||
*/
|
||||
package org.jrimum.bopepo.exemplo.banco.bb;
|
||||
|
||||
import org.jrimum.bopepo.BancosSuportados;
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.exemplo.Exemplos;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Exemplo do boleto para o Banco do Brasil com Nosso Número 11
|
||||
* </p>
|
||||
* <p>
|
||||
* Mostra um exemplo funcional que gera um boleto para a implementação de campo livre
|
||||
* do Banco do Brasil com Nosso Número 11
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class BoletoBBNossoNumero11Exemplo {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
Titulo titulo = Exemplos.crieTitulo();
|
||||
|
||||
//Campos específicos para o Banco do Brasil com nosso número 11.
|
||||
titulo.setNossoNumero("12345678901");
|
||||
|
||||
ContaBancaria contaBancaria = titulo.getContaBancaria();
|
||||
contaBancaria.setBanco(BancosSuportados.BANCO_DO_BRASIL.create());
|
||||
|
||||
Boleto boleto = Exemplos.crieBoleto(titulo);
|
||||
|
||||
Exemplos.execute(boleto);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,84 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 16/09/2009 - 00:44:51
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 16/09/2009 - 00:44:51
|
||||
*
|
||||
*/
|
||||
package org.jrimum.bopepo.exemplo.banco.bb;
|
||||
|
||||
import org.jrimum.bopepo.BancosSuportados;
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.exemplo.Exemplos;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Exemplo do boleto para o Banco do Brasil com Nosso Número de 17 dígitos e Convênio de 6 posições.
|
||||
* </p>
|
||||
* <p>
|
||||
* Mostra um exemplo funcional que gera um boleto para a implementação de campo livre
|
||||
* do Banco do Brasil com Banco do Brasil com Nosso Número 17/Convênio 7;
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class BoletoBBNossoNumero17Convenio6Exemplo {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
Titulo titulo = Exemplos.crieTitulo();
|
||||
|
||||
/*
|
||||
* Campos específicos para o Banco do Brasil com Nosso Número 17 / Convênio 6.
|
||||
*/
|
||||
|
||||
ContaBancaria contaBancaria = titulo.getContaBancaria();
|
||||
|
||||
/*
|
||||
* Banco do Brasil 001
|
||||
*/
|
||||
contaBancaria.setBanco(BancosSuportados.BANCO_DO_BRASIL.create());
|
||||
|
||||
/*
|
||||
* Conta/Convênio de 6 posições ou seja, até 999999
|
||||
*/
|
||||
contaBancaria.setNumeroDaConta(new NumeroDaConta(123456));
|
||||
|
||||
/*
|
||||
* Nosso Número de 17 posições
|
||||
*/
|
||||
titulo.setNossoNumero("12345678901234567");
|
||||
|
||||
Boleto boleto = Exemplos.crieBoleto(titulo);
|
||||
|
||||
Exemplos.execute(boleto);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
package org.jrimum.bopepo.exemplo.banco.bb;
|
||||
|
||||
import org.jrimum.bopepo.BancosSuportados;
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.exemplo.Exemplos;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Carteira;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Exemplo do boleto para o Banco do Brasil com Nosso Número de 17 dígitos e Convênio de 7 posições.
|
||||
* </p>
|
||||
* <p>
|
||||
* Mostra um exemplo funcional que gera um boleto para a implementação de campo livre
|
||||
* do Banco do Brasil com Nosso Número 17/Convênio 7;
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class BoletoBBNossoNumero17Convenio7Exemplo {
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
Titulo titulo = Exemplos.crieTitulo();
|
||||
|
||||
/*
|
||||
* Campos específicos para o Banco do Brasil com Nosso Número 17 / Convênio 6.
|
||||
*/
|
||||
|
||||
ContaBancaria contaBancaria = titulo.getContaBancaria();
|
||||
|
||||
/*
|
||||
* Banco do Brasil 001
|
||||
*/
|
||||
contaBancaria.setBanco(BancosSuportados.BANCO_DO_BRASIL.create());
|
||||
|
||||
/*
|
||||
* Conta/Convênio de 7 posições ou seja, acima de 1.000.000
|
||||
*/
|
||||
contaBancaria.setNumeroDaConta(new NumeroDaConta(1234567));
|
||||
|
||||
/*
|
||||
* Nosso Número de 17 posições
|
||||
*/
|
||||
titulo.setNossoNumero("12345678901234567");
|
||||
|
||||
/*
|
||||
* Carteira com no máximo 2 dígitos
|
||||
*/
|
||||
contaBancaria.setCarteira(new Carteira(23));
|
||||
|
||||
Boleto boleto = Exemplos.crieBoleto(titulo);
|
||||
|
||||
Exemplos.execute(boleto);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* Copyright 2010 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 02/11/2010 - 18:06:18
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2010 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 02/11/2010 - 18:06:18
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Exemplos de geração de boletos para o Banco do Brasil.
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*/
|
||||
package org.jrimum.bopepo.exemplo.banco.bb;
|
|
@ -0,0 +1,105 @@
|
|||
/*
|
||||
* Copyright 2010 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 16/12/2010 - 13:24:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2010 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Created at: 16/12/2010 - 13:24:00
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
package org.jrimum.bopepo.exemplo.banco.bnb;
|
||||
|
||||
|
||||
import org.jrimum.bopepo.BancosSuportados;
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.exemplo.Exemplos;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Agencia;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Carteira;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Exemplo do boleto para o Banco do Nordeste
|
||||
* </p>
|
||||
* <p>
|
||||
* Mostra um exemplo funcional que gera um boleto para a implementação de campo livre
|
||||
* do Banco do Nordeste do Brasil
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:pporto@gmail.com">Paulo Porto</a>
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class BoletoBancoDoNordesteDoBrasilExemplo {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
Titulo titulo = Exemplos.crieTitulo();
|
||||
|
||||
/*
|
||||
* Campos específicos para o Banco do Nordeste.
|
||||
*/
|
||||
|
||||
ContaBancaria contaBancaria = titulo.getContaBancaria();
|
||||
|
||||
/*
|
||||
* Banco do Nordeste 004
|
||||
*/
|
||||
contaBancaria.setBanco(BancosSuportados.BANCO_DO_NORDESTE_DO_BRASIL.create());
|
||||
|
||||
/*
|
||||
* Agência com no máximo 4 dígitos
|
||||
*/
|
||||
contaBancaria.setAgencia(new Agencia(100));
|
||||
|
||||
/*
|
||||
* Carteira com no máximo 2 dígitos
|
||||
*/
|
||||
contaBancaria.setCarteira(new Carteira(57));
|
||||
|
||||
/*
|
||||
* Nosso Número com 7 dígitos
|
||||
*/
|
||||
titulo.setNossoNumero("7654321");
|
||||
|
||||
/*
|
||||
* Dígito do Nosso Número
|
||||
*/
|
||||
titulo.setDigitoDoNossoNumero("0");
|
||||
|
||||
/*
|
||||
* Número da conta com no máximo 7 dígitos e necessariamente com o dígito verificador
|
||||
*/
|
||||
contaBancaria.setNumeroDaConta(new NumeroDaConta(13677, "9"));
|
||||
|
||||
Boleto boleto = Exemplos.crieBoleto(titulo);
|
||||
|
||||
Exemplos.execute(boleto);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,96 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 16/09/2009 - 00:44:51
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 16/09/2009 - 00:44:51
|
||||
*
|
||||
*/
|
||||
package org.jrimum.bopepo.exemplo.banco.bradesco;
|
||||
|
||||
import org.jrimum.bopepo.BancosSuportados;
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.exemplo.Exemplos;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Agencia;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Carteira;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Exemplo do boleto para o Banco Bradesco
|
||||
* </p>
|
||||
* <p>
|
||||
* Mostra um exemplo funcional que gera um boleto para a implementação de campo livre
|
||||
* do Banco Bradesco
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class BoletoBradescoExemplo {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
Titulo titulo = Exemplos.crieTitulo();
|
||||
|
||||
/*
|
||||
* Campos específicos para o Banco Bradesco.
|
||||
*/
|
||||
|
||||
ContaBancaria contaBancaria = titulo.getContaBancaria();
|
||||
|
||||
/*
|
||||
* Banco bradesco 237
|
||||
*/
|
||||
contaBancaria.setBanco(BancosSuportados.BANCO_BRADESCO.create());
|
||||
|
||||
/*
|
||||
* Agência com no máximo 4 dígitos
|
||||
*/
|
||||
contaBancaria.setAgencia(new Agencia(1234));
|
||||
|
||||
/*
|
||||
* Carteira com no máximo 2 dígitos
|
||||
*/
|
||||
contaBancaria.setCarteira(new Carteira(12));
|
||||
|
||||
/*
|
||||
* Nosso número com 11 dígitos
|
||||
*/
|
||||
titulo.setNossoNumero("01234567891");
|
||||
|
||||
/*
|
||||
* Número da conta com no máxiom 7 dígitos
|
||||
*/
|
||||
contaBancaria.setNumeroDaConta(new NumeroDaConta(1234567));
|
||||
|
||||
Boleto boleto = Exemplos.crieBoleto(titulo);
|
||||
|
||||
Exemplos.execute(boleto);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,145 @@
|
|||
/*
|
||||
* Copyright 2011 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 07/04/2011 - 10:57:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2011 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 07/04/2011 - 10:57:00
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.exemplo.banco.bradesco;
|
||||
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.utilix.Objects;
|
||||
import org.jrimum.vallia.digitoverificador.Modulo;
|
||||
|
||||
/**
|
||||
* Classe responsável pela criação do Nosso Número referente ao Banco Bradesco.
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
*/
|
||||
public class NossoNumero {
|
||||
|
||||
private String carteira;
|
||||
|
||||
private long numero;
|
||||
|
||||
private String dv;
|
||||
|
||||
private StringBuilder nossoNumero = new StringBuilder("");
|
||||
|
||||
/**
|
||||
* Para uso interno.
|
||||
*/
|
||||
private NossoNumero() {}
|
||||
|
||||
public static NossoNumero valueOf(long numero, int carteira){
|
||||
|
||||
Objects.checkArgument(numero > 0, "Número [ "+numero+" ] inválido!");
|
||||
Objects.checkArgument(carteira > 0, "Carteira [ "+carteira+" ] inválida!");
|
||||
Objects.checkArgument(carteira <= 99, "Carteira [ "+carteira+" ] inválida! Carteira Bradesco deve ser um número entre 1 e 99");
|
||||
|
||||
NossoNumero nn = new NossoNumero();
|
||||
nn.numero = numero;
|
||||
nn.carteira = Fillers.ZERO_LEFT.fill(carteira, 2);
|
||||
nn.create();
|
||||
|
||||
return nn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Responsável pela lógica de cálculo do dígito verificador informada pelo
|
||||
* Bradesco.
|
||||
* <p>
|
||||
* Para maiores esclarecimentos ver o manual do Bradesco.
|
||||
* </p>
|
||||
*/
|
||||
private void create(){
|
||||
|
||||
nossoNumero.append(Fillers.ZERO_LEFT.fill(numero, 11));
|
||||
|
||||
String formula = this.carteira+nossoNumero.toString();
|
||||
|
||||
int restoDivisao = Modulo.calculeMod11(formula,2,7);
|
||||
|
||||
int restoSubtracao = (11 - restoDivisao);
|
||||
|
||||
if(restoDivisao == 0){
|
||||
dv = "0";
|
||||
}else{
|
||||
if(restoSubtracao == 10){
|
||||
dv = "P";
|
||||
}else{
|
||||
dv = ""+restoSubtracao;
|
||||
}
|
||||
}
|
||||
nossoNumero.append(dv);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retorna o digito verificador calculado.
|
||||
*
|
||||
* @return String Digito Verificador
|
||||
*/
|
||||
public String getDv(){
|
||||
return dv;
|
||||
}
|
||||
|
||||
/**
|
||||
* String com o nosso número sem o digito verificador.
|
||||
*
|
||||
* @return nosso número
|
||||
*/
|
||||
public String writeRaw(){
|
||||
return Fillers.ZERO_LEFT.fill(numero, 11);
|
||||
}
|
||||
|
||||
/**
|
||||
* String com o nosso número com o digito verificador.
|
||||
*
|
||||
* @return nosso número
|
||||
*/
|
||||
public String writeFull(){
|
||||
return nossoNumero.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* String com o nosso número formatado com o digito verificador.
|
||||
*
|
||||
* @return nosso número
|
||||
*/
|
||||
public String writeFormated(){
|
||||
return Fillers.ZERO_LEFT.fill(numero, 11)+"-"+dv;
|
||||
}
|
||||
|
||||
/**
|
||||
* Escreve o nosso número formatado.
|
||||
*
|
||||
* @see java.lang.Object#toString()
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return writeFormated();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,98 @@
|
|||
/*
|
||||
* Copyright 2014 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 01/02/2014 - 17:49:03
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2014 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 01/02/2014 - 17:49:03
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.exemplo.banco.brb;
|
||||
|
||||
import org.jrimum.bopepo.BancosSuportados;
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.exemplo.Exemplos;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Agencia;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Carteira;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.TipoDeCobranca;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* Exemplo do boleto para BRB - Banco de Brasília.
|
||||
|
||||
* <p>
|
||||
* Mostra um exemplo funcional que gera um boleto para a implementação padrão do BRB.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
/**
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
*
|
||||
*/
|
||||
public class BoletoBancoDeBrasiliaExemplo {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
Titulo titulo = Exemplos.crieTitulo();
|
||||
|
||||
/*
|
||||
* Campos específicos para o Banco de Brasília.
|
||||
*/
|
||||
ContaBancaria contaBancaria = titulo.getContaBancaria();
|
||||
|
||||
/*
|
||||
* Banco 070
|
||||
*/
|
||||
contaBancaria.setBanco(BancosSuportados.BANCO_DE_BRASILIA.create());
|
||||
|
||||
/*
|
||||
* Código do agência com no máxiom 3 dígitos
|
||||
*/
|
||||
contaBancaria.setAgencia(new Agencia(58));//058
|
||||
|
||||
/*
|
||||
* Código do conta com no máxiom 7 dígitos
|
||||
*/
|
||||
titulo.getContaBancaria().setNumeroDaConta(new NumeroDaConta(2006));//0002006
|
||||
|
||||
/*
|
||||
* Carteira com no máximo 2 dígitos
|
||||
*/
|
||||
contaBancaria.setCarteira(new Carteira(1,TipoDeCobranca.SEM_REGISTRO));
|
||||
|
||||
/*
|
||||
* Nosso número com 6 dígitos
|
||||
*/
|
||||
titulo.setNossoNumero("000001");
|
||||
|
||||
Boleto boleto = Exemplos.crieBoleto(titulo);
|
||||
|
||||
Exemplos.execute(boleto);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,103 @@
|
|||
/*
|
||||
* Copyright 2014 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 21/01/2014 - 16:28:50
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2014 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 21/01/2014 - 16:28:50
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.exemplo.banco.cecred;
|
||||
|
||||
import org.jrimum.bopepo.BancosSuportados;
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.exemplo.Exemplos;
|
||||
import org.jrimum.bopepo.parametro.ParametroCECRED;
|
||||
import org.jrimum.domkee.financeiro.banco.ParametrosBancariosMap;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Carteira;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* Exemplo do boleto para CECRED.
|
||||
*
|
||||
* <p>
|
||||
* Mostra um exemplo funcional que gera um boleto para a implementação padrão do
|
||||
* CECRED.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class BoletoCecredExemplo {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
Titulo titulo = Exemplos.crieTitulo();
|
||||
|
||||
/*
|
||||
* Campos específicos para o CECRED.
|
||||
*/
|
||||
ContaBancaria contaBancaria = titulo.getContaBancaria();
|
||||
|
||||
/*
|
||||
* Banco 085
|
||||
*/
|
||||
contaBancaria.setBanco(BancosSuportados.CECRED.create());
|
||||
|
||||
/*
|
||||
* Número da conta com no máximo 8 dígitos
|
||||
*/
|
||||
int conta = 12345;
|
||||
|
||||
contaBancaria.setNumeroDaConta(new NumeroDaConta(conta));
|
||||
|
||||
/*
|
||||
* Carteira com no máximo 2 dígitos
|
||||
*/
|
||||
contaBancaria.setCarteira(new Carteira(12));
|
||||
|
||||
/*
|
||||
* Númeero sequencial do boleto com no máximo 9 dígitos
|
||||
*/
|
||||
String sequencial = "123456789";
|
||||
|
||||
/*
|
||||
* Nosso número com exatamente 17 dígitos
|
||||
* "numero_da_conta"[8] + "sequencial"[9]
|
||||
*/
|
||||
titulo.setNossoNumero("000"+conta+sequencial);
|
||||
|
||||
/*
|
||||
* Código do convênio com no máxiom 6 dígitos
|
||||
*/
|
||||
titulo.setParametrosBancarios(new ParametrosBancariosMap(ParametroCECRED.CODIGO_DO_CONVENIO, 123));
|
||||
|
||||
Boleto boleto = Exemplos.crieBoleto(titulo);
|
||||
|
||||
Exemplos.execute(boleto);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
/*
|
||||
* Copyright 2013 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 21/03/2013 - 11:25:33
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2013 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 21/03/2013 - 11:25:33
|
||||
*
|
||||
*/
|
||||
package org.jrimum.bopepo.exemplo.banco.cef;
|
||||
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.utilix.Objects;
|
||||
import org.jrimum.vallia.digitoverificador.Modulo;
|
||||
|
||||
/**
|
||||
* Nosso Número referente a COBRANÇA RÁPIDA – 11 POSIÇÕES da CAIXA ECONÔMICA
|
||||
* FEDERAL (CEF)
|
||||
*
|
||||
* <ul>
|
||||
* <li>Campo com 10 posições sempre iniciando com 9;</li>
|
||||
* <li>Utiliza 1 dígito verificador calculado através do módulo 11, com peso 2 a
|
||||
* 9.</li>
|
||||
* </ul>
|
||||
*
|
||||
* <p>
|
||||
* <b>9NNNNNNNNN - D1</b>
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
*/
|
||||
public class NossoNumeroCobrancaRapidaSICOB {
|
||||
|
||||
private long numero;
|
||||
|
||||
private String dv;
|
||||
|
||||
private StringBuilder nossoNumero = new StringBuilder("");
|
||||
|
||||
/**
|
||||
* Para uso interno.
|
||||
*/
|
||||
private NossoNumeroCobrancaRapidaSICOB() {}
|
||||
|
||||
public static NossoNumeroCobrancaRapidaSICOB valueOf(long numero){
|
||||
|
||||
Objects.checkArgument(numero > 0, "Número [ "+numero+" ] inválido!");
|
||||
|
||||
NossoNumeroCobrancaRapidaSICOB nn = new NossoNumeroCobrancaRapidaSICOB();
|
||||
nn.numero = numero;
|
||||
nn.create();
|
||||
|
||||
return nn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Responsável pela lógica de cálculo do dígito verificador informada pelo
|
||||
* Bradesco.
|
||||
* <p>
|
||||
* Para maiores esclarecimentos ver o manual do Bradesco.
|
||||
* </p>
|
||||
*/
|
||||
private void create(){
|
||||
|
||||
nossoNumero.append(9);
|
||||
nossoNumero.append(Fillers.ZERO_LEFT.fill(numero, 9));
|
||||
|
||||
String formula = nossoNumero.toString();
|
||||
|
||||
int restoDivisao = Modulo.calculeMod11(formula,2,9);
|
||||
|
||||
int restoSubtracao = (11 - restoDivisao);
|
||||
|
||||
if(restoDivisao > 9){
|
||||
dv = "0";
|
||||
}else{
|
||||
dv = ""+restoSubtracao;
|
||||
}
|
||||
|
||||
nossoNumero.append(dv);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retorna o digito verificador calculado.
|
||||
*
|
||||
* @return String Digito Verificador
|
||||
*/
|
||||
public String getDv(){
|
||||
return dv;
|
||||
}
|
||||
|
||||
/**
|
||||
* String com o nosso número sem o digito verificador.
|
||||
*
|
||||
* @return nosso número
|
||||
*/
|
||||
public String writeRaw(){
|
||||
return Fillers.ZERO_LEFT.fill(numero, 10);
|
||||
}
|
||||
|
||||
/**
|
||||
* String com o nosso número com o digito verificador.
|
||||
*
|
||||
* @return nosso número
|
||||
*/
|
||||
public String writeFull(){
|
||||
return nossoNumero.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* String com o nosso número formatado com o digito verificador.
|
||||
*
|
||||
* @return nosso número
|
||||
*/
|
||||
public String writeFormated(){
|
||||
return "9"+Fillers.ZERO_LEFT.fill(numero, 9)+"-"+dv;
|
||||
}
|
||||
|
||||
/**
|
||||
* Escreve o nosso número formatado.
|
||||
*
|
||||
* @see java.lang.Object#toString()
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return writeFormated();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* Copyright 2010 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 14/08/2010 - 20:50:14
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2010 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 14/08/2010 - 20:50:14
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Criação de dados para os respectivos bancos na demonstração de geração de boletos.
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
*/
|
||||
package org.jrimum.bopepo.exemplo.banco;
|
|
@ -0,0 +1,88 @@
|
|||
/*
|
||||
* Copyright 2010 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 12/11/2010 - 12:47:22
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2010 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Created at: 12/11/2010 - 12:47:22
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.exemplo.banco.sicredi;
|
||||
|
||||
import org.jrimum.bopepo.BancosSuportados;
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.exemplo.Exemplos;
|
||||
import org.jrimum.bopepo.parametro.ParametroBancoSicredi;
|
||||
import org.jrimum.domkee.financeiro.banco.ParametrosBancariosMap;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Agencia;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Carteira;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.TipoDeCobranca;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Exemplo do boleto para o Banco Sicredi
|
||||
* </p>
|
||||
* <p>
|
||||
* Mostra um exemplo funcional que gera um boleto para a implementação de campo livre
|
||||
* do Banco Sicredi
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class BoletoSicrediExemplo {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
Titulo titulo = Exemplos.crieTitulo();
|
||||
|
||||
/*
|
||||
* Campos específicos para o Banco Sicredi.
|
||||
*/
|
||||
|
||||
ContaBancaria contaBancaria = titulo.getContaBancaria();
|
||||
|
||||
/*
|
||||
* Banco Sicredi 748
|
||||
*/
|
||||
contaBancaria.setBanco(BancosSuportados.BANCO_SICREDI.create());
|
||||
|
||||
contaBancaria.setAgencia(new Agencia(165));
|
||||
contaBancaria.setNumeroDaConta(new NumeroDaConta(623));
|
||||
contaBancaria.setCarteira(new Carteira(1, TipoDeCobranca.SEM_REGISTRO));
|
||||
|
||||
titulo.setNossoNumero("07200003");
|
||||
titulo.setDigitoDoNossoNumero("1");
|
||||
|
||||
titulo.setParametrosBancarios(new ParametrosBancariosMap(ParametroBancoSicredi.POSTO_DA_AGENCIA, 2));
|
||||
|
||||
Boleto boleto = Exemplos.crieBoleto(titulo);
|
||||
|
||||
Exemplos.execute(boleto);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
/*
|
||||
* Copyright 2011 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 17/02/2011 - 12:40:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2011 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 17/02/2011 - 12:40:00
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.exemplo.bancoob;
|
||||
|
||||
import org.jrimum.bopepo.BancosSuportados;
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.exemplo.Exemplos;
|
||||
import org.jrimum.bopepo.parametro.ParametroBancoob;
|
||||
import org.jrimum.domkee.financeiro.banco.ParametrosBancariosMap;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Agencia;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Carteira;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Exemplo do boleto para o Bancoob - Cobrança não registrada.
|
||||
* </p>
|
||||
* <p>
|
||||
* Mostra um exemplo funcional que gera um boleto para a implementação de campo
|
||||
* livre do Bancoob para cobrança não registrada.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class BoletoBancoobCobrancaNaoRegistradaExemplo {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
Titulo titulo = Exemplos.crieTitulo();
|
||||
|
||||
/*
|
||||
* Campos específicos para o Bancoob.
|
||||
*/
|
||||
|
||||
ContaBancaria contaBancaria = titulo.getContaBancaria();
|
||||
|
||||
/*
|
||||
* Banco Sicredi 756
|
||||
*/
|
||||
contaBancaria.setBanco(BancosSuportados.BANCOOB.create());
|
||||
|
||||
contaBancaria.setAgencia(new Agencia(4340));
|
||||
contaBancaria.setNumeroDaConta(new NumeroDaConta(1));
|
||||
contaBancaria.setCarteira(new Carteira(1));
|
||||
|
||||
titulo.setNossoNumero("11000001");
|
||||
titulo.setParametrosBancarios(new ParametrosBancariosMap(ParametroBancoob.NUMERO_DA_PARCELA,Integer.valueOf(0)));
|
||||
|
||||
Boleto boleto = Exemplos.crieBoleto(titulo);
|
||||
|
||||
Exemplos.execute(boleto);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* Copyright 2010 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 14/08/2010 - 20:50:14
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2010 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 14/08/2010 - 20:50:14
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Exemplos demosntrativos envolvendo a geração de boletos.
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
*/
|
||||
package org.jrimum.bopepo.exemplo;
|
Binary file not shown.
After Width: | Height: | Size: 6.5 KiB |
Binary file not shown.
After Width: | Height: | Size: 54 KiB |
Binary file not shown.
After Width: | Height: | Size: 71 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,27 @@
|
|||
<assembly
|
||||
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
|
||||
<id>examples</id>
|
||||
<formats>
|
||||
<format>zip</format>
|
||||
</formats>
|
||||
<fileSets>
|
||||
<fileSet>
|
||||
<directory>src/examples/java</directory>
|
||||
<useDefaultExcludes>true</useDefaultExcludes>
|
||||
<outputDirectory>/</outputDirectory>
|
||||
<includes>
|
||||
<include>**/*.java</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>src/examples/resources</directory>
|
||||
<useDefaultExcludes>true</useDefaultExcludes>
|
||||
<outputDirectory>/resources</outputDirectory>
|
||||
<includes>
|
||||
<include>**/**</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
</assembly>
|
|
@ -0,0 +1,60 @@
|
|||
<assembly
|
||||
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
|
||||
<id>dep-sources</id>
|
||||
<formats>
|
||||
<format>jar</format>
|
||||
</formats>
|
||||
<includeBaseDirectory>false</includeBaseDirectory>
|
||||
<fileSets>
|
||||
<fileSet>
|
||||
<directory>/src/main/java</directory>
|
||||
<useDefaultExcludes>true</useDefaultExcludes>
|
||||
<outputDirectory>/</outputDirectory>
|
||||
<includes>
|
||||
<include>**/*.java</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>/src/main/resources</directory>
|
||||
<useDefaultExcludes>true</useDefaultExcludes>
|
||||
<outputDirectory>/</outputDirectory>
|
||||
<includes>
|
||||
<include>**/**</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>../jrimum-texgit/src/main/java</directory>
|
||||
<useDefaultExcludes>true</useDefaultExcludes>
|
||||
<outputDirectory>/</outputDirectory>
|
||||
<includes>
|
||||
<include>**/*.java</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>../jrimum-utilix/src/main/java</directory>
|
||||
<useDefaultExcludes>true</useDefaultExcludes>
|
||||
<outputDirectory>/</outputDirectory>
|
||||
<includes>
|
||||
<include>**/*.java</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>../jrimum-vallia/src/main/java</directory>
|
||||
<useDefaultExcludes>true</useDefaultExcludes>
|
||||
<outputDirectory>/</outputDirectory>
|
||||
<includes>
|
||||
<include>**/*.java</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
<fileSet>
|
||||
<directory>../jrimum-domkee/src/main/java</directory>
|
||||
<useDefaultExcludes>true</useDefaultExcludes>
|
||||
<outputDirectory>/</outputDirectory>
|
||||
<includes>
|
||||
<include>**/*.java</include>
|
||||
</includes>
|
||||
</fileSet>
|
||||
</fileSets>
|
||||
</assembly>
|
|
@ -0,0 +1,22 @@
|
|||
<assembly
|
||||
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
|
||||
<id>dep</id>
|
||||
<formats>
|
||||
<format>jar</format>
|
||||
</formats>
|
||||
<includeBaseDirectory>false</includeBaseDirectory>
|
||||
<dependencySets>
|
||||
<dependencySet>
|
||||
<outputDirectory>/</outputDirectory>
|
||||
<useProjectArtifact>true</useProjectArtifact>
|
||||
<unpack>true</unpack>
|
||||
<excludes>
|
||||
<exclude>commons-lang:commons-lang</exclude>
|
||||
<exclude>log4j:log4j</exclude>
|
||||
<exclude>com.lowagie:itext</exclude>
|
||||
</excludes>
|
||||
</dependencySet>
|
||||
</dependencySets>
|
||||
</assembly>
|
|
@ -0,0 +1,473 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 19:08:39
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 19:08:39
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.jrimum.domkee.comum.pessoa.id.cprf.CNPJ;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Banco;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.CodigoDeCompensacaoBACEN;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Enumeração dos bancos segundo o <a href="http://www.bcb.gov.br>Banco Central
|
||||
* do Brasil</a> que são suportados por este componente na tarefa de geração de
|
||||
* boletos.
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* Aqui se encontram todos os bancos sob a <a
|
||||
* href="http://www.bcb.gov.br/?RELINST">supervisão da BACEN</a> em
|
||||
* funcionamento no país e que possuem pelo menos uma implementação de
|
||||
* <code>ICampoLivre</code>.
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* A partir de um <code>EnumBanco</code> específico, como o
|
||||
* <code>BANCO_DO_BRASIL</code>, você pode solicitar um nova instância de um
|
||||
* banco representado por <code>IBanco</code> ou utilizar as costantes
|
||||
* enumeradas e não enumeradas como melhor for o caso.
|
||||
* </p>
|
||||
*
|
||||
* <h5>EXEMPLOS:</h5>
|
||||
*
|
||||
* <p>
|
||||
* Para uma nova instância do Banco do Brasil faça: <br />
|
||||
* <br />
|
||||
* <code>
|
||||
* IBanco bancoDoBrasil = EnumBancos.BANCO_DO_BRASIL.newInstance();
|
||||
* </code>
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* Para utilizar somento o código de compensação: <br />
|
||||
* <br />
|
||||
* <code>
|
||||
* EnumBancos.BANCO_DO_BRASIL.getCodigoDeCompensacao();
|
||||
* </code>
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* Para saber se um banco é suportado pelo componete, veja a lista antes
|
||||
* (LinkParaLista) ou faça: <br />
|
||||
* <br />
|
||||
* <code>
|
||||
* EnumBancos.isSuportado(banco.getCodigoDeCompensacao)
|
||||
* </code>
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="mailto:samuelvalerio@gmail.com">Samuel Valério</a>
|
||||
* @author <a href="mailto:lukas.antunes@virtualsistemas.com.br">Lukas
|
||||
* Antunes</a> - Colaborador com o banco Intermedium (077)
|
||||
* @author <a href="mailto:fernandobgi@gmail.com">Fernando Dias</a> -
|
||||
* Colaborador com o banco Rural (453)
|
||||
* @author <a href="mailto:pporto@gmail.com">Paulo Porto</a> -
|
||||
* Colaborador com o Banco do Nordeste do Brasil (004).
|
||||
* @author <a href="mailto:fabianojustino@gmail.com">Fabiano Carrijo</a> -
|
||||
* Colaborador com o Banco Citibank (756).
|
||||
* @author <a href="mailto:contato@douglasramiro.com.br">Douglas Ramiro</a> -
|
||||
* Colaborador com o Banco de Brasília (070).
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.CampoLivre
|
||||
* @see org.jrimum.domkee.financeiro.banco.Banco
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public enum BancosSuportados{
|
||||
|
||||
/*
|
||||
* <=====================================================================>
|
||||
* Observe que toda a enumeração segue a ORDEM dos códigos de compensação.
|
||||
* Caso queira modificar alguma coisa, leve sempre em consideração essa
|
||||
* ORDEM.
|
||||
* <=====================================================================>
|
||||
*/
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o <strong>Banco do Brasil</strong>, código
|
||||
* de compensação <strong><tt>001</tt></strong> <a
|
||||
* href="http://www.bb.com.br">site</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
BANCO_DO_BRASIL("001", "00000000000191", "BANCO DO BRASIL S.A.", "Banco do Brasil - Banco Múltiplo"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o <strong>Banco do Nordeste do Brasil</strong>, código
|
||||
* de compensação <strong><tt>004</tt></strong> (<a href="http://www.bnb.gov.br">site</a>).
|
||||
*
|
||||
* @since 0.2-Helio
|
||||
*/
|
||||
BANCO_DO_NORDESTE_DO_BRASIL("004","07237373000120", "BANCO DO NORDESTE DO BRASIL S.A.","Banco Múltiplo"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o Banestes, <strong>Banco do Estado do Espírito Santo</strong>,
|
||||
* código de compensação <strong><tt>021</tt></strong>
|
||||
* <a href="http://www.banestes.com.br">
|
||||
* site</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
BANCO_DO_ESTADO_DO_ESPIRITO_SANTO("021", "28127603000178", "BANCO DO ESTADO DO ESPIRITO SANTO S.A.", "Banco Múltiplo"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o Santander <strong>Banco Santander
|
||||
* (Brasil) S. A.</strong>, código de compensação <strong><tt>033</tt>
|
||||
* </strong> <a href="http://www.santander.com.br"> site</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
BANCO_SANTANDER("033", "90400888000142", "BANCO SANTANDER (BRASIL) S. A.", "Banco Mútiplo"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o Banrisul, Banco <strong>do Estado do Rio Grande do Sul</strong>,
|
||||
* código de compensação <strong><tt>041</tt></strong> <a href="http://www.banrisul.com.br/">
|
||||
* site</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
BANCO_DO_ESTADO_DO_RIO_GRANDE_DO_SUL("041", "92702067000196", "BANCO DO ESTADO DO RIO GRANDE DO SUL S.A.", "Banco Múltiplo"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o Banco <strong>BRB - Banco de Brasília</strong>,
|
||||
* código de compensação <strong><tt>070</tt></strong> <a
|
||||
* href="http://www.brb.com.br">site</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
BANCO_DE_BRASILIA("070","00000208000100","BRB- Banco de Brasília S.A.","Banco Múltiplo"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o BANISA, Banco <strong>Intermedium</strong>,
|
||||
* código de compensação <strong><tt>077</tt></strong> <a href="http://www.bancointermedium.com.br/">
|
||||
* site</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
BANCO_INTEMEDIUM("077", "00416968000101", "BANCO INTERMEDIUM S.A.", "Banco Múltiplo"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o CECRED, <strong>Cooperativa Central de Crédito Urbano</strong>,
|
||||
* código de compensação <strong><tt>085</tt></strong> <a href="http://www.cecred.coop.br/">
|
||||
* site</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
CECRED("085", "05.463.212/0001-29", "COOPERATIVA CENTRAL DE CRÉDITO URBANO - CECRED", "Cooperativa de Crédito"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o Banco <strong>Caixa Econômica Federal</strong>,
|
||||
* código de compensação <strong><tt>104</tt></strong> <a
|
||||
* href="http://www.caixa.gov.br">site</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
CAIXA_ECONOMICA_FEDERAL("104", "00360305000104", "CAIXA ECONOMICA FEDERAL", "Caixa Econômica Federal"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o Banco <strong>Bradesco</strong>, código
|
||||
* de compensação <strong><tt>237</tt></strong> <a
|
||||
* href="http://www.bradesco.com.br">site</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
BANCO_BRADESCO("237", "60746948000112", "BANCO BRADESCO S.A.", "Banco Múltiplo"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o <strong>Banco Itaú</strong>, código de
|
||||
* compensação <strong><tt>341</tt></strong> <a
|
||||
* href="http://www. .com.br">site</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
BANCO_ITAU("341", "60701190000104", "BANCO ITAÚ S.A.", "Banco Múltiplo"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o <strong>Banco ABN AMRO Real</strong>
|
||||
* (<a href="http://www.bancoreal.com.br">http://www.bancoreal.com.br</a>),
|
||||
* código de compensação <strong><tt>356</tt></strong>. <br/>
|
||||
* <p>
|
||||
* Obs: Os bancos <strong>Sudameris</strong> e <strong>Bandepe</strong>
|
||||
* foram incorporados ao Banco Real, portanto para gerar boletos bancários
|
||||
* dos bancos citados utilize este tipo enumerado.
|
||||
* </p>
|
||||
* @since 0.2
|
||||
*/
|
||||
BANCO_ABN_AMRO_REAL("356", "33066408000115", "BANCO ABN AMRO REAL S.A.", "Banco Múltiplo"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o <strong>Banco Mercantil do Brasil</strong>
|
||||
* (<a href="http://www.mercantildobrasil.com.br">http://www.mercantildobrasil.com.br</a>),
|
||||
* código de compensação <strong><tt>389</tt></strong>.
|
||||
* @since 0.2
|
||||
*/
|
||||
MERCANTIL_DO_BRASIL("389", "17184037000110", "BANCO MERCANTIL DO BRASIL S.A.", "Banco Múltiplo"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o <strong>HSBC</strong>, código de
|
||||
* compensação <strong><tt>399</tt></strong> <a
|
||||
* href="http://www.hsbc.com.br">site</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
HSBC("399", "01701201000189", "HSBC BANK BRASIL S.A.", "Banco Múltiplo"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o <strong>Unibanco</strong>, código de
|
||||
* compensação <strong><tt>409</tt></strong> <a
|
||||
* href="http://www.unibanco.com.br">site</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
UNIBANCO("409", "33700394000140", "UNIBANCO-UNIAO DE BANCOS BRASILEIROS S.A.", "Banco Múltiplo"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o <strong>Unibanco</strong>, código de
|
||||
* compensação <strong><tt>422</tt></strong> <a
|
||||
* href="http://www.safra.com.br/">site</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
BANCO_SAFRA("422", "58160789000128", "BANCO SAFRA S.A.", "Banco Múltiplo"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o <strong>Citibank</strong>, código de
|
||||
* compensação <strong><tt>756</tt></strong> <a
|
||||
* href="http://www.citibank.com.br/">site</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
CITIBANK("745", "33479023000180", "BANCO CITIBANK S.A.", "Banco Múltiplo"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o <strong>Banco Sicredi</strong>, código de
|
||||
* compensação <strong><tt>748</tt></strong> <a
|
||||
* href="http://www.sicredi.com.br/">site</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
BANCO_SICREDI("748", "01181521000155", "BANCO COOPERATIVO SICREDI S.A.", "Banco Mútiplo Cooperativo"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o <strong>Banco Rural</strong>, código de
|
||||
* compensação <strong><tt>453</tt></strong> <a
|
||||
* href="http://www.rural.com.br/">site</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
BANCO_RURAL("453", "58160789000128", "BANCO RURAL S.A.", "Banco Múltiplo"),
|
||||
|
||||
/**
|
||||
* Tipo enumerado que representa o <strong>Bancoob</strong>, código de
|
||||
* compensação <strong><tt>756</tt></strong> <a
|
||||
* href="http://www.bancoob.com.br/">site</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
BANCOOB("756", "02038232000164", "BANCO COOPERATIVO DO BRASIL S.A. - BANCOOB", "Banco Comercial Cooperativo");
|
||||
|
||||
/**
|
||||
* Singleton <code>Map</code> para pesquisa por bancos suportados no
|
||||
* componente.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
public static final Map<String, BancosSuportados> suportados = new HashMap<String, BancosSuportados>(
|
||||
BancosSuportados.values().length);
|
||||
|
||||
static {
|
||||
|
||||
suportados.put(BANCO_DO_BRASIL.codigoDeCompensacaoBACEN, BANCO_DO_BRASIL);
|
||||
suportados.put(BANCO_DO_NORDESTE_DO_BRASIL.codigoDeCompensacaoBACEN, BANCO_DO_NORDESTE_DO_BRASIL);
|
||||
suportados.put(CAIXA_ECONOMICA_FEDERAL.codigoDeCompensacaoBACEN, CAIXA_ECONOMICA_FEDERAL);
|
||||
suportados.put(BANCO_BRADESCO.codigoDeCompensacaoBACEN, BANCO_BRADESCO);
|
||||
suportados.put(BANCO_ABN_AMRO_REAL.codigoDeCompensacaoBACEN, BANCO_ABN_AMRO_REAL);
|
||||
suportados.put(UNIBANCO.codigoDeCompensacaoBACEN, UNIBANCO);
|
||||
suportados.put(HSBC.codigoDeCompensacaoBACEN, HSBC);
|
||||
suportados.put(BANCO_ITAU.codigoDeCompensacaoBACEN, BANCO_ITAU);
|
||||
suportados.put(BANCO_SAFRA.codigoDeCompensacaoBACEN, BANCO_SAFRA);
|
||||
suportados.put(BANCO_DO_ESTADO_DO_RIO_GRANDE_DO_SUL.codigoDeCompensacaoBACEN, BANCO_DO_ESTADO_DO_RIO_GRANDE_DO_SUL);
|
||||
suportados.put(MERCANTIL_DO_BRASIL.codigoDeCompensacaoBACEN, MERCANTIL_DO_BRASIL);
|
||||
suportados.put(BANCO_DO_ESTADO_DO_ESPIRITO_SANTO.codigoDeCompensacaoBACEN, BANCO_DO_ESTADO_DO_ESPIRITO_SANTO);
|
||||
suportados.put(BANCO_RURAL.codigoDeCompensacaoBACEN, BANCO_RURAL);
|
||||
suportados.put(BANCO_SANTANDER.codigoDeCompensacaoBACEN, BANCO_SANTANDER);
|
||||
suportados.put(BANCO_INTEMEDIUM.codigoDeCompensacaoBACEN, BANCO_INTEMEDIUM);
|
||||
suportados.put(BANCO_SICREDI.codigoDeCompensacaoBACEN, BANCO_SICREDI);
|
||||
suportados.put(BANCOOB.codigoDeCompensacaoBACEN, BANCOOB);
|
||||
suportados.put(CITIBANK.codigoDeCompensacaoBACEN, CITIBANK);
|
||||
suportados.put(BANCO_DE_BRASILIA.codigoDeCompensacaoBACEN, BANCO_DE_BRASILIA);
|
||||
suportados.put(CECRED.codigoDeCompensacaoBACEN, CECRED);
|
||||
}
|
||||
|
||||
/**
|
||||
* Códigos de instituições bancárias na compensação - COMPE <a
|
||||
* href="http://www.bcb.gov.br/?CHEQUESCOMPE">BACEN</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private String codigoDeCompensacaoBACEN;
|
||||
|
||||
/**
|
||||
* CNPJ registrado na <a href="http://www.bcb.gov.br/?CHEQUESCOMPE">BACEN</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private String cNPJ;
|
||||
|
||||
/**
|
||||
* Nome da instituição registrado na <a
|
||||
* href="http://www.bcb.gov.br/?CHEQUESCOMPE">BACEN</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private String instituicao;
|
||||
|
||||
/**
|
||||
* Segmento bancário da instituição registrado na <a
|
||||
* href="http://www.bcb.gov.br/?CHEQUESCOMPE">BACEN</a>.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private String segmento;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Construtor naturalmente <code>private</code> responsável por criar uma
|
||||
* única instância para cada banco.
|
||||
* </p>
|
||||
*
|
||||
* @param codigoDeCompensacaoBACEN
|
||||
* @param cNPJ
|
||||
* @param instituicao
|
||||
* @param segmento
|
||||
*
|
||||
* @see java.lang.Enum
|
||||
* @see <a
|
||||
* href="http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html">Enum
|
||||
* Guide</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
*/
|
||||
private BancosSuportados(String codigoDeCompensacaoBACEN, String cnpj,
|
||||
String instituicao, String segmento) {
|
||||
|
||||
this.codigoDeCompensacaoBACEN = codigoDeCompensacaoBACEN;
|
||||
this.cNPJ = cnpj;
|
||||
this.instituicao = instituicao;
|
||||
this.segmento = segmento;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se exite suporte (implementação) de "Campos Livres" para o banco
|
||||
* representado pelo <code>codigoDeCompensacao</code>.
|
||||
* </p>
|
||||
*
|
||||
* @param codigoDeCompensacao
|
||||
* @return verdadeiro se existe implementação para o banco em questão.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
public static boolean isSuportado(String codigoDeCompensacao) {
|
||||
return suportados.containsKey(codigoDeCompensacao);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Cria uma instância para o banco representado pelo tipo enumerado.
|
||||
* </p>
|
||||
* <p>
|
||||
* Cada instância retornada por este método contém:
|
||||
* <ul>
|
||||
* <li><tt>Código de componsação</tt></li>
|
||||
* <li><tt>Nome da instituição</tt></li>
|
||||
* <li><tt>CNPJ da instituição</tt></li>
|
||||
* <li><tt>Segmento da instituição bancária</tt></li>
|
||||
* </ul>
|
||||
* </p>
|
||||
*
|
||||
* @return Uma instância do respectivo banco.
|
||||
*
|
||||
* @see org.jrimum.domkee.financeiro.banco.febraban.Banco#Banco(CodigoDeCompensacaoBACEN, String, CNPJ, String)
|
||||
* @see <a href="http://www.bcb.gov.br/?CHEQUESCOMPE">Bancos supervisionados
|
||||
* pela BACEN</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
public Banco create() {
|
||||
return new Banco(new CodigoDeCompensacaoBACEN(this.codigoDeCompensacaoBACEN), this.instituicao, new CNPJ(
|
||||
this.cNPJ), this.segmento);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the codigoDeCompensacaoBACEN
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
public String getCodigoDeCompensacao() {
|
||||
return codigoDeCompensacaoBACEN;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the cNPJ
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
public String getCNPJ() {
|
||||
return cNPJ;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the instituicao
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
public String getInstituicao() {
|
||||
return instituicao;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the segmento
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
public String getSegmento() {
|
||||
return segmento;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,572 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:04:06
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:04:06
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo;
|
||||
|
||||
import static org.jrimum.utilix.Objects.isNotNull;
|
||||
import static org.jrimum.utilix.Objects.isNull;
|
||||
import static org.jrimum.utilix.text.DateFormat.DDMMYYYY_B;
|
||||
|
||||
import java.awt.Image;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.jrimum.bopepo.campolivre.CampoLivre;
|
||||
import org.jrimum.bopepo.campolivre.CampoLivreFactory;
|
||||
import org.jrimum.bopepo.campolivre.NotSupportedBancoException;
|
||||
import org.jrimum.bopepo.campolivre.NotSupportedCampoLivreException;
|
||||
import org.jrimum.bopepo.view.BoletoCampo;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
import org.jrimum.utilix.Objects;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* É a representação do documento Boleto que por sua vez, representa títulos
|
||||
* em cobrança.
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* A classe encapsula os atributos integrantes e as funcionalidades inerentes
|
||||
* à construção de tal documento.
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="http://www.nordestefomento.com.br">Nordeste Fomento Mercantil</a>
|
||||
* @author <a href="mailto:samuelvalerio@gmail.com">Samuel Valério</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class Boleto {
|
||||
|
||||
private static Logger log = Logger.getLogger(Boleto.class);
|
||||
|
||||
/**
|
||||
* @see Titulo
|
||||
*/
|
||||
private Titulo titulo;
|
||||
|
||||
/**
|
||||
* @see #setDataDeProcessamento(Date)
|
||||
*/
|
||||
private Date dataDeProcessamento;
|
||||
|
||||
/**
|
||||
* @see CodigoDeBarras
|
||||
*/
|
||||
private CodigoDeBarras codigoDeBarras;
|
||||
|
||||
/**
|
||||
* @see LinhaDigitavel
|
||||
*/
|
||||
private LinhaDigitavel linhaDigitavel;
|
||||
|
||||
/**
|
||||
* @see CampoLivre
|
||||
*/
|
||||
private CampoLivre campoLivre;
|
||||
|
||||
/**
|
||||
* @see #setLocalPagamento(String)
|
||||
*/
|
||||
private String localPagamento;
|
||||
|
||||
/**
|
||||
* @see #setInstrucaoAoSacado(String)
|
||||
*/
|
||||
private String instrucaoAoSacado;
|
||||
|
||||
private String instrucao1;
|
||||
private String instrucao2;
|
||||
private String instrucao3;
|
||||
private String instrucao4;
|
||||
private String instrucao5;
|
||||
private String instrucao6;
|
||||
private String instrucao7;
|
||||
private String instrucao8;
|
||||
|
||||
/**
|
||||
* @see #setTextosExtras(Map)
|
||||
*/
|
||||
private Map<String, String> textosExtras;
|
||||
|
||||
/**
|
||||
*<p>
|
||||
* Map com nome do campo e imagem para este campo.
|
||||
*</p>
|
||||
*/
|
||||
private Map<String, Image> imagensExtras;
|
||||
|
||||
/**
|
||||
* Apenas cria um instâcia do boleto com os dados nulos.
|
||||
*/
|
||||
public Boleto() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria um boleto pronto para ser gerado.
|
||||
*
|
||||
* @param titulo
|
||||
* @throws NotSupportedBancoException
|
||||
* @throws NotSupportedCampoLivreException
|
||||
*/
|
||||
public Boleto(Titulo titulo)throws IllegalArgumentException, NotSupportedBancoException, NotSupportedCampoLivreException{
|
||||
|
||||
if(log.isTraceEnabled())
|
||||
log.trace("Instanciando boleto");
|
||||
|
||||
if(log.isDebugEnabled())
|
||||
log.debug("titulo instance : "+titulo);
|
||||
|
||||
if(isNotNull(titulo)){
|
||||
|
||||
this.setTitulo(titulo);
|
||||
this.setCampoLivre(CampoLivreFactory.create(titulo));
|
||||
this.load();
|
||||
|
||||
if(log.isDebugEnabled()){
|
||||
log.debug("boleto instance : " + this);
|
||||
}
|
||||
|
||||
}else {
|
||||
|
||||
if(log.isDebugEnabled()){
|
||||
log.debug("Título Nulo - Valor Não Permitido!");
|
||||
}
|
||||
|
||||
Exceptions.throwIllegalArgumentException("Título nulo!");
|
||||
}
|
||||
|
||||
if(log.isDebugEnabled() || log.isTraceEnabled()){
|
||||
log.trace("Boleto Instanciado : "+this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param titulo
|
||||
* @param campoLivre
|
||||
*/
|
||||
public Boleto(Titulo titulo, CampoLivre campoLivre) {
|
||||
super();
|
||||
|
||||
if(log.isTraceEnabled())
|
||||
log.trace("Instanciando boleto");
|
||||
|
||||
if(log.isDebugEnabled())
|
||||
log.debug("titulo instance : "+titulo);
|
||||
|
||||
if(log.isDebugEnabled())
|
||||
log.debug("campoLivre instance : "+campoLivre);
|
||||
|
||||
if(isNotNull(titulo)){
|
||||
|
||||
this.setTitulo(titulo);
|
||||
this.setCampoLivre(campoLivre);
|
||||
this.load();
|
||||
|
||||
if(log.isDebugEnabled())
|
||||
log.debug("boleto instance : "+this);
|
||||
|
||||
}else {
|
||||
IllegalArgumentException e = new IllegalArgumentException("Título nulo!");
|
||||
log.error("Valor Não Permitido!",e);
|
||||
throw e;
|
||||
}
|
||||
|
||||
if(log.isDebugEnabled() || log.isTraceEnabled()){
|
||||
|
||||
log.trace("Boleto Instanciado : "+this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void load(){
|
||||
|
||||
codigoDeBarras = new CodigoDeBarras(titulo, campoLivre);
|
||||
linhaDigitavel = new LinhaDigitavel(codigoDeBarras);
|
||||
dataDeProcessamento = new Date();
|
||||
|
||||
if(log.isInfoEnabled()){
|
||||
|
||||
log.info("Data de Processamento do Boleto : "+DDMMYYYY_B.format(dataDeProcessamento));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return O campoLivre da isntância.
|
||||
*/
|
||||
public CampoLivre getCampoLivre() {
|
||||
|
||||
return campoLivre;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param campoLivre the campoLivre to set
|
||||
*/
|
||||
private void setCampoLivre(CampoLivre campoLivre) {
|
||||
|
||||
Objects.checkNotNull(campoLivre);
|
||||
|
||||
int length = campoLivre.write().length();
|
||||
|
||||
if (length == CampoLivre.STRING_LENGTH) {
|
||||
this.campoLivre = campoLivre;
|
||||
|
||||
} else {
|
||||
|
||||
if (length > CampoLivre.STRING_LENGTH) {
|
||||
Exceptions.throwIllegalArgumentException("O tamanho da String [" + length + "] é maior que o especificado [" + CampoLivre.STRING_LENGTH + "]!");
|
||||
|
||||
} else {
|
||||
Exceptions.throwIllegalArgumentException("O tamanho da String [" + length + "] é menor que o especificado [" + CampoLivre.STRING_LENGTH + "]!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the titulo
|
||||
*/
|
||||
public Titulo getTitulo() {
|
||||
return titulo;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param titulo the titulo to set
|
||||
*/
|
||||
public void setTitulo(Titulo titulo) {
|
||||
this.titulo = titulo;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see #getDataDeProcessamento()
|
||||
*
|
||||
* @return the dataDeProcessamento
|
||||
*/
|
||||
public Date getDataDeProcessamento() {
|
||||
return dataDeProcessamento;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Data de emissão do boleto de cobrança.
|
||||
* </p>
|
||||
*
|
||||
* @param dataDeProcessamento the dataDeProcessamento to set
|
||||
*/
|
||||
public void setDataDeProcessamento(Date dataDeProcessamento) {
|
||||
this.dataDeProcessamento = dataDeProcessamento;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the codigoDeBarras
|
||||
*/
|
||||
public CodigoDeBarras getCodigoDeBarras() {
|
||||
return codigoDeBarras;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param codigoDeBarras the codigoDeBarras to set
|
||||
*/
|
||||
public void setCodigoDeBarras(CodigoDeBarras codigoDeBarras) {
|
||||
this.codigoDeBarras = codigoDeBarras;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the linhaDigitavel
|
||||
*/
|
||||
public LinhaDigitavel getLinhaDigitavel() {
|
||||
return linhaDigitavel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param linhaDigitavel the linhaDigitavel to set
|
||||
*/
|
||||
public void setLinhaDigitavel(LinhaDigitavel linhaDigitavel) {
|
||||
this.linhaDigitavel = linhaDigitavel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see #setLocalPagamento(String)
|
||||
*
|
||||
* @return String local de pagamento
|
||||
*/
|
||||
public String getLocalPagamento() {
|
||||
return localPagamento;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Possíveis locais para pagamento.
|
||||
* </p>
|
||||
* <p>
|
||||
* Exemplo: <em>Pagável preferencialmente na Rede X ou em qualquer Banco até
|
||||
* o Vencimento.</em>
|
||||
* </p>
|
||||
*
|
||||
* @param localPagamento1 the localPagamento1 to set
|
||||
*/
|
||||
public void setLocalPagamento(String localPagamento1) {
|
||||
this.localPagamento = localPagamento1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see #setInstrucaoAoSacado(String)
|
||||
*
|
||||
* @return the instrucaoAoSacado
|
||||
*/
|
||||
public String getInstrucaoAoSacado() {
|
||||
return instrucaoAoSacado;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Instrução adicional ao sacado, para visualizar o conceito de negócio de sacado consultar o
|
||||
* <a href="http://www.jrimum.org/bopepo">glossário</a>.
|
||||
* </p>
|
||||
*
|
||||
* @param insturcaoAoSacado the insturcaoAoSacado to set
|
||||
*/
|
||||
public void setInstrucaoAoSacado(String insturcaoAoSacado) {
|
||||
this.instrucaoAoSacado = insturcaoAoSacado;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the instrucao1
|
||||
*/
|
||||
public String getInstrucao1() {
|
||||
return instrucao1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param instrucao1 the instrucao1 to set
|
||||
*/
|
||||
public void setInstrucao1(String instrucao1) {
|
||||
this.instrucao1 = instrucao1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the instrucao2
|
||||
*/
|
||||
public String getInstrucao2() {
|
||||
return instrucao2;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param instrucao2 the instrucao2 to set
|
||||
*/
|
||||
public void setInstrucao2(String instrucao2) {
|
||||
this.instrucao2 = instrucao2;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the instrucao3
|
||||
*/
|
||||
public String getInstrucao3() {
|
||||
return instrucao3;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param instrucao3 the instrucao3 to set
|
||||
*/
|
||||
public void setInstrucao3(String instrucao3) {
|
||||
this.instrucao3 = instrucao3;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the instrucao4
|
||||
*/
|
||||
public String getInstrucao4() {
|
||||
return instrucao4;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param instrucao4 the instrucao4 to set
|
||||
*/
|
||||
public void setInstrucao4(String instrucao4) {
|
||||
this.instrucao4 = instrucao4;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the instrucao5
|
||||
*/
|
||||
public String getInstrucao5() {
|
||||
return instrucao5;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param instrucao5 the instrucao5 to set
|
||||
*/
|
||||
public void setInstrucao5(String instrucao5) {
|
||||
this.instrucao5 = instrucao5;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the instrucao6
|
||||
*/
|
||||
public String getInstrucao6() {
|
||||
return instrucao6;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param instrucao6 the instrucao6 to set
|
||||
*/
|
||||
public void setInstrucao6(String instrucao6) {
|
||||
this.instrucao6 = instrucao6;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the instrucao7
|
||||
*/
|
||||
public String getInstrucao7() {
|
||||
return instrucao7;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param instrucao7 the instrucao7 to set
|
||||
*/
|
||||
public void setInstrucao7(String instrucao7) {
|
||||
this.instrucao7 = instrucao7;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the instrucao8
|
||||
*/
|
||||
public String getInstrucao8() {
|
||||
return instrucao8;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param instrucao8 the instrucao8 to set
|
||||
*/
|
||||
public void setInstrucao8(String instrucao8) {
|
||||
this.instrucao8 = instrucao8;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sobrescreve um campo padrão do boleto.
|
||||
*
|
||||
* @param campo
|
||||
* Nome do campo no template
|
||||
* @param conteudo
|
||||
* Texto a ser adicionado ao campo no template
|
||||
*/
|
||||
public void sobrescrevaCampo(BoletoCampo campo, String conteudo){
|
||||
addTextosExtras(campo.name(), conteudo);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return Todas os campos de texto usados como extra ou sobrescrita no
|
||||
* template.
|
||||
*/
|
||||
public Map<String, String> getTextosExtras() {
|
||||
|
||||
return this.textosExtras;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Substitui todos os campos extra da instância caso exista.
|
||||
*
|
||||
* @param textosExtras
|
||||
* Campos atribuídos
|
||||
*/
|
||||
public void setTextosExtras(Map<String,String> textosExtras) {
|
||||
|
||||
this.textosExtras = textosExtras;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adiciona um campo de texto no boleto caso o campo informado tenha o mesmo
|
||||
* nome no template da instância.
|
||||
*
|
||||
* @param campo
|
||||
* Nome do campo no template
|
||||
* @param conteudo
|
||||
* Texto a ser adicionado ao campo no template
|
||||
*/
|
||||
public void addTextosExtras(String campo, String conteudo) {
|
||||
|
||||
if(isNull(getTextosExtras())) {
|
||||
setTextosExtras(new HashMap<String, String>());
|
||||
}
|
||||
|
||||
getTextosExtras().put(campo, conteudo);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Todas os campos de imagem usados como extra ou sobrescrita no
|
||||
* template.
|
||||
*/
|
||||
public Map<String, Image> getImagensExtras() {
|
||||
return this.imagensExtras;
|
||||
}
|
||||
|
||||
/**
|
||||
* Substitui todos os campos extra da instância caso exista.
|
||||
*
|
||||
* @param imagensExtras
|
||||
* Campos atribuídos
|
||||
*/
|
||||
public void setImagensExtras(Map<String,Image> imagensExtras) {
|
||||
this.imagensExtras = imagensExtras;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adiciona um campo de imagem no boleto caso o campo informado tenha o
|
||||
* mesmo nome no template da instância.
|
||||
*
|
||||
* @param campo
|
||||
* Nome do campo no template
|
||||
* @param conteudo
|
||||
* Imagem a ser adicionada ao campo no template
|
||||
*/
|
||||
public void addImagensExtras(String campo, Image conteudo) {
|
||||
|
||||
if(isNull(getImagensExtras())) {
|
||||
setImagensExtras(new HashMap<String, Image>());
|
||||
}
|
||||
|
||||
getImagensExtras().put(campo, conteudo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return Objects.toString(this);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
|
||||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 21/04/2008 - 23:35:28
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 21/04/2008 - 23:35:28
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo;
|
||||
|
||||
/**
|
||||
*
|
||||
* <p>
|
||||
* Qualquer exceção gerada durante a geração de um Boleto gera uma <code>BoletoExceptiton</code>. Centraliza e localiza os problemas relativos a geração de um boleto.
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
*
|
||||
* @see org.jrimum.bopepo.BoletoException
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
|
||||
public class BoletoException extends RuntimeException {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -3874521668322644183L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public BoletoException() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param message
|
||||
* @param cause
|
||||
*/
|
||||
public BoletoException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param message
|
||||
*/
|
||||
public BoletoException(String message) {
|
||||
super(message);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param cause
|
||||
*/
|
||||
public BoletoException(Throwable cause) {
|
||||
super(cause);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,893 @@
|
|||
/*
|
||||
* Copyright 2010 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 27/01/2010 - 00:53:43
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2010 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 27/01/2010 - 00:53:43
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
package org.jrimum.bopepo;
|
||||
|
||||
import static org.apache.commons.lang.StringUtils.EMPTY;
|
||||
import static org.apache.commons.lang.StringUtils.isBlank;
|
||||
import static org.apache.commons.lang.StringUtils.isNotBlank;
|
||||
import static org.apache.commons.lang.StringUtils.trim;
|
||||
import static org.jrimum.utilix.Objects.checkNotNull;
|
||||
import static org.jrimum.utilix.text.Strings.WHITE_SPACE;
|
||||
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
import org.jrimum.vallia.digitoverificador.BoletoLinhaDigitavelDV;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Utilitário para recuperar informações de strings de códigos de barras e
|
||||
* linhas digitáveis de boletos.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public final class BoletoUtil {
|
||||
|
||||
/*
|
||||
* Regras REGEX.
|
||||
*/
|
||||
private static final String CODIGO_DE_BARRAS_REGEX = "\\d{44}";
|
||||
private static final String LINHA_DIGITAVEL_NUMERICA_REGEX = "\\d{47}";
|
||||
private static final String LINHA_DIGITAVEL_FORMATADA_REGEX = "\\d{5}\\.\\d{5} \\d{5}\\.\\d{6} \\d{5}\\.\\d{6} \\d{1} \\d{14}";
|
||||
/*
|
||||
* Mensagens.
|
||||
*/
|
||||
private static final String MSG_CODIGO_DE_BARRAS = "Código de barras inválido!";
|
||||
private static final String MSG_LINHA_INVALIDA = "Linha digitável inválida!";
|
||||
private static final String MSG_STR_VAZIA = "String vazia [ \"%s\" ] tamanho [ %d ].";
|
||||
private static final String MSG_NAO_FORMATADA = "String formatada [ \"%s\" ] de tamanho [ %d ] está fora do padrão [ \"ddddd.ddddd ddddd.dddddd ddddd.dddddd d dddddddddddddd\" ] tamanho = 54.";
|
||||
private static final String MSG_STR_NUMERICA = "String numérica [ \"%s\" ] de tamanho [ %d ] está fora do padrão [ \"ddddddddddddddddddddddddddddddddddddddddddddddd\" ] tamanho = 47.";
|
||||
|
||||
/**
|
||||
* Utility class pattern: classe não instanciável
|
||||
*
|
||||
* @throws AssertionError
|
||||
* caso haja alguma tentativa de utilização deste construtor.
|
||||
*/
|
||||
private BoletoUtil(){
|
||||
|
||||
Exceptions.throwIllegalStateException("Instanciação não permitida!");
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Retorna o campo livre de uma dada linha digitável.
|
||||
* </p>
|
||||
*
|
||||
* @see #checkFormatoLinhaDigitavelFormatada(String)
|
||||
*
|
||||
* @param linhaDigitavel
|
||||
* string no formato FEBRABAN
|
||||
* @return código do banco em string
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws LinhaDigitavelException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String getCampoLivreDaLinhaDigitavelFormatada(
|
||||
String linhaDigitavel) throws
|
||||
IllegalArgumentException, LinhaDigitavelException {
|
||||
|
||||
checkFormatoLinhaDigitavelFormatada(linhaDigitavel);
|
||||
|
||||
final String linhaNumerica = linhaDigitavelFormatadaEmNumerica(linhaDigitavel);
|
||||
|
||||
return new StringBuilder().append(linhaNumerica.substring(4, 9))
|
||||
.append(linhaNumerica.substring(10, 20)).append(
|
||||
linhaNumerica.substring(21, 31)).toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Retorna o valor do título de uma dada linha digitável.
|
||||
* </p>
|
||||
*
|
||||
* @see #checkFormatoLinhaDigitavelFormatada(String)
|
||||
*
|
||||
* @param linhaDigitavel
|
||||
* string no formato FEBRABAN
|
||||
* @return código do banco em string
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws LinhaDigitavelException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String getValorDoTituloDaLinhaDigitavelFormatada(
|
||||
String linhaDigitavel) throws
|
||||
IllegalArgumentException, LinhaDigitavelException {
|
||||
|
||||
checkFormatoLinhaDigitavelFormatada(linhaDigitavel);
|
||||
|
||||
return linhaDigitavelFormatadaEmNumerica(linhaDigitavel).substring(37,
|
||||
47);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Retorna o fator de vencimento de uma dada linha digitável.
|
||||
* </p>
|
||||
*
|
||||
* @see #checkFormatoLinhaDigitavelFormatada(String)
|
||||
*
|
||||
* @param linhaDigitavel
|
||||
* string no formato FEBRABAN
|
||||
* @return código do banco em string
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws LinhaDigitavelException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String getFatorDeVencimentoDaLinhaDigitavelFormatada(
|
||||
String linhaDigitavel) throws
|
||||
IllegalArgumentException, LinhaDigitavelException {
|
||||
|
||||
checkFormatoLinhaDigitavelFormatada(linhaDigitavel);
|
||||
|
||||
return linhaDigitavelFormatadaEmNumerica(linhaDigitavel).substring(33,
|
||||
37);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Retorna o dígito verificador geral de uma dada linha digitável.
|
||||
* </p>
|
||||
*
|
||||
* @see #checkFormatoLinhaDigitavelFormatada(String)
|
||||
*
|
||||
* @param linhaDigitavel
|
||||
* string no formato FEBRABAN
|
||||
* @return código do banco em string
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws LinhaDigitavelException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String getDigitoVerificadorGeralDaLinhaDigitavelFormatada(
|
||||
String linhaDigitavel) throws
|
||||
IllegalArgumentException, LinhaDigitavelException {
|
||||
|
||||
checkFormatoLinhaDigitavelFormatada(linhaDigitavel);
|
||||
|
||||
return linhaDigitavelFormatadaEmNumerica(linhaDigitavel).substring(32,
|
||||
33);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Retorna o código da moeda de uma dada linha digitável.
|
||||
* </p>
|
||||
*
|
||||
* @see #checkFormatoLinhaDigitavelFormatada(String)
|
||||
*
|
||||
* @param linhaDigitavel
|
||||
* string no formato FEBRABAN
|
||||
* @return código do banco em string
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws LinhaDigitavelException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String getCodigoDaMoedaDaLinhaDigitavelFormatada(
|
||||
String linhaDigitavel) throws
|
||||
IllegalArgumentException, LinhaDigitavelException {
|
||||
|
||||
checkFormatoLinhaDigitavelFormatada(linhaDigitavel);
|
||||
|
||||
return linhaDigitavelFormatadaEmNumerica(linhaDigitavel)
|
||||
.substring(3, 4);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Retorna o código do banco de uma dada linha digitável.
|
||||
* </p>
|
||||
*
|
||||
* @see #checkFormatoLinhaDigitavelFormatada(String)
|
||||
*
|
||||
* @param linhaDigitavel
|
||||
* string no formato FEBRABAN
|
||||
* @return código do banco em string
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws LinhaDigitavelException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String getCodigoDoBancoDaLinhaDigitavelFormatada(
|
||||
String linhaDigitavel) throws
|
||||
IllegalArgumentException, LinhaDigitavelException {
|
||||
|
||||
checkFormatoLinhaDigitavelFormatada(linhaDigitavel);
|
||||
|
||||
return linhaDigitavelFormatadaEmNumerica(linhaDigitavel)
|
||||
.substring(0, 3);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Retorna o campo livre de um dado código de barras.
|
||||
* </p>
|
||||
*
|
||||
* @see #checkFormatoCodigoDeBarras(String)
|
||||
*
|
||||
* @param codigoDeBarras
|
||||
* string contendo somente números
|
||||
* @return código do banco em string
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws CodigoDeBarrasException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String getCampoLivreDoCodigoDeBarras(
|
||||
String codigoDeBarras) throws
|
||||
IllegalArgumentException, CodigoDeBarrasException {
|
||||
|
||||
checkFormatoCodigoDeBarras(codigoDeBarras);
|
||||
|
||||
return trim(codigoDeBarras).substring(19, 44);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Retorna o valor do título de um dado código de barras.
|
||||
* </p>
|
||||
*
|
||||
* @see #checkFormatoCodigoDeBarras(String)
|
||||
*
|
||||
* @param codigoDeBarras
|
||||
* string contendo somente números
|
||||
* @return código do banco em string
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws CodigoDeBarrasException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String getValorDoTituloDoCodigoDeBarras(
|
||||
String codigoDeBarras) throws
|
||||
IllegalArgumentException, CodigoDeBarrasException {
|
||||
|
||||
checkFormatoCodigoDeBarras(codigoDeBarras);
|
||||
|
||||
return trim(codigoDeBarras).substring(9, 19);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Retorna o fator de vencimento de um dado código de barras.
|
||||
* </p>
|
||||
*
|
||||
* @see #checkFormatoCodigoDeBarras(String)
|
||||
*
|
||||
* @param codigoDeBarras
|
||||
* string contendo somente números
|
||||
* @return código do banco em string
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws CodigoDeBarrasException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String getFatorDeVencimentoDoCodigoDeBarras(
|
||||
String codigoDeBarras) throws
|
||||
IllegalArgumentException, CodigoDeBarrasException {
|
||||
|
||||
checkFormatoCodigoDeBarras(codigoDeBarras);
|
||||
|
||||
return trim(codigoDeBarras).substring(5, 9);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Retorna o dígito verificador de um dado código de barras.
|
||||
* </p>
|
||||
*
|
||||
* @see #checkFormatoCodigoDeBarras(String)
|
||||
*
|
||||
* @param codigoDeBarras
|
||||
* string contendo somente números
|
||||
* @return código do banco em string
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws CodigoDeBarrasException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String getDigitoVerificadorGeralDoCodigoDeBarras(
|
||||
String codigoDeBarras) throws
|
||||
IllegalArgumentException, CodigoDeBarrasException {
|
||||
|
||||
checkFormatoCodigoDeBarras(codigoDeBarras);
|
||||
|
||||
return trim(codigoDeBarras).substring(4, 5);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Retorna o código da moeda de um dado código de barras.
|
||||
* </p>
|
||||
*
|
||||
* @see #checkFormatoCodigoDeBarras(String)
|
||||
*
|
||||
* @param codigoDeBarras
|
||||
* string contendo somente números
|
||||
* @return código do banco em string
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws CodigoDeBarrasException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String getCodigoDaMoedaDoCodigoDeBarras(
|
||||
String codigoDeBarras) throws
|
||||
IllegalArgumentException, CodigoDeBarrasException {
|
||||
|
||||
checkFormatoCodigoDeBarras(codigoDeBarras);
|
||||
|
||||
return trim(codigoDeBarras).substring(3, 4);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Retorna o código do banco de um dado código de barras.
|
||||
* </p>
|
||||
*
|
||||
* @see #checkFormatoCodigoDeBarras(String)
|
||||
*
|
||||
* @param codigoDeBarras
|
||||
* string contendo somente números
|
||||
* @return código do banco em string
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws CodigoDeBarrasException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String getCodigoDoBancoDoCodigoDeBarras(
|
||||
String codigoDeBarras) throws
|
||||
IllegalArgumentException, CodigoDeBarrasException {
|
||||
|
||||
checkFormatoCodigoDeBarras(codigoDeBarras);
|
||||
|
||||
return trim(codigoDeBarras).substring(0, 3);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Transforma um código de barras em uma linha digitável no formato
|
||||
* FEBRABAN.
|
||||
* </p>
|
||||
* <p>
|
||||
* "<strong>dddddddddddddddddddddddddddddddddddddddddddd</strong>" <br />
|
||||
* <b>⇒</b> <br />
|
||||
* "<strong>ddddd.ddddd ddddd.dddddd ddddd.dddddd d dddddddddddddd</strong>"
|
||||
* </p>
|
||||
*
|
||||
* @see #checkFormatoCodigoDeBarras(String)
|
||||
*
|
||||
* @param codigoDeBarras
|
||||
* string contendo somente números
|
||||
* @return linha digitável contendo somente números
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws CodigoDeBarrasException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String codigoDeBarrasEmLinhaDigitavelFormatada(
|
||||
String codigoDeBarras) throws
|
||||
IllegalArgumentException, CodigoDeBarrasException {
|
||||
|
||||
return linhaDigitavelNumericaEmFormatada(codigoDeBarrasEmLinhaDigitavelNumerica(codigoDeBarras));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Transforma um código de barras em uma linha digitável numérica.
|
||||
* </p>
|
||||
* <p>
|
||||
* "<strong>dddddddddddddddddddddddddddddddddddddddddddd</strong>" <br />
|
||||
* <b>⇒</b> <br />
|
||||
* "<strong>ddddddddddddddddddddddddddddddddddddddddddddddd</strong>"
|
||||
* </p>
|
||||
*
|
||||
* @see #checkFormatoCodigoDeBarras(String)
|
||||
*
|
||||
* @param codigoDeBarras
|
||||
* string contendo somente números
|
||||
* @return linha digitável contendo somente números
|
||||
*
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws CodigoDeBarrasException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String codigoDeBarrasEmLinhaDigitavelNumerica(
|
||||
String codigoDeBarras) throws
|
||||
IllegalArgumentException, CodigoDeBarrasException {
|
||||
|
||||
checkFormatoCodigoDeBarras(codigoDeBarras);
|
||||
|
||||
final BoletoLinhaDigitavelDV calculadorDV = new BoletoLinhaDigitavelDV();
|
||||
|
||||
final StringBuilder linhaDigitavel = new StringBuilder();
|
||||
|
||||
final String c = trim(codigoDeBarras);
|
||||
|
||||
// campo1
|
||||
// banco
|
||||
linhaDigitavel.append(c.substring(0, 3));
|
||||
// moeda
|
||||
linhaDigitavel.append(c.substring(3, 4));
|
||||
linhaDigitavel.append(c.substring(19, 24));
|
||||
linhaDigitavel.append(calculadorDV.calcule(linhaDigitavel.toString()));
|
||||
|
||||
// campo2
|
||||
linhaDigitavel.append(c.substring(24, 34));
|
||||
linhaDigitavel.append(calculadorDV.calcule(c.substring(24, 34)));
|
||||
|
||||
// campo3
|
||||
linhaDigitavel.append(c.substring(34, 44));
|
||||
linhaDigitavel.append(calculadorDV.calcule(c.substring(34, 44)));
|
||||
|
||||
// campo4=DV_Geral
|
||||
linhaDigitavel.append(c.substring(4, 5));
|
||||
|
||||
// campo5
|
||||
linhaDigitavel.append(c.substring(5, 19));
|
||||
|
||||
return linhaDigitavel.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Transforma uma linha digitável no formato FEBRABAN em um código de
|
||||
* barras.
|
||||
* </p>
|
||||
* <p>
|
||||
* "<strong>ddddd.ddddd ddddd.dddddd ddddd.dddddd d dddddddddddddd</strong>"
|
||||
* <br />
|
||||
* <b>⇒</b> <br />
|
||||
* "<strong>dddddddddddddddddddddddddddddddddddddddddddd</strong>"
|
||||
* </p>
|
||||
*
|
||||
* @see #checkExistsLinhaDigitavel(String)
|
||||
* @see #checkFormatoLinhaDigitavelFormatada(String)
|
||||
*
|
||||
* @param linhaDigitavel
|
||||
* string no formato FEBRABAN
|
||||
* @return linha digitável contendo somente números
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws LinhaDigitavelException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String linhaDigitavelFormatadaEmCodigoDeBarras(
|
||||
String linhaDigitavel) throws
|
||||
IllegalArgumentException, LinhaDigitavelException {
|
||||
|
||||
return linhaDigitavelNumericaEmCodigoDeBarras(linhaDigitavelFormatadaEmNumerica(linhaDigitavel));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Transforma uma linha digitável não formatada em um código de barras.
|
||||
* </p>
|
||||
* <p>
|
||||
* "<strong>ddddddddddddddddddddddddddddddddddddddddddddddd</strong>" <br />
|
||||
* <b>⇒</b> <br />
|
||||
* "<strong>dddddddddddddddddddddddddddddddddddddddddddd</strong>"
|
||||
* </p>
|
||||
*
|
||||
* @see #checkExistsLinhaDigitavel(String)
|
||||
* @see #checkFormatoLinhaDigitavelFormatada(String)
|
||||
*
|
||||
* @param linhaDigitavel
|
||||
* string no formato FEBRABAN
|
||||
* @return linha digitável contendo somente números
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws LinhaDigitavelException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String linhaDigitavelNumericaEmCodigoDeBarras(
|
||||
String linhaDigitavel) throws
|
||||
IllegalArgumentException, LinhaDigitavelException {
|
||||
|
||||
checkFormatoLinhaDigitavelNumerica(linhaDigitavel);
|
||||
|
||||
final StringBuilder codigoDeBarras = new StringBuilder();
|
||||
|
||||
final String l = trim(linhaDigitavel);
|
||||
|
||||
// banco
|
||||
codigoDeBarras.append(l.substring(0, 3));
|
||||
// moeda
|
||||
codigoDeBarras.append(l.substring(3, 4));
|
||||
|
||||
codigoDeBarras.append(l.substring(32, 33));
|
||||
codigoDeBarras.append(l.substring(33, 47));
|
||||
codigoDeBarras.append(l.substring(4, 9));
|
||||
codigoDeBarras.append(l.substring(10, 20));
|
||||
codigoDeBarras.append(l.substring(21, 31));
|
||||
|
||||
return codigoDeBarras.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Remove formatação e espaços de uma linha digitável no formato FEBRABAN:
|
||||
* </p>
|
||||
* <p>
|
||||
* "<strong>ddddd.ddddd ddddd.dddddd ddddd.dddddd d dddddddddddddd</strong>"
|
||||
* <br />
|
||||
* <b>⇒</b> <br />
|
||||
* "<strong>ddddddddddddddddddddddddddddddddddddddddddddddd</strong>"
|
||||
* </p>
|
||||
*
|
||||
* @see #checkExistsLinhaDigitavel(String)
|
||||
* @see #checkFormatoLinhaDigitavelFormatada(String)
|
||||
*
|
||||
* @param linhaDigitavel
|
||||
* string no formato FEBRABAN
|
||||
* @return linha digitável contendo somente números
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws LinhaDigitavelException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String linhaDigitavelFormatadaEmNumerica(
|
||||
String linhaDigitavel) throws IllegalArgumentException,
|
||||
LinhaDigitavelException {
|
||||
|
||||
checkFormatoLinhaDigitavelFormatada(linhaDigitavel);
|
||||
|
||||
return linhaDigitavel.replaceAll(WHITE_SPACE, EMPTY).replaceAll("\\.",
|
||||
EMPTY);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Transforma linha digitável númerica em FEBRABAN:
|
||||
* </p>
|
||||
* <p>
|
||||
* "<strong>ddddddddddddddddddddddddddddddddddddddddddddddd</strong>" <br />
|
||||
* <b>⇒</b> <br />
|
||||
* "<strong>ddddd.ddddd ddddd.dddddd ddddd.dddddd d dddddddddddddd</strong>"
|
||||
* </p>
|
||||
*
|
||||
* @see #checkExistsLinhaDigitavel(String)
|
||||
* @see #checkFormatoLinhaDigitavelNumerica(String)
|
||||
*
|
||||
* @param linhaDigitavel
|
||||
* string no formato FEBRABAN
|
||||
* @return linha digitável contendo somente números
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws LinhaDigitavelException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static String linhaDigitavelNumericaEmFormatada(
|
||||
String linhaDigitavel) throws
|
||||
IllegalArgumentException, LinhaDigitavelException {
|
||||
|
||||
checkFormatoLinhaDigitavelNumerica(linhaDigitavel);
|
||||
|
||||
final StringBuilder linhaFormatada = new StringBuilder();
|
||||
|
||||
final String l = trim(linhaDigitavel);
|
||||
|
||||
linhaFormatada.append(l.substring(0, 5));
|
||||
linhaFormatada.append(".");
|
||||
linhaFormatada.append(l.substring(5, 10));
|
||||
linhaFormatada.append(WHITE_SPACE);
|
||||
linhaFormatada.append(l.substring(10, 15));
|
||||
linhaFormatada.append(".");
|
||||
linhaFormatada.append(l.substring(15, 21));
|
||||
linhaFormatada.append(WHITE_SPACE);
|
||||
linhaFormatada.append(l.substring(21, 26));
|
||||
linhaFormatada.append(".");
|
||||
linhaFormatada.append(l.substring(26, 32));
|
||||
linhaFormatada.append(WHITE_SPACE);
|
||||
linhaFormatada.append(l.substring(32, 33));
|
||||
linhaFormatada.append(WHITE_SPACE);
|
||||
linhaFormatada.append(l.substring(33));
|
||||
|
||||
return linhaFormatada.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Informa se um dado código de barras é válido ou não.
|
||||
* </p>
|
||||
*
|
||||
* @param codigoDeBarras
|
||||
* @return true = valida
|
||||
*/
|
||||
public static boolean isCodigoDeBarrasValido(String codigoDeBarras) {
|
||||
|
||||
if (isNotBlank(codigoDeBarras)) {
|
||||
|
||||
return codigoDeBarras.trim().matches(CODIGO_DE_BARRAS_REGEX);
|
||||
} else {
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Informa se uma dada linha digitável formatada é válida ou não.
|
||||
* </p>
|
||||
*
|
||||
* @param linhaDigitavel
|
||||
* @return true = valida
|
||||
*/
|
||||
public static boolean isLinhaDigitavelFormatadaValida(
|
||||
String linhaDigitavel) {
|
||||
|
||||
if (isNotBlank(linhaDigitavel)) {
|
||||
|
||||
return linhaDigitavel.trim().matches(
|
||||
LINHA_DIGITAVEL_FORMATADA_REGEX);
|
||||
} else {
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Informa se uma dada linha digitável é válida ou não.
|
||||
* </p>
|
||||
*
|
||||
* @param linhaDigitavel
|
||||
* @return true = valida
|
||||
*/
|
||||
public static boolean isLinhaDigitavelNumericaValida(
|
||||
String linhaDigitavel) {
|
||||
|
||||
if (isNotBlank(linhaDigitavel)) {
|
||||
|
||||
return linhaDigitavel.trim()
|
||||
.matches(LINHA_DIGITAVEL_NUMERICA_REGEX);
|
||||
} else {
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se a linha digitável <strong>não é nula</strong>, <strong>não é
|
||||
* vazia</strong> e <strong>é numérica</strong>, obedecendo o seguinte
|
||||
* FEBRABAN:
|
||||
* </p>
|
||||
* <p>
|
||||
* "<strong>ddddd.ddddd ddddd.dddddd ddddd.dddddd d dddddddddddddd</strong>"
|
||||
* </p>
|
||||
* <p>
|
||||
* Onde o número de dígitos é igual a 54 e o número de espaços é igual a 4.
|
||||
* </p>
|
||||
* <p>
|
||||
* <ul>
|
||||
* <li>Caso a string seja nula, lança uma <code>IllegalArgumentException</code>;
|
||||
* </li>
|
||||
* <li>Caso seja vazia, lança uma <code>IllegalArgumentException</code>;</li>
|
||||
* <li>Caso não esteja no formato especificado, lança uma
|
||||
* <code>LinhaDigitavelException</code>.</li>
|
||||
* </ul>
|
||||
* </p>
|
||||
*
|
||||
* @see #checkExistsLinhaDigitavel(String)
|
||||
*
|
||||
* @param linhaDigitavel
|
||||
* string no formato FEBRABAN
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws LinhaDigitavelException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static void checkFormatoLinhaDigitavelFormatada(
|
||||
String linhaDigitavel) throws
|
||||
IllegalArgumentException, LinhaDigitavelException {
|
||||
|
||||
checkExistsLinhaDigitavel(linhaDigitavel);
|
||||
|
||||
if (!linhaDigitavel.contains(".")) {
|
||||
throw new LinhaDigitavelException(MSG_LINHA_INVALIDA
|
||||
+ " "
|
||||
+ String.format(MSG_NAO_FORMATADA, linhaDigitavel,
|
||||
linhaDigitavel.length())
|
||||
+ " A linha digitável formatada deve conter pontos!");
|
||||
}
|
||||
|
||||
if (!linhaDigitavel.trim().contains(" ")) {
|
||||
throw new LinhaDigitavelException(MSG_LINHA_INVALIDA
|
||||
+ " "
|
||||
+ String.format(MSG_NAO_FORMATADA, linhaDigitavel,
|
||||
linhaDigitavel.length())
|
||||
+ " A linha digitável formatada deve conter espaços!");
|
||||
}
|
||||
|
||||
if (!isLinhaDigitavelFormatadaValida(linhaDigitavel)) {
|
||||
throw new LinhaDigitavelException(MSG_LINHA_INVALIDA
|
||||
+ " "
|
||||
+ String.format(MSG_NAO_FORMATADA, linhaDigitavel,
|
||||
linhaDigitavel.length()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se a linha digitável <strong>não é nula</strong>, <strong>não é
|
||||
* vazia</strong> e <strong>é numérica</strong>, obedecendo o seguinte
|
||||
* formato:
|
||||
*</p>
|
||||
* <p>
|
||||
* "<strong>ddddddddddddddddddddddddddddddddddddddddddddddd</strong>"
|
||||
* </p>
|
||||
* <p>
|
||||
* Onde o número de dígitos é igual a 47.
|
||||
* </p>
|
||||
* <p>
|
||||
* <ul>
|
||||
* <li>Caso a string seja nula, lança uma <code>IllegalArgumentException</code>;
|
||||
* </li>
|
||||
* <li>Caso seja vazia, lança uma <code>IllegalArgumentException</code>;</li>
|
||||
* <li>Caso não esteja no formato especificado, lança uma
|
||||
* <code>LinhaDigitavelException</code>.</li>
|
||||
* </ul>
|
||||
* </p>
|
||||
*
|
||||
* @see #checkExistsLinhaDigitavel(String)
|
||||
*
|
||||
* @param linhaDigitavel
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws LinhaDigitavelException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static void checkFormatoLinhaDigitavelNumerica(
|
||||
String linhaDigitavel) throws
|
||||
IllegalArgumentException, LinhaDigitavelException {
|
||||
|
||||
checkExistsLinhaDigitavel(linhaDigitavel);
|
||||
|
||||
if (!isLinhaDigitavelNumericaValida(linhaDigitavel)) {
|
||||
throw new LinhaDigitavelException(MSG_LINHA_INVALIDA
|
||||
+ " "
|
||||
+ String.format(MSG_STR_NUMERICA, linhaDigitavel,
|
||||
linhaDigitavel.length())
|
||||
+ " A linha deve conter apenas 47 dígitos númericos [0-9]!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o código de barras <strong>não é nulo</strong>, <strong>não é
|
||||
* vazio</strong> e <strong>é numérico</strong>, obedecendo o seguinte
|
||||
* formato:
|
||||
*</p>
|
||||
* <p>
|
||||
* "<strong>dddddddddddddddddddddddddddddddddddddddddddd</strong>"
|
||||
* </p>
|
||||
* <p>
|
||||
* Onde o número de dígitos é igual a 44.
|
||||
* </p>
|
||||
* <p>
|
||||
* <ul>
|
||||
* <li>Caso a string seja nula, lança uma <code>IllegalArgumentException</code>;
|
||||
* </li>
|
||||
* <li>Caso seja vazia, lança uma <code>IllegalArgumentException</code>;</li>
|
||||
* <li>Caso não esteja no formato especificado, lança uma
|
||||
* <code>LinhaDigitavelException</code>.</li>
|
||||
* </ul>
|
||||
* </p>
|
||||
*
|
||||
* @see #checkExistsLinhaDigitavel(String)
|
||||
*
|
||||
* @param codigoDeBarras
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
* @throws CodigoDeBarrasException
|
||||
* quando a string não está no formato válido
|
||||
*/
|
||||
public static void checkFormatoCodigoDeBarras(String codigoDeBarras)
|
||||
throws IllegalArgumentException,
|
||||
CodigoDeBarrasException {
|
||||
|
||||
checkExistsCodigoDeBarras(codigoDeBarras);
|
||||
|
||||
if (!isCodigoDeBarrasValido(codigoDeBarras)) {
|
||||
throw new CodigoDeBarrasException(
|
||||
MSG_CODIGO_DE_BARRAS
|
||||
+ " "
|
||||
+ String.format(MSG_STR_NUMERICA, codigoDeBarras,
|
||||
codigoDeBarras.length())
|
||||
+ " O código de barras deve conter apenas 44 dígitos númericos [0-9]!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se a linha digitável <strong>não é nula</strong> e <strong>não é
|
||||
* vazia</strong>. Caso nula lança uma <code>IllegalArgumentException</code>,
|
||||
* caso vazia lança uma <code>IllegalArgumentException</code>.
|
||||
* </p>
|
||||
* <p>
|
||||
* Considera-se vazia se <code>linhaDigitavel.trim().length()</code> == 0.
|
||||
* </p>
|
||||
*
|
||||
* @param linhaDigitavel
|
||||
*
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
*/
|
||||
public static void checkExistsLinhaDigitavel(String linhaDigitavel)
|
||||
throws IllegalArgumentException {
|
||||
|
||||
checkNotNull(linhaDigitavel, MSG_LINHA_INVALIDA);
|
||||
|
||||
if (isBlank(linhaDigitavel)) {
|
||||
Exceptions.throwIllegalArgumentException(MSG_LINHA_INVALIDA
|
||||
+ " "
|
||||
+ String.format(MSG_STR_VAZIA, linhaDigitavel,
|
||||
linhaDigitavel.length()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se código de barras <strong>não é nulo</strong> e <strong>não é
|
||||
* vazio</strong>. Caso nula lança uma <code>IllegalArgumentException</code>,
|
||||
* caso vazia lança uma <code>IllegalArgumentException</code>.
|
||||
* </p>
|
||||
* <p>
|
||||
* Considera-se vazia se <code>linhaDigitavel.trim().length()</code> == 0.
|
||||
* </p>
|
||||
*
|
||||
* @param codigoDeBarras
|
||||
* @throws IllegalArgumentException
|
||||
* quando a string é nula ou quando a string é vazia
|
||||
*/
|
||||
public static void checkExistsCodigoDeBarras(String codigoDeBarras)
|
||||
throws IllegalArgumentException {
|
||||
|
||||
checkNotNull(codigoDeBarras, MSG_LINHA_INVALIDA);
|
||||
|
||||
if (isBlank(codigoDeBarras)) {
|
||||
Exceptions.throwIllegalArgumentException(MSG_CODIGO_DE_BARRAS
|
||||
+ " "
|
||||
+ String.format(MSG_STR_VAZIA, codigoDeBarras,
|
||||
codigoDeBarras.length()));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,359 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:04:23
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:04:23
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
package org.jrimum.bopepo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.jrimum.bopepo.campolivre.CampoLivre;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.BlockOfFields;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Objects;
|
||||
import org.jrimum.utilix.text.DecimalFormat;
|
||||
import org.jrimum.vallia.digitoverificador.BoletoCodigoDeBarrasDV;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* É um número único para cada Boleto composto dos seguintes campos:
|
||||
* </p>
|
||||
* <div>
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse:
|
||||
* collapse" bordercolor="#111111" width="100%">
|
||||
* <thead bgcolor="#DEDEDE">
|
||||
* <tr>
|
||||
* <th>Posição </th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody style="text-align:center">
|
||||
* <tr>
|
||||
* <td>01-03</td>
|
||||
* <td>3</td>
|
||||
* <td style="text-align:right;padding-right:10px">9(3)</td>
|
||||
* <td style="text-align:left;padding-left:10px">Identificação do banco </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>04-04 </td>
|
||||
* <td>1 </td>
|
||||
* <td style="text-align:right;padding-right:10px">9 </td>
|
||||
* <td style="text-align:left;padding-left:10px">Código moeda (9-Real) </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>05-05 </td>
|
||||
* <td>1 </td>
|
||||
* <td style="text-align:right;padding-right:10px">9 </td>
|
||||
* <td style="text-align:left;padding-left:10px">Dígito verificador do composição de barras (DV) </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>06-09 </td>
|
||||
* <td>4 </td>
|
||||
* <td style="text-align:right;padding-right:10px">9(4)</td>
|
||||
* <td style="text-align:left;padding-left:10px">Posições 06 a 09 – fator de vencimento</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>10-19</td>
|
||||
* <td>10</td>
|
||||
* <td style="text-align:right;padding-right:10px">9(08)v99</td>
|
||||
* <td style="text-align:left;padding-left:10px">Posições 10 a 19 – valor nominal do título </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>20-44 </td>
|
||||
* <td>25 </td>
|
||||
* <td style="text-align:right;padding-right:10px">9(25) </td>
|
||||
* <td style="text-align:left;padding-left:10px">FixedField livre – utilizado de acordo com a especificação interna do banco
|
||||
* emissor</td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
* </div>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="http://www.nordestefomento.com.br">Nordeste Fomento Mercantil</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class CodigoDeBarras extends BlockOfFields{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 748913164143978133L;
|
||||
|
||||
private static Logger log = Logger.getLogger(CodigoDeBarras.class);
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = 6;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final Integer STRING_LENGTH = 44;
|
||||
|
||||
/**
|
||||
* Código do Banco.
|
||||
*/
|
||||
private FixedField<String> codigoDoBanco;
|
||||
|
||||
/**
|
||||
* Código da moeda usada no boleto.
|
||||
*/
|
||||
private FixedField<Integer> codigoDaMoeda;
|
||||
|
||||
/**
|
||||
* Mecanismo de autenticação usado no composição de barras.
|
||||
*
|
||||
* @see org.jrimum.vallia.digitoverificador.BoletoCodigoDeBarrasDV
|
||||
*/
|
||||
private FixedField<Integer> digitoVerificadorGeral;
|
||||
|
||||
/**
|
||||
* Representa a quantidade de dias decorridos da data base à data de
|
||||
* vencimento do título.
|
||||
*
|
||||
* @see FatorDeVencimento#toFator(Date)
|
||||
*/
|
||||
private FixedField<Integer> fatorDeVencimento;
|
||||
|
||||
/**
|
||||
* Valor do título.
|
||||
*/
|
||||
private FixedField<BigDecimal> valorNominalDoTitulo;
|
||||
|
||||
/**
|
||||
* @see org.jrimum.bopepo.campolivre.CampoLivre
|
||||
*/
|
||||
private FixedField<String> campoLivre;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Cria um Código de Barras a partir do título e campo livre passados.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
* @param campoLivre
|
||||
*
|
||||
* @see CampoLivre
|
||||
*/
|
||||
CodigoDeBarras(Titulo titulo, CampoLivre campoLivre) {
|
||||
super();
|
||||
setLength(STRING_LENGTH);
|
||||
setSize(FIELDS_LENGTH);
|
||||
|
||||
if(log.isTraceEnabled())
|
||||
log.trace("Instanciando o CodigoDeBarras");
|
||||
|
||||
if(log.isDebugEnabled()){
|
||||
log.debug("titulo instance : "+titulo);
|
||||
log.debug("campoLivre instance : "+campoLivre);
|
||||
}
|
||||
|
||||
codigoDoBanco = new FixedField<String>("0", 3, Fillers.ZERO_LEFT);
|
||||
codigoDaMoeda = new FixedField<Integer>(0, 1, Fillers.ZERO_LEFT);
|
||||
digitoVerificadorGeral = new FixedField<Integer>(0, 1, Fillers.ZERO_LEFT);
|
||||
fatorDeVencimento = new FixedField<Integer>(0, 4, Fillers.ZERO_LEFT);
|
||||
valorNominalDoTitulo = new FixedField<BigDecimal>(new BigDecimal(0), 10,DecimalFormat.NUMBER_DD_BR.copy(),Fillers.ZERO_LEFT);
|
||||
this.campoLivre = new FixedField<String>(StringUtils.EMPTY, 25);
|
||||
|
||||
add(codigoDoBanco);
|
||||
add(codigoDaMoeda);
|
||||
add(digitoVerificadorGeral);
|
||||
add(fatorDeVencimento);
|
||||
add(valorNominalDoTitulo);
|
||||
add(this.campoLivre);
|
||||
|
||||
ContaBancaria contaBancaria = titulo.getContaBancaria();
|
||||
this.codigoDoBanco.setValue(contaBancaria.getBanco().getCodigoDeCompensacaoBACEN().getCodigoFormatado());
|
||||
this.codigoDaMoeda.setValue(titulo.getTipoDeMoeda().getCodigo());
|
||||
this.calculateAndSetFatorDeVencimento(titulo.getDataDoVencimento());
|
||||
this.valorNominalDoTitulo.setValue(titulo.getValor());
|
||||
this.campoLivre.setValue(campoLivre.write());
|
||||
this.calculateAndSetDigitoVerificadorGeral();
|
||||
|
||||
if(log.isDebugEnabled() || log.isTraceEnabled())
|
||||
log.debug("codigoDeBarra instanciado : "+this);
|
||||
}
|
||||
|
||||
private void calculateAndSetDigitoVerificadorGeral() {
|
||||
|
||||
if (log.isTraceEnabled())
|
||||
log.trace("Calculando Digito Verificador Geral");
|
||||
|
||||
// Instanciando o objeto irá calcular o dígito verificador do boleto.
|
||||
BoletoCodigoDeBarrasDV calculadorDV = new BoletoCodigoDeBarrasDV();
|
||||
|
||||
// Preparando o conjunto de informações que será a base para o cálculo
|
||||
// do dígito verificador, conforme normas da FEBRABAN.
|
||||
StringBuilder toCalculateDV = new StringBuilder(codigoDoBanco.write())
|
||||
.append(codigoDaMoeda.write())
|
||||
.append(fatorDeVencimento.write())
|
||||
.append(valorNominalDoTitulo.write())
|
||||
.append(campoLivre.write());
|
||||
|
||||
// Realizando o cálculo dígito verificador e em seguida armazenando
|
||||
// a informação no campo "digitoVerificadorGeral".
|
||||
digitoVerificadorGeral.setValue(
|
||||
calculadorDV.calcule(toCalculateDV.toString())
|
||||
);
|
||||
|
||||
if (log.isDebugEnabled())
|
||||
log.debug("Digito Verificador Geral calculado : "
|
||||
+ digitoVerificadorGeral.getValue());
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Representa a quantidade de dias decorridos da data base à data de
|
||||
* vencimento do título.
|
||||
* </p>
|
||||
* <p>
|
||||
* É o resultado da subtração entre a data do vencimento do título e a DATA
|
||||
* BASE, fixada em 07.10.1997 (03.07.2000 retrocedidos 1000 dias do in<EFBFBD>cio
|
||||
* do processo).
|
||||
* </p>
|
||||
* <p>
|
||||
* Os bloquetos de cobrança emitidos a partir de primeiro de setembro de
|
||||
* 2000 devem conter essas características, para que quando forem capturados
|
||||
* pela rede bancária, os sistemas façam a operação inversa, ou seja,
|
||||
* adicionar à data base o fator de vencimento capturado, obtendo, dessa
|
||||
* forma, a data do vencimento do bloqueto.
|
||||
* </p>
|
||||
*
|
||||
* @param vencimento
|
||||
*/
|
||||
private void calculateAndSetFatorDeVencimento(Date vencimento) {
|
||||
|
||||
fatorDeVencimento.setValue(
|
||||
FatorDeVencimento.toFator(vencimento));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the codigoDoBanco
|
||||
*/
|
||||
FixedField<String> getCodigoDoBanco() {
|
||||
return codigoDoBanco;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param codigoDoBanco the codigoDoBanco to set
|
||||
*/
|
||||
void setCodigoDoBanco(FixedField<String> codigoDoBanco) {
|
||||
this.codigoDoBanco = codigoDoBanco;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the codigoDaMoeda
|
||||
*/
|
||||
FixedField<Integer> getCodigoDaMoeda() {
|
||||
return codigoDaMoeda;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param codigoDaMoeda the codigoDaMoeda to set
|
||||
*/
|
||||
void setCodigoDaMoeda(FixedField<Integer> codigoDaMoeda) {
|
||||
this.codigoDaMoeda = codigoDaMoeda;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the digitoVerificadorGeral
|
||||
*/
|
||||
FixedField<Integer> getDigitoVerificadorGeral() {
|
||||
return digitoVerificadorGeral;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param digitoVerificadorGeral the digitoVerificadorGeral to set
|
||||
*/
|
||||
void setDigitoVerificadorGeral(FixedField<Integer> digitoVerificadorGeral) {
|
||||
this.digitoVerificadorGeral = digitoVerificadorGeral;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the fatorDeVencimento
|
||||
*/
|
||||
FixedField<Integer> getFatorDeVencimento() {
|
||||
return fatorDeVencimento;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param fatorDeVencimento the fatorDeVencimento to set
|
||||
*/
|
||||
void setFatorDeVencimento(FixedField<Integer> fatorDeVencimento) {
|
||||
this.fatorDeVencimento = fatorDeVencimento;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the valorNominalDoTitulo
|
||||
*/
|
||||
FixedField<BigDecimal> getValorNominalDoTitulo() {
|
||||
return valorNominalDoTitulo;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param valorNominalDoTitulo the valorNominalDoTitulo to set
|
||||
*/
|
||||
void setValorNominalDoTitulo(FixedField<BigDecimal> valorNominalDoTitulo) {
|
||||
this.valorNominalDoTitulo = valorNominalDoTitulo;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the campoLivre
|
||||
*/
|
||||
FixedField<String> getCampoLivre() {
|
||||
return campoLivre;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param campoLivre the campoLivre to set
|
||||
*/
|
||||
void setCampoLivre(FixedField<String> campoLivre) {
|
||||
this.campoLivre = campoLivre;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return Objects.toString(this);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,90 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 21/04/2008 - 23:38:24
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 21/04/2008 - 23:38:24
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* <p>
|
||||
* Qualquer exceção gerada durante a geração do Código de Barras gera uma <code>CodigoDeBarrasException</code>. Centraliza e localiza os problemas relativos a geração de um código de barras.
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
*
|
||||
* @see org.jrimum.bopepo.CodigoDeBarras
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
|
||||
public class CodigoDeBarrasException extends RuntimeException {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -3577770829101964833L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public CodigoDeBarrasException() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param message
|
||||
* @param cause
|
||||
*/
|
||||
public CodigoDeBarrasException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param message
|
||||
*/
|
||||
public CodigoDeBarrasException(String message) {
|
||||
super(message);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param cause
|
||||
*/
|
||||
public CodigoDeBarrasException(Throwable cause) {
|
||||
super(cause);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,216 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:17:40
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:17:40
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo;
|
||||
|
||||
import static java.lang.String.format;
|
||||
import static org.jrimum.utilix.Objects.isNull;
|
||||
import static org.jrimum.utilix.text.DateFormat.DDMMYYYY_B;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
|
||||
import org.apache.commons.lang.time.DateUtils;
|
||||
import org.jrimum.utilix.Dates;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Serviços utilitários do universo bancário, como por exemplo calcular o fator
|
||||
* de vencimento de boletos.</code>
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="http://www.nordestefomento.com.br">Nordeste Fomento
|
||||
* Mercantil</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class FatorDeVencimento{
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Data base para o cálculo do fator de vencimento fixada em 07/10/1997 pela
|
||||
* FEBRABAN.
|
||||
* </p>
|
||||
*/
|
||||
private static final Calendar BASE_DO_FATOR_DE_VENCIMENTO = new GregorianCalendar(1997, Calendar.OCTOBER, 7);
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Data base para o cálculo do fator de vencimento fixada em 07/10/1997 pela
|
||||
* FEBRABAN.
|
||||
* </p>
|
||||
*/
|
||||
private static final Date DATA_BASE_DO_FATOR_DE_VENCIMENTO = BASE_DO_FATOR_DE_VENCIMENTO.getTime();
|
||||
|
||||
/**
|
||||
*<p>
|
||||
* Data máxima alcançada pelo fator de vencimento com base fixada em
|
||||
* 07/10/1997.
|
||||
* </p>
|
||||
*/
|
||||
private static final Date DATA_LIMITE_DO_FATOR_DE_VENCIMENTO = new GregorianCalendar(2025, Calendar.FEBRUARY, 21).getTime();
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Calcula o fator de vencimento a partir da subtração entre a DATA DE
|
||||
* VENCIMENTO de um título e a DATA BASE fixada em 07/10/1997.
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* O fator de vencimento nada mais é que um referencial numérico de 4
|
||||
* dígitos que representa a quantidade de dias decorridos desde a data base
|
||||
* (07/10/1997) até a data de vencimento do título. Ou seja, a diferença em
|
||||
* dias entre duas datas.
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* Exemplos:
|
||||
* </p>
|
||||
* <ul type="circule"> <li>07/10/1997 (Fator = 0);</li> <li>03/07/2000
|
||||
* (Fator = 1000);</li> <li>05/07/2000 (Fator = 1002);</li> <li>01/05/2002
|
||||
* (Fator = 1667);</li> <li>21/02/2025 (Fator = 9999).</li> </ul>
|
||||
*
|
||||
* <p>
|
||||
* Funcionamento:
|
||||
* </p>
|
||||
*
|
||||
* <ul type="square"> <li>Caso a data de vencimento seja anterior a data
|
||||
* base (Teoricamente fator negativo), uma exceção do tipo
|
||||
* IllegalArgumentException será lançada.</li> <li>A data limite para o
|
||||
* cálculo do fator de vencimento é 21/02/2025 (Fator de vencimento = 9999).
|
||||
* Caso a data de vencimento seja posterior a data limite, uma exceção do
|
||||
* tipo IllegalArgumentException será lançada.</li> </ul>
|
||||
*
|
||||
* <p>
|
||||
* <strong>ATENÇÃO</strong>, esse cálculo se refere a títulos em cobrança,
|
||||
* ou melhor: BOLETOS. Desta forma, lembramos que a DATA BASE é uma norma da
|
||||
* FEBRABAN. Essa norma diz que todos os boletos emitidos a partir de 1º de
|
||||
* setembro de 2000 (primeiro dia útil = 03/07/2000 - SEGUNDA) devem seguir
|
||||
* esta regra de cálculo para compor a informação de vencimento no código de
|
||||
* barras. Portanto, boletos no padrão FEBRABAN quando capturados por
|
||||
* sistemas da rede bancária permitem que se possa realizar a operação
|
||||
* inversa, ou seja, adicionar à data base o fator de vencimento capturado.
|
||||
* Obtendo então a data de vencimento deste boleto.
|
||||
* </p>
|
||||
* @param data
|
||||
* data de vencimento de um título
|
||||
* @return fator de vencimento calculado
|
||||
* @throws IllegalArgumentException
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
public static int toFator(Date data) throws IllegalArgumentException {
|
||||
|
||||
if (isNull(data)) {
|
||||
|
||||
return (Integer) Exceptions.throwIllegalArgumentException("Impossível realizar o cálculo do fator de vencimento de uma data nula!");
|
||||
|
||||
} else {
|
||||
|
||||
Date dataTruncada = DateUtils.truncate(data, Calendar.DATE);
|
||||
|
||||
checkIntervalo(dataTruncada);
|
||||
|
||||
return (int) Dates.calculeDiferencaEmDias(DATA_BASE_DO_FATOR_DE_VENCIMENTO, dataTruncada);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Transforma um fator de vencimento em um objeto data da forma inversa
|
||||
* descrita em {@linkplain #toFator(Date)}.
|
||||
* </p>
|
||||
*
|
||||
* @param fator
|
||||
* - Número entre o intervalo (incluíndo) 0 e 9999
|
||||
* @return Data do vencimento
|
||||
* @throws IllegalArgumentException
|
||||
* Caso o {@code fator} < 0 ou {@code fator} > 9999
|
||||
*/
|
||||
public static Date toDate(int fator) throws IllegalArgumentException {
|
||||
|
||||
checkIntervalo(fator);
|
||||
|
||||
Calendar date = (Calendar) BASE_DO_FATOR_DE_VENCIMENTO.clone();
|
||||
|
||||
date.add(Calendar.DAY_OF_YEAR, fator);
|
||||
|
||||
return DateUtils.truncate(date.getTime(), Calendar.DATE);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Lança exceção caso a {@code dataVencimentoTruncada} esteja fora do
|
||||
* intervalo entre a {@linkplain #DATA_BASE_DO_FATOR_DE_VENCIMENTO} e a
|
||||
* {@linkplain #DATA_LIMITE_DO_FATOR_DE_VENCIMENTO}.
|
||||
* </p>
|
||||
*
|
||||
* @param dataVencimentoTruncada
|
||||
* data de vencimento truncada com {@code
|
||||
* DateUtils.truncate(date, Calendar.DATE)}
|
||||
* @throws IllegalArgumentException
|
||||
* Caso a data esteja {@code dataVencimentoTruncada} esteja fora
|
||||
* do intervalo entre a
|
||||
* {@linkplain #DATA_BASE_DO_FATOR_DE_VENCIMENTO} e a
|
||||
* {@linkplain #DATA_LIMITE_DO_FATOR_DE_VENCIMENTO}
|
||||
*/
|
||||
private static void checkIntervalo(Date dataVencimentoTruncada) throws IllegalArgumentException {
|
||||
|
||||
if(dataVencimentoTruncada.before(DATA_BASE_DO_FATOR_DE_VENCIMENTO)
|
||||
|| dataVencimentoTruncada.after(DATA_LIMITE_DO_FATOR_DE_VENCIMENTO)) {
|
||||
|
||||
Exceptions.throwIllegalArgumentException(
|
||||
format("Para o cálculo do fator de vencimento se faz necessário informar uma data entre %s e %s.",
|
||||
DDMMYYYY_B.format(DATA_BASE_DO_FATOR_DE_VENCIMENTO), DDMMYYYY_B.format(DATA_LIMITE_DO_FATOR_DE_VENCIMENTO)));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Lança exceção caso o {@code fator} estja fora do intervalo.</p>
|
||||
*
|
||||
* @param fatorDeVencimento - Número entre o intervalo (incluíndo) 0 e 9999
|
||||
* @throws IllegalArgumentException Caso o {@code fator} < 0 ou {@code fator} > 9999
|
||||
*/
|
||||
private static void checkIntervalo(int fatorDeVencimento) throws IllegalArgumentException {
|
||||
|
||||
if (fatorDeVencimento < 0 || fatorDeVencimento > 9999) {
|
||||
|
||||
Exceptions.throwIllegalArgumentException(
|
||||
"Impossível transformar em data um fator menor que zero! O fator de vencimento deve ser um número entre 0 e 9999.");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,538 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:04:37
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:04:37
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
package org.jrimum.bopepo;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.jrimum.texgit.type.component.BlockOfFields;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Objects;
|
||||
import org.jrimum.utilix.text.Strings;
|
||||
import org.jrimum.vallia.digitoverificador.BoletoLinhaDigitavelDV;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* Representa a linha digitável do boleto, embora a linha digitável contenha a
|
||||
* mesma informação do código de barras, essa informação é disposta de uma forma
|
||||
* diferente e são acrescentados 3 dígitos verificadores. <br />
|
||||
* <br />
|
||||
* Modelo: <br />
|
||||
* <br />
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse:
|
||||
* collapse" bordercolor="#111111" width="90%" id="linhaDigitável"> <thead>
|
||||
* <tr>
|
||||
* <th>Posição </th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Conteúdo</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tr>
|
||||
* <td>01-03 </td>
|
||||
* <td>3 </td>
|
||||
* <td>Identificação do banco </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>04-04</td>
|
||||
* <td>1 </td>
|
||||
* <td>Código de moeda (9 – Real) </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>05-09 </td>
|
||||
* <td>5 </td>
|
||||
* <td>Cinco primeiras posições do campo livre (posições 20 a 24 do código de
|
||||
* barras)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>10-10 </td>
|
||||
* <td>1 </td>
|
||||
* <td>Dígito verificador do primeiro campo </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>11-20 </td>
|
||||
* <td>10 </td>
|
||||
* <td>6ª a 15ª posições do campo livre (posições 25 a 34 do código de barras)
|
||||
* </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>21-21 </td>
|
||||
* <td>1 </td>
|
||||
* <td>Dígito verificador do segundo campo </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>22-31 </td>
|
||||
* <td>10 </td>
|
||||
* <td>16ª a 25ª posições do campo livre (posições 35 a 44 do código de barras)
|
||||
* </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>32-32 </td>
|
||||
* <td>1 </td>
|
||||
* <td>Dígito verificador do terceiro campo </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>33-33 </td>
|
||||
* <td>1 </td>
|
||||
* <td>Dígito verificador geral (posição 5 do código de barras) </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>34-37 </td>
|
||||
* <td>4 </td>
|
||||
* <td>Posições 34 a 37 – fator de vencimento (posições 6 a 9 do código debarras)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>37-47 </td>
|
||||
* <td>10 </td>
|
||||
* <td>Posições 38 a 47 – valor nominal do título(posições 10 a 19 do código de barras) </td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
* <br />
|
||||
* <br />
|
||||
*
|
||||
* Observações:
|
||||
*
|
||||
* <br />
|
||||
* <ul>
|
||||
*
|
||||
* <li>Em cada um dos três primeiros campos, após a 5a posição, deve ser
|
||||
* inserido um ponto “.”, a fim de facilitar a visualização, para a digitação,
|
||||
* quando necessário;</li>
|
||||
* <li>Quinto campo:
|
||||
* <ul>
|
||||
* <br />
|
||||
* <li>preenchimento com zeros entre o fator de vencimento e o valor até
|
||||
* completar 14 posições;
|
||||
* <li>a existência de “0000” no campo “fator de vencimento” da linha digitável
|
||||
* do bloqueto de cobrança é indicativo de que o código de barras não contém
|
||||
* fator de vencimento. Nesse caso, o banco acolhedor/recebedor estará isento
|
||||
* das responsabilidades pelo recebimento após o vencimento, que impede de
|
||||
* identificar automaticamente se o bloqueto está ou não vencido;</li>
|
||||
* <li>quando se tratar de bloquetos sem discriminação do valor no código de
|
||||
* barras, a representação deverá ser com zeros;</li>
|
||||
* <li>não deverá conter separação por pontos, vírgulas ou espaços;</li>
|
||||
* </ul>
|
||||
* <br />
|
||||
* </li>
|
||||
* <li>Os dígitos verificadores referentes aos 1º, 2º e 3º campos não são
|
||||
* representados no código de barras;</li>
|
||||
* <li>Os dados da linha digitável não se apresentam na mesma ordem do código
|
||||
* de barras.</li>
|
||||
*
|
||||
* </ul>
|
||||
*
|
||||
*
|
||||
* @see org.jrimum.bopepo.CodigoDeBarras
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="http://www.nordestefomento.com.br">Nordeste Fomento Mercantil</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class LinhaDigitavel extends BlockOfFields {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -6089634012523938802L;
|
||||
|
||||
private static Logger log = Logger.getLogger(LinhaDigitavel.class);
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = 5;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Tamanho dos campos mais os espaços entre eles.
|
||||
* </p>
|
||||
*/
|
||||
private static final Integer STRING_LENGTH = 54;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private FixedField<InnerCampo1> innerCampo1;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private FixedField<InnerCampo2> innerCampo2;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private FixedField<InnerCampo3> innerCampo3;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Digito verificador geral.
|
||||
* </p>
|
||||
*/
|
||||
private FixedField<Integer> campo4;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private FixedField<InnerCampo5> innerCampo5;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Cria uma linha digitável a partir do código de barras passado.
|
||||
* </p>
|
||||
*
|
||||
* @param codigoDeBarras
|
||||
*
|
||||
* @see CodigoDeBarras
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
LinhaDigitavel(CodigoDeBarras codigoDeBarras) {
|
||||
super();
|
||||
setLength(STRING_LENGTH);
|
||||
setSize(FIELDS_LENGTH);
|
||||
|
||||
if(log.isTraceEnabled())
|
||||
log.trace("Instanciando Linha Digitável");
|
||||
|
||||
if(log.isDebugEnabled())
|
||||
log.debug("codigoDeBarra instance : "+codigoDeBarras);
|
||||
|
||||
innerCampo1 = new FixedField<InnerCampo1>(new InnerCampo1(4,11),11);
|
||||
innerCampo2 = new FixedField<InnerCampo2>(new InnerCampo2(2,12),12);
|
||||
innerCampo3 = new FixedField<InnerCampo3>(new InnerCampo3(2,12),12);
|
||||
campo4 = new FixedField<Integer>(new Integer(0),1);
|
||||
innerCampo5 = new FixedField<InnerCampo5>(new InnerCampo5(2,14),14);
|
||||
|
||||
add(innerCampo1);
|
||||
add(innerCampo2);
|
||||
add(innerCampo3);
|
||||
add(campo4);
|
||||
add(innerCampo5);
|
||||
|
||||
this.innerCampo1.getValue().load(codigoDeBarras);
|
||||
this.innerCampo2.getValue().load(codigoDeBarras);
|
||||
this.innerCampo3.getValue().load(codigoDeBarras);
|
||||
|
||||
this.campo4.setValue(codigoDeBarras.getDigitoVerificadorGeral().getValue());
|
||||
|
||||
if(log.isDebugEnabled())
|
||||
log.debug("InnerCampo 4 da Linha Digitável : "+this.campo4.getValue());
|
||||
|
||||
this.innerCampo5.getValue().load(codigoDeBarras);
|
||||
|
||||
if(log.isDebugEnabled() || log.isTraceEnabled())
|
||||
log.debug("linhaDigitavel instanciada : "+this.write());
|
||||
}
|
||||
|
||||
/**
|
||||
* Escreve a linha digitável foramatada (com espaço entre os campos).
|
||||
*
|
||||
* @see org.jrimum.texgit.type.component.BlockOfFields#write()
|
||||
*/
|
||||
@Override
|
||||
public String write(){
|
||||
|
||||
return new StringBuilder(innerCampo1.write()).
|
||||
append(Strings.WHITE_SPACE).
|
||||
append(innerCampo2.write()).
|
||||
append(Strings.WHITE_SPACE).
|
||||
append(innerCampo3.write()).
|
||||
append(Strings.WHITE_SPACE).
|
||||
append(campo4.write()).
|
||||
append(Strings.WHITE_SPACE).
|
||||
append(innerCampo5.write()).toString();
|
||||
|
||||
}
|
||||
|
||||
private abstract class InnerCampo extends BlockOfFields {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 6746400538765124943L;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected final BoletoLinhaDigitavelDV calculadorDV = new BoletoLinhaDigitavelDV();
|
||||
|
||||
|
||||
protected InnerCampo(Integer fieldsLength, Integer stringLength) {
|
||||
super();
|
||||
setLength(stringLength);
|
||||
setSize(fieldsLength);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private abstract class InnerCampoFormatado extends InnerCampo {
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 3650450185403697045L;
|
||||
|
||||
protected InnerCampoFormatado(final Integer fieldsLength, final Integer stringLength) {
|
||||
super(fieldsLength, stringLength);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* Aplicação do seguinte requisito da FEBRABAN: <br />
|
||||
* Em cada um dos três primeiros campos, após a quinta (5) posição, deve ser
|
||||
* inserido um ponto “.”, a fim de facilitar a visualização, para a
|
||||
* digitação, quando necessário.
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* @see org.jrimum.texgit.type.component.BlockOfFields#write()
|
||||
*/
|
||||
@Override
|
||||
public String write(){
|
||||
|
||||
StringBuilder lineOfFields = new StringBuilder(StringUtils.EMPTY);
|
||||
|
||||
for(FixedField<?> field : this){
|
||||
lineOfFields.append(field.write());
|
||||
}
|
||||
|
||||
lineOfFields.insert(5, ".");
|
||||
|
||||
return lineOfFields.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Componhe o campo 1 da linha digitável com os seguintes dados: <br />
|
||||
* <ul>
|
||||
* <li>Identificação do banco</li>
|
||||
* <li>Código de moeda (9 – Real)</li>
|
||||
* <li>Cinco primeiras posições do campo livre (posições 20 a 24 do código
|
||||
* de barras)</li>
|
||||
* <li>Dígito verificador do primeiro campo</li>
|
||||
* </ul>
|
||||
*
|
||||
* @param titulo
|
||||
* @param codigoDeBarra
|
||||
* @param calculadorDV
|
||||
*/
|
||||
private class InnerCampo1 extends InnerCampoFormatado{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 2948116051922000890L;
|
||||
|
||||
/**
|
||||
* @param fieldsLength
|
||||
* @param stringLength
|
||||
*/
|
||||
private InnerCampo1(Integer fieldsLength, Integer stringLength) {
|
||||
super(fieldsLength, stringLength);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param codigoDeBarras
|
||||
*/
|
||||
private void load(CodigoDeBarras codigoDeBarras){
|
||||
|
||||
if(log.isTraceEnabled())
|
||||
log.trace("Compondo campo 1 da Linha Digitável");
|
||||
|
||||
add(new FixedField<String>(codigoDeBarras.write().substring(0, 3),3));
|
||||
add(new FixedField<String>(codigoDeBarras.write().substring(3, 4),1));
|
||||
add(new FixedField<String>(codigoDeBarras.write().substring(19, 24),5));
|
||||
add(new FixedField<Integer>(calculadorDV.calcule(get(0).write() + get(1).write() + get(2).write()),1));
|
||||
|
||||
if(log.isDebugEnabled())
|
||||
log.debug("Digito verificador do Field 1 da Linha Digitável : "+get(3).getValue());
|
||||
|
||||
|
||||
if(log.isDebugEnabled() || log.isTraceEnabled())
|
||||
log.debug("Field 1 da Linha Digitável composto : "+write());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Componhe o campo 2 da linha digitável com os seguintes dados: <br />
|
||||
* <ul>
|
||||
* <li>6ª a 15ª posições do campo livre (posições 25 a 34 do código de
|
||||
* barras)</li>
|
||||
* <li>Dígito verificador do segundo campo</li>
|
||||
* </ul>
|
||||
*
|
||||
* @param codigoDeBarra
|
||||
* @param calculadorDV
|
||||
*/
|
||||
private class InnerCampo2 extends InnerCampoFormatado{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -2201847536243988819L;
|
||||
|
||||
/**
|
||||
* @param fieldsLength
|
||||
* @param stringLength
|
||||
*/
|
||||
private InnerCampo2(Integer fieldsLength, Integer stringLength) {
|
||||
super(fieldsLength, stringLength);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param codigoDeBarras
|
||||
*/
|
||||
private void load(CodigoDeBarras codigoDeBarras){
|
||||
|
||||
if(log.isTraceEnabled())
|
||||
log.trace("Compondo campo 2 da Linha Digitável");
|
||||
|
||||
add(new FixedField<String>(codigoDeBarras.write().substring(24, 34),10));
|
||||
add(new FixedField<Integer>(calculadorDV.calcule(get(0).write()),1));
|
||||
|
||||
if(log.isDebugEnabled())
|
||||
log.debug("Digito verificador do campo 2 da Linha Digitável : "+get(1).getValue());
|
||||
|
||||
if(log.isDebugEnabled() || log.isTraceEnabled())
|
||||
log.debug("InnerCampo 2 da Linha Digitável composto : "+write());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Componhe o campo 3 da linha digitável com os seguintes dados: <br />
|
||||
* <ul>
|
||||
* <li>16ª a 25ª posições do campo livre (posições 35 a 44 do código de
|
||||
* barras)</li>
|
||||
* <li>Dígito verificador do terceiro campo</li>
|
||||
* </ul>
|
||||
*
|
||||
* @param codigoDeBarra
|
||||
* @param calculadorDV
|
||||
*/
|
||||
private class InnerCampo3 extends InnerCampoFormatado{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -4248472044788156665L;
|
||||
|
||||
/**
|
||||
* @param fieldsLength
|
||||
* @param stringLength
|
||||
*/
|
||||
private InnerCampo3(Integer fieldsLength, Integer stringLength) {
|
||||
super(fieldsLength, stringLength);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param codigoDeBarras
|
||||
*/
|
||||
private void load(CodigoDeBarras codigoDeBarras){
|
||||
|
||||
if(log.isTraceEnabled())
|
||||
log.trace("Compondo campo 3 da Linha Digitável");
|
||||
|
||||
add(new FixedField<String>(codigoDeBarras.write().substring(34, 44),10));
|
||||
add(new FixedField<Integer>(calculadorDV.calcule(get(0).write()),1));
|
||||
|
||||
if(log.isDebugEnabled())
|
||||
log.debug("Digito verificador do campo 3 da Linha Digitável : "+get(1).getValue());
|
||||
|
||||
if(log.isDebugEnabled() || log.isTraceEnabled())
|
||||
log.debug("InnerCampo 3 da Linha Digitável composto : "+write());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Componhe o campo 5 da linha digitável com os seguintes dados: <br />
|
||||
* <ul>
|
||||
* <li>Posições 34 a 37 – fator de vencimento (posições 6 a 9 do código de
|
||||
* barras)</li>
|
||||
* <li>Posições 38 a 47 – valor nominal do título(posições 10 a 19 do
|
||||
* código de barras)</li>
|
||||
* </ul>
|
||||
*
|
||||
* @param codigoDeBarra
|
||||
*/
|
||||
private class InnerCampo5 extends InnerCampo{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -8040082112684009827L;
|
||||
|
||||
/**
|
||||
* @param fieldsLength
|
||||
* @param stringLength
|
||||
*/
|
||||
private InnerCampo5(Integer fieldsLength, Integer stringLength) {
|
||||
super(fieldsLength, stringLength);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param codigoDeBarras
|
||||
*/
|
||||
private void load(CodigoDeBarras codigoDeBarras){
|
||||
|
||||
if(log.isTraceEnabled())
|
||||
log.trace("Compondo campo 5 da Linha Digitável");
|
||||
|
||||
add(new FixedField<String>(codigoDeBarras.write().substring(5, 9),4));
|
||||
add(new FixedField<String>(codigoDeBarras.write().substring(9, 19),10));
|
||||
|
||||
if(log.isDebugEnabled() || log.isTraceEnabled())
|
||||
log.debug("InnerCampo 5 da Linha Digitável composto : "+write());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return Objects.toString(this);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,91 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 21/04/2008 - 23:39:43
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 21/04/2008 - 23:39:43
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* <p>
|
||||
* Qualquer exceção gerada durante a geração da Linha Digitável gera uma <code>LinhaDigitavelException</code>. Centraliza e localiza os problemas relativos a geração de uma linha digitável.
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @see org.jrimum.bopepo.LinhaDigitavel
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class LinhaDigitavelException extends RuntimeException {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 8206303471509231915L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public LinhaDigitavelException() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param message
|
||||
* @param cause
|
||||
*/
|
||||
public LinhaDigitavelException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param message
|
||||
*/
|
||||
public LinhaDigitavelException(String message) {
|
||||
super(message);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param cause
|
||||
*/
|
||||
public LinhaDigitavelException(Throwable cause) {
|
||||
super(cause);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,278 @@
|
|||
package org.jrimum.bopepo;
|
||||
|
||||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 01/11/2010 - 09:37:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 01/11/2010 - 09:37:00
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
import java.io.File;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import org.jrimum.bopepo.BancosSuportados;
|
||||
import org.jrimum.bopepo.Boleto;
|
||||
import org.jrimum.bopepo.view.BoletoViewer;
|
||||
import org.jrimum.domkee.comum.pessoa.endereco.CEP;
|
||||
import org.jrimum.domkee.comum.pessoa.endereco.Endereco;
|
||||
import org.jrimum.domkee.comum.pessoa.endereco.UnidadeFederativa;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Agencia;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Carteira;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Cedente;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.NumeroDaConta;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Sacado;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.TipoDeCobranca;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.TipoDeTitulo;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo.Aceite;
|
||||
|
||||
/**
|
||||
* Exemplo de código para geração de um boleto simples.
|
||||
*
|
||||
* <p>
|
||||
* Utiliza o Banco Bradesco como exemplo, já que possui um implementação simples.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class MeuPrimeiroBoleto {
|
||||
|
||||
/**
|
||||
* Executa o exemplo.
|
||||
*
|
||||
* @param args
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
|
||||
new MeuPrimeiroBoleto().exemplo();
|
||||
}
|
||||
|
||||
/**
|
||||
* Um simples exemplo de como gerar um boleto.
|
||||
*/
|
||||
final void exemplo() {
|
||||
|
||||
/*
|
||||
* Para gerar um boleto é preciso dos dados do boleto e de um
|
||||
* visualizador de boletos.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Primeiro crie os dados do boleto.
|
||||
*/
|
||||
Boleto boleto = crieUmBoleto();
|
||||
|
||||
/*
|
||||
* Em seguida, basta criar um visualizador para o boleto.
|
||||
*/
|
||||
BoletoViewer boletoViewer = new BoletoViewer(boleto);
|
||||
|
||||
/*
|
||||
* Depois, gere um arquivo, byte array ou stream. Nesse exemplo, um
|
||||
* arquivo será salvo na mesma pasta do seu "projeto"
|
||||
*/
|
||||
|
||||
// Exemplos de uso:
|
||||
// WINDOWS: boletoViewer.getAsPDF("C:/Temp/MeuBoleto.pdf");
|
||||
// LINUX: boletoViewer.getAsPDF("/home/temp/MeuBoleto.pdf");
|
||||
File arquivoPdf = boletoViewer.getPdfAsFile("MeuPrimeiroBoleto.pdf");
|
||||
|
||||
// Agora veja o arquivo gerado na tela.
|
||||
mostreBoletoNaTela(arquivoPdf);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria um boleto, em passos distintos, com os dados necessários para a visualização.
|
||||
*
|
||||
* @return boleto com dados
|
||||
*/
|
||||
Boleto crieUmBoleto() {
|
||||
|
||||
/*
|
||||
* PASSO 1: Você precisa dos dados de uma conta bancária habilitada para
|
||||
* emissão de boletos.
|
||||
*/
|
||||
ContaBancaria contaBancaria = crieUmaContaBancaria();
|
||||
|
||||
/*
|
||||
* PASSO 2: Informe os dados do cedente.
|
||||
*/
|
||||
Cedente cedente = crieUmCedente();
|
||||
|
||||
/*
|
||||
* PASSO 3: Informe os dados do Sacado.
|
||||
*/
|
||||
Sacado sacado = crieUmSacado();
|
||||
|
||||
/*
|
||||
* PASSO 4: Crie um novo título/cobrança e informe os dados.
|
||||
*/
|
||||
Titulo titulo = crieOsDadosDoNovoTitulo(new Titulo(contaBancaria,sacado,cedente));
|
||||
|
||||
/*
|
||||
* PASSO 5: Crie o boleto e informe os dados necessários.
|
||||
*/
|
||||
Boleto boleto = crieOsDadosDoNovoBoleto(new Boleto(titulo));
|
||||
|
||||
return boleto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Preenche os principais dados do boleto.
|
||||
*
|
||||
* @param boleto
|
||||
* @return boleto com os dados necssários
|
||||
*/
|
||||
final Boleto crieOsDadosDoNovoBoleto(Boleto boleto) {
|
||||
|
||||
// boleto.setLocalPagamento("Pagável preferencialmente na Rede X ou em qualquer Banco até o Vencimento.");
|
||||
// boleto.setInstrucaoAoSacado("Senhor sacado, sabemos sim que o valor cobrado não é o esperado, aproveite o DESCONTÃO!");
|
||||
// boleto.setInstrucao1("PARA PAGAMENTO 1 até Hoje não cobrar nada!");
|
||||
// boleto.setInstrucao2("PARA PAGAMENTO 2 até Amanhã Não cobre!");
|
||||
// boleto.setInstrucao3("PARA PAGAMENTO 3 até Depois de amanhã, OK, não cobre.");
|
||||
// boleto.setInstrucao4("PARA PAGAMENTO 4 até 04/xx/xxxx de 4 dias atrás COBRAR O VALOR DE: R$ 01,00");
|
||||
// boleto.setInstrucao5("PARA PAGAMENTO 5 até 05/xx/xxxx COBRAR O VALOR DE: R$ 02,00");
|
||||
// boleto.setInstrucao6("PARA PAGAMENTO 6 até 06/xx/xxxx COBRAR O VALOR DE: R$ 03,00");
|
||||
// boleto.setInstrucao7("PARA PAGAMENTO 7 até xx/xx/xxxx COBRAR O VALOR QUE VOCÊ QUISER!");
|
||||
// boleto.setInstrucao8("APÓS o Vencimento, Pagável Somente na Rede X.");
|
||||
|
||||
return boleto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Preenche os principais dados do título.
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @return título com os dados necssários
|
||||
*/
|
||||
final Titulo crieOsDadosDoNovoTitulo(Titulo titulo) {
|
||||
|
||||
/*
|
||||
* DADOS BÁSICOS.
|
||||
*/
|
||||
|
||||
titulo.setNumeroDoDocumento("05160935000159");
|
||||
titulo.setNossoNumero("0543129");
|
||||
titulo.setDigitoDoNossoNumero("8");
|
||||
titulo.setValor(BigDecimal.valueOf(822.59));
|
||||
|
||||
// Para informar a data de maneira simples você pode utilizar as
|
||||
// classes utilitárias do JRimum. Abaixo temos alguns exemplos:
|
||||
// (1) titulo.setDataDoVencimento( DateFormat.DDMMYYYY_B.parse("11/03/2011") );
|
||||
// (2) titulo.setDataDoVencimento( Dates.parse("11/03/2011", "dd/MM/yyyy") );
|
||||
titulo.setDataDoDocumento(new Date());
|
||||
|
||||
Date d = new Date();
|
||||
d.setDate(07);
|
||||
d.setMonth(12-1);
|
||||
titulo.setDataDoVencimento(d);
|
||||
|
||||
titulo.setTipoDeDocumento(TipoDeTitulo.DM_DUPLICATA_MERCANTIL);
|
||||
titulo.setAceite(Aceite.N);
|
||||
titulo.setDesconto(new BigDecimal(223.64));
|
||||
titulo.setDeducao(BigDecimal.ZERO);
|
||||
titulo.setMora(BigDecimal.ZERO);
|
||||
titulo.setAcrecimo(BigDecimal.ZERO);
|
||||
titulo.setValorCobrado(BigDecimal.ZERO);
|
||||
|
||||
return titulo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria uma instância de sacado com os principais dados para o boleto.
|
||||
*
|
||||
* @return sacado com os dados necssários
|
||||
*/
|
||||
final Sacado crieUmSacado() {
|
||||
|
||||
Sacado sacado = new Sacado("BREDA TRANSPORTE E SERVIÇOS S.A", "05160935000159");
|
||||
|
||||
// // Informando o endereço do sacado.
|
||||
// Endereco enderecoSac = new Endereco();
|
||||
// enderecoSac.setUF(UnidadeFederativa.RN);
|
||||
// enderecoSac.setLocalidade("Natal");
|
||||
// enderecoSac.setCep(new CEP("59064-120"));
|
||||
// enderecoSac.setBairro("Grande Centro");
|
||||
// enderecoSac.setLogradouro("Rua poeta dos programas");
|
||||
// enderecoSac.setNumero("1");
|
||||
// sacado.addEndereco(enderecoSac);
|
||||
//
|
||||
return sacado;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria uma instância de cedente com os principais dados para o boleto.
|
||||
*
|
||||
* @return cedente com os dados necssários
|
||||
*/
|
||||
final Cedente crieUmCedente() {
|
||||
|
||||
return new Cedente("BREDA TRANSPORTE E SERVIÇOS S.A.", "05160935000159");
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria uma instância de conta bancária com os principais dados para o
|
||||
* boleto em questão (Banco Bradesco).
|
||||
*
|
||||
* @return conta com os dados necssários
|
||||
*/
|
||||
final ContaBancaria crieUmaContaBancaria(){
|
||||
|
||||
ContaBancaria contaBancaria = new ContaBancaria(BancosSuportados.BANCO_SANTANDER.create());
|
||||
contaBancaria.setNumeroDaConta(new NumeroDaConta(1152386));
|
||||
contaBancaria.setAgencia(new Agencia(227, "1"));
|
||||
contaBancaria.setCarteira(new Carteira(101, TipoDeCobranca.SEM_REGISTRO));
|
||||
|
||||
|
||||
return contaBancaria;
|
||||
}
|
||||
|
||||
/**
|
||||
* Exibe o arquivo na tela.
|
||||
*
|
||||
* @param arquivoBoleto
|
||||
*/
|
||||
final void mostreBoletoNaTela(File arquivoBoleto) {
|
||||
|
||||
try {
|
||||
// Descomente se estiver usando java 6 ou superior
|
||||
java.awt.Desktop.getDesktop().open(arquivoBoleto);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,84 @@
|
|||
/*
|
||||
* Copyright 2011 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 17/02/2011 - 12:40:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2011 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO EST��, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação especÃfica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 17/02/2011 - 12:40:00
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* Interface comum para todos os campos livres do CITIBANK
|
||||
*
|
||||
* @author <a href="mailto:fabianojustino@gmail.com">Fabiano Carrijo Justino</a>
|
||||
* @since 0.2
|
||||
* @version 0.2
|
||||
*/
|
||||
abstract class AbstractCLBancoCitibank extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
* {@code serialVersionUID = 6080749970883991308L}
|
||||
*/
|
||||
private static final long serialVersionUID = 6080749970883991308L;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Cria um campo livre com um determinado número de campos
|
||||
* </p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength
|
||||
* - Número de campos
|
||||
*/
|
||||
protected AbstractCLBancoCitibank(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param titulo
|
||||
* @return um CampoLivre
|
||||
*
|
||||
*/
|
||||
protected static CampoLivre create(Titulo titulo)
|
||||
throws NotSupportedCampoLivreException {
|
||||
checkNossoNumero(titulo);
|
||||
checkNumeroDaContaNotNull(titulo);
|
||||
checkCodigoDoNumeroDaConta(titulo);
|
||||
checkNossoNumero(titulo);
|
||||
checkNumeroDaContaNotNull(titulo);
|
||||
checkCodigoDoNumeroDaConta(titulo);
|
||||
switch(titulo.getNossoNumero().length())
|
||||
{
|
||||
case 11:
|
||||
return new CLBancoCitiBankNN11(titulo);
|
||||
}
|
||||
throw new NotSupportedCampoLivreException("Campo livre diponivel somente para titulos com nosso nmero composto por 10 posicoes(convenio com 7), 11 posicoes ou 17 posicoes(convenio com 6).");
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* Copyright 2013 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 24/08/2013 - 19:54:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2013 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 24/08/2013 - 19:54:00
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Interface comum para todos os campos livres do BRB - Banco de Brasília que
|
||||
* venham a existir.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:contato@douglasramiro.com.br">Douglas Ramiro</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public abstract class AbstractCLBancoDeBrasilia extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 3200353843356508888L;
|
||||
|
||||
protected AbstractCLBancoDeBrasilia(Integer fieldsLength) {
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
protected static CampoLivre create(Titulo titulo){
|
||||
return new CLBancoDeBrasilia().build(titulo);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,94 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:07:47
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:07:47
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Interface comum para todos os campos livres do Banco do Brasil que venham a existir.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="http://www.nordestefomento.com.br">Nordeste Fomento
|
||||
* Mercantil</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
abstract class AbstractCLBancoDoBrasil extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -7324315662526104153L;
|
||||
|
||||
/**
|
||||
* <p>Cria um campo livre com um determinado número de campos</p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength - Número de campos
|
||||
*/
|
||||
protected AbstractCLBancoDoBrasil(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
protected static CampoLivre create(Titulo titulo) throws NotSupportedCampoLivreException{
|
||||
|
||||
checkNossoNumero(titulo);
|
||||
checkNumeroDaContaNotNull(titulo);
|
||||
checkCodigoDoNumeroDaConta(titulo);
|
||||
|
||||
switch(titulo.getNossoNumero().length()){
|
||||
case NN10:
|
||||
return new CLBancoDoBrasilNN10(titulo);
|
||||
case NN11:
|
||||
return new CLBancoDoBrasilNN11(titulo);
|
||||
case NN17:
|
||||
if(titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta() < 1000000){
|
||||
return new CLBancoDoBrasilNN17Convenio6(titulo);
|
||||
}else{
|
||||
return new CLBancoDoBrasilNN17Convenio7().build(titulo);
|
||||
}
|
||||
default:
|
||||
throw new NotSupportedCampoLivreException(
|
||||
"Campo livre diponível somente para títulos com nosso número " +
|
||||
"composto por 10 posições(convênio com 7), 11 posições ou " +
|
||||
"17 posições(convênio com 6)."
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Interface comum para todos os campos livres do Banco do Nordeste do
|
||||
* Brasil que venham a existir.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:pporto@gmail.com">Paulo Porto</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public abstract class AbstractCLBancoDoNordesteDoBrasil extends AbstractCampoLivre {
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -5036970456320987443L;
|
||||
|
||||
/**
|
||||
* <p>Cria um campo livre com um determinado número de campos</p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength - Número de campos
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected AbstractCLBancoDoNordesteDoBrasil(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param titulo
|
||||
* @return um CampoLivre
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCLBancoDoNordesteDoBrasil#create(Titulo)
|
||||
*/
|
||||
protected static CampoLivre create(Titulo titulo){
|
||||
return new CLBancoDoNordesteDoBrasil().build(titulo);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
/*
|
||||
* Copyright 2010 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 11/08/2010 - 10:23:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 11/08/2010 - 10:23:00
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Interface comum para todos os campos livres do Banco Intermedium que venham a
|
||||
* existir.
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:lukas.antunes@virtualsistemas.com.br">Lukas
|
||||
* Antunes</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
abstract class AbstractCLBancoIntermedium extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -8103863452995430046L;
|
||||
|
||||
/**
|
||||
* <p>Cria um campo livre com um determinado número de campos</p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength - Número de campos
|
||||
*/
|
||||
protected AbstractCLBancoIntermedium(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
protected static CampoLivre create(Titulo titulo){
|
||||
|
||||
return new CLBancoIntermedium(titulo);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:08:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:08:00
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Interface comum para todos os campos livres do Banco Real que venham a existir.
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
abstract class AbstractCLBancoReal extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -2020155324741631945L;
|
||||
|
||||
/**
|
||||
* <p>Cria um campo livre com um determinado número de campos</p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength - Número de campos
|
||||
*/
|
||||
protected AbstractCLBancoReal(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
protected static CampoLivre create(Titulo titulo){
|
||||
|
||||
return new CLBancoReal(titulo);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Interface comum para todos os campos livres do Banco Santander que venham a
|
||||
* existir.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="mailto:fernandobgi@gmail.com">Fernando Dias</a> -
|
||||
* Colaborador com o campo livre {@code CLBancoRuralCobrancaRegistrada}
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
abstract class AbstractCLBancoRural extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -602454445158254612L;
|
||||
|
||||
/**
|
||||
* <p>Cria um campo livre com um determinado número de campos</p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength - Número de campos
|
||||
*/
|
||||
protected AbstractCLBancoRural(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
protected static CampoLivre create(Titulo titulo) {
|
||||
|
||||
checkCarteiraNotNull(titulo);
|
||||
checkRegistroDaCarteiraNotNull(titulo);
|
||||
|
||||
switch(titulo.getContaBancaria().getCarteira().getTipoCobranca()){
|
||||
case SEM_REGISTRO:
|
||||
return campoSemRegistro(titulo);
|
||||
case COM_REGISTRO:
|
||||
return new CLBancoRuralCobrancaRegistrada(titulo);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determina e cria um campo livre de cobrança não registrada.
|
||||
*
|
||||
* @param titulo
|
||||
* - título com as informações para geração do campo livre
|
||||
* @return campo livre ou null
|
||||
*/
|
||||
private static CampoLivre campoSemRegistro(Titulo titulo) {
|
||||
|
||||
checkNossoNumero(titulo);
|
||||
|
||||
switch(titulo.getNossoNumero().length()){
|
||||
case NN10:
|
||||
return new CLBancoRuralCobrancaNaoRegistradaSeguradora(titulo);
|
||||
case NN15:
|
||||
return new CLBancoRuralCobrancaNaoRegistrada(titulo);
|
||||
default:
|
||||
throw new NotSupportedCampoLivreException(
|
||||
"Combrança sem registro com campo livre diponível somente para títulos com nosso número"
|
||||
+ " composto por 10 posições(apólice de seguro com I.O.S.) e 15 posições(padrão)."
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,151 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 21/04/2008 - 20:27:04
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 21/04/2008 - 20:27:04
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import static java.lang.String.format;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Interface comum para todos os campos livres do Banco Safra que venham a
|
||||
* existir.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
abstract class AbstractCLBancoSafra extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
* {@code serialVersionUID = -555393808447532987L}
|
||||
*/
|
||||
private static final long serialVersionUID = -555393808447532987L;
|
||||
|
||||
/**
|
||||
* Códigos do "Tipo de Cobrança" utilizados nos boletos do Banco Safra.
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
*/
|
||||
protected enum TipoDeCobranca {
|
||||
|
||||
/**
|
||||
* 1 = Bloqueto Emitido pelo Banco.
|
||||
*/
|
||||
BOLETO_EMITIDO_PELO_BANCO,
|
||||
/**
|
||||
* 2 = Eletrônica Emitido pelo Cliente.
|
||||
*/
|
||||
DIRETA_BOLETO_EMITIDO_PELO_CLIENTE,
|
||||
/**
|
||||
* 4 = Express Emitido pelo Cliente.
|
||||
*/
|
||||
EXPRESS_BOLETO_EMITIDO_PELO_CLIENTE;
|
||||
|
||||
public int codigo() {
|
||||
switch (this) {
|
||||
case BOLETO_EMITIDO_PELO_BANCO:
|
||||
return 1;
|
||||
case DIRETA_BOLETO_EMITIDO_PELO_CLIENTE:
|
||||
return 2;
|
||||
case EXPRESS_BOLETO_EMITIDO_PELO_CLIENTE:
|
||||
return 4;
|
||||
default:
|
||||
return (Integer) Exceptions.throwIllegalStateException(format(
|
||||
"Tipo \"%s\" sem código atribuído!", this));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tamanho do campo Constante = 1, chamado de "SISTEMA", definido pelo Banco
|
||||
* Safra nos dois campos livres: {@link CLBancoSafraCobrancaNaoRegistrada} e
|
||||
* {@link CLBancoSafraCobrancaRegistrada}.
|
||||
*/
|
||||
private static final Integer CONSTANT_LENGTH_SISTEMA = Integer.valueOf(1);
|
||||
|
||||
/**
|
||||
* Valor do campo Constante = 7, chamado de "SISTEMA", definido pelo Banco
|
||||
* Safra nos dois campos livres: {@link CLBancoSafraCobrancaNaoRegistrada} e
|
||||
* {@link CLBancoSafraCobrancaRegistrada}.
|
||||
*/
|
||||
private static final Integer CONSTANT_VALUE_SISTEMA = Integer.valueOf(7);
|
||||
|
||||
/**
|
||||
* Constante em forma de campo {@link AbstractCLBancoSafra#CONSTANT_VALUE_SISTEMA} e {@link AbstractCLBancoSafra#CONSTANT_LENGTH_SISTEMA}.
|
||||
*/
|
||||
protected static final FixedField<Integer> SISTEMA_CONSTANT_FIELD = new FixedField<Integer>(CONSTANT_VALUE_SISTEMA, CONSTANT_LENGTH_SISTEMA);
|
||||
|
||||
/**
|
||||
* Tamanho do campo = 1, chamado de "TIPO DE COBRANÇA", definido pelo Banco
|
||||
* Safra nos dois campos livres: {@link CLBancoSafraCobrancaNaoRegistrada} e
|
||||
* {@link CLBancoSafraCobrancaRegistrada}.
|
||||
*/
|
||||
protected static final Integer TIPO_COBRANCA_FIELD_LENGTH = Integer.valueOf(1);
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Cria um campo livre com um determinado número de campos
|
||||
* </p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength
|
||||
* - Número de campos
|
||||
*/
|
||||
protected AbstractCLBancoSafra(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
protected static CampoLivre create(Titulo titulo)
|
||||
throws NotSupportedCampoLivreException {
|
||||
|
||||
checkCarteiraNotNull(titulo);
|
||||
checkRegistroDaCarteiraNotNull(titulo);
|
||||
|
||||
switch (titulo.getContaBancaria().getCarteira().getTipoCobranca()) {
|
||||
case COM_REGISTRO:
|
||||
return new CLBancoSafraCobrancaRegistrada().build(titulo);
|
||||
case SEM_REGISTRO:
|
||||
return new CLBancoSafraCobrancaNaoRegistrada().build(titulo);
|
||||
default:
|
||||
throw new NotSupportedCampoLivreException(
|
||||
"Campo livre diponível somente para títulos com carteiras com tipo de cobrança "
|
||||
+ "COM_REGISTRO ou SEM_REGISTRO.");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,77 @@
|
|||
/*
|
||||
* Copyright 2011 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 17/02/2011 - 12:40:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2011 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 17/02/2011 - 12:40:00
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
*<p>
|
||||
* Interface comum para todos os campos livres do Bancoob (BANCO COOPERATIVO DO
|
||||
* BRASIL S.A.) que venham a existir.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
abstract class AbstractCLBancoob extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
* {@code serialVersionUID = 6080749970883991308L}
|
||||
*/
|
||||
private static final long serialVersionUID = 6080749970883991308L;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Cria um campo livre com um determinado número de campos
|
||||
* </p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength
|
||||
* - Número de campos
|
||||
*/
|
||||
protected AbstractCLBancoob(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param titulo
|
||||
* @return um CampoLivre
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCLBancoDoNordesteDoBrasil#create(Titulo)
|
||||
*/
|
||||
protected static CampoLivre create(Titulo titulo) {
|
||||
|
||||
return new CLBancoobCobrancaNaoRegistrada().build(titulo);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: Dec 13, 2008 - 11:00:04 AM
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: Dec 13, 2008 - 11:00:04 AM
|
||||
*
|
||||
*/
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
*<p>
|
||||
* Interface comum para todos os campos livres do Banco Banestes que venham a
|
||||
* existir.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="mailto:samuelvalerio@gmail.com">Samuel Valério</a> Valerio
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
abstract class AbstractCLBanestes extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 2713363808443832056L;
|
||||
|
||||
/**
|
||||
* <p>Cria um campo livre com um determinado número de campos</p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength - Número de campos
|
||||
*/
|
||||
protected AbstractCLBanestes(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
protected static CampoLivre create(Titulo titulo) throws NotSupportedCampoLivreException {
|
||||
|
||||
return new CLBanestes(titulo);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,245 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 02/08/2008 - 12:06:09
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 02/08/2008 - 12:06:09
|
||||
*
|
||||
*/
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.FixedField;
|
||||
import org.jrimum.vallia.digitoverificador.Modulo;
|
||||
|
||||
/**
|
||||
*<p>
|
||||
* Interface comum para todos os campos livres do Banco Banrisul que venham a
|
||||
* existir.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="mailto:samuelvalerio@gmail.com">Samuel Valério</a> Valerio
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
abstract class AbstractCLBanrisul extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -259398499475894938L;
|
||||
|
||||
/**
|
||||
* <p>Cria um campo livre com um determinado número de campos</p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength - Número de campos
|
||||
*/
|
||||
protected AbstractCLBanrisul(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
protected static CampoLivre create(Titulo titulo) throws NotSupportedCampoLivreException {
|
||||
|
||||
checkCarteiraNotNull(titulo);
|
||||
checkRegistroDaCarteiraNotNull(titulo);
|
||||
|
||||
switch (titulo.getContaBancaria().getCarteira().getTipoCobranca()) {
|
||||
|
||||
case COM_REGISTRO:
|
||||
return new CLBanrisulCobrancaRegistrada(titulo);
|
||||
case SEM_REGISTRO:
|
||||
return new CLBanrisulCobrancaNaoRegistrada(titulo);
|
||||
default:
|
||||
throw new NotSupportedCampoLivreException("Campo livre diponível apenas para carteiras com ou sem cobrança.");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Calcula o duplo dígito referente às posições 20 a 42 (módulos 10 e 11).
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* @param seisPrimeirosCamposConcatenados
|
||||
* @return duplo dígito
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected String calculaDuploDigito(String seisPrimeirosCamposConcatenados) {
|
||||
// calcula soma do módulo 10 a partir dos seis primeiros campos concatenados
|
||||
final int somaMod10 = Modulo.calculeSomaSequencialMod10(seisPrimeirosCamposConcatenados, 1, 2);
|
||||
|
||||
// calcula resto do módulo 10 a partir do resultado da soma
|
||||
final byte restoMod10 = calculeRestoMod10(somaMod10);
|
||||
|
||||
// calcula primeiro DV a partir do resto módulo 10
|
||||
byte primeiroDV = calculePrimeiroDV(restoMod10);
|
||||
|
||||
|
||||
// calcula soma do módulo 10 a partir dos seis primeiros campos concatenados
|
||||
// incluindo o primeiro dígito
|
||||
int somaMod11 = Modulo.calculeSomaSequencialMod11(seisPrimeirosCamposConcatenados + primeiroDV, 2, 7);
|
||||
|
||||
// calcula o resto do módulo 11 a partir do resultado da soma
|
||||
byte restoMod11 = calculeRestoMod11(somaMod11);
|
||||
|
||||
// se o resto do módulo 11 for 1 então o primeiro dígito é inválido
|
||||
// deve ser feito o recálculo até que o resto não seja 1
|
||||
while (restoMod11 == 1) {
|
||||
|
||||
// encontra um valor válido para o primeiro DV
|
||||
primeiroDV = encontreValorValidoParaPrimeiroDV(primeiroDV);
|
||||
|
||||
// calcula a soma do módulo 11 agora com um valor
|
||||
// válido para o DV
|
||||
somaMod11 = Modulo.calculeSomaSequencialMod11(seisPrimeirosCamposConcatenados + primeiroDV, 2, 7);
|
||||
|
||||
// calcula o resto do módulo 11 a partir do resultado da soma
|
||||
restoMod11 = calculeRestoMod11(somaMod11);
|
||||
}
|
||||
|
||||
// calcula o segundo DV a partir do resto módulo 11
|
||||
final byte segundoDV = calculeSegundoDV(restoMod11);
|
||||
|
||||
// concatena o primeiro DV com o segundo DV para
|
||||
// formar o duplo dígito
|
||||
return String.valueOf(primeiroDV) + String.valueOf(segundoDV);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Calcula o segundo dígito verificador.
|
||||
* </p>
|
||||
*
|
||||
* @param restoMod11
|
||||
* @return segundo dígito
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private byte calculeSegundoDV(byte restoMod11) {
|
||||
final byte segundoDV;
|
||||
if (restoMod11 == 0)
|
||||
segundoDV = restoMod11;
|
||||
else
|
||||
segundoDV = (byte) (11 - restoMod11);
|
||||
return segundoDV;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Calcula o primeiro dígito verificador.
|
||||
* </p>
|
||||
*
|
||||
* @param restoMod10
|
||||
* @return primeiro dígito verificador
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private byte calculePrimeiroDV(byte restoMod10) {
|
||||
final byte primeiroDV;
|
||||
if (restoMod10 == 0)
|
||||
primeiroDV = 0;
|
||||
else
|
||||
primeiroDV = (byte) (10 - restoMod10);
|
||||
return primeiroDV;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Calcula o resto da soma módulo 10.
|
||||
* </p>
|
||||
*
|
||||
* @param somaMod10
|
||||
* @return Resto do modúlo 10
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private byte calculeRestoMod10(int somaMod10) {
|
||||
final byte restoMod10;
|
||||
if (somaMod10 < 10)
|
||||
restoMod10 = (byte) somaMod10;
|
||||
else
|
||||
restoMod10 = (byte) (somaMod10 % 10);
|
||||
return restoMod10;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Encontra um valor válido para o primeiro dígito.
|
||||
* </p>
|
||||
*
|
||||
* @param primeiroDV
|
||||
* @return valor válido para o primeiro dígito
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private byte encontreValorValidoParaPrimeiroDV(byte primeiroDV) {
|
||||
final byte novoValorDoPrimeiroDV;
|
||||
if (primeiroDV == 9)
|
||||
novoValorDoPrimeiroDV = 0;
|
||||
else
|
||||
novoValorDoPrimeiroDV = (byte) (primeiroDV + 1);
|
||||
return novoValorDoPrimeiroDV;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Calcula o resto do módulo 11.
|
||||
* </p>
|
||||
*
|
||||
* @param somaMod11
|
||||
* @return restro do módulo 11
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private byte calculeRestoMod11(int somaMod11) {
|
||||
final byte restoMod11;
|
||||
if (somaMod11 < 11)
|
||||
restoMod11 = (byte) somaMod11;
|
||||
else
|
||||
restoMod11 = (byte) (somaMod11 % 11);
|
||||
return restoMod11;
|
||||
}
|
||||
|
||||
protected String concateneOsCamposExistentesAteOMomento() {
|
||||
|
||||
final StringBuilder camposExistentesAteOMomentoConcatenados = new StringBuilder(StringUtils.EMPTY);
|
||||
|
||||
for (FixedField<?> field : this) {
|
||||
camposExistentesAteOMomentoConcatenados.append(field.write());
|
||||
}
|
||||
|
||||
return camposExistentesAteOMomentoConcatenados.toString();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:08:12
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:08:12
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
*<p>
|
||||
* Interface comum para todos os campos livres do Banco Bradesco que venham a
|
||||
* existir.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="http://www.nordestefomento.com.br">Nordeste Fomento
|
||||
* Mercantil</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
abstract class AbstractCLBradesco extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
* {@code serialVersionUID = -1733227746617862639L}
|
||||
*/
|
||||
private static final long serialVersionUID = -1733227746617862639L;
|
||||
|
||||
/**
|
||||
* <p>Cria um campo livre com um determinado número de campos</p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength - Número de campos
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected AbstractCLBradesco(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
protected static CampoLivre create(Titulo titulo){
|
||||
|
||||
return new CLBradesco().build(titulo);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,93 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:08:25
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:08:25
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import static java.lang.String.format;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
*<p>
|
||||
* Interface comum para todos os campos livres do Banco Caixa Econômica Federal
|
||||
* que venham a existir.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="mailto:rogerio@visaosoft.com.br">Rogério Kleinkauf</a> -
|
||||
* Colaborador do campo livre SIGCB
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
abstract class AbstractCLCaixaEconomicaFederal extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -4104858478390595830L;
|
||||
|
||||
/**
|
||||
* <p>Cria um campo livre com um determinado número de campos</p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength - Número de campos
|
||||
*/
|
||||
protected AbstractCLCaixaEconomicaFederal(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
protected static CampoLivre create(Titulo titulo) throws NotSupportedCampoLivreException{
|
||||
|
||||
checkNossoNumero(titulo);
|
||||
|
||||
switch(titulo.getNossoNumero().length()){
|
||||
case NN10:
|
||||
return new CLCaixaEconomicaFederalSICOBNossoNumero10(titulo);
|
||||
case NN14:
|
||||
return new CLCaixaEconomicaFederalSICOBNossoNumero14().build(titulo);
|
||||
case NN15:
|
||||
return new CLCaixaEconomicaFederalSIGCB(titulo);
|
||||
case NN17:
|
||||
return new CLCaixaEconomicaFederalSINCO(titulo);
|
||||
default:
|
||||
throw new NotSupportedCampoLivreException(
|
||||
format("Campo Livre não suportado para o Nosso Número [%s] de tamanho [%s]."
|
||||
+ " Apenas títulos com Nosso Número de tamanho [%s] são suportados (SICOB, SIGCB e SINCO respectivamente)."
|
||||
,titulo.getNossoNumero(), titulo.getNossoNumero().length()
|
||||
,NN10 + "," + NN14 + ","+ NN15 + "," + NN17)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,62 @@
|
|||
/*
|
||||
* Copyright 2014 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 21/01/2014 - 13:31:39
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2014 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 21/01/2014 - 13:31:39
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Interface comum para todos os campos livres do CECRED - Cooperativa Central de Crédito Urbano que
|
||||
* venham a existir.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public abstract class AbstractCLCecred extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -5579081722726761569L;
|
||||
|
||||
protected AbstractCLCecred(Integer fieldsLength) {
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
protected static CampoLivre create(Titulo titulo){
|
||||
return new CLCecred().build(titulo);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:08:12
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:08:12
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Interface comum para todos os campos livres do Banco HSBC que venham a
|
||||
* existir.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="http://www.nordestefomento.com.br">Nordeste Fomento
|
||||
* Mercantil</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
abstract class AbstractCLHSBC extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 3179450500491723317L;
|
||||
|
||||
/**
|
||||
* <p>Cria um campo livre com um determinado número de campos</p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength - Número de campos
|
||||
*/
|
||||
protected AbstractCLHSBC(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
protected static CampoLivre create(Titulo titulo) {
|
||||
|
||||
checkCarteiraNotNull(titulo);
|
||||
checkRegistroDaCarteiraNotNull(titulo);
|
||||
|
||||
switch(titulo.getContaBancaria().getCarteira().getTipoCobranca()){
|
||||
case SEM_REGISTRO:
|
||||
return new CLHSBCCobrancaNaoRegistrada(titulo);
|
||||
case COM_REGISTRO:
|
||||
return new CLHSBCCobrancaRegistrada(titulo);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,138 @@
|
|||
|
||||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 16/04/2008 - 23:08:17
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 16/04/2008 - 23:08:17
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
import static org.jrimum.vallia.digitoverificador.Modulo.MOD10;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.vallia.digitoverificador.Modulo;
|
||||
|
||||
/**
|
||||
*<p>
|
||||
* Interface comum para todos os campos livres do Banco Itaú que venham a
|
||||
* existir.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
abstract class AbstractCLItau extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -3082903872777434482L;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Carteiras especiais sem registro na qual são utilizadas 15 posições numéricas
|
||||
* para identificação do título liquidado (8 do Nosso Número e 7 do Seu Número).
|
||||
* </p>
|
||||
*/
|
||||
private static final Set<Integer> CARTEIRAS_ESPECIAIS = new HashSet<Integer>(8);
|
||||
|
||||
static{
|
||||
|
||||
CARTEIRAS_ESPECIAIS.add(106);
|
||||
CARTEIRAS_ESPECIAIS.add(107);
|
||||
CARTEIRAS_ESPECIAIS.add(122);
|
||||
CARTEIRAS_ESPECIAIS.add(142);
|
||||
CARTEIRAS_ESPECIAIS.add(143);
|
||||
CARTEIRAS_ESPECIAIS.add(195);
|
||||
CARTEIRAS_ESPECIAIS.add(196);
|
||||
CARTEIRAS_ESPECIAIS.add(198);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Cria um campo livre com um determinado número de campos</p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength - Número de campos
|
||||
*/
|
||||
protected AbstractCLItau(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
protected static CampoLivre create(Titulo titulo){
|
||||
|
||||
checkCarteiraNotNull(titulo);
|
||||
checkCodigoDaCarteira(titulo);
|
||||
|
||||
/*
|
||||
* Se a carteira for especial, a forma de construir o campo livre será diferente.
|
||||
*/
|
||||
if(CARTEIRAS_ESPECIAIS.contains(titulo.getContaBancaria().getCarteira().getCodigo())) {
|
||||
|
||||
return new CLItauComCarteirasEspeciais(titulo);
|
||||
|
||||
}else {
|
||||
|
||||
return new CLItauPadrao(titulo);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Método auxiliar para calcular o dígito verificador dos campos 31 e 41.
|
||||
* O dígito é calculado com base em um campo fornecido pelos métodos que o chamam
|
||||
* (<code>calculeDigitoDaPosicao31</code> e <code>calculeDigitoDaPosicao41</code>)
|
||||
* </p>
|
||||
* <p>
|
||||
* O cálculo é feito através do módulo 10.
|
||||
* </p>
|
||||
*
|
||||
* @param campo
|
||||
* @return Dígito verificador do campo fornecido.
|
||||
*
|
||||
* @since
|
||||
*/
|
||||
protected Integer calculeDigitoVerificador(String campo) {
|
||||
|
||||
int restoDivisao = Modulo.calculeMod10(campo, 1, 2);
|
||||
int digito = MOD10 - restoDivisao;
|
||||
|
||||
if(digito > 9) {
|
||||
digito = 0;
|
||||
}
|
||||
|
||||
return new Integer(digito);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 25/09/2008 - 21:20:19
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 25/09/2008 - 21:20:19
|
||||
*
|
||||
*/
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
*<p>
|
||||
* Interface comum para todos os campos livres do Banco Mercantil do Brasil que
|
||||
* venham a existir.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
abstract class AbstractCLMercantilDoBrasil extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -6705784312499730452L;
|
||||
|
||||
/**
|
||||
* <p>Cria um campo livre com um determinado número de campos</p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength - Número de campos
|
||||
*/
|
||||
protected AbstractCLMercantilDoBrasil(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
protected static CampoLivre create(Titulo titulo) throws NotSupportedCampoLivreException {
|
||||
|
||||
return new CLMercantilDoBrasil(titulo);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Interface comum para todos os campos livres do Banco Santander que venham a
|
||||
* existir.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
abstract class AbstractCLSantander extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1882819688182515282L;
|
||||
|
||||
/**
|
||||
* <p>Cria um campo livre com um determinado número de campos</p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength - Número de campos
|
||||
*/
|
||||
protected AbstractCLSantander(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
protected static CampoLivre create(Titulo titulo) {
|
||||
|
||||
return new CLBancoSantander(titulo);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:07:11
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:07:11
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
*<p>
|
||||
* Interface comum para todos os campos livres do Banco Sicredi que venham a
|
||||
* existir.
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
abstract class AbstractCLSicredi extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
* {@code serialVersionUID = 636384334503863949L}
|
||||
*/
|
||||
private static final long serialVersionUID = 636384334503863949L;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Cria um campo livre com um determinado número de campos
|
||||
* </p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength
|
||||
* - Número de campos
|
||||
*/
|
||||
protected AbstractCLSicredi(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
protected static CampoLivre create(Titulo titulo) {
|
||||
|
||||
return new CLSicredi().build(titulo);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.vallia.digitoverificador.Modulo;
|
||||
|
||||
abstract class AbstractCLUnibanco extends AbstractCampoLivre {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -6169577742706045367L;
|
||||
|
||||
/**
|
||||
* <p>Cria um campo livre com um determinado número de campos</p>
|
||||
*
|
||||
* @see AbstractCampoLivre
|
||||
*
|
||||
* @param fieldsLength - Número de campos
|
||||
*/
|
||||
protected AbstractCLUnibanco(Integer fieldsLength) {
|
||||
|
||||
super(fieldsLength);
|
||||
}
|
||||
|
||||
protected static CampoLivre create(Titulo titulo) throws NotSupportedCampoLivreException {
|
||||
|
||||
checkCarteiraNotNull(titulo);
|
||||
checkRegistroDaCarteiraNotNull(titulo);
|
||||
|
||||
switch(titulo.getContaBancaria().getCarteira().getTipoCobranca()){
|
||||
case SEM_REGISTRO:
|
||||
return new CLUnibancoCobrancaNaoRegistrada(titulo);
|
||||
case COM_REGISTRO:
|
||||
return new CLUnibancoCobrancaRegistrada(titulo);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Calcula o dígito verificador para
|
||||
* <em>referência do cliente (cobrança sem registro)</em> e base para
|
||||
* cálculo do <em>super dígito do nosso numero (cobrança com registro)</em>.
|
||||
* </p>
|
||||
*
|
||||
* @param numero
|
||||
* @return String dígito
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
String calculeDigitoEmModulo11(String numero) {
|
||||
|
||||
String dv = "";
|
||||
|
||||
int soma = Modulo.calculeSomaSequencialMod11(numero, 2, 9);
|
||||
|
||||
soma *= 10;
|
||||
|
||||
final int resto = soma % 11;
|
||||
|
||||
if (resto == 10 || resto == 0)
|
||||
dv = "0";
|
||||
else
|
||||
dv = "" + resto;
|
||||
|
||||
return dv;
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,787 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:07:11
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:07:11
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import static java.lang.String.format;
|
||||
import static java.math.BigDecimal.ZERO;
|
||||
import static org.jrimum.domkee.financeiro.banco.febraban.Banco.isCodigoDeCompensacaoOK;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.jrimum.bopepo.BancosSuportados;
|
||||
import org.jrimum.domkee.financeiro.banco.ParametroBancario;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.FixedField;
|
||||
import org.jrimum.texgit.type.component.BlockOfFields;
|
||||
import org.jrimum.utilix.Objects;
|
||||
import org.jrimum.utilix.text.Strings;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Esta classe é responsável por determinar a interface campo livre e também
|
||||
* determinar qual implementação de campo livre se aplica a um determinado
|
||||
* título.
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* Uma outra forma de analisar esta classe é sob o prisma de uma Abstract
|
||||
* Factory.
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* <dl>
|
||||
* <dt><strong>Field Livre:</strong>
|
||||
* <dd>É um espaço reservado no código de barras e a sua implementação varia de
|
||||
* banco para banco.</dd></dt>
|
||||
* </dl>
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="mailto:lukas.antunes@virtualsistemas.com.br">Lukas
|
||||
* Antunes</a> - Colaborador com o banco Intermedium (077)
|
||||
* @author <a href="mailto:fernandobgi@gmail.com">Fernando Dias</a> -
|
||||
* Colaborador com o banco Rural (453)
|
||||
* @author <a href="mailto:pporto@gmail.com">Paulo Porto</a> -
|
||||
* Colaborador com o Banco do Nordeste do Brasil (004).
|
||||
* @author <a href="mailto:fabianojustino@gmail.com">Fabiano Carrijo</a> -
|
||||
* Colaborador com o Banco Citibank (756).
|
||||
* @author <a href="mailto:contato@douglasramiro.com.br">Douglas Ramiro</a> -
|
||||
* Colaborador com o Banco de Brasília (070).
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
abstract class AbstractCampoLivre extends BlockOfFields implements CampoLivre {
|
||||
|
||||
/**
|
||||
* {@code serialVersionUID = 4605730904122445595L}
|
||||
*/
|
||||
private static final long serialVersionUID = 4605730904122445595L;
|
||||
|
||||
/**
|
||||
* Looger.
|
||||
*/
|
||||
private static Logger log = Logger.getLogger(Objects.class);
|
||||
|
||||
/**
|
||||
* Nosso número com 7 posições.
|
||||
*/
|
||||
static final int NN7 = 7;
|
||||
|
||||
/**
|
||||
* Nosso número com 8 posições.
|
||||
*/
|
||||
static final int NN8 = 8;
|
||||
|
||||
/**
|
||||
* Nosso número com 9 posições.
|
||||
*/
|
||||
static final int NN9 = 9;
|
||||
|
||||
/**
|
||||
* Nosso número com 10 posições.
|
||||
*/
|
||||
static final int NN10 = 10;
|
||||
|
||||
/**
|
||||
* Nosso número com 11 posições.
|
||||
*/
|
||||
static final int NN11 = 11;
|
||||
|
||||
/**
|
||||
* Nosso número com 14 posições.
|
||||
*/
|
||||
static final int NN14 = 14;
|
||||
|
||||
/**
|
||||
* Nosso número com 15 posições.
|
||||
*/
|
||||
static final int NN15 = 15;
|
||||
|
||||
/**
|
||||
* Nosso número com 17 posições.
|
||||
*/
|
||||
static final int NN17 = 17;
|
||||
|
||||
/**
|
||||
* Subclasses não precisam definir o tamanho.
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
private AbstractCampoLivre(Integer fieldsLength, Integer stringLength) {
|
||||
super(null,null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria um campo livre com um determinado número de campos
|
||||
*
|
||||
* @param fieldsLength
|
||||
* - Número de campos
|
||||
*/
|
||||
protected AbstractCampoLivre(Integer fieldsLength) {
|
||||
super();
|
||||
setLength(CampoLivre.STRING_LENGTH);
|
||||
setSize(fieldsLength);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cria um campo livre a partir dos dados contidos no título fornecido.
|
||||
*
|
||||
* @param titulo
|
||||
* com todos os dados para a geração do campo livre
|
||||
* @return instância de campo livre ou nulo.
|
||||
* @throws NotSupportedBancoException
|
||||
* Caso o banco informado na conta bancária não tenha nenhuma
|
||||
* implementação de campo livre.
|
||||
* @throws NotSupportedCampoLivreException
|
||||
* Caso exista implementações de campo livre para o banco
|
||||
* informa na conta bancária, mas nenhuma dessas implementações
|
||||
* foram adequadas para os dados do título.
|
||||
* @throws CampoLivreException
|
||||
* Caso ocorra algum problema na geração do campo livre.
|
||||
*/
|
||||
protected static CampoLivre create(Titulo titulo) throws NotSupportedBancoException,
|
||||
NotSupportedCampoLivreException, CampoLivreException {
|
||||
|
||||
if (log.isTraceEnabled()){
|
||||
|
||||
log.trace("Instanciando Campo livre");
|
||||
}
|
||||
if (log.isDebugEnabled()){
|
||||
|
||||
log.debug("titulo instance : " + titulo);
|
||||
}
|
||||
|
||||
try{
|
||||
|
||||
checkTituloNotNull(titulo);
|
||||
checkContaBancariaNotNull(titulo);
|
||||
checkBancoNotNull(titulo);
|
||||
|
||||
if (log.isDebugEnabled()){
|
||||
|
||||
log.debug(format("Campo Livre do Banco: %s", titulo.getContaBancaria().getBanco().getNome()));
|
||||
}
|
||||
|
||||
if (BancosSuportados.isSuportado(titulo.getContaBancaria().getBanco().getCodigoDeCompensacaoBACEN().getCodigoFormatado())) {
|
||||
|
||||
final BancosSuportados banco = BancosSuportados.suportados.get( titulo.getContaBancaria().getBanco().getCodigoDeCompensacaoBACEN().getCodigoFormatado());
|
||||
|
||||
switch (banco) {
|
||||
|
||||
case BANCO_BRADESCO: return AbstractCLBradesco.create(titulo);
|
||||
case BANCO_DO_BRASIL: return AbstractCLBancoDoBrasil.create(titulo);
|
||||
case BANCO_DO_NORDESTE_DO_BRASIL: return AbstractCLBancoDoNordesteDoBrasil.create(titulo);
|
||||
case BANCO_ABN_AMRO_REAL: return AbstractCLBancoReal.create(titulo);
|
||||
case CAIXA_ECONOMICA_FEDERAL: return AbstractCLCaixaEconomicaFederal.create(titulo);
|
||||
case HSBC: return AbstractCLHSBC.create(titulo);
|
||||
case UNIBANCO: return AbstractCLUnibanco.create(titulo);
|
||||
case BANCO_ITAU: return AbstractCLItau.create(titulo);
|
||||
case BANCO_SAFRA: return AbstractCLBancoSafra.create(titulo);
|
||||
case BANCO_DO_ESTADO_DO_RIO_GRANDE_DO_SUL: return AbstractCLBanrisul.create(titulo);
|
||||
case MERCANTIL_DO_BRASIL: return AbstractCLMercantilDoBrasil.create(titulo);
|
||||
case BANCO_DO_ESTADO_DO_ESPIRITO_SANTO: return AbstractCLBanestes.create(titulo);
|
||||
case BANCO_RURAL: return AbstractCLBancoRural.create(titulo);
|
||||
case BANCO_SANTANDER: return AbstractCLSantander.create(titulo);
|
||||
case BANCO_INTEMEDIUM: return AbstractCLBancoIntermedium.create(titulo);
|
||||
case BANCO_SICREDI: return AbstractCLSicredi.create(titulo);
|
||||
case BANCOOB: return AbstractCLBancoob.create(titulo);
|
||||
case CITIBANK: return AbstractCLBancoCitibank.create(titulo);
|
||||
case BANCO_DE_BRASILIA: return AbstractCLBancoDeBrasilia.create(titulo);
|
||||
case CECRED: return AbstractCLCecred.create(titulo);
|
||||
|
||||
default:
|
||||
/*
|
||||
* Se chegar neste ponto e nenhum campo livre foi definido, então é
|
||||
* sinal de que existe implementações de campo livre para o banco em
|
||||
* questão, só que nenhuma destas implementações serviu e a classe
|
||||
* abstrata responsável por fornecer o campo livre não gerou a
|
||||
* exceção NotSupportedCampoLivreException. Trata-se de uma mensagem
|
||||
* genérica que será utilizada somente em último caso.
|
||||
*/
|
||||
throw new NotSupportedCampoLivreException(
|
||||
"Não há implementações de campo livre para o banco "
|
||||
+ titulo.getContaBancaria().getBanco()
|
||||
.getCodigoDeCompensacaoBACEN().getCodigoFormatado()
|
||||
+ " compatíveis com as "
|
||||
+ "caracteríticas do título informado.");
|
||||
}
|
||||
} else {
|
||||
|
||||
/*
|
||||
* Se chegar até este ponto, é sinal de que para o banco em
|
||||
* questão, apesar de estar definido no EnumBancos, não há
|
||||
* implementações de campo livre, logo considera-se o banco com
|
||||
* não suportado.
|
||||
*/
|
||||
throw new NotSupportedBancoException();
|
||||
}
|
||||
} catch(CampoLivreException e) {
|
||||
/*
|
||||
* Caso seja uma exceção esperada.
|
||||
*/
|
||||
throw e;
|
||||
|
||||
} catch(Exception e) {
|
||||
/*
|
||||
* Encapsula-se qualquer outra exceção.
|
||||
*/
|
||||
throw new CampoLivreException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Constrói um campo livre após executar os métodos
|
||||
* {@link AbstractCampoLivre#checkValues(Titulo)} e {@link AbstractCampoLivre#addFields(Titulo)}, retornando em
|
||||
* seguida esta instância pronta para escrita.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @return a instância pronta para escrita
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final CampoLivre build(Titulo titulo) {
|
||||
|
||||
checkValues(titulo);
|
||||
|
||||
addFields(titulo);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Usado pelo método {@link AbstractCampoLivre#build(Titulo)} para verificar a consistência do
|
||||
* campo livre. Se algum inconsistência for verificada, este método deverá
|
||||
* lança-la.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected abstract void checkValues(Titulo titulo);
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Usado pelo método {@link AbstractCampoLivre#build(Titulo)}, adiciona os campos do campo
|
||||
* livre deixando-o pronto para escrita.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected abstract void addFields(Titulo titulo);
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Gera o campo livre a parir dos campos armazenados sem verificar se está
|
||||
* compatível com número de fields declarado pelo campo livre. Isso implica
|
||||
* que a string retornada poderá ser menor do que 25 caracteres.
|
||||
* </p>
|
||||
*
|
||||
* @return string a partir dos campos contidos até o momento.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final String writeFields() {
|
||||
|
||||
StringBuilder campoLivreAtual = new StringBuilder();
|
||||
|
||||
for(FixedField<?> f : this){
|
||||
campoLivreAtual.append(f.write());
|
||||
}
|
||||
|
||||
return campoLivreAtual.toString();
|
||||
}
|
||||
|
||||
/*
|
||||
* Validações inicias.
|
||||
*/
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o título não é nulo, senão lança uma {@code
|
||||
* IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private static void checkTituloNotNull(Titulo titulo){
|
||||
|
||||
Objects.checkNotNull(titulo, "Título não pode ser nulo!");
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se a conta bancária do título não é nula, senão lança uma
|
||||
* {@code IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private static void checkContaBancariaNotNull(Titulo titulo) {
|
||||
|
||||
Objects.checkNotNull(titulo.getContaBancaria(), "Conta bancária do título não pode ser nula!");
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o banco da conta bancária do título não é nulo, senão lança
|
||||
* uma {@code IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private static void checkBancoNotNull(Titulo titulo) {
|
||||
|
||||
Objects.checkNotNull(titulo.getContaBancaria().getBanco(), "Banco da conta bancária do título não pode ser nulo!");
|
||||
|
||||
boolean expression = isCodigoDeCompensacaoOK(titulo.getContaBancaria().getBanco().getCodigoDeCompensacaoBACEN().getCodigoFormatado());
|
||||
|
||||
Objects.checkArgument(expression, format("Código de compensação [%s] inválido!", titulo.getContaBancaria().getBanco().getCodigoDeCompensacaoBACEN().getCodigoFormatado()));
|
||||
}
|
||||
|
||||
/*
|
||||
* Validações para subclasses.
|
||||
*/
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se a carteira da conta bancária do título não é nula, senão
|
||||
* lança uma {@code IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkCarteiraNotNull(Titulo titulo){
|
||||
|
||||
Objects.checkNotNull(titulo.getContaBancaria().getCarteira(), "Carteira da conta bancária do título não pode ser nula!");
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o tipo da carteira da conta bancária do título não é nulo,
|
||||
* senão lança uma {@code IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkRegistroDaCarteiraNotNull(Titulo titulo){
|
||||
|
||||
Objects.checkNotNull(titulo.getContaBancaria().getCarteira().getTipoCobranca(), "Tipo de cobrança (COM ou SEM registro) da carteira não pode ser nulo!");
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o código da carteira da conta bancária do título não é nulo e
|
||||
* se é um número > 0, caso contrário lança uma {@code
|
||||
* IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkCodigoDaCarteira(Titulo titulo){
|
||||
|
||||
Objects.checkNotNull(titulo.getContaBancaria().getCarteira().getCodigo(), "Código da carteira não pode ser nulo!");
|
||||
|
||||
boolean expression = titulo.getContaBancaria().getCarteira().getCodigo() > 0;
|
||||
|
||||
Objects.checkArgument(expression, format("Código da carteira deve ser um número inteiro natural positivo e não [%s].",titulo.getContaBancaria().getCarteira().getCodigo()));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o código da carteira da conta bancária do título é um número
|
||||
* menor que ou igual ao limite informado, caso contrário lança uma {@code
|
||||
* IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
* @param limite - Limite máximo permitido
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkCodigoDaCarteiraMenorOuIgualQue(Titulo titulo, int limite){
|
||||
|
||||
boolean expression = titulo.getContaBancaria().getCarteira().getCodigo() <= limite;
|
||||
|
||||
Objects.checkArgument(expression,format("Código [%s] da carteira deve ser um número menor que ou igual a [%s].", titulo.getContaBancaria().getCarteira().getCodigo(), limite));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se a agência da conta bancária do título não é nula, senão lança
|
||||
* uma {@code IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkAgenciaNotNull(Titulo titulo){
|
||||
|
||||
Objects.checkNotNull(titulo.getContaBancaria().getAgencia(), "Agência bancária do título não pode ser nula!");
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o código do número da agência bancária não é nulo e se é
|
||||
* um número > 0, caso contrário lança uma {@code IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkCodigoDaAgencia(Titulo titulo){
|
||||
|
||||
Objects.checkNotNull(titulo.getContaBancaria().getAgencia().getCodigo(), "Código da agência bancária não pode ser nulo!");
|
||||
|
||||
boolean expression = titulo.getContaBancaria().getAgencia().getCodigo() > 0;
|
||||
|
||||
Objects.checkArgument(expression, format("Código da agência bancária deve ser um número inteiro natural positivo e não [%s].",titulo.getContaBancaria().getAgencia().getCodigo()));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o código do número da agência da conta bancária do título é
|
||||
* um número menor que ou igual ao limite informado, caso contrário lança uma {@code
|
||||
* IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
* @param limite
|
||||
* - Limite máximo permitido
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkCodigoDaAgenciaMenorOuIgualQue(Titulo titulo, int limite){
|
||||
|
||||
boolean expression = titulo.getContaBancaria().getAgencia().getCodigo() <= limite;
|
||||
|
||||
Objects.checkArgument(expression , format("Código [%s] da agência deve ser um número menor que ou igual a [%s].", titulo.getContaBancaria().getAgencia().getCodigo(), limite));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o dígito verificador da agência da conta bancária não é nulo,
|
||||
* não é vazio e se é numérico, caso contrário lança uma {@code
|
||||
* IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkDigitoDoCodigoDaAgencia(Titulo titulo){
|
||||
|
||||
Objects.checkNotNull(titulo.getContaBancaria().getAgencia().getDigitoVerificador(), "Dígito verificador da agência bancária não pode ser nulo!");
|
||||
Strings.checkNotBlank(titulo.getContaBancaria().getAgencia().getDigitoVerificador(), format("Dígito verificador [\"%s\"] da agência bancária não pode ser vazio!",titulo.getContaBancaria().getAgencia().getDigitoVerificador()));
|
||||
Strings.checkNotNumeric(titulo.getContaBancaria().getAgencia().getDigitoVerificador(), format("Nesse contexto o dígito verificador [\"%s\"] da agência bancária deve ser numérico!", titulo.getContaBancaria().getNumeroDaConta().getDigitoDaConta()));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o número da conta da conta bancária do título não é nulo,
|
||||
* senão lança uma {@code IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkNumeroDaContaNotNull(Titulo titulo){
|
||||
|
||||
Objects.checkNotNull(titulo.getContaBancaria().getNumeroDaConta(), "Número da conta bancária do título não pode ser nulo!");
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o código do do número da conta bancária não é nulo e se é um
|
||||
* número > 0, caso contrário lança uma {@code IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkCodigoDoNumeroDaConta(Titulo titulo){
|
||||
|
||||
Objects.checkNotNull(titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), "Código do número da conta bancária não pode ser nulo!");
|
||||
|
||||
boolean expression = titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta() > 0;
|
||||
|
||||
Objects.checkArgument(expression, format("Código do número da conta bancária deve ser um número inteiro natural positivo e não [%s].", titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta()));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o código do número da conta bancária do título é um número
|
||||
* menor que ou igual ao limite informado, caso contrário lança uma {@code
|
||||
* IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
* @param limite - Limite máximo permitido
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkCodigoDoNumeroDaContaMenorOuIgualQue(Titulo titulo, int limite){
|
||||
|
||||
boolean expression = titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta() <= limite;
|
||||
|
||||
Objects.checkArgument(expression, format("Código [%s] do número da conta deve ser um número menor que ou igual a [%s].", titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), limite));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o dígito verificador do número da conta bancária não é nulo,
|
||||
* não é vazio e se é numérico, caso contrário lança uma {@code
|
||||
* IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkDigitoDoCodigoDoNumeroDaConta(Titulo titulo){
|
||||
|
||||
Objects.checkNotNull(titulo.getContaBancaria().getNumeroDaConta().getDigitoDaConta(), "Dígito verificador do número da conta bancária não pode ser nulo!");
|
||||
Strings.checkNotBlank(titulo.getContaBancaria().getNumeroDaConta().getDigitoDaConta(), format("Dígito verificador [\"%s\"] do número da conta bancária não pode ser vazio!", titulo.getContaBancaria().getNumeroDaConta().getDigitoDaConta()));
|
||||
Strings.checkNotNumeric(titulo.getContaBancaria().getNumeroDaConta().getDigitoDaConta(), format("Nesse contexto o dígito verificador [\"%s\"] do número da conta deve ser numérico!", titulo.getContaBancaria().getNumeroDaConta().getDigitoDaConta()));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se onosso número do título não é nulo, não é vazio e se é
|
||||
* numérico, caso contrário lança uma {@code IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkNossoNumero(Titulo titulo){
|
||||
|
||||
Objects.checkNotNull(titulo.getNossoNumero(), "Nosso número do título não pode ser nulo!");
|
||||
Strings.checkNotBlank(titulo.getNossoNumero(), format("Nosso número [\"%s\"] do título não pode ser vazio!", titulo.getNossoNumero()));
|
||||
Strings.checkNotNumeric(titulo.getNossoNumero(), format("Nosso número [\"%s\"] do título deve conter somente dígitos numéricos!", titulo.getNossoNumero()));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o nosso número do título tem o tamanho determinado, caso
|
||||
* contrário lança uma {@code IllegalArgumentException} com a mensagem
|
||||
* <tt>"Tamanho do nosso número [%s] diferente do esperado [%s]!"</tt>.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
* @param length
|
||||
* - Tamanho que deve ser
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkTamanhoDoNossoNumero(Titulo titulo, int length) {
|
||||
|
||||
checkTamanhoNossoNumero(titulo, length, format(
|
||||
"Tamanho [%s] do nosso número [\"%s\"] diferente do esperado [%s]!",
|
||||
StringUtils.length(titulo.getNossoNumero()), titulo.getNossoNumero(), length));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o nosso número do título tem o tamanho determinado, caso
|
||||
* contrário lança uma {@code IllegalArgumentException} com a mensagem
|
||||
* determinada.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
* @param length
|
||||
* - Tamanho que deve ser
|
||||
* @param msg
|
||||
* - Mensagem para erro
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkTamanhoNossoNumero(Titulo titulo, int length, String msg){
|
||||
|
||||
Objects.checkArgument(titulo.getNossoNumero().length() == length, msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o dígito verificador do nosso número do título não é nulo,
|
||||
* não é vazio e se é numérico (natural positivo), caso contrário lança uma
|
||||
* {@code IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkDigitoDoNossoNumero(Titulo titulo){
|
||||
|
||||
Objects.checkNotNull(titulo.getDigitoDoNossoNumero(), "Dígito verificador do nosso número do título não pode ser nulo!");
|
||||
Strings.checkNotBlank(titulo.getDigitoDoNossoNumero(), format("Dígito verificador [\"%s\"] do nosso número do título não pode ser vazio!", titulo.getDigitoDoNossoNumero()));
|
||||
Strings.checkNotNumeric(titulo.getDigitoDoNossoNumero(), format("Nesse contexto o dígito verificador [\"%s\"] do nosso número deve ser um número inteiro positivo!", titulo.getDigitoDoNossoNumero()));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o dígito do nosso número do título tem o tamanho determinado, caso
|
||||
* contrário lança uma {@code IllegalArgumentException} com a mensagem
|
||||
* <tt>"Tamanho [%s] do dígito do nosso número [\"%s\"] diferente do esperado [%s]!"</tt>.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
* @param length
|
||||
* - Tamanho que deve ser
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkTamanhoDigitoDoNossoNumero(Titulo titulo, int length) {
|
||||
|
||||
checkTamanhoDigitoDoNossoNumero(titulo, length, format(
|
||||
"Tamanho [%s] do dígito do nosso número [\"%s\"] diferente do esperado [%s]!",
|
||||
StringUtils.length(titulo.getDigitoDoNossoNumero()), titulo.getDigitoDoNossoNumero(), length));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o dígito do nosso número do título tem o tamanho determinado, caso
|
||||
* contrário lança uma {@code IllegalArgumentException} com a mensagem
|
||||
* determinada.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
* @param length
|
||||
* - Tamanho que deve ser
|
||||
* @param msg
|
||||
* - Mensagem para erro
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkTamanhoDigitoDoNossoNumero(Titulo titulo, int length, String msg){
|
||||
|
||||
Objects.checkArgument(titulo.getDigitoDoNossoNumero().length() == length, msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o valor do título não é nulo e é positivo, caso contrário lança uma
|
||||
* {@code IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkValor(Titulo titulo){
|
||||
|
||||
Objects.checkNotNull(titulo.getValor(), "Valor do título não pode ser nulo!");
|
||||
Objects.checkArgument(titulo.getValor().compareTo(ZERO) >= 0, format("O valor do título deve ser um número positivo ou zero e não [%s].",titulo.getValor()));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o título contém {@code ParametrosBancariosMap} e se este
|
||||
* contém um valor não é nulo do parâmetro determinado, caso contrário lança
|
||||
* uma {@code IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
* @param param
|
||||
* Parâmetro a ser validado
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkParametroBancario(Titulo titulo, ParametroBancario<?> param){
|
||||
|
||||
Objects.checkNotNull(titulo.getParametrosBancarios(), format("O parâmetro bancário [\"%s\"] é necessário! [titulo.getParametrosBancarios() == null]",param));
|
||||
Objects.checkArgument(titulo.getParametrosBancarios().contemComNome(param),format("Parâmetro bancário [\"%s\"] não encontrado!",param));
|
||||
Objects.checkNotNull(titulo.getParametrosBancarios().getValor(param), format("Parâmetro bancário [\"%s\"] não contém valor!", param));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o título com o parâmetro informado é um número inteiro menor
|
||||
* que ou igual ao limite informado, caso contrário lança uma
|
||||
* {@code IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
* @param param
|
||||
* Parâmetro a ser validado
|
||||
* @param limite
|
||||
* Limite máximo permitido
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected final static void checkParametroBancarioMenorOuIgualQue(Titulo titulo, ParametroBancario<?> param, int limite){
|
||||
|
||||
checkParametroBancario(titulo, param);
|
||||
|
||||
int valor = titulo.getParametrosBancarios().getValor(param).intValue();
|
||||
|
||||
boolean expression = valor <= limite;
|
||||
|
||||
Objects.checkArgument(expression, format("Parâmetro [%s] com valor [%s] deve ser um número menor que ou igual a [%s].", param, valor, limite));
|
||||
}
|
||||
|
||||
/**
|
||||
* @see java.lang.Object#toString()
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
|
||||
return Objects.toString(this);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:08:37
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO EST��, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação especÃfica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:08:37
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
|
||||
/**
|
||||
* Interface comum para todos os campos livres do CITIBANK
|
||||
*
|
||||
* @author <a href="mailto:fabianojustino@gmail.com">Fabiano Carrijo Justino</a>
|
||||
* @since 0.2
|
||||
* @version 0.2
|
||||
*/
|
||||
|
||||
class CLBancoCitiBankNN11 extends AbstractCLBancoDoBrasil {
|
||||
private static final long serialVersionUID = -7675528811239346517L;
|
||||
private static final Integer FIELDS_LENGTH = Integer.valueOf(6);
|
||||
|
||||
//TODO OBTER DADOS ATRAVÉS DE OBJETOS DO BOPEPO
|
||||
CLBancoCitiBankNN11(Titulo titulo)
|
||||
{
|
||||
super(FIELDS_LENGTH);
|
||||
ContaBancaria conta = titulo.getContaBancaria();
|
||||
String nossoNumero = titulo.getNossoNumero();
|
||||
// add(new Field(conta.getProduto().getCodigo(), Integer.valueOf(1), Fillers.ZERO_LEFT));
|
||||
// add(new Field(conta.getPortifolio().getCodigo(), Integer.valueOf(3), Fillers.ZERO_LEFT));
|
||||
// add(new Field(conta.getCosmos().getCodigo(), Integer.valueOf(1), Fillers.ZERO_LEFT));
|
||||
// add(new Field(conta.getCosmosConta().getCodigo(), Integer.valueOf(8), Fillers.ZERO_LEFT));
|
||||
// add(new Field(nossoNumero, Integer.valueOf(11), Fillers.ZERO_LEFT));
|
||||
// add(new Field(conta.getProduto().getCodigo(), Integer.valueOf(1), Fillers.ZERO_LEFT));
|
||||
}
|
||||
|
||||
protected void addFields(Titulo titulo)
|
||||
{
|
||||
|
||||
// throw new UnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
protected void checkValues(Titulo titulo)
|
||||
{
|
||||
throw new UnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,359 @@
|
|||
/*
|
||||
* Copyright 2013 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 24/08/2013 - 19:54:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2013 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 24/08/2013 - 19:54:00
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import static java.lang.String.format;
|
||||
import static org.jrimum.bopepo.parametro.ParametroBancoDeBrasilia.CHAVE_ASBACE_DIGITO1;
|
||||
import static org.jrimum.bopepo.parametro.ParametroBancoDeBrasilia.CHAVE_ASBACE_DIGITO2;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.ParametrosBancariosMap;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Objects;
|
||||
import org.jrimum.vallia.digitoverificador.Modulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre do BRB - Banco de Brasília deve seguir esta forma:
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="campolivre">
|
||||
* <thead bgcolor="#DEDEDE">
|
||||
* <tr>
|
||||
* <th>Posição</th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </tr>
|
||||
* </thead> <tbody style="text-align:center">
|
||||
* <tr>
|
||||
* <td >20-22</td>
|
||||
* <td >3</td>
|
||||
* <td >9(3)</td>
|
||||
* <td style="text-align:left;padding-left:10">fixo "000" ZEROS</td>
|
||||
* <td style="text-align:left;padding-left:10">ZEROS</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >23-25</td>
|
||||
* <td >3</td>
|
||||
* <td >9(3)</td>
|
||||
* <td style="text-align:left;padding-left:10">Agência Cedente (Sem o dígito verificador, completar com zeros a esquerda quando necessário)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Agência (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >26-32</td>
|
||||
* <td >7</td>
|
||||
* <td > 9(7)</td>
|
||||
* <td style="text-align:left;padding-left:10">Conta do Cedente (Sem o digito verificador, completar com zeros a esquerda quando necessário)</td>
|
||||
* <td style="text-align:left;padding-left:10">Conta do Cedente (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >33-33</td>
|
||||
* <td >1</td>
|
||||
* <td >9</td>
|
||||
* <td style="text-align:left;padding-left:10">Carteira | Modalidade/ Categoria</td>
|
||||
* <td style="text-align:left;padding-left:10">Categoria - referente ao tipo de cobrança 1-sem registro impressão local, 2-com registro impressão local</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >34-39</td>
|
||||
* <td >6</td>
|
||||
* <td > 9(6)</td>
|
||||
* <td style="text-align:left;padding-left:10">Número do Nosso Número(Sem o digito verificador)</td>
|
||||
* <td style="text-align:left;padding-left:10">Número sequencial</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >40-42</td>
|
||||
* <td >3</td>
|
||||
* <td > 9(3)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código BACEN(Sem o digito verificador)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código do Banco- 070 - BRB</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >43-43</td>
|
||||
* <td >1</td>
|
||||
* <td >9</td>
|
||||
* <td style="text-align:left;padding-left:10">Dígito verificador 1 da CHAVE ASBACE</td>
|
||||
* <td style="text-align:left;padding-left:10">DV1</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >44-44</td>
|
||||
* <td >1</td>
|
||||
* <td >9</td>
|
||||
* <td style="text-align:left;padding-left:10">Dígito verificador 2 da CHAVE ASBACE</td>
|
||||
* <td style="text-align:left;padding-left:10">DV2</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre
|
||||
*
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:contato@douglasramiro.com.br">Douglas Ramiro</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
/**
|
||||
* @author gleitao
|
||||
*
|
||||
*/
|
||||
public class CLBancoDeBrasilia extends AbstractCLBancoDeBrasilia{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -6099168685425835517L;
|
||||
|
||||
/**
|
||||
* Número de campos = 8.
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = Integer.valueOf(8);
|
||||
|
||||
/**
|
||||
* Tamanho do primeiro campo "Campo Zerado [000]" = 3.
|
||||
*/
|
||||
private static final Integer CAMPO_ZERADO_LENGTH = Integer.valueOf(3);
|
||||
|
||||
/**
|
||||
* Valor do campo "Campo Zerado" = "000".
|
||||
*/
|
||||
private static final String CAMPO_ZERADO_VALUE = "000";
|
||||
|
||||
/**
|
||||
* Tamanho do campo Agência = 3.
|
||||
*/
|
||||
private static final Integer AGENCIA_LENGTH = Integer.valueOf(3);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Conta = 7.
|
||||
*/
|
||||
private static final Integer CONTA_LENGTH = Integer.valueOf(7);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Nosso Número = 6.
|
||||
*/
|
||||
private static final Integer NOSSO_NUMERO_LENGTH = Integer.valueOf(6);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Carteira = 1.
|
||||
*/
|
||||
private static final Integer CARTEIRA_LENGTH = Integer.valueOf(1);
|
||||
|
||||
/**
|
||||
* Tamanho do campo do dígito da chave ASBACE = 1.
|
||||
*/
|
||||
private static final Integer DIGITO_CHAVE_ASBACE_LENGTH = Integer.valueOf(1);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Banco = 3.
|
||||
*/
|
||||
private static final Integer BANCO_LENGTH = Integer.valueOf(3);
|
||||
|
||||
/**
|
||||
* Tipo de cobrança: 1-Sem registro impressão local (mesmo que carteira, modalidade ou categoria).
|
||||
*/
|
||||
private static final Integer CARTEIRA_SEM_REGISTRO = Integer.valueOf(1);;
|
||||
|
||||
/**
|
||||
* Tipo de cobrança: 2-Com registro impressão local (mesmo que carteira, modalidade ou categoria).
|
||||
*/
|
||||
private static final Integer CARTEIRA_COM_REGISTRO = Integer.valueOf(2);
|
||||
|
||||
/**
|
||||
* Dígito verificador calculado em função da CHAVE ASBACE e necessário para o cálculo do {@link #digitoVerificador2DaChaveASBACE}.
|
||||
*/
|
||||
private Integer digitoVerificador1DaChaveASBACE;
|
||||
|
||||
/**
|
||||
* Dígito verificador calculado em função da CHAVE ASBACE + {@link #digitoVerificador1DaChaveASBACE}.
|
||||
*/
|
||||
private Integer digitoVerificador2DaChaveASBACE;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Cria um campo livre instanciando o número de fields ({@code FIELDS_LENGTH}) deste campo.
|
||||
* </p>
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected CLBancoDeBrasilia() {
|
||||
super(FIELDS_LENGTH);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre#checkValues(org.jrimum.domkee.financeiro.banco.febraban.Titulo)
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
|
||||
checkAgenciaNotNull(titulo);
|
||||
checkCodigoDaAgencia(titulo);
|
||||
checkCodigoDaAgenciaMenorOuIgualQue(titulo, 999);
|
||||
checkNumeroDaContaNotNull(titulo);
|
||||
checkCodigoDoNumeroDaConta(titulo);
|
||||
checkCodigoDoNumeroDaContaMenorOuIgualQue(titulo, 9999999);
|
||||
checkNossoNumero(titulo);
|
||||
checkTamanhoDoNossoNumero(titulo, 6);
|
||||
checkCarteiraNotNull(titulo);
|
||||
checkCodigoDaCarteira(titulo);
|
||||
checkCarteiraComOuSemRegistro(titulo);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre#addFields(org.jrimum.domkee.financeiro.banco.febraban.Titulo)
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
|
||||
this.add(new FixedField<String>(CAMPO_ZERADO_VALUE, CAMPO_ZERADO_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getAgencia().getCodigo(), AGENCIA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), CONTA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getCarteira().getCodigo(), CARTEIRA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(titulo.getNossoNumero(), NOSSO_NUMERO_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getBanco().getCodigoDeCompensacaoBACEN().getCodigo(), BANCO_LENGTH, Fillers.ZERO_LEFT));
|
||||
calculeDigitosNecessariosDaChaveASBACE();
|
||||
this.add(new FixedField<Integer>(this.digitoVerificador1DaChaveASBACE, DIGITO_CHAVE_ASBACE_LENGTH));
|
||||
this.add(new FixedField<Integer>(this.digitoVerificador2DaChaveASBACE, DIGITO_CHAVE_ASBACE_LENGTH));
|
||||
|
||||
disponibilizeDigitosDaChaveAsbaceNeste(titulo);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcula os dos dígitos verificadores da CHAVE ASBACE.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private void calculeDigitosNecessariosDaChaveASBACE() {
|
||||
calculeChaveAsbaceDigito1();
|
||||
calculeChaveAsbaceDigito2();
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcula o primeiro dígito da CHAVE ASBECE independente do segundo, mas o
|
||||
* segundo DV depende deste e quando o segundo é calculado este pode,
|
||||
* talvez, ser alterado.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private void calculeChaveAsbaceDigito1(){
|
||||
|
||||
final String chaveAasbace = writeFields();
|
||||
|
||||
int dig = Modulo.calculeMod10(chaveAasbace, 1, 2);
|
||||
|
||||
if(dig == 0){
|
||||
this.digitoVerificador1DaChaveASBACE = dig;
|
||||
}else{
|
||||
this.digitoVerificador1DaChaveASBACE = 10 - dig;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcula o segundo dígito da CHAVE ASBECE, recursivamente dependendo do valor do primeiro DV.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private void calculeChaveAsbaceDigito2(){
|
||||
final String chaveAasbaceComDv1 = writeFields()+this.digitoVerificador1DaChaveASBACE;
|
||||
|
||||
int digito2 = Modulo.calculeMod11(chaveAasbaceComDv1, 2, 7);
|
||||
|
||||
if(digito2 == 0){
|
||||
this.digitoVerificador2DaChaveASBACE = digito2;
|
||||
}else{
|
||||
|
||||
if(digito2 != 1){
|
||||
this.digitoVerificador2DaChaveASBACE = 11 - digito2;
|
||||
}else{
|
||||
|
||||
int digito1Recalculado = this.digitoVerificador1DaChaveASBACE + 1;
|
||||
|
||||
this.digitoVerificador1DaChaveASBACE = (digito1Recalculado == 10) ? 0 : digito1Recalculado;
|
||||
|
||||
calculeChaveAsbaceDigito2();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Disponibiliza no objeto titulo os dígitos da CHAVE ASBACE = mesmo que o
|
||||
* campo livre menos os dois ultimos digitos.
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private void disponibilizeDigitosDaChaveAsbaceNeste(Titulo titulo) {
|
||||
|
||||
ParametrosBancariosMap parametrosBancarios = titulo.getParametrosBancarios();
|
||||
|
||||
if(parametrosBancarios == null){
|
||||
parametrosBancarios = new ParametrosBancariosMap();
|
||||
}
|
||||
|
||||
parametrosBancarios.adicione(CHAVE_ASBACE_DIGITO1, this.digitoVerificador1DaChaveASBACE);
|
||||
parametrosBancarios.adicione(CHAVE_ASBACE_DIGITO2, this.digitoVerificador2DaChaveASBACE);
|
||||
|
||||
titulo.setParametrosBancarios(parametrosBancarios);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o código da carteira da conta bancária do título não é nulo e
|
||||
* se é um número > 0, caso contrário lança uma {@code
|
||||
* IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private void checkCarteiraComOuSemRegistro(Titulo titulo) {
|
||||
|
||||
Integer codigoCarteira = titulo.getContaBancaria().getCarteira().getCodigo();
|
||||
|
||||
final boolean carteiraValida = codigoCarteira.equals(CARTEIRA_SEM_REGISTRO) || codigoCarteira.equals(CARTEIRA_COM_REGISTRO);
|
||||
|
||||
Objects.checkArgument(carteiraValida, format("Código da carteira deve ser \"1-Sem registro impressão local\" ou \"2-Com registro impressão local\" e não [%s].", titulo.getContaBancaria().getCarteira().getCodigo()));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,141 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:08:37
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:08:37
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* O campo livre do Banco do Brasil com o nosso número de 10 dígitos deve seguir
|
||||
* esta forma:
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse:
|
||||
* collapse" bordercolor="#111111" width="60%" id="campolivre">
|
||||
* <tr> <thead>
|
||||
* <th >Posição </th>
|
||||
* <th >Tamanho</th>
|
||||
* <th >Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </thead> </tr>
|
||||
* <tr>
|
||||
* <td >20-25</td>
|
||||
* <td >6</td>
|
||||
* <td >9(6) </td>
|
||||
* <td >ZEROS</td>
|
||||
* <td >ZEROS</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >26-32</td>
|
||||
* <td >7</td>
|
||||
* <td >9(7) </td>
|
||||
* <td >Conta do cedente (sem dígito)</td>
|
||||
* <td >Convênio (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >33-42</td>
|
||||
* <td >10</td>
|
||||
* <td >9(10) </td>
|
||||
* <td >Nosso Número</td>
|
||||
* <td >Nosso Número</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >43-44</td>
|
||||
* <td >2</td>
|
||||
* <td >9(2) </td>
|
||||
* <td >Carteira</td>
|
||||
* <td >Carteira</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="http://www.nordestefomento.com.br">Nordeste Fomento
|
||||
* Mercantil</a>
|
||||
*
|
||||
* @since JRimum 1.0
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLBancoDoBrasilNN10 extends AbstractCLBancoDoBrasil {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -7675528811239346517L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = 4;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Dado um título, cria um campo livre para o padrão do Banco do Brasil
|
||||
* que tenha o nosso número de tamanho 10.
|
||||
* </p>
|
||||
* @param titulo título com as informações para geração do campo livre
|
||||
*/
|
||||
CLBancoDoBrasilNN10(Titulo titulo) {
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
ContaBancaria conta = titulo.getContaBancaria();
|
||||
|
||||
String nossoNumero = titulo.getNossoNumero();
|
||||
|
||||
this.add(new FixedField<String>("", 6, Fillers.ZERO_LEFT));
|
||||
|
||||
this.add(new FixedField<Integer>(conta.getNumeroDaConta().getCodigoDaConta(), 7, Fillers.ZERO_LEFT));
|
||||
|
||||
this.add(new FixedField<String>(nossoNumero, 10, Fillers.ZERO_LEFT));
|
||||
|
||||
this.add(new FixedField<Integer>(conta.getCarteira().getCodigo(), 2, Fillers.ZERO_LEFT));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,140 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:08:50
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:08:50
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
|
||||
/**
|
||||
*
|
||||
* O campo livre do Banco do Brasil com o nosso número de 11 dígitos deve seguir
|
||||
* esta forma:
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse:
|
||||
* collapse" bordercolor="#111111" width="60%" id="campolivre">
|
||||
* <tr> <thead>
|
||||
* <th>Posição </th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </thead> </tr>
|
||||
* <tr>
|
||||
* <td>20-30</td>
|
||||
* <td>11</td>
|
||||
* <td>9(11) </td>
|
||||
* <td>Nosso número (sem dígito)</td>
|
||||
* <td>Nosso número (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>31-34</td>
|
||||
* <td>4</td>
|
||||
* <td>9(4) </td>
|
||||
* <td>Código da agência (sem dígito)</td>
|
||||
* <td>Código da Agência (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>35-42</td>
|
||||
* <td>8</td>
|
||||
* <td>9(8) </td>
|
||||
* <td>Código da conta (sem dígito)</td>
|
||||
* <td>Convênio (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >43-44</td>
|
||||
* <td >2</td>
|
||||
* <td >9(2) </td>
|
||||
* <td >Carteira</td>
|
||||
* <td >Carteira</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
*
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="http://www.nordestefomento.com.br">Nordeste Fomento
|
||||
* Mercantil</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLBancoDoBrasilNN11 extends AbstractCLBancoDoBrasil {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -4859699102593834115L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = 4;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Dado um título, cria um campo livre para o padrão do Banco do Brasil
|
||||
* que tenha o nosso número de tamanho 11.
|
||||
* </p>
|
||||
* @param titulo título com as informações para geração do campo livre
|
||||
*/
|
||||
CLBancoDoBrasilNN11(Titulo titulo) {
|
||||
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
ContaBancaria conta = titulo.getContaBancaria();
|
||||
String nossoNumero = titulo.getNossoNumero();
|
||||
|
||||
this.add(new FixedField<String>(nossoNumero, 11, Fillers.ZERO_LEFT));
|
||||
|
||||
this.add(new FixedField<Integer>(conta.getAgencia().getCodigo(), 4, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(conta.getNumeroDaConta().getCodigoDaConta(), 8, Fillers.ZERO_LEFT));
|
||||
|
||||
this.add(new FixedField<Integer>(conta.getCarteira().getCodigo(), 2, Fillers.ZERO_LEFT));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,137 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:09:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:09:00
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
|
||||
/**
|
||||
*
|
||||
* O campo livre do Banco do Brasil com o nosso número de 17 dígitos e convênio
|
||||
* de 7 posições deve seguir esta forma:
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: * collapse" bordercolor="#111111" width="60%" id="campolivre">
|
||||
* <tr>
|
||||
* <thead>
|
||||
* <th>Posição</th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </thead>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>20-25</td>
|
||||
* <td>6</td>
|
||||
* <td>9(6)</td>
|
||||
* <td>Conta do cedente (sem dígito)</td>
|
||||
* <td>Convênio (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>26-42</td>
|
||||
* <td>17</td>
|
||||
* <td>9(17)</td>
|
||||
* <td>Nosso Número (sem dígito)</td>
|
||||
* <td>Nosso Número (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>43-44</td>
|
||||
* <td>2</td>
|
||||
* <td>9(2)</td>
|
||||
* <td>Fixo 21 (serviço)</td>
|
||||
* <td>Fixo 21 (serviço)</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
*
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="http://www.nordestefomento.com.br">Nordeste Fomento
|
||||
* Mercantil</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLBancoDoBrasilNN17Convenio6 extends AbstractCLBancoDoBrasil{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 3035422743112225831L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final int SERVICO = 21;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = 3;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Dado um título, cria um campo livre para o padrão do Banco do Brasil
|
||||
* que tenha o nosso número de tamanho 17.
|
||||
* </p>
|
||||
* @param titulo título com as informações para geração do campo livre
|
||||
*/
|
||||
CLBancoDoBrasilNN17Convenio6(Titulo titulo) {
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
ContaBancaria conta = titulo.getContaBancaria();
|
||||
String nossoNumero = titulo.getNossoNumero();
|
||||
|
||||
this.add(new FixedField<Integer>(conta.getNumeroDaConta().getCodigoDaConta(), 6, Fillers.ZERO_LEFT));
|
||||
|
||||
this.add(new FixedField<String>(nossoNumero, 17, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(SERVICO, 2));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,91 @@
|
|||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
|
||||
/**
|
||||
*
|
||||
* O campo livre do Banco do Brasil com o nosso número de 17 dígitos e convênio
|
||||
* de 7 posições deve seguir esta forma:
|
||||
*
|
||||
|
||||
*
|
||||
*
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLBancoDoBrasilNN17Convenio7 extends AbstractCLBancoDoBrasil {
|
||||
|
||||
/**
|
||||
* {@code serialVersionUID = 2347714390743602306L}
|
||||
*/
|
||||
private static final long serialVersionUID = 2347714390743602306L;
|
||||
|
||||
/**
|
||||
* Número de campos = 3.
|
||||
*/
|
||||
protected static final Integer FIELDS_LENGTH = Integer.valueOf(3);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Constante = 6.
|
||||
*/
|
||||
protected static final Integer CONSTANT_LENGTH = Integer.valueOf(6);
|
||||
|
||||
/**
|
||||
* Valor do campo Constante = 0.
|
||||
*/
|
||||
protected static final Integer CONSTANT_VALUE = Integer.valueOf(0);
|
||||
|
||||
/**
|
||||
* Constante em forma de campo {@link #CONSTANT_VALUE} e
|
||||
* {@link #CONSTANT_LENGTH}, valor escrito: "000000".
|
||||
*/
|
||||
private static final FixedField<Integer> CONSTANT_FIELD = new FixedField<Integer>(CONSTANT_VALUE, CONSTANT_LENGTH, Fillers.ZERO_LEFT);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Nosso Número = 17.
|
||||
*/
|
||||
protected static final Integer NOSSO_NUMERO_LENGTH = Integer.valueOf(17);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Carteira = 2.
|
||||
*/
|
||||
protected static final Integer CARTEIRA_LENGTH = Integer.valueOf(2);
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Cria um campo livre instanciando o número de fields ({@code
|
||||
* FIELDS_LENGTH}) deste campo.
|
||||
* </p>
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected CLBancoDoBrasilNN17Convenio7() {
|
||||
|
||||
super(FIELDS_LENGTH);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
|
||||
checkNossoNumero(titulo);
|
||||
checkTamanhoDoNossoNumero(titulo, NN17);
|
||||
checkCarteiraNotNull(titulo);
|
||||
checkCodigoDaCarteira(titulo);
|
||||
checkCodigoDaCarteiraMenorOuIgualQue(titulo, 99);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
|
||||
this.add(CONSTANT_FIELD);
|
||||
this.add(new FixedField<String>(titulo.getNossoNumero(),NOSSO_NUMERO_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getCarteira().getCodigo(), CARTEIRA_LENGTH, Fillers.ZERO_LEFT));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,218 @@
|
|||
/*
|
||||
* Copyright 2010 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 16/12/2010 - 13:24:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2010 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Created at: 16/12/2010 - 13:24:00
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre do Banco do Nordeste deve seguir esta forma:
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="campolivre">
|
||||
* <thead bgcolor="#DEDEDE">
|
||||
* <tr>
|
||||
* <th>Posição</th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </tr>
|
||||
* </thead> <tbody style="text-align:center">
|
||||
* <tr>
|
||||
* <td>20-23</td>
|
||||
* <td>4</td>
|
||||
* <td>9(4)</td>
|
||||
* <td style="text-align:left;padding-left:10">Agência Cedente (sem o digito verificador, completar com zeros à esquerda quando necessário)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Agência (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>24-30</td>
|
||||
* <td>7</td>
|
||||
* <td>9(7)</td>
|
||||
* <td style="text-align:left;padding-left:10">Conta do Cedente (sem o dígito verificador, completar com zeros à esquerda quando necessário)</td>
|
||||
* <td style="text-align:left;padding-left:10">Conta do Cedente (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>31-31</td>
|
||||
* <td>1</td>
|
||||
* <td>9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10">Dígito da Conta do Cedente</td>
|
||||
* <td style="text-align:left;padding-left:10">Dígito da Conta do Cedente</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>32-38</td>
|
||||
* <td>7</td>
|
||||
* <td>9(7)</td>
|
||||
* <td style="text-align:left;padding-left:10">Nosso Número (sem o dígito verificador, completar com zeros à esquerda quando necessário)</td>
|
||||
* <td style="text-align:left;padding-left:10">Nosso Número (No. Bancário) (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>39-39</td>
|
||||
* <td>1</td>
|
||||
* <td>9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10">Dígito do Nosso Número</td>
|
||||
* <td style="text-align:left;padding-left:10">Dígito do Nosso Número (No. Bancário)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>40-41</td>
|
||||
* <td>2</td>
|
||||
* <td>9(2)</td>
|
||||
* <td style="text-align:left;padding-left:10">Carteira (utilizar o código da carteira)</td>
|
||||
* <td style="text-align:left;padding-left:10">Carteira (Tipo de Operação)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>42-44</td>
|
||||
* <td>3</td>
|
||||
* <td>9(3)</td>
|
||||
* <td style="text-align:left;padding-left:10">Preenchar campo com ZEROS.</td>
|
||||
* <td style="text-align:left;padding-left:10">Campo zerado</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
* <br/>
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:pporto@gmail.com">Paulo Porto</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLBancoDoNordesteDoBrasil extends AbstractCLBancoDoNordesteDoBrasil {
|
||||
|
||||
/**
|
||||
* {@code serialVersionUID = 5203223333877548162L}
|
||||
*/
|
||||
private static final long serialVersionUID = 5203223333877548162L;
|
||||
|
||||
/**
|
||||
* Número de campos = 7.
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = Integer.valueOf(7);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Agência = 4.
|
||||
*/
|
||||
private static final Integer AGENCIA_LENGTH = Integer.valueOf(4);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Conta = 7.
|
||||
*/
|
||||
private static final Integer CONTA_LENGTH = Integer.valueOf(7);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Dígito da Conta = 1.
|
||||
*/
|
||||
private static final Integer DIGITO_CONTA_LENGTH = Integer.valueOf(1);
|
||||
|
||||
|
||||
/**
|
||||
* Tamanho do campo Nosso Número = 7.
|
||||
*/
|
||||
private static final Integer NOSSO_NUMERO_LENGTH = Integer.valueOf(7);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Dígito do Nosso Número = 1.
|
||||
*/
|
||||
private static final Integer DIGITO_NOSSO_NUMERO_LENGTH = Integer.valueOf(1);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Carteira = 2.
|
||||
*/
|
||||
private static final Integer CARTEIRA_LENGTH = Integer.valueOf(2);
|
||||
|
||||
|
||||
/**
|
||||
* Tamanho do campo "Campo Zerado" = 3.
|
||||
*/
|
||||
private static final Integer CAMPO_ZERADO_LENGTH = Integer.valueOf(3);
|
||||
|
||||
/**
|
||||
* Valor do campo "Campo Zerado" = 0.
|
||||
*/
|
||||
protected static final Integer CAMPO_ZERADO_VALUE = Integer.valueOf(0);
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Cria um campo livre instanciando o número de fields ({@code FIELDS_LENGTH}) deste campo.
|
||||
* </p>
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected CLBancoDoNordesteDoBrasil() {
|
||||
super(FIELDS_LENGTH);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre#checkValues(org.jrimum.domkee.financeiro.banco.febraban.Titulo)
|
||||
*/
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo){
|
||||
|
||||
checkAgenciaNotNull(titulo);
|
||||
checkCodigoDaAgencia(titulo);
|
||||
checkCodigoDaAgenciaMenorOuIgualQue(titulo, 9999);
|
||||
checkNumeroDaContaNotNull(titulo);
|
||||
checkCodigoDoNumeroDaConta(titulo);
|
||||
checkCodigoDoNumeroDaContaMenorOuIgualQue(titulo, 9999999);
|
||||
checkDigitoDoCodigoDoNumeroDaConta(titulo);
|
||||
checkNossoNumero(titulo);
|
||||
checkDigitoDoNossoNumero(titulo);
|
||||
checkCarteiraNotNull(titulo);
|
||||
checkCodigoDaCarteira(titulo);
|
||||
checkCodigoDaCarteiraMenorOuIgualQue(titulo, 99);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre#addFields(org.jrimum.domkee.financeiro.banco.febraban.Titulo)
|
||||
*/
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getAgencia().getCodigo(), AGENCIA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), CONTA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(titulo.getContaBancaria().getNumeroDaConta().getDigitoDaConta(), DIGITO_CONTA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(titulo.getNossoNumero(), NOSSO_NUMERO_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(titulo.getDigitoDoNossoNumero(), DIGITO_NOSSO_NUMERO_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getCarteira().getCodigo(), CARTEIRA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(CAMPO_ZERADO_VALUE, CAMPO_ZERADO_LENGTH, Fillers.ZERO_LEFT));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,141 @@
|
|||
/*
|
||||
* Copyright 2010 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 11/08/2010 - 10:23:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 11/08/2010 - 10:23:00
|
||||
*/
|
||||
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
|
||||
|
||||
/**
|
||||
* O campo livre do Banco Intermedium deve seguir esta forma:
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse:
|
||||
* collapse" bordercolor="#111111" width="60%" id="campolivre">
|
||||
* <tr> <thead>
|
||||
* <th >Posição </th>
|
||||
* <th >Tamanho</th>
|
||||
* <th >Picture</th>
|
||||
* <th>Conteúdo</th>
|
||||
* </thead> </tr>
|
||||
* <tr>
|
||||
* <td >20-23</td>
|
||||
* <td >4</td>
|
||||
* <td >4 </td>
|
||||
* <td >Código da agência</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >24-25</td>
|
||||
* <td >2</td>
|
||||
* <td >2 </td>
|
||||
* <td >Constante = 70</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >26-36</td>
|
||||
* <td >11</td>
|
||||
* <td >11 </td>
|
||||
* <td >Nosso número sem o dígito</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >37-42</td>
|
||||
*<td >6</td>
|
||||
* <td >6 </td>
|
||||
* <td >Código da conta</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >43-43</td>
|
||||
* <td >1</td>
|
||||
* <td >1 </td>
|
||||
* <td >Dígito da conta</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >44-44</td>
|
||||
* <td >1</td>
|
||||
* <td >1 </td>
|
||||
* <td >Constante = 0</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:lukas.antunes@virtualsistemas.com.br">Lukas Antunes</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLBancoIntermedium extends AbstractCLBancoIntermedium {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 858563493013156459L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = 6;
|
||||
|
||||
private static final Integer CONSTANTE_70 = Integer.valueOf(70);
|
||||
|
||||
private static final Integer CONSTANTE_0 = Integer.valueOf(0);
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Dado um título, cria um campo livre para banco Intermedium (077).
|
||||
* </p>
|
||||
*
|
||||
* @param titulo - título com as informações para geração do campo livre
|
||||
*/
|
||||
CLBancoIntermedium(Titulo titulo) {
|
||||
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getAgencia().getCodigo(), 4, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(CONSTANTE_70, 2));
|
||||
this.add(new FixedField<String>(titulo.getNossoNumero(), 11, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>( titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), 6, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>( titulo.getContaBancaria().getNumeroDaConta().getDigitoDaConta(), 1, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(CONSTANTE_0, 1));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,194 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:09:11
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:09:11
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
import org.jrimum.utilix.text.Strings;
|
||||
import org.jrimum.vallia.digitoverificador.Modulo;
|
||||
import org.jrimum.vallia.digitoverificador.TipoDeModulo;
|
||||
|
||||
/**
|
||||
* <p><strong>*** COBRANÇA SEM REGISTRO ***</strong></p>
|
||||
* O campo livre do Banco Real deve seguir esta forma:
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse:
|
||||
* collapse" bordercolor="#111111" id="campolivre">
|
||||
* <tr> <thead>
|
||||
* <th >Posição </th>
|
||||
* <th >Tamanho</th>
|
||||
* <th >Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </thead> </tr>
|
||||
* <tr>
|
||||
* <td>20-23</td>
|
||||
* <td>4</td>
|
||||
* <td>9(4)</td>
|
||||
* <td>Código da agência (sem dígito)</td>
|
||||
* <td>Agência - Código da agência do cedente</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>24-30</td>
|
||||
* <td>7</td>
|
||||
* <td>9(7) </td>
|
||||
* <td>Código da conta (sem dígito)</td>
|
||||
* <td>Conta - Número da conta do cedente</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>31-31</td>
|
||||
* <td>1</td>
|
||||
* <td>9(1) </td>
|
||||
* <td>Dígito verificador</td>
|
||||
* <td>Digitão - Dígito de cobrança</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>32-44</td>
|
||||
* <td>13</td>
|
||||
* <td>9(13) </td>
|
||||
* <td>Número do título(máximo de 13 posições numéricas)</td>
|
||||
* <td>Número do banco - Número do título no banco</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
|
||||
class CLBancoReal extends AbstractCLBancoReal {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -5294809022535972391L;
|
||||
|
||||
private static final Modulo modulo10 = new Modulo(TipoDeModulo.MODULO10);
|
||||
|
||||
/**
|
||||
* Tamanho deste campo.
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = 4;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Dado um título, cria um campo livre para o padrão do Banco Real.
|
||||
* </p>
|
||||
* @param titulo título com as informações para geração do campo livre
|
||||
*/
|
||||
CLBancoReal(Titulo titulo) {
|
||||
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getAgencia().getCodigo(), 4, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), 7, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(calculeDigitoDaPosicao31(titulo.getNossoNumero(), titulo.getContaBancaria().getAgencia().getCodigo(), titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta()), 1, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(Strings.eliminateSymbols(titulo.getNossoNumero()), 13, Fillers.ZERO_LEFT));
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Calcula o Dígito da posição <tt>31</tt> deste campo livre (<code>CLBancoReal</code>).
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* No cálculo do dígito da posição 31 são considerados, para a obtenção do
|
||||
* dígito, os dados <em><tt>{[NOSSO NÚMERO],[AGÊNCIA],[CONTA]}</tt></em> calculado pelos
|
||||
* critérios do Módulo 10.
|
||||
* </p>
|
||||
* <h5>Exemplo:</h5>
|
||||
*
|
||||
* <div align="center"> <table border="1" cellpadding="3" cellspacing="0">
|
||||
* <tr>
|
||||
* <td>Nosso Número</td>
|
||||
* <td>1234567890123</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>Agência</td>
|
||||
* <td>4444</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>Conta Corrente</td>
|
||||
* <td>7777777</td>
|
||||
* </tr>
|
||||
* </table></div>
|
||||
*
|
||||
* @param nossoNumero
|
||||
* @param agencia
|
||||
* @param contaCorrente
|
||||
* @return Dígito verficador calculado
|
||||
*
|
||||
* @see org.jrimum.vallia.digitoverificador.Modulo
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private String calculeDigitoDaPosicao31(String nossoNumero,
|
||||
Integer agencia, Integer contaCorrente) {
|
||||
|
||||
StringBuilder formula = new StringBuilder();
|
||||
String dV = null;
|
||||
|
||||
formula.append(Fillers.ZERO_LEFT.fill(nossoNumero, 13));
|
||||
formula.append(Fillers.ZERO_LEFT.fill(agencia, 4));
|
||||
formula.append(Fillers.ZERO_LEFT.fill(contaCorrente, 7));
|
||||
|
||||
int restoDivisao = modulo10.calcule(formula.toString());
|
||||
|
||||
int restoSubtracao = (10 - restoDivisao);
|
||||
|
||||
if (restoSubtracao == 10) {
|
||||
dV = "0";
|
||||
} else {
|
||||
|
||||
dV = "" + restoSubtracao;
|
||||
}
|
||||
|
||||
return dV;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,120 @@
|
|||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import static org.jrimum.bopepo.parametro.ParametroBancoRural.CODIGO_REDUZIDO;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre do Banco Rural, para cobrança não registrada, deve seguir esta
|
||||
* forma:
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="campolivre">
|
||||
* <thead bgcolor="#DEDEDE">
|
||||
* <tr>
|
||||
* <th>Posição</th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </tr>
|
||||
* </thead> <tbody style="text-align:center">
|
||||
* <tr>
|
||||
* <td>20-20</td>
|
||||
* <td>1</td>
|
||||
* <td>9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10">Tipo de Cobrança - 9</td>
|
||||
* <td style="text-align:left;padding-left:10">Tipo de Cobrança - 9</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>21-23</td>
|
||||
* <td>3</td>
|
||||
* <td>9(3)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Agência</td>
|
||||
* <td style="text-align:left;padding-left:10">Agência Cedente</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>24-26</td>
|
||||
* <td>3</td>
|
||||
* <td>9(3)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código Reduzido do Cliente</td>
|
||||
* <td style="text-align:left;padding-left:10">O código reduzido deverá ser
|
||||
* solicitado ao gerente da agência.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>27-41</td>
|
||||
* <td>15</td>
|
||||
* <td>9(15)</td>
|
||||
* <td style="text-align:left;padding-left:10">Seu número</td>
|
||||
* <td style="text-align:left;padding-left:10">Nosso número</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>42-44</td>
|
||||
* <td>3</td>
|
||||
* <td>9(3)</td>
|
||||
* <td style="text-align:left;padding-left:10">Constante "000"</td>
|
||||
* <td style="text-align:left;padding-left:10">Zeros</td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
*/
|
||||
class CLBancoRuralCobrancaNaoRegistrada extends AbstractCLBancoRural{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -837754906530330855L;
|
||||
|
||||
/**
|
||||
* Número de campos.
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = Integer.valueOf(5);
|
||||
|
||||
/**
|
||||
* Tipo de Cobrança = 9.
|
||||
*/
|
||||
private static final Integer TIPO_COBRANCA = Integer.valueOf(9);
|
||||
|
||||
/**
|
||||
* Constante
|
||||
*/
|
||||
private static final String ZEROS = "000";
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Dado um título, cria um campo livre para cobrança não registrada do Banco
|
||||
* Rural.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
* - Título com as informações para geração do campo livre
|
||||
*/
|
||||
CLBancoRuralCobrancaNaoRegistrada(Titulo titulo) {
|
||||
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
this.add( new FixedField<Integer>( TIPO_COBRANCA , 1 ) );
|
||||
this.add( new FixedField<Integer>( titulo.getContaBancaria().getAgencia().getCodigo(), 3 , Fillers.ZERO_LEFT ) );
|
||||
this.add( new FixedField<Integer>(titulo.getParametrosBancarios().<Integer>getValor(CODIGO_REDUZIDO), 3, Fillers.ZERO_LEFT ) );
|
||||
this.add( new FixedField<String>( titulo.getNossoNumero(), 15 , Fillers.ZERO_LEFT ) );
|
||||
this.add( new FixedField<String>( ZEROS, 3));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,127 @@
|
|||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import static org.jrimum.bopepo.parametro.ParametroBancoRural.CODIGO_REDUZIDO;
|
||||
import static org.jrimum.bopepo.parametro.ParametroBancoRural.VALOR_IOS;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
import org.jrimum.utilix.text.DecimalFormat;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre do Banco Rural, para cobrança sem registro (apólice de seguro
|
||||
* com I.O.S.), deve seguir esta forma:
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="campolivre">
|
||||
* <thead bgcolor="#DEDEDE">
|
||||
* <tr>
|
||||
* <th>Posição</th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </tr>
|
||||
* </thead> <tbody style="text-align:center">
|
||||
* <tr>
|
||||
* <td>20-20</td>
|
||||
* <td>1</td>
|
||||
* <td>9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10px">Tipo de Cobrança - 4</td>
|
||||
* <td style="text-align:left;padding-left:10">Tipo de Cobrança - 4</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>21-23</td>
|
||||
* <td>3</td>
|
||||
* <td>9(3)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Agência</td>
|
||||
* <td style="text-align:left;padding-left:10">Agência Cedente</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>24-26</td>
|
||||
* <td>3</td>
|
||||
* <td>9(3)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código Reduzido do Cliente</td>
|
||||
* <td style="text-align:left;padding-left:10">O código reduzido deverá ser
|
||||
* solicitado ao gerente da agência.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>27-36</td>
|
||||
* <td>10</td>
|
||||
* <td>9(10)</td>
|
||||
* <td style="text-align:left;padding-left:10">Seu número</td>
|
||||
* <td style="text-align:left;padding-left:10">Nosso número</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>37-37</td>
|
||||
* <td>1</td>
|
||||
* <td>9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10">Dígito seu Número</td>
|
||||
* <td style="text-align:left;padding-left:10">Dígito nosso número</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>42-44</td>
|
||||
* <td>3</td>
|
||||
* <td>9(3)</td>
|
||||
* <td style="text-align:left;padding-left:10">Valor I.O.S. 05 (cinco) inteiros,
|
||||
* 02 (duas) decimais</td>
|
||||
* <td style="text-align:left;padding-left:10">Valor do imposto</td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
*/
|
||||
class CLBancoRuralCobrancaNaoRegistradaSeguradora extends AbstractCLBancoRural{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -2427800425370567806L;
|
||||
|
||||
/**
|
||||
* Número de campos.
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = Integer.valueOf(6);
|
||||
|
||||
/**
|
||||
* Tipo de Cobrança = 4.
|
||||
*/
|
||||
private static final Integer TIPO_COBRANCA = Integer.valueOf(4);
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Dado um título, cria um campo livre para cobrança sem registro – apólice de seguro com I.O.S..
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
* - título com as informações para geração do campo livre
|
||||
*/
|
||||
CLBancoRuralCobrancaNaoRegistradaSeguradora(Titulo titulo) {
|
||||
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
this.add( new FixedField<Integer>( TIPO_COBRANCA , 1 ) );
|
||||
this.add( new FixedField<Integer>( titulo.getContaBancaria().getAgencia().getCodigo(), 3 , Fillers.ZERO_LEFT ) );
|
||||
this.add( new FixedField<Integer>(titulo.getParametrosBancarios().<Integer>getValor(CODIGO_REDUZIDO), 3, Fillers.ZERO_LEFT ) );
|
||||
this.add( new FixedField<String>( titulo.getNossoNumero(), 10 , Fillers.ZERO_LEFT ) );
|
||||
this.add( new FixedField<String>( titulo.getDigitoDoNossoNumero(), 1 , Fillers.ZERO_LEFT ) );
|
||||
this.add( new FixedField<BigDecimal>(titulo.getParametrosBancarios().<BigDecimal>getValor(VALOR_IOS), 7, DecimalFormat.NUMBER_DD_BR.copy(), Fillers.ZERO_LEFT));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,131 @@
|
|||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre do Banco Rural, para cobrança registrada, deve seguir esta
|
||||
* forma:
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="campolivre">
|
||||
* <thead bgcolor="#DEDEDE">
|
||||
* <tr>
|
||||
* <th>Posição</th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </tr>
|
||||
* </thead> <tbody style="text-align:center">
|
||||
* <tr>
|
||||
* <td>20-20</td>
|
||||
* <td>1</td>
|
||||
* <td>9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10px">Tipo de Cobrança - 0</td>
|
||||
* <td style="text-align:left;padding-left:10">Tipo de Cobrança - 0</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>21-23</td>
|
||||
* <td>3</td>
|
||||
* <td>9(3)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Agência</td>
|
||||
* <td style="text-align:left;padding-left:10">Agência Cedente</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>24-32</td>
|
||||
* <td>9</td>
|
||||
* <td>9(9)</td>
|
||||
* <td style="text-align:left;padding-left:10">Conta Corrente</td>
|
||||
* <td style="text-align:left;padding-left:10">Conta do Cedente</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>33-33</td>
|
||||
* <td>1</td>
|
||||
* <td>9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10">Dígito da Conta Corrente</td>
|
||||
* <td style="text-align:left;padding-left:10">Dígito da Conta do Cedente</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>34-40</td>
|
||||
* <td>7</td>
|
||||
* <td>9(7)</td>
|
||||
* <td style="text-align:left;padding-left:10">Nosso Número</td>
|
||||
* <td style="text-align:left;padding-left:10">Nosso Número</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>41-41</td>
|
||||
* <td>1</td>
|
||||
* <td>9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10">Dígito do Nosso Número</td>
|
||||
* <td style="text-align:left;padding-left:10">Dígito do Nosso Número</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>42-44</td>
|
||||
* <td>3</td>
|
||||
* <td>9(3)</td>
|
||||
* <td style="text-align:left;padding-left:10">Constante "000"</td>
|
||||
* <td style="text-align:left;padding-left:10">Zeros</td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
*
|
||||
* @author <a href="mailto:fernandobgi@gmail.com">Fernando Dias</a>
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
*/
|
||||
class CLBancoRuralCobrancaRegistrada extends AbstractCLBancoRural{
|
||||
|
||||
private static final long serialVersionUID = -5166628254198207874L;
|
||||
|
||||
/**
|
||||
* Número de campos.
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = Integer.valueOf(7);
|
||||
|
||||
/**
|
||||
* Tipo de Cobrança = 0.
|
||||
*/
|
||||
private static final Integer TIPO_COBRANCA = Integer.valueOf(0);
|
||||
|
||||
/**
|
||||
* Constante
|
||||
*/
|
||||
private static final String ZEROS = "000";
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Dado um título, cria um campo livre para cobrança registrada do Banco
|
||||
* Rural.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
* - título com as informações para geração do campo livre
|
||||
*/
|
||||
CLBancoRuralCobrancaRegistrada(Titulo titulo) {
|
||||
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
this.add( new FixedField<Integer>( TIPO_COBRANCA , 1 ) );
|
||||
this.add( new FixedField<Integer>( titulo.getContaBancaria().getAgencia().getCodigo(), 3 , Fillers.ZERO_LEFT ) );
|
||||
this.add( new FixedField<Integer>( titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), 9, Fillers.ZERO_LEFT ) );
|
||||
this.add( new FixedField<String>( titulo.getContaBancaria().getNumeroDaConta().getDigitoDaConta(), 1 ) );
|
||||
this.add( new FixedField<String>( titulo.getNossoNumero(), 7 , Fillers.ZERO_LEFT ) );
|
||||
this.add( new FixedField<String>( titulo.getDigitoDoNossoNumero(), 1 ) );
|
||||
this.add( new FixedField<String>( ZEROS, 3));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,164 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 21/04/2008 - 21:54:06
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 21/04/2008 - 21:54:06
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre do Bradesco deve seguir esta forma:
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="campolivre">
|
||||
* <thead bgcolor="#DEDEDE">
|
||||
* <tr>
|
||||
* <th>Posição</th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </tr>
|
||||
* </thead> <tbody style="text-align:center">
|
||||
* <tr>
|
||||
* <td >20-20</td>
|
||||
* <td >1</td>
|
||||
* <td >9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10">Sistema = constante 7</td>
|
||||
* <td style="text-align:left;padding-left:10">Valor fixo 7</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >21-26</td>
|
||||
* <td >6</td>
|
||||
* <td >9(6)</td>
|
||||
* <td style="text-align:left;padding-left:10">Fixo atribuído pelo banco (*)
|
||||
* Identificação numérica com cinco números + um dígito verificador</td>
|
||||
* <td style="text-align:left;padding-left:10">Número da conta + DV</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >27-43</td>
|
||||
* <td >17</td>
|
||||
* <td > 9(17)</td>
|
||||
* <td style="text-align:left;padding-left:10">Livre do cliente - Variável
|
||||
* conforme necessidade do cliente</td>
|
||||
* <td style="text-align:left;padding-left:10">Nosso Número (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >44-44</td>
|
||||
* <td >1</td>
|
||||
* <td >9</td>
|
||||
* <td style="text-align:left;padding-left:10">Tipo cobrança = constante 4 -
|
||||
* Express Emitido pelo Cliente</td>
|
||||
* <td style="text-align:left;padding-left:10">Valor fixo 4</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLBancoSafraCobrancaNaoRegistrada extends AbstractCLBancoSafra {
|
||||
|
||||
/**
|
||||
* {@code serialVersionUID = -6573340701469029151L}
|
||||
*/
|
||||
private static final long serialVersionUID = -6573340701469029151L;
|
||||
|
||||
/**
|
||||
* Tamanho do número de campos = 5.
|
||||
*/
|
||||
protected static final Integer FIELDS_LENGTH = Integer.valueOf(5);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Conta = 5.
|
||||
*/
|
||||
private static final Integer CONTA_LENGTH = Integer.valueOf(5);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Dígito da Conta = 1.
|
||||
*/
|
||||
private static final Integer CONTA_DIGITO_LENGTH = Integer.valueOf(1);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Nosso Número = 17.
|
||||
*/
|
||||
private static final Integer NOSSO_NUMERO_LENGTH = Integer.valueOf(17);
|
||||
|
||||
/**
|
||||
* Cria um campo livre instanciando o número de fields ({@code FIELDS_LENGTH}
|
||||
* ) deste campo.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected CLBancoSafraCobrancaNaoRegistrada() {
|
||||
|
||||
super(FIELDS_LENGTH);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre#checkValues(org.jrimum.domkee.financeiro.banco.febraban.Titulo)
|
||||
*/
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
|
||||
checkNumeroDaContaNotNull(titulo);
|
||||
checkCodigoDoNumeroDaConta(titulo);
|
||||
checkCodigoDoNumeroDaContaMenorOuIgualQue(titulo, 999999);
|
||||
checkDigitoDoCodigoDoNumeroDaConta(titulo);
|
||||
checkNossoNumero(titulo);
|
||||
checkTamanhoDoNossoNumero(titulo, NN17);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre#addFields(org.jrimum.domkee.financeiro.banco.febraban.Titulo)
|
||||
*/
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
|
||||
this.add(SISTEMA_CONSTANT_FIELD);
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), CONTA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(titulo.getContaBancaria().getNumeroDaConta().getDigitoDaConta(), CONTA_DIGITO_LENGTH));
|
||||
this.add(new FixedField<String>(titulo.getNossoNumero(), NOSSO_NUMERO_LENGTH));
|
||||
this.add(new FixedField<Integer>(TipoDeCobranca.EXPRESS_BOLETO_EMITIDO_PELO_CLIENTE.codigo(), TIPO_COBRANCA_FIELD_LENGTH));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,181 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 21/04/2008 - 20:31:39
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 21/04/2008 - 20:31:39
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre do Bradesco deve seguir esta forma:
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="campolivre">
|
||||
* <thead bgcolor="#DEDEDE">
|
||||
* <tr>
|
||||
* <th>Posição</th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </tr>
|
||||
* </thead> <tbody style="text-align:center">
|
||||
* <tr>
|
||||
* <td >20-20</td>
|
||||
* <td >1</td>
|
||||
* <td >9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10">Sistema = constante 7</td>
|
||||
* <td style="text-align:left;padding-left:10">Valor fixo 7</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >21-34</td>
|
||||
* <td >14</td>
|
||||
* <td >9(14)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código do cliente = Agência +
|
||||
* Conta</td>
|
||||
* <td style="text-align:left;padding-left:10">Código do cliente = (Ag[4] +
|
||||
* dv[1]) + (Cc[8] + dv[1])</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >35-43</td>
|
||||
* <td >9</td>
|
||||
* <td > 9(9)</td>
|
||||
* <td style="text-align:left;padding-left:10">Número do Nosso Número(Sem o
|
||||
* digito verificador)</td>
|
||||
* <td style="text-align:left;padding-left:10">Nosso Número do título exatamente
|
||||
* com 9 dígitos (sem dígito verificador)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >44-44</td>
|
||||
* <td >1</td>
|
||||
* <td >9</td>
|
||||
* <td style="text-align:left;padding-left:10">Tipo cobrança = constante 2 -
|
||||
* Eletrônica Emitido pelo Cliente</td>
|
||||
* <td style="text-align:left;padding-left:10">Valor fixo 2</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLBancoSafraCobrancaRegistrada extends AbstractCLBancoSafra {
|
||||
|
||||
/**
|
||||
* {@code serialVersionUID = -4532989921797507161L}
|
||||
*/
|
||||
private static final long serialVersionUID = -4532989921797507161L;
|
||||
|
||||
/**
|
||||
* Tamanho do número de campos = 7.
|
||||
*/
|
||||
protected static final Integer FIELDS_LENGTH = Integer.valueOf(7);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Agência = 4.
|
||||
*/
|
||||
private static final Integer AGENCIA_LENGTH = Integer.valueOf(4);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Dígito da Agência = 1.
|
||||
*/
|
||||
private static final Integer AGENCIA_DIGITO_LENGTH = Integer.valueOf(1);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Conta = 8.
|
||||
*/
|
||||
private static final Integer CONTA_LENGTH = Integer.valueOf(8);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Dígito da Conta = 1.
|
||||
*/
|
||||
private static final Integer CONTA_DIGITO_LENGTH = Integer.valueOf(1);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Nosso Número = 9.
|
||||
*/
|
||||
private static final Integer NOSSO_NUMERO_LENGTH = Integer.valueOf(9);
|
||||
|
||||
/**
|
||||
* Cria um campo livre instanciando o número de fields ({@code FIELDS_LENGTH}
|
||||
* ) deste campo.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected CLBancoSafraCobrancaRegistrada() {
|
||||
|
||||
super(FIELDS_LENGTH);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre#checkValues(org.jrimum.domkee.financeiro.banco.febraban.Titulo)
|
||||
*/
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo){
|
||||
|
||||
checkAgenciaNotNull(titulo);
|
||||
checkCodigoDaAgencia(titulo);
|
||||
checkCodigoDaAgenciaMenorOuIgualQue(titulo, 9999);
|
||||
checkDigitoDoCodigoDaAgencia(titulo);
|
||||
checkNumeroDaContaNotNull(titulo);
|
||||
checkCodigoDoNumeroDaConta(titulo);
|
||||
checkCodigoDoNumeroDaContaMenorOuIgualQue(titulo, 999999);
|
||||
checkDigitoDoCodigoDoNumeroDaConta(titulo);
|
||||
checkNossoNumero(titulo);
|
||||
checkTamanhoDoNossoNumero(titulo, NN9);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre#addFields(org.jrimum.domkee.financeiro.banco.febraban.Titulo)
|
||||
*/
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
|
||||
this.add(SISTEMA_CONSTANT_FIELD);
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getAgencia().getCodigo(), AGENCIA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(titulo.getContaBancaria().getAgencia().getDigitoVerificador(), AGENCIA_DIGITO_LENGTH));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), CONTA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(titulo.getContaBancaria().getNumeroDaConta().getDigitoDaConta(), CONTA_DIGITO_LENGTH));
|
||||
this.add(new FixedField<String>(titulo.getNossoNumero(), NOSSO_NUMERO_LENGTH));
|
||||
this.add(new FixedField<Integer>(TipoDeCobranca.DIRETA_BOLETO_EMITIDO_PELO_CLIENTE.codigo(), TIPO_COBRANCA_FIELD_LENGTH));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,184 @@
|
|||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import static org.jrimum.bopepo.parametro.ParametroBancoSantander.IOF_SEGURADORA;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
import org.jrimum.utilix.Objects;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre do Banco Santander deve seguir esta forma:
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: * collapse" bordercolor="#111111" width="60%" id="campolivre">
|
||||
* <tr>
|
||||
* <thead>
|
||||
* <th >Posição</th>
|
||||
* <th >Tamanho</th>
|
||||
* <th >Picture</th>
|
||||
* <th>Conteúdo</th>
|
||||
* </thead>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >20-20</td>
|
||||
* <td >1</td>
|
||||
* <td >9(01)</td>
|
||||
* <td >Fixo "9"</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >21-27</td>
|
||||
* <td >7</td>
|
||||
* <td >9(7)</td>
|
||||
* <td >Conta do cedente padrão Santander</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >28-40</td>
|
||||
* <td >13</td>
|
||||
* <td >9(13)</td>
|
||||
* <td >
|
||||
* <p>
|
||||
* Nosso Número com zeros a esquerda. <strong>OBS:</strong> Caso o arquivo de
|
||||
* registro para os títulos seja de 400 bytes (CNAB)
|
||||
* </p>
|
||||
* <ul>
|
||||
* <li>Banco 353 (Banco Santander) - Utilizar somente 08 posições do Nosso Numero (07 posições +
|
||||
* DV), zerando os 05 primeiros dígitos</li>
|
||||
* <li>Banco 008 (Meridional do Brasil S/A) - Utilizar somente 09 posições do Nosso Numero (08 posições +
|
||||
* DV), zerando os 04 primeiros dígitos</li>
|
||||
* </ul>
|
||||
* </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >41-41</td>
|
||||
* <td >1</td>
|
||||
* <td >9(1)</td>
|
||||
* <td >
|
||||
* <p>
|
||||
* IOF – Seguradoras (Se 7% informar 7. Limitado a 9%)
|
||||
* </p>
|
||||
* <p>
|
||||
* <strong>Demais clientes usar 0 (zero)</strong>
|
||||
* </p>
|
||||
* </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >42-44</td>
|
||||
* <td >3</td>
|
||||
* <td >9(3)</td>
|
||||
* <td >
|
||||
* <ul>
|
||||
* <li>101 - Cobrança Simples Rápida COM Registro</li>
|
||||
* <li>102 - Cobrança simples – SEM Registro</li>
|
||||
* <li>104 - Cobrança Simples Eletrônica - COM Registro</li>
|
||||
* <li>201 - Penhor Rápida com Registro</li>
|
||||
* </ul>
|
||||
* </td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:">Dani Schinniger</a>
|
||||
*/
|
||||
class CLBancoSantander extends AbstractCLSantander implements CampoLivre {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -412221524249334574L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = 5;
|
||||
|
||||
/**
|
||||
* Constante informada no manual.
|
||||
*/
|
||||
private static final Integer CONSTANTE = Integer.valueOf(9);
|
||||
|
||||
/**
|
||||
* 101- Cobrança Simples Rápida COM Registro
|
||||
*/
|
||||
private static final int CARTEIRA_RAPIDA_COM_REGISTRO = 101;
|
||||
|
||||
/**
|
||||
* 201- Penhor Rápida com Registro
|
||||
*/
|
||||
private static final int CARTEIRA_RAPIDA_SEM_REGISTRO = 201;
|
||||
|
||||
/**
|
||||
* 102- Cobrança simples – SEM Registro
|
||||
*/
|
||||
private static final int CARTEIRA_SIMPLES_SEM_REGISTRO = 102;
|
||||
|
||||
/**
|
||||
* 104- Cobrança Simples Eletrônica - COM Registro
|
||||
*/
|
||||
private static final int COBRANCA_SIMPLES_ELETRONICA_COM_REGISTRO = 104;
|
||||
|
||||
CLBancoSantander(Titulo titulo) {
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
ContaBancaria conta = titulo.getContaBancaria();
|
||||
StringBuilder nossoNumero = new StringBuilder(titulo.getNossoNumero());
|
||||
nossoNumero.append(titulo.getDigitoDoNossoNumero());
|
||||
|
||||
this.add(new FixedField<Integer>(CONSTANTE, 1));
|
||||
this.add(new FixedField<Integer>(conta.getNumeroDaConta().getCodigoDaConta(), 7, Fillers.ZERO_LEFT));
|
||||
// this.add(new FixedField<String>(conta.getNumeroDaConta().getDigitoDaConta(), 1));
|
||||
|
||||
this.add(new FixedField<String>(nossoNumero.toString(), 13, Fillers.ZERO_LEFT));
|
||||
|
||||
// IOF – Seguradoras
|
||||
|
||||
if (titulo.hasParametrosBancarios()
|
||||
&& Objects.isNotNull(titulo.getParametrosBancarios().getValor(
|
||||
IOF_SEGURADORA))) {
|
||||
|
||||
this.add(new FixedField<Integer>(titulo
|
||||
.getParametrosBancarios().<Integer>getValor(IOF_SEGURADORA), 1));
|
||||
|
||||
} else {
|
||||
|
||||
this.add(new FixedField<Integer>(0, 1));
|
||||
}
|
||||
|
||||
// Tipo de Modalidade Carteira
|
||||
|
||||
switch (conta.getCarteira().getCodigo()) {
|
||||
|
||||
case CARTEIRA_RAPIDA_COM_REGISTRO:
|
||||
case CARTEIRA_RAPIDA_SEM_REGISTRO:
|
||||
case CARTEIRA_SIMPLES_SEM_REGISTRO:
|
||||
case COBRANCA_SIMPLES_ELETRONICA_COM_REGISTRO:
|
||||
|
||||
this.add(new FixedField<Integer>(conta.getCarteira().getCodigo(), 3,
|
||||
Fillers.ZERO_LEFT));
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
Exceptions.throwIllegalArgumentException(String.format(
|
||||
"CARTEIRA [%s] NÃO SUPORTADA!", conta.getCarteira()
|
||||
.getCodigo()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,238 @@
|
|||
/*
|
||||
* Copyright 2011 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 17/02/2011 - 12:40:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2011 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 17/02/2011 - 12:40:00
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import static org.jrimum.bopepo.parametro.ParametroBancoob.MODALIDADE_DE_COBRANCA;
|
||||
import static org.jrimum.bopepo.parametro.ParametroBancoob.NUMERO_DA_PARCELA;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre do bradesco deve seguir esta forma:
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="campolivre">
|
||||
* <thead bgcolor="#DEDEDE">
|
||||
* <tr>
|
||||
* <th>Posição</th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </tr>
|
||||
* </thead> <tbody style="text-align:center">
|
||||
* <tr>
|
||||
* <td >20-20</td>
|
||||
* <td >1</td>
|
||||
* <td >9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10">Carteira</td>
|
||||
* <td style="text-align:left;padding-left:10">Carteira</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >21-24</td>
|
||||
* <td >4</td>
|
||||
* <td >9(4)</td>
|
||||
* <td style="text-align:left;padding-left:10">Agência Cedente (Cooperativa) (sem o dígito
|
||||
* verificador, completar com zeros a esquerda quando necessário)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Agência (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >25-26</td>
|
||||
* <td >2</td>
|
||||
* <td >9(2)</td>
|
||||
* <td style="text-align:left;padding-left:10">Modalidade</td>
|
||||
* <td style="text-align:left;padding-left:10">Modalidade</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >27-33</td>
|
||||
* <td >7</td>
|
||||
* <td >9(7)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código do Cliente (sem o dígito
|
||||
* verificador, completar com zeros a esquerda quando necessário)</td>
|
||||
* <td style="text-align:left;padding-left:10">Conta do Beneficiário (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >34-40</td>
|
||||
* <td >7</td>
|
||||
* <td >9(7)</td>
|
||||
* <td style="text-align:left;padding-left:10">Número do título(sem o dígito
|
||||
* verificador, completar com zeros a esquerda quando necessário)</td>
|
||||
* <td style="text-align:left;padding-left:10">Nosso Número (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >41-41</td>
|
||||
* <td >1</td>
|
||||
* <td >9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10">Dígito verificador do Nosso Número</td>
|
||||
* <td style="text-align:left;padding-left:10">Dígito verificador do Nosso Número</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >42-44</td>
|
||||
* <td >3</td>
|
||||
* <td >9(3)</td>
|
||||
* <td style="text-align:left;padding-left:10">Número da Parcela (completar com zeros a esquerda quando necessário)</td>
|
||||
* <td style="text-align:left;padding-left:10">Número da Parcela</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre
|
||||
*
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author Rômulo Augusto
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class CLBancoobCobrancaNaoRegistrada extends AbstractCLBancoob{
|
||||
|
||||
/**
|
||||
* {@code serialVersionUID = 2864939240695151533L}
|
||||
*/
|
||||
private static final long serialVersionUID = 2864939240695151533L;
|
||||
|
||||
/**
|
||||
* Número de campos = 6.
|
||||
*/
|
||||
protected static final Integer FIELDS_LENGTH = 8;
|
||||
|
||||
/**
|
||||
* Tamanho do campo Carteira = 1.
|
||||
*/
|
||||
protected static final Integer CARTEIRA_LENGTH = Integer.valueOf(1);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Agência = 4.
|
||||
*/
|
||||
protected static final Integer AGENCIA_LENGTH = Integer.valueOf(4);
|
||||
|
||||
/**
|
||||
* Tamanho do campo código da modalidade de cobrança = 2.
|
||||
*/
|
||||
protected static final Integer MODALIDADE_DE_COBRANCA_LENGTH = Integer.valueOf(2);
|
||||
|
||||
/**
|
||||
* Valor do código da modalidade de cobrança (01) = SIMPLES.
|
||||
*/
|
||||
protected static final Integer COBRANCA_SIMPLES = Integer.valueOf(1);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Nosso Número = 7.
|
||||
*/
|
||||
private static final Integer NOSSO_NUMERO_LENGTH = Integer.valueOf(7);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Dígito Verificador do Nosso Número = 1.
|
||||
*/
|
||||
private static final Integer DV_NOSSO_NUMERO_LENGTH = Integer.valueOf(1);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Conta = 6.
|
||||
*/
|
||||
private static final Integer CONTA_LENGTH = Integer.valueOf(6);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Dígito da conta = 1
|
||||
*/
|
||||
private static final Integer DV_CONTA_LENGTH = 1;
|
||||
|
||||
/**
|
||||
* Valor do número de parcelas = 1.
|
||||
*/
|
||||
private static final Integer UMA_PARCELA = Integer.valueOf(1);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Conta = 3.
|
||||
*/
|
||||
private static final Integer NUMERO_DA_PARCELA_LENGTH = 3;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Cria um campo livre instanciando o número de fields ({@code FIELDS_LENGTH}) deste campo.
|
||||
* </p>
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected CLBancoobCobrancaNaoRegistrada() {
|
||||
super(FIELDS_LENGTH);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
|
||||
checkCarteiraNotNull(titulo);
|
||||
checkCodigoDaCarteira(titulo);
|
||||
checkCodigoDaCarteiraMenorOuIgualQue(titulo, 9);
|
||||
checkAgenciaNotNull(titulo);
|
||||
checkCodigoDaAgencia(titulo);
|
||||
checkCodigoDaAgenciaMenorOuIgualQue(titulo, 9999);
|
||||
checkNossoNumero(titulo);
|
||||
checkTamanhoDoNossoNumero(titulo, NN7);
|
||||
checkDigitoDoNossoNumero(titulo);
|
||||
checkTamanhoDigitoDoNossoNumero(titulo, DV_NOSSO_NUMERO_LENGTH);
|
||||
checkNumeroDaContaNotNull(titulo);
|
||||
checkCodigoDoNumeroDaConta(titulo);
|
||||
checkCodigoDoNumeroDaContaMenorOuIgualQue(titulo, 9999999);
|
||||
checkDigitoDoCodigoDoNumeroDaConta(titulo);
|
||||
checkCodigoDoNumeroDaContaMenorOuIgualQue(titulo, 999999);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
|
||||
Integer codigoDaModalidadeDeCobranca = COBRANCA_SIMPLES;
|
||||
Integer numeroDaParcela = UMA_PARCELA;
|
||||
|
||||
if (titulo.hasParametrosBancarios()) {
|
||||
|
||||
if (titulo.getParametrosBancarios().contemComNome(MODALIDADE_DE_COBRANCA)) {
|
||||
checkParametroBancario(titulo, MODALIDADE_DE_COBRANCA);
|
||||
codigoDaModalidadeDeCobranca = titulo.getParametrosBancarios().getValor(MODALIDADE_DE_COBRANCA);
|
||||
}
|
||||
|
||||
if (titulo.getParametrosBancarios().contemComNome(NUMERO_DA_PARCELA)) {
|
||||
checkParametroBancario(titulo, NUMERO_DA_PARCELA);
|
||||
numeroDaParcela = titulo.getParametrosBancarios().getValor(NUMERO_DA_PARCELA);
|
||||
}
|
||||
}
|
||||
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getCarteira().getCodigo(), CARTEIRA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getAgencia().getCodigo(), AGENCIA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(codigoDaModalidadeDeCobranca, MODALIDADE_DE_COBRANCA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), CONTA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(titulo.getContaBancaria().getNumeroDaConta().getDigitoDaConta(), DV_CONTA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(titulo.getNossoNumero(),NOSSO_NUMERO_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(titulo.getDigitoDoNossoNumero(),DV_NOSSO_NUMERO_LENGTH));
|
||||
this.add(new FixedField<Integer>(numeroDaParcela, NUMERO_DA_PARCELA_LENGTH, Fillers.ZERO_LEFT));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,222 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: Dec 13, 2008 - 10:40:38 AM
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: Dec 13, 2008 - 10:40:38 AM
|
||||
*
|
||||
*/
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import static org.jrimum.utilix.Objects.exists;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.TipoDeCobranca;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
import org.jrimum.vallia.digitoverificador.Modulo;
|
||||
import org.jrimum.vallia.digitoverificador.TipoDeModulo;
|
||||
|
||||
/**
|
||||
*
|
||||
* <p>
|
||||
* Representação do campo livre usado para boletos com carteiras (<em>cobrança</em>)
|
||||
* sem registro, caucionadas e com registro. O tipo de cobrança de carteira caucionada
|
||||
* se enquadra no conceito de cobrança registrada, sendo diferenciada pelo código
|
||||
* da carteira.
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* Layout:<br />
|
||||
* <div align="center">
|
||||
* <p align="center">
|
||||
* <font face="Arial">Cobrança Normal - CAMPO LIVRE - Chave ASBACE</font>
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse:
|
||||
* collapse" bordercolor="#111111" >
|
||||
* <tr>
|
||||
* <td align="center" bgcolor="#C0C0C0"><strong><font face="Arial">Posição</font></strong></td>
|
||||
* <td bgcolor="#C0C0C0"><strong><font face="Arial">Campo Livre No Código De
|
||||
* Barras (20 a 44)</font></strong></td>
|
||||
* <tr>
|
||||
* <td align="center"><font face="Arial">20 a 27</font></td>
|
||||
* <td><font face="Arial">Nosso Número (sem os dois dígitos)</font></td>
|
||||
*
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td align="center"><font face="Arial">28 a 38</font></td>
|
||||
* <td><font face="Arial">Conta Corrente</font></td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td align="center"><font face="Arial">39 a 39</font></td>
|
||||
*
|
||||
* <td><font face="Arial">Produto = 2-Sem registro; 3-Caucionada; 4,5,6 e 7-Cobrança com registro</font></td>
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td align="center"><font face="Arial">40 a 42</font></td>
|
||||
* <td><font face="Arial">Constante = "021" Código do BANESTES </font></td>
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td align="center"><font face="Arial">43 a 44</font></td>
|
||||
* <td><font face="Arial">Duplo Dígito referente às posições 20 a 42</font></td>
|
||||
* </tr>
|
||||
*
|
||||
* </table> </div>
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="mailto:samuelvalerio@gmail.com">Samuel Valério</a> Valerio
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLBanestes extends AbstractCLBanestes {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 476678476727564241L;
|
||||
|
||||
private static final Integer FIELDS_LENGTH = 5;
|
||||
|
||||
public CLBanestes(Titulo titulo) {
|
||||
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
this.add(new FixedField<Integer>(Integer.valueOf(titulo.getNossoNumero()), 8, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), 11, Fillers.ZERO_LEFT));
|
||||
|
||||
final Integer codigoDaCarteiraDeCobranca = titulo.getContaBancaria().getCarteira().getCodigo();
|
||||
|
||||
if (exists(codigoDaCarteiraDeCobranca)) {
|
||||
this.add(new FixedField<Integer>(codigoDaCarteiraDeCobranca, 1));
|
||||
|
||||
} else {
|
||||
|
||||
final TipoDeCobranca tipoDeCobranca = titulo.getContaBancaria().getCarteira().getTipoCobranca();
|
||||
|
||||
if (tipoDeCobranca == null) {
|
||||
throw new CampoLivreException("Tipo de cobrança da carteira não foi especificado!");
|
||||
}
|
||||
|
||||
switch (tipoDeCobranca) {
|
||||
|
||||
case SEM_REGISTRO:
|
||||
this.add(new FixedField<Integer>(2, 1));
|
||||
break;
|
||||
|
||||
case COM_REGISTRO:
|
||||
if (codigoDaCarteiraDeCobranca >= 3 && codigoDaCarteiraDeCobranca <= 7) {
|
||||
|
||||
this.add(new FixedField<Integer>(codigoDaCarteiraDeCobranca, 1));
|
||||
break;
|
||||
|
||||
} else {
|
||||
throw new CampoLivreException("Código da carteira de cobrança com registro deve ser" +
|
||||
" especificado com 3,4,5,6 ou 7. Valor atual = [" + codigoDaCarteiraDeCobranca + "]");
|
||||
}
|
||||
default:
|
||||
throw new CampoLivreException("Tipo de cobrança [" + tipoDeCobranca + "] não é suportado!");
|
||||
|
||||
}
|
||||
}
|
||||
this.add(new FixedField<Byte>(titulo.getContaBancaria().getBanco().getCodigoDeCompensacaoBACEN().getCodigo().byteValue(), 3, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Byte>(calculaDuploDV(), 2, Fillers.ZERO_LEFT));
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcula duplo dígito verificador da posição 0 à 23 do campo livre (Chave ASBACE)..
|
||||
*
|
||||
* @return Duplo dígito verificador.
|
||||
*
|
||||
*/
|
||||
private byte calculaDuploDV() {
|
||||
final byte duploDV;
|
||||
|
||||
String fields = writeFields();
|
||||
|
||||
byte primeiroDV = calculaPrimeiroDV(fields);
|
||||
|
||||
final byte segundoDV;
|
||||
|
||||
// resto proveniente do módulo 11 com pesos de 2 a 7
|
||||
int restoDoModulo11 = new Modulo(TipoDeModulo.MODULO11, 7, 2).calcule(fields + primeiroDV);
|
||||
|
||||
if (restoDoModulo11 == 0) {
|
||||
segundoDV = 0;
|
||||
} else if (restoDoModulo11 == 1) {
|
||||
if (primeiroDV == 9) {
|
||||
primeiroDV = 0;
|
||||
} else {
|
||||
primeiroDV++;
|
||||
}
|
||||
segundoDV = (byte) new Modulo(TipoDeModulo.MODULO11, 7, 2).calcule(fields + primeiroDV);
|
||||
} else {
|
||||
segundoDV = (byte) (11 - restoDoModulo11);
|
||||
}
|
||||
|
||||
duploDV = Byte.parseByte(String.valueOf(primeiroDV) + String.valueOf(segundoDV));
|
||||
|
||||
return duploDV;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcula o primeiro dígito verificador.
|
||||
*
|
||||
* @param fields
|
||||
*
|
||||
* @return O primeiro dígito verificador dos dois existentes na chave ASBACE (Campo livre).
|
||||
*/
|
||||
private byte calculaPrimeiroDV(String fields) {
|
||||
final byte primeiroDV;
|
||||
|
||||
// resto proveniente do módulo 10
|
||||
byte restoDoModulo10 = (byte) new Modulo(TipoDeModulo.MODULO10).calcule(fields);
|
||||
|
||||
// se não houver resto, primeiroDV = 0
|
||||
// caso contrário, primeiroDV = 10 - resto
|
||||
primeiroDV = (byte) ((restoDoModulo10 == 0) ? 0 : 10 - restoDoModulo10);
|
||||
return primeiroDV;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,158 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 19/07/2008 - 11:15:33
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 19/07/2008 - 11:15:33
|
||||
*
|
||||
*/
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre do Barisul para cobrança não registrada (Cobrança Direta
|
||||
* "sem registro" - Sistema BDL/Carteira de Letras) deve seguir esta forma:
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="campolivre">
|
||||
* <thead bgcolor="#DEDEDE">
|
||||
* <tr>
|
||||
* <th>Posição</th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </tr>
|
||||
* </thead> <tbody style="text-align:center">
|
||||
* <tr>
|
||||
* <td>20-20</td>
|
||||
* <td>1</td>
|
||||
* <td>9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10px">Tipo de Cobrança: constante = 2
|
||||
* </td>
|
||||
* <td style="text-align:left;padding-left:10">"2" Cobrança Direta, Fichário
|
||||
* emitido pelo CLIENTE.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>21-21</td>
|
||||
* <td>1</td>
|
||||
* <td>9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10">Constante "1"</td>
|
||||
* <td style="text-align:left;padding-left:10">Constante "1"</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>22-25</td>
|
||||
* <td>4</td>
|
||||
* <td>9(4)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Agência sem digito
|
||||
* verificador</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Agência, com quatro
|
||||
* dígitos, sem o Número de Controle.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>26-32</td>
|
||||
* <td>7</td>
|
||||
* <td>9(7)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código do Cedente sem dígito
|
||||
* verificador</td>
|
||||
* <td style="text-align:left;padding-left:10">Código do Cedente sem Número de
|
||||
* Controle.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>33-40</td>
|
||||
* <td>8</td>
|
||||
* <td>9(8)</td>
|
||||
* <td style="text-align:left;padding-left:10">Seu número sem dígito verificador
|
||||
* </td>
|
||||
* <td style="text-align:left;padding-left:10">Nosso Número sem Número de
|
||||
* Controle</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>41-42</td>
|
||||
* <td>2</td>
|
||||
* <td>9(2)</td>
|
||||
* <td style="text-align:left;padding-left:10">Constante "40"</td>
|
||||
* <td style="text-align:left;padding-left:10">Constante "40"</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>43-44</td>
|
||||
* <td>2</td>
|
||||
* <td>9(2)</td>
|
||||
* <td style="text-align:left;padding-left:10">Dois dígitos verificadores
|
||||
* calculados com os campos anteriores pelos (módulos 10 e 11)</td>
|
||||
* <td style="text-align:left;padding-left:10">Duplo Dígito referente às
|
||||
* posições 20 a 42 (módulos 10 e 11)</td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="mailto:samuelvalerio@gmail.com">Samuel Valério</a> Valerio
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLBanrisulCobrancaNaoRegistrada extends AbstractCLBanrisul {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -6078207986734440842L;
|
||||
|
||||
private static final Integer FIELDS_LENGTH = 7;
|
||||
|
||||
CLBanrisulCobrancaNaoRegistrada(Titulo titulo) {
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
this.add(new FixedField<Integer>(2, 1));
|
||||
this.add(new FixedField<String>("1", 1));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getAgencia().getCodigo(), 4, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), 7, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(Integer.valueOf(titulo.getNossoNumero()), 8, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>("40", 2));
|
||||
|
||||
this.add(new FixedField<String>(calculaDuploDigito(concateneOsCamposExistentesAteOMomento()), 2));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,161 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 02/08/2008 - 13:39:46
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 02/08/2008 - 13:39:46
|
||||
*
|
||||
*/
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Representação do campo livre usado para boletos com carteiras (
|
||||
* <em>cobrança</em>) com registro.
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* O campo livre do Barisul para cobrança registrada (Cobrança Normal
|
||||
* "com registro" - Sistema BDL/Carteira de Letras) deve seguir esta forma:
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="campolivre">
|
||||
* <thead bgcolor="#DEDEDE">
|
||||
* <tr>
|
||||
* <th>Posição</th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </tr>
|
||||
* </thead> <tbody style="text-align:center">
|
||||
* <tr>
|
||||
* <td>20-20</td>
|
||||
* <td>1</td>
|
||||
* <td>9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10px">Tipo de Cobrança: constante = 1
|
||||
* </td>
|
||||
* <td style="text-align:left;padding-left:10">"1" Cobrança Normal, Fichário
|
||||
* emitido pelo BANRISUL</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>21-21</td>
|
||||
* <td>1</td>
|
||||
* <td>9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10">Constante "1"</td>
|
||||
* <td style="text-align:left;padding-left:10">Constante "1"</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>22-25</td>
|
||||
* <td>4</td>
|
||||
* <td>9(4)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Agência sem digito
|
||||
* verificador</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Agência, com quatro
|
||||
* dígitos, sem o Número de Controle.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>26-32</td>
|
||||
* <td>7</td>
|
||||
* <td>9(7)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código do Cedente sem dígito
|
||||
* verificador</td>
|
||||
* <td style="text-align:left;padding-left:10">Código do Cedente sem Número de
|
||||
* Controle.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>33-40</td>
|
||||
* <td>8</td>
|
||||
* <td>9(8)</td>
|
||||
* <td style="text-align:left;padding-left:10">Seu número sem dígito verificador
|
||||
* </td>
|
||||
* <td style="text-align:left;padding-left:10">Nosso Número sem Número de
|
||||
* Controle</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>41-42</td>
|
||||
* <td>2</td>
|
||||
* <td>9(2)</td>
|
||||
* <td style="text-align:left;padding-left:10">Constante "40"</td>
|
||||
* <td style="text-align:left;padding-left:10">Constante "40"</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>43-44</td>
|
||||
* <td>2</td>
|
||||
* <td>9(2)</td>
|
||||
* <td style="text-align:left;padding-left:10">Dois dígitos verificadores
|
||||
* calculados com os campos anteriores pelos (módulos 10 e 11)</td>
|
||||
* <td style="text-align:left;padding-left:10">Duplo Dígito referente às
|
||||
* posições 20 a 42 (módulos 10 e 11)</td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="mailto:samuelvalerio@gmail.com">Samuel Valério</a> Valerio
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLBanrisulCobrancaRegistrada extends AbstractCLBanrisul {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1577477244182494602L;
|
||||
|
||||
private static final Integer FIELDS_LENGTH = 7;
|
||||
|
||||
CLBanrisulCobrancaRegistrada(Titulo titulo) {
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
this.add(new FixedField<Integer>(1, 1));
|
||||
this.add(new FixedField<String>("1", 1));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getAgencia().getCodigo(), 4, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), 7, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(Integer.valueOf(titulo.getNossoNumero()),8, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>("40", 2));
|
||||
this.add(new FixedField<String>(calculaDuploDigito(concateneOsCamposExistentesAteOMomento()),2));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,195 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:09:27
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:09:27
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre do Bradesco deve seguir esta forma:
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="campolivre">
|
||||
* <thead bgcolor="#DEDEDE">
|
||||
* <tr>
|
||||
* <th>Posição</th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </tr>
|
||||
* </thead> <tbody style="text-align:center">
|
||||
* <tr>
|
||||
* <td >20-23</td>
|
||||
* <td >4</td>
|
||||
* <td >9(4)</td>
|
||||
* <td style="text-align:left;padding-left:10">Agência Cedente (Sem o digito verificador, completar com zeros a esquerda quando necessário)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Agência (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >24-25</td>
|
||||
* <td >2</td>
|
||||
* <td >9(2)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Carteira</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Carteira</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >26-36</td>
|
||||
* <td >11</td>
|
||||
* <td > 9(11)</td>
|
||||
* <td style="text-align:left;padding-left:10">Número do Nosso Número(Sem o digito verificador)</td>
|
||||
* <td style="text-align:left;padding-left:10">Nosso Número (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >37-43</td>
|
||||
* <td >7</td>
|
||||
* <td > 9(7)</td>
|
||||
* <td style="text-align:left;padding-left:10">Conta do Cedente (Sem o digito verificador, completar com zeros a esquerda quando necessário)</td>
|
||||
* <td style="text-align:left;padding-left:10">Conta do Cedente (sem dígito)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >44-44</td>
|
||||
* <td >1</td>
|
||||
* <td >9</td>
|
||||
* <td style="text-align:left;padding-left:10">Constante "0"</td>
|
||||
* <td style="text-align:left;padding-left:10">Zero Fixo</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre
|
||||
*
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="http://www.nordestefomento.com.br">Nordeste Fomento
|
||||
* Mercantil</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLBradesco extends AbstractCLBradesco {
|
||||
|
||||
/**
|
||||
* {@code serialVersionUID = -1253549781074159862L}
|
||||
*/
|
||||
private static final long serialVersionUID = -1253549781074159862L;
|
||||
|
||||
/**
|
||||
* Número de campos = 5.
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = Integer.valueOf(5);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Agência = 4.
|
||||
*/
|
||||
private static final Integer AGENCIA_LENGTH = Integer.valueOf(4);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Carteira = 2.
|
||||
*/
|
||||
private static final Integer CARTEIRA_LENGTH = Integer.valueOf(2);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Nosso Número = 11.
|
||||
*/
|
||||
private static final Integer NOSSO_NUMERO_LENGTH = Integer.valueOf(11);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Conta = 7.
|
||||
*/
|
||||
private static final Integer CONTA_LENGTH = Integer.valueOf(7);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Constante = 1.
|
||||
*/
|
||||
private static final Integer CONSTANT_LENGTH = Integer.valueOf(1);
|
||||
|
||||
/**
|
||||
* Valor do campo Constante = 0.
|
||||
*/
|
||||
private static final Integer CONSTANT_VALUE = Integer.valueOf(0);
|
||||
|
||||
/**
|
||||
* Constante em forma de campo {@linkplain #CONSTANT_VALUE} e {@linkplain #CONSTANT_LENGTH}.
|
||||
*/
|
||||
private static final FixedField<Integer> CONSTANT_FIELD = new FixedField<Integer>(CONSTANT_VALUE, CONSTANT_LENGTH);
|
||||
|
||||
/**
|
||||
* Cria um campo livre instanciando o número de fields ({@code FIELDS_LENGTH}) deste campo.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected CLBradesco() {
|
||||
|
||||
super(FIELDS_LENGTH);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre#checkValues(org.jrimum.domkee.financeiro.banco.febraban.Titulo)
|
||||
*/
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo){
|
||||
|
||||
checkAgenciaNotNull(titulo);
|
||||
checkCodigoDaAgencia(titulo);
|
||||
checkCodigoDaAgenciaMenorOuIgualQue(titulo, 9999);
|
||||
checkCarteiraNotNull(titulo);
|
||||
checkCodigoDaCarteira(titulo);
|
||||
checkCodigoDaCarteiraMenorOuIgualQue(titulo, 99);
|
||||
checkNossoNumero(titulo);
|
||||
checkTamanhoDoNossoNumero(titulo, NN11);
|
||||
checkNumeroDaContaNotNull(titulo);
|
||||
checkCodigoDoNumeroDaConta(titulo);
|
||||
checkCodigoDoNumeroDaContaMenorOuIgualQue(titulo, 9999999);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre#addFields(org.jrimum.domkee.financeiro.banco.febraban.Titulo)
|
||||
*/
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getAgencia().getCodigo(), AGENCIA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getCarteira().getCodigo(), CARTEIRA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(titulo.getNossoNumero(), NOSSO_NUMERO_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), CONTA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(CONSTANT_FIELD);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,217 @@
|
|||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import static java.lang.String.format;
|
||||
import static org.jrimum.bopepo.parametro.ParametroCaixaEconomicaFederal.CODIGO_OPERACAO;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
import org.jrimum.utilix.Objects;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre da Caixa Econômica Federal para cobrança simples (CS), rápida(CR) e sem registro (SR)
|
||||
* - SICOB, deve seguir esta forma:
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="campolivre">
|
||||
* <thead bgcolor="#DEDEDE">
|
||||
* <tr>
|
||||
* <th>Posição</th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </tr>
|
||||
* </thead> <tbody style="text-align:center">
|
||||
* <tr>
|
||||
* <td>20-29</td>
|
||||
* <td>10</td>
|
||||
* <td>9(10)</td>
|
||||
* <td style="text-align:left;padding-left:10px">Nosso Número</td>
|
||||
* <td style="text-align:left;padding-left:10">
|
||||
* Nosso Número no padrão de uma das
|
||||
* três cobranças (simples, rápida ou sem registro)
|
||||
*
|
||||
* <p>Exemplos:<br/>
|
||||
* Cobrança Simples - Nosso número inicia com 3. Ex: Carteira 11<br/>
|
||||
* Cobrança Rápida - Nosso número inicia com 9. Ex: Carteira 12 <br/>
|
||||
* Cobrança Sem Registro - Nosso número inicia com 80, 81 ou 82. Ex: Carteira 14.
|
||||
* </p>
|
||||
*
|
||||
* </td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>30-33</td>
|
||||
* <td>4</td>
|
||||
* <td>9(4)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Agência</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Agência Cedente</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>34-36</td>
|
||||
* <td>3</td>
|
||||
* <td>9(3)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Operação</td>
|
||||
* <td style="text-align:left;padding-left:10">Operação Código</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>37-44</td>
|
||||
* <td>8</td>
|
||||
* <td>9(8)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código do número da conta</td>
|
||||
* <td style="text-align:left;padding-left:10">Código fornecido pela Agência</td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
|
||||
* @see <a href="http://www1.caixa.gov.br/download/asp/download.asp?subCategId=198&CategId=65&subCateglayout=Manuais&Categlayout=Cobran%C3%A7a%20Caixa%20%E2%80%93%20SICOB#aba_voce">Manuais SICOB - Caixa</a>
|
||||
* @see <a href="http://downloads.caixa.gov.br/_arquivos/cobrcaixasicob/manuaissicob/ESPCODBARR_SICOB.pdf">Especificação código barras com nosso número de 11 posições</a>
|
||||
* @see <a href="http://downloads.caixa.gov.br/_arquivos/cobrcaixasicob/manuaissicob/ESPCODBARBLOQCOBRANREGIST_16POSICOES.pdf">Leiaute de Arquivo Eletrônico Padrão CNAB 240 - Cobrança Bancária CAIXA - SICOB</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLCaixaEconomicaFederalSICOBNossoNumero10 extends AbstractCLCaixaEconomicaFederal {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 5585190685525441426L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = 4;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Dado um título, cria um campo livre para o padrão do Banco Caixa Econômica
|
||||
* Federal que tenha o serviço SINCO.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo - Título com as informações para geração do campo livre
|
||||
*/
|
||||
CLCaixaEconomicaFederalSICOBNossoNumero10(Titulo titulo) {
|
||||
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
Objects.checkNotNull(titulo.getParametrosBancarios(), "Parâmetros bancários necessários [titulo.getParametrosBancarios()==null]!");
|
||||
checkPadraoNossoNumero(titulo.getNossoNumero());
|
||||
|
||||
// TODO: Testar checkPadraoNossoNumeroPorCodigoDaCarteira;
|
||||
/*
|
||||
Integer codigoDaCarteira = titulo.getContaBancaria().getCarteira().getCodigo();
|
||||
if (Objects.isNotNull(codigoDaCarteira)) {
|
||||
checkPadraoNossoNumeroPorCodigoDaCarteira(titulo.getNossoNumero(), codigoDaCarteira);
|
||||
}
|
||||
*/
|
||||
|
||||
this.add(new FixedField<String>(titulo.getNossoNumero(), 10));
|
||||
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getAgencia().getCodigo(), 4, Fillers.ZERO_LEFT));
|
||||
|
||||
if(titulo.getParametrosBancarios().contemComNome(CODIGO_OPERACAO)){
|
||||
|
||||
Integer cnpv = titulo.getParametrosBancarios().getValor(CODIGO_OPERACAO);
|
||||
|
||||
Objects.checkNotNull(titulo.getParametrosBancarios(), "Parâmetro bancário código operação inválido [CodigoOperacao==null]!");
|
||||
|
||||
this.add(new FixedField<Integer>(cnpv, 3, Fillers.ZERO_LEFT));
|
||||
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), 8, Fillers.ZERO_LEFT));
|
||||
|
||||
}else{
|
||||
|
||||
throw new CampoLivreException("Parâmetro bancário código operação (\"CodigoOperacao\") não encontrado!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o nosso número do título começa com 3 (identificador da
|
||||
* Carteira Simples), 9 (identificador da Carteira Rápida) ou 80, 81 ou 82
|
||||
* (que são identificadores da Carteira Sem Registro); Caso contrário gera
|
||||
* uma {@code IllegalArgumentException}.
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* Padrões aceitos de 10 dígitos:
|
||||
* <ul>
|
||||
* <li>3NNNNNNNNN (a ser validado com os colegas da Neogrid)</li>
|
||||
* <li>9NNNNNNNNN</li>
|
||||
* <li>80NNNNNNNN</li>
|
||||
* <li>81NNNNNNNN</li>
|
||||
* <li>82NNNNNNNN</li>
|
||||
* </ul>
|
||||
* </p>
|
||||
*
|
||||
* @param nn
|
||||
* - Nosso Número
|
||||
*/
|
||||
private void checkPadraoNossoNumero(String nn){
|
||||
if(!nn.startsWith("3") && !nn.startsWith("9") && !nn.startsWith("80") && !nn.startsWith("81") && !nn.startsWith("82")){
|
||||
Exceptions.throwIllegalArgumentException(format("Para a cobrança SICOB o nosso número [%s] deve começar com 3 que é o identificador da \"carteira siples\" [3NNNNNNNNN] ou 9 que é o identificador da \"carteira rápida\" [9NNNNNNNNN] ou 80, 81 e 82 para \"carteira sem registro\" [82NNNNNNNN]!", nn));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Verifica se o nosso número informado tem o padrão esperado de acordo com
|
||||
* o código da carteira informada.
|
||||
* </p>
|
||||
* <p>
|
||||
* Obs: Como não há uma garantia documental de que todo nosso número que
|
||||
* começa com "3" pertencerá <u>somente</u> a carteira 11, então o mais
|
||||
* coerente é não amarrar o início do nosso número a determinada carteira,
|
||||
* mas sim o contrário, ou seja, amarrar que toda carteira 11 tem de ter o
|
||||
* nosso número iniciando com 3". O mesmo raciocíno serve para as outras
|
||||
* carteiras.
|
||||
* </p>
|
||||
*
|
||||
* @param nossoNumero
|
||||
* - Nosso Número
|
||||
* @param codigoDaCarteira
|
||||
* - Código da carteira
|
||||
*/
|
||||
private void checkPadraoNossoNumeroPorCodigoDaCarteira(String nossoNumero, Integer codigoDaCarteira){
|
||||
switch (codigoDaCarteira) {
|
||||
case 11:
|
||||
if(!nossoNumero.startsWith("3")){
|
||||
Exceptions.throwIllegalArgumentException(format("Para a cobrança SICOB, carteira 11 (cobrança simples), o nosso número [%s] deve começar com 3!", nossoNumero));
|
||||
}
|
||||
break;
|
||||
|
||||
case 12:
|
||||
if(!nossoNumero.startsWith("9")){
|
||||
Exceptions.throwIllegalArgumentException(format("Para a cobrança SICOB, carteira 12 (cobrança rápida), o nosso número [%s] deve começar com 9!", nossoNumero));
|
||||
}
|
||||
break;
|
||||
|
||||
case 14:
|
||||
if(!nossoNumero.startsWith("80") && !nossoNumero.startsWith("81") && !nossoNumero.startsWith("82")){
|
||||
Exceptions.throwIllegalArgumentException(format("Para a cobrança SICOB, carteira 14 (cobrança sem registro), o nosso número [%s] deve começar com 80, 81 ou 82!", nossoNumero));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,222 @@
|
|||
/*
|
||||
* Copyright 2011 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 14/04/2011 - 20:16:07
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2011 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 14/04/2011 - 20:16:07
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import static java.lang.String.format;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Objects;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre da Caixa para Cobrança Sem Registro SICOB - Nosso Número 16
|
||||
* posições, deve seguir esta forma:
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="campolivre">
|
||||
* <thead bgcolor="#DEDEDE">
|
||||
* <tr>
|
||||
* <th>Posição</th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </tr>
|
||||
* </thead> <tbody style="text-align:center">
|
||||
* <tr>
|
||||
* <td >20-24</td>
|
||||
* <td >5</td>
|
||||
* <td >9(5)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código do Cliente(sem dígito
|
||||
* verificador)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código do Cliente Cedente
|
||||
* fornecido pela CAIXA</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >25-28</td>
|
||||
* <td >4</td>
|
||||
* <td >9(4)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Agência(sem dígito
|
||||
* verificador)</td>
|
||||
* <td style="text-align:left;padding-left:10">CNPJ da Agência da Conta do
|
||||
* Cliente Cedente</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >29-29</td>
|
||||
* <td >1</td>
|
||||
* <td >9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Carteira = 8</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Carteira = 8</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >30-30</td>
|
||||
* <td >1</td>
|
||||
* <td >9(1)</td>
|
||||
* <td style="text-align:left;padding-left:10">Constante = 7</td>
|
||||
* <td style="text-align:left;padding-left:10">Constante = 7</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >31-44</td>
|
||||
* <td >14</td>
|
||||
* <td > 9(14)</td>
|
||||
* <td style="text-align:left;padding-left:10">Nosso Número(sem dígito
|
||||
* verificador)</td>
|
||||
* <td style="text-align:left;padding-left:10">Nosso Número do Cliente com 14
|
||||
* posições</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2.3
|
||||
*/
|
||||
class CLCaixaEconomicaFederalSICOBNossoNumero14 extends AbstractCLCaixaEconomicaFederal {
|
||||
|
||||
/**
|
||||
* {@code serialVersionUID = 4219053358562778591L}
|
||||
*/
|
||||
private static final long serialVersionUID = 4219053358562778591L;
|
||||
|
||||
/**
|
||||
* Número de campos = 5.
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = Integer.valueOf(5);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Conta = 5.
|
||||
*/
|
||||
private static final Integer CONTA_LENGTH = Integer.valueOf(5);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Agência = 4.
|
||||
*/
|
||||
private static final Integer AGENCIA_LENGTH = Integer.valueOf(4);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Nosso Número = 14.
|
||||
*/
|
||||
protected static final Integer NOSSO_NUMERO_LENGTH = Integer.valueOf(14);
|
||||
|
||||
/**
|
||||
* Constante "7".
|
||||
*/
|
||||
private static final FixedField<Integer> CONSTANT_FIELD = new FixedField<Integer>(7, 1);
|
||||
|
||||
/**
|
||||
* Valor constante do campo "Carteira" = 8 - Carteira Sem Registro Eletrônica.
|
||||
*/
|
||||
private static final Integer CARTEIRA_SEM_REGISTRO = Integer.valueOf(8);
|
||||
|
||||
/**
|
||||
* Código da carteira: sempre 8.
|
||||
*/
|
||||
private static final FixedField<Integer> CARTEIRA_FIELD = new FixedField<Integer>(CARTEIRA_SEM_REGISTRO, 1);
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Cria um campo livre instanciando o número de fields ({@code FIELDS_LENGTH}) deste campo.
|
||||
* </p>
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected CLCaixaEconomicaFederalSICOBNossoNumero14() {
|
||||
|
||||
super(FIELDS_LENGTH);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre#checkValues(org.jrimum.domkee.financeiro.banco.febraban.Titulo)
|
||||
*/
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo){
|
||||
|
||||
checkNumeroDaContaNotNull(titulo);
|
||||
checkCodigoDoNumeroDaConta(titulo);
|
||||
checkCodigoDoNumeroDaContaMenorOuIgualQue(titulo, 99999);
|
||||
checkAgenciaNotNull(titulo);
|
||||
checkCodigoDaAgencia(titulo);
|
||||
checkCodigoDaAgenciaMenorOuIgualQue(titulo, 9999);
|
||||
checkCarteiraNotNull(titulo);
|
||||
checkCodigoDaCarteira(titulo);
|
||||
checkCodigoDaCarteiraMenorOuIgualQue(titulo, 9);
|
||||
checkCarteiraSemRegistro(titulo);
|
||||
checkNossoNumero(titulo);
|
||||
checkTamanhoDoNossoNumero(titulo, NN14);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre#addFields(org.jrimum.domkee.financeiro.banco.febraban.Titulo)
|
||||
*/
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), CONTA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getAgencia().getCodigo(), AGENCIA_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(CARTEIRA_FIELD);
|
||||
this.add(CONSTANT_FIELD);
|
||||
this.add(new FixedField<String>(titulo.getNossoNumero(), NOSSO_NUMERO_LENGTH, Fillers.ZERO_LEFT));
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifica se o código da carteira da conta bancária do título é igual
|
||||
* (carteira simples), caso contrário lança uma {@code
|
||||
* IllegalArgumentException}.
|
||||
*
|
||||
* <p>
|
||||
* Motivo extraído do manual do banco: <br />
|
||||
* <br />
|
||||
* <i>Carteira Sem Registro Eletrônica com Nosso Número de 16 posições,
|
||||
* sendo que 14 destas posições são para livre uso pelo Cedente. Apenas
|
||||
* Clientes Cedentes com Código do Cedente na operação 870 podem operar com
|
||||
* a Cobrança Sem Registro com 16 posições de Nosso Número.</i>
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
*/
|
||||
private void checkCarteiraSemRegistro(Titulo titulo) {
|
||||
|
||||
Objects.checkArgument(
|
||||
titulo.getContaBancaria().getCarteira().getCodigo().equals(CARTEIRA_SEM_REGISTRO),
|
||||
format("Apenas a carteira de código [8] \"Carteira Sem Registro Eletrônica\" é permitida e não o código [%s]!", titulo.getContaBancaria().getCarteira().getCodigo())
|
||||
);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,242 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 28/07/2010 - 21:05:00
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 28/07/2010 - 21:05:00
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
import static org.jrimum.vallia.digitoverificador.Modulo.MOD11;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
import org.jrimum.vallia.digitoverificador.Modulo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre para o modelo SIGCB segue esta forma:
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: * collapse" bordercolor="#111111" width="60%" id="campolivre">
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <td>Posição</td>
|
||||
* <td>Tamanho</td>
|
||||
* <td>Conteúdo</td>
|
||||
* </tr>
|
||||
* </thead> <tbody>
|
||||
* <tr>
|
||||
* <td>01-05</td>
|
||||
* <td>6</td>
|
||||
* <td>Código do Cedente</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>06</td>
|
||||
* <td>1</td>
|
||||
* <td>Dígito Verificador do Código do Cedente</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>07-09</td>
|
||||
* <td>3</td>
|
||||
* <td>Nosso Número – Seqüência 1</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>10</td>
|
||||
* <td>1</td>
|
||||
* <td>Constante 1</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>11-13</td>
|
||||
* <td>3</td>
|
||||
* <td>Nosso Número – Seqüência 2</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>14</td>
|
||||
* <td>1</td>
|
||||
* <td>Constante 2</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>15-23</td>
|
||||
* <td>9</td>
|
||||
* <td>Nosso Número – Seqüência 3</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>24</td>
|
||||
* <td>1</td>
|
||||
* <td>Dígito Verificador do Campo Livre</td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:rogerio@visaosoft.com.br">Rogério Kleinkauf</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLCaixaEconomicaFederalSIGCB extends AbstractCLCaixaEconomicaFederal {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -7642075752245778160L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = 8;
|
||||
|
||||
/**
|
||||
* Modalidade de cobrança.
|
||||
*/
|
||||
private static final int COBRANCA_REGISTRADA = 1;
|
||||
|
||||
/**
|
||||
* Modalidade de cobrança.
|
||||
*/
|
||||
private static final int COBRANCA_NAO_REGISTRADA = 2;
|
||||
|
||||
/**
|
||||
* Constante que indica emissão de boleto pelo cedente.
|
||||
*/
|
||||
private static final int EMISSAO_CEDENTE = 4;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Dado um título, cria um campo livre para o padrão do Banco Caixa
|
||||
* Econômica Federal que tenha o serviço SIGCB.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
* - Título com as informações para geração do campo livre.
|
||||
*/
|
||||
CLCaixaEconomicaFederalSIGCB(Titulo titulo) {
|
||||
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
ContaBancaria conta = titulo.getContaBancaria();
|
||||
String nossoNumero = titulo.getNossoNumero();
|
||||
|
||||
Integer dVCodigoDoCedente = calculeDigitoVerificador(conta.getNumeroDaConta().getCodigoDaConta().toString());
|
||||
|
||||
this.add(new FixedField<Integer>(conta.getNumeroDaConta().getCodigoDaConta(), 6, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(dVCodigoDoCedente, 1));
|
||||
this.add(new FixedField<String>(nossoNumero.substring(0, 3), 3));
|
||||
|
||||
if(conta.getCarteira().isComRegistro()){
|
||||
|
||||
this.add(new FixedField<Integer>(COBRANCA_REGISTRADA, 1));
|
||||
|
||||
}else{
|
||||
|
||||
this.add(new FixedField<Integer>(COBRANCA_NAO_REGISTRADA, 1));
|
||||
}
|
||||
|
||||
this.add(new FixedField<String>(nossoNumero.substring(3, 6), 3));
|
||||
this.add(new FixedField<Integer>(EMISSAO_CEDENTE, 1));
|
||||
this.add(new FixedField<String>(nossoNumero.substring(6, 15), 9));
|
||||
|
||||
this.add(new FixedField<Integer>(calculeDigitoVerificador(gereCampoLivre()), 1));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gera o número que serve para calcular o digito verificador do campoLivre, que é todo o campo livre menos o dígito verificador.
|
||||
|
||||
* <p>
|
||||
* Os campos utilizados são:
|
||||
* <ul>
|
||||
* <li>Código do Cedente: 06 posições</li>
|
||||
* <li>Dígito Verificador do Código do Cedente: 01 posição</li>
|
||||
* <li>Nosso Número – Seqüência 1: 03 posições</li>
|
||||
* <li>Constante 1: 01 posição</li>
|
||||
* <li>Nosso Número – Seqüência 2: 03 posições</li>
|
||||
* <li>Constante 2: 01 posição</li>
|
||||
* <li>Nosso Número – Seqüência 3: 09 posições</li>
|
||||
* </ul>
|
||||
* </p>
|
||||
*
|
||||
* @return String com campos, exceto o dígito verificador.
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private String gereCampoLivre() {
|
||||
|
||||
return writeFields();
|
||||
}
|
||||
|
||||
/**
|
||||
* Este dígito é calculado através do Módulo 11 com os pesos 2 e 9.
|
||||
*
|
||||
* @param numeroParaCalculo
|
||||
* @return digito
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private int calculeDigitoVerificador(String numeroParaCalculo) {
|
||||
|
||||
int soma = Modulo.calculeSomaSequencialMod11(numeroParaCalculo.toString(), 2, 9);
|
||||
|
||||
int dvCampoLivre;
|
||||
|
||||
if (soma < MOD11) {
|
||||
|
||||
dvCampoLivre = MOD11 - soma;
|
||||
|
||||
} else {
|
||||
|
||||
int restoDiv11 = soma % MOD11;
|
||||
|
||||
int subResto = MOD11 - restoDiv11;
|
||||
|
||||
if (subResto > 9) {
|
||||
|
||||
dvCampoLivre = 0;
|
||||
|
||||
} else {
|
||||
|
||||
dvCampoLivre = subResto;
|
||||
}
|
||||
}
|
||||
|
||||
return dvCampoLivre;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,126 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:09:45
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:09:45
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre para o modelo SINCO segue esta forma:
|
||||
* </p>
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse:
|
||||
* collapse" bordercolor="#111111" width="60%" id="campolivre">
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <td>Posição</td>
|
||||
* <td>Tamanho</td>
|
||||
* <td>Conteúdo</td>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td>01</td>
|
||||
* <td>1</td>
|
||||
* <td>Número "1" (valor fixo)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>02-07</td>
|
||||
* <td>6</td>
|
||||
* <td>Código do cliente CEDENTE (fornecido pela CAIXA)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>08</td>
|
||||
* <td>1</td>
|
||||
* <td>Número "9" (valor fixo)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>09-25</td>
|
||||
* <td>17</td>
|
||||
* <td>Posições livres do "nosso número"</td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="http://www.nordestefomento.com.br">Nordeste Fomento Mercantil</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLCaixaEconomicaFederalSINCO extends AbstractCLCaixaEconomicaFederal {
|
||||
|
||||
private static final long serialVersionUID = -7642075752245778160L;
|
||||
|
||||
/**
|
||||
* Quantidade de campos. Tamanho da lista de campos.
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = 4;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Dado um título, cria um campo livre para o padrão do Banco Caixa Econômica
|
||||
* Federal que tenha o serviço SINCO.
|
||||
* </p>
|
||||
* @param titulo Título com as informações para geração do campo livre.
|
||||
*/
|
||||
CLCaixaEconomicaFederalSINCO(Titulo titulo) {
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
ContaBancaria conta = titulo.getContaBancaria();
|
||||
|
||||
String nossoNumero = titulo.getNossoNumero();
|
||||
|
||||
this.add(new FixedField<Integer>(1, 1));
|
||||
|
||||
this.add(new FixedField<Integer>(conta.getNumeroDaConta().getCodigoDaConta(), 6, Fillers.ZERO_LEFT));
|
||||
|
||||
this.add(new FixedField<Integer>(9, 1));
|
||||
this.add(new FixedField<String>(nossoNumero, 17));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,97 @@
|
|||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.bopepo.parametro.ParametroCECRED;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre do CECRED - Cooperativa Central de Crédito Urbano deve seguir esta forma:
|
||||
* </p>
|
||||
*
|
||||
* TODO tabela com campos
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre
|
||||
*
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:contato@douglasramiro.com.br">Douglas Ramiro</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
public class CLCecred extends AbstractCLBancoDeBrasilia{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 7075964070090557563L;
|
||||
|
||||
/**
|
||||
* Número de campos = 3.
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = Integer.valueOf(3);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Convênio = 6.
|
||||
*/
|
||||
private static final Integer CONVENIO_LENGTH = Integer.valueOf(6);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Nosso Número = 17.
|
||||
*/
|
||||
private static final Integer NOSSO_NUMERO_LENGTH = Integer.valueOf(17);
|
||||
|
||||
/**
|
||||
* Tamanho do campo Carteira = 2.
|
||||
*/
|
||||
private static final Integer CARTEIRA_LENGTH = Integer.valueOf(2);
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Cria um campo livre instanciando o número de fields ({@code FIELDS_LENGTH}) deste campo.
|
||||
* </p>
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
protected CLCecred() {
|
||||
super(FIELDS_LENGTH);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre#checkValues(org.jrimum.domkee.financeiro.banco.febraban.Titulo)
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
|
||||
checkParametroBancario(titulo, ParametroCECRED.CODIGO_DO_CONVENIO);
|
||||
checkParametroBancarioMenorOuIgualQue(titulo, ParametroCECRED.CODIGO_DO_CONVENIO, 999999);
|
||||
checkNossoNumero(titulo);
|
||||
checkTamanhoDoNossoNumero(titulo, 17);
|
||||
checkCarteiraNotNull(titulo);
|
||||
checkCodigoDaCarteira(titulo);
|
||||
checkCodigoDaCarteiraMenorOuIgualQue(titulo, 99);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre#addFields(org.jrimum.domkee.financeiro.banco.febraban.Titulo)
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
|
||||
this.add(new FixedField<Integer>(titulo.getParametrosBancarios().<Integer>getValor(ParametroCECRED.CODIGO_DO_CONVENIO), CONVENIO_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(titulo.getNossoNumero(), NOSSO_NUMERO_LENGTH, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getCarteira().getCodigo(), CARTEIRA_LENGTH, Fillers.ZERO_LEFT));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,226 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 30/03/2008 - 18:09:27
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 30/03/2008 - 18:09:27
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import static org.jrimum.bopepo.parametro.ParametroHSBC.IDENTIFICADOR_CNR;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.ParametrosBancariosMap;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
import org.jrimum.utilix.Objects;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre do HSBC, para cobrança não registrada(CNR), deve seguir esta forma:
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse:
|
||||
* collapse" bordercolor="#111111" width="60%" id="campolivre">
|
||||
* <tr>
|
||||
* <thead>
|
||||
* <th>Posição </th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </thead>
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>20-26</td>
|
||||
* <td>7</td>
|
||||
* <td>9(7) </td>
|
||||
* <td>Conta do cedente (sem dígito)</td>
|
||||
* <td>Código do cedente</td>
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>27-39</td>
|
||||
* <td>13</td>
|
||||
* <td>9(13) </td>
|
||||
* <td>Nosso número (sem dígito)</td>
|
||||
* <td>
|
||||
* Número bancário - Código do documento, sem os dígitos
|
||||
* verificadores e tipo identificador.
|
||||
* </td>
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>40-43</td>
|
||||
* <td>4</td>
|
||||
* <td>9(4) </td>
|
||||
* <td>Fator de vencimento</td>
|
||||
* <td>ou Data do vencimento no formato juliano</td>
|
||||
* </tr>
|
||||
*
|
||||
* <tr>
|
||||
* <td>44-44</td>
|
||||
* <td>1</td>
|
||||
* <td>9(1) </td>
|
||||
* <td>2 FIXO</td>
|
||||
* <td>Código do Aplicativo CNR = 2</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
* @author <a href="mailto:misaelbarreto@gmail.com">Misael Barreto</a>
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
* @author <a href="http://www.nordestefomento.com.br">Nordeste Fomento Mercantil</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLHSBCCobrancaNaoRegistrada extends AbstractCLHSBC {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -1253549781074159862L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = 4;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Dado um título, cria um campo livre para o padrão do Banco HSBC que tenha
|
||||
* o tipo de cobrança não registrada.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo
|
||||
* título com as informações para geração do campo livre
|
||||
*/
|
||||
CLHSBCCobrancaNaoRegistrada(Titulo titulo) {
|
||||
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
checkExistsParametrosBancarios(titulo);
|
||||
checkExistsParametroTipoIdentificadorCNR(titulo
|
||||
.getParametrosBancarios());
|
||||
|
||||
Integer tipoIdentificadorCNR = titulo
|
||||
.getParametrosBancarios().getValor(IDENTIFICADOR_CNR);
|
||||
|
||||
ContaBancaria conta = titulo.getContaBancaria();
|
||||
String nossoNumero = titulo.getNossoNumero();
|
||||
|
||||
// Conta do cedente (sem dígito)
|
||||
this.add(new FixedField<Integer>(
|
||||
conta.getNumeroDaConta().getCodigoDaConta(), 7,
|
||||
Fillers.ZERO_LEFT));
|
||||
|
||||
// Nosso número (sem dígito)
|
||||
this.add(new FixedField<String>(nossoNumero, 13, Fillers.ZERO_LEFT));
|
||||
|
||||
this.add(new FixedField<String>(getDataVencimentoFormatoJuliano(
|
||||
tipoIdentificadorCNR, titulo.getDataDoVencimento()), 4,
|
||||
Fillers.ZERO_LEFT));
|
||||
|
||||
// 2 FIXO (Código do Aplicativo CNR - Cob. Não Registrada)
|
||||
this.add(new FixedField<Integer>(2, 1));
|
||||
|
||||
}
|
||||
|
||||
private String getDataVencimentoFormatoJuliano(Integer tipoIdentificadorCNR, Date vencimento) {
|
||||
|
||||
final int SEM_VENCIMENTO = 5;
|
||||
final int COM_VENCIMENTO = 4;
|
||||
|
||||
switch (tipoIdentificadorCNR) {
|
||||
|
||||
case SEM_VENCIMENTO:
|
||||
|
||||
return "0000";
|
||||
|
||||
case COM_VENCIMENTO:
|
||||
|
||||
return getVencimentoFormatoJuliano(vencimento);
|
||||
|
||||
default:
|
||||
return Exceptions.throwIllegalStateException("Tipo de identificador CNR desconhecido!");
|
||||
}
|
||||
}
|
||||
|
||||
private String getVencimentoFormatoJuliano(Date vencimento) {
|
||||
|
||||
Calendar c = Calendar.getInstance();
|
||||
c.setTime(vencimento);
|
||||
|
||||
return new StringBuilder(String.valueOf(c.get(Calendar.DAY_OF_YEAR)))
|
||||
.append(String.valueOf(c.get(Calendar.YEAR) % 10))
|
||||
.toString();
|
||||
}
|
||||
|
||||
private void checkExistsParametrosBancarios(Titulo titulo) {
|
||||
|
||||
if (Objects.isNull(titulo.getParametrosBancarios())
|
||||
&& titulo.getParametrosBancarios().isVazio()) {
|
||||
|
||||
throw new CampoLivreException(
|
||||
"Parâmetros bancários nulos em \"Titulo.parametrosBancarios\". O parâmetro bancário de nome e tipo [ IDENTIFICADOR_CNR ] deve ser fornecido para este caso.");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void checkExistsParametroTipoIdentificadorCNR(ParametrosBancariosMap parametros) {
|
||||
|
||||
Integer tipoIdentificadorCNR = parametros
|
||||
.getValor(IDENTIFICADOR_CNR);
|
||||
|
||||
if (Objects.isNull(tipoIdentificadorCNR)) {
|
||||
|
||||
throw new CampoLivreException(
|
||||
"Parâmetro bancário [ IDENTIFICADOR_CNR ] não encontrado em \"Titulo.parametrosBancarios\". O nome do parâmetro deve ser IDENTIFICADOR_CNR.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,144 @@
|
|||
/*
|
||||
* Copyright 2010 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
|
||||
* applicable law or agreed to in writing, software distributed under the
|
||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
* OF ANY KIND, either express or implied. See the License for the specific
|
||||
* language governing permissions and limitations under the License.
|
||||
*
|
||||
* Created at: 14/08/2010 - 22:33:26
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
|
||||
* esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob
|
||||
* esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
|
||||
* TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
|
||||
* reger permissões e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 14/08/2010 - 22:33:26
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* O campo livre do HSBC, para cobrança registrada(CSB), deve seguir esta forma:
|
||||
* </p>
|
||||
*
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse:
|
||||
* collapse" bordercolor="#111111" width="100%" id="campolivre">
|
||||
* <thead bgcolor="#DEDEDE">
|
||||
* <tr>
|
||||
* <th>Posição </th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo (terminologia padrão)</th>
|
||||
* <th>Conteúdo (terminologia do banco)</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody style="text-align:center">
|
||||
* <tr>
|
||||
* <td>20-30</td>
|
||||
* <td>11</td>
|
||||
* <td>9(11) </td>
|
||||
* <td style="text-align:left;padding-left:10px">Nosso número com dígito</td>
|
||||
* <td style="text-align:left;padding-left:10">Número Bancário</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>31-34</td>
|
||||
* <td>4</td>
|
||||
* <td>9(4) </td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Agência.</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da Agência.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>35-41</td>
|
||||
* <td>7</td>
|
||||
* <td>9(7) </td>
|
||||
* <td style="text-align:left;padding-left:10">Conta Corrente.</td>
|
||||
* <td style="text-align:left;padding-left:10">Conta de cobrança.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>42-43</td>
|
||||
* <td>2</td>
|
||||
* <td>9(2) </td>
|
||||
* <td style="text-align:left;padding-left:10">Código da carteira="00"</td>
|
||||
* <td style="text-align:left;padding-left:10">Código da carteira="00"</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>44-44</td>
|
||||
* <td>2</td>
|
||||
* <td>9(2) </td>
|
||||
* <td style="text-align:left;padding-left:10">Constante="1"</td>
|
||||
* <td style="text-align:left;padding-left:10">Código do aplicativo da Cobrança (COB) = "1"</td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
*
|
||||
*
|
||||
* @see org.jrimum.bopepo.campolivre.AbstractCampoLivre
|
||||
*
|
||||
* @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLHSBCCobrancaRegistrada extends AbstractCLHSBC{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -5052841093486791338L;
|
||||
|
||||
private static final Integer FIELDS_LENGTH = 6;
|
||||
|
||||
private static final String CODIGO_DA_CARTEIRA = "00";
|
||||
|
||||
private static final Integer CODIGO_DO_APLICATIVO = Integer.valueOf(1);
|
||||
|
||||
/**
|
||||
* * <p>
|
||||
* Dado um título, cria um campo livre para cobrança registrada do banco HSBC.
|
||||
* </p>
|
||||
*
|
||||
* @param titulo - título com as informações para geração do campo livre
|
||||
*/
|
||||
CLHSBCCobrancaRegistrada(Titulo titulo) {
|
||||
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
this.add(new FixedField<String>(titulo.getNossoNumero(), 10, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(titulo.getDigitoDoNossoNumero(), 1));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getAgencia().getCodigo(), 4, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<Integer>(titulo.getContaBancaria().getNumeroDaConta().getCodigoDaConta(), 7, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(CODIGO_DA_CARTEIRA, 2));
|
||||
this.add(new FixedField<Integer>(CODIGO_DO_APLICATIVO, 1));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,185 @@
|
|||
/*
|
||||
* Copyright 2008 JRimum Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||
* use this file except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations under
|
||||
* the License.
|
||||
*
|
||||
* Created at: 16/04/2008 - 23:09:08
|
||||
*
|
||||
* ================================================================================
|
||||
*
|
||||
* Direitos autorais 2008 JRimum Project
|
||||
*
|
||||
* Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode
|
||||
* usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
|
||||
* cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
|
||||
* haja exigência legal ou acordo por escrito, a distribuição de software sob esta
|
||||
* LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam
|
||||
* expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões
|
||||
* e limitações sob esta LICENÇA.
|
||||
*
|
||||
* Criado em: 16/04/2008 - 23:09:08
|
||||
*
|
||||
*/
|
||||
|
||||
package org.jrimum.bopepo.campolivre;
|
||||
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.ContaBancaria;
|
||||
import org.jrimum.domkee.financeiro.banco.febraban.Titulo;
|
||||
import org.jrimum.texgit.type.component.Fillers;
|
||||
import org.jrimum.texgit.type.component.FixedField;
|
||||
import org.jrimum.utilix.Exceptions;
|
||||
|
||||
/**
|
||||
* Campo livre padrão do Banco Itaú
|
||||
*
|
||||
* <p>
|
||||
* Constrói o campo livre no caso especial, ou seja, quando a carteira for:
|
||||
* 106, 107, 122, 142, 143, 195, 196 ou 198.
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* <h2>Layout do Banco Itaú para o campo livre ESPECIAL</h2>
|
||||
* <pre>
|
||||
* <table border="1" cellpadding="0" cellspacing="0" style="border-collapse:
|
||||
* collapse" bordercolor="#111111" id="campolivre">
|
||||
* <thead>
|
||||
* <tr>
|
||||
* <th>Posição</th>
|
||||
* <th>Tamanho</th>
|
||||
* <th>Picture</th>
|
||||
* <th>Conteúdo</th>
|
||||
* </tr>
|
||||
* </thead>
|
||||
* <tbody>
|
||||
* <tr>
|
||||
* <td >20 a 22</td>
|
||||
* <td >3</td>
|
||||
* <td >9(03)</td>
|
||||
* <td >Carteira</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >23 a 30</td>
|
||||
* <td >8</td>
|
||||
* <td >9(08)</td>
|
||||
* <td >Nosso número</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >31 a 37</td>
|
||||
* <td >7</td>
|
||||
* <td >9(07)</td>
|
||||
* <td >Seu Número (Número do Documento)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >38 a 42</td>
|
||||
* <td >5</td>
|
||||
* <td >9(05)</td>
|
||||
* <td >Código do Cliente (fornecido pelo Banco)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td >43 a 43</td>
|
||||
* <td >1</td>
|
||||
* <td >9(01)</td>
|
||||
* <td >DAC dos campos acima (posições 20 a 42 veja anexo 3)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <tr>
|
||||
* <td >44 a 44</td>
|
||||
* <td >1</td>
|
||||
* <td >9(01)</td>
|
||||
* <td >Zero</td>
|
||||
* </tr>
|
||||
* </tbody>
|
||||
* </table>
|
||||
* <pre>
|
||||
* </p>
|
||||
*
|
||||
* @author <a href="mailto:romulomail@gmail.com">Rômulo Augusto</a>
|
||||
*
|
||||
* @since 0.2
|
||||
*
|
||||
* @version 0.2
|
||||
*/
|
||||
class CLItauComCarteirasEspeciais extends AbstractCLItau {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -1532454262023154419L;
|
||||
|
||||
/**
|
||||
* Tamanho do campo livre para carteiras especiais.
|
||||
*/
|
||||
private static final Integer FIELDS_LENGTH = 6;
|
||||
|
||||
/**
|
||||
* Dado um título, cria o campo livre do Banco Itaú para carteiras
|
||||
* especiais.
|
||||
*
|
||||
* @param titulo
|
||||
* título com as informações para geração do campo livre
|
||||
*/
|
||||
public CLItauComCarteirasEspeciais(Titulo titulo) {
|
||||
super(FIELDS_LENGTH);
|
||||
|
||||
ContaBancaria conta = titulo.getContaBancaria();
|
||||
|
||||
this.add(new FixedField<Integer>(conta.getCarteira().getCodigo(), 3, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(titulo.getNossoNumero(), 8, Fillers.ZERO_LEFT));
|
||||
this.add(new FixedField<String>(titulo.getNumeroDoDocumento(), 7, Fillers.ZERO_LEFT));
|
||||
|
||||
//Aqui é o código do cedente, simbolizado pelo código da conta bancária.
|
||||
this.add(new FixedField<Integer>(conta.getNumeroDaConta().getCodigoDaConta(), 5, Fillers.ZERO_LEFT));
|
||||
|
||||
this.add(new FixedField<Integer>(calculeDigitoDoCampoLivreEspecial(
|
||||
conta.getCarteira().getCodigo(),
|
||||
titulo.getNossoNumero(),
|
||||
titulo.getNumeroDoDocumento(),
|
||||
conta.getNumeroDaConta().getCodigoDaConta()), 1));
|
||||
this.add(new FixedField<Integer>(0, 1));
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcula o dígito verificador para o campo livre especial a partir do
|
||||
* código da carteira, do nosso número, do número do documento e do código
|
||||
* da conta.
|
||||
*
|
||||
* @param codigoDaCarteira
|
||||
* @param nossoNumero
|
||||
* @param numeroDoDocumento
|
||||
* @param codigoDaConta
|
||||
* @return Integer digito
|
||||
*
|
||||
* @since 0.2
|
||||
*/
|
||||
private Integer calculeDigitoDoCampoLivreEspecial(Integer codigoDaCarteira,
|
||||
String nossoNumero, String numeroDoDocumento, Integer codigoDaConta) {
|
||||
|
||||
StringBuilder campo = new StringBuilder();
|
||||
|
||||
campo.append(Fillers.ZERO_LEFT.fill(codigoDaCarteira.intValue(), 3));
|
||||
campo.append(Fillers.ZERO_LEFT.fill(nossoNumero, 8));
|
||||
campo.append(Fillers.ZERO_LEFT.fill(numeroDoDocumento, 7));
|
||||
campo.append(Fillers.ZERO_LEFT.fill(codigoDaConta, 5));
|
||||
|
||||
return calculeDigitoVerificador(campo.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addFields(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkValues(Titulo titulo) {
|
||||
// TODO IMPLEMENTAR
|
||||
Exceptions.throwUnsupportedOperationException("AINDA NÃO IMPLEMENTADO!");
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue