Virtuelle Währung hinzufügen

Hallo :slight_smile: Das ist mein erster eintrag ins Forum (ich hoffe an der richtigen stelle).

Nach dem ich etwas mit Shopware rumgespielt habe wollte ich gerne eine neue Währung hinzufügen. Ich komme da aber nicht weiter. In der Datenbank habe ich dazu nur _core_currencies gefunden. Wo wird das Format der Währung gespeichert ? Also z.B der ISO code (in der _core_currencies Tabele ‘currency’).

Für Tipps wäre ich sehr Dankbar !

Vincent

Hallo, 

 

schau aus mal in die Grundeinstellungen. Da gibt es einen Punkt Währung.

 

Moritz

Danke für die Antwort :slight_smile: … Leider kann man da nur Währungen einstellen die es offizell gibt :(. (Für die einstellung muss man eine ISO Code eingeben ISO 4217 – Wikipedia). Das Problem ist das Shopware das Währungsformat an hand das ISO codes festlegt (also wie viele nachkommastellen usw…). Ich möchte gerne Bitcoin als Shop währung verwenden (die haben keinen ISO code) ich versuche mich da grade an einem Plugin. Leider habe ich nichts dazu gefunden. 

Die wichigste info für mich wäre in welcher Table ist der Foreign key von ‚currency‘ in _core_currencies

Vieleicht hat noch jemand eine idee ? / entschuldigung das ich mich unklar ausgedrückt habe.

Hi vincentfuhler,

probier mal XBT als ISO-Code - sagt jedenfalls das WIKI.

Hallo KSK,

Danke für die Antwort :slight_smile: leider Funktioniert weder XBT noch BTC…  wink Es lässt sich zwar Problemlos einstellen im Frontend habe ich dann aber leider diesen Fehler:

Hallo,

 

die Währung muss es im Zend Framework geben soweit ich weiß. So einfach wirst du das also nicht machen können. Du müsstest mal schauen ob du findest wo die im Framework lögen, ggf. Kannst du die dir da anlegen/reinbasteln.

 

Moritz

Du kannst doch einfach USD nehmen und beliebige Namen und Zeichen vergeben?!

Viele Grüße

Danke Moritz das schau ich mir gleich mal an ! // Danke auch an Aquatunning, sehr gute idee leider ist das Problem das USD nur 2 Nachkommastellen hat während bei Bitcoin 8 Nachkommastellen gebraucht werden :( 

Also eigentlich gar nicht so schwierig ;-) 

Via DI Container von Shopware folgende Klasse austauschen: „Shopware\Components\DependencyInjection\Bridge\Currency“

In der neuen klassen vor dem return new \Zend_Currency($currency, $locale);

folgendes einbauen:

 $currency = array( 'precision' =\> 8, 'currency' =\> $currency );

Und schon hast Du 8 Nachkommastellen.

Gruß

 

@Thomas Vielen DANK !!! Nach sowas habe ich gesucht !!! 

Hallo Thomas,

ich finde das ein guter Ansatz für ein Plugin, dass ich gerade erstelle. Meine Frage ist seit mehreren Tagen wie man ein Klasse in den \Components, in diesem Fall die Klasse Currency in  Shopware\Components\DependencyInjection\Bridge,  so überschreibt, dass diese neue Klasse im ganzen Shop verwendet wird, wenn sie durch das Plugin aktiviert wurde.

Die Klassenmethode factory soll ab sofort folgendermaße aussehen, aber die Originaldatei soll natürlich nicht überschrieben werden, um weiterhin Updatefähig zu bleiben.

    public function factory(Container $container=null, \Zend_Locale $locale=null)
    {
        $currency = ‘EUR’;
        if ($container->has(‘Shop’)) {
            $currency = $container->get(‘Shop’)->getCurrency()->getCurrency();
        }

        if ($currency == “HUF”) {
            $currency = array(
                ‘precision’ => 0,
                ‘currency’ => $currency
            );
        }

        return new \Zend_Currency($currency, $locale);
    }

 

Über eine Antwort würde ich mich sehr freuen. Am besten noch bevor ich an der Advanced Developer Schulung in diesen Jahr teilnehme.

 

Ernesto

1 „Gefällt mir“

Das sollte eigentlich hier ausreichend dokumentiert sein: 

Best practices of Shopware plugin development