-- CONTROLE EXECUTION PAIEMENT CHEQUE
-- 1--
SELECT -- *
	DISTINCT r.codePrestataire,
	r.regle,r.numeroReglement,r.dateComptable,r.montantPaye,r.userPaiement, 
	r.codeModePaiement,r.referencePaiement,r.dateReglement , 
	r.heureReglement,r.codeBanquePayeur,r.numeroDecompte
FROM p_reglement r
JOIN p_facture B ON (B.numeroDecompte = r.numeroDecompte)
WHERE  r.codeExercice = 2022 AND r.codeMois = 5  
AND r.regle=0
-- AND r.codePrestataire='PR0324'

-- 2--
SELECT 
	r.id,r.codePrestataire,r.valide,
	r.regle,r.dateReglement,r.heureReglement,
	r.montantRembourse,r.montantPaye,r.numeroDecompte 
FROM p_facture r
WHERE  r.codeExercice = 2022 AND r.codeMois = 5  AND r.montantPaye>0   -- PR0324
-- AND r.codePrestataire='PR0324'
GROUP BY codePrestataire


-- 3--
SELECT -- *
	r.codePrestataire,r.montantApayer,r.numeroDecompte,f.fregle,f.montantRembourse,r.numeroFeuilleMaladie
FROM p_facture r
INNER JOIN p_feuillemaladie f ON (f.numeroFeuilleMaladie=r.numeroFeuilleMaladie)
WHERE  r.codeExercice = 2022 AND r.codeMois = 5 AND r.montantPaye>0 
AND r.codePrestataire='PR0324'



-- procédure decompte INTERSANTE
CALL  `sp_perso_decompte_periode_tp`('2022','06')


-- Procedure decompte par prestataire
CALL sp_r_get_reglement (1893)


-- PROCEDURE RAF PRESTATAIRE
-- CALL  `sp_perso_regl_RAF_rp`('PR0324','2022','05')

CALL  `sp_perso_regl_RAF_rp`(NULL,'2022','05','0')



CALL sp_cheque_vitalisSante_rp('2022','01','CH','BRIDGE',100555,'lionel',NULL)




SELECT codeSociete INTO @codeSociete FROM societeuser LIMIT 1;

SELECT fn_deniernumeroreglement(@codeSociete) INTO @idPaiementDecompte;

-- select @idPaiementDecompte;  -- 103091
	
DROP TEMPORARY TABLE IF EXISTS temp_cheque;
CREATE TEMPORARY TABLE temp_cheque
	(
		p_referencePaiement 	BIGINT,
		p_idPaiementDecompte    BIGINT,
		p_dateComptable	        DATE,
		p_montantPaye           DOUBLE(20,0),
		p_codeModePaiement      VARCHAR(5),	
		p_codeBanquePayeur      VARCHAR(10),
		p_user      VARCHAR(10),
		numeroDecompte 	SMALLINT,
		idReglement    SMALLINT
	);
	
INSERT INTO temp_cheque (p_referencePaiement,p_idPaiementDecompte,p_dateComptable,p_montantPaye,
p_codeModePaiement,p_codeBanquePayeur,p_user,numeroDecompte,idReglement)	

SELECT DISTINCT @n := @n + 1 AS p_referencePaiement,
  -- fn_deniernumeroreglement('vitalis') AS p_idPaiementDecompte,
  @p := @p + 1 AS p_idPaiementDecompte,
  CONCAT(A.codeExercice,"-",A.codeMois,"-",(CASE 
		WHEN A.codeMois IN ("01","03","05","07","08","10","12") THEN "31"
		WHEN A.codeMois IN ("04","06","09","11") THEN "30"
		WHEN A.codeMois IN ("02") THEN 
		(CASE WHEN (A.codeExercice%4=0 AND A.codeExercice%100!=0 OR A.codeExercice%400=0)
		THEN "29"ELSE "28"END )END)) AS p_dateComptable,
		A.montantAPayer AS p_montantPaye,
		-- B.montantAPayer AS p_montantPaye,
		'CH' AS p_codeModePaiement,'NSIA' AS p_codeBanquePayeur,'lionel' AS p_user,
		A.numeroDecompte,A.id AS idReglement,B.codePrestataire
FROM  (SELECT @n :=500655-1) m ,(SELECT @p :=@idPaiementDecompte-1) d , p_reglement A -- incrémentation du cheque en remplaçant : 100
JOIN p_facture B ON (B.numeroDecompte = A.numeroDecompte)
LEFT JOIN r_paiementdecompte C ON (C.id=A.idPaiementDecompte)
WHERE (A.tiersPayant="1") AND (A.fraisRetenu>"0") AND A.montantAPayer>0
AND B.codePrestataire NOT IN ('CE0416','PR1176','CE1215','CE1232','CE1287','PR1175','CE1276')
AND A.codeExercice = 2022 AND A.codeMois = 5
ORDER BY p_referencePaiement;


UPDATE p_reglement r
JOIN temp_cheque t ON (t.idReglement=r.id)
SET
	r.regle			= "1",
	r.numeroReglement	= p_idPaiementDecompte,
	r.dateComptable		= p_dateComptable,
	r.montantPaye 		= p_montantPaye, 
	r.userPaiement 		= p_user, 
	r.codeModePaiement 	= p_codeModePaiement, 
	r.referencePaiement 	= p_referencePaiement,
	r.dateReglement 	= CURDATE(), 
	r.heureReglement 	= NOW(),
	r.codeBanquePayeur 	= p_codeBanquePayeur;
	 
UPDATE p_facture r
JOIN temp_cheque t ON (t.numeroDecompte=r.numeroDecompte) 
SET
	r.regle 			= "1",	
	r.dateReglement		= p_dateComptable,
	r.heureReglement 		= NOW(),
	r.montantRembourse 	= montantApayer, 
	r.montantPaye 		= montantApayer
WHERE (r.valide="1");
 
UPDATE p_feuillemaladie A
JOIN p_facture B ON (B.numeroFeuilleMaladie=A.numeroFeuilleMaladie)
AND (B.codePrestataire=A.codePrestataire) AND (B.id=A.idFactureFeuille)
JOIN temp_cheque t ON (t.numeroDecompte=B.numeroDecompte) 
SET
	A.fregle 		= "1",
	A.montantRembourse	= B.montantPaye
WHERE  (B.valide="1");


SELECT * FROM temp_cheque ORDER BY p_referencePaiement;
DROP TEMPORARY TABLE IF EXISTS temp_cheque;
