362 lines
13 KiB
JavaScript
362 lines
13 KiB
JavaScript
/*
|
|
$Revision: 16 $
|
|
$Modtime: 27-07-11 11:57 $
|
|
|
|
File: fin_edit_factuur.js
|
|
*/
|
|
|
|
function checkFactuurExistCallback(json, textStatus)
|
|
{
|
|
if (textStatus == "success")
|
|
{
|
|
if (json.aantal > 0)
|
|
if (confirm(LCL.fin.invoice_number + " " + json.fac_nr + LCL.fin.is_al + json.aantal + LCL.fin.register_total + json.totaal + ". " + LCL.fin.toch_doorgaan))
|
|
document.forms.u2.submit();
|
|
else
|
|
return false;
|
|
else
|
|
document.forms.u2.submit();
|
|
}
|
|
else
|
|
alert("checkFactuurExistCallback: " + textStatus);
|
|
}
|
|
|
|
function checkInput()
|
|
{
|
|
var filled_lines = 0;
|
|
var blank_lines = 0;
|
|
for (i = 0; i < selectedItems.length; i++) //i.v.m. prototype.js
|
|
{
|
|
if (selectedItems[i] != null)
|
|
{
|
|
if (parseFloat(document.all["sum" + i].value.replace(',', '.')) != 0)
|
|
filled_lines++;
|
|
else
|
|
blank_lines++;
|
|
}
|
|
}
|
|
|
|
if (!filled_lines)
|
|
{ // Er zijn geen volledig ingevulde factuurregels.
|
|
if (blank_lines == 0)
|
|
AddItem();
|
|
alert(LCL.fin.no_complete_invoice_rows);
|
|
return false;
|
|
}
|
|
|
|
// Controle op het factuurnummer (van de leverancier) of dat dan van dezelfde leverancier(!) (debiteurnummer) al bestaat,
|
|
// Eigen factuurnummer meegeven zodat deze niet meegnomen wordt in de check
|
|
// Melding: "Factuurnr 1234 is al N keer geregistreerd met een totaalbedrag van 99999. Toch doorgaan?", bij Cancel keer je terug in het scherm
|
|
$.getJSON("check_factuur_exist.asp",
|
|
{ fac_nr: $("#finnr").val(),
|
|
deb_nr: $("#findebtor").val(),
|
|
fin_key: $("#fin_key").val() },
|
|
checkFactuurExistCallback);
|
|
}
|
|
|
|
function fin_submit()
|
|
{
|
|
document.activeElement.blur(); // trigger laatste onChanges
|
|
|
|
// Standaard checks op verplichte velden, datum formaat, numeriek en float formaat, currency formaat.
|
|
if (!validateForm("u2"))
|
|
return false;
|
|
|
|
// Formulier specifieke checks, met eventuele submit
|
|
checkInput();
|
|
}
|
|
|
|
function fin_cancel()
|
|
{
|
|
FcltMgr.closeDetail(window, { cancel: true } );
|
|
}
|
|
|
|
function devidePeriodChanged()
|
|
{
|
|
if (checkDP(false))
|
|
{
|
|
var finboekm = $("#finboekm").val();
|
|
finboekm_jaar = finboekm.substr(0,4);
|
|
// Text bij inputbox finboekm_jaar nog aanpassen
|
|
$('label[for="gefactureerd_jaar"]').html(LCL.fin.invoiced_year + " " + finboekm_jaar + ": ");
|
|
referenceChanged();
|
|
}
|
|
else
|
|
{
|
|
// Text bij inputbox finboekm_jaar nog aanpassen
|
|
$('label[for="gefactureerd_jaar"]').html(LCL.fin.invoiced_year + " " + LCL.fin.year + ": ");
|
|
$("#gefactureerd_jaar").val(LCL.fin.unknown);
|
|
}
|
|
}
|
|
|
|
function checkDP(show)
|
|
{
|
|
var valid = true;
|
|
var value = $("#finboekm").val();
|
|
var err = LCL.fin.invalid_kenmerk_format;
|
|
if (value != '')
|
|
{
|
|
valid = checkDividePeriod(value);
|
|
if (!valid)
|
|
err = LCL.fin.kenmerk_out_range;
|
|
}
|
|
if (show && !valid)
|
|
{
|
|
alert(err);
|
|
$("#finboekm").focus();
|
|
}
|
|
return valid;
|
|
}
|
|
|
|
function clearRefDetails()
|
|
{
|
|
$("#reflink").val("");
|
|
$('#reflink').unbind('click');
|
|
$("#lev_uit").val("");
|
|
$('#lev_uit').unbind('click');
|
|
|
|
$("#status").val("");
|
|
$("#startdate").val("");
|
|
$("#enddate").val("");
|
|
$("#totbedrag").val("");
|
|
$("#gefactureerd").val("");
|
|
$("#gefactureerd_jaar").val("");
|
|
$("#opdr_omschr").html("");
|
|
$("#tr_opdr_omschr").css("display", "none");
|
|
$("#loc_omschr").html("");
|
|
$("#tr_loc_omschr").css("display", "none");
|
|
$("#refopdrtype").val("");
|
|
$("#tr_refopdrtype").css("display", "none");
|
|
$("#fincnt").val("");
|
|
$("#finsom").val("");
|
|
FcltMgr.resized(window);
|
|
}
|
|
|
|
function clearExtInvDetails()
|
|
{
|
|
$("#fldfincnt").val("");
|
|
$("#fldfinsom").val("");
|
|
FcltMgr.resized(window);
|
|
}
|
|
|
|
function FcltGetRefInfoCallback(json, textStatus)
|
|
{
|
|
if (textStatus == "success")
|
|
{
|
|
if (json.message)
|
|
{
|
|
alert(json.message);
|
|
$("#referentienr").val($("#referentienr_old").val());
|
|
referenceChanged(true); // Geef de juiste referentiegegevens weer goed weer. Oude waarde is zeker een goede waarde.
|
|
}
|
|
else if (fin_enable_kostensoort == 0 && fin_kostensoort_verplicht == 1 && !json.kostensoort_key)
|
|
{ // Kostensoort is hidden maar wel verplicht. Referentie heeft geen geldige kostensoort die dan verderop kan worden ingevuld
|
|
alert(LCL.fin.invalid_ref_ks);
|
|
$("#referentienr").val($("#referentienr_old").val());
|
|
referenceChanged(true); // Geef de juiste referentiegegevens weer goed weer. Oude waarde is zeker een goede waarde.
|
|
}
|
|
else
|
|
{
|
|
if (json.ref_type)
|
|
{
|
|
// Hoeveel factuurregels zijn er?
|
|
var count = 0;
|
|
for (i in selectedItems)
|
|
{
|
|
if (selectedItems[i] != null)
|
|
count++;
|
|
}
|
|
|
|
// Als er door de referenties verschillende btw tabellen wordt gebruikt terwijl er factuurregels zijn, dan wijziging niet accepteren en melding geven
|
|
if (count > 0 && $("#btwtabel_key").val() != json.btwtabel_key)
|
|
{
|
|
alert(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
|
|
$("#referentienr_old").val($("#referentienr").val().toUpperCase());
|
|
|
|
$("#fin_type").val(json.ref_type);
|
|
$("#lev_uit").val(json.lev_uit);
|
|
if (canReqRelDetails)
|
|
{
|
|
$('#lev_uit').click(function()
|
|
{
|
|
refurl = "Appl/PRS/prs_show_bedrijf.asp?bedrijf_key=" + json.lev_uit_key; // TODO: Welke urole moet meegegeven worden fo/bo. Nu is fo gekozen
|
|
FcltMgr.openDetail(refurl, json.lev_uit);
|
|
}
|
|
);
|
|
}
|
|
$("#status").val(json.status);
|
|
$("#startdate").val(json.startdatum);
|
|
$("#enddate").val(json.einddatum);
|
|
if (fin_defaultboekmaand == 2 && json.refchanged)
|
|
{ // Boekmaand invullen adhv bestel/opdrachtdatum
|
|
$("#finboekm").val(json.periode); // Tonen opdrachtdatum
|
|
}
|
|
|
|
if (json.totbedrag == "")
|
|
$("#totbedrag").val("");
|
|
else
|
|
$("#totbedrag").val(currency_pref + num2currEditable(parseFloat(json.totbedrag)) + currency_suff);
|
|
|
|
if (json.gefactureerd == "")
|
|
$("#gefactureerd").val("");
|
|
else
|
|
$("#gefactureerd").val(currency_pref + num2currEditable(parseFloat(json.gefactureerd)) + currency_suff);
|
|
|
|
if (json.gefactureerd_jaar == "")
|
|
$("#gefactureerd_jaar").val("");
|
|
else
|
|
$("#gefactureerd_jaar").val(currency_pref + num2currEditable(parseFloat(json.gefactureerd_jaar)) + currency_suff);
|
|
|
|
if (json.show_omschr)
|
|
{
|
|
// De opdracht omschrijving niet in een <textarea> omdat dit veld bij contact en bestelling referenties niet zichtbaar is
|
|
// Dit omdat de functie $('textarea').autogrow() dan de foutmelding "Invalid argument." geeft. (standaard jquery component)
|
|
//$("#opdr_omschr").html('<textarea class="fldtxt" readonly>' + json.opdr_omschr + "</textarea>");
|
|
//$('textarea').autogrow(); // Zet de textarea van de opdracht omschrijving weer helemaal open, zodat alle text zichtbaar is
|
|
$("#opdr_omschr").html(json.opdr_omschr);
|
|
$("#tr_opdr_omschr").css("display", "block");
|
|
}
|
|
else
|
|
{
|
|
$("#opdr_omschr").val("");
|
|
$("#tr_opdr_omschr").css("display", "none");
|
|
}
|
|
|
|
if (json.show_loc)
|
|
{
|
|
var loc_geg_string = "";
|
|
for (i = 0; i < json.loc_geg.length; i++)
|
|
{
|
|
loc_geg_string += (i > 0? ",<br>" : "") + json.loc_geg[i].loc_desc;
|
|
}
|
|
$("#loc_omschr").html(loc_geg_string);
|
|
$("#tr_loc_omschr").css("display", "block");
|
|
} else {
|
|
$("#loc_omschr").html("");
|
|
$("#tr_loc_omschr").css("display", "none");
|
|
}
|
|
|
|
if (json.refchanged)
|
|
$("#fincostsrt").val(json.kostensoort_key);
|
|
|
|
$('#reflink').val(json.referentie)
|
|
if ($("#referentienr").val() != json.referentie)
|
|
$("#referentienr").val(json.referentie);
|
|
switch (json.ref_type)
|
|
{
|
|
case "O": // Opdracht (Melding)
|
|
$('label[for="reflink"]').html(LCL.shared.order);
|
|
$("#refopdrtype").val(json.typeopdr_omschr);
|
|
$("#tr_refopdrtype").css("display", "block");
|
|
//$('label[for="enddate"]').html(LCL.fin.end_date_plan + ":");
|
|
$("#loc_code").val(json.loc_code);
|
|
// Als de default kostenplaats is geselecteerd of bij nieuwe facturen dan locatiecode invullen bij de factuurregels.
|
|
if (json.refchanged)
|
|
updateLocation();
|
|
if (canReqRefDetails)
|
|
{
|
|
$('#reflink').click(function()
|
|
{
|
|
refurl = "Appl/MLD/mld_opdr.asp?urole=fo&opdr_key=" + json.ref_key; // TODO: Welke urole moet meegegeven worden fo/bo. Nu is fo gekozen
|
|
FcltMgr.openDetail(refurl, LCL.shared.order + " " + json.referentie);
|
|
}
|
|
);
|
|
}
|
|
break;
|
|
case "B": // Bestelling opdracht
|
|
$('label[for="reflink"]').html(LCL.fin.bestelopdracht);
|
|
$("#tr_refopdrtype").css("display", "none");
|
|
//$('label[for="enddate"]').html(LCL.fin.delivery_date + ":");
|
|
$("#loc_code").val(json.loc_code);
|
|
// Als de default kostenplaats is geselecteerd of bij nieuwe facturen dan locatiecode invullen bij de factuurregels.
|
|
if (json.refchanged)
|
|
updateLocation();
|
|
if (canReqRefDetails)
|
|
{
|
|
$('#reflink').click(function()
|
|
{
|
|
refurl = "Appl/BES/bes_opdr.asp?urole=fo&ordernr=" + json.ref_key // TODO: Welke urole moet meegegeven worden fo/bo. Nu is fo gekozen
|
|
FcltMgr.openDetail(refurl, LCL.fin.bestelopdracht + " " + bes_bestelling_prefix + json.referentie);
|
|
}
|
|
);
|
|
}
|
|
break;
|
|
case "C": // Contract
|
|
$('label[for="reflink"]').html(LCL.fin.contract);
|
|
$("#tr_refopdrtype").css("display", "none");
|
|
//$('label[for="enddate"]').html(LCL.fin.end_date + ":");
|
|
$("#loc_code").val("");
|
|
if (canReqRefDetails)
|
|
{
|
|
$('#reflink').click(function()
|
|
{
|
|
refurl = "Appl/CNT/cnt_contract.asp?urole=fo&cnt_key=" + json.ref_key // TODO: Welke urole moet meegegeven worden fo/bo. Nu is fo gekozen
|
|
FcltMgr.openDetail(refurl, LCL.fin.contract + " " + json.referentie);
|
|
}
|
|
);
|
|
}
|
|
break;
|
|
}
|
|
|
|
if (json.aantalfacturen > 0)
|
|
{
|
|
$("#fincnt").val(json.aantalfacturen);
|
|
$("#finsom").val(currency_pref + json.totaalbedrag + currency_suff);
|
|
FcltMgr.resized(window);
|
|
}
|
|
else
|
|
{
|
|
$("#fincnt").val(json.aantalfacturen);
|
|
$("#finsom").val(currency_pref + json.totaalbedrag + currency_suff);
|
|
}
|
|
|
|
$("#btwtabel_key").val(json.btwtabel_key);
|
|
btwtabel = json.btwtabel;
|
|
|
|
if (count == 0 && json.refchanged && fin_key == -1)
|
|
{
|
|
AddItem();
|
|
$("#show_calendar").focus();
|
|
}
|
|
|
|
FcltMgr.resized(window);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
alert("FcltGetRefInfoCallback: " + textStatus);
|
|
}
|
|
|
|
function referenceChanged(refchanged)
|
|
{
|
|
if ($("#referentienr").val() != "")
|
|
$.post("get_ref_info_ajax.asp",
|
|
{ ref_nr: $("#referentienr").val(),
|
|
fin_boekm_jaar: $("#finboekm").val().substr(0, 4),
|
|
refchanged: (refchanged && (default_costsrt_selected || fin_key == -1)? 1: 0),
|
|
fin_factuur_nr: $("#finnr").val()
|
|
},
|
|
FcltGetRefInfoCallback,
|
|
"json");
|
|
else
|
|
// T.b.v. de modgelijk om oude waarde weer terug te zetten bij ongeldige referentie
|
|
$("#referentienr_old").val("");
|
|
|
|
}
|
|
|
|
function updateLocation()
|
|
{
|
|
for (var i = 0; i <= rowIndex; i++)
|
|
{
|
|
if ($("#ref" + i).length)
|
|
$("#ref" + i).val($("#loc_code").val());
|
|
}
|
|
}
|
|
|