CWTD#14550
svn path=/Customer/trunk/; revision=13734
This commit is contained in:
24
CWTD/Once/CWTD#14550.sql
Normal file
24
CWTD/Once/CWTD#14550.sql
Normal 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
|
||||
757
CWTD/cwtd.sql
757
CWTD/cwtd.sql
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user