Controlar stock de un articulo

En realidad tengo dos inquietudes en la que necesito que me ayuden, estoy realizando una aplicación pequeña para facturar. En la ventana factura tengo los siguientes inconvenientes.

1.- El momento de dar click en nueva Factura automáticamente se me carga del No. De factura que corresponde según el registro en la tabla factura, mi pregunta es como debo hacer para controlar cuando dos usuarios ingresan al mismo tiempo a Facturar, como controlo el numero de factura, ya que la factura solo se guardara después que el usuario haya terminado y presione el botón guardar.

2.- Al facturar como puedo ir disminuyendo el stock que tiene cierto articulo, y como realizo el reverso de ese stock si después del usuario decide cancelar la elaboración de la Factura.

Espero sus comentarios y desde ya les agradezco por su ayuda.

1 Respuesta

Respuesta

1. Me imagino que en una tabla almacenas el tipo de documento, serie y numero. En dicha tabla debes actualizar tu correlativo, preventivamente debes capturar el numero actual y luego actualizarlo, esto debes hacerlo cuando das click en el botón guardar, de esta, manera no tendrás conflicto. Adema debes asignar el numero capturado a tu cabecera y detalle de documento.

2. La actualización del stock debes manejar lo desde la base de datos con trigger : insert para descontar stock, delete para aumentar el stock en caso de anular, update para actualizar cantidad o corregir documento en caso de haber error

Cesar muchas gracias por tu oportuna ayuda, disculpa si te insisto con el tema pero me podrías ayudar con un ejemplo que me especifique mejor tu respuesta. Gracias de antemano.

Botón guardar

// El numero de documento yo lo estoy almacenando como string, puedes ser numérico

string ls_num,ls_numnuevo

integer i

//capturo numero de documento en que se quedo

select top 1 numero into :ls_num from tabla_tipodoc where

tipodoc='01' and serie='0001' ;

ls_numnuevo=string(long(ls_num)+1)

//actualizo numero de documento tabla_tipodoc

update  tabla_tipodoc set numero=:ls_numnuevo 

where tipodoc='01' and serie='0001' ;

//asigno numero de documento capturado a la cabecera y detalle

dw_cabecera.object[dw_cabecera.getrow()]=ls_num

dw_cabecera.accepttext()

for i=1 to  dw_detalle.rowcount()

dw_detalle.object[i]=ls_num

next

dw_detalle.accepttext()

dw_cabecera.update()

dw_detalle.update()

2. En tu tabla detalle debes crear trigger(desencadenadores)

Create trigger i_detalle

on detalle

after insert

as

declare @cant numeric,@prod char(6)

select @cant=cantidad*factor,@prod=producto from inserted

update producto set stock=stock - @cant where producto=@prod

---

Create trigger d_detalle

on detalle

after delete

as

declare @cant numeric,@prod char(6)

select @cant=cantidad*factor,@prod=producto from deleted

update producto set stock=stock +@cant where producto=@prod

--

Create trigger u_detalle

on detalle

after update

as

declare @cant numeric,@prod char(6)

select @cant=cantidad*factor,@prod=producto from deleted

update producto set stock=stock +@cant where producto=@prod

select @cant=cantidad*factor,@prod=producto from inserted

update producto set stock=stock - @cant where

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas