kevin2458

StockPro Database

Oct 17th, 2016
178
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE DATABASE StockPro
  2.  
  3. GO
  4.  
  5. USE StockPro
  6.  
  7. GO
  8.  
  9. -- ================================================
  10. -- Tablas
  11. -- ================================================
  12.  
  13. CREATE TABLE Accesos
  14. (
  15.     AccesoID    int          NOT NULL,
  16.     Nombre      varchar(50)  NOT NULL,
  17.     Descripcion varchar(100) NULL
  18. )
  19.  
  20. -- Integridad
  21.  
  22. ALTER TABLE Accesos ADD CONSTRAINT PK_AccesoID PRIMARY KEY (AccesoID)
  23.  
  24. ALTER TABLE Accesos ADD CONSTRAINT UQ_Nombre_Accesos UNIQUE (Nombre)
  25.  
  26. -- ================================================
  27.  
  28. GO
  29.  
  30. CREATE TABLE Cargos
  31. (
  32.     CargoID     int           NOT NULL IDENTITY(1, 1),
  33.     Nombre      varchar(50)   NOT NULL,
  34.     Salario     decimal(9, 2) NOT NULL,
  35.     Descripcion varchar(100)  NULL
  36. )
  37.  
  38. -- Integridad
  39.  
  40. ALTER TABLE Cargos ADD CONSTRAINT PK_CargoID PRIMARY KEY (CargoID)
  41.  
  42. ALTER TABLE Cargos ADD CONSTRAINT UQ_Nombre_Cargos UNIQUE (Nombre)
  43.  
  44. -- ================================================
  45.  
  46. GO
  47.  
  48. CREATE TABLE TiposEmpleados
  49. (
  50.     TipoEmpleadoID int          NOT NULL IDENTITY(1, 1),
  51.     Nombre         varchar(50)  NOT NULL,
  52.     Descripcion    varchar(100) NULL
  53. )
  54.  
  55. -- Integridad
  56.  
  57. ALTER TABLE TiposEmpleados ADD CONSTRAINT PK_TipoEmpleadoID PRIMARY KEY (TipoEmpleadoID)
  58.  
  59. ALTER TABLE TiposEmpleados ADD CONSTRAINT UQ_Nombre_TiposEmpleados UNIQUE (Nombre)
  60.  
  61. -- ================================================
  62.  
  63. GO
  64.  
  65. CREATE TABLE Empleados
  66. (
  67.     EmpleadoID        int          NOT NULL IDENTITY(1, 1),
  68.     PrimerNombre      varchar(50)  NOT NULL,
  69.     SegundoNombre     varchar(50)  NOT NULL,
  70.     PrimerApellido    varchar(50)  NOT NULL,
  71.     SegundoApellido   varchar(50)  NOT NULL,
  72.     FechaNacimiento   date         NOT NULL,
  73.     Sexo              char(1)      NOT NULL,
  74.     NumeroIdentidad   varchar(20)  NOT NULL,
  75.     Direccion         varchar(100) NOT NULL,
  76.     Telefono          varchar(20)  NOT NULL,
  77.     CorreoElectronico varchar(50)  NULL,
  78.     TipoEmpleadoID    int          NOT NULL,
  79.     CargoID           int          NOT NULL
  80. )
  81.  
  82. -- Integridad
  83.  
  84. ALTER TABLE Empleados ADD CONSTRAINT PK_EmpleadoID PRIMARY KEY (EmpleadoID)
  85.  
  86. ALTER TABLE Empleados ADD CONSTRAINT FK_TipoEmpleadoID_Empleados FOREIGN KEY (TipoEmpleadoID)
  87. REFERENCES TiposEmpleados (TipoEmpleadoID)
  88.  
  89. ALTER TABLE Empleados ADD CONSTRAINT FK_CargoID_Empleados FOREIGN KEY (CargoID)
  90. REFERENCES Cargos (CargoID)
  91.  
  92. ALTER TABLE Empleados ADD CONSTRAINT CK_NumeroIdentidad_Empleados CHECK (NumeroIdentidad LIKE '[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9]')
  93.  
  94. ALTER TABLE Empleados ADD CONSTRAINT CK_Sexo_Empleados CHECK (Sexo IN ('M', 'F'))
  95.  
  96. ALTER TABLE Empleados ADD CONSTRAINT CK_Telefono_Empleados CHECK (Telefono LIKE '([0-9][0-9][0-9])_[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]')
  97.  
  98. -- ================================================
  99.  
  100. GO
  101.  
  102. CREATE TABLE Usuarios
  103. (
  104.     UsuarioID  int            NOT NULL IDENTITY(1, 1),
  105.     Nombre     varchar(50)    NOT NULL,
  106.     Contrasena varbinary(128) NOT NULL,
  107.     AccesoID   int            NOT NULL,
  108.     EmpleadoID int            NOT NULL
  109. )
  110.  
  111. -- Integridad
  112.  
  113. ALTER TABLE Usuarios ADD CONSTRAINT PK_UsuarioID PRIMARY KEY (UsuarioID)
  114.  
  115. ALTER TABLE Usuarios ADD CONSTRAINT FK_AccesoID_Usuarios FOREIGN KEY (AccesoID)
  116. REFERENCES Accesos (AccesoID)
  117.  
  118. ALTER TABLE Usuarios ADD CONSTRAINT FK_EmpleadoID_Usuarios FOREIGN KEY (EmpleadoID)
  119. REFERENCES Empleados (EmpleadoID)
  120.  
  121. ALTER TABLE Usuarios ADD CONSTRAINT UQ_Nombre_Usuarios UNIQUE (Nombre)
  122.  
  123. -- ================================================
  124.  
  125. GO
  126.  
  127. CREATE TABLE Cajas
  128. (
  129.     CajaID     int         NOT NULL IDENTITY(1, 1),
  130.     Nombre     varchar(50) NOT NULL,
  131.     EmpleadoID int         NOT NULL
  132. )
  133.  
  134. -- Integridad
  135.  
  136. ALTER TABLE Cajas ADD CONSTRAINT PK_CajaID PRIMARY KEY (CajaID)
  137.  
  138. ALTER TABLE Cajas ADD CONSTRAINT FK_EmpleadoID_Cajas FOREIGN KEY (EmpleadoID)
  139. REFERENCES Empleados (EmpleadoID)
  140.  
  141. ALTER TABLE Cajas ADD CONSTRAINT UQ_Nombre_Cajas UNIQUE (Nombre)
  142.  
  143. ALTER TABLE Cajas ADD CONSTRAINT UQ_EmpleadoID_Cajas UNIQUE (EmpleadoID)
  144.  
  145. -- ================================================
  146.  
  147. GO
  148.  
  149. CREATE TABLE Almacenes
  150. (
  151.     AlmacenID int          NOT NULL IDENTITY(1, 1),
  152.     Nombre    varchar(50)  NOT NULL,
  153.     Direccion varchar(100) NOT NULL
  154. )
  155.  
  156. -- Integridad
  157.  
  158. ALTER TABLE Almacenes ADD CONSTRAINT PK_AlmacenID PRIMARY KEY (AlmacenID)
  159.  
  160. ALTER TABLE Almacenes ADD CONSTRAINT UQ_Nombre_Almacenes UNIQUE (Nombre)
  161.  
  162. -- ================================================
  163.  
  164. GO
  165.  
  166. CREATE TABLE Proveedores
  167. (
  168.     ProveedorID int          NOT NULL IDENTITY(1, 1),
  169.     Nombre      varchar(50)  NOT NULL,
  170.     Direccion   varchar(100) NOT NULL,
  171.     Telefono    varchar(20)  NOT NULL
  172. )
  173.  
  174. -- Integridad
  175.  
  176. ALTER TABLE Proveedores ADD CONSTRAINT PK_ProveedorID PRIMARY KEY (ProveedorID)
  177.  
  178. ALTER TABLE Proveedores ADD CONSTRAINT UQ_Nombre_Proveedores UNIQUE (Nombre)
  179.  
  180. ALTER TABLE Proveedores ADD CONSTRAINT CK_Telefono_Proveedores CHECK (Telefono LIKE '([0-9][0-9][0-9])_[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]')
  181.  
  182. -- ================================================
  183.  
  184. GO
  185.  
  186. CREATE TABLE Categorias
  187. (
  188.     CategoriaID int          NOT NULL IDENTITY(1, 1),
  189.     Nombre      varchar(50)  NOT NULL,
  190.     Descripcion varchar(100) NULL
  191. )
  192.  
  193. -- Integridad
  194.  
  195. ALTER TABLE Categorias ADD CONSTRAINT PK_CategoriaID PRIMARY KEY (CategoriaID)
  196.  
  197. ALTER TABLE Categorias ADD CONSTRAINT UQ_Nombre_Categorias UNIQUE (Nombre)
  198.  
  199. -- ================================================
  200.  
  201. GO
  202.  
  203. CREATE TABLE Productos
  204. (
  205.     ProductoID  int          NOT NULL IDENTITY(1, 1),
  206.     Nombre      varchar(50)  NOT NULL,
  207.     ProveedorID int          NOT NULL,
  208.     CategoriaID int          NOT NULL,
  209.     Descripcion varchar(100) NULL
  210. )
  211.  
  212. -- Integridad
  213.  
  214. ALTER TABLE Productos ADD CONSTRAINT PK_ProductoID PRIMARY KEY (ProductoID)
  215.  
  216. ALTER TABLE Productos ADD CONSTRAINT FK_ProveedorID_Productos FOREIGN KEY (ProveedorID)
  217. REFERENCES Proveedores (ProveedorID)
  218.  
  219. ALTER TABLE Productos ADD CONSTRAINT FK_CategoriaID_Productos FOREIGN KEY (CategoriaID)
  220. REFERENCES Categorias (CategoriaID)
  221.  
  222. ALTER TABLE Productos ADD CONSTRAINT UQ_Nombre_Productos UNIQUE (Nombre)
  223.  
  224. -- ================================================
  225.  
  226. GO
  227.  
  228. CREATE TABLE Inventario
  229. (
  230.     AlmacenID  int           NOT NULL,
  231.     ProductoID int           NOT NULL,
  232.     Precio     decimal(9, 2) NOT NULL,
  233.     Existencia int           NOT NULL
  234. )
  235.  
  236. -- Integridad
  237.  
  238. ALTER TABLE Inventario ADD CONSTRAINT PK_AlmacenID_ProductoID PRIMARY KEY (AlmacenID, ProductoID)
  239.  
  240. ALTER TABLE Inventario ADD CONSTRAINT FK_AlmacenID_Inventario FOREIGN KEY (AlmacenID)
  241. REFERENCES Almacenes (AlmacenID)
  242.  
  243. ALTER TABLE Inventario ADD CONSTRAINT FK_ProductoID_Inventario FOREIGN KEY (ProductoID)
  244. REFERENCES Productos (ProductoID)
  245.  
  246. -- ================================================
  247.  
  248. GO
  249.  
  250. CREATE TABLE OrdenesCompras
  251. (
  252.     OrdenCompraID int  NOT NULL IDENTITY(1, 1),
  253.     AlmacenID     int  NOT NULL,
  254.     ProveedorID   int  NOT NULL,
  255.     Fecha         date NOT NULL
  256. )
  257.  
  258. -- Integridad
  259.  
  260. ALTER TABLE OrdenesCompras ADD CONSTRAINT PK_OrdenCompraID PRIMARY KEY (OrdenCompraID)
  261.  
  262. ALTER TABLE OrdenesCompras ADD CONSTRAINT FK_AlmacenID_OrdenesCompras FOREIGN KEY (AlmacenID)
  263. REFERENCES Almacenes (AlmacenID)
  264.  
  265. ALTER TABLE OrdenesCompras ADD CONSTRAINT FK_ProveedorID_OrdenesCompras FOREIGN KEY (ProveedorID)
  266. REFERENCES Proveedores (ProveedorID)
  267.  
  268. -- ================================================
  269.  
  270. GO
  271.  
  272. CREATE TABLE DetalleOrdenesCompras
  273. (
  274.     OrdenCompraID int           NOT NULL,
  275.     Hora          time          NOT NULL,
  276.     ProductoID    int           NOT NULL,
  277.     Costo         decimal(9, 2) NOT NULL,
  278.     Impuesto      int           NOT NULL,
  279.     Solicitado    int           NOT NULL,
  280.     Recibido      int           NOT NULL
  281. )
  282.  
  283. -- Integridad
  284.  
  285. ALTER TABLE DetalleOrdenesCompras ADD CONSTRAINT PK_OrdenCompraID_ProductoID PRIMARY KEY (OrdenCompraID, ProductoID)
  286.  
  287. ALTER TABLE DetalleOrdenesCompras ADD CONSTRAINT FK_OrdenCompraID_DetalleOrdenesCompras FOREIGN KEY (OrdenCompraID)
  288. REFERENCES OrdenesCompras (OrdenCompraID)
  289.  
  290. ALTER TABLE DetalleOrdenesCompras ADD CONSTRAINT FK_ProductoID_DetalleOrdenesCompras FOREIGN KEY (ProductoID)
  291. REFERENCES Productos (ProductoID)
  292.  
  293. -- ================================================
  294.  
  295. GO
  296.  
  297. CREATE TABLE DevolucionesCompras
  298. (
  299.     DevolucionCompraID int  NOT NULL IDENTITY(1, 1),
  300.     OrdenCompraID      int  NOT NULL,
  301.     Fecha              date NOT NULL
  302. )
  303.  
  304. -- Integridad
  305.  
  306. ALTER TABLE DevolucionesCompras ADD CONSTRAINT PK_DevolucionCompraID PRIMARY KEY (DevolucionCompraID)
  307.  
  308. ALTER TABLE DevolucionesCompras ADD CONSTRAINT FK_OrdenCompraID_DevolucionesCompras FOREIGN KEY (OrdenCompraID)
  309. REFERENCES OrdenesCompras (OrdenCompraID)
  310.  
  311. ALTER TABLE DevolucionesCompras ADD CONSTRAINT UQ_OrdenCompraID_DevolucionesCompras UNIQUE (OrdenCompraID)
  312.  
  313. ALTER TABLE DevolucionesCompras ADD CONSTRAINT UQ_Fecha_DevolucionesCompras UNIQUE (Fecha)
  314.  
  315. -- ================================================
  316.  
  317. GO
  318.  
  319. CREATE TABLE DetalleDevolucionesCompras
  320. (
  321.     DevolucionCompraID int          NOT NULL,
  322.     Hora               time         NOT NULL,
  323.     Cantidad           int          NOT NULL
  324. )
  325.  
  326. -- Integridad
  327.  
  328. ALTER TABLE DetalleDevolucionesCompras ADD CONSTRAINT FK_DevolucionCompraID_DetalleDevolucionesCompras FOREIGN KEY (DevolucionCompraID)
  329. REFERENCES DevolucionesCompras (DevolucionCompraID)
  330.  
  331. -- ================================================
  332.  
  333. GO
  334.  
  335. CREATE TABLE Clientes
  336. (
  337.     ClienteID         int          NOT NULL IDENTITY(1, 1),
  338.     Nombre            varchar(50)  NOT NULL,
  339.     Apellido          varchar(50)  NOT NULL,
  340.     Direccion         varchar(100) NOT NULL,
  341.     Telefono          varchar(20)  NOT NULL,
  342.     CorreoElectronico varchar(50)  NULL
  343. )
  344.  
  345. -- Integridad
  346.  
  347. ALTER TABLE Clientes ADD CONSTRAINT PK_ClienteID PRIMARY KEY (ClienteID)
  348.  
  349. ALTER TABLE Clientes ADD CONSTRAINT CK_Telefono_Clientes CHECK (Telefono LIKE '([0-9][0-9][0-9])_[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]')
  350.  
  351. -- ================================================
  352.  
  353. GO
  354.  
  355. CREATE TABLE FormasPago
  356. (
  357.     FormaPagoID int          NOT NULL IDENTITY(1, 1),
  358.     Nombre      varchar(50)  NOT NULL,
  359.     Descripcion varchar(100) NULL
  360. )
  361.  
  362. -- Integridad
  363.  
  364. ALTER TABLE FormasPago ADD CONSTRAINT PK_FormaPagoID PRIMARY KEY (FormaPagoID)
  365.  
  366. ALTER TABLE FormasPago ADD CONSTRAINT UQ_Nombre_FormasPago UNIQUE (Nombre)
  367.  
  368. -- ================================================
  369.  
  370. GO
  371.  
  372. CREATE TABLE Facturas
  373. (
  374.     FacturaID int  NOT NULL IDENTITY(1, 1),
  375.     CajaID    int  NOT NULL,
  376.     ClienteID int  NOT NULL,
  377.     Fecha     date NOT NULL
  378. )
  379.  
  380. -- Integridad
  381.  
  382. ALTER TABLE Facturas ADD CONSTRAINT PK_FacturaID PRIMARY KEY (FacturaID)
  383.  
  384. ALTER TABLE Facturas ADD CONSTRAINT FK_CajaID_Facturas FOREIGN KEY (CajaID)
  385. REFERENCES Cajas (CajaID)
  386.  
  387. ALTER TABLE Facturas ADD CONSTRAINT FK_ClienteID_Facturas FOREIGN KEY (ClienteID)
  388. REFERENCES Clientes (ClienteID)
  389.  
  390. ALTER TABLE Facturas ADD CONSTRAINT UQ_CajaID_Facturas UNIQUE (CajaID)
  391.  
  392. ALTER TABLE Facturas ADD CONSTRAINT UQ_ClienteID_Facturas UNIQUE (ClienteID)
  393.  
  394. ALTER TABLE Facturas ADD CONSTRAINT UQ_Fecha_Facturas UNIQUE (Fecha)
  395.  
  396. -- ================================================
  397.  
  398. GO
  399.  
  400. CREATE TABLE DetalleFacturas
  401. (
  402.     FacturaID   int           NOT NULL,
  403.     Hora        time          NOT NULL,
  404.     AlmacenID   int           NOT NULL,
  405.     ProductoID  int           NOT NULL,
  406.     Precio      decimal(9, 2) NOT NULL,
  407.     Cantidad    int           NOT NULL,
  408.     FormaPagoID int           NOT NULL
  409. )
  410.  
  411. -- Integridad
  412.  
  413. ALTER TABLE DetalleFacturas ADD CONSTRAINT PK_FacturaID_AlmacenID_ProductoID_FormaPagoID PRIMARY KEY (FacturaID, AlmacenID, ProductoID, FormaPagoID)
  414.  
  415. ALTER TABLE DetalleFacturas ADD CONSTRAINT FK_FacturaID_DetalleFacturas FOREIGN KEY (FacturaID)
  416. REFERENCES Facturas (FacturaID)
  417.  
  418. ALTER TABLE DetalleFacturas ADD CONSTRAINT FK_AlmacenID_DetalleFacturas FOREIGN KEY (AlmacenID)
  419. REFERENCES Almacenes (AlmacenID)
  420.  
  421. ALTER TABLE DetalleFacturas ADD CONSTRAINT FK_ProductoID_DetalleFacturas FOREIGN KEY (ProductoID)
  422. REFERENCES Productos (ProductoID)
  423.  
  424. ALTER TABLE DetalleFacturas ADD CONSTRAINT FK_FormaPagoID_DetalleFacturas FOREIGN KEY (FormaPagoID)
  425. REFERENCES FormasPago (FormaPagoID)
  426.  
  427. -- ================================================
  428.  
  429. GO
  430.  
  431. CREATE TABLE DevolucionesVentas
  432. (
  433.     DevolucionVentaID int  NOT NULL IDENTITY(1, 1),
  434.     FacturaID         int  NOT NULL,
  435.     Fecha             date NOT NULL
  436. )
  437.  
  438. -- Integridad
  439.  
  440. ALTER TABLE DevolucionesVentas ADD CONSTRAINT PK_DevolucionVentaID PRIMARY KEY (DevolucionVentaID)
  441.  
  442. ALTER TABLE DevolucionesVentas ADD CONSTRAINT FK_FacturaID_DevolucionesVentas FOREIGN KEY (FacturaID)
  443. REFERENCES Facturas (FacturaID)
  444.  
  445. ALTER TABLE DevolucionesVentas ADD CONSTRAINT UQ_FacturaID_DevolucionesVentas UNIQUE (FacturaID)
  446.  
  447. ALTER TABLE DevolucionesVentas ADD CONSTRAINT UQ_Fecha_DevolucionesVentas UNIQUE (Fecha)
  448.  
  449. -- ================================================
  450.  
  451. GO
  452.  
  453. CREATE TABLE DetalleDevolucionesVentas
  454. (
  455.     DevolucionVentaID int          NOT NULL,
  456.     Hora              time         NOT NULL,
  457.     Cantidad          int          NOT NULL,
  458.     Descripcion       varchar(100) NULL
  459. )
  460.  
  461. -- Integridad
  462.  
  463. ALTER TABLE DetalleDevolucionesVentas ADD CONSTRAINT PK_DevolucionVentaID_DetalleDevolucionesVentas PRIMARY KEY (DevolucionVentaID)
  464.  
  465. ALTER TABLE DetalleDevolucionesVentas ADD CONSTRAINT FK_DevolucionVentaID_DetalleDevolucionesVentas FOREIGN KEY (DevolucionVentaID)
  466. REFERENCES DevolucionesVentas (DevolucionVentaID)
  467.  
  468. -- ================================================
  469.  
  470. GO
  471.  
  472. CREATE TABLE Transferencias
  473. (
  474.     TransferenciaID   int  NOT NULL IDENTITY(1, 1),
  475.     AlmacenID_Origen  int  NOT NULL,
  476.     AlmacenID_Destino int  NOT NULL,
  477.     Fecha             date NOT NULL
  478. )
  479.  
  480. -- Integridad
  481.  
  482. ALTER TABLE Transferencias ADD CONSTRAINT PK_TransferenciaID PRIMARY KEY (TransferenciaID)
  483.  
  484. ALTER TABLE Transferencias ADD CONSTRAINT FK_AlmacenID_Origen_Transferencias FOREIGN KEY (AlmacenID_Origen)
  485. REFERENCES Almacenes (AlmacenID)
  486.  
  487. ALTER TABLE Transferencias ADD CONSTRAINT FK_AlmacenID_Destino_Transferencias FOREIGN KEY (AlmacenID_Destino)
  488. REFERENCES Almacenes (AlmacenID)
  489.  
  490. ALTER TABLE Transferencias ADD CONSTRAINT UQ_AlmacenID_Origen_Transferencias UNIQUE (AlmacenID_Origen)
  491.  
  492. ALTER TABLE Transferencias ADD CONSTRAINT UQ_AlmacenID_Destino_Transferencias UNIQUE (AlmacenID_Destino)
  493.  
  494. ALTER TABLE Transferencias ADD CONSTRAINT UQ_Fecha_Transferencias UNIQUE (Fecha)
  495.  
  496. -- ================================================
  497.  
  498. GO
  499.  
  500. CREATE TABLE DetalleTransferencias
  501. (
  502.     TransferenciaID int          NOT NULL,
  503.     Hora            time         NOT NULL,
  504.     ProductoID      int          NOT NULL,
  505.     Solicitado      int          NOT NULL,
  506.     Recibido        int          NOT NULL,
  507.     Descripcion     varchar(100) NULL
  508. )
  509.  
  510. -- Integridad
  511.  
  512. ALTER TABLE DetalleTransferencias ADD CONSTRAINT PK_TransferenciaID_ProductoID PRIMARY KEY (TransferenciaID, ProductoID)
  513.  
  514. ALTER TABLE DetalleTransferencias ADD CONSTRAINT FK_TransferenciaID_DetalleTransferencias FOREIGN KEY (TransferenciaID)
  515. REFERENCES Transferencias (TransferenciaID)
  516.  
  517. ALTER TABLE DetalleTransferencias ADD CONSTRAINT FK_ProductoID_DetalleTransferencias FOREIGN KEY (ProductoID)
  518. REFERENCES Productos (ProductoID)
  519.  
  520. -- ================================================
  521.  
  522. GO
  523.  
  524. CREATE TABLE Pagos
  525. (
  526.     FormaPagoID int           NOT NULL IDENTITY(1, 1),
  527.     Fecha       date          NOT NULL,
  528.     Hora        time          NOT NULL,
  529.     Valor       decimal(9, 2) NOT NULL
  530. )
  531.  
  532. -- Integridad
  533.  
  534. ALTER TABLE Pagos ADD CONSTRAINT PK_FormaPagoID_Pagos PRIMARY KEY (FormaPagoID)
  535.  
  536. ALTER TABLE Pagos ADD CONSTRAINT FK_FormaPagoID_Pagos FOREIGN KEY (FormaPagoID)
  537. REFERENCES FormasPago (FormaPagoID)
  538.  
  539. -- ================================================
  540. -- Valores predeterminados
  541. -- ================================================
  542.  
  543. GO
  544.  
  545. CREATE DEFAULT NoDisponible
  546. AS 'No disponible'
  547.  
  548. -- Enlaces
  549.  
  550. GO
  551.  
  552. sp_bindefault 'NoDisponible', 'Accesos.Descripcion'
  553.  
  554. GO
  555.  
  556. sp_bindefault 'NoDisponible', 'Cargos.Descripcion'
  557.  
  558. GO
  559.  
  560. sp_bindefault 'NoDisponible', 'TiposEmpleados.Descripcion'
  561.  
  562. GO
  563.  
  564. sp_bindefault 'NoDisponible', 'TiposEmpleados.Descripcion'
  565.  
  566. GO
  567.  
  568. sp_bindefault 'NoDisponible', 'Empleados.CorreoElectronico'
  569.  
  570. GO
  571.  
  572. sp_bindefault 'NoDisponible', 'Categorias.Descripcion'
  573.  
  574. GO
  575.  
  576. sp_bindefault 'NoDisponible', 'Productos.Descripcion'
  577.  
  578. GO
  579.  
  580. sp_bindefault 'NoDisponible', 'Clientes.CorreoElectronico'
  581.  
  582. GO
  583.  
  584. sp_bindefault 'NoDisponible', 'FormasPago.Descripcion'
  585.  
  586. -- ================================================
  587. -- Funciones
  588. -- ================================================
  589.  
  590. GO
  591.  
  592. CREATE FUNCTION QuitarEspacios
  593. (
  594.     @Cadena varchar(100)
  595. )
  596. RETURNS varchar(100)
  597. AS
  598. BEGIN
  599.     RETURN ISNULL(@Cadena, LTRIM(RTRIM(@Cadena)))
  600. END
  601.  
  602. -- ================================================
  603.  
  604. GO
  605.  
  606. CREATE FUNCTION FormatoFecha
  607. (
  608.     @Fecha date
  609. )
  610. RETURNS varchar(15)
  611. AS
  612. BEGIN
  613.     RETURN CONVERT(varchar, @Fecha, 103)
  614. END
  615.  
  616. -- ================================================
  617.  
  618. GO
  619.  
  620. CREATE FUNCTION FormatoHora
  621. (
  622.     @Hora time
  623. )
  624. RETURNS varchar(15)
  625. AS
  626. BEGIN
  627.     RETURN CONVERT(VARCHAR, @Hora, 108)
  628. END
  629.  
  630. -- ================================================
  631.  
  632. GO
  633.  
  634. CREATE FUNCTION ObtenerTotal
  635. (
  636.     @Total    decimal(9, 2),
  637.     @Impuesto int
  638. )
  639. RETURNS decimal(9, 2)
  640. AS
  641. BEGIN
  642.     RETURN @Total * CONVERT(decimal(9, 2), '1.' + CONVERT(varchar, @Impuesto))
  643. END
  644.  
  645. -- ================================================
  646. -- Vistas
  647. -- ================================================
  648.  
  649. GO
  650.  
  651. CREATE VIEW vAccesos
  652. AS
  653.     SELECT CONVERT(varchar, AccesoID) 'ID',
  654.            Nombre                     'Nombre',
  655.            Descripcion                'Descripción'
  656.     FROM Accesos
  657.  
  658. -- ================================================
  659.  
  660. GO
  661.  
  662. CREATE VIEW vCargos
  663. AS
  664.     SELECT CONVERT(varchar, CargoID) 'ID',
  665.            Nombre                    'Nombre',
  666.            Salario                   'Salario',
  667.            Descripcion               'Descripción'
  668.     FROM Cargos
  669.  
  670. -- ================================================
  671.  
  672. GO
  673.  
  674. CREATE VIEW vTiposEmpleados
  675. AS
  676.     SELECT CONVERT(varchar, TipoEmpleadoID) 'ID',
  677.            Nombre                           'Nombre',
  678.            Descripcion                      'Descripción'
  679.     FROM TiposEmpleados
  680.  
  681. -- ================================================
  682.  
  683. GO
  684.  
  685. CREATE VIEW vEmpleados
  686. AS
  687.     SELECT CONVERT(varchar, e.EmpleadoID)      'ID',
  688.            e.PrimerNombre                      'Primer nombre',
  689.            e.SegundoNombre                     'Segundo nombre',
  690.            e.PrimerApellido                    'Primer apellido',
  691.            e.SegundoApellido                   'Segundo apellido',
  692.            dbo.FormatoFecha(e.FechaNacimiento) 'Fecha de nacimiento',
  693.            e.Sexo                              'Sexo',
  694.            e.NumeroIdentidad                   'Número de identidad',
  695.            e.Direccion                         'Dirección',
  696.            e.Telefono                          'Teléfono',
  697.            e.CorreoElectronico                 'Correo electrónico',
  698.            t.Nombre                            'Tipo',
  699.            c.Nombre                            'Cargo'
  700.     FROM Empleados e WITH (NOLOCK)
  701.         INNER JOIN TiposEmpleados t WITH (NOLOCK)
  702.             ON e.TipoEmpleadoID = t.TipoEmpleadoID
  703.         INNER JOIN Cargos c WITH (NOLOCK)
  704.             ON e.CargoID = c.CargoID
  705.  
  706. -- ================================================
  707.  
  708. GO
  709.  
  710. CREATE VIEW vUsuarios
  711. AS
  712.     SELECT CONVERT(varchar, u.UsuarioID) 'ID',
  713.            u.Nombre                      'Nombre',
  714.            a.Nombre                      'Acceso',
  715.            e.PrimerNombre + SPACE(1) +
  716.            e.PrimerApellido              'Empleado'
  717.     FROM Usuarios u WITH (NOLOCK)
  718.         INNER JOIN Accesos a WITH (NOLOCK)
  719.             ON u.AccesoID = a.AccesoID
  720.         INNER JOIN Empleados e WITH (NOLOCK)
  721.             ON u.EmpleadoID = e.EmpleadoID
  722.  
  723. -- ================================================
  724.  
  725. GO
  726.  
  727. CREATE VIEW vCajas
  728. AS
  729.     SELECT CONVERT(varchar, c.CajaID)  'ID',
  730.            c.Nombre                    'Nombre',
  731.            e.PrimerNombre + SPACE(1) +
  732.            e.PrimerApellido            'Empleado'
  733.     FROM Cajas c WITH (NOLOCK)
  734.         INNER JOIN Empleados e WITH (NOLOCK)
  735.             ON c.EmpleadoID = e.EmpleadoID
  736.  
  737. -- ================================================
  738.  
  739. GO
  740.  
  741. CREATE VIEW vAlmacenes
  742. AS
  743.     SELECT CONVERT(varchar, AlmacenID) 'ID',
  744.            Nombre                      'Nombre',
  745.            Direccion                   'Dirección'
  746.     FROM Almacenes
  747.  
  748. -- ================================================
  749.  
  750. GO
  751.  
  752. CREATE VIEW vProveedores
  753. AS
  754.     SELECT CONVERT(varchar, ProveedorID) 'ID',
  755.            Nombre                        'Nombre',
  756.            Direccion                     'Dirección',
  757.            Telefono                      'Teléfono'
  758.     FROM Proveedores
  759.  
  760. -- ================================================
  761.  
  762. GO
  763.  
  764. CREATE VIEW vCategorias
  765. AS
  766.     SELECT CONVERT(varchar, CategoriaID) 'ID',
  767.            Nombre                        'Nombre',
  768.            Descripcion                   'Descripción'
  769.     FROM Categorias
  770.  
  771. -- ================================================
  772.  
  773. GO
  774.  
  775. CREATE VIEW vProductos
  776. AS
  777.     SELECT CONVERT(varchar, ProductoID) 'ID',
  778.            p.Nombre                     'Nombre',
  779.            c.Nombre                     'Categoría',
  780.            v.Nombre                     'Proveedor',
  781.            p.Descripcion                'Descripción'
  782.     FROM Productos p WITH (NOLOCK)
  783.         INNER JOIN Categorias c WITH (NOLOCK)
  784.             ON p.CategoriaID = c.CategoriaID
  785.         INNER JOIN Proveedores v WITH (NOLOCK)
  786.             ON p.ProveedorID = v.ProveedorID
  787.  
  788. -- ================================================
  789.  
  790. GO
  791.  
  792. CREATE VIEW vInventario
  793. AS
  794.     SELECT a.Nombre     'Almacén',
  795.            p.Nombre     'Producto',
  796.            i.Precio     'Precio',
  797.            i.Existencia 'Existencia'
  798.     FROM Inventario i WITH (NOLOCK)
  799.         INNER JOIN Almacenes a WITH (NOLOCK)
  800.             ON i.AlmacenID = a.AlmacenID
  801.         INNER JOIN Productos p WITH (NOLOCK)
  802.             ON i.ProductoID = p.ProductoID
  803.  
  804. -- ================================================
  805.  
  806. GO
  807.  
  808. CREATE VIEW vOrdenesCompras
  809. AS
  810.     SELECT CONVERT(varchar, o.OrdenCompraID) 'ID',
  811.            a.Nombre                          'Almacén',
  812.            p.Nombre                          'Proveedor',
  813.            dbo.FormatoFecha(o.Fecha)         'Fecha'
  814.     FROM OrdenesCompras o WITH (NOLOCK)
  815.         INNER JOIN Almacenes a WITH (NOLOCK)
  816.             ON o.AlmacenID = a.AlmacenID
  817.         INNER JOIN Proveedores p WITH (NOLOCK)
  818.             ON o.ProveedorID = p.ProveedorID
  819.  
  820. -- ================================================
  821.  
  822. GO
  823.  
  824. CREATE VIEW vDevolucionesCompras
  825. AS
  826.     SELECT CONVERT(varchar, DevolucionCompraID) 'ID',
  827.            OrdenCompraID                        'Orden de compra',
  828.            dbo.FormatoFecha(Fecha)              'Fecha'
  829.     FROM DevolucionesCompras
  830.  
  831. -- ================================================
  832.  
  833. GO
  834.  
  835. CREATE VIEW vClientes
  836. AS
  837.     SELECT CONVERT(varchar, ClienteID) 'ID',
  838.            Nombre                      'Nombre',
  839.            Apellido                    'Apellido',
  840.            Direccion                   'Dirección',
  841.            Telefono                    'Teléfono',
  842.            CorreoElectronico           'Correo electrónico'
  843.     FROM Clientes
  844.  
  845. -- ================================================
  846.  
  847. GO
  848.  
  849. CREATE VIEW vFormasPago
  850. AS
  851.     SELECT CONVERT(varchar, FormaPagoID) 'ID',
  852.            Nombre                        'Nombre',
  853.            Descripcion                   'Descripción'
  854.     FROM FormasPago
  855.  
  856. -- ================================================
  857.  
  858. GO
  859.  
  860. CREATE VIEW vFacturas
  861. AS
  862.     SELECT CONVERT(varchar, f.FacturaID)    'ID',
  863.            c.Nombre                         'Caja',
  864.            l.Nombre + SPACE(1) + l.Apellido 'Cliente',
  865.            dbo.FormatoFecha(f.Fecha)        'Fecha'
  866.     FROM Facturas f WITH (NOLOCK)
  867.         INNER JOIN Cajas c WITH (NOLOCK)
  868.             ON f.CajaID = c.CajaID
  869.         INNER JOIN Clientes l WITH (NOLOCK)
  870.             ON f.ClienteID = l.ClienteID
  871.  
  872. -- ================================================
  873.  
  874. GO
  875.  
  876. CREATE VIEW vDevolucionesVentas
  877. AS
  878.     SELECT CONVERT(varchar, DevolucionVentaID) 'ID',
  879.            FacturaID                           'Factura',
  880.            dbo.FormatoFecha(Fecha)             'Fecha'
  881.     FROM DevolucionesVentas
  882.  
  883. -- ================================================
  884.  
  885. GO
  886.  
  887. CREATE VIEW vTransferencias
  888. AS
  889.     SELECT CONVERT(varchar, t.TransferenciaID) 'ID',
  890.            o.Nombre                            'Almacén de origen',
  891.            d.Nombre                            'Almacén de destino',
  892.            dbo.FormatoFecha(t.Fecha)           'Fecha'
  893.     FROM Transferencias t WITH (NOLOCK)
  894.         INNER JOIN Almacenes o WITH (NOLOCK)
  895.             ON t.AlmacenID_Origen = o.AlmacenID
  896.         INNER JOIN Almacenes d WITH (NOLOCK)
  897.             ON t.AlmacenID_Destino = d.AlmacenID
  898.  
  899. -- ================================================
  900. -- Procedimientos almacenados
  901. -- ================================================
  902.  
  903. GO
  904.  
  905. CREATE PROCEDURE ObtenerAccesos
  906. AS
  907. BEGIN
  908.     SELECT * FROM vAccesos
  909.     ORDER BY ID ASC
  910. END
  911.  
  912. -- ================================================
  913.  
  914. GO
  915.  
  916. CREATE PROCEDURE NuevoAcceso
  917.     @AccesoID    int,
  918.     @Nombre      varchar(50),
  919.     @Descripcion varchar(100)
  920. AS
  921. BEGIN
  922.     INSERT INTO Accesos(AccesoID, Nombre, Descripcion)
  923.     VALUES(@AccesoID, dbo.QuitarEspacios(@Nombre), ISNULL(dbo.QuitarEspacios(@Descripcion), 'No disponible'))
  924. END
  925.  
  926. -- ================================================
  927.  
  928. GO
  929.  
  930. CREATE PROCEDURE ModificarAcceso
  931.     @AccesoID    int,
  932.     @Nombre      varchar(50),
  933.     @Descripcion varchar(100)
  934. AS
  935. BEGIN
  936.     DECLARE @DescripcionActual varchar(100)
  937.  
  938.     SET @Nombre            = dbo.QuitarEspacios(@Nombre)
  939.     SET @Descripcion       = dbo.QuitarEspacios(@Descripcion)
  940.     SET @DescripcionActual = (SELECT Descripcion FROM Accesos WHERE AccesoID = @AccesoID)
  941.  
  942.     IF @Nombre != (SELECT Nombre FROM Accesos WHERE AccesoID = @AccesoID)
  943.         UPDATE Accesos
  944.         SET Nombre = @Nombre
  945.         WHERE AccesoID = @AccesoID
  946.  
  947.     IF @Descripcion != @DescripcionActual OR @Descripcion IS NOT NULL AND @DescripcionActual IS NULL
  948.         UPDATE Accesos
  949.         SET Descripcion = @Descripcion
  950.         WHERE AccesoID = @AccesoID
  951.     ELSE
  952.         UPDATE Accesos
  953.         SET Descripcion = default
  954.         WHERE AccesoID = @AccesoID
  955. END
  956.  
  957. -- ================================================
  958.  
  959. GO
  960.  
  961. CREATE PROCEDURE EliminarAcceso
  962.     @AccesoID int
  963. AS
  964. BEGIN
  965.     IF (@AccesoID > 3)
  966.         DELETE FROM Accesos
  967.         WHERE AccesoID = @AccesoID
  968.     ELSE
  969.         RETURN @@ERROR
  970. END
  971.  
  972. -- ================================================
  973.  
  974. GO
  975.  
  976. CREATE PROCEDURE BuscarAccesos
  977.     @Buscar   int,
  978.     @Consulta varchar(50)
  979. AS
  980. BEGIN
  981.     SELECT * FROM vAccesos
  982.     WHERE
  983.         CASE @Buscar
  984.             WHEN 1 THEN
  985.                 ID
  986.             ELSE
  987.                 Nombre
  988.         END
  989.         LIKE '%' + @Consulta + '%'
  990.     ORDER BY ID ASC
  991. END
  992.  
  993. -- ================================================
  994.  
  995. GO
  996.  
  997. CREATE PROCEDURE ObtenerCargos
  998. AS
  999. BEGIN
  1000.     SELECT * FROM vCargos
  1001.     ORDER BY ID ASC
  1002. END
  1003.  
  1004. -- ================================================
  1005.  
  1006. GO
  1007.  
  1008. CREATE PROCEDURE NuevoCargo
  1009.     @Nombre      varchar(50),
  1010.     @Salario     decimal(9, 2),
  1011.     @Descripcion varchar(100)
  1012. AS
  1013. BEGIN
  1014.     INSERT INTO Cargos(Nombre, Salario, Descripcion)
  1015.     VALUES(dbo.QuitarEspacios(@Nombre), @Salario, dbo.QuitarEspacios(@Descripcion))
  1016. END
  1017.  
  1018. -- ================================================
  1019.  
  1020. GO
  1021.  
  1022. CREATE PROCEDURE ModificarCargo
  1023.     @CargoID     int,
  1024.     @Nombre      varchar(50),
  1025.     @Salario     decimal(9, 2),
  1026.     @Descripcion varchar(100)
  1027. AS
  1028. BEGIN
  1029.     DECLARE @DescripcionActual varchar(100)
  1030.  
  1031.     SET @Nombre            = dbo.QuitarEspacios(@Nombre)
  1032.     SET @Descripcion       = dbo.QuitarEspacios(@Descripcion)
  1033.     SET @DescripcionActual = (SELECT Descripcion FROM Cargos WHERE CargoID = @CargoID)
  1034.  
  1035.     IF @Nombre != (SELECT Nombre FROM Cargos WHERE CargoID = @CargoID)
  1036.         UPDATE Cargos
  1037.         SET Nombre = @Nombre
  1038.         WHERE CargoID = @CargoID
  1039.  
  1040.     IF @Salario != (SELECT Salario FROM Cargos WHERE CargoID = @CargoID)
  1041.         UPDATE Cargos
  1042.         SET Salario = @Salario
  1043.         WHERE CargoID = @CargoID
  1044.  
  1045.     IF @Descripcion != @DescripcionActual OR @Descripcion IS NULL AND @DescripcionActual IS NOT NULL OR @DescripcionActual IS NULL AND @Descripcion IS NOT NULL
  1046.         UPDATE Cargos
  1047.         SET Descripcion = @Descripcion
  1048.         WHERE CargoID = @CargoID
  1049. END
  1050.  
  1051. -- ================================================
  1052.  
  1053. GO
  1054.  
  1055. CREATE PROCEDURE EliminarCargo
  1056.     @CargoID int
  1057. AS
  1058. BEGIN
  1059.     DELETE FROM Cargos
  1060.     WHERE CargoID = @CargoID
  1061. END
  1062.  
  1063. -- ================================================
  1064.  
  1065. GO
  1066.  
  1067. CREATE PROCEDURE BuscarCargos
  1068.     @Buscar   int,
  1069.     @Consulta varchar(50)
  1070. AS
  1071. BEGIN
  1072.     SELECT * FROM vCargos
  1073.     WHERE
  1074.         CASE @Buscar
  1075.             WHEN 1 THEN
  1076.                 ID
  1077.             ELSE
  1078.                 Nombre
  1079.             END
  1080.         LIKE '%' + @Consulta + '%'
  1081.     ORDER BY ID ASC
  1082. END
  1083.  
  1084. -- ================================================
  1085.  
  1086. GO
  1087.  
  1088. CREATE PROCEDURE ObtenerTiposEmpleados
  1089. AS
  1090. BEGIN
  1091.     SELECT * FROM vTiposEmpleados
  1092.     ORDER BY ID ASC
  1093. END
  1094.  
  1095. -- ================================================
  1096.  
  1097. GO
  1098.  
  1099. CREATE PROCEDURE NuevoTipoEmpleados
  1100.     @Nombre      varchar(50),
  1101.     @Descripcion varchar(100)
  1102. AS
  1103. BEGIN
  1104.     INSERT INTO TiposEmpleados(Nombre, Descripcion)
  1105.     VALUES(dbo.QuitarEspacios(@Nombre), dbo.QuitarEspacios(@Descripcion))
  1106. END
  1107.  
  1108. -- ================================================
  1109.  
  1110. GO
  1111.  
  1112. CREATE PROCEDURE ModificarTipoEmpleados
  1113.     @TipoEmpleadoID int,
  1114.     @Nombre         varchar(50),
  1115.     @Descripcion    varchar(100)
  1116. AS
  1117. BEGIN
  1118.     DECLARE @DescripcionActual varchar(100)
  1119.  
  1120.     SET @Nombre            = dbo.QuitarEspacios(@Nombre)
  1121.     SET @Descripcion       = dbo.QuitarEspacios(@Descripcion)
  1122.     SET @DescripcionActual = (SELECT Descripcion FROM TiposEmpleados WHERE TipoEmpleadoID = @TipoEmpleadoID)
  1123.  
  1124.     IF @Nombre != (SELECT Nombre FROM TiposEmpleados WHERE TipoEmpleadoID = @TipoEmpleadoID)
  1125.         UPDATE TiposEmpleados
  1126.         SET Nombre = @Nombre
  1127.         WHERE TipoEmpleadoID = @TipoEmpleadoID
  1128.  
  1129.     IF @Descripcion != @DescripcionActual OR @Descripcion IS NULL AND @DescripcionActual IS NOT NULL OR @DescripcionActual IS NULL AND @Descripcion IS NOT NULL
  1130.         UPDATE TiposEmpleados
  1131.         SET Descripcion = @Descripcion
  1132.         WHERE TipoEmpleadoID = @TipoEmpleadoID
  1133. END
  1134.  
  1135. -- ================================================
  1136.  
  1137. GO
  1138.  
  1139. CREATE PROCEDURE EliminarTipoEmpleados
  1140.     @TipoEmpleadoID int
  1141. AS
  1142. BEGIN
  1143.     DELETE FROM TiposEmpleados
  1144.     WHERE TipoEmpleadoID = @TipoEmpleadoID
  1145. END
  1146.  
  1147. -- ================================================
  1148.  
  1149. GO
  1150.  
  1151. CREATE PROCEDURE BuscarTiposEmpleados
  1152.     @Buscar   int,
  1153.     @Consulta varchar(50)
  1154. AS
  1155. BEGIN
  1156.     SELECT * FROM vTiposEmpleados
  1157.     WHERE
  1158.         CASE @Buscar
  1159.             WHEN 1 THEN
  1160.                 ID
  1161.             ELSE
  1162.                 Nombre
  1163.         END
  1164.         LIKE '%' + @Consulta + '%'
  1165.     ORDER BY ID ASC
  1166. END
  1167.  
  1168. -- ================================================
  1169.  
  1170. GO
  1171.  
  1172. CREATE PROCEDURE ObtenerEmpleados
  1173. AS
  1174. BEGIN
  1175.     SELECT * FROM vEmpleados
  1176.     ORDER BY ID ASC
  1177. END
  1178.  
  1179. -- ================================================
  1180.  
  1181. GO
  1182.  
  1183. CREATE PROCEDURE NuevoEmpleado
  1184.     @PrimerNombre      varchar(50),
  1185.     @SegundoNombre     varchar(50),
  1186.     @PrimerApellido    varchar(50),
  1187.     @SegundoApellido   varchar(50),
  1188.     @FechaNacimiento   varchar(10),
  1189.     @Sexo              char(1),
  1190.     @NumeroIdentidad   varchar(20),
  1191.     @Direccion         varchar(100),
  1192.     @Telefono          varchar(20),
  1193.     @CorreoElectronico varchar(50),
  1194.     @Tipo              varchar(50),
  1195.     @Cargo             varchar(50)
  1196. AS
  1197. BEGIN
  1198.     INSERT INTO Empleados(PrimerNombre, SegundoNombre, PrimerApellido, SegundoApellido, FechaNacimiento, Sexo, NumeroIdentidad,
  1199.         Direccion, Telefono, CorreoElectronico, TipoEmpleadoID, CargoID)
  1200.     VALUES(dbo.QuitarEspacios(@PrimerNombre), dbo.QuitarEspacios(@SegundoNombre), dbo.QuitarEspacios(@PrimerApellido), dbo.QuitarEspacios(@SegundoApellido), dbo.QuitarEspacios(@FechaNacimiento),
  1201.         dbo.QuitarEspacios(@Sexo), dbo.QuitarEspacios(@NumeroIdentidad), dbo.QuitarEspacios(@Direccion), dbo.QuitarEspacios(@Telefono), dbo.QuitarEspacios(@CorreoElectronico), (SELECT TipoEmpleadoID FROM TiposEmpleados WHERE Nombre = @Tipo), (SELECT CargoID FROM Cargos WHERE Nombre = @Cargo))
  1202. END
  1203.  
  1204. -- ================================================
  1205.  
  1206. GO
  1207.  
  1208. CREATE PROCEDURE ModificarEmpleado
  1209.     @EmpleadoID        int,
  1210.     @PrimerNombre      varchar(50),
  1211.     @SegundoNombre     varchar(50),
  1212.     @PrimerApellido    varchar(50),
  1213.     @SegundoApellido   varchar(50),
  1214.     @FechaNacimiento   varchar(10),
  1215.     @Sexo              char(1),
  1216.     @NumeroIdentidad   varchar(20),
  1217.     @Direccion         varchar(100),
  1218.     @Telefono          varchar(20),
  1219.     @CorreoElectronico varchar(50),
  1220.     @TipoEmpleadoID    int,
  1221.     @CargoID           int
  1222. AS
  1223. BEGIN
  1224.     DECLARE @CorreoElectronicoActual varchar(50)
  1225.  
  1226.     SET @PrimerNombre            = dbo.QuitarEspacios(@PrimerNombre)
  1227.     SET @SegundoNombre           = dbo.QuitarEspacios(@SegundoNombre)
  1228.     SET @PrimerApellido          = dbo.QuitarEspacios(@PrimerApellido)
  1229.     SET @SegundoApellido         = dbo.QuitarEspacios(@SegundoApellido)
  1230.     SET @Direccion               = dbo.QuitarEspacios(@Direccion)
  1231.     SET @Telefono                = dbo.QuitarEspacios(@Telefono)
  1232.     SET @CorreoElectronico       = dbo.QuitarEspacios(@CorreoElectronico)
  1233.     SET @CorreoElectronicoActual = (SELECT CorreoElectronico FROM Empleados WHERE EmpleadoID = @EmpleadoID)
  1234.  
  1235.     IF @PrimerNombre != (SELECT PrimerNombre FROM Empleados WHERE EmpleadoID = @EmpleadoID)
  1236.         UPDATE Empleados
  1237.         SET PrimerNombre = @PrimerNombre
  1238.         WHERE EmpleadoID = @EmpleadoID
  1239.  
  1240.     IF @SegundoNombre != (SELECT SegundoNombre FROM Empleados WHERE EmpleadoID = @EmpleadoID)
  1241.         UPDATE Empleados
  1242.         SET SegundoNombre = @SegundoNombre
  1243.         WHERE EmpleadoID = @EmpleadoID
  1244.  
  1245.     IF @PrimerApellido != (SELECT PrimerApellido FROM Empleados WHERE EmpleadoID = @EmpleadoID)
  1246.         UPDATE Empleados
  1247.         SET PrimerApellido = @PrimerApellido
  1248.         WHERE EmpleadoID = @EmpleadoID
  1249.  
  1250.     IF @SegundoApellido != (SELECT SegundoApellido FROM Empleados WHERE EmpleadoID = @EmpleadoID)
  1251.         UPDATE Empleados
  1252.         SET SegundoApellido = @SegundoApellido
  1253.         WHERE EmpleadoID = @EmpleadoID
  1254.  
  1255.     IF @FechaNacimiento != (SELECT FechaNacimiento FROM Empleados WHERE EmpleadoID = @EmpleadoID)
  1256.         UPDATE Empleados
  1257.         SET FechaNacimiento = @FechaNacimiento
  1258.         WHERE EmpleadoID = @EmpleadoID
  1259.  
  1260.     IF @Sexo != (SELECT Sexo FROM Empleados WHERE EmpleadoID = @EmpleadoID)
  1261.         UPDATE Empleados
  1262.         SET Sexo = @Sexo
  1263.         WHERE EmpleadoID = @EmpleadoID
  1264.  
  1265.     IF @NumeroIdentidad != (SELECT NumeroIdentidad FROM Empleados WHERE EmpleadoID = @EmpleadoID)
  1266.         UPDATE Empleados
  1267.         SET NumeroIdentidad = @NumeroIdentidad
  1268.         WHERE EmpleadoID = @EmpleadoID
  1269.  
  1270.     IF @Direccion != (SELECT Direccion FROM Empleados WHERE EmpleadoID = @EmpleadoID)
  1271.         UPDATE Empleados
  1272.         SET Direccion = @Direccion
  1273.         WHERE EmpleadoID = @EmpleadoID
  1274.  
  1275.     IF @Telefono != (SELECT Telefono FROM Empleados WHERE EmpleadoID = @EmpleadoID)
  1276.         UPDATE Empleados
  1277.         SET Telefono = @Telefono
  1278.         WHERE EmpleadoID = @EmpleadoID
  1279.  
  1280.     IF @CorreoElectronico != @CorreoElectronicoActual OR @CorreoElectronico IS NULL AND @CorreoElectronicoActual IS NOT NULL OR @CorreoElectronicoActual IS NULL AND @CorreoElectronico IS NOT NULL
  1281.         UPDATE Empleados
  1282.         SET CorreoElectronico = @CorreoElectronico
  1283.         WHERE EmpleadoID = @EmpleadoID
  1284.  
  1285.     IF @TipoEmpleadoID != (SELECT TipoEmpleadoID FROM Empleados WHERE EmpleadoID = @EmpleadoID)
  1286.         UPDATE Empleados
  1287.         SET TipoEmpleadoID = @TipoEmpleadoID
  1288.         WHERE EmpleadoID = @EmpleadoID
  1289.  
  1290.     IF @CargoID != (SELECT CargoID FROM Empleados WHERE EmpleadoID = @EmpleadoID)
  1291.         UPDATE Empleados
  1292.         SET CargoID = @CargoID
  1293.         WHERE EmpleadoID = @EmpleadoID
  1294. END
  1295.  
  1296. -- ================================================
  1297.  
  1298. GO
  1299.  
  1300. CREATE PROCEDURE EliminarEmpleado
  1301.     @EmpleadoID int
  1302. AS
  1303. BEGIN
  1304.     DELETE FROM Empleados
  1305.     WHERE EmpleadoID = @EmpleadoID
  1306. END
  1307.  
  1308. -- ================================================
  1309.  
  1310. GO
  1311.  
  1312. CREATE PROCEDURE BuscarEmpleados
  1313.     @Buscar   int,
  1314.     @Consulta varchar(50)
  1315. AS
  1316. BEGIN
  1317.     SELECT * FROM vEmpleados
  1318.     WHERE
  1319.         CASE @Buscar
  1320.             WHEN 1 THEN
  1321.                 ID
  1322.             WHEN 2 THEN
  1323.                 [Primer nombre] + ' ' + [Primer apellido]
  1324.             WHEN 3 THEN
  1325.                 Tipo
  1326.             ELSE
  1327.                 Cargo
  1328.         END
  1329.         LIKE '%' + @Consulta + '%'
  1330.     ORDER BY ID ASC
  1331. END
  1332.  
  1333. -- ================================================
  1334.  
  1335. GO
  1336.  
  1337. CREATE PROCEDURE ObtenerUsuarios
  1338. AS
  1339. BEGIN
  1340.     SELECT * FROM vUsuarios
  1341.     ORDER BY ID ASC
  1342. END
  1343.  
  1344. -- ================================================
  1345.  
  1346. GO
  1347.  
  1348. CREATE PROCEDURE NuevoUsuario
  1349.     @Nombre   varchar(50),
  1350.     @Acceso   varchar(50),
  1351.     @Empleado varchar(50)
  1352. AS
  1353. BEGIN
  1354.     INSERT INTO Usuarios(Nombre, Contrasena, AccesoID, EmpleadoID)
  1355.     VALUES(dbo.QuitarEspacios(@Nombre), PWDENCRYPT('1234'), (SELECT AccesoID FROM Accesos WHERE Nombre = dbo.QuitarEspacios(@Acceso)), (SELECT EmpleadoID FROM Empleados WHERE PrimerNombre = dbo.QuitarEspacios(@Empleado)))
  1356. END
  1357.  
  1358. -- ================================================
  1359.  
  1360. GO
  1361.  
  1362. CREATE PROCEDURE ModificarUsuario
  1363.     @UsuarioID  int,
  1364.     @Nombre     varchar(50),
  1365.     @Acceso     varchar(50),
  1366.     @Empleado   varchar(50)
  1367. AS
  1368. BEGIN
  1369.     SET @Nombre = dbo.QuitarEspacios(@Nombre)
  1370.  
  1371.     IF @Nombre != (SELECT Nombre FROM Usuarios WHERE UsuarioID = @UsuarioID)
  1372.         UPDATE Usuarios
  1373.         SET Nombre = @Nombre
  1374.         WHERE UsuarioID = @UsuarioID
  1375.  
  1376.     IF @Acceso != (SELECT Nombre FROM Accesos WHERE AccesoID = (SELECT AccesoID FROM Usuarios WHERE UsuarioID = @UsuarioID))
  1377.         UPDATE Usuarios
  1378.         SET AccesoID = (SELECT AccesoID FROM Accesos WHERE Nombre = @Acceso)
  1379.         WHERE UsuarioID = @UsuarioID
  1380.  
  1381.     IF @Empleado != (SELECT PrimerNombre FROM Empleados WHERE EmpleadoID = (SELECT EmpleadoID FROM Usuarios WHERE UsuarioID = @UsuarioID))
  1382.         UPDATE Usuarios
  1383.         SET EmpleadoID = (SELECT EmpleadoID FROM Empleados WHERE PrimerNombre = @Empleado)
  1384.         WHERE UsuarioID = @UsuarioID
  1385. END
  1386.  
  1387. -- ================================================
  1388.  
  1389. GO
  1390.  
  1391. CREATE PROCEDURE EliminarUsuario
  1392.     @UsuarioID int
  1393. AS
  1394. BEGIN
  1395.     DELETE FROM Usuarios
  1396.     WHERE UsuarioID = @UsuarioID
  1397. END
  1398.  
  1399. -- ================================================
  1400.  
  1401. GO
  1402.  
  1403. CREATE PROCEDURE BuscarUsuarios
  1404.     @Buscar   int,
  1405.     @Consulta varchar(50)
  1406. AS
  1407. BEGIN
  1408.     SELECT * FROM vUsuarios
  1409.     WHERE
  1410.         CASE @Buscar
  1411.             WHEN 1 THEN
  1412.                 ID
  1413.             WHEN 2 THEN
  1414.                 Nombre
  1415.             WHEN 3 THEN
  1416.                 Acceso
  1417.             ELSE
  1418.                 Empleado
  1419.         END
  1420.         LIKE '%' + @Consulta + '%'
  1421.     ORDER BY ID ASC
  1422. END
  1423.  
  1424. -- ================================================
  1425.  
  1426. GO
  1427.  
  1428. CREATE PROCEDURE ObtenerCajas
  1429. AS
  1430. BEGIN
  1431.     SELECT * FROM vCajas
  1432.     ORDER BY ID ASC
  1433. END
  1434.  
  1435. -- ================================================
  1436.  
  1437. GO
  1438.  
  1439. CREATE PROCEDURE NuevaCaja
  1440.     @Nombre   varchar(50),
  1441.     @Empleado varchar(50)
  1442. AS
  1443. BEGIN
  1444.     INSERT INTO Cajas(Nombre, EmpleadoID)
  1445.     VALUES(dbo.QuitarEspacios(@Nombre), (SELECT EmpleadoID FROM Empleados WHERE PrimerNombre = dbo.QuitarEspacios(@Empleado)))
  1446. END
  1447.  
  1448. -- ================================================
  1449.  
  1450. GO
  1451.  
  1452. CREATE PROCEDURE ModificarCaja
  1453.     @CajaID   int,
  1454.     @Nombre   varchar(50),
  1455.     @Empleado varchar(50)
  1456. AS
  1457. BEGIN
  1458.     SET @Nombre = dbo.QuitarEspacios(@Nombre)
  1459.  
  1460.     IF @Nombre != (SELECT Nombre FROM Cajas WHERE CajaID = @CajaID)
  1461.         UPDATE Cajas
  1462.         SET Nombre = @Nombre
  1463.         WHERE CajaID = @CajaID
  1464.  
  1465.     IF @Empleado != (SELECT PrimerNombre FROM Empleados WHERE EmpleadoID = (SELECT EmpleadoID FROM Cajas WHERE CajaID = @CajaID))
  1466.         UPDATE Cajas
  1467.         SET EmpleadoID = (SELECT EmpleadoID FROM Empleados WHERE PrimerNombre = @Empleado)
  1468.         WHERE CajaID = @CajaID
  1469. END
  1470.  
  1471. -- ================================================
  1472.  
  1473. GO
  1474.  
  1475. CREATE PROCEDURE EliminarCaja
  1476.     @CajaID int
  1477. AS
  1478. BEGIN
  1479.     DELETE FROM Cajas
  1480.     WHERE CajaID = @CajaID
  1481. END
  1482.  
  1483. -- ================================================
  1484.  
  1485. GO
  1486.  
  1487. CREATE PROCEDURE BuscarCajas
  1488.     @Buscar   int,
  1489.     @Consulta varchar(50)
  1490. AS
  1491. BEGIN
  1492.     SELECT * FROM vCajas
  1493.     WHERE
  1494.         CASE @Buscar
  1495.             WHEN 1 THEN
  1496.                 ID
  1497.             WHEN 2 THEN
  1498.                 Nombre
  1499.             ELSE
  1500.                 Empleado
  1501.         END
  1502.         LIKE '%' + @Consulta + '%'
  1503.     ORDER BY ID ASC
  1504. END
  1505.  
  1506. -- ================================================
  1507.  
  1508. GO
  1509.  
  1510. CREATE PROCEDURE ObtenerAlmacenes
  1511. AS
  1512. BEGIN
  1513.     SELECT * FROM vAlmacenes
  1514.     ORDER BY ID ASC
  1515. END
  1516.  
  1517. -- ================================================
  1518.  
  1519. GO
  1520.  
  1521. CREATE PROCEDURE NuevoAlmacen
  1522.     @Nombre    varchar(50),
  1523.     @Direccion varchar(100)
  1524. AS
  1525. BEGIN
  1526.     INSERT INTO Almacenes(Nombre, Direccion)
  1527.     VALUES(dbo.QuitarEspacios(@Nombre), dbo.QuitarEspacios(@Direccion))
  1528. END
  1529.  
  1530. -- ================================================
  1531.  
  1532. GO
  1533.  
  1534. CREATE PROCEDURE ModificarAlmacen
  1535.     @AlmacenID int,
  1536.     @Nombre    varchar(50),
  1537.     @Direccion varchar(100)
  1538. AS
  1539. BEGIN
  1540.     SET @Nombre    = dbo.QuitarEspacios(@Nombre)
  1541.     SET @Direccion = dbo.QuitarEspacios(@Direccion)
  1542.  
  1543.     IF @Nombre != (SELECT Nombre FROM Almacenes WHERE AlmacenID = @AlmacenID)
  1544.         UPDATE Almacenes
  1545.         SET Nombre = @Nombre
  1546.         WHERE AlmacenID = @AlmacenID
  1547.  
  1548.     IF @Direccion != (SELECT Direccion FROM Almacenes WHERE AlmacenID = @AlmacenID)
  1549.         UPDATE Almacenes
  1550.         SET Direccion = @Direccion
  1551.         WHERE AlmacenID = @AlmacenID
  1552. END
  1553.  
  1554. -- ================================================
  1555.  
  1556. GO
  1557.  
  1558. CREATE PROCEDURE EliminarAlmacen
  1559.     @AlmacenID int
  1560. AS
  1561. BEGIN
  1562.     DELETE FROM Almacenes
  1563.     WHERE AlmacenID = @AlmacenID
  1564. END
  1565.  
  1566. -- ================================================
  1567.  
  1568. GO
  1569.  
  1570. CREATE PROCEDURE BuscarAlmacenes
  1571.     @Buscar   int,
  1572.     @Consulta varchar(50)
  1573. AS
  1574. BEGIN
  1575.     SELECT * FROM vAlmacenes
  1576.     WHERE
  1577.         CASE @Buscar
  1578.             WHEN 1 THEN
  1579.                 ID
  1580.             ELSE
  1581.                 Nombre
  1582.         END
  1583.         LIKE '%' + @Consulta + '%'
  1584.     ORDER BY ID ASC
  1585. END
  1586.  
  1587. -- ================================================
  1588.  
  1589. GO
  1590.  
  1591. CREATE PROCEDURE ObtenerProveedores
  1592. AS
  1593. BEGIN
  1594.     SELECT * FROM vProveedores
  1595.     ORDER BY ID ASC
  1596. END
  1597.  
  1598. -- ================================================
  1599.  
  1600. GO
  1601.  
  1602. CREATE PROCEDURE NuevoProveedor
  1603.     @Nombre    varchar(50),
  1604.     @Direccion varchar(100),
  1605.     @Telefono  varchar(20)
  1606. AS
  1607. BEGIN
  1608.     INSERT INTO Proveedores(Nombre, Direccion, Telefono)
  1609.     VALUES(dbo.QuitarEspacios(@Nombre), dbo.QuitarEspacios(@Direccion), dbo.QuitarEspacios(@Telefono))
  1610. END
  1611.  
  1612. -- ================================================
  1613.  
  1614. GO
  1615.  
  1616. CREATE PROCEDURE ModificarProveedor
  1617.     @ProveedorID int,
  1618.     @Nombre      varchar(50),
  1619.     @Direccion   varchar(100),
  1620.     @Telefono    varchar(20)
  1621. AS
  1622. BEGIN
  1623.     SET @Nombre    = dbo.QuitarEspacios(@Nombre)
  1624.     SET @Direccion = dbo.QuitarEspacios(@Direccion)
  1625.     SET @Telefono  = dbo.QuitarEspacios(@Telefono)
  1626.  
  1627.     IF @Nombre != (SELECT Nombre FROM Proveedores WHERE ProveedorID = @ProveedorID)
  1628.         UPDATE Proveedores
  1629.         SET Nombre = @Nombre
  1630.         WHERE ProveedorID = @ProveedorID
  1631.  
  1632.     IF @Direccion != (SELECT Nombre FROM Proveedores WHERE ProveedorID = @ProveedorID)
  1633.         UPDATE Proveedores
  1634.         SET Direccion = @Direccion
  1635.         WHERE ProveedorID = @ProveedorID
  1636.  
  1637.     IF @Telefono != (SELECT Telefono FROM Proveedores WHERE ProveedorID = @ProveedorID)
  1638.         UPDATE Proveedores
  1639.         SET Telefono = @Telefono
  1640.         WHERE ProveedorID = @ProveedorID
  1641. END
  1642.  
  1643. -- ================================================
  1644.  
  1645. GO
  1646.  
  1647. CREATE PROCEDURE EliminarProveedor
  1648.     @ProveedorID int
  1649. AS
  1650. BEGIN
  1651.     DELETE FROM Proveedores
  1652.     WHERE ProveedorID = @ProveedorID
  1653. END
  1654.  
  1655. -- ================================================
  1656.  
  1657. GO
  1658.  
  1659. CREATE PROCEDURE BuscarProveedores
  1660.     @Buscar   int,
  1661.     @Consulta varchar(50)
  1662. AS
  1663. BEGIN
  1664.     SELECT * FROM vProveedores
  1665.     WHERE
  1666.         CASE @Buscar
  1667.             WHEN 1 THEN
  1668.                 ID
  1669.             ELSE
  1670.                 Nombre
  1671.         END
  1672.         LIKE '%' + @Consulta + '%'
  1673.     ORDER BY ID ASC
  1674. END
  1675.  
  1676. -- ================================================
  1677.  
  1678. GO
  1679.  
  1680. CREATE PROCEDURE ObtenerCategorias
  1681. AS
  1682. BEGIN
  1683.     SELECT * FROM vCategorias
  1684.     ORDER BY ID ASC
  1685. END
  1686.  
  1687. -- ================================================
  1688.  
  1689. GO
  1690.  
  1691. CREATE PROCEDURE NuevaCategoria
  1692.     @Nombre      varchar(50),
  1693.     @Descripcion varchar(100)
  1694. AS
  1695. BEGIN
  1696.     INSERT INTO Categorias(Nombre, Descripcion)
  1697.     VALUES(dbo.QuitarEspacios(@Nombre), dbo.QuitarEspacios(@Descripcion))
  1698. END
  1699.  
  1700. -- ================================================
  1701.  
  1702. GO
  1703.  
  1704. CREATE PROCEDURE ModificarCategoria
  1705.     @CategoriaID int,
  1706.     @Nombre      varchar(50),
  1707.     @Descripcion varchar(100)
  1708. AS
  1709. BEGIN
  1710.     DECLARE @DescripcionActual varchar(100)
  1711.  
  1712.     SET @Nombre            = dbo.QuitarEspacios(@Nombre)
  1713.     SET @Descripcion       = dbo.QuitarEspacios(@Descripcion)
  1714.     SET @DescripcionActual = (SELECT Descripcion FROM Categorias WHERE CategoriaID = @CategoriaID)
  1715.  
  1716.     IF @Nombre != (SELECT Nombre FROM Categorias WHERE CategoriaID = @CategoriaID)
  1717.         UPDATE Categorias
  1718.         SET Nombre = @Nombre
  1719.         WHERE CategoriaID = @CategoriaID
  1720.  
  1721.     IF @Descripcion != @DescripcionActual OR @Descripcion IS NULL AND @DescripcionActual IS NOT NULL OR @DescripcionActual IS NULL AND @Descripcion IS NOT NULL
  1722.         UPDATE Categorias
  1723.         SET Descripcion = @Descripcion
  1724.         WHERE CategoriaID = @CategoriaID
  1725. END
  1726.  
  1727. -- ================================================
  1728.  
  1729. GO
  1730.  
  1731. CREATE PROCEDURE EliminarCategoria
  1732.     @CategoriaID int
  1733. AS
  1734. BEGIN
  1735.     DELETE FROM Categorias
  1736.     WHERE CategoriaID = @CategoriaID
  1737. END
  1738.  
  1739. -- ================================================
  1740.  
  1741. GO
  1742.  
  1743. CREATE PROCEDURE BuscarCategorias
  1744.     @Buscar   int,
  1745.     @Consulta varchar(50)
  1746. AS
  1747. BEGIN
  1748.     SELECT * FROM vCategorias
  1749.     WHERE
  1750.         CASE @Buscar
  1751.             WHEN 1 THEN
  1752.                 ID
  1753.             ELSE
  1754.                 Nombre
  1755.         END
  1756.         LIKE '%' + @Consulta + '%'
  1757.     ORDER BY ID ASC
  1758. END
  1759.  
  1760. -- ================================================
  1761.  
  1762. GO
  1763.  
  1764. CREATE PROCEDURE ObtenerProductos
  1765. AS
  1766. BEGIN
  1767.     SELECT * FROM vProductos
  1768.     ORDER BY ID ASC
  1769. END
  1770.  
  1771. -- ================================================
  1772.  
  1773. GO
  1774.  
  1775. CREATE PROCEDURE NuevoProducto
  1776.     @Nombre      varchar(50),
  1777.     @Proveedor   varchar(50),
  1778.     @Categoria   varchar(50),
  1779.     @Descripcion varchar(100)
  1780. AS
  1781. BEGIN
  1782.     INSERT INTO Productos(Nombre, ProveedorID, CategoriaID, Descripcion)
  1783.     VALUES(dbo.QuitarEspacios(@Nombre), (SELECT ProveedorID FROM Proveedores WHERE Nombre = dbo.QuitarEspacios(@Proveedor)), (SELECT CategoriaID FROM Categorias WHERE Nombre = dbo.QuitarEspacios(@Categoria)), dbo.QuitarEspacios(@Descripcion))
  1784. END
  1785.  
  1786. -- ================================================
  1787.  
  1788. GO
  1789.  
  1790. CREATE PROCEDURE ModificarProducto
  1791.     @ProductoID  int,
  1792.     @Nombre      varchar(50),
  1793.     @Proveedor   varchar(50),
  1794.     @Categoria   varchar(50),
  1795.     @Descripcion varchar(100)
  1796. AS
  1797. BEGIN
  1798.     DECLARE @DescripcionActual varchar(100)
  1799.  
  1800.     SET @Nombre            = dbo.QuitarEspacios(@Nombre)
  1801.     SET @Proveedor         = dbo.QuitarEspacios(@Proveedor)
  1802.     SET @Categoria         = dbo.QuitarEspacios(@Categoria)
  1803.     SET @Descripcion       = dbo.QuitarEspacios(@Descripcion)
  1804.     SET @DescripcionActual = (SELECT Descripcion FROM Productos WHERE ProductoID = @ProductoID)
  1805.  
  1806.     IF @Nombre != (SELECT Nombre FROM Productos WHERE ProductoID = @ProductoID)
  1807.         UPDATE Productos
  1808.         SET Nombre = @Nombre
  1809.         WHERE ProductoID = @ProductoID
  1810.  
  1811.     IF @Proveedor != (SELECT Nombre FROM Proveedores WHERE ProveedorID = (SELECT ProveedorID FROM Productos WHERE ProductoID = @ProductoID))
  1812.         UPDATE Productos
  1813.         SET ProveedorID = (SELECT ProveedorID FROM Proveedores WHERE Nombre = @Proveedor)
  1814.         WHERE ProductoID = @ProductoID
  1815.  
  1816.     IF @Categoria != (SELECT Nombre FROM Categorias WHERE CategoriaID = (SELECT CategoriaID FROM Productos WHERE ProductoID = @ProductoID))
  1817.         UPDATE Productos
  1818.         SET CategoriaID = (SELECT CategoriaID FROM Categorias WHERE Nombre = @Categoria)
  1819.         WHERE ProductoID = @ProductoID
  1820.  
  1821.     IF @Descripcion != @DescripcionActual OR @Descripcion IS NULL AND @DescripcionActual IS NOT NULL OR @DescripcionActual IS NULL AND @Descripcion IS NOT NULL
  1822.         UPDATE Productos
  1823.         SET Descripcion = @Descripcion
  1824.         WHERE ProductoID = @ProductoID
  1825. END
  1826.  
  1827. -- ================================================
  1828.  
  1829. GO
  1830.  
  1831. CREATE PROCEDURE EliminarProducto
  1832.     @ProductoID int
  1833. AS
  1834. BEGIN
  1835.     DELETE FROM Productos
  1836.     WHERE ProductoID = @ProductoID
  1837. END
  1838.  
  1839. -- ================================================
  1840.  
  1841. GO
  1842.  
  1843. CREATE PROCEDURE BuscarProductos
  1844.     @Buscar   int,
  1845.     @Consulta varchar(50)
  1846. AS
  1847. BEGIN
  1848.     SELECT * FROM vProductos
  1849.     WHERE
  1850.         CASE @Buscar
  1851.             WHEN 1 THEN
  1852.                 ID
  1853.             WHEN 2 THEN
  1854.                 Nombre
  1855.             WHEN 3 THEN
  1856.                 Categoría
  1857.             ELSE
  1858.                 Proveedor
  1859.         END
  1860.         LIKE '%' + @Consulta + '%'
  1861.     ORDER BY ID ASC
  1862. END
  1863.  
  1864. -- ================================================
  1865.  
  1866. GO
  1867.  
  1868. CREATE PROCEDURE ObtenerInventario
  1869. AS
  1870. BEGIN
  1871.     SELECT * FROM vInventario
  1872.     ORDER BY Almacén ASC
  1873. END
  1874.  
  1875. -- ================================================
  1876.  
  1877. GO
  1878.  
  1879. CREATE PROCEDURE NuevoInventario
  1880.     @AlmacenID  int,
  1881.     @ProductoID int,
  1882.     @Precio     decimal(9, 4),
  1883.     @Existencia int
  1884. AS
  1885. BEGIN
  1886.     INSERT INTO Inventario(AlmacenID, ProductoID, Precio, Existencia)
  1887.     VALUES(@AlmacenID, @ProductoID, @Precio, @Existencia)
  1888. END
  1889.  
  1890. -- ================================================
  1891.  
  1892. GO
  1893.  
  1894. CREATE PROCEDURE ModificarInventario
  1895.     @AlmacenID  int,
  1896.     @ProductoID int,
  1897.     @Precio     decimal(9, 4)
  1898. AS
  1899. BEGIN
  1900.     IF @Precio != (SELECT Precio FROM Inventario WHERE AlmacenID = @AlmacenID AND ProductoID = @ProductoID)
  1901.         UPDATE Inventario
  1902.         SET Precio = @Precio
  1903.         WHERE ProductoID = @ProductoID
  1904. END
  1905.  
  1906. -- ================================================
  1907.  
  1908. GO
  1909.  
  1910. CREATE PROCEDURE EliminarInventario
  1911.     @AlmacenID  int,
  1912.     @ProductoID int
  1913. AS
  1914. BEGIN
  1915.     DELETE FROM Inventario
  1916.     WHERE AlmacenID = @AlmacenID AND ProductoID = @ProductoID
  1917. END
  1918.  
  1919. -- ================================================
  1920.  
  1921. GO
  1922.  
  1923. CREATE PROCEDURE BuscarInventario
  1924.     @Buscar   int,
  1925.     @Consulta varchar(50)
  1926. AS
  1927. BEGIN
  1928.     SELECT * FROM vInventario
  1929.     WHERE
  1930.         CASE @Buscar
  1931.             WHEN 1 THEN
  1932.                 Almacén
  1933.             ELSE
  1934.                 Producto
  1935.         END
  1936.         LIKE '%' + @Consulta + '%'
  1937.     ORDER BY Almacén ASC
  1938. END
  1939.  
  1940. -- ================================================
  1941.  
  1942. GO
  1943.  
  1944. CREATE PROCEDURE ObtenerOrdenesCompras
  1945. AS
  1946. BEGIN
  1947.     SELECT * FROM vOrdenesCompras
  1948.     ORDER BY ID ASC
  1949. END
  1950.  
  1951. -- ================================================
  1952.  
  1953. GO
  1954.  
  1955. CREATE PROCEDURE NuevaOrdenCompra
  1956.     @Almacen    varchar(50),
  1957.     @Proveedor  varchar(50),
  1958.     @Producto   varchar(50),
  1959.     @Costo      decimal(9, 2),
  1960.     @Precio     decimal(9, 2),
  1961.     @Impuesto   int,
  1962.     @Solicitado int,
  1963.     @Recibido   int
  1964. AS
  1965. BEGIN
  1966.     DECLARE @OrdenCompraID int
  1967.     DECLARE @AlmacenID     int
  1968.     DECLARE @ProveedorID   int
  1969.     DECLARE @ProductoID    int
  1970.     DECLARE @Fecha         date
  1971.  
  1972.     SET @AlmacenID   = (SELECT AlmacenID FROM Almacenes WHERE Nombre = @Almacen)
  1973.     SET @ProveedorID = (SELECT ProveedorID FROM Proveedores WHERE Nombre = @Proveedor)
  1974.     SET @ProductoID  = (SELECT ProductoID FROM Productos WHERE Nombre = @Producto)
  1975.     SET @Fecha       = CONVERT(date, GETDATE())
  1976.  
  1977.     IF (@Costo > 0 AND @Solicitado > 0)
  1978.         IF EXISTS(SELECT 1 FROM OrdenesCompras WHERE AlmacenID = @AlmacenID AND ProveedorID = @ProveedorID AND Fecha = @Fecha)
  1979.             SET @OrdenCompraID = (SELECT OrdenCompraID FROM OrdenesCompras WHERE AlmacenID = @AlmacenID AND ProveedorID = @ProveedorID AND Fecha = @Fecha)
  1980.         ELSE
  1981.             BEGIN
  1982.                 INSERT INTO OrdenesCompras
  1983.                 VALUES(@AlmacenID, @ProveedorID, @Fecha)
  1984.  
  1985.                 SET @OrdenCompraID = (SELECT OrdenCompraID FROM OrdenesCompras WHERE AlmacenID = @AlmacenID AND ProveedorID = @ProveedorID AND Fecha = @Fecha)
  1986.             END
  1987.  
  1988.         INSERT INTO DetalleOrdenesCompras(OrdenCompraID, Hora, ProductoID, Costo, Impuesto, Solicitado, Recibido)
  1989.         VALUES(@OrdenCompraID, CONVERT(time, GETDATE()), @ProductoID, @Costo, @Impuesto, @Solicitado, @Recibido)
  1990.  
  1991.         IF EXISTS(SELECT 1 FROM Inventario WHERE AlmacenID = @AlmacenID AND ProductoID = @ProductoID)
  1992.             UPDATE Inventario
  1993.             SET Precio      = @Precio,
  1994.                 Existencia  = Existencia + @Recibido
  1995.             WHERE AlmacenID = @AlmacenID AND ProductoID = @ProductoID
  1996.         ELSE
  1997.             INSERT INTO Inventario(AlmacenID, ProductoID, Precio, Existencia)
  1998.             VALUES(@AlmacenID, @ProductoID, @Precio, @Recibido)
  1999. END
  2000.  
  2001. -- ================================================
  2002.  
  2003. GO
  2004.  
  2005. CREATE PROCEDURE EliminarOrdenCompra
  2006.     @OrdenCompraID int
  2007. AS
  2008. BEGIN
  2009.     IF EXISTS(SELECT 1 FROM DevolucionesCompras WHERE OrdenCompraID = @OrdenCompraID)
  2010.         BEGIN
  2011.             DELETE FROM DetalleDevolucionesCompras
  2012.             WHERE DevolucionCompraID = (SELECT DevolucionCompraID FROM DevolucionesCompras WHERE OrdenCompraID = @OrdenCompraID)
  2013.            
  2014.             DELETE FROM DevolucionesCompras
  2015.             WHERE OrdenCompraID = @OrdenCompraID
  2016.         END
  2017.  
  2018.     DELETE FROM DetalleOrdenesCompras
  2019.     WHERE OrdenCompraID = @OrdenCompraID
  2020.  
  2021.     DELETE FROM OrdenesCompras
  2022.     WHERE OrdenCompraID = @OrdenCompraID
  2023. END
  2024.  
  2025. -- ================================================
  2026.  
  2027. GO
  2028.  
  2029. CREATE PROCEDURE BuscarOrdenesCompras
  2030.     @Buscar   int,
  2031.     @Consulta varchar(50)
  2032. AS
  2033. BEGIN
  2034.     SELECT * FROM vOrdenesCompras
  2035.     WHERE
  2036.         CASE @Buscar
  2037.             WHEN 1 THEN
  2038.                 ID
  2039.             WHEN 2 THEN
  2040.                 Almacén
  2041.             WHEN 3 THEN
  2042.                 Proveedor
  2043.             ELSE
  2044.                 Fecha
  2045.         END
  2046.         LIKE '%' + @Consulta + '%'
  2047.     ORDER BY ID ASC
  2048. END
  2049.  
  2050. -- ================================================
  2051.  
  2052. GO
  2053.  
  2054. CREATE PROCEDURE ObtenerDetalleOrdenCompra
  2055.     @OrdenCompraID int
  2056. AS
  2057. BEGIN
  2058.     SELECT dbo.FormatoHora(d.Hora)                            'Hora',
  2059.            r.Nombre                                           'Producto',
  2060.            d.Costo                                            'Costo',
  2061.            CONVERT(varchar, d.Impuesto) + '%'                 'Impuesto',
  2062.            d.Solicitado                                       'Solicitado',
  2063.            d.Recibido                                         'Recibido',
  2064.            dbo.ObtenerTotal(d.Costo * d.Recibido, d.Impuesto) 'Total'
  2065.     FROM OrdenesCompras o WITH (NOLOCK)
  2066.         INNER JOIN Almacenes a WITH (NOLOCK)
  2067.             ON o.AlmacenID = a.AlmacenID
  2068.         INNER JOIN Proveedores p WITH (NOLOCK)
  2069.             ON o.ProveedorID = p.ProveedorID
  2070.         INNER JOIN DetalleOrdenesCompras d WITH (NOLOCK)
  2071.             ON o.OrdenCompraID = d.OrdenCompraID
  2072.         INNER JOIN Productos r WITH (NOLOCK)
  2073.             ON d.ProductoID = r.ProductoID
  2074.     WHERE o.OrdenCompraID = @OrdenCompraID
  2075.     ORDER BY o.Fecha ASC
  2076. END
  2077.  
  2078. -- ================================================
  2079.  
  2080. GO
  2081.  
  2082. CREATE PROCEDURE ObtenerDevolucionesCompras
  2083. AS
  2084. BEGIN
  2085.     SELECT * FROM vDevolucionesCompras
  2086.     ORDER BY Fecha ASC
  2087. END
  2088.  
  2089. -- ================================================
  2090.  
  2091. GO
  2092.  
  2093. CREATE PROCEDURE NuevaDevolucionCompra
  2094.     @OrdenCompraID int,
  2095.     @Cantidad      int
  2096. AS
  2097. BEGIN
  2098.     DECLARE @Fecha      date
  2099.     DECLARE @Existencia int
  2100.    
  2101.     SET @Fecha       = CONVERT(date, GETDATE())
  2102.     SET @Existencia  = (SELECT Recibido FROM DetalleOrdenesCompras WHERE OrdenCompraID = @OrdenCompraID)
  2103.  
  2104.     IF (DATEDIFF(DAY, @Fecha, DATEADD(WEEK, 3, (SELECT Fecha FROM OrdenesCompras WHERE OrdenCompraID = @OrdenCompraID))) > 21 AND @Cantidad > 0 AND @Cantidad <= @Existencia)
  2105.         DECLARE @DevolucionCompraID int
  2106.         DECLARE @AlmacenID  int
  2107.         DECLARE @ProductoID int
  2108.  
  2109.         SET @AlmacenID  = (SELECT AlmacenID FROM OrdenesCompras WHERE OrdenCompraID = @OrdenCompraID)
  2110.         SET @ProductoID = (SELECT ProductoID FROM DetalleOrdenesCompras WHERE OrdenCompraID = @OrdenCompraID)
  2111.  
  2112.         IF EXISTS(SELECT 1 FROM DevolucionesCompras WHERE OrdenCompraID = @OrdenCompraID AND Fecha = @Fecha)
  2113.             SET @DevolucionCompraID = (SELECT DevolucionCompraID FROM DevolucionesCompras WHERE OrdenCompraID = @OrdenCompraID)
  2114.         ELSE
  2115.             BEGIN
  2116.                 INSERT INTO DevolucionesCompras(OrdenCompraID, Fecha)
  2117.                 VALUES(@OrdenCompraID, @Fecha)
  2118.  
  2119.                 SET @DevolucionCompraID = (SELECT MAX(DevolucionCompraID) FROM DevolucionesCompras)
  2120.             END
  2121.  
  2122.         INSERT INTO DetalleDevolucionesCompras(DevolucionCompraID, Hora, Cantidad)
  2123.         VALUES(@DevolucionCompraID, CONVERT(time, GETDATE()), @Cantidad)
  2124.  
  2125.         UPDATE Inventario
  2126.         SET Existencia = Existencia - @Cantidad
  2127.         WHERE AlmacenID = @AlmacenID AND ProductoID = @ProductoID
  2128. END
  2129.  
  2130. -- ================================================
  2131.  
  2132. GO
  2133.  
  2134. CREATE PROCEDURE EliminarDevolucionCompra
  2135.     @OrdenCompraID int
  2136. AS
  2137. BEGIN
  2138.     DELETE FROM DetalleDevolucionesCompras
  2139.     WHERE DevolucionCompraID = (SELECT DevolucionCompraID FROM DevolucionesCompras WHERE OrdenCompraID = @OrdenCompraID)
  2140.  
  2141.     DELETE FROM DevolucionesCompras
  2142.     WHERE OrdenCompraID = @OrdenCompraID
  2143. END
  2144.  
  2145. -- ================================================
  2146.  
  2147. GO
  2148.  
  2149. CREATE PROCEDURE BuscarDevolucioneCompras
  2150.     @Buscar   int,
  2151.     @Consulta varchar(50)
  2152. AS
  2153. BEGIN
  2154.     SELECT * FROM vDevolucionesCompras
  2155.     WHERE
  2156.         CASE @Buscar
  2157.             WHEN 1 THEN
  2158.                 ID
  2159.             WHEN 2 THEN
  2160.                 [Orden de compra]
  2161.             ELSE
  2162.                 Fecha
  2163.         END
  2164.         LIKE '%' + @Consulta + '%'
  2165.     ORDER BY Fecha ASC
  2166. END
  2167.  
  2168. -- ================================================
  2169.  
  2170. GO
  2171.  
  2172. CREATE PROCEDURE ObtenerDetalleDevolucionCompra
  2173.     @DevolucionCompraID int
  2174. AS
  2175. BEGIN
  2176.     SET NOCOUNT ON
  2177. END
  2178.  
  2179. -- ================================================
  2180.  
  2181. GO
  2182.  
  2183. CREATE PROCEDURE ObtenerClientes
  2184. AS
  2185. BEGIN
  2186.     SELECT * FROM vClientes
  2187.     ORDER BY ID ASC
  2188. END
  2189.  
  2190. -- ================================================
  2191.  
  2192. GO
  2193.  
  2194. CREATE PROCEDURE NuevoCliente
  2195.     @Nombre            varchar(50),
  2196.     @Apellido          varchar(50),
  2197.     @Direccion         varchar(100),
  2198.     @Telefono          varchar(20),
  2199.     @CorreoElectronico varchar(50)
  2200. AS
  2201. BEGIN
  2202.     INSERT INTO Clientes(Nombre, Apellido, Direccion, Telefono, CorreoElectronico)
  2203.     VALUES(dbo.QuitarEspacios(@Nombre), dbo.QuitarEspacios(@Apellido), dbo.QuitarEspacios(@Direccion),
  2204.         dbo.QuitarEspacios(@Telefono), dbo.QuitarEspacios(@CorreoElectronico))
  2205. END
  2206.  
  2207. -- ================================================
  2208.  
  2209. GO
  2210.  
  2211. CREATE PROCEDURE ModificarCliente
  2212.     @ClienteID         int,
  2213.     @Nombre            varchar(50),
  2214.     @Apellido          varchar(50),
  2215.     @Direccion         varchar(100),
  2216.     @Telefono          varchar(20),
  2217.     @CorreoElectronico varchar(50)
  2218. AS
  2219. BEGIN
  2220.     DECLARE @CorreoElectronicoActual varchar(50)
  2221.  
  2222.     SET @Nombre                  = dbo.QuitarEspacios(@Nombre)
  2223.     SET @Apellido                = dbo.QuitarEspacios(@Apellido)
  2224.     SET @Direccion               = dbo.QuitarEspacios(@Direccion)
  2225.     SET @Telefono                = dbo.QuitarEspacios(@Telefono)
  2226.     SET @CorreoElectronico       = dbo.QuitarEspacios(@CorreoElectronico)
  2227.     SET @CorreoElectronicoActual = (SELECT CorreoElectronico FROM Clientes WHERE ClienteID = @ClienteID)
  2228.  
  2229.     IF @Nombre != (SELECT Nombre FROM Clientes WHERE ClienteID = @ClienteID)
  2230.         UPDATE Clientes
  2231.         SET Nombre = @Nombre
  2232.         WHERE ClienteID = @ClienteID
  2233.  
  2234.     IF @Apellido != (SELECT Apellido FROM Clientes WHERE ClienteID = @ClienteID)
  2235.         UPDATE Clientes
  2236.         SET Apellido = @Apellido
  2237.         WHERE ClienteID = @ClienteID
  2238.  
  2239.     IF @Direccion != (SELECT Direccion FROM Clientes WHERE ClienteID = @ClienteID)
  2240.         UPDATE Clientes
  2241.         SET Direccion = @Direccion
  2242.         WHERE ClienteID = @ClienteID
  2243.  
  2244.     IF @Telefono != (SELECT Telefono FROM Clientes WHERE ClienteID = @ClienteID)
  2245.         UPDATE Clientes
  2246.         SET Telefono = @Telefono
  2247.         WHERE ClienteID = @ClienteID
  2248.  
  2249.     IF @CorreoElectronico != @CorreoElectronicoActual OR @CorreoElectronico IS NULL AND @CorreoElectronicoActual IS NOT NULL OR @CorreoElectronicoActual IS NULL AND @CorreoElectronico IS NOT NULL
  2250.         UPDATE Clientes
  2251.         SET CorreoElectronico = @CorreoElectronico
  2252.         WHERE ClienteID = @ClienteID
  2253. END
  2254.  
  2255. -- ================================================
  2256.  
  2257. GO
  2258.  
  2259. CREATE PROCEDURE EliminarCliente
  2260.     @ClienteID int
  2261. AS
  2262. BEGIN
  2263.     DELETE FROM Clientes
  2264.     WHERE ClienteID = @ClienteID
  2265. END
  2266.  
  2267. -- ================================================
  2268.  
  2269. GO
  2270.  
  2271. CREATE PROCEDURE BuscarClientes
  2272.     @Buscar   int,
  2273.     @Consulta varchar(50)
  2274. AS
  2275. BEGIN
  2276.     SELECT * FROM vClientes
  2277.     WHERE
  2278.         CASE @Buscar
  2279.             WHEN 1 THEN
  2280.                 ID
  2281.             ELSE
  2282.                 Nombre + ' ' + Apellido
  2283.         END
  2284.         LIKE '%' + @Consulta + '%'
  2285.     ORDER BY ID ASC
  2286. END
  2287.  
  2288. -- ================================================
  2289.  
  2290. GO
  2291.  
  2292. CREATE PROCEDURE ObtenerFormasPago
  2293. AS
  2294. BEGIN
  2295.     SELECT * FROM vFormasPago
  2296.     ORDER BY ID ASC
  2297. END
  2298.  
  2299. -- ================================================
  2300.  
  2301. GO
  2302.  
  2303. CREATE PROCEDURE NuevaFormaPago
  2304.     @Nombre      varchar(50),
  2305.     @Descripcion varchar(100)
  2306. AS
  2307. BEGIN
  2308.     INSERT INTO FormasPago (Nombre, Descripcion)
  2309.     VALUES (dbo.QuitarEspacios(@Nombre), dbo.QuitarEspacios(@Descripcion))
  2310. END
  2311.  
  2312. -- ================================================
  2313.  
  2314. GO
  2315.  
  2316. CREATE PROCEDURE ModificarFormaPago
  2317.     @FormaPagoID int,
  2318.     @Nombre      varchar(50),
  2319.     @Descripcion varchar(100)
  2320. AS
  2321. BEGIN
  2322.     DECLARE @DescripcionActual varchar(100)
  2323.  
  2324.     SET @Nombre            = dbo.QuitarEspacios(@Nombre)
  2325.     SET @DescripcionActual = (SELECT Descripcion FROM FormasPago WHERE FormaPagoID = @FormaPagoID)
  2326.  
  2327.     IF @Nombre != (SELECT Nombre FROM FormasPago WHERE FormaPagoID = @FormaPagoID)
  2328.         UPDATE FormasPago
  2329.         SET Nombre = @Nombre
  2330.         WHERE FormaPagoID = @FormaPagoID
  2331.  
  2332.     IF @Descripcion != @DescripcionActual OR @Descripcion IS NULL AND @DescripcionActual IS NOT NULL OR @DescripcionActual IS NULL AND @Descripcion IS NOT NULL
  2333.         UPDATE FormasPago
  2334.         SET Descripcion = @Descripcion
  2335.         WHERE FormaPagoID = @FormaPagoID
  2336. END
  2337.  
  2338. -- ================================================
  2339.  
  2340. GO
  2341.  
  2342. CREATE PROCEDURE EliminarFormaPago
  2343.     @FormaPagoID int
  2344. AS
  2345. BEGIN
  2346.     DELETE FROM FormasPago
  2347.     WHERE FormaPagoID = @FormaPagoID
  2348. END
  2349.  
  2350. -- ================================================
  2351.  
  2352. GO
  2353.  
  2354. CREATE PROCEDURE BuscarFormasPago
  2355.     @Buscar   int,
  2356.     @Consulta varchar(50)
  2357. AS
  2358. BEGIN
  2359.     SELECT * FROM vFormasPago
  2360.     WHERE
  2361.         CASE @Buscar
  2362.             WHEN 1 THEN
  2363.                 ID
  2364.             ELSE
  2365.                 Nombre
  2366.         END
  2367.         LIKE '%' + @Consulta + '%'
  2368.     ORDER BY ID ASC
  2369. END
  2370.  
  2371. -- ================================================
  2372.  
  2373. GO
  2374.  
  2375. CREATE PROCEDURE ObtenerFacturas
  2376. AS
  2377. BEGIN
  2378.     SELECT * FROM vFacturas
  2379.     ORDER BY ID ASC
  2380. END
  2381.  
  2382. -- ================================================
  2383.  
  2384. GO
  2385.  
  2386. CREATE PROCEDURE NuevaFactura
  2387.     @Caja      varchar(50),
  2388.     @Cliente   varchar(50),
  2389.     @Almacen   varchar(50),
  2390.     @Producto  varchar(50),
  2391.     @Cantidad  int,
  2392.     @FormaPago varchar(50)
  2393. AS
  2394. BEGIN
  2395.     DECLARE @CajaID     int
  2396.     DECLARE @ClienteID  int
  2397.     DECLARE @AlmacenID  int
  2398.     DECLARE @Existencia int
  2399.     DECLARE @ProductoID int
  2400.  
  2401.     SET @CajaID     = (SELECT CajaID FROM Cajas WHERE Nombre = @Caja)
  2402.     SET @ClienteID  = (SELECT ClienteID FROM Clientes WHERE Nombre = @Cliente)
  2403.     SET @AlmacenID  = (SELECT AlmacenID FROM Almacenes WHERE Nombre = @Almacen)
  2404.     SET @ProductoID = (SELECT ProductoID FROM Productos WHERE Nombre = @Producto)
  2405.     SET @Existencia = (SELECT Existencia FROM Inventario WHERE AlmacenID = @AlmacenID AND ProductoID = @ProductoID)
  2406.  
  2407.     IF (@Existencia > 0 AND @Cantidad <= @Existencia)
  2408.         BEGIN
  2409.             DECLARE @Fecha     date
  2410.             DECLARE @FacturaID int
  2411.  
  2412.             SET @Fecha = CONVERT(date, GETDATE())
  2413.  
  2414.             UPDATE Inventario
  2415.             SET Existencia = @Existencia - @Cantidad
  2416.             WHERE ProductoID = @ProductoID
  2417.  
  2418.             IF EXISTS(SELECT 1 FROM Facturas WHERE CajaID = @CajaID AND ClienteID = @ClienteID AND Fecha = @Fecha)
  2419.                 SET @FacturaID = (SELECT FacturaID FROM Facturas WHERE CajaID = @CajaID AND ClienteID = @ClienteID AND Fecha = @Fecha)
  2420.             ELSE
  2421.                 BEGIN
  2422.                     INSERT INTO Facturas(CajaID, ClienteID, Fecha)
  2423.                     VALUES(@CajaID, @ClienteID, @Fecha)
  2424.  
  2425.                     SET @FacturaID = (SELECT MAX(FacturaID) FROM Facturas)
  2426.                 END
  2427.            
  2428.             INSERT INTO DetalleFacturas(FacturaID, Hora, AlmacenID, ProductoID, Precio, Cantidad, FormaPagoID)
  2429.             VALUES(@FacturaID, CONVERT(time, GETDATE()), @AlmacenID, @ProductoID, (SELECT Precio FROM Inventario WHERE AlmacenID = @AlmacenID AND ProductoID = (SELECT ProductoID FROM Productos WHERE Nombre = @Producto)),
  2430.                 @Cantidad, (SELECT FormaPagoID FROM FormasPago WHERE Nombre = @FormaPago))
  2431.         END
  2432.     ELSE
  2433.         RETURN @@ERROR
  2434. END
  2435.  
  2436. -- ================================================
  2437.  
  2438. GO
  2439.  
  2440. CREATE PROCEDURE EliminarFactura
  2441.     @FacturaID int
  2442. AS
  2443. BEGIN
  2444.     IF EXISTS(SELECT 1 FROM DevolucionesVentas WHERE FacturaID = @FacturaID)
  2445.         BEGIN
  2446.             DELETE FROM DetalleDevolucionesVentas
  2447.             WHERE DevolucionVentaID = (SELECT DevolucionVentaID FROM DevolucionesVentas WHERE FacturaID = @FacturaID)
  2448.  
  2449.             DELETE FROM DevolucionesVentas
  2450.             WHERE FacturaID = @FacturaID
  2451.         END
  2452.  
  2453.     IF EXISTS(SELECT 1 FROM DetalleFacturas WHERE FacturaID = @FacturaID)
  2454.         DELETE FROM DetalleFacturas
  2455.         WHERE FacturaID = @FacturaID
  2456.  
  2457.     DELETE FROM DetalleFacturas
  2458.     WHERE FacturaID = @FacturaID
  2459.  
  2460.     DELETE FROM Facturas
  2461.     WHERE FacturaID = @FacturaID
  2462. END
  2463.  
  2464. -- ================================================
  2465.  
  2466. GO
  2467.  
  2468. CREATE PROCEDURE BuscarFacturas
  2469.     @Buscar   int,
  2470.     @Consulta varchar(50)
  2471. AS
  2472. BEGIN
  2473.     SELECT * FROM vFacturas
  2474.     WHERE
  2475.         CASE @Buscar
  2476.             WHEN 1 THEN
  2477.                 ID
  2478.             WHEN 2 THEN
  2479.                 Caja
  2480.             WHEN 3 THEN
  2481.                 Cliente
  2482.             ELSE
  2483.                 Fecha
  2484.         END
  2485.         LIKE '%' + @Consulta + '%'
  2486.     ORDER BY ID ASC
  2487. END
  2488.  
  2489. -- ================================================
  2490.  
  2491. GO
  2492.  
  2493. CREATE PROCEDURE ObtenerDetalleFactura
  2494.     @FacturaID int
  2495. AS
  2496. BEGIN
  2497.     SELECT dbo.FormatoHora(d.Hora) 'Hora',
  2498.            a.Nombre                'Almacen',
  2499.            p.Nombre                'Producto',
  2500.            d.Precio                'Precio',
  2501.            d.Cantidad              'Cantidad',
  2502.            f.Nombre                'Forma de pago'
  2503.     FROM DetalleFacturas d WITH (NOLOCK)
  2504.         INNER JOIN Almacenes a WITH (NOLOCK)
  2505.             ON a.AlmacenID = d.AlmacenID
  2506.         INNER JOIN Productos p WITH (NOLOCK)
  2507.             ON p.ProductoID = d.ProductoID
  2508.         INNER JOIN FormasPago f WITH (NOLOCK)
  2509.             ON f.FormaPagoID = d.FormaPagoID
  2510.     WHERE FacturaID = @FacturaID
  2511. END
  2512.  
  2513. -- ================================================
  2514.  
  2515. GO
  2516.  
  2517. CREATE PROCEDURE ObtenerDevolucionesVentas
  2518. AS
  2519. BEGIN
  2520.     SELECT * FROM vDevolucionesVentas
  2521.     ORDER BY ID ASC
  2522. END
  2523.  
  2524. -- ================================================
  2525.  
  2526. GO
  2527.  
  2528. CREATE PROCEDURE NuevaDevolucionVenta
  2529.     @FacturaID   int,
  2530.     @Cantidad    int,
  2531.     @Descripcion varchar(100)
  2532. AS
  2533. BEGIN
  2534.     DECLARE @Fecha      date
  2535.     DECLARE @Existencia int
  2536.    
  2537.     SET @Fecha       = CONVERT(date, GETDATE())
  2538.     SET @Existencia  = (SELECT Cantidad FROM DetalleFacturas WHERE FacturaID = @FacturaID)
  2539.  
  2540.     IF (DATEDIFF(DAY, @Fecha, DATEADD(WEEK, 3, (SELECT Fecha FROM Facturas WHERE FacturaID = @FacturaID))) > 21 AND @Cantidad > 0 AND @Cantidad <= @Existencia)
  2541.         BEGIN
  2542.             DECLARE @DevolucionVentaID int
  2543.  
  2544.             IF EXISTS(SELECT 1 FROM DevolucionesVentas WHERE FacturaID = @FacturaID AND Fecha = @Fecha)
  2545.                 SET @DevolucionVentaID = (SELECT DevolucionVentaID FROM DevolucionesVentas WHERE FacturaID = @FacturaID)
  2546.             ELSE
  2547.                 BEGIN
  2548.                     INSERT INTO DevolucionesVentas(FacturaID, Fecha)
  2549.                     VALUES(@FacturaID, @Fecha)
  2550.  
  2551.                     SET @DevolucionVentaID = (SELECT MAX(DevolucionVentaID) FROM DevolucionesVentas)
  2552.                 END
  2553.  
  2554.             INSERT INTO DetalleDevolucionesVentas(DevolucionVentaID, Hora, Cantidad, Descripcion)
  2555.             VALUES(@DevolucionVentaID, CONVERT(time, GETDATE()), @Cantidad, dbo.QuitarEspacios(@Descripcion))
  2556.  
  2557.             UPDATE Inventario
  2558.             SET Existencia = Existencia + @Cantidad
  2559.             WHERE AlmacenID  = (SELECT AlmacenID FROM DetalleFacturas WHERE FacturaID = @FacturaID) AND
  2560.                   ProductoID = (SELECT ProductoID FROM DetalleFacturas WHERE FacturaID = @FacturaID)
  2561.         END
  2562.     ELSE
  2563.         RETURN @@ERROR
  2564. END
  2565.  
  2566. -- ================================================
  2567.  
  2568. GO
  2569.  
  2570. CREATE PROCEDURE EliminarDevolucionVenta
  2571.     @FacturaID int
  2572. AS
  2573. BEGIN
  2574.     DELETE FROM DetalleDevolucionesVentas
  2575.     WHERE DevolucionVentaID = (SELECT DevolucionVentaID FROM DevolucionesVentas WHERE FacturaID = @FacturaID)
  2576.  
  2577.     DELETE FROM DevolucionesVentas
  2578.     WHERE FacturaID = @FacturaID
  2579. END
  2580.  
  2581. -- ================================================
  2582.  
  2583. GO
  2584.  
  2585. CREATE PROCEDURE BuscarDevolucionesVentas
  2586.     @Buscar   int,
  2587.     @Consulta varchar(50)
  2588. AS
  2589. BEGIN
  2590.     SELECT * FROM vDevolucionesVentas
  2591.     WHERE
  2592.         CASE @Buscar
  2593.             WHEN 1 THEN
  2594.                 ID
  2595.             WHEN 2 THEN
  2596.                 Factura
  2597.             ELSE
  2598.                 Fecha
  2599.         END
  2600.         LIKE '%' + @Consulta + '%'
  2601.     ORDER BY ID ASC
  2602. END
  2603.  
  2604. -- ================================================
  2605.  
  2606. GO
  2607.  
  2608. CREATE PROCEDURE ObtenerDetalleDevolucionVenta
  2609.     @DevolucionVentaID int
  2610. AS
  2611. BEGIN
  2612.    SELECT v.DevolucionVentaID                             'ID',
  2613.           v.FacturaID                                     'Factura',
  2614.           dbo.FormatoFecha(v.Fecha)                       'Fecha',
  2615.           dbo.FormatoHora(d.Hora)                         'Hora',
  2616.           p.Nombre                                        'Producto',
  2617.           f.Precio                                        'Precio',
  2618.           d.Cantidad                                      'Cantidad',
  2619.           d.Descripcion                                   'Descripción',
  2620.           dbo.ObtenerTotal(f.Precio * d.Cantidad,
  2621.               (SELECT Impuesto FROM DetalleOrdenesCompras
  2622.                WHERE ProductoID = p.ProductoID))          'Total'
  2623.    FROM DevolucionesVentas v WITH (NOLOCK)
  2624.        INNER JOIN DetalleDevolucionesVentas d WITH (NOLOCK)
  2625.            ON v.DevolucionVentaID = d.DevolucionVentaID
  2626.        INNER JOIN DetalleFacturas f WITH (NOLOCK)
  2627.            ON v.FacturaID = f.FacturaID
  2628.        INNER JOIN Productos p WITH (NOLOCK)
  2629.            ON f.ProductoID = p.ProductoID
  2630.     WHERE v.DevolucionVentaID = @DevolucionVentaID
  2631. END
  2632.  
  2633. -- ================================================
  2634.  
  2635. GO
  2636.  
  2637. CREATE PROCEDURE ObtenerTransferencias
  2638. AS
  2639. BEGIN
  2640.     SELECT * FROM vTransferencias
  2641.     ORDER BY ID ASC
  2642. END
  2643.  
  2644. -- ================================================
  2645.  
  2646. GO
  2647.  
  2648. CREATE PROCEDURE NuevaTransferencia
  2649.     @Almacen_Origen  varchar(50),
  2650.     @Almacen_Destion varchar(50),
  2651.     @Producto        varchar(50),
  2652.     @Solicitado      int,
  2653.     @Recibido        int,
  2654.     @Descripcion     varchar(100)
  2655. AS
  2656. BEGIN
  2657.     DECLARE @AlmacenID_O int
  2658.  
  2659.     DECLARE @AlmacenID_D int
  2660.  
  2661.     DECLARE @ProductoID int
  2662.  
  2663.     SET @AlmacenID_O = (SELECT AlmacenID FROM Almacenes WHERE Nombre = @Almacen_Origen)
  2664.  
  2665.     SET @AlmacenID_D = (SELECT AlmacenID FROM Almacenes WHERE Nombre = @Almacen_Destion)
  2666.  
  2667.     SET @ProductoID = (SELECT ProductoID FROM Productos WHERE Nombre = @Producto)
  2668.  
  2669.     IF (@AlmacenID_O != @AlmacenID_D AND @Solicitado > 0 AND @Solicitado <= (SELECT Existencia FROM Inventario WHERE AlmacenID = @AlmacenID_O AND ProductoID = @ProductoID))
  2670.         BEGIN
  2671.             UPDATE Inventario
  2672.             SET Existencia = Existencia - @Recibido
  2673.             WHERE AlmacenID = @AlmacenID_O AND ProductoID = @ProductoID
  2674.  
  2675.             IF EXISTS(SELECT 1 FROM Inventario WHERE AlmacenID = @AlmacenID_D AND ProductoID = @ProductoID)
  2676.                 UPDATE Inventario
  2677.                 SET Existencia = Existencia + @Recibido
  2678.                 WHERE AlmacenID = @AlmacenID_D AND ProductoID = @ProductoID
  2679.             ELSE
  2680.                 INSERT INTO Inventario(AlmacenID, ProductoID, Precio, Existencia)
  2681.                 VALUES(@AlmacenID_D, @ProductoID, (SELECT Precio FROM Inventario WHERE ProductoID = @ProductoID), @Recibido)
  2682.  
  2683.             DECLARE @Fecha           date
  2684.             DECLARE @TransferenciaID int
  2685.  
  2686.             SET @Fecha = CONVERT(date, GETDATE())
  2687.  
  2688.             IF EXISTS(SELECT 1 FROM Transferencias WHERE AlmacenID_Origen = @AlmacenID_O AND AlmacenID_Destino = @AlmacenID_D AND Fecha = @Fecha)
  2689.                 SET @TransferenciaID = (SELECT TransferenciaID FROM Transferencias WHERE AlmacenID_Origen = @AlmacenID_O AND AlmacenID_Destino = @AlmacenID_D AND Fecha = @Fecha)
  2690.             ELSE
  2691.                 BEGIN
  2692.                     INSERT INTO Transferencias(AlmacenID_Origen, AlmacenID_Destino, Fecha)
  2693.                     VALUES(@AlmacenID_O, @AlmacenID_D, @Fecha)
  2694.  
  2695.                     SET @TransferenciaID = (SELECT MAX(TransferenciaID) FROM Transferencias)
  2696.                 END
  2697.  
  2698.             INSERT INTO DetalleTransferencias(TransferenciaID, Hora, ProductoID, Solicitado, Recibido, Descripcion)
  2699.             VALUES(@TransferenciaID, CONVERT(time, GETDATE()), @ProductoID, @Solicitado, @Recibido, dbo.QuitarEspacios(@Descripcion))
  2700.         END
  2701.     ELSE
  2702.         RETURN @@ERROR
  2703. END
  2704.  
  2705. -- ================================================
  2706.  
  2707. GO
  2708.  
  2709. CREATE PROCEDURE EliminarTransferencia
  2710.     @TransferenciaID int
  2711. AS
  2712. BEGIN
  2713.     DELETE FROM DetalleTransferencias
  2714.     WHERE TransferenciaID = @TransferenciaID
  2715.  
  2716.     DELETE FROM Transferencias
  2717.     WHERE TransferenciaID = @TransferenciaID
  2718. END
  2719.  
  2720. -- ================================================
  2721.  
  2722. GO
  2723.  
  2724. CREATE PROCEDURE BuscarTransferencias
  2725.     @Buscar   int,
  2726.     @Consulta varchar(50)
  2727. AS
  2728. BEGIN
  2729.     SELECT * FROM vTransferencias
  2730.     WHERE
  2731.         CASE @Buscar
  2732.             WHEN 1 THEN
  2733.                 ID
  2734.             WHEN 2 THEN
  2735.                 [Almacén de origen]
  2736.             WHEN 3 THEN
  2737.                 [Almacén de destino]
  2738.             ELSE
  2739.                 Fecha
  2740.         END
  2741.         LIKE '%' + @Consulta + '%'
  2742.     ORDER BY ID ASC
  2743. END
  2744.  
  2745. -- ================================================
  2746.  
  2747. GO
  2748.  
  2749. CREATE PROCEDURE ObtenerDetalleTransferencia
  2750.     @TransferenciaID int
  2751. AS
  2752. BEGIN
  2753.     SELECT t.TransferenciaID         'ID',
  2754.            o.Nombre                  'Almacén de origen',
  2755.            s.Nombre                  'Almacén de destino',
  2756.            dbo.FormatoFecha(t.Fecha) 'Fecha',
  2757.            dbo.FormatoHora(d.Hora)   'Hora',
  2758.            p.Nombre                  'Producto',
  2759.            d.Solicitado              'Solicitado',
  2760.            d.Recibido                'Recibido',
  2761.            d.Descripcion             'Descripción'
  2762.     FROM Transferencias t WITH (NOLOCK)
  2763.         INNER JOIN DetalleTransferencias d WITH (NOLOCK)
  2764.             ON t.TransferenciaID = d.TransferenciaID
  2765.         INNER JOIN Almacenes o WITH (NOLOCK)
  2766.             ON t.AlmacenID_Origen = o.AlmacenID
  2767.         INNER JOIN Almacenes s WITH (NOLOCK)
  2768.             ON t.AlmacenID_Destino = s.AlmacenID
  2769.         INNER JOIN Productos p WITH (NOLOCK)
  2770.             ON d.ProductoID = p.ProductoID
  2771.     WHERE t.TransferenciaID = @TransferenciaID
  2772.     ORDER BY t.TransferenciaID ASC
  2773. END
  2774.  
  2775. -- ================================================
  2776.  
  2777. GO
  2778.  
  2779. CREATE PROCEDURE Autenticacion
  2780.     @Nombre     varchar(50),
  2781.     @Contrasena varchar(25)
  2782. WITH ENCRYPTION
  2783. AS
  2784. BEGIN
  2785.     IF EXISTS(SELECT 1 FROM Usuarios WHERE Nombre = @Nombre)
  2786.         BEGIN
  2787.             IF PWDCOMPARE(@Contrasena, (SELECT Contrasena FROM Usuarios WHERE Nombre = @Nombre)) = 1
  2788.                 SELECT 1
  2789.             ELSE
  2790.                 SELECT @@ERROR
  2791.         END
  2792.     ELSE
  2793.         SELECT @@ERROR
  2794. END
RAW Paste Data