Jump to content

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?

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

Das klingt erstmaöl gut, das werde ich die Tage mal testen. Ich gebe Bescheid, wenn es so geht, wäre auf jeden Fall perfekt. :)

Share this post


Link to post
Share on other sites

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)

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites

Nun, du müßtest doch jetzt schauen, wie der Link beim Klick auf das PDF-Symbol lautet und wie er lauten muss, dann sollte es doch möglich sein, eine Umleitungsregel per .htaccess einzurichten.

Share this post


Link to post
Share on other sites

Weiss jemand zufällig, wo der Aufruf in der Bestellmaske im Adminbereich erfolgt? Ich würde gerne auch von dort aus die Rechnungen aufrufbar haben, damit man da auch sehen kann, ob das Dokument hinterlegt ist.

Also hier:

bestellmaske.png.3c19304e3160bd28004fa22342ae6705.png

Share this post


Link to post
Share on other sites

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)

Share this post


Link to post
Share on other sites

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=..........
     

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites

Ich müßte jetzt wissen, wo der Link im BO erzeugt wird, damit ich den auch dahinführen kann, wo die Rechnungen liegen.

An dem Linkziel können sich dann die Hacker die Zähne ausbeißen :D

Gastbestelluntgen sind hier ein Muss, es sind ca. 80%

Edited by Claudiocool (see edit history)

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More