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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
| FUNCTION FDG_CLIENT_CAFF (
datedebut IN VARCHAR2,
datefin VARCHAR2,
fonds IN VARCHAR2,
entite IN VARCHAR2,
portefeuille IN VARCHAR2,
compteespece IN VARCHAR2
)
RETURN VARCHAR2
IS
fond VARCHAR2 (15);
datevl DATE;
code_entite VARCHAR2 (15);
code_portefeuille VARCHAR2 (30);
code_compte_espece VARCHAR2 (30);
nombre_part NUMBER;
fdg_client NUMBER;
actif_net NUMBER;
gestionnaire VARCHAR2 (20);
taux NUMBER;
commission NUMBER;
xml_file VARCHAR2 (4000);
resultat VARCHAR2 (100);
str_taux VARCHAR2 (10);
str_entite VARCHAR2 (10);
condition VARCHAR2 (200);
requete VARCHAR2 (2000);
CURSOR cdata
IS SELECT a.date_vl, a.fonds, a.entite,
a.portefeuille, a.compte_espece,
a.nbr_part, a.fdg, a.actif_net
FROM tp.histo_fdg_client a where 1=1 || condition;
BEGIN
if (datedebut is not null and length(datedebut) <> 0) then
condition := condition || ' AND a.date_vl >= TO_DATE( ' || datedebut || ' ,''dd/mm/yyyy'')';
end if;
/* if (datefin is not null and length(datefin) <> 0) then
condition := condition || ' AND a.date_vl <= TO_DATE( ' || datefin || ' ,''dd/mm/yyyy'')';
end if;
if (fonds is not null and length(fonds) <> 0) then
condition := condition || ' AND a.fonds =' || fonds;
end if;
if (entite is not null and length(entite) <> 0) then
condition := condition || ' AND a.entite =' || entite;
end if;
if (portefeuille is not null and length(portefeuille) <> 0) then
condition := condition || ' AND a.portefeuille =' || portefeuille;
end if;
if (compteespece is not null and length(compteespece) <> 0) then
condition := condition || ' AND a.compte_espece =' || compteespece;
end if; */
-- requete := requete || condition;
str_entite := REPLACE (entite, '''', '');
xml_file := EXECUTE_QUERY (str_entite);
IF (xml_file IS NULL OR LENGTH (xml_file) = 0)
THEN
RETURN 'Echec d''enregistrement, fichier XML inexistant !!';
END IF;
resultat := parser_fichier_xml (xml_file);
IF (resultat IS NULL OR LENGTH (resultat) = 0)
THEN
RETURN 'Echec d''enregistrement, fichier XML erroné !!';
END IF;
-- extraction de taux et commission
gestionnaire := SUBSTR (resultat, 0, INSTR (resultat, '#') - 1);
str_taux := RTRIM (SUBSTR (resultat, INSTR (resultat, '#') + 1, LENGTH (resultat)));
taux := TO_NUMBER (RTRIM (LTRIM (REPLACE (REPLACE (str_taux, '.', ','), CHR (10), ''))));
OPEN cdata;
LOOP
FETCH cdata
INTO datevl, fond, code_entite, code_portefeuille, code_compte_espece,
nombre_part, fdg_client, actif_net;
commission := fdg_client * taux;
INSERT INTO tp.histo_fdg_client_ca
(date_vl, fonds, entite, portefeuille,
compte_espece, nbr_part, fdg, actif_net,
gestionnaire, taux, commission
)
VALUES (datevl, fond, code_entite, code_portefeuille,
code_compte_espece, nombre_part, fdg_client, actif_net,
gestionnaire, REPLACE (taux, '.', ','), commission
);
EXIT WHEN cdata%NOTFOUND;
END LOOP;
CLOSE cdata;
COMMIT;
RETURN 'Enregistrement effectué avec succé !!';
EXCEPTION
WHEN OTHERS
THEN
RETURN 'Echec d''enregistrement !!';
END; |
Partager