Jump to content

Eigene Rechnungen hinterlegen (war 1.6 --> Jetzt in 8.1.7)


Recommended Posts

Hallo zusammen,

 

Wir haben -wie sicher viele andere Shopbetreiber auch- ein eigenes System, um Rechnungen zu schreiben, da wir ja nicht ausschließlich online verkaufen.

Nun wäre das blöd, den Prestashop die Rechnungen machen zu lassen und dann alles von Hand in der Buchhaltung einzupflegen, dazu dann im WWS die verkauften Artikel zu buchen usw.

 

Nun wäre es super, wenn wir stattdessen bei einer Bestellung dem Kunden unsere eigene PDF-Rechnung zum Download bereitstellen könnten, dann hat er jederzeit die Möglichkeit, diese in seinem Account abzurufen und wir können gleichzeitig weiterhin die Funktionalität unseres WW-Systems nutzen, Rechnungen direkt an den Kunden zu mailen.

 

Sinn der Sache ist es, später dezentral zu liefern, also Waren direkt vom Lieferanten neutral an die Kundenadresse zu bekommen, da wäre diese Funktion exakt das, was wir benötigen.

 

Wie vorgehen?

Link to comment
Share on other sites

mein erster Ansatz wäre:

 

1. du erstellst einen neuen Ordner sagen wir:

/invoices

 

2. In diessen Ordner kopierst du die erstellten Rechnungen als PDF (automatisiert) und gibst denen den Namen der Bestell-ID vom Shop (z,B. 6.pdf)

 

3 Du manipulierst den Rechnungs-PDF-Knopf in der Bestellübersicht indem du die Datei:

/themes/DEIN_TEMPLATE/history.tpl öffnest und den PDF-Aufruf (ca Zeile 81):

 

                                <a class="link-button" href="{$link->getPageLink('pdf-invoice', true, NULL, "id_order={$order.id_order}")|escape:'html':'UTF-8'}" title="{l s='Invoice'}" target="_blank">
                                    <i class="icon-file-text large"></i>{l s='PDF'}
                                </a>

 

ersetzt durch:

 

                               <a class="link-button" href="/invoices/{$order.id_order}.pdf" title="{l s='Invoice'}" target="_blank">
                                    <i class="icon-file-text large"></i>{l s='PDF'}
                                </a>

 

Wie gesagt ein erster Ansatz, müßte so funktionieren, ev müßtest du noch Sicherheiten einbauen, daß nicht jeder jede Rechnung aufmachen kann..

 

Grüsse

Whiley

  • Like 1
Link to comment
Share on other sites

  • 1 year later...

Ich hole das jetzt nochmal hoch, weil wir das jetzt endlich implementieren wollen.

Whileys Änderung ist drin, jetzt geht es eigentlich nur noch darum, dass der Kunde eine hinterlegte Rechnung abrufen kann. Im Rechnungsfeld steht aber nur ein "-" drin.

Wenn ich nun im Admin eine Rechnung erstelle, setzt er die Invoice auf true und die Rechnung ist abrufbar. So weit so gut, das geht schonmal.

Schöner wäre, wenn er jetzt anstelle der Prüfung, ob invoice=true einfach im Verzeichnis suchen würde, ob die entsprechende Rechnung als pdf vorhanden ist und dann den Download erlaubt, also praktisch das

if (isset($order.invoice) && $order.invoice && isset($order.invoice_number) && $order.invoice_number) && isset($invoiceAllowed) && $invoiceAllowed == true

wegfiele und stattdessen dann die Abfrage, ob eine PDF mit dem Namen {$order.id_order}.pdf im Verzeichnis /invoices existiert.

Es müßte ja mit "if file_exists" machbar sein, aber wie lautet in dem tpl dann die korrekte syntax?

Die Abfrage müßte dann z.b. suchen, ob in /invoices die Datei {$order.reference}{$order.id_customer}.pdf existiert

 

invoicetest.JPG

Edited by Claudiocool (see edit history)
Link to comment
Share on other sites

Da habe ich jetzt gleich nochmal eine Frage:

Wenn die Rechnung jetzt im Verzeichnis liegt und gemäß obiger Nomenklatur benannt ist, wie biege ich den Link in der Bestellübersicht im Adminbereich um? Dort wird jetzt ein Dokumentsymbol angezeigt, dazu wäre es aber jetzt natürlich perfekt, wenn ich da dann auch die PDF aufrufen kann, die der Kunde auch holen kann.

Link to comment
Share on other sites

Hallo Christian,

im Frontend habe ich das schon so gesetzt, wie Whiley es weiter oben beschrieben hatte, das funktioniert, man kann die Rechnung dort aufrufen, also die von mir entsprechend benannte PDF wird dem Nutzer angezeigt. Das ist schonmal okay.

Jetzt wird der Link quasi erzeugt, wenn der Status auf "versendet" gesetzt ist. Im Frontend geht es (mit der Einschränkung, dass das bei jedem User gesetzt wird, ich also jetzt bei jedem die Rechnung ins Verzeichnis legen muss, weil ich das mit der Bedingung noch nicht hinbekommen habe, also das PDF-Symbol nur kommt, wenn auch tatsächlich die Rechnung drinliegt (mit einem if file_exists).

Im Backend zeigt es jetzt so an, wenn die Bestellung auf versendet gesetzt ist:

rebackoff.JPG.2c6cba75740472687d790178bfa573ce.JPG

Jetzt suche ich also im Backoffice die Stelle, an der zum PDF verlinkt wird, um dort dieselbe Nomenklatur zu hinterlegen. Dadurch ist man dann in der Lage, im BO schnell nachzusehen, was in der Rechnung steht, so wie es jetzt im FE auch geht.

Rechnungen selbst werden bei mir vom Presta nicht erstellt, weil der Shop bei uns nur zu einem Teil die Geschäfte macht, vieles geht lokal und per Telefon/Mail, da würde ich sonst mit den Rechnungsnummern im Archiv Probleme bekommen, wenn die noch nach Jahren zugeordnet werden müssten, weil ein Kunde nach Jahren irgendwelche Fragen zu seinen Sachen hat. Man kann zwar irgendwie forschen, aber das soll nicht vorm Kunden passieren.

Link to comment
Share on other sites

  • 1 month later...

Andere Frage noch dazu:

Das obige funktioniert jetzt leider nur bei Bestellungen von angelegten Usern, bei Gastbestellungen zeigt er leider keinen Button für eine Rechnung an. Wo müßte das denn jetzt rein?

 

In der Order-Detail.tpl steht jetzt

    {if $invoice AND $invoiceAllowed}
    <p>
        <i class="icon-file-text"></i>
        <a target="_blank" href="{$link->getPageLink('pdf-invoice', true)}?id_order={$order->id|intval}{if $is_guest}&amp;secure_key={$order->secure_key|escape:'html':'UTF-8'}{/if}">{l s='Download your invoice as a PDF file.'}</a>
    </p>
    {/if}

Das ist das original, nur sieht der Kunde da keine PDF-Datei, weil ich die nicht so hinkriege, dass die Kombi aus

{$order.reference}{$order.id_customer}.pdf hier funktioniert.

Edited by Claudiocool (see edit history)
Link to comment
Share on other sites

  • 11 months later...

Ich will das jetzt nochmal hochholen:

2 Dinge fehlen mir jetzt noch:

  • Gastbesteller sollten die Rechnung auch abholen können, bisher geht es nur bei Kunden mit Account
  • Im Backend kriege ich es auch nicht zu sehen, weiß jemand, in welcher Datei man den Link umbiegen müsste? Momentan heißt der Link dazu
    ...../adminxxxxx/index.php?controller=AdminPdf&token=..........
     
Link to comment
Share on other sites

Der Zugang zu den Bestelldaten für Gastbesteller mit einem geheimen (über unverschlüsselte E-Mail übermittelten) Link dürfte sowieso nicht gerade besonders datenschutzkonform sein, ggf. könntest du die Gastbestellmöglichkeit abschalten.

Bei mir sind die Links zur Rechnung bei Gast- und angemeldeten Kunden identisch, nach dem Token kommt noch "&submitAction=generateInvoicePDF&id_order=1234".

Übrigens, vermeide aus Sicherheitsgründen deinen Adminordner zu verraten, sichtbar ist er zwar ausgeixt, im Linkziel ist er aber zu sehen.

Link to comment
Share on other sites

Wir haben da ein eigenes System, das die Dateinamen der PDF erzeugt und gleich in den Invoice-Ordner legt. Kundenseitig funktioniert es perfekt, nur aus dem BO heraus komme ich da nicht ran, daher suche ich die Stelle im Code, wo die Rechnungen aufgerufen werden, um das dann auch genauso aus dem BO fischen zu können.

Link to comment
Share on other sites

  • Claudiocool changed the title to Eigene Rechnungen hinterlegen (war 1.6 --> Jetzt in 8.1.7)

Nun ist ja schon ein wenig Zeit vergangen und ich mache gerade munseren ersten 8er fertig. Jetzt wäre natürlich auch hier interessant, wo da die Rechnungsnummern generiert werden, um einen ähnlichen Rechnungsspeicher für die Kunden zu generieren.

 

Hat da schonmal wer was damit gemacht?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...