diff --git a/APPL/API2/model_bgt_budget.inc b/APPL/API2/model_bgt_budget.inc index 580e7ae029..691aa831dd 100644 --- a/APPL/API2/model_bgt_budget.inc +++ b/APPL/API2/model_bgt_budget.inc @@ -85,7 +85,7 @@ function model_bgt_budget() }, "amountoriginal": { "dbs": "bgt_budget_bedrag_origineel", - "sql": "(BGT.getBudgetOpDatum(bgt_budget.bgt_budget_key, NULL))", + "sql": "(BGT.getBudgetOpDatum(bgt_budget.bgt_budget_key, 0, NULL))", "label": L("bgt_budget_origineel"), "typ": "float", "iscurrency": true, @@ -93,7 +93,7 @@ function model_bgt_budget() }, "amountmutation": { "dbs": "bgt_budget_bedrag_mutatie", - "sql": "(BGT.getBudgetMutaties(bgt_budget.bgt_budget_key, NULL, NULL))", + "sql": "(BGT.getBudgetMutaties(bgt_budget.bgt_budget_key, 0, NULL, NULL))", "label": L("bgt_budget_mutaties"), "typ": "float", "iscurrency": true, diff --git a/APPL/API2/model_bgt_discipline.inc b/APPL/API2/model_bgt_discipline.inc index 80b4d04d31..f527390805 100644 --- a/APPL/API2/model_bgt_discipline.inc +++ b/APPL/API2/model_bgt_discipline.inc @@ -79,7 +79,8 @@ function _model_bgt_discipline() "dbs": "ins_discipline_btw", "label": L("bgt_discipline_btw"), "typ": "check", - "default": "false" + "default": "false", + "hidden_fld": true } }; diff --git a/APPL/API2/model_fin_factuur.inc b/APPL/API2/model_fin_factuur.inc index 6e5d9151f6..331a2f9d86 100644 --- a/APPL/API2/model_fin_factuur.inc +++ b/APPL/API2/model_fin_factuur.inc @@ -49,6 +49,13 @@ function model_fin_factuur() "foreign": bgt_budgetproject_foreign(), "showtransit": true }, + "costtype": { + "dbs": "prs_kostensoort_key", + "label": L("prs_kostensoort_key"), + "typ": "key", + "foreign": bgt_costtype_foreign(), + "required": false + }, "company": { "dbs": "mld_opdr.mld_uitvoerende_keys", "label": L("lcl_ord_company"), @@ -65,14 +72,6 @@ function model_fin_factuur() "showtransit": true, "clone": false }, - "costtype": { - "dbs": "prs_kostensoort_key", - "label": L("prs_kostensoort_key"), - "typ": "key", - "foreign": bgt_costtype_foreign(), - "required": false, - "hidden_fld": true - }, "additional": { "dbs": "mld_opdr.mld_opdr_meerwerk", "label": L("lcl_mld_opdr_meerwerk"), @@ -94,6 +93,13 @@ function model_fin_factuur() "typ": "varchar", "hidden_fld": true }, + "account": { + "dbs": "mld_opdr.prs_kostenplaats_key", + "label": L("bgt_budget_account"), + "typ": "key", + "foreign": bgt_account_foreign(), + "readonly": true + }, "invoice": { "dbs": "fin_factuur_nr", "label": L("lcl_fin_invoice_number"), @@ -209,13 +215,33 @@ function model_fin_factuur() <% - // Bij klonen: id=-1, invoice=niet leeg. Dan een (volgende) volgnummer erachter zetten. - if (obj.invoice) + if (!obj.id && obj.invoice) { + // Bij klonen: id=(bestaat niet), invoice=niet leeg. Dan een (volgende) volgnummer erachter zetten. var invoice = obj.invoice; var cur_inv = (invoice.indexOf("/") > -1 ? invoice.substring(0,invoice.indexOf("/")-1) : invoice); var cur_seq = (invoice.indexOf("/") > -1 ? invoice.substring(invoice.indexOf("/")+1) : 0); - cur_seq = (cur_seq ? cur_seq : 0); + cur_seq = parseInt(cur_seq ? cur_seq : 0); + + var sql = "SELECT MAX(CASE WHEN INSTR(f.fin_factuur_nr, '/') > 0" + + " THEN TO_NUMBER(SUBSTR(f.fin_factuur_nr, INSTR(f.fin_factuur_nr, '/')+1))" + + " ELSE 0" + + " END) max_seq" + + " FROM bgt_kostenrubriek r" + + " , prs_kostensoortgrp g" + + " , prs_kostensoort s" + + " , mld_opdr o" + + " , fin_factuur f" + + " WHERE r.bgt_kostenrubriek_key = g.bgt_kostenrubriek_key" + + " AND g.prs_kostensoortgrp_key = s.prs_kostensoortgrp_key" + + " AND s.prs_kostensoort_key = o.prs_kostensoort_key" + + " AND o.mld_opdr_key = f.mld_opdr_key" + + " AND r.bgt_project_key = " + obj.budgetproject.id + + " AND f.fin_factuur_nr LIKE " + safe.quoted_sql(cur_inv + "%"); + var oRs = Oracle.Execute(sql); + cur_seq = oRs("max_seq").Value; + oRs.Close(); + var new_inv = cur_inv + "/" + (cur_seq + 1); obj.invoice = new_inv; } @@ -223,10 +249,12 @@ function model_fin_factuur() { var mld_opdr_key = getQParamInt("opdrachtcommon", -1); if (obj.id == -1 && mld_opdr_key > -1) - { + { // Nieuwe factuur bij bekende opdracht. var sql = "SELECT p.ins_discipline_key" + " , p.bgt_project_key" + " , o.mld_uitvoerende_keys" + + " , s.prs_kostensoort_key" + + " , s.prs_kostensoort_oms" + " FROM mld_opdr o" + " , prs_kostensoort s" + " , prs_kostensoortgrp g" @@ -241,14 +269,19 @@ function model_fin_factuur() var v_order = mld_opdr_key; var v_discipline = oRs("ins_discipline_key").Value; var v_project = oRs("bgt_project_key").Value; + var v_soort = oRs("prs_kostensoort_key").Value; + var v_srtoms = oRs("prs_kostensoort_oms").Value; var v_company = oRs("mld_uitvoerende_keys").Value; oRs.Close(); + // Er is geen QParam voor costtype gezet, dus deze zelf vullen. + obj.costtype = {id: v_soort, name: v_srtoms}; } else { var v_order = null; var v_discipline = (obj.budgetdiscipline ? obj.budgetdiscipline.id : null); var v_project = (obj.budgetproject ? obj.budgetproject.id : null); + var v_soort = (obj.costtype ? obj.costtype.id : null); var v_company = (obj.company ? obj.company.id : null); } %> @@ -257,6 +290,7 @@ function model_fin_factuur() <% if (v_order) { %> var mldopdracht = "<%=v_order%>"; <% } %> <% if (v_discipline) { %> var budgetdiscipline = "<%=v_discipline%>"; <% } %> <% if (v_project) { %> var budgetproject = "<%=v_project%>"; <% } %> + <% if (v_soort) { %> var costtype = "<%=v_soort%>"; <% } %> <% if (v_company) { %> var company = "<%=v_company%>"; <% } %> <% @@ -268,32 +302,53 @@ function model_fin_factuur() this.hook_pre_post = function(params, obj) { - // Bij toevoegen van een factuur wordt prs_kostensoort_key automatisch gevuld met die van mld_opdr. -/* -*/ -__Log(obj); - // Als er niet genoeg budget op het kostensoort van de factuur/contract is moet er uit budget rubriek Reserve - // overgeboekt worden naar het budget kostensoort. - var sql = "SELECT NVL(MAX(b.bgt_budget_bedrag) - SUM(f.fin_factuur_totaal), 0) budget_exc_over" - + " , NVL(MAX(b.bgt_budget_btwbedrag) - SUM(f.fin_factuur_totaal_btw), 0) budget_btw_over" - + " FROM bgt_budget b" - + " , fin_factuur f" - + " WHERE b.prs_kostensoort_key = f.prs_kostensoort_key" - + " AND f.prs_kostensoort_key = " + obj.costtype; - var oRs = Oracle.Execute(sql); - var budget_exc_over = oRs("budget_exc_over").Value; - var budget_btw_over = oRs("budget_btw_over").Value; - oRs.Close(); -// if (budget_exc_over < 0) -// - + // Bij toevoegen van een factuur moet prs_kostensoort_key nog gevuld worden. + // Gebruik daarvoor die van mld_opdr. + setKostensoort(obj); + // Is het factuurnummer/volgnummer uniek binnen het project? + checkUniekFactuurnummer(-1, obj.budgetproject, obj.invoice); } this.hook_pre_put = function(params, obj, key) { - // Bij wijzigen van factuur wordt prs_kostensoort_key automatisch overgenomen van mld_opdr. - // Als er niet genoeg budget op het kostensoort van de factuur/contract is moet er uit budget rubriek Reserve - // overgeboekt worden naar het budget kostensoort. + // Bij wijzigen van factuur moet prs_kostensoort_key nog gevuld worden. + // Gebruik daarvoor die van mld_opdr. + setKostensoort(obj); + // Is de combinatie factuurnummer/volgnummer nog steeds uniek? + checkUniekFactuurnummer(key, obj.budgetproject, obj.invoice); + } + + function setKostensoort(obj) + { + var sql = "SELECT o.prs_kostensoort_key" + + " FROM mld_opdr o" + + " WHERE mld_opdr_key = " + obj.order; + var oRs = Oracle.Execute(sql); + if (!oRs.eof) + obj.costtype = (!oRs.eof ? oRs("prs_kostensoort_key").Value : NULL); + oRs.Close(); + } + + function checkUniekFactuurnummer(p_factuur_key, p_project_key, p_factuurnr) + { + var sql = "SELECT count(*) aantal" + + " FROM bgt_kostenrubriek r" + + " , prs_kostensoortgrp g" + + " , prs_kostensoort s" + + " , mld_opdr o" + + " , fin_factuur f" + + " WHERE r.bgt_kostenrubriek_key = g.bgt_kostenrubriek_key" + + " AND g.prs_kostensoortgrp_key = s.prs_kostensoortgrp_key" + + " AND s.prs_kostensoort_key = o.prs_kostensoort_key" + + " AND o.mld_opdr_key = f.mld_opdr_key" + + " AND r.bgt_project_key = " + p_project_key + + " AND f.fin_factuur_nr = " + safe.quoted_sql(p_factuurnr) + + (p_factuur_key != -1 ? " AND f.fin_factuur_key <> " + p_factuur_key : ""); + var oRs = Oracle.Execute(sql); + var uniek_factuurnr = (oRs("aantal").Value == 0); + oRs.Close(); + if (!uniek_factuurnr) + abort_with_warning("Factuurnummer {0} bestaat al in dit project.".format(p_factuurnr)); } diff --git a/APPL/API2/model_mld_opdr.inc b/APPL/API2/model_mld_opdr.inc index 22820ebeef..09f302ba76 100644 --- a/APPL/API2/model_mld_opdr.inc +++ b/APPL/API2/model_mld_opdr.inc @@ -247,15 +247,20 @@ function model_mld_opdr() this.hook_pre_post = function(params, obj) { var parent_key = getQParamInt("id", -1); + if (!obj.sequence && obj.sequence!=0) + abort_with_warning("Vul een volgnummer voor het contract in."); if (parent_key > -1) // Bij kopie van opdracht geen nieuw nummer genereren. { + // Vul het contractnummer van het oorspronkelijke contract in. var sql = "SELECT o.mld_opdr_ordernr" + " FROM mld_opdr o" + " WHERE o.mld_opdr_key = " + parent_key; var oRs = Oracle.Execute(sql); obj.ordernr = oRs("mld_opdr_ordernr").Value; oRs.Close(); + // Kopie contract. Volgnummer moet uniek zijn binnen dit contractnummer. + checkUniekContractnummer(-1, obj.budgetproject.id, obj.ordernr, obj.sequence); } else { @@ -275,9 +280,31 @@ function model_mld_opdr() var oRs = Oracle.Execute(sql); obj.ordernr = oRs("new_ordernr").Value; oRs.Close(); + // Nieuw contract, dus volgnummer is altijd uniek hierbinnen. } } + this.hook_pre_put = function(params, obj, key) + { + // Is de combinatie projectnummer/volgnummer nog steeds uniek? + var sql = "SELECT p.bgt_project_key" + + " , o.mld_opdr_ordernr" + + " FROM bgt_project p" + + " , bgt_kostenrubriek r" + + " , prs_kostensoortgrp g" + + " , prs_kostensoort s" + + " , mld_opdr o" + + " WHERE p.bgt_project_key = r.bgt_project_key" + + " AND r.bgt_kostenrubriek_key = g.bgt_kostenrubriek_key" + + " AND g.prs_kostensoortgrp_key = s.prs_kostensoortgrp_key" + + " AND s.prs_kostensoort_key = o.prs_kostensoort_key" + + " AND o.mld_opdr_key = " + key; + var oRs = Oracle.Execute(sql); + var v_ordernr = oRs("mld_opdr_ordernr").Value; + var v_project_key = oRs("bgt_project_key").Value; + oRs.Close(); + checkUniekContractnummer(key, v_project_key, v_ordernr, obj.sequence); + } var gparams = { GET: { @@ -296,6 +323,29 @@ function model_mld_opdr() } }; + function checkUniekContractnummer(p_contract_key, p_project_key, p_contractnr, p_volgnr) + { + var sql = "SELECT count(*) aantal" + + " FROM bgt_project p" + + " , bgt_kostenrubriek r" + + " , prs_kostensoortgrp g" + + " , prs_kostensoort s" + + " , mld_opdr o" + + " WHERE p.bgt_project_key = r.bgt_project_key" + + " AND r.bgt_kostenrubriek_key = g.bgt_kostenrubriek_key" + + " AND g.prs_kostensoortgrp_key = s.prs_kostensoortgrp_key" + + " AND s.prs_kostensoort_key = o.prs_kostensoort_key" + + " AND p.bgt_project_key = " + p_project_key + + " AND o.mld_opdr_ordernr = " + safe.quoted_sql(p_contractnr) + + " AND o.mld_opdr_bedrijfopdr_volgnr = " + p_volgnr + + (p_contract_key != -1 ? " AND o.mld_opdr_key <> " + p_contract_key : ""); + var oRs = Oracle.Execute(sql); + var uniek_contractnr = (oRs("aantal").Value == 0); + oRs.Close(); + if (!uniek_contractnr) + abort_with_warning("Contractnummer {0}.{1} bestaat al in dit project.".format(p_contractnr, p_volgnr)); + } + this.REST_GET = generic_REST_GET(this, gparams); this.REST_POST = generic_REST_POST(this); diff --git a/APPL/API2/model_prs_kostensoort.inc b/APPL/API2/model_prs_kostensoort.inc index 66be6f5097..83fe89ae8e 100644 --- a/APPL/API2/model_prs_kostensoort.inc +++ b/APPL/API2/model_prs_kostensoort.inc @@ -62,7 +62,7 @@ function model_prs_kostensoort() }, "name": { "dbs": "prs_kostensoort_oms", - "label": L("prs_kostensoort_oms"), + "label": (S("bgt_enabled") ? L("prs_kostensoort_opmerking") : L("prs_kostensoort_oms")), "typ": "varchar", "required": true, /* proberen */ "translate": true, @@ -71,7 +71,7 @@ function model_prs_kostensoort() }, "remark": { "dbs": "prs_kostensoort_opmerking", - "label": L("prs_kostensoort_opmerking"), + "label": (S("bgt_enabled") ? L("prs_kostensoort_oms") : L("prs_kostensoort_opmerking")), "typ": "varchar", "required": (S("bgt_enabled") ? false : true), "filter": "like" @@ -140,12 +140,18 @@ function model_prs_kostensoort() "showtransit": true }, "budgetcostcategory": { - "dbs" : "bgt_kostenrubriek.bgt_kostenrubriek_key", + "dbs": "bgt_kostenrubriek.bgt_kostenrubriek_key", "label": L("bgt_kostenrubriek"), "typ": "key", "required": true, "foreign": bgt_budgetcostcategory_foreign(), "showtransit": true + }, + "costcategorycode": { + "dbs": "bgt_kostenrubriek.bgt_kostenrubriek_code", + "label": L("bgt_kostenrubriek_code"), + "typ": "varchar", + "readonly": true } }; this.fields = object_merge({}, fields_ext, fields_main); @@ -163,6 +169,11 @@ function model_prs_kostensoort() }; // this.print = { xmlnode: "budget", where: "kostensoort"}; + this.hook_pre_show = function (obj, fld) + { + delete this.fields.costcategorycode; + } + this.hook_pre_edit = function (obj, fld) { if ((obj.id > -1) || (obj.costtypegroup && obj.costtypegroup.id > -1)) @@ -173,6 +184,8 @@ function model_prs_kostensoort() this.fields.budgetproject.readonly = true; this.fields.budgetcostcategory.hidden_fld = false; this.fields.budgetcostcategory.readonly = true; + + delete this.fields.costcategorycode; } if (obj.costtypegroup && obj.costtypegroup.id != -1) diff --git a/APPL/BGT/bgt_budget.js b/APPL/BGT/bgt_budget.js index 1b68097bcf..c1f6933488 100644 --- a/APPL/BGT/bgt_budget.js +++ b/APPL/BGT/bgt_budget.js @@ -69,6 +69,7 @@ function init_budget() { req_info: "initsearch", niveau: init_niveau, parent_key: (v_budgetproject ? v_budgetproject : -1), + child_key: v_costtype, init_key: init_key }, re_init_plaats); @@ -85,7 +86,7 @@ function re_init_soort(data) function re_init_plaats(data) { - var init_key = ($("#account").val() != -1 ? $("#account").val() : -1); + var init_key = ($("#account").val() != -1 ? $("#account").val() : data.parents.K); var project_key = $("#budgetproject").val() || data.parents.P; fill_plaatsselector("KP", project_key, init_key); } @@ -132,7 +133,16 @@ function change_groep() } function change_soort() { - var btw_perc = parseFloat($("#costtype option:selected").attr("perc_btw").replace(/,/g,".")); + var project_key = $("#budgetproject").val(); + var kplaats_key = -1; + var btw_perc = 0; + if ($("#costtype").val() != -1 ) + { + kplaats_key = $("#costtype option:selected").attr("kpn_key"); + btw_perc = parseFloat($("#costtype option:selected").attr("perc_btw").replace(/,/g,".")); + } + fill_plaatsselector("KP", project_key, kplaats_key); + if ($("#amount").val() && btw_perc != kostensoort_btw) { FcltMgr.confirm(L("bgt_confirm_recalc_vat"), function() { change_amount(); } ); @@ -232,7 +242,7 @@ function fill_plaatsselector(niveau, parent_key, init_key) { req_info: "plaatssearch", niveau: niveau, parent_key: parent_key, - init_key: init_key //(init_key ? init_key : -1); + init_key: (init_key ? init_key : -1) }, process_info); } @@ -274,12 +284,14 @@ function process_info(data) var opt = data.lov[i]; if (data.niveau == "KP") { - add_data = ' par_key="' + opt.atr.par_key + '"'; + add_data = ' par_key="' + opt.atr.par_key + '"' + + ' kpn_key="' + opt.atr.kpn_key + '"'; } else { add_data = ' incl_btw="' + opt.atr.btw_inc + '"' - + ' perc_btw="' + opt.atr.btw_val + '"'; + + ' perc_btw="' + opt.atr.btw_val + '"' + + ' kpn_key="' + opt.atr.kpn_key + '"'; } new_lov += ''; if (opt.sel) diff --git a/APPL/BGT/bgt_search.asp b/APPL/BGT/bgt_search.asp index 9016353ac3..ba97f059c8 100644 --- a/APPL/BGT/bgt_search.asp +++ b/APPL/BGT/bgt_search.asp @@ -206,7 +206,7 @@ var authparamsBGTUSE = user.checkAutorisation("WEB_BGTUSE"); { label: L("lcl_period_to"), initEmpty: true }); - CHECKBOXTR(L("lcl_fin_total_sum"), "fldbgtinclbtw", "bgt_inclbtw", false); + CHECKBOXTR(L("lcl_fin_total_sum"), "fldbgtinclbtw", "bgt_inclbtw", true); %> diff --git a/APPL/BGT/bgt_search_list.asp b/APPL/BGT/bgt_search_list.asp index 3bcda98a82..8d7e34858b 100644 --- a/APPL/BGT/bgt_search_list.asp +++ b/APPL/BGT/bgt_search_list.asp @@ -180,7 +180,7 @@ var transitParam = buildTransitParam([]); + " GROUP BY m2.bgt_budget_key_naar" + ") mutatie" + " GROUP BY mutatie.bgt_budget_key" - + " ) mut"; + + " ) "; // zoiets moet het dan gaan worden. Vast nog wat verfijnder. UNIONs met reserve e.d. nodig? if (groupby == 1) // facturen @@ -313,163 +313,197 @@ var transitParam = buildTransitParam([]); // Die worden afzonderlijk bijgevoegd (UNION) om wel het totaal te krijgen qua budget // Eerst de budgetten direct bij kostensoort - var sql1 = "SELECT ins_discipline_omschrijving project," - + " bgt_project_omschrijving deelproject," + var sql1 = "SELECT id.ins_discipline_omschrijving project," + + " pr.bgt_project_omschrijving deelproject," + " kr.bgt_kostenrubriek_oms rubriek," - + " ksg.prs_kostensoortgrp_oms groep," - + " bud.prs_kostensoortgrp_key," - + " bud.bgt_kostenrubriek_key," + + " kg.prs_kostensoortgrp_oms groep," + + " bd.prs_kostensoortgrp_key," + + " bd.bgt_kostenrubriek_key," + " ks.prs_kostensoort_key," + " ks.prs_kostensoort_oms onderdeel," + " ks.prs_kostensoort_altcode rcode," + " ks.prs_kostensoort_altcode sortcode," - + " 0 budget_reserve," - + " SUM(COALESCE(bud.bgt_budget_bedrag, 0)) budget_actueel," + + " BGT.getBudgetOverschrijding(ks.prs_kostensoort_key, 0, NULL) budget_reserve," + + " SUM(COALESCE(bd.bgt_budget_bedrag, 0)) budget_actueel," + " SUM(COALESCE(mut.bedrag_naar, 0) + COALESCE(mut.bedrag_van, 0)) budget_mutatie" + " FROM prs_kostensoort ks," - + " prs_kostensoortgrp ksg," + + " prs_kostensoortgrp kg," + " bgt_kostenrubriek kr," - + " bgt_budget bud," + + " bgt_budget bd," + " bgt_project pr," + " ins_tab_discipline id," - + mutatie_sql - + " WHERE ksg.bgt_kostenrubriek_key = kr.bgt_kostenrubriek_key" - + " AND ks.prs_kostensoort_key = bud.prs_kostensoort_key" + + mutatie_sql + "mut" + + " WHERE kg.bgt_kostenrubriek_key = kr.bgt_kostenrubriek_key" + + " AND ks.prs_kostensoort_key = bd.prs_kostensoort_key(+)" + " AND pr.bgt_project_key = kr.bgt_project_key" - + " AND ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key" + + " AND kg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key" + " AND id.ins_discipline_key = pr.ins_discipline_key" - + " AND mut.bgt_budget_key(+) = bud.bgt_budget_key" + + " AND mut.bgt_budget_key(+) = bd.bgt_budget_key" + (bgtproj_key_arr.length > 0 ? " AND pr.bgt_project_key IN (" + bgtproj_key_arr.join(",") + ")" : "") + (bgtrubr_key > 0 ? "AND kr.bgt_kostenrubriek_key = " + bgtrubr_key : "") - + (bgtgrp_key > 0 ? " AND ksg.prs_kostensoortgrp_key = " + bgtgrp_key : "") + + (bgtgrp_key > 0 ? " AND kg.prs_kostensoortgrp_key = " + bgtgrp_key : "") + " AND pr.ins_discipline_key =" + bgtdisc_key; - sql1 += " GROUP BY ksg.prs_kostensoortgrp_oms," + sql1 += " GROUP BY kg.prs_kostensoortgrp_oms," + " ks.prs_kostensoort_key," + " ks.prs_kostensoort_opmerking ," + " ks.prs_kostensoort_oms," + " ks.prs_kostensoort_altcode," - + " bud.prs_kostensoortgrp_key," + + " bd.prs_kostensoortgrp_key," + " kr.bgt_kostenrubriek_oms," - + " bud.bgt_kostenrubriek_key," + + " bd.bgt_kostenrubriek_key," + " pr.bgt_project_key," - + " bgt_project_omschrijving ," - + " ins_discipline_omschrijving"; + + " pr.bgt_project_omschrijving ," + + " id.ins_discipline_omschrijving"; } if (groupby == 4) // 4. kostensoortgrp { - var sql1 = "SELECT ins_discipline_omschrijving project," - + " bgt_project_omschrijving deelproject," + var sql1 = "SELECT id.ins_discipline_omschrijving project," + + " pr.bgt_project_omschrijving deelproject," + " kr.bgt_kostenrubriek_oms rubriek," - + " ksg.prs_kostensoortgrp_altcode rcode," - + " ksg.prs_kostensoortgrp_altcode sortcode," - + " ksg.prs_kostensoortgrp_oms groep," - + " bud.prs_kostensoortgrp_key," - + " bud.bgt_kostenrubriek_key," - + " 0 budget_reserve," - + " SUM(COALESCE(bud.bgt_budget_bedrag, 0)) budget_actueel," + + " kg.prs_kostensoortgrp_altcode rcode," + + " kg.prs_kostensoortgrp_altcode sortcode," + + " kg.prs_kostensoortgrp_oms groep," + + " bd.prs_kostensoortgrp_key," + + " bd.bgt_kostenrubriek_key," + + " MAX(COALESCE(vn.reserve_bedrag, 0)) budget_reserve," + + " SUM(COALESCE(bd.bgt_budget_bedrag, 0)) budget_actueel," + " SUM(COALESCE(mut.bedrag_naar, 0) + COALESCE(mut.bedrag_van, 0)) budget_mutatie" - + " FROM prs_kostensoortgrp ksg," + + " FROM prs_kostensoortgrp kg," + " bgt_kostenrubriek kr," - + " bgt_budget bud," + + " bgt_budget bd," + " bgt_project pr," + " ins_tab_discipline id," - + mutatie_sql - + " WHERE ksg.bgt_kostenrubriek_key = kr.bgt_kostenrubriek_key" - + " AND bud.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key" + + " (SELECT ks_1.prs_kostensoortgrp_key" + + " , SUM(BGT.getBudgetOverschrijding(ks_1.prs_kostensoort_key, 0, NULL)) reserve_bedrag" + + " FROM prs_kostensoort ks_1" + + " GROUP BY ks_1.prs_kostensoortgrp_key" + + " ) vn," + + mutatie_sql + "mut" + + " WHERE kg.bgt_kostenrubriek_key = kr.bgt_kostenrubriek_key" + + " AND kg.prs_kostensoortgrp_key = bd.prs_kostensoortgrp_key(+)" + + " AND kg.prs_kostensoortgrp_key = vn.prs_kostensoortgrp_key" + " AND pr.bgt_project_key = kr.bgt_project_key" + " AND id.ins_discipline_key = pr.ins_discipline_key" - + " AND mut.bgt_budget_key(+) = bud.bgt_budget_key" - + " AND bud.bgt_budget_isreserve = 0" // reserve afzonderlijk + + " AND mut.bgt_budget_key(+) = bd.bgt_budget_key" + + " AND bd.bgt_budget_isreserve = 0" // reserve afzonderlijk + (bgtproj_key_arr.length > 0 ? " AND pr.bgt_project_key IN (" + bgtproj_key_arr.join(",") + ")" : "") + (bgtrubr_key > 0 ? " AND kr.bgt_kostenrubriek_key = " + bgtrubr_key : "") + " AND pr.ins_discipline_key =" + bgtdisc_key; sql1 += " GROUP BY kr.bgt_kostenrubriek_oms," - + " ksg.prs_kostensoortgrp_altcode," - + " ksg.prs_kostensoortgrp_oms," - + " bud.prs_kostensoortgrp_key," - + " bud.bgt_kostenrubriek_key," + + " kg.prs_kostensoortgrp_altcode," + + " kg.prs_kostensoortgrp_oms," + + " bd.prs_kostensoortgrp_key," + + " bd.bgt_kostenrubriek_key," + " pr.bgt_project_key," - + " bgt_project_omschrijving ," - + " ins_discipline_omschrijving"; + + " pr.bgt_project_omschrijving ," + + " id.ins_discipline_omschrijving"; } if (groupby == 5) // 5. kostenrubriek { - var sql1 = "SELECT ins_discipline_omschrijving project," - + " bgt_project_omschrijving deelproject," + var sql1 = "SELECT id.ins_discipline_omschrijving project," + + " pr.bgt_project_omschrijving deelproject," + " kr.bgt_kostenrubriek_oms rubriek," + " kr.bgt_kostenrubriek_code rcode," + " kr.bgt_kostenrubriek_code sortcode," + " kr.bgt_kostenrubriek_key," - + " 0 budget_reserve," - + " SUM(COALESCE(bud.bgt_budget_bedrag, 0)) budget_actueel," + + " MAX(COALESCE(vn.reserve_bedrag, 0)) budget_reserve," + + " SUM(COALESCE(bd.bgt_budget_bedrag, 0)) budget_actueel," + " SUM(COALESCE(mut.bedrag_naar, 0) + COALESCE(mut.bedrag_van, 0)) budget_mutatie" + " FROM bgt_kostenrubriek kr," - + " bgt_budget bud," + + " bgt_budget bd," + " bgt_project pr," + " ins_tab_discipline id," - + mutatie_sql - + " WHERE bud.bgt_kostenrubriek_key = kr.bgt_kostenrubriek_key" + + " (SELECT kg_1.bgt_kostenrubriek_key" + + " , SUM(BGT.getBudgetOverschrijding(ks_1.prs_kostensoort_key, 0, NULL)) reserve_bedrag" + + " FROM prs_kostensoort ks_1" + + " , prs_kostensoortgrp kg_1" + + " WHERE ks_1.prs_kostensoortgrp_key = kg_1.prs_kostensoortgrp_key" + + " GROUP BY kg_1.bgt_kostenrubriek_key" + + " ) vn," + + mutatie_sql + "mut" + + " WHERE kr.bgt_kostenrubriek_key = bd.bgt_kostenrubriek_key(+)" + + " AND kr.bgt_kostenrubriek_key = vn.bgt_kostenrubriek_key" + " AND pr.bgt_project_key = kr.bgt_project_key" + " AND id.ins_discipline_key = pr.ins_discipline_key" - + " AND mut.bgt_budget_key(+) = bud.bgt_budget_key" + + " AND bd.bgt_budget_key = mut.bgt_budget_key(+)" + (bgtproj_key_arr.length > 0 ? " AND pr.bgt_project_key IN (" + bgtproj_key_arr.join(",") + ")" : "") + " AND pr.ins_discipline_key =" + bgtdisc_key + " GROUP BY kr.bgt_kostenrubriek_oms," + " kr.bgt_kostenrubriek_key," - + " bgt_project_omschrijving ," - + " bgt_kostenrubriek_code ," - + " ins_discipline_omschrijving"; + + " pr.bgt_project_omschrijving ," + + " kr.bgt_kostenrubriek_code ," + + " id.ins_discipline_omschrijving"; if (bgt_inclbtw) { //BTW - sql1 += " UNION SELECT ins_discipline_omschrijving project," - + " bgt_project_omschrijving deelproject," + sql1 += " UNION SELECT id.ins_discipline_omschrijving project," + + " pr.bgt_project_omschrijving deelproject," + " 'BTW' rubriek," + " 'B' rcode," + " '92' sortcode," + " -3 bgt_kostenrubriek_key," - + " 0 budget_reserve," - + " SUM(COALESCE(bud.bgt_budget_btwbedrag, 0)) budget_actueel," + + " MAX(COALESCE(vn.reserve_bedrag, 0)) budget_reserve," + + " SUM(COALESCE(bd.bgt_budget_btwbedrag, 0)) budget_actueel," + " SUM(COALESCE(mut.btwbedrag_naar, 0) + COALESCE(mut.btwbedrag_van, 0)) budget_mutatie" - + " FROM bgt_budget bud," + + " FROM bgt_budget bd," + " bgt_project pr," + " ins_tab_discipline id," - + mutatie_sql - + " WHERE pr.bgt_project_key = bud.bgt_project_key" + + " (SELECT kr_1.bgt_project_key" + + " , SUM(BGT.getBudgetOverschrijding(ks_1.prs_kostensoort_key, 1, NULL)) reserve_bedrag" + + " FROM prs_kostensoort ks_1" + + " , prs_kostensoortgrp kg_1" + + " , bgt_kostenrubriek kr_1" + + " WHERE ks_1.prs_kostensoortgrp_key = kg_1.prs_kostensoortgrp_key" + + " AND kg_1.bgt_kostenrubriek_key = kr_1.bgt_kostenrubriek_key" + + " GROUP BY kr_1.bgt_project_key" + + " ) vn," + + mutatie_sql + "mut" + + " WHERE pr.bgt_project_key = bd.bgt_project_key(+)" + + " AND pr.bgt_project_key = vn.bgt_project_key" + " AND id.ins_discipline_key = pr.ins_discipline_key" - + " AND mut.bgt_budget_key(+) = bud.bgt_budget_key" + + " AND mut.bgt_budget_key(+) = bd.bgt_budget_key" + (bgtproj_key_arr.length > 0 ? " AND pr.bgt_project_key IN (" + bgtproj_key_arr.join(",") + ")" : "") + " AND pr.ins_discipline_key =" + bgtdisc_key - + " GROUP BY bgt_project_omschrijving ," - + " ins_discipline_omschrijving"; + + " GROUP BY pr.bgt_project_omschrijving ," + + " id.ins_discipline_omschrijving"; } } if (groupby == 6) // 6. deelproject { - var sql1 = "SELECT ins_discipline_omschrijving project," - + " bgt_project_omschrijving deelproject," + var sql1 = "SELECT id.ins_discipline_omschrijving project," + + " pr.bgt_project_omschrijving deelproject," + " pr.bgt_project_key," - + " 0 budget_reserve," - + " SUM(COALESCE(bud.bgt_budget_bedrag, 0)" - + (bgt_inclbtw ? " + COALESCE(bud.bgt_budget_btwbedrag, 0)" : "") + + " MAX(COALESCE(vn.reserve_bedrag, 0)) budget_reserve," + + " SUM(COALESCE(bd.bgt_budget_bedrag, 0)" + + (bgt_inclbtw ? " + COALESCE(bd.bgt_budget_btwbedrag, 0)" : "") + ") budget_actueel," + " SUM(COALESCE(mut.bedrag_naar, 0) + COALESCE(mut.bedrag_van,0)) budget_mutatie" - + " FROM bgt_budget bud," + + " FROM bgt_budget bd," + " bgt_project pr," + " ins_tab_discipline id," - + mutatie_sql - + " WHERE bud.bgt_project_key = pr.bgt_project_key" + + " (SELECT kr_1.bgt_project_key" + + " , SUM(BGT.getBudgetOverschrijding(ks_1.prs_kostensoort_key, 0, NULL)) reserve_bedrag" + + " FROM prs_kostensoort ks_1" + + " , prs_kostensoortgrp kg_1" + + " , bgt_kostenrubriek kr_1" + + " WHERE ks_1.prs_kostensoortgrp_key = kg_1.prs_kostensoortgrp_key" + + " AND kg_1.bgt_kostenrubriek_key = kr_1.bgt_kostenrubriek_key" + + " GROUP BY kr_1.bgt_project_key" + + " ) vn," + + mutatie_sql + "mut" + + " WHERE pr.bgt_project_key = bd.bgt_project_key(+)" + + " AND pr.bgt_project_key = vn.bgt_project_key" + " AND id.ins_discipline_key = pr.ins_discipline_key" - + " AND mut.bgt_budget_key(+) = bud.bgt_budget_key" + + " AND bd.bgt_budget_key = mut.bgt_budget_key(+)" + (bgtproj_key_arr.length > 0 ? " AND pr.bgt_project_key IN (" + bgtproj_key_arr.join(",") + ")" : "") + " AND pr.ins_discipline_key =" + bgtdisc_key; sql1 += " GROUP BY pr.bgt_project_key," - + " bgt_project_omschrijving ," - + " ins_discipline_omschrijving"; + + " pr.bgt_project_omschrijving ," + + " id.ins_discipline_omschrijving"; } @@ -573,11 +607,11 @@ var transitParam = buildTransitParam([]); + (groupby <= 4 ? " bud.groep groep, bud.prs_kostensoortgrp_key," : "") + (groupby <= 3 ? " bud.onderdeel onderdeel, besteding.prs_kostensoort_key," : "") + " MAX(bud.budget_reserve) budget_reserve," - + " MAX(bud.budget_actueel) budget_actueel," - + " MAX(bud.budget_actueel - bud.budget_mutatie + bud.budget_reserve) budget_origineel," + + " MAX(bud.budget_actueel + bud.budget_reserve) budget_actueel," + + " MAX(bud.budget_actueel - bud.budget_mutatie) budget_origineel," + " MAX(bud.budget_mutatie) budget_mutatie," + " SUM(besteding.gecontracteerd) gecontracteerd," - + " MAX(COALESCE(bud.budget_actueel, 0)) - SUM(COALESCE(besteding.gecontracteerd, 0)) tecontracteren," + + " MAX(COALESCE(bud.budget_actueel + bud.budget_reserve, 0)) - SUM(COALESCE(besteding.gecontracteerd, 0)) tecontracteren," + " SUM(besteding.gefactureerd) gefactureerd," + " SUM(besteding.tefactureren) tefactureren" + " FROM (" + sql1 + ") bud," @@ -888,8 +922,7 @@ var transitParam = buildTransitParam([]); if (groupby > 2) // denk ik { rst.addColumn(new Column({caption: "Origineel", content: budgetOrigineelShow, fnAmount: budgetOrigineelAmount, datatype: "currency", total: true})); -// if (groupby == 5) -// rst.addColumn(new Column({caption: "Reserve", content: budgetReserveShow, fnAmount: budgetReserveAmount, datatype: "currency", total: true})); + rst.addColumn(new Column({caption: "Van/naar Reserve", content: budgetReserveShow, fnAmount: budgetReserveAmount, datatype: "currency", total: true})); rst.addColumn(new Column({caption: "Mutatie", content: budgetMutatieShow, fnAmount: budgetMutatieAmount, datatype: "currency", total: true})); rst.addColumn(new Column({caption: L("bgt_budget_bedrag"), content: budgetActueelShow, fnAmount: budgetActueelAmount, datatype: "currency", total: true})); } diff --git a/APPL/BGT/fin_factuur.js b/APPL/BGT/fin_factuur.js index 32eaf56008..d7dece7724 100644 --- a/APPL/BGT/fin_factuur.js +++ b/APPL/BGT/fin_factuur.js @@ -67,8 +67,9 @@ function re_init_soort(data) { fill_rubriekselector("D", -1 , -1, data.parents.D); fill_rubriekselector("P", data.parents.D, -1, data.parents.P); - fill_rubriekselector("B", data.parents.P, -1, data.parents.B); + fill_rubriekselector("B", -1 , data.parents.P, data.parents.B); fill_rubriekselector("O", data.parents.P, data.parents.B, data.parents.O); + fill_rubriekselector("S", data.parents.G, data.parents.S, data.parents.S); } function change_discipline() @@ -93,6 +94,7 @@ function change_bedrijf() var project_key = (typeof $("#budgetproject").val() == "undefined" ? (typeof budgetproject == "undefined" ? -1 : budgetproject) : $("#budgetproject").val() ); var bedrijf_key = (typeof $("#company").val() == "undefined" ? (typeof company == "undefined" ? -1 : company) : $("#company").val() ); fill_rubriekselector("O", project_key, bedrijf_key); + fill_rubriekselector("S", -1, -1, -1); } function change_opdracht() @@ -100,10 +102,12 @@ function change_opdracht() // Als opdracht bekend is kan het bedrag ingevuld worden: // we weten dan de btw-percentage dat gebruikt moet worden, // en sla de key voor kostensoort bij deze opdracht op. + var kostengroep_key = $("#order option:selected").attr("grp_key"); var kostensoort_key = $("#order option:selected").attr("cost_key"); if (kostensoort_key) - $("#costtype").val(kostensoort_key); - + { + fill_rubriekselector("S", kostengroep_key, kostensoort_key, kostensoort_key); + } var btw_perc = parseFloat($("#order option:selected").attr("perc_btw").replace(/,/g,".")); if ($("#total").val() && btw_perc != kostensoort_btw) { @@ -158,13 +162,14 @@ function fill_rubriekselector(niveau, parent_key, child_key, init_key) function process_info(data) { var select; + var readonly = false; switch(data.niveau) { case "D": select = $("#budgetdiscipline"); break; case "P": select = $("#budgetproject"); break; case "R": select = $("#budgetcostcategory"); break; case "G": select = $("#costtypegroup"); break; - case "S": select = $("#costtype"); break; + case "S": select = $("#costtype"); readonly = true; break; case "B": select = $("#company"); break; case "O": select = $("#order"); break; case "KP": select = $("#account"); break; @@ -187,13 +192,14 @@ function process_info(data) { add_data = ' incl_btw="' + opt.atr.btw_inc + '"' + ' perc_btw="' + opt.atr.btw_val + '"' + + ' grp_key="' + opt.atr.grp_key + '"' + ' cost_key="' + opt.atr.srt_key + '"'; } new_lov += ''; if (opt.sel) sel_key = opt.key; } - select.prop("disabled", false); + select.prop("disabled", readonly); } else { diff --git a/APPL/BGT/get_bgt_info_ajax.asp b/APPL/BGT/get_bgt_info_ajax.asp index e35003c7bb..a42dbe3833 100644 --- a/APPL/BGT/get_bgt_info_ajax.asp +++ b/APPL/BGT/get_bgt_info_ajax.asp @@ -45,6 +45,7 @@ switch (req_info) + " , -1 soort_key" + " , -1 opdracht_key" + " , -1 bedrijf_key" + + " , NULL kostenplaats_key" + " FROM bgt_disc_params d" + " , ins_tab_discipline t" + " WHERE t.ins_discipline_key = d.bgt_ins_discipline_key" @@ -62,6 +63,7 @@ switch (req_info) + " , -1 soort_key" + " , -1 opdracht_key" + " , -1 bedrijf_key" + + " , NULL kostenplaats_key" + " FROM bgt_disc_params d" + " , bgt_project p" + " WHERE d.bgt_ins_discipline_key = p.ins_discipline_key" @@ -75,10 +77,11 @@ switch (req_info) + " d.bgt_ins_discipline_key disc_key" + " , p.bgt_project_key project_key" + " , -1 rubriek_key" - + " , -1 groep_key" - + " , -1 soort_key" + + " , g.prs_kostensoortgrp_key groep_key" + + " , s.prs_kostensoort_key soort_key" + " , o.mld_opdr_key opdracht_key" + " , b.prs_bedrijf_key bedrijf_key" + + " , NULL kostenplaats_key" + " FROM bgt_disc_params d" + " , bgt_project p" + " , bgt_kostenrubriek r" @@ -105,6 +108,7 @@ switch (req_info) + " , -1 soort_key" + " , -1 opdracht_key" + " , b.prs_bedrijf_key bedrijf_key" + + " , NULL kostenplaats_key" + " FROM bgt_disc_params d" + " , bgt_project p" + " , bgt_kostenrubriek r" @@ -130,6 +134,7 @@ switch (req_info) + " , -1 soort_key" + " , NULL opdracht_key" + " , NULL bedrijf_key" + + " , NULL kostenplaats_key" + " FROM bgt_disc_params d" + " , bgt_project p" + " , bgt_kostenrubriek r" @@ -147,6 +152,7 @@ switch (req_info) + " , -1 soort_key" + " , NULL opdracht_key" + " , NULL bedrijf_key" + + " , NULL kostenplaats_key" + " FROM bgt_disc_params d" + " , bgt_project p" + " , bgt_kostenrubriek r" @@ -166,6 +172,7 @@ switch (req_info) + " , s.prs_kostensoort_key soort_key" + " , NULL opdracht_key" + " , NULL bedrijf_key" + + " , -1 kostenplaats_key" + " FROM bgt_disc_params d" + " , bgt_project p" + " , bgt_kostenrubriek r" @@ -188,6 +195,10 @@ switch (req_info) + " , NULL soort_key" + " , NULL opdracht_key" + " , NULL bedrijf_key" + + ( (init_key == -1 && child_key) + ? " , (SELECT prs_kostenplaats_key FROM prs_kostensoort WHERE prs_kostensoort_key = "+ child_key +")" + : " , -1" + ) + " kostenplaats_key" + " FROM bgt_disc_params d" + " , bgt_project p" + " , prs_kostenplaatsgrp g" @@ -210,7 +221,8 @@ switch (req_info) "G": oRs("groep_key").Value, "S": oRs("soort_key").Value, "O": oRs("opdracht_key").Value, - "B": oRs("bedrijf_key").Value + "B": oRs("bedrijf_key").Value, + "K": oRs("kostenplaats_key").Value } } oRs.Close(); @@ -227,7 +239,9 @@ switch (req_info) + " , p.bgt_disc_params_code ||' - '||d.ins_discipline_omschrijving sel_oms" + " , d.ins_discipline_btw btw_inc" + " , NULL btw_val" + + " , NULL grp_key" + " , NULL srt_key" + + " , NULL kpn_key" + " FROM ins_tab_discipline d" + " , bgt_disc_params p" + " WHERE p.bgt_ins_discipline_key = d.ins_discipline_key" @@ -249,7 +263,9 @@ switch (req_info) + " WHERE d1.ins_discipline_key = p.ins_discipline_key" + ") btw_inc" + " , NULL btw_val" + + " , NULL grp_key" + " , NULL srt_key" + + " , NULL kpn_key" + " FROM bgt_project p" + " WHERE p.bgt_project_verwijder IS NULL" + " AND p.ins_discipline_key = " + parent_key; @@ -266,7 +282,9 @@ switch (req_info) + " AND p1.bgt_project_key = r.bgt_project_key" + ") btw_inc" + " , NULL btw_val" + + " , NULL grp_key" + " , NULL srt_key" + + " , NULL kpn_key" + " FROM bgt_kostenrubriek r" + " WHERE r.bgt_project_key = " + parent_key; break; @@ -284,7 +302,9 @@ switch (req_info) + " AND r1.bgt_kostenrubriek_key = g.bgt_kostenrubriek_key" + ") btw_inc" + " , NULL btw_val" + + " , NULL grp_key" + " , NULL srt_key" + + " , NULL kpn_key" + " FROM prs_kostensoortgrp g" + " WHERE g.bgt_kostenrubriek_key = " + parent_key; break; @@ -298,7 +318,9 @@ switch (req_info) + " FROM fin_btwtabelwaarde f1" + " WHERE f1.fin_btwtabelwaarde_key = s.fin_btwtabelwaarde_key" + ") btw_val" + + " , NULL grp_key" + " , NULL srt_key" + + " , NVL(prs_kostenplaats_key, -1) kpn_key" + " FROM prs_kostensoort s" + " WHERE s.prs_kostensoortgrp_key = " + parent_key + ( sel_mode == "budget_edit" @@ -313,7 +335,9 @@ switch (req_info) + " , kp.prs_kostenplaats_nr ||' - '|| kp.prs_kostenplaats_omschrijving sel_oms" + " , NULL btw_inc" + " , NULL btw_val" + + " , NULL grp_key" + " , NULL srt_key" + + " , NULL kpn_key" + " FROM prs_kostenplaats kp" + " , prs_kostenplaatsgrp kg" + " WHERE kp.prs_kostenplaatsgrp_key = kg.prs_kostenplaatsgrp_key" @@ -327,7 +351,9 @@ switch (req_info) + " , b.prs_leverancier_nr ||' - '|| b.prs_bedrijf_naam sel_oms" + " , NULL btw_inc" + " , NULL btw_val" + + " , NULL grp_key" + " , NULL srt_key" + + " , NULL kpn_key" + " FROM bgt_project p" + " , bgt_kostenrubriek r" + " , prs_kostensoortgrp g" @@ -339,8 +365,8 @@ switch (req_info) + " AND g.prs_kostensoortgrp_key = s.prs_kostensoortgrp_key" + " AND s.prs_kostensoort_key = o.prs_kostensoort_key" + " AND o.mld_uitvoerende_keys = b.prs_bedrijf_key" - + " AND p.ins_discipline_key = " + parent_key - + (child_key > 0 ? " AND p.bgt_project_key = " + child_key : ""); + + (parent_key > 0 ? " AND p.ins_discipline_key = " + parent_key : "") + + (child_key > 0 ? " AND p.bgt_project_key = " + child_key : ""); break; } case "O": @@ -353,7 +379,9 @@ switch (req_info) + " FROM fin_btwtabelwaarde f1" + " WHERE f1.fin_btwtabelwaarde_key = s.fin_btwtabelwaarde_key" + ") btw_val" + + " , s.prs_kostensoortgrp_key grp_key" + " , o.prs_kostensoort_key srt_key" + + " , NULL kpn_key" + " FROM bgt_project p" + " , bgt_kostenrubriek r" + " , prs_kostensoortgrp g" @@ -378,7 +406,9 @@ switch (req_info) sel: oRs("sel_key").Value == init_key, atr: { btw_inc: oRs("btw_inc").Value, btw_val: oRs("btw_val").Value, - srt_key: oRs("srt_key").Value + grp_key: oRs("grp_key").Value, + srt_key: oRs("srt_key").Value, + kpn_key: oRs("kpn_key").Value } }); oRs.MoveNext(); @@ -412,26 +442,37 @@ switch (req_info) + " , kp.prs_kostenplaatsgrp_key par_key" + " , NULL btw_inc" + " , NULL btw_val" - + " , p.prs_kostenplaats_key" + + " , NULL kpn_key" + + " , ks.prs_kostensoort_key" + " FROM prs_kostenplaats kp" + " , prs_kostenplaatsgrp kg" - + " , bgt_project p" + + " , prs_kostensoort ks" + " WHERE kp.prs_kostenplaatsgrp_key = kg.prs_kostenplaatsgrp_key" - + " AND kg.bgt_project_key = p.bgt_project_key" + + " AND kp.prs_kostenplaats_key = ks.prs_kostenplaats_key(+)" + " AND kp.prs_kostenplaats_verwijder IS NULL" + " AND kg.bgt_project_key = " + parent_key; } } sql += " ORDER BY 2"; var new_lov = []; + var last_lov = ""; var oRs = Oracle.Execute(sql); while(!oRs.eof) { - new_lov.push({key: oRs("sel_key").Value, - oms: oRs("sel_oms").Value, - sel: oRs("sel_key").Value == (init_key == -1 ? oRs("prs_kostenplaats_key").Value : init_key), - atr: { par_key: oRs("par_key").Value} - }); + if (last_lov != oRs("sel_oms").Value) + { + new_lov.push({key: oRs("sel_key").Value, + oms: oRs("sel_oms").Value, + sel: oRs("sel_key").Value == (init_key == -1 ? oRs("prs_kostensoort_key").Value : init_key), + atr: { par_key: oRs("par_key").Value} + }); + last_lov = oRs("sel_oms").Value; + } + else + { + var opt = new_lov[new_lov.length-1]; + opt.sel = opt.sel || (oRs("sel_key").Value == (init_key == -1 ? oRs("prs_kostensoort_key").Value : init_key)); + } oRs.MoveNext(); } oRs.Close(); diff --git a/APPL/PRS/prs_delete.asp b/APPL/PRS/prs_delete.asp index 06d37764c6..14e510bf8b 100644 --- a/APPL/PRS/prs_delete.asp +++ b/APPL/PRS/prs_delete.asp @@ -49,7 +49,11 @@ else if (level == "B") authparams = user.checkAutorisation("WEB_PRSMAN", true); bDeletePRSMAN = authparams && authparams.PRSwritelevel < 9; - authparams = user.checkAutorisation("WEB_RELMAN", true); + if (S("bgt_enabled")==1) + authparams = user.checkAutorisation("WEB_BGTUSE", true); + else + authparams = user.checkAutorisation("WEB_RELMAN", true); + bDeleteRELMAN = authparams && authparams.PRSwritelevel < 9; canDelete = (bDeletePRSMAN || bDeleteRELMAN); } diff --git a/APPL/PRS/prs_edit_bedrijf.asp b/APPL/PRS/prs_edit_bedrijf.asp index 8c781ad05c..39546a3f57 100644 --- a/APPL/PRS/prs_edit_bedrijf.asp +++ b/APPL/PRS/prs_edit_bedrijf.asp @@ -136,7 +136,7 @@ if (intern) readonly: false, required: false }); - RWFIELDTR("bdr_levnr", "fld", L("lcl_prs_companies_leverancier_nr"), bedrijf_info.prs_leverancier_nr, {maxlength: 50}); + RWFIELDTR("bdr_levnr", "fld", L("lcl_prs_companies_leverancier_nr"), bedrijf_info.prs_leverancier_nr, {required: (S("prs_bedrijf_leveranciernr_unique")==1 ? true : false),maxlength: 50}); CHECKBOXTR(L("lcl_prs_companies_leverancier"), "fldalgbez", "bdr_lev", bedrijf_info.leverancier == 1); CHECKBOXTR(L("lcl_prs_companies_uitvoerende"), "fldalgbez", "bdr_uitv", bedrijf_info.uitvoerende == 1); CHECKBOXTR(L("lcl_prs_companies_contract"), "fldalgbez", "bdr_cntr", bedrijf_info.contract == 1); diff --git a/APPL/SCF/scaffolding_show.inc b/APPL/SCF/scaffolding_show.inc index 0a19dff316..0ec511d41e 100644 --- a/APPL/SCF/scaffolding_show.inc +++ b/APPL/SCF/scaffolding_show.inc @@ -144,6 +144,8 @@ function scaffolding_show(model, scf_params) var cnt = oRs(0).Value; oRs.Close(); } + if ("hook_pre_show" in model) + model.hook_pre_show(xxx_data, model.fields); %>