diff --git a/APPL/FIN/fin.inc b/APPL/FIN/fin.inc index 1b50349619..7814bd92d1 100644 --- a/APPL/FIN/fin.inc +++ b/APPL/FIN/fin.inc @@ -42,8 +42,8 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? + " FROM fin_factuur f" + " WHERE fin_factuur_key = " + pfin_key var foRs = Oracle.Execute(fsql); - fin_status = foRs("fin_factuur_statuses_key").value; - kpverantwoordelijke = foRs("kpverantwoordelijke").value; + fin_status = foRs("fin_factuur_statuses_key").Value; + kpverantwoordelijke = foRs("kpverantwoordelijke").Value; foRs.Close(); } @@ -70,11 +70,17 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? } // WEB_RELMAN is onderdeel van de PRS module var presult = user.func_enabled2("PRS", { prs_key: user_key, isOptional: true }); + var isContactpersoon = user.isContactpersoon(); + fresult.canFEwrite = fresult.canWrite("WEB_FINUSE") && isContactpersoon; fresult.canFOwrite = fresult.canWrite("WEB_FINFOF"); fresult.canBOwrite = fresult.canWrite("WEB_FINBOF"); - fresult.canWriteAny = fresult.canWrite("WEB_FINFOF") || fresult.canWrite("WEB_FINBOF"); - fresult.canReadAny = fresult.canRead("WEB_FINFOF") || fresult.canRead("WEB_FINBOF") || kpverantwoordelijke == user_key; + fresult.canWriteAny = fresult.canWrite("WEB_FINUSE") && isContactpersoon || fresult.canWrite("WEB_FINFOF") || fresult.canWrite("WEB_FINBOF"); + fresult.canReadAny = (fresult.canRead("WEB_FINUSE") && isContactpersoon) || + fresult.canRead("WEB_FINFOF") || + fresult.canRead("WEB_FINBOF") || + kpverantwoordelijke == user_key; + fresult.canFEread = fresult.canRead("WEB_FINUSE") && isContactpersoon; fresult.canFOread = fresult.canRead("WEB_FINFOF"); fresult.canBOread = fresult.canRead("WEB_FINBOF"); @@ -99,31 +105,35 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? switch (fin_status) { case 3: // Incompleet - fresult.canChange = fresult.canWrite("WEB_FINFOF") || (fresult.canWrite("WEB_FINBOF") && S("fin_bof_mag_editen") == 1); + fresult.canChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || + fresult.canWrite("WEB_FINFOF") || + (fresult.canWrite("WEB_FINBOF") && S("fin_bof_mag_editen") == 1); fresult.canDelete = fresult.canWrite("WEB_FINFOF"); - fresult.canDateChange = fresult.canWrite("WEB_FINFOF"); - fresult.canRemarkChange = fresult.canWrite("WEB_FINFOF"); - fresult.canInvLinChange = fresult.canWrite("WEB_FINFOF"); + fresult.canDateChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF"); + fresult.canRemarkChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF"); + fresult.canInvLinChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF"); break; case 1: // Afgewezen fresult.canUnReject = (fresult.canWrite("WEB_FINFOF") || fresult.canWrite("WEB_FINBOF") || kpverantwoordelijke == user_key) && (kpverantwoordelijke > 0); break; case -1: // Nieuwe factuur case 2: // Ingevoerd - fresult.canChange = fresult.canWrite("WEB_FINFOF") || (fresult.canWrite("WEB_FINBOF") && S("fin_bof_mag_editen") == 1); + fresult.canChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || + fresult.canWrite("WEB_FINFOF") || + (fresult.canWrite("WEB_FINBOF") && S("fin_bof_mag_editen") == 1); fresult.canAccept = (fresult.canWrite("WEB_FINBOF") || kpverantwoordelijke == user_key) && (kpverantwoordelijke > 0); fresult.canDelete = fresult.canWrite("WEB_FINFOF"); - fresult.canDateChange = fresult.canWrite("WEB_FINFOF"); - fresult.canRemarkChange = fresult.canWrite("WEB_FINFOF"); - fresult.canInvLinChange = fresult.canWrite("WEB_FINFOF"); + fresult.canDateChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF"); + fresult.canRemarkChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF"); + fresult.canInvLinChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF"); break; case 6: // Akkoord fresult.canUnapprove = (fresult.canWrite("WEB_FINFOF") || fresult.canWrite("WEB_FINBOF") || kpverantwoordelijke == user_key) && (kpverantwoordelijke > 0); // Maar na wijzigen moet er opnieuw gefiatteed worden door BO. - fresult.canChange = fresult.canWrite("WEB_FINFOF"); - fresult.canDateChange = fresult.canWrite("WEB_FINFOF"); - fresult.canRemarkChange = fresult.canWrite("WEB_FINFOF"); - fresult.canInvLinChange = fresult.canWrite("WEB_FINFOF"); + fresult.canChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF"); + fresult.canDateChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF"); + fresult.canRemarkChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF"); + fresult.canInvLinChange = (fresult.canWrite("WEB_FINUSE") && isContactpersoon) || fresult.canWrite("WEB_FINFOF"); break; case 7: // Verwerkt break; @@ -133,7 +143,7 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? }, analysereferentie: - function _analysereferentie(ref) + function _analysereferentie(ref, iscontactpers) { // Levert info op van de meegegeven referentie // { // ref_type: "O", "B" of "C", @@ -165,7 +175,7 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? return str; } - var result = {}; + var result = {mldopdr_key: -1, besopdr_key: -1, cnt_key: -1}; ref = trim_all(ref); var ref_type = ""; @@ -217,7 +227,7 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? oRs = Oracle.Execute(sql); while (!oRs.eof) { - var srtdisc = oRs("ins_srtdiscipline_prefix").value; + var srtdisc = oRs("ins_srtdiscipline_prefix").Value; if (srtdisc.toUpperCase() == opdr.substr(0, srtdisc.length).toUpperCase() && opdr.substr(srtdisc.length, 1).charCodeAt(0) >= 48 && opdr.substr(srtdisc.length, 1).charCodeAt(0) <= 57) { @@ -248,7 +258,6 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? result.mld_prefix = refnr_prefix; } } - else if (ref_type == "C") { var cnt_nr; @@ -256,8 +265,8 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? var cnt_key; cnt_nr = ref.substr(1); // haal prefix 'C' of 'c' eraf - if (cnt_nr.indexOf(".") > 0) { - // er wordt een expliciete versie aangegeven, separeer + if (cnt_nr.indexOf(".") > 0) + { // er wordt een expliciete versie aangegeven, separeer cnt_versie = cnt_nr.substr(cnt_nr.indexOf(".")+1); // alleen het versienr cnt_nr = cnt_nr.substr(0,cnt_nr.indexOf(".")); // resteert het contractnummer } @@ -271,13 +280,17 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? + " FROM cnt_v_aanwezigcontract c" + " WHERE c.cnt_contract_nummer_intern = " + safe.quoted_sql(cnt_nr) + " AND c.cnt_contract_status IN (0, 1)" - + (cnt_versie ? " AND c.cnt_contract_versie = "+ safe.quoted_sql(cnt_versie) : ""); + + (cnt_versie ? " AND c.cnt_contract_versie = "+ safe.quoted_sql(cnt_versie) : "") + + (iscontactpers + ? " AND c.cnt_prs_bedrijf_key IN (SELECT cp.prs_bedrijf_key" + + " FROM prs_contactpersoon cp" + + " WHERE cp.prs_perslid_key = " + user_key + ")" + : ""); oRs = Oracle.Execute(sql); if (!oRs.eof) { - result.cnt_key = oRs("cnt_contract_key").value; + result.cnt_key = oRs("cnt_contract_key").Value; } } - else if (ref_type == "B") { var besopdr = ref; @@ -294,7 +307,7 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? var likechar = ""; if (!besopdr_s[1]) // niets achter slash opgegeven { - likechar = "%"; + likechar = "%"; } sql = "SELECT bo.bes_bestelopdr_key" + ", bbi.bes_bestelling_key" @@ -306,13 +319,18 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? + " AND bo.bes_bestelopdr_status NOT IN (1,3,8)" // Dat zijn echte bestellingen + " AND bbi.bes_bestelling_key = " + parseInt(besopdr_s[0],10) + " AND UPPER(bo.bes_bestelopdr_id) LIKE " + safe.quoted_sql_wild(ref + likechar) // Volgnummer kan bij bestellingen ook leeg zijn ('1234' of '1234/1') + + (iscontactpers + ? " AND bo.prs_bedrijf_key IN (SELECT cp.prs_bedrijf_key" + + " FROM prs_contactpersoon cp" + + " WHERE cp.prs_perslid_key = " + user_key + ")" + : ""); + " ORDER BY bo.bes_bestelopdr_id"; oRs = Oracle.Execute(sql); if (!oRs.eof) { // Het is een bestelopdracht - result.bes_key = besopdr_s[0]; // bestelling / volgnr //oRs("bes_bestelling_key").value; - result.besopdr_key = oRs("bes_bestelopdr_key").value; //besopdr_s[0]; + result.bes_key = besopdr_s[0]; // bestelling / volgnr //oRs("bes_bestelling_key").Value; + result.besopdr_key = oRs("bes_bestelopdr_key").Value; //besopdr_s[0]; result.bes_volgnr = besopdr_s[1]; } else @@ -325,36 +343,42 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? } } - if (result.ref_type == "O") { - // dan wil ik nog graag de opdrkey + if (result.ref_type == "O") + { // dan wil ik nog graag de opdrkey - if (!result.opdr_volgnr) { - // geen expliciet volgnummer gegeven, dan de nieuwste hanteren - sql = "SELECT COALESCE(MAX(o.mld_opdr_bedrijfopdr_volgnr), 0) opdr_volgnr" - + " FROM mld_opdr o" - + " WHERE o.mld_melding_key = " + result.mld_key; - oRs = Oracle.Execute(sql); - - // altijd 1 resultaat - if (oRs("opdr_volgnr").value > 0) - result.opdr_volgnr = oRs("opdr_volgnr").value; - else - result.opdr_volgnr = 1; - } - - sql = "SELECT o.mld_opdr_key" - + " FROM mld_opdr o, mld_typeopdr mto" - + " WHERE o.mld_typeopdr_key = mto.mld_typeopdr_key" - + " AND mto.mld_typeopdr_kosten = 1" // AADS#17542 - + " AND o.mld_statusopdr_key NOT IN (1, 2, 3, 10)" // Dat zijn echte opdrachten - + " AND o.mld_melding_key = " + result.mld_key - + " AND o.mld_opdr_bedrijfopdr_volgnr = " + result.opdr_volgnr; + if (!result.opdr_volgnr) + { + // geen expliciet volgnummer gegeven, dan de nieuwste hanteren + sql = "SELECT COALESCE(MAX(o.mld_opdr_bedrijfopdr_volgnr), 0) opdr_volgnr" + + " FROM mld_opdr o" + + " WHERE o.mld_melding_key = " + result.mld_key; oRs = Oracle.Execute(sql); - if (!oRs.eof) - result.mldopdr_key = oRs("mld_opdr_key").value; + + // altijd 1 resultaat + if (oRs("opdr_volgnr").Value > 0) + result.opdr_volgnr = oRs("opdr_volgnr").Value; else - result.mldopdr_key = -1; // Geen opdracht gevonden + result.opdr_volgnr = 1; + } + + sql = "SELECT o.mld_opdr_key" + + " FROM mld_opdr o, mld_typeopdr mto" + + " WHERE o.mld_typeopdr_key = mto.mld_typeopdr_key" + + " AND mto.mld_typeopdr_kosten = 1" // AADS#17542 + + " AND o.mld_statusopdr_key NOT IN (1, 2, 3, 10)" // Dat zijn echte opdrachten + + " AND o.mld_melding_key = " + result.mld_key + + " AND o.mld_opdr_bedrijfopdr_volgnr = " + result.opdr_volgnr + + (iscontactpers + ? " AND o.mld_uitvoerende_keys IN (SELECT cp.prs_bedrijf_key" + + " FROM prs_contactpersoon cp" + + " WHERE cp.prs_perslid_key = " + user_key + ")" + : ""); + oRs = Oracle.Execute(sql); + if (!oRs.eof) + result.mldopdr_key = oRs("mld_opdr_key").Value; + //else geen opdracht gevonden. }; + result.valid = result.mldopdr_key > 0 || result.besopdr_key > 0 || result.cnt_key > 0; return result; }, @@ -389,35 +413,35 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? var ref_type; - if (oRs("bes_bestelopdr_key").value) + if (oRs("bes_bestelopdr_key").Value) ref_type="B"; - if (oRs("cnt_key").value) + if (oRs("cnt_key").Value) ref_type="C"; - if (oRs("mld_opdr_key").value) + if (oRs("mld_opdr_key").Value) ref_type="O"; - var fin_boekm = oRs("fin_factuur_boekmaand").value; + var fin_boekm = oRs("fin_factuur_boekmaand").Value; var fin_factuur = { fin_key: fin_key, ref_type: ref_type, - mldopdr_key: oRs("mld_opdr_key").value, - cnt_key: oRs("cnt_key").value, + mldopdr_key: oRs("mld_opdr_key").Value, + cnt_key: oRs("cnt_key").Value, besopdr_key: oRs("bes_bestelopdr_key").Value, - fin_totaal: oRs("fin_factuur_totaal").value, - fin_totaal_btw: oRs("fin_factuur_totaal_btw").value, - perslid_key_user: oRs("prs_perslid_key_user").value, - fin_opm: oRs("fin_factuur_opmerking").value, - fin_status_key: oRs("fin_factuur_statuses_key").value, - fin_status_oms: fin.getfinstatustext(oRs("fin_factuur_statuses_key").value), - fin_perslid_user: oRs("name").value, - fin_date: new Date(oRs("fin_factuur_datum").value), - fin_nr: oRs("fin_factuur_nr").value, + fin_totaal: oRs("fin_factuur_totaal").Value, + fin_totaal_btw: oRs("fin_factuur_totaal_btw").Value, + perslid_key_user: oRs("prs_perslid_key_user").Value, + fin_opm: oRs("fin_factuur_opmerking").Value, + fin_status_key: oRs("fin_factuur_statuses_key").Value, + fin_status_oms: fin.getfinstatustext(oRs("fin_factuur_statuses_key").Value), + fin_perslid_user: oRs("name").Value, + fin_date: new Date(oRs("fin_factuur_datum").Value), + fin_nr: oRs("fin_factuur_nr").Value, fin_boekm: fin_boekm, fin_boekm_jaar: fin_boekm.substr(0, 4), - fin_debiteur: oRs("fin_factuur_debiteur_nr").value, - fin_costsrt_key: oRs("prs_kostensoort_key").value, - fin_costsrt: oRs("kostensoort").value, - fin_verwijder: oRs("fin_factuur_verwijder").value + fin_debiteur: oRs("fin_factuur_debiteur_nr").Value, + fin_costsrt_key: oRs("prs_kostensoort_key").Value, + fin_costsrt: oRs("kostensoort").Value, + fin_verwijder: oRs("fin_factuur_verwijder").Value } oRs.Close(); @@ -441,11 +465,11 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? + " AND o.mld_opdr_key = " + fin_factuur.mldopdr_key; oRs = Oracle.Execute(sql); - fin_factuur.mld_key = oRs("mld_melding_key").value; - fin_factuur.opdr_volgnr = oRs("mld_opdr_bedrijfopdr_volgnr").value; - fin_factuur.mld_prefix = oRs("prefix").value; - fin_factuur.fin_costsrt_default = oRs("prs_kostensoort_key").value; - fin_factuur.kostenplaats_key = oRs("prs_kostenplaats_key").value; + fin_factuur.mld_key = oRs("mld_melding_key").Value; + fin_factuur.opdr_volgnr = oRs("mld_opdr_bedrijfopdr_volgnr").Value; + fin_factuur.mld_prefix = oRs("prefix").Value; + fin_factuur.fin_costsrt_default = oRs("prs_kostensoort_key").Value; + fin_factuur.kostenplaats_key = oRs("prs_kostenplaats_key").Value; oRs.Close(); break; @@ -470,17 +494,17 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? + " AND isg.ins_discipline_key = bd.ins_discipline_key" + " AND bo.bes_bestelopdr_key = " + fin_factuur.besopdr_key oRs = Oracle.Execute(sql); - fin_factuur.fin_costsrt_default = oRs("prs_kostensoort_key").value; - fin_factuur.kostenplaats_key = oRs("prs_kostenplaats_key").value; + fin_factuur.fin_costsrt_default = oRs("prs_kostensoort_key").Value; + fin_factuur.kostenplaats_key = oRs("prs_kostenplaats_key").Value; - var bes_bestelopdr_id = oRs("bes_bestelopdr_id").value; + var bes_bestelopdr_id = oRs("bes_bestelopdr_id").Value; var bes_bestelopdr_id_s = bes_bestelopdr_id.split("/"); fin_factuur.bes_key = bes_bestelopdr_id_s[0]; if (bes_bestelopdr_id_s.length == 2) fin_factuur.bes_volgnr = bes_bestelopdr_id_s[1]; - fin_factuur.bes_id = oRs("bes_bestelopdr_id").value; + fin_factuur.bes_id = oRs("bes_bestelopdr_id").Value; oRs.Close(); break; @@ -494,10 +518,10 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? + " WHERE c.ins_discipline_key = cd.ins_discipline_key" + " AND cnt_contract_key = " + fin_factuur.cnt_key oRs = Oracle.Execute(sql); - fin_factuur.cnt_nr = oRs("cnt_contract_nummer_intern").value; - fin_factuur.cnt_versie = oRs("cnt_contract_versie").value; - fin_factuur.fin_costsrt_default = oRs("prs_kostensoort_key").value; - fin_factuur.kostenplaats_key = oRs("prs_kostenplaats_key").value; + fin_factuur.cnt_nr = oRs("cnt_contract_nummer_intern").Value; + fin_factuur.cnt_versie = oRs("cnt_contract_versie").Value; + fin_factuur.fin_costsrt_default = oRs("prs_kostensoort_key").Value; + fin_factuur.kostenplaats_key = oRs("prs_kostenplaats_key").Value; oRs.Close(); sql = "SELECT SUM(fin_factuur_totaal) totaal" @@ -506,7 +530,7 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? + " AND fin_factuur_statuses_key <> 1" + " AND fin_factuur_datum <= " + fin_factuur.fin_date.toSQL(); oRs = Oracle.Execute(sql); - fin_factuur.totaalgefactureerd = oRs("totaal").value; + fin_factuur.totaalgefactureerd = oRs("totaal").Value; oRs.Close(); break; @@ -519,7 +543,7 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? + " FROM prs_kostenplaats k" + " WHERE k.prs_kostenplaats_key = " + fin_factuur.kostenplaats_key; oRs = Oracle.Execute(sql); - fin_factuur.fin_budgethouder = oRs("prs_perslid_key").value; + fin_factuur.fin_budgethouder = oRs("prs_perslid_key").Value; oRs.Close(); } @@ -528,7 +552,7 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? + " FROM fin_factuurregel fr" + " WHERE fr.fin_factuur_key = " + fin_key; oRs = Oracle.Execute(sql); - fin_factuur.totaal = oRs("sumBTW").value; + fin_factuur.totaal = oRs("sumBTW").Value; oRs.close(); @@ -552,7 +576,7 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? // 10 (2): Totaal kosten matchen // 11 (3): Termijn kosten en totaal kosten matchen var result = 0; - result = (oRs("totaal").value? 2 : 0) + (oRs("termijn").value? 1 : 0); + result = (oRs("totaal").Value? 2 : 0) + (oRs("termijn").Value? 1 : 0); return result; }, @@ -648,29 +672,29 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? if (!oRs.eof) { - var result = { ref_key: oRs("mld_opdr_key").value, // mldopdr_key + var result = { ref_key: oRs("mld_opdr_key").Value, // mldopdr_key ref_type: "O", ref_volgnr: opdr_volgnr, referentie: (oRs("ins_srtdiscipline_prefix").Value||"") + fin_factuur.mld_key + "/" + opdr_volgnr, - lev_uit: oRs("uitvoerende").value, - lev_uit_key: oRs("uitvoerende_key").value, - lev_uit_type: oRs("pbtype").value, - status: status.getopdrstatustext(oRs("mld_statusopdr_key").value), - startdatum: toDateString(oRs("startdatum").value), - einddatum: toDateString(oRs("einddatum").value), - periode: oRs("periode").value, - totbedrag: oRs("totaalbedrag").value, - gefactureerd: oRs("gefactureerd").value, - gefactureerd_jaar: oRs("gefactureerd_jaar").value, - kostensoort_key: oRs("kostensoort_key").value, - kostenplaats_key: oRs("prs_kostenplaats_key").value, - loc_code: oRs("loc_code").value, - loc_key: oRs("loc_key").value, - alg_key: oRs("alg_key").value, - opdr_omschr: oRs("mld_opdr_omschrijving").value, - show_omschr: (oRs("show_omschr").value == 1), - typeopdr_omschr: oRs("mld_typeopdr_omschrijving").value, - btwtabel_key: oRs("btwtabel_key").value + lev_uit: oRs("uitvoerende").Value, + lev_uit_key: oRs("uitvoerende_key").Value, + lev_uit_type: oRs("pbtype").Value, + status: status.getopdrstatustext(oRs("mld_statusopdr_key").Value), + startdatum: toDateString(oRs("startdatum").Value), + einddatum: toDateString(oRs("einddatum").Value), + periode: oRs("periode").Value, + totbedrag: oRs("totaalbedrag").Value, + gefactureerd: oRs("gefactureerd").Value, + gefactureerd_jaar: oRs("gefactureerd_jaar").Value, + kostensoort_key: oRs("kostensoort_key").Value, + kostenplaats_key: oRs("prs_kostenplaats_key").Value, + loc_code: oRs("loc_code").Value, + loc_key: oRs("loc_key").Value, + alg_key: oRs("alg_key").Value, + opdr_omschr: oRs("mld_opdr_omschrijving").Value, + show_omschr: (oRs("show_omschr").Value == 1), + typeopdr_omschr: oRs("mld_typeopdr_omschrijving").Value, + btwtabel_key: oRs("btwtabel_key").Value }; } else @@ -748,30 +772,30 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? if (!oRs.eof) { - var bes_bestelopdr_id = oRs("bes_bestelopdr_id").value; + var bes_bestelopdr_id = oRs("bes_bestelopdr_id").Value; bo_id = bes_bestelopdr_id.split("/") - var result = { ref_key: oRs("bes_bestelopdr_key").value, // besopdr_key + var result = { ref_key: oRs("bes_bestelopdr_key").Value, // besopdr_key ref_type: "B", ref_volgnr: bo_id[1], - referentie: oRs("bes_bestelopdr_id").value, - lev_uit: oRs("uitvoerende").value, - lev_uit_key: oRs("uitvoerende_key").value, - lev_uit_type: oRs("pbtype").value, - status: bes.getbesopdrstatustext(oRs("bes_bestelopdr_status").value), - startdatum: toDateString(oRs("startdatum").value), - einddatum: toDateString(oRs("einddatum").value), - periode: oRs("periode").value, - levkosten: oRs("bes_bestelling_levkosten").value, - korting: oRs("bes_bestelling_korting").value, - totbedrag: oRs("totaalbedrag").value, - gefactureerd: oRs("gefactureerd").value, - gefactureerd_jaar: oRs("gefactureerd_jaar").value, - kostensoort_key: oRs("prs_kostensoort_key").value, - kostenplaats_key: oRs("prs_kostenplaats_key").value, - loc_code: oRs("loc_code").value, - alg_key: oRs("alg_key").value, - bes_bestelopdr_id: oRs("bes_bestelopdr_id").value, - btwtabel_key: oRs("btwtabel_key").value + referentie: oRs("bes_bestelopdr_id").Value, + lev_uit: oRs("uitvoerende").Value, + lev_uit_key: oRs("uitvoerende_key").Value, + lev_uit_type: oRs("pbtype").Value, + status: bes.getbesopdrstatustext(oRs("bes_bestelopdr_status").Value), + startdatum: toDateString(oRs("startdatum").Value), + einddatum: toDateString(oRs("einddatum").Value), + periode: oRs("periode").Value, + levkosten: oRs("bes_bestelling_levkosten").Value, + korting: oRs("bes_bestelling_korting").Value, + totbedrag: oRs("totaalbedrag").Value, + gefactureerd: oRs("gefactureerd").Value, + gefactureerd_jaar: oRs("gefactureerd_jaar").Value, + kostensoort_key: oRs("prs_kostensoort_key").Value, + kostenplaats_key: oRs("prs_kostenplaats_key").Value, + loc_code: oRs("loc_code").Value, + alg_key: oRs("alg_key").Value, + bes_bestelopdr_id: oRs("bes_bestelopdr_id").Value, + btwtabel_key: oRs("btwtabel_key").Value }; } else @@ -833,23 +857,23 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? { var result = { ref_key: fin_factuur.cnt_key, ref_type: "C", - ref_volgnr: oRs("cnt_versie").value, - referentie: 'C' + fin_factuur.cnt_nr+(oRs("cnt_versie").value ? '.'+oRs("cnt_versie").value:''), - lev_uit: oRs("uitvoerende").value, - lev_uit_key: oRs("uitvoerende_key").value, - lev_uit_type: oRs("pbtype").value, - status: oRs("cnt_contract_status").value, - startdatum: toDateString(oRs("startdatum").value), - einddatum: toDateString(oRs("einddatum").value), - periode: oRs("periode").value, - totbedrag: oRs("totaalbedrag").value, - termbedrag: oRs("termijnbedrag").value, - gefactureerd: oRs("gefactureerd").value, - gefactureerd_jaar: oRs("gefactureerd_jaar").value, - kostensoort_key: oRs("kostensoort_key").value, - kostenplaats_key: oRs("prs_kostenplaats_key").value, - btwtabel_key: oRs("btwtabel_key").value, - disc_key: oRs("ins_discipline_key").value + ref_volgnr: oRs("cnt_versie").Value, + referentie: 'C' + fin_factuur.cnt_nr+(oRs("cnt_versie").Value ? '.'+oRs("cnt_versie").Value:''), + lev_uit: oRs("uitvoerende").Value, + lev_uit_key: oRs("uitvoerende_key").Value, + lev_uit_type: oRs("pbtype").Value, + status: oRs("cnt_contract_status").Value, + startdatum: toDateString(oRs("startdatum").Value), + einddatum: toDateString(oRs("einddatum").Value), + periode: oRs("periode").Value, + totbedrag: oRs("totaalbedrag").Value, + termbedrag: oRs("termijnbedrag").Value, + gefactureerd: oRs("gefactureerd").Value, + gefactureerd_jaar: oRs("gefactureerd_jaar").Value, + kostensoort_key: oRs("kostensoort_key").Value, + kostenplaats_key: oRs("prs_kostenplaats_key").Value, + btwtabel_key: oRs("btwtabel_key").Value, + disc_key: oRs("ins_discipline_key").Value }; } else @@ -907,8 +931,8 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? while (!oRs.eof) { - result.loc_geg.push({ loc_key: oRs("cnt_alg_plaats_key").value, - loc_desc: oRs("alg_locatie_omschrijving").value + result.loc_geg.push({ loc_key: oRs("cnt_alg_plaats_key").Value, + loc_desc: oRs("alg_locatie_omschrijving").Value }); oRs.MoveNext(); } @@ -937,7 +961,7 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? + " FROM prs_kostenplaats k" + " WHERE k.prs_kostenplaats_key = " + result.kostenplaats_key; oRs = Oracle.Execute(sql); - result.fin_budgethouder = oRs("prs_perslid_key").value; + result.fin_budgethouder = oRs("prs_perslid_key").Value; result.kostenplaats_naam = oRs("kostenplaats_naam").Value; oRs.Close(); } @@ -984,9 +1008,9 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? + " FROM (" + sql + ")"; var oRs = Oracle.Execute(sql); - result.aantalfacturen = oRs("aantal_facturen").value; - result.totaalbedrag = oRs("totaal_bedrag").value; - result.totaalbtwbedrag = oRs("totaal_btw_bedrag").value; + result.aantalfacturen = oRs("aantal_facturen").Value; + result.totaalbedrag = oRs("totaal_bedrag").Value; + result.totaalbtwbedrag = oRs("totaal_btw_bedrag").Value; oRs.close(); } @@ -1008,10 +1032,10 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? var oRs = Oracle.Execute(sql); while (!oRs.eof) { - btwtabel.push({ key: oRs("fin_btwtabelwaarde_key").value, - perc: oRs("fin_btwtabelwaarde_perc").value, - oms: oRs("fin_btwtabelwaarde_oms").value, - verlegd: oRs("fin_btwtabelwaarde_verlegd").value == 1 + btwtabel.push({ key: oRs("fin_btwtabelwaarde_key").Value, + perc: oRs("fin_btwtabelwaarde_perc").Value, + oms: oRs("fin_btwtabelwaarde_oms").Value, + verlegd: oRs("fin_btwtabelwaarde_verlegd").Value == 1 }); oRs.moveNext(); } @@ -1035,8 +1059,8 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? + " AND f.fin_factuur_verwijder IS NULL"; oRs = Oracle.Execute(sql); var result = { fac_nr: fac_nr, - aantal: oRs("aantal").value? oRs("aantal").value : 0, - totaal: oRs("totaal").value? safe.curr(oRs("totaal").value) : 0 + aantal: oRs("aantal").Value? oRs("aantal").Value : 0, + totaal: oRs("totaal").Value? safe.curr(oRs("totaal").Value) : 0 }; oRs.close(); return result; @@ -1205,18 +1229,18 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur? rowIndex ++; fin.CreateEditRow(rowIndex, { hasAnyFlex: fin.hasAnyRegelFlex(), - regel_key: oRs("fin_factuurregel_key").value, - regel_nr: oRs("fin_factuurregel_nr").value, - sum: oRs("fin_factuurregel_totaal").value, - BTW: oRs("BTW").value, - btwkey: oRs("fin_btwtabelwaarde_key").value, + regel_key: oRs("fin_factuurregel_key").Value, + regel_nr: oRs("fin_factuurregel_nr").Value, + sum: oRs("fin_factuurregel_totaal").Value, + BTW: oRs("BTW").Value, + btwkey: oRs("fin_btwtabelwaarde_key").Value, btwtabel: btwtabel, - sumBTW: oRs("sumBTW").value, - descr: oRs("fin_factuurregel_omschrijving").value, - ref: oRs("fin_factuurregel_referentie").value, - ksrt_key: oRs("prs_kostensoort_key").value, - ksrt_oms: oRs("kostensoort").value, - verlegd: oRs("verlegd").value, + sumBTW: oRs("sumBTW").Value, + descr: oRs("fin_factuurregel_omschrijving").Value, + ref: oRs("fin_factuurregel_referentie").Value, + ksrt_key: oRs("prs_kostensoort_key").Value, + ksrt_oms: oRs("kostensoort").Value, + verlegd: oRs("verlegd").Value, copy: this_fin.fin_key != this_fin.factuur_info.fin_key // Bij kopiëren factuur zijn de waarden niet identiek. }); oRs.moveNext(); diff --git a/APPL/FIN/fin_edit_factuur.asp b/APPL/FIN/fin_edit_factuur.asp index c922c0adcf..84c433fca6 100644 --- a/APPL/FIN/fin_edit_factuur.asp +++ b/APPL/FIN/fin_edit_factuur.asp @@ -45,7 +45,7 @@ if (fin_key > 0) } else // nieuwe factuur. Defaults bepalen { - user.auth_required_or_abort(this_fin.canFOwrite); // Alleen FO kan aanmaken + user.auth_required_or_abort(this_fin.canFEwrite || this_fin.canFOwrite); // Alleen FE (als contactpersoon) of FO kan aanmaken. if (copy) { // Haal de opdrachtgegevens op van de opdracht @@ -95,6 +95,7 @@ else // nieuwe factuur. Defaults bepalen this_fin.factuur_info = fin_factuur; } } +var isContactpersoon = this_fin.canFEwrite; var refoms = L("lcl_fin_referentie"); var refurl = ""; @@ -136,6 +137,7 @@ var fin_btwtabel_key = oRs("fin_btwtabel_key").value; // Standaard btw tabel key var fin_defaultboekmaand = <%=S("fin_defaultboekmaand")%>; var fin_enable_kostensoort = <%=S("fin_enable_kostensoort")%>; var fin_kostensoort_verplicht = <%=S("fin_kostensoort_verplicht")%>; + var isContactpersoon = <%=isContactpersoon? 1 : 0%> == 1; jQuery(document).ready(function() { diff --git a/APPL/FIN/fin_edit_factuur.js b/APPL/FIN/fin_edit_factuur.js index 2c3138b08e..5518f517e4 100644 --- a/APPL/FIN/fin_edit_factuur.js +++ b/APPL/FIN/fin_edit_factuur.js @@ -325,7 +325,8 @@ function referenceChanged(refchanged) { ref_nr: $("#referentienr").val(), fin_boekm_jaar: $("#finboekm").val().substr(0, 4), refchanged: (refchanged && ($("#referentienr_old").val() == "" || default_costsrt_selected || fin_key == -1)? 1: 0), - fin_factuur_nr: $("#finnr").val() + fin_factuur_nr: $("#finnr").val(), + iscontactpers: isContactpersoon? 1 : 0 }); FcltGetRefInfoCallback(returndata) } diff --git a/APPL/FIN/fin_edit_factuur_save.asp b/APPL/FIN/fin_edit_factuur_save.asp index 4d06575d5c..81596d3480 100644 --- a/APPL/FIN/fin_edit_factuur_save.asp +++ b/APPL/FIN/fin_edit_factuur_save.asp @@ -35,14 +35,17 @@ var this_fin = fin.func_enabled_factuur(fin_key); // Wat heb ik zoal aan rechten user.auth_required_or_abort(this_fin.canChange); // TODO: testen AAIT#22473 -// Status van 3 (foute import) moet bij saven 2 worden gezet +var isContactpersoon = this_fin.canFEwrite; +var referentiegegevens = fin.analysereferentie(referentienr, isContactpersoon); +// Het moet een geldige referentie zijn. +user.auth_required_or_abort(referentiegegevens.valid); + +// Status van 3 (foute import) moet bij saven op 2 worden gezet. if (fin_status_key == 3) fin_status_key = 2; // Statis 6 (Akkoord) moet bij saven op 2 (Ingevoerd) worden gezet. Factuur dient indien nodig weer gefiatteerd te worden. if (fin_status_key == 6) fin_status_key = 2; -var referentiegegevens = fin.analysereferentie(referentienr); - // Deze velden altijd opslaan // Merk op: fin_factuur_totaal en fin_factuur_totaal_btw krijgen later definitieve waarde var fields = [ { dbs: "prs_perslid_key_user", typ: "key", val: user_key }, diff --git a/APPL/FIN/fin_flexkenmerk.inc b/APPL/FIN/fin_flexkenmerk.inc index 086d71585c..a231875c4b 100644 --- a/APPL/FIN/fin_flexkenmerk.inc +++ b/APPL/FIN/fin_flexkenmerk.inc @@ -21,9 +21,10 @@ function generateFlexKenmerkCode(params) { // Geen autfunction bepaald. Je komt bij FIN niet binnen met een bepaalde rol (urole). // Alleen PRSreadlevel en PRSwritelevel van belang want fac_functie_min_level = 7 (lezen en schrijven organisatie) + var authparamsFINUSE = user.checkAutorisation("WEB_FINUSE", true); var authparamsFINFOF = user.checkAutorisation("WEB_FINFOF", true); var authparamsFINBOF = user.checkAutorisation("WEB_FINBOF", true); - user.auth_required_or_abort(authparamsFINFOF || authparamsFINBOF || user.isBudgethouder()); + user.auth_required_or_abort(authparamsFINUSE || authparamsFINFOF || authparamsFINBOF || user.isBudgethouder()); var fin_key = params.fin_key; // Factuurnummer var regel_key = params.regel_key; // Factuurregelnummer diff --git a/APPL/FIN/fin_list.inc b/APPL/FIN/fin_list.inc index f2edc8c61e..867790cb94 100644 --- a/APPL/FIN/fin_list.inc +++ b/APPL/FIN/fin_list.inc @@ -62,15 +62,18 @@ function fin_list (params) var urole = "bo"; // urole nodig om opdracht/contract/bestelling in te zien. Dummie waarde. // Geen autfunction bepaald. Je komt bij FIN niet binnen met een bepaalde rol (urole). // Nieuw/versimpeld: fac_functie_min_level = 3 (lezen en schrijven) + var authparamsFINUSE = user.checkAutorisation("WEB_FINUSE", true); var authparamsFINFOF = user.checkAutorisation("WEB_FINFOF", true); var authparamsFINBOF = user.checkAutorisation("WEB_FINBOF", true); - user.auth_required_or_abort(authparamsFINFOF || authparamsFINBOF || user.isBudgethouder()); + user.auth_required_or_abort(authparamsFINUSE || authparamsFINFOF || authparamsFINBOF || user.isBudgethouder()); // ik ken 2 varianten: allemaal of alleen de mijne - var alleenmijnkostenplaatsen = (!authparamsFINFOF && !authparamsFINBOF); // geen FINFOF of FINBOF->budgethouder + var alleenmijnkostenplaatsen = (!authparamsFINUSE && !authparamsFINFOF && !authparamsFINBOF); // geen FINUSE, FINFOF of FINBOF -> budgethouder - // Voor resulttable de globalen zetten; zou ng anders moeten. + var isContactpersoon = user.isContactpersoon(); + + // Voor resulttable de globalen zetten; zou nog anders moeten. var outputmode = params.outputmode; // print to 0 = screen, 1 = printer, 2 = excel, etc. var print = (outputmode == 1); var excel = (outputmode == 2); @@ -606,7 +609,7 @@ function fin_list (params) } buttons = []; - if (!embedded && authparamsFINFOF && authparamsFINFOF.PRSwritelevel < 9) + if (!embedded && ((authparamsFINFOF && authparamsFINFOF.PRSwritelevel < 9) || (authparamsFINUSE && authparamsFINUSE.PRSwritelevel < 9))) { var addurl = "appl/fin/fin_factuur.asp?fin_key=-1"; addurl += buildTransitParam(["cnt_key", "opdr_key", "bes_key"], params) @@ -630,7 +633,7 @@ function fin_list (params) } fioRs.close(); } - if (fac_import_app_key > -1) { + if (fac_import_app_key > -1 && (authparamsFINFOF && authparamsFINFOF.PRSwritelevel < 9)) { var impurl = "appl/imp/imp_search.asp?import_app_key=" + fac_import_app_key; buttons.push({ icon: "folder.png", title: L("lcl_import"), action: "FcltMgr.openDetail('" + impurl + "', '" + L("lcl_import") + "')" }); } diff --git a/APPL/FIN/fin_search.asp b/APPL/FIN/fin_search.asp index d7b703e2d8..11054bfbca 100644 --- a/APPL/FIN/fin_search.asp +++ b/APPL/FIN/fin_search.asp @@ -76,14 +76,16 @@ if (finstatus == -1 && finnum == "" && opdrnr == -1) /***** End get webform parameters *****/ // Alleen PRSreadlevel en PRSwritelevel van belang want fac_functie_min_level = 7 (lezen en schrijven organisatie) +var authparamsFINUSE = user.checkAutorisation("WEB_FINUSE", true); var authparamsFINFOF = user.checkAutorisation("WEB_FINFOF", true); var authparamsFINBOF = user.checkAutorisation("WEB_FINBOF", true); -user.auth_required_or_abort(authparamsFINFOF || authparamsFINBOF || user.isBudgethouder()); +user.auth_required_or_abort(authparamsFINUSE || authparamsFINFOF || authparamsFINBOF || user.isBudgethouder()); // ik ken 2 varianten: allemaal of alleen de mijne -var alleenmijnkostenplaatsen = (!authparamsFINFOF && !authparamsFINBOF); // geen FINFOF of FINBOF->budgethouder +var alleenmijnkostenplaatsen = (!authparamsFINUSE && !authparamsFINFOF && !authparamsFINBOF); // geen FINUSE, FINFOF of FINBOF -> budgethouder +var isContactpersoon = user.isContactpersoon(); %> @@ -181,7 +183,7 @@ var alleenmijnkostenplaatsen = (!authparamsFINFOF && !authparamsFINBOF); // gee FCLTbedrijfselector("handler","handler", { companyKey: handler_key, label: L("lcl_handler"), - filtercode: "X", + filtercode: (isContactpersoon && authparamsFINUSE && !authparamsFINFOF && !authparamsFINBOF? "CP" : "X"), trclass:"primsearc", emptyOption: "", whenEmpty: L("lcl_search_generic") @@ -224,17 +226,20 @@ var alleenmijnkostenplaatsen = (!authparamsFINFOF && !authparamsFINBOF); // gee trclass: "primsearch", emptyOption: "" }) -%> - -<% FCLTplaatsselector(authparamsFINBOF? authparamsFINBOF.ALGreadlevel : 9, - { districtkey: dis_key, - locatiekey: loc_key, - gebouwkey: bld_key, - startlevel: 1, - eindlevel: 3, // gebouw - terrein: true, - whenEmpty: L("lcl_search_generic") // want filter - }); + + if (authparamsFINFOF || authparamsFINBOF) + { + // Locatie/gebouw + FCLTplaatsselector(authparamsFINBOF? authparamsFINBOF.ALGreadlevel : 9, + { districtkey: dis_key, + locatiekey: loc_key, + gebouwkey: bld_key, + startlevel: 1, + eindlevel: 3, // gebouw + terrein: true, + whenEmpty: L("lcl_search_generic") // want filter + }); + } %> <% // Dit veld is alleen zichtbaar indien er minimaal één gebouwverantwoordelijke geconfigureerd is (suppressNoValues). diff --git a/APPL/FIN/get_ref_info_ajax.asp b/APPL/FIN/get_ref_info_ajax.asp index a7bd6b57c0..0c1220ffba 100644 --- a/APPL/FIN/get_ref_info_ajax.asp +++ b/APPL/FIN/get_ref_info_ajax.asp @@ -26,8 +26,9 @@ var ref_nr = getQParam("ref_nr"); var fin_boekm_jaar = getQParam("fin_boekm_jaar"); var refchanged = (getQParamInt("refchanged") == 1); var fin_factuur_nr = getQParam("fin_factuur_nr"); +var iscontactpers = (getQParamInt("iscontactpers", 0) == 1); -var fin_factuur_geg = fin.analysereferentie(ref_nr); +var fin_factuur_geg = fin.analysereferentie(ref_nr, iscontactpers); fin_factuur_geg.fin_boekm_jaar = fin_boekm_jaar; fin_factuur_geg.fin_key = -1;