diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/sendaAmigo/ImportarPlanilhaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/sendaAmigo/ImportarPlanilhaController.java new file mode 100644 index 000000000..8129add75 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/sendaAmigo/ImportarPlanilhaController.java @@ -0,0 +1,388 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.sendaAmigo; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Date; +import java.util.Iterator; +import java.util.List; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Controller; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.event.UploadEvent; +import org.zkoss.zul.Checkbox; +import org.zkoss.zul.Label; + +import com.rjconsultores.ventaboletos.entidad.Ciudad; +import com.rjconsultores.ventaboletos.entidad.Colonia; +import com.rjconsultores.ventaboletos.entidad.Estado; +import com.rjconsultores.ventaboletos.entidad.InstiFinanceira; +import com.rjconsultores.ventaboletos.entidad.PuntoVenta; +import com.rjconsultores.ventaboletos.exception.IntegracionException; +import com.rjconsultores.ventaboletos.exception.ValidacionCampoException; +import com.rjconsultores.ventaboletos.service.CiudadService; +import com.rjconsultores.ventaboletos.service.ColoniaService; +import com.rjconsultores.ventaboletos.service.EstadoService; +import com.rjconsultores.ventaboletos.service.InstiFinanceiraService; +import com.rjconsultores.ventaboletos.service.PuntoVentaService; +import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; +import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext; + +@Controller("importarPlanilhaController") +@Scope("prototype") +public class ImportarPlanilhaController extends MyGenericForwardComposer { + + private static final long serialVersionUID = 1L; + @Autowired + private PuntoVentaService puntoVentaService; + @Autowired + private ColoniaService coloniaService; + @Autowired + private CiudadService ciudadService; + @Autowired + private EstadoService estadoService; + @Autowired + private InstiFinanceiraService instiFinanceiraService; + private Checkbox chkCabecalho; + private Checkbox chkTotvs; + private Label progressLabel; + + private static Logger log = Logger.getLogger(ImportarPlanilhaController.class); + + + @Override + public void doAfterCompose(Component comp) throws Exception { + super.doAfterCompose(comp); + + } + + public synchronized void onUpload(UploadEvent event) throws IOException, InterruptedException { + + String nomeArquivo = event.getMedia().getName(); + + progressLabel.setValue(""); + + try { + + InputStream fis = event.getMedia().getStreamData(); + + XSSFWorkbook book = new XSSFWorkbook(fis); + XSSFSheet sheet = book.getSheetAt(0); + + log.info(nomeArquivo); + + Iterator itr = sheet.iterator(); + + List listInstiFinanceira = instiFinanceiraService.obtenerTodos(); + + while (itr.hasNext()) { + + Row row = itr.next(); + Integer qtAtual = row.getRowNum(); + Integer qtTotal = row.getSheet().getPhysicalNumberOfRows()-1; + log.info("Row Nº.: " + qtAtual + " de " + qtTotal); + + if (chkCabecalho.isChecked()) { + if (row.getRowNum() == 0) { + continue; + } + } + + Iterator cellIterator = row.cellIterator(); + while (cellIterator.hasNext()) { + + String codigo = row.getCell(0).getStringCellValue(); + + List listpv = puntoVentaService.buscaPuntoVenta(codigo); + + String razonSocial = row.getCell(1) != null ? removeCaracter(row.getCell(1).getStringCellValue()) : ""; + String nombPuntoVenta = row.getCell(2) != null ? removeCaracter(row.getCell(2).getStringCellValue()) : ""; + String endereco = row.getCell(3) != null ? removeCaracter(row.getCell(3).getStringCellValue()) : ""; + String comple = row.getCell(4) != null ? removeCaracter(row.getCell(4).getStringCellValue()) : ""; + String bairro = row.getCell(5) != null ? removeCaracter(row.getCell(5).getStringCellValue()) : ""; + String estado = row.getCell(6) != null ? removeCaracter(row.getCell(6).getStringCellValue()) : ""; + String cep = row.getCell(7) != null ? removeCaracter(row.getCell(7).getStringCellValue()) : ""; + String codMun = row.getCell(8) != null ? removeCaracter(row.getCell(8).getStringCellValue()) : ""; + String ddd = row.getCell(9) != null ? removeCaracter(row.getCell(9).getStringCellValue()) : ""; + String telefone = row.getCell(10) != null ? removeCaracter(row.getCell(10).getStringCellValue()) : ""; + String fax = row.getCell(11) != null ? removeCaracter(row.getCell(11).getStringCellValue()) : ""; + String cgc = row.getCell(12) != null ? removeCaracter(row.getCell(12).getStringCellValue()) : ""; + String inscricao = row.getCell(13) != null ? removeCaracter(row.getCell(13).getStringCellValue()) : ""; + String isento = row.getCell(14) != null ? removeCaracter(row.getCell(14).getStringCellValue()) : ""; + String email = row.getCell(15) != null ? removeCaracter(row.getCell(15).getStringCellValue()) : ""; + String obs = row.getCell(16) != null ? removeCaracter(row.getCell(16).getStringCellValue()) : ""; + String banco = row.getCell(17) != null ? removeCaracter(row.getCell(17).getStringCellValue()) : ""; + String tipoConta = row.getCell(18) != null ? removeCaracter(row.getCell(18).getStringCellValue()) : ""; + String pessoa = row.getCell(19) != null ? removeCaracter(row.getCell(19).getStringCellValue()) : ""; + String agencia = row.getCell(20) != null ? removeCaracter(row.getCell(20).getStringCellValue()) : ""; + String digitoAgencia = row.getCell(21) != null ? removeCaracter(row.getCell(21).getStringCellValue()) : ""; + String conta = row.getCell(22) != null ? removeCaracter(row.getCell(22).getStringCellValue()) : ""; + String digitoConta = row.getCell(23) != null ? removeCaracter(row.getCell(23).getStringCellValue()) : ""; + + for (PuntoVenta pv : listpv) { + + if(chkTotvs.isChecked()){ + atualizarEntidade(pv); + continue; + } + + if (StringUtils.isNotBlank(razonSocial)) { + log.info(razonSocial); + if(razonSocial.length() >= 40){ + pv.setRazonSocial(razonSocial.substring(0, 40)); + }else{ + pv.setRazonSocial(razonSocial); + } + + } + if (StringUtils.isNotBlank(nombPuntoVenta)) { + pv.setNombpuntoventa(nombPuntoVenta); + log.info(nombPuntoVenta); + } + if (StringUtils.isNotBlank(endereco)) { + String direcion = endereco.isEmpty() ? "" : removeCaracter(endereco.substring(0, endereco.indexOf("Nº")).trim() ); + if(StringUtils.isNotBlank(removeCaracter(direcion.trim()))){ + pv.setDireccioncalle(direcion); + log.info(direcion); + }else{ + pv.setDireccioncalle(""); + log.info(direcion); + } + + } + if (StringUtils.isNotBlank(endereco)) { + String numero = endereco.isEmpty() ? "" : removeCaracter(endereco.substring(endereco.indexOf("Nº") +2, endereco.length()).trim()); + if(StringUtils.isNotBlank(removeCaracter(numero.trim()))){ + pv.setDireccionnumero(numero); + log.info(numero); + }else{ + pv.setDireccionnumero(""); + log.info(numero); + } + } + if (StringUtils.isNotBlank(comple)) { + pv.setCompl(comple); + log.info(comple); + } + if (StringUtils.isNotBlank(bairro)) { + if (StringUtils.isNotBlank(codMun) && StringUtils.isNotBlank(estado)) { + List estadoBean = estadoService.buscarCveEstado(estado); + if(!estadoBean.isEmpty()){ + List listCiudad = ciudadService.buscaCodMun(Integer.valueOf(codMun), estadoBean.get(0)); + if(!listCiudad.isEmpty()){ + List listColonia = coloniaService.buscarPorCodMun(listCiudad.get(0), bairro); + if(listColonia.isEmpty()){ + Colonia colonia = new Colonia(); + colonia.setDesccolonia(bairro); + colonia.setCodpostal("0"); + colonia.setCiudad(listCiudad.get(0)); + colonia.setFecmodif(new Date()); + colonia.setUsuarioId(99); + colonia.setActivo(Boolean.TRUE); + coloniaService.suscribir(colonia); + pv.setColonia(colonia); + log.info(colonia.getDesccolonia()); + }else{ + pv.setColonia(listColonia.get(0)); + log.info(listColonia.get(0).getDesccolonia()); + } + } + } + + } + + } + if (StringUtils.isNotBlank(estado)) { +// + } + if ((StringUtils.isNotBlank(cep)) && Long.valueOf(cep) != 0) { + pv.setCodpostal(Long.valueOf(cep)); + log.info(cep); + } + if (StringUtils.isNotBlank(codMun)) { +// + } + if (StringUtils.isNotBlank(ddd) && StringUtils.isNotBlank(telefone)) { + if(telefone.length() >= 8 ){ + String tel = "(0" + ddd + ")"; + telefone = telefone.substring(0, 4) + "-" + telefone.substring(4, telefone.length()) ; + tel = tel + telefone; + pv.setNumtelefonouno(tel); + log.info(tel); + } + } + if (StringUtils.isNotBlank(fax)) { + if(fax.length() >= 8 ){ + String faxTemp = "(0" + ddd + ")"; + fax = fax.substring(0, 4) + "-" + fax.substring(4, fax.length()) ; + faxTemp = faxTemp + fax; + pv.setNumfax(faxTemp); + log.info(faxTemp); + } + + } + if ((StringUtils.isNotBlank(cgc)) && Long.valueOf(cgc) != 0) { + pv.setNumDoCPuntoVenta(cgc); + log.info(cgc); + + } + if (StringUtils.isNotBlank(inscricao)) { +// + } + if (StringUtils.isNotBlank(isento)) { +// + } + if (StringUtils.isNotBlank(email)) { + pv.setDescCorreo(email); + log.info(email); + + } + if (StringUtils.isNotBlank(obs)) { +// + } + if (StringUtils.isNotBlank(banco)) { + for (InstiFinanceira insti : listInstiFinanceira) { + if((insti.getCodigo() != null ) && insti.getCodigo().equalsIgnoreCase(banco)){ + pv.getAgenciaId().setInstiFinanceiraId(insti); + log.info(insti.getNome()); + break; + } + } + + } + if (StringUtils.isNotBlank(tipoConta)) { + if (tipoConta.equalsIgnoreCase("CORRENTE")) { + pv.getAgenciaId().setTipo("C/C"); + } else if (tipoConta.equalsIgnoreCase("POUPANCA")) { + pv.getAgenciaId().setTipo("P"); + } + log.info(tipoConta); + + } + if (StringUtils.isNotBlank(pessoa)) { +// + } + if (StringUtils.isNotBlank(agencia) && StringUtils.isNotBlank(digitoAgencia)) { + pv.getAgenciaId().setNumagencia(agencia + "-" + digitoAgencia ); + log.info(agencia + "-" + digitoAgencia ); + } + if (StringUtils.isNotBlank(conta)) { + pv.getAgenciaId().setNumconta(conta); + log.info(conta); + } + if (StringUtils.isNotBlank(digitoConta)) { + if(digitoConta.length() > 1){ + pv.getAgenciaId().setDigito(digitoConta.trim().substring(0, 1)); + }else{ + pv.getAgenciaId().setDigito(digitoConta.trim()); + } + log.info(digitoConta.trim()); + } + + atualizarEntidade(pv); + } + + break; + } + + log.info(""); + } + + progressLabel.setValue("Planilha " + nomeArquivo + " processada com sucesso."); + + log.info("FIM"); + + } catch (Exception ie) { + progressLabel.setValue("Erro ao processar planilha " + nomeArquivo + "."); + log.error("", ie); + } + } + + private String removeCaracter(String car) { + if (car.equalsIgnoreCase("NULL") || car.equalsIgnoreCase("S/N")) { + car = ""; + } + return car; + + } + + private void atualizarEntidade(PuntoVenta pv) throws IntegracionException, ValidacionCampoException{ + puntoVentaService.actualizacion(pv); + } + + private void setContext() { + ApplicationContext appContext = AppContext.getApplicationContext(); + + BeanFactory factory = (BeanFactory) appContext; + puntoVentaService = (PuntoVentaService) factory.getBean("puntoVentaService"); + coloniaService = (ColoniaService) factory.getBean("coloniaService"); + instiFinanceiraService = (InstiFinanceiraService) factory.getBean("ptovtaBancoService"); + ciudadService = (CiudadService) factory.getBean("ciudadService"); + estadoService = (EstadoService) factory.getBean("estadoService"); + } + + public PuntoVentaService getPuntoVentaService() { + return puntoVentaService; + } + + public void setPuntoVentaService(PuntoVentaService puntoVentaService) { + this.puntoVentaService = puntoVentaService; + } + + public ColoniaService getColoniaService() { + return coloniaService; + } + + public void setColoniaService(ColoniaService coloniaService) { + this.coloniaService = coloniaService; + } + + public CiudadService getCiudadService() { + return ciudadService; + } + + public void setCiudadService(CiudadService ciudadService) { + this.ciudadService = ciudadService; + } + + public EstadoService getEstadoService() { + return estadoService; + } + + public void setEstadoService(EstadoService estadoService) { + this.estadoService = estadoService; + } + + public InstiFinanceiraService getInstiFinanceiraService() { + return instiFinanceiraService; + } + + public void setInstiFinanceiraService(InstiFinanceiraService instiFinanceiraService) { + this.instiFinanceiraService = instiFinanceiraService; + } + + public Checkbox getChkCabecalho() { + return chkCabecalho; + } + + public void setChkCabecalho(Checkbox chkCabecalho) { + this.chkCabecalho = chkCabecalho; + } + + public Checkbox getChkTotvs() { + return chkTotvs; + } + + public void setChkTotvs(Checkbox chkTotvs) { + this.chkTotvs = chkTotvs; + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/pasajerofrecuente/ItemMenuImportarPlanilha.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/pasajerofrecuente/ItemMenuImportarPlanilha.java new file mode 100644 index 000000000..fda039c15 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/pasajerofrecuente/ItemMenuImportarPlanilha.java @@ -0,0 +1,22 @@ +package com.rjconsultores.ventaboletos.web.utilerias.menu.item.pasajerofrecuente; + +import com.rjconsultores.ventaboletos.web.utilerias.PantallaUtileria; +import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema; + +public class ItemMenuImportarPlanilha extends DefaultItemMenuSistema { + + public ItemMenuImportarPlanilha() { + super("Importar Planilha"); + } + + @Override + public String getClaveMenu() { + return "COM.RJCONSULTORES.ADMINISTRACION.GUI.CONFIGURACIONECCOMERCIALES.MENU.IMPORTARCLIENTES"; + } + + @Override + public void ejecutar() { + PantallaUtileria.openWindow("/gui/configuraciones_comerciales/importarPlanilha.zul", + "Importar Planilha", getArgs() ,desktop); + } +} diff --git a/web/gui/configuraciones_comerciales/importarPlanilha.zul b/web/gui/configuraciones_comerciales/importarPlanilha.zul new file mode 100644 index 000000000..404ebe5f8 --- /dev/null +++ b/web/gui/configuraciones_comerciales/importarPlanilha.zul @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file