Files
Facilitor/APPL/CNT/cnt_factuurschema.asp
Jos Groot Lipman 0a331b5265 FSN#39262 Verwijderde facturen negeren bij contracten
svn path=/Website/branches/v2016.3/; revision=32608
2017-01-30 12:20:59 +00:00

152 lines
4.7 KiB
Plaintext

<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: cnt_factuurschema
Description: Aanroep voor model_cnt_factuurschema
Context: Zal altijd aangeroepen worden met (include) model=schedule
Notes: cnt_factuurschema is een include van cnt_contract
Daarom doen we hier ook model cnt_contract en zorgen voor
een 'include-aanroep'
*/
%>
<!-- #include file="../scf/scaffolding.inc" -->
<!-- #include file="../mgt/mgt_tools.inc" -->
<!-- #include file="../api2/model_contracts.inc" -->
<%
var this_model = model_contracts;
var sqltotal = "SELECT SUM (fin_factuur_totaal)"
+ " FROM fin_factuur f"
+ " WHERE f.fin_factuur_boekmaand = cnt_factuurschema.cnt_factuurschema_boekmaand"
+ " AND f.cnt_contract_key = cnt_factuurschema.cnt_contract_key"
+ " AND f.fin_factuur_verwijder IS NULL"
this_model.includes.schedule.model.fields["fintotal"] =
{ dbs: "fintotal",
label: L("lcl_mld_invoiced"),
sql: "(" + sqltotal + ")",
typ: 'float'
}
if (mode == "edit" && getQParamInt("id", -1) < 0)
{
var cnt_key = getQParamInt("cnt_contract_key");
var sql = "SELECT 'x'"
+ " FROM cnt_factuurschema"
+ " WHERE cnt_contract_key =" + cnt_key ;
var oRs = Oracle.Execute( sql );
var hasFactuurschema = !oRs.EOF;
oRs.close();
var sql = "SELECT cnt_contract_kosten"
+ " , 1+TRUNC(MONTHS_BETWEEN(cnt_contract_looptijd_tot, cnt_contract_looptijd_van)) maanden"
+ " , cnt_contract_looptijd_van"
+ " , cnt_contract_looptijd_tot"
+ " , cnt_contract_kosten"
+ " FROM cnt_contract"
+ " WHERE cnt_contract_key = " + cnt_key;
var oRs = Oracle.Execute(sql);
var kosten = oRs("cnt_contract_kosten").Value;
var maanden = oRs("maanden").Value;
var start = oRs("cnt_contract_looptijd_van").Value;
oRs.Close()
var maandbedrag = (kosten/maanden).toFixed(2);
this_model.includes.schedule.model.fields["amount"].defaultvalue = maandbedrag;
if (!hasFactuurschema) // Genereer knop erbij
{
this_model.includes.schedule.model.fields["tekst"] =
{
label: L("lcl_cnt_genschema_hint").format(maanden),
typ: "label"
}
this_model.includes.schedule.model.fields["generate"] =
{
label: L("lcl_cnt_genschema"),
typ: 'check0'
}
}
this_model.includes.schedule.model["edit"] = {
"requires": {
js: ["./cnt_factuurschema.js"]
}
}
// Listbox met de factuurperioden toevoegen.
var maandperioden = [];
for (maand = 0; maand < maanden; maand++)
{
var periode = addMonth(start, maand);
maandperioden.push(periode);
maandperioden.push(periode);
}
this_model.includes.schedule.model.fields.accountingperiod.LOV = maandperioden.join(";");
}
function addMonth(datum,n)
{
var d = new Date(datum);
var m = d.getMonth()+n;
d.setMonth(m);
var maand = d.getMonth() + 1
var datestring = d.getFullYear() + "-" + padout(maand);
return datestring;
}
var org_save = scaffolding_save;
scaffolding_save = function(model, scf_params)
{
if (getFParam("generate", "off") == "on")
{
protectRequest.validateToken();
var cnt_key = getQParamInt( "cnt_contract_key" );
var amount = getFParamFloat("amount");
var description = getFParam("description");
var sql = "BEGIN"
+ " cnt.generatefactuurschema({0}, {1});".format(cnt_key, amount)
+ "END;";
var err = Oracle.Execute(sql, true);
if (err.friendlyMsg)
abort_with_warning(err.friendlyMsg);
var result = { success: true };
Response.ContentType = "application/json";
Response.Write(JSON.stringify(result));
}
else
org_save(model, scf_params);
}
scaffolding(this_model,
{ "included": {
"schedule" : {
"list": {
"columns": [
"accountingperiod",
"amount",
"description",
"fintotal"
],
"orderby": [,
"cnt_contract_key",
"accountingperiod"
]
},
"edit": {
"modal": true,
"requires": {
js: ["./cnt_factuurschema.js"]
}
}
}
}
});
%>