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: Hinweis auf innergemeinschaftliche Lieferung auf Rechnungen

    arno_nuehm

    • Mitglied
    • Beiträge: 112
    • Geschlecht:
    Hallo Forengemeinde,

    als ich gerade dabei war an der print_order.html rumzudoktern ist mir aufgefallen, dass das integrierte Rechnungsmodul ein großes steuerrechtliches Problem nicht löst.
    Jeder, der an gewerbl. Abnehmer in der EU liefert kennt den Begriff "steuerfreie innergemeinschaftliche Lieferung" und ist sich über die Andruckpflicht eines gewissen Hinweises bewusst.
    Nachdem ich die print_order.html angepasst hatte ist mir doch aufgefallen, dass dies anscheinend noch nie akut war - denn die Funktion ist im System garnicht enthalten.
    Da wir sehr viel in die EU liefern, habe ich kurzerhand folg. "Quick&Dirty" Lösung gebastelt:

    1. Suche in der admin\print_order.php

    Code: PHP  [Auswählen]
    $smarty->assign('address_label_payment',xtc_address_format($order->billing['format_id'], $order->billing, 1, '', '<br />'));
      $smarty->assign('csID',$order->customer['csID']);

    und ergänze danach

    Code: PHP  [Auswählen]
      $smarty->assign('vat_id',$order->customer['vat_id']);
     
      if (isset($order->customer['vat_id'])) {
             if(strpos($order->customer['vat_id'],'DE') === false) {
                     $vat_free = true;
            } else {
                    $vat_free = false;
             }
      }
      $smarty->assign('vat_free', $vat_free);

    2. Suche in lang\german\lang_german.conf den Abschnitt

    Code: PHP  [Auswählen]
    [print_order]

    und ergänze

    Code: PHP  [Auswählen]
    vat_free = 'HINWEIS: Steuerfreie innergemeinschaftliche Lieferung.'
    vat_id = 'USt-Id.Nr.'

    3. In der templates\dein template\admin\print_order.html kann man nun folg. Funktionen nutzen:

    Code: PHP  [Auswählen]
    {if $vat_id}{#vat_id#}{$vat_id}{/if}
    {if $vat_free == true}{#vat_free#}{/if}

    fertig.

    Nun kann man USt-ID. des Kunden und den entsprechenden Hinweis andrucken.
    Der Hinweis wird nur gedruckt, wenn
    - das Feld `orders`.`customers_vat_id`gefüllt ist
    - das Feld mit einer USt-ID gefüllt ist, die nicht DE zugeordnet werden kann

    Eine 1 mit Sternchen wäre jetzt, das man den Hinweis in der zur USt-Id. gehörigen Landessprache andruckt. Umsetzung kein Problem, halte ich jetzt persönlich aber für überzogen. ;-)

    Vielleicht benötigt jemand anders auch die Lösung, deshalb habe diese einfach mal gepostet.

    Gruß
    Manu

    [EDIT Tomcraft 19.08.2012: Hier geht es direkt zum Modul von web0null.]

    Linkback: https://www.modified-shop.org/forum/index.php?topic=21699.0

    web0null

    • Experte
    • Beiträge: 1.998
    Hi, arno_nuehm.

    Erstmal ein  :thx:.

    Aber, einige Umstände sind hier nicht berücksichtigt, ja ich weiß "Quick&Dirty". ;-), aber...
    • so ist es nur für Deutsche Shops
    • wenn der Kunde nicht aus der EU kommt, würde auch der Text HINWEIS: Steuerfreie innergemeinschaftliche Lieferung. angezeigt werden

    Punkt 1 müssen wir mal dynamisch lösen, dann bekommen wir aber das Problem, dass wenn der Shop-Betreiber auch nicht aus der EU kommt, würde der Text auch erscheinen.

    Also machen wir es so:

    1. Suche in der admin\print_order.php

    Code: PHP  [Auswählen]
    $smarty->assign('address_label_payment',xtc_address_format($order->billing['format_id'], $order->billing, 1, '', '<br />'));
          $smarty->assign('csID',$order->customer['csID']);

    und füge danach ein

    Code: PHP  [Auswählen]
    if ($order->customer['vat_id']) {
      require_once DIR_FS_INC . 'xtc_get_iso_code_2_is_eu.inc.php';
      $query_store_iso_code_2 = xtc_db_query("
            SELECT countries_iso_code_2
            FROM "
    . TABLE_COUNTRIES . "
            WHERE countries_id = "
    .STORE_COUNTRY. "
      "
    );
      $store_iso_code_2 = xtc_db_fetch_array($query_store_iso_code_2);
      $smarty->assign('vat_id',$order->customer['vat_id']);
      if (xtc_get_iso_code_2_is_eu($order->delivery['country_iso_2']) &&
          xtc_get_iso_code_2_is_eu($store_iso_code_2['countries_iso_code_2']) &&
          strpos($order->customer['vat_id'], $store_iso_code_2['countries_iso_code_2']) === false) {
        $smarty->assign('vat_free', true);
      }
    }

    2. Suche in lang\german\lang_german.conf den Abschnitt

    Code: PHP  [Auswählen]
    [print_order]

    und ergänze

    Code: PHP  [Auswählen]
    vat_free = 'HINWEIS: Steuerfreie innergemeinschaftliche Lieferung.'
    vat_id = 'USt-Id.Nr.'

    3. In der templates\dein template\admin\print_order.html kann man nun folg. Funktionen nutzen:

    Code: PHP  [Auswählen]
    {if $vat_id}{#vat_id#}{$vat_id}{/if}
    {if $vat_free}{#vat_free#}{/if}

    4. die xtc_get_iso_code_2_is_eu.inc.php nach \root\inc Kopieren.

    So, jetzt wird abgefragt ob der Shop-Betreiber und der Kunde aus der EU sind, und ob in der Kunden vat_id nicht das gleiche Länderkürzel steckt wie dass des Shop-Betreibers.

    Jetzt passt es für alle Möglichkeiten, (wenn ich mich nicht irre  :whistle:)

    Gruß web0null

    [EDIT Tomcraft 19.08.2012: Modul in Beitrag 1 verlinkt.]

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.743
    • Geschlecht:
    Mal wieder voll in Aktion, web0null ? ;-)

    Gruß,
    noRiddle

    arno_nuehm

    • Mitglied
    • Beiträge: 112
    • Geschlecht:
    ok..ok... gewonnen. :-D

    Hast natürlich recht: Meine Lösung ist nur für deutsche Shops. Andere Länder müssten doch einfach nur das Länderkürzel in
    Code: PHP  [Auswählen]
    if(strpos($order->customer['vat_id'],'DE') === false) {
    auf Ihr eigenes Land abändern. Würde das nicht genügen?
    Deine Lösung ist aber natürlich "still quick & clean".

    Deiner 2. Anmerkung kann ich leider nicht folgen: Wie kann ein Kunde denn eine VAT-ID haben, wenn er nicht aus der EU komt? :-?
    Also wäre customer['vat_id'] in diesem Fall doch leer?

    DokuMan

    • modified Team
    • Beiträge: 6.669
    • Geschlecht:
    Eine sehr schöne Lösung!

    web28

    • modified Team
    • Beiträge: 9.404
    Sehr guter Ansatz.

    Statt

    Code: PHP  [Auswählen]
    if ($order->customer['vat_id']) {

      require_once DIR_FS_INC . 'xtc_get_iso_code_2_is_eu.inc.php';

      $query_store_iso_code_2 = xtc_db_query("

            SELECT countries_iso_code_2

            FROM "
    . TABLE_COUNTRIES . "

            WHERE countries_id = "
    .STORE_COUNTRY. "

      "
    );

      $store_iso_code_2 = xtc_db_fetch_array($query_store_iso_code_2);

      $smarty->assign('vat_id',$order->customer['vat_id']);

      if (xtc_get_iso_code_2_is_eu($order->delivery['country_iso_2']) &&

          xtc_get_iso_code_2_is_eu($store_iso_code_2['countries_iso_code_2']) &&

          strpos($order->customer['vat_id'], $store_iso_code_2['countries_iso_code_2']) === false) {

        $smarty->assign('vat_free', true);

      }

    }

    sollte man das besser komplett in eine Funktion schreiben, damit reduziert sich der Einbaucode auf:

    Code: PHP  [Auswählen]
    if ($order->customer['vat_id']) {
    require_once DIR_FS_INC . 'xtc_get_vat_free_info.inc.php';
    $smarty->assign('vat_id',$order->customer['vat_id']);
    $smarty->assign('vat_free', xtc_get_vat_free_info($order->delivery['country_iso_2'],$order->customer['vat_id']));
    }

    Vorteil: an den Originaldateien wird nur das nötigste geändert, der Codeeinbau ist auch wesentlich übersichtlicher und damit einfacher.

    toppi

    • Viel Schreiber
    • Beiträge: 651
    Hallo,
    habe dies getestet, geht aber nur bei einer einfachen Rechnung.

    Ich möchte aber den Zusatz "innergemeinschaftliche Lieferung" dann beim Druck der PDF-Rechnung.

    Wer kann mir hier weiterhelfen?

    DerNachbar

    • Viel Schreiber
    • Beiträge: 503
    Und ich möchte Klugscheissen, weil das Finanzamt gerade aktuell das Thema bei uns bemängelt hat.

    Lt. Aussage sollte folgender Satz komplett auf der Rechnung stehen:

    Es handelt sich bei dieser Bestellung
    um eine steuerfreie Ausfuhrlieferung gem. §6 UStG in Verbindung mit §4 Nummer 1a UStG.


    auch wenn ich "HINWEIS: Steuerfreie innergemeinschaftliche Lieferung" selber für ausreichend befunden habe.

    Edit: Fragt mich nicht warum... wir machens nu einfach...

    toppi

    • Viel Schreiber
    • Beiträge: 651
    [...]
    Es handelt sich bei dieser Bestellung
    um eine steuerfreie Ausfuhrlieferung gem. §6 UStG in Verbindung mit §4 Nummer 1a UStG.

    [...]

    Das kann man ja auch in den Spracheinstellungen ändern. Wäre für mich auch kein Problem.

    Nur, mir nützt das Modul leider nichts, da ich diesen Hinweis auf der PDF-Rechnung haben möchte.

    Kann mir da jemand weiterhelfen?

    Clever

    • Schreiberling
    • Beiträge: 257
    @toppi
    den Einbau nicht in die Print_order sondern in die inc/xtc_pdf_bill_inc.php (bei den smartys)
    und den Text in die /lang/german/modules/contribution/pdfbill.php sollte das Gewünschte erwirken ;)

    LED-Profi

    • Fördermitglied
    • Beiträge: 104
    • Geschlecht:
    Hallo toppi und Clever,
    jetzt hab ich mich ne Stunde versucht diesen Text automatisch in die PDF-Bill zu integrieren. Leider ohne Erfolg. Mangelns fundierter Programmierkenntnisse kann ich leider immer nach Anleitung für Blonde so etwas umsetzen.
    Wer kann mir da bitteschön helfen. Mein Steuerberater will jetzt unbedingt diesen Text auf der Rechnung sehen.

    toppi

    • Viel Schreiber
    • Beiträge: 651
    @LED-Profi

    Ich habe das Modul bisher leider noch nicht eingebaut, da ich das Kommentar-Modul einbauen wollte, wo der Text dann im Adminbereich individuell angegeben werden kann.

    Von "Clever" habe ich hier auch schon Dateiänderungen vorgenommen, jedoch hat es bis jetzt leider auch noch nicht funktioniert.
    Der Beitrag dazu ist hier im Forum zu finden: MODUL: PDFBill Next - PDF Rechnung/Lieferschein - Inklusive Mailversand

    Mein letzter Beitrag steht dort auf der Seite 55. Ich hoffe auch hier noch weiterhin auf Antwort, denn sämtliche Versuche, den Text auf der Rechnung ausdrucken zu lassen scheiterten.
    Bisher bleibt mir daher auch nur die Möglichkeit, den Text manuell zu vermerken.

    AllyG

    • Schreiberling
    • Beiträge: 423
    • Geschlecht:
    Hallo,

    erst mal SUPER Modul!

    Eine Frage, was muss ich ergänzen, wenn ich außerdem noch einen anderen Satz auf der Rechnung haben will, wenn der Kunde nicht aus der EU stammt?

    Das wäre vielleicht auch für einige Shopbetreiber noch interessant.

    Wäre für eure Hilfe sehr dankbar :-)

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.195
    • Geschlecht:
    Sofern Du Shopversion 1.06 rev 4642 einsetzt sollte folgendes ausreichen:

    Suche in Datei "/admin/print_order.php":

    Code: PHP  [Auswählen]
      $smarty->assign('DELIVERY_DATE', isset($order->info['ibn_billdate']) && $order->info['ibn_billdate'] != '0000-00-00' ? xtc_date_short($order->info['ibn_billdate']) :  xtc_date_short($order->info['date_purchased']));

    Füge danach ein:

    Code: PHP  [Auswählen]
      // allow duty-note in print_order
      $smarty->assign('DELIVERY_DUTY_INFO', $main->getDeliveryDutyInfo($order->delivery['country_iso_2']));

    Erweitere die Datei "/templates/<template-name>/admin/print_order.html" an gewünschter Stelle um:

    Code: PHP  [Auswählen]
        {if $DELIVERY_DUTY_INFO}
        <div style="font-size:11px; margin: 10px 0; border:1px solid #a3a3a3;padding:5px;text-align: justify;">{#text_duty_info#}</div>
       {/if}

    Grüße

    Torsten

    AllyG

    • Schreiberling
    • Beiträge: 423
    • Geschlecht:
    Ich kann dir nicht sagen, ob das funktioniert denn, obwohl ich die aktuellste Version habe finde ich in meiner print_order.php den folgenden code nicht /er ist nicht vorhanden und das auch nicht im aktuellen Downloadpaket des Shops (hab ich ebenfalls geprüft) :-(

    Code: PHP  [Auswählen]
      $smarty->assign('DELIVERY_DATE', isset($order->info['ibn_billdate']) && $order->info['ibn_billdate'] != '0000-00-00' ? xtc_date_short($order->info['ibn_billdate']) :  xtc_date_short($order->info['date_purchased']));

    Trade Republic - Provisionsfrei Aktien handeln