• Lunes 18 de Noviembre de 2024, 07:33

Autor Tema:  Detalle Factura  (Leído 4042 veces)

claudiorene

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Detalle Factura
« en: Martes 21 de Noviembre de 2006, 15:44 »
0
Hola amigos, aca toy nuevamente con dudas con el grid.

Mi situación es la siguiente, tengo un grid para el detalle de la factura en el cual muestro 4 columnas, Cant. Pedida; Descripcion; Precio Unit. e Importe. Estas cuatro columnas mas la del coido del producto (que no lo muestro en el grid), pertenencen a un cursor "cursortemp", que genero en el metodo Load del fomulario donde se encuentra el grid.

El problema, es que tengo que calcular el importe, pero recien luego que el usuario haya ingresado la cant del producto (importe=cant * preciounit). El ControlSource de la columna Importe, es "cursortemp.importe" y en el metodo Valid del grid actualizo el campor importe del cursortemp, asi la columna importe toma el valor ese del cursor.

El tema es que a medida que se vayan agregando productos al detalle de la factura, debo ir sumando el importe de cada fila del grid, para asi determinar el importe de la factura. Se que se reliza mediante el comando "calculate SUM (cursortemp.importe) to vble", y luego a la caja importe total (importe factura), le asigno el valor de la vble, pero no se donde va ese codigo.

Por favor, espero una ayuda lo mas rapido posible, gracias de antemano.

sebadoes

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Detalle Factura
« Respuesta #1 en: Miércoles 22 de Noviembre de 2006, 10:57 »
0
hola mira la solucion q te puedo dar es q en el valid de la ultima columna en el grid  hagas un SCAN a la tabla y vuelvas a calcular los importes de cada fila asi tenes un Importe total actualizado, asi por lo menos lo hice y hago yo.. pero  esa funcio q decis creo q es para los informes pero la verdad nose bien.. bueno espero q soluciones tu problema bye

claudiorene

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Detalle Factura
« Respuesta #2 en: Miércoles 22 de Noviembre de 2006, 13:40 »
0
Hola sebadoes, gracias por tratar de darme una mano.

En realidad no te entiendo cuando haces referencia al valid de la columna Importe, ya que el metodo Valid pertenece al grid en gral.

Bueno eso es todo, sigo complicado....

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re: Detalle Factura
« Respuesta #3 en: Miércoles 22 de Noviembre de 2006, 14:48 »
0
k tal claudio en que parte actualizas el cursor del grid con el registro del codigo nuevo que el usuario introduce?
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

claudiorene

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Detalle Factura
« Respuesta #4 en: Miércoles 22 de Noviembre de 2006, 16:41 »
0
Hola Juez, mira yo desde el formulario factura invoco el formulario Productos, para asi seleccionar el producto deseado. En el evento click del boton con el que llamo a dicho formulario, actualizo el cursortemp, con los datos del producto.

Luego espero a que el usuario introduzca en el grid cant del producto seleccionado (en el formulario factura), y en el metodo Valid del grid detalle tengo el sig codigo:

a=this.kg.texto1.value*this.precio.texto1.value

UPDATE cursortemp SET importe= a WHERE id= this.codigo.texto1.Value

this.Refresh

Y el controlsource de la columna importe tengo:

cursortemp.importe

De esta manera el importe no se me actualiza, sino que toma siempre el mismo valor, independientemente del precio del articulo en cuestion. Y por supuesto nose donde poder ir sumando los importes para asignarselos a la cja de texto "Importe Total"

Espero haber sido claro.... y una mano salvadora. Gracias.

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re: Detalle Factura
« Respuesta #5 en: Miércoles 22 de Noviembre de 2006, 17:15 »
0
Bueno intenta esto

Código: Text
  1. a=this.kg.texto1.value*this.precio.texto1.value
  2.  
  3. UPDATE cursortemp SET importe= a WHERE id= this.codigo.texto1.Value
  4. calculate SUM (cursortemp.importe) to vble
  5.  
  6. this.Refresh
  7.  
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

claudiorene

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Detalle Factura
« Respuesta #6 en: Miércoles 22 de Noviembre de 2006, 17:43 »
0
Ok ya lo habia intentado, el problema es como le asigno el valor de la vble a la caja de texto, ya que si la declaro publica (a la vble), me origina lio con el formulario, es como si lo redibujara sobre el anterior, y me figura una etiquete que dice "cursortemp.importe ".

Nose como hacerlo, encima el importe del producto seleccionado no se actualiza, ahora solo queda el importe calculado del primero nada mas.

En la cja de texto Importe Total le puse el "controlsource=vble", ya que es una vble publica (del formulario)

Sigo hasta las manos como veras Juez...Gracias igual.

wartech

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Detalle Factura
« Respuesta #7 en: Viernes 1 de Diciembre de 2006, 19:14 »
0
hola chicos he echo algunos sistemas de facturacion en visual foxpro tanto locales como para trabajar en redes y multiusuarios, y como lo mensione antes la forma mas correcta es cuando estas localmente usar una tabla temporal (parecido al cursor) para ir guardando el detalle de la factura y cuando estas en un ambiente multiusuario tiene que trabajar y realizar todas lastransacciones desde la tabla detalle directamente si no te metes a lios con esto de los cursores que si funcionana pero con la experiencia creo que este no es el caso o la menos en VFP.

ahi te mando alguna instrucciones a ver si te sirven de algo:  

con esto puedes sumar todas las filas para un total de la factura

CODITO = .TXTNUMFACT.VALUE
SET FILT TO NumOrden=CODITO
   Sum Importe for NumOrden=detaventas.Numorden to nSubTotal

Y TOTALIZAR UN FILA HARIAMOS ALGO ASI:

ntotal=0
nTotal=Thisform.TxtP_Lista.Value * (Thisform.TxtCanArt1.Value)
Thisform.Importe.Value=nTotal

LUEGO SOLO HACES UN REPLACE O UN INSET INTO EN LA TABLA TEMPORAL Y LISTO. POSTERIORMENTE USAS EL CODIGO DE ARRIVA(EL PRIMERO QUE PUSE) PARA SUMAR LOS DATOS DE LA TABLA DICHO CODIGO DEBE IR EN EL MISMO EVENTO DONDE AGRAGAS LOS DATOS A LA TABLA TEMPORAL O DETALLE DIRECTAMENTE.