svn path=/Website/trunk/; revision=23
This commit is contained in:
Peter Feij
2009-10-23 10:53:32 +00:00
parent ec230b73b1
commit a37d31cc11
5 changed files with 162 additions and 117 deletions

View File

@@ -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%
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;
%>
<!-- #include file="../../cust/install.inc" -->
<!-- #include file="../Shared/json2.js" -->
<%
/***** 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;
}
// approve invoice lines
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 (" + fin_key + ")"
+ (approved
? " AND fin_factuur_key NOT IN (" + kk + ")"
: "")
+ " 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);
}
}
else
{ // Geen autorisatie

View File

@@ -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)
}
);
%>

View File

@@ -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 @@
<!-- #include file="../Shared/resultset_table_v2.inc" -->
<!-- #include file="../Shared/getkenmerksql.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/funcodes.inc" -->
<!-- #include file="../Shared/loader.inc" -->
<!-- #include file="../Shared/my_place.inc" -->
<!-- #include file="../Shared/datetime.inc" -->
<!-- #include file="../Shared/getvalues.inc" -->
<!-- #include file="../Shared/query-processor.inc" -->
<%
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("<body><p>" + lcl_no_auth + "</p></body>");
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;
%>
<html>
<head>
<%
FCLTHeader.Generate({ outputmode: outputmode });
if (excel)
{
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader ("content-disposition", "inline; filename=dynamic.xls");
}
%>
<script type="text/javascript">
// Text strings used by fin_list.js
@@ -108,11 +101,11 @@ function fin_list (params)
var lcl_fin_already_appr = "<%=lcl_fin_already_appr%>";
var lcl_fin_already_del = "<%=lcl_fin_already_del%>";
var lcl_fin_approve = "<%=lcl_fin_approve%>";
var lcl_fin_reject = "<%=lcl_fin_reject%>";
</script>
</head>
<body id="listbody">
<%
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"});
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();
%>
<iframe src="../Shared/empty.asp" frameborder="0" id="hidFrame" name="hidFrame" style="display:none"></iframe>

View File

@@ -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");

View File

@@ -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..
*/ %>
<!-- #include file="../../cust/install.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<!-- #include file="../Shared/escape.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/bedrijfselector.inc" -->
<!-- #include file="../Shared/calendar.inc" -->
<!-- #include file="../Shared/funcodes.inc" -->
<!-- #include file="../Shared/loader.inc" -->
<!-- #include file="../Shared/my_place.inc" -->
<!-- #include file="../Shared/datetime.inc" -->
<!-- #include file="../Shared/getvalues.inc" -->
<!-- #include file="../Shared/query-processor.inc" -->
<!-- #include file="../Shared/resultset_table_v2.inc" -->
<script type="text/javascript" src="../LocalScripts/autocomplete.js"></script>
@@ -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)
<tr class="primsearch">
<td class="label"><label for="finnum"><%=lcl_fin_number%>:</label></td>
<td>
<input type="text" class="fldfinnum" name="finnum" <%=(fin_key != -1) ? "value='" + fin_key + "'" : ""%>>
<input type="text" class="fldfinnum" name="finnum" <%=(finnum != -1) ? "value='" + finnum + "'" : ""%>>
</td>
</tr>
@@ -143,17 +139,13 @@ if (!access)
<!-- Uitvoerende -->
<tr class="primsearch">
<% 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
});
%> </tr>
<!-- Eigen debiteurennummer -->
@@ -211,7 +203,7 @@ if (!access)
emptyOption: ""
})
%> </tr>
</table>
</table><input type="submit" style="width:0px">
</td><!-- end column 2 -->
</tr>
</table>