Tiempo atras me pidieron un ejemplo de como realizar un reporte con iReport tipo factura, recibo o como le llamen, complicado no es y se resumen en una consulta a la base de datos para luego mostrar este en un reporte previamente formateado, pues bien me hubiera gustado realizar un tutorial paso a paso de como hacer eso, pero "el tiempo" no perdona asi que mejor alternativa que dejarles el codigo fuente de ejemplo para que el que este interesado, explore este y le saque provecho.
¿Que necesitamos?
- Un IDE, Netbeans 6.9
- Un gestor de base de datos MySql
- La libreria necesaria para conectar Mysql con Java (mysql-connector-java-5.1.6-bin - ultima versión a la fecha)
- Las librerias necesarias para iReport (Añadidas en el RAR al final)
- JasperReport para realizar el modelado de la Factura
- Ganas, muchas Ganas!!!
La base de datos.
Como dije hay diferentes formas de realizar una base de datos sobre ventas, y por lo general en una aplicación comercial, estas cuentan con varias tablas y campos, para el ejemplo, utilizaremos una base de datos muy básica, consta de 4 tablas (CLIENTES,FACTURA,PRODUCTO, DETALLE)
Con esta BD tenemos lo necesario para simular una venta de un producto "X" a un cliente "Y" previamente registrado el cual se almacenara en la tabla FACTURA, ademas los diferentes productos que formen parte de la venta, se almacenaran en la tabla DETALLE.
En a la Tabla Factura, podemos ver un campo Vendedor, este campo por lo general cuenta con su propia tabla y sus propios datos, para fines de este ejemplo lo dejamos solamente como un campo.
Repito, esta es una forma, en otras BD la tabla Factura y Detalle no existe, y los datos de esta son extraidos de varias tablas que forman la base de datos, todo depende de quien diseñe la BD.
Tambien en esta ejemplo podremos ver el trabajo mediante la programacion por "Capas", esto quiere decir que se separa la interfaz de la logica del programa, la clase encargada de realizar la comunicacion entre la interfaz y los datos se llama "Control",
Como algunos recibos muestran el total de la transaccion en numero y en literal, podemos ver una clase
Numero_a_Letra.java, la cual realiza dicha conversion. La clase conectate.java encargada de la conexion MySql con Java, la clase Sql.java, en donde se realizan todas las consultas a la base de datos, la clase iFactura, la encargada de mostrar la factura la cual hace uso de los archivos .Jasper y .jrxml.
Aqui podemos ver la aplicacion en funcionamiento
El enlace de descarga
[Actualizado -2013- Todo tranquilo y sereno :/ ]
![Click para descargar](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCxj1w2Gj2g3dkPT_Z3WlTjsnNwQ3tEkRdN9lFPHi61xybSJc1DKWz1JZGObiodJDKBcQ63bKrWIZBxsj5m_rAUy6Xqp2D67JyG3MnxSMdbXt0T3G_JNqWa_IG9bPA9P3LI_nsnB2FDDY/s1600/button.png)
Las instrucciones estan adentro
preguntas, dudas, correciones, bugs, etc todas por favor con el mayor irrespeto posible ;)
87 comentarios:
hi jc buenaso el proyecto,parse puedes hacer un ejemplo en java de como medir la temperatura del computador como obtenerla ya me mate buscando y no encuentro como tu eres un maestro en java espero q me des una manito muchas gracias
No puedo descargar el ejemplo! =(
Que onda man, muy bueno el programa, aunque me marca un detelle con una referencia hacia una libreria llamada reportes que no encuentra, ya agregue todas las librerias y no se resuelve, cual crees que sea mi error???
tu proyecto esta de huevos pero mi calificacion depende de tu proyecto como se conecta con sql server 2008 sseria un gran paro por que yo uso ese manejador
Anonimo:
El error que dices es comun en netbeans, lo que puedes hacer, es crear una libreria con ese nombre, lo añades al proyecto para que se borre el error y despues quitas y borras la libreria
Jesus:
Supongo que debes ser igual a MySQL, solo debes editar los datos de la clase "Conectate.java"
cordial saludo mouse, te felicito por el proyecto esta muy bien para nosotros que programamos en java. con todo el debido respeto te sugiero que al formulario de cliente le agregues caja de texto junto con un boton de "consutlar" para realizar una mejor busqueda, en el caso donde la tabla de cliente tenga 20.000 registro en la base del sistema quedaria mas facil la busqueda no quedaria dificil, o en una caja texto lo puedes hacer tambien con un keylistenery la consulta tenga un like. pero el proyecto esta muy bien
buenas tardes me parece excelente este proyecto, y lo estoy intentando modificar a mis necesidades, pero tengo un problema y es que me esta saliendo un error cuando quiero imprimir la factura.
sera que me puedes ayudar a solucionarlo porque no doy con que pasa.
el error es que por alguna razon no le llega nada
aqui pongo el proyecto con la base de datos de mysql que trabaja, por favor mirenlo y me dicen que esta mal
http://cid-842943fe0b3b4af0.office.live.com/self.aspx/P%C3%BAblico/jcFactura%5E_1.rar
Hola saludos este post esta muy bueno, de los mejores que he visto, me gustaria que hicieras una aplicacion para facturacion electronica en java, ya que en 1 mes es el trabajo que tengo que entregar para mi titulacion y en verdad que tendria mucha mucha demanda este post para muchos, de antemano gracias carnal sigue siendo free!
la verdad he sacado muy buenas ideas de aqui espero terminar mi proyecto y luego compartirlo por aqui mismo
Te pasaste loco me salvaste de la tremenda prueba.. gracias !!
gracias a todos, muy contento de que les sirva este codigo :)
Hola, no se puede bajar el proyecto, creo que es problema de freaksshare, pero ¿no podrias volver a subirlo? Gracias
Hola. Muchas gracias por ir publicando tus proyectos. Me están sirviendo de mucha ayuda.
¡¡Sigue adelante!!
Hola, en primer lugar felicitaciones por los aportes que se ofrecen en este blog. Bueno para mi como estudiante me ayudan mucho. Te cuento que baje el codigo, pero al compilarlo me da el siguiente error:
Error: no se ha encontrado o cargado la clase principal jcfactura.Interfaz, y es así con todas las clases. Instale todas las librerias que se dan pero no se que más me hace falta. Desde ya te agradezco por tu ayuda. Gracias mil.
hola, saludos a todos gracias por los aportes del post, a jc felicitaciones excelente programador en java, y nesecito una ayuda si es posible, actualmente estudio sistemas an el area de redes, busco un codigo qu eme genere un reloj en netbeans pero si utilizar hilos, busco realizarlo con variables de candado. me gustaria que me ayudaras en esto
MUCHAS GRACIAS MOUSE, soy programador de Visual basic y visual fox, pero de java estaba en cero, hasta hace 2 dias y tengo que migrar un sistema de visual basic a java en 7 dias solo necesitaba un ejemplillo para hacerlo, Ahora si terminare el proyecto. UN SALUDO DE GUATEMALA.
Gracias...excelente proyecto...pero te pregunto no soy muy experto en esto pero si quiero cambiar los datos y nombrs de la factura como por ejemplo titulos direccion...que tendria que cambiar .....gracias
Muchas gracias ojala y esten en el face asi se inundaria mas la ayuda en Java muchas gracias
excelente amigo.
Se te agradece y para servirte.
Saludos y espero solo sea un hasta pronto
que bueno justo lo que andaba buscando gracias...
Hey parcero! Está excelente este post, de verdad que me ha ayudado increíblemente. Tengo una pregunta... Si yo quiero cambiar el consecutivo de la factura, que para el caso de este programa es aleatorio, a obtener un consecutivo, cómo puedo hacerlo? Espero pronta respuesta! Muchas gracias!
solo es un parametro más, eso lo haces desde tu programa y lo mandas al ireport
Disculpa mouse en el notepad que viene con el proyecto dice que debes agregar las librerias necesarias al proyecto.... como o donde hago eso x favor ayudaaa!!!!!!
las librerias a las que me refiero son las librerias de ireport, si mal no recuerdo, estan dentro el rar
Excelente JMouse; ya logre generar la mayor parte, pero al momento de dar clic al incono imprimir, solamente me conecta a la base de datos, no me los muestra ni me muestra la factura. me gustaria poder ver el scrib de la base de datos que utilizas, para poder tener un mejor manejo. EXITOS siempre osmarromeo@hotmail.com
muchas gracias JMouse con tu ayuda espero terminar mi proyecto...
Hola JC, he intentado descargar el código fuente de facturación pero el enlace de freakshare no funciona..pls, puedes subirlo a otro servidor?
Gracias.
Saludos desde Lima Perú
Buenas tardes , se ve excelente el contenido que tu publicas , pero e intentado descargar el proyecto mas de una vez y este no ha descargado , soy nuevo en el tema de desarrollar enjava , tengo concoimientos basicos y empiricos me gustaria que por favor me colaboraras , pues tengo un proyecto de generar una factura y aun no lo he logrado , gracias
William desde Colombia
el ejemplo es muy ilustratito y perdona mi osadia pero seria mas interesante el poder crear una factura de aucerdo a las exigencias de impuestos internos, osea que tenga Nro. de Factura, Nro. de autorizacion y generar el codigo de control.
Hola que tal, antes que nada quiero agradecer por el proyecto, ha sido de gran ayuda. Tengo el diseño de un reporte con conexión a BD de access 2007, al compilar desde netbeans si me resulta. El problema está que yo quiero que desde un botón me muestre en pantalla dicho reporte, estoy utilizando un parametro, y resulta que me manda un mensaje que el reporte no tiene paginas... es como si el archivo .jasper no se cargara. Espero una ayuda. gracias.
Excelente, muchas gracias, por esta contribucion.
exelente aporte te felicito hermano
E TRATADO DE MODIFICAR EL PROYECTO AL MOMENTO DE SELECIONAR EL PRODUCTO SALE ID Y YO QUIERO Q SALGA EL NOMBRE DEL PRODUCTTO Y LA ID ABAJO ME GUSTARIA Q ME AYUDES ESPERO TU RESPUESTA SI LO MODIFICAS ESVIAME A MI BANDEJA MI MSN ES BYDREDAL.G18@HOTMAIL.COM
Gracias por compartir tus conocimientos me gusta mucho tu sitio, estoy aprendiendo mucho en cuanto a programación en java, talves puedas subir tus ejemplos en mediafire me sale más facil y rápido descargar desde ahi, aún asi gracias por tus aportes :)
Gracias Mouse.
Empiezo de cero en Java y tu aporte me soluciona la vida. Tengo un problemilla: en iFactura.java, en la linea 34
"reporte_view= JasperFillManager.fillReport( reporte, parametros, con.getConnection() );"
me da el aviso "cannot find symbol", y aunque me deja compilar y ejecutar la aplicación, no imprime la factura.
De todos modos, gracias por compartir tu sabiduría.
Un saludo.
Soy de nuevo matorral.
Perdona, pero no dije que el error me lo da en "parametros"
(cannot find symbol)
Saludos ;
Hola de nuevo.
He vuelto a instalar el proyecto y se soluciono el problema.
mil disculpas.
eres lo máximo chapulin!!!
Hola necesita saber como cambiar tu factura... con el iReport ya la hice a mi modo, pero al sustituir el archivo en el codigo, nomas no aparece nada
hola mouse...tengo una consulta para saber como imprimir mi factura en un formato ya establecido...o sea que los datos se impriman en los campos correspondientes...desde ya muchas gracias por tus aportes
Para marco y el ultimo anonimo
Paea editar el reporte se hace uso de jaspert report, OJO con las versiones y con el nombre de las variables
Hola jc mouse ere muy bueno felicitaciones.
tengo un problema me sale k falta una libreria JasperReport y por ese motivo no corre la aplicacion :(
ayudame porfa.
Anonimo:
pues verifica que libreria te falta y la descargas de su pagina, ademas ten cuidado con las versiones de ireport
LO FELICITO POR ESOS APORTE DE MAESTROS DE LA PROGRAMACION Y CONOCIMIENTO
GRACIAS
Excelente proyecto eres un duro jcmouse, porfa no puedo descargar el proyecto. Puedes arreglar el link
revisando links
Hola jc! Te felicito porque eres muy bueno programando y porque nos regalas buen material. Tengo un proyecto pero no se mucho de programación java. Podrías ayudarme. Es sobre opentpv.
tengo un error en las siguientes lineas de "iFactura.java" :
import net.sf.jasperreports.engine.JRException;
.
.
.
import net.sf.jasperreports.view.JasperViewer;
JasperReport reporte;
JasperPrint reporte_view;
¿Alguna solución?
agradecria una respuesta
Saludos !
Rhino, Plataforma de Facturación Electrónica Orientada a Desarrolladores de Software http://rhino.nafiux.com/. Librerías para Java y PHP o directamente desde nuestro webservice.
Muchas gracias por compartir el código; me ha sido de gran ayuda.
amigo Mouse podrias enseñar clases?? a Colombia ?? he trabajdo con java muy pero falta muchisimo por aprender mas de usted podrias?? darme clasees??
cuadramos el valor de la clase..
y le consigno a un numero de cuenta... porfavor
???? si puedes enseñar???
no tenes un proyecto de actualizacion de campos espeficos en dos o tres tablas mediante un JCombobox osea que cuando yo seleccione un nombre de un JCombobox automaticamente me lo actualize en la tabla ?? podrias??
para eso solo debes hacer uso de un listener en el combobox, cuando cambie el valor se realiza una nueva consulta y se atualiza el model del jtable :)
Amigo perdona pero no al JTable, sino a una tabla en la base de datos sql ??? que cuando seleccione un item del JComboBox me actualize un registro especifico en la base de datos. porfavor he luchado con eso hace varios díaz y no consigo como. porfavor mouse... si puedes y si lo tienes te agradezco muchisimo..
Excelente aporte!
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111115555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555533333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333377777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
muchas gracias... muy buen aporte... implementado y funciona a la perfección... ahora a entender el codigo.
Hola que pena molestarte. Muchas gracias por tu aporte. Pero corriendo tu programa me sale un error.
package net.sf.jasperreports.engine does not exist
Ya agregue las librerias en la carpeta, pero sigue saliendo.
Mi correo es daniela.valencia@hotmail.es, te agradeceria tu ayuda.
Daniela V.
olas xfas me podrias enviar las instrucciones a mi correo por fas no lo puedo bajar :) estrella-luna_153@hotmail.com xfas te lo agradeceria ;)
hola Estimado que buen aporte agradezco que exista personas como tu
quiero hacerte una consulta me esta saliendo un error de que no e agregado una librería y esta librería es de reportes,a pesar agregue todas las librería que están en la carpeta librería que tu pones para descargar .
por favor agradezco de antemano tu ayuda
saludos
no sirve el link porfavor ayuda =(
gracias por el aviso, revisare y resubire el link lo antes posible
Amigo Mouse no Tienes Proyectos WEB??? de Casualidad??? en java netbeans
hola no supe como usar la función imprimir ya que lo registra el producto al usuario. tengo que tener instalado el ireport porque me marca error es este:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: Lorg/apache/commons/logging/Log;
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2308)
at java.lang.Class.getDeclaredField(Class.java:1897)
at java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1639)
at java.io.ObjectStreamClass.access$700(ObjectStreamClass.java:69)
at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:467)
at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:455)
at java.security.AccessController.doPrivileged(Native Method)
at java.io.ObjectStreamClass.(ObjectStreamClass.java:455)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:352)
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:589)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1601)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
para hacer la base de datos use el phpmyadmin
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1685)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1341)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:498)
at net.sf.jasperreports.engine.base.JRBaseDataset.readObject(JRBaseDataset.java:401)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:498)
at net.sf.jasperreports.engine.base.JRBaseReport.readObject(JRBaseReport.java:812)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
y asi sigue
claro, debes tener la libreria ireport instalada por eso tienes ese error
hola esta muy bueno tu codigo me ayudo con muchas dudas que tenia pero tengo una pregunta por que la factura la que se va a imprimir se modifica pero al ejecutarse sigue apareciendo la misma no se si solo me pasa ami espero tu respuesta y muchas gracias por el codigo
no sirve yo quiero el codigo Pys
Muy bueno el proyecto me ha ayudado mucho espero y sigas aportando mas de lo que es java, han ayudado mucho.
En cuanto tenga oportunidad pienso hacer lo mismo compartir lo que se
he intentado conectar a una base de datos donde he cargado datos en las tablas para probar sin embargo siempre me sale la lista de prodcutos y de clientes vacias o no disponibles y me sale esto
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
ya resolvi lo de la base de datos, ahora lo que pasa es cuando le doy imprimir a la factura no aparecen las modificaciones que le hice al jrxml, cuando le doy imprimir sale de nuevo como estaba originalmente
Oye se que suena tonto pero no puedo crear otro archivo .jasper.
Prias decirme como creaste el de tu proyecto?? o se jenera solo!!!!1
Gracias por tus aportes, tengo un problema con el formato de una factura, cuando envío a una impresora epson lx350 un reporte con 2 o mas hojas, cada nueva hoja a partir de la primera se corre debido a que la impresora no finaliza en el footer de la primera hoja, ella corre cerca de 1.5 pulgadas la hoja cada vez, no se como configurar el reporte para que la impresora quede quieta cada fin de hoja, cada hoja es la mitad de una hoja A4 u oficio, Gracias ojala pudieses ayudarme.
Hola que tal amigo ayudame con algo y se que podras yo estoy haciendo un programa para registrar las ventas pero lo estoy haciendo en base de datos de acces tu podrias darme un tutorial o el modelo de base para poder entenderlo
gracias espero tu respuesta
Desde Ecuador-Guayaquil
Muy bueno y útil para los comercios, ya que con la ayuda de un Programa de facturacion, los tiempos se agilizan bastante
Que tal he leido un par de comentarios muy buenos sobre este post pero quien podra hacerme el favor de enviarme el codigo fuente, cualb.10@gmail.com se lo agradecira pues me da problemas al intentar descargarlo... gracias saludos
Congratulations papaaaaaaa
Excelente proyecto y más ahora que debemos saber bien qué es la facturación electrónica, porque se ha vuelto una realidad y una necesidad para todas las empresas y negocios.
Entonces es complicado hacer facturas en Java? Ahora mismo queremos adquirir algún programa pero al menos Java es gratuito aunque no tenemos mucha idea de como funciona... Un saludo
No se descarga el proyecto de ninguno de los links puestos. Saludos
quisiera llevar el control de inventario en mi negocio y se me hace un poco complicado por momentos, creo que es hora de informatizar todo no? que me recomiendan?
amigo buen dia
mause este muy bueno su proyecto este mire lo estuve analisando y me quedo una inquietud quisiera saber como creo la factura para que salga haci apenas uno le de imprimir como creo eso. me gustaria aprender eso si usted me puede enseñar o me puede colaborar pasando donde aprendio eso seria de gran ayuda
este es mi correo marcosaureliodeleonpertuz@gmail.com
tienes algún ejemplo de convertir numero a letra en ireport
te lo agradesco...
Purchase Isotretinoin Without Rx JewGrewlyBer [url=https://ascialis.com/#]cheapest cialis[/url] pafTeege Fedex Zentel Albex Secure With Free Shipping Winston Anaedaboinee Cialis Analgelt cialis generico
Publicar un comentario