--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;