[CC] gelöst - Frachtkosten Suche beschleunigen / optimieren

14. Oktober 2014 11:37

Hi,

ich habe eine Erweiterung programmiert welche dazu dient Frachtkosten für eine bestimmte PLZ zu ermitteln.
Die Funktionsweise ist in etwa so:
Es gibt eine Tabelle Frachtkosten, dort sind Frachtgruppen hinterlegt, jede Frachtgruppe bekommt eine PLZ und einen Preis (es gibt noch weitere Kriterien wie ab bestimmter Menge, Auftragswert usw... spielen aber meines erachtens nach keine Rolle).

Habe also eine Tabelle mit Frachtkosten, Frachtgruppe,PLZ,Preis
Die PLZ kann * beinhalten z.B.

Frachtgruppe | PLZ | Preis
Frachtgruppe | 41564 | 10
Frachtgruppe | * | 20
Frachtgruppe | 4156* | 15
Frachtgruppe | 31265 | 35
Frachtgruppe | 01000 | 40
....

So. je nach Frachtgruppe kommt da schonmal eine Liste von 1000-2000 PLZ's zusammen.

Bisher bin ich wie folgt vorgegangen:
Angenommen ich möchte Frachtkosten für die Gruppe Frachtgruppe und PLZ 41564

In eine Temporäre PLZ Tabelle füge ich die 41564 ein.
Anschließend gehe ich durch alle Frachtkosten Datensätze und prüfe ob ich ein Treffer habe:

Code:
TempPlz.SETFILTER(Code,'%1',FrachtkostenTabelle."Post Code");
IF TempPlz.FIND THEN
  MerkeFrachtkostenDatensatz();


Mit dem Filter (PLZ 41564) würde ich von den obigen 5 Einträgen folgende Ergebnisse bekommen:

Frachtgruppe | * | 20
Frachtgruppe | 4156* | 15
Frachtgruppe | 41564 | 10

Soweit so gut. Wenn ich aber nun für meine Frachtkosten Datensätze, 1000-2000 einen SetFilter auf die TempPLZ Tabelle setze um zu schauen ob ich ein treffer lande, dann geht das System doch arg in die Knie, bzw. die Berechnung dauert recht lange. Da diese Erweiterung Frachtkosten für unseren WebShop ermittelt, ist das nicht akzeptabel.

Nun habe ich überlegt. ob ich anstatt der Überprüfung mit Setfilter evtl. Ein String /Text Vergleich machen soll , aber das dauert ähnlich lange (wenn nicht noch länger) abgesehen von der mühseligkeit das * und Platzhalter zu behandeln.

Jemand eine Idee wie ich das Beschleunigen könnte?

Danke
Zuletzt geändert von elTorito am 15. Oktober 2014 14:59, insgesamt 1-mal geändert.

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

14. Oktober 2014 12:51

Man könnte versuchen, die Einträge mit * weg zu bekommen. Die, die nur aus * bestehen, sind sowieso immer gültig. Darauf brauchst du erst gar nicht zu filtern. Und anstelle 4156* schreibst du 10 Datensätze von 41560 bis 41569, damit die PLZ explizit da steht.

Danach müsste es doch, vorausgesetzt, dass der Schlüssel es hergibt, ein find('-')-Aufruf (mit den Filtern vorab) sein, der dir den besten Preis liefert, oder?

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

14. Oktober 2014 13:45

McClane hat geschrieben:Man könnte versuchen, die Einträge mit * weg zu bekommen. Die, die nur aus * bestehen, sind sowieso immer gültig. Darauf brauchst du erst gar nicht zu filtern. Und anstelle 4156* schreibst du 10 Datensätze von 41560 bis 41569, damit die PLZ explizit da steht.

Danach müsste es doch, vorausgesetzt, dass der Schlüssel es hergibt, ein find('-')-Aufruf (mit den Filtern vorab) sein, der dir den besten Preis liefert, oder?

Das war auch mein erster Gedanke.
Um die Eingabe der PLZ zu vereinfachen könnte man dann eine Stapelverarbeitung schaffen, welche die Zeilen füllt.

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

14. Oktober 2014 15:24

Hi,

hab auch schon überlegt das mit den * irgendwie wegzubekommen, weil da auch scheinbar die ganze Performance drauf geht.

Letztendlich aber brauche ich die , ich versuch mal zu veranschaulichen:

Die Frachtkosten werden hinterlegt:
Schlüsselfelder: Frachtgruppe, Land, PLZ, Ab Menge/Wert, Preis , also je nach gewünschte Staffelung jede Menge einträge...
frachtkosten.jpg


Jede Frachtgruppe ist ein Artikel zugeordnet, aus einem VK Auftrag heraus bilde ich die Summen der ARtikel welcher einer Frachtgruppe angehören und erhalte ein Ergebnis wie etwa folgt:
frachtkosten1.jpg


Nun habe ich eine Zeile vom Typ "Frachtkosten Gruppen Summe" wo ich die PLZ habe und die benötigten "ab.." Staffelwerte habe, damit gehe ich durch die in frage kommendenen Frachtkosten, und siche mir die passende raus:

Das sieht bisher so aus:
frachtkosten2.jpg


An der Stelle brauche ich die * Datensätze weil die Preise ja auch für die PLZ 18565 gültig sind.
best Of hole ich mir von den übrig gebliebenen, also wenn z.B. zwei Datensätze sind wo der eine PLZ 18565 hat und der andere * , davon der beste Preis dann.

Allerdings soll sich das wohl noch ändern, mein Chef überlegt noch, und kein "Best of" , demnach wird es wahrscheinlich so sein das wenn die PLZ komplett hinterlegt ist, diese gezogen werden soll, und nur dann wenn keine PLZ hinterlegt ist, soll der Datensatz mit dem * gezogen werden, sofern vorhanden, macht die Sache aber nicht unbedingt einfacher :) Es darf auch nach 18* gesucht werden...

Ich hab nun die Frachtkosten vorgefiltert auf z.B.
Code:
Frachtkosten.SETFILTER("Post Code",'%1|%2|%3|%4|%5',18565, 1856*,185*,18*,1*);


Damit gehts schonmal ne ganze Ecke schneller, weil die 2*,3* usw... wegfallen...
Fehlt mir dann immer noch der Datensatz mit der PLZ = *

Sieht momentan so aus:

Code:
Function CopyFrachtkosten(FromFrachtkosten, ToFrachtkosten,Frachtkostengruppe,PostCode)
{
TempPLZ.Deleteall;
TempPlz.INIT;
Templz.INIT;
TempPLZ.Code := PostCode;
If NOT TempPLZ.INSERT THEN; //Nichts

WITH ToFrachtkosten DO BEGIN
   PC1 := ZipCode;
   PC2 := COPYSTR(ZipCode,1,4) +'*';
   PC3 := COPYSTR(ZipCode,1,3) +'*';
   PC4 := COPYSTR(ZipCode,1,2) +'*';
   PC5 := COPYSTR(ZipCode,1,1) +'*';

   FromFrachtKosten.SETFILTER("Post Code",'%1|%2|%3|%4|%5',PC1,PC2,PC3,PC4,PC5);
   IF FromFrachtkosten.FINDSET THEN
       REPEAT
            IF (FromFrachtkosten."Post Code" <>'') AND (PostCode<>'') 
                                     AND PossibleMatch(FromFrachtkosten."Post Code", "Post Code") THEN BEGIN
                  TempPLZ.SETFILTER(Code,'%1',FromFrachtkosten."Post Code");
                  IF TempPLZ.FIND('-') THEN BEGIN
                       ToFrachtkosten := FromFrachtkosten;
                       INSERT;
                  END;
            END;
       UNTIL FromFrachtkosten.NEXT = 0;
END;

}


Function PossibleMatch(FrachtKostenPostCode, PostCode{

PC1 := PostCode;
PC2 := COPYSTR(PostCode,1,4) +'*';
PC3 := COPYSTR(PostCode,1,3) +'*';
PC4 := COPYSTR(PostCode,1,2) +'*';
PC5 := COPYSTR(PostCode,1,1) +'*';
PC6 := '*';

IF (
   (FrachtKostenPostCode= PC1) OR
   (FrachtKostenPostCode= PC2) OR
   (FrachtKostenPostCode= PC3) OR
   (FrachtKostenPostCode= PC4) OR
   (FrachtKostenPostCode= PC5) OR
   (FrachtKostenPostCode= PC6)
   ) THEN
    EXIT(TRUE)
ELSE
  EXIT(FALSE);
}


Ich hab mir das bei uns in der Codeunit 7000 abgeguckt (CopySalesDiscToSalesDisc entspricht meiner CopyFrachtkosten), dort wurde bei uns erweitert um eine Artikelfilterrabatt Funktionalität,
es gibt ja Artikel Rabatte pro Artikelgruppe oder EinzelArtikel, und bei uns gibt es zusätzlich Filterrabatte, wo wir sagen können Alle Artikel die mit B1* anfangen rabatt x bekommen.

Dann tüftel ich mal weiter :)
Danke
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

14. Oktober 2014 15:38

elTorito hat geschrieben:Frachtkosten.SETFILTER("Post Code",'%1|%2|%3|%4|%5',18565, 1856*,185*,18*,1*);

Dir ist schon klar, dass das Ergebnis gleich Filter auf '1*' ist?

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

14. Oktober 2014 16:03

Ich glaube dein obiger Filter wäre auch nicht ganz richtig.

elTorito hat geschrieben:
Code:
Frachtkosten.SETFILTER("Post Code",'%1|%2|%3|%4|%5',18565, 1856*,185*,18*,1*);


Du würdest so bspw. auch auf 19999 Filtern, obwohl du den gar nicht möchtest (wegen 1*).

Wie wäre es das * wegzulassen, wie schon oben vorgeschlagen ?

Wenn du ein PLZ Range haben möchtest und nicht jeden Datensatz einfügen möchtest könntest du evtl. mit "Start PLZ" und "End PLZ" arbeiten, so wie das bei den Verkaufspreisen mit Startdatum und Enddatum ist.
Damit könntest du auch ein PLZ Code * abbilden mit Start PLZ=00000 und End PLZ=99999. (Gilt natürlich nur für DE.)

P.S.: Ich weiß nicht wo es geschrieben steht, aber ich würde generell nicht empfehlen Daten mit Filterzeichen wie bspw. * oder ? zu speichern. Oder stehe ich damit allein :?:

mfg,
winfy
Zuletzt geändert von winfy am 14. Oktober 2014 16:24, insgesamt 1-mal geändert.

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

14. Oktober 2014 16:24

Dir ist schon klar, dass das Ergebnis gleich Filter auf '1*' ist?


:lol: :oops: :mrgreen: :-?

Ich schlaf nochmal drüber, ich glaub ich verschlimmbessere es gerade nur :)
Oder lasse mich grad verwirren?

Gedanken:
Ich hab die PLZ 18565 und brauche alle Datensätze mit Frachtkosten auf denen ich die 18565 anwenden kann.

Demnach auch ein Frachtkosten Datensatz der die PLZ 1* beinhaltet , weil wenn ein Frachtkostenpreis für PLZ region 1*
hinterlegt ist, könnte dieser besser sein, als ein preis der für 18* oder 18565 hinterlegt ist.

P.S.: Ich weiß nicht wo es geschrieben steht, aber ich würde generell nicht empfehlen Daten mit Filterzeichen wie bspw. * zu speichern. Oder stehe ich damit allein?


Ja, habe ich auch mal gelesen/gehört.
Aber gerade das ist ja das Tricky an dem verfahren :lol: Die PLZ aus dem Frachtkosten Datensatz dient mir als Filter zum ermitteln ob die PLZ passt.

War fast 2 Jahre gut das ganze, bis jetzt auf einmal für einige Frachtgruppen 1000-2000 PLZ kamen, solange wir nur mit Frachtpreis für Region 18* hatten war das kein problem, in die Temp PLZ wurde 18565 eingetragen, und darauf der Filter 18* angewendet , 1 datensatz)

ich schlaf nochmal drüber.
Zuletzt geändert von elTorito am 14. Oktober 2014 16:31, insgesamt 1-mal geändert.

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

14. Oktober 2014 16:26

elTorito hat geschrieben:Ich hab die PLZ 18565 und brauche alle Datensätze mit Frachtkosten auf denen ich die 18565 anwenden kann.

Demnach auch ein Frachtkosten Datensatz der die PLZ 1* beinhaltet , weil wenn ein Frachtkostenpreis für PLZ region 1*
hinterlegt ist, könnte dieser besser sein, als ein preis der für 18* oder 18565 hinterlegt ist.


Du willst aber sicher keine Frachtkosten die nur auf "19999" geschlüsselt sind, oder?
Die würdest du aber durch den Filter 1* mit betrachten.

Wie gesagt:
winfy hat geschrieben:Wenn du ein PLZ Range haben möchtest und nicht jeden Datensatz einfügen möchtest könntest du evtl. mit "Start PLZ" und "End PLZ" arbeiten, so wie das bei den Verkaufspreisen mit Startdatum und Enddatum ist.


mfg,
winfy

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

14. Oktober 2014 16:42

winfy hat geschrieben:Du willst aber sicher keine Frachtkosten die nur auf "19999" geschlüsselt sind, oder?
Die würdest du aber durch den Filter 1* mit betrachten.

mfg,
winfy


Ja, hmm... jein... verwirrt...

Also , den Vorfilter mal weglassen , der war bisher eh nicht da. Das weg:
Code:
Frachtkosten.SETFILTER("Post Code",'%1|%2|%3|%4|%5',18565, 1856*,185*,18*,1*);


Dann habe ich in der TempPLZ Tabelle den datensatz 18565 drin stehen.

Dann habe ich in der Frachtkosten tabelle den Datensatz mit PLZ 1* drin stehen.

dann:
Code:
TempPLZ.SETFILTER(Code,'%1',FromFrachtkosten."Post Code");
                  IF TempPLZ.FIND('-') THEN BEGIN
                  END;


Damit erhalte ich keine Frachtkosten die auf 19999 geschlüsselt sind.

Es wird geprüft ob ich die PLZ 18565 gültig ist wenn ich den Filter 1* anwende.
Genauso wird geprüft ob die PLZ 18565 gültig ist wenn ich den Filter 19999 anwende.

Wie gesagt, die PLZ im Frachtkosten Datensatz ist quasi mein Filter. Solange ich alle Frachtkostendatensätze durchlaufe und jeden Filter anwende, kein problem, dauert halt nur.

Ich müsste quasi einen Vorfilter haben, der mir alles raussortiert was sowieso nicht in Frage kommt, und mit dem was übrig bleibt nochmal einzeln durchgehen.

EDIT: So Feierabend, der Kopf raucht.. nochmal drüber schlafen und morgen mit Klare Gedanken nochmal ran :)

Schön abend noch

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

15. Oktober 2014 10:13

Okay verstehe was du meinst.
Du wirst so aber nicht die Performance verbessern können, da der Filter für PLZ * immer alle Frachtkosten betrachten würde.

Entweder du löst das ganz anders (siehe oben Start PLZ/ End PLZ) oder du trägst statt * einfach "ALLE" ein und filterst dann vor:
Code:
Frachtkosten.SETFILTER("Post Code",'%1|%2',PC5,'ALLE');


Code:
IF FromFrachtkosten."Post Code" = 'ALLE' then TempPLZ.SETFILTER(Code,'%1','ALLE')
else TempPLZ.SETFILTER(Code,'%1',FromFrachtkosten."Post Code");


mfg,
winfy

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

15. Oktober 2014 10:25

Moin Moin,

hier mal meine Änderung.

P.S.: Ich weiß nicht wo es geschrieben steht, aber ich würde generell nicht empfehlen Daten mit Filterzeichen wie bspw. * zu speichern. Oder stehe ich damit allein?


Im Ich hab das * nun rausgenommen. War zwar ganz bequem einfach das Feld als Filter anzuwenden, aber nunja, hab nun ein anderes Platzhalter Zeichen verwendet.

In meine FrachtkostenDatensätze gibt es nun :
Frachtgruppe | PLZ | Preis | ab Wert/menge
Frachtgruppe | 18565| 10 |100
Frachtgruppe | # | 20 | 200
Frachtgruppe | 1856# | 15 | 150
Frachtgruppe | 18# | 35 |150
Frachtgruppe | 18# | 40 |100
Frachtgruppe | 41564 | 40 |100
Frachtgruppe | 19999 | 40 |100
Frachtgruppe | 20156 | 40 |100
...

In meine Temporäre PLZ Tabelle kommen die Möglichen kombinationen, wenn ich Kosten für PLZ 18565 wissen möchte, speichere ich die möglichen kombinationen, die TempPlz sieht also so aus:
TempPlz1: #
TempPlz2: 1#
TempPlz3: 18#
TempPlz4: 185#
TempPlz5: 1856#
TempPlz6: 18565

Diese verwende ich auch um die Frachtkosten Vorzufiltern:
Code:
SETFILTER("Post Code",'%1|%2|%3|%4|%5|%6,TempPlz1,TempPlz2,TempPlz3,TempPlz4,TempPlz5,TempPlz6);


Damit fallen schonmal alle weg die mit 2, 3, 4, 5, 6,7,8,9 anfangen.

Das was über bleibt ist dann auch schon das was ich brauche:
frachtkosten.jpg


Welcher von diesen Preisen dann gezogen wird ist dann nochmal abhängig vom Warenwert, Menge, usw...

Bin aber noch etwas skeptisch, weil auf einmal schauts so einfach aus , geht jetzt auf jedenfall viel schneller so.

EDIT: Hmm. die TempPlz Tabelle kann ich mir nun wohl auch schenken.

EDIT2:
Code:
oder du trägst statt * einfach "ALLE" ein und filterst dann vor:

Ja. Das scheint mir nun auch so .

Danke
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

15. Oktober 2014 10:37

Du könntest noch durch deine Tabelle schauen, welche Datensätze wegen zu hoher Kosten sowieso niemals gezogen werden können und diese löschen.

Also: wenn du zB für den PLZ-Bereich 1 generell 20 Stück für 20 Euro verschicken kannst, brauchst du die Information nicht, dass es für PLZ 12345 auch noch 20 Stück für 30 Euro gibt.

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

15. Oktober 2014 10:48

wenn du zB für den PLZ-Bereich 1 generell 20 Stück für 20 Euro verschicken kannst, brauchst du die Information nicht, dass es für PLZ 12345 auch noch 20 Stück für 30 Euro gibt.


Ich denke schon: Wenn du nach PLZ 27* für 20 € versenden kannst, aber nach 27498 aber nur für 50€ :wink:

Gruß, Fiddi

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

15. Oktober 2014 11:06

fiddi hat geschrieben:
wenn du zB für den PLZ-Bereich 1 generell 20 Stück für 20 Euro verschicken kannst, brauchst du die Information nicht, dass es für PLZ 12345 auch noch 20 Stück für 30 Euro gibt.


Ich denke schon: Wenn du nach PLZ 27* für 20 € versenden kannst, aber nach 27498 aber nur für 50€ :wink:

Gruß, Fiddi


Jap. Die Inseln lassen grüßen :twisted:

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

15. Oktober 2014 11:15

elTorito hat geschrieben:Die Inseln lassen grüßen


Jajaja. Aber bei Ebbe könnte der LKW wieder rüber fahren und 1* würde doch gelten :wink:

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

15. Oktober 2014 11:20

Die Insel-PLZ würde ich gleich kennzeichnen und aussortieren, statt der normalen PLZ eine interne PLZ dazu, die bei diesen ein I-Präfix bekommt. Dann je nach Eingabe entweder Suche A oder Suche B, also so als ob die deutschen Inseln im Ausland wären.
https://www.opc-courier.com/files/pdf/PLZ_Inseln.pdf

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

15. Oktober 2014 11:56

Kowa hat geschrieben:Die Insel-PLZ würde ich gleich kennzeichnen und aussortieren, statt der normalen PLZ eine interne PLZ dazu, die bei diesen ein I-Präfix bekommt. Dann je nach Eingabe entweder Suche A oder Suche B, also so als ob die deutschen Inseln im Ausland wären.
https://www.opc-courier.com/files/pdf/PLZ_Inseln.pdf


Hi,

danke für den Link. Kann ich sicher noch gebrauchen.

Inseln werden schon aussortiert bzw. gesondert gekennzeichnet. Je nach Fall. Wir übernehmen die Frachtkosten Tabellen einiger Lieferanten, für Streckenlieferungen. Je nach Tabelle die wir da bekommen wird das unterschiedlich behandelt. So habe ich z.B. eine Tabelle wo 9 Frachtzonen gibt, in jeder Frachtzone gibt es mehrere PLZ Bereiche die bedient werden , z.B. 01000 bis 19999 , 2000 bis 30000 nicht vorhanden, 30000..31999... bis hin das solche Ranges auch Insel PLZ beinhalten, in der Fussnote aber steht Inseln auf Anfrage, in dem Falle wird für jede Frachtzone die PLZ von bis, als eigener Datensatz erstellt (inkl. Inseln, falls mit reinfallen), im Anschluss wird mit einer INsel PLZ Tabelle verglichen, und die Insel PLZ wieder rausgelöscht bzw. Auf Anfrage gesetzt.

Ein anderer Lieferant liefert die Tabelle mit 9 PLZ Gebieten, aber 17 Frachtzonen, und schlüsselt so das 010* bis 014* Preis X sind, in dem Falle kann ich mir das erstellen einzelner PLZ Datensätze schenken, weil ich es ja bequemer abbilden kann mit 010*.

So 100% ist das noch alles nicht, aber meistens zahlen wir nicht drauf :lol: Wenn die Performance jetzt stimmt, kann ich mich wieder um die Logik kümmern.
ich würde auch ganz gerne noch den Versand in Europa und Inseln abbilden.

Code:
Dann je nach Eingabe entweder Suche A oder Suche B, also so als ob die deutschen Inseln im Ausland wären.

Ja, nein... Würde glaub ich nur sinn machen wenn Insel Preise tatsächlich imemr anders sind. Wenn wir standardmässig ab 100 EUR Warenwert ein Paket kostenlos in DE verschicken, egal ob Festland oder Inseln. Müsste ich da ja wieder 2 Datensätze pflegen. Es könnte auch sein das ein Lieferant auf den Inseln hockt, und die Insel besteller keine Kosten für Streckenlieferung haben, aber der Versand aufs Festland kostet.

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

15. Oktober 2014 13:55

elTorito hat geschrieben:ich würde auch ganz gerne noch den Versand in Europa und Inseln abbilden.

Es sind nicht nur die Inseln. In Frankreich z.B. kommen da auch noch Bergregionen und andere "entlegene Gebiete" dazu, die werden von den dortigen Speditionen (z.B. Exapaq) allesamt mit saftigen Aufschlägen bedacht.
Einige Länder in Europa haben auch Exklaven
https://de.wikipedia.org/wiki/Liste_der ... d_Enklaven
Ich habe vor einiger Zeit für einen Kunden ein Kontrollprogramm zum Preisvergleich erstellt, ob die europaweit tätigen Speditionen korrekt abrechnen. Das ist wegen der vielen Ausnahmen, die es gibt, extrem kompliziert.

Bekannte PLZ-Probleme lt. UPU (Universal Postal Union):
http://www.upu.int/uploads/tx_sbdownloader/manualAddressingKnowledgeCentreGeneralIssuesEn.pdf

Re: [CC] Frachtkosten Suche beschleunigen / optimieren

15. Oktober 2014 14:59

Kowa hat geschrieben:Das ist wegen der vielen Ausnahmen, die es gibt, extrem kompliziert.


Ja. Einfach ist das wirklich nicht. Da verzettelt man sich auch so unheimlich schnell.
Das wir abbilden können. Bilden wir ab. Alles andere läuft auf "Auf Anfrage" .

Ist bei uns auch schon recht komplex, ich steig da ab und an selber nicht durch obwohl ich es programmiert habe ...

Wenn ein Kunde 3 Artikel von 3 verschiedenen Herstellern bestellt. Sind das 3 x Frachtkosten, z.B. 2 Artikel gehen Strecke, und 1 Artikel haben wir auf Lager, und weil Rechnungsbetrag X erreicht wurde, Ist der Artikel ab Lager Versandfrei. Tut man bei den 2 Artikel die Strecke gehen, bei einem 2 Stck. statt 1 Stck. nehmen, ist dann u.U. auch dieser Versandfrei,weil ab Menge X, wenn nicht ein Sonderfall wie Insel oder anderer, Dadurch das nun von dem einen Artikel 2 Stck. genommen wurden, ändert sich wieder der Rechnungsbetrag , und evtl. wird damit dann auch ein Gesamtwert erreicht ab dem auch die dritte Frachtkost Versandfrei wird, unter berücksichtigung das ab gewisser Mengen man einen Rabatt bekommt, und der Rechnungsbetrag dann wieder nach unten korrigiert wird, und somit evtl. Frachtkosten die vorher frei waren, weil ab Betrag X, nun doch auf einmal anfallen... ... Je nach Artikel und Frachtgruppen kommen dann noch Pauschalen hinzu für Kranentladung, oder Mindermengenzuschlag... Ein Teufelskreis...