YASK#65033 -- Verkoopprijs in een readonly veld bij de opdracht tonen.
svn path=/Customer/trunk/; revision=49093
This commit is contained in:
420
YASK/yask.sql
Normal file
420
YASK/yask.sql
Normal file
@@ -0,0 +1,420 @@
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
-- Script containing customer specific sql statements for the FACILITOR database
|
||||
|
||||
|
||||
DEFINE thisfile = 'YASK.SQL'
|
||||
DEFINE dbuser = 'YASK'
|
||||
|
||||
SET ECHO ON
|
||||
SET DEFINE ON
|
||||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||||
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
|
||||
WHENEVER SQLERROR CONTINUE;
|
||||
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
||||
SPOOL &fcltlogfile
|
||||
WHENEVER SQLERROR EXIT;
|
||||
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
|
||||
WHENEVER SQLERROR CONTINUE;
|
||||
---------------------------------------
|
||||
PROMPT &fcltcusttxt
|
||||
---------------------------------------
|
||||
SET DEFINE OFF
|
||||
|
||||
------ payload begin ------
|
||||
|
||||
CREATE OR REPLACE PACKAGE YASK
|
||||
AS
|
||||
|
||||
FUNCTION geen_opslag (p_opdr_key IN NUMBER)
|
||||
RETURN NUMBER;
|
||||
|
||||
FUNCTION bepaal_opslag (p_opdr_key IN NUMBER)
|
||||
RETURN NUMBER;
|
||||
|
||||
FUNCTION bepaal_srtopslag (p_opdr_key IN NUMBER)
|
||||
RETURN VARCHAR2;
|
||||
|
||||
PROCEDURE set_verkoopprijs (p_opdr_key IN NUMBER);
|
||||
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
|
||||
CREATE OR REPLACE PACKAGE BODY YASK
|
||||
AS
|
||||
|
||||
FUNCTION geen_opslag (p_opdr_key IN NUMBER)
|
||||
RETURN NUMBER
|
||||
AS
|
||||
|
||||
v_geen_opslag NUMBER;
|
||||
|
||||
BEGIN
|
||||
|
||||
SELECT FAC.safe_to_number(ko.mld_kenmerkopdr_waarde)
|
||||
INTO v_geen_opslag
|
||||
FROM mld_kenmerkopdr ko
|
||||
WHERE ko.mld_kenmerk_key = 21 -- Geen opslag
|
||||
AND ko.mld_opdr_key = p_opdr_key;
|
||||
|
||||
RETURN v_geen_opslag;
|
||||
|
||||
EXCEPTION WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
RETURN 0;
|
||||
END;
|
||||
|
||||
|
||||
FUNCTION bepaal_opslag (p_opdr_key IN NUMBER)
|
||||
RETURN NUMBER
|
||||
AS
|
||||
|
||||
v_geen_opslag NUMBER;
|
||||
v_opslag NUMBER;
|
||||
|
||||
BEGIN
|
||||
|
||||
v_geen_opslag := YASK.geen_opslag(p_opdr_key);
|
||||
|
||||
IF v_geen_opslag = 1 THEN
|
||||
RETURN 0;
|
||||
END IF;
|
||||
|
||||
SELECT FAC.safe_to_number(alg_onrgoedkenmerk_waarde)
|
||||
INTO v_opslag
|
||||
FROM alg_onrgoedkenmerk aogk,
|
||||
mld_melding m,
|
||||
mld_opdr o,
|
||||
mld_stdmelding std,
|
||||
ins_tab_discipline d,
|
||||
ins_srtdiscipline sd
|
||||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||||
AND aogk.alg_kenmerk_key =
|
||||
DECODE (sd.ins_srtdiscipline_omschrijving, 'Projecten', 1002,
|
||||
DECODE (d.ins_discipline_omschrijving, 'Schoonmaak', 1003, 1000))
|
||||
AND aogk.alg_onrgoed_key = m.mld_alg_locatie_key
|
||||
AND o.mld_melding_key = m.mld_melding_key
|
||||
AND o.mld_opdr_key = p_opdr_key;
|
||||
|
||||
RETURN v_opslag;
|
||||
|
||||
EXCEPTION WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
RETURN 0;
|
||||
END;
|
||||
|
||||
FUNCTION bepaal_srtopslag (p_opdr_key IN NUMBER)
|
||||
RETURN VARCHAR2
|
||||
AS
|
||||
|
||||
v_geen_opslag NUMBER;
|
||||
v_srtopslag ALG_KENMERK.ALG_KENMERK_OMSCHRIJVING%TYPE;
|
||||
|
||||
BEGIN
|
||||
|
||||
v_geen_opslag := YASK.geen_opslag(p_opdr_key);
|
||||
|
||||
IF v_geen_opslag = 1 THEN
|
||||
RETURN NULL;
|
||||
END IF;
|
||||
|
||||
SELECT alg_kenmerk_omschrijving
|
||||
INTO v_srtopslag
|
||||
FROM alg_onrgoedkenmerk aogk,
|
||||
alg_kenmerk ak,
|
||||
mld_melding m,
|
||||
mld_opdr o,
|
||||
mld_stdmelding std,
|
||||
ins_tab_discipline d,
|
||||
ins_srtdiscipline sd
|
||||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||||
AND aogk.alg_kenmerk_key = ak.alg_kenmerk_key
|
||||
AND aogk.alg_kenmerk_key =
|
||||
DECODE (sd.ins_srtdiscipline_omschrijving, 'Projecten', 1002,
|
||||
DECODE (d.ins_discipline_omschrijving, 'Schoonmaak', 1003, 1000))
|
||||
AND aogk.alg_onrgoed_key = m.mld_alg_locatie_key
|
||||
AND o.mld_melding_key = m.mld_melding_key
|
||||
AND o.mld_opdr_key = p_opdr_key;
|
||||
|
||||
RETURN v_srtopslag;
|
||||
|
||||
EXCEPTION WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
RETURN 0;
|
||||
END;
|
||||
|
||||
-- Vul het kenmerk verkoopprijs (key 201) bij de opdracht
|
||||
PROCEDURE set_verkoopprijs (p_opdr_key IN NUMBER)
|
||||
AS
|
||||
|
||||
v_opdr_kosten NUMBER;
|
||||
v_verkoopprijs NUMBER;
|
||||
v_opslag NUMBER;
|
||||
|
||||
BEGIN
|
||||
|
||||
SELECT mld_opdr_kosten
|
||||
INTO v_opdr_kosten
|
||||
FROM mld_opdr o
|
||||
WHERE mld_opdr_key = p_opdr_key;
|
||||
|
||||
v_opslag := YASK.bepaal_opslag(p_opdr_key);
|
||||
|
||||
IF v_opslag = 0
|
||||
THEN
|
||||
v_verkoopprijs := NULL;
|
||||
ELSE
|
||||
v_verkoopprijs := v_opdr_kosten * ((100 + v_opslag) /100);
|
||||
END IF;
|
||||
MLD.upsertopdrachtkenmerk (201, p_opdr_key, v_verkoopprijs);
|
||||
END;
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
-- Rapport voor het doorbelasten van de kosten. Hier wordt ook een opslagperscentage in meegenomen.
|
||||
-- Als het een project betreft is de vakgroep omschrijving Projecten
|
||||
-- Als het om schoonmaak gaat heet de vakgroep Schoonmaak
|
||||
-- En anders is het materiaal of subcontrating. Maar deze hebben hetzelfde tarief.
|
||||
-- De tarieven staan bij de locatie vermeld in flexvelden.
|
||||
CREATE OR REPLACE VIEW yask_v_kosten_doorbelasting
|
||||
AS
|
||||
SELECT sd.ins_srtdiscipline_prefix || m.mld_melding_key meldingnummer,
|
||||
m.mld_melding_key,
|
||||
l.alg_locatie_omschrijving meldinglocatie,
|
||||
pf.prs_perslid_naam_full melder,
|
||||
sd.ins_srtdiscipline_omschrijving soortmelding,
|
||||
d.ins_discipline_omschrijving productgroep,
|
||||
std.mld_stdmelding_omschrijving subproductgroep,
|
||||
ksm.prs_kostensoort_oms melding_nen_omschrijving,
|
||||
ksm.prs_kostensoort_refcode melding_nen_code,
|
||||
CASE
|
||||
WHEN m.mld_melding_status = 5 AND m.mld_melding_afgerond = 1
|
||||
THEN
|
||||
'Afgerond'
|
||||
ELSE
|
||||
ms.mld_statuses_omschrijving
|
||||
END
|
||||
meldingstatus,
|
||||
fs.fac_usrdata_omschr facturatiestatus,
|
||||
m.mld_melding_datum meldingdatum,
|
||||
MLD.getmeldingstatusdate (m.mld_melding_key, 5) afgemeld,
|
||||
m.mld_melding_onderwerp onderwerp,
|
||||
m.mld_melding_omschrijving vomschrijving,
|
||||
sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrachtnummer,
|
||||
ot.mld_typeopdr_omschrijving opdrachttype,
|
||||
so.mld_statusopdr_omschrijving opdrachtstatus,
|
||||
o.mld_opdr_omschrijving opdrachtomschrijving,
|
||||
kso.prs_kostensoort_oms opdracht_nen_omschrijving,
|
||||
b.prs_bedrijf_naam opdrachtuitvoerende,
|
||||
o.mld_opdr_kosten opdrachtkosten,
|
||||
YASK.bepaal_srtopslag(o.mld_opdr_key) soortopslag,
|
||||
YASK.bepaal_opslag(o.mld_opdr_key) opslag,
|
||||
o.mld_opdr_kosten * ((100 + YASK.bepaal_opslag(o.mld_opdr_key)) /100) kostenplusopslag,
|
||||
YASK.geen_opslag(o.mld_opdr_key) geenopslag,
|
||||
TO_CHAR(ADD_MONTHS(COALESCE(MLD.getmeldingstatusdate (m.mld_melding_key, 6),SYSDATE),-1),'yyyy-mm') boekmaand
|
||||
FROM prs_v_perslid_fullnames pf,
|
||||
prs_kostensoort ksm,
|
||||
mld_statuses ms,
|
||||
mld_opdr o,
|
||||
mld_typeopdr ot,
|
||||
mld_statusopdr so,
|
||||
prs_bedrijf b,
|
||||
alg_locatie l,
|
||||
prs_kostensoort kso,
|
||||
mld_melding m,
|
||||
mld_stdmelding std,
|
||||
ins_tab_discipline d,
|
||||
ins_srtdiscipline sd,
|
||||
(SELECT mld_melding_key, fac_usrdata_omschr
|
||||
FROM fac_usrdata ud, mld_kenmerkmelding km
|
||||
WHERE km.mld_kenmerk_key = 1 -- Facturatiestatus
|
||||
AND FAC.safe_to_number (mld_kenmerkmelding_waarde) =
|
||||
ud.fac_usrdata_key) fs
|
||||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||||
AND std.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
|
||||
AND m.mld_melding_status = ms.mld_statuses_key
|
||||
AND m.mld_melding_key = fs.mld_melding_key(+)
|
||||
AND m.mld_melding_key = o.mld_melding_key
|
||||
AND m.prs_perslid_key = pf.prs_perslid_key
|
||||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
||||
AND o.mld_statusopdr_key = so.mld_statusopdr_key
|
||||
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+)
|
||||
AND o.prs_kostensoort_key = kso.prs_kostensoort_key(+);
|
||||
|
||||
CREATE OR REPLACE VIEW yask_v_export_pro_forma (
|
||||
result,
|
||||
result_order
|
||||
)
|
||||
AS
|
||||
SELECT 'meldingnummer;' ||
|
||||
'meldinglocatie;' ||
|
||||
'soortmelding;' ||
|
||||
'productgroep;' ||
|
||||
'subproductgroep;' ||
|
||||
'melding_nen_omschrijving;' ||
|
||||
'melding_nen_code;' ||
|
||||
'meldingstatus;' ||
|
||||
'facturatiestatus;' ||
|
||||
'meldingdatum;' ||
|
||||
'afgemeld;' ||
|
||||
'onderwerp;' ||
|
||||
'vomschrijving;' ||
|
||||
'opdrachtnummer;' ||
|
||||
'opdrachttype;' ||
|
||||
'opdrachtstatus;' ||
|
||||
'opdrachtomschrijving;' ||
|
||||
'opdracht_nen_omschrijving;' ||
|
||||
'opdrachtuitvoerende;' ||
|
||||
'opdrachtkosten;' ||
|
||||
'soortopslag;' ||
|
||||
'opslag;' ||
|
||||
'kostenplusopslag' ||
|
||||
'geenopslag' , -1
|
||||
FROM DUAL
|
||||
UNION ALL
|
||||
SELECT meldingnummer || ';' ||
|
||||
meldinglocatie || ';' ||
|
||||
melder || ';' ||
|
||||
soortmelding || ';' ||
|
||||
productgroep || ';' ||
|
||||
subproductgroep || ';' ||
|
||||
melding_nen_omschrijving || ';' ||
|
||||
melding_nen_code || ';' ||
|
||||
meldingstatus || ';' ||
|
||||
facturatiestatus || ';' ||
|
||||
meldingdatum || ';' ||
|
||||
afgemeld || ';' ||
|
||||
onderwerp || ';' ||
|
||||
'"' || vomschrijving || '"' || ';' ||
|
||||
opdrachtnummer || ';' ||
|
||||
opdrachttype || ';' ||
|
||||
opdrachtstatus || ';' ||
|
||||
'"' || opdrachtomschrijving || '"' || ';' ||
|
||||
opdracht_nen_omschrijving || ';' ||
|
||||
opdrachtuitvoerende || ';' ||
|
||||
REPLACE(opdrachtkosten, '.', ',') || ';' ||
|
||||
soortopslag || ';' ||
|
||||
opslag || ';' ||
|
||||
REPLACE(kostenplusopslag, '.', ',') || ';' ||
|
||||
geenopslag, mld_melding_key
|
||||
FROM yask_v_kosten_doorbelasting
|
||||
WHERE facturatiestatus = 'Gereed voor facturatie';
|
||||
|
||||
-- Procedure om pro-forma factuur klaar te zetten.
|
||||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma (p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2
|
||||
)
|
||||
AS
|
||||
CURSOR c
|
||||
IS
|
||||
SELECT mld_melding_key
|
||||
FROM yask_v_kosten_doorbelasting
|
||||
WHERE meldingstatus = 'Afgerond'
|
||||
AND COALESCE(facturatiestatus, 'Onbekend') <> 'Gefactureerd'
|
||||
GROUP BY mld_melding_key;
|
||||
|
||||
v_errormsg VARCHAR (200);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
|
||||
BEGIN
|
||||
|
||||
-- Eerst opruiming
|
||||
DELETE FROM imp_log
|
||||
WHERE imp_log_applicatie = p_applname;
|
||||
|
||||
FOR rec IN c
|
||||
LOOP
|
||||
BEGIN
|
||||
-- zet de melding op status 'Gereed voor facturatie'
|
||||
MLD.upsertmeldingkenmerk (1, rec.mld_melding_key, 1); -- Facturatiestatus naar Gereed voor facturatie
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := 'Fout bij aanmaken pro forma factuur' || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (p_applname, 'E', rec.mld_melding_key || v_errormsg, '');
|
||||
COMMIT;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE yask_select_pro_forma_verwerk (p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2
|
||||
)
|
||||
AS
|
||||
CURSOR c
|
||||
IS
|
||||
SELECT mld_melding_key
|
||||
FROM yask_v_kosten_doorbelasting
|
||||
WHERE meldingstatus = 'Afgerond'
|
||||
AND facturatiestatus = 'Gereed voor facturatie'
|
||||
GROUP BY mld_melding_key;
|
||||
|
||||
CURSOR c_opdr (c_melding_key NUMBER)
|
||||
IS
|
||||
SELECT mld_opdr_key
|
||||
FROM mld_opdr
|
||||
WHERE mld_statusopdr_key = 9 -- Afgerond
|
||||
AND mld_melding_key = c_melding_key;
|
||||
|
||||
|
||||
v_errormsg VARCHAR (200);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
|
||||
BEGIN
|
||||
|
||||
-- Eerst opruiming
|
||||
DELETE FROM imp_log
|
||||
WHERE imp_log_applicatie = p_applname;
|
||||
|
||||
FOR rec IN c
|
||||
LOOP
|
||||
BEGIN
|
||||
|
||||
-- zet de melding op facutratie status 'Gefactureerd'
|
||||
MLD.upsertmeldingkenmerk (1, rec.mld_melding_key, 2);
|
||||
|
||||
-- We gaan eerst alle onderliggende opdrachten op verwerkt zetten.
|
||||
FOR rec1 IN c_opdr(rec.mld_melding_key)
|
||||
LOOP
|
||||
BEGIN
|
||||
MLD.setopdrachtstatus (rec1.mld_opdr_key, 7, NULL); -- Verwerkt
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
MLD.setmeldingstatus (rec.mld_melding_key, 6, NULL, NULL); -- Historie
|
||||
END;
|
||||
END LOOP;
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
|
||||
------ payload end ------
|
||||
|
||||
SET DEFINE OFF
|
||||
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
||||
/
|
||||
|
||||
COMMIT;
|
||||
SET ECHO OFF
|
||||
SPOOL OFF
|
||||
SET DEFINE ON
|
||||
PROMPT Logfile of this upgrade is: &fcltlogfile
|
||||
Reference in New Issue
Block a user