Megakalkulation: Unterschied zwischen den Versionen
(→IST 1) |
|||
(10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 12: | Zeile 12: | ||
;Bereiche | ;Bereiche | ||
− | 1 = Angebote Miete | + | :1 = Angebote Miete |
− | 2 = Aufträge Miete oder Aktive Aufträge Miete oder Abgeschlossene Aufträge Miete | + | :2 = Aufträge Miete oder Aktive Aufträge Miete oder Abgeschlossene Aufträge Miete |
− | 3 = Angebote Verkauf/Mietverkauf | + | :3 = Angebote Verkauf/Mietverkauf |
− | 4 = Aufträge Verkauf/Mietverkauf | + | :4 = Aufträge Verkauf/Mietverkauf |
− | 5 = Aktive Aufträge Verkauf/Mietverkauf | + | :5 = Aktive Aufträge Verkauf/Mietverkauf |
− | 6 = Abgeschlossene Aufträge Verkauf/Mietverkauf | + | :6 = Abgeschlossene Aufträge Verkauf/Mietverkauf |
+ | ;Dispo-Aufträge | ||
+ | :Aufträge mit dem Kennzeichen '''DispoAuftrag''' werden nicht aufgeführt! | ||
+ | :(MAufKo.DispoAuftrag=1) | ||
+ | ;Textaufträge | ||
+ | :Auftragsnummern, die mit '''999''' beginnen werden nicht aufgeführt! | ||
+ | == Aufteilung der Umsätze, Erlöse und Kosten == | ||
+ | |||
+ | Umsätze, Erlöse und Kosten sind in diese Bereiche aufgeteilt: | ||
+ | |||
+ | ;Material Miete | ||
+ | ;Material Kauf (Verkauf) | ||
+ | ;Dienstleistungen/Transport | ||
+ | ;Arbeitszeit/Personal | ||
+ | ;Sonstiges | ||
+ | |||
+ | Die Zuordnung der Zahlen erfolgt über die Kostenarten, die in den Stammdaten der Kostenarten angelegt werden. Bei jeder Kostenart kann an den Bereich festlegen. | ||
+ | |||
+ | Beispiel: | ||
+ | |||
+ | [[Datei:StammdatenKostenarten.png]] | ||
+ | |||
+ | |||
+ | In den Artikelstammdaten: | ||
+ | |||
+ | [[Datei:StammdatenArtikelKostenarten.png]] | ||
+ | |||
+ | == Spalten der Kalkulation == | ||
+ | |||
+ | Beispiel: | ||
+ | |||
+ | [[Datei:MegaKalkulation_GesamtKalkulation.png]] | ||
+ | |||
+ | |||
+ | === Umsatz === | ||
+ | |||
+ | Umsatz aus den Auftragspositionen, aufgeteilt nach den Kostenarten. | ||
+ | |||
+ | Die Aufteilung auf die Zeilen erfolgt über die Kostenarten. Fehlende Kostenarten oder Kostenarten ohne Bereichsangabe werden unter '''Sonstiges''' eingeordnet. | ||
+ | |||
+ | |||
+ | === SOLL === | ||
+ | |||
+ | Soll-Kosten aus den Selbstkosten aus den Auftragspositionen. | ||
+ | |||
+ | |||
+ | === IST 1 === | ||
+ | |||
+ | Ist-Kosten aus den Bestellungen. | ||
+ | |||
+ | Die Kostenart dazu kommt aus dem Bestell-Kopf. | ||
+ | |||
+ | === IST 2 === | ||
+ | |||
+ | Ist-Kosten aus den Eingangsrechnungen. Wenn noch keine Eingangsrechnungen vorhanden sind, werden die Bestellungen verwendet. | ||
== Starten == | == Starten == | ||
Zeile 40: | Zeile 94: | ||
Im Report müssen die Variablen angelegt werden mit '''Report''' ⇒ '''Variablen''' | Im Report müssen die Variablen angelegt werden mit '''Report''' ⇒ '''Variablen''' | ||
+ | == Der Report == | ||
+ | |||
+ | Dem Report wird die Tabelle "MegaKalk" mit den Auftrags- und Kalkulationsdaten übergeben. | ||
+ | |||
+ | Der Report gruppiert die Datensätze nach dem Bereichs-Kennzeichen MegaKalk.Abschnitt. | ||
+ | |||
+ | Die Textfelder für die Überschriften werden im Code gefüllt: | ||
+ | |||
+ | procedure GroupHeaderAbschnittOnBeforePrint(Sender: TfrxComponent); | ||
+ | begin | ||
+ | if ( <MegaKalk."Abschnitt"> = 1 ) then | ||
+ | memoAbschnittCaption.Text := 'Angebote Miete'; | ||
+ | |||
+ | if ( <MegaKalk."Abschnitt"> = 2 ) then | ||
+ | memoAbschnittCaption.Text := 'Aufträge Miete'; // ' oder Aktive Aufträge Miete oder Abgeschlossene Aufträge Miete'; | ||
+ | |||
+ | if ( <MegaKalk."Abschnitt"> = 3 ) then | ||
+ | memoAbschnittCaption.Text := 'Angebote Verkauf/Mietverkauf'; | ||
+ | |||
+ | if ( <MegaKalk."Abschnitt"> = 4 ) then | ||
+ | memoAbschnittCaption.Text := 'Aufträge Verkauf/Mietverkauf'; | ||
+ | |||
+ | if ( <MegaKalk."Abschnitt"> = 5 ) then | ||
+ | memoAbschnittCaption.Text := 'Aktive Aufträge Verkauf/Mietverkauf'; | ||
+ | |||
+ | if ( <MegaKalk."Abschnitt"> = 6 ) then | ||
+ | memoAbschnittCaption.Text := 'Abgeschlossene Aufträge Verkauf/Mietverkauf'; | ||
+ | memoAbschnittCaption2.Text := 'Summe ' + trim(memoAbschnittCaption.Text) + ':'; | ||
+ | end; | ||
+ | |||
+ | Die Felder werden teilweise farbig markiert, z.B. so: | ||
+ | |||
+ | procedure MasterData1OnBeforePrint(Sender: TfrxComponent); | ||
+ | begin | ||
+ | // Default: | ||
+ | memoRohDBSollProz.Font.Color := clBlack; | ||
+ | memoRohDBSollBetrag.Font.Color := clBlack; | ||
+ | |||
+ | // DB-Prozent über 100 markieren: | ||
+ | if <MegaKalk."DBSollSumme"> > 100 then | ||
+ | begin | ||
+ | memoRohDBSollProz.Color := clRed; | ||
+ | memoRohDBSollBetrag.Color := clRed; | ||
+ | memoRohDBSollProz.Font.Color := clWhite; | ||
+ | memoRohDBSollBetrag.Font.Color := clWhite; | ||
+ | end | ||
+ | else | ||
+ | // Gelb, wenn über der angegebenen Prozentgrenze: | ||
+ | if <MegaKalk."DBSollSumme"> < <UntergrenzeDBSoll> then | ||
+ | begin | ||
+ | memoRohDBSollProz.Color := clYellow; | ||
+ | memoRohDBSollBetrag.Color := clYellow; | ||
+ | end | ||
+ | else | ||
+ | begin | ||
+ | memoRohDBSollProz.Color := $00FFECEC; // hellblau statt clNone | ||
+ | memoRohDBSollBetrag.Color := $00FFECEC; | ||
+ | end; | ||
+ | |||
+ | if <MegaKalk."DBIst1Summe"> < <UntergrenzeDBIst1> then | ||
+ | begin | ||
+ | memoDBIst1Proz.Color := clYellow; | ||
+ | memoDBIst1Betrag.Color := clYellow; | ||
+ | end | ||
+ | else | ||
+ | begin | ||
+ | memoDBIst1Proz.Color := clNone; | ||
+ | memoDBIst1Betrag.Color := clNone; | ||
+ | end; | ||
+ | |||
+ | if <MegaKalk."DBIst2Summe"> < <UntergrenzeDBIst2> then | ||
+ | begin | ||
+ | memoDBIst2Proz.Color := clYellow; | ||
+ | memoDBIst2Betrag.Color := clYellow; | ||
+ | end | ||
+ | else | ||
+ | begin | ||
+ | memoDBIst2Proz.Color := $00B0FDBA; | ||
+ | memoDBIst2Betrag.Color := $00B0FDBA; | ||
+ | end; | ||
+ | end; | ||
+ | |||
+ | Es wird hier das Prozent- und Betragsfeld markiert. | ||
== Links == | == Links == | ||
* '''[[FastReport: Anlegen und verwenden von Variablen im Report]]''' | * '''[[FastReport: Anlegen und verwenden von Variablen im Report]]''' |
Aktuelle Version vom 29. Februar 2024, 12:46 Uhr
Inhaltsverzeichnis
1 Allgemeines
Die Megakalkulation ist ein optionales Modul zur Kalkulation von Aufträgen, um sowohl ein Vorausschau als auch einen Rückblick über die finanzielle Bewertung der Aufträge zu erhalten.
2 Das Grundprinzip
- Die Megakalkulation erzeugt eine Liste von REFLEX-Aufträgen anhand der eingegebenen Filter (Zeitraum, Bereiche usw.). In der Liste sind Auftragsdaten, Kalkulationsdaten und ein Bereichskennzeichen "Abschnitt" (s.u.) enthalten.
- Danach werden die betreffenden Aufträge neu durchkalkuliert (wenn man die Option "✅ Aufträge neu megakalkulieren" eingeschaltet hat).
- Anschließend wird der ausgewählte Report gestartet.
- Bereiche
- 1 = Angebote Miete
- 2 = Aufträge Miete oder Aktive Aufträge Miete oder Abgeschlossene Aufträge Miete
- 3 = Angebote Verkauf/Mietverkauf
- 4 = Aufträge Verkauf/Mietverkauf
- 5 = Aktive Aufträge Verkauf/Mietverkauf
- 6 = Abgeschlossene Aufträge Verkauf/Mietverkauf
- Dispo-Aufträge
- Aufträge mit dem Kennzeichen DispoAuftrag werden nicht aufgeführt!
- (MAufKo.DispoAuftrag=1)
- Textaufträge
- Auftragsnummern, die mit 999 beginnen werden nicht aufgeführt!
3 Aufteilung der Umsätze, Erlöse und Kosten
Umsätze, Erlöse und Kosten sind in diese Bereiche aufgeteilt:
- Material Miete
- Material Kauf (Verkauf)
- Dienstleistungen/Transport
- Arbeitszeit/Personal
- Sonstiges
Die Zuordnung der Zahlen erfolgt über die Kostenarten, die in den Stammdaten der Kostenarten angelegt werden. Bei jeder Kostenart kann an den Bereich festlegen.
Beispiel:
In den Artikelstammdaten:
4 Spalten der Kalkulation
Beispiel:
4.1 Umsatz
Umsatz aus den Auftragspositionen, aufgeteilt nach den Kostenarten.
Die Aufteilung auf die Zeilen erfolgt über die Kostenarten. Fehlende Kostenarten oder Kostenarten ohne Bereichsangabe werden unter Sonstiges eingeordnet.
4.2 SOLL
Soll-Kosten aus den Selbstkosten aus den Auftragspositionen.
4.3 IST 1
Ist-Kosten aus den Bestellungen.
Die Kostenart dazu kommt aus dem Bestell-Kopf.
4.4 IST 2
Ist-Kosten aus den Eingangsrechnungen. Wenn noch keine Eingangsrechnungen vorhanden sind, werden die Bestellungen verwendet.
5 Starten
Aus REFLEX heraus über das Menü "Info, Drucken" ⇒ "Megakalkulation".
6 Prozente für Untergrenzen
Hier im Bereich Untergrenzen in %: kann man Prozente angeben, ab denen die entsprechenden Felder im Report farbig markiert werden sollen. Dort müssen entsprechende Variablen angelegt und abgefragt werden. Außerdem müssen im Report entsprechend Code-Zeilen angegeben werden, die die Variablen abfragen und die Felder entsprechend farbig einstellen.
Variablen:
- UntergrenzeDBSoll
- UntergrenzeDBIst1
- UntergrenzeDBIst2
Im Report müssen die Variablen angelegt werden mit Report ⇒ Variablen
7 Der Report
Dem Report wird die Tabelle "MegaKalk" mit den Auftrags- und Kalkulationsdaten übergeben.
Der Report gruppiert die Datensätze nach dem Bereichs-Kennzeichen MegaKalk.Abschnitt.
Die Textfelder für die Überschriften werden im Code gefüllt:
procedure GroupHeaderAbschnittOnBeforePrint(Sender: TfrxComponent); begin if ( <MegaKalk."Abschnitt"> = 1 ) then memoAbschnittCaption.Text := 'Angebote Miete'; if ( <MegaKalk."Abschnitt"> = 2 ) then memoAbschnittCaption.Text := 'Aufträge Miete'; // ' oder Aktive Aufträge Miete oder Abgeschlossene Aufträge Miete'; if ( <MegaKalk."Abschnitt"> = 3 ) then memoAbschnittCaption.Text := 'Angebote Verkauf/Mietverkauf'; if ( <MegaKalk."Abschnitt"> = 4 ) then memoAbschnittCaption.Text := 'Aufträge Verkauf/Mietverkauf'; if ( <MegaKalk."Abschnitt"> = 5 ) then memoAbschnittCaption.Text := 'Aktive Aufträge Verkauf/Mietverkauf'; if ( <MegaKalk."Abschnitt"> = 6 ) then memoAbschnittCaption.Text := 'Abgeschlossene Aufträge Verkauf/Mietverkauf'; memoAbschnittCaption2.Text := 'Summe ' + trim(memoAbschnittCaption.Text) + ':';
end;
Die Felder werden teilweise farbig markiert, z.B. so:
procedure MasterData1OnBeforePrint(Sender: TfrxComponent); begin // Default: memoRohDBSollProz.Font.Color := clBlack; memoRohDBSollBetrag.Font.Color := clBlack; // DB-Prozent über 100 markieren: if <MegaKalk."DBSollSumme"> > 100 then begin memoRohDBSollProz.Color := clRed; memoRohDBSollBetrag.Color := clRed; memoRohDBSollProz.Font.Color := clWhite; memoRohDBSollBetrag.Font.Color := clWhite; end else // Gelb, wenn über der angegebenen Prozentgrenze: if <MegaKalk."DBSollSumme"> < <UntergrenzeDBSoll> then begin memoRohDBSollProz.Color := clYellow; memoRohDBSollBetrag.Color := clYellow; end else begin memoRohDBSollProz.Color := $00FFECEC; // hellblau statt clNone memoRohDBSollBetrag.Color := $00FFECEC; end; if <MegaKalk."DBIst1Summe"> < <UntergrenzeDBIst1> then begin memoDBIst1Proz.Color := clYellow; memoDBIst1Betrag.Color := clYellow; end else begin memoDBIst1Proz.Color := clNone; memoDBIst1Betrag.Color := clNone; end; if <MegaKalk."DBIst2Summe"> < <UntergrenzeDBIst2> then begin memoDBIst2Proz.Color := clYellow; memoDBIst2Betrag.Color := clYellow; end else begin memoDBIst2Proz.Color := $00B0FDBA; memoDBIst2Betrag.Color := $00B0FDBA; end; end;
Es wird hier das Prozent- und Betragsfeld markiert.