package gcom.gui.relatorio.cobranca;
import gcom.cobranca.bean.ReavisoDeDebitoHelper;
import gcom.gui.ActionServletException;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.cobranca.ReavisoDeDebitoLinhasDescricaoDebitosHelper;
import gcom.relatorio.cobranca.RelatorioAvisoDeDebito;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.Util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class GerarAvisoDeDebitoAction extends ExibidorProcessamentoTarefaRelatorio {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("exibirGerarAvisoDeDebito");
DiskFileUpload upload = new DiskFileUpload();
List items = null;
try {
items = upload.parseRequest(httpServletRequest);
this.getSessao(httpServletRequest).setAttribute("arquivo",items);
} catch (FileUploadException e) {
items = (List) this.getSessao(httpServletRequest).getAttribute("arquivo");
if(items == null){
throw new ActionServletException("erro.sistema", e);
}
}
FileItem item = (FileItem) Util.retonarObjetoDeColecao(items);
String nomeArquivo = item.getName().replace(".txt","");
nomeArquivo = nomeArquivo.replace("EMITIR","");
Collection colecaoEmitirReavisoDeDebitoHelper =
this.gerarColecaoEmitirReavisoDeDebitoHelper(items);
String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
RelatorioAvisoDeDebito relatorio =
new RelatorioAvisoDeDebito(this.getUsuarioLogado(httpServletRequest));
relatorio.addParametro("colecaoEmitirReavisoDeDebitoHelper", colecaoEmitirReavisoDeDebitoHelper);
relatorio.addParametro("nomeArquivo",nomeArquivo);
if (tipoRelatorio == null) {
tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
relatorio.addParametro("tipoFormatoRelatorio",Integer.parseInt(tipoRelatorio));
retorno =
processarExibicaoRelatorio(relatorio, tipoRelatorio, httpServletRequest,
httpServletResponse, actionMapping);
return retorno;
}
private Collection gerarColecaoEmitirReavisoDeDebitoHelper(List items){
Collection retorno =
new ArrayList();
FileItem item = null;
String nomeItem = null;
// Parse the request
try {
Iterator iter = items.iterator();
while (iter.hasNext()) {
item = (FileItem) iter.next();
// verifica se n�o � diretorio
if (!item.isFormField()) {
// coloca o nome do item para maiusculo
nomeItem = item.getName().toUpperCase();
// compara o final do nome do arquivo � .txt
if (nomeItem.endsWith(".TXT")) {
// abre o arquivo
InputStreamReader reader = new InputStreamReader(item.getInputStream());
BufferedReader buffer = new BufferedReader(reader);
// cria uma variavel do tipo boolean
boolean eof = false;
ReavisoDeDebitoHelper reavisoDeDebitoHelper = null;
// enquanto a variavel for false
while (!eof) {
// pega a linha do arquivo
String linhaLida = buffer.readLine();
// se for a ultima linha do arquivo
if (linhaLida == null || linhaLida.trim().length() == 0) {
// seta a variavel boolean para true
eof = true;
} else {
reavisoDeDebitoHelper = new ReavisoDeDebitoHelper();
//1-N�mero da Conta
reavisoDeDebitoHelper.setNumero(linhaLida.substring(0,7).trim());
//2-Nome do Cliente
reavisoDeDebitoHelper.setNomeCliente(linhaLida.substring(409, 459).trim());
//3-Endereco - Parte 1
reavisoDeDebitoHelper.setEndereco(linhaLida.substring(238,338).trim());
//4-Endereco - Parte 2
reavisoDeDebitoHelper.setEnderecoLinha2(linhaLida.substring(167, 197).trim());
//5-Endereco - Parte 3
reavisoDeDebitoHelper.setEnderecoLinha3(linhaLida.substring(197, 227).trim()
+ " - " +linhaLida.substring(227, 229).trim()
+ " " +linhaLida.substring(229, 238).trim());
//-Data Emissao
reavisoDeDebitoHelper.setDataEmissao(linhaLida.substring(1264, 1274).trim());
// J - Rota/Grupo
reavisoDeDebitoHelper.setRotaGrupo(linhaLida.substring(16,22).trim() +"."
+ linhaLida.substring(22,26).trim()+"/"
+ linhaLida.substring(14,16).trim());
//-Codigo Auxiliar
reavisoDeDebitoHelper.setCodigoAuxiliar(linhaLida.substring(38, 47).trim());
//-Hidrometro
reavisoDeDebitoHelper.setNumeroHidrometro(linhaLida.substring(1284, 1294).trim());
//vencimento
reavisoDeDebitoHelper.setVencimento(linhaLida.substring(1274, 1284).trim());
//Total a pagar
reavisoDeDebitoHelper.setTotalAPagar(linhaLida.substring(1194, 1208).trim());
//descricao situacao ligacao agua
reavisoDeDebitoHelper.setDescricaoSituacaoLigacaoAgua(linhaLida.substring(1476, 1496).trim());
// descricao situacao ligacao esgoto
reavisoDeDebitoHelper.setDescricaoSituacaoLigacaoEsgoto(linhaLida.substring(1496, 1516).trim());
// descricao categoria principal
reavisoDeDebitoHelper.setDescricaoCategoriaPrincipal(linhaLida.substring(1516, 1530).trim());
//inscricao
reavisoDeDebitoHelper.setInscricao(linhaLida.substring(47, 67).trim());
Collection colecaoDebito = new ArrayList();
ReavisoDeDebitoLinhasDescricaoDebitosHelper reavisoDeDebitoLinhasDescricaoDebitosHelper = null;
//mes ano Linha 1
String debito = linhaLida.substring(462,469).trim();
String valor = "";
String origem = "";
if(!debito.equals("")){
valor = linhaLida.substring(481, 495).trim();
origem = linhaLida.substring(469,471).trim();
reavisoDeDebitoLinhasDescricaoDebitosHelper = new ReavisoDeDebitoLinhasDescricaoDebitosHelper();
reavisoDeDebitoLinhasDescricaoDebitosHelper.setMesAno(debito);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setValor(valor);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setOrigem(origem);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setVencimento(linhaLida.substring(471,481).trim());
colecaoDebito.add(reavisoDeDebitoLinhasDescricaoDebitosHelper);
}
// mes ano Linha 2
debito = linhaLida.substring(523,530).trim();
valor = "";
origem = "";
if(!debito.equals("")){
valor = linhaLida.substring(542, 556).trim();
origem = linhaLida.substring(530,532).trim();
reavisoDeDebitoLinhasDescricaoDebitosHelper = new ReavisoDeDebitoLinhasDescricaoDebitosHelper();
reavisoDeDebitoLinhasDescricaoDebitosHelper.setMesAno(debito);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setValor(valor);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setOrigem(origem);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setVencimento(linhaLida.substring(532,542).trim());
colecaoDebito.add(reavisoDeDebitoLinhasDescricaoDebitosHelper);
}
// mes ano Linha 3
debito = linhaLida.substring(584,591).trim();
valor = "";
origem = "";
if(!debito.equals("")){
valor = linhaLida.substring(603, 617).trim();
origem = linhaLida.substring(591,593).trim();
reavisoDeDebitoLinhasDescricaoDebitosHelper = new ReavisoDeDebitoLinhasDescricaoDebitosHelper();
reavisoDeDebitoLinhasDescricaoDebitosHelper.setMesAno(debito);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setValor(valor);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setOrigem(origem);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setVencimento(linhaLida.substring(593,603).trim());
colecaoDebito.add(reavisoDeDebitoLinhasDescricaoDebitosHelper);
}
// mes ano Linha 4
debito = linhaLida.substring(645,652).trim();
valor = "";
origem = "";
if(!debito.equals("")){
valor = linhaLida.substring(664, 678).trim();
origem = linhaLida.substring(652,654).trim();
reavisoDeDebitoLinhasDescricaoDebitosHelper = new ReavisoDeDebitoLinhasDescricaoDebitosHelper();
reavisoDeDebitoLinhasDescricaoDebitosHelper.setMesAno(debito);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setValor(valor);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setOrigem(origem);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setVencimento(linhaLida.substring(654,664).trim());
colecaoDebito.add(reavisoDeDebitoLinhasDescricaoDebitosHelper);
}
// mes ano Linha 5
debito = linhaLida.substring(706,713).trim();
valor = "";
origem = "";
if(!debito.equals("")){
valor = linhaLida.substring(725, 739).trim();
origem = linhaLida.substring(713,715).trim();
reavisoDeDebitoLinhasDescricaoDebitosHelper = new ReavisoDeDebitoLinhasDescricaoDebitosHelper();
reavisoDeDebitoLinhasDescricaoDebitosHelper.setMesAno(debito);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setValor(valor);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setOrigem(origem);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setVencimento(linhaLida.substring(715,725).trim());
colecaoDebito.add(reavisoDeDebitoLinhasDescricaoDebitosHelper);
}
// mes ano Linha 6
debito = linhaLida.substring(767,774).trim();
valor = "";
origem = "";
if(!debito.equals("")){
valor = linhaLida.substring(786, 800).trim();
origem = linhaLida.substring(774,776).trim();
reavisoDeDebitoLinhasDescricaoDebitosHelper = new ReavisoDeDebitoLinhasDescricaoDebitosHelper();
reavisoDeDebitoLinhasDescricaoDebitosHelper.setMesAno(debito);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setValor(valor);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setOrigem(origem);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setVencimento(linhaLida.substring(776,786).trim());
colecaoDebito.add(reavisoDeDebitoLinhasDescricaoDebitosHelper);
}
// mes ano Linha 7
debito = linhaLida.substring(828,835).trim();
valor = "";
origem = "";
if(!debito.equals("")){
valor = linhaLida.substring(847,861).trim();
origem = linhaLida.substring(835,837).trim();
reavisoDeDebitoLinhasDescricaoDebitosHelper = new ReavisoDeDebitoLinhasDescricaoDebitosHelper();
reavisoDeDebitoLinhasDescricaoDebitosHelper.setMesAno(debito);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setValor(valor);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setOrigem(origem);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setVencimento(linhaLida.substring(837,847).trim());
colecaoDebito.add(reavisoDeDebitoLinhasDescricaoDebitosHelper);
}
// mes ano Linha 8
debito = linhaLida.substring(889,896).trim();
valor = "";
origem = "";
if(!debito.equals("")){
valor = linhaLida.substring(908,922).trim();
origem = linhaLida.substring(896,898).trim();
reavisoDeDebitoLinhasDescricaoDebitosHelper = new ReavisoDeDebitoLinhasDescricaoDebitosHelper();
reavisoDeDebitoLinhasDescricaoDebitosHelper.setMesAno(debito);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setValor(valor);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setOrigem(origem);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setVencimento(linhaLida.substring(898,908).trim());
colecaoDebito.add(reavisoDeDebitoLinhasDescricaoDebitosHelper);
}
// mes ano Linha 9
debito = linhaLida.substring(950,957).trim();
valor = "";
origem = "";
if(!debito.equals("")){
valor = linhaLida.substring(969,983).trim();
origem = linhaLida.substring(957,959).trim();
reavisoDeDebitoLinhasDescricaoDebitosHelper = new ReavisoDeDebitoLinhasDescricaoDebitosHelper();
reavisoDeDebitoLinhasDescricaoDebitosHelper.setMesAno(debito);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setValor(valor);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setOrigem(origem);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setVencimento(linhaLida.substring(959,969).trim());
colecaoDebito.add(reavisoDeDebitoLinhasDescricaoDebitosHelper);
}
// mes ano Linha 10
debito = linhaLida.substring(1011,1018).trim();
valor = "";
origem = "";
if(!debito.equals("")){
valor = linhaLida.substring(1030,1044).trim();
origem = linhaLida.substring(1018,1020).trim();
reavisoDeDebitoLinhasDescricaoDebitosHelper = new ReavisoDeDebitoLinhasDescricaoDebitosHelper();
reavisoDeDebitoLinhasDescricaoDebitosHelper.setMesAno(debito);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setValor(valor);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setOrigem(origem);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setVencimento(linhaLida.substring(1020,1030).trim());
colecaoDebito.add(reavisoDeDebitoLinhasDescricaoDebitosHelper);
}
// mes ano Linha 11
debito = linhaLida.substring(1072,1079).trim();
valor = "";
origem = "";
if(!debito.equals("")){
valor = linhaLida.substring(1091,1105).trim();
origem = linhaLida.substring(1079,1081).trim();
reavisoDeDebitoLinhasDescricaoDebitosHelper = new ReavisoDeDebitoLinhasDescricaoDebitosHelper();
reavisoDeDebitoLinhasDescricaoDebitosHelper.setMesAno(debito);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setValor(valor);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setOrigem(origem);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setVencimento(linhaLida.substring(1081,1091).trim());
colecaoDebito.add(reavisoDeDebitoLinhasDescricaoDebitosHelper);
}
// mes ano Linha 12
debito = linhaLida.substring(1133,1140).trim();
valor = "";
origem = "";
if(!debito.equals("")){
valor = linhaLida.substring(1152,1166).trim();
origem = linhaLida.substring(1140,1142).trim();
reavisoDeDebitoLinhasDescricaoDebitosHelper = new ReavisoDeDebitoLinhasDescricaoDebitosHelper();
reavisoDeDebitoLinhasDescricaoDebitosHelper.setMesAno(debito);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setValor(valor);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setOrigem(origem);
reavisoDeDebitoLinhasDescricaoDebitosHelper.setVencimento(linhaLida.substring(1142,1152).trim());
colecaoDebito.add(reavisoDeDebitoLinhasDescricaoDebitosHelper);
}
reavisoDeDebitoHelper.setColecaoReavisoDeDebitoLinhasDescricaoDebitosHelper(colecaoDebito);
//71-Representa��o numerica cod barra formatado
String codigoBarraFormatado = linhaLida.substring(1299, 1354).trim();
reavisoDeDebitoHelper.setRepresentacaoNumericaCodBarraFormatada(codigoBarraFormatado);
//Representa��o numerica cod barra sem digito
String codigoBarra = codigoBarraFormatado.substring(0,11)
+ codigoBarraFormatado.substring(14, 25)
+ codigoBarraFormatado.substring(28, 39)
+ codigoBarraFormatado.substring(42, 53);
reavisoDeDebitoHelper.setRepresentacaoNumericaCodBarraSemDigito(codigoBarra);
retorno.add(reavisoDeDebitoHelper);
}
}//fim do while eof
}
}
}
} catch (IOException ex) {
throw new ActionServletException("erro.importacao.nao_concluida");
}
return retorno;
}
}