FSN#39055 BCS/2000 functionaliteit in FACILITOR - customization
svn path=/Website/trunk/; revision=36744
This commit is contained in:
@@ -100,6 +100,12 @@ function model_fin_factuur()
|
||||
"foreign": bgt_account_foreign(),
|
||||
"readonly": true
|
||||
},
|
||||
"_staticinvoice": {
|
||||
"dbs": "",
|
||||
"label": L("bgt_factuurnr_vast"),
|
||||
"typ": "varchar",
|
||||
"foreign": bgt_invoice_foreign()
|
||||
},
|
||||
"invoice": {
|
||||
"dbs": "fin_factuur_nr",
|
||||
"label": L("lcl_fin_invoice_number"),
|
||||
@@ -215,35 +221,44 @@ function model_fin_factuur()
|
||||
</script>
|
||||
<%
|
||||
|
||||
var vast_facnr = isVastFactuurnummer(obj.invoice);
|
||||
if (!obj.id && obj.invoice)
|
||||
{
|
||||
// Bij klonen: id=(bestaat niet), invoice=niet leeg. Dan een (volgende) volgnummer erachter zetten.
|
||||
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 = parseInt(cur_seq ? cur_seq : 0);
|
||||
if (!vast_facnr)
|
||||
{
|
||||
// Bij klonen: id=(bestaat niet), invoice=niet leeg. Dan een (volgende) volgnummer erachter zetten.
|
||||
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 = parseInt(cur_seq ? cur_seq : 0);
|
||||
|
||||
var sql = "SELECT MAX(CASE WHEN INSTR(f.fin_factuur_nr, '/') > 0"
|
||||
+ " THEN TO_NUMBER(SUBSTR(f.fin_factuur_nr, INSTR(f.fin_factuur_nr, '/')+1))"
|
||||
+ " ELSE 0"
|
||||
+ " END) max_seq"
|
||||
+ " FROM bgt_kostenrubriek r"
|
||||
+ " , prs_kostensoortgrp g"
|
||||
+ " , prs_kostensoort s"
|
||||
+ " , mld_opdr o"
|
||||
+ " , fin_factuur f"
|
||||
+ " WHERE r.bgt_kostenrubriek_key = g.bgt_kostenrubriek_key"
|
||||
+ " AND g.prs_kostensoortgrp_key = s.prs_kostensoortgrp_key"
|
||||
+ " AND s.prs_kostensoort_key = o.prs_kostensoort_key"
|
||||
+ " AND o.mld_opdr_key = f.mld_opdr_key"
|
||||
+ " AND r.bgt_project_key = " + obj.budgetproject.id
|
||||
+ " AND f.fin_factuur_nr LIKE " + safe.quoted_sql(cur_inv + "%");
|
||||
var oRs = Oracle.Execute(sql);
|
||||
cur_seq = oRs("max_seq").Value;
|
||||
oRs.Close();
|
||||
var sql = "SELECT MAX(CASE WHEN INSTR(f.fin_factuur_nr, '/') > 0"
|
||||
+ " THEN TO_NUMBER(SUBSTR(f.fin_factuur_nr, INSTR(f.fin_factuur_nr, '/')+1))"
|
||||
+ " ELSE 0"
|
||||
+ " END) max_seq"
|
||||
+ " FROM bgt_kostenrubriek r"
|
||||
+ " , prs_kostensoortgrp g"
|
||||
+ " , prs_kostensoort s"
|
||||
+ " , mld_opdr o"
|
||||
+ " , fin_factuur f"
|
||||
+ " WHERE r.bgt_kostenrubriek_key = g.bgt_kostenrubriek_key"
|
||||
+ " AND g.prs_kostensoortgrp_key = s.prs_kostensoortgrp_key"
|
||||
+ " AND s.prs_kostensoort_key = o.prs_kostensoort_key"
|
||||
+ " AND o.mld_opdr_key = f.mld_opdr_key"
|
||||
+ " AND r.bgt_project_key = " + obj.budgetproject.id
|
||||
+ " AND f.fin_factuur_nr LIKE " + safe.quoted_sql(cur_inv + "%");
|
||||
var oRs = Oracle.Execute(sql);
|
||||
cur_seq = oRs("max_seq").Value;
|
||||
oRs.Close();
|
||||
|
||||
var new_inv = cur_inv + "/" + (cur_seq + 1);
|
||||
obj.invoice = new_inv;
|
||||
var new_inv = cur_inv + "/" + (cur_seq==0 ? 2 : cur_seq + 1);
|
||||
obj.invoice = new_inv;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Bij klonen van een factuur met een vast factuurnr blijft deze ongewijzigd.
|
||||
obj.invoice = invoice;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -307,6 +322,31 @@ function model_fin_factuur()
|
||||
setKostensoort(obj);
|
||||
// Is het factuurnummer/volgnummer uniek binnen het project?
|
||||
checkUniekFactuurnummer(-1, obj.budgetproject, obj.invoice);
|
||||
// Bij een kopiefactuur van een origineel (factuurnummer zonder volgnummer)
|
||||
// moet het originele factuurnummer de toevoeging "/1" krijgen.
|
||||
// De vaste factuurnummers echter niet.
|
||||
var vast_factnr = isVastFactuurnummer(obj.invoice);
|
||||
var is_clone = (getQParamInt("scf_clone", 0) == 1);
|
||||
if (is_clone && !vast_factnr)
|
||||
{
|
||||
// Haal het originele factuurnummer op.
|
||||
var org_fin_key = getQParamInt("id");
|
||||
var sql = "SELECT fin_factuur_nr"
|
||||
+ " FROM fin_factuur"
|
||||
+ " WHERE fin_factuur_key = " + org_fin_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var fact_nr_org = oRs("fin_factuur_nr").Value;
|
||||
oRs.Close();
|
||||
if (fact_nr_org.indexOf("/") == -1)
|
||||
{
|
||||
// Het originele factuurnummer heeft nog geen volgnummer.
|
||||
// Deze dus alsnog toevoegen.
|
||||
var sql = "UPDATE fin_factuur"
|
||||
+ " SET fin_factuur_nr = " + safe.quoted_sql(fact_nr_org + "/1")
|
||||
+ " WHERE fin_factuur_key = " + org_fin_key;
|
||||
Oracle.Execute(sql);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.hook_pre_put = function(params, obj, key)
|
||||
@@ -329,6 +369,21 @@ function model_fin_factuur()
|
||||
oRs.Close();
|
||||
}
|
||||
|
||||
function isVastFactuurnummer(factnr)
|
||||
{
|
||||
// is de huidige factuurnummer iets uit de usrtab, dan deze gewoon laten staan.
|
||||
var sql = "SELECT count(*) aantal"
|
||||
+ " FROM fac_usrdata d"
|
||||
+ " , fac_usrtab t"
|
||||
+ " WHERE t.fac_usrtab_key = d.fac_usrtab_key"
|
||||
+ " AND t.fac_usrtab_naam = " + safe.quoted_sql(S("bgt_usrtab_vaste_factuurnummer"))
|
||||
+ " AND d.fac_usrdata_code = " + safe.quoted_sql(factnr);
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var vast_factnr = (oRs("aantal").Value == 1);
|
||||
oRs.Close();
|
||||
return vast_factnr;
|
||||
}
|
||||
|
||||
function checkUniekFactuurnummer(p_factuur_key, p_project_key, p_factuurnr)
|
||||
{
|
||||
var sql = "SELECT count(*) aantal"
|
||||
@@ -343,6 +398,13 @@ function model_fin_factuur()
|
||||
+ " AND o.mld_opdr_key = f.mld_opdr_key"
|
||||
+ " AND r.bgt_project_key = " + p_project_key
|
||||
+ " AND f.fin_factuur_nr = " + safe.quoted_sql(p_factuurnr)
|
||||
+ " AND f.fin_factuur_nr NOT IN"
|
||||
+ " (SELECT d.fac_usrdata_code"
|
||||
+ " FROM fac_usrdata d"
|
||||
+ " , fac_usrtab t"
|
||||
+ " WHERE t.fac_usrtab_key = d.fac_usrtab_key"
|
||||
+ " AND t.fac_usrtab_naam = " + safe.quoted_sql(S("bgt_usrtab_vaste_factuurnummer"))
|
||||
+ " )"
|
||||
+ (p_factuur_key != -1 ? " AND f.fin_factuur_key <> " + p_factuur_key : "");
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var uniek_factuurnr = (oRs("aantal").Value == 0);
|
||||
|
||||
@@ -178,4 +178,21 @@ function bgt_order_foreign()
|
||||
};
|
||||
}
|
||||
|
||||
function bgt_invoice_foreign()
|
||||
{
|
||||
return {
|
||||
"tbl": "(SELECT DISTINCT"
|
||||
+ " d.fac_usrdata_volgnr"
|
||||
+ " , d.fac_usrdata_code"
|
||||
+ " FROM fac_usrdata d"
|
||||
+ " , fac_usrtab t"
|
||||
+ " WHERE t.fac_usrtab_key = d.fac_usrtab_key"
|
||||
+ " AND t.fac_usrtab_naam = " + safe.quoted_sql(S("bgt_usrtab_vaste_factuurnummer"))
|
||||
+ " ORDER BY d.fac_usrdata_volgnr"
|
||||
+ ")",
|
||||
"key": "fac_usrdata_volgnr",
|
||||
"desc": "fac_usrdata_code"
|
||||
};
|
||||
}
|
||||
|
||||
%>
|
||||
@@ -12,6 +12,7 @@ function init_factuur()
|
||||
$("#order").change( change_opdracht );
|
||||
$("#total").change( change_totaal );
|
||||
$("#totalvat").change( change_btw );
|
||||
$("#_staticinvoice").change( change_vastnummer );
|
||||
|
||||
// budgetdiscipline en budgetproject kunnen ook als gekozen filter worden meegegeven
|
||||
// en worden dan als readonly velden getoond.
|
||||
@@ -42,7 +43,7 @@ function init_factuur()
|
||||
$.getJSON( "../bgt/get_bgt_info_ajax.asp",
|
||||
{ req_info: "initsearch",
|
||||
niveau: init_niveau,
|
||||
parent_key: -1,
|
||||
parent_key: (init_niveau == "B" ? v_budgetproject : -1),
|
||||
init_key: init_key
|
||||
},
|
||||
re_init_soort);
|
||||
@@ -145,6 +146,13 @@ function change_btw()
|
||||
$("#totalvat").closest("tr").next("tr").find("span").text(num2currEditable(incl));
|
||||
}
|
||||
|
||||
function change_vastnummer()
|
||||
{
|
||||
var vastindex = $("#_staticinvoice").val();
|
||||
var vastnummer = $("#_staticinvoice option:selected").text();
|
||||
$("#invoice").val(vastnummer);
|
||||
}
|
||||
|
||||
function fill_rubriekselector(niveau, parent_key, child_key, init_key)
|
||||
{
|
||||
var sel_mode = (typeof cur_mode == "undefined" ? "list" : cur_mode);
|
||||
|
||||
@@ -122,6 +122,7 @@ switch (req_info)
|
||||
+ " AND g.prs_kostensoortgrp_key = s.prs_kostensoortgrp_key"
|
||||
+ " AND s.prs_kostensoort_key = o.prs_kostensoort_key"
|
||||
+ " AND o.mld_uitvoerende_keys = b.prs_bedrijf_key"
|
||||
+ (parent_key != -1 ? " AND p.bgt_project_key = " + parent_key : "") // Een bedrijf kan in meerdere disciplines/projecten gebruikt worden!
|
||||
+ (init_key != -1 ? " AND b.prs_bedrijf_key = " + init_key : "");
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user