Вы находитесь на странице: 1из 4

FUNCIONES

OBTENER EL TOTAL DEL PEDIDO



CREATE OR REPLACE FUNCTION f_total_comprobante(idpedido number)
return number
IS
total_pedido number;
BEGIN
select sum(p.precio_venta*dp.cantidad) into total_pedido from producto p inner join
detalle_pedido dp on p.IDPRODUCTO=dp.PRODUCTO_IDPRODUCTO inner join pedido pe on
pe.IDPEDIDO=dp.PEDIDO_IDPEDIDO where pe.idpedido=idpedido;
return (total_pedido);
END;

select f_total_comprobante(1) from dual ;


OBTENER EL IGV DEL TOTAL

CREATE OR REPLACE FUNCTION f_total_igv(idcomprobante number)
return number
IS
total_igv number;
BEGIN
select (CP.total*0.18) INTO total_igv from COMPROBANTE_PAGO CP WHERE
CP.IDCOMPROBANTE_PAGO=idcomprobante;
return (total_igv);
END;


select f_total_igv(1) from dual ;


OBTENER PRECIO DE VENTA

CREATE OR REPLACE FUNCTION f_precio_venta(idarticulo number)
return number
IS
precio_venta number;
tip_arti varchar2(20);
BEGIN
select ta.nombre into tip_arti from articulo ar inner join TIPO_ARTICULO ta on
ar.TIPO_ARTICULO_IDTIPO_ARTICULO=ta.IDTIPO_ARTICULO WHERE ar.IDARTICULO=idarticulo;
IF tip_arti='BEBIDA' THEN
select (dea.precio_compra*1.50) into precio_venta from detalle_entrada_articulo dea
where dea.articulo_idarticulo=idarticulo;
ELSE
precio_venta:=0.0;
END IF;
RETURN precio_venta;
END;


select f_precio_venta(1) from dual ;

NUMERO DE VENTAS DE UN DIA ESPECIFICO

CREATE OR REPLACE FUNCTION f_ventas_de_un_dia(fecha date)
return number
IS
numero_ventas number;
BEGIN
select count(idcomprobante_pago) into numero_ventas from comprobante_pago where
(SELECT SYSDATE FROM DUAL)=fecha;
RETURN numero_ventas;
END;


select f_ventas_de_un_dia('12/12/12') FROM DUAL;


VISTAS

COMSUMOS MAYORES A 120 SOLES DEL TIPO COMENSAL FIDELIZADO
create or replace view v_comsumos
as
select co.idcomensal AS IDCOMENSAL,co.nombres AS NOMBRES,tc.nombre AS
TIPO_COMENSAL,cp.total AS TOTAL_COMPROBANTE from comensal co inner join
comprobante_pago cp on co.IDCOMENSAL=cp.IDCOMENSAL inner join tipo_comensal tc on
co.TIPO_COMENSAL_IDTIPO_COMENSAL=tc.idtipo_comensal where cp.total>120 and
tc.nombre='FIDELIZADO';

select * from v_comsumos;


CONSUMOS DE LOS COMENSALES
create or replace view v_comsumos_de_comensal
as
select co.idcomensal AS IDCOMENSAL,co.nombres AS NOMBRE,pr.nombre PRODUCTO from
comensal co inner join pedido pe on co.idcomensal=pe.COMENSAL_IDCOMENSAL inner join
detalle_pedido dp on pe.idpedido=dp.PEDIDO_IDPEDIDO inner join producto pr on
dp.PRODUCTO_IDPRODUCTO=pr.IDPRODUCTO
select * from v_comsumos_de_comensal;

PROVEEDORES POR CADA SEDE
create or replace view v_provedores_por_sede
as
select se.nombre as sede, pro.nombre as proveedor, pro.razon_social from sede se inner join
proveedor pro on se.idsede=pro.SEDE_IDSEDE;

select * from v_proveedores_por_sede;

Вам также может понравиться