cmsimple-xh / xhshop

A simple shop for CMSimple_XH
GNU General Public License v3.0
4 stars 3 forks source link

billtemplate.rtf : editing #107

Closed frase-git closed 7 years ago

frase-git commented 7 years ago

Ich schaffe es nicht, mit Word 2010 die billtemplate.rtf (oder auch die alten Dateien) funktionstüchtig zu ändern. (Entgegen meinem Vorsatz, mich nicht darum zu kümmern) Habe versucht eine "schönere" zu machen.

Das Ergebnis ist: Wenn nur ein Produkt bestellt wird, läuft alles super. Sobald zwei oder mehr Produkte bestellt werden, läuft alles durch. Die Mail hat den Anhang bill.rtf. Will man diesen öffnen, startet Word (2010) - versucht die Datei zu öffnen und bricht ab mit der Meldung:

Datei möglicherweise beschädigt.

Weiter geht nix.

Auch die Originaldatei in Word geöffnet und ohne Änderung wieder gespeicher: gleicher Fehler.

Übrigens: Was machen Leute ohne Word? Habt ihr die Datei schonmal mit Wordpad geöffnet?

Frage @XHalbert Mit welchen Programm bearbeitetst du die (bill)template.rtf?

Nachtrag: Die Dateien, die Word selbst erzeugt hat, aber nicht öffnen kann, lassen sich mit Wordpad öffnen. Alles drin - sieht nur noch gruseliger aus.

cmb69 commented 7 years ago

es müsste aber eine zweite geben, die nur der Shopbetreiber kriegt Die Daten aus der Tabelle in der Email kann ich problemlos in Exel ziehen.

@XHalbert Könntest du vielleicht mal ein entsprechendes HTML Template ausarbeiten; ich würde dann einen HtmlBillWriter schreiben.

frase-git commented 7 years ago

plugins\xhshop\templates\frontend\confirmation_email\html.tpl

Wie wär's denn damit? Als Basis?

XHalbert commented 7 years ago

klar, siehe #15

soll ja ein Austauschformat sein Ich brauche konkret (was nicht heißt, dass jeder die braucht): Gewicht, Shipping, Nachlass, Vorname, Name, Adresszusatz, Str. +Nr., (Nr. optional), PLZ, Ort, Email, Tel., Liefername, Lieferstr., Lieferort, Rg.betrag, Land, Warenwert, Zahlweise, Anmerkung, Besondere Wünsche, Email an DHL, Company, Datum,

und die Artikel in der zweiten Tabelle

XHalbert commented 7 years ago

ein entsprechendes HTML Template ausarbeiten basis: \confirmation_email\html.tpl

mach ich

XHalbert commented 7 years ago

ups, hab ich das mit dem upload jetzt richtig gemacht?
das wär die aktuelle html.tpl mit "meinen" Erweiterungen html-AW.zip (entsprechend müsste noch was in customer, frontend_contr., frontend_view und lang de.php)

das wär die Tabelle, die im Prinzip als Austauschformat schon reichen würde
tabelle-AW.zip (sollte vllt. noch etwas gestylt werden)

Ein Unterschied fällt mir grad auf: In Exel ist das Markieren einer kompletten Tabelle einfacher, durch das Kreuzchen, das beim Draufzeigen erscheint - insofern würde ich rtf-Format vorziehen

cmb69 commented 7 years ago

ups, hab ich das mit dem upload jetzt richtig gemacht?

Nicht wirklich. Du hast die Zips nun direkt ins Repo committed, was nicht sinnvoll ist. Ist aber kein Problem; ich kann das gleich bereinigen. Wenn du einfach nur ein Zip für andere zur Verfügung stellen willst, dann kannst du die Datei per Drag&Drop auch einfach in den gerade bearbeiteten Kommentar ziehen.

XHalbert commented 7 years ago

einfach in den gerade bearbeiteten Kommentar ziehen

klar, eigentlich ;) danke

cmb69 commented 7 years ago

das wär die aktuelle html.tpl mit "meinen" Erweiterungen

Okay, aber die Felder müssten ja erst noch ergänzt werden, siehe #15.

das wär die Tabelle, die im Prinzip als Austauschformat schon reichen würde

Aber da sind ja keinerlei Infos über die bestellten Artikel! Brauchst du das nicht?

XHalbert commented 7 years ago

keinerlei Infos über die bestellten Artikel!

ach so ja (dachte erstmal zum testen...) Artikel war nur %rows% (ich hatte das separiert), das wär dann die zweite Tabelle,

 <tr>
  <td >%pa%</td>
  <td>%pname% (%pvat%)</td>
  <td>%pprice%</td>
  <td>%psum%</td>
 </tr>

und eigentlich waren alle Felder noch einmal in lesbarer Form vorhanden

die Felder müssten ja erst noch ergänzt werden, siehe #15.

ich weiß ja nicht, was ihr davon verwenden wollt hab mal alles hier aufgelistet: mehr-Felder.zip

frase-git commented 7 years ago

@cmb69 Ist es möglich die Funktionen aus dem Branch als config-Option einzuführen? Also in etwa: Rechnung als Anhang für den Betreiber im Format: RTF oder CSV Oder sollen immer beide verschickt werden?

XHalbert commented 7 years ago

wenn es nicht zuviel Aufwand macht, finde ich sinnvoll, immer beide zu verschicken. Ob ein oder zwei Anhänge macht doch nichts, Oder csv als standard für Austauschformat, und rtf nur, wenn billtemplate.rtf vorhanden (die im download z.B. als Xbilltemplate.rtf liegt)

XHalbert commented 7 years ago

A. csv sollte wirklich alle Daten enthalten siehe #15 . Überlegung:

  1. Sollte man die Artikel nicht lieber unten anhängen? So ist gewährleistet, dass die "festen Daten" wie Name, etc. immer an derselben position bleiben und sich nicht nach unten verschieben.
  2. Alternativ wird vielleicht eine einzeilige csv gebraucht. Da sollten die Artikel wohl zum Schluss, also am rechten offenen Ende kommen.
  3. die csv wird wohl aus einer Vorlage heraus "wie sie ist" verschickt. Kann die Vorlage z.B. in .txt umbenannt werden, falls dieses Format dem Betreiber besser erscheint? (Bin nicht sicher, ob das Vorteile hätte)
  4. müsste nicht am Ende einer Zeile ein ; stehen?

B. rtf kann ruhig wie besprochen minimalistisch sein, kann sich jeder selbst erweitern (und wie frase sagen würde, sich damit herumärgern)

frase-git commented 7 years ago

Sollte man die Artikel nicht lieber unten anhängen?

Das könnte sinnvoll sein. Über das genaue Aussehen und was alles drin sein soll/kann, müssen wir noch reden. Ich denke aber, dass da wirklich alle Daten, die irgendwo erfasst wurden drin sein sollten. Wers braucht - okay. Wer nicht, kann es ignorieren. Man muss ja nur die Zellen markieren, die man braucht -> Copy&Paste.

Wenn es so wird, wie oben besprochen, wird es eine billtemplate.csv geben, die sich wiederum jeder Betreiber frei gestalten kann - wenn er kann. (Mir fällt gerade auf: mit bill hat das ja gar nichts zu tun? Vielleicht lieber exchangetemplate.csv oder datatemplate.csv?)

CSV bearbeiten @XHalbert Im Test sah die billtemplate.csv so aus:

Anzahl;Artikel;Steuersatz;Einzelpreis;Summe
%pa%;%pname%;%pvat%;%pprice%;%psum%

Warenwert;;;;%SUMME%
Versandkosten;;;;%SHIPPING%
Rechnungssumme;;;;%ENDSUMME%

Kunde;;;;%Vorname% %Nachname%
Straße;;;;%Strasse%
Ort;;;;"%PLZ% %Ort%"

Das dürfte dir überhaupt keine Schwierigkeiten machen - oder?

Übrigens, was mir gerade noch einfällt: Die mit der Mail eintreffende bill.csv (Name!) muss überhaupt nicht zwangsläufig mit Excel & Co geöffnet werden. Das geht mit notepad++ ganz genau so gut.

XHalbert commented 7 years ago

Das gute an beiden Varianten ist, dass man sie leicht bearbeiten kann. Nein, ich hätte keine Probleme damit.

exchangetemplate.csv

guter Vorschlag

müsste in csv nicht am Ende einer Zeile ein ; stehen?

frase-git commented 7 years ago

müsste in csv nicht am Ende einer Zeile ein ; stehen?

Ich glaube, eine Zeilenschaltung genügt als Datensatztrenner. Hat jedenfalls funktioniert.

cmb69 commented 7 years ago

Artikel war nur %rows% (ich hatte das separiert), das wär dann die zweite Tabelle,

Okay, verstehe.

Rechnung als Anhang für den Betreiber im Format: RTF oder CSV Oder sollen immer beide verschickt werden?

Ich dachte eigentlich, dass der Shopbetreiber das konfiguriert, also entweder oder. Und dann kommt ja vermutlich noch eine HTML-Variante. Immer alles auszuliefern erscheint übertrieben.

die csv wird wohl aus einer Vorlage heraus "wie sie ist" verschickt. Kann die Vorlage z.B. in .txt umbenannt werden, falls dieses Format dem Betreiber besser erscheint?

Könnte man machen, aber wird es wirklich benötigt? Da würde ichim Zweifel mal abwarten ob sich jemand meldet, der das braucht.

müsste nicht am Ende einer Zeile ein ; stehen?

Das würde eine zusätzliche leere Spalte ganz rechts erzeugen. Die Trennzeichen dienen bei CSV wirklich als Trenner, nicht als Endezeichen.

Ich denke aber, dass da wirklich alle Daten, die irgendwo erfasst wurden drin sein sollten.

Ja, das ergänze ich noch. Die Daten sind dann für alle "BillWriter" verfügbar, und die Templates können ja bei Bedarf angepasst werden.

Mir fällt gerade auf: mit bill hat das ja gar nichts zu tun? Vielleicht lieber exchangetemplate.csv oder datatemplate.csv?

Würde ich so lassen, einfach weil der Begriff BillWriter schon etabliert ist, und man sonst eigentlich auch im Code einiges umbenennen müsste. Was ich sinnvoller fände wäre eine Sprachvariable, mit der man den Namen der erzeugten bill.… ändern kann, egal ob nun Rechnung, Lieferschein, Bestelldaten usw.

Meine Idee hier ist einfach, dass man eine sehr flexible Möglichkeit hat, sich in einer Form Bestelldaten aufbereitet zusenden zu lassen. Zum einen kann ein bestehender BillWriter verwendet werden, aber man könnte eben noch weitere selbst programmieren, was zum Austausch mit einer Auftragsbearbeitung interessant sein könnte. Individuelle BillWriter müssten einfach als Klasse in classes/ hinterlegt, ein passendes Template in den Templateordner gepackt und dann in der Konfiguration auf das gewünschte Format umgestellt werden.

frase-git commented 7 years ago

Ich dachte eigentlich, dass der Shopbetreiber das konfiguriert, also entweder oder. Und dann kommt ja vermutlich noch eine HTML-Variante. Immer alles auszuliefern erscheint übertrieben.

Alles klar. Halten wir fest: Anhang entweder RTF oder CSV oder HTML oder Zukünftiges.

Kann die Vorlage z.B. in .txt umbenannt werden, falls dieses Format dem Betreiber besser erscheint? ... Könnte man machen, aber wird es wirklich benötigt? Da würde ichim Zweifel mal abwarten ob sich jemand meldet, der das braucht.

Zur Erinnerung: Die CSV ist eine Textdatei. Mit der Besonderheit utf-8 mit BOM. Also: Vorläufig ignorieren - bis Nachfragen kommen.

Template-Dateiname: So lassen wie bisher. Begründung: voriger Post.

Meine Idee hier ist einfach, dass man eine sehr flexible Möglichkeit hat, sich in einer Form Bestelldaten aufbereitet zusenden zu lassen.

Und das ist genial, flexibel und zukunftssicher! (Und das muss ich noch loswerden) Die RTF wird nach und nach verschwinden ;-) Und wer weiß? Vielleicht schreibt einer ein Script, das die Daten in ein PDF packt und man Rechnungen, Lieferscheine und sonstwas erhalten kann. Das ginge auf dem Server oder erst zuhause. Alles möglich. (Nur nicht mit RTF und HTML - oder nur mit "Fingerbrechen").

XHalbert commented 7 years ago

(Und das muss ich noch loswerden) Die RTF wird nach und nach verschwinden, falls sich andere Lösungen als praktikabel erweisen ;-) - von mir aus gern. Bin aber glücklich, dass ich vorerst rtf weiter verwenden kann.

Individuelle BillWriter müssten einfach als Klasse in classes/ hinterlegt, ein passendes Template in den Templateordner gepackt und dann in der Konfiguration auf das gewünschte Format umgestellt werden.

toll! Sollte das dann ins Wiki?

Zur Erinnerung: Die CSV ist eine Textdatei.

weiß ich doch ;) .csv werden u.U. anders geöffnet als .txt je nach Programm- war nur sone Idee -vergessen (geht übrigens nicht)

Übrigens: bei mir öffnet der Texteditor die csv einzeilig, alles hintereinander, während Exel die Sachen untereinander anordnet

frase-git commented 7 years ago

Klar muss das ins Wiki, aber ganz zuletzt. Da ist noch vieles offen - weil unklar.

Übrigens: bei mir öffnet der Texteditor die csv einzeilig

Obacht. Hier muss ein passender Editor verwendet werden, der mit der Kodierung umgehen kann (notepad++). Mit welchem Editor hast du denn geöffnet? Und welche csv?

cmb69 commented 7 years ago

Zur Erinnerung: Die CSV ist eine Textdatei. Mit der Besonderheit utf-8 mit BOM.

Ob ein BOM vorhanden ist, kommt aufs entsprechende Template an; das BOM wird von dort einfach übernommen, falls vorhanden.

Und wer weiß? Vielleicht schreibt einer ein Script, das die Daten in ein PDF packt und man Rechnungen, Lieferscheine und sonstwas erhalten kann.

Auch das könnte wohl ein BillWriter übernehmen, wenn die diversen Dokumente in einem PDF zusammengefasst werden.

Bin aber glücklich, dass ich vorerst rtf weiter verwenden kann.

Aber da müsste noch ein bisschen nachgebessert werden, wegen dem Kopieren der Artikelzeile. Bzgl. meiner angepassten billtemplate.rtf hattest du geschrieben, dass nicht alles schön rechtsbündig ist. War das vorher nicht auch schon der Fall?

toll! Sollte das dann ins Wiki?

Wenn, dann als Entwicklerdokumentation. Die Erklärungen im BillWriter Interface reichen aber vielleicht auch aus.

bei mir öffnet der Texteditor die csv einzeilig, alles hintereinander, während Exel die Sachen untereinander anordnet

Das liegt an den Zeilenumbrüchen, die PHP erzeugt. Die sind bei CSV leider immer Unix-style (also LF, und nicht wie bei Windows üblich CRLF). Damit hat aber, glaube ich, nur noch Notepad ein Problem. Und selbst wenn wir die Zeilenenden ersetzen würden, welche sollten wir wählen. Diejenigen des Servers sind nicht relevant, und wir wissen nicht auf welchem Betriebssystem die Datei geöffnet werden wird. Eine Konfigurationsoption erscheint mir übertrieben.

frase-git commented 7 years ago

Also, ich bin begeistert. Konfig-Option CSV/RTF ist drin. Anhänge kommen (je nachdem) beide sauber an. CSV öffnet aus der Mail heraus Excel - RTF öffnet Word. Gut gemacht, Christoph!

Ob ein BOM vorhanden ist, kommt aufs entsprechende Template an; das BOM wird von dort einfach übernommen, falls vorhanden.

Doku/Wiki - bitte erinnert mich oder schreibt es selbst

Entwicklerdokumentation: eigene Seite oder unter Tipps? Der Hinweis auf Billwriter sollte genügen.

Wird HTML wirklich benötigt?

XHalbert commented 7 years ago

@frase-git xhshop-csv-bill installiert, Probekauf, bill.csv: Rechtsklick - öffnen mit -

  1. "Editor" (wohl wordpad) zeigt einzeilig an, aber wenn ich es hier reinkopiere wird es untereinander Anzahl;Artikel;Steuersatz;Einzelpreis;Summe "4 ";"Testartikel "Newsbox" ";"vat.19 %";"7,77 €";"31,08 €" ... usw. PS: mir ja egal, nehme rtf, mein uraltexel kann csv nicht importieren, und öffnen macht komische Zeichen

@cmb69

Bzgl. meiner angepassten billtemplate.rtf hattest du geschrieben, dass nicht alles schön rechtsbündig ist.

stimmt, aber ich kanns anpassen.

XHalbert commented 7 years ago

Wird HTML wirklich benötigt?

momentan wohl eher nicht

frase-git commented 7 years ago

Probier mal den aktuelle master. Da kannst du wählen, ob CSV oder RTF.

Editor: Hol dir mal "notepad++" - ist kostenlos. (office 2010 bei ammas00n 15 € - dafür gibt es auch ein Tool (habe ich), mit dem du die alte Menüleiste aus 2000 weiter verwenden kannst.)

cmb69 commented 7 years ago

stimmt, aber ich kanns anpassen.

Dann schick mir bitte doch mal eine minimal angepasste billtemplate.rtf. Die kann ich hier mal mit WordPad und LibreOffice testen, und wenn alles gut ist, dann nehmen wir die. Vermutlich ein Vorteil, wenn sie mit einer älteren Word-Version angepasst wird – das macht vielleicht weniger Schnick-Schnack.

Wird HTML wirklich benötigt?

momentan wohl eher nicht

Okay, dann legen wir das Thema mal auf Halde (wenn sich jemand meldet, der es braucht, dann kann man immer noch nachbessern).

Probier mal den aktuelle master.

Jupp!

XHalbert commented 7 years ago

wirklich auch "Großes Kompliment" hier "meine" billtemplate billtemplate.zip ist komischerweise nur knapp 15 kb groß, die cmb-version, die ich hatte aber 55kb PS bin erstmal off - bis später

frase-git commented 7 years ago

CSV RTF mir flimmern die Augen ;-))) Habe gerade einen Abschnitt "Bill format" im Wiki verfasst. Bitte mal gegenlesen. Richtig so?

XHalbert commented 7 years ago

sehr schön, gute Arbeit, die Lob verdient! nur...

Da das RTF-Format einige Mängel aufweist

na na na tse tse ... Mängel ... schreib doch "nur begrenzt einsetzbar ..." oder "manchmal nicht passend ..."

oder lass den Halbsatz ganz weg, also nur "....nicht sonderlich flexibel für eine Datenübernahme in andere Programme ist"

cmb69 commented 7 years ago

ist komischerweise nur knapp 15 kb groß, die cmb-version, die ich hatte aber 55kb

Das ist das, was ich mich Schnick-Schnack meinte.

Allerdings schlechte Nachricht: wenn ich diese billtemplate.rtf in LibreOffice öffne ist alles gut. Aber die erzeugte bill.rtf kann nicht geöffnet werden, weil die Datei beschädigt sei. Ist das gleiche Problem wie bei Franks mit Word 2010 erstellten billtemplate.rtf: Tabellenverschachtelung in der Artikelzeile, und nicht ausgeglichene \trow und \row Anweisungen. Unter Zuhilfenahme von preg_match_all('/\{|\}|\\\\trowd|\\\\row|%pname%/', $template, $matches, PREG_OFFSET_CAPTURE) konnte ich ermitteln das sich das Artikelzeilen-Template zwischen Byte 6079 und 7936 befindet, und RtfBillWriter so umschreiben, dass die erzeugte bill.rtf geöffnet werden konnte, und anscheinend auch korrekt ist – aber das vollständig zu automatisieren erscheint aufwendig. :(

XHalbert commented 7 years ago

Frank hat Recht :( ... Mängel ...

Schade, eine universelle minimalistische billtemplate.rft scheint wohl nicht zu gehen. Schon ne komische Sache. Bei mir (Exel2000) gehen jedenfalls beide versionen, 15kb und 55kb (hier war nur der rechte Rand etwas verrutscht). Habe eben meine bisherige wellrad-template in billtemplate umbenannt, dann %rows% durch   | %pa% | %pname% (%pvat%) | %pprice% | %psum% | ersetzt. Probekauf klappt einwandfrei.

PS: bei csv sind mehrere zusätzliche Klicks erforderlich, bis die Daten da sind wo ich sie brauche (speichern, exel öffnen, Datei öffnen). Bei einigen Bestellungen pro Tag ist rtf deshalb einfach besser. Bei vielen Bestellungen pro Tag wär natürlich csv besser, wenn es gelingen würde, alle Bestellungen gemeinsam zu importieren.

frase-git commented 7 years ago

Mit einer neueren Office-Version geht die CSV direkt aus der Mail in Excel auf.

Mehrere Bestellungen in einem Rutsch zu importieren ginge möglicherweise auch, wird aber eher sehr kompliziert. Du würdest den Überblick verlieren.

frase-git commented 7 years ago

Wir könnten hier eigentlich schließen. Allerdings brauche ich noch Infos, welche Daten in der CSV möglich sind und welche wir als default reinschreiben. Wiki

XHalbert commented 7 years ago

ich finde, in csv sollte alles rein, was an Daten vorhanden ist in step3, soll ja ein Austauschformat sein. Müsste alle Platzhalter enthalten sein. wer weniger will, kann einfach rauslöschen.

vielleicht in vier Zeilen - etwa so?

Vorname, Name, Adresszusatz, Str., Nr., PLZ, Ort, Land, Email, Tel.,

die Artikelzeile

Warenwert, Gewicht, Shipping, Nachlass, Rg.betrag

Zahlweise, Email an Paketdienst, Besondere Wünsche, Anmerkung, Company, Datum,

(und umsortieren kann ja sowieso jeder nach Belieben)

XHalbert commented 7 years ago

PS: im Wiki würde ich die möglichen Platzhalter nicht explizit nennen, da kann sich noch was ändern. Also nur allgemein erklären, umsortieren und/oder Platzhalter löschen

frase-git commented 7 years ago

Ja, genau so. Da müssen wir aber noch auf Christoph warten. Ich möchte die Platzhalter alle nennen, und die kenne ich (noch) nicht alle.

Ah, ich sehe gerade, da haben wir uns überschnitten. Okay, nicht alle nennen. Dann aber wenigsten festlegen, was in die Vorgabe CSV reinkommt.

cmb69 commented 7 years ago

Es werden nun weitere Platzhalter unterstützt: e2bac5a. Eine Übersicht über alle findet man hier. Dazu kommen die Platzhalter für die Artikelzeilen.

Bitte mal prüfen, ob von den Infos, die es schon gibt, noch was fehlt (die Kundendaten sind auf jeden Fall vollständig vorhanden).

Was wir auf jeden Fall noch tun sollten, ist die Platzhalter zu vereinheitlichen. Einige sind deutsch, andere englisch, einige groß, andere klein geschrieben. Ich würde vorschlagen, allen Platzhaltern englische Namen zu geben (allein schon um zu vermeiden, dass Umlaute o.ä. ins Spiel kommen). Und solange wir uns auf ASCII-Zeichen beschränken, könnte auch leicht die Groß-/Kleinschreibung ignoriert werden, d.h. der Platzhalter %COMPANY_NAME% könnte in der "Rechnung" auch %company_name% heißen (oder auch %Company_Name% etc.)

frase-git commented 7 years ago

Für mich sieht das erstmal alles sehr gut aus. Christoph: Gute Arbeit! Jetzt kann ich das CSV-Kapitel schreiben. Schließen?

Ach so:

cmb69 commented 7 years ago

Die Platzhalternamen sollten nun einheitlich sein, und beim Ersetzen wird Groß-/Kleinschreibung ignoriert: efc3806. Ich schließe das Ticket daher.