jugnicaragua / pico Goto Github PK
View Code? Open in Web Editor NEWSistema Contable para MicroEmpresas Nicaraguenses.
License: Other
Sistema Contable para MicroEmpresas Nicaraguenses.
License: Other
Describe el error
Al momento de clonar el proyecto y ejecutarlo no se resuelven las dependencias de jasper report para com.lowagie:itext:jar:2.1.7.js6 según los foros de jasper report se debe a que se ha movido esta dependencia
Reproducir el error
Pasos para reproducir el comportamiento:
git clone --branch develop [email protected]:jugnicaragua/PICO.git
mvn compile
resuelve las dependencias, pero no logra la del jasper reportComportamiento esperado
Anteriormente descargaba el proyecto y me ejecutaba normalmente, pero por ahora encontró el error de las dependencias de jasper report
Capturas de pantalla
Este es el resultado obtenido
Ambiente de Escritorio
Contexto adicional
No logré pasar desde ahí, pero anteriormente el proyecto se podía clonar e implementar sin problemas siguiendo los pasos indicados en el REAME
se requiere documentar el porqué de la selección de la base de datos, establecer las normas para mantener la seguridad.
** Recursos adicionales **
Para un usuario que viene iniciando y desee contribuir a PICO se le dificulta si no está familiarizado con las formas de contribuir utilizando fork del repositorio base en JUG Nicaragua y en Contribuyendo a PICO aún no se establece una guía específica de contribuir demostrando cada uno de los pasos.
Ninguno, solo documentación
Baja
La clase BaseDao centralizara las funciones DML como SELECT, UPDATE, INSERT, DELETE, facilitando la creación de clases dao para cada entidad del modelo actual.
Se necesita crear una ventana que permita el inicio de session en la aplicación mediante un usuario el cual tendrá un rol, ese rol le permitirá realizar acciones diferentes.
Roles: admin, configuración del sistema.
usuario: Uso del sistema.
Si el usuario es valido,
cargar el menu.
[WARNING]
[WARNING] Some problems were encountered while building the effective model for jug-nicaragua:PICO:jar:0.0.1-SNAPSHOT
[WARNING] 'dependencies.dependency.systemPath' for miglayout:net.miginfocom.swing.MigLayout:jar should not point at files within the project directory, ${project.basedir}/src/main/libs/miglayout15-swing.jar will be unresolvable by dependent projects @ line 73, column 16
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
Prueba Issue
Actualmente el proyecto cuenta con falta de buenas practicas de código, como son respectar el naming convention del lenguaje Java, lenguaje estándar en la industria para la declaración de los nombres de objetos, métodos y clases. El uso de muchas variables y/o métodos globales innecesarios.
El proyecto carece de una estructura solida para la inclusión de una sesión global definida en un módulo de seguridad.
Mi propuesta es refactorizar el código, cumpliendo con naming convention del lenguaje Java, reestructurar el árbol de paquete
org.jugni.apps.pico
-data
-security
-ui
Agregar la estructura básica del módulo de seguridad, y corregir el manejo de la vista principal y menús.
Se requiere que el sistema tenga un asistente de configuración para cuando se inicie por primera vez.
** Describe la solución que deseas **
cuando se inicie la aplicación busque la base de datos, y acceda a la base de datos, y luego cargue el login, o ventana de inicio de sesion, si no la encuentra, deberá iniciarse un asistente, este asistente, primero mostrará una ventana para dar la Bienveida, luego, indicará que no encuentra la base de datos y dará 2 opciones, 1) buscarla, 2) crear una base de datos en blanco, si seleccióna buscar, mostrará el buscador de archivos, para buscar la base de datos, si la encuentra, deberá poder acceder a la base de datos, y cargar el login, si no la puede abrir, indicar de nuevo las opcinoes anteriores.
Si la opción 2 es seleccionada debe mostrar/iniciar otro asistente donde se le preguntaran datos de la empresa, los nombres de los usuarios administradores, las claves, luego, el sistema creará la base de datos, se injectará el catalogo en la Database, al termianr, se mostrará el login pidiendo las claves, previamente configuradas, las claves deben estar guardadas en la base de datos.
** Describe alternativas que hayas considerado **
** Contexto adicional **
los Mokups, serán agregados después.
las UI del asistente estarían dentro del paquete /view/asistente/
** Criterios de aceptación (hay que ver si alguna de ellas son necesarias) **
Con este issues se le dará mantenimiento a la vista Acerca de, entendiendo por mantenimiento agregar colaboradores a la lista, cambiar imagen presentada en la vista, cambiar color de letra y fondo de la vista.
Para cada mantenimiento se creara una rama en el repositorio local, el nombre de la rama tendra que describir el mantenimiento que se realizara y se le agregara al nombre el numero de este issues
** ¿Su solicitud de característica (feature) está relacionada con un problema? Por favor describa **
Registrar usuario
** Describe la solución que deseas **
** Describe alternativas que hayas considerado **
Ninguna.
** Contexto adicional **
Ejemplo: Mockups, Screenshots, Docs (texto, calculo, presentaciones, etc.).
** Criterios de aceptación (hay que ver si alguna de ellas son necesarias) **
Necesitamos crear el CRUD de usuarios.
CRUD: create, read, update, and delete
Clases: Usuario
Atributos,
Entidad: Rol
Atributos,
-idRol
Las entidades deben de tener identificadores propios estos pueden ser de tipo simple o compuesto, por lo tanto la clase Identificador no cumple con ese requisito y su utilidad no esta definida claramente.
La clase también define el GeneratedValue con una estrategia de SEQUENCE lo que provoca que todas las entidades que la hereden tengan un identificador no continuo.
Al remover la clase se modificaran los modelos que extiendan de dicha clase y donde exista una referencia a la misma.
** cambio de arquitectura, cambiar Spring-boot.
** Describe la solución que deseas **
se requiere que el proyecto use la ultima tecnología y trending al mismo tiempo, por eso deb implementar spring-boot, un framework, muy popular y que agiliza gran parte del trabajo.
** Describe alternativas que hayas considerado **
consideré usar fronScratch, javaEE, jakarta, elegimos spring-boot.
** Contexto adicional **
Debe poder usar el framework, lanzarse desde la consola, lanzar la interfaz Gráfica.
Implementar MVC apropiadamente,
Establecer arquitectura base para iniciar el proceso y que los demás puedan copiarse de el.
** Criterios de aceptación (hay que ver si alguna de ellas son necesarias) **
[ ] Pruebas de Carga y Perfil
[ ] Evidencias
[ ] Peer Review con Líder Técnico
** Describe la solución que deseas **
Crear una clase padre que proporcione el identificador de registro en cada entidad, aprovechando la característica de herencia de la POO.
** Describe alternativas que hayas considerado **
Actualmente cada entidad posee su propia propiedad de identificador.
** Contexto adicional **
public abstract class Identificador<T>{
protected T id;
...
getId()
setId()
}
public class usuario extends Identificador<Integer>{
....
...
}
public class cuenta extends Identificador<Integer>{
....
...
}
** Criterios de aceptación (hay que ver si alguna de ellas son necesarias) **
** Describe la solución que deseas **
Una descripción clara y concisa de lo que quieres que suceda.
Ejemplo: Como Desarrollador, quiero hacer X pantalla (el objetivo a cumplir) para mejorar Y proceso (el motivo).
#59
** Describe alternativas que hayas considerado **
Una descripción clara y concisa de cualquier solución o característica alternativa que haya considerado.
Ejemplo: Investigue y encontré otra solución o soluciones (otra manera de cumplir el objetivo).
** Contexto adicional **
Agregue cualquier otro contexto o capturas de pantalla sobre la solicitud de función aquí.
Ejemplo: Mockups, Screenshots, Docs (texto, calculo, presentaciones, etc.).
** Criterios de aceptación (hay que ver si alguna de ellas son necesarias) **
La ruta proporcionada por un enlace simbólico, proporciona una ruta absoluta en un equipó especifico provocando un error al ejecutar la aplicación en otra equipo.
El procedimiento para colaborar le faltan detalles por cubir
Todo colaboracion de codígo debe hacerce mediante PULL PULL REQUEST desde la rama/branch "develop"
Reporte de errores, bugs, se hacen mediante issue, solicitudes de mejoras tambien.
** Sugerir corrección o mejora o incorporación o eliminación **
Crear un issue
crear ticket en issue , si aún no existe, si existe ya un ticket y ya esta asignado no deberá comunicarse con la persona que tiene el issue asignado si quiere aportar mejoras al issue existente.
Si el issue no esta asignado, cualquiera de los colaborador se lo puede asignar. Ningun colaborador podrá trabajar en un issue si no a especificado o que esta asignándose el issue.
Trabajar en con Issue.
Todo los colaboradores que tengan issue asignada, para trabjar en sus contribución deberán crear una rama partiendo de develop .
El nombre de la rama estará compuesto de un prefijo+ descripción + ID del issue
ejemplo.
Enviar cambios
para enviar los cambio debe asegurarse que el código compila, hacer los tes unitarios correspondiente
crear PR (solicitud de extracción).
Solicitar revisión por medio de slack a los demas colaboradores.
Combinar cambios (realizado por un confirmador)
Antes de combinar los cambios con la rama develop, los cambios deberá ser revisados y aprobados por dos colaboradores. ya con el visto bueno de dos colaboradores un tercer colaborador procede a hacer la combinación a develop.
Limpieza
El colaborador que tiene el issue asignado deberá esperar al menos 3 dias después de haberse cumplido el paso 4 para eliminar la rama con la que se propuso la modificación.
Se produce un error durante las pruebas unitarias creadas para el task/47, el error es el siguiente
org.hibernate.id.IdentifierGenerationException: Unknown integral data type for ids : java.lang.Byte
at org.hibernate.id.IdentifierGeneratorHelper.getIntegralDataTypeHolder(IdentifierGeneratorHelper.java:224)
at org.hibernate.id.enhanced.TableStructure.makeValue(TableStructure.java:108)
at org.hibernate.id.enhanced.TableStructure.access$000(TableStructure.java:46)
at org.hibernate.id.enhanced.TableStructure$1$1.execute(TableStructure.java:129)
at org.hibernate.id.enhanced.TableStructure$1$1.execute(TableStructure.java:126)
at org.hibernate.jdbc.WorkExecutor.executeReturningWork(WorkExecutor.java:55)
at org.hibernate.jdbc.AbstractReturningWork.accept(AbstractReturningWork.java:34)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:57)
at org.hibernate.id.enhanced.TableStructure$1.getNextValue(TableStructure.java:125)
at org.hibernate.id.enhanced.PooledOptimizer.generate(PooledOptimizer.java:73)
at org.hibernate.id.enhanced.SequenceStyleGenerator.generate(SequenceStyleGenerator.java:520)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:120)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:193)
at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:178)
at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:75)
at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:108)
at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:618)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:611)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:606)
at org.jugni.apps.pico.ModelTest.test(ModelTest.java:30)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
El error indica que se esta un GeneratedValue pero no se esta proporcionando una estrategia para generar un tipo de dato Byte.
Se debe de documentar el codigo, todo los que estén desarrollando deben de documentar el código que generen. tomando en consideración que la documentación debe ser orientada a personas con poco conocimiento del lenguaje Java.
El encargado de este issues debe de supervisar que el codigo proporcionado esta bien documentado antes de aceptar el PR.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.