Marktplatz - Eine große Auswahl an neuen und hilfreichen Modulen sowie modernen Templates für die modified eCommerce Shopsoftware
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: MODUL: One Stop Shop (OSS) EU-Regelung 2021

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.707
    • Geschlecht:
    Re: MODUL: One Stop Shop (OSS) EU-Regelung 2021
    Antwort #120 am: 12. Juli 2021, 15:35:22
    @Tomcraft
    Danke dir. Hatte ich sogar schonmal gelesen dann jedoch vergessen weil es nicht akut war.

    @Duncan, @modified-Team
    Ich würde Duncan beistimmen. Eine Sortiermöglichkeit in der /admin/tax_rates.php wäre sehr sinnvoll.
    Mein Vorschlag:
    Ersetze
    Code: PHP  [Auswählen]
                    <tr class="dataTableHeadingRow">
                      <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_TAX_RATE_PRIORITY; ?></td>
                      <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_TAX_CLASS_TITLE; ?></td>
                      <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_ZONE; ?></td>
                      <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_TAX_RATE; ?></td>
                      <td class="dataTableHeadingContent txta-r"><?php echo TABLE_HEADING_ACTION; ?>&nbsp;</td>
                    </tr>
                      <?php
                        $rates_query_raw = "SELECT r.*,
                                                   z.geo_zone_id,
                                                   z.geo_zone_name,
                                                   tc.tax_class_title,
                                                   tc.tax_class_id
                                              FROM "
    . TABLE_TAX_CLASS . " tc
                                              JOIN "
    . TABLE_TAX_RATES . " r
                                                   ON r.tax_class_id = tc.tax_class_id
                                         LEFT JOIN "
    . TABLE_GEO_ZONES . " z
                                                   ON r.tax_zone_id = z.geo_zone_id"
    ;

    damit
    Code: PHP  [Auswählen]
                    <?php //BOC added sorting, 07-2021, noRiddle ?>
                    <tr class="dataTableHeadingRow">
                      <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_TAX_RATE_PRIORITY; ?></td>
                      <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_TAX_CLASS_TITLE.xtc_sorting(FILENAME_TAX_RATES,'tc_title'); ?></td>
                      <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_ZONE.xtc_sorting(FILENAME_TAX_RATES,'gz_name'); ?></td>
                      <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_TAX_RATE.xtc_sorting(FILENAME_TAX_RATES,'r_tax_rate'); ?></td>
                      <td class="dataTableHeadingContent txta-r"><?php echo TABLE_HEADING_ACTION; ?>&nbsp;</td>
                    </tr>
                      <?php
                        //BOC sorting
                        $tr_id_ord = ', r.tax_rates_id ASC'; //second ORDER BY for non unique first ORDER BY, 07-2021, noRiddle
                        $sorting = (isset($_GET['sorting']) ? $_GET['sorting'] : '');
                        if(xtc_not_null($sorting)) {
                          switch($sorting) {
                            case 'tc_title':
                                $sort = 'tc.tax_class_title ASC, z.geo_zone_name ASC';
                              break;
                            case 'tc_title-desc':
                                $sort = 'tc.tax_class_title DESC, z.geo_zone_name DESC';
                              break;
                            case 'gz_name':
                                $sort = 'z.geo_zone_name ASC';
                              break;
                            case 'gz_name-desc':
                                $sort = 'z.geo_zone_name DESC';
                              break;
                            case 'r_tax_rate':
                                $sort = 'r.tax_rate ASC, z.geo_zone_name ASC';
                              break;
                            case 'r_tax_rate-desc':
                                $sort = 'r.tax_rate DESC, z.geo_zone_name DESC';
                              break;
                            default:
                                $sort = 'r.tax_rates_id ASC';
                                $tr_id_ord = '';
                             break;
                          }
                        } else {
                          $sort = 'r.tax_rates_id ASC';
                          $tr_id_ord = '';
                        }
                        //EOC sorting

                        $rates_query_raw = "SELECT r.*,
                                                   z.geo_zone_id,
                                                   z.geo_zone_name,
                                                   tc.tax_class_title,
                                                   tc.tax_class_id
                                              FROM "
    . TABLE_TAX_CLASS . " tc
                                              JOIN "
    . TABLE_TAX_RATES . " r
                                                   ON r.tax_class_id = tc.tax_class_id
                                         LEFT JOIN "
    . TABLE_GEO_ZONES . " z
                                                ON r.tax_zone_id = z.geo_zone_id
                                          ORDER BY "
    .$sort.$tr_id_ord;
                        <?php //EOC added sorting, 07-2021, noRiddle ?>

    Gruß,
    noRiddle

    karsta.de

    • Experte
    • Beiträge: 3.056
    Re: MODUL: One Stop Shop (OSS) EU-Regelung 2021
    Antwort #121 am: 12. Juli 2021, 16:10:37
    Die Sortiermöglichkeit ist schon in der neuesten Shop-Version (DEV-Shop) enthalten.
    Hatte das am 19.05.2021 als geänderte Datei in Antwort #167 angehängt. Danach wurde es von Torsten integriert.

    BG Karsta

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.707
    • Geschlecht:
    Re: MODUL: One Stop Shop (OSS) EU-Regelung 2021
    Antwort #122 am: 12. Juli 2021, 16:51:39
    Ah, wusste ich nicht, Danke für die Information.
    Aaaber:
    Nach der Erkenntnis im Thread zu MODUL: t10: Suchbegriffstatistik für Shopversion 2.x sollte man nicht-eindeutige Sortings mit einem zweiten ORDER BY versehen welches eindeutig ist (z.B. der PRIMARY KEY), weil es ansonsten zu unerwarteten Ergebnissen führen kann, je nach MySQL-Version.
    (Den Erklärung(-sversuch) dazu hatte ich im genannten Thread gepostet.)

    Gruß,
    noRiddle

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.707
    • Geschlecht:
    Re: MODUL: One Stop Shop (OSS) EU-Regelung 2021
    Antwort #123 am: 12. Juli 2021, 19:07:48
    @Tomcraft
    Nochmals zu deiner Antwort #116:
    Warum werden dann, wenn man einen Artikel nach dem Einbau des vorliegenden Modules einmal neu speichert Werte in die Tabelle products_geo_zones_to_tax_class geschrieben, auch wenn das zutrifft:

    [...] Artikel in einem anderen Land keine andere Steuerklasse besitzt, [...]

    Sollte man für den betreffenden Artikel nicht nur dann einen Eintrag in die genannte Tabelle machen wenn in einem anderen Land eine andere Steuerklasse greift, und dann auch nur für dieses Land ?

    Ansonsten wird es
    • Artikel geben die sich in der Tabelle products_geo_zones_to_tax_class und andere nicht
      - nämlich solche die noch nicht bearbeitet und gespeichert wurden -
      und
    • könnte man die genannte Tabelle weit kleiner halten wenn nur die erforderlichen Daten dort gespeichert würden,
      und das dürfte einiges an Performance-Vorteil ausmachen.

    Außerdem:
    Nach /admin/includes/modules/group_prices.php wird für die einzelnen Steuersätze in der Artikel-Bearbeitung als preselected der einzelnen Dropdowns entweder der Eintrag aus der Tabelle products_geo_zones_to_tax_class genommen oder, wenn keiner vorhanden ist, der Eintrag aus der Tabelle geo_zones.
    Hat man nun einen Artikel mit einer Steuerklasse die es in einem anderen Land nicht gibt (z.B. Zwischensatz) ist dort preselected " -keine-".

    Ich bin der Meinung, daß
    • nur gespeichert werden sollte was vom STORE_COUNTRY abweicht
      und
    • preselected immer "-keine-" sein sollte, es sei denn es gibt bereits einen Eintrag,
      was dann das Speichern lediglich der abweichenden Steuerklassen leicht durchführbar machen würde.
    Also in /admin/includes/modules/group_prices.php anstatt dies
    Code: PHP  [Auswählen]
    <?php echo xtc_draw_pull_down_menu('products_geo_to_tax['.$geo_zones['geo_zone_id'].']', $tax_class_geo_array, ((isset($products_tax_class_array[$geo_zones['geo_zone_id']])) ? $products_tax_class_array[$geo_zones['geo_zone_id']] : $pInfo->products_tax_class_id), 'style="width: 155px"'); ?>

    das
    Code: PHP  [Auswählen]
    <?php echo xtc_draw_pull_down_menu('products_geo_to_tax['.$geo_zones['geo_zone_id'].']', $tax_class_geo_array, ((isset($products_tax_class_array[$geo_zones['geo_zone_id']])) ? $products_tax_class_array[$geo_zones['geo_zone_id']] : 0), 'style="width: 155px"'); ?>

    und in /admin/includes/classes/categories.php anstatt dies
    Code: PHP  [Auswählen]
          foreach ($products_data['products_geo_to_tax'] as $geo_zone_id => $tax_class_id) {
            $sql_data_array = array(
              'products_id' => $products_id,
              'geo_zone_id' => $geo_zone_id,
              'tax_class_id' => $tax_class_id,
            );
            xtc_db_perform(TABLE_PRODUCTS_GEO_ZONES_TO_TAX_CLASS, $sql_data_array);
          }

    das
    Code: PHP  [Auswählen]
          foreach ($products_data['products_geo_to_tax'] as $geo_zone_id => $tax_class_id) {
            if($tax_class_id != 0) {
                $sql_data_array = array(
                  'products_id' => $products_id,
                  'geo_zone_id' => $geo_zone_id,
                  'tax_class_id' => $tax_class_id,
                );
                xtc_db_perform(TABLE_PRODUCTS_GEO_ZONES_TO_TAX_CLASS, $sql_data_array);
            }
          }

    Das würde das Bearbeiten einfacher/übersichtlicher machen und die DB-Tabelle products_geo_zones_to_tax_class sinnvoller und konsistenter.

    Was denkst du, was denkt Ihr ?

    Gruß,
    noRiddle

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.161
    • Geschlecht:
    Re: MODUL: One Stop Shop (OSS) EU-Regelung 2021
    Antwort #124 am: 12. Juli 2021, 21:46:38
    @Tomcraft
    Nochmals zu deiner Antwort #116:
    Warum werden dann, wenn man einen Artikel nach dem Einbau des vorliegenden Modules einmal neu speichert Werte in die Tabelle products_geo_zones_to_tax_class geschrieben, auch wenn das zutrifft:

    [...] Artikel in einem anderen Land keine andere Steuerklasse besitzt, [...]

    Sollte man für den betreffenden Artikel nicht nur dann einen Eintrag in die genannte Tabelle machen wenn in einem anderen Land eine andere Steuerklasse greift, und dann auch nur für dieses Land ?

    Ansonsten wird es
    • Artikel geben die sich in der Tabelle products_geo_zones_to_tax_class und andere nicht
      - nämlich solche die noch nicht bearbeitet und gespeichert wurden -
      und
    • könnte man die genannte Tabelle weit kleiner halten wenn nur die erforderlichen Daten dort gespeichert würden,
      und das dürfte einiges an Performance-Vorteil ausmachen.
    [...]

    Das wäre in der Tat eine Überlegung dort nur zu speichern, was abweicht. Aber wir hatten uns da schon einiges an Gedanken gemacht wie es am sinnvollsten umzusetzen ist und womit die Shopbetreiber die wenigste Arbeit haben.

    Die Gedanken kannst du gerne noch in Ticket #2038 ergänzen.

    Grüße

    Torsten

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.161
    • Geschlecht:
    Re: MODUL: One Stop Shop (OSS) EU-Regelung 2021
    Antwort #125 am: 12. Juli 2021, 21:53:17
    Das Modul aus Beitrag 1 wurde aktualisiert. Eingeflossen sind die Korrekturen aus r13611 & r13612 für CAO Faktura.

    Grüße

    Torsten

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.707
    • Geschlecht:
    Re: MODUL: One Stop Shop (OSS) EU-Regelung 2021
    Antwort #126 am: 13. Juli 2021, 04:10:52
    Ich habe meinen Vorschlag zur Vereinfachung der Speicherung in der DB-Tabelle products_geo_zones_to_tax_class und meinen Einwand zur Sortier-Funktion in der tax_rates.php dem Ticket #2038 hinzugefügt.

    Gruß,
    noRiddle

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.213
    • Geschlecht:
    Re: MODUL: One Stop Shop (OSS) EU-Regelung 2021
    Antwort #127 am: 13. Juli 2021, 08:01:23

    Code: PHP  [Auswählen]
          foreach ($products_data['products_geo_to_tax'] as $geo_zone_id => $tax_class_id) {
            if($tax_class_id != 0) {
                $sql_data_array = array(
                  'products_id' => $products_id,
                  'geo_zone_id' => $geo_zone_id,
                  'tax_class_id' => $tax_class_id,
                );
                xtc_db_perform(TABLE_PRODUCTS_GEO_ZONES_TO_TAX_CLASS, $sql_data_array);
            }
          }

    Das würde das Bearbeiten einfacher/übersichtlicher machen und die DB-Tabelle products_geo_zones_to_tax_class sinnvoller und konsistenter.

    Das funktioniert so nicht, denn es gibt Artikel wie zB Damenhygieneartikel welche in manchen Ländern mit dem Nullsatz besteuert sind. Bei uns aber mit dem normalen Steuersatz. Also muss für diesen Artikel ein Eintrag in der Tabelle gemacht werden mit dem Steuersatz 0.

    Mit deinem Änderungsvorschlag ist das nicht mehr möglich.

    Was aber Sinn macht ist das hier:

    Code: PHP  [Auswählen]
          foreach ($products_data['products_geo_to_tax'] as $geo_zone_id => $tax_class_id) {
            if ($tax_class_id != $products_data['products_tax_class_id']) {
              $sql_data_array = array(
                'products_id' => $products_id,
                'geo_zone_id' => $geo_zone_id,
                'tax_class_id' => $tax_class_id,
              );
              xtc_db_perform(TABLE_PRODUCTS_GEO_ZONES_TO_TAX_CLASS, $sql_data_array);
            }
          }
     

    Damit wird nur ein Eintrag erstellt, wenn er vom Standard abweicht.

    Gruss Gerhard

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.707
    • Geschlecht:
    Re: MODUL: One Stop Shop (OSS) EU-Regelung 2021
    Antwort #128 am: 13. Juli 2021, 08:58:06
    Ah, okay, daß es Artikel mit Nullsatz in manchen Ländern gibt war mir nicht bekannt. Dann geht meine erstgenannte Änderung in der /admin/includes/modules/group_prices.php natürlich nicht und für die Änderung in der categories-Klasse wäre dein Vorschlag der richtige.

    Gruß,
    noRiddle

    *NACHTRAG*
    Allerdings ist das noch problematisch:

    [...]
    Hat man nun einen Artikel mit einer Steuerklasse die es in einem anderen Land nicht gibt (z.B. Zwischensatz) ist dort preselected " -keine-".
    [...]

    Also dann der Nullsatz mit $tax_class_id == 0, was man leicht übersehen kann.

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.213
    • Geschlecht:
    Re: MODUL: One Stop Shop (OSS) EU-Regelung 2021
    Antwort #129 am: 13. Juli 2021, 10:10:27
    [...]
    *NACHTRAG*
    Allerdings ist das noch problematisch:

    [...]
    Hat man nun einen Artikel mit einer Steuerklasse die es in einem anderen Land nicht gibt (z.B. Zwischensatz) ist dort preselected " -keine-".
    [...]

    Also dann der Nullsatz mit $tax_class_id == 0, was man leicht übersehen kann.

    Dein Vorschlag erfordert immer eine Aktion an den Steuersätzen, nämlich auch dann, wenn es keine Abweichung vom Standard gibt. Dann muss bei jedem speichern/aktualisieren immer wieder der Steuersatz eingetragen werden...

    Gruss Gerhard

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.707
    • Geschlecht:
    Re: MODUL: One Stop Shop (OSS) EU-Regelung 2021
    Antwort #130 am: 13. Juli 2021, 14:37:57
    Verstehe ich nicht. Was ich moniere in deinem Zitat ist doch auch ohne meine Änderung schon so.
    Was meinst du denn mit "dein Vorschlag" ? Ich hatte ja mehrere gemacht.

    Gruß,
    noRiddle

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.213
    • Geschlecht:
    Re: MODUL: One Stop Shop (OSS) EU-Regelung 2021
    Antwort #131 am: 14. Juli 2021, 08:12:30
    Ich erkläre es dir nochmals:

    Es werden nur notwendige bzw. vom Shopland abweichende Steuerklassen in die Tabelle `products_geo_zones_to_tax_class`geschrieben.

    Nach deinem Vorschlag soll nun die Steuerklasse für andere Länder nicht vorbelegt werden sondern auf "--keine--" stehen.

    Das hat folgende Auswirkung:
    Artikel aufrufen und zB nur Lagerbestand ändern und speichern. Dabei wird nun für alle Länder der Nullsatz gespeichert, was aber falsch ist. Alternativ musst du dann jedes mal, wenn du was ändern willst am Artikel die Steuerklasse wieder angeben, was zur Folge hat, dass wieder nichts gespeichert wird, weil es keine andere Steuerklasse als der vom Shopland ist. Somit steht beim nächsten Aufruf des Artikels wieder alles auf "--keine--".

    Verstanden ?
     :crazy:

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.707
    • Geschlecht:
    Re: MODUL: One Stop Shop (OSS) EU-Regelung 2021
    Antwort #132 am: 14. Juli 2021, 16:13:52
    Lieber GTB.
    Das hatte ich auch vorher verstanden, nämlich nachdem du mir gesagt hast, daß es Artikel mit Null-Steuersatz gibt (dein Beispiel war Damenhygieneartikel).

    Ich rede jedoch von Folgendem (und ich erkläre es auch nochmals :-D):
    Ein Artikel steht im Standard (also für STORE_COUNTRY) auf z.B. "Zwischensatz" (benannt nach Mehrwertsteuersätze in den EU-Ländern auf europa.eu).
    Diesen Zwischensatz gibt es aber nicht für z.B. Tschechien, was zur Folge hat, daß dort bei erstmaligem Öffnen der Artikelbearbeitung "-keine-" vorausgewählt ist, nämlich weil es weder den "Zwischensatz" gibt ($pInfo->products_tax_class_id) noch einen abweichenden Satz ($products_tax_class_array[$geo_zones['geo_zone_id']]), weil noch nicht gespeichert.
    (Die Variablen habe ich aus der /admin/includes/modules/group_prices.php zitiert.)

    Kurz:
    Im Normalfall gibt es ja das Fallback auf den Standard-Satz (also für STORE_COUNTRY), was aber hier nicht greifen kann, sodaß es kein Fallback gibt sondern eben den Null-Satz.
    Bevor ich wusste, daß es überhaupt so etwas wie einen Null-Satz gibt, war alles logisch was ich gesagt habe.
    Das fehlende Fallback im hier nun nochmals beschriebenen Fall ist dann wohl nicht zu ändern, zumindest sehe ich nicht wie.

    Gruß,
    noRiddle

    Cookie

    • Fördermitglied
    • Beiträge: 277
    Re: MODUL: One Stop Shop (OSS) EU-Regelung 2021
    Antwort #133 am: 19. Juli 2021, 15:09:43
    Hallo,

    hat jemand die Steuersätze alle als SQL Import angelegt. Das würde uns sicherlich allen helfen.

    Grüße
    Christian

    DerNachbar

    • Schreiberling
    • Beiträge: 477
    Re: MODUL: One Stop Shop (OSS) EU-Regelung 2021
    Antwort #134 am: 19. Juli 2021, 16:55:36
    Kannst du gerne anlegen und hier teilen. ;)
    216 Antworten
    34989 Aufrufe
    27. November 2023, 16:29:47 von Viol
    20 Antworten
    7072 Aufrufe
    13. Oktober 2021, 19:37:34 von WeXsler
    2 Antworten
    1104 Aufrufe
    01. April 2019, 10:32:36 von Tomcraft
    0 Antworten
    787 Aufrufe
    11. Januar 2018, 15:25:34 von Benjamindd
               
    anything