NAV Report: Multi-Sprachen + Multikunden in Einem

29. Januar 2016 12:44

Hallo Gemeinde,

ich habe wieder mal ein recht komplexes Vorhaben/Anliegen und bräuchte noch ein paar Ideen bzw. Ratschläge dazu :-). Folgender Hintergrund:

Unser Unternehmen ist ein Vertrieb, welcher in verschiedene Länder verkauft und somit auch verschiedene Sprachen unterstützen muss (z.B. Rechnungen, Lieferschein etc.). Aktuell läuft das alles über jeweils einen Report dessen Sprache je nach Bedarf angepasst wird und alle Texte sind in den verschiedenen Sprachen in den Textkonstanten hinterlegt. Funktioniert auch tadellos. Nur jetzt wird es etwas komplizierter. Neben unseren eigenen Marke übernehmen wir jetzt auch den Vertrieb für andere Firmen/Kunden. Sprich wir stellen den Webshop, die Buchhaltung und die Logistik bereit. Aktuell war das nur 1 Kunde es werden in Zukunft aber mehrere dazukommen.
Da das Layout des Reports immer gleich ist sich nur die Inhalte geringfügig ändern (Telefonnummer, Adressen etc.) habe ich für unseren neuen Kunden einfach einen Sprachcode genommen welcher vermutlich nie verwendet wird (Quechua) und für diese Sprache die Textkonstanten des Kunden gepflegt. Beim Report prüfe ich vorher einfach ob es eine Bestellung des Kunden ist und setze die Sprache des Reports entsprechend um. Das ist allerdings ein sehr kruder Hack aber aus Ermangelung an Zeit und Ressourcen war das die einfachste und schnellste Lösung. Die auch funktioniert :-).
Nun kann und wird es auch vorkommen das dieser Kunden und alle zukünftigen ebenfalls mehrere Sprachen unterstützen wollen und ich möchte nicht diesen "Hack" noch weiter ausbauen sondern suche nach einer sauberen Lösung. Ein neuer Mandant im NAV kommt leider nicht in Frage da alles unter einer Buchführung laufen muss.

Folgende Ideen kamen mir zuerst in den Sinn:

1.) für jeden Kunden neue Reports anlegen und einen Auswahlreport davorschalten welcher entscheidet, welchen Report er jetzt z.B. für den Rechnungdruck verwenden soll
Nachteil: sehr hoher Aufwand: viele Reports und somit sehr viel Pflege/Quellcodebearbeitung

2.) eine "Konstantentabelle" anlegen, welche als Primärschlüssel den Kundencode, Sprachcode und die Textfeldbezeichnung besitzt und mir diese Inhalte dann vorher ins Dataset zu ziehen
Vorteil: Pflege von Sprachen in einer Tabelle
Nachteil: enorm hoher Aufwand beim Umbau des Reports, viele manuelle Mapping-Arbeit im Code und noch keine Sicherheit ob das wirklich so funktioniert wie ich mir das denke ;-)

Jetzt wollte ich einfach nur mal von euch wissen ob ihr vllt. schon mal mit ähnlichen Problemen zu tun hattet bzw. ob es möglicherweise dafür bereits schon integrierte Lösungen im NAV gibt die ich einfach nur nicht kenne? Auf jeden Fall bin ich für jedes Feedback im voraus dankbar und ich hoffe es ist halbwegs verständlich auf was ich hinaus will :-).

NAV2013

Re: NAV Report: Multi-Sprachen + Multikunden in Einem

29. Januar 2016 23:23

Ich habe die Beschreibung nur überflogen, vielleicht hab ich da was übersehen. Aber warum hinterlegst du die Sprache nicht bei den Debitoren? (Ich nehme mal an es geht um debitorische Reports, Verkaufsrechnung usw.) Ein Report der alle Sprachen in den Captions enthält genügt doch. Oder denke ich zu einfach?

Re: NAV Report: Multi-Sprachen + Multikunden in Einem

30. Januar 2016 10:45

Hi jkahnt.

Schau mal hier: http://simplanova.com/multilingual-repo ... constants/
Dort werden verschiedene Möglichkeiten aufgezeigt. Selbst habe ich sowas noch nicht genutzt.

Re: NAV Report: Multi-Sprachen + Multikunden in Einem

30. Januar 2016 11:31

Hallo,

ich vermute mal Jan's Problem ist nicht nur mit einem Sprachcode zu lösen. Hier scheint mir ein grundsätzliches Problem vorhanden zu sein.

Generell kann man sagen, das man in NAV nie getrennte Reports pro Debitor oder Kreditor benötigt, wenn diese kein komplett eigenes Layout wünschen (Versand von Ware in fremden Auftrag). Letzteres ist mit NAV 2016 im Standard möglich.
Dabei ist es völlig egal ob es sich um Sprachwechsel im Bericht (Sammelrechnungsdruck) handelt, oder sich nur die Telefonnummer des Kunden ändert. Alle Daten können an einen Report während eines Ausdrucks übergeben werden und an fast jeder Stelle ausgegeben werden.
Ein großes Aber könnte je nach Vorgehensweise allerdings der Speicherbedarf der Berichte sein, wenn eine große Anzahl Belege am Stück gedruckt werden sollen und Logos an den Bericht übergeben werden, aber auch dafür gibt es eine Lösung.

Vielleicht könnte Jan hier mal beschreiben, warum er diesen Weg gegangen ist, denn bereits die Berichte aus dem Standard sind in der Lage mit seinem Problem (Mehrsprachigkeit, Multi-Debitor) umzugehen!!???

Hast du den Sprachcode bei den Debitoren noch nicht gefunden? :wink:


siehe weiter unten

Gruß Fiddi

Re: NAV Report: Multi-Sprachen + Multikunden in Einem

30. Januar 2016 12:10

Wenn ich das richtig verstanden habe, dann geht es um den Versand im Namen Dritter (o.ä.) und geänderte Texte dieser Dritten auf den Belegen.
Der Spachcode war wohl nur ein Workaround um "mal eben" einen Kunden mit geänderten Texten bei gleichem Layout zu versorgen.
Jetzt geh es aber darum, für weitere Kunden ggf. auch geänderte Layouts anzubieten.

Letzteres ist in NAV 2013 nur mit einem neuen Objekt möglich, beginnend mit NAV 2015 können in der Datenbank aber auch mehrere Layouts hinterlegt werden. Für einen Fall wie bei euch im gleichen Mandanten muss diese Auswahl noch erweitert werden, für jeden Dritten ein Layout, welches dann auf Basis der Debitorennr. ausgewählt wird. Aber wie gesagt erst ab NAV 2015.

Re: NAV Report: Multi-Sprachen + Multikunden in Einem

31. Januar 2016 09:28

Hallo,

nochmal zurück auf Anfang:

Die Reports könnte man über Daten aus den Zuständigkeitseinheiten steuern, d.h. du erstellst für jeden eurer Shopkunden (Kunden für die Ihr den Shop abwickelt) eine neue Zuständigkeitseinheit, welche die abweichenden Daten enthält und übergibst sie pro Beleg an die Reports. Über den Zuständigkeiteinheitencode könntest du auch das Layout beeinflussen. Die Sprache des Beleges würde ich generell nur über den Endkunden steuern.
Das ist soweit kein Problem. Problematisch könnte es nur werden, wenn einer der Endkunden in mehreren eurer Shops bestellt, und womöglich eine Mahnung erhalten soll.

Was mir mehr Verständnisprobleme bereitet sind deine Aussagen:
Neben unseren eigenen Marke übernehmen wir jetzt auch den Vertrieb für andere Firmen/Kunden. Sprich wir stellen den Webshop, die Buchhaltung und die Logistik bereit. Aktuell war das nur 1 Kunde es werden in Zukunft aber mehrere dazukommen.

Ein neuer Mandant im NAV kommt leider nicht in Frage da alles unter einer Buchführung laufen muss.

Was meinst du damit? Handelt es sich dabei um eigenständige Firmen, oder nur um eine Abteilung eures eigenen Unternehmens? Ich denke es ist schwierig bis unmöglich die Buchhaltung mehrerer eigenständiger Firmen in einer Buchhaltung abzuwickeln, und wahrscheinlich auch rechtlich problematisch.


Gruß Fiddi

Re: NAV Report: Multi-Sprachen + Multikunden in Einem

16. Februar 2016 15:11

Hallo Gemeinde,

zuallerst möchte ich mich für die vielen umfangreichen Antworten bedanken. Ich habe mir jetzt folgendermaßen geholfen:

Ich habe eine Template Feld Tabelle (TemplateField) angelegt welche als Primärschlüssel den Code unseres Kunden (Dienstleistungsbeansprucher), Sprachcode und die Feldbezeichnung des Templatefeldes besitzt. Dazu kommt ein Wert Feld welches den eigentlichen Inhalts des Feldes besitzt und ein Boolean Feld welches anzeigt ob es sich um ein Bild handelt (aber dazu später mehr :-))

Somit wäre ein Beispieleintrag:

CustCode,LangCode,FieldName,Value,IsPicture
'ABC KUNDE', 'DEU', 'field_email_address', 'abc@def.gh',false
'ABC KUNDE', 'DEU', 'field_logo_big', 'LOGO_BIG', true

Zum Beispiel im Rechnung Report hol ich mir die Informationen zu CustCode und LangCode vom z.B. "Sales Invoice Header" im OnAfterGetRecord-Trigger:

Code:
Sales Invoice Header - OnAfterGetRecord()
...
CustCode_G := "Sales Invoice Header".CustCode;
LangCode_G := "Sales Invoice Header".LangCode;
...


Zusätzlich habe ich ein Funktion welche mir anhand des Feldnamens (FieldName) aus der Template Feld Tabelle den jeweiligen Wert holt:

Code:
GetFieldValue(FieldName_P : Text[50])  : Text[250]
IF TemplateField.GET(CustCode_G, LanCode_G, FieldName_P) THEN BEGIN
  EXIT(TemplateField.Value);
END ELSE BEGIN
  ERROR(STRSUBSTNO('Missing template fields for %1 - %2 - %3', CustCode_G, LangCode_G, FieldName_P));
END;


Im Dataset des Reports ruf ich als Source für das entsprechende Feld dann immer die Funktion GetFieldValue auf. Soweit so gut. Mit Textfeldern funktioniert dies hervorragend. Das Layout bleibt auch für alle immer gleich so dass Felder wie Rechnungsnummer, Menge etc. nicht separat pro Kunden gepflegt werden müssen. Im Prinzip alles super, wären da nicht die Bilder.

Ich benötige Bilder im Kopf und Fuß des Dokuments. Diese sind als Blob auch in der Datenbank gespeichert (auch eine separate Tabelle), welche als Primärschlüssel den Wert eines Feldes entspricht (z.B LOGO_BIG weiter oben). Die Blobs werden im OnAfterGetRecord des Sales Invoice Header initialisiert und sind auch vorhanden. Wechseln auch je nach Kunden, habe mir die Datasets angeschaut.
Die Daten hole ich mir in den Kopf bzw. Fuß des Reports mit Hilfe der SetData und GetData Herangehensweise, welche in diesem Forum beschrieben ist und sehr gut funktioniert. Um die Blob-Daten zu transferieren benutze ich die Funktionen Convert.ToBase64String und Convert.FromBase64String. Klappt im Prinzip auch alles wunderbar. Jetzt kommt aber leider doch ein Problem:

Das Bild im Kopf hat folgende Eigenschaften:
Bildquelle: Datenbank
Feld: =Convert.FromBase64String(Code.GetData(2))
MIME = image/bmp

Wenn ich nur eine Rechnung drucke klappt dies wunderbar. Sobald es mehrere werden, speziell wenn es Unterschiede bei den Logos gibt, dann bleibt das erste Logo immer erhalten, also dass was zuerst angezeigt wurde. Ich habe mir auch mal den Base64 String in einer Textbox ausgeben lassen und dieser ändert sich je nach Bild. Das Bild selbst bleibt aber leider gleich. Ich habe mir auch folgenden Forenbeitrag durchgelesen: http://www.msdynamics.de/viewtopic.php?f=64&t=28474 allerdings sind im HeaderLogo Report mehrere Bildelemente im Kopf und ich möchte ja lieber eines welches sich ändert. Die Größen wären auch immer gleich bzw. auf ein Maß genormt.
Hab ich da noch etwas falsch verstanden oder ist es schlichtweg nicht möglich mit NAV2013 dynamische Inhalte für Bilder festzulegen? Vielen Dank im voraus.