FCLT#57833 test/afronding
svn path=/Database/trunk/; revision=43704
This commit is contained in:
@@ -308,13 +308,14 @@ AS
|
||||
factuurschemabedrag cnt_factuurschema.cnt_factuurschema_bedrag%TYPE;
|
||||
contractkosten cnt_contract.cnt_contract_kosten%TYPE;
|
||||
opdrachtkosten mld_opdr.mld_opdr_kosten%TYPE;
|
||||
typeopdr_uren mld_typeopdr.mld_typeopdr_uren%TYPE;
|
||||
typeopdr_factuur mld_typeopdr.mld_typeopdr_factuur%TYPE;
|
||||
factuurbedrag NUMBER (12, 2);
|
||||
bestelbedrag NUMBER (12, 2); -- van de opdracht waar deze factuur over gaat
|
||||
totaalgefactureerd NUMBER (12, 2); -- met deze factuur erbij eerder gefactureerd van dezelfde B(R)OC
|
||||
totaaltermijngefactureerd NUMBER (12, 2); -- met deze factuur erbij eerder gefactureerd van dezelfde C igv factuurschema-gebruik
|
||||
totaaltermijngefactureerdbtw NUMBER (12, 2); -- met deze factuur erbij eerder gefactureerd van dezelfde C igv factuurschema-gebruik
|
||||
totaalgefactureerdbtw NUMBER (12, 2);
|
||||
aantalgefactureerd NUMBER := 0;
|
||||
opdrstatus mld_opdr.mld_statusopdr_key%TYPE;
|
||||
retval NUMBER := 0;
|
||||
inclbtw NUMBER := 0;
|
||||
@@ -520,7 +521,7 @@ AS
|
||||
|
||||
-- We doen er toch niks mee: factmatchmode := fin.getfactmatchmode (discipline, 'C');
|
||||
|
||||
-- hoeveel is er met deze factuur erbij totaal voor dit contract gefactureerd
|
||||
-- hoeveel is er *met deze factuur erbij* totaal voor dit contract gefactureerd
|
||||
SELECT SUM (fin_factuur_totaal), SUM (fin_factuur_totaal_btw)
|
||||
INTO totaalgefactureerd, totaalgefactureerdbtw
|
||||
FROM fin_factuur
|
||||
@@ -557,15 +558,15 @@ AS
|
||||
--
|
||||
WHEN ftype = 'O'
|
||||
THEN
|
||||
-- controleer op basis van typeopdr_uren
|
||||
-- controleer op basis van mld_typeopdr_factuur
|
||||
BEGIN
|
||||
SELECT o.mld_opdr_kosten,
|
||||
sm.mld_ins_discipline_key,
|
||||
top.mld_typeopdr_uren,
|
||||
top.mld_typeopdr_factuur,
|
||||
o.mld_statusopdr_key
|
||||
INTO opdrachtkosten,
|
||||
discipline,
|
||||
typeopdr_uren,
|
||||
typeopdr_factuur,
|
||||
opdrstatus
|
||||
FROM mld_opdr o,
|
||||
mld_melding m,
|
||||
@@ -574,19 +575,21 @@ AS
|
||||
WHERE o.mld_melding_key = m.mld_melding_key
|
||||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||||
AND o.mld_typeopdr_key = top.mld_typeopdr_key
|
||||
AND top.mld_typeopdr_kosten = 1 -- daar mag een factuur bij
|
||||
--AND top.mld_typeopdr_uren NOT IN (3, 4, 5) -- bij interne uren geen facturen
|
||||
AND top.mld_typeopdr_factuur <> 0 -- dan willen we ook geen factuur
|
||||
AND top.mld_typeopdr_kosten = 1 -- daar mag een factuur bij
|
||||
AND mld_statusopdr_key NOT IN (1, 2, 3, 10) -- dat zijn (nog) ongeldige opdrachten
|
||||
AND mld_opdr_key = o_key;
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
DBMS_OUTPUT.put_line (
|
||||
'Bijbehorende opdracht(status/kosten?) is ongeldig: ' || o_key);
|
||||
'Bijbehorende opdracht(status/kosten/type) is ongeldig: ' || o_key);
|
||||
RETURN -1;
|
||||
END;
|
||||
|
||||
DBMS_OUTPUT.put_line ('opdrachtkosten: ' || opdrachtkosten);
|
||||
DBMS_OUTPUT.put_line ('typeopdr_uren: ' || typeopdr_uren);
|
||||
DBMS_OUTPUT.put_line ('typeopdr_factuur: ' || typeopdr_factuur);
|
||||
DBMS_OUTPUT.put_line ('opdrstatus: ' || opdrstatus);
|
||||
|
||||
SELECT MAX( (SELECT ks.prs_kostensoort_btw
|
||||
@@ -614,34 +617,43 @@ AS
|
||||
RETURN -1;
|
||||
END IF;
|
||||
|
||||
IF typeopdr_uren = 5 -- Opdrachttype-Uren: Interne uren per week verplicht(5).
|
||||
THEN
|
||||
DBMS_OUTPUT.put_line ('typeopdr_uren "Internal hours per week(5)" unsupported yet!');
|
||||
RETURN 0;
|
||||
END IF;
|
||||
|
||||
SELECT SUM (fin_factuur_totaal), SUM (fin_factuur_totaal_btw)
|
||||
INTO totaalgefactureerd, totaalgefactureerdbtw
|
||||
SELECT SUM (fin_factuur_totaal), SUM (fin_factuur_totaal_btw), COUNT(*)
|
||||
INTO totaalgefactureerd, totaalgefactureerdbtw, aantalgefactureerd
|
||||
FROM fin_factuur
|
||||
WHERE mld_opdr_key = o_key
|
||||
AND fin_factuur_statuses_key <> 1
|
||||
AND fin_factuur_verwijder IS NULL
|
||||
AND fin_factuur_datum <= factuurdatum;
|
||||
|
||||
IF inclbtw = 1 -- Opdrachtbedragen zijn dus inclusief, dan ook factuur inclusief matchen
|
||||
-- Hier kunnen we iets met de deels nieuwe opties
|
||||
-- '0;Geen facturen;1;E<>n factuur (vaste prijs);2;E<>n factuur (nacalculatie);3;Meerdere facturen;4;Contracttermijnen',
|
||||
-- 0 hebben we direct al afgevangen
|
||||
-- 1 en 2 verdragen geen eerdere factuur
|
||||
IF typeopdr_factuur IN (1,2) AND aantalgefactureerd>1
|
||||
THEN
|
||||
DBMS_OUTPUT.put_line ('Inclusief BTW');
|
||||
totaalgefactureerd := totaalgefactureerd + totaalgefactureerdbtw;
|
||||
END IF;
|
||||
|
||||
IF fin.tolerantiematch (discipline,
|
||||
ftype,
|
||||
totaalgefactureerd,
|
||||
opdrachtkosten) = 1
|
||||
THEN
|
||||
retval := 1;
|
||||
-- er is al een eerdere factuur, dan is de rest fout
|
||||
retval := -1;
|
||||
ELSE
|
||||
retval := -1;
|
||||
-- dan is dit 3 of de eerste van 1 of 2
|
||||
IF inclbtw = 1 -- Opdrachtbedragen zijn dus inclusief, dan ook factuur inclusief matchen
|
||||
THEN
|
||||
DBMS_OUTPUT.put_line ('Inclusief BTW');
|
||||
totaalgefactureerd := totaalgefactureerd + totaalgefactureerdbtw;
|
||||
END IF;
|
||||
IF typeopdr_factuur = 2
|
||||
THEN
|
||||
retval := 1;
|
||||
ELSE
|
||||
IF fin.tolerantiematch (discipline,
|
||||
ftype,
|
||||
totaalgefactureerd,
|
||||
opdrachtkosten) = 1
|
||||
THEN
|
||||
retval := 1;
|
||||
ELSE
|
||||
retval := -1;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
ELSE
|
||||
retval := 0;
|
||||
|
||||
Reference in New Issue
Block a user