diff --git a/Models/taxRateAbstract.php b/Models/taxRateAbstract.php index 86ce62e..230a01f 100644 --- a/Models/taxRateAbstract.php +++ b/Models/taxRateAbstract.php @@ -61,19 +61,31 @@ abstract class taxRateAbstract die(); }; - $this->changeDefaultTaxRates(); + $this->changeTaxRates(); } /** * @throws \OxidEsales\Eshop\Core\Exception\DatabaseConnectionException * @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException */ - public function changeDefaultTaxRates() { + public function changeTaxRates() + { $shop = new Shop(); - $q = "SELECT oxid FROM " . $shop->getCoreTableName() . " WHERE 1"; + // use shop list, when parameter -d is set + $opts = getopt("s:"); + + $where = isset($opts['s']) ? + "oxid IN (".implode(', ', array_map( + function ($a) {return DatabaseProvider::getDb()->quote(trim($a));}, + explode(',', $opts['s'])) + ).")" : + "1"; + + $q = "SELECT oxid FROM " . $shop->getCoreTableName() . " WHERE ".$where ; + foreach ( DatabaseProvider::getDb( DatabaseProvider::FETCH_MODE_ASSOC )->getAll( $q ) as $record ) { - $shopId = (int) $record['oxid']; + $shopId = (int) $record["oxid"]; $this->switchToShop($shopId); $this->changeDefaultTaxRate( $shopId ); $this->changeArticlesTaxRate( $shopId ); diff --git a/README.md b/README.md index 10fb29c..ac6e57c 100644 --- a/README.md +++ b/README.md @@ -10,13 +10,13 @@ Die Anpassung kann über entsprechende Cronjobs zeitgesteuert zum Stichtermin au Die Scripte ändern: - den im Shop eingestellten allgemeinen Steuersatz -- an den Artikeln hinterlegte spezielle Steuersätze +- an den Artikeln hinterlegten speziellen Steuersätzen - von 19% zu 16% und - von 7% zu 5% - sowie später auch zurück -In Multishopinstallationen (Enterprise Edition) werden die Angaben innerhalb jedes bestehenden Subshop geändert. +Bei Multishopinstallationen (Enterprise Edition) können die zu aktualisierenden Subshops definiert werden. Die Scripte prüfen anhand der Systemzeit mit kleinen Toleranzen (+/-3 Tage um das jeweilige Umstellungsdatum), ob die Veränderung ausgeführt werden darf. Damit wird verhindert, dass ein versehentliches Auslösen zur falschen Shopkonfiguration führt. @@ -30,8 +30,6 @@ Weiterhin werden auch die absoluten Artikelpreise und Berechnungswege nicht ange Passen Sie die Artikelpreise danach ggf. an. -In Multishopinstallationen (Enterprise Edition) können einzelne Subshops nicht von Änderungen ausgenommen werden. Es werden immer alle Subshops kontrolliert. - Gibt es in Ihrem Shop reguläre Steuersätze mit 16% oder 5%, werden diese beim Zurücksetzen ebenfalls auf 19% bzw. 7% angehoben. Eine Unterscheidung, welcher Steuersatz vorab reduziert wurde, gibt es nicht. Diese Anpassung muss dann manuell durchgeführt werden. ## Systemanforderung @@ -69,6 +67,8 @@ Für die Einrichtung der Cronjobs kontakten Sie bei Fragen bitte Ihren Hostingpr Püfen Sie nach Ausführung der Scripte bitte zeitnah Ihren Shop auf richtige Funktion. +Zu Definition, welche Subshops bearbeitet werden sollen, kann der Parameter `-s 1,3,4` verwendet werden. Setzen Sie statt der `1,3,4` eine kommagetrennte Liste Ihrer gewünschten Shop-IDs ein. Ohne Angabe des Filters werden alle vorhandenen Subshops bearbeitet. + ## Deinstallation Entfernen Sie die eingerichteten Cronjobs nach den beiden Ausführungszeitpunkten, um versehentliche Auslösungen zu vermeiden.