Ejplo. Numeración facturas

06/09/2006 - 18:21 por Jaime Lloret | Informe spam
Necesito crear un sistema de numeración para facturas conforme se vayan
insertando de forma que la numeración sea consecutiva y no se produzcan
huecos.

En principio tengo una tabla (Numeracion) con los campos: Ejercicio,
SiguienteNumeracion

Se me plantean varias dudas...

¿ Cómo hago que al insertar la cabecera de la factura, coja de la tabla
Numeración la siguienteNumeración ?
¿Puede otro usuario haber cogido ya este número?
¿ Qué sucederá con inserciones de cabeceras de facturas masiva ?

Les agradecería alguna idea.


Un saludo


Jaime Lloret.
 

Leer las respuestas

#1 Alejandro Mesa
06/09/2006 - 20:05 | Informe spam
Jaime,

¿ Cómo hago que al insertar la cabecera de la factura, coja de la tabla
Numeración la siguienteNumeración ?



Puedes crear un procedimineto que incremente ese valor y lo devuelva para
ser usado. Cada vez que vas a insertar, debes llamar a este procedimiento.

¿Puede otro usuario haber cogido ya este número?



No, no puede.

¿ Qué sucederá con inserciones de cabeceras de facturas masiva ?



Esa es una de las desventajas de usar este tipo de autonumeracion, que no
puedes hacer inserciones masivas, las debes hacer de una en una.

Ejemplo:

create table dbo.t (
proximo_num int not null
)
go

insert into dbo.t values(0)
go

create procedure dbo.p1
@i int output
as
set nocount on
update dbo.t
set @i = proximo_num = proximo_num + 1

return @@error
go

create procedure dbo.insertar_cabecera
@customerid nchar(5),
@order_date datetime
as
declare @rv int
declare @error int
declare @i int

begin transaction

exec @rv = dbo.p1 @i output

set @error = coalesce(nullif(@rv, 0), @@error)

if @error != 0 or @i is null
begin
rollback transaction
return -1
end

insert into dbo.factura values(@i, @customerid, @order_date)

set @error = @@error

if @error != 0 or @i is null
begin
rollback transaction
return -1
end

commit transaction

return @@error
go

exec dbo.insertar_cabecera N'Micro', '20060906'
go


Este codigo no se ha probado.


AMB

"Jaime Lloret" wrote:

Necesito crear un sistema de numeración para facturas conforme se vayan
insertando de forma que la numeración sea consecutiva y no se produzcan
huecos.

En principio tengo una tabla (Numeracion) con los campos: Ejercicio,
SiguienteNumeracion

Se me plantean varias dudas...

¿ Cómo hago que al insertar la cabecera de la factura, coja de la tabla
Numeración la siguienteNumeración ?
¿Puede otro usuario haber cogido ya este número?
¿ Qué sucederá con inserciones de cabeceras de facturas masiva ?

Les agradecería alguna idea.


Un saludo


Jaime Lloret.




Preguntas similares