TWYN#52149 De multi-edit voert nu ook de pre_put hook uit, hiermee is de verwerking van een multi-edit gelijk gesteld aan de verwerking van een wijziging van 1 record

svn path=/Website/branches/v2018.1/; revision=38981
This commit is contained in:
2018-08-29 11:42:51 +00:00
parent f998349f53
commit 4e99719f34
2 changed files with 40 additions and 18 deletions

View File

@@ -460,6 +460,14 @@ obj._is_clone=2 --> nieuwe sub-opdracht
}
}
// Tijdelijke oplossing tbv TWYN#52149
// Uiteindelijk moeten alle multiacties via de reguliere "hook_pre" en "hook_post" gaan (FCLT#54487)
this.hook_pre_multi_put = function(params, obj, key)
{
this.hook_pre_put(params, obj, key);
}
// Deze hook is al multi-ready gemaakt (accepteert een leeg obj)
this.hook_pre_put = function(params, obj, key)
{
// Is de combinatie opdrachtnummer/volgnummer nog steeds uniek?
@@ -469,6 +477,7 @@ obj._is_clone=2 --> nieuwe sub-opdracht
+ " , o.mld_opdr_meerwerk"
+ " , o.mld_opdr_kosten"
+ " , o.mld_opdr_kosten_btw"
+ " , o.mld_opdr_bedrijfopdr_volgnr"
+ " FROM bgt_project p"
+ " , bgt_kostenrubriek r"
+ " , prs_kostensoortgrp g"
@@ -480,20 +489,29 @@ obj._is_clone=2 --> nieuwe sub-opdracht
+ " AND s.prs_kostensoort_key = o.prs_kostensoort_key"
+ " AND o.mld_opdr_key = " + key;
var oRs = Oracle.Execute(sql);
var v_ordernr = oRs("mld_opdr_ordernr").Value;
var v_meerwerk = oRs("mld_opdr_meerwerk").Value;
var v_project_key = oRs("bgt_project_key").Value;
var v_cur_costtype_key = oRs("prs_kostensoort_key").Value;
var v_cur_bedrag = oRs("mld_opdr_kosten").Value;
var v_cur_btwbedrag = oRs("mld_opdr_kosten_btw").Value;
var v_ordernr = oRs("mld_opdr_ordernr").Value;
var v_meerwerk = oRs("mld_opdr_meerwerk").Value;
var v_project_key = oRs("bgt_project_key").Value;
var v_cur_costtype_key = oRs("prs_kostensoort_key").Value;
var v_cur_bedrag = oRs("mld_opdr_kosten").Value;
var v_cur_btwbedrag = oRs("mld_opdr_kosten_btw").Value;
var v_cur_sequence = oRs("mld_opdr_bedrijfopdr_volgnr").Value;
oRs.Close();
checkUniekContractnummer(key, v_project_key, v_ordernr, obj.sequence);
// Sommige waarden worden in multiedit niet meegestuurd, deze hier specifiek setten als zijnde de oude waarde
var id = obj.id || key;
var new_sequence = obj.sequence || v_cur_sequence;
var new_additional = obj.additional || v_meerwerk;
var new_amount = obj.amount || v_cur_bedrag;
var new_vat = obj.vat || v_cur_btwbedrag;
checkUniekContractnummer(key, v_project_key, v_ordernr, new_sequence);
var v_costtype = (obj.costtype ? obj.costtype : v_cur_costtype_key);
checkAanwezigBudget(v_costtype);
// Budget bijwerken als gevolg van meer-minderwerk.
if (obj.additional == 1 || v_meerwerk == 1)
if (new_additional == 1 || v_meerwerk == 1)
{
// Boek eerst het oude bedrag terug.
var v_budget_old = getBudget(v_cur_costtype_key);
@@ -504,14 +522,14 @@ obj._is_clone=2 --> nieuwe sub-opdracht
}
, "MW"
);
if (obj.additional == 1)
if (new_additional == 1)
{
// Boek het nieuwe bedrag naar het (nieuwe) kostensoort.
var v_budget_new = getBudget(v_costtype);
insertMutatie( { budget_res_key: v_budget_new.budget_res_key
, budget_srt_key: v_budget_new.budget_srt_key
, bedrag_exc: -1 * obj.amount
, bedrag_btw: -1 * obj.vat
, bedrag_exc: -1 * new_amount
, bedrag_btw: -1 * new_vat
}
, "MW"
);
@@ -520,7 +538,7 @@ obj._is_clone=2 --> nieuwe sub-opdracht
}
// Controle op overschrijden van budget.
if (obj.additional == 0)
if (new_additional == 0)
{
if (v_cur_costtype_key != v_costtype)
{ // Heeft dit contract ook nog subcontracten
@@ -550,8 +568,8 @@ obj._is_clone=2 --> nieuwe sub-opdracht
var v_datamutatie = checkBudgetoverschrijding(v_cur_opdr_key, v_budget, v_opdr_exc, v_opdr_btw); // contractbedrag van deze kostensoort verwijderen
insertMutatie( v_datamutatie, "AO" );
//
v_opdr_exc = (v_cur_opdr_key == key ? obj.amount : oRs("mld_opdr_kosten").Value);
v_opdr_btw = (v_cur_opdr_key == key ? obj.vat : oRs("mld_opdr_kosten_btw").Value);
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
insertMutatie( v_datamutatie, "AO" );
@@ -570,10 +588,10 @@ obj._is_clone=2 --> nieuwe sub-opdracht
// contract verplaatsen naar ander kostensoort
var v_budget_old = getBudget(v_cur_costtype_key);
var v_datamutatie = checkBudgetoverschrijding(obj.id, v_budget_old, 0, 0); // bedrag van deze kostensoort verwijderen
var v_datamutatie = checkBudgetoverschrijding(id, v_budget_old, 0, 0); // bedrag van deze kostensoort verwijderen
insertMutatie( v_datamutatie, "AO" );
var v_budget_new = getBudget(v_costtype);
var v_datamutatie = checkBudgetoverschrijding(-1, v_budget_new, obj.amount, obj.vat); // (aangepast) bedrag aan nieuwe kostensoort toevoegen
var v_datamutatie = checkBudgetoverschrijding(-1, v_budget_new, new_amount, new_vat); // (aangepast) bedrag aan nieuwe kostensoort toevoegen
insertMutatie( v_datamutatie, "AO" );
// facturen krijgen ook nieuwe kostensoort.
var sql = "UPDATE fin_factuur"
@@ -586,7 +604,7 @@ obj._is_clone=2 --> nieuwe sub-opdracht
else
{
var v_budget_new = getBudget(v_costtype);
var v_datamutatie = checkBudgetoverschrijding(obj.id, v_budget_new, obj.amount, obj.vat);
var v_datamutatie = checkBudgetoverschrijding(id, v_budget_new, new_amount, new_vat);
insertMutatie( v_datamutatie, "AO" );
}
}

View File

@@ -95,7 +95,11 @@ function scaffolding_save(model, scf_params)
var keys = getFParamIntArray("scf_multi_id");
for (var i = 0; i < keys.length; i++)
{
var restresult = model.REST_PUT(params, jsondata, keys [i]);
// Tijdelijke oplossing tbv TWYN#52149
// Uiteindelijk moeten hier de "hook_pre_put" & "hook_post_put" komen (FCLT#54487)
if ("hook_pre_multi_put" in model)
model.hook_pre_multi_put(params, jsondata, keys[i]);
var restresult = model.REST_PUT(params, jsondata, keys[i]);
}
}
else