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:
@@ -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" );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user