From a37d31cc11d6f154cf2bf54be32233a217aecb80 Mon Sep 17 00:00:00 2001 From: Peter Feij Date: Fri, 23 Oct 2009 10:53:32 +0000 Subject: [PATCH] AAFM#15967 svn path=/Website/trunk/; revision=23 --- APPL/FIN/fin_approve.asp | 92 +++++++++++++++--------------- APPL/FIN/fin_list.asp | 8 ++- APPL/FIN/fin_list.inc | 118 +++++++++++++++++++++++++-------------- APPL/FIN/fin_list.js | 21 +++++-- APPL/FIN/fin_search.asp | 40 ++++++------- 5 files changed, 162 insertions(+), 117 deletions(-) diff --git a/APPL/FIN/fin_approve.asp b/APPL/FIN/fin_approve.asp index becc625027..dc3e22e0cb 100644 --- a/APPL/FIN/fin_approve.asp +++ b/APPL/FIN/fin_approve.asp @@ -1,77 +1,81 @@ <%@ LANGUAGE = JavaScript %> <% /* - $Revision: 1 $ - $Modtime: 23-09-09 13:57 $ + $Revision: 2 $ + $Modtime: 23-10-09 12:50 $ - File: fin_approve.asp - Status: 95% + File: fin_approve.asp + Status: 100% + Description: Approve or Reject an invoice + Returns a confirmation message stating how many are actually handled + Parameters: + fin_key fin_factuur_keys (required) format n or "n,n,...n" (!) + Context: Called by Ajax from e.g. fin_list.inc form + Note: */ %> - <% DOCTYPE_Disable = 1; %> - - <% /***** Get webform parameters *****/ -var fin_key = getFParamInt("fin_key"); -var message = ""; +var fin_key = getFParam("fin_key"); +var accept = getQParamInt("a", -1) == 1; +var reject = getQParamInt("r", -1) == 1; +if (accept && reject) { + eval("INTERNAL ERROR or ABUSE"); +} /***** End get webform parameters *****/ +var message = ""; var autfunction = "WEB_FINBOF"; - -// De functie checkAutorisation(autfunction, true) geeft null terug indien er geen autorisatie voor autfunction wordt gevonden var authparams = user.checkAutorisation(autfunction, true); if (authparams) { - var approved = 0; - var kk = ""; - // Bepaal facturen die al gefiateerd zijn + var tobeapproved = 0; + var not_tobeapproved = 0; + + var ingesloten = ""; + // Bepaal de facturen in de selectie die + // ook echt gefiatteerd kunnen of mogen worden. sql = "SELECT fin_factuur_key" + " FROM fin_factuur f" + " WHERE fin_factuur_key IN (" + fin_key + ")" - + " AND fin_factuur_statuses_key >= 6" + + " AND fin_factuur_statuses_key = 2"; oRs = Oracle.Execute(sql); while (!oRs.eof) { - if (approved == 0) - kk = oRs(0).value; + if (tobeapproved == 0) + ingesloten = oRs("fin_factuur_key").value; else - kk = kk + "," + oRs(0).value; - approved++; + ingesloten = ingesloten + "," + oRs("fin_factuur_key").value; + tobeapproved++; oRs.MoveNext(); } - - if (approved > 0) - { - var not_approved = 0; - // Bepaal aantal facturen die nog niet gefiateerd zijn - sql = "SELECT COUNT(fin_factuur_key)" - + " FROM fin_factuur f" - + " WHERE fin_factuur_key IN (" + fin_key + ")" - + " AND fin_factuur_statuses_key < 6"; - oRs = Oracle.Execute(sql); - if (!oRs.eof) - not_approved = oRs(0).value; - message = approved + lcl_fin_off + (not_approved + approved) + lcl_fin_already_appr; + if (tobeapproved > 0) { + // approve or disapprove invoice lines + if (accept) { + sql = "UPDATE fin_factuur" + + " SET fin_factuur_datumfiat_ok = SYSDATE" + + ", prs_perslid_key_fiat = " + user_key + + ", fin_factuur_statuses_key = 6" + + " WHERE fin_factuur_key IN (" + ingesloten + ")" + + " AND (mld_opdr_key IS NOT NULL OR cnt_contract_key IS NOT NULL OR bes_bestelopdr_key IS NOT NULL)"; + message = tobeapproved + " " + (tobeapproved==1 ? lcl_fin_approved1 : lcl_fin_approved); + } else { + sql = "UPDATE fin_factuur" + + " SET fin_factuur_datumfiat_nok = SYSDATE" + + ", prs_perslid_key_fiat = " + user_key + + ", fin_factuur_statuses_key = 1" + + " WHERE fin_factuur_key IN (" + ingesloten + ")" + + " AND (mld_opdr_key IS NOT NULL OR cnt_contract_key IS NOT NULL OR bes_bestelopdr_key IS NOT NULL)"; + message = tobeapproved + " " + (tobeapproved==1 ? lcl_fin_rejected1 : lcl_fin_rejected); + } + oRs = Oracle.Execute(sql); } - - // approve invoice lines - sql = "UPDATE fin_factuur" - + " SET fin_factuur_datumfiat_ok = SYSDATE" - + ", prs_perslid_key_fiat = " + user_key - + ", fin_factuur_statuses_key = 6" - + " WHERE fin_factuur_key IN (" + fin_key + ")" - + (approved - ? " AND fin_factuur_key NOT IN (" + kk + ")" - : "") - + " AND (mld_opdr_key IS NOT NULL OR cnt_contract_key IS NOT NULL OR bes_bestelopdr_key IS NOT NULL)"; - oRs = Oracle.Execute(sql); } else { // Geen autorisatie diff --git a/APPL/FIN/fin_list.asp b/APPL/FIN/fin_list.asp index 00947b7aab..1fe06fb109 100644 --- a/APPL/FIN/fin_list.asp +++ b/APPL/FIN/fin_list.asp @@ -1,7 +1,7 @@ <%@language = "javascript" %> <% /* - $Revision: 1 $ - $Modtime: 26-09-09 17:16 $ + $Revision: 2 $ + $Modtime: 22-10-09 11:56 $ File: fin_list.asp Status: 80% @@ -28,6 +28,7 @@ var opdr_key = getQParam("opdr_key", -1); // Opdracht var bes_key = getQParam("bes_key", -1); // Bestelopdracht var cnt_key = getQParam("cnt_key", -1); // Contract var handler_key = getQParam("handler", -1); // Uitvoerende +var embedded = getQParam("embedded", -1); fin_list ( { outputmode: outputmode, @@ -35,7 +36,8 @@ fin_list ( { outputmode: outputmode, bes_key: (bes_key != -1? bes_key : null), opdr_key: (opdr_key != -1? opdr_key : null), cnt_key: (cnt_key != -1? cnt_key : null), - handler_key: (handler_key != -1? handler_key : null) + handler_key: (handler_key != -1? handler_key : null), + embedded: (embedded != -1? embedded : null) } ); %> \ No newline at end of file diff --git a/APPL/FIN/fin_list.inc b/APPL/FIN/fin_list.inc index 9a4a95ee1f..8c28005085 100644 --- a/APPL/FIN/fin_list.inc +++ b/APPL/FIN/fin_list.inc @@ -1,6 +1,6 @@ <% /* - $Revision: 1 $ - $Modtime: 28-09-09 11:27 $ + $Revision: 2 $ + $Modtime: 23-10-09 12:45 $ File: fin_list.inc Status: 80% Description: Show an overview of invoices in list-form, @@ -10,11 +10,13 @@ showall show all orders which meets with the given requirements findate search for invoices with the given date fin_key search for invoices with the given fin key + finnum search for invoices with the given factuurnr fin_type search for invoices with the given fin type opdrnr search for invoices with the given order number (opdracht nummer) finstatus search for invoices with the given fin status debtor search for invoices with the given debtor handler_key search for invoices with the given handler key + embedded list is used embedded, do not give add opportunity Context: Search action from fin_search.asp form Note: */ %> @@ -24,15 +26,8 @@ - - - - - - - <% FCLTHeader.Requires({ plugins:["jQuery"], js: ["FcltMgr.js", "../FIN/fin_list.js"] @@ -64,6 +59,7 @@ function fin_list (params) var access = (authparamsFINFOF || authparamsFINBOF); if (!access) { + // PF: TODO: zo stoppen we geen paginas Response.Write("

" + lcl_no_auth + "

"); Response.End; } @@ -76,21 +72,18 @@ function fin_list (params) var findate = params.findate; var fin_key = params.fin_key; + var finnum = params.finnum; var fin_type = params.fin_type; var opdrnr = params.opdrnr; var finstatus = params.finstatus; var debtor = params.debtor; var handler_key = params.handler_key; + var embedded = params.embedded == 1; %> <% FCLTHeader.Generate({ outputmode: outputmode }); - if (excel) - { - Response.ContentType = "application/vnd.ms-excel"; - Response.AddHeader ("content-disposition", "inline; filename=dynamic.xls"); - } %> + - - <% sql = "SELECT f.fin_factuur_key factuurnr_intern" + ", f.fin_factuur_datum factuur_datum" @@ -214,7 +207,7 @@ function fin_list (params) + ", mld_discipline md" + ", mld_disc_params dp" + " WHERE o.mld_opdr_key = f.mld_opdr_key" - + " AND f.fin_factuur_statuses_key < 6" + + " AND f.fin_factuur_statuses_key = 2" + " AND o.mld_melding_key = m.mld_melding_key" + " AND m.mld_stdmelding_key = sm.mld_stdmelding_key" + " AND sm.mld_ins_discipline_key = md.ins_discipline_key" @@ -226,7 +219,7 @@ function fin_list (params) + " WHERE c.ins_discipline_key = cd.ins_discipline_key" + " AND cd.ins_discipline_key = cp.cnt_ins_discipline_key" + " AND c.cnt_contract_key = f.cnt_contract_key" - + " AND f.fin_factuur_statuses_key < 6)"; + + " AND f.fin_factuur_statuses_key = 2)"; bes_factuur_pct = " (SELECT MAX(bp.bes_disc_params_factuurpct)" + " FROM bes_bestelopdr_item boi" + ", bes_bestelling_item bbi" @@ -240,7 +233,7 @@ function fin_list (params) + " AND isg.ins_discipline_key = bd.ins_discipline_key" + " AND bd.ins_discipline_key = bp.bes_ins_discipline_key" + " AND boi.bes_bestelopdr_key = f.bes_bestelopdr_key" - + " AND f.fin_factuur_statuses_key < 6)"; + + " AND f.fin_factuur_statuses_key = 2)"; // mld_opdr_kosten and cnt_contract_kosten need marge // bes_bestelopdr_item_prijs need percentage sql_kost_tot_marge = " COALESCE(CASE COALESCE(f.mld_opdr_key, 0)" @@ -250,7 +243,7 @@ function fin_list (params) + " + (SELECT o.mld_opdr_kosten" + " FROM mld_opdr o" + " WHERE o.mld_opdr_key = f.mld_opdr_key" - + " AND f.fin_factuur_statuses_key < 6)" + + " AND f.fin_factuur_statuses_key = 2)" + " END," + " CASE COALESCE(f.cnt_contract_key, 0)" + " WHEN 0" @@ -259,7 +252,7 @@ function fin_list (params) + " + (SELECT c.cnt_contract_kosten" + " FROM cnt_contract c" + " WHERE c.cnt_contract_key = f.cnt_contract_key" - + " AND f.fin_factuur_statuses_key < 6)" + + " AND f.fin_factuur_statuses_key = 2)" + " END," + " CASE COALESCE(f.bes_bestelopdr_key, 0)" + " WHEN 0" @@ -268,7 +261,7 @@ function fin_list (params) + " (SELECT SUM(boi.bes_bestelopdr_item_aantal * boi.bes_bestelopdr_item_prijs)" + " FROM bes_bestelopdr_item boi" + " WHERE boi.bes_bestelopdr_key = f.bes_bestelopdr_key" - + " AND f.fin_factuur_statuses_key < 6)" + + " AND f.fin_factuur_statuses_key = 2)" + " END," + " 0)"; sql_rood = "SIGN(" + sql_fac_som + " - " @@ -288,7 +281,7 @@ function fin_list (params) + " + (SELECT o.mld_opdr_kosten" + " FROM mld_opdr o" + " WHERE o.mld_opdr_key = f.mld_opdr_key" - + " AND f.fin_factuur_statuses_key < 6)" + + " AND f.fin_factuur_statuses_key = 2)" + " END," + " CASE COALESCE(f.cnt_contract_key, 0)" + " WHEN 0" @@ -297,7 +290,7 @@ function fin_list (params) + " + (SELECT c.cnt_contract_termijnkosten" + " FROM cnt_contract c" + " WHERE c.cnt_contract_key = f.cnt_contract_key" - + " AND f.fin_factuur_statuses_key < 6)" + + " AND f.fin_factuur_statuses_key = 2)" + " END," + " CASE COALESCE(f.bes_bestelopdr_key, 0)" + " WHEN 0" @@ -306,7 +299,7 @@ function fin_list (params) + " (SELECT SUM(boi.bes_bestelopdr_item_aantal * boi.bes_bestelopdr_item_prijs)" + " FROM bes_bestelopdr_item boi" + " WHERE boi.bes_bestelopdr_key = f.bes_bestelopdr_key" - + " AND f.fin_factuur_statuses_key < 6)" + + " AND f.fin_factuur_statuses_key = 2)" + " END," + " 0)"; sql += ", " + sql_kost_termijn + " kosten_termijn"; @@ -446,7 +439,10 @@ function fin_list (params) + " WHERE 1=1"; if (fin_key) - sql += " AND f.fin_factuur_key LIKE '" + fin_key + "' OR UPPER(f.fin_factuur_nr) LIKE '" + fin_key + "'"; + sql += " AND f.fin_factuur_key =" + fin_key; + + if (finnum) // PF: heb die key vergelijking maar laten zitten, maar ik vind em raar. + sql += " AND f.fin_factuur_key LIKE '" + finnum + "' OR UPPER(f.fin_factuur_nr) LIKE '" + finnum.toUpperCase() + "'"; if (fin_type){ __Log("fin_type = " + fin_type); sql += " AND f.fin_factuur_statuses_key != -1 AND " + fin_type + " IS NOT NULL"; @@ -501,7 +497,7 @@ function fin_list (params) // Frontoffice, autfunction = "WEB_FINFOF" var sql_part_FINFOF = ""; - if (authparamsFINFOF.PRSreadlevel > 0) + if (authparamsFINFOF && authparamsFINFOF.PRSreadlevel > 0) { sql_part_FINFOF += " AND (SELECT p.prs_afdeling_key" + " FROM prs_perslid p" @@ -511,7 +507,7 @@ function fin_list (params) + " WHERE prs_perslid_key = " + user_key + " AND fac_functie_code = 'WEB_FINFOF')"; } - else if (authparamsFINFOF.PRSreadlevel == 0) + else if (authparamsFINFOF && authparamsFINFOF.PRSreadlevel == 0) { sql_part_FINFOF += " AND (SELECT p.prs_afdeling_key" + " FROM prs_perslid p" @@ -620,12 +616,28 @@ function fin_list (params) function fnrowClass(oRs) { if (oRs("rood") == 1) - return "redBack"; + return "outsidemargin"; else if (oRs("groen") == 1) - return "greenBack"; + return "withinmargin"; + else if (oRs("statuskey") == 1) + return "deleted"; return ''; } - + + var factuurTotalex = 0; + var factuurTotalinc = 0; + function fnsummaryCalc(oRs) + { + factuurTotalex += oRs("bedrag_excl_BTW").value; + factuurTotalinc += oRs("bedrag_incl_BTW").value; + } + + function fnsummaryShow() + { + return lcl_total_cost + " " + + currency_pref+ " " +num2curr(factuurTotalex) + " " + lcl_fin_total_sum_exBTW + " / " + + currency_pref + " " + num2curr(factuurTotalinc) + " "+ lcl_fin_total_sum; + } function fnrowData(oRs) { var finOpdracht = oRs("opdracht").value; @@ -639,24 +651,40 @@ function fin_list (params) function fnrowActionEnabler(oRs) { var eEdit = true; // Always true - var eOrder = (oRs("opdracht").value != " "); + + // Kan ik naar het item waar de factuur bij hoort? + // Niet als ik embedded ben, want dikke kans dat ik dan juist + // al een subframe van datzelfde item ben! + var eOrder = !embedded && (oRs("opdracht").value != " "); + // Fiateer en Verwijder // Afhankelijk van status en of er een referentie is opgegeven, de button grijs weergeven // Als status > 2 dan is er zeker een referentie bekend. // Fiateren ook afhankelijk of budgethouder binnen de organisatiescope ligt // Verwijderen: Write rechten voor WEB_FINFOF nodig // Fiateren: Write rechten voor WEB_FINBOF nodig - var eDelete = (authparamsFINFOF.PRSwritelevel < 9 && - oRs("statuskey").value < 6); - var eApprove = (authparamsFINBOF.PRSwritelevel < 9 && - oRs("statuskey").value < 6 && + var eDelete = !embedded && + (authparamsFINFOF.PRSwritelevel < 9 && + oRs("statuskey").value == 2); + var eApprove = !embedded && + (authparamsFINBOF.PRSwritelevel < 9 && + oRs("statuskey").value == 2 && oRs("opdracht").value != " " && oRs("budgethouder").value > 0); + var eReject = eApprove; - var data = {eEdit:eEdit, eOrder:eOrder, eApprove:eApprove, eDelete:eDelete}; + var data = {eEdit:eEdit, eOrder:eOrder, eApprove:eApprove, eReject: eReject, eDelete:eDelete}; return data; } + buttons = []; + if (!embedded && authparamsFINFOF.PRSwritelevel < 9) { + var addurl = "appl/fin/fin_factuur.asp?1=1"; + addurl += buildTransitParam(["cnt_key", "opdr_key", "bes_key"], params) // TODO: welke allemaal? + buttons.push({ icon: "plus.png", title: lcl_add, action: "FcltMgr.openDetail('" + addurl + "', '" + lcl_add + "')" }); + } + + var rst = new ResultsetTable({keyColumn: "factuurnr_intern", ID: "workTable", rowClass: fnrowClass, @@ -666,10 +694,14 @@ function fin_list (params) flexModule: "FIN", flexId: "factuurnr_intern", filterParams: params, + summaryCalc: fnsummaryCalc, + summaryShow: fnsummaryShow, outputmode: outputmode, title: lcl_fin_invoices, showAll: showall, - multiple: true}) + multiple: true, /* wat doet-ie ook al weer, en willen we dat hier?*/ + buttons: buttons + }); rst.addColumn(new Column({caption: lcl_fin_nr, content: "factuurnr_intern"})); rst.addColumn(new Column({caption: lcl_fin_date, content: "factuur_datum", datatype: "date"})); @@ -681,11 +713,13 @@ function fin_list (params) rst.addColumn(new Column({caption: lcl_fin_total_sum + " (" + currency_pref + currency_suff + ")", content: "bedrag_incl_BTW", datatype: "currency"})); rst.addColumn(new Column({caption: lcl_fin_status, content: "statusomschrijving"})); - rst.addAction({action: "finEdit", caption: lcl_edit, enabler: "eEdit"}); + rst.addAction({action: "finEdit", caption: lcl_edit, isDefault: true, enabler: "eEdit"}); rst.addAction({action: "finOrder", caption: lcl_order, enabler: "eOrder"}); - rst.addAction({action: "finApprove", caption: lcl_approve, enabler: "eApprove", multi: true, multiOnce: true}); - rst.addAction({action: "finDelete", caption: lcl_delete, enabler: "eDelete", multi: true, multiOnce: true}); - + if (!embedded) { + rst.addAction({action: "finApprove", caption: lcl_approve, enabler: "eApprove", multi: true, multiOnce: true}); + rst.addAction({action: "finReject", caption: lcl_reject, enabler: "eReject", multi: true, multiOnce: true}); + rst.addAction({action: "finDelete", caption: lcl_delete, enabler: "eDelete", multi: true, multiOnce: true}); + } var cnt = rst.processResultset(); %> diff --git a/APPL/FIN/fin_list.js b/APPL/FIN/fin_list.js index 896e237fd2..d9030bab08 100644 --- a/APPL/FIN/fin_list.js +++ b/APPL/FIN/fin_list.js @@ -1,8 +1,8 @@ /* - $Revision: 1 $ - $Modtime: 23-09-09 13:49 $ + $Revision: 2 $ + $Modtime: 23-10-09 12:49 $ - Status: 95% + Status: 100% */ function finEdit(row) @@ -50,7 +50,20 @@ function finApprove(rowArray, isMulti) if (isMulti || confirm(lcl_fin_approve)) { - $.post("fin_approve.asp", + $.post("fin_approve.asp?a=1", + { fin_key: finKeyString }, + FcltCallback, + "json"); + } +} + +function finReject(rowArray, isMulti) +{ + var finKeyString = getKeyString(rowArray); // regels worden ook op dirty gezet + + if (isMulti || confirm(lcl_fin_reject)) + { + $.post("fin_approve.asp?r=1", { fin_key: finKeyString }, FcltCallback, "json"); diff --git a/APPL/FIN/fin_search.asp b/APPL/FIN/fin_search.asp index 6e01fd8f58..3043c37cf3 100644 --- a/APPL/FIN/fin_search.asp +++ b/APPL/FIN/fin_search.asp @@ -1,32 +1,28 @@ <%@language = "javascript" %> <% /* - $Revision: 1 $ - $Modtime: 26-09-09 17:30 $ + $Revision: 2 $ + $Modtime: 23-10-09 12:41 $ File: fin_search.asp Status: 80% Description: Filterscherm voor overzicht facturen - Parameters: fin_key Factuurnummer + Parameters: fin_key Factuurkey + finnum Factuurnummer fin_type Factuurtype opdr_key Opdracht key status Status debtor Eigen debiteurnummer Globals: Context: - Note: + Note: TODO We zouden de status listbox nog als checkboxen kunnen maken.. + */ %> + - - - - - - - @@ -43,7 +39,8 @@ var date = getQParam("date_from", ""); var today = new Date (); var date = (date == ""? today : new Date(parseInt(date, 10))); -var fin_key = getQParamInt("fin_key", -1); // Factuurnummer +var fin_key = getQParamInt("fin_key", -1); // Factuurkey +var finnum = getQParamInt("finnum", -1); // Factuurnummer var fin_type = getQParamInt("fin_type", -1); // Factuurtype var opdrnr = getQParam("opdrnr", -1); // Opdrachtnummer var finstatus = getQParamInt("finstatus", -1); // Factuurstatus @@ -57,7 +54,6 @@ if (finstatus == -1 && fin_key == -1 && opdrnr == -1) } /***** End get webform parameters *****/ -// 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 authparamsFINFOF = user.checkAutorisation("WEB_FINFOF", true); var authparamsFINBOF = user.checkAutorisation("WEB_FINBOF", true); @@ -128,7 +124,7 @@ if (!access) - > + > @@ -143,17 +139,13 @@ if (!access) -<% sql = "SELECT b.prs_bedrijf_key" - + ", b.prs_bedrijf_naam" - + " FROM prs_v_aanwezigbedrijf b" - + " WHERE b.prs_bedrijf_intern IS NULL" - + " ORDER BY b.prs_bedrijf_naam_upper" - FCLTselector("handler", - sql, +<% FCLTbedrijfselector("handler","handler", { initKey: handler_key, label: lcl_handler, - emptyOption: "" - }) + filtercode: "X", + emptyOption: "", + whenEmpty: lcl_search_generic + }); %> @@ -211,7 +203,7 @@ if (!access) emptyOption: "" }) %> - +