Beiträge von itg

    Danke Stefan für deine Antwort. Ich werde mal bei CSVI anfragen. Bis jetzt habe ich eine PHP Datei geschrieben, die mir alle gewünschten Daten aus der Datenbank ausliest und in eine CSV speichert. Jetzt müsste ich eigentlich nur noch bei einer Statusänderung die Order-ID an meine Datei übergeben und diese dazubringen ausgeführt zu werden.


    Vielleicht hat dazu noch einer eine Idee wo ich da ansetzen muss oder kann?

    Hallo,
    ich müsste bei einer getätigten Bestellung eines Kunden, die Bestelldaten automatisch in eine CSV Datei exportieren. Die CSV Datei geht dann an den Logistik-Partner weiter und kommt nach dem Versenden der Ware mit einer Statusänderung und der Paketnummer zurück.


    Es wäre meiner Meinung nach das Vernünftigste, wenn die CSV Datei bei einem bestimmten Bestellstatus generiert werden würde. Also z.B. dann, wenn die Ware bezahlt ist und die Waren verschickt werden können.


    Ich habe mir bereits mit CSVImproved ein Export-Template für eine CSV Datei erstellt, allerdings enthält diese alle Bestellungen. Filtern nach einem bestimmten Bestellstatus würde natürlich funktionieren, allerdings wird für jede Bestellung eine eigene CSV Datei benötigt. Ich würde den Prozess gerne soweit wie möglich automatisieren.


    Wie könnte ich dieses Problem angehen? Besteht evtl. die Möglichkeit, CSVI mit einen Filterparameter (in diesem fall z.B. die Bestellnummer) aus einer PHP Datei heraus anzustoßen und somit die CSV zu generieren?


    Besten Dank im Voraus

    d.h. wir können Template und Template Overrides schon einmal ausschließen. Langsam gehen mir auch die Ideen aus, ich würde VM einfach noch einmal drüber installieren, evtl. ist wirklich bei der Installation etwas schief gelaufen. Daten sollten dabei erhalten bleiben.

    Template Overrides haben den Vorteil wenn du an dem Layout von z.B. Virtuemart etwas veränderst und später einmal ein Update installierst, bleiben deine Änderungen erhalten. Du musst also nicht die Core Dateien verändern. Such hier im Forum einmal nach den Overrides, das wurde hier und da schon mal erklärt.


    Stell doch bitte noch einmal auf ein Joomla Standard Theme um. Das machst du in dem du in Joomla Backend auf Erweiterungen - Templates klickst und dann unter Stile z.B. Beez5_default oder Beez2_default auf den grauen Stern rechts klickst.

    die sieht für mich auf den ersten Blick eigentlich OK aus. In welchem Ordner genau liegt deine cart/default.php ?


    Versuch doch noch schnell meine anderen Vorschläge und gib kurzes Feedback ob sich etwas ändert.

    Du kannst im Joomla Backend unter Erweiterungen - Sprachen - Overrides ein neues Override für

    Code
    1. COM_VIRTUEMART_CART_TOS_READ_AND_ACCEPTED


    erstellen und z.B. AGB als Text hinterlegen.


    Allerdings hast du ja bereits geschrieben mit dem Standardtemplate und englischer Sprache wird auch nichts angezeigt, folglich würde mich einmal der Inhalt deiner cart/default.php interessieren. Evtl. liegt hier der Fehler.


    Alternativ könntest du auch zum Test deinen templates/NAME_DEINES_TEMPLATES/html/com_virtuemart Ordner umbenennen in z.B. com_virtuemart_test


    Dann werden die Overrides nicht geladen und du siehst ob der Fehler an deinen Overrides liegt.

    jquery wird bei dir zweimal geladen. Einmal vom Template und ein weiteres mal vermutlich von VM. In der Shopkonfiguration kannst du mal versuchen die Haken bei "Benutzt das VM jquery" und "Externe google jquery Prgrammbibliothek benutzen" zu entfernen.


    Ansonsten würde ich mal ein Javascript nach dem anderen deaktivieren und durch testen. Dann stellst du fest ob mit irgendeinem Script ein Konflikt besteht.

    Ich betreibe VM ohne Registrierungsmöglichkeit, also nur Gästecheckout. Das E-Mail Feld wird zwar validiert allerdings wird nicht geprüft ob es sich um eine E-Mailadresse handelt. Folglich ist es egal was reingeschrieben wird solange ein Buchstabe oder eine Zahl eingetragen wird geht der Checkoutprozess weiter. Die Validierung ist zwar bereits per jquery implementiert, allerdings fehlt dem E-Mail Eingabefeld einfach die Klasse "validate-email". Folgendes schafft hier Abhilfe:


    Erstellt euch, falls noch nicht geschehen, ein Override der Datei components/com_virtuemart/views/user/tmpl/edit_adress.php (kopiert diese Datei nach templates/TEMPLATE_NAME/html/com_virtuemart/user). Öffnet die Datei mit dem Editor eueres Vertrauens und sucht nach der Stelle, an der die userfields eingebunden werden:



    und fügt folgendes direkt darunter ein:


    Code
    1. <script language="javascript">
    2. document.getElementById('email_field').className = 'required validate-email';
    3. document.getElementById('zip_field').className = 'required validate-numeric';
    4. </script>


    Es wird also per Javascript der ID email_field (Emaileingabefeld) zusätzlich noch die Klasse "validate-email" mitgegeben. Des Weiteren könnt ihr dem Postleitzahlenfeld auch gleich die Klasse "validate-numeric" mitgeben. Folglich akzeptiert das PLZ Feld nur noch Zahlen.


    Das Ganze sollte eigentlich auch funktionieren wenn ihr die Benutzerregistrierung aktiviert habt. Hab ich allerdings nicht getestet. Vielleicht kann einfach mal jemand Feedback geben der die Registrierung aktiv hat.

    nachdem hier gerade einiges über MwSt. diskutiert wird hätte ich gleich noch eine Frage dazu. Ich möchte die Möglichkeit nutzen Gutscheincodes zur Verfügung zu stellen. Allerdings hab ich es nicht hinbekommen, dass am Schluss die MwSt. korrekt ist, egal welche Steueroption ich verwendet habe. Als Beispiel:


    VK Brutto: 48,00 (7,66 MwSt. bei 19%)
    -Gutschein: 10,00 (wird meines Wissens vom Brutto abgezogen, folglich -19%)
    Rechnungsbetrag: 38,00 (6,07 MwSt)


    VM zeigt mir am Schluss als Rechnungsbetrag 38,00 korrekt an allerdings mit 7,66 MwSt. Es wird also die Steuer vom Gutschein nicht berücksichtigt. Hat hier evtl. jemand einen Tip?



    In der calculationh.php (administrator/components/com_virtuemart/helpers) steht //TODO Calculate the tax.
    Ich hab mir jetzt zwischenzeitlich so geholfen, allerdings hab ich auch hier wieder das Problem, nach einem Update ist das wieder weg :(


    PHP
    1. $this->_cartPrices['couponTax'] = 0;
    2. $this->_cartPrices['couponValue'] = $this->_cartPrices['salesPriceCoupon'] - $this->_cartPrices['couponTax'];
    3. $this->_cartPrices['billTotal'] -= $this->_cartPrices['salesPriceCoupon'];
    4. if($this->_cartPrices['billTotal'] < 0){
    5. $this->_cartPrices['billTotal'] = 0.0;


    abgeändert nach


    PHP
    1. $this->_cartPrices['couponTax'] = $this->_cartPrices['salesPriceCoupon'] / 119 *19;
    2. $this->_cartPrices['couponValue'] = $this->_cartPrices['salesPriceCoupon'] - $this->_cartPrices['couponTax'];
    3. $this->_cartPrices['billTotal'] -= $this->_cartPrices['salesPriceCoupon'];
    4. $this->_cartPrices['billTaxAmount'] = $this->_cartPrices['taxAmount'] + $this->_cartPrices['shipmentTax'] + $this->_cartPrices['paymentTax'] + $cartTax - $this->_cartPrices['couponTax'];
    5. if($this->_cartPrices['billTotal'] < 0){
    6. $this->_cartPrices['billTotal'] = 0.0;


    Ich errechne also in der ersten Zeile die Steuer des Gutscheins und ziehe sie anschließend einfach von der Gesamtsteuer ab. Die Gesamtsteuer wird eigentlich schon mal weiter oben berechnet, allerdings steht zu diesem Zeitpunkt die Gutscheinsteuer noch nicht fest. Deshalb hab ich die Zeile einfach nochmal eingefügt und um ein "- Gutscheinsteuer" erweitert.


    Angezeigt wird es nun richtig (von 1 Cent Rundungsdifferenz abgesehen), allerdings bin ich mir nicht sicher ob es irgendwo anders zu Problemen kommt wenn ich den Code einfach ändere.:confused:

    hehe, ich glaube wir haben aneinander vorbei geredet ;-) Wie ich das per CSS stylen kann ist mir klar, hab ja auch immerhin das komplette Template selbst entwickelt ;)


    Das Problem ist viel mehr wie die Fehlertypen von VM generiert werden. In der Datei cart.php welche unter /components/com_virtuemart/controllers liegt wird z.B. die System-Meldung für das löschen eines Produktes generiert.



    hier möchte ich das nicht eine Nachricht vom Typ Message ausgegeben wird sondern z.B. vom Typ Notice. Das lässt sich ja relativ einfach erreichen und zwar wird hierfür einfach

    PHP
    1. $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart'));


    zu


    PHP
    1. $mainframe->redirect(JRoute::_('index.php?option=com_virtuemart&view=cart'),'notice');


    Mein Problem ist jetzt eigentlich nur ein Update von VM und somit logischerweise der Verlust dieser Modifizierung. Deshalb die Frage ob man für controller auch ein Override erstellen kann ähnlich wie bei den Templates.


    Vielleicht hast du noch eine Idee, ansonsten ist es auch nicht so schlimm, hab mir schon eine Backup Datei erstellt die ich zur Not zurück kopieren kann bzw. müsste man halt bei jedem VM Update einfach die paar Zeilen wieder hinein schreiben. Man muss eben nur daran denken :)

    ah, sorry mein Fehler. Das war der Gesamtpreis der logischerweise aus Einzelpreis mal Anzahl errechnet wird. Die Zeile mit dem brutto Einzelpreis muss natürlich so aussehen:


    PHP
    1. <?php
    2. //vmdebug('$this->cart->pricesUnformatted[$pkey]',$this->cart->pricesUnformatted[$pkey]['priceBeforeTax']);
    3. echo $this->currencyDisplay->createPriceDiv ('basePriceWithTax', '', $this->cart->pricesUnformatted[$pkey], FALSE);
    4. //echo $prow->salesPrice ;
    5. ?>


    Also eigentlich nur 'basePriceVariant' durch 'basePriceWithTax' ersetzen. Dann müsste es funktionieren wie du es dir vorstellst.