TWYN#55252 budgetmutatiedatum bij toevoegen contract moet contractdatum zijn

svn path=/Website/branches/v2018.1/; revision=39717
This commit is contained in:
Erik Groener
2018-11-08 10:50:27 +00:00
parent b191328a8c
commit 2812fa87fb

View File

@@ -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