-
Notifications
You must be signed in to change notification settings - Fork 0
/
SCHEMA-POS.~sql
1206 lines (1139 loc) · 31 KB
/
SCHEMA-POS.~sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*CONFIGURACION DEL ESQUEMA DE LA BASE DE DATOS
PARA EL SISTEMA DE PUNTO DE VENTA
(EJECUTAR CON SYSTEM O SYS)*/
--CREACION DE LOS TABLESPACES
CREATE TABLESPACE SISTEMA_VENTAS
DATAFILE 'C:\oraclexe\oradata\XE\SISTEMAVENTAS1.DBF'
SIZE 500M;
CREATE TEMPORARY TABLESPACE TEMP_SISTEMA_VENTAS
TEMPFILE 'C:\oraclexe\oradata\XE\TEMPSISTEMAVENTAS1.DBF'
SIZE 50M AUTOEXTEND ON;
--CREACION DE ESQUEMA
CREATE USER ROOT
IDENTIFIED BY "ROOT@1234"
DEFAULT TABLESPACE SISTEMA_VENTAS
TEMPORARY TABLESPACE TEMP_SISTEMA_VENTAS
PROFILE DEFAULT;
--ASIGNACION DE ROLES
GRANT CONNECT TO ROOT WITH ADMIN OPTION;
GRANT RESOURCE TO ROOT WITH ADMIN OPTION;
GRANT UNLIMITED TABLESPACE TO ROOT WITH ADMIN OPTION;
GRANT CREATE USER, ALTER USER, DROP USER TO ROOT;
GRANT CREATE ROLE TO ROOT;
GRANT CREATE VIEW TO ROOT;
--INICIAR SESION EN ROOT
--CREACION DE TABLAS
CREATE TABLE PERMISOS (
permisos_id NUMBER,
acceso_ventas NUMBER(1) NOT NULL,
acceso_inventario NUMBER(1) NOT NULL,
acceso_reportes NUMBER(1) NOT NULL,
acceso_clientes NUMBER(1) NOT NULL,
acceso_proveedores NUMBER(1) NOT NULL,
acceso_usuarios NUMBER(1) NOT NULL,
acceso_configuracion NUMBER(1) NOT NULL,
CONSTRAINT PK_PERMISOS_ID PRIMARY KEY (permisos_id)
);
CREATE TABLE USUARIO (
usuario_id NUMBER,
nombre VARCHAR2(100) NOT NULL,
fecha_registro DATE NOT NULL,
disponibilidad NUMBER(1) NOT NULL,
estado_eliminacion NUMBER(1) NOT NULL,
permisos_id NUMBER NOT NULL,
CONSTRAINT PK_USUARIO_ID PRIMARY KEY (usuario_id),
CONSTRAINT FK_USUARIO_PERMISOS_ID FOREIGN KEY (permisos_id) REFERENCES PERMISOS(permisos_id)
);
CREATE TABLE CLIENTE (
cliente_id NUMBER,
nombre VARCHAR2(100) NOT NULL,
telefono NUMBER(9) NOT NULL,
correo VARCHAR2(100) NOT NULL,
fecha_registro DATE NOT NULL,
estado_eliminacion NUMBER(1) NOT NULL,
CONSTRAINT PK_CLIENTE_ID PRIMARY KEY (cliente_id)
);
CREATE TABLE VENTA (
venta_id NUMBER,
total_impuesto NUMBER(8,2) NOT NULL,
total_descuento NUMBER(8,2) NOT NULL,
pago_cliente NUMBER(8,2) NOT NULL,
fecha_registro DATE NOT NULL,
cliente_id NUMBER,
usuario_id NUMBER NOT NULL,
CONSTRAINT PK_VENTA_ID PRIMARY KEY (venta_id),
CONSTRAINT FK_VENTA_CLIENTE_ID FOREIGN KEY (cliente_id) REFERENCES CLIENTE(cliente_id),
CONSTRAINT FK_VENTA_USUARIO_ID FOREIGN KEY (usuario_id) REFERENCES USUARIO(usuario_id)
);
CREATE TABLE DEPARTAMENTO (
departamento_id NUMBER,
nombre VARCHAR2(100) NOT NULL,
fecha_registro DATE NOT NULL,
estado_eliminacion NUMBER(1) NOT NULL,
CONSTRAINT PK_DEPARTAMENTO_ID PRIMARY KEY (departamento_id)
);
CREATE TABLE PRODUCTO (
producto_id NUMBER,
nombre VARCHAR2(100) NOT NULL,
precio NUMBER(8,2) NOT NULL,
costo NUMBER(8,2) NOT NULL,
stock NUMBER NOT NULL,
precio_variable NUMBER(1) NOT NULL,
permitir_descuentos NUMBER(1) NOT NULL,
visibilidad_en_caja NUMBER(1) NOT NULL,
fecha_registro DATE NOT NULL,
estado_eliminacion NUMBER(1) NOT NULL,
DEPARTAMENTO_ID NUMBER,
CONSTRAINT PK_PRODUCTO_ID PRIMARY KEY (producto_id),
CONSTRAINT PK_PRODUCTO_DEPARTAMENTO_ID FOREIGN KEY (DEPARTAMENTO_ID) REFERENCES DEPARTAMENTO(DEPARTAMENTO_ID)
);
CREATE TABLE PROVEEDOR (
proveedor_id NUMBER,
razon_social VARCHAR2(100) NOT NULL,
telefono NUMBER(9) NOT NULL,
correo VARCHAR2(100) NOT NULL,
fecha_registro DATE NOT NULL,
estado_eliminacion NUMBER(1) NOT NULL,
CONSTRAINT PK_PROVEEDOR_ID PRIMARY KEY (proveedor_id)
);
CREATE TABLE VENTA_PRODUCTO (
venta_id NUMBER NOT NULL,
producto_id NUMBER NOT NULL,
cantidad NUMBER NOT NULL,
CONSTRAINT FK_VENTA_PRODUCTO_ID PRIMARY KEY (venta_id,producto_id),
FOREIGN KEY (venta_id) REFERENCES VENTA(venta_id),
FOREIGN KEY (producto_id) REFERENCES PRODUCTO(producto_id)
);
CREATE TABLE PROVEEDOR_PRODUCTO (
proveedor_producto_id NUMBER,
proveedor_id NUMBER NOT NULL,
producto_id NUMBER NOT NULL,
cantidad NUMBER NOT NULL,
fecha_registro DATE NOT NULL,
CONSTRAINT PK_PROVEEDOR_PRODUCTO_ID PRIMARY KEY (proveedor_producto_id),
CONSTRAINT FK_PP_PROVEEDOR_ID FOREIGN KEY (proveedor_id) REFERENCES PROVEEDOR(proveedor_id),
CONSTRAINT FK_PP_PRODUCTO_ID FOREIGN KEY (producto_id) REFERENCES PRODUCTO(producto_id)
);
CREATE TABLE SISTEMA(
RUC VARCHAR(11),
NUMERO_TERMINAL NUMBER,
RAZON_SOCIAL VARCHAR(100),
TELEFONO NUMBER(9),
CODIGO_TIENDA VARCHAR(25),
CIUDAD VARCHAR(45),
PROVINCIA VARCHAR(45),
DISTRITO VARCHAR(45),
DIRECCION VARCHAR(100),
CODIGO_POSTAL NUMBER
);
--CREACION DE ROLES
--ROL EMPLEADO
CREATE ROLE POS_EMPLEADO;
GRANT CONNECT TO POS_EMPLEADO;
GRANT SELECT, INSERT, UPDATE ON ROOT.CLIENTE TO POS_EMPLEADO;
GRANT SELECT, INSERT, UPDATE ON ROOT.VENTA TO POS_EMPLEADO;
GRANT SELECT, INSERT, UPDATE ON ROOT.DEPARTAMENTO TO POS_EMPLEADO;
GRANT SELECT, INSERT, UPDATE ON ROOT.PRODUCTO TO POS_EMPLEADO;
GRANT SELECT, INSERT, UPDATE ON ROOT.PROVEEDOR TO POS_EMPLEADO;
GRANT SELECT, INSERT, UPDATE ON ROOT.PROVEEDOR_PRODUCTO TO POS_EMPLEADO;
GRANT SELECT, INSERT, UPDATE ON ROOT.VENTA_PRODUCTO TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.SP_AGREGAR_CLIENTE TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.SP_MODIFICAR_CLIENTE TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.SP_ELIMINAR_CLIENTE TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.SP_AGREGAR_PROVEEDOR TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.SP_MODIFICAR_PROVEEDOR TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.SP_ELIMINAR_PROVEEDOR TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.SP_AGREGAR_PRODUCTO TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.SP_MODIFICAR_PRODUCTO TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.SP_ELIMINAR_PRODUCTO TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.SP_INGRESO_PRODUCTO TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.SP_AGREGAR_DEPARTAMENTO TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.SP_MODIFICAR_DEPARTAMENTO TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.SP_ELIMINAR_DEPARTAMENTO TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.SP_REGISTRO_VENTA TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.ROOT_INVENTARIO TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.ROOT_PROVEEDOR TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.ROOT_REPORTE TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.TYPE_VENTA_PRODUCTO TO POS_EMPLEADO;
GRANT EXECUTE ON ROOT.TYPE_TABLE_VENTA_PRODUCTO TO POS_EMPLEADO;
GRANT SELECT ON ROOT.VW_BUSCAR_PRODUCTO TO POS_EMPLEADO;
GRANT SELECT ON ROOT.VW_BUSQUEDA_VENTA_PRODUCTO TO POS_EMPLEADO;
GRANT SELECT ON ROOT.VW_PRODUCTOS_EN_DEPARTAMENTO TO POS_EMPLEADO;
GRANT SELECT ON ROOT.VW_VENTAS_PARA_REPORTE TO POS_EMPLEADO;
GRANT SELECT ON ROOT.VW_PRODUCTOS_EN_DEP_CAJA TO POS_EMPLEADO;
GRANT SELECT ON ROOT.VW_TOTAL_DEPARTAMENTOS TO POS_EMPLEADO;
GRANT SELECT ON ROOT.VW_ULTIMA_ENTREGA TO POS_EMPLEADO;
GRANT SELECT ON ROOT.VW_TOTAL_PROVEEDORES TO POS_EMPLEADO;
GRANT SELECT ON ROOT.VW_TOTAL_CLIENTES TO POS_EMPLEADO;
--ROL ADMINISTRADOR
CREATE ROLE POS_ADMIN;
GRANT SELECT, INSERT, UPDATE ON ROOT.USUARIO TO POS_ADMIN;
GRANT SELECT, INSERT, UPDATE ON ROOT.PERMISOS TO POS_ADMIN;
GRANT SELECT, INSERT, UPDATE ON ROOT.SISTEMA TO POS_ADMIN;
GRANT SELECT ON ROOT.VW_TOTAL_USUARIOS TO POS_ADMIN;
GRANT EXECUTE ON ROOT.F_OBTENER_USUARIO TO POS_ADMIN;
GRANT EXECUTE ON ROOT.SP_GUARDAR_CONFIGURACION TO POS_ADMIN;
GRANT EXECUTE ON ROOT.SP_AGREGAR_USUARIO TO POS_ADMIN;
GRANT EXECUTE ON ROOT.SP_MODIFICAR_USUARIO TO POS_ADMIN;
GRANT EXECUTE ON ROOT.SP_ELIMINAR_USUARIO TO POS_ADMIN;
GRANT POS_EMPLEADO TO POS_ADMIN;
--AGREGANDO LOS DOS TIPOS DE ROLES SEGUN LOS PERMISOS
--PERMISOS DE EMPLEADO
INSERT ALL
INTO PERMISOS VALUES
(
100,
1,
1,
0,
1,
1,
0,
0
)
--PERMISOS DE ADMINISTRADOR
INTO PERMISOS VALUES
(
101,
1,
1,
1,
1,
1,
1,
1
)
SELECT 1 FROM dual;
COMMIT;
-- INICIAR SESION EN ROOT
-- TIPOS
CREATE OR REPLACE TYPE TYPE_VENTA_PRODUCTO
AS OBJECT
(
PRODUCTO_ID NUMBER,
CANTIDAD NUMBER
);
CREATE OR REPLACE TYPE TYPE_TABLE_VENTA_PRODUCTO
AS TABLE OF TYPE_VENTA_PRODUCTO;
-- SECUENCIAS
CREATE SEQUENCE SQ_CLIENTE START WITH 1;
CREATE SEQUENCE SQ_PROVEEDOR START WITH 1;
CREATE SEQUENCE SQ_PROVEEDOR_PRODUCTO START WITH 1;
CREATE SEQUENCE SQ_DEPARTAMENTO START WITH 1;
CREATE SEQUENCE SQ_PRODUCTO START WITH 1;
CREATE SEQUENCE SQ_VENTA START WITH 1;
--PAQUETES
--PAQUETE REPORTES
CREATE OR REPLACE PACKAGE ROOT_REPORTE AS
V_REPORTE_FECHA_INICIO ROOT.VENTA.FECHA_REGISTRO%TYPE;
V_REPORTE_FECHA_FIN ROOT.VENTA.FECHA_REGISTRO%TYPE;
V_VENTA_ID_REPORTE ROOT.VENTA.VENTA_ID%TYPE;
FUNCTION GET_VENTA_ID_REPORTE
RETURN ROOT.VENTA.VENTA_ID%TYPE;
FUNCTION GET_REPORTE_FECHA_INICIO
RETURN ROOT.VENTA.FECHA_REGISTRO%TYPE;
FUNCTION GET_REPORTE_FECHA_FIN
RETURN ROOT.VENTA.FECHA_REGISTRO%TYPE;
FUNCTION F_NUMERO_DE_VENTAS
(
P_FECHA_INICIO ROOT.VENTA.FECHA_REGISTRO%TYPE,
P_FECHA_FIN ROOT.VENTA.FECHA_REGISTRO%TYPE
)
RETURN NUMBER;
FUNCTION F_VALOR_MERCANCIA
RETURN ROOT.PRODUCTO.COSTO%TYPE;
FUNCTION F_PROMEDIO_VENTAS_X_DIA
(
P_FECHA_INICIO ROOT.VENTA.FECHA_REGISTRO%TYPE,
P_FECHA_FIN ROOT.VENTA.FECHA_REGISTRO%TYPE
)
RETURN NUMBER;
FUNCTION F_VALOR_ORDEN_PROMEDIO
(
P_FECHA_INICIO ROOT.VENTA.FECHA_REGISTRO%TYPE,
P_FECHA_FIN ROOT.VENTA.FECHA_REGISTRO%TYPE
)
RETURN NUMBER;
FUNCTION F_PRODUCTOS_VENDIDOS
(
P_FECHA_INICIO ROOT.VENTA.FECHA_REGISTRO%TYPE,
P_FECHA_FIN ROOT.VENTA.FECHA_REGISTRO%TYPE
)
RETURN NUMBER;
FUNCTION F_CLIENTES_REGISTRADOS
(
P_FECHA_INICIO ROOT.VENTA.FECHA_REGISTRO%TYPE,
P_FECHA_FIN ROOT.VENTA.FECHA_REGISTRO%TYPE
)
RETURN NUMBER;
END ROOT_REPORTE;
CREATE OR REPLACE PACKAGE BODY ROOT_REPORTE AS
FUNCTION GET_VENTA_ID_REPORTE
RETURN ROOT.VENTA.VENTA_ID%TYPE
IS
BEGIN
RETURN V_VENTA_ID_REPORTE;
END;
FUNCTION GET_REPORTE_FECHA_INICIO
RETURN ROOT.VENTA.FECHA_REGISTRO%TYPE
IS
BEGIN
RETURN V_REPORTE_FECHA_INICIO;
END;
FUNCTION GET_REPORTE_FECHA_FIN
RETURN ROOT.VENTA.FECHA_REGISTRO%TYPE
IS
BEGIN
RETURN V_REPORTE_FECHA_FIN;
END;
FUNCTION F_NUMERO_DE_VENTAS
(
P_FECHA_INICIO ROOT.VENTA.FECHA_REGISTRO%TYPE,
P_FECHA_FIN ROOT.VENTA.FECHA_REGISTRO%TYPE
)
RETURN NUMBER
IS
V_NUMERO_VENTAS NUMBER;
BEGIN
V_NUMERO_VENTAS:=0;
SELECT
COUNT(*)
INTO V_NUMERO_VENTAS
FROM ROOT.VENTA V
WHERE V.FECHA_REGISTRO BETWEEN
P_FECHA_INICIO AND P_FECHA_FIN+1;
--RETORNANDO NUMERO DE VENTAS
RETURN V_NUMERO_VENTAS;
END;
FUNCTION F_VALOR_MERCANCIA
RETURN ROOT.PRODUCTO.COSTO%TYPE
IS
V_VALOR_MERCANCIA ROOT.PRODUCTO.COSTO%TYPE;
CURSOR C_PRODUCTO_CURSOR IS
SELECT * FROM ROOT.PRODUCTO;
C_PRODUCTO_RECORD C_PRODUCTO_CURSOR%ROWTYPE;
BEGIN
V_VALOR_MERCANCIA:=0;
OPEN C_PRODUCTO_CURSOR;
LOOP
FETCH C_PRODUCTO_CURSOR INTO C_PRODUCTO_RECORD;
EXIT WHEN C_PRODUCTO_CURSOR%NOTFOUND;
V_VALOR_MERCANCIA:=V_VALOR_MERCANCIA+C_PRODUCTO_RECORD.STOCK*C_PRODUCTO_RECORD.COSTO;
END LOOP;
--RETORNANDO VALOR DE MERCANCIA
RETURN V_VALOR_MERCANCIA;
END;
FUNCTION F_PROMEDIO_VENTAS_X_DIA
(
P_FECHA_INICIO ROOT.VENTA.FECHA_REGISTRO%TYPE,
P_FECHA_FIN ROOT.VENTA.FECHA_REGISTRO%TYPE
)
RETURN NUMBER
IS
V_CANTIDAD_DIAS NUMBER;
V_NUMERO_VENTA NUMBER;
V_PROMEDIO_VENTAS NUMBER;
BEGIN
V_PROMEDIO_VENTAS:=0;
--OBTENIENDO NUMERO DE DIAS
SELECT
TRUNC(P_FECHA_FIN+1) - TRUNC(P_FECHA_INICIO)
INTO V_CANTIDAD_DIAS
FROM DUAL;
--OBTENIENDO EL NUMERO DE VENTAS
SELECT
F_NUMERO_DE_VENTAS(P_FECHA_INICIO,P_FECHA_FIN)
INTO V_NUMERO_VENTA
FROM DUAL;
--HALLANDO EL PROMEDIO DE VENTAS
V_PROMEDIO_VENTAS:=V_NUMERO_VENTA/V_CANTIDAD_DIAS;
--RETORNANDO PROMEDIO DE VENTAS
RETURN V_PROMEDIO_VENTAS;
END;
FUNCTION F_VALOR_ORDEN_PROMEDIO
(
P_FECHA_INICIO ROOT.VENTA.FECHA_REGISTRO%TYPE,
P_FECHA_FIN ROOT.VENTA.FECHA_REGISTRO%TYPE
)
RETURN NUMBER
IS
V_PROMEDIO_ORDEN NUMBER;
BEGIN
V_PROMEDIO_ORDEN:=0;
--INICIALIZANDO VALORES DE FECHA
ROOT.ROOT_REPORTE.V_REPORTE_FECHA_INICIO:=P_FECHA_INICIO;
ROOT.ROOT_REPORTE.V_REPORTE_FECHA_FIN:=P_FECHA_FIN+1;
--HALLANDO EL VALOR DE ORDEN PROMEDIO
SELECT
AVG(VPR.VENTA_BRUTA)
INTO V_PROMEDIO_ORDEN
FROM ROOT.VW_VENTAS_PARA_REPORTE VPR;
--RETORNANDO VALOR PROMEDIO DE ORDEN
RETURN V_PROMEDIO_ORDEN;
END;
FUNCTION F_PRODUCTOS_VENDIDOS
(
P_FECHA_INICIO ROOT.VENTA.FECHA_REGISTRO%TYPE,
P_FECHA_FIN ROOT.VENTA.FECHA_REGISTRO%TYPE
)
RETURN NUMBER
IS
V_PRODUCTOS_VENDIDOS NUMBER;
BEGIN
V_PRODUCTOS_VENDIDOS:=0;
SELECT
SUM(VP.CANTIDAD)
INTO V_PRODUCTOS_VENDIDOS
FROM ROOT.VENTA V
JOIN ROOT.VENTA_PRODUCTO VP
ON V.VENTA_ID = VP.VENTA_ID
WHERE V.FECHA_REGISTRO BETWEEN
P_FECHA_INICIO AND P_FECHA_FIN+1;
--RETORNANDO NUMERO DE PRODUCTOS VENDIDOS
RETURN V_PRODUCTOS_VENDIDOS;
END;
FUNCTION F_CLIENTES_REGISTRADOS
(
P_FECHA_INICIO ROOT.VENTA.FECHA_REGISTRO%TYPE,
P_FECHA_FIN ROOT.VENTA.FECHA_REGISTRO%TYPE
)
RETURN NUMBER
IS
V_CLIENTES_REGISTRADOS NUMBER;
BEGIN
V_CLIENTES_REGISTRADOS:=0;
SELECT
COUNT(*)
INTO V_CLIENTES_REGISTRADOS
FROM ROOT.CLIENTE C
WHERE C.FECHA_REGISTRO BETWEEN
P_FECHA_INICIO AND P_FECHA_FIN+1;
--RETORNANDO NUMERO DE CLIENTES REGISTRADOS
RETURN V_CLIENTES_REGISTRADOS;
END;
END ROOT_REPORTE;
-- PAQUETE CLIENTES
-- PAQUETE PROVEEDORES
CREATE OR REPLACE PACKAGE ROOT_PROVEEDOR AS
V_PROVEEDOR_ID_ULT_ENT ROOT.PROVEEDOR.PROVEEDOR_ID%TYPE;
FUNCTION GET_PROVEEDOR_ID_ULT_ENT
RETURN ROOT.PROVEEDOR.PROVEEDOR_ID%TYPE;
END ROOT_PROVEEDOR;
CREATE OR REPLACE PACKAGE BODY ROOT_PROVEEDOR AS
FUNCTION GET_PROVEEDOR_ID_ULT_ENT
RETURN ROOT.PROVEEDOR.PROVEEDOR_ID%TYPE
IS
BEGIN
RETURN V_PROVEEDOR_ID_ULT_ENT;
END;
END ROOT_PROVEEDOR;
--PAQUETE VENTAS
CREATE OR REPLACE PACKAGE ROOT_VENTA AS
END ROOT_VENTA;
CREATE OR REPLACE PACKAGE BODY ROOT_VENTA AS
END ROOT_VENTA;
--PAQUETE INVENTARIO
CREATE OR REPLACE PACKAGE ROOT_INVENTARIO AS
V_DEPARTAMENTO_ID_BUSQUEDA ROOT.DEPARTAMENTO.DEPARTAMENTO_ID%TYPE:=NULL;
V_PRODUCTO_ID_BUSQUEDA ROOT.PRODUCTO.PRODUCTO_ID%TYPE:=NULL;
FUNCTION GET_DEPARTAMENTO_ID_BUSQUEDA
RETURN ROOT.DEPARTAMENTO.DEPARTAMENTO_ID%TYPE;
FUNCTION GET_PRODUCTO_ID_BUSQUEDA
RETURN ROOT.PRODUCTO.PRODUCTO_ID%TYPE;
END ROOT_INVENTARIO;
CREATE OR REPLACE PACKAGE BODY ROOT_INVENTARIO AS
FUNCTION GET_DEPARTAMENTO_ID_BUSQUEDA
RETURN ROOT.DEPARTAMENTO.DEPARTAMENTO_ID%TYPE
IS
BEGIN
RETURN V_DEPARTAMENTO_ID_BUSQUEDA;
END;
FUNCTION GET_PRODUCTO_ID_BUSQUEDA
RETURN ROOT.PRODUCTO.PRODUCTO_ID%TYPE
IS
BEGIN
RETURN V_PRODUCTO_ID_BUSQUEDA;
END;
END ROOT_INVENTARIO;
-- VISTAS
/*OBJETIVO: ESTA VISTA PERMITE CARGAR LOS USUARIOS
QUE NO HAN SIDO DESACTIVADOS NI ELIMINADOS POR UN
ADMINISTRADOR.
USO: ESTE PROCEDIMIENTO SE UTILIZA AL INICIARSE
EL SISTEMA Y AL CARGAR LA LISTA DE USUARIOS PARA
INICIAR SESION.
*/
CREATE OR REPLACE VIEW VW_USUARIOS_ACTIVOS AS
SELECT
U.USUARIO_ID,
U.NOMBRE,
U.DISPONIBILIDAD,
U.FECHA_REGISTRO
FROM ROOT.USUARIO U
WHERE U.ESTADO_ELIMINACION = 0
AND U.DISPONIBILIDAD = 1;
CREATE OR REPLACE VIEW VW_TOTAL_USUARIOS AS
SELECT
U.USUARIO_ID,
U.NOMBRE,
U.FECHA_REGISTRO,
U.DISPONIBILIDAD,
U.PERMISOS_ID
FROM ROOT.USUARIO U
WHERE U.ESTADO_ELIMINACION = 0;
CREATE OR REPLACE VIEW VW_TOTAL_CLIENTES AS
SELECT
C.CLIENTE_ID,
C.NOMBRE,
C.TELEFONO,
C.CORREO,
C.FECHA_REGISTRO
FROM ROOT.CLIENTE C
WHERE C.ESTADO_ELIMINACION = 0;
CREATE OR REPLACE VIEW VW_TOTAL_PROVEEDORES AS
SELECT
P.PROVEEDOR_ID,
P.RAZON_SOCIAL,
P.TELEFONO,
P.CORREO,
P.FECHA_REGISTRO
FROM ROOT.PROVEEDOR P
WHERE P.ESTADO_ELIMINACION = 0;
CREATE OR REPLACE VIEW VW_TOTAL_DEPARTAMENTOS AS
SELECT
D.DEPARTAMENTO_ID,
D.FECHA_REGISTRO,
D.NOMBRE,
COUNT(P.PRODUCTO_ID) AS CANTIDAD
FROM ROOT.DEPARTAMENTO D
LEFT JOIN ROOT.PRODUCTO P
ON D.DEPARTAMENTO_ID=P.DEPARTAMENTO_ID
WHERE D.ESTADO_ELIMINACION = 0
AND (P.ESTADO_ELIMINACION IS NULL OR P.ESTADO_ELIMINACION=0)
GROUP BY
D.DEPARTAMENTO_ID,
D.FECHA_REGISTRO,
D.NOMBRE;
CREATE OR REPLACE VIEW VW_PRODUCTOS_EN_DEPARTAMENTO AS
SELECT
P.PRODUCTO_ID,
P.NOMBRE,
P.PRECIO,
P.COSTO,
P.STOCK,
P.PRECIO_VARIABLE,
P.PERMITIR_DESCUENTOS,
P.VISIBILIDAD_EN_CAJA,
P.FECHA_REGISTRO
FROM ROOT.PRODUCTO P
LEFT JOIN ROOT.DEPARTAMENTO D
ON P.DEPARTAMENTO_ID=D.DEPARTAMENTO_ID
WHERE
(ROOT_INVENTARIO.GET_DEPARTAMENTO_ID_BUSQUEDA IS NULL
OR P.DEPARTAMENTO_ID=ROOT_INVENTARIO.GET_DEPARTAMENTO_ID_BUSQUEDA)
AND P.ESTADO_ELIMINACION=0;
CREATE OR REPLACE VIEW VW_VENTAS_PARA_REPORTE AS
SELECT
V.VENTA_ID,
V.FECHA_REGISTRO ,
SUM(P.PRECIO*VP.CANTIDAD) AS VENTA_BRUTA,
V.TOTAL_IMPUESTO,
V.TOTAL_DESCUENTO,
SUM(P.COSTO) AS TOTAL_COSTO,
V.PAGO_CLIENTE,
(V.PAGO_CLIENTE-SUM(P.PRECIO)) AS CAMBIO,
V.CLIENTE_ID,
V.USUARIO_ID
FROM ROOT.VENTA V
LEFT JOIN ROOT.VENTA_PRODUCTO VP
ON V.VENTA_ID=VP.VENTA_ID
LEFT JOIN ROOT.PRODUCTO P
ON VP.PRODUCTO_ID=P.PRODUCTO_ID
WHERE
V.FECHA_REGISTRO BETWEEN ROOT.ROOT_REPORTE.GET_REPORTE_FECHA_INICIO
AND (ROOT.ROOT_REPORTE.GET_REPORTE_FECHA_FIN+1)
GROUP BY
V.VENTA_ID,
V.FECHA_REGISTRO,
V.TOTAL_IMPUESTO,
V.TOTAL_DESCUENTO,
V.PAGO_CLIENTE,
V.CLIENTE_ID,
V.USUARIO_ID;
CREATE OR REPLACE VIEW VW_BUSCAR_PRODUCTO AS
SELECT
P.PRODUCTO_ID,
P.NOMBRE,
P.PRECIO,
P.COSTO,
P.STOCK,
P.PRECIO_VARIABLE,
P.PERMITIR_DESCUENTOS,
P.VISIBILIDAD_EN_CAJA,
P.FECHA_REGISTRO
FROM ROOT.PRODUCTO P
WHERE
P.PRODUCTO_ID = ROOT.ROOT_INVENTARIO.GET_PRODUCTO_ID_BUSQUEDA;
CREATE OR REPLACE VIEW VW_PRODUCTOS_EN_DEP_CAJA AS
SELECT *
FROM VW_PRODUCTOS_EN_DEPARTAMENTO PED
WHERE
PED.VISIBILIDAD_EN_CAJA=1;
CREATE OR REPLACE VIEW VW_BUSQUEDA_VENTA_PRODUCTO AS
SELECT
P.PRODUCTO_ID,
P.NOMBRE,
P.PRECIO,
P.COSTO,
P.STOCK,
P.PRECIO_VARIABLE,
P.PERMITIR_DESCUENTOS,
P.VISIBILIDAD_EN_CAJA,
P.FECHA_REGISTRO,
VP.CANTIDAD
FROM ROOT.VENTA_PRODUCTO VP
JOIN ROOT.PRODUCTO P
ON VP.PRODUCTO_ID=P.PRODUCTO_ID
WHERE
VP.VENTA_ID = ROOT.ROOT_REPORTE.GET_VENTA_ID_REPORTE;
CREATE OR REPLACE VIEW VW_ULTIMA_ENTREGA AS
SELECT
PP.PROVEEDOR_ID,
PP.PRODUCTO_ID,
PP.CANTIDAD,
PP.FECHA_REGISTRO
FROM ROOT.PROVEEDOR_PRODUCTO PP
WHERE PP.PROVEEDOR_ID=ROOT_PROVEEDOR.GET_PROVEEDOR_ID_ULT_ENT
AND PP.FECHA_REGISTRO =
(SELECT MAX(PP.FECHA_REGISTRO)
FROM ROOT.PROVEEDOR_PRODUCTO PP
WHERE PP.PROVEEDOR_ID=ROOT_PROVEEDOR.GET_PROVEEDOR_ID_ULT_ENT
);
CREATE OR REPLACE VIEW VW_CONFIGURACION_SISTEMA AS
SELECT
S.RUC,
S.NUMERO_TERMINAL,
S.RAZON_SOCIAL,
S.TELEFONO,
S.CODIGO_TIENDA,
S.CIUDAD,
S.PROVINCIA,
S.DISTRITO,
S.DIRECCION,
S.CODIGO_POSTAL
FROM ROOT.SISTEMA S
WHERE ROWNUM = 1;
-- PROCEDIMIENTOS
CREATE OR REPLACE PROCEDURE SP_GUARDAR_CONFIGURACION
(
P_RUC IN ROOT.SISTEMA.RUC%TYPE,
P_NUMERO_TERMINAL IN ROOT.SISTEMA.NUMERO_TERMINAL%TYPE,
P_RAZON_SOCIAL IN ROOT.SISTEMA.RAZON_SOCIAL%TYPE,
P_TELEFONO IN ROOT.SISTEMA.TELEFONO%TYPE,
P_CODIGO_TIENDA IN ROOT.SISTEMA.CODIGO_TIENDA%TYPE,
P_CIUDAD IN ROOT.SISTEMA.CIUDAD%TYPE,
P_PROVINCIA IN ROOT.SISTEMA.PROVINCIA%TYPE,
P_DISTRITO IN ROOT.SISTEMA.DISTRITO%TYPE,
P_DIRECCION IN ROOT.SISTEMA.DIRECCION%TYPE,
P_CODIGO_POSTAL IN ROOT.SISTEMA.CODIGO_POSTAL%TYPE
)
AS
V_CANTIDAD_REGISTROS NUMBER;
BEGIN
--BUSCANDO SI EXISTE UNA CONFIGURACION PREVIA EN LA TABLA SISTEMA
SElECT COUNT(*)
INTO V_CANTIDAD_REGISTROS
FROM ROOT.SISTEMA;
IF V_CANTIDAD_REGISTROS>0 THEN
UPDATE ROOT.SISTEMA S
SET
S.RUC = P_RUC,
S.NUMERO_TERMINAL = P_NUMERO_TERMINAL,
S.RAZON_SOCIAL = P_RAZON_SOCIAL,
S.TELEFONO = P_TELEFONO,
S.CODIGO_TIENDA = P_CODIGO_TIENDA,
S.CIUDAD = P_CIUDAD,
S.PROVINCIA = P_PROVINCIA,
S.DISTRITO = P_DISTRITO,
S.DIRECCION = P_DIRECCION,
S.CODIGO_POSTAL = P_CODIGO_POSTAL;
ELSE
INSERT INTO ROOT.SISTEMA
VALUES
(
P_RUC,
P_NUMERO_TERMINAL,
P_RAZON_SOCIAL,
P_TELEFONO,
P_CODIGO_TIENDA,
P_CIUDAD,
P_PROVINCIA,
P_DISTRITO,
P_DIRECCION,
P_CODIGO_POSTAL
);
END IF;
COMMIT;
END;
CREATE OR REPLACE PROCEDURE SP_AGREGAR_USUARIO
(
P_NOMBRE IN ROOT.USUARIO.NOMBRE%TYPE,
P_PIN IN NUMBER,
P_ROL IN NUMBER
)
AS
V_NOMBRE_USUARIO VARCHAR(20);
V_USUARIO_ID NUMBER;
V_PERMISOS_ID NUMBER;
BEGIN
/*OBJETIVO: ESTE PROCEDIMIENTO PERMITE CREAR UN
NUEVO USUARIO/ESQUEMA EN LA BASE DE DATOS.
EL ROL QUE TENDRA ESTE USUARIO PUEDE SER ADMINISTRADOR
O EMPLEADO, ESO DEPENDE DEL VALOR QUE TENGA EL PARAMETRO
"P_ROL" CUANDO EL PROCEDIMIENTO ES EJECUTADO. ESTE
PROCEDIMIENTO UTILIZA EL ID DEL USUARIO CREADO
PARA AGREGAR UN NUEVO REGISTRO EN LA TABLA USUARIO DE ROOT.
USO: ESTE PROCEDIMIENTO SE UTILIZA EN EL MODULO
DE USUARIOS, AL AGREGAR UN NUEVO USUARIO LUEGO
DE LLENAR SUS DATOS Y PRESIONAR EL BOTON ACEPTAR.
*/
--GENERANDO NUEVO NOMBRE DE USUARIO
SELECT
'USER'||COUNT(*)
INTO V_NOMBRE_USUARIO
FROM ROOT.USUARIO;
--CREANDO USUARIO
EXECUTE IMMEDIATE
' CREATE USER '||V_NOMBRE_USUARIO||
' IDENTIFIED BY "'||P_PIN||'" '||
' DEFAULT TABLESPACE SISTEMA_VENTAS'||
' TEMPORARY TABLESPACE TEMP_SISTEMA_VENTAS'||
' PROFILE DEFAULT';
--ASIGNANDO ROLES A USUARIO DEPENDIENDO DEL ROL
IF P_ROL>0 THEN
EXECUTE IMMEDIATE
'GRANT POS_ADMIN TO '||V_NOMBRE_USUARIO;
V_PERMISOS_ID:=101;
ELSE
EXECUTE IMMEDIATE
'GRANT POS_EMPLEADO TO '||V_NOMBRE_USUARIO;
V_PERMISOS_ID:=100;
END IF;
--OBTENIENDO ID DE USUARIO CREADO
SELECT
AU.USER_ID
INTO V_USUARIO_ID
FROM ALL_USERS AU
WHERE AU.USERNAME=V_NOMBRE_USUARIO;
--INSERTANDO USUARIO A TABLA
INSERT INTO ROOT.USUARIO
VALUES
(
V_USUARIO_ID,
P_NOMBRE,
SYSDATE,
1,
0,
V_PERMISOS_ID
);
COMMIT;
END;
CREATE OR REPLACE PROCEDURE SP_MODIFICAR_USUARIO
(
P_USUARIO_ID IN ROOT.USUARIO.USUARIO_ID%TYPE,
P_NOMBRE IN ROOT.USUARIO.NOMBRE%TYPE,
P_PIN IN NUMBER,
P_DISPONIBILIDAD IN ROOT.USUARIO.DISPONIBILIDAD%TYPE,
P_ROL IN NUMBER
)
AS
V_PERMISOS_NUEVOS_ID NUMBER;
V_PERMISOS_ANTERIORES_ID NUMBER;
V_NOMBRE_USUARIO VARCHAR(20);
BEGIN
/*OBJETIVO: ESTE PROCEDIMIENTO PERMITE MODIFICAR
UN USUARIO EXISTE, TANTO SU ESQUEMA EN LA BD
COMO SUS DATOS DENTRO DE LA TABLA USUARIO EN ROOT.
USO: ESTE PROCEDIMIENTO SE UTILIZA EN EL MODULO
DE USUARIOS, AL MODIFICAR UN USUARIO LUEGO
DE LLENAR SUS DATOS Y PRESIONAR EL BOTON ACEPTAR.
*/
--OBTENIENDO NOMBRE DE USUARIO
V_NOMBRE_USUARIO:=F_OBTENER_USUARIO(P_USUARIO_ID);
--DEFINIENDO ANTERIORES PERMISOS DEL USUARIO
SELECT U.PERMISOS_ID
INTO V_PERMISOS_ANTERIORES_ID
FROM ROOT.USUARIO U
WHERE U.USUARIO_ID=P_USUARIO_ID;
--DEFINIENDO NUEVOS PERMISOS DEL USUARIO
IF P_ROL>0 THEN
V_PERMISOS_NUEVOS_ID:=101;
ELSE
V_PERMISOS_NUEVOS_ID:=100;
END IF;
--MODIFICANDO CONTRASEÑA DE USUARIO
IF P_PIN != -1 THEN
EXECUTE IMMEDIATE
' ALTER USER '||V_NOMBRE_USUARIO||
' IDENTIFIED BY "'||P_PIN||'" ';
END IF;
--ASIGNANDO ROLES A USUARIO DEPENDIENDO DEL ROL
IF V_PERMISOS_NUEVOS_ID=101 AND V_PERMISOS_ANTERIORES_ID=100 THEN
EXECUTE IMMEDIATE
'REVOKE POS_EMPLEADO FROM '||V_NOMBRE_USUARIO;
EXECUTE IMMEDIATE
'GRANT POS_ADMIN TO '||V_NOMBRE_USUARIO;
ELSIF V_PERMISOS_NUEVOS_ID=100 AND V_PERMISOS_ANTERIORES_ID=101 THEN
EXECUTE IMMEDIATE
'REVOKE POS_ADMIN FROM '||V_NOMBRE_USUARIO;
EXECUTE IMMEDIATE
'GRANT POS_EMPLEADO TO '||V_NOMBRE_USUARIO;
END IF;
--ACTUALIZANDO USUARIO EN TABLA
UPDATE ROOT.USUARIO U
SET
U.NOMBRE = P_NOMBRE,
U.DISPONIBILIDAD = P_DISPONIBILIDAD,
U.PERMISOS_ID = V_PERMISOS_NUEVOS_ID
WHERE U.USUARIO_ID = P_USUARIO_ID;
COMMIT;
END;
CREATE OR REPLACE PROCEDURE SP_ELIMINAR_USUARIO
(
P_USUARIO_ID IN ROOT.USUARIO.USUARIO_ID%TYPE
)
AS
V_NOMBRE_USUARIO VARCHAR(20);
BEGIN
--OBTENIENDO NOMBRE DE USUARIO
V_NOMBRE_USUARIO:=F_OBTENER_USUARIO(P_USUARIO_ID);
--ELIMINANDO ESQUEMA DE LA BD
EXECUTE IMMEDIATE
'DROP USER '||V_NOMBRE_USUARIO;
--DESACTIVANDO USUARIO EN TABLA
UPDATE ROOT.USUARIO U
SET U.ESTADO_ELIMINACION=1
WHERE U.USUARIO_ID=P_USUARIO_ID;
COMMIT;
END;
CREATE OR REPLACE PROCEDURE SP_AGREGAR_CLIENTE
(
P_NOMBRE IN ROOT.CLIENTE.NOMBRE%TYPE,
P_TELEFONO IN ROOT.CLIENTE.TELEFONO%TYPE,
P_CORREO IN ROOT.CLIENTE.CORREO%TYPE
)
AS
BEGIN
INSERT INTO ROOT.CLIENTE
VALUES
(
SQ_CLIENTE.NEXTVAL,
P_NOMBRE,
P_TELEFONO,
P_CORREO,
SYSDATE,
0
);
COMMIT;
END;
CREATE OR REPLACE PROCEDURE SP_MODIFICAR_CLIENTE
(
P_CLIENTE_ID IN ROOT.CLIENTE.CLIENTE_ID%TYPE,
P_NOMBRE IN ROOT.CLIENTE.NOMBRE%TYPE,
P_TELEFONO IN ROOT.CLIENTE.TELEFONO%TYPE,
P_CORREO IN ROOT.CLIENTE.CORREO%TYPE
)
AS
BEGIN
UPDATE ROOT.CLIENTE C
SET C.NOMBRE=P_NOMBRE,
C.TELEFONO=P_TELEFONO,
C.CORREO=P_CORREO
WHERE C.CLIENTE_ID=P_CLIENTE_ID;
COMMIT;
END;
CREATE OR REPLACE PROCEDURE SP_ELIMINAR_CLIENTE
(
P_CLIENTE_ID IN ROOT.CLIENTE.CLIENTE_ID%TYPE
)
AS
BEGIN
UPDATE ROOT.CLIENTE C
SET C.ESTADO_ELIMINACION=1
WHERE C.CLIENTE_ID=P_CLIENTE_ID;
COMMIT;
END;
CREATE OR REPLACE PROCEDURE SP_AGREGAR_PROVEEDOR
(
P_RAZON_SOCIAL IN ROOT.PROVEEDOR.RAZON_SOCIAL%TYPE,
P_TELEFONO IN ROOT.PROVEEDOR.TELEFONO%TYPE,
P_CORREO IN ROOT.PROVEEDOR.CORREO%TYPE
)
AS
BEGIN
INSERT INTO ROOT.PROVEEDOR
VALUES
(
SQ_PROVEEDOR.NEXTVAL,
P_RAZON_SOCIAL,
P_TELEFONO,
P_CORREO,
SYSDATE,
0
);
COMMIT;
END;
CREATE OR REPLACE PROCEDURE SP_MODIFICAR_PROVEEDOR
(
P_PROVEEDOR_ID IN ROOT.PROVEEDOR.PROVEEDOR_ID%TYPE,
P_RAZON_SOCIAL IN ROOT.PROVEEDOR.RAZON_SOCIAL%TYPE,
P_TELEFONO IN ROOT.PROVEEDOR.TELEFONO%TYPE,
P_CORREO IN ROOT.PROVEEDOR.CORREO%TYPE
)
AS
BEGIN
UPDATE ROOT.PROVEEDOR P
SET P.RAZON_SOCIAL=P_RAZON_SOCIAL,
P.TELEFONO=P_TELEFONO,
P.CORREO=P_CORREO
WHERE P.PROVEEDOR_ID=P_PROVEEDOR_ID;
COMMIT;
END;
CREATE OR REPLACE PROCEDURE SP_ELIMINAR_PROVEEDOR
(
P_PROVEEDOR_ID IN ROOT.PROVEEDOR.PROVEEDOR_ID%TYPE
)
AS
BEGIN
UPDATE ROOT.PROVEEDOR P
SET P.ESTADO_ELIMINACION=1
WHERE P.PROVEEDOR_ID=P_PROVEEDOR_ID;
COMMIT;
END;
CREATE OR REPLACE PROCEDURE SP_AGREGAR_PRODUCTO
(
P_NOMBRE IN ROOT.PRODUCTO.NOMBRE%TYPE,
P_PRECIO IN ROOT.PRODUCTO.PRECIO%TYPE,
P_COSTO IN ROOT.PRODUCTO.COSTO%TYPE,
P_STOCK IN ROOT.PRODUCTO.STOCK%TYPE,
P_PRECIO_VARIABLE IN ROOT.PRODUCTO.PRECIO_VARIABLE%TYPE,
P_PERMITIR_DESCUENTOS IN ROOT.PRODUCTO.PERMITIR_DESCUENTOS%TYPE,
P_VISIBILIDAD_EN_CAJA IN ROOT.PRODUCTO.VISIBILIDAD_EN_CAJA%TYPE,
P_DEPARTAMENTO_ID IN ROOT.PRODUCTO.DEPARTAMENTO_ID%TYPE
)
AS
BEGIN
INSERT INTO ROOT.PRODUCTO
VALUES
(
SQ_PRODUCTO.NEXTVAL,
P_NOMBRE,
P_PRECIO,
P_COSTO,
P_STOCK,
P_PRECIO_VARIABLE,
P_PERMITIR_DESCUENTOS,
P_VISIBILIDAD_EN_CAJA,
SYSDATE,
0,
P_DEPARTAMENTO_ID
);
COMMIT;
END;
CREATE OR REPLACE PROCEDURE SP_MODIFICAR_PRODUCTO