TWYN#55252 budgetmutatiedatum bij toevoegen contract moet contractdatum zijn
svn path=/Website/branches/v2018.1/; revision=39717
This commit is contained in:
@@ -470,7 +470,7 @@ obj._is_clone=2 --> nieuwe sub-opdracht
|
||||
var v_budget = getBudget(v_costtype);
|
||||
if (obj.additional == 0)
|
||||
{
|
||||
var v_datamutatie = checkBudgetoverschrijding(obj.id, v_budget, obj.amount, obj.vat);
|
||||
var v_datamutatie = checkBudgetoverschrijding(obj.id, v_budget, obj.amount, obj.vat, obj.startdate);
|
||||
insertMutatie( v_datamutatie, "AO" );
|
||||
}
|
||||
else
|
||||
@@ -479,6 +479,7 @@ obj._is_clone=2 --> nieuwe sub-opdracht
|
||||
, bedrag_exc: -1 * obj.amount
|
||||
, bedrag_btw: -1 * obj.vat
|
||||
, budget_srt_key: v_budget.budget_srt_key
|
||||
, contract_datum: obj.startdate
|
||||
}
|
||||
, "MW"
|
||||
);
|
||||
@@ -544,6 +545,7 @@ obj._is_clone=2 --> nieuwe sub-opdracht
|
||||
, budget_srt_key: v_budget_old.budget_srt_key
|
||||
, bedrag_exc: v_cur_bedrag
|
||||
, bedrag_btw: v_cur_btwbedrag
|
||||
, contract_datum: obj.startdate
|
||||
}
|
||||
, "MW"
|
||||
);
|
||||
@@ -555,6 +557,7 @@ obj._is_clone=2 --> nieuwe sub-opdracht
|
||||
, budget_srt_key: v_budget_new.budget_srt_key
|
||||
, bedrag_exc: -1 * new_amount
|
||||
, bedrag_btw: -1 * new_vat
|
||||
, contract_datum: obj.startdate
|
||||
}
|
||||
, "MW"
|
||||
);
|
||||
@@ -565,7 +568,6 @@ obj._is_clone=2 --> nieuwe sub-opdracht
|
||||
// Controle op overschrijden van budget.
|
||||
if (v_cur_costtype_key != v_costtype)
|
||||
{ // Heeft dit contract ook nog subcontracten
|
||||
|
||||
var sql = "SELECT so.mld_opdr_key"
|
||||
+ " , so.prs_kostensoort_key"
|
||||
+ " , so.mld_opdr_kosten"
|
||||
@@ -589,13 +591,13 @@ obj._is_clone=2 --> nieuwe sub-opdracht
|
||||
var v_opdr_exc = 0;
|
||||
var v_opdr_btw = 0;
|
||||
var v_budget = getBudget(v_cur_costtype_key);
|
||||
var v_datamutatie = checkBudgetoverschrijding(v_cur_opdr_key, v_budget, v_opdr_exc, v_opdr_btw); // contractbedrag van deze kostensoort verwijderen
|
||||
var v_datamutatie = checkBudgetoverschrijding(v_cur_opdr_key, v_budget, v_opdr_exc, v_opdr_btw, obj.startdate); // contractbedrag van deze kostensoort verwijderen
|
||||
insertMutatie( v_datamutatie, "AO" );
|
||||
//
|
||||
v_opdr_exc = (v_cur_opdr_key == key ? new_amount : oRs("mld_opdr_kosten").Value);
|
||||
v_opdr_btw = (v_cur_opdr_key == key ? new_vat : oRs("mld_opdr_kosten_btw").Value);
|
||||
v_budget = getBudget(v_costtype);
|
||||
v_datamutatie = checkBudgetoverschrijding(-1, v_budget, v_opdr_exc, v_opdr_btw); // (aangepast) bedrag aan nieuwe kostensoort toevoegen
|
||||
v_datamutatie = checkBudgetoverschrijding(-1, v_budget, v_opdr_exc, v_opdr_btw, obj.startdate); // (aangepast) bedrag aan nieuwe kostensoort toevoegen
|
||||
insertMutatie( v_datamutatie, "AO" );
|
||||
//
|
||||
// subcontracten veranderen van kostensoort
|
||||
@@ -611,25 +613,26 @@ obj._is_clone=2 --> nieuwe sub-opdracht
|
||||
/* Alleen het huidige contract */
|
||||
// contract verplaatsen naar ander kostensoort
|
||||
var v_budget_old = getBudget(v_cur_costtype_key);
|
||||
var v_datamutatie = checkBudgetoverschrijding(id, v_budget_old, 0, 0); // bedrag van deze kostensoort verwijderen
|
||||
var v_datamutatie = checkBudgetoverschrijding(id, v_budget_old, 0, 0, obj.startdate); // bedrag van deze kostensoort verwijderen
|
||||
insertMutatie( v_datamutatie, "AO" );
|
||||
|
||||
var v_budget_new = getBudget(v_costtype);
|
||||
var v_datamutatie = checkBudgetoverschrijding(-1, v_budget_new, new_amount, new_vat); // (aangepast) bedrag aan nieuwe kostensoort toevoegen
|
||||
var v_datamutatie = checkBudgetoverschrijding(-1, v_budget_new, new_amount, new_vat, obj.startdate); // (aangepast) bedrag aan nieuwe kostensoort toevoegen
|
||||
insertMutatie( v_datamutatie, "AO" );
|
||||
// De opdracht zelf wordt nu aangepast.
|
||||
}
|
||||
else
|
||||
{
|
||||
var v_budget_new = getBudget(v_costtype);
|
||||
var v_datamutatie = checkBudgetoverschrijding(id, v_budget_new, new_amount, new_vat);
|
||||
var v_datamutatie = checkBudgetoverschrijding(id, v_budget_new, new_amount, new_vat, obj.startdate);
|
||||
insertMutatie( v_datamutatie, "AO" );
|
||||
}
|
||||
}
|
||||
|
||||
this.hook_pre_delete = function(params, key)
|
||||
{
|
||||
var sql = "SELECT MAX(o.prs_kostensoort_key) kostensoort"
|
||||
var sql = "SELECT MAX(o.mld_opdr_datumbegin) contractdatum"
|
||||
+ " , MAX(o.prs_kostensoort_key) kostensoort"
|
||||
+ " , MAX(o.mld_opdr_meerwerk) meerwerk"
|
||||
+ " , MAX(mld_opdr_kosten) contract_exc"
|
||||
+ " , MAX(mld_opdr_kosten_btw) contract_btw"
|
||||
@@ -644,6 +647,7 @@ obj._is_clone=2 --> nieuwe sub-opdracht
|
||||
var meerwerk = oRs("meerwerk").Value == 1;
|
||||
var contract_exc = oRs("contract_exc").Value;
|
||||
var contract_btw = oRs("contract_btw").Value;
|
||||
var contract_datum = new Date(oRs("contractdatum").Value);
|
||||
oRs.Close();
|
||||
if (aantal_facturen > 0)
|
||||
abort_with_warning("Verwijder eerst de facturen bij dit contract.");
|
||||
@@ -656,13 +660,14 @@ obj._is_clone=2 --> nieuwe sub-opdracht
|
||||
, bedrag_exc: contract_exc
|
||||
, bedrag_btw: contract_btw
|
||||
, budget_srt_key: v_budget_old.budget_srt_key
|
||||
, contract_datum: contract_datum
|
||||
}
|
||||
, "MW"
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
var v_datamutatie = checkBudgetoverschrijding(key, v_budget_old, 0, 0);
|
||||
var v_datamutatie = checkBudgetoverschrijding(key, v_budget_old, 0, 0, contract_datum);
|
||||
insertMutatie( v_datamutatie, "AO" );
|
||||
}
|
||||
}
|
||||
@@ -742,25 +747,25 @@ obj._is_clone=2 --> nieuwe sub-opdracht
|
||||
|
||||
function checkUniekContractnummer(p_contract_key, p_project_key, p_contractnr, p_volgnr)
|
||||
{
|
||||
var sql = "SELECT count(*) aantal"
|
||||
+ " FROM bgt_project p"
|
||||
+ " , bgt_kostenrubriek r"
|
||||
+ " , prs_kostensoortgrp g"
|
||||
+ " , prs_kostensoort s"
|
||||
+ " , mld_opdr o"
|
||||
+ " WHERE p.bgt_project_key = r.bgt_project_key"
|
||||
+ " AND 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 p.bgt_project_key = " + p_project_key
|
||||
+ " AND o.mld_opdr_ordernr = " + safe.quoted_sql(p_contractnr)
|
||||
+ " AND o.mld_opdr_bedrijfopdr_volgnr = " + p_volgnr
|
||||
+ (p_contract_key != -1 ? " AND o.mld_opdr_key <> " + p_contract_key : "");
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var uniek_contractnr = (oRs("aantal").Value == 0);
|
||||
oRs.Close();
|
||||
if (!uniek_contractnr)
|
||||
abort_with_warning("Contractnummer {0}.{1} bestaat al in dit project.".format(p_contractnr, p_volgnr));
|
||||
var sql = "SELECT count(*) aantal"
|
||||
+ " FROM bgt_project p"
|
||||
+ " , bgt_kostenrubriek r"
|
||||
+ " , prs_kostensoortgrp g"
|
||||
+ " , prs_kostensoort s"
|
||||
+ " , mld_opdr o"
|
||||
+ " WHERE p.bgt_project_key = r.bgt_project_key"
|
||||
+ " AND 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 p.bgt_project_key = " + p_project_key
|
||||
+ " AND o.mld_opdr_ordernr = " + safe.quoted_sql(p_contractnr)
|
||||
+ " AND o.mld_opdr_bedrijfopdr_volgnr = " + p_volgnr
|
||||
+ (p_contract_key != -1 ? " AND o.mld_opdr_key <> " + p_contract_key : "");
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var uniek_contractnr = (oRs("aantal").Value == 0);
|
||||
oRs.Close();
|
||||
if (!uniek_contractnr)
|
||||
abort_with_warning("Contractnummer {0}.{1} bestaat al in dit project.".format(p_contractnr, p_volgnr));
|
||||
}
|
||||
|
||||
function checkAanwezigBudget(p_kostensoort_key)
|
||||
@@ -804,10 +809,19 @@ obj._is_clone=2 --> nieuwe sub-opdracht
|
||||
}
|
||||
}
|
||||
|
||||
function checkBudgetoverschrijding(data_id, data_budget, data_amount, data_vat)
|
||||
function checkBudgetoverschrijding(data_id, data_budget, data_amount, data_vat, contract_datum)
|
||||
{
|
||||
var amount_old_exc = 0;
|
||||
var amount_old_btw = 0;
|
||||
var sql = "SELECT SUM(o.mld_opdr_kosten) amount_total_exc"
|
||||
+ " , SUM(o.mld_opdr_kosten_btw) amount_total_btw"
|
||||
+ " FROM mld_opdr o"
|
||||
+ " WHERE o.prs_kostensoort_key = " + data_budget.costtype_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var amount_sum_exc = oRs("amount_total_exc").Value;
|
||||
var amount_sum_btw = oRs("amount_total_btw").Value;
|
||||
oRs.Close();
|
||||
|
||||
if (data_id > -1)
|
||||
{
|
||||
var sql = "SELECT COALESCE(t.mld_opdr_kosten, 0) amount_old_exc"
|
||||
@@ -820,14 +834,13 @@ obj._is_clone=2 --> nieuwe sub-opdracht
|
||||
amount_old_btw = oRs("amount_old_btw").Value;
|
||||
oRs.Close();
|
||||
}
|
||||
var sql = "SELECT SUM(o.mld_opdr_kosten) amount_total_exc"
|
||||
+ " , SUM(o.mld_opdr_kosten_btw) amount_total_btw"
|
||||
+ " FROM mld_opdr o"
|
||||
+ " WHERE o.prs_kostensoort_key = " + data_budget.costtype_key;
|
||||
var oRs = Oracle.Execute(sql);
|
||||
var amount_sum_exc = oRs("amount_total_exc").Value;
|
||||
var amount_sum_btw = oRs("amount_total_btw").Value;
|
||||
oRs.Close();
|
||||
else
|
||||
{ // Correctie omdat contract al is toegevoegd op de pre_post
|
||||
// en we hier de oude waarde moeten weten.
|
||||
amount_sum_exc = amount_sum_exc - data_amount;
|
||||
amount_sum_btw = amount_sum_btw - data_vat;
|
||||
}
|
||||
|
||||
var sql = "SELECT SUM(m1.bgt_budget_bedrag_van) reserve_exc"
|
||||
+ " , SUM(m1.bgt_budget_btwbedrag_van) reserve_btw"
|
||||
+ " FROM bgt_budget b1"
|
||||
@@ -873,9 +886,11 @@ obj._is_clone=2 --> nieuwe sub-opdracht
|
||||
}
|
||||
|
||||
return { budget_res_key: data_budget.budget_res_key
|
||||
, budget_srt_key: data_budget.budget_srt_key
|
||||
, bedrag_exc: bedrag_exc
|
||||
, bedrag_btw: bedrag_btw
|
||||
, budget_srt_key: data_budget.budget_srt_key
|
||||
, contract_id: data_id
|
||||
, contract_datum: contract_datum
|
||||
};
|
||||
}
|
||||
|
||||
@@ -919,7 +934,7 @@ obj._is_clone=2 --> nieuwe sub-opdracht
|
||||
+ ", bgt_budgetmutatie_reserve"
|
||||
+ ", bgt_budgetmutatie_code"
|
||||
+ ") VALUES"
|
||||
+ "( SYSDATE"
|
||||
+ "( COALESCE(" + data_mutatie.contract_datum.toSQL() + ",SYSDATE)"
|
||||
+ ", " + safe.quoted_sql(mutatie_omschr)
|
||||
+ ", " + user_key
|
||||
+ ", " + data_mutatie.budget_res_key
|
||||
|
||||
Reference in New Issue
Block a user