Files
Facilitor/APPL/API2/model_fin_factuurregel.inc
Maykel Geerdink 45262efea3 FCLT#59418: Afzonderlijke autorisatiefunctie voor externe contactpersonen.
svn path=/Website/branches/v2020.1/; revision=46120
2020-03-05 15:21:13 +00:00

160 lines
5.2 KiB
C++

<% /*
$Revision$
$Id$
File: model_fin_factuurregel.inc
Description: Model voor fin_factuurregel
Context:
Notes:
*/
%>
<%
function model_fin_factuurregel()
{
this.records_name = "invoicerows";
this.record_name = "invoicerow";
this.table = "fin_factuurregel";
this.primary = "fin_factuurregel_key";
this.autfunction = "WEB_BGTUSE"; // "WEB_EXTFIN"
this.record_title = L("lcl_verkoopfactuurregel");
this.records_title = L("fin_invoicerows");
this.fields = {
"id": {
"dbs": "fin_factuurregel_key",
"label": L("lcl_key"),
"typ": "key",
"hidden_fld": true,
"required": true,
"seq": "fin_s_fin_factuurregel_key"
},
"invoice": {
"dbs": "fin_factuur_key",
"label": L("lcl_fin_invoice_number"),
"typ": "key",
"foreign": {
"tbl": "(SELECT fin_factuur_key"
+ " , fin_factuur_nr ||' '|| fin_factuur_opmerking oms"
+ " FROM fin_factuur"
+ ")",
"key": "fin_factuur_key",
"desc": "oms"
}
},
"sequence": {
"dbs": "fin_factuurregel_nr",
"label": L("lcl_ins_volgnr"),
"typ": "number"
},
"reference": {
"dbs": "fin_factuurregel_referentie",
"label": L("lcl_fin_referentie"),
"typ": "varchar"
},
"description": {
"dbs": "fin_factuurregel_omschrijving",
"label": L("lcl_fin_remark"),
"typ": "varchar"
},
"vatvalue": {
"dbs": "fin_btwtabelwaarde_key",
"label": L("lcl_fin_btwtarief"),
"typ": "key",
"foreign": {
"tbl": "fin_btwtabelwaarde",
"key": "fin_btwtabelwaarde_key",
"desc": "fin_btwtabelwaarde_oms"
}
},
"amount": {
"dbs": "fin_factuurregel_totaal",
"label": L("lcl_fin_CO_sum"),
"typ": "float",
"iscurrency": true,
"total": true
},
"vat": {
"dbs": "fin_factuurregel_btw",
"label": L("lcl_fin_btwsum"),
"typ": "float",
"iscurrency": true,
"total": true
}
};
this.list = {
"columns": [
"sequence",
"reference",
"description",
"vatvalue",
"amount",
"vat"
]
};
this.edit = {
"modal": true
};
this.hook_pre_edit = function(obj, fld)
{
fld.vat.readonly = true;
}
function get_btw_bedrag(btw_key, bedrag_excl)
{
var sql = "SELECT fin_btwtabelwaarde_perc"
+ " , fin_btwtabelwaarde_verlegd"
+ " FROM fin_btwtabelwaarde"
+ " WHERE fin_btwtabelwaarde_key = " + btw_key;
oRs = Oracle.Execute(sql);
// Er moet een waarde zijn.
var btw_perc = oRs("fin_btwtabelwaarde_perc").value;
var verlegd = oRs("fin_btwtabelwaarde_verlegd").value;
oRs.Close();
var btw_bedrag = bedrag_excl * btw_perc / 100;
return btw_bedrag;
}
this.hook_pre_post = function(params, obj)
{
// Wordt alleen gebruikt bij toevoegen.
obj.vat = get_btw_bedrag(obj.vatvalue, obj.amount);
}
this.hook_pre_put = function(params, obj, key)
{
// Wordt alleen gebruikt bij wijzigen.
obj.vat = get_btw_bedrag(obj.vatvalue, obj.amount);
// Redundante info fan fin_factuur bijwerken.
var sql = "UPDATE fin_factuur ff"
+ " SET ff.fin_factuur_totaal = (SELECT SUM(fin_factuurregel_totaal)"
+ " FROM fin_factuurregel fr"
+ " WHERE fr.fin_factuur_key = ff.fin_factuur_key"
+ " AND fr.fin_factuurregel_key <> " + key
+ ") + " + obj.amount
+ " , ff.fin_factuur_totaal_btw = (SELECT SUM(fin_factuurregel_btw)"
+ " FROM fin_factuurregel fr"
+ " WHERE fr.fin_factuur_key = ff.fin_factuur_key"
+ " AND fr.fin_factuurregel_key <> " + key
+ ") + " + obj.vat
+ " WHERE ff.fin_factuur_key = (SELECT fin_factuur_key"
+ " FROM fin_factuurregel"
+ " WHERE fin_factuurregel_key = " + key
+ ")";
Oracle.Execute(sql);
}
this.REST_GET = generic_REST_GET(this);
this.REST_POST = generic_REST_POST(this);
this.REST_PUT = generic_REST_PUT(this);
this.REST_DELETE = generic_REST_DELETE(this);
}
%>