REFLEX in Zahlen

Aus GEVITAS
Wechseln zu: Navigation, Suche

FunFacts - Interessante Zahlen zu REFLEX

Zahl Was
RxInteressantes 01MillZeilen.png
2,5 Millionen Zeilen Quellcode bilden REFLEX! Dazu kommen noch ca. 3 Millionen Zeilen für die Fenster-Definitionen, also die Programmbefehle, die die Optik von Fenstern und Dialogen bestimmt.

RxInteressantes 13Code.png

RxInteressantes 02Seiten.png
50.000 Seiten wären das ausgedruckt!

Auf eine DIN A4-Seite passen ca. 50 Zeilen. Bei ca. 2,5 Millionen Zeilen Code wären das dann ca. 50.000 Seiten, beidseitig bedruckt ca. 25.000 Seiten.

RxInteressantes 03StapelHoch.png
5,5 m hoch wäre der ausgedruckte Stapel: Wenn ein Blatt Papier 0,1 mm dick ist, bedeutet das einen Stapel von 2.500 mm oder 2,5 m hoher Stapel.

Bei ca. 3 Millionen Zeilen Fenster-Definitions-Beschreibungen wären das dann ca. 60.000 Seiten, beidseitig bedruckt ca. 30.000 Seiten. Wenn ein Blatt Papier 0,1 mm dick ist, bedeutet das einen Stapel von 3.000 mm oder 3 m hoher Stapel. Der ganze Quellcode ausgedruckt ergäbe also einen Papierstapel von ca. 5,5 m Höhe!

RxInteressantes 04Fenster.png
2.038 Fenster und Dialoge gibt es in REFLEX!
  • Als Fenster bezeichnen wir die Haupt-Programm-Teile wie Kontakt-Stammdaten, Auftragserfassung, Bestellungen usw.
Mehrere Fenster können gleichzeitig geöffnet sein.
  • Dialoge sind z.B. Artikel-Suche, Status-Ändern usw.
Dialoge müssen in der Regel mit OK oder Abbruch bestätigt werden, deshalb bezeichnet man diese auch als "modale Dialoge".
Der Programmablauf wird hier erst fortgesetzt, wenn man den Dialog schließt.
RxInteressantes 12if.png
83.523 mal "if" Anweisungen stehen im Source-Code.
if sSearch  > ´´ then
if FrmMain.bMandantenTransfer then
if (Key=VK_ESCAPE) then
if DatVon > DatBis then
RxInteressantes 12if.png
5.520 mal "if" Anweisungen stehen allein in der Auftragsverwaltung.
RxInteressantes 05Bezeichnungen.png
55.628 Bezeichnungen werden in REFLEX in den Eingabemasken verwendet, also z.B. "Auftr.Nr.:"

Dazu kommen noch es 4.274 Texte in Meldungen, Hilfstexten usw., also z.B. "Wollen Sie wirklich...?", "Bitte zuerst den Artikel auswählen" usw.

RxInteressantes 06Einstellungen.png
350 Einstellungen gibt es in den Programm-Parametern (Stand Anfang 2021), mit denen das Programm an die Anforderungen der Firmen angepasst werden kann.
Beispiele
  • Module
Festlegungen für die Fahrzeug-Dispo oder den JobKalender
Online-Entfernungsmessung benutzen (Entfernung übers Internet messen, falls nicht in Entfernungstabelle enthalten)
Heimat-Adresse für die Routen-Berechnung festlegen
  • Nummern
Nummernkreise für Auftrags-, Rechnungs, Inventarnummern usw. Verschiedene Auftrags- Rechnungsnummernkreise einrichten
Artikelnummern vom Programm automatisch fortlaufend, numerisch vergeben, oder anhand Artikel-Gruppen, oder gar nicht
  • Dokumente
Ordner-Strukturen für Dokumente
Dokumente verstecken für Benutzer/innen mit NUR-LESEN-Recht
  • Automatische E-Mails und Erinnerungen
Signaturen und Texte für automatische Mails und Erinnerungen
Bei Freigabe einer Bestellung ein E-Mail senden
Bei vollständiger Ausgabe Erinnerung an Bearbeiter, dass Rechnung geschrieben werden kann
Bei Erfassen einer Eingangsrechnung Erinnerung an Auftragsbearbeiter erzeugen
Auto-EMail an Auftragsbearbeiter, wenn Packliste nicht gedruckt werden konnte, weil offene Rechnungen da sind
E-Mail-Adressen für Mails an das Lager, den Vertrieb usw.
E-Mail-Adresse für die Bestell-Kontrolle/Freigabe
EMail-Adresse für Benachrichtigung bei Mindestbestand einer bestimmten OBERGRUPPE
  • Termine
Termin-Qualifikationen, -Arten und -Gruppen
  • Auftragsverwaltung
Drucken verbieten, wenn kein Memo-Text im Auftrag vorhanden ist
Behandlung von Unterdeckungen in der Auftragsverwaltung: Ignorieren, Anzeigen, Reaktion verlangen
Im Dispo-Check den virtuellen Bestand aus Fertigungsaufträgen berücksichtigen
Im Dispo-Check auch Miet-Verkaufs-Aufträge berücksichtigen
Angebote beim DispoCheck berücksichtigen?
Auftrags-Absage-Begründungen
Mengeneingabe auf Artikel-Verpackungseinheit aufrunden
Aufträge "In Bearbeitung" für andere Bearbeiter sperren
Zeitraum für die Miet-Berechnung aus dem Dispo-Zeitraum oder VA-Zeitraum
Kreditlimit berechnen, Auftrag "AUFT" drucken/mailen ggf. verhindern
Auch ungeprüfte Kontakte können "AUFT" erhalten
Mindest-Fracht-Betrag festlegen, Kein Fracht ab Netto-Auftragswert
Zubehörartikel im Auftrag zu einer Position zusammenfassen
Bei Miet-Aufträgen Termin-Zwang! (Zumindest ein Termin muss angelegt werden)
Automatische Mail an das Lager beim Ändern eines Auftrags-Status auf AUFTR
Automatische Mail an den Auftragsbearbeiter*in beim Ändern eines Auftrags, bei der Lagerausgabe usw.
Auto-E-Mail bei Statuts AUFTR für Filialen im MultiLager
Bei Änderungen von Liefer-/Rückholdaten eines fixierten Auftrags ein E-Mail an das Lager/die Logistik senden
Änderung Auftragsstatus ANG --> AUFT oder AUFT --> STO Mail an die Personal-Disposition senden
Bei Ändern des Auftrags-Status von ANG auf AUFTR für spezielle Kunden ein E-Mail senden
Selbstkosten-Berechnung eines Artikels im Auftrag (Mietauftrag), Berechnungstage, Dispo- oder VA-Daten
Projektleiter im Auftragskopf zum Pflichtfeld machen
Artikel-Verpackungseinheit mit Reservemenge füllen/aufrunden
Bei Arbeitszeitartikeln im Auftrag eine Zeitraum-Angabe zulassen
Fremdleistungsblatt (Fremdmengen werden vom Programm beim Dispo-Check erzeugt) oder Auftragsbestellungen verwenden?
  • Dispo
In der Dispo der Transport-Logistik vergangene Aufträge berücksichtigen
Dispo-Prüfung mit Vergangenheit
  • Artikel-Stammdaten
Artikel-Kostenstelle zum Pflichtfeld machen
Artikel-Eigentümer zum Pflichtfeld machen, Eigentümer-Auswahlliste für Artikel
Standard-Artikel für Fertigungsstückliste
Artikelstamm, Eingabe EK-Preis Abweichung (in Prozent) überwachen
Kunden-/Artikelpreise verwenden?
  • Kontakt-Stammdaten
Eingabe Kundennummer: Datev-Kontenrahmen verwenden
Eingabe der UStID-Nummer überwachen (EU)
  • Bestellungen
Standard-Rabatt aus Lieferantenstamm in Bestellung verwenden
Fremdmenge in Auftrag aus Bestellung übernehmen
  • Lager
Bei der Lager-Ausgabe das Feld "Verladen" oder "Kontrolliert" oder "Aus Lager genommen" als Pflichtfeld festlegen
Automatisch Garantiedatum bei Lieferschein-Druck einsetzen
Verhalten bei Zubehör-Ausgabe
Behandlung von verkauften Artikeln
MultiLager-System aktivieren
  • Faktura
Warnung bei Druck einer Rechnung mit Positionen ohne Betrag
Schweizer Rundung auf 5 Rp. verwenden
  • Sonstiges
Einstellungen für die Elektronische (digitale) Signatur per SignaturePads
Festlegen, dass verspätete Erinnerungen für Personen einer bestimmten Gruppe an eine andere Person weitergeleitet werden, wenn diese nicht innerhalb einer gewissen Zeit bestätigt wurden
Anzahl Tage für das AutoAuftrag-Kulanz-System
Zonen für Einsatzgebiete
Transport-Genehmigung Zeitraum
Zeiterfassung auch für andere Personen zulassen
Digitale Dokumentenarchivierung (z.B. ELO) verwenden
Anpassungen an ein DMS
Standard-Sprache (D/E/F/I...) festlegen

u.v.a.m.

RxInteressantes 007KundenSpez.png
2.455 Stellen im Programm sind mit Kunden-spezifische Anpassungen versehen, die das Verhalten des Programms steuern.
In der Spitzengruppe
Fa. N. aus D.
Fa. M. aus W.
Fa. L. aus M.
Fa. T. aus B.
Fa. P. aus E.
RxInteressantes 08Module.png
40 spezifische Module mit speziellen Aufgaben gibt es in REFLEX:
GevitasFormPrint
Drucken, mailen, exportieren von Formularen, wie z.B. Angebot, AUftrag, Rechnung, Gutschrift, Bestellung, Werkstatt-Auftrag usw.
GevitasLabelPrint
Drucken von Etiketten mir barcode, QR-Code usw.
GevitasListPrint
Drucken von Listen
GevitasLizDir
Software-Lizenz-Directory-Management
RxDispo
Grafische Anzeige der Artikel-Dispo
RxAdmin
Administration von REFLEX, Benutzerverwaltung, Programm-Parameter usw.
RxCRM
CRM-System
RxCRMInfo
Situationsbezogenes Anzeigen von Kunden-/Auftrags-Daten
TerminManager (RxTermin) und JobKalender (JobKalender)
für die Personal-/Ressourcen-Planung
RxFahrzeugDispo
Fahrzeug-Dispo für die Planung von Fahrzeugen, Fahrern, Transporte
Dokumenten-Manager
Verwalten, Verknüpfen von Dokumenten aus Dateien oder Outlook©-Mails
RxOlSync
Outlook-Synchronisation
RxInventur
Inventur-Aufnahme und -Auswertung
InfoCenter
für Auswertungen von Umsätzen, Einsätzen, Auslastungen, Statistik usw.
Elektronisches, digitales Signieren
von Dokumenten mit Unterschriften-Pads
RxAutoMail
Automatisches Senden von E-Mails
REFLEX-Checker (RxChecker)
Datenbank-Tool
GevCarnet
Erzeugen und drucken von Carnet's
GevitasCopyScan
Kopiert gescannte Dokumente automatisch in die Dokumenten-Ordner und erzeugt Verknüpfungen dazu in der Datenbank.
GevitasDS
Datenschutz-Tool
GevitasMobileBHT (GxMobileBHT)
Einlesen von mobilen Barcode-/QR-Code-Scannern
GevitasPicView (GxPicView)
Anzeigen von Mini-Bildern für Artikel, situationsbezogen
Reisekosten
Reisekosten-Abrechnungen erfassen und drucken
REXIM
Export und Import von Buchhaltungsdaten
RxArtikelKonformErkl
Artikel-Konformitäts-Erklärungen
RxCopyAuftr
Übernahme- oder Zusatz-Aufträge erzeugen
RxManStarter
Starter-App für das MultiMandant-System
RxMultiMandant
Erzeugen und Verwalten von Transfer-Aufträgen von/zur Filiale (Mandant) zur/von Zentrale
RxMissImp
MissionImpossible-Aufträge erzeugen
RxOrderMemo
Memos für Aufträge drucken/exportieren
RxOrderReport
Spezielle Auswertungen, bezogen auf einen Auftrag
RxStockLog
Verwaltung eines Hochregal-Lagers, Stapler-Fahrten usw. (RxStockLog, RxStockDashboard, RxStockFremdMat usw.)
RxStockLogFA
App für Stapler, Werkstatt, Entladen usw.
RxTourLog
Touren-Logistik für Transporte, Fahrzeuge, Fahrer
RxLangManTool
Steuern und Verwalten von Sprachdateien für die Übersetzungen der Programme in alle möglichen Sprachen
SapExImport
Export/Import von/zu SAP
TPS
TestProtocollSystem zum Imporieren/speichern/verwalten von Prüfprotkollen verschiedensten Hersteller von Prüfsystemem
GevitasMapSupport
Einbinden von GoogleMaps, Ermitteln von Entfernungen
Ms2MySQL
Konverter MS-SQL-Datenbank zu mySQL
WebService
Abgleich von Dokumenten mit einer Web-Site, z.B. Artikel-Katalog-Bilder


RxInteressantes 08Module.png
Die größte SQL-Abfrage ist diese:
select 1 as Satzart, MAUFKO.AUFTRNR,MAUFKO.STATUSNR,MAUFKO.STATUSTEXT,MAUFKO.TransportStatus,
MAUFKO.TransportProjektNr, MAUFKO.TransportProjektNr_B,
MAUFKO.ADRNR,MAUFKO.ADRKURZNAME, MAUFKO.ADRESSE, MAUFKO.ADRANSPR_ID_STRING,
MAUFKO.LANDKENNZ,MAUFKO.PLZ,MAUFKO.ORT,MAUFKO.LAND,MAUFKO.VERANSTNAME,
MAUFKO.VERANSTVONDAT as TransportDatum,MAUFKO.VERANSTVONZEIT as TransportZeit,MAUFKO.VERANSTVONTEXT as TransportText,
MAUFKO.BEARBEITER,MAUFKO.DATUMVON,MAUFKO.ZEITVON,MAUFKO.DATUMBIS,MAUFKO.ZEITBIS,
MAUFKO.LogistikKennz_L1, MAUFKO.LogistikKennz_L2, MAUFKO.LogistikKennz_T1, MAUFKO.LogistikKennz_T2,
MAUFKO.LogistikKennzR_L1, MAUFKO.LogistikKennzR_L2, MAUFKO.LogistikKennzR_T1, MAUFKO.LogistikKennzR_T2,
0 as BESTKO_KennzMieteKauf,
MAUFLIAN.TransportZonen_ID,TransportZonen.Zone as Zone,
MAUFLIAN.TransportKennz,
MAUFLIAN.ORT as AktionsOrt,MAUFLIAN.PLZ as AktionsPlz,MAUFLIAN.LANDKENNZ as AktionsLandKennz,MAUFLIAN.STR as AktionsStr,
MAUFLIAN.Adresse AktionsAdresse,
MAUFLIAN.TransportKennz1,
Entfernungen.EntfernungKm,
(
select sum( AktZuladung ) from TRAPOPROJEKTLADEEINHEIT
where auftrnr = MAUFKO.AUFTRNR and MAUFKO.StatusNr <> 1
) as DispoGewicht,
(
select sum( AktVolumen ) from TRAPOPROJEKTLADEEINHEIT
where auftrnr = MAUFKO.AUFTRNR and MAUFKO.StatusNr <> 1
) as DispoVolumen,
(
select sum( A.BRUTTOGEWICHT * (P.AUFTRMENGE + P.RESERVEMENGE  ) ) from MAUFPO P
left outer join MART A on A.artnr=P.artnr
where auftrnr = MAUFKO.AUFTRNR
) as Gewicht,
(
select sum( A.BRUTTOGEWICHT * (P.AKTAUSGMENGE - P.BISHRUECKMENGE ) ) from MAUFPO P
left outer join MART A on A.artnr=P.artnr
where auftrnr = MAUFKO.AUFTRNR
) as AusgabeGewicht,
(
select sum( A.VERP_VOLUMEN * (P.AUFTRMENGE + P.RESERVEMENGE ) ) from MAUFPO P
left outer join MART A on A.artnr=P.artnr
where auftrnr = MAUFKO.AUFTRNR
) as Volumen,
(
select sum( A.VERP_VOLUMEN * (P.AKTAUSGMENGE - P.BISHRUECKMENGE ) ) from MAUFPO P
left outer join MART A on A.artnr=P.artnr
where auftrnr = MAUFKO.AUFTRNR
) as AusgabeVolumen
FROM MAUFKO MAUFKO
left outer join MAUFLIAN MAUFLIAN on MAUFLIAN.AUFTRNR=MAUFKO.AUFTRNR
left outer join ENTFERNUNGEN Entfernungen on Entfernungen.Plz=MAUFLIAN.PLZ and Entfernungen.Ort=MAUFLIAN.ORT
left outer join TRANSPORTZONEN TransportZonen on TransportZonen.ID=MAUFLIAN.TransportZonen_ID
where
 ( MAUFKO.AUFTRNR=900003682) or
 (
  (
 MAUFKO.VERANSTVONDAT >= '22.07.2021'
 and MAUFKO.VERANSTVONDAT <= '29.07.2021'
 and MAUFKO.STATUSNR in (1,2,99)
 and (MAUFKO.TransportProjektNr=0 or MAUFKO.TransportProjektNr is NULL)
 and MAUFKO.VERANSTVONTEXT='Veranst. von'
 and (select count(*)  from TRAPOPROJEKTLADEEINHEIT where AuftrNr=MAUFKO.AUFTRNR  and MAUFKO.STATUSTEXT='AUSG') = 0
 )
 or
 (
 MAUFLIAN.TransportKennz = 1 and MAUFKO.TransportProjektNr=0 and MAUFKO.STATUSNR in (1,2,99)
 and MAUFKO.DATUMVON <= '30.07.2021'
 )
)
union
select 2 as Satzart,MAUFKO.AUFTRNR,MAUFKO.STATUSNR,MAUFKO.STATUSTEXT,MAUFKO.TransportStatus,
MAUFKO.TransportProjektNr, MAUFKO.TransportProjektNr_B,
MAUFKO.ADRNR,MAUFKO.ADRKURZNAME,MAUFKO.ADRESSE,MAUFKO.ADRANSPR_ID_STRING,
MAUFKO.LANDKENNZ,MAUFKO.PLZ,MAUFKO.ORT,MAUFKO.LAND,MAUFKO.VERANSTNAME,
MAUFKO.VERANSTBISDAT as TransportDatum,MAUFKO.VERANSTBISZEIT as TransportZeit,MAUFKO.VERANSTBISTEXT as TransportText,
MAUFKO.BEARBEITER,MAUFKO.DATUMVON,MAUFKO.ZEITVON,MAUFKO.DATUMBIS,MAUFKO.ZEITBIS,
MAUFKO.LogistikKennz_L1, MAUFKO.LogistikKennz_L2, MAUFKO.LogistikKennz_T1, MAUFKO.LogistikKennz_T2,
MAUFKO.LogistikKennzR_L1, MAUFKO.LogistikKennzR_L2, MAUFKO.LogistikKennzR_T1, MAUFKO.LogistikKennzR_T2,
0 as BESTKO_KennzMieteKauf,
MAUFRUECKAN.TransportZonen_ID,TransportZonen.Zone as Zone,
MAUFRUECKAN.TransportKennz,
MAUFRUECKAN.ORT as AktionsOrt,MAUFRUECKAN.PLZ as AktionsPlz,MAUFRUECKAN.LANDKENNZ as AktionsLandKennz,MAUFRUECKAN.STR as AktionsStr,
MAUFRUECKAN.Adresse AktionsAdresse,
MAUFRUECKAN.TransportKennz1,
Entfernungen.EntfernungKm,
(
select sum( AktZuladung_B ) from TRAPOPROJEKTLADEEINHEIT
where auftrnr = MAUFKO.AUFTRNR
) as DispoGewicht,
(
select sum( AktVolumen_B ) from TRAPOPROJEKTLADEEINHEIT
where auftrnr = MAUFKO.AUFTRNR
) as DispoVolumen,
(
select sum( A.BRUTTOGEWICHT * (P.AUFTRMENGE + P.RESERVEMENGE - P.BISHRUECKMENGE ) ) from MAUFPO P
left outer join MART A on A.artnr=P.artnr
where auftrnr = MAUFKO.AUFTRNR
) as Gewicht,
(
select sum( A.BRUTTOGEWICHT * (P.AKTAUSGMENGE - P.BISHRUECKMENGE  + P.AUSGFREMDMENGE ) ) from MAUFPO P
left outer join MART A on A.artnr=P.artnr
where auftrnr = MAUFKO.AUFTRNR
) as AusgabeGewicht,
(
select sum( A.VERP_VOLUMEN * (P.AUFTRMENGE + P.RESERVEMENGE - P.BISHRUECKMENGE ) ) from MAUFPO P
left outer join MART A on A.artnr=P.artnr
where auftrnr = MAUFKO.AUFTRNR
) as Volumen,
(
select sum( A.VERP_VOLUMEN * (P.AKTAUSGMENGE - P.BISHRUECKMENGE  + P.AUSGFREMDMENGE ) ) from MAUFPO P
left outer join MART A on A.artnr=P.artnr
where auftrnr = MAUFKO.AUFTRNR
) as AusgabeVolumen
FROM MAUFKO MAUFKO
left outer join MAUFRUECKAN MAUFRUECKAN on MAUFRUECKAN.AUFTRNR=MAUFKO.AUFTRNR
left outer join ENTFERNUNGEN Entfernungen on Entfernungen.Plz=MAUFRUECKAN.PLZ and Entfernungen.Ort=MAUFRUECKAN.ORT
left outer join TRANSPORTZONEN TransportZonen on TransportZonen.ID=MAUFRUECKAN.TransportZonen_ID
where
 ( MAUFKO.AUFTRNR=900003682) or
(
 (
 MAUFKO.VERANSTBISDAT >= '22.07.2021'
 and MAUFKO.VERANSTBISDAT <= '29.07.2021'
 and MAUFKO.STATUSNR in (1,2,99)
 and (MAUFKO.TransportProjektNr_B=0 or MAUFKO.TransportProjektNr_B is NULL)
 and MAUFKO.VERANSTBISTEXT='Veranst. bis'
 )
 or
 (
  MAUFRUECKAN.TransportKennz = 1 and MAUFKO.TransportProjektNr_B=0 and MAUFKO.STATUSNR in (1,2,99)
  and MAUFKO.VERANSTBISDAT <= '30.07.2021'
 )
)
union
select 4 as Satzart, BESTKO.BESTNR,BESTKO.STATUSNR, BESTKO.STATUSTEXT,1 as BESTKO_TransportStatus,
BESTKO.TransportProjektNr, BESTKO.TransportProjektNr_B,
BESTKO.ADRNR,BESTKO.ADRKURZNAME,BESTKO.ADRESSE, as BESTKO_ADRANSPR_ID_STRING,
BESTKO.LANDKENNZ,BESTKO.PLZ,BESTKO.ORT,BESTKO.LAND,BESTKO.ZUVERANSTNAME as BESTKO_VERANSTNAME,
BESTKO.DATUMVON as TransportDatum,  as TransportZeit,BESTKO.VERSANDTEXT as TransportText,
BESTKO.BEARBEITERKURZN as BEARBEITER, BESTKO.DATUMVON,BESTKO.ZEITVON,BESTKO.DATUMBIS,BESTKO.ZEITBIS,
BESTKO.LogistikKennz_L1, BESTKO.LogistikKennz_L2, BESTKO. LogistikKennz_T1, BESTKO.LogistikKennz_T2, 
BESTKO.LogistikKennzR_L1,BESTKO.LogistikKennzR_L2,BESTKO.LogistikKennzR_T1, BESTKO.LogistikKennzR_T2,
BESTKO.KennzMieteKauf as BESTKO_KennzMieteKauf,
BESTLIAN.TransportZonen_ID,TransportZonen.Zone as Zone,
BESTLIAN.TransportKennz,
BESTLIAN.ORT as AktionsOrt,BESTLIAN.PLZ as AktionsPlz,BESTLIAN.LANDKENNZ as AktionsLandKennz,BESTLIAN.STR as AktionsStr,
BESTLIAN.Adresse AktionsAdresse,
BESTLIAN.TransportKennz1,
Entfernungen.EntfernungKm,
(
select sum( AktZuladung ) from TRAPOPROJEKTLADEEINHEIT
where BestNr = BESTKO.BESTNR
) as DispoGewicht,
(
select sum( AktVolumen ) from TRAPOPROJEKTLADEEINHEIT
where BestNr = BESTKO.BESTNR
) as DispoVolumen,
(
select sum( A.BRUTTOGEWICHT * (P.AUFTRMENGE - P.BISHLIEFERMENGE) ) from BESTPO P
left outer join MART A on A.artnr=P.artnr
where Bestnr = BESTKO.BESTNR
) as Gewicht,
(
select sum( A.BRUTTOGEWICHT * (P.AUFTRMENGE - P.BISHLIEFERMENGE) ) from BESTPO P
left outer join MART A on A.artnr=P.artnr
where Bestnr = BESTKO.BESTNR
) as AusgabeGewicht,
(
select sum( A.VERP_VOLUMEN * (P.AUFTRMENGE - P.BISHLIEFERMENGE) ) from BESTPO P
left outer join MART A on A.artnr=P.artnr
where Bestnr = BESTKO.BESTNR
) as Volumen,
(
select sum( A.VERP_VOLUMEN * (P.AUFTRMENGE - P.BISHLIEFERMENGE) ) from BESTPO P
left outer join MART A on A.artnr=P.artnr
where Bestnr = BESTKO.BESTNR
) as AusgabeVolumen
FROM BESTKO BESTKO
join BESTLIAN BESTLIAN on BESTLIAN.BESTNR=BESTKO.BESTNR
left outer join ENTFERNUNGEN Entfernungen on Entfernungen.Plz=BESTLIAN.PLZ and Entfernungen.Ort=BESTLIAN.ORT
left outer join TRANSPORTZONEN TransportZonen on TransportZonen.ID=BESTLIAN.TransportZonen_ID
where BESTKO.DATUMVON >= '22.07.2021'
and BESTKO.DATUMVON <= '29.07.2021'
and BESTKO.STATUSNR=2
and BESTKO.KENNZMIETEKAUF < 3
and (BESTKO.TransportProjektNr_B=0 or BESTKO.TransportProjektNr_B is NULL)
and (BESTKO.TransportDurchLieferant = 0)
union
select 3 as Satzart, BESTKO.BESTNR,BESTKO.STATUSNR, BESTKO.STATUSTEXT,1 as BESTKO_TransportStatus,
BESTKO.TransportProjektNr, BESTKO.TransportProjektNr_B,
BESTKO.ADRNR,BESTKO.ADRKURZNAME,BESTKO.ADRESSE, as BESTKO_ADRANSPR_ID_STRING,
BESTKO.LANDKENNZ,BESTKO.PLZ,BESTKO.ORT,BESTKO.LAND,BESTKO.ZUVERANSTNAME as BESTKO_VERANSTNAME,
BESTKO.DATUMBIS as TransportDatum,  as TransportZeit,
BESTKO.VERSANDTEXT as TransportText,
BESTKO.BEARBEITERKURZN as BEARBEITER, BESTKO.DATUMVON,BESTKO.ZEITVON,BESTKO.DATUMBIS,BESTKO.ZEITBIS,
BESTKO.LogistikKennz_L1, BESTKO.LogistikKennz_L2, BESTKO. LogistikKennz_T1, BESTKO.LogistikKennz_T2, 
BESTKO.LogistikKennzR_L1,BESTKO.LogistikKennzR_L2,BESTKO.LogistikKennzR_T1, BESTKO.LogistikKennzR_T2,
BESTKO.KennzMieteKauf as BESTKO_KennzMieteKauf,
BESTRUECKAN.TransportZonen_ID,TransportZonen.Zone as Zone,
BESTRUECKAN.TransportKennz,
BESTRUECKAN.ORT as AktionsOrt,BESTRUECKAN.PLZ as AktionsPlz,BESTRUECKAN.LANDKENNZ as AktionsLandKennz,BESTRUECKAN.STR as AktionsStr,
BESTRUECKAN.Adresse AktionsAdresse,
BESTRUECKAN.TransportKennz1,
Entfernungen.EntfernungKm,
(
select sum( AktZuladung ) from TRAPOPROJEKTLADEEINHEIT
where BestNr = BESTKO.BESTNR
) as DispoGewicht,
(
select sum( AktVolumen ) from TRAPOPROJEKTLADEEINHEIT
where BestNr = BESTKO.BESTNR
) as DispoVolumen,
(
select sum( A.BRUTTOGEWICHT * (P.AUFTRMENGE - P.BISHLIEFERMENGE) ) from BESTPO P
left outer join MART A on A.artnr=P.artnr
where Bestnr = BESTKO.BESTNR
) as Gewicht,
(
select sum( A.BRUTTOGEWICHT * (P.AUFTRMENGE - P.BISHLIEFERMENGE) ) from BESTPO P
left outer join MART A on A.artnr=P.artnr
where Bestnr = BESTKO.BESTNR
) as AusgabeGewicht,
(
select sum( A.VERP_VOLUMEN * (P.AUFTRMENGE - P.BISHLIEFERMENGE) ) from BESTPO P
left outer join MART A on A.artnr=P.artnr
where Bestnr = BESTKO.BESTNR
) as Volumen,
(
select sum( A.VERP_VOLUMEN * (P.AUFTRMENGE - P.BISHLIEFERMENGE) ) from BESTPO P
left outer join MART A on A.artnr=P.artnr
where Bestnr = BESTKO.BESTNR
) as AusgabeVolumen
FROM BESTKO BESTKO
join BESTRUECKAN BESTRUECKAN on BESTRUECKAN.BESTNR=BESTKO.BESTNR
left outer join ENTFERNUNGEN Entfernungen on Entfernungen.Plz=BESTRUECKAN.PLZ and Entfernungen.Ort=BESTRUECKAN.ORT
left outer join TRANSPORTZONEN TransportZonen on TransportZonen.ID=BESTRUECKAN.TransportZonen_ID
where BESTKO.DATUMBIS >= '22.07.2021'
and BESTKO.DATUMBIS <= '29.07.2021'
and BESTKO.STATUSNR=2
and BESTKO.KENNZMIETEKAUF < 3
and (BESTKO.TransportProjektNr=0 or BESTKO.TransportProjektNr is NULL)
and (BESTKO.TransportDurchLieferantR = 0)
order by TransportKennz desc, MAUFKO.VERANSTVONDAT,MAUFKO.ADRKURZNAME