Automatische Erstellung von .pdf .excel .csv Dateien?
Über folgende Formel füge ich aus der Tabelle KONTAKTE sämtliche Tabellenwerte der aufgeführten Untertabellen (ab 15 EUR) mittels Verknüpfungen zu einer neuen QUITTUNG hinzu:
let my := this;
if 'Offen Vorjahr (NET_ARTIST)' < 15 then
alert("Netto Artist ist geringer als 15€")
else
let new := (create Quittungen);
new.(Kontakte := my);
new.(Datum := today());
'Produkte Handel'[not Quittungen and year('Gebucht am') < year(today())].(Quittungen := new);
'Digital Sales'[not Quittungen and year(BOOKING_DATE) < year(today())].(Quittungen := new);
'Physical Sales'[not Quittungen and year(DATE_BEGIN) < year(today())].(Quittungen := new);
'Rebeat Sales'[not Quittungen and year(_periodeabr) < year(today())].(Quittungen := new);
'GVL Sales'[not Quittungen and year(PERIOD_BEGIN) < year(today())].(Quittungen := new);
'Externe Sales'[not Quittungen and year(PERIOD_BEGIN) < year(today())].(Quittungen := new);
popupRecord(new)
end
Wie kann ich über die selbe Funktion eine .pdf meines Drucklayouts ('Quittungen') sowie Excel oder .CSV Dateien der Untertabellen unter dem Dateireiter der jeweiligen QUITTUNG ablegen? Geht sowas?
13 Antworten
-
Hallo Reinhard,
----
let my := this;
if 'Offen Vorjahr (NET_ARTIST)' < 15 then
alert("Netto Artist ist geringer als 15€")
else
let new := (create Quittungen);
new.(Kontakte := my);
new.(Datum := today());
'Produkte Handel'[not Quittungen and year('Gebucht am') < year(today())].(Quittungen := new);
'Digital Sales'[not Quittungen and year(BOOKING_DATE) < year(today())].(Quittungen := new);
'Physical Sales'[not Quittungen and year(DATE_BEGIN) < year(today())].(Quittungen := new);
'Rebeat Sales'[not Quittungen and year(_periodeabr) < year(today())].(Quittungen := new);
'GVL Sales'[not Quittungen and year(PERIOD_BEGIN) < year(today())].(Quittungen := new);
'Externe Sales'[not Quittungen and year(PERIOD_BEGIN) < year(today())].(Quittungen := new);
"//
damit kann man PDF erstellen
//";
importFile(new, printAndSaveRecord(new, "Quittungen"), "Quittungen.pdf");
"//
hier ist ein Beispiel für csv Produkte Handel
//"
let myPrHandHead:="Gebucht am, Feldname1, Feldname2, Feldname3, Feldname4";
let myPrHand:=new.'Produkte Handel'.('Gebucht am'+", "+Feld1+", "+Feld2+", "+Feld3+", "+Feld4);
let myCSV:=myPrHandHead+"
"+join(myPrHand,"
");
createTextfile(new,myCSV,"Produkte_Handel.csv")
popupRecord(new)
end
---
Leo
-
Hi Leo,
es klappt leider noch nicht. Ich habe noch versucht für die .pdf einen Dateinamen anhand der neu erstellten Quittungsnummer zu vergeben, weiß aber nicht ob das im selben Schritt funktioniert, oder ob ich in der Quittung die Dateierstellung vornehmen sollte. Die .pdf wird jedenfalls nicht erstellt und abgelegt.
Hier die Funktion bisher:
let my := this;
if 'Offen Vorjahr (NET_ARTIST)' < 15 then
alert("Netto Artist ist geringer als 15€")
else
let new := (create Quittungen);
new.(Kontakte := my);
new.(Datum := today());
'Produkte Handel'[not Quittungen and year('Gebucht am') < year(today())].(Quittungen := new);
'Digital Sales'[not Quittungen and year(BOOKING_DATE) < year(today())].(Quittungen := new);
'Physical Sales'[not Quittungen and year(DATE_BEGIN) < year(today())].(Quittungen := new);
'Rebeat Sales'[not Quittungen and year(_periodeabr) < year(today())].(Quittungen := new);
'GVL Sales'[not Quittungen and year(PERIOD_BEGIN) < year(today())].(Quittungen := new);
'Externe Sales'[not Quittungen and year(PERIOD_BEGIN) < year(today())].(Quittungen := new);
let myFilename := new.Quittungsnummer + " Quittung" + upper(text(new.Kontakte));
importFile(new, printAndSaveRecord(new, "Quittungen"), "myFilename.pdf");
let myPrHandHead := myFilename;
let myPrHand := new.'Produkte Handel'.(Buchungsnummer + ", " + 'Gebucht am' + ", " + Zeitraum + ", " + Typ + ", " + Finanzen + ", " + 'Statement / Invoice / Info' + ", " + Info + ", " + 'Stück' + ", " + Netto + ", " + 'Anteil Artist' + ", " + 'Netto Artist' + ", " + 'Netto Hicktown' + ", " + Versand + ", " + Versandtyp + ", " + Warenmenge + ", " + Lagerbestand);
let myCSV := myPrHandHead + "
" + join(myPrHand, "
");
create Textfile(new,myCSV,"Produkte_Handel.csv");
popupRecord(new)
endEin Problem scheint es auch bei "create Textfile" zu geben. Hier kommt die Meldung, dass die Tabelle in entsprechender Zeile nicht gefunden werden kann.
Danke für weitere Hilfe ;)
Reinhard
-
Ich hab es eben nochmal über eine Schaltfläche in der Quittung versucht um Variablen zu reduzieren. Bei der .pdf Erstellung bin ich mittlerweile weiter, die funktioniert, Probleme macht mir noch die .csv Datei...
let my := this;
let myFilename := Quittungsnummer + " Quittung " + upper(text(Kontakte.Artist));
importFile(my, printAndSaveRecord(my, "Quittungen"), myFilename + ".pdf");
let myPrHandHead := myFilename;
let myPrHand := my.'Produkte Handel'.(Buchungsnummer + ", " + 'Gebucht am' + ", " + Zeitraum + ", " + Typ + ", " + Finanzen + ", " + 'Statement / Invoice / Info' + ", " + Info + ", " + 'Stück' + ", " + Netto + ", " + 'Anteil Artist' + ", " + 'Netto Artist' + ", " + 'Netto Hicktown' + ", " + Versand + ", " + Versandtyp + ", " + Warenmenge + ", " + Lagerbestand);
let myCSV := myPrHandHead + "
" + join(myPrHand, "
");
createTextfile(my,myCSV,"Produkte_Handel.csv");
Die Funktion ist nicht definiert: createTextfile(nid,string,string) in Zeile 9, Spalte 47.
-
create Textfile
also mit Leerzeichen, funktioniert ebenfalls nicht... Danke für Hilfe!
-
oh, sorry, mein Fehler:
createTextFile (...)
Leo
-
Danke Leo, jetzt klappt es. Ich hab auch Benennung und Tabellenfelder nochmal angepasst:
let my := this;
let myFilename := Quittungsnummer + " Quittung " + upper(text(Kontakte.Artist));
importFile(my, printAndSaveRecord(my, "Quittungen"), myFilename + ".pdf");
let myPrHandHead := "Buchungsnummer, 'Gebucht am', Zeitraum, Typ, Finanzen, 'Statement / Invoice', Info, 'Stück', Netto, 'Anteil Artist', 'Netto Artist', 'Netto Hicktown', Versand, Versandtyp, Warenmenge, Lagerbestand";
let myPrHand := my.'Produkte Handel'.(Buchungsnummer + ", " + 'Gebucht am' + ", " + Zeitraum + ", " + Typ + ", " + Finanzen + ", " + 'Statement / Invoice / Info' + ", " + Info + ", " + 'Stück' + ", " + Netto + ", " + 'Anteil Artist' + ", " + 'Netto Artist' + ", " + 'Netto Hicktown' + ", " + Versand + ", " + Versandtyp + ", " + Warenmenge + ", " + Lagerbestand);
let myCSV := myPrHandHead + "
" + join(myPrHand, "
");
createTextFile(my, myCSV, myFilename + " - Produkte_Handel.csv")
Die .csv Datei hat allerdings noch ein Problem:
KOMMAS die ich in Feldern gesetzt habe, zB in Infotexten oder in EUR Beträgen, werden als neue Tabellenspalten interpretiert, wodurch sich die Einträge verschieben. Gibt es hierfür eine Lösung, zB text() oder ' ' immer setzen?
Danke!
-
Hallo Reinhard,
ich würde statt Kommas die Semikolons einsetzen. Ist Standard bei Excel. Oder vier mal die anführungszeichen.
Leo
-
Super Leo, danke! Das funktioniert jetzt perfekt, mächtige Funktion :)
Eine Frage hätte ich noch zu der Funktion ganz am Anfang. Hier füge ich ja viele Datensätze aus unterschiedlichsten Tabellen ('Produkte Handel', 'Digital Sales', 'Physical Sales' etc.) der selben Quittung hinzu. Wie ist es am einfachsten möglich in der Quittung eine Art "Übersichtstabelle" automatisch zu befüllen, die die Ergebnisse der Quell-Tabellen in Zeilenweise auflistet? Hast Du hier nen Denkansatz für mich?
Liebe Grüße, Reinhard
-
Ich würde alle diese Tabellen als eine Tabelle führen und die Arten ('Produkte Handel','Digital Sales'......) als Auswahlfeld darstellen.
-
Da habe ich dann das Problem mit zu vielen unterschiedlichen Feldnamen und Typen. Wir erhalten von diversen Vertrieben die Abrechnungen für unsere Künstler (Download, Streaming, Physisch, Versand etc. ) und müssen diese wiederrum den Produkten und Kontakten zuweisen. Da ist es am einfachsten für jeden Typ eine einzelne Tabelle zu führen (dachte ich jedenfalls...) die exakt die gleichen Feldnamen benutzt wie die Abrechnungstabelle des jeweiligen Vertriebs, so kann man die Daten schnell importieren, da die Felder automatisch erkannt werden und weiter verarbeiten. Ansonsten würde es eine Tabelle werden mit enorm vielen Feldern, die immer nur zu einem kleinen Teil befüllt sein würden. Auch für Mitarbeiter wird der Import sehr unübersichtlich.
Es wäre nun möglich die Datensätze beim Erstellen der Quittung in eine neue Tabelle zu kopieren und nur die Felder zuzuweisen, die für die Quittung gebraucht werden. Da es aber sooo viele Daten sind, ist die Verlinkung zur Quittung besser um nicht zu viele Daten doppelt zu haben.
Daher dachte ich nun an eine Art Übersichtstabelle (Untertabelle), die die einzelnen Netto-Summen der Quelltabellen zeilenweise aufführt... Bitte korrigiere mich falsch ich da falsch denke ;)
-
Hallo Reinhard,
ja, dann macht es Sinn die Tabellen zu behalten. Und klar, du kannst eine Untertabelle bauen und in der Schleife die relevanten Werte holen.
Leo
-
Danke!
Mit folgender Funktion habe ich nun versucht einen neuen Eintrag (Zusammenfassung von 'Produkte Handel') in der Untertabelle 'Übersicht' zu erstellen, das geht so aber scheinbar bei Untertabellen nicht, kannst Du mir hier weiterhelfen?
let new := (create 'Übersicht');
new.(Position := 1);
new.(Bezeichnung := "Summe: Hicktown Sales");
new.(Netto := sum(my.'Produkte Handel'.NET_ARTIST));
new.('MwSt. Satz' := my.'Vorlage C.I.'.'MwSt. Satz')
Letztendlich möchte ich für alle Quelltabellen gleichzeitig die Einträge in die Untertabelle schreiben. Danke!
-
ah verdammt, ich hab die Verknüpfung zur Tabelle 'Quittungen' vergessen... ahh passiert mir immer wieder:
let new := (create 'Übersicht');
new.(Quittungen := my);
new.(Position := 1);
new.(Bezeichnung := "Summe: Hicktown Sales");
new.(Netto := sum(my.'Produkte Handel'.NET_ARTIST));
new.('MwSt. Satz' := my.'Vorlage C.I.'.'MwSt. Satz')
Content aside
- vor 4 JahrenZuletzt aktiv
- 13Antworten
- 1709Ansichten
-
2
Folge bereits