AAIT#73079 -- Inrichten verkoopinterfaces O2C - IKEA de VK-interface herzien incl Maintenance CAP-methodiek ingepast
svn path=/Customer/trunk/; revision=69868
This commit is contained in:
@@ -830,12 +830,53 @@ AS
|
||||
|
||||
-- Basisview voor de berekening/bepaling van deze cap in de vk-interface
|
||||
CREATE OR REPLACE VIEW aaxx_v_verkoopfactuur_cap
|
||||
(
|
||||
FIN_VERKOOPFACTUUR_MAAND,
|
||||
MLD_MELDING_KEY,
|
||||
MLD_OPDR_KEY,
|
||||
MLD_OPDR_NR,
|
||||
OPDRACHTDATUM,
|
||||
MAINTENANCE_CAP_OMS,
|
||||
INKOOPFACTUREN_TOTAAL_VERWERKT,
|
||||
VK_REGELS_OPDRACHT,
|
||||
VK_REGELS_OPDRACHT_VERWERKT,
|
||||
VK_REGELS_OPDRACHT_ONVERWERKT,
|
||||
VK_REGELS_OPDRACHT_CAP_VERWERKT,
|
||||
VK_REGELS_OPDRACHT_CAP_ONVERWERKT,
|
||||
VK_AANTAL_RUNS_VERWERKT,
|
||||
VK_DATUM_EERST_RUN_VERWERKT,
|
||||
FIN_VERKOOPFACTUUR_KEY,
|
||||
CAP_TE_VERREKENEN_IN_RUN
|
||||
)
|
||||
AS
|
||||
SELECT c.*,
|
||||
CASE WHEN bedrag_regels_opdracht >= 500 AND COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) < 500 THEN ROUND(500 - COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0), 2)
|
||||
WHEN bedrag_regels_opdracht < 500 AND bedrag_regels_opdracht - COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) > 0 THEN ROUND(bedrag_regels_opdracht - COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0),2)
|
||||
WHEN bedrag_regels_opdracht < 500 AND bedrag_regels_opdracht - COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) < -500 THEN 500
|
||||
WHEN bedrag_regels_opdracht < 500 AND bedrag_regels_opdracht - COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) BETWEEN 0 AND -500 THEN ROUND(bedrag_regels_opdracht - COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0),2)
|
||||
SELECT c.fin_verkoopfactuur_maand,
|
||||
c.mld_melding_key,
|
||||
c.mld_opdr_key,
|
||||
c.mld_opdr_nr,
|
||||
c.opdrachtdatum,
|
||||
c.maintenance_cap_oms,
|
||||
(SELECT sum(fin_factuur_totaal) inkoopfacturen_totaal FROM fin_factuur WHERE mld_opdr_key = c.mld_opdr_key AND fin_factuur_statuses_key = 7)
|
||||
+ COALESCE
|
||||
(
|
||||
(SELECT SUM (fin_factuur_totaal) FROM aaxx_exp_factuur r, fin_factuur f WHERE r.fin_factuur_key = f.fin_factuur_key AND f.mld_opdr_key = c.mld_opdr_key)
|
||||
, 0)
|
||||
inkoopfacturen_totaal_verwerkt,
|
||||
c.bedrag_regels_opdracht,
|
||||
c.bedrag_regels_opdracht_verwerkt,
|
||||
c.bedrag_regels_opdracht_onverwerkt,
|
||||
c.bedrag_regels_opdracht_cap_verwerkt,
|
||||
c.bedrag_regels_opdracht_cap_onverwerkt,
|
||||
c.aantal_runs_verwerkt,
|
||||
c.datum_eerst_run_verwerkt,
|
||||
c.fin_verkoopfactuur_key,
|
||||
CASE WHEN bedrag_regels_opdracht >= 500 AND (COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) + COALESCE(bedrag_regels_opdracht_cap_onverwerkt, 0)) < 500
|
||||
THEN -ROUND(500 - (COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) + COALESCE(bedrag_regels_opdracht_cap_onverwerkt, 0)), 2) -- (deel) cap nog teruggeven/crediteren
|
||||
WHEN bedrag_regels_opdracht < 500 AND bedrag_regels_opdracht - (COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) + COALESCE(bedrag_regels_opdracht_cap_onverwerkt, 0)) > 0
|
||||
THEN -ROUND(bedrag_regels_opdracht - (COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) + COALESCE(bedrag_regels_opdracht_cap_onverwerkt, 0))) -- (deel) cap nog teruggeven/crediteren
|
||||
WHEN bedrag_regels_opdracht < 500 AND bedrag_regels_opdracht - (COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) + COALESCE(bedrag_regels_opdracht_cap_onverwerkt, 0)) < -500
|
||||
THEN ROUND((COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) + COALESCE(bedrag_regels_opdracht_cap_onverwerkt, 0)),2) -- het totale gecrediteerde cap weer terugnemen/debiteren
|
||||
WHEN bedrag_regels_opdracht < 500 AND bedrag_regels_opdracht - (COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) + COALESCE(bedrag_regels_opdracht_cap_onverwerkt, 0)) BETWEEN 0 AND -500
|
||||
THEN ROUND(bedrag_regels_opdracht - (COALESCE(bedrag_regels_opdracht_cap_verwerkt, 0) + COALESCE(bedrag_regels_opdracht_cap_onverwerkt, 0)),2) -- het gecrediteerde deel van de cap weer terugnemen/debiteren
|
||||
ELSE 0
|
||||
END
|
||||
cap_te_verrekenen_in_run
|
||||
@@ -853,16 +894,16 @@ AS
|
||||
bedrag_regels_opdracht_onverwerkt,
|
||||
(SELECT sum(fin_verkoopfactuur_bedrag) FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(prs_kostensoort_oms, 'CV CAP')> 0 AND fin_verkoopfactuur_bedrag <> 0 AND fin_verkoopfactuur_datum IS NOT NULL)
|
||||
bedrag_regels_opdracht_cap_verwerkt,
|
||||
(SELECT max(fin_verkoopfactuur_n4) FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(prs_kostensoort_oms, 'CV CAP')= 0 AND fin_verkoopfactuur_bedrag <> 0 AND fin_verkoopfactuur_datum IS NULL)
|
||||
inkoopfactuur_max_onverwerkt, -- hier boeken we de CAP op
|
||||
(SELECT sum(fin_verkoopfactuur_bedrag) FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(prs_kostensoort_oms, 'CV CAP')> 0 AND fin_verkoopfactuur_bedrag <> 0 AND fin_verkoopfactuur_datum IS NULL)
|
||||
bedrag_regels_opdracht_cap_onverwerkt,
|
||||
(SELECT count(*) FROM (SELECT fin_verkoopfactuurkop_key FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(prs_kostensoort_oms, 'CV CAP')= 0 AND fin_verkoopfactuur_bedrag <> 0 AND fin_verkoopfactuur_datum IS NOT NULL GROUP BY fin_verkoopfactuurkop_key))
|
||||
aantal_runs_verwerkt,
|
||||
(SELECT min(fin_verkoopfactuur_datum) FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(prs_kostensoort_oms, 'CV CAP')= 0 AND fin_verkoopfactuur_bedrag <> 0 AND fin_verkoopfactuur_datum IS NOT NULL)
|
||||
datum_eerst_run_verwerkt,
|
||||
(SELECT mld_opdr_datumbegin FROM mld_opdr WHERE mld_opdr_key = b.mld_opdr_key)
|
||||
datum_onverwerkt_opdrachtdatum,
|
||||
opdrachtdatum,
|
||||
(SELECT max(fin_verkoopfactuur_key) FROM fin_verkoopfactuur WHERE fin_verkoopfactuur_maand = b.fin_verkoopfactuur_maand AND fin_verkoopfactuur_refkey = b.mld_opdr_key AND fin_verkoopfactuur_xmlnode = 'opdracht' AND INSTR(prs_kostensoort_oms, 'CV CAP')= 0 AND fin_verkoopfactuur_bedrag <> 0 AND fin_verkoopfactuur_datum IS NULL)
|
||||
fin_verkoopfactuur_key -- aan deze laatste openstaande verkoopregel van dat jaar (fin_verkoopfactuur_maand) zetten we CAP op
|
||||
fin_verkoopfactuur_key -- aan deze laatste openstaande verkoopregel van dat jaar (fin_verkoopfactuur_maand) zetten we CAP op (als we per verkooprun 1 CAP-regel gaan toevoegen)
|
||||
FROM
|
||||
(SELECT o.mld_opdr_key,
|
||||
o.mld_melding_key,
|
||||
@@ -3960,19 +4001,14 @@ BEGIN
|
||||
END IF;
|
||||
|
||||
-- INLO CORE
|
||||
-- Voor Henkel: Fee komen te vervallen (2023-12)
|
||||
-- Voor Zwaansvliet: Klant vervallen 2023
|
||||
-- Voor VEH wordt geen FEE berekend
|
||||
-- Voor IKEA - op basis van de maintenance cap bij opdracht.
|
||||
--- Geldt voor alleen voor waarde 'maintenance cap op JA'
|
||||
--- Geldt voor alleen voor waarde opdrachtkenmerk 'maintenance cap op JA'
|
||||
--- Is MAX 500 euro, over alle inkoopfacturen op die opdracht
|
||||
--- Bij Credits op die opdracht bedrag debet in rekening brengen
|
||||
------- Om goede berekening te houden, is er een hulpview aaxx_v_verkoopfactuur_cap.
|
||||
------- Per inkooprun wordt dan op de hoogste verkoopfactuur_key in die run de CAP-bepaald en op die verkoopfactuur toegevoegd.
|
||||
IF aaxx_get_user = 'INLO' THEN
|
||||
|
||||
-- IKEA - opdrachten met maintenance_cap op 'Ja'
|
||||
---- Tot max bedrag van 500, euro wordt de inkoopfactuur als FEE teruggegeven
|
||||
|
||||
-- NIEUW IKEA2.0 - Op basis hulpview aaxx_v_verkoopfactuur_cap
|
||||
INSERT INTO fin_verkoopfactuur
|
||||
(
|
||||
fin_verkoopfactuur_id, fin_verkoopfactuur_xmlnode, fin_verkoopfactuur_refkey, fin_verkoopfactuur_aanmaak, prs_kostenplaats_nr, prs_debiteur_naam, prs_kostensoort_oms, prs_kostensoort_opmerking, prs_kostensoortgrp_oms, fin_verkoopfactuur_omschr, fin_verkoopfactuur_bedrag, fin_btwtabelwaarde_code, fin_verkoopfactuur_maand, fin_verkoopfactuur_c1, fin_verkoopfactuur_c2, fin_verkoopfactuur_c3, fin_verkoopfactuur_c5, fin_verkoopfactuur_c8, fin_verkoopfactuur_c6, fin_verkoopfactuur_n4, fin_verkoopfactuur_n5
|
||||
@@ -3981,10 +4017,11 @@ BEGIN
|
||||
c.cap_te_verrekenen_in_run,
|
||||
v.fin_btwtabelwaarde_code, v.fin_verkoopfactuur_maand, v.fin_verkoopfactuur_c1, v.fin_verkoopfactuur_c2, 'X', v.fin_verkoopfactuur_c5, v.fin_verkoopfactuur_c8, v.fin_verkoopfactuur_c6, v.fin_verkoopfactuur_n4, v.fin_verkoopfactuur_n5
|
||||
FROM fin_verkoopfactuur v,
|
||||
aaxx_v_verkoopfactuur_cap c -- basisview CAP-berekening incl key naar laagste fin_verkoopfactuur_key om totaalregel goed gevuld te krijgen
|
||||
aaxx_v_verkoopfactuur_cap c
|
||||
WHERE c.fin_verkoopfactuur_key = v.fin_verkoopfactuur_key
|
||||
AND c.bedrag_regels_opdracht_onverwerkt IS NOT NULL
|
||||
AND ROUND(c.inkoopfacturen_totaal_verwerkt, 2) = ROUND(c.vk_regels_opdracht, 2) -- Bij overgang naar nieuwe vk-interface IKEA2.0. wil alleen maar de juiste CAP-berekening in de verkoopfactuur als ook daadwerkelijke alle inkoopfacturen in de verkoopinterface zitten
|
||||
AND c.cap_te_verrekenen_in_run <> 0
|
||||
AND v.fin_verkoopfactuur_n5 IN (281, 461) -- IKEA en IKEA-BEHEER
|
||||
AND v.fin_verkoopfactuur_aanmaak = v_logdate
|
||||
AND v.fin_verkoopfactuur_c8 = 'CORE' ;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user