Example #1
0
  /** Ejecuta la sentencia SQL. */
  public void execute(
      Short codFuncion,
      String descripcion,
      Short codModulo,
      String nivelAuditoria,
      String regVigente,
      String reqAutorizacion)
      throws SQLException {
    try {
      modify.setUsername(Sesion.getDbUsuario());
      modify.setPassword(Sesion.getDbClave());
      modify.setParameter("codFuncion", codFuncion);
      modify.setParameter("descripcion", descripcion);
      modify.setParameter("codModulo", codModulo);
      modify.setParameter("nivelAuditoria", nivelAuditoria);
      modify.setParameter("regVigente", regVigente);
      modify.setParameter("reqAutorizacion", reqAutorizacion);
      modify.execute();
    }

    // Liberar recursos del objeto modify.
    finally {
      modify.close();
    }
  }
Example #2
0
 /** Crea una instancia DBModify e inicializa sus propiedades. */
 protected void initializer() {
   modify = new DBModify();
   try {
     modify.setDriverName(Sesion.getDbClaseLocal());
     modify.setUrl(Sesion.getDbUrlLocal());
     modify.setCommand(
         "INSERT INTO funcion ( codfuncion, descripcion, codmodulo, nivelauditoria, regvigente, actualizacion, reqautorizacion ) VALUES ( :codFuncion, :descripcion, :codModulo, :nivelAuditoria, :regVigente, CURRENT_TIMESTAMP, :reqAutorizacion )");
     DBParameterMetaData parmMetaData = modify.getParameterMetaData();
     parmMetaData.setParameter(
         1,
         "codFuncion",
         java.sql.DatabaseMetaData.procedureColumnIn,
         java.sql.Types.SMALLINT,
         Short.class);
     parmMetaData.setParameter(
         2,
         "descripcion",
         java.sql.DatabaseMetaData.procedureColumnIn,
         java.sql.Types.VARCHAR,
         String.class);
     parmMetaData.setParameter(
         3,
         "codModulo",
         java.sql.DatabaseMetaData.procedureColumnIn,
         java.sql.Types.SMALLINT,
         Short.class);
     parmMetaData.setParameter(
         4,
         "nivelAuditoria",
         java.sql.DatabaseMetaData.procedureColumnIn,
         java.sql.Types.CHAR,
         String.class);
     parmMetaData.setParameter(
         5,
         "regVigente",
         java.sql.DatabaseMetaData.procedureColumnIn,
         java.sql.Types.CHAR,
         String.class);
     parmMetaData.setParameter(
         6,
         "reqAutorizacion",
         java.sql.DatabaseMetaData.procedureColumnIn,
         java.sql.Types.CHAR,
         String.class);
   } catch (SQLException ex) {
     ex.printStackTrace();
   }
 }
Example #3
0
  /** Ejecuta la sentencia SQL. */
  public void execute(
      String codPerfil, Short codModulo, Short codFuncion, String habilitado, String autorizado)
      throws SQLException {
    try {
      modify.setUsername(Sesion.getDbUsuario());
      modify.setPassword(Sesion.getDbClave());
      modify.setParameter("codPerfil", codPerfil);
      modify.setParameter("codFuncion", codFuncion);
      modify.setParameter("habilitado", habilitado);
      modify.setParameter("autorizado", autorizado);
      modify.setParameter("codModulo", codModulo);
      modify.execute();
    }

    // Liberar recursos del objeto modify.
    finally {
      modify.close();
    }
  }
Example #4
0
 /** Crea una instancia DBModify e inicializa sus propiedades. */
 protected void initializer() {
   modify = new DBModify();
   try {
     modify.setDriverName(Sesion.getDbClaseLocal());
     modify.setUrl(Sesion.getDbUrlLocal());
     modify.setCommand(
         "INSERT INTO funcionperfil ( codperfil, codfuncion, habilitado, autorizado, actualizacion, codmodulo ) VALUES ( :codPerfil, :codFuncion, :habilitado, :autorizado, CURRENT_TIMESTAMP, :codModulo )");
     DBParameterMetaData parmMetaData = modify.getParameterMetaData();
     parmMetaData.setParameter(
         1,
         "codPerfil",
         java.sql.DatabaseMetaData.procedureColumnIn,
         java.sql.Types.CHAR,
         String.class);
     parmMetaData.setParameter(
         2,
         "codFuncion",
         java.sql.DatabaseMetaData.procedureColumnIn,
         java.sql.Types.SMALLINT,
         Short.class);
     parmMetaData.setParameter(
         3,
         "habilitado",
         java.sql.DatabaseMetaData.procedureColumnIn,
         java.sql.Types.CHAR,
         String.class);
     parmMetaData.setParameter(
         4,
         "autorizado",
         java.sql.DatabaseMetaData.procedureColumnIn,
         java.sql.Types.CHAR,
         String.class);
     parmMetaData.setParameter(
         5,
         "codModulo",
         java.sql.DatabaseMetaData.procedureColumnIn,
         java.sql.Types.SMALLINT,
         Short.class);
   } catch (SQLException ex) {
     ex.printStackTrace();
   }
 }
Example #5
0
  /*
   * En esta función se realizaron modificaciones referentes a la migración a java 1.6 por jperez
   * Sólo se parametrizó el tipo de dato contenido en los 'Vector'
   * Fecha: agosto 2011
   */
  private static void crearEncabezadoFiscal() {
    if (logger.isDebugEnabled()) {
      logger.debug("crearEncabezadoFiscal() - start");
    }

    SimpleDateFormat fecha = new SimpleDateFormat("dd/MM/yyyy");
    SimpleDateFormat hora = new SimpleDateFormat("HH:mm:ss");
    DecimalFormat enteroConCeros = new DecimalFormat("000");

    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        crearLineaDeDivision(columnasImpresoraFiscal, '*'), 0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(Sesion.getTienda().getRazonSocial(), 3);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        crearLineaDeDivision(columnasImpresoraFiscal, '*'), 0);

    String lineaDeDireccion = "";
    if ((Sesion.getTienda().getDireccionFiscal() != null)
        && (!Sesion.getTienda().getDireccionFiscal().equalsIgnoreCase("")))
      lineaDeDireccion += Sesion.getTienda().getDireccionFiscal();
    if ((Sesion.getTienda().getNombreSucursal() != null)
        && (!Sesion.getTienda().getNombreSucursal().equalsIgnoreCase("")))
      lineaDeDireccion += " Sucursal:" + Sesion.getTienda().getNombreSucursal() + ".";
    if ((Sesion.getTienda().getDireccion() != null)
        && (!Sesion.getTienda().getDireccion().equalsIgnoreCase("")))
      lineaDeDireccion += Sesion.getTienda().getDireccion();

    if (!lineaDeDireccion.equalsIgnoreCase("")) {
      Vector<String> nuevasLineasDireccion =
          dividirEnLineas(columnasImpresoraFiscal - 3, lineaDeDireccion);
      for (int i = 0; i < nuevasLineasDireccion.size(); i++)
        Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
            centrar((String) nuevasLineasDireccion.elementAt(i), columnasImpresoraFiscal), 0);
    }

    if ((Sesion.getTienda().getNit() != null)
        && (!Sesion.getTienda().getNit().equalsIgnoreCase("")))
      Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
          centrar(
              "RIF:" + Sesion.getTienda().getRif() + "   NIT:" + Sesion.getTienda().getNit(),
              columnasImpresoraFiscal),
          0);
    else
      Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
          centrar("RIF:" + Sesion.getTienda().getRif(), columnasImpresoraFiscal), 0);

    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        crearLineaDeDivision(columnasImpresoraFiscal), 0);

    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        centrar("Reporte de Cierre de Caja", columnasImpresoraFiscal), 0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        crearLineaDeDivision(columnasImpresoraFiscal), 0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar(
            "Caja: " + enteroConCeros.format(Sesion.getCaja().getNumero()),
            "Tienda: " + enteroConCeros.format(Sesion.getTienda().getNumero()),
            columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar(
            "Fecha: " + fecha.format(Sesion.getFechaSistema()),
            "Hora: " + hora.format(Sesion.getHoraSistema()),
            columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        crearLineaDeDivision(columnasImpresoraFiscal), 0);

    if (logger.isDebugEnabled()) {
      logger.debug("crearEncabezadoFiscal() - end");
    }
  }
Example #6
0
  /**
   * Método imprimirReporte Realiza la impresion de la factura de Venta indicada como parametro.
   *
   * @throws BaseDeDatosExcepcion
   * @throws ConexionExcepcion
   */
  public static void imprimirReporte() throws BaseDeDatosExcepcion, ConexionExcepcion {
    if (logger.isDebugEnabled()) {
      logger.debug("imprimirReporte() - start");
    }

    if (Sesion.impresoraFiscal) {
      // Cadenas de secciones de la factura
      Sesion.crFiscalPrinterOperations.abrirDocumentoNoFiscal();
      // Sesion.crFiscalPrinterOperations.desactivarProximoCorte();

      crearEncabezadoFiscal();
      crearDetalleFiscal();
      Sesion.crFiscalPrinterOperations.cerrarDocumentoNoFiscal();

      try {
        Sesion.imprimiendoReporteZ = true;
        Sesion.reporteZOK = false;
        Sesion.crFiscalPrinterOperations.commit();

        while (Sesion.imprimiendoReporteZ && !Sesion.reporteZOK) {
          try {
            Thread.sleep(500);
          } catch (InterruptedException e) {
          }
        }
        if (Sesion.reporteZOK) {
          Sesion.imprimiendoReporteZ = true;
          Sesion.reporteZOK = false;
          Sesion.crFiscalPrinterOperations.reporteZ();
          /*try {
          	Sesion.crFiscalPrinterOperations.commit();
          } catch (PrinterNotConnectedException e) {
          	logger.error("imprimirFactura(Venta, boolean, boolean)", e);
          }
          //ACTUALIZACION BECO: Impresora fiscal GD4
          while (CR.meVenta.getTransaccionPorImprimir()!=null ||
          		CRFiscalPrinterOperations.isImpresionFiscalEnCurso() ||
          		MaquinaDeEstadoVenta.isDocumentoNoFiscalPorImprimir()) {
          	try {
          		Thread.sleep(500);
          	} catch (InterruptedException e) {
          		// TODO Bloque catch generado automáticamente
          		e.printStackTrace();
          	}
          	if(MaquinaDeEstadoVenta.errorAtencionUsuario){
          		MensajesVentanas.aviso("Hay un documento en curso \nEspere un momento e intente nuevamente");
          	}
          }
          if (Sesion.impresoraFiscal) {
          	MaquinaDeEstadoVenta.setDocumentoNoFiscalPorImprimir(true);
          }*/
          Sesion.crFiscalPrinterOperations.cortarPapel();
          Sesion.crFiscalPrinterOperations.commit();
          while (Sesion.imprimiendoReporteZ && !Sesion.reporteZOK) {
            try {
              Thread.sleep(500);
            } catch (InterruptedException e) {
            }
          }
        }
      } catch (PrinterNotConnectedException e) {
        logger.error("imprimirReporte()", e);
      }
      // while (Sesion.crFiscalPrinterOperations.isImprimiendo()) ;
    } else {
      // Esta Implementaccion no maneja Impresora NoFiscal
    }
    if (Sesion.reporteZOK) {
      Sesion.getCaja().setFechaUltRepZ(Sesion.getFechaSistema());
      Sesion.reporteZOK = true;
      Sesion.imprimiendoReporteZ = false;
    }
    if (logger.isDebugEnabled()) {
      logger.debug("imprimirReporte() - end");
    }
  }
Example #7
0
  /*
   * En esta función se realizaron modificaciones referentes a la migración a java 1.6 por jperez
   * Sólo se parametrizó el tipo de dato contenido en los 'Vector'
   * Fecha: agosto 2011
   */
  private static void crearDetalleFiscal() {
    if (logger.isDebugEnabled()) {
      logger.debug("crearDetalleFiscal() - start");
    }

    DecimalFormat precio = new DecimalFormat("#,##0.00");
    DecimalFormat cantidad = new DecimalFormat("#,##0");
    int[] transacciones =
        MediadorBD.obtenerTransaccionesDiarias(
            Sesion.getCaja().getFechaUltRepZ(), Sesion.getCaja().getNumero());
    double[] ventas =
        MediadorBD.obtenerTransacciones(
            Sesion.getCaja().getFechaUltRepZ(), Sesion.getCaja().getNumero(), Sesion.VENTA);
    double[] anulaciones =
        MediadorBD.obtenerTransacciones(
            Sesion.getCaja().getFechaUltRepZ(), Sesion.getCaja().getNumero(), Sesion.ANULACION);
    double[] devoluciones =
        MediadorBD.obtenerTransacciones(
            Sesion.getCaja().getFechaUltRepZ(), Sesion.getCaja().getNumero(), Sesion.DEVOLUCION);
    int nroVtas =
        MediadorBD.obtenerNumTransacciones(Sesion.getCaja().getFechaUltRepZ(), Sesion.VENTA);
    int nroDev =
        MediadorBD.obtenerNumTransacciones(Sesion.getCaja().getFechaUltRepZ(), Sesion.DEVOLUCION);
    int nroAnul =
        MediadorBD.obtenerNumTransacciones(Sesion.getCaja().getFechaUltRepZ(), Sesion.ANULACION);

    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        centrar("Contador de Transacciones", columnasImpresoraFiscal), 0);

    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        crearLineaDeDivision(columnasImpresoraFiscal), 0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar("Contador Final: ", String.valueOf(transacciones[1]), columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar("Contador Inicial: ", "(-)" + transacciones[0], columnasImpresoraFiscal), 0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar(
            "Nro. Transacciones: ",
            String.valueOf(transacciones[1] - transacciones[0]),
            columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        crearLineaDeDivision(columnasImpresoraFiscal), 0);

    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        centrar("Consolidado de Transacciones", columnasImpresoraFiscal), 0);

    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        crearLineaDeDivision(columnasImpresoraFiscal), 0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar("Vtas Exentas Brutas", precio.format(ventas[2]), columnasImpresoraFiscal), 0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar("Vtas Gravables Brutas", precio.format(ventas[0]), columnasImpresoraFiscal), 0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar(
            "Tota_ Ventas Brutas" + alinearDerecha("(" + cantidad.format(nroVtas) + ")", 6),
            precio.format(ventas[0] + ventas[2]),
            columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar("Tot. Imp. Vtas Brutas", precio.format(ventas[1]), columnasImpresoraFiscal), 0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar(
            "Anulaciones  " + alinearDerecha("(" + cantidad.format(nroAnul) + ")", 11),
            precio.format(anulaciones[0] + anulaciones[2]),
            columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar(
            "Devoluciones " + alinearDerecha("(" + cantidad.format(nroDev) + ")", 11),
            precio.format(devoluciones[0] + devoluciones[2]),
            columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar(
            "Tot. Anul + Dev" + alinearDerecha("(" + cantidad.format(nroAnul + nroDev) + ")", 9),
            precio.format(anulaciones[0] + anulaciones[2] + devoluciones[0] + devoluciones[2]),
            columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar(
            "Tot. Imp. Asoc. Anul + Dev",
            precio.format(anulaciones[1] + devoluciones[1]),
            columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        alinearDerecha(crearLineaDeDivision(columnasImpresoraFiscal - 15), columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar(
            "Venta Neta",
            precio.format(
                ventas[0]
                    + ventas[2]
                    - (anulaciones[0] + anulaciones[2])
                    - (devoluciones[0] + devoluciones[2])),
            columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        alinearDerecha(crearLineaDeDivision(columnasImpresoraFiscal - 15), columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar(
            "  Ventas Exentas Netas",
            precio.format(ventas[2] - anulaciones[2] - devoluciones[2]),
            columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar(
            "  Ventas Gravables Netas",
            precio.format(ventas[0] - anulaciones[0] - devoluciones[0]),
            columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar(
            "  Impuesto Neto",
            precio.format(ventas[1] - anulaciones[1] - devoluciones[1]),
            columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        alinearDerecha(crearLineaDeDivision(columnasImpresoraFiscal - 15), columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar(
            "Venta Tota_ Neta",
            precio.format(
                ventas[0]
                    + ventas[2]
                    - (anulaciones[0] + anulaciones[2])
                    - (devoluciones[0] + devoluciones[2])
                    + ventas[1]
                    - anulaciones[1]
                    - devoluciones[1]),
            columnasImpresoraFiscal),
        0);

    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        crearLineaDeDivision(columnasImpresoraFiscal), 0);

    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        centrar("Detalle de Formas De Pago", columnasImpresoraFiscal), 0);

    Vector<FormaDePago> formasDePago = ManejoPagosFactory.getInstance().cargarTodasFormasDePago();
    Vector<Integer> transaccionesDeVenta =
        MediadorBD.obtenerNumeroDeTransacciones(
            Sesion.getCaja().getFechaUltRepZ(), Sesion.getCaja().getNumero(), Sesion.VENTA);
    Vector<Integer> transaccionesDeAnulacion =
        MediadorBD.obtenerNumeroDeTransacciones(
            Sesion.getCaja().getFechaUltRepZ(), Sesion.getCaja().getNumero(), Sesion.ANULACION);
    Vector<Integer> transaccionesDeDevolucion =
        MediadorBD.obtenerNumeroDeTransacciones(
            Sesion.getCaja().getFechaUltRepZ(), Sesion.getCaja().getNumero(), Sesion.DEVOLUCION);
    String wherePositivo = "";
    String whereNegativo = "";
    for (int j = 0; j < transaccionesDeVenta.size(); j++) {
      if (j == 0)
        wherePositivo =
            "(p.numtransaccion = " + ((Integer) transaccionesDeVenta.elementAt(j)).intValue();
      else
        wherePositivo +=
            " or p.numtransaccion = " + ((Integer) transaccionesDeVenta.elementAt(j)).intValue();
    }
    if (!wherePositivo.equalsIgnoreCase("")) wherePositivo += ")";
    for (int j = 0; j < transaccionesDeAnulacion.size(); j++) {
      if (j == 0)
        whereNegativo =
            "(p.numtransaccion = " + ((Integer) transaccionesDeAnulacion.elementAt(j)).intValue();
      else
        whereNegativo +=
            " or p.numtransaccion = "
                + ((Integer) transaccionesDeAnulacion.elementAt(j)).intValue();
    }
    for (int j = 0; j < transaccionesDeDevolucion.size(); j++) {
      if ((j == 0) && (whereNegativo.equals("")))
        whereNegativo =
            "(p.numtransaccion = " + ((Integer) transaccionesDeDevolucion.elementAt(j)).intValue();
      else
        whereNegativo +=
            " or p.numtransaccion = "
                + ((Integer) transaccionesDeDevolucion.elementAt(j)).intValue();
    }
    if (!whereNegativo.equals("")) whereNegativo += ")";

    // Obtenemos el monto dado por vuelto para restárselo al efectivo
    double vuelto = 0;
    if (!wherePositivo.equalsIgnoreCase("")) vuelto = MediadorBD.obtenerVueltos(wherePositivo);

    // Obtenemos el monto dado por vuelto para restárselo al efectivo
    double vueltoNegativo = 0;
    if (!whereNegativo.equalsIgnoreCase(""))
      vueltoNegativo = MediadorBD.obtenerVueltos(whereNegativo);

    // Por cada Forma de Pago
    for (int i = 0; i < formasDePago.size(); i++) {
      FormaDePago pago = (FormaDePago) formasDePago.elementAt(i);
      double positivo = 0;
      double negativo = 0;
      if (!wherePositivo.equalsIgnoreCase(""))
        positivo = MediadorBD.obtenerPagosDeTransacciones(wherePositivo, pago.getCodigo());
      if (!whereNegativo.equalsIgnoreCase(""))
        negativo = MediadorBD.obtenerPagosDeTransacciones(whereNegativo, pago.getCodigo());
      if ((pago.getCodigo().equalsIgnoreCase("1111111111"))
          || (pago.getCodigo().equalsIgnoreCase("01"))) {
        negativo += vuelto;
        positivo += vueltoNegativo;
      }

      Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(pago.getNombre(), 0);
      Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
          justificar("  POSITIVO", precio.format(positivo), columnasImpresoraFiscal), 0);
      Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
          justificar("  NEGATIVO", precio.format(-negativo), columnasImpresoraFiscal), 0);
      Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
          justificar("  NETO:   ", precio.format(positivo - negativo), columnasImpresoraFiscal), 0);
    }
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        crearLineaDeDivision(columnasImpresoraFiscal), 0);

    if (logger.isDebugEnabled()) {
      logger.debug("crearDetalleFiscal() - end");
    }
  }
  /*
   * En esta función se realizaron modificaciones referentes a la migración a java 1.6 por jperez
   * Sólo se parametrizó el tipo de dato contenido en los 'Vector'
   * Fecha: agosto 2011
   */
  @SuppressWarnings("unused")
  private static void crearEncabezado(Apartado apartado) {
    if (logger.isDebugEnabled()) {
      logger.debug("crearEncabezado(Apartado) - start");
    }

    SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy");

    Sesion.crPrinterOperations.enviarString(crearLineaDeDivision(columnasImpresora) + "\n");
    Sesion.crPrinterOperations.activarFuenteImpresionNegrita();
    Sesion.crPrinterOperations.alinear(1);
    Sesion.crPrinterOperations.enviarString("ANULACION APARTADO\n");
    Sesion.crPrinterOperations.initializarPrinter();
    Sesion.crPrinterOperations.activarDocumentoNomal();
    Sesion.crPrinterOperations.enviarString(crearLineaDeDivision(columnasImpresora) + "\n");

    Sesion.crPrinterOperations.enviarString(
        justificar(
                "Apartado N°: " + apartado.getNumServicio(),
                "Fecha: " + formatoFecha.format(apartado.getFechaServicio()),
                columnasImpresora)
            + "\n");
    Sesion.crPrinterOperations.enviarString(
        justificar(
                "Tienda: " + Sesion.getTienda().getNombreSucursal(),
                "Página:" + alinearDerecha("1", 11),
                columnasImpresora)
            + "\n");

    Calendar vencimiento = Calendar.getInstance();
    vencimiento.setTime(apartado.getFechaServicio());
    if (apartado.getTipoVigencia().equalsIgnoreCase("Dia")) {
      vencimiento.add(Calendar.DATE, apartado.getTiempoVigencia());
    } else {
      if (apartado.getTipoVigencia().equalsIgnoreCase("Mes")) {
        vencimiento.add(Calendar.MONTH, apartado.getTiempoVigencia());
      }
    }

    Sesion.crPrinterOperations.enviarString(
        justificar(
                "Emisión: " + formatoFecha.format(apartado.getFechaServicio()),
                "Vence: " + formatoFecha.format(vencimiento.getTime()),
                columnasImpresora)
            + "\n");
    Sesion.crPrinterOperations.enviarString(
        justificar(
                "Fecha Anulación: " + formatoFecha.format(Sesion.getFechaSistema()),
                "Cajero: " + Sesion.getUsuarioActivo().getNumFicha(),
                columnasImpresora)
            + "\n");
    Sesion.crPrinterOperations.enviarString(crearLineaDeDivision(columnasImpresora) + "\n");
    Sesion.crPrinterOperations.enviarString(
        "Cédula ó R.I.F.: " + apartado.getCliente().getCodCliente() + "\n");
    Sesion.crPrinterOperations.enviarString(
        "Cliente: " + apartado.getCliente().getNombreCompleto() + "\n");

    // Picamos la direccion del Cliente
    String inicioLinea = "Dirección: ";
    Vector<String> dir =
        dividirEnLineas(
            columnasImpresora - inicioLinea.length(), apartado.getCliente().getDireccion());
    for (int i = 0; i < dir.size(); i++) {
      if (i == 0) Sesion.crPrinterOperations.enviarString(inicioLinea + dir.elementAt(i) + "\n");
      else
        Sesion.crPrinterOperations.enviarString(
            crearLineaDeDivision(inicioLinea.length(), ' ') + dir.elementAt(i) + "\n");
    }

    // Se imprime el teléfono del cliente
    String codAreaCliente = "";
    String telfCliente = "";
    if (apartado.getCliente().getCodArea() != null)
      codAreaCliente = apartado.getCliente().getCodArea();
    if (apartado.getCliente().getNumTelefono() != null)
      telfCliente = apartado.getCliente().getNumTelefono();
    Sesion.crPrinterOperations.enviarString(
        "Teléfonos: " + codAreaCliente + "-" + telfCliente + "\n");

    Sesion.crPrinterOperations.enviarString(crearLineaDeDivision(columnasImpresora) + "\n");

    if (logger.isDebugEnabled()) {
      logger.debug("crearEncabezado(Apartado) - end");
    }
  }
  /**
   * Crea el detalle de la factura. En el vector de lineas se agregan las lineas generadas.
   *
   * @param ventaActual Venta a partir de la cual se generara el detalle.
   * @param lineas Vector de las lineas actuales de la factura.
   */
  private static void crearDetallesFiscal(Apartado apartado) {
    if (logger.isDebugEnabled()) {
      logger.debug("crearDetallesFiscal(Apartado) - start");
    }

    DecimalFormat precio = new DecimalFormat("#,##0.00");
    DecimalFormat cantidad = new DecimalFormat("#0.00");
    DetalleServicio detalleActual;

    // Para cada detalle de la venta
    for (int i = 0; i < apartado.getDetallesServicio().size(); i++) {
      detalleActual = (DetalleServicio) apartado.getDetallesServicio().elementAt(i);

      int longitudCodigo = Sesion.getLongitudCodigoInterno();
      if (!(longitudCodigo > -1)) longitudCodigo = Control.getLONGITUD_CODIGO();

      // Se chequea la longitud del código del producto para que salga en el reporte igual que como
      // en la interfaz
      String codProd = detalleActual.getProducto().getCodProducto().toString();
      int longitud = codProd.length();
      if ((Sesion.getLongitudCodigoInterno() > -1)
          && (longitud > Sesion.getLongitudCodigoInterno())) {
        codProd = codProd.substring(codProd.length() - Sesion.getLongitudCodigoInterno());
        codProd = centrar(codProd, Control.getLONGITUD_CODIGO());
        String codP = codProd;
        for (int j = 0; j < Control.getLONGITUD_CODIGO() - codProd.length(); j++) {
          codP = codP + " ";
        }
        codProd = codP;
      }

      Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
          justificar(
              alinearDerecha(codProd, longitudCodigo)
                  + "   "
                  + detalleActual.getProducto().getDescripcionCorta(),
              "1 " + detalleActual.getProducto().getAbreviadoUnidadVenta(),
              columnasImpresoraFiscal - 1),
          0);
      if (!detalleActual.getCondicionVenta().equals(Sesion.condicionNormal)) {
        // Si se ha aplicado alguna rebaja (Promocion, Empaque, Cambio de Precio) se especifica
        Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
            " PR:"
                + precio.format(detalleActual.getProducto().getPrecioRegular())
                + " "
                + detalleActual.getCondicionVenta()
                + ":"
                + precio.format(detalleActual.getPrecioFinal()),
            0);
      }

      Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
          alinearDerecha(cantidad.format(detalleActual.getCantidad()), 9)
              + alinearDerecha(precio.format(detalleActual.getPrecioFinal()), 15)
              + alinearDerecha(
                  precio.format(detalleActual.getCantidad() * detalleActual.getPrecioFinal()), 16),
          0);
    }
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        crearLineaDeDivision(columnasImpresoraFiscal), 0);

    if (logger.isDebugEnabled()) {
      logger.debug("crearDetallesFiscal(Apartado) - end");
    }
  }
  /*
   * En esta función se realizaron modificaciones referentes a la migración a java 1.6 por jperez
   * Sólo se parametrizó el tipo de dato contenido en los 'Vector'
   * Fecha: agosto 2011
   */
  private static void crearEncabezadoFiscal(Apartado apartado) {
    if (logger.isDebugEnabled()) {
      logger.debug("crearEncabezadoFiscal(Apartado) - start");
    }

    SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy");
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar(
            "FECHA: " + formatoFecha.format(Sesion.getFechaSistema()),
            "HORA: " + Sesion.getHoraSistema(),
            columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        crearLineaDeDivision(columnasImpresoraFiscal), 0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        convertirCadena("Apartado de productos"), 3);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal("ANULACION APARTADO", 1);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        crearLineaDeDivision(columnasImpresoraFiscal), 0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar(
            "Apartado Nro: " + apartado.getNumServicio(),
            "Fecha: " + formatoFecha.format(apartado.getFechaServicio()),
            columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        "Tienda: " + Sesion.getTienda().getNombreSucursal(), 0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal("Página:" + alinearDerecha("1", 11), 0);

    Calendar vencimiento = Calendar.getInstance();
    vencimiento.setTime(apartado.getFechaServicio());
    if (apartado.getTipoVigencia().equalsIgnoreCase("Dia")) {
      vencimiento.add(Calendar.DATE, apartado.getTiempoVigencia());
    } else {
      if (apartado.getTipoVigencia().equalsIgnoreCase("Mes")) {
        vencimiento.add(Calendar.MONTH, apartado.getTiempoVigencia());
      }
    }

    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar(
            "Emisión: " + formatoFecha.format(apartado.getFechaServicio()),
            "Vence: " + formatoFecha.format(vencimiento.getTime()),
            columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        justificar(
            "Anulación: " + formatoFecha.format(Sesion.getFechaSistema()),
            "Cajero: " + Sesion.getUsuarioActivo().getNumFicha(),
            columnasImpresoraFiscal),
        0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        crearLineaDeDivision(columnasImpresoraFiscal), 0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        "Cédula ó R.I.F.: " + apartado.getCliente().getCodCliente().replace('N', 'V'), 0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        "Cliente: " + apartado.getCliente().getNombreCompleto(), 0);

    // Picamos la direccion del Cliente
    // String direccion = apartado.getCliente().getDireccion();
    String inicioLinea = "Dirección: ";
    Vector<String> dir =
        dividirEnLineas(
            columnasImpresoraFiscal - inicioLinea.length(), apartado.getCliente().getDireccion());
    for (int i = 0; i < dir.size(); i++) {
      if (i == 0)
        Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(inicioLinea + dir.elementAt(i), 0);
      else
        Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
            crearLineaDeDivision(inicioLinea.length(), ' ') + dir.elementAt(i), 0);
    }

    // Se imprime el teléfono del cliente
    String codAreaCliente = "";
    String telfCliente = "";
    if (apartado.getCliente().getCodArea() != null)
      codAreaCliente = apartado.getCliente().getCodArea();
    if (apartado.getCliente().getNumTelefono() != null)
      telfCliente = apartado.getCliente().getNumTelefono();
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        "Teléfonos: " + codAreaCliente + "-" + telfCliente, 0);
    Sesion.crFiscalPrinterOperations.enviarLineaNoFiscal(
        crearLineaDeDivision(columnasImpresoraFiscal), 0);

    if (logger.isDebugEnabled()) {
      logger.debug("crearEncabezadoFiscal(Apartado) - end");
    }
  }