8
0
Fork 0

Compare commits

...
This repository has been archived on 2021-01-04. You can view files and clone it, but cannot push or open issues or pull requests.

7 Commits

Author SHA1 Message Date
Daniel Seifert b3c85652da
add abandoned support note 2021-01-04 11:31:04 +01:00
Daniel Seifert e6a542c13e
change different PHP versions note
Merge branch 'master' into rel_1.x

# Conflicts:
#	README.md
2020-06-18 13:43:39 +02:00
Daniel Seifert cecc4fd47a
Merge branch 'rel_2.x' into rel_1.x
# Conflicts:
#	README.md
2020-06-16 15:02:27 +02:00
Daniel Seifert 222927a218
add documention notes for special VAT handlings 2020-06-15 08:38:32 +02:00
Daniel Seifert 521128a511
changelog completed 2020-06-11 15:17:21 +02:00
Daniel Seifert 27a95f0d14
remove convert shop id to int because of "oxbaseshop" value, add note for different PHP version 2020-06-11 15:09:34 +02:00
Daniel Seifert 44f093b950
add release for OXID 4.10 / 5.3 2020-06-08 22:16:22 +02:00
9 changed files with 50 additions and 86 deletions

View File

@ -1,5 +1,9 @@
# TaxRatesAdjustment / Anpassung der MwSt.-Sätze
## eingestellte Modulpflege
Dieses Modul wurde für die Steueranpassung in Deutschland im Jahr 2020 erstellt. Da diese Ereignisse vergangen sind, wird dieses Modul nicht mehr weiterentwickelt und auch nicht mehr unterstützt.
## Funktionsumfang
### Was kann das Modul?
@ -36,31 +40,31 @@ Gibt es in Ihrem Shop reguläre Steuersätze mit 16% oder 5%, werden diese beim
## Systemanforderung
- installierter OXID eShop in Version 6 und dessen Anforderungen
- installierter OXID eShop in Version 4.10 (CE, PE) oder 5.3 (EE) und dessen Anforderungen
Ein Einsatz in älteren Shopversionen ist vor dem Livebetrieb zwingend auf Verwendbarkeit zu testen.
## Installation / Update
Während der Installation werden noch keine Shopeinstellungen geändert. Führen Sie diesen Befehl im Shophauptverzeichnis aus:
Kopieren Sie den Inhalt des `copy_this`-Ordners in Ihren Shopordner. Achten Sie darauf, auch die verborgene .htaccess mitzukopieren, dass die Scripte nicht über den Browser von außen erreichbar sind.
```
composer require d3/taxratesadjustment:"^2.0" --update-no-dev
```
Vergeben Sie den beiden Scripten im Ordner `_taxRates/bin` Ausführungsrechte.
## Ausführung
- Bitte führen Sie die Umstellung rechtzeitig vorab in einer Testinstallation durch und prüfen Ihren Shop, um Fehler im Livebetrieb zu vermeiden. Zum Übergehen der Datumsprüfung können Sie den folgenden Befehlen einfach den Parameter `-d` anhängen: z.B. `[ Shoppfad ]/vendor/bin/reduceTaxRate -d`. Für den Livebetrieb soll der Parameter nicht verwendet werden.
- Bitte führen Sie die Umstellung rechtzeitig vorab in einer Testinstallation durch und prüfen Ihren Shop, um Fehler im Livebetrieb zu vermeiden. Zum Übergehen der Datumsprüfung können Sie den folgenden Befehlen einfach den Parameter `-d` anhängen: z.B. `[ Shoppfad ]/_taxRates/bin/reduceTaxRate -d`. Für den Livebetrieb soll der Parameter nicht verwendet werden.
- Legen Sie sich unbedingt vor jeder Ausführung eine Datensicherung an. Die Software wird nach bestem Wissen erstellt. Durch die Vielzahl an möglichen Shopkonstellationen können wir jedoch keine Gewährleistung für die richtige Ausführung und eventuelle Folgen übernehmen.
Richten Sie einen ersten Cronjob ein, der idealerweise am 01.07.2020 um 00:00 folgendes Script startet, um die Steuersätze zu senken. Alternativ führen Sie dieses Script zum passenden Zeitpunkt auf der Serverkonsole manuell aus:
Richten Sie einen ersten Cronjob ein, der idealerweise am 01.07.2020 um 00:00 folgendes Script startet, um die Steuersätze zu senken. Alternativ führen Sie dieses Script zum passenden Zeitpunkt manuell auf der Serverkonsole aus:
```
[ Shoppfad ]/vendor/bin/reduceTaxRate
[ Shoppfad ]/_taxRates/bin/reduceTaxRate
```
Richten Sie einen zweiten Cronjob ein, der idealerweise am 01.01.2021 um 00:00 folgendes Script startet, um die Steuersätze zurückzusetzen. Alternativ führen Sie dieses Script zum passenden Zeitpunkt auf der Serverkonsole manuell aus:
Richten Sie einen zweiten Cronjob ein, der idealerweise am 01.01.2021 um 00:00 folgendes Script startet, um die Steuersätze zurückzusetzen. Alternativ führen Sie dieses Script zum passenden Zeitpunkt manuell auf der Serverkonsole aus:
```
[ Shoppfad ]/vendor/bin/raiseTaxRate
[ Shoppfad ]/_taxRates/bin/raiseTaxRate
```
Bei Fragen zur Einrichtung der Cronjobs kontaktieren Sie bitte Ihren Hostingprovider.
@ -75,22 +79,17 @@ Sollen die Scripte über eine PHP-Version gestartet werden, die nicht als Standa
Entfernen Sie die eingerichteten Cronjobs nach den beiden Ausführungszeitpunkten, um versehentliche spätere Auslösungen zu vermeiden.
Nach heutigem Stand werden die Scripte nach dem Zurücksetzen der Steuersätze nicht mehr benötigt. Dann kann dieses Paket mit folgendem Befehl wieder aus der Installation entfernt werden:
```
composer remove d3/taxratesadjustment --update-no-dev
```
Nach heutigem Stand werden die Scripte nach dem Zurücksetzen der Steuersätze nicht mehr benötigt. Dann kann der Ordner `_taxRates` wieder komplett aus der Installation entfernt werden.
## Änderungshistorie
- 2.0.0:
- 1.0.0:
- scriptgesteuertes Ändern der Steuersätze (generell und artikelspezifisch) reduzierend und erhöhend für jeden Subshop
- per Argument übersteuerbare Ausführungsbeschränkung
- 2.1.0
- Subshopfilter eingefügt
- 2.1.1
- Composer Command korrigiert
- 2.1.2
- 1.0.1
- falsche Konvertierung der ShopId entfernt
- 1.0.2
- PHP-Versionshinweis angepasst
## Support

View File

@ -1,25 +0,0 @@
{
"name": "d3/taxratesadjustment",
"description": "adjusts the tax rates for the German economic stimulus package 2020 / 2021",
"type": "library",
"require": {
"oxid-esales/oxideshop-ce": "^6.0"
},
"license": "GPL-3.0",
"authors": [
{
"name": "D3 Data Development (Inh. Thomas Dartsch)",
"email": "info@shopmodule.com",
"homepage": "https://www.d3data.de"
}
],
"autoload": {
"psr-4": {
"D3\\TaxRatesAdjustment\\": ""
}
},
"bin": [
"bin/reduceTaxRate",
"bin/raiseTaxRate"
]
}

View File

@ -0,0 +1 @@
Deny from all

View File

@ -13,11 +13,9 @@
* @link http://www.oxidmodule.com
*/
// ShopId
namespace D3\TaxRatesAdjustment\Models;
use OxidEsales\Eshop\Core\Registry;
require 'taxRateAbstract.php';
class raiseTaxRate extends taxRateAbstract
{

View File

@ -15,7 +15,7 @@
namespace D3\TaxRatesAdjustment\Models;
use OxidEsales\Eshop\Core\Registry;
require 'taxRateAbstract.php';
class reduceTaxRate extends taxRateAbstract
{

View File

@ -15,12 +15,11 @@
namespace D3\TaxRatesAdjustment\Models;
use OxidEsales\Eshop\Application\Model\Article;
use OxidEsales\Eshop\Application\Model\Shop;
use OxidEsales\Eshop\Core\Config;
use OxidEsales\Eshop\Core\DatabaseProvider;
use OxidEsales\Eshop\Core\Exception\StandardException;
use OxidEsales\Eshop\Core\Registry;
use oxArticle;
use oxConfig;
use oxDb;
use oxRegistry;
use oxShop;
abstract class taxRateAbstract
{
@ -50,10 +49,6 @@ abstract class taxRateAbstract
return (time() > strtotime($from)) && (time() < strtotime($to));
}
/**
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseConnectionException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException
*/
public function run()
{
if (false === $this->isInExecutableTimeRange()) {
@ -64,28 +59,24 @@ abstract class taxRateAbstract
$this->changeTaxRates();
}
/**
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseConnectionException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException
*/
public function changeTaxRates()
{
$shop = new Shop();
$shop = new oxShop();
// 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));},
function ($a) {return oxDb::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"];
foreach (oxDb::getDb(oxDb::FETCH_MODE_ASSOC )->getAll( $q ) as $record ) {
$shopId = $record["oxid"];
$this->switchToShop($shopId);
$this->changeDefaultTaxRate( $shopId );
$this->changeArticlesTaxRate( $shopId );
@ -99,18 +90,18 @@ abstract class taxRateAbstract
*/
public function switchToShop($id)
{
if (Registry::getConfig()->isMall()
&& $id != Registry::getConfig()->getActiveShop()->getId()
if (oxRegistry::getConfig()->isMall()
&& $id != oxRegistry::getConfig()->getActiveShop()->getId()
) {
/** @var Config $oNewConf */
$oNewConf = new Config();
/** @var oxConfig $oNewConf */
$oNewConf = new oxConfig();
$oNewConf->setShopId($id);
$oNewConf->init();
Registry::getConfig()->onShopChange();
Registry::getSession()->setVariable('actshop', $id);
Registry::getSession()->setVariable('currentadminshop', $id);
Registry::getConfig()->setShopId($id);
oxRegistry::getConfig()->onShopChange();
oxRegistry::getSession()->setVariable('actshop', $id);
oxRegistry::getSession()->setVariable('currentadminshop', $id);
oxRegistry::getConfig()->setShopId($id);
}
}
@ -119,7 +110,7 @@ abstract class taxRateAbstract
*/
public function changeDefaultTaxRate($shopId)
{
$oCurrConfig = new Config();
$oCurrConfig = new oxConfig();
$newVat = $this->rateChanges[(int) $oCurrConfig->getConfigParam('dDefaultVAT')];
if ($newVat) {
@ -132,21 +123,18 @@ abstract class taxRateAbstract
/**
* @param int $shopId
*
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseConnectionException
* @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException
*/
public function changeArticlesTaxRate($shopId)
{
$article = oxNew(Article::class);
$article = oxNew(oxArticle::class);
$q = "SELECT oxid FROM ".$article->getCoreTableName()."
WHERE oxvat IN (".implode(', ', array_keys($this->rateChanges)).")
AND oxshopid = ".DatabaseProvider::getDb()->quote($shopId);
AND oxshopid = ". oxDb::getDb()->quote($shopId);
$counter = 0;
foreach (DatabaseProvider::getDb(DatabaseProvider::FETCH_MODE_ASSOC)->getAll($q) as $articleRecord) {
foreach (oxDb::getDb(oxDb::FETCH_MODE_ASSOC)->getAll($q) as $articleRecord) {
$articleId = $articleRecord['oxid'];
$article = oxNew(Article::class);
$article = oxNew(oxArticle::class);
$article->load($articleId);
$article->assign(
[
@ -163,9 +151,9 @@ abstract class taxRateAbstract
$q = "SELECT count(*) FROM ".$article->getCoreTableName()."
WHERE oxvat IN (".implode(', ', array_keys($this->rateChanges)).")
AND oxshopid = ".DatabaseProvider::getDb()->quote($shopId);
AND oxshopid = ". oxDb::getDb()->quote($shopId);
if ($counter = DatabaseProvider::getDb()->getOne($q)) {
if ($counter = oxDb::getDb()->getOne($q)) {
echo "the tax rate update for " . $counter . " article(s) was failed in shop " . $shopId . PHP_EOL;
}
}

View File

@ -6,8 +6,10 @@ $currentDirectory = __DIR__ . '/';
$filePath = $currentDirectory . $filePath;
require($filePath);
require(__DIR__.'/../Models/raiseTaxRate.php');
$change = new \D3\TaxRatesAdjustment\Models\raiseTaxRate();
try {
$change->run();
} catch ( \Exception $e) {

View File

@ -6,6 +6,7 @@ $currentDirectory = __DIR__ . '/';
$filePath = $currentDirectory . $filePath;
require($filePath);
require(__DIR__.'/../Models/reduceTaxRate.php');
$change = new \D3\TaxRatesAdjustment\Models\reduceTaxRate();
try {

View File

@ -5,7 +5,7 @@ if (!empty($bootstrapFileName)) {
$bootstrapFileName = realpath(trim(getenv('ESHOP_BOOTSTRAP_PATH')));
} else {
$count = 0;
$bootstrapFileName = '../../source/bootstrap.php';
$bootstrapFileName = '../bootstrap.php';
$currentDirectory = __DIR__ . '/';
while ($count < 5) {
$count++;