Shopsystem ShopPilot

ShopPilot => SSP - Shop Server Pages => Thema gestartet von: mt am Juli 15, 2008, 09:48:14

Titel: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: mt am Juli 15, 2008, 09:48:14
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
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: dobra am Juli 15, 2008, 09:53:05
Hallo mt,

guck mal hier:
http://www.shoppilot.net/pf/ssp_bibliothek/rechnungssumme_auf_5_bzw_0_rappen_runden_rappenrundung_fuer_die_schweiz-t1018.0.html;msg3803#msg3803 (http://www.shoppilot.net/pf/ssp_bibliothek/rechnungssumme_auf_5_bzw_0_rappen_runden_rappenrundung_fuer_die_schweiz-t1018.0.html;msg3803#msg3803)
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: mt am Juli 15, 2008, 10:13:32
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
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: dobra am Juli 15, 2008, 11:11:59
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
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: mt am Juli 15, 2008, 11:35:05
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
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: dobra am Juli 15, 2008, 11:42:52
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;
}
-->
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: ahe am Juli 15, 2008, 13:04:28
Hallo mt,

wenn Sie sowieso schon das Callback "modify_db_price" benutzen, können Sie dort ja auch direkt die Rundung vornehmen.
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: mt am Juli 15, 2008, 13:11:20
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
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: ahe am Juli 15, 2008, 13:32:26
Wenn Sie __xchgcurrencyN__ verwenden, wird die ID der gewählten Währung im Warenkorb gespeichert.
--> ssp::cart_read_var("curc");
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: mt am Juli 15, 2008, 13:40:49
Danke, werde es ausprobieren.

Ist denn 'ssp::cart_read_var("curc")' auch außerhalb vom Warenkorb (Artikleseiten oder Detailseiten) vorhanden?
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: dobra am Juli 15, 2008, 13:47:39
Hallo mt,

ja - ssp::cart_read_var ist auf allen Seiten abrufbar!
Das weiß ich, da ich diese Funktion schon seit langem verwende  ;)
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: mt am Juli 15, 2008, 14:03:50
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
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: ahe am Juli 15, 2008, 14:51:20
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);
}
--> 
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: mt am Juli 15, 2008, 15:41:38
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

Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: ahe am Juli 15, 2008, 15:58:10
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.
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: mt am Juli 15, 2008, 16:28:40
DANKE für die 'unsaubere Lösung' aber leider
funktioniert das Script nicht ganz korrekt  :(.

1. Es rechnet falsch um ca. 4-5 Kronen zuviel
2. Die Beträge sind immer noch krumm:
   37,90  -> 363,55 SEK (falsch)
   Wäre so richtig:
   37,90 -> 359.24 -> mit Rundung dann 359,- SEK (Rundung auf die Ganzzahl reicht im schwedischen)

Hier nochmal mein Script (Auszug):



my $waehrung = ssp::cart_read_var("curc");

if(($waehrung == 3) || ($waehrung == 4) || ($waehrung == 5)){
       
  my $price_new = $waehrung_pf * $endergebnis;
  $price_new = runden($price_new*20)/20;
   
  return $price_new / $waehrung_pf;

}
else {
     
       #...

}


Gruß
mt

Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: mt am Juli 15, 2008, 16:32:23
UUUPS! :-[

Berechnung ist richtig, hatte nen falschen Ausgangswert.
Aber der 2. Punkt ist leider immernoch

Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: dobra am Juli 15, 2008, 16:42:32
sorry wenn ich wieder einmische, aber versuch's mal so:

my $price_new = ($waehrung_pf * $endergebnis) + 0.5;
  $price_new = int($price_new);
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: ahe am Juli 15, 2008, 16:52:51
Für SEK kann natürlich nicht die Funktion zur Rappenrundung verwendet werden ;)
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: mt am Juli 15, 2008, 17:27:46
Zitat von: ahe am Juli 15, 2008, 16:52:51
Für SEK kann natürlich nicht die Funktion zur Rappenrundung verwendet werden ;)

Ja schon klar, das hätte ich noch angepasst (wobei ich es auch für die Schweiz brauche).
trotzdem kommen Werte wie 358,88 SEK raus, heißt er ignoriert das runden. Nach
Rappenrundung müsste ja 358,85 stehen.

@dobra:
Kann leider gerade nicht testen, da ich gerade nicht in der Firma bin.

Gruß
mt

Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: ahe am Juli 15, 2008, 18:01:57
Hmmm, in meinem Testshop hat es funktioniert (Rundung auf 0,05 €) :-\
Werde mir das morgen nochmal anschauen.
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: mt am Juli 16, 2008, 08:05:26
Guten Morgen Zusammen,

habe jetzt noch ein paar mal an der Funktion gebastelt.
Fazit, das Skript ignoriert sämtliche Rundungen. Habe auch 'sprintf' versucht.

Ich vermute das es daran liegt, dass die Umrechnung nach 'modify_db_price'
geschieht, wir können da Dreisätze bilden und Runden wie wir wollen, der Shop
rechnet eben erst danach um und somit ist die Rundung futsch. Es gibt meiner
Meinung nach derzeit keine Möglichkeit den Preis NACH der Umrechnung zu beeinflussen.

Aber vielleicht irre ich mich ja.

Gruß
mt

Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: ahe am Juli 16, 2008, 09:02:08
Guten Morgen,

der Dreisatz sollte ja eigentlich genau das lösen.

Erst berechnet das Script die Fremdwährung wie das später auch ShopPilot macht.
Dann wird der Betrag gerundet und zurückgegeben wird der gerundete Betrag / Umrechnungsfaktor.
Wenn dieser zurückgegebene Wert später mit demselben Umrechnungsfaktor multipliziert wird,
sollt natürlich wieder der gerundete Wert heraus kommen.

$gerundeter_wert / $faktor * $faktor = $gerundeter_wert

Schicken Sie mir doch bitte mal Ihr Script per Mail an ahe [at] shoppilot.de
Titel: Re: Rappen und Öre Problem beim Währungsumschalten
Beitrag von: mt am Juli 16, 2008, 09:54:54
Hallo ahe,

das Script ist unterwegs.
Ich danke Ihnen schonmal für Ihre Mühe.

Gruß
mt