Código MySQL:
Ver original-- Tabla7: compras --
DELIMITER $$
-- PA de insertar compra a contado
create procedure PA_7_insertar_compras_contado
(idlocales
int(4), fechacompras
date, horacompras
time, idtipocomprobantes
int(4), idformapagos
int(4), idtipopagos
int(4), subtotalcompras
float(5,3), valorigv
float(3,3), idigv
int(4), igvcompras
float(5,3), montototalcompras
float(5,3), idclientes
int(4), vendedorcompras
varchar(50)) -- DECLARE fehocompras timestamp;
-- select CURRENT_timestamp() into fehocompras;
-- INSERT INTO compras(idlocales, fehocompras, fehopagocompras, idtipocomprobantes, numeroseries, numerocomprobantes, idformapagos, idtipopagos, subtotalcompras, valorigv, idigv, igvcompras, montototalcompras, idclientes) VALUES (@idlocales, fehocompras, fehocompras, @idtipocomprobantes, @numeroseries, @numerocomprobantes, @idformapagos, @idtipopagos, @subtotalcompras, @valorigv, @idigv, @igvcompras, @montototalcompras, @idclientes);
-- Declaramos variables necesarias
-- obtenemos el ultimo numero de serie por el tipocomprobante
where idtipocomprobantes
= @idtipocomprobantes
AND idlocales
= @idlocales
-- obtenemos el ultimo numero de comprobante por el tipocomprobante
where idtipocomprobantes
= @idtipocomprobantes
AND idlocales
= @idlocales
-- comparamos si el numero de comprobante es menor 999999999999(ultimo numero posible)
IF numerocomprobantes
>= 999999999999 then -- si es si
--actualizamos el nuevo numero de serie
SET numeroseries
= ultimaserie
+ 1 WHERE idtipocomprobantes
= @idtipocomprobantes
AND idlocales
= @idlocales
; -- actualizamos el numero de comprobante a 1
SET numerocomprobante
= 1 WHERE idtipocomprobantes
= @idtipocomprobantes
AND idlocales
= @idlocales
; -- Obtenemos el nuevo ultimo numero de comprobante
WHERE idtipocomprobantes
= @idtipocomprobantes
AND idlocales
= @idlocales
-- Obtenemos el nuevo ultimo numero de serie
where idtipocomprobantes
= @idtipocomprobantes
AND idlocales
= @idlocales
-- insertamos la nueva compra
INSERT INTO compras
(idlocales
, fechacompras
, horacompras
, fehopagocompras
, idtipocomprobantes
, numeroseries
, numerocomprobantes
, idformapagos
, idtipopagos
, subtotalcompras
, valorigv
, idigv
, igvcompras
, montototalcompras
, idclientes
, vendedorcompras
) VALUES (@idlocales
, @fechacompras
, @horacompras
, @fechacompras
, @idtipocomprobantes
, ultimaserie
, ultimocomprobantes
, @idformapagos
, @idtipopagos
, @subtotalcompras
, @valorigv
, @idigv
, @igvcompras
, @montototalcompras
, @idclientes
, @vendedorcompras
); INSERT INTO compras
(idlocales
, fechacompras
, horacompras
, fehopagocompras
, idtipocomprobantes
, numeroseries
, numerocomprobantes
, idformapagos
, idtipopagos
, subtotalcompras
, valorigv
, idigv
, igvcompras
, montototalcompras
, idclientes
, vendedorcompras
)) VALUES (@idlocales
, @fechacompras
, @horacompras
, @fechacompras
, @idtipocomprobantes
, ultimaserie
, ultimocomprobantes
, @idformapagos
, @idtipopagos
, @subtotalcompras
, @valorigv
, @idigv
, @igvcompras
, @montototalcompras
, @idclientes
, @vendedorcompras
); -- PA de insertar compra a credito
create procedure PA_7_insertar_compras_credito
(idlocales
int(4), fechacompras
date, horacompras
time, idtipocomprobantes
int(4), idformapagos
int(4), idtipopagos
int(4), subtotalcompras
float(5,3), valorigv
float(3,3), idigv
int(4), igvcompras
float(5,3), montototalcompras
float(5,3), idclientes
int(4), vendedorcompras
varchar(50)) -- Declaramos variables necesarias
-- obtenemos el ultimo numero de serie por el tipocomprobante
where idtipocomprobantes
= @idtipocomprobantes
AND idlocales
= @idlocales
-- obtenemos el ultimo numero de comprobante por el tipocomprobante
where idtipocomprobantes
= @idtipocomprobantes
AND idlocales
= @idlocales
-- comparamos si el numero de comprobante es menor 999999999999(ultimo numero posible)
IF numerocomprobantes
>= 999999999999 then -- si es si
--actualizamos el nuevo numero de serie
SET numeroseries
= ultimaserie
+ 1 WHERE idtipocomprobantes
= @idtipocomprobantes
AND idlocales
= @idlocales
; -- actualizamos el numero de comprobante a 1
SET numerocomprobante
= 1 WHERE idtipocomprobantes
= @idtipocomprobantes
AND idlocales
= @idlocales
; -- Obtenemos el nuevo ultimo numero de comprobante
WHERE idtipocomprobantes
= @idtipocomprobantes
AND idlocales
= @idlocales
-- Obtenemos el nuevo ultimo numero de serie
where idtipocomprobantes
= @idtipocomprobantes
AND idlocales
= @idlocales
-- insertamos la nueva compra
INSERT INTO compras
(idlocales
, fechacompras
, horacompras
, fechapago
, idtipocomprobantes
, numeroseries
, numerocomprobantes
, idformapagos
, idtipopagos
, subtotalcompras
, igvcompras
, montototalcompras
, idclientes
, vendedorcompras
) VALUES (@idlocales
, @fechacompras
, @horacompras
, "0000-00-00 00:00:00",@idtipocomprobantes
, ultimaserie
, ultimocomprobantes
, @idformapagos
, @idtipopagos
, @subtotalcompras
, @igvcompras
, @montototalcompras
, @idclientes
, @vendedorcompras
); INSERT INTO compras
(idlocales
, fechacompras
, horacompras
, fechapago
, idtipocomprobantes
, numeroseries
, numerocomprobantes
, idformapagos
, idtipopagos
, subtotalcompras
, igvcompras
, montototalcompras
, idclientes
, vendedorcompras
) VALUES (@idlocales
, @fechacompras
, @horacompras
, "0000-00-00 00:00:00",@idtipocomprobantes
, ultimaserie
, ultimocomprobantes
, @idformapagos
, @idtipopagos
, @subtotalcompras
, @igvcompras
, @montototalcompras
, @idclientes
, @vendedorcompras
); -- Pa de borrar
-- Pa de actualizar pago de compras
create procedure PA_7_actualizar_compras_pago
(idlocales
int(4), idtipocomprobantes
int(4), numeroseries
int(4), numerocomprabante
int(20), fechapagoscompras
date) SET fechapagoscompras
= @fechapagoscompras
WHERE idlocales
= @idlocales
AND idtipocomprobantes
= @idtipocomprobantes
AND numeroseries
= @numeroseries
AND numerocomprobantes
= @numerocomprobantes
; -- Pa de actualizar anulacion de compras
create procedure PA_7_actualizar_compras_anulacion
(idcompras
int(20), idlocales
int(4), numeroseries
int(4), numerocomprobantes
int(12), idtipocomprobantes
int(4), fechaanulacioncompra
date, motivoanulacioncompras
text) where idlocales
= @idlocales
AND idtipocomprobantes
= @idtipocomprobantes
AND idtipocomprobantes
= @idtipocomprobantes
; SET anulacioncompras
= 1 AND fechaanulacioncompra
= @fechaanulacioncompra
AND motivoanulacioncompras
= @motivoanulacioncompras
WHERE idlocales
= @idlocales
AND idtipocomprobantes
= @idtipocomprobantes
AND numerocomprobantes
= @numerocomprobantes
AND numeroseries
= @numeroseries
; WHERE numeroscompras
= @numeroscompras
; DELIMITER ;
-- Tabla8: detallescompras
DELIMITER $$ --
-- PA de insertar
create procedure PA_8_insertar_detallecompras
(idcompras
int(10), idmercaderias
int(10), idcombos
int(10), idrecetas_preparadas
int(10), preciomercaderias
float(5,3), cantidadmercaderias
float(5,3), idtipounidades
int(4), subtotal
float(5,3)) INSERT INTO detallecompras
(idcompras
, idproductos
, precioproductos
, cantidadproductos
, idtipounidades
, subtotal
) VALUES (idcompras
, idproductos
, precioproductos
, cantidadproductos
, idtipounidades
, subtotal
); -- Pa de borrar
-- Pa de actualizar
DELIMITER ;