-- tm 0
-- p_valeurActe=250000 

-- verification de la fonction
SELECT fn_ticket_moderateur_garantie(335,'HOS') INTO @tMgarantie;

-- RECHERCHE DU TICKET MODERATEUR 
SELECT b.idPolice,b.idCollege,b.codeProduit,c.idBaremePriseEnCharge ,CASE WHEN f.ticketModerateur!=0 THEN f.ticketModerateur  ELSE  1000 END AS ticketModerateur
INTO @idPolice,@idCollege, @codeProduit,@idBaremePriseEnCharge,@ticketModerateur 
FROM beneficiaire b 
INNER JOIN college c ON (b.idCollege=c.id)
INNER JOIN familleactebaremepriseencharge f ON (f.idBaremePriseEnCharge=c.idBaremePriseEnCharge)
WHERE b.id=335
AND f.codeProduit='80% ME' AND f.codeGarantie='HOS';


-- RECHERCHE DES INFORMATIONS HOSPIT
SELECT IFNULL(quantite,0) AS quantite,idBeneficiaire,numeroFeuilleMaladie,codePrestataire,numeroBonHospitalisation,
IFNULL(SUM(fraisReel),"0") AS fraisReel,"HOS" AS codeGarantie,fn_ticket_moderateur_garantie(idBeneficiaire,"HOS") AS tMgarantie
INTO @quantite,@idBeneficiaire,@numeroFeuilleMaladie,@codePrestataire,@numeroBonHospitalisation,@fraisReelCumule,@codeGarantie,@tMgarantie
FROM p_prestationacteshospitalisation
WHERE ententePrealable NOT IN ("2","9")
AND id=343
GROUP BY quantite,idBeneficiaire,numeroFeuilleMaladie,codePrestataire,numeroBonHospitalisation


-- RECHERCHES DU PLAFONDS
SELECT `forfaitPlafond` INTO @forfaitPlafond
FROM `familleactebaremepriseencharge`   WHERE `idBaremePriseEnCharge` = @idBaremePriseEnCharge
AND `codeProduit` = @codeProduit AND `codeGarantie` = @codeGarantie LIMIT 1;

-- VISUALISATION DU PLAFONC
SELECT  @forfaitPlafond

-- VISUALISATION DES VARIABLES

SELECT @idPolice,@idCollege, @codeProduit,@idBaremePriseEnCharge,@ticketModerateur ;

SELECT @quantite,@idBeneficiaire,@numeroFeuilleMaladie,@codePrestataire,@numeroBonHospitalisation,@fraisReelCumule,@codeGarantie,@tMgarantie;


-- CONTROLE TM
-- AFFECTATION DES PARAMETRE,VALEUR ACTE 250000
SELECT 250000 INTO @prixBase;
	
SELECT 250000*@quantite INTO @fraisReel;
	
SELECT 250000*@quantite INTO @fraisReelBase;

-- RECHERCHE DU MONTANT DU TICKET MODERATEUR 0	
SELECT ROUND((@fraisReelBase*IFNULL(0,"0"))/"100") INTO @montantTm;

-- VISUALISATION DU MONTANT DU TICKET MODERATEUR

SELECT 	@montantTm;

-- AFFECTATION DES MONTANTS REMBOURSER,DEPASSEMENT,SUPPOSE PLAFOND
SELECT (@fraisReelBase - @montantTm) INTO @montantArembourser;
	
SELECT @fraisReel-@fraisReelBase INTO @depassement;
	
SELECT (@forfaitPlafond - @fraisReelCumule) INTO @diffPlafond;

-- VISUALISATION DU MONTANT A REMBOURSER,DEPASSEMENT,DIFFPLAFOND
SELECT @montantArembourser,@depassement,@diffPlafond,@fraisReel,@fraisReelBase,@prixBase;


-- MISE A JOUR DES MONTANTS
UPDATE p_prestationacteshospitalisation SET valeurActe= 250000,prixBase = 250000,
		fraisReel= IFNULL(@fraisReel,"0"),fraisReelBase= IFNULL(@fraisReelBase,"0"),
		montantTm= IFNULL(@montantTm,"0"), 
		montantArembourser= CASE WHEN (@diffPlafond >= @fraisReel) THEN
						IFNULL(@montantArembourser,"0") 
					  ELSE
						CASE WHEN @diffPlafond > "0"  THEN
							@diffPlafond
						ELSE 
							"0"
						END
					  END,
		fraisRetenu= CASE WHEN (@diffPlafond >= @fraisReel) THEN
						IFNULL(@montantArembourser,"0") 
					  ELSE
						CASE WHEN @diffPlafond > "0"  THEN
							@diffPlafond
						ELSE 
							"0"
						END
					  END,
		montantApayerCalc= CASE WHEN (@diffPlafond >= @fraisReel) THEN
						IFNULL(@montantArembourser,"0") 
					  ELSE
						CASE WHEN @diffPlafond > "0"  THEN
							@diffPlafond
						ELSE 
							"0"
						END
					  END,
		montantApayer	= CASE WHEN (@diffPlafond >= @fraisReel) THEN
						IFNULL(@montantArembourser,"0") 
					  ELSE
						CASE WHEN @diffPlafond > "0"  THEN
							@diffPlafond
						ELSE 
							"0"
						END
					  END,
		depassement		= CASE WHEN (@diffPlafond >= @fraisReel) THEN
						IFNULL(@depassement,"0") 
					  ELSE
						CASE WHEN @diffPlafond > "0"  THEN
							@fraisReel - @diffPlafond
						ELSE 
							@fraisReel
						END
					  END
	WHERE (id=343);

-- VISUALISATION DES DONNEES APRES MISE A JOUR
SELECT * FROM p_prestationacteshospitalisation WHERE (id=343);

	
	

	 