Rechnung mit Writer erstellen sinnvoll

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Rechnung mit Writer erstellen sinnvoll

Re: Rechnung mit Writer erstellen sinnvoll

von komma4 » Sa, 04.07.2015 18:10

josinoro hat geschrieben:In der Libre-Office Version: 4.4.3.2
[...]funktioniert das ohne Makro.
Was meinst Du damit?
Wir reden von einer Writer-Vorlage mit Tabelle aus einer Datenbank, die eine unterschiedliche Anzahl an Zeilen enthalten kann.
Wie funktioniert das in LO?

Re: Rechnung mit Writer erstellen sinnvoll

von josinoro » Sa, 04.07.2015 17:22

Hallo SchmukerJunker,
SchmuckerJunker hat geschrieben:... Daher habe ich mir in den letzten Tagen mal die Basic-Grundlagen angeschaut und ein Makro gebastelt, welches dynamisch Rechnungspositionen hinzufügt bzw. entfernt und auch darauf achtet, ob man sich in einer gültigen Positions-Zeile befindet:
In der Libre-Office Version: 4.4.3.2
Build-ID: 88805f81e9fe61362df02b9941de8e38a9b5fd16

funktioniert das ohne Makro.

MfG

josinoro

Re: Rechnung mit Writer erstellen sinnvoll

von Rocko » Fr, 08.05.2015 15:29

SchmuckerJunker hat geschrieben: oder Verbesserungsvorschläge habt, greife ich die gerne auf.
Nur so als Randhinweis: Allerdings bin ich mir nicht sicher, ob die Thematik in diesem Thread im Grundsatz deinem Anliegen zumindest teilweise entspricht.

Re: Rechnung mit Writer erstellen sinnvoll

von SchmuckerJunker » Fr, 08.05.2015 15:12

Hallo,

vielen Dank für eure Antworten, dass hat mir sehr weiter geholfen. Ich habe in meiner Rechnung in jeder Zeile ganz rechts eine Formel in einer geschützten Zelle, die Anzahl * Preis berechnet. Da funktioniert das mit dem Einfügen anscheinend nicht automatisch. Daher habe ich mir in den letzten Tagen mal die Basic-Grundlagen angeschaut und ein Makro gebastelt, welches dynamisch Rechnungspositionen hinzufügt bzw. entfernt und auch darauf achtet, ob man sich in einer gültigen Positions-Zeile befindet:

Code: Alles auswählen

sub tab_rechnungs_position_row_add
	Dim oTextTables As Variant
	Dim oTextTable As Variant
	Dim oCells As Variant
	Dim oTableRows as object
	Dim iTableInsertPosition as Integer
	Dim oDocument   as object
	Dim oDispatcher as object
	Dim args1(0) as new com.sun.star.beans.PropertyValue
	Dim formula_string as String
	oViewCursor = ThisComponent.CurrentController.getViewCursor
	iTableInsertPosition = CInt(Mid(oViewCursor.Cell.CellName,2,10))
	oTextTables = ThisComponent.getTextTables()
	oTextTable = oTextTables.getByName("tab_rechnungs_positionen")
	oTableRows = oTextTable.getRows
	iTableLastPosition = oTableRows.getCount - 4
	if (iTableInsertPosition<2) OR (iTableInsertPosition>iTableLastPosition) Then
		Exit Sub
	End If
	oDocument   = ThisComponent.CurrentController.Frame
	oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	oCells = oTextTable.getCellRangeByPosition(0,iTableInsertPosition-1,3,iTableInsertPosition-1)
	ThisComponent.CurrentController.select(oCells)
	oDispatcher.executeDispatch(oDocument, ".uno:Copy", "", 0, Array())
	oCells = oTextTable.getCellByPosition(0,iTableInsertPosition-1)
	ThisComponent.CurrentController.select(oCells)
	oDispatcher.executeDispatch(oDocument, ".uno:InsertRows", "", 0, Array())
	oCells = oTextTable.getCellRangeByPosition(0,iTableInsertPosition,3,iTableInsertPosition)
	ThisComponent.CurrentController.select(oCells)
	oDispatcher.executeDispatch(oDocument, ".uno:UnsetCellsReadOnly", "", 0, Array())
	oDispatcher.executeDispatch(oDocument, ".uno:Paste", "", 0, Array())
	oCells = oTextTable.getCellByPosition(0,iTableInsertPosition)
	ThisComponent.CurrentController.select(oCells)
	oDispatcher.executeDispatch(oDocument, ".uno:Delete", "", 0, Array())
	oCells = oTextTable.getCellByPosition(2,iTableInsertPosition)
	ThisComponent.CurrentController.select(oCells)	
	oDispatcher.executeDispatch(oDocument, ".uno:Delete", "", 0, Array())
	oCells = oTextTable.getCellByPosition(3,iTableInsertPosition)
	ThisComponent.CurrentController.select(oCells)
	oDispatcher.executeDispatch(oDocument, ".uno:Protect", "", 0, Array())
	oDispatcher.executeDispatch(oDocument, ".uno:UpdateAll", "", 0, Array())
	oCells = oTextTable.getCellByPosition(0,iTableInsertPosition)
	ThisComponent.CurrentController.select(oCells)	
end sub

sub tab_rechnungs_position_row_delete
	Dim oTextTables As Variant
	Dim oTextTable As Variant
	Dim oCells As Variant
	Dim oTableRows as object
	Dim iTableInsertPosition as Integer
	Dim oDocument   as object
	Dim oDispatcher as object
	Dim args1(0) as new com.sun.star.beans.PropertyValue
	Dim formula_string as String
	oViewCursor = ThisComponent.CurrentController.getViewCursor
	iTableInsertPosition = CInt(Mid(oViewCursor.Cell.CellName,2,10))
	oTextTables = ThisComponent.getTextTables()
	oTextTable = oTextTables.getByName("tab_rechnungs_positionen")
	oTableRows = oTextTable.getRows
	iTableLastPosition = oTableRows.getCount - 4
	if (iTableInsertPosition<3) OR (iTableInsertPosition>iTableLastPosition) Then
		Exit Sub
	End If
	oCells = oTextTable.getCellRangeByPosition(0,iTableInsertPosition-1,3,iTableInsertPosition-1)
	ThisComponent.CurrentController.select(oCells)	
	oDocument   = ThisComponent.CurrentController.Frame
	oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	oDispatcher.executeDispatch(oDocument, ".uno:UnsetCellsReadOnly", "", 0, Array())
	oDispatcher.executeDispatch(oDocument, ".uno:DeleteRows", "", 0, Array())
	oDispatcher.executeDispatch(oDocument, ".uno:UpdateAll", "", 0, Array())
	oCells = oTextTable.getCellByPosition(0,iTableInsertPosition-2)
	ThisComponent.CurrentController.select(oCells)	
end sub
In Spalten-Index 0 ist die Anzahl, in Spalten-Index 1 ein String "x" (dient nur als Text), in Spalten-Index 2 der Preis und in Spalten-Index 3 die Zeilen-Formel (z.B. "=<A2>*<C2>"), die in neue Zeilen kopiert werden soll. Die Spalte mit der Aufählung wie in der Rechnung von EGO füge ich später noch hinzu, das ist eine gute Idee. Der Code funktioniert bei mir soweit sehr gut, ich hoffe nur ich habe das nicht viel zu kompliziert gelöst. Falls Ihr Fehler findet oder Verbesserungsvorschläge habt, greife ich die gerne auf.

Viele Grüße
SchmuckerJunker

Re: Rechnung mit Writer erstellen sinnvoll

von EGO » Mi, 06.05.2015 09:50

SchmuckerJunker hat geschrieben:ich arbeite mich gerade in OpenOffice ein und frage mich, ob es sinnvoll ist, Rechnungen mit Writer zu erstellen?
Für gelegentliche Rechnungen würde ich auch zum Writer greifen und mir eine Vorlage wie die angehängte basteln. Wie Stephan schon schrieb, genügen eigentlich zwei Spalten: Eine breite für die Bezeichnung und eine (hoffentlich) weniger breite für den Betrag. Ich habe noch eine dritte davorgesetzt, damit die Posten durchgezählt werden.

In der dritten (! - die mittlere Zeile hat keine Rahmenlinien und dient nur als Abstandhalter) Zeile ist die Summenfunktion angelegt, darunter die Mwst Berechnung und eine weitere Addition der Nettosumme und der Mwst.

Wichtig: Um die Tabelle zu erweitern (die Rechnung könnte ja mehr als nur einen Posten haben), müssen Sie Zeilen einfügen. Dabei muß der Cursor in einer nummerierten Zeile stehen, dann über die Symbolleiste "Zeile einfügen" wählen. Wenn Sie das beachten, erweitert das Summenfeld automatisch den zu addierenden Bereich und auch die folgenden Funktionen werden an die erweiterte Tabelle angepaßt.

Klappt's?

EGO..
Dateianhänge
Rechnung.odt
(11.41 KiB) 428-mal heruntergeladen

Re: Rechnung mit Writer erstellen sinnvoll

von EGO » Mi, 06.05.2015 09:28

komma4 hat geschrieben:Und was spricht dann dagegen die berechneten Werte aus CALC nach WRITER zu übernehmen? (Stichwort: "Serienbrief")
Das Verknüpfungsproblem wurde schon genannt - wobei sich das ja erledigen würde, wenn man einmal die Tabelle angelegt und verknüpft hat.

Aber wie dann weiter? Wenn ich eine Tabelle für alle Rechnungen nehme, wird's unkomfortabel, wenn ich Kunden ausdrucken möchte, die nicht mehr in das leider automatisch sehr kleine "Datensätzeauswählen"-Feld im Seriendruckdialog passen - es sei denn, ich weiß die Datensatznummer (vom Anlegen der Rechnung im Quer- statt wie gewohnt Hochkantformat ganz abgesehen). Wenn ich pro Kunden eine Tabelle nehme, verlagert sich das Problem nach links, weil auch dieses Auswahlfeld im Druckdialog sehr klein ist und man ums Rollen nicht drumherumkommt.

Noch schwerer wiegt für mich das Problem, daß ich im Serienbrief von Anfang an anlegen muß, wie viele Einträge erfolgen sollen - sprich wie viele Posten meine Rechnung hat. Dazu habe ich bislang noch keine wirklich sinnvolle Lösung gefunden. Ich könnte natürlich einfach eine Maximalzahl (durch die Seitengröße begrenzt) angeben und dann alles, was leer bleibt, löschen. Aber das scheint mir auch nicht komfortabel, weil ich dann nie direkt drucken kann, sondern immer erst "in Datei drucken" und von Hand nachbessern muß :? .

Da gibt's bestimmt eine schicke Lösung - aber ich sehe sie irgendwie nicht. Daher wäre ich für einen Augenöffner bei der Serienbrieflösung" sehr dankbar.

Gespannt grüßt EGO..

Re: Rechnung mit Writer erstellen sinnvoll

von Stephan » Di, 05.05.2015 11:42

Und was spricht dann dagegen die berechneten Werte aus CALC nach WRITER zu übernehmen? (Stichwort: "Serienbrief")
Das der Threadstarter eher keine Datenbanklösung wollte und die Datenübernahme von Calc nach Writer, gerade unter dem Stichwort "Serienbrief", nur mittels Datenbank geht und eine anderweitige direkte Übernahme aus Calc unbequem bzw. für Anfänger schwer verständlich ist.

'unbequem bzw. schwer verständlich' weil:
verknüpfen ohne Nutzung der Datenbankfunktionalität ist nicht trivial, weil DDE per Copy/Paste nur für Tabellen geht, für Feldbefehle im Fliesstext hingegen per Hand eingetragen werden muss.

Müsste ich unter den hier anzunehmenden Randbedingungen Daten aus Calc übernehmen bzw. verknüpfen täte ich das per Makro, nur hätte ich das dem Frager vorgeschlagen wäre ich zu 99% Wahrscheinlichkeit dazu 'verurteilt' auch gleich das komplette Makro noch nachzuliefern.


Ich selbst schreibe meine Rechnungen in Writer wobei ich Adressdaten aus einer Datenbank ziehe, die nötigen Berechnungen aber im Writer-Dokument selbst mache (in einer Tabelle).


Gruß
Stephan

Re: Rechnung mit Writer erstellen sinnvoll

von komma4 » Di, 05.05.2015 10:15

Stephan hat geschrieben:oder wenn eben weitere Funktionen in Richtung Datenbank (siehe oben 2. Link) hinzukommen die leichter in Calc umsetzbar sind.
Und was spricht dann dagegen die berechneten Werte aus CALC nach WRITER zu übernehmen? (Stichwort: "Serienbrief")

Ich habe jedenfalls immer WRITER verwendet, da ich die Fummelei zum Erreichen eines korrekten Layouts in CALC schrecklich fand.
Nach einer anfänglichen Phase mit CALC bin ich dann auch auf eine Datenbank (eine "richtige": MySQL) umgestiegen, da konnte ich die WRITER-Vorlage weiter verwenden, indem ich nur die BASE-Datei (zur Verknüpfung der Werte in die Vorlage) ausgetauscht/angepasst habe.


Meine Stimme hat eine WRITER-Lösung :!:

Re: Rechnung mit Writer erstellen sinnvoll

von miesepeter » Di, 05.05.2015 07:19

Hallo,
schau dir mal die Diskussion hier an: viewtopic.php?t=64625
Ciao

Re: Rechnung mit Writer erstellen sinnvoll

von Stephan » Di, 05.05.2015 06:47

Mir ist z.B. aufgefallen, dass die Zell-Koordinaten innerhalb einer Spalte abweichen, wenn man links davon Zellen verbindet (z.B. damit lange Texte links von der Rechnungsposition hinpassen).
ja, ist so, nur verstehe ich die Relevanz nicht.

Eine 'einfache Rechnung' benötigt meines Erachtens nur eine zweispaltige Tabelle mit linke Spalte Bezeichnung der Rechnungsposition und rechts der Betrag, meinethalben auch noch Spalten für Einzelpreis und Anzahl, nur nie müssen Spalten (nachträglich) verbunden werden.
Es wäre nett, wenn hier jemand mit OpenOffice-Erfahrung mal etwas zum Thema Rechnungen und Writer bzw. Calc sagen könnte.
Meiner Meinung nach ist das weitgehend egal. Meine Rechnungen schreibe ich mit Writer.

Wenn ich das Internet durchsuche sind wohl die meisten Rechnungsvorlagen mit Calc realisiert, z.B.:
http://www.prooo-box.org/live/vorlagen/ ... sc2/19.htm
http://www.swierkowski-online.de/programm.htm#rgedsooo

wobei ich keine zwingende Notwendigkeit dafür sehe.
Im zweiten Beispiel geht es funktional um etwas mehr als nur das Schreiben einer Rechnung und so wird Calc als kleine Datenbank benutzt wozu es natürlich besser geeignet ist als Writer.

Ich weiß auch nicht was ich sonst noch mehr sagen soll, denn die Aussage das eine Rechnung eigentlich ein Textdokument ist und somit eigentlich eher Writer als Calc das geeignete Programmmodul wäre scheint mir zwar richtig aber nicht sehr pragmatisch, da ich andererseits keinen ersten Grund erkennen kann Rechnungen nicht mit Calc zu schreiben, falls sich das als leichter erweist, was dann der Fall sein kann wenn etwas mehr gerechnet werden soll oder wenn eben weitere Funktionen in Richtung Datenbank (siehe oben 2. Link) hinzukommen die leichter in Calc umsetzbar sind.



Gruß
Stephan

Rechnung mit Writer erstellen sinnvoll

von SchmuckerJunker » Di, 05.05.2015 01:37

Hallo,

ich arbeite mich gerade in OpenOffice ein und frage mich, ob es sinnvoll ist, Rechnungen mit Writer zu erstellen?
Mir persönlich gefällt an Rechnungen in Writer, dass der Layout-Teil so einfach von der Hand geht und das ich das Layout, welches ich mühsam für die Schreiben zusammengebastelt habe, nicht noch einmal in Calc erstellen muss. Auf der anderen Seite scheinen die Tabellen in Writer doch etwas anders zu "ticken" als in Calc. Mir ist z.B. aufgefallen, dass die Zell-Koordinaten innerhalb einer Spalte abweichen, wenn man links davon Zellen verbindet (z.B. damit lange Texte links von der Rechnungsposition hinpassen). Und nachdem ich eine Tabellenzeile hinzugefügt und die Formeln aus der darüber liegenden Zeile eingefügt habe, hat Writer zwar die Koordinaten der Formeln in der neuen Zeile angepasst, nicht aber im Summen-Feld unterhalb der Rechnungspositionen. Entweder habe ich etwas falsch gemacht, oder man muss das mit einem Makro programmieren...

Da ich mich in Calc schlechter als in Writer auskenne, vor allem was den Layout-Teil angeht, wollte ich mal fragen, ob das nun totaler Unsinn ist und man auf jeden Fall Calc für Rechnungen nehmen sollte, oder ob man mit Writer durchaus in der Lage ist, Rechnungen zu erstellen, bei der man flexibel Rechnungs-Positionen hinzufügen oder entfernen kann, ohne dass es einem gleich die Formeln zerlegt?
Es sollen vergleichsweise wenige Rechnungen erstellt werden, daher scheint mir eine richtige Datenbank-Lösung oder ein spezielles Buchhaltungs-Programm mit Mahnwesen, Steuererklärung und was weiß ich noch, am Anfang doch etwas übertrieben.

Es wäre nett, wenn hier jemand mit OpenOffice-Erfahrung mal etwas zum Thema Rechnungen und Writer bzw. Calc sagen könnte.

Vielen Dank und Viele Grüße
SchmuckerJunker

Nach oben