viernes, 1 de marzo de 2019

Cuando la solución es peor que el problema

Hace algunos meses atrás la SUNAT, obligo a algunas empresas a contratar un Operador de Servicios Electrónicos (OSE), con la finalidad de mejorar la calidad del servicio de la validación de comprobantes electrónicos y la emisión de las constancias de recepción (CDR).

En mi centro de labores, estoy a cargo da la plataforma tecnológica de la empresa y dentro de mis obligaciones hay una buena dosis de gestión del proyecto de facturación electrónica.

Como todo buen peruano soy respetuoso de la constitución, las leyes, las normas, resoluciones, etc. Así que mi recomendación fue alinearnos a las nuevas exigencias relacionados a la emisión de comprobantes de pago electrónico, eso implicaba los siguiente:
  1. Migrar el sistemas de facturación electrónica de UBL 2.0 a UBL 2.1. Como plazo máximo al 15/02/2019 (Obligados a partir del 01/03/2019)
  2. Por ser principales contribuyentes (PRICOS), Intendencia Lima, teníamos que contratar un Operador de Servicios Electrónicos (OSE). Antes del 01/03/2019 con la finalidad de utilizar su ambiente de pruebas (Test).
  3. Pasar todo a producción el 22/02/2019 a fin de ajustar los inconvenientes los días 23 y 24 debido a que el personal que factura no trabajan los sábados y domingos.
.....continuara.....

lunes, 3 de octubre de 2016

IMAGENES CON GLASSFISH E IREPORT

1. Base de datos MySQL
 


2. Clase java: Para efectos practicos tomar en cuenta solo la parte sombreada con rojo.

public class Reportes {
    private String xcodigo;
    private String xDescAreaser;
    private byte[] ximgfoto;

    //kITS DE CONTRATAS
    public Reportes(String xcodigo, String xDescAreaser, byte[] ximgfoto) {
        this.xcodigo = xcodigo;
        this.xDescAreaser = xDescAreaser;
        this.ximgfoto = ximgfoto;
    }

    public String getXcodigo() {
        return xcodigo;
    }

    public void setXcodigo(String xcodigo) {
        this.xcodigo = xcodigo;
    }

    public String getxDescAreaser() {
        return xDescAreaser;
    }

    public void setxDescAreaser(String xDescAreaser) {
        this.xDescAreaser = xDescAreaser;
    }

    public byte[] getXimgfoto() {
        return ximgfoto;
    }

    public void setXimgfoto(byte[] ximgfoto) {
        this.ximgfoto = ximgfoto;
    }
}


3. Ireport 4.7.0: El field de Ireport debe tener el mismo nombre que el atributo de la clase.



4. Pasar coleccion de datos para luego exportarlo a pdf.
El metodo esta preparado para Primefaces.

public void exportToPdf(ActionEvent actionEvent) throws JRException, IOException {
        JasperPrint jasperPrint = null;
        List lstRep = new ArrayList();
        if (lstHomKitcontrata != null) {
            for (HomKitcontrata obj : lstHomKitcontrata) {
                lstRep.add(new Reportes(
                        obj.getXcod(),
                        obj.getHomAreaservicioId().getXdesc(),
                        obj.getCnfEntidadesotId().getXimgfoto()
                )
                );
            }
            JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(lstRep);
            String report = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/protegido/operador/reportes/rep_kitscontrata.jasper");
            jasperPrint = JasperFillManager.fillReport(report, new HashMap(), beanCollectionDataSource);
        }

        HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();

        httpServletResponse.addHeader("Content-disposition", "inline; filename=rep_kitscontrata.pdf");

        ServletOutputStream servletStream = httpServletResponse.getOutputStream();

        JasperExportManager.exportReportToPdfStream(jasperPrint, servletStream);

        FacesContext.getCurrentInstance().responseComplete();
    }

5. Ejecutar el metodo desde .xhtml y primefaces.
<p:commandButton id="exportToPdfButton" icon="ui-icon-document" value="Exportar" onclick="form.target = '_blank'" actionListener="#{homKitcontrataBean.exportToPdf(actionEvent)}" ajax="false" />

6. Resultado








miércoles, 24 de agosto de 2016

TABLA SALARIAL DE CONSTRUCCIÓN CIVIL


La federación de trabajadores de construcción civil del Perú (FTCCP) y la Cámara Peruana de la Construcción (CAPECO), firmaron el Acta final de la Negociación Colectiva por Rama de Actividad del Sector Construcción, que establece aumentos a los trabajadores por encima de la inflación acumulada y que rige desde el 1 de junio de 2016. Estas negociaciones colectivas se realizan todos los años, teniendo un común denominador sobre su vigencia desde el 1 de junio del año actual al 31 de mayo del año siguiente.

La publicación de la tabla salarial sucede después del primero de junio, aproximadamente en el mes de agosto, lo que trae como consecuencia el pago de reintegros de todas las planillas generadas con la tabla salarial vencida. Para calcular los reintegros se usan los coeficientes que se indican en la tabla salarial de reintegros. Para ver y descargar la tabla salarial estándar y de reintegros del periodo (Del 01.06.2016 al 31.05.2017) puede dar clic en el enlace que se muestra a continuación.

jueves, 22 de octubre de 2015

Sistema de Control de Versiones Mercurial

Mercurial (hg): Es un sistema de control de versiones distribuido que da a cada desarrollador de una copia local con toda la historia del desarrollo. Esta forma de trabajo independiente de acceso a la red o en un servidor central. Ademas compromete, crea ramas y la mezcla rápido y barato(mercurial).

TortoiseHg: Es una extensión de shell de Windows y una serie de aplicaciones para el Mercurial sistema de control de versiones distribuido. También incluye una extensión de Gnome / Nautilus y una aplicación envoltorio CLI por lo que las herramientas TortoiseHg se puede utilizar en plataformas no Windows. (tortoisehg)

Sentencias básicas de Mercurial: 

  • Crear un nombre de una rama:  $ hg branch rama_nombre
  • Muestra el usuario actual: hg branch
  • muestra el estado de cambios: hg st
  • Añadir los nuevos archivos a Mercurial: hg ci -A -m "mensaje o comentario" 
  • Jala los cambio de un servidor xx: hg pull
  • Muestra el árbol, de cambios: hg log --grap 
  • Realiza la mezcla con otro usuario: $ hg merge otro_usuario 
  • Ver las revisiones que se han fusionado en el directorio de trabajo: hg parents
  • Empujar sus cambios al repositorio: hg push
  • Revisar el historial: hg log

sábado, 29 de agosto de 2015

PLANTILLA DE DOCUMENTOS CON JAVA Y MS OFFICE (.docx)

En el proceso de desarrollo de software se presenta en muchos casos la necesidad de automatizar la generación de documentos como cartas, certificados, contratos, etc. con formatos bien específicos.  Esta situación no ha sido ajena para mí, un tiempo atrás desarrolle un sistema de planillas con Tecnología Java, que además de los cálculos debía generar los diferentes formatos de las certificaciones, liquidaciones y cartas dirigidas a los trabajadores y a las diferentes entidades.

Para la generación de las liquidaciones de beneficios sociales se utilizaba una Hoja de Cálculo generado por el sistema a la cual se le enlazaba a una plantilla Word mediante la combinación de correspondencia pero aun así era un trabajo que demandaba mucho tiempo adicional.

Para solucionar el inconveniente decidí probar algunas soluciones que se pudieran integrar al sistema encontrándome en el proceso con xdocreport, que es una API Java para fusionar documentos XML creados con MS Office (docx, pptx) o OpenOffice (odt), LibreOffice (odt) con un modelo de Java para generar el informe y convertirlo si necesita a otro formato. (Visitar: xdocreport).

 A continuación Presento algunos pantallazos del sistema.

PLANTILLA EN WORD 2013 (*.DOCX): CERTIFICADO DE RENTAS Y RETENCIONES A CUENTA DEL IMPUESTO DE CUARTA CATEGORÍA.

 

INTERFAZ QUE MUESTRA EL CONSOLIDADO DE CERTIFICADOS DE CUARTA CATEGORÍA A GENERAR.


SELECCIÓN DE LA RUTA EN DONDE SE GUARDARA LOS CERTIFICADOS GENERADOS.


DESPUÉS DE HABER SELECCIONADO EL DIRECTORIO SE GENERAN LOS CERTIFICADOS Y SE INDICA EL DESTINO PARA SU VERIFICACIÓN Y USO.


VERIFICAMOS EN EL DIRECTORIO SELECCIONADO LOS CERTIFICADOS GENERADOS.


REPRODUCCIÓN DE UNO DE LOS CERTIFICADOS GENERADOS. 



miércoles, 8 de julio de 2015

Cambiar Puerto 8080 GlassFish 4.1 - Netbenas

Vamos a cambiar el puerto por defecto 8080 por 8083


Ingresamos al directorio indicado en la imagen siguiente (Rectangulo Rojo):
C:\Users\dev01\AppData\Roaming\NetBeans\8.0.1\config\GF_4.1\domain1\config\domain.xml


Editamos el puerto 8083 en la posicion indicada en la siguiente imagen (Rectangulo Rojo)


Reiniciamos el netbeans y podra usar el GlassFish con el nuevo puerto.



viernes, 6 de marzo de 2015

JASPER SERVER ERROR: java.lang.OutOfMemoryError

Para corregir el error en S.O Windows, se debe agregar o modificar la siguientes linea

>>> set JAVA_OPTS=%JAVA_OPTS% -Xms2048m -Xmx3072m -XX:PermSize=1024m -XX:MaxPermSize=2048m -Xss2m -XX:+UseCompressedOoops -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled

en el archivo "catalina.bat" del  jasper server: por ejemplo >>> C:\Jaspersoft\jasperreports-server-cp-5.6.1\apache-tomcat\bin\catalina.bat