"individuelles Zahlungsziel (Tage)" in Vorlage "Rechnungen" funktioniert bei mir nicht.
Hallo an Alle,
Wenn ich in der Vorlage "Rechnungen" die Auswahl "....anderes" im Feld Zahlungsziel auswähle, dann erscheint das Feld "individuelles Zahlungsziel (Tage)" und eine vorgegebene Zahl 30, jedoch lässt sich die Zahl nicht verändern.
Ich habe mir die Funktionen angeschaut, leider bin ich noch sehr neu bei Ninox und verstehe noch nicht, wie man Formeln schreibt usw.
Mir ist lediglich aufgefallen, dass bei ""individuelles Zahlungsziel (Tage)"" im Feld "Schreibar wenn" folgendes in einem rötlich gefärbten Kästchen steht
not (Y = 3 or Y = 4 or Y = 5 or Y = 6 or Y = 7)
mit dem Hinweis, dass eine Tabellenspalte nicht gefunden wurde.
Hat jemand eine Idee oder Lösung?
Vielen Dank im Voraus für Eure Hilfe.
Gruß
Kruna
11 Antworten
-
Hallo, entferne die fehlerhafte Zeile einfach komplett aus "Schreibbar wenn", dann lässt sich das Feld ändern.
-
HAllo Copytexter,
vielen Dank für Deine schnelle Antwort.
Stimmt, das Feld lässt sich nun ändern, aber die Zahl wird nicht zum Feld "erwarteter Zahlungseingang" addiert bzw. das Datum bleibt gleich.
Ich habe mir mal die Formel angeschaut, werde daraus aber nicht schlau. Letzendlich funktioniert jeden Auswahl bis auf die letzte.
Wo könnte der Fehler liegen?
let myDate := if 'Zahlungseingang (erwartet)' then
'Zahlungseingang (erwartet)'
else
switch Zahlungsziel do
case 1:
'Datum der Rechnungsstellung' + 7
case 2:
'Datum der Rechnungsstellung' + 14
case 3:
date(year('Datum der Rechnungsstellung'), month('Datum der Rechnungsstellung') + 1, day('Datum der Rechnungsstellung'))
case 4:
date(year('Datum der Rechnungsstellung'), month('Datum der Rechnungsstellung') + 3, day('Datum der Rechnungsstellung'))
case 5:
date(year('Datum der Rechnungsstellung') + 1, month('Datum der Rechnungsstellung'), day('Datum der Rechnungsstellung'))
case 6:
'Datum der Rechnungsstellung' + 'individuelles Zahlungsziel (Tage)'
default:
'Datum der Rechnungsstellung' + 30
end
end;
myDateGruß
Kruna
-
Guten Morgen,
ich denke/hoffe, dass ich nun eine Lösung gefunden habe. Zumindest funktioniert es jetzt so, wie ich es gerne möchte.
Nach langen Versuchen, an der Formel Veränderungen vorzunehmen, habe ich den die ersten Zeilen 'einfach' weggelassen und folgenes steht nun da:
switch Zahlungsziel do
case 1:
Rechnungsdatum + 7
case 2:
Rechnungsdatum + 14
case 3:
date(year(Rechnungsdatum), month(Rechnungsdatum) + 1, day(Rechnungsdatum))
case 4:
date(year(Rechnungsdatum), month(Rechnungsdatum) + 3, day(Rechnungsdatum))
case 5:
date(year(Rechnungsdatum) + 1, month(Rechnungsdatum), day(Rechnungsdatum))
case 6:
Rechnungsdatum + 'individuelles Zahlungsziel (Tage)'
endIch hoffe nur, dass ich durch das Weglassen, nicht irgendein anderes Feld davon betroffen ist und es dann an anderer Stelle irgendwo hakt.
Bis dahin und Gruß
Kruna
-
Hallo Kruna, das Problem scheint folgendes zu sein: Die Vorlage arbeitet mit einem versteckten Datumsfeld namens 'Zahlungseingang erwartet', welches bei Änderung der Auswahl im Feld 'Zahlungsziel' berechnet wird. Für den "case 6" (= "... anderes") heißt das:
'Datum der Rechnungsstellung' + 'individuelles Zahlungsziel (Tage)'
Was im Prinzip ja auch stimmen würde. Problem: Das Feld 'individuelles Zahlungsziel (Tage)' hat in dem Moment noch gar keinen Wert, weil es ja auch erst bei Auswahl "... anderes" eingeblendet wird. Gibt man dort dann einen Wert ein, wird er vom Feld 'Zahlungseingang (erwartet)' nicht berücksichtigt, weil das Trigger-Script "Nach Änderung" nur die Standardfälle 30, 14 und 7 Tage abfragt.
Man könnte diesen Trigger "Nach Änderung" im Feld 'individuelles Zahlungsziel (Tage)' um die Möglichkeit ergänzen, dass keiner der Standardwerte eingegeben wurde und die Berechnung deshalb anhand des eingegebenen Wertes zu erfolgen hat. zum Beispiel mit einem "else" bei der letzten if-Abfrage. Ich markiere die beiden einzufügenden Zeilen mal mit "-->"
if not 'individuelles Zahlungsziel (Tage)' then
Zahlungsziel := 3
else
if 'individuelles Zahlungsziel (Tage)' = 30 then
Zahlungsziel := 3;
'individuelles Zahlungsziel (Tage)' := null
else
if 'individuelles Zahlungsziel (Tage)' = 14 then
Zahlungsziel := 2;
'individuelles Zahlungsziel (Tage)' := null
else
if 'individuelles Zahlungsziel (Tage)' = 7 then
Zahlungsziel := 1;
'individuelles Zahlungsziel (Tage)' := null
--> else
--> 'Zahlungseingang (erwartet)' := 'Datum der Rechnungsstellung' + 'individuelles Zahlungsziel (Tage)'
end
end
end
end -
Hatte sich überschnitten. Teste es halt (auch den Wert für 'individuelles Zahlungsziel (Tage)' mal ändern), und wenn es mit deiner Variante funktioniert, dann hast du dein Ziel ja erreicht.
-
HAllo Copytexter,
vielen, vielen, tausend Dank! Ich habe die beiden ZEilen eingefügt und siehe da, es hat einwandfrei geklappt!
Ich werde mich daher eher an Deine Lösung halten, da wie eben erwähnt, ich nicht weiß was für 'Folgen' das an anderer Stelle haben kann, wenn man 'einfach' irgendetwas an der Formel weglässt.
Ich habe da noch ein anderes Problem mit styled(Text), das bekomme ich einfach nicht hin! Ich habe mehere Beispiele aus anderen Datenbanken versucht, aber leider nicht hinbekommen.
Es wäre toll, wenn as Feld "erwarteter Zahlungseingang" grün ist und, wenn das Datum überschritten ist, das Feld rot wird.
Wie erreich ich das denn?
Gruß
Kruna
-
Dazu könnte man die letzte Zeile, mit der die Variabe "myDate" angezeigt wird, einfach wie folgt ersetzen:
[...]
styled(text(myDate), if myDate <= today() then "Red" else "Green" end)
-
Hallo Copytexter,
Klasse, genau danach habe ich dei ganze Zeit gesucht!!!! Das hat prima funktioniert.
Nochmals tausend Dank für die schnelle Hilfe!
Gruß
Kruna
-
Hallo,
ich habe den Vorgang nicht ganz zuende gedacht.
Nun ist der Kunde im 'Zahlungsverzug'. Ist es denn auch möglich, dass das Feld wieder grün wird, wenn der Kunde bezahlt hat? Ich meine, wenn ich den Status auf 'bezahlt' setze, dann bleibt das Feld rot.
Vielen Dank!
Gruß
Kruna
-
Moin, in der einfachsten Form könnte man den Status einfach als Bedingung hinzufügen:
let myColor := if text(Status) != "bezahlt" and myDate <= today() then "Red" else green" end;
styled(text(myDate), myColor)
Möglicherweise möchte man aber, dass das Feld 'fällig am' nach Zahlung gar keine Farbe hat, damit "Grün" nur die offenen innerhalb des Zahlungsziels zeigt. Dann könnte man es bspw. auch so machen:
let myColor := if text(Status) = "bezahlt" then
"White"
else
if myDate <= today then
"Red"
else
"Green"
end
end;
styled(text(myDate), myColor)
Wobei man statt text(Status) != "bezahlt" auch auf die numerische ID abfragen könnte, aber die wusste ich jetzt natürlich nicht, deshalb bin ich mit text() lieber auf Nummer Sicher gegangen.
-
Moin,
stimmt, daran habe ich garnicht gedacht. Eigentlich dienen die Farben dazu, übersichtlich sehen zu können, welche Vorgänge/Posten noch 'offen' bzw. 'in Bearbeitung! sind.
Wenn die RG bezahlt ist, macht es kein Sinn, wenn sie weiterhin grün bleibt! Daher macht weiß oder eine andere Farbe wirklich eher Sinn. Vielen Dank für diesen Hinweis!
ID=3, aber auch so hat es prima geklappt, nur das bei <=today die Klammer gefehlt hat, bzw. erst dann akzeptiert wurde, als ich sie hinzugefügt habe.
Tausen, tausend DAnk!!!!
Gruß
Kruna
Content aside
- vor 4 JahrenZuletzt aktiv
- 11Antworten
- 1927Ansichten