Ich hab einiges an dem Modul angepasst, weil mir das zu viel geklicke und gescrolle war, bis dann endlich die Rechnung da war. Außerdem hat mich gestört, dass jedesmal beim Download die Datei neu erstellt wurde und somit die Datei einen neuen "Zeitstempel" hatte. Den E-Mail-Versand will ich gerade nicht, weswegen der Schritt mit der Option bei mir wegfallen kann. Persönliches empfinden
Zumindest habe ich das so umgebaut, dass wenn man auf den Button "Neue Rechnungsnummer vergeben: xxxxxxx" klickt, das PDF-File erstellt und in einem Unterordner von ~/admin/ abgelegt wird. Der Button ändert sich dahingehend, dass dann nur noch die ReNr. darin steht und mit klick darauf die Datei heruntergeladen wird. (siehe Bilder im Post
#1788 .
Also zwei Kicks von ReNr. vergeben bis sie auf meinem Rechner ist. Ich hätte jetzt gerne, dass ein Klick reicht. Die Datei wurde erstellt und soll direkt heruntergeladen werden + ich komme wieder auf die Seite mit der Bestellung [orders.php] (auf dem jetzt der Button nur noch mit der ReNr. zu sehen ist).
Ich bekomme es hin, dass die Re erstellt und heruntergeladen wird, dann fehlt mir aber die Weiterleitung / Reload (wobei reload falsch, weil sonst die action2 zum Erstellen der Rechnung nochmal ausgeführt wird) der Bestellseite (orders.php?action=edit), damit der geänderte Button zu sehen ist.
Vielleicht leichter mit ein paar Codeschnipsel:
invoice_number_functions.php
Um die Anzeige ReNr und Datum zu ändern [EDIT*falscher Schnipsel*]:
function add_table_infos_ibillnr
($order){ $html = ''; if (defined('MODULE_INVOICE_NUMBER_STATUS') && MODULE_INVOICE_NUMBER_STATUS
== 'True') { $html .= '<tr>'.PHP_EOL
; $html .= ' <td class="main"><b>'.ENTRY_INVOICE_NUMBER
.'</b></td>'.PHP_EOL
; $html .= ' <td class="main">'.($order->info['ibn_billnr'] == '' ? add_btn_ibillnr
($order,$oID) : '<a class="button" href="'. xtc_href_link
('invoice/' . get_pdf_filename
($oID) . '.pdf', ''). '">' . $order->info['ibn_billnr']) . '</a></td>'.PHP_EOL
; $html .= '</tr>'.PHP_EOL
; $html .= '<tr>'.PHP_EOL
; $html .= ' <td class="main"><b>'.ENTRY_INVOICE_DATE
.'</b></td>'.PHP_EOL
; $html .= ' <td class="main">'. ($order->info['ibn_billdate'] == '0000-00-00'?
'<span class="not_assigned">'.NOT_ASSIGNED
.'<span>' : xtc_date_short
($order->info['ibn_billdate'])).'</td>'.PHP_EOL
; $html .= '</tr>'.PHP_EOL
; } return $html;}function add_btn_ibillnr
($order,$oID){ $html = ''; if (defined('MODULE_INVOICE_NUMBER_STATUS') && MODULE_INVOICE_NUMBER_STATUS
== 'True') { if ($order->info['ibn_billnr'] == '') { $ibillnr = get_next_ibillnr
(); $html = ' <a class="button ibillnr-btn" href="'.xtc_href_link
(FILENAME_ORDERS
, 'page='.$_GET['page'].'&oID='.$_GET['oID'].'&action=edit&action2=set_ibillnr').'">'. BUTTON_BILL
. ': ' . $ibillnr . '</a>'.PHP_EOL
; }elseif ($order->info['ibn_billnr'] !== ''){ $filePrefix = get_pdf_filename
($oID); $html = ' <a class="button" href="'. xtc_href_link
('invoice/' . $filePrefix . '.pdf', ''). '">'. BUTTON_INVOICE_PDF
. '</a>'.PHP_EOL
; } } return $html;} und oben direkt noch
require_once('includes/modules/invoice_number/pdf_invoice_functions.php');
eingefügt.
Die pdf_invoice_functions.php sieht dann so aus:
function generate_pdf_invoice
($oID){ if( (isset($_GET['action2']) && $_GET['action2']=='set_ibillnr') && ($order->info['ibn_billnr'] == '') ) { require_once(DIR_FS_CATALOG
. DIR_WS_CLASSES
. 'FPDF/PdfRechnung.php'); require_once(DIR_FS_INC
. 'xtc_get_order_data.inc.php'); require_once(DIR_FS_INC
. 'xtc_get_attributes_model.inc.php'); require_once(DIR_FS_INC
. 'xtc_not_null.inc.php'); require_once(DIR_FS_INC
. 'xtc_format_price_order.inc.php'); require_once(DIR_FS_INC
. 'xtc_utf8_decode.inc.php'); require_once(DIR_FS_INC
. 'xtc_pdf_bill.inc.php'); // generate bill xtc_pdf_bill
($oID, $send=false, $deliverSlip=false); xtc_redirect
(xtc_href_link
(FILENAME_ORDERS
, 'page=1&oID='.(int
)$oID.'&action=edit')); }}//get pdf invoice filenamefunction get_pdf_filename
($oID){ // replace Variables for filePrefix{ $oID = $_GET['oID']; $sqlODetail = "
SELECT
customers_id,
customers_cid,
ibn_billnr
FROM " . TABLE_ORDERS
. "
WHERE orders_id = '" . $oID . "'
"; $resODetail = xtc_db_query
($sqlODetail); $rowODetail = xtc_db_fetch_array
($resODetail); // use customers_id as the real id? if (PDF_USE_CUSTOMER_ID
== 'true') { $customers_id = $rowODetail['customers_id']; } else { $customers_id = $rowODetail['customers_cid']; } $ibn_billnr = $rowODetail['ibn_billnr']; // create FilePrefix $filePrefix = trim(PDF_FILENAME
); $filePrefix = str_replace('{oID}', $oID, $filePrefix); $filePrefix = str_replace('{bill}', $ibn_billnr, $filePrefix); $filePrefix = str_replace('{cID}', $customers_id, $filePrefix); $filePrefix = str_replace(' ', '_', $filePrefix); if ($filePrefix == '') $filePrefix = $oID; return $filePrefix;} Vermutlich alles etwas verwirrend. Ist auch schon wieder ein paar Monate her, dass ich da intensiv dran war. Ist auch noch nicht sauber und updatesicher gelöst. Ich habe u.a. noch das Problem die functions ordentlich aufzuteilen und überall dort verfügbar zu machen wo man sie braucht.
Dachte es gäbe eine relativ einfache Lösung für "Download + Weiterleitung". Ähnlich wie man es ein paar Softwareanbietern hat, die nach dem klick auf den Download-Button eine "Danke das Sie sich für unser Produkt interessieren und freuen uns auf Ihre Spende" - Seite weiterleiten.