Support

Forum

Forum

Suche

Anmeldung

Geben Sie Ihren Benutzernamen und Ihr Passwort ein, um sich anzumelden.

neue Variable unter Berechnungen anlegen und verwenden

83rose
Neuling
Themenersteller
Verfasst am: 29.05.2011 [19:20]
Hallo zusammen,

momentan teste ich orgaMAX für eine Existenzgründung im familiären Bereich. Beruflich bin ich Admin für ein anderes ERP und nutze CrystalReports für die Vorlagenerstellung. Prinzipiell komme ich mit dem Vorlagendesigner hier klar was das Anordnen der Objekte betrifft, neue DB-Objekte einbinden usw.

Mein aktuelles Problem:
orgaMAX kann keine Preiseinheiten (dies wird aber unbedingt gebraucht, dass manche Artikel den Preis pro 100 Stk. darstellen müssen). Bsp: 18,66 pro 100 Stk

Mein Lösungsversuch:
- individuelles Feld Preiseinheit für Artikel angelegt
- für die Einzelpreise 4 Nachkommastellen festgelegt
- in einem Artikel einen Preis von 0,1866 hinterlegt und das Individualfeld Preiseinheit mit 100 befüllt
- in der Vorlage die Spalte Preiseinheit eingefügt (P_A_INDIVIDUAL1)
- in der Vorlage bei 'Zahlenformate holen' den Einzelpreis angepasst (DBText_Einzelpreis.DisplayFormat :=BetragsformatMitWaehrung + ';-' + BetragsformatMitWaehrung; ) so dass der Einzelpreis mit 2 Nachkommastellen anstatt mit 4 angezeigt wird

Und nun mein Problem:
Ich sehe die Preiseinheit in einer Spalte und möchte nun ein Berechnungsfeld im Vorlagendesigner anlegen welches den Einzelpreis mit der Preiseinheit multipliziert.
Es muss wohl so heißen: AVX['P_PRICE'] * AVX['P_A_INDIVIDUAL1']

Nur wo genau muss ich dieses hintelegen? Bei den Berechnungen im Bereich BeforePrint oder wo und wie genau? Ich muss ja irgendwie eine Variable anlegen die ich in der Entwurfsansicht dann verweden kann.

Es wäre prima wenn ich paar Infos bekommen würde, bisher bin ich sehr angetan von dem Programm, bis auf die Preiseinheit eben. Doof, dass es das nicht standardmäßig gibt, aber wenn es so hinzubekommen ist ist orgaMAX weit vorne im Rennen dabei.


Vielen Dank im Voraus.
83rose
Neuling
Themenersteller
Verfasst am: 29.05.2011 [20:26]
Nachtrag,

mittlerweile hab auch ich verstanden dass ich einfach eine neue Variable angelen kann in der Entwurfsansicht und dann per Rechtsklick -> Berechnungen eine Formel eingeben kann.

Folgendes habe ich versucht:
Value := AVX['P_PRICE'] * StrToInt(AVX['P_A_INDIVIDUAL1']);

Es scheint aber nicht zu passen, im Vorlagendesigner bekomme ich zwar Werte bei der Vorschau, aber nachher im Angebot scheint die Vorlage nicht zu funktionieren. icon_frown.gif

Was mach ich falsch? Oder geht die Funktion String zu Integer so nicht?

Wie könnte ich die Formel denn wie folgt darstellen? so quasi:

if AVX['P_A_INDIVIDUAL1'] = '1' then AVX['P_PRICE'] * 1
else if AVX['P_A_INDIVIDUAL1'] = '10' then AVX['P_PRICE'] * 10
else if AVX['P_A_INDIVIDUAL1'] = '100' then AVX['P_PRICE'] * 100
else if AVX['P_A_INDIVIDUAL1'] = '1000' then AVX['P_PRICE'] * 1000

Kann leider (noch) kein C# oder welche Sprache das auch immer sein mag.
MuSy_K
orgaMAX-Team
Verfasst am: 30.05.2011 [08:28]
Hi 83rose,

also die Programmiersprache zum Vorlagendesigner ist RAP. Dieses ist eine Abwandlung von Delphi.

Im Prinzip ist deine Vorgehensweise nicht falsch, aber evtl. ein bisschen umständlich. Diese Thematik wurde erst vor kurzem besprochen. Siehe folgenden Post:

http://www.deltra.com/c/orgamax/beitraege/stammdaten-office-3/preis-pro-100-stck-166/

Evtl. hilft dieses hier besser zur Problemlösung bei.
» So gimme fuel » Gimme fire » Gimme that which I desire

http://www.ktimestamp.com
Dein praktischer Textbaustein Assistent
83rose
Neuling
Themenersteller
Verfasst am: 30.05.2011 [08:53]
Hi MuSy_K,

vielen Dank für den Hinweis. In der Tat, den Beitrag (und ein paar weitere bezügl. Preiseinheit) hatte ich schon gelesen.
Für mich stehen aber noch ein paar andere Dinge im Vordergrund. Wenn ich den beschriebenen Weg mit dem Preisbezug gehe muss ich im Report trotzdem eine Spalte haben die mir die Preiseinheit ausgibt (1, 10 oder 100). Dafür muss ich dann entweder die Formel ‘A/100‘ im Report auslesen und den String zerlegen, so dass ich nur die 100 hab oder aber zusätzlich das Individualfeld mit 100 befüllen und auslesen, wie ich es bereits hinbekommen habe.

Dann müsste ich quasi je Artikel 3 Felder befüllen, Name des Preisbezuges, Formel und das Individualfeld. Da ich als ERP-Admin weiß dass die User dann ein Feld vergessen bin ich immer dafür es für den User so einfach wie nur möglich zu machen. Daher war meine Vorgehensweise die, dass sich alles über das Individualfeld lösen lässt.

Ich bin auch noch ein Schritt weiter gekommen und habe im Report eine Berechnungsformel für eine Variable angelegt, nur leider scheint da noch ein Fehler drin zu sein.
Meine Formel sieht so aus:

begin
if AVX['P_A_INDIVIDUAL1'] = '100' then begin
Value := AVX['P_PRICE'] * 100;
end else begin
Value := AVX['P_PRICE'];
end;
end;

Fehler: Variable_EPmitPEOnCalc, Zeile 1: Erwartet: 'repeat' oder 'while', stattdessen wurde 'begin' gefunden.

Kann mir jemand weiterhelfen wie ich diese Formel ändern muss damit sie funktioniert? Und wie kann ich weitere else if in dieser Programmiersprache einbauen?


Viele Grüße
Ellen
MuSy_K
orgaMAX-Team
Verfasst am: 30.05.2011 [09:56]
vielen Dank für den Hinweis. In der Tat, den Beitrag (und ein paar weitere bezügl. Preiseinheit) hatte ich schon gelesen.
Für mich stehen aber noch ein paar andere Dinge im Vordergrund. Wenn ich den beschriebenen Weg mit dem Preisbezug gehe muss ich im Report trotzdem eine Spalte haben die mir die Preiseinheit ausgibt (1, 10 oder 100). Dafür muss ich dann entweder die Formel ‘A/100‘ im Report auslesen und den String zerlegen, so dass ich nur die 100 hab oder aber zusätzlich das Individualfeld mit 100 befüllen und auslesen, wie ich es bereits hinbekommen habe.


hier setzen wir am besten weitere an...

Die 100 ist jetzt ein Standardwert. Dieser kann aber direkt im Artikel richtig hinterlegt werden. Es gibt ja beim Preisbezug diverse Berechnungsfelder.


In der Formel steht nun "A / A / A"

Mit dem Datenbankfeld "P_INPUTVALUE1" kann dann direkt auf das Feld A aus dem Preisbezug zugegriffen werden.
Dieses könnte dann als Spalte evtl. hinzugefügt werden.
Ich lade hier einmal eine Beispielvorlage hoch...
Beispielvorlage

mit diesem Bespiel müsste man nur einmal im Stamm den richtige Wert hinterlegen und der Rest würde dann von alleine funktionieren…

anbei einmal ein Bespiel, wie dieses in der angehängten Vorlage aussehen würde:


hier wird der Einzelpreis direkt mit der Preiseinheit formatiert angezeigt. Die Programmierung liegt im Bereich "DetailBeforeGenerate".

Aber falls du deinen Weg weitergehen möchtest helfe ich dir da natürlich auch gerne...

Die individuellen Felder sind alles Strings und mit Strings lässt es sich schwierig rechnen. Demnach müssen die Strings in den Wert "Double" konvertiert werden. Dieses funktioniert mit der Funktion

StrToFloat()

hier musst du dann aber wieder aufpassen, dass das individuelle Feld gefüllt ist, sonst würde die Vorlage abstürzen. Deshalb vorher einmal eine Abfrage hinterlegen:


if length(AVX['P_A_INDIVIDUAL1']) > 0 then begin
value := StrToFloat(AVX['P_A_INDIVIDUAL1']);

end;

Aber ich würde dir die andere Vorgehensweise empfehlen...
» So gimme fuel » Gimme fire » Gimme that which I desire

http://www.ktimestamp.com
Dein praktischer Textbaustein Assistent
83rose
Neuling
Themenersteller
Verfasst am: 30.05.2011 [16:13]
Hi MuSy_K,

wie wir schon richtig festgestellt haben, viele Wege führen nach Rom, wer welchen für sich am optimalsten hält muss jeder für sich entscheiden icon_smile.gif

Vielen Dank für die schnelle Hilfe und Bereitstellung des Berichts. Mittlerweile finde ich mich im Vorlagendesigner schon etwas besser zurecht, nur mit der Sprache hapert's noch ein bisschen.

Ich bin nun auch zu meiner Lösung gekommen:
if length(AVX['P_A_INDIVIDUAL1']) > 0 then begin
Value := FormatCurr('#,00.00 €', AVX['P_PRICE'] * StrToFloat(AVX['P_A_INDIVIDUAL1']));
end else begin
Value := FormatCurr('#,00.00 €', AVX['P_PRICE']);
end;

Die Abfrage ob das Individualfeld überhaupt befüllt ist hatte natürlich gefehlt und es war ein begin und ein end zu viel drin.


Viele Grüße
Ellen

orgaMAX Forum hat 4941 registrierte Benutzer, 5674 Themen und 18265 Antworten.
Es werden durchschnittlich 4.94 Beiträge pro Tag erstellt.

Zur Zeit sind 0 Benutzer online, davon 0 registrierte Benutzer.
Heute war bereits 1 registrierter Benutzer online.

SUPPORT HOTLINE

Wir sind für Sie da!

+49 (0) 5231 7090-0

Montag - Freitag
8:00 - 12:00 und 13:00 - 17:00 Uhr

Erweiterte Supportzeiten von 7:00 - 20:00 Uhr sind in unseren Premium-Supportpaketen verfügbar.
Jetzt anfragen