MARX#53135: Default BTW/BTW-verlegd en percentagecheck op G-rekening - params per lev x woco.

svn path=/Website/trunk/; revision=41141
This commit is contained in:
Maykel Geerdink
2019-02-25 13:20:33 +00:00
parent b4e55fb730
commit 3245231df2
4 changed files with 152 additions and 46 deletions

View File

@@ -105,6 +105,17 @@ function model_prs_bedrijf_bedrijf()
"label": L("prs_bedrijf_fee3"),
"typ": "float",
"iscurrency": true
},
"defaultbtw": {
"dbs": "fin_btwtabelwaarde_key",
"label": L("prs_bedrijf_defaultbtw"),
"typ": "key",
"foreign": "fin_btwtabelwaarde"
},
"gptc": {
"dbs": "prs_bedrijf_bedrijf_g_pct",
"label": L("prs_bedrijf_gpct"),
"typ": "float"
}
};

View File

@@ -619,21 +619,22 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
case "O": // Opdracht (Melding)
var opdr_volgnr = fin_factuur.opdr_volgnr;
// Vind informatie van de opdracht
sql = "SELECT COALESCE((SELECT b.prs_bedrijf_naam FROM prs_bedrijf b WHERE b.prs_bedrijf_key = o.mld_uitvoerende_keys),"
sql = "SELECT ab.prs_bedrijf_key opdrachtgever"
+ " , COALESCE((SELECT b.prs_bedrijf_naam FROM prs_bedrijf b WHERE b.prs_bedrijf_key = o.mld_uitvoerende_keys),"
+ " COALESCE((SELECT " + S("prs_pers_string") + " FROM prs_perslid p WHERE p.prs_perslid_key = o.mld_uitvoerende_keys),"
+ " '')) uitvoerende"
+ " , COALESCE ((SELECT 'P' pbtype"
+ " FROM prs_perslid p"
+ " WHERE p.prs_perslid_key = o.mld_uitvoerende_keys),"
+ " (SELECT 'B' pbtype"
+ " FROM prs_bedrijf d"
+ " WHERE d.prs_bedrijf_key = o.mld_uitvoerende_keys)) pbtype"
+ " , COALESCE ((SELECT 1 intern"
+ " FROM prs_perslid p"
+ " WHERE p.prs_perslid_key = o.mld_uitvoerende_keys),"
+ " (SELECT prs_bedrijf_intern intern"
+ " FROM prs_bedrijf d"
+ " WHERE d.prs_bedrijf_key = o.mld_uitvoerende_keys)) intern"
+ " , COALESCE ((SELECT 'P' pbtype"
+ " FROM prs_perslid p"
+ " WHERE p.prs_perslid_key = o.mld_uitvoerende_keys),"
+ " (SELECT 'B' pbtype"
+ " FROM prs_bedrijf d"
+ " WHERE d.prs_bedrijf_key = o.mld_uitvoerende_keys)) pbtype"
+ " , COALESCE ((SELECT 1 intern"
+ " FROM prs_perslid p"
+ " WHERE p.prs_perslid_key = o.mld_uitvoerende_keys),"
+ " (SELECT prs_bedrijf_intern intern"
+ " FROM prs_bedrijf d"
+ " WHERE d.prs_bedrijf_key = o.mld_uitvoerende_keys)) intern"
+ " , COALESCE(o.mld_uitvoerende_keys, -1) uitvoerende_key"
+ " , (SELECT b.prs_bedrijf_opmerking"
+ " FROM prs_bedrijf b"
@@ -690,20 +691,32 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
+ " (SELECT fin_btwtabel_key"
+ " FROM fin_btwtabel"
+ " WHERE fin_btwtabel_verwijder is null and fin_btwtabel_default = 1)) btwtabel_key"
+ " FROM mld_opdr o"
+ " , ins_srtdiscipline sd"
+ " , ins_tab_discipline itd"
+ " , mld_stdmelding std"
+ " , mld_melding m"
+ " , alg_locatie a"
+ " , mld_typeopdr t"
+ " , (SELECT bb.fin_btwtabelwaarde_key"
+ " FROM prs_bedrijf_bedrijf bb"
+ " WHERE bb.prs_bedrijf_key1 = ab.prs_bedrijf_key"
+ " AND bb.prs_bedrijf_key2 = COALESCE(o.mld_uitvoerende_keys, -1)) defaultbtw"
+ " , (SELECT bb.prs_bedrijf_bedrijf_g_pct"
+ " FROM prs_bedrijf_bedrijf bb"
+ " WHERE bb.prs_bedrijf_key1 = ab.prs_bedrijf_key"
+ " AND bb.prs_bedrijf_key2 = COALESCE(o.mld_uitvoerende_keys, -1)) gpercentage"
+ " FROM mld_opdr o"
+ " , ins_srtdiscipline sd"
+ " , ins_tab_discipline itd"
+ " , mld_stdmelding std"
+ " , mld_melding m"
+ " , alg_locatie a"
+ " , mld_typeopdr t"
+ " , prs_perslid p"
+ " , prs_v_afdeling_boom ab"
+ " WHERE sd.ins_srtdiscipline_key(+) = itd.ins_srtdiscipline_key"
+ " AND itd.ins_discipline_key(+) = std.mld_ins_discipline_key"
+ " AND m.mld_melding_key(+) = o.mld_melding_key"
+ " AND m.mld_stdmelding_key = std.mld_stdmelding_key(+)"
+ " AND o.mld_typeopdr_key = t.mld_typeopdr_key"
+ " AND o.mld_opdr_key = " + fin_factuur.mldopdr_key
+ " AND m.mld_alg_locatie_key = a.alg_locatie_key(+)";
+ " AND itd.ins_discipline_key(+) = std.mld_ins_discipline_key"
+ " AND m.mld_melding_key(+) = o.mld_melding_key"
+ " AND m.mld_stdmelding_key = std.mld_stdmelding_key(+)"
+ " AND o.mld_typeopdr_key = t.mld_typeopdr_key"
+ " AND o.mld_opdr_key = " + fin_factuur.mldopdr_key
+ " AND m.mld_alg_locatie_key = a.alg_locatie_key(+)"
+ " AND p.prs_perslid_key = o.prs_perslid_key"
+ " AND p.prs_afdeling_key = ab.prs_afdeling_key";
var oRs = Oracle.Execute(sql);
@@ -714,6 +727,7 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
ref_volgnr: opdr_volgnr,
referentie: (oRs("ins_srtdiscipline_prefix").Value||"") + fin_factuur.mld_key + "/" + opdr_volgnr,
//referentie: oRs("mld_opdr_id").Value,
opdrachtgever: oRs("opdrachtgever").Value,
lev_uit: oRs("uitvoerende").Value,
lev_uit_key: oRs("uitvoerende_key").Value,
lev_uit_type: oRs("pbtype").Value,
@@ -736,7 +750,9 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
opdr_id: oRs("mld_opdr_id").Value,
show_omschr: (oRs("show_omschr").Value == 1),
typeopdr_omschr: oRs("mld_typeopdr_omschrijving").Value,
btwtabel_key: oRs("btwtabel_key").Value
btwtabel_key: oRs("btwtabel_key").Value,
defaultbtw: oRs("defaultbtw").Value,
gpercentage: oRs("gpercentage").Value
};
}
else
@@ -747,9 +763,10 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
break;
case "B": // Bestelling opdracht
// Vind informatie van de bestelling opdracht
sql = "SELECT DISTINCT COALESCE((SELECT b.prs_bedrijf_naam FROM prs_bedrijf b WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key),"
+ " COALESCE((SELECT " + S("prs_pers_string") + " FROM prs_perslid p WHERE p.prs_perslid_key = bo.prs_bedrijf_key),"
+ " '')) uitvoerende"
sql = "SELECT DISTINCT ab.prs_bedrijf_key opdrachtgever"
+ " , COALESCE((SELECT b.prs_bedrijf_naam FROM prs_bedrijf b WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key),"
+ " COALESCE((SELECT " + S("prs_pers_string") + " FROM prs_perslid p WHERE p.prs_perslid_key = bo.prs_bedrijf_key),"
+ " '')) uitvoerende"
+ " , 'B' pbtype"
+ " , (SELECT b.prs_bedrijf_intern"
+ " FROM prs_bedrijf b"
@@ -803,6 +820,14 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
+ " , b.bes_bestelling_levkosten"
+ " , b.bes_bestelling_korting"
+ " , b.bes_bestelling_key"
+ " , (SELECT bb.fin_btwtabelwaarde_key"
+ " FROM prs_bedrijf_bedrijf bb"
+ " WHERE bb.prs_bedrijf_key1 = ab.prs_bedrijf_key"
+ " AND bb.prs_bedrijf_key2 = COALESCE(bo.prs_bedrijf_key, -1)) defaultbtw"
+ " , (SELECT bb.prs_bedrijf_bedrijf_g_pct"
+ " FROM prs_bedrijf_bedrijf bb"
+ " WHERE bb.prs_bedrijf_key1 = ab.prs_bedrijf_key"
+ " AND bb.prs_bedrijf_key2 = COALESCE(bo.prs_bedrijf_key, -1)) gpercentage"
+ " FROM bes_bestelopdr bo"
+ " , bes_bestelopdr_item boi"
+ " , bes_bestelling_item bi"
@@ -810,6 +835,8 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
+ " , bes_srtdeel isd"
+ " , bes_srtgroep isg"
+ " , ins_tab_discipline itd"
+ " , prs_perslid p"
+ " , prs_v_afdeling_boom ab"
+ " WHERE b.bes_bestelling_key = " + fin_factuur.bes_key
+ (fin_factuur.bes_volgnr > 0
? " AND bo.bes_bestelopdr_id = " + safe.quoted_sql(fin_factuur.bes_key + "/" + fin_factuur.bes_volgnr)
@@ -820,6 +847,8 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
+ " AND bi.bes_srtdeel_key = isd.bes_srtdeel_key"
+ " AND isd.bes_srtgroep_key = isg.bes_srtgroep_key"
+ " AND isg.ins_discipline_key = itd.ins_discipline_key"
+ " AND p.prs_perslid_key = b.prs_perslid_key"
+ " AND p.prs_afdeling_key = ab.prs_afdeling_key"
+ " ORDER BY bo.bes_bestelopdr_id"; // Er kan een id zijn met '1234' en '1234/1' als bes_volgnr leeg is. Dan '1234' uitlezen.
var oRs = Oracle.Execute(sql);
@@ -832,6 +861,7 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
ref_type: "B",
ref_volgnr: bo_id[1],
referentie: oRs("bes_bestelopdr_id").Value,
opdrachtgever: oRs("opdrachtgever").Value,
lev_uit: oRs("uitvoerende").Value,
lev_uit_key: oRs("uitvoerende_key").Value,
lev_uit_type: oRs("pbtype").Value,
@@ -853,7 +883,9 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
alg_key: oRs("alg_key").Value,
bes_bestelopdr_id: oRs("bes_bestelopdr_id").Value,
btwtabel_key: oRs("btwtabel_key").Value,
bestelling_key: oRs("bes_bestelling_key").Value
bestelling_key: oRs("bes_bestelling_key").Value,
defaultbtw: oRs("defaultbtw").Value,
gpercentage: oRs("gpercentage").Value
};
oRs.MoveNext();
if (!oRs.eof && result.kostensoort_key != oRs("kostensoort_key").Value)
@@ -873,7 +905,8 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
break;
case "C": // Contract
// Vind informatie van het contract gegeven de contract_key
sql = "SELECT COALESCE((SELECT b.prs_bedrijf_naam FROM prs_bedrijf b WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key),"
sql = "SELECT DISTINCT ab.prs_bedrijf_key opdrachtgever"
+ " , COALESCE((SELECT b.prs_bedrijf_naam FROM prs_bedrijf b WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key),"
+ " (SELECT " + S("prs_pers_string") + " FROM prs_perslid p WHERE p.prs_perslid_key = c.cnt_prs_bedrijf_key),"
+ " (SELECT " + S("prs_dep_string") + " FROM prs_v_afdeling d WHERE d.prs_afdeling_key = c.cnt_prs_afdeling_key),"
+ " (SELECT " + S("prs_pers_string") + " FROM prs_perslid p WHERE p.prs_perslid_key = c.cnt_prs_perslid_key),"
@@ -939,8 +972,36 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
+ " , (SELECT dp.cnt_srtcontract_type"
+ " FROM cnt_disc_params dp"
+ " WHERE dp.cnt_ins_discipline_key = c.ins_discipline_key) cnt_srtcontract_typ"
+ " , (SELECT bb.fin_btwtabelwaarde_key"
+ " FROM prs_bedrijf_bedrijf bb"
+ " WHERE bb.prs_bedrijf_key1 = ab.prs_bedrijf_key"
+ " AND bb.prs_bedrijf_key2 = COALESCE(c.cnt_prs_bedrijf_key"
+ " , (SELECT ab1.prs_bedrijf_key"
+ " FROM prs_v_afdeling_boom ab1"
+ " WHERE ab1.prs_afdeling_key = c.cnt_prs_afdeling_key)"
+ " , (SELECT ab.prs_bedrijf_key"
+ " FROM prs_perslid p,"
+ " prs_v_afdeling_boom ab"
+ " WHERE p.prs_afdeling_key = ab.prs_afdeling_key"
+ " AND p.prs_perslid_key = c.cnt_prs_perslid_key)"
+ " , -1)) defaultbtw"
+ " , (SELECT bb.prs_bedrijf_bedrijf_g_pct"
+ " FROM prs_bedrijf_bedrijf bb"
+ " WHERE bb.prs_bedrijf_key1 = ab.prs_bedrijf_key"
+ " AND bb.prs_bedrijf_key2 = COALESCE(c.cnt_prs_bedrijf_key"
+ " , (SELECT ab1.prs_bedrijf_key"
+ " FROM prs_v_afdeling_boom ab1"
+ " WHERE ab1.prs_afdeling_key = c.cnt_prs_afdeling_key)"
+ " , (SELECT ab.prs_bedrijf_key"
+ " FROM prs_perslid p,"
+ " prs_v_afdeling_boom ab"
+ " WHERE p.prs_afdeling_key = ab.prs_afdeling_key"
+ " AND p.prs_perslid_key = c.cnt_prs_perslid_key)"
+ " , -1)) gpercentage"
+ " FROM cnt_v_aanwezigcontract c"
+ " WHERE c.cnt_contract_key = " + fin_factuur.cnt_key;
+ " , prs_v_afdeling_boom ab"
+ " WHERE ab.prs_afdeling_key = c.prs_afdeling_key_eig"
+ " AND c.cnt_contract_key = " + fin_factuur.cnt_key;
var oRs = Oracle.Execute(sql);
@@ -950,6 +1011,7 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
ref_type: "C",
ref_volgnr: oRs("cnt_versie").Value,
referentie: 'C' + fin_factuur.cnt_nr+(oRs("cnt_versie").Value ? '.'+oRs("cnt_versie").Value:''),
opdrachtgever: oRs("opdrachtgever").Value,
lev_uit: oRs("uitvoerende").Value,
lev_uit_key: oRs("uitvoerende_key").Value,
lev_uit_type: oRs("pbtype").Value,
@@ -968,7 +1030,9 @@ fin = { func_enabled_factuur: // Wat mag ik zoal op deze specifieke factuur?
kostenplaats_key: oRs("prs_kostenplaats_key").Value,
btwtabel_key: oRs("btwtabel_key").Value,
disc_key: oRs("ins_discipline_key").Value,
srtcontract_type: oRs("cnt_srtcontract_typ").Value
srtcontract_type: oRs("cnt_srtcontract_typ").Value,
defaultbtw: oRs("defaultbtw").Value,
gpercentage: oRs("gpercentage").Value
};
}
else

View File

@@ -154,6 +154,7 @@ oRs.Close();
var fin_kostensoort_verplicht = <%=S("fin_kostensoort_verplicht")%>;
var asContactpersoon = <%=asContactpersoon? 1 : 0%> == 1;
var cnt_srttype_rental = <%=S("cnt_srttype_rental")%>;
var fin_factuur_verlegdmode = <%=S("fin_factuur_verlegdmode")%>;
$(function()
{
@@ -281,6 +282,7 @@ oRs.Close();
<input type="hidden" id="loc_code" name="loc_code" value="<%=ref_info.loc_code? ref_info.loc_code : ""%>">
<input type="hidden" name="copyfin_key" value="<%=copy? fin_copy_key : '-1'%>">
<input type="hidden" id="referentienr_old" name="referentienr_old" value="<%=fin_key > 0 && ref_info? ref_info.referentie : ""%>">
<input type="hidden" id="gpercentage" name="gpercentage" value="<%=fin_key > 0 && ref_info? ref_info.gpercentage : ""%>">
<% BLOCK_START("finInfo", (fin_key > 0? L("lcl_fin_info") + " " + fin_key : L("lcl_fin_new_invoice")));

View File

@@ -6,14 +6,6 @@
*/
var dateInputs = new Object();
function checkFactuurExistCallback(json, textStatus)
{
var label = L("lcl_fin_invoice_number") + " " + json.fac_nr + L("lcl_fin_is_al") + json.aantal + L("lcl_fin_register_total") + currency_pref + num2currEditable(parseFloat(json.totaalbedrag)) + ". " + L("lcl_fin_toch_doorgaan");
FcltMgr.confirm(label, { autoconfirm: json.aantal <= 0, fncancel: function() { iface.button.enable("btn_fin_submit"); } }, function() {
document.forms.u2.submit();
});
}
function checkInput()
{
var filled_lines = 0;
@@ -87,6 +79,38 @@ function checkVerlegd()
return valid;
}
function checkGBedrag()
{
if (fin_factuur_verlegdmode & 1 == 1)
{
var gbedrag = $("#fingbedrag").val();
if (gbedrag == "")
gbedrag = 0;
else
gbedrag = parseFloat(gbedrag);
var gpercentage = $("#gpercentage").val();
var totaalbedrag = myParseFloat($("#totalBTW_txt").html());
FcltMgr.confirm(L("lcl_fin_gbedrag_perc_validate").format(currency_pref + num2curr(gbedrag) + currency_suff, gpercentage + "%"),
{ autoconfirm: gbedrag == (totaalbedrag * (gpercentage / 100)),
fncancel: function() { iface.button.enable("btn_fin_submit"); } },
function()
{
document.forms.u2.submit();
});
}
else
document.forms.u2.submit();
}
function checkFactuurExistCallback(json, textStatus)
{
var label = L("lcl_fin_invoice_number") + " " + json.fac_nr + L("lcl_fin_is_al") + json.aantal + L("lcl_fin_register_total") + currency_pref + num2currEditable(parseFloat(json.totaalbedrag)) + ". " + L("lcl_fin_toch_doorgaan");
FcltMgr.confirm(label, { autoconfirm: json.aantal <= 0, fncancel: function() { iface.button.enable("btn_fin_submit"); } }, function() {
checkGBedrag();
});
}
function fin_submit()
{
document.activeElement.blur(); // trigger laatste onChanges
@@ -210,16 +234,21 @@ function FcltGetRefInfoCallback(json)
// Hoeveel factuurregels zijn er?
var count = $("table#sel_items input[id^=sum]").length;
// Als er door de referenties verschillende btw tabellen wordt gebruikt terwijl er factuurregels zijn, dan wijziging niet accepteren en melding geven
// Als er door de referenties verschillende btw tabellen worden gebruikt terwijl er factuurregels zijn, dan wijziging niet accepteren en melding geven.
if (count > 0 && window.btwtabel_key != json.btwtabel_key)
{
FcltMgr.alert(L("lcl_fin_ref_btw_diff"));
$("#referentienr").val($("#referentienr_old").val());
}
else
{
// T.b.v. de mogelijkheid om oude waarde weer terug te zetten bij ongeldige referentie
{ // Referentie is geldig bevonden. Gegevens nu invullen.
// T.b.v. de mogelijkheid om oude waarde weer terug te zetten bij ongeldige referentie.
$("#referentienr_old").val($("#referentienr").val().toUpperCase());
// Het percentage G-bedrag van de opdrachtgever-opdrachtnemer/uitvoerder (prs_bedrijf_bedrijf) relatie bijhouden.
$("#gpercentage").val(json.gpercentage);
// Zet alle BTW selectboxen op de waarde json.defaultbtw.
$("select[name^=BTW]").val(json.defaultbtw);
$("#fin_type").val(json.ref_type);
$("#lev_uit").val(json.lev_uit);
@@ -517,7 +546,7 @@ function setPrice(obj)
if (sum == "")
sum = 0;
else
myParseFloat(sum);
sum = myParseFloat(sum);
for (var j = 0; j < window.btwtabel.length; j++)
{