171 lines
4.8 KiB
SQL
171 lines
4.8 KiB
SQL
--PACKAGE GestArt
|
|
CREATE OR REPLACE PACKAGE BODY GestArt
|
|
AS
|
|
tSQL varchar2(300);
|
|
|
|
--CORPO DELLA PROCEDURA IsArtPresent
|
|
PROCEDURE Sp_InsArticolo(CODART_I IN ARTICOLI.CODART%TYPE,
|
|
DESCRIZIONE_I IN ARTICOLI.DESCRIZIONE%TYPE, UM_I IN ARTICOLI.UM%TYPE,
|
|
CODSTAT_I IN ARTICOLI.CODSTAT%TYPE, PZCART_I IN ARTICOLI.PZCART%TYPE,
|
|
PESONETTO_I IN ARTICOLI.PESONETTO%TYPE, IDIVA_I IN ARTICOLI.IDIVA%TYPE,
|
|
IDSTATO_I IN ARTICOLI.IDSTATOART%TYPE, IDFAMASS_I IN ARTICOLI.IDFAMASS%TYPE)
|
|
IS
|
|
V_IfExists BOOLEAN;
|
|
BEGIN
|
|
|
|
V_IfExists := IsArtPresent(CODART_I);
|
|
|
|
IF V_IfExists = TRUE THEN
|
|
UPDATE ARTICOLI
|
|
SET
|
|
DESCRIZIONE = DESCRIZIONE_I,
|
|
UM = UM_I,
|
|
CODSTAT = CODSTAT_I,
|
|
PZCART = PZCART_I,
|
|
PESONETTO = PESONETTO_I,
|
|
IDIVA = IDIVA_I,
|
|
IDSTATOART = IDSTATO_I,
|
|
IDFAMASS = IDFAMASS_I
|
|
WHERE CODART = CODART_I;
|
|
ELSE
|
|
INSERT INTO ARTICOLI
|
|
VALUES(CODART_I,DESCRIZIONE_I,UM_I,CODSTAT_I,PZCART_I,
|
|
PESONETTO_I,IDIVA_I,IDSTATO_I,SYSDATE,IDFAMASS_I);
|
|
END IF;
|
|
|
|
END Sp_InsArticolo;
|
|
|
|
--CORPO DELLA FUNZIONE Uf_GetQtaMag
|
|
FUNCTION Uf_GetQtaMag(CODART_I IN ARTICOLI.CODART%TYPE)
|
|
RETURN NUMBER
|
|
AS
|
|
V_RetVal NUMBER;
|
|
BEGIN
|
|
SELECT (ACQUISTATO - RESO - VENDUTO - USCITE - SCADUTI) INTO V_RetVal
|
|
FROM MOVIMENTI
|
|
WHERE
|
|
CODART = CODART_I;
|
|
|
|
RETURN V_RetVal;
|
|
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
RETURN 0;
|
|
WHEN TOO_MANY_ROWS THEN
|
|
RAISE_APPLICATION_ERROR (-20001, 'Errore Calcolo Magazzino Articolo ' || CODART_I);
|
|
RETURN 0;
|
|
|
|
END Uf_GetQtaMag;
|
|
|
|
--CORPO DELLA FUNZIONE Uf_GetVenMese
|
|
FUNCTION Uf_GetVenMese(CODART_I IN ARTICOLI.CODART%TYPE, MeseRif_I NUMBER, AnnoRif_I NUMBER)
|
|
RETURN NUMBER
|
|
AS
|
|
V_RetVal NUMBER;
|
|
BEGIN
|
|
SELECT SUM(VALORE) INTO V_RetVal
|
|
FROM VW_SCONTRINI
|
|
WHERE
|
|
CODART = CODART_I AND
|
|
EXTRACT(MONTH FROM DATA) = MeseRif_I AND
|
|
EXTRACT(YEAR FROM DATA) = AnnoRif_I;
|
|
|
|
RETURN V_RetVal;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
RETURN 0;
|
|
|
|
END Uf_GetVenMese;
|
|
|
|
--CORPO DELLA FUNZIONE IsArtPresent
|
|
FUNCTION IsArtPresent(CODART_I IN ARTICOLI.CODART%TYPE)
|
|
RETURN BOOLEAN
|
|
IS
|
|
V_Count_Art number;
|
|
BEGIN
|
|
SELECT COUNT(*) INTO V_Count_Art
|
|
FROM ARTICOLI WHERE CODART = CODART_I;
|
|
|
|
IF (V_Count_Art > 0) THEN
|
|
RETURN TRUE;
|
|
ELSE
|
|
RETURN FALSE;
|
|
END IF;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
RETURN FALSE;
|
|
END IsArtPresent;
|
|
|
|
--CORPO DELLA PROCEDURA Sp_SelArticolo
|
|
PROCEDURE Sp_SelArticolo(CODART_I IN ARTICOLI.CODART%TYPE,
|
|
ARTICOLO_O OUT Info_Articolo)
|
|
IS
|
|
BEGIN
|
|
|
|
OPEN ARTICOLO_O FOR
|
|
SELECT
|
|
A.CODART,
|
|
A.DESCRIZIONE,
|
|
A.UM,
|
|
A.PZCART,
|
|
A.CODSTAT,
|
|
A.PESONETTO,
|
|
A.IDIVA AS IVA,
|
|
A.IDSTATOART AS STATO,
|
|
A.IDFAMASS,
|
|
TRIM(B.DESCRIZIONE) AS REPARTO,
|
|
Uf_GetQtaMag(A.CODART) AS QtaMag
|
|
FROM ARTICOLI A JOIN FAMASSORT B
|
|
ON A.IDFAMASS = B.ID
|
|
WHERE CODART = CODART_I;
|
|
|
|
END Sp_SelArticolo;
|
|
|
|
--CORPO DELLA PROCEDURA Sp_SelArticolo
|
|
PROCEDURE Sp_SelArticolo(Parametro IN ARTICOLI.DESCRIZIONE%TYPE, Tipo IN NUMBER,
|
|
RECORDSET_P OUT SYS_REFCURSOR)
|
|
IS
|
|
|
|
BEGIN
|
|
|
|
tSQL := 'SELECT
|
|
CODART,
|
|
DESCRIZIONE,
|
|
UM,
|
|
PZCART,
|
|
CODSTAT,
|
|
PESONETTO,
|
|
IDIVA AS IVA,
|
|
IDSTATOART AS STATO,
|
|
IDFAMASS
|
|
FROM ARTICOLI ';
|
|
|
|
IF Tipo = 1 THEN --CASO CODART
|
|
OPEN RECORDSET_P FOR
|
|
tSQL || ' WHERE CODART = :1'
|
|
USING PARAMETRO;
|
|
ELSIF TIPO = 2 THEN --CASO DESCRIZIONE
|
|
OPEN RECORDSET_P FOR
|
|
tSQL || ' WHERE DESCRIZIONE LIKE :1'
|
|
USING PARAMETRO;
|
|
ELSIF TIPO = 3 THEN --CASE BARCODE
|
|
OPEN RECORDSET_P FOR
|
|
tSQL || ' CODART IN (SELECT CODART FROM BARCODE WHERE BARCODE = :1)'
|
|
USING PARAMETRO;
|
|
END IF;
|
|
|
|
END Sp_SelArticolo;
|
|
|
|
--CORPO DELLA PROCEDURA Sp_DelArticolo
|
|
PROCEDURE Sp_DelArticolo(CODART_I IN ARTICOLI.CODART%TYPE)
|
|
AS
|
|
BEGIN
|
|
IF IsArtPresent(CODART_I) THEN
|
|
DELETE FROM ARTICOLI WHERE CODART = CODART_I;
|
|
END IF;
|
|
END;
|
|
|
|
END GestArt; |