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