Facturacion (maestro-detalle) + jquery

1,930 views
Skip to first unread message

aralamota

unread,
Jan 3, 2013, 3:52:58 PM1/3/13
to symfo...@googlegroups.com
Estimad@s:
Sinceramente me ha costado mucho adaptarme a Sf2 y me encuentro otra vez en un aprieto.

Estoy en la necesidad de realizar un sistema en el que se deben vender producto y realizar la factura de venta.
En el modelo existe una entidad Comprobante y otra entidad DetalleComprobante, con una relación 1:N, además, que Comprobante está relacionado con un Cliente.
La idea es que al seleccionar un Cliente, se genere la Factura (componente maestro) con sus datos y que permita de ahí en más, buscar Productos en la DB (entidad Producto) e ir ingresandolos y generando los DetallesComprobante (componente Detalle), a su vez que calcule el total y demás, por supuesto.
Éste ingreso de productos necesitaría hacerlo de forma dinámica (jquery) y quería saber si alguien ha tenido que hacer algo parecido o me oriente un poco.

Amig@s, espero se entienda y desde ya mil gracias...

kleber andres loayza castro

unread,
Jan 3, 2013, 4:00:33 PM1/3/13
to symfo...@googlegroups.com
estoy en un problema parecido, que tampoco lo puedo resolver, pero ademas necesito que mi aplicación web detecte la impresora que tiene el cliente, si alguien sabe como detectar impresora del cliente,
me ayudaria mucho, estaba revisando que con java se lo podria hacer pero, necesito hacerlo en php


si alguien sabe gracias!!


--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Google Groups.
Para publicar en este grupo, envía un email a symfo...@googlegroups.com
Para darte de baja, envía un email a symfony-es+...@googlegroups.com
El resto de opciones puedes encontrarlas en http://groups.google.com/group/symfony-es?hl=es

Pablo Andres Olivarez Olivares

unread,
Jan 3, 2013, 4:05:28 PM1/3/13
to symfo...@googlegroups.com
¿Es una impresora de matriz de punto?, ¿Te sirve enviar la boleta a pdf?

kleber andres loayza castro

unread,
Jan 3, 2013, 4:07:56 PM1/3/13
to symfo...@googlegroups.com
si, es una impresora matricial, que el usuario solo pone imprimir, y lo envia directamente a imprimir, sin tener que enviarlo a pdf, porque eso demora mucho, y es un punto de venta, donde tiene que entregar facturas rapido

kleber andres loayza castro

unread,
Jan 3, 2013, 4:12:40 PM1/3/13
to symfo...@googlegroups.com
php a diferencia de java, es que java maneja una maquina virtual dentro de la maquina del cliente, y asi de esa manera se puede detectar el hardware del cliente, pero con php no es asi, es solo un lenguaje que lo interpreta el 
servidor, y me es imposible detectar el hardware del cliente, ante este conocimiento que les estoy diciendo, mi pregunta es, como vinculo codigo java a symfony que trabaja con php

Carlos Alfonso Pérez Rivera

unread,
Jan 3, 2013, 4:17:02 PM1/3/13
to symfo...@googlegroups.com
Cordial saludo,

Lo que comúnmente se hace en esos casos es diseñar lo que se necesita imprimir en HTML y se le dice a la persona que use el menú de impresión del navegador.

Si no estoy mal hay funciones en javascript que invocan esa ventana, algo como esto

<a href="javascript:window.print()">Imprimir</a>

Lo que puedes hacer es envolver dicho enlace en una capa que tenga un estilo CSS que tenga una propiedad display: hidden este en la CSS de impresión, asi no saldra dentro de lo que quieras imprimir.

Me parece que el problema no es de PHP o Symfony.
Carlos Alfonso Pérez Rivera
Ingeniero de Sistemas y Computación
Pereira, Risaralda             
Teléfono: 3326231
Celular: 3217507606

cgbra...@gmail.com

unread,
Jan 3, 2013, 4:18:15 PM1/3/13
to symfo...@googlegroups.com
Te paso mi solucion que he implementado hace algun tiempo. La web te deja en un directorio local un archivo xml con los datos de la factura generada. Luego un programa que esta pooleando el directorio de descarga cada 3 seg si encuentra un archivo nuevo lo levanta y manda a imprimir.
Este programa esta realizado en delphi pero podria hacerse en java sin problemas.
No hay mayores demoras en el proceso y funciona mas rapido que las impresiones web normales.
Enviado desde mi BlackBerry® de Claro Argentina

From: kleber andres loayza castro <kloa...@gmail.com>
Date: Thu, 3 Jan 2013 16:07:56 -0500
Subject: Re: [symfony-es] Facturacion (maestro-detalle) + jquery

Ruthsbel Tambo

unread,
Jan 3, 2013, 4:18:49 PM1/3/13
to symfo...@googlegroups.com
Hola a todos, hace mucho realice un sistema parecido que si no me equivoco esta en algun hilp del grupo, pueden buscarlo como factura maestro detalle, no se olviden que como son facturas sujetas a numeracion deen manejar rollback por cualquier falla o error

Saludos

Enviado desde mi iPhone
--

Carlos Alfonso Pérez Rivera

unread,
Jan 3, 2013, 4:25:00 PM1/3/13
to symfo...@googlegroups.com
La opción de cgbrandolin es buena, esa es la manera como hemos realizado en mi empresa para que desde una aplicación Web se ejecute una aplicación de escritorio. Hay que tener en cuenta que el cliente desarrollado en Java debe diferenciar de alguna manera que usuario lo esta utilizando, en este caso pienso que se podria crear un cliente que tenga login de acceso o que el servidor sepa que IP's son las disponibles para imprimir.

En cualquiera de las dos approximaciones hay cosas que contemplar para no ir a incurrir en un problema de solapamiento de datos o como lo decia  Ruthsbel Tambo, al momento de hacer un rollback.

Vuelvo y reafirmo mi propuesta inicial. En mi empresa que es una entidad dedicada principalmente a la prestación de servicios de salud, se utiliza esa manera y imprimen miles de facturas al día y nunca hemos tenido percanses con esas formas de impresión, y lo hacemos tanto desde Java como PHP, porque asi nos evitamos tener que pensar en drivers de la impresora. Si el sistema la reconoce el programa se pega a la que este configurada por defecto.

Juan Martín Díaz

unread,
Jan 3, 2013, 5:05:01 PM1/3/13
to symfo...@googlegroups.com
Bueno, yo lo que he hecho es generar la factura en un iframe y mandar a imprimir eso con el window.print().
El problema con esta aproximación es que toda la configuración de la impresión la maneja el browser, de manera que se deben configurar las opciones de impresión en todas las máquinas que deben imprimir, más que nada el problema es con los márgenes de la impresión y el tamaño del papel, la orientación se puede manejar desde CSS.
Opino lo mismo que Carlos con respecto a la opción de cgbrandolin, si es viable tener un servidor de impresión que esté pooleando un directorio en donde se pueda dejar un archivo, yo ni siquiera generaría un xml, directamente generaría la factura en postscript y la mandaría a imprimir desde un script en unix.
De esta manera todo el desarrollo sería la aplicación Symfony y luego en el servidor de impresión solo tendrías un demonio controlando un directorio, mandando a imprimir y moviendo archivos de lugar (a un directorio de archivos procesados) o borrandolos.
Esto ya lo he visto en una telco para la que trabajé.
Saludos.

aralamota

unread,
Jan 3, 2013, 5:31:31 PM1/3/13
to symfo...@googlegroups.com

Gracias!!!
Aunque el tema parece haberse desviado un poco...te agradezco igual...espero encontrar solución a mi problema.
Prometo publicar la solución en cuanto la encuentre...
Saludos...

Juan Martín Díaz

unread,
Jan 3, 2013, 7:23:49 PM1/3/13
to symfo...@googlegroups.com
Es verdad, leí tu envío inicial y luego los otros y me quedé con la parte que más me interesaba que era la de la impresión...
Pero bueno, me parece que tu inquietud depende mucho del diseño de tus pantallas.
Supongo que  tendrás una pantalla en donde estás generando tu factura con todos los encabezados y ahora querés ingresar los items del detalle.
¿Cómo estarías visualizando los items del detalle?
Yo tendría algún widget de grilla o lista donde se vayan mostrando los componentes del detalle y luego para agregar un nuevo ítem un diálogo de jQuery con un buscador de productos que obtuviera los mismos vía AJAX y los mostrara en un panel de resultados, y en el mismo panel un cuadro de texto y un botón para ingresar la cantidad.
Una vez que terminara de editar todos los datos de la factura enviaría el formulario.
Los datos de los items los almacenaría en un campo hidden como json y luego usaría un DataTransformer para transformar los datos json en entidades de tipo DetalleComprobante.
--

aralamota

unread,
Jan 3, 2013, 8:42:33 PM1/3/13
to symfo...@googlegroups.com
Gracias por responder Juan Martín. 

Sí, así es, te cuento como está la situación: he generado el modelo por ingeniería inversa con los comandos de console de Sf2/ (CRUD), lo cual, tengo por cada tabla una entity, un form, sus plantillas en Twig, etc, de las cuales, las que se involucran para realizar la facturación son:
  -Comprobante
  -DetalleComprobante (quizá no sería necesario como entidad)
  -Item
  -Cliente

En cuanto voy a crear un nuevo Comprobante (../comprobantecliente/new ) aparece la cabecera, previamente de haber seleccionado un Cliente para generarlo,
Es correcta la idea de ir agregando Items con cuadro de búsqueda en donde se seleccione el ítem por su código u otro criterio, y asignar la cantidad solicitada, luego, que se genere una relación entre Item->DetalleComprobate y mostrarlo como un nuevo detalle en el Comprobante, además que se calculen los totales, etc, etc... Luego de iterar tantas veces como se requiera, dar la opción de guardar dicho Comprobante haciendo el "bind" con los Detalles y que persista en la DB.
Hay sugerencias de usar estos métodos en la Sesión del Usuario, otra es ir generando solo una "vista" generando los detalles, y al final, realizar toda la operación de enlaces (bind) de las entidades Comprobante-DetalleComprobate y persistir en la DB.
Pues bien, la idea la entiendo perfectamente, mi pequeño gran problema es la comprender un poco más la integración de AJAX-JQuery y demás para lograr esto que en definitiva es un modelo "Maestro-Detalle" que quizá le pueda servir a otros para realizar algún reporte o similar.
En fin, quizá sea un poco pretencioso con recibir ayuda tan precisa, pero de verdad he leído conceptos y ejemplos pero no logro plasmarlos en mi modelo.
Desde ya agradezco el interés y si desean podemos ir elaborando algo mas genérico, al estilo "Maestro-Detalle" (1:N).

Saludos...
Reply all
Reply to author
Forward
0 new messages