1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| begin
with
/**************************************************************************/
/* fournit la date de la derniere facture du mois passé en paramètre */
date_facture as (
select t_entetefacture.datecreation as datefacture, t_entetefacture.numclifour as numclifour
from t_entetefacture inner join t_clifour on (t_entetefacture.numclifour = t_clifour.numclifour)
where extract(month from t_entetefacture.datecreation) = :mois and t_clifour.reglement = 'T')
,
/***************************************************************************/
/* fournit la somme des montants des factures du mois fournit en paramètre */
somme_factures as (
select sum(t_entetefacture.mtpayablettc) as montant, t_clifour.numclifour from t_entetefacture
inner join t_clifour on (t_entetefacture.numclifour = t_clifour.numclifour)
where extract(month from t_entetefacture.datecreation) = :mois and t_clifour.reglement = 'T' group by t_clifour.numclifour)
/***************************************************************************/
update or insert into t_reglement ( t_reglement.numclifour,t_reglement.moderegle, t_reglement.dateecheance,
t_reglement.montant, T_reglement.banque, t_reglement.codbanque, t_reglement.codguichet,
t_reglement.numcompte,t_reglement.clerib, t_reglement.typecriture)
values(
select t_clifour.numclifour, t_clifour.reglement, dateadd(day, -1,
dateadd(month, t_clifour.echeance + 1, '01.' || :mois ||'.'|| extract(year from (
select first 1 date_facture.datefacture from date_facture order by date_facture.datefacture desc)))) as dateecheance,
somme_factures.montant, t_banques.banque, t_banques.codebanque, t_banques.codeguichet, t_banques.numcompte,t_banques.cle,
'G'
from t_clifour inner join t_banques on (t_clifour.numclifour = t_banques.numclifour)
inner join somme_factures on (t_clifour.numclifour = t_somme_factures.numclifour)
inner join date_facture on (t_clifour.numclifour = date_facture.numclifour)
where t_banques.modregleactif = 'O')
matching (t_reglement.numclifour, t_reglement.dateecheance);
end |
Partager