[gelöst] Bericht Rechnung anpassen

10. November 2009 18:57

Hallo alle miteinander,

ich steh wieder einmal vor nem Problem, ich möchte gern für die gebuchten Rechnungen (einkauf und verkauf) einen Sammelbeleg pro Kunden erstelle und diesen als Rechnung raus schicken. Zum Hintergrund:

Wir legen aus einem Kontakt (Kunden) einen Debitoren und einen Kreditoren an, die Rechnungen werden von einem Externen System importiert und als Einkaufs- und Verkaufsrechnungen in das System geschrieben. Nun sollen alle Kunden einen Sammelbeleg bekommen in dem es eine Übersicht gibt und dann die Einzelnen Posten zusammengetragen nach Lagerplatz.

Code:
Seite 1:
kopf
----
 Ihre Verkaufsrechnung für den Monat Mai 2009
 ... zusammenfassung nach Produktgruppen
  Rechnungsbetrag ... x,- €
-----
 Ihre Einkaufsrechnung für den Monat Mai 2009
 ... zusammenfassung nach Produktgruppen
 Rechnungsbetrag ... -x,- €
-----
 Zahlungsavis für den Monat Mai 2009
 zu ihren/unseren Gunsten x€

Seite 2 bis n
 Pos. Artikelnummer Artikelname Lagerplatz/Lagerort Menge Einzelpreis Zeilenbetrag
.....


Ich habe ehrlich gesagt gar keine Ahnung wie ich da ran gehen soll, hat jemand nen paar Tips für nen Einstieg. Ich würde als erstes damit anfangen wollen die Belege für einkaufs/ verkaufsrechnungen zu erstellen: weiß aber schon gar nicht wie ich die Spalten verändern kann, also z.B.: den Lagerplatz mit angeben pro Zeile, Schriftart ändern, Logo einfügen usw. Gibt es irgendwo nen Tutorial speziell für den Bericht Rechnung? Der Bereich zu Reports im ADG ist ja sehr abstrakt.

Bin für jeden Tipp dankbar.

VG
René
Zuletzt geändert von kockiren am 25. November 2009 19:13, insgesamt 1-mal geändert.

Re: Bericht Rechnung anpassen

11. November 2009 12:35

Es gibt leider nicht für alles Handbücher, Dokumentaionen ect.,
i.d.R. müssen Entwickler sich durch ihr eigenes Wissen bzw. durch abschauen der Standardfunktionalität weiter helfen.

So wie ich Dein Problem interpretiere, könntest du die folgenden Reports für Deine Zwecke nutzen:
(Diese lassen sich im Standard auch auf einen einzelnen Deb/Kred. filtern)
- R_296 Aufträge Stapelbuchen
- R_297 Verk.Rechnungen Stapelbuchen
- R_496 Bestellungen Stapelbuchen
- R_497 Eink. Rechnungen Stapelbuchen

Um zusätzliche Felder anzudrucken, müsstest du die entsprechenden Records Filtern und einer Variable zuordnen (dieses in den Sections plazieren)

Re: Bericht Rechnung anpassen

11. November 2009 16:45

Hallo und Danke für deine Hilfe,

also ich habe mir heut mal nen Bericht genommen und den entsprechend angepasst. Das klappt auch alles super und geht einfacher als ich dachte :-) Hab nun nur noch nen paar kleinere Probleme.
1. Ich möchte hinter die Legende der Spaltenbeschriftung eine farbliche Hervorhebung legen, hab dazu ein Textfeld hinter die einzelnen Spalten gelegt und über die gesamte Breite gezogen und den Wert BackColor auf 8421504 gestellt nur bleibt alles weiß.

2. Ich möchte ja auf der ersten Seite eine Zusammenfassung schreiben:
Code:
Artikel oder Leistung      |      Betrag
Artikelkategorie 1         |      x,-- €
Artikelkategorie 2         |      x,-- €
Artikelkategorie 3         |      x,-- €
-------------------------------------------
Betrag netto
MwSt.
Betrag brutto

Text bla bla
seitenumbruch


Dazu würde ich folgendermaßen durchgehen, im Trigger Purchase Header: onaftergetrecord würde ich nen SETRANGE setzen auf die entsprechenen Kategorien setzen und Variablen setzen mit den entsprechenden Daten. Die Frage ist nun ob es dafür einen einfachere Lösung gibt, nicht das ich hier was unnötige baue wa am ende nen haufen ressourcen verwendet. Achja und ich weiß nicht wie ich nen Seitenumbruch hinbekomme :-)

3. Für den Zahlungsavis würde ich nen neuen Bericht erstellen der aus Purchase und Invoice die ensprechenden Infos zieht und aufbereitet. Aber das ist ja das selbe prinzip wie bei den einzelnen Posten. Muss dann nur noch schauen wie ich die Posten nach ihrem Lagerplatz sortiert angezeigt bekomme.

Vielleicht hat ja jemand nen Tipp, ich fang einfach mal so an wie ich mir das denke :-)

VG
René

Re: Bericht Rechnung anpassen

11. November 2009 17:17

Zu 1.:
Ich weiss nicht, was der Wert BackColor auf 8421504 ist. Bedenke, dass der Report eh nur Schwarz/Weis drucken kann!
Evtl. mit dem Farbwert experimentieren Schwarzer Hintergrund - Weiße Schrift oder so.

zu 2.
Hab ich auf die schnelle nicht genau geschnallt ;-)
-->Das Ergebnis des Reports vor der eigentlichen Verarbeitung andrucken geht nicht. Hier muß das System entweder,
a. die Daten 2x berechnen, oder
b. Die Daten vorverarbeiten und dann ausgeben (siehe auch unten Punkt 3b)

zu 3.
Ich denke die Werte solltes du aus den Debitoren/Kreditorenposten "ziehen", aber es gibt doch auch Reports zu OP´s (offenen Posten)?!

zu 3b.
nach Lagerplatz sortiert? Hmm, ich kenne das Layout des Reports nicht und ob das Feld so verfügbar ist.
a. Wenn das Feld verfügbar ist, kann der report es danach sortiert nur ausgeben, wenn es einen entsprechenden Key gibt.
b. Wenn das Feld nicht verfügbar ist, müsstest du vermutlcih über eine Arbeitsdatei / TmpTabelle die Daten vorverarbeiten und dann ausgeben.

Re: Bericht Rechnung anpassen

11. November 2009 17:23

Hallo Mikka,

also der Wert soll Grau sein laut: http://www.navision24.de/trickkiste/farbe-bekennen.html Aber es bleibt einfach weiß, es ändert sich gar nix.

Hm das mit der Verarbeitung hab ich noch nicht ganz geschnallt. Also so wie ich das verstehe gibt es RoundLoop und da wird jede Zeile aufgerufen, ich müsste also nen zweiten Roundloop Footer überhalb des ersten aufführen der dann nur das ergebniss der Kategoriezusammenfassung anzeigt und nicht jede PurchaseLine anzeigt. Hm da blick ich aber noch nicht durch, wie kann ich denn einen zweiten Durchlauf oberhalb des derzeitigen einfügen?

Das mit Punkt 3 mach ich nachdem ich die einzel Belege geschafft habe :-)

VG
René

edit: Also ich versuche mich an das Problem heran zu tasten, ich versuche am Ende des Berichtes 402 eine Summierung nach Artikelkategorien darzustellen. Ich weiß nicht so recht wie ich das schreiben soll. Ich habe nun für alle Kategorien eine Variable erzeugt und rechne im OnAfterGet Trigger einfach per
Code:
IF "Purchase Line"."Articel Category Code" = CODE1 THEN CostCode1 := CostCode1 + "Purchase Line"."Amount";


Und dann lass ich mir die Variablen einfach anzeigen, ist aber nicht schön da auch welche angezeigt werden die leer sind :-( Ich könnte doch auch im PagerHeader nen Filter setzen und dann mit REPEAT einfach alle durchlaufen lassen, aber das ist alles nicht so schön, ich würd das gern nach NAV Art lösen :-)

VG
René

Re: Bericht Rechnung anpassen

12. November 2009 10:20

Hm ich wollte eben mal nen neuen Bericht anfangen und ihn Stück für Stück zusammenbauen, jetzt bekomme ich die eigenartige Meldung das ich keine Zugriffsrechte besitze um Reports zu erstellen. Welche Rolle benötige ich denn da? Ich meld mich als SA an und habe die Rolle Super das sollte doch klappen.

Hat jemand nen Tipp?

VG
René

Re: Bericht Rechnung anpassen

12. November 2009 10:30

Hallo René,

den Rechnungsreport darfst du als normaler Benutzer wahrscheinlich nicht ändern, da er den Rechnungskopf verändert (Feld "Anzahl gedruckt"). Das ist einem normalen Benutzer nicht erlaubt. Der Report hat spezielle Rechte, die es ihm erlauben, diese Belege trotzdem zu verändern, mit der Folge, dass man Sie als normaler Benutzer diese Reports nicht ändern darf (Verhinderung von Belegmanipulationen).

Gruß, Fiddi

Re: Bericht Rechnung anpassen

12. November 2009 10:39

Hallo Fiddi,

na das ist ja das merkwürdige, ich kann die Reports verändern aber ich kann keine neuen erstellen, möchte ich wie im ADG beschrieben einen Report erstellen dann kommt die Meldung das meine Zugriffsrechte nicht ausreichen. Nehme ich einen vorhandenen Bericht so kann ich ihn ändern, speichern und ausführen.

Gibt es einen speziellen Nummernbereich in dem ich eigene Reports anlegen darf? Ich hab einfach nur ne freie Nummer gewählt, z.B.: 401 oder 500001 geht aber nicht wegen oben genannter Fehlermeldung.


Weiterhin habe ich nun probiert wie von Mikka vorgeschlagen ein zweiten durchlauf der Purchase Lines durchzuführen und wollte dabei mit dem GroupHeader und Footer arbeiten und das ergebnis der Gruppierung oberhalb der Roundloop Header anzuzeigen. Lege ich nun oberhalb des DataItems Purchase Line ein zweites Item Purchase Line an dann sagt er mir beim Kompilen das ich nicht 2 mal das selbe Item anlegen kann, hm wie kann ich ihn denn dann dazu bringen das er mir die Zeilen 2 mal durchläuft?

VG
René

Re: Bericht Rechnung anpassen

12. November 2009 10:48

Hallo René,

du darfst nur dort neue Objekte anlegen, wo es in eurer Lizenz erlaubt ist. Habt die z.B. keine zusätzlichen Reports in eurer Lizenz, darfst du auch keine neuen anlegen.

Wenn ihr das in eurer Lizenz drin habt, darfst du neue Reports meistens im Bereich von 50000..50099 anlegen (hängt aber von der Lizenz ab). Aber auch hier gilt: Reports, die gebuchte Belege verändern würden, dürfen nicht angelegt werden. :-(

Gruß, Fiddi

Re: Bericht Rechnung anpassen

12. November 2009 11:00

Super hab jetzt unter der 50000 gespeichert und es geht :-) Ja das mit den gebuchten Belegen ist kein Problem da ich nen neuen Mandanten in ner Demo DB dafür habe :-)

Re: Bericht Rechnung anpassen

12. November 2009 11:58

Hallo kokieren,

das hat nichts mit der Demo zu tun. Ändert dein Bericht den gebuchten Beleg nicht mehr, kannst du ihn anlegen. Das währe aber ein Fehler, z.B. bei der Rechnung, wenn der "Anzahl gedruckt" -Zähler nicht mehr hochgezählt würde.

Gruß, Fiddi

Re: Bericht Rechnung anpassen

12. November 2009 17:52

Ich bin immer noch am verzweifeln. Ich habe nun einen neuen Report erstellt, die Datenstruktur ist recht einfach. "purchase header" und darunter "purchase line", ich bekomm es ohne Probleme hin einen Header zu erzeugen und den mit meinen Daten zu füllen, drunter kommt dann der Purchase Line Body mit den einzelnen Rechnungszeilen, da steht Lagerplatz usw drin, alles was ich brauch. Da ich das noch nicht ganz mit den zwei durchläufen verstanden habe und ich nicht zweimal als Dataitem Purchase Line einsetzen kann, wollt ich erstmal die Gruppierung nach "Item Categorie Code" ans ende in den Groupfooter setzen. Wenn ich das im ADG richtig gelesen habe dann ist genau er der jenige der mir das so zusammenrechnet wie ich das will.

Also habe ich in "Group Total Fields" meinen "Item Category Code", in die "Total Fields" die Felder: "Amount, Qunatity, Line Amount" eingesetzt und wollte nun in DataitemTableView meine Keys setzen, ich benötige ja nen Key wie: "Document Type", "Doucment No.", "item Category Code", wenn ich das eintrage und speichere sagt er mir beim ausführen das es keinen Schlüssel gibt den ich angegeben habe, also habe ich im OnPreDataItem versucht mit SETCURRENTKEY("Item Category Code") zu setzen aber das klappt auch nicht.

Ich vermute das ich da etwas noch nicht verstanden habe, im ADG wird auf Seite 242 dieser Wegbeschrieben, aber ich bekomm mein Feld nicht in die Schlüsselliste. Hat jemanden ne Idee was ich da falsch mache?

Vg
René

Re: Bericht Rechnung anpassen

12. November 2009 18:10

kockiren hat geschrieben: ... und ich nicht zweimal als Dataitem Purchase Line einsetzen kann ...

Sicher kannst du das. Du musst ihnen nur unterschiedliche Namen geben.

Re: Bericht Rechnung anpassen

12. November 2009 18:13

kockiren hat geschrieben:Ich vermute das ich da etwas noch nicht verstanden habe, im ADG wird auf Seite 242 dieser Wegbeschrieben, aber ich bekomm mein Feld nicht in die Schlüsselliste. Hat jemanden ne Idee was ich da falsch mache?

Erst mal die ganz blöde Idee: du hast in der Tabelle einen neuen Schlüssel erstellt, während dein neuer Report geöffnet war. Damit der neue Schlüssel im Report auch benutzt werden kann, müsstest du in diesem Fall den Report schließen und wieder öffnen.

Re: Bericht Rechnung anpassen

12. November 2009 18:56

Jap Öffnen und Schließen *lol* Jetzt kann ich auf den Key zugreifen und auch meine Groups erzeugen, klappt super. Ja wenn ich nen anderen Namen vergebe dann klappt es auch mit dem zweiten Durchlauf *freu*
Das waren dann ja wohl recht dumme Schusselfehler :-(

So nun habe ich meinen kleinen Bericht fertig und muss ihn nur noch schick machen. Dazu habe ich nun noch zwei fragen.

1. Ich bekomme es nicht hin das meine Spalten überschriften nen farblichen hintergrund bekommen, ich habe es schonmal geschafft das mein Grauwert im Section Designer angezeigt wird, wenn ich meinen Bericht starte bleiben die Spalten jedoch weiß. Was mach ich da denn noch falsch?

2. Wenn ich beim ausführen des Reports keine Document No. wähle zeigt er mir natürlich alle Rechnungen an, was ja auch so sein soll. Es wird auch für jeden Rechnungskopf eine neue Seite erzeugt nur wird der "Purchase Header" HEader nur einmal angezeigt, so das ich auf der ersten Seite den Rechnungskopf habe und auf den folgeseiten dann nur noch die "purchase Line" Body, HEader, Footer usw.aber die "Purchase HEader" Bereiche fehelen komplett.

Würde mich echt freuen wenn ich die beiden Sachen mit eurer Hilfe noch hinbekommen kann.

VG
René

Re: Bericht Rechnung anpassen

12. November 2009 19:13

kockiren hat geschrieben:Ich bekomme es nicht hin das meine Spalten überschriften nen farblichen hintergrund bekommen, ich habe es schonmal geschafft das mein Grauwert im Section Designer angezeigt wird, wenn ich meinen Bericht starte bleiben die Spalten jedoch weiß. Was mach ich da denn noch falsch?

Nichts: NAV-Reports können schlichtweg keine Farben drucken, auf wenn sie dir im Section-Designer zur Verfügung gestellt werden ... Verzichte also auf deine Hintergrundfarbe.

Es wird auch für jeden Rechnungskopf eine neue Seite erzeugt nur wird der "Purchase Header" HEader nur einmal angezeigt, so das ich auf der ersten Seite den Rechnungskopf habe und auf den folgeseiten dann nur noch die "purchase Line" Body, HEader, Footer usw.aber die "Purchase HEader" Bereiche fehelen komplett.
Setzte in der Header-Section die Eigenschaft PrintOnEveryPage = Yes.

Re: Bericht Rechnung anpassen

12. November 2009 19:17

Hallo Kockiren,

zu 1 kann ich dir schon mal was sagen: Da machst du nichts falsch, das geht nicht in NAV, auch wenn der Designer dir was anderes vorgaukelt. Die einzige Möglichkeit einen farbigen Hintergrund zu erzeugen, ist das Einfügen einer Bitmap als Hintergrund.

zu 2.: fragst du die Pageno ab? Die solltest du bei jedem neuen Purchase Header wieder auf 1 setzen.

Noch mal was allgemeines: Wenn du das Ergebnis dieses Reports statt der normalen Belege an die Kunden senden willst, solltest du beachten, das der Report noch ein paar dinnge mehr tut, als nur die Rechnung auszudrucken. Wenn du das nicht bei der Programmierung berücksichtigst, funktionieren andere Dinge im System nicht mehr.

Außerdem stehen die gebuchten Rechnungen nicht im Purchase Header oder Sales Header respektive -Line, sondern im Sales Invoice Header und im Purchase Invoice Header mit den dazugehörigen Zeilen. Was du hier ausdruckst können nur erwartete Rechnungen sein. Bei der Buchung werden die konkreten Belege erstellt, die auch wie du schon erfahren hast, nicht mehr verändert werden können. Deine Puchase- und Sales Header können jederzeit nach dem Ausdruck geändert oder sogar gelöscht werden. Außerdem kann die Buchhaltung mit den ungebuchten Belegen nichts anfangen, weil der Kunden sie nicht bezahlen kann.

Gruß, Fiddi

Re: Bericht Rechnung anpassen

12. November 2009 19:19

Hallo Natalie,

Mikka meinte schon das die Reports keine Farbe drucken können, aber das sind ja Grauwerte und die müssten doch gehen oder? Ich benötige auf jeden Fall grau hinterlegte Zeilen, wie kann man das denn hinbekommen, gibt es da gar keinen Weg?

Hm ja ich will es ja nicht auf jeder Seite sondern nur auf jeder ersten seite eines neuen Records. Mit onEveryPage = yes zeigt er es mir auf wirklich jeder Seite an. Das ist ja der Briefkopf und der muss nur einmal pro Kunde.

VG
René

Re: Bericht Rechnung anpassen

12. November 2009 19:24

kockiren hat geschrieben:Mikka meinte schon das die Reports keine Farbe drucken können, aber das sind ja Grauwerte und die müssten doch gehen oder?
OK, ich formuliere es anders: die Reports können GAR KEINE Farben. Sie können nur schwarze Schrift auf weißem Papier.
Ich benötige auf jeden Fall grau hinterlegte Zeilen, wie kann man das denn hinbekommen, gibt es da gar keinen Weg?

[SQL Reporting Services kann das.]
In deinem Fall müsstest du je eine Body-Section mit und ohne Hintergrundbild (siehe Fiddis Antwort) erstellen und diese abwechselnd anzeigen.

Hm ja ich will es ja nicht auf jeder Seite sondern nur auf jeder ersten seite eines neuen Records. Mit onEveryPage = yes zeigt er es mir auf wirklich jeder Seite an. Das ist ja der Briefkopf und der muss nur einmal pro Kunde.

PrintOnEveryPage = yes
+
Code:
CurrReport.SHOWOUTPUT(CurrReport.PAGENO = 1);

wobei
fiddi hat geschrieben:fragst du die Pageno ab? Die solltest du bei jedem neuen Purchase Header wieder auf 1 setzen

Re: Bericht Rechnung anpassen

13. November 2009 11:34

Hallo und vielen Dank für eure Tipps,

hm das mit dem Pageno bekomm ich noch nicht richtig hin. Also wenn ich da Logisch ran gehe versteh ich das schon aber weiß nicht wie ich das umsetze. Also ich gebe bei dem Header an das er nicht auf jeder Seite stehen soll. Jetzt muss ich im nächsten Schritt sagen das wenn er einen neuen Record lädt soll er den Pagecounter wieder auf 0 setzen.

Aber in welchem trigger kann ich das tun, ich bin in die Section "Purchase Header" Header gegangen und hab es dort in den Trigger OnPreSection() gepackt, dachte das dieser bei jedem neuen Header ausgeführt wird, tut er aber nicht :-(

Ich habe mir auch schon eine Message in diesen Trigger gepackt und diese wird auch nur einmal ausgeführt. *aarrgh*

Bin für jeden Tipp dankbar.

VG
René

Re: Bericht Rechnung anpassen

13. November 2009 11:43

Genau so ist es. Der OnPreDataItem wird einmal vor allen PurchaseHeaders ausgeführt, die anschließend gefunden werden. Da du aber für jeden Purchase Header den Seitenzähler zurück setzen willst -> OnAfterGetRecord.

Re: Bericht Rechnung anpassen

13. November 2009 12:02

Danke für die schnelle Antwort. Also im OnAfterGetRecord vom Purchase Header kann ich die Abfrage reinbringen, aber ich finde zu PAGENO im ADG nur die Apendix und da steht nicht drin in welcher Variable sich die Seitenzahl befindet. Wenn ich versuche in diesen Trigger die
Code:
CurrReport.SHOWOUTPUT(CurrReport.PAGENO = 1);

einzufügen dann sagt er mir das dies nur in einer Section geht. Hm also müsste ich ja in den OnAfterGetRecord sagen das der Pagecounter 1 ist, aber wo steckt dieser Pagecounter?

Ich habe in den OnAfterGetRecord folgendes gesetzt:
Code:
CurrReport.PAGENO := 1;


Aber das ändert nix , irgendwie blick ich da noch nicht richtig durch.

VG
René

Re: Bericht Rechnung anpassen

13. November 2009 12:08

Das CurrReport.SHOWOUTPUT(CurrReport.PAGENO=1); gehört in OnPreSection des Headers, der nur auf der ersten Seite stehen soll.

Re: Bericht Rechnung anpassen

13. November 2009 12:10

Code:
CurrReport.SHOWOUTPUT(CurrReport.PAGENO = 1);

gehört in den OnPreSection-Trigger der Header-Section des "Purchase Header"s.

Ich habe in den OnAfterGetRecord folgendes gesetzt:
Code:
CurrReport.PAGENO := 1;

Völlig richtig - wenn es der Trigger vom DataItem "Purchase Header" ist.

Re: Bericht Rechnung anpassen

13. November 2009 12:16

Hm ich lauf gleich gegen die Wand :-) Also ich habe nun im OnAfterGetRecord des DataItem Purchase Header folgendes stehen:
Code:
CurrReport.PAGENO := 1;

und im OnPreSection Trigger der Section "Purchase Header" Header folgendes:
Code:
CurrReport.SHOWOUTPUT(CurrReport.PAGENO = 1);


Das Ergebnis ist folgendes: Es wird mir ein Deckblatt mit dem ersten Kreditoren erstellt, dann gibt es einen Seitenumbruch und auf den Folgeseiten stehen die beiden Purchase Line durchläufe aller Kreditoren (auf je einem extra Blatt). Es soll aber für jeden Kreditoren ein neues Deckblatt erzeugt werden und ohne Seitenumbruch die Purchase Line Durchläufe angezeigt werden. Ich glaub ich steh gerade voll im Wald :-)

VG
René