AP44/sqlFunction.sql

56 lines
1.5 KiB
PL/PgSQL

--Fonction pour créer une fiche si celle-ci n'existe pas
CREATE OR REPLACE FUNCTION newRemboursement(userId CHAR(10), monthFile CHAR(10)) RETURNS int AS $$
DECLARE
returnValue INT;
forfaitRecord RECORD;
BEGIN
SELECT COUNT(*) INTO returnValue
FROM remboursement
WHERE "rVisiteur" = userId AND "rMois" = monthFile;
IF returnValue = 0 THEN
-- Ajoute une nouvelle ligne à la table remboursement
INSERT INTO remboursement
VALUES(userId, monthFile, 0, 0, CURRENT_DATE, 'CR');
-- Parcours des lignes de la table forfait pour insérer dans ligne_hors_forfait
FOR forfaitRecord IN SELECT * FROM forfait LOOP
INSERT INTO ligne_forfait
VALUES(userId, monthFile, forfaitRecord."fId", 0, 0);
END LOOP;
-- Mettre à jour la valeur de returnValue après l'insertion
returnValue := 1; -- Valeur pour indiquer qu'une ligne a été insérée
END IF;
RETURN returnValue;
END;
$$ LANGUAGE 'plpgsql';
--AJOUTE LES LIGNES HF
INSERT ligne_hors_forfait
("lhVisiteur", "lhMois", "lhLibelle", "lhDate", "lhMontant", "lhJustificatif", "lhRefus")
VALUES (:userId, :monthF, :libelle, :dateL, :mttF, 'true', 'false');
--UPDATE LES LIGNES HF SI REFUS
UPDATE ligne_hors_forfait
SET "lhRefus" = 'true'
WHERE "rVisiteur" = '' AND "rMois" = '' AND "lhId" = '';
--UPDATE LES LIGNE FORFAIT
UPDATE ligne_forfait
SET "lfQuantite" = :qttF,
"lfMontant" = :mttF
WHERE "rVisiteur" = :userId AND "rMois" = :monthF AND "lfForfait" = :idForfait;