Disminiur Existencias

Hola Revenn, ya saci termino el modulo de facturación solo me falta una cosa, he intentado pero nada.
Tu sabes que cuando generas una factura tiene que disminuir la existencia del producto.
Como se hace, bueno tengo algo de idea, pero no me ha funcionado
Selec productos
set order to codprod
seek factura_detalle.codprod 
if found ()
replace existencia with existencia-cantidad
endif

1 respuesta

Respuesta
1
Yo utilizo algo parecido para disminuir o aumentar mi kardex de existencias según las entradas, salidas o transferecias! Imagino que "productos" es donde almacenas existencias! Va así:
SELECT  productos 
     SET OREDER TO  codprod 
            seek factura_detalle.codprod  
IF FOUND ()
       TABLEREVERT (.F.)
                REPLACE existencia WITH existencia-cantidad
               TABLEUPDATE (.T.) 
Endif
Proba y me avisas cualquier cosa!
Hola Revenn, ya saci termino el modulo de facturación solo me falta una cosa, he intentado pero nada.
Tu sabes que cuando generas una factura tiene que disminuir la existencia del producto.
Como se hace, bueno tengo algo de idea, pero no me ha funcionado
Selec productos
set order to codprod
seek factura_detalle.codprod 
if found ()
replace existencia with existencia-cantidad
endif
<span style="white-space: pre;"> </span>
Funciona bien, pero solo me modifica un solo código y puede ser que la factura lleve varios productos entonces tendrá que modificar lo de todos los productos.
Jaja! Imagine que ibas a tener ese problema.. pero no quise adelantarme a preguntarte jaja! Mira.. lo que debes hacer es: por cada linea del grid (registro) ir actualizando las existencias. Por ejemplo... en tu grid, tienes una colummna de código de producto... entonces, para cada código actualizas su existencia! Por ejemplo.. yo uso algo así para actualizar las entradas y aumentar el kardex existencias:
Select existencias
LOCATE FOR existencias.codigoproducto = (THISFORM.GrdEntradas.Column2.Text1.Value)
IF FOUND ()
TABLEREVERT (.F.) 
                REPLACE existencia WITH existencia-cantidad 
               TABLEUPDATE (.T.)  
Endif
Con locate, busco el registro del producto que escribo en el grid, lo encuentra en la tabla y actualiza! Yo lo coloque en el evento valid de la columna cantidad! Puesto que ahí es donde calculo el precio total...! Ves! Es fácil! :D :D :D Así... con cada producto que metas en el grid, vas a ir actualizando su existencia! :D :D :D
tssss que bárbaro! Funciona de maravilla, pero hay algo. jejejeje
ok. Mira, supongamos que llega un cliente y pide 5 producto entonces le dicen son C$500
dice el cliente: se me hace mucho dinero, quítale 2 productos.
Le quita los dos productos, ¿pero la existencia de ese productos ya disminuyo
me explico?
Comprendo! Si ya le restastes la existencia.. y tienes que modificarlo por exigencias del cliente, lo más convenientes es que elimines el registro. Cuando lo elimines, poder hacer una actualizacionnn.. pero en lugar de restar la cantidad de ese producto, sumalaa... así va a regresar la existencia correcta! Seria cambiar una linea REPLACE existencia WITH existencia + cantidad! Ves!
Como ya la tenias restada, primero sumala para obtener el valor correcto y real y después elimina el registro. Así te va a quedar actualizada! Aunque yo no soy "practicante" de la eliminación de registros! Si de reversiones... pero no de eliminaciones! No se cumple el principio de consistencia si haces un registro para luego "sabotearlo"... al menos en un sistema! Ademas... si haces el registro de la factura y lo restas y después el cliente dice que no lo lleva.. pues por lo general no es una practica muy correcta "echarse para atrás" una vez que ya facturastes... las empresas por lo general no hacen eso... si ya facturo es por que el cliente esta seguro de lo que se va a pagar! Pero bueno... es solo mi humilde opinión de contador je je! Pero proba como te digooo y así te ha de servir!
SALUDOS!! :D :D :D
Estamos de acuerdo en eso.. oye hasta contador sos je je.
Pero imaginate que el que digita se equivoco de código y no era ese.
Entonces idee esto.
Hacer una reversión
Por ejemplo del producto 5 digite 4 pero eran 3
entonces agrego otra fila con el mismo código y en cantidad le pongo -4
ahí ya queda revertido, ahora agrego lo correcto.
Pero estuve viendo algo también, que si le doy 3 veces enter o tab que son las teclas con las cuales válido y paso a la siguiente fila las 3 veces me disminuye la cantidad, entonces como hacer para que en el lostfocus me quede deshabilitada la fila anterior para evitar este posible problema
Pues si... ya casi soy contador también.. en unos meses! Por eso siempre trato de animar a los programadores para que veann que es posible aprender... incluso si no es tu carrera "formal"! Mira.. ese problema yo lo tenia. Cada vez que pasaba el puntero sobre la misma linea, acumulaba la suma n veces y no me daba el resultado apropiado. Para resolver, lo que hice fuee hacer un filtro (SET FILTER) para poner disponible solo los registros que facturo... luego acumular "la suma completa" del campo (cantidad y precio total) en una variable y después hacer un replace...! Por ejemplo, si facturo para el producto código 100, va así con la cantidad:
SET FILTER TO existencias.codigoproducto = 100
SUM existencias.cantidad TO lnexist
SET FILTER TO 
Select existencias 
LOCATE FOR existencias.codigoproducto = (THISFORM.GrdEntradas.Column2.Text1.Value) 
IF FOUND () 
TABLEREVERT (.F.)  
                REPLACE existencia WITH existencia-cantidad  
               TABLEUPDATE (.T.)   
Endif
Así.. cada vez que pases el puntero sobre la linea, va a realizar "la suma total" del campo solo para ese registro. Va a repetir la suma... pero no te la va aa acumular... sino que la realiza "totalmente"! Trata de adecuarlo a tu código y probaaa... y me avisas! :D :D :D :D
Upss... error,,, lo correcto es así:
SET FILTER TO existencias.codigoproducto = 100 
SUM existencias.cantidad TO lnexist 
SET FILTER TO  
Select existencias  
LOCATE FOR existencias.codigoproducto = (THISFORM.GrdEntradas.Column2.Text1.Value)  
IF FOUND ()  
TABLEREVERT (.F.)   
                REPLACE existencia WITH lnexist
               TABLEUPDATE (.T.)    
Endif
Intente pero nada.
Estuve pensando lo siguiente.
En el grid hice que en una columna me apareciera la exsitencia actual
en otra la cantidad a facturar
y en otra la resta de ambas el resultado me dará la nueva existencia en otra columna
sera posible que haya alguna forma de buscar en la tabla productos solamente los códigos que están en el grid y reemplazar la cantidad con la nueva existencia.
Si claro. Para buscar los códigos que necesitas ver unicamente, hace uso de un filtro! SET FILTER TO! SI quieres mostrar la existencia actual "del producto que facturas" establecele un filtro a dicho producto, haces la actualización y quitas el filtro.
SELECT productos
SET FITLER TO productos.codigo = (THISFORM.Grid1.Column1.Text1.Value)
**Aqui la actualizacion**
SET FILTER TO      &&Quitamos el filtro de la tabla&&
Saludos! Avisame cualquier cosa! :D :D :D
Exacto eso ya lo tengo.
en el Presskey del grid en la columna del codigo
tengo
select productos
seek Thisform.Grid.Columncodigo.txtCodigo.Value
    If found()
Thisform.Grid.ColumnExistencia.TxtExistencia = productos.existencia
luego la otra columna de cantidad
luego la otra columna de como que daria la existencia por ejemplo tengo 100 y digito 10 en cantidad me quedan 90
lo que quiero ver si es posible hacer pero a traves del command button en el evento click 
que busque el primer codigo que esta en el grid si lo haya que reemplace la existencia y que salte al siguiente y asi sucesivamente
si son 10 que lo haga uno por uno
Lo que pasa es que no podes evaluar varios registros diferentes de una sola vez con SET FILTER... es decir, que tome 10 registros y que vaya "saltando y filtrando" uno por uno! AL inicio, yo intente algo así... pero no es posible :( Lo correcto es que por cada linea del grid que vas agregando, vayas actualizando el producto "de esa linea" ( o registro)! En un CommandButt lo podes hacer... seria que metas el código de actualización.. pero por cada registro tendrías que ir dando click!
Yo mire un sistema en donde los registros del grid se introducían clickeando un botón "agregar"! Cuando terminabas de completar la linea, clickeabas un botón "guardar" y en ese botón se actualizaba la existencia. Naaa... mucho clickeo... :o! Je je! Yo lo hago un poco más automático. Cuando calculo el precio total en el grid, actualizo mi existencia. Si me equivoco, revierto y listo! ASÍ grabas la factura y actualizas tu kardex sin más que pasar el puntero sobre el grid! Ves! :D :D :D Es una solución muy eficiente a la hora de grabar entradas de inventario, facturas, traslados, salidas de inv, cuentas... etc, etc, etc.
Para ir buscando el registro coincidente a tu producto y que después busque coincidencias adicionales, podes utilizar LOCATE FOR... CONTINUÉ! Con esto, podes buscar un registro, aplicarle la actualización al cumplirse una condición IF FOUND() y después saltar al siguiente registro para buscar coincidencias, es decir, los otros productos... y así hasta llegar al final de la tabla! :D :D :D 
http://msdn.microsoft.com/es-es/library/cc484494(v=vs.71).aspx
http://msdn.microsoft.com/es-es/library/cc466989(v=vs.71).aspx
Ahi podes documentarte si keres! Es facil! Usas Locate for... y al finalizar CONTINUE Y LISTO! :D
Tienes razón. También yo mire un sistema donde había varios texbox. Producto. Cantidad etc. y al darle click se agregaba el producto y se llebavan 100 productos eran 100 click a como tu dice naaaaaaaaaa!
&&&&&&&&&&&&&
Fantástico. Lo que hice fue esto: le agregue una columna a mi tabla de factura detalle donde cada vez que dígito la cantidad y le doy enter en esa columna ya me resta la existencia menos la cantidad, pero sin tocar la tabla de productos
en el botón de guardar ahí coloque el replace productos. existencia with Thisform.Grid.Column.Txt. Value
y me funciono bien! Muchas Gracias por tu valiosa ayuda...
Je je! Sabes... hay muchas maneraasss de hacer las cosas! Yo por ejemplo, lleno un catalogo (tabla) con los productos que existen y ahí cargo las existencias. Luego, para entradas y salidas, unicamente tomo las respectivas cantidades y según el caso, sumo o resto contra la tabla de existencias... dejándola con el monto correcto! Ves! Es muyyyyyyyy eficiente y estable! pero en fin... todo es posible! Saludos y suerte! Cualquier cosa... avisameee! No olvides cerrar la pregunta y puntuar si no tienes más dudas!
A tus ordenes!
Ravenn! :D :D :D

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas