0

Rechnungsnummer mit mehreren Bedinungen

Hallo zusammen,

ich komm mit der 2. Bedingung für die Erzeugung der Rechnungsnummer nicht klar. Könnt Ihr mir dringend helfen bitte?

RG Stellung ist rollenabhängig. 

2 RG kreise für unterschiedliche Filialen

Jahresabhängig 

RG Nummer Aufbau:  Jahr(yy)+Filiale(01 oder 02)+4 stellige laufnummer

Leider bekomm ich mit substr() nur eine Bedingung gelöst ( entweder das Jahr oder das Filial kürzel ) beides will nicht.

if Kunde.text('Rolle user') != userRole() then
    alert("Sie haben keine berechtigung für diese Aktion, bitte wenden Sie sich an die GSL")
end;
if Kunde.text('Rolle user') = userRole() then
    let myYear := format('Datum der Rechnungsstellung', "YY");
    let aa := number(max((select Rechnungsstellung where substr(Rechnungsnummer, 0, 2) = myYear).substr(Rechnungsnummer, 2, 2).substr(Rechnungsnummer, 4, 8)))) + 1;
    Rechnungsnummer := myYear + "02" + format(aa, "0000")
else
    if Kunde.text('Rolle user') = userRole() then
        let myYear := format('Datum der Rechnungsstellung', "YY");
        let aa := number(max((select Rechnungsstellung where substr(Rechnungsnummer, 0, 2) = myYear).substr(Rechnungsnummer, 2, 2).substr(Rechnungsnummer, 4, 8))) + 1;
        Rechnungsnummer := myYear + "01" + format(aa, "0000")
    end
end

 

Danke im voraus

Michi

3 Antworten

null
    • Michi.1
    • vor 2 Jahren
    • Gemeldet - anzeigen
    let myYear := format('Datum der Rechnungsstellung', "YY");
        for i in select Rechnungsstellung where substr(Rechnungsnummer, 0, 2) = myYear do
            let aa := number(max((select Rechnungsstellung where substr(i.Rechnungsnummer, 2, 2) = "02").substr(i.Rechnungsnummer, 4, 8))) + 1;
            Rechnungsnummer := myYear + "02" + format(aa, "0000")
        end
    end
    

    so könnte es glaub passen, ist aber hier so, das ohne vorhandene Rechnungsnummer nix gehen kann 

    • Ninox-Professional
    • planoxpro
    • vor 2 Jahren
    • Gemeldet - anzeigen

    M. E. müsste man die Filiale konkret abfragen, ob 1 oder 2. Wenn die Unterscheidung nach userRole() erfolgt, dann würde ich es in diese Richtung versuchen (quick and dirty):

    let myRole := Kunde.text('Rolle user');
    if myRole = userRole() then
       let myFil := if myRole = "Filiale1" then "01" else "02" end
       let myPre := format('Datum der Rechnungsstellung', "YY") + myFil;
       let lastNum := max((select Rechnungsstellung where substr(Rechnungsnummer, 0, 4) = myPre).number(substr(Rechnungsnummer, 4)));
       Rechnungsnummer := myPre + format(number(lastNum) + 1, "0000")
    else
       alert("Sie haben keine berechtigung für diese Aktion, bitte wenden Sie sich an die GSL")
    end
    
      • Michi.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      planox. pro Danke dir klappt wunderbar. Da muss man erstmal drauf kommen aus 2 Bedingungen einfach eine zu machen. So schön kurz 👍