247 lines
11 KiB
SQL
247 lines
11 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- Customer specific once-script BLCC#58442.SQL.
|
|
DEFINE thisfile = 'BLCC#58442.SQL'
|
|
DEFINE dbuser = '^BLCC'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SPOOL &fcltlogfile
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
-- BLCC#58442: Andere vulling voor <ProductName>!
|
|
CREATE OR REPLACE PROCEDURE blcc_select_proquro (p_applname IN VARCHAR2,
|
|
p_applrun IN VARCHAR2)
|
|
AS
|
|
-- Markeren te exporteren opdracht-verplichtingen (via ordernr)!
|
|
-- BLCC#55646: Per 2019-05 deprecated, want markeren gebeurt door Verwerken
|
|
-- opdrachten via BLCC.freezeopdrachten()!
|
|
--CURSOR c1
|
|
--IS
|
|
-- SELECT '[' || TO_CHAR (o.mld_melding_key) || '|' || TO_CHAR (o.mld_opdr_key) || '] '
|
|
-- aanduiding,
|
|
-- o.mld_opdr_key
|
|
-- FROM mld_opdr o
|
|
-- WHERE o.mld_typeopdr_key != 103 -- Geen RFQs
|
|
-- AND o.mld_statusopdr_key = 9 -- Afgerond
|
|
-- AND o.mld_opdr_ordernr IS NULL -- Geen ordernr, dus bijwerken
|
|
-- ORDER BY 1;
|
|
|
|
-- Wegschrijven te exporteren verplichting-regels (= factuur naar ProQuro).
|
|
-- BLCC#38809: SCC uitsluiten (alleen regels als volgnr 1000 t/m 2999)!
|
|
-- Per oktober-doorbelasting alleen nog maar catalogi meenemen die zijn
|
|
-- gekoppeld aan een bedrijf (voor de locatie CAMPUS).
|
|
-- BLCC#52390: Per februari catering-verplichtingen niet meer exporteren!
|
|
-- BLCC#55646: Per 2019-06 Verwerkte ipv. Afgeronde opdrachten exporteren
|
|
-- en markeren als doorgezet naar ProQuro!
|
|
CURSOR c3
|
|
IS -- Regel per Afgeronde mld_opdr zojuist gemarkeerd!
|
|
SELECT o.mld_opdr_key,
|
|
sd.ins_srtdiscipline_prefix
|
|
|| TO_CHAR (o.mld_melding_key)
|
|
|| '/'
|
|
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
|
|
externalid,
|
|
p.prs_perslid_nr, -- AdministrationExternalId
|
|
--kp.prs_kostenplaats_nr costcentre, -- CostcentreExternalId
|
|
SUBSTR (kp.prs_kostenplaats_nr, 1, 5) costcentre, -- CostcentreExternalId
|
|
b.prs_leverancier_nr,
|
|
--'FACILITOR Ref.nr. '
|
|
--|| sd.ins_srtdiscipline_prefix
|
|
--|| TO_CHAR (o.mld_melding_key)
|
|
--|| '/'
|
|
--|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
|
|
--|| ' ('
|
|
--|| td.ins_discipline_omschrijving
|
|
--|| '-'
|
|
--|| sm.mld_stdmelding_omschrijving
|
|
--|| ')'
|
|
sd.ins_srtdiscipline_prefix
|
|
|| TO_CHAR (o.mld_melding_key)
|
|
|| '/'
|
|
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
|
|
|| ' '
|
|
|| b.prs_bedrijf_naam
|
|
omschrijving, -- BLCC#58442: Andere vulling voor <ProductName>!
|
|
o.mld_opdr_kosten price,
|
|
TO_CHAR (fac.gettrackingdate ('ORDAFM', o.mld_opdr_key), 'yyyy-mm-dd')
|
|
deliverydate,
|
|
COALESCE (ksm.prs_kostensoort_oms, ksv.prs_kostensoort_oms)
|
|
costtype, -- CostTypeExternalId
|
|
DECODE (aog.alg_gebouw_code,
|
|
NULL, 'C-0000-000-00',
|
|
'122-001N', 'C-0122-001-01',
|
|
'122-00TW', 'C-0122-000-00',
|
|
'122-03B', 'C-0122-003-01',
|
|
'122-32A', 'C-0122-032-01',
|
|
'122-93A', 'C-0122-093-01',
|
|
'122-93B', 'C-0122-093-02', -- ???
|
|
'122-93C', 'C-0122-093-03',
|
|
'122-93D', 'C-0122-093-04',
|
|
'122-93E', 'C-0122-093-05', -- ???
|
|
'122-94A', 'C-0122-094-01',
|
|
'122-94B', 'C-0122-094-02',
|
|
'124-037Itter', 'C-0122-037-00',
|
|
'C-0' || aog.alg_gebouw_code || '-00')
|
|
costproject -- CostProjectExternalId
|
|
FROM mld_opdr o,
|
|
mld_melding m,
|
|
alg_v_allonrgoed_gegevens aog,
|
|
mld_stdmelding sm,
|
|
ins_tab_discipline td,
|
|
ins_srtdiscipline sd,
|
|
prs_kostensoort ksm,
|
|
prs_kostensoort ksv,
|
|
prs_kostenplaats kp,
|
|
prs_bedrijf b,
|
|
prs_perslid p
|
|
WHERE --SUBSTR (o.mld_opdr_ordernr, 1, 10) = TO_CHAR (SYSDATE, 'yyyy-mm-dd')
|
|
o.mld_typeopdr_key = 101 -- WO
|
|
AND o.mld_statusopdr_key = 7 -- Verwerkt
|
|
AND TO_CHAR (fac.gettrackingdate ('ORDVER', o.mld_opdr_key), 'yyyy-mm-dd') >= '2019-06-01' -- xTODO:2019-06-01/Per 2019-06 nieuwe werkwijze!
|
|
AND o.mld_opdr_ordernr IS NULL -- Nog niet doorgezet Proquro!
|
|
AND NOT EXISTS -- Nog niet doorgezet Proquro!
|
|
(SELECT 1
|
|
FROM mld_v_aanwezigkenmerkopdr
|
|
WHERE mld_kenmerk_key = 581 AND mld_opdr_key = o.mld_opdr_key)
|
|
AND o.mld_opdr_kosten > 0
|
|
AND o.mld_melding_key = m.mld_melding_key
|
|
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys(+)
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
|
AND sm.mld_ins_discipline_key = td.ins_discipline_key
|
|
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
|
|
AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
|
|
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
|
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
|
|
AND p.prs_perslid_key(+) = 101
|
|
ORDER BY 1;
|
|
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_bestand VARCHAR2 (12);
|
|
v_order_count NUMBER;
|
|
v_amount_sum NUMBER (10, 2);
|
|
BEGIN
|
|
v_bestand := SUBSTR (p_applname, 1, 12);
|
|
|
|
-- Eerst opruiming
|
|
DELETE FROM imp_log
|
|
WHERE imp_log_applicatie = p_applname;
|
|
|
|
DELETE FROM fac_rapport
|
|
WHERE fac_rapport_node = v_bestand;
|
|
|
|
-- BLCC#55646: Per 2019-05 deprecated, want markeren gebeurt door Verwerken
|
|
-- opdrachten via BLCC.freezeopdrachten()!
|
|
--FOR rec IN c1
|
|
--LOOP
|
|
-- BEGIN
|
|
-- v_errormsg := 'Fout bijwerken mld_opdr';
|
|
|
|
-- UPDATE mld_opdr
|
|
-- SET mld_opdr_ordernr = TO_CHAR (SYSDATE, 'yyyy-mm-dd hh24:mi:ss')
|
|
-- WHERE mld_opdr_key = rec.mld_opdr_key;
|
|
-- EXCEPTION
|
|
-- WHEN OTHERS
|
|
-- THEN
|
|
-- oracle_err_num := SQLCODE;
|
|
-- oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
-- v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
-- fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'Opdracht-verplichtingen');
|
|
-- COMMIT;
|
|
-- END;
|
|
--END LOOP;
|
|
--COMMIT;
|
|
|
|
v_order_count := 0;
|
|
v_amount_sum := 0;
|
|
FOR rec IN c3
|
|
LOOP
|
|
BEGIN
|
|
v_order_count := v_order_count + 1;
|
|
v_amount_sum := v_amount_sum + rec.price;
|
|
END;
|
|
END LOOP;
|
|
|
|
IF v_order_count > 0
|
|
THEN
|
|
-- Begin-tag splitsen ter voorkoming auto-detectie utf-8 door UltraEdit!
|
|
blcc_add_xml_row (v_bestand, '<?xml version="1.0" encoding="utf-' || '8"?>');
|
|
blcc_add_xml_row (v_bestand, '<Orders>');
|
|
FOR rec IN c3
|
|
LOOP
|
|
BEGIN
|
|
--blcc_add_xml_row (v_bestand, '<AddOrder>');
|
|
blcc_add_xml_row (v_bestand, '<Order>');
|
|
--blcc_add_xml_element (v_bestand, 'securityKey', 'xxx');
|
|
--blcc_add_xml_row (v_bestand, '<parms>');
|
|
blcc_add_xml_element (v_bestand, 'ExternalId', rec.externalid);
|
|
blcc_add_xml_element (v_bestand, 'AdministrationExternalId', rec.prs_perslid_nr); -- Personeelsnummer van API-user
|
|
blcc_add_xml_element (v_bestand, 'OrderTypeId', '9'); -- Hard op '9'
|
|
blcc_add_xml_element (v_bestand, 'ProcessExternalId', '7'); -- Hard op '7'
|
|
blcc_add_xml_element (v_bestand, 'CostcentreExternalId', rec.costcentre); -- Kostenplaats van opdracht
|
|
blcc_add_xml_element (v_bestand, 'ProductgroupExternalId', '1'); -- Hard op '1'
|
|
blcc_add_xml_element (v_bestand, 'SupplierExternalId', rec.prs_leverancier_nr);
|
|
blcc_add_xml_element (v_bestand, 'ProForma', 'False'); -- Hard op 'False'
|
|
blcc_add_xml_row (v_bestand, '<OrderLines>');
|
|
blcc_add_xml_row (v_bestand, '<OrderLine>');
|
|
blcc_add_xml_element (v_bestand, 'LineId', '1'); -- Hard op '1'
|
|
--blcc_add_xml_element (v_bestand, 'ArticleSupplierExternalId', '');
|
|
blcc_add_xml_element (v_bestand, 'ProductName', rec.omschrijving);
|
|
blcc_add_xml_element (v_bestand, 'Quantity', '1'); -- Hard op '1'
|
|
blcc_add_xml_element (v_bestand, 'Price', TO_CHAR (rec.price));
|
|
blcc_add_xml_element (v_bestand, 'CurrencyExternalId', 'EUR'); -- Hard op 'EUR'
|
|
blcc_add_xml_element (v_bestand, 'OrderUnitExternalId', 'Stuks'); -- Hard op 'Stuks'
|
|
blcc_add_xml_element (v_bestand, 'VatExternalId', 'IH'); -- Hard op 'IH'
|
|
blcc_add_xml_element (v_bestand, 'DeliveryDate', rec.deliverydate); -- ORDAFM of laatste dag van maand voor RES
|
|
blcc_add_xml_element (v_bestand, 'CostTypeExternalId', rec.costtype); -- Kostensoort uit soortmelding
|
|
blcc_add_xml_element (v_bestand, 'CostProjectExternalId', rec.costproject); -- Transformatie van MLD-Gebouwcode
|
|
blcc_add_xml_row (v_bestand, '</OrderLine>');
|
|
blcc_add_xml_row (v_bestand, '</OrderLines>');
|
|
--blcc_add_xml_row (v_bestand, '</parms>');
|
|
--blcc_add_xml_row (v_bestand, '</AddOrder>');
|
|
blcc_add_xml_row (v_bestand, '</Order>');
|
|
|
|
-- Markeren als 'Doorgezet naar ProQuro'!
|
|
v_errormsg := 'Fout markeren doorzetten ProQuro';
|
|
|
|
UPDATE mld_opdr
|
|
SET mld_opdr_ordernr = TO_CHAR (SYSDATE, 'yyyy-mm-dd hh24:mi:ss')
|
|
WHERE mld_opdr_key = rec.mld_opdr_key;
|
|
|
|
INSERT INTO mld_kenmerkopdr (mld_opdr_key,
|
|
mld_kenmerk_key,
|
|
mld_kenmerkopdr_waarde)
|
|
VALUES (rec.mld_opdr_key,
|
|
581, -- Doorgezet naar Proquro
|
|
TO_CHAR (SYSDATE, 'dd-mm-yyyy'));
|
|
END;
|
|
END LOOP;
|
|
blcc_add_xml_row (v_bestand, '</Orders>');
|
|
END IF;
|
|
|
|
fac.writelog (p_applname, 'S', 'ProQuro export/#regels: ' || TO_CHAR (v_order_count), TO_CHAR (v_amount_sum));
|
|
END;
|
|
/
|
|
|
|
------ payload end ------
|
|
|
|
SET DEFINE OFF
|
|
BEGIN adm.systrackscriptId ('$Id$', 1); END;
|
|
/
|
|
|
|
COMMIT;
|
|
SET ECHO OFF
|
|
SPOOL OFF
|
|
SET DEFINE ON
|
|
PROMPT Logfile of this upgrade is: &fcltlogfile
|