Files
Facilitor/APPL/API2/model_fin_factuur.inc
Erik Groener b7aff7b572 FSN#39055 BCS/2000 functionaliteit in FACILITOR - customization
svn path=/Website/trunk/; revision=35173
2017-08-31 14:50:34 +00:00

274 lines
8.9 KiB
PHP

<% /*
$Revision$
$Id$
File: model_fin_factuur.inc
Description: Model voor fin_factuur
Context:
Notes:
*/
%>
<!-- #include file="../bgt/bgt_tools.inc" -->
<%
function model_fin_factuur()
{
this.records_name = "invoices";
this.record_name = "invoice";
this.table = "fin_factuur";
this.primary = "fin_factuur_key";
this.autfunction = "WEB_BGTORD";
this.record_title = L("fin_invoice");
this.records_title = L("lcl_fin_invoices");
this.fields = {
"id": {
"dbs": "fin_factuur_key",
"label": L("lcl_key"),
"typ": "key",
"hidden_fld": true,
"required": true,
"filter": "exact",
"seq": "fin_s_fin_factuur_key"
},
"budgetdiscipline": {
"dbs": "bgt_project.ins_discipline_key",
"label": L("bgt_discipline_omschrijving"),
"typ": "key",
"required": true,
"foreign": bgt_budgetdiscipline_foreign(),
"showtransit": true,
"emptyoption": null
},
"budgetproject": {
"dbs": "bgt_project.bgt_project_key",
"label": L("bgt_project_omschrijving"),
"typ": "key",
"foreign": bgt_budgetproject_foreign(),
"showtransit": true
},
"company": {
"dbs": "mld_opdr.mld_uitvoerende_keys",
"label": L("lcl_ord_company"),
"typ": "key",
"foreign": bgt_company_foreign(),
"showtransit": true
},
"order": {
"dbs": "mld_opdr_key",
"label": L("lcl_fin_mld_opdr"),
"typ": "key",
"required": true,
"foreign": bgt_order_foreign(),
"showtransit": true,
"clone": false
},
"costtype": {
"dbs": "prs_kostensoort_key",
"label": L("prs_kostensoort_key"),
"typ": "key",
"required": false,
"hidden_fld": true
},
"additional": {
"dbs": "mld_opdr.mld_opdr_meerwerk",
"label": L("lcl_mld_opdr_meerwerk"),
"typ": "check0",
"defaultvalue": 0,
"filter": "exact"
},
"ordernr_sort": {
"dbs": "mld_opdr_ordernr_int",
"label": L("bgt_opdr_ordernr"),
"sql": "fac.safe_to_number(mld_opdr.mld_opdr_ordernr)",
"typ": "number",
"readonly": true
},
"ordernr": {
"dbs": "mld_opdr.mld_opdr_ordernr",
"label": L("bgt_opdr_ordernr"),
"typ": "varchar",
"hidden_fld": true
},
"invoice": {
"dbs": "fin_factuur_nr",
"label": L("lcl_fin_invoice_number"),
"typ": "varchar",
"required": true
},
"remark": {
"dbs": "fin_factuur_opmerking",
"label": L("bgt_factuur_omschrijving"),
"typ": "varchar"
},
"date": {
"dbs": "fin_factuur_datum",
"label": L("lcl_fin_findate"),
"typ": "date",
"required": true,
"defaultvalue": new Date()
},
"advice": {
"dbs": "fin_factuur_advies",
"label": L("lcl_fin_adviesdatum"),
"typ": "date",
"defaultvalue": new Date()
},
"month": {
"dbs": "fin_factuur_boekmaand",
"label": L("lcl_fin_boekmaand"),
"typ": "varchar"
},
"status": {
"dbs": "fin_factuur_statuses_key",
"label": L("lcl_fin_fin_status"),
"typ": "key",
"foreign": bgt_invoicestatus_foreign(),
"defaultvalue": "2",
"clone": false // Krijgt nu de default waarde.
},
"total": {
"dbs": "fin_factuur_totaal",
"label": L("lcl_fin_CO_sum"),
"typ": "float",
"iscurrency": true,
"total": true
},
"totalvat": {
"dbs": "fin_factuur_totaal_btw",
"label": L("lcl_fin_btwsum"),
"typ": "float",
"iscurrency": true,
"total": true,
"clone": false
},
"totalincl": {
"dbs": "fin_factuur_totaal_incl",
"sql": "fin_factuur_totaal + fin_factuur_totaal_btw",
"label": L("lcl_fin_total_sum"),
"typ": "float",
"readonly": true,
"sqlshow": true,
"iscurrency": true,
"total": true,
"defaultvalue": "0",
"clone": false
}
};
this.list = {
"columns": [
"invoice",
"date",
"remark",
"total",
"totalvat",
"totalincl"
]
};
this.hook_pre_edit = function(obj, fld)
{
var btw_data = {};
if (obj.id > -1)
{
var sql = "SELECT s.prs_kostensoort_btw"
+ " , f.fin_btwtabelwaarde_perc"
+ " FROM fin_factuur f"
+ " , prs_kostensoort s"
+ " , fin_btwtabelwaarde f"
+ " WHERE s.fin_btwtabelwaarde_key = f.fin_btwtabelwaarde_key"
+ " AND f.prs_kostensoort_key = s.prs_kostensoort_key"
+ " AND f.fin_factuur_key = " + obj.id;
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
btw_data.btw_inc = oRs("prs_kostensoort_btw").Value;
btw_data.btw_val = oRs("fin_btwtabelwaarde_perc").Value;
}
oRs.Close();
}
%>
<script>
var btw_data = <%=JSON.stringify(btw_data)%>;
</script>
<%
// Bij klonen: id=-1, invoice=niet leeg. Dan een (volgende) volgnummer erachter zetten.
if (obj.invoice)
{
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);
var new_inv = cur_inv + "/" + (cur_seq + 1);
obj.invoice = new_inv;
}
else
{
%>
<script>
var cur_mode = "<%=mode%>"; // = "edit"
<% if (obj.budgetdiscipline) { %> var budgetdiscipline = "<%=obj.budgetdiscipline.id%>"; <% } %>
<% if (obj.budgetproject) { %> var budgetproject = "<%=obj.budgetproject.id%>"; <% } %>
<% if (obj.company) { %> var company = "<%=obj.company.id%>"; <% } %>
</script>
<%
}
// De opdracht moet wel gewijzigd kunnen worden bij het klonen.
if (!obj.id)
fld.order.readonly = false;
}
this.hook_pre_post = function(params, obj)
{
// Wordt alleen gebruikt bij toevoegen.
}
this.hook_pre_put = function(params, obj, key)
{ //wijzigen factuur: bepaal ook opnieuw de som van de factuurregels.
}
var mld_opdr_key = getQParamInt("opdrachtcommon", -1);
var ischild = (getQParam("columns", "")=="" ? true : false);
var xmodel = getQParam("model", "");
if (mode == "list" && (xmodel == this.record_name || (ischild && mld_opdr_key == -1) || (!ischild && mld_opdr_key > -1)))
{
this.REST_GET = generic_REST_GET(this);
}
else
{
var gparams = {
GET: {
tables: [
"prs_kostensoort",
"prs_kostensoortgrp",
"bgt_kostenrubriek",
"bgt_project",
"mld_opdr"
],
wheres: [
"fin_factuur.prs_kostensoort_key = prs_kostensoort.prs_kostensoort_key",
"prs_kostensoort.prs_kostensoortgrp_key = prs_kostensoortgrp.prs_kostensoortgrp_key",
"prs_kostensoortgrp.bgt_kostenrubriek_key = bgt_kostenrubriek.bgt_kostenrubriek_key",
"bgt_kostenrubriek.bgt_project_key = bgt_project.bgt_project_key",
"mld_opdr.mld_opdr_key = fin_factuur.mld_opdr_key"
]
}
};
if (mld_opdr_key > -1)
gparams.GET.wheres.push("mld_opdr.mld_opdr_key = {0}".format(mld_opdr_key));
this.REST_GET = generic_REST_GET(this, gparams);
}
this.REST_POST = generic_REST_POST(this);
this.REST_PUT = generic_REST_PUT(this);
this.REST_DELETE = generic_REST_DELETE(this);
}
%>