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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| CREATE PROCEDURE PST_AJOUT_REGLEMENTS (
mois integer)
as
declare variable numclifour bigint;
declare variable reglement integer;
declare variable dateecheance date;
declare variable montant decimal(15,2);
declare variable banque varchar(30);
declare variable codebanque varchar(10);
declare variable codeguichet varchar(10);
declare variable numcompte varchar(20);
declare variable cle varchar(10);
declare variable typecriture integer;
begin
FOR
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 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' group by t_clifour.numclifour)
/***************************************************************************/
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 = somme_factures.numclifour)
inner join date_facture on (t_clifour.numclifour = date_facture.numclifour)
where t_banques.modregleactif = 'O'
into
:numclifour,
:reglement,
:dateecheance,
:montant,
:banque,
:codebanque,
:codeguichet,
:numcompte,
:cle,
:typecriture
do
begin
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(:numclifour, :reglement, :dateecheance, :montant, :banque, :codebanque, :codeguichet, :numcompte, :cle, :typecriture)
matching (t_reglement.numclifour, t_reglement.dateecheance);
end
end |
Partager