¿Cómo crear un formulario de Ventas?

Saludos amigos:

Estoy haciendo una aplicaci?n con SC8, dentro de la aplicaci?n necesito un formulario maestro/detalle, el cual ya tengo realizado, sin embargo tiene el ligero inconveniente que solo se pueden agregar los detalles de la venta su primero se guardan los datos de la venta (del formulario maestro) y as? se activan los detalles.

Lo que deseo realizar es algo que se hace con otras aplicaciones o entornos de programaci?n, d?nde por ejemplo se activa el form de venta y se pueden agregar los detalles, y al final, al dar clic en guardar se graban los registros tanto de la venta como del detalle, como sabr?n eso lo hacemos por medio de un cursor o vista, la cual se recorre para ingresar los detalles. Esto da como resultado que la venta se graba hasta finalizar de ingresar todos los datos y no forzosamente al principio, lo anterior me lleva a pensar que, si guardamos los datos del form maestro (venta) con SC, y por motivos de cortes de energ?a o fallas con internet, la venta quedar?a grabada sin detalles, y esto al hacer un reporte aparecer?a vac?a, o en el peor de los casos con solo algunos detalles guardados y la venta incompleta.

Comento esto, porque dar?a problemas en el reporte final contando como venta realizada, adem?s de que en ?ste caso, el usuario vendedor no debe tener acceso a eliminar ventas con el riesgo de seguridad que eso supone para la empresa.

Espero que alguno pueda ayudarme o orientarme con ?sta situaci?n, ya he avanzado en otros aspectos leyendo aqu? mismo soluciones a otros posts.

Saludos, amigos.

tengo el mismo problema

Usted puede crear el detalle con un formulario multiregistro al final de esta grid detalle puedes grabar todos los registros s?lo del detalle. (o sea habr?a que salvar cambios tanto en el maestro mo en el detalle).

Para hacerlo como dices debes recurrir a hacerlo mediante javascript with grids, pero con Scriptcase no puedes hacerlo de la forma que deseas.
Puede recurrir a herramientas externas como: http://phpgrid.com/

kkroto19833 :

Espero en verdad encontrar la forma de hacerlo y as? poder compartir con los dem?s, saludos, estamos en contacto.

alvagar:

Agradezco tus consejos, la primera opci?n que das la contempl? pero no es lo m?s cercano a lo que deseo, en cuanto a phpgrid, veo la aplicaci?n y parece interesante, solo que deseo hacer uso de SC, pero de todas formas agradezco mucho tu apoyo, saludos.

Yo no har?a as?. Incluso en escritorio mis sistemas siempre han grabado al momento, ya que como dices, una fallo en la conexi?n de luz etc…, te tiras abajo todo el trabajo.

Yo en todo caso, a?adir?a un “flag” como que el documento esta validado, y ya est?

Giu:

Efectivamente, tambi?n en mis aplicaciones de escritorio siempre he realizado as? las ventas para evitar problemas; comprendo tambi?n lo del flag, pero ser?a m?s c?modo hacerlo de la manera habitual, te agradezco en mucho tu ayuda, seguir? investigando ?sta situaci?n para que funcione de la manera correcta, saludos.

[QUOTE=Phylos;36222]Giu:

Efectivamente, tambi?n en mis aplicaciones de escritorio siempre he realizado as? las ventas para evitar problemas; comprendo tambi?n lo del flag, pero ser?a m?s c?modo hacerlo de la manera habitual, te agradezco en mucho tu ayuda, seguir? investigando ?sta situaci?n para que funcione de la manera correcta, saludos.[/QUOTE]

En SC la manera correcta es como funciona actualmente. No puedes dar de alta detalles sin saber el ID de la tabla maestra, y sin existir cabecera, no tienes ID. Fuera de ese comportamiento, como te dec?a alvagar, tienes que buscarte la vida fuera de SC. En mi opini?n, no merece la pena el trabajo extra, pero repito, es una opini?n.

Giu:

Agradezco mucho tu ayuda, y si como dices es lo correcto as? como se hace en SC, de hecho estoy replanteando la situaci?n para hacerlo as?, aunque sigo viendo la otra forma, pero al final deseo solucionarlo de una u otra manera para que efect?e la venta.

Otra ves agradezco tu apoyo y tu opini?n la cual es respetable y muy valiosa para mi, al igual que la de las otras personas que se toman el tiempo en apoyar.

Saludos, Giu.

Para mi la entidad es “Nota de Vta.” o “Factura”, que se implementa con 2 tablas (maestro/detalle) y por lo tanto la forma “correcta” es grabar definitivamente cuando se completa el comprobante, ya q’ reci?n se lo puede imprimir contemplando la correlatividad num?rica, etc., q’ requieren las normas legales y de esta manera tendr?a existencia “real” dicho comprobante. (EMHO).
Yo estoy experimentando con tablas temporales (q’ incluso permitir?a ir guardando el “borrador” como se dijo antes), pero no encuentro la forma o lugar donde SC habilita la edici?n del detalle. Si alguien me lo dice, prometo compartir la soluci?n cuando ande. Saludos

Hola a todos yo tengo el mismo problema pero para una ficha catastral que es mas complejo aun porque son varios detalles y tambi?n requiero que se guarde todo en solo boton. Tengo amigos que trabajan con otro generador y tienen el mismo problema porque para que funcione bien desde mi punto de vista se tendr?a que implementar con una transacci?n en el motor de la base de datos yo uso postgres y estaba pensando en un funci?n de base de datos que reciba como par?metros toda la cabecera y un array con los detalles y a parte tener 2 tablas identicas a las verdaderas solo para que scriptcase genere las pantallas y botones que para mi ya es bastante luego cambiar la etiqueta del boton grabar por algo como “ingresar detalle” asi scriptcase habilitara el detalle luego poner un boton PHP y en su c?digo recoja toda la cabecera y tambi?n en un array el detalle y enviar eso a la funci?n en postgres q grabe todo o se produzca el rollback es solo una idea soy nuevo en scriptcase y reci?n lo estoy aprendiendo es que tambi?n necesito que se cumpla lo que dice anibal

Estimados comparto como resolvi temas similares a estos, con un formulario en modo edicion, llamando a unas grid mediente un <iframe src"mis grids"> las cuales hacen referecia unas tablas temporales, el e evento del formulario, “Onbeforerinsert” hacer un update la tabla mediante el id de la misma, obteniendo los datos de las temporales, espero haber orientado un poco para este tipo de situaciones, saludos

Me parece interesante tu forma de resolverlo. Pero tengo la duda: en un entorno multiusuario ¿Cómo manejarías las tablas temporales en tu solución?

para eso puedes usar transacciones,
inicias una transacción y cuando haces todas las operaciones haces commit para guardar todos datos, así no puede haber un problema de integridad en la base de datos

sc_begin_trans();
write your sql instructions
sc_commit_trans();