0

Umsatz in % zum Vorjahr berechnen

HAllo an Alle,

ich komme irgendwie nicht weiter und hoffe, dass mir jemand helfen kann.

Folgende Situation:

Ich möchte gerne Umsatz in Prozent pro Jahr bzw zum Vorjahr ausrechnen. Welche Formel ich zur Berechnung brauche, das weiß ich, zB:

((Aktuelles Jahr 2019 - Vorjahr 2018) / Vorjahr 2018) *100

zB ((16.700 - 13.800) / 13.800) *100 = 21,01%

Hier ein Bild zur näheren Beschreibung:

 

Im Brechnungsfeld Umsatz Netto habe ich folgenden Code für ein Jahr bzw 'aktuelles jahr':

let my := this;
sum((select '4. Rechnungen')[text(Status) = "bezahlt"]['Status am' >= my.vom and 'Status am' <= my.bis].'Netto Gesamt:')

Mit Jahr+

let jahr := year(vom);
jahr := jahr + 1;
vom := "01.01." + jahr;
bis := "31.12." + jahr

und Jahr-

let jahr := year(vom);
jahr := jahr - 1;
vom := "01.01." + jahr;
bis := "31.12." + jahr

kann ich den Umsatz des jeweiligen Vorjahres bzw nächsten Jahres abrufen.

 

Wie komme ich denn nun an die Zahl bzw Code für das Vorjahr?

Ich habe 'alles' mögliche versucht (mit -1 oder jahr usw.) und hänge nun fest.

 

Vielen Dank schon mal für Eure Hilfe.

 

Gruß Kruna

6 Antworten

null
    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hi Kruna. Wenn Du mit Datum rechnen willst, bietet sich die date() Funktion an. Damit kannst Du isoliert Jahre, Monate und Tage berechnen. Teste mal das. Mirko

    Jahr+

    vom := date(year(vom) + 1, 1, 1);
    bis := date(year(vom) + 1, 12, 31)
    

    Jahr-

    vom := date(year(vom) - 1, 1, 1);
    bis := date(year(vom) - 1, 12, 31)
    
    • Kruna
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hi Mirko,

    vielen Dank für Deine Antwort und entschuldige, aber ich habe das nicht ganz verstanden. Ich habe mich wahrscheinlich auch wieder unverständlich ausgedrückt.

    Die Buttons sind ok und tun was sie sollen. Als ich Dein Script eingegeben habe, war die Anzeige zB vom 1.1.2020 bis 31.12.2022, also 2 Jahre. Es sollte aber immer nur ein Jahr angezeigt werden, immer vom 1.1. eines Jahres bis zum 31.12. des jeweiligen Jahres.

    Ich versuche das besser zu erklären und entschuldige, dass ich mich ggf. wiederhole.

    Mit (Code steht im Berechnungsfeld Umsätze Netto)

    let my := this;
    sum((select '4. Rechnungen')[text(Status) = "bezahlt"]['Status am' >= my.vom and 'Status am' <= my.bis].'Netto Gesamt:')

    wird der Umsatz des Jahres angezeigt. Wie oben im Beispiel genannt:

    Im Jahr2019 steht  - vom 1.1.2019 bis 31.12.2019 im Berechnungsfeld Umsätze 16.700. Wenn ich auf Jahr- klicke, dann wird mir angezeigt - vom 1.1.2018 bis 31.12.2018 und im Berechnungsfeld Umsätze Netto steht dann 13.800. So kann ich jedes Jahr 'durchklicken' und der Jahresumsatz wird angezeigt.

    Nun möchte ich das Prozentual ausrechnen - ((A - B) / A )* 100 und habe ich folgende Überlegung gehabt:

    let my := this;
    let aktuellesJahr: sum((select '4. Rechnungen')[text(Status) = "bezahlt"]['Status am' >= my.vom and 'Status am' <= my.bis].'Netto Gesamt:');

    let vorJahr: sum((select '4. Rechnungen')[text(Status) = "bezahlt"]['Status am' >= my.vom -1 and 'Status am' <= my.bis -1].'Netto Gesamt:');

    ((aktuellesJahr - vorJahr) / vorJahr) *100

     

    -1 (soll das Jahr davor 'ansprechen') ist aber (total) falsch oder an der falschen Stelle?!

    +1 müsste vllt auch irgendwo, irgendwie im Skript vorkommen, wenn ich zB auf Jahr+ klicke oder denke ich nun um zehn Ecken?

    Vor lauter Grübelei, kann ich gerade nicht mal mehr 1+1 ausrechnen.

     

    Gruß

    Kruna

    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hi Kruna. Entschuldigungen sind nicht nötig. Wir geben uns ja beide Mühe - mehr geht nicht. 

    Natürlich kenne ich Deine Felder nicht, kann also nur improvisieren. Mir ist noch nicht klar, was die prozentuale Angabe sagen soll. Prozentual bezogen auf das Vorjahr? Also, wieviel Prozent im laufenden Jahr mehr oder weniger? Wenn Du die Summe eines Jahres berechnen willst, dann würde ja folgendes reichen.

    sum((select '4. Rechnungen')[text(Status) = "bezahlt" and year('Status am') = year(my.vom)].'Netto Gesamt:')
    

    Hiermit summierst Du alle Rechnungen des Jahres, welches im Feld "vom" steht und bezahlt sind. Aber, welche Feldart hat das Feld 'Status am'. Ein Auswahlfeld mit den Angaben der Jahre dann number(text('Status am')), ein Datumfeld dann year('Status am') wie oben. Dann wäre das Vorjahr so zu berechnen...

    sum((select '4. Rechnungen')[text(Status) = "bezahlt" and year('Status am') - 1 = year(my.vom) - 1].'Netto Gesamt:')
    

    ... und die prozentuale Aussage, wieviel Prozent vom Vorjahr (=100%) habe ich jetzt erreicht müsste meines Wissens durch aktuellesJahr * 100 / vorigesJahr berechenbar sein. Oder ;-) ich verstehe es immer noch nicht, aber das wird schon. Gruß Mirko

    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Wie Mirko schon schrieb, ist hier die Funktion date() hilfreich.
    Damit kannst du ein Datum aus Zahlen ein Datum bilden.
    Du musst nur das vorhandene Datum in Jahr, Monat, Tag aufsplitten, deine Änderungen daran durchführen und wieder neu als Datum zusammensetzen.
    Versuche mal folgendes:
     

    let my := this;

    let aktuellesJahr: sum((select '4. Rechnungen')[text(Status) = "bezahlt"]['Status am' >= my.vom and 'Status am' <= my.bis].'Netto Gesamt:');

    let vorJahr: sum((select '4. Rechnungen')[text(Status) = "bezahlt"]['Status am' >= date(year(my.vom-1),month(my.vom),day(my.vom)) and 'Status am' <= date(year(my.bis-1),month(my.bis),day(my.bis))].'Netto Gesamt:');

    ((aktuellesJahr - vorJahr) / vorJahr) *100

    Ich kann nur empfehlen ab und an in die Ninox-Dokumentation zu den Funktionen zu schauen oder die 0001-Ninox-Reference DB im deutschen Webinarteam aufzurufen. Dort sind auch alle bekannten Ninox-Funktionen aufgeführt inkl Erläuterungen und Beispiele.

    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Mirko hat einen Wimpernschlag schneller gesendet.

    • Kruna
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hi,

    vielen, vielen Dank für euren Input.  Ihr seid echt Klasse!!!

    Ich habe beide Vorschläge umgesetzt, aber das hatte 'irgendwie' auch nicht geklappt. Wahrscheinlich, wie Mirko geschrieben hatte, die Felder und das DB-Konstrukt nicht bekannt sind. Dennoch hat es mir absolut weitergeholfen, weil ich euren Input in meine DB umsetzen konnte und siehe da...es hat mit folgendem Skript funktioniert:

     

    let my := this;

    let aktuellesJahr := sum((select '4. Rechnungen')[text(Status) = "bezahlt"][year('Status am') >= year(my.vom) and year('Status am') <= year(my.bis)].'Netto Gesamt:');

    let vorJahr := sum((select '4. Rechnungen')[text(Status) = "bezahlt"][year('Status am') >= year(my.vom) - 1 and year('Status am') <= year(my.bis) - 1].'Netto Gesamt:');

     

    Nochmals, vielen tausend Dank an Euch!

     

    Einen schönen Sonntag noch.

     

    Gruß Kruna

Content aside

  • Status Answered
  • vor 1 JahrZuletzt aktiv
  • 6Antworten
  • 110Ansichten
  • 3 Folge bereits