Zwei verschiedene Währungen auf derselben Rechnung

Hallo. Ich brauche zwei verschiedene Währungen, die auf der Rechnung erscheinen sollen. Wie muss ich diesen Code ändern, um EUR und USD anzuzeigen? Die Standardwährung ist EUR. Und ich nehme an, es gibt einen einfacheren Weg, die gesamte Mehrwertsteuer für eine Position anzuzeigen…

{block name="document_index_table_tax"}
                
     {($position.amount_netto*($position.tax/100))|currency}
 {($position.amount_netto*($position.tax/100))|currency}
                
{/block}

 

Wie muss ich diesen Code ändern, um EUR und USD anzuzeigen?

Erstmal müsstest du das Umrechnen. Die Bestellung wir ja nur in einer Während geführt. 

Und ich nehme an, es gibt einen einfacheren Weg, die gesamte Mehrwertsteuer für eine Position anzuzeigen…

Ja, das tut dein Snippet doch, oder nicht? 

Also jetzt sieht es so aus:

Und die zweite Reihe an jeder Position sollte USD zeigen.

Ich denke, es gibt etwas mit dem “currency” Teil des Codes zu tun, aber ich weiß nicht, wie man die USD separat definiert.

Das currency gibt das Währungssymbol aus. Wie bereits gesagt, wird die Rechnung in Euro erstellt. Daher ist die Währung Euro. Wenn du jetzt noch Dollar dort stehen haben möchtest, musst du denn Euro Betrag mit dem Dollar Kurs umrechnen. Shopware ist in der Lage Kurse zu verwalten. Der Kurs stehst dir im Rechnungstemplate allerdings nicht zur Verfügung. Du müsstest dir ein Plugin schreiben, dass sich an die Variablen Zuweisung des Templates hängt und dir Entweder die Kurse dort rein reicht oder die gleiche die berechneten Dollar Werte reinreicht. Du kannst dazu den Hook “Shopware_Components_Document::assignValues4x::after” nutzen.

Ich habe es so gelöst. Ich weiß, es ist nicht elegant, aber es funktioniert. Ich muss “index.tpl” täglich wegen des Wechselkurses aktualisieren … :slight_smile: Ich konnte kein Plugin machen, weil ich nur ein Anfänger bin. Aber danke dir für die Tipps.

{block name="document_index_table_tax"}
                
{($position.amount_netto*($position.tax/100))|currency}
{(($position.amount_netto*($position.tax/100))*0.857)|currency|replace:"€":"USD"}
                            
{/block}

 

Joah. So gehts natürlich auch ;) 

Ich weiß nicht genau jetzt die „currencyID“ für USD, aber sagen wir, es ist 2. Wenn ich USD als Währung definiert habe, wie schwer ist es, ein solches Plugin zu erstellen, das den „currencyID.2.currencyFactor“ aufruft. Ist das irgendwie ohne Plugin möglich?

Also statt:
 

{(($ position.amount_netto * ($ position.tax/100))*0.857)|currency|replace:"€":"USD "}

Es würde so aussehen:
 

{(($ position.amount_netto * ($ position.tax/100))*"currencyID.2.currencyFactor")|currency|replace:"€":"USD "}

Auf diese Weise könnte ich (oder ein Plugin) einfach den USD-Faktor aus dem Backend aktualisieren.

wie schwer ist es, ein solches Plugin zu erstellen

Für mich sehr einfach! Aber das kommt wohl auf den Entwickler an.

 Ist das irgendwie ohne Plugin möglich?

Leider Nein. 

Bitte nach /custom/plugins/AbCurrenciesInDocuments/AbCurrenciesInDocuments.php kopieren und im Plugin Manager installieren.

 'addCurrencys']
        );
    }

    public function addCurrencys(\Enlight_Hook_HookArgs $args)
    {
        /** @var \Shopware_Components_Document $subject */
        $subject = $args->getSubject();
        $dbal = $this->container->get('dbal_connection');
        $currencies = $dbal->executeQuery('select * from s_core_currencies;')->fetchAll(\PDO::FETCH_UNIQUE);
        $subject->_view->assign('abCurrencies', $currencies);
    }
}

 

1 „Gefällt mir“

Als Dankeschön hat Balazs 50€ an Plan International gespendet. Danke dafür  Thumb-Up  Smile

1 „Gefällt mir“