Files
Customer/onces/BLCC/BLCC#58442.sql
Maarten van der Heide 3540f114ae BLCC#58442 PROQURO-export/<ProductName>
svn path=/Customer/; revision=43316
2019-07-10 13:22:12 +00:00

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