sOrder Lieferzeit bei teilweise verfügbarem Artikel

Shopwre 5.6.8

Hallo Forengemeinde,

bei uns werden Lagerbestände angezeigt.

Bestellt ein Kunde nun von einem Artikel 2 Stück, von dem 1 Stück lagernd ist, so wird er im Bestellprozess auf den Minderbestand hingewiesen.

In der sOrder wird aber sofort lieferbar angezeigt. Was muss ich ändern damit in so einem Fall die Lieferzeit für nicht lagernde Artikel angezeigt wird ?

Eine Angabe der Lieferzeit genügt, da wir keine Teillieferungen machen.

ielen Dank für Ihre Bestellung bei {config name=shopName} (Nummer: {$sOrderNumber}) am {$sOrderDay} um {$sOrderTime}.
Informationen zu Ihrer Bestellung:

Pos. Art.Nr. Lieferbarkeit Menge Preis Summe
{foreach item=details key=position from=$sOrderDetails}
{$position+1|fill:4} {$details.ordernumber|fill:20} {if $details.modus == '0'} {if isset($details.active)&&!$details.active} bitte Lieferzeit anfragen {elseif $details.sReleaseDate && $details.sReleaseDate|date_format:"%Y%m%d" > $smarty.now|date_format:"%Y%m%d"} lieferbar ab: {$details.sReleaseDate|date:'date_long'} {elseif $details.esd} als Sofortdownload verfügbar {elseif $details.instock > 0} sofort lieferbar {elseif $details.shippingtime} lieferbar in {$details.shippingtime} Werktagen {else} bitte Lieferzeit anfragen {/if} {else} {/if} {$details.quantity|fill:6} {$details.price|padding:8} EUR {$details.amount|padding:8} EUR
{$details.articlename|wordwrap:49|indent:5}
{/foreach}

 

 

Hat niemand eine Idee wie man das lösen kann ?

Es ist ja nicht schön wenn 1 Stück lagend ist, der Kunde 500 bestellt und in der Bestellbestätigung „sofort lieferbar“ steht, obwohl 499 Stück eben nicht " sofort lieferbar" sind.

In diesem Fall wäre es besser wenn die Lieferzeit die für nicht lagernde Artikel angegeben ist angezeigt wird.

Ich hoffe einer unserer Spezialisten hier kann mir helfen Halo

Du kannst gerne einen Spezialisten bezahlen. Vielleicht löst er das Problem.

Ansonsten habe ich kurz gesehen, dass der Bestand (instock) bei den Variablen vorhanden ist. Die Bestellmenge ist auch bekannt. Bastel mal was daraus.

größer 0 = sofort lieferbar ist ja nicht korrekt wenn die Bestellmenge höher ist als der Bestand. Was für Variablen könnten denn da nützlich sein Mike ?                                        

Wolltest Du nicht den Fall abbilden wenn Bestellmenge > Bestand?

@NextMike schrieb:

Wolltest Du nicht den Fall abbilden wenn Bestellmenge > Bestand?

ja

ja, dann ist es $details.quantity und $details.instock

Dies müsstest Du als Bedingung einsetzen.

Komme ich der Lösung so näher ? Wäre prima wenn jemand der sich damit auskennt die Abfrage korrekt darstellt



{elseif $details.instock and $details.quantity > = $details.instock } sofort lieferbar 

Ist hier jemand der bereit ist mir zu helfen bitte ? Bekomme das alleine nicht hin.

Ist doch schon die Lösung? Sollte bereits so funktionieren. 

Kannst das ja mal im Standard testen - vermutlich greift irgend eine andere Kondition.

Musst das elseif instock > 0 rausnehmen - sonst greift das immer.

Gruß Alex

{if Bedingung} heißt “falls” und {elseif Bedingung} heißt “ansonsten falls”, {else} heißt “ansonsten”

Damit musst Du die kompletten Bedingungen lesen und ggf. anpassen. Mit {/if} schließen. Darüber nachzudenken, das nimmt Dir niemend ab.

{if Bedingung} Tu das

{elseif Bedingung}  tu jenes

{else} tu noch was anderes

 {/if}

Bedingung kann sein: x > y

{if},{elseif},{else} | Smarty 

 

Zunächst Danke

Meine Abfrage funktioniert nicht. Ist das “and” falsch ?

{elseif $details.instock and $details.quantity > = $details.instock } sofort lieferbar {/if}

{elseif $details.instock > = $details.quantity} sofort lieferbar {/if}

funktioniert auch nicht

and ist nicht generell falsch. Es kommt darauf an was Du ausdrücken möchtest. Ganz sicher scheitert es schon an dem Abstand zwischen > und =

Mal davon ab, wolltest Du nicht den Fall abbilden wo die Zeile nicht sofort lieferbar ist?

Nein, nicht sofort lieferbar ergibt sich ja aus den anderen Abfragen, kopiere das nochmal hierher.

Pos. Art.Nr. Lieferbarkeit Menge Preis Summe
{foreach item=details key=position from=$sOrderDetails}
{$position+1|fill:4} {$details.ordernumber|fill:20} {if $details.modus == '0'} {if isset($details.active)&&!$details.active} bitte Lieferzeit anfragen {elseif $details.sReleaseDate && $details.sReleaseDate|date_format:"%Y%m%d" > $smarty.now|date_format:"%Y%m%d"} lieferbar ab: {$details.sReleaseDate|date:'date_long'} {elseif $details.esd} als Sofortdownload verfügbar {elseif $details.instock > 0} sofort lieferbar {elseif $details.shippingtime} lieferbar in {$details.shippingtime} Werktagen {else} bitte Lieferzeit anfragen {/if} {else} {/if} {$details.quantity|fill:6} {$details.price|padding:8} EUR {$details.amount|padding:8} EUR
{$details.articlename|wordwrap:49|indent:5}
{/foreach}

Ich möchte nur die Abfrage für die sofort lieferbaren Artikel anpassen. Deswegen beginnt die Abfrage ja mit elseif und nicht mit if. Du hast natürlich recht >= muss ohne Leerzeichen sein.

Teste jetzt mal das.

{elseif $details.instock >= $details.quantity} sofort lieferbar

 

So funktioniert es, schönen Dank nochmal an euch zwei.

Mich wundert das es so nicht als Standard angelegt ist, aber was solls.