Está en la página 1de 2

use master

create database facturacion


use facturacion
create table encabezado(cf int primary key IDENTITY (1,1),
FECHA DATE DEFAULT (GETDATE()), CLIENTE VARCHAR(100));
CREATE TABLE PRODUCTO(CP INT PRIMARY KEY IDENTITY (1,1),
NOMBRE VARCHAR(100), ESTADO TINYINT DEFAULT(1))
CREATE TABLE DETALLE(
CF INT CONSTRAINT FK_DETALLE_ENCABEZADO REFERENCES ENCABEZADO(CF),
CP INT CONSTRAINT FK_DETALLE_PRODUCTO REFERENCES PRODUCTO(CP),
PRECIO FLOAT CHECK(PRECIO>0.0),
CANTIDAD INT);
CREATE TABLE INVENTARIO (CODIGOP INT, FECHA DATE DEFAULT(GETDATE()),
TPM CHAR(1) DEFAULT('S') , CANT INT);
ALTER TABLE INVENTARIO ADD CONSTRAINT FK_INVENTARIO_PRODUCTO
FOREIGN KEY(CODIGOP) REFERENCES PRODUCTO(CP);
CREATE TABLE BT_PRODUCTO (CP INT, NOMBRE VARCHAR(100), FECHA DATE
DEFAULT(GETDATE()), ACCION VARCHAR(50), USSER VARCHAR(50),
CREATE PROCEDURE ADD PRODUCTO
@PNOMBRE VARCHAR (100)
AS
BEGIN
IF NOT EXISTS(SELECT * FROM PRODUCTO WHERE NOMBRE=UPPER(PNOMBRE))
END
CREATE PROCEDURE ADD_INVENTARIO
@PCP INT , @PCANT INT
AS
INSERT INTO INVENTARIO(CODIGOP, TPM , CANT)VALUES(@pcp, 'E' , @PCANT)
select UPPER('edwinn')
CREATE FUNCTION DISPONOBILIDAD(@PCP NT)RETURNS INT
AS
BEGIN
DECLARE @VE INT, @VS INT
SELECT @VE=ISNULL (SUM(CANT),0) FROM INVENTARIO WHERE CODIGOP=@PCP AND
TPM='E'
SELECT @VS=ISNULL (SUM(CANT),0) FROM INVENTARIO WHERE CODIGOP=@PCP AND
TPM='S'
RETURN (@VE-@VS)
END
CREATE PROCEDURE ADD_FACTURA
@PCL VARCHAR(100), @PCP INT , @PRECIO FLOAT , @PCANT INT
AS
BEGIN

DECLARE @CF INT


IF DBO.DISPONIBILIDAD(@PCP)>@PCP
BEGIN
INSERT INTO ENCABEZADO(CLIENTE) VALUES(@PCL)
SET @CF=SELECT @@IDENTITY
INSERT INTO DETALLE(CF, CP, PRECIO, CANTIDAD)VALUES
(@CF, @PCP, @PPRECIO, @PCANT)
END
CREATE TRIGGER ACT INVENTARIO ON DETALLE AFTER INSERT
AS
BEGIN
DECLARE @PCP INT, @CANT INT
SELECT @PCP=CP, @CANT=CANTIDAD FROM inserted
INSERT INTO INVENTARIO (CODIGOP, TPM, CANT)VALUES(@PCP.'S', @CANT)
END
EXEC
EXEC
EXEC
EXEC

ADD PRODUCTO('PALAS')
ADD PRODUCTO('PIOCHA')
INVENTARIO (1,55)
INVENTARIO(2,25)

EXEC ADD FACTURA('EDWIN',1,1.25,12)

También podría gustarte