Rappen und Öre Problem beim Währungsumschalten

Begonnen von mt, Juli 15, 2008, 09:48:14

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

mt

Hallo,

ich habe da ein ganz spezielles Problem.

Da es im skandinavischen Raum als kleinste Münze nur die 50 Öre Münze
und in der Schweiz nur die 5 Rappen-Münze gibt, möchte ich gern das beim Umschalten
der Währung die Preise automatisch auf diese Besonderheiten angepasst werden.

Das ich die Preise Global manipulieren kann ist mir klar, da ich die Callback-Funktion
'modify_db_price' schon benutze. (für Händlerpreisfaktoren etc.).

Kann ich diese oder eine Ähnlich Funktion bei der Währungsumschaltung nutzen?

Gruß
mt


mt

Hallo dobra,

Danke für die schnelle Antwort! :)

Leider meinte ich etwas anderes. Ich möchte gern das die Artikel-Preise im Shop sich auch
dementsprechend verändern (eben wie bei 'modify_db_price'). Die Berechnung an sich
ist mir schon bekannt gewesen.

Ich persönlich würde nur ein wenig irretiert sein, wenn der Preis im Warenkorb ein anderer ist als
die Gesamtsumme der Artikelpreise, daher würde ich mir halt eine 'bessere' Lösung wünschen.

Gruß
mt

dobra

#3
Hallo mt,

also wenn's nur um die Preisanzeige und nicht um die Berechnung geht, versuch mal das:

<!--spmacro:module(test)
sub rpreis {
my $index = $_[0];
my $anzahl = $_[1];
if ($index <= $anzahl) {
my $preis = ssp::get_var_article('preis',$index);
main::mprint( &main::fp(sprintf("%.1f",$preis) )) ;
}
return 0;
}
-->


__preis__ mit __test::rpreis__ ersetzen

habe es allerdings jetzt mal nur auf Detailseiten getestet

sorry - habe gerade gemerkt, daß das so nicht geht
damit wird nur auf .10, .20 usw auf/ab gerundet - Du brauchst ja .00 bzw. .05
mfG
dobra

mt

Und wieder danke für Deine Mühen :)

Bei mir muss aber beides in Kombination stimmen (Anzeige und Berechnung).
Ich manipuliere den Preis ja schon über 'modify_db_price' und kann daher
leider keinen eigenen Platzhalter für die Preisanzeige nehmen.

Außerdem sollte der Preis ja nicht dauerhaft manipuliert sein, sondern sich nach der
Währungsumschaltung richten. Die dauerhafte Manipulierung kann ich ja über
'modify_db_price' lösen. Das heißt z.B. ich komme als schwedischer User in einen
englischsprachigen Shop und kann mit dem EUR nix anfangen, schalte daher mit dem
Währungsumschalter von SPilot die Währung in SEK um. Nun sollen die Preise an
auf 50 Öre oder auch auf die ganze Krone gerundet dargestellt und berechnet werden.

Ich weiß, ist alles sehr speziell aber da wir viele Händler mit unterschiedlichen Preisen und Sprachen
haben ist das alles bei uns nicht so einfach.

Trotzdem nochmal DANKE!

Gruß
mt

dobra

#5
naja - da kann ich wohl dann leider nicht helfen  :(
....soweit reicht mein "Können" (noch) nicht - muß noch sehr viel lernen.........

P.S.:

falls doch mal jemand die auf .05 bzw .00 gerundete Preisanzeige braucht:

so geht's:

<!--spmacro:module(test)
sub rpreis {
my $index = $_[0];
my $anzahl = $_[1];
if ($index <= $anzahl) {
my $preis = ssp::get_var_article('preis',$index);
$preis = ($preis*20);
my $preis2 = int($preis) ;
main::mprint( &main::fp(($preis2)/20));
}
return 0;
}
-->
mfG
dobra

ahe

Hallo mt,

wenn Sie sowieso schon das Callback "modify_db_price" benutzen, können Sie dort ja auch direkt die Rundung vornehmen.
MfG ahe

mt

Hallo ahe,

ja, ich weiß nur nicht wie ich feststelle welche Währung der User ausgewählt hat.
Habe in der Hilfe zum Thema Währung nur den Platzhalter zum Umschalten gefunden.
Gibt es da eine SSP-Variable die ich auswerten kann?

Gruß
mt

ahe

Wenn Sie __xchgcurrencyN__ verwenden, wird die ID der gewählten Währung im Warenkorb gespeichert.
--> ssp::cart_read_var("curc");
MfG ahe

mt

Danke, werde es ausprobieren.

Ist denn 'ssp::cart_read_var("curc")' auch außerhalb vom Warenkorb (Artikleseiten oder Detailseiten) vorhanden?

dobra

Hallo mt,

ja - ssp::cart_read_var ist auf allen Seiten abrufbar!
Das weiß ich, da ich diese Funktion schon seit langem verwende  ;)
mfG
dobra

mt

Danke, hat funktioniert  :D ABER  :(

Bei der Auswahl der Währung wird der EUR-Preis zugrunde gelegt.
Das hat zur folge, das der EUR-Wert durch 'modify_db_price' verändert wird.
und sich erst danach in SEK (Kronen) umrechnet.

Das heist:

37,90 EUR -> 'modify_db_price' -> 38,00 EUR -> 359,76 SEK

Ich brauche aber die Kronen als glatten Wert.

Ideal wäre also:

37,90 EUR -> 358,81 SEK -> 'modify_db_price' -> 359,00 SEK

Bin da echt ratlos. ???

Gruß
mt

ahe

Hier mal ein kleines Beispiel wie Sie die Rundung hinkriegen sollten.
$pf muss den Preisfaktor enthalten, der auch im Shop für die Fremdwährung eingetragen ist.


<!--spmacro:module(Callback)
sub modify_db_price {
    my ($price, $itemid) = @_;
   
    ## Hier erst die alten Berechnungen
   
    my $pf = 1.23456;
    my $price_new = $pf * $price;
    $price_new = runden($price_new*20)/20;
   
    return $price_new / $pf;
}

## kaufm. runden
sub runden {
    my $val = shift || 0;

    my $r =  ( $val < 0 ) ? -1 : 1;
    $r *= 0.5;
   
    return int($val + $r);
}
--> 
MfG ahe

mt

Hallo,

meinen Sie mit dem $pf den Umrechnungskurs?
Der wird doch dynamisch im Shop hinterlegt und bei jedem Update aktualisiert.
Wenn ich diesen fest in das Script schreibe, muss ich ja täglich diesen Wert korrigieren.
Kann ich nicht den Umrechnungskurs aus dem Shop auslesen?
Und was passiert eigentlich mit der Umrechenautomatik vom Shop selber,
die ist doch durch das Script nicht ausgeschalten, oder doch?
'modify_db_price' beeinflusst doch nur den Preis VOR der Umrechnung.

Irgendwie habe ich noch mehr Fragen als vorher. ???

Gruß
mt


ahe

Die Berechnung sollte schon funktionieren.
Das ganze ist ein wenig Dreisatz, der dazu führt, dass die später errechnete Fremdwährung gerundet ist.
Zum Zugriff auf die im Workcenter eingetragenen Umrechnungsfaktoren gibt es noch keine Schnittstellenfunktion.
Ich schicken Ihnen eine "unsaubere" (aber funktionierende ;)) Methode gleich per PM.
MfG ahe