CWTD#14550

svn path=/Customer/trunk/; revision=13734
This commit is contained in:
Arthur Egberink
2008-11-17 08:59:16 +00:00
parent 8e473880a6
commit a2c7db8ab1
2 changed files with 779 additions and 2 deletions

24
CWTD/Once/CWTD#14550.sql Normal file
View File

@@ -0,0 +1,24 @@
SET ECHO ON
SPOOL xcwtd#14550.lst
PROMPT $Revision: 1 $
CREATE TABLE CWTD_IMP_FACTUUR
(
LEVERANCIERNR VARCHAR2(10 BYTE),
FACTUURNR VARCHAR2(12 BYTE),
FACTUURDATUM VARCHAR2(8 BYTE),
ORDERNR VARCHAR2(13 BYTE),
AANTAL VARCHAR2(10 BYTE),
KOSTPRIJS VARCHAR2(11 BYTE),
INCL_BTW VARCHAR2(11 BYTE),
BTW_BEDRAG VARCHAR2(11 BYTE),
OMSCHRIJVING VARCHAR2(60 BYTE)
)
commit;
SPOOL OFF

View File

@@ -1,7 +1,7 @@
-- Script containing customer specific configuration sql statements for CWTD
-- (c) 2008 Facilitor
-- $Revision: 3 $
-- $Modtime: 16-09-08 12:46 $
-- $Revision: 4 $
-- $Modtime: 11-11-08 17:17 $
--
-- Support: +31 53 4800700
@@ -1074,6 +1074,759 @@ EXCEPTION
END;
/
----------------------------------------------------------
-- IMPORT FACTUREN ---------------------------------------
----------------------------------------------------------
CREATE OR REPLACE FUNCTION CWTD_FACT_IN_MARGE (p_FIN_FACTUUR_KEY IN NUMBER) RETURN NUMBER IS
v_mld_opdr_key NUMBER;
v_bes_bestelopdr_key NUMBER;
v_cnt_contract_key NUMBER;
v_factuur_bedrag NUMBER;
v_marge NUMBER;
v_pct NUMBER;
v_appr NUMBER;
v_opdr_totaal NUMBER;
BEGIN
SELECT mld_opdr_key, bes_bestelopdr_key, cnt_contract_key, fin_factuur_totaal
INTO v_mld_opdr_key, v_bes_bestelopdr_key, v_cnt_contract_key, v_factuur_bedrag
FROM fin_factuur
WHERE fin_factuur_key = p_fin_factuur_key;
IF v_mld_opdr_key IS NOT NULL THEN
SELECT dp.mld_disc_params_factuurmarge, dp.mld_disc_params_factuurpct, dp.mld_disc_params_factuurappr, o.mld_opdr_kosten
INTO v_marge, v_pct, v_appr, v_opdr_totaal
FROM mld_opdr o
, mld_melding m
, mld_discipline md
, mld_disc_params dp
WHERE o.mld_opdr_key = v_mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_discipline_key = dp.mld_ins_discipline_key;
END IF;
IF v_cnt_contract_key IS NOT NULL THEN
SELECT cp.cnt_disc_params_factuurmarge, cp.cnt_disc_params_factuurpct, cp.cnt_disc_params_factuurappr, c.cnt_contract_termijnkosten
INTO v_marge, v_pct, v_appr, v_opdr_totaal
FROM cnt_contract c
, cnt_discipline cd
, cnt_disc_params cp
WHERE c.ins_discipline_key = cd.ins_discipline_key
AND cd.ins_discipline_key = cp.cnt_ins_discipline_key
AND c.cnt_contract_key = v_cnt_contract_key;
END IF;
IF v_bes_bestelopdr_key IS NOT NULL THEN
SELECT bp.bes_disc_params_factuurmarge, bp.bes_disc_params_factuurpct, bp.bes_disc_params_factuurappr, sum(boi.bes_bestelopdr_item_aantal*boi.bes_bestelopdr_item_prijs)
INTO v_marge, v_pct, v_appr, v_opdr_totaal
FROM bes_bestelopdr_item boi
, bes_bestelling_item bbi
, ins_srtdeel isd
, ins_srtgroep isg
, bes_discipline bd
, bes_disc_params bp
WHERE boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key
AND bbi.ins_srtdeel_key = isd.ins_srtdeel_key
AND isd.ins_srtgroep_key = isg.ins_srtgroep_key
AND isg.ins_discipline_key = bd.ins_discipline_key
AND bd.ins_discipline_key = bp.bes_ins_discipline_key
AND boi.bes_bestelopdr_key = v_bes_bestelopdr_key
GROUP BY bp.bes_disc_params_factuurmarge, bp.bes_disc_params_factuurpct, bp.bes_disc_params_factuurappr;
END IF;
IF v_appr = 1 THEN
v_marge := NVL(v_marge, 0);
v_pct := NVL(v_pct, 0);
IF v_opdr_totaal + v_marge > v_factuur_bedrag
OR v_opdr_totaal * (1 + (v_pct / 100)) > v_factuur_bedrag THEN
RETURN 1;
END IF;
END IF;
RETURN 0;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Oracle exception in CWTD_FACT_IN_MARGE');
RETURN 0;
END CWTD_FACT_IN_MARGE;
/
-- Procedure voor de import van facturen (van WINGS)
CREATE OR REPLACE PROCEDURE cwtd_import_factuur (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
v_field VARCHAR2 (100);
v_fielddelimitor VARCHAR2 (1);
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
-- De velden op de eerste regel
v_totbedrfact VARCHAR2 (100);
v_totbedrfactvalue VARCHAR2 (100);
-- De importvelden
v_empty VARCHAR2 (100);
v_ordernr VARCHAR2 (1000);
v_leveranciernr VARCHAR2 (100);
v_factuurnr VARCHAR2 (100);
v_factuurdatum VARCHAR2 (100);
v_aantal VARCHAR2 (100);
v_kostprijs VARCHAR2 (100);
v_btw VARCHAR2 (100);
v_btw_bedrag VARCHAR2 (100);
v_omschrijving VARCHAR2 (100);
v_check_dec_sign NUMBER(5,2);
CURSOR cfactuur
IS
SELECT *
FROM fac_imp_file
WHERE fac_imp_file_applicatie = p_applname
ORDER BY FAC_IMP_FILE_INDEX;
v_rec cfactuur%rowtype;
BEGIN
-- Init
v_fielddelimitor := ';';
header_is_valid := 0;
DELETE FROM cwtd_imp_factuur;
DELETE imp_log
WHERE imp_log_applicatie = 'FACTUUR';
-- check the client decimal settings
-- we do not convert the , to a . if the client decimal separator is a ,
SELECT FAC.SAFE_TO_NUMBER('2,5')
INTO v_check_dec_sign
FROM DUAL;
OPEN cfactuur;
IF cfactuur%ISOPEN THEN
LOOP
BEGIN
FETCH cfactuur INTO v_rec;
EXIT WHEN cfactuur%NOTFOUND;
v_newline := v_rec.fac_imp_file_line;
v_aantal := 1;
fac.imp_getfield (v_newline, v_fielddelimitor, v_empty); -- createdatum wordt niet gebruikt
fac.imp_getfield (v_newline, v_fielddelimitor, v_leveranciernr);
fac.imp_getfield (v_newline, v_fielddelimitor, v_empty); -- documentnr wordt niet gebruikt
fac.imp_getfield (v_newline, v_fielddelimitor, v_factuurnr);
fac.imp_getfield (v_newline, v_fielddelimitor, v_factuurdatum);
fac.imp_getfield (v_newline, v_fielddelimitor, v_ordernr);
fac.imp_getfield (v_newline, v_fielddelimitor, v_omschrijving);
fac.imp_getfield (v_newline, v_fielddelimitor, v_aantal);
fac.imp_getfield (v_newline, v_fielddelimitor, v_kostprijs); -- bedrag excl btw
fac.imp_getfield (v_newline, v_fielddelimitor, v_btw_bedrag); -- totaal incl btw
fac.imp_getfield (v_newline, v_fielddelimitor, v_btw); -- btw
IF v_check_dec_sign IS NULL THEN
v_kostprijs := REPLACE (SUBSTR (v_kostprijs, 1, 11), ',', '.');
v_btw_bedrag := REPLACE (SUBSTR (v_btw_bedrag, 1, 11), ',', '.');
v_btw := REPLACE (SUBSTR (v_btw, 1, 11), ',', '.');
ELSE
v_kostprijs := SUBSTR (v_kostprijs, 1, 11);
v_btw_bedrag := SUBSTR (v_btw_bedrag, 1, 11);
v_btw := SUBSTR (v_btw, 1, 11);
END IF;
INSERT INTO cwtd_imp_factuur
(ordernr,
leveranciernr,
factuurnr,
factuurdatum,
aantal,
kostprijs,
btw,
btw_bedrag,
omschrijving
)
VALUES (SUBSTR (v_ordernr, 1, 13),
UPPER(SUBSTR (v_leveranciernr, 1, 10)),
SUBSTR (v_factuurnr, 1, 10),
SUBSTR (v_factuurdatum, 1, 8),
1,
v_kostprijs,
v_btw,
v_btw_bedrag,
SUBSTR ('Factuur: '|| v_factuurnr, 1, 60)
);
COMMIT;
END;
END LOOP;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_applname, p_applrun, 'E', v_errormsg, '');
END;
/
/* Formatted on 2006/07/06 16:46 (Formatter Plus v4.8.5) */
CREATE OR REPLACE PROCEDURE cwtd_update_factuur (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR cfactuur
IS
SELECT RTRIM (LTRIM (ordernr)) ordernr,
leveranciernr,
factuurnr,
factuurdatum,
SUM (kostprijs) totaal,
SUM (btw_bedrag) totaal_btw,
SUBSTR (factuurdatum, 5, 4) fjaar,
SUBSTR (factuurdatum, 3, 2) fmaand,
SUBSTR (factuurdatum, 1, 2) fdag,
SUM (aantal) aantal,
omschrijving,
SUM (btw_bedrag) btw_bedrag
FROM cwtd_imp_factuur
GROUP BY ordernr,
leveranciernr,
factuurnr,
factuurdatum,
factuurdatum,
omschrijving
ORDER BY ordernr DESC;
c_i NUMBER;
c_teller NUMBER;
c_index NUMBER;
c_factuurregel NUMBER;
c_fac_type VARCHAR2 (1);
c_prefix VARCHAR2 (3);
c_ordernr_index NUMBER;
c_ordernr_s1 VARCHAR2 (20);
c_ordernr_s2 VARCHAR2 (20);
c_ordernr_t VARCHAR2 (40);
c_old_ordernr VARCHAR2 (20);
c_write_ordernr VARCHAR2 (20);
c_bestelopdr_id VARCHAR2 (20);
c_totaal NUMBER;
c_fact_totaal NUMBER;
c_find BOOLEAN;
c_find_ordernr BOOLEAN;
c_mld_opdr_key NUMBER (10);
c_cnt_contract_key NUMBER (10);
c_bes_bestelopdr_key NUMBER (10);
c_prs_bedrijf_naam VARCHAR2(100);
c_opmerking VARCHAR2(150);
v_errormsg VARCHAR (200);
oracle_err_mes VARCHAR2 (150);
BEGIN
-- Maak de log tabel leeg
DELETE imp_log
WHERE imp_log_run <> p_applrun
AND imp_log_applicatie = 'FACTUUR';
c_old_ordernr := '';
c_teller := 0;
-- Facturen
FOR rc IN cfactuur
LOOP
IF rc.ordernr = c_old_ordernr
THEN
-- voeg alleen nieuwe factuurregel toe die een andere BTW waarde heeft
-- waarde van c_index is nog steeds actueel
c_factuurregel := c_factuurregel + 1;
BEGIN
INSERT INTO fin_factuurregel
(fin_factuur_key,
fin_factuurregel_nr,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_omschrijving
)
VALUES (c_index,
c_factuurregel,
rc.totaal,
rc.totaal_btw,
rc.omschrijving
);
COMMIT;
fac.imp_writelog (p_applname,
p_applrun,
'I',
'Factuurregel '
|| c_factuurregel
|| ' toegevoegd aan factuur '
|| c_index,
rc.ordernr || ' / ' || rc.factuurnr
);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
fac.imp_writelog
(p_applname,
p_applrun,
'E',
'Factuur(regel) kan niet toegevoegd worden '
|| v_errormsg,
rc.ordernr || '/' || rc.factuurnr
);
END;
c_teller := c_teller + 1;
ELSE
c_old_ordernr := rc.ordernr;
c_factuurregel := 1;
c_ordernr_index := INSTR (rc.ordernr, '/');
c_totaal := 0;
c_mld_opdr_key := NULL;
c_cnt_contract_key := NULL;
c_bes_bestelopdr_key := NULL;
IF c_ordernr_index = 0
THEN
c_ordernr_s1 := rc.ordernr;
c_ordernr_s2 := '';
ELSE
c_ordernr_s1 := SUBSTR (rc.ordernr, 1, c_ordernr_index - 1);
c_ordernr_s2 := SUBSTR (rc.ordernr, c_ordernr_index + 1);
END IF;
c_find := FALSE;
c_find_ordernr := FALSE;
c_fac_type := '';
c_prefix := '';
IF (LENGTH (rc.ordernr) > 0)
THEN
c_prefix := SUBSTR (rc.ordernr, 1, 1);
IF ( ( ( ASCII (SUBSTR (c_prefix, 1, 1)) >= 65
AND ASCII (SUBSTR (c_prefix, 1, 1)) <= 90
)
OR ( ASCII (SUBSTR (c_prefix, 1, 1)) >= 97
AND ASCII (SUBSTR (c_prefix, 1, 1)) <= 122
)
)
AND ASCII (SUBSTR (c_prefix, 1, 1)) != 67
AND ASCII (SUBSTR (c_prefix, 1, 1)) != 99
)
THEN
c_fac_type := 'O'; -- Opdracht (Melding)
ELSIF ( ASCII (SUBSTR (c_prefix, 1, 1)) >= 48
AND ASCII (SUBSTR (c_prefix, 1, 1)) <= 57
)
THEN
c_fac_type := 'B'; -- Bestelling
ELSIF ( ASCII (SUBSTR (c_prefix, 1, 1)) = 67
OR ASCII (SUBSTR (c_prefix, 1, 1)) = 99
)
THEN
c_fac_type := 'C'; -- Contract
ELSE
fac.imp_writelog (p_applname,
p_applrun,
'I',
'Kan type van factuur niet bepalen ',
rc.ordernr || ' / ' || rc.factuurnr
);
END IF;
END IF;
IF c_fac_type = 'O'
THEN
IF ( c_ordernr_index != 0
AND ( ASCII (SUBSTR (c_prefix, 1, 1)) >= 48
AND ASCII (SUBSTR (c_prefix, 1, 1)) <= 57
)
)
-- Er is geen prefix maar het is wel een opdracht
-- Afgedwongen door /
THEN
-- c_ordernr_s2 bevat al het gedeelte na de /
-- c_ordernr_s1 bevat geen prefix
c_find := TRUE;
ELSE
c_i := 1;
LOOP
IF ( ASCII (SUBSTR (c_ordernr_s1, c_i, 1)) >= 48
AND ASCII (SUBSTR (c_ordernr_s1, c_i, 1)) <= 57
)
THEN
c_find := TRUE;
ELSE
c_i := c_i + 1;
END IF;
EXIT WHEN (c_find OR c_i > LENGTH (c_ordernr_s1));
END LOOP;
IF c_find
THEN
c_ordernr_s1 := SUBSTR (c_ordernr_s1, c_i);
ELSE
fac.imp_writelog (p_applname,
p_applrun,
'I',
'Kan OrderNr niet bepalen ',
rc.ordernr || ' / ' || rc.factuurnr
);
END IF;
END IF;
ELSIF c_fac_type = 'C'
THEN
-- haal prefix 'C' of 'c' eraf
c_ordernr_s1 := SUBSTR (c_ordernr_s1, 2);
c_find := TRUE;
ELSIF c_fac_type = 'B'
THEN
-- geen prefix aanwezig, c_ordernr_s1 is goed
c_find := TRUE;
END IF;
-- c_ordernr_s1 bevat ordernummer
-- c_ordernr_s2 bevat volgnummer van de opdracht bij meldingen
-- Bij bestellingen en contracten is deze waarde leeg
-- Vind mld_opdr_key met mld_melding_key
IF c_fac_type = 'O'
THEN
c_cnt_contract_key := NULL;
c_bes_bestelopdr_key := NULL;
BEGIN
SELECT o.mld_opdr_key
INTO c_mld_opdr_key
FROM mld_opdr o
WHERE o.mld_melding_key = c_ordernr_s1
AND mld_opdr_bedrijfopdr_volgnr = c_ordernr_s2;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
fac.imp_writelog
(p_applname,
p_applrun,
'I',
'Kan de melding referentie niet vinden '
|| v_errormsg,
rc.ordernr || '/' || rc.factuurnr
);
c_find := FALSE;
END;
ELSIF c_fac_type = 'C'
THEN
-- bestaat het contract wel?
BEGIN
SELECT cnt_contract_key
INTO c_cnt_contract_key
FROM cnt_contract
WHERE cnt_contract_key = c_ordernr_s1;
EXCEPTION
WHEN OTHERS THEN
c_cnt_contract_key := NULL;
c_find := FALSE;
END;
c_bes_bestelopdr_key := NULL;
c_mld_opdr_key := NULL;
ELSIF c_fac_type = 'B'
THEN
c_cnt_contract_key := NULL;
-- vind de bestelopdracht key?
BEGIN
IF c_ordernr_s2 IS NULL
THEN
c_ordernr_t := c_ordernr_s1;
ELSE
c_ordernr_t := c_ordernr_s1 || '/' || c_ordernr_s2;
END IF;
SELECT bes_bestelopdr_key
INTO c_bes_bestelopdr_key
FROM bes_bestelopdr
WHERE bes_bestelopdr_id = c_ordernr_t;
EXCEPTION
WHEN OTHERS THEN
c_bes_bestelopdr_key := NULL;
c_find := FALSE;
END;
c_mld_opdr_key := NULL;
END IF;
c_opmerking := '';
IF NOT c_find THEN
BEGIN
SELECT prs_bedrijf_naam
INTO c_prs_bedrijf_naam
FROM prs_bedrijf
WHERE prs_leverancier_nr = rc.leveranciernr;
c_opmerking := 'Leverancier: ' || c_prs_bedrijf_naam || ' Ontvangen ordernummer: ' || rc.ordernr;
EXCEPTION WHEN NO_DATA_FOUND THEN
c_opmerking := 'Leverancier: onbekend' || ' Ontvangen ordernummer: ' || rc.ordernr;
END;
END IF;
BEGIN
SELECT fin_s_fin_factuur_key.NEXTVAL
INTO c_index
FROM DUAL;
INSERT INTO fin_factuur
(fin_factuur_key,
fin_factuur_totaal,
fin_factuur_totaal_btw,
mld_opdr_key,
cnt_contract_key,
bes_bestelopdr_key,
prs_perslid_key_user,
fin_factuur_datum,
fin_factuur_opmerking,
fin_factuur_statuses_key,
fin_factuur_nr,
fin_factuur_boekmaand,
prs_kostensoort_key
)
VALUES (c_index,
rc.totaal,
rc.totaal_btw,
c_mld_opdr_key,
c_cnt_contract_key,
c_bes_bestelopdr_key,
322, -- Eric de Groot
TO_DATE (rc.fjaar
|| '-'
|| rc.fmaand
|| '-'
|| rc.fdag
|| ' 00:00',
'YYYY-MM-DD HH24:MI'),
'Ge<EFBFBD>mporteerde factuur ' || c_opmerking,
2,
rc.factuurnr,
rc.fjaar || '-' || rc.fmaand,
NULL
);
COMMIT;
INSERT INTO fin_factuurregel
(fin_factuur_key,
fin_factuurregel_nr,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_factuurregel_omschrijving
)
VALUES (c_index,
c_factuurregel, -- Zal hier altijd 1 zijn
rc.totaal,
rc.totaal_btw,
rc.omschrijving
);
COMMIT;
IF cwtd_fact_in_marge(c_index) = 1 THEN
UPDATE fin_factuur
SET fin_factuur_datumfiat_ok = SYSDATE
, prs_perslid_key_fiat = 322 -- Eric de Groot
, fin_factuur_statuses_key = 6
, fin_factuur_opmerking = substr(fin_factuur_opmerking || 'Automatisch geaccepteerd: ' || to_char (sysdate, 'dd-mm-yyyy'), 1, 250)
WHERE fin_factuur_key = c_index;
fac.imp_writelog (p_applname,
p_applrun,
'I',
'Factuur '
|| c_index
|| ' is automatisch geaccepteerd ',
rc.factuurnr
);
END IF;
COMMIT;
IF c_find_ordernr
THEN
c_write_ordernr := c_bestelopdr_id;
ELSE
c_write_ordernr := rc.ordernr;
END IF;
fac.imp_writelog (p_applname,
p_applrun,
'I',
'Factuur '
|| c_index
|| ' toegevoegd met factuurregel '
|| c_factuurregel,
c_write_ordernr || ' / ' || rc.factuurnr
);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
fac.imp_writelog
(p_applname,
p_applrun,
'E',
'Factuur(regel) kan niet toegevoegd worden '
|| v_errormsg,
rc.ordernr || '/' || rc.factuurnr
);
END;
c_teller := c_teller + 1;
END IF;
END LOOP;
-- Facturen
-- Welke bestelling kan afgemeld worden. (Alleen bestellingen kunnen automatisch afgemeld worden)
FOR rc IN cfactuur
LOOP
c_fac_type := '';
c_prefix := '';
c_find_ordernr := FALSE;
IF (LENGTH (rc.ordernr) > 0)
THEN
c_prefix := SUBSTR (rc.ordernr, 1, 1);
IF ( ( ( ( ASCII (SUBSTR (c_prefix, 1, 1)) >= 65
AND ASCII (SUBSTR (c_prefix, 1, 1)) <= 90
)
OR ( ASCII (SUBSTR (c_prefix, 1, 1)) >= 97
AND ASCII (SUBSTR (c_prefix, 1, 1)) <= 122
)
)
AND ASCII (SUBSTR (c_prefix, 1, 1)) != 67
AND ASCII (SUBSTR (c_prefix, 1, 1)) != 99
)
)
THEN
c_fac_type := 'O'; -- Opdracht (Melidng)
ELSIF ( ASCII (SUBSTR (c_prefix, 1, 1)) >= 48
AND ASCII (SUBSTR (c_prefix, 1, 1)) <= 57
)
THEN
c_fac_type := 'B'; -- Bestelling
c_bestelopdr_id := rc.ordernr;
ELSIF ( ASCII (SUBSTR (c_prefix, 1, 1)) = 67
OR ASCII (SUBSTR (c_prefix, 1, 1)) = 99
)
THEN
c_fac_type := 'C'; -- Contract
ELSE
fac.imp_writelog (p_applname,
p_applrun,
'E',
'Kan type van factuur niet bepalen ',
rc.ordernr || ' / ' || rc.factuurnr
);
END IF;
END IF;
IF c_fac_type = 'B'
THEN
SELECT SUM ( boi.bes_bestelopdr_item_prijs
* boi.bes_bestelopdr_item_aantal
)
INTO c_totaal
FROM bes_bestelopdr b, bes_bestelopdr_item boi
WHERE boi.bes_bestelopdr_key = b.bes_bestelopdr_key
AND b.bes_bestelopdr_id = c_bestelopdr_id;
SELECT MAX (fin_factuur_key)
INTO c_index
FROM fin_factuur f, bes_bestelopdr bo
WHERE bo.bes_bestelopdr_key = f.bes_bestelopdr_key
AND bo.bes_bestelopdr_id = c_bestelopdr_id;
SELECT SUM(fr.fin_factuurregel_totaal)
INTO c_fact_totaal
FROM fin_factuur f,
fin_factuurregel fr,
bes_bestelopdr b
WHERE f.bes_bestelopdr_key = b.bes_bestelopdr_key
AND f.fin_factuur_key = fr.fin_factuur_key
AND b.bes_bestelopdr_id = c_bestelopdr_id;
IF c_totaal = c_fact_totaal --c_totaal = rc.totaal
THEN
UPDATE fin_factuur
SET fin_factuur_datumfiat_ok = SYSDATE,
prs_perslid_key_fiat = 1042,
fin_factuur_statuses_key = 6
WHERE fin_factuur_key = c_index
AND ( mld_opdr_key IS NOT NULL
OR cnt_contract_key IS NOT NULL
OR bes_bestelopdr_key IS NOT NULL
);
fac.imp_writelog (p_applname,
p_applrun,
'I',
'Factuur '
|| c_index
|| ' status op afgemeld gezet ',
c_bestelopdr_id || ' / ' || rc.factuurnr
);
END IF;
END IF;
COMMIT;
END LOOP;
END;
/
CREATE OR REPLACE VIEW CWTD_V_NOTI_CNTREMINDER
(CODE, SENDER, RECEIVER, TEXT, KEY,
PAR1, PAR2, XKEY)
AS
SELECT '', '', 2521,
'Rapp<EFBFBD>l: Contract '
|| c.cnt_contract_nummer_intern
|| ' ('
|| c.cnt_contract_omschrijving
|| ' '
|| b.prs_bedrijf_naam
|| ')'
|| ' moet uiterlijk per '
|| TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key), 'DD-MM-YYYY')
|| ' worden verlengd of opgezegd.',
c.cnt_contract_key, c.cnt_contract_nummer_intern, cnt.cnt_getopzegdatum (c.cnt_contract_key), NULL
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
AND trunc(SYSDATE) = trunc(cnt.cnt_getrappeldatum(c.cnt_contract_key));
show errors