Willkommen im kivitendo Forum! Hier erweitern und teilen AnwenderInnen und EntwicklerInnen ihr Wissen.

Teste kivitendo!

kivitendo Demo

kivitendo Demo mit Schweizer Kontenplan und neuem Layout

Geld allein macht nicht glücklich - benutzt kivitendo!

0 Punkte

Hallo,

ich möchte, dass bei Kivitendo beim Erstellen eines neuen Angebotes das Feld „Angebot gültig bis“ nicht bis zum nächsten Tag, sondern genau einen Monat steht. Bisher muss ich das manuell ändern.

Hat jemand einen Tipp, wie ich das machen könnte?

Viele Grüße, Nooster

Gefragt von (80 Punkte)

1 Antwort

+1 Punkt

Derzeit wird automatisch der nächste Tag, bzw. der nächte Montag, wenn am Ende der Woche gebucht wird, ausgewählt. Das kann man auch nicht konfigurieren, sondern müßte den Code lokal anpassen.

Die betreffende Stelle steht in SL/OE.pm in der Funktion retrieve.

my $wday         = (localtime(time))[6];
my $next_workday = $wday == 5 ? 3 : $wday == 6 ? 2 : 1;
$query_add       = qq|, current_date AS transdate, date(current_date + interval '${next_workday} days') AS reqdate|; 

Hier kann man z.B. einfach die Variable $next_workday erhöhen:

my $wday         = (localtime(time))[6];
my $next_workday = $wday == 5 ? 3 : $wday == 6 ? 2 : 1;
$next_workday += 28;   # neu
$query_add       = qq|, current_date AS transdate, date(current_date + interval '${next_workday} days') AS reqdate|; 

Wenn man bei einem Vielfachen von 7 bleibt passt das auch mit dem Wochenanfang, ansonsten kann man sich das an der Stelle natürlich beliebig umschreiben.

Beantwortet von (16.4k Punkte)

Danke für die Antwort!

Könnte man nicht eine neue Variable einführen, z.B. nextworkmonth, und diese folgendermaßen definieren?

my $wday         = (localtime(time))[6];
my $next_workday = $wday == 5 ? 3 : $wday == 6 ? 2 : 1;
my $next_workmonth = $next_workday + 28;   

Folgefrage: Wenn das so ginge, wie müsste ich diese Variable einfügen, damit sie standardmäßig bei Angeboten verwendet wird?

Das ginge auch, dann müßte man in der nächsten Zeile mit dem SQL-Befehl eben das
${next_workday} durch ${next_workmonth} ersetzen.

Die Wartbarkeit bei zukünftigen Updates wäre für solch eine Individualanpassung in meinem Fall etwas einfacher, da ich nur eine Zeile hinzufüge statt noch eine bestehende Zeile zu ändern, die Codeverständlichkeit des Codes wäre mit deiner Variante aber klarer.

Am Saubersten wäre es natürlich, die Anzahl der Tage konfigurierbar zu machen und die Variable in die Mandantenkonfiguration aufzunehmen, dann könnte das auch so in den Standard.

Nur zwei Hinweise:

  1. Mit dem obigen Code ist die Angebotsgültigkeit 29 Tage, nicht die gewünschten 1 Monat später. Wobei der Monat etwas aufwändiger zu realisieren ist.

  2. Und bei neuen Lieferantenaufträgen oder Aufträgen selber wird auch dieselbe Zeitspanne eingefügt.

viele Grüße,
Klaus

...