Das ist eine für den Ausdruck optimierte Ansicht des gesamten Kapitels inkl. Unterseiten. Druckvorgang starten.

Zur Standardansicht zurückkehren.

Tipps und Tricks

Tipps und Tricks für die Technik / den erfahrenen Consultant

Tipps und Tricks für den erfahrenen Consltuant

Geschäftsjahr nicht bebuchbar, obwohl Beginnmonat nun richtig eingestellt ist.

Ursache: in der lp_geschaeftsjahrmandant ist der Beginn falsch eingetragen.

Bei manueller Buchung Meldung, Mwst Satz passt nicht

in LP_MWSTSATZBEZ den c_druckename nachtragen. Dieser muss wiederum zur UVA passen (siehe Parameter)

Importe generell

Es erreichen uns immer wieder Anfrage, weil ein Import angeblich nicht geht.

Dazu muss man wissen, die Import sind meist Transaktionsorientiert programmiert. D.h. entweder geht der ganze Import durch, oder er wird abgebrochen und der gesamte Import damit aufgerollt. D.h. die Daten stellen sich so dar, als wenn der Import nie durchgeführt worden wäre.

Das bedeutet für den Applikationsserver bzw. den Datenbankserver, dass er die ganzen Zustände zwischenspeichern muss.

Das bedeutet in weiterer Folge, dass jede Zeile mehr, eine entsprechende Verarbeitung erfordert. Was wiederum bedeutet, dass die Verarbeitungszeit je Zeile länger wird. Dieses Verhalten ist quadratisch mit der Anzahl der Zeilen verbunden. Daher dauert z.B. der Import von 100 Zeilen 10Sekunden, so dauert der Import von 200 Zeilen nicht 20Sekunden, sondern 40Sekunden.

Lagerplätze mit Mengen

Palettenlager

Es kommt sehr selten, aber doch, immer wieder der Wunsch, wir wollen auf den Lagerplätzen auch Mengen haben. Es reicht (angeblich) nicht aus, dass man weiß auf welchen Lagerplätze die Artikel liegen, sondern man muss auch wissen wieviele es sind.

Der Hintergrund bei einem Anwender ist / war, dass die Ware auf Paletten liegt und die Paletten eine laufende Nummer haben. Diese Paletten sind wieder im Container Lager (in einen großen Container gehen 32 Paletten rein), oder im Außenlager E oder oder. Daraus ergibt sich ganz klar, dass ich wissen muss, wo sollte ich hingehen um die 10.000Stk zu holen.

Ein Lösungsansatz dafür ist, dass jede Palette eine Charge ist, ähnlich der Gebindeverwaltung. Damit bucht man eine Palette zu und hinterlegt bei der Charge die laufende Paletten Nummer. Meist kommt dann auch noch die Frage, und wo genau, an welcher Stelle des Schwerlast-Hochregallagers steht denn nun die Palette. Hier kann man die “Version” der Charge nutzen. D.h. es wird in die Version dann der Lagerplatz, welcher selbstverständlich strukturiert aufgebaut ist, eingetragen. Siehe dazu Parameter: VERSION_BEI_CHG_MITANGEBEN. Für die Anpassung der Formulare, von Packlisten bis, einfach an den Kieselstein ERP Betreuer wenden.

Urlaub für alle Mitarbeiter:innen eintragen

Die Frage war,

wenn man den Urlaub für alle einträgt, wie wird dann Krank usw. berücksichtigt.

Hier ist es so, wenn in den Zeitdaten Einträge sind (Kommt, Geht, ..) dann wird für den jeweiligen Tag kein Urlaub eingetragen.

Sind aber Sondertätigkeiten vorhanden, wie z.B. Krank, dann wird trotzdem ein Urlaubseintrag gemacht. D.h. gegebenenfalls gibt es dann für diese Tage sowohl einen Urlaubs- und einen Zeitausgleichseintrag.
Oder in anderen Worten: Sonderzeiten werden nicht berücksichtigt.

Durchmesser-Zeichen eingeben.

Das Durchmesserzeichen kann mit Alt+0216 Ø auf dem nummerischen Block eingegeben werden.
Hinweis: Üblicherweise ist das Durchmesserzeichen bei der Erfassung der Artikelnummern deaktiviert. Es kann dies zwar in den Parametern freigeschaltet werden. Wir raten jedoch dringend davon ab, da die Artikelnummern in der Regel auch in Barcodes gedruckt werden. Diese sind in aller Regel (noch) Strichcode, welche die ganzen Sonderzeichen nicht drucken können. Einzig der QR-Code kann vermutlich auch das Durchmesserzeichen drucken. Das würde eben bedeuten, dass für dich alle Formulare die Barcode drucken auf den QR-Code umzustellen wären.

Kann man die Mandanten Nummer ändern?

In einer bestehenden Installation bei der schon Kunden, Lieferanten, Artikel, MwSt-Sätze, Belege usw. gegeben sind, ist ein, “ich ändere mal schnell die Mandantennummer” faktisch unmöglich.
Man könnte es eventuell über einen Datenexport mit reinem SQL Query versuchen, in dem man dann die ‘alt’ auf ’neu’ ändert. Wehe wenn man dann ein Feld übersehen hat, dann wird der Import krachen. Also, extreme Vorsicht.

Bei einer Lagerbuchung kommt Fehler_Abbuchung

Versucht man eine Lagerbuchung, so kommt es in sehr seltenen Fällen auch mal dazu, dass die verschiedenen Lagertabellen nicht übereinstimmen.

D.h. bucht man einen Artikel so erscheint ein schwerer Fehler.

Klickt man hier auf Details, so steht in der Fehlermeldung

class com.lp.client.frame.ExceptionLP
java.lang.Exception:
FEHLER_ABBUCHUNG_OHNE_URSPRUNGSEINTRAG_NICHT_MOEGLICHFEHLER_ABBUCHUNG_OHNE_URSPRUNGSEINTRAG_NICHT_MOEGLICH, ARTIKEL_I_ID=28248 SNR_CHNR: null ABZUBUCHENDEMENGE=384.0 MENGE_AUS_URSPRUENGEN=383.0000

Wie kann man das reparieren?

Voraussetzung ist, du kennst die Artikelnummer des Artikels den du gerade buchen wolltest, so kann über die Pflegefunktion im System dieser Fehler insofern korrigiert werden, dass der Artikel wieder bebucht weden kann.

Also:

  • Gehe auf System, unterer Reiter Pflege
  • wähle den oberen Reiter Pflege und dann
  • Prüfe Lagerstände
  • nun die zu prüfende Artikelnummer eingeben
  • Die Frage nach der Korrektur des Lagerstandes mit Ja beantworten
  • Wichtig: Danach unbedingt den Lagerstand des Artikels inkl. Chargen- und Seriennummern prüfen und gegebenenfalls richtig stellen.

1 - Technik Infos

Tipps und Tricks für die Technik / den erfahrenen Consultant

Tipps und Tricks für die Technik / den erfahrenen Consultant

Sicherung der Dokumentendatenbank

Kann man das Vacuum, genauer die Zeit für das Vacuum der Dokumentendatenbank einsparen?

Hintergrund der Überlegung ist, dass das ja nur eine reine Zuwachsdatenbank ist, aber:
Es sind da auch Tabellen enthalten, die direktz vom Jackrabitt verwendet werden, welche auch dynamische Daten beinhalten. Nur weil wir keine Dokumente löschen, bedeutet das nicht das die interne Verwaltung nicht temporäre Daten wieder löscht.

Falls das einmal ein Thema werden sollte, muss man sich das genauer ansehen. Derzeit bitte nicht aus dem Vacuum ausnehmen.

Reports

Wie findet man von den flrdrucknnnnn zum rufenden FLR?

Um von einem bestehenden flrdruck zurück zu finden, woher dieser denn aufgerufen wird, siehe: ….\kieselstein\ejb\src\com\lp\server\util\fastlanereader\service\query\QueryParameters.java

Ändern von Ressource-Lables

Grundsätzlich ist in jedem ERP wichtig, dass die benutzten Felder in ihrer Bezeichnung möglichst exakt (in einem kurzen Wort) das wiedergeben, was du / der Anwender darunter versteht. Nun gibt es, insbesondere in den Stammdaten, oft Felder die nicht benötigt werden und andererseits bräuchte man noch ein Feld für z.B. verbleibenden Rest.

Daher hier die Beschreibung wie man die Resourcen der Lables übersteuern kann.
Als Beispiel wollen wir im Artikel im Reiter Technik das Feld Raster liegend durch (den Text) verbleibender Rest übersteuern.

Beim Start des Clients werden die Übersteuerungstexte geladen. Diese stehen in der Tabelle LP_TEXT. Diese hat die Felder

D.h. wenn man in den c_token den Resourcennamen einträgt, so wird anstelle des hinterlegten, sprachabhängigen Resourcennamens, der Inhalt für c_text angezeigt. Das Ganze dann auch noch in Abhängigkeit des Mandanten und der locale (Sprache).
Das bedeutet, es stellt sich nur mehr die Frage wie findet man nun die Resource? Du kannst diese über die im Source gespeicherten message-Files heraussuchen oder über das kieselstein-ui-swing-x.x.x.jar. Da das client.jar faktisch auf jedem Rechner der Kieselstein ERP installiert hat verfügbar ist, sei es an diesem JAR erklärt:

  1. gehe in das kieselstein-ui-swing-x.x.x.jar. Windows-Anwender nutzen dafür den Totalcommander mit Strg+Page-down (Öffne das / ein Zip-File, was ein Jar immer ist)
  2. nun in der angezeigten Verzeichnisstruktur tiefer rein bis com/lp/client/res
  3. suche die Datei(en) messages.properties bzw. die Sprachvarianten davon
  4. öffne diese, nur lesend (im Totalcommander mit F3 bzw. Shift+F3)
  5. suche nach dem Wort, welches im original angezeigt wird, z.B. Raster liegend.
  6. du findest:
  7. der linke Teil (vor dem =) ohne eventueller Spaces ist der Resourcennamen. Diesen kopieren und
  8. als neue Zeile und unter c_token in die LP_Text eintragen.
  9. nun noch mandanten_c_nr und locale_c_nr ergänzen und unter c_text den übersteuerten Text (verbleibender Rest) eintragen und die Tabellenergänzung speichern.
  10. um die Änderung sofort in deinem Client wirksam werden zu lassen, gehe nun in deinen Kieselstein Client. Wenn das “geänderte” Modul offen ist dieses schließen und in die Systemsteuerung gehen. Unterer Reiter Pflege und oben auf LP_TEXT neu laden klicken und das betroffene Modul neu öffnen und die gewünschte Änderung prüfen. Solange die Resourcennamen nicht geändert werden, bleiben deine übersteuerten Texte erhalten.

Hinweis: Die Spaltenüberschriften der Tabellen (FLR) und einige andere wenige Resourcen sind im Serverteil gespeichert. D.h. diese findest du unter ??\kieselstein\dist\wildfly-12.0.0.Final\standalone\deployments\kieselstein-x.x.x.ear. Auch hier in das ear hineingehen (Strg+Page-Down) und erneut nun in das ejb-x.x.x.jar reingehen bis com\lp\server\res\. Auch hier findest du sprachabhängige messages.properties im gleichen Aufbau. Auch hier suchst du nach dem gewünschten Wort und trägst die Resource unter c_token usw. in der LP_Text ein.

Anmerkung: Dadurch ändern sich natürlich nicht die Feldnamen der Datenbankfelder. D.h. wenn du nun über einen SQL_Query (P_SQLEXECUTER) den Wert von verbleibender Rest anzeigen willst, musst du nach Raster_liegend suchen und diesen Wert verwenden.

Wo findet man welche Datenbankfelder?

welchen PGadmin kann man verwenden?

Grundsätzlich sollte der PGadmin4 erst aber Version 6.x verwendet werden. Leider gibt es hier auch Versionen die zumindest unpraktisch sind.
Ich persönlich verwende den 6.3, dem aber bereits einige praktische Kleinigkeiten fehlen.
Weiters den 6.20.
Anscheinend geht der aktuelle 7.3. auch ganz gut.
Der 6.12 geht nicht vernünftig.

Die Datenbank wächst und wächst

So wie das Kieselstein ERP Stand Juli 2023 programmiert ist, werden gültig versendete Versandaufträge doppelt abgelegt. D.h. diese sind einerseits in der Dokumentenablage und andererseits in den Versandaufträgen mit dem Status versandt in deinen ERP Daten = KIESELSTEIN gespeichert. Du siehst aber nur die Daten aus der Dokumentenablage. Damit wächst deine Datenbank, das Backup dauert immer länger usw.. Daher empfiehlt sich, einen Crone Job einzurichten, der täglich zusammenräumt. Idealerweise ist dies mit dem Backup kombiniert.
Wir konnten bei einem Mitglied die Datenbank von 8GB auf 1,6GB reduzieren, ohne Datenverlust.

2 - Importvorlagen

Eine Sammlung praktischer Importvorlagen um Massendaten ins System zu bekommen

Eine Sammlung praktischer Importvorlagen um Massendaten ins System zu bekommen.

Bitte ausschließlich bei entsprechenden System und Datenbankkenntnissen verwenden.

Einspielen von Zeitbewegungsdaten

Zeitbewegungen importieren
Hier findest du ein Musterfile für die Zeitdatenübernahme.
Üblicherweise wird vom Datenlieferanten / Anwender / Mitglied nur das erste Blatt ausgefüllt. Wichtig die Formatierung belassen (Also Personalnummer als Text und den Zeitpunkt als Datum mit Uhrzeit) An Sondertätigkeiten sind KOMMT, GEHT, UNTER, ENDE erlaubt. Die Personalnummer müssen bitte mit den Einträgen im Kieselstein übereinstimmen. Solltet ihr nur die Ausweisnummern haben, dann gerne. Dann ist die Importer Vorlage entsprechend anzupassen.

Über das zweite Blatt = Importer erhältst du ein entsprechendes Insert-Script. Unbedingt daran denken, am Schluss den Indexeintrag in der LP_PRIMARYKEY zu aktualisieren.

Kontenrahmen importieren

Um bei aktivierter integrierter Finanzbuchhaltung den Kontenrahmen importieren zu können, kannst du dies nach beiliegender Vorlage machen. Die Datei ist eine Textdatei, mit UTF8 und als Feldtrenner bitte <Tab>.
Wichtig auch, die Definitionen für die Spalten F_Kontoart, F_Ergebnisgruppe, UVA, Finanzamt müssen vorhanden sein. F_GUELTIG_VON bitte im Ansi Format (yyyy-mm-tt).
Die boolschen Felder mit 1 = angehakt und 0 = nicht angehakt besetzen.
Aufgrund des CSV Formates ist die Spaltenreihenfolge wichtig.

3 - Tipps, Abläufe

Tipps und Abläufe

Tipps und Abläufe

Eine Sammlung von Anwenderfragen, welche aus Sicht der Module keinem wirklichen Bereich zugeordnet werden kann.

Abbildung von Wartungsverträgen

Mit welchem Modul / welcher Funktion können in Kieselstein ERP Wartungsverträge verwaltet werden? Beispiel: Kunde Meier hat über mich einen Wartungsvertrag seiner Server gekauft. Es sollten das Ablaufdatum und eine grobe Beschreibung gepflegt werden.

Dafür gibt es verschiedene Ansätze, welche auch mit den sonst üblichen / bewährten Abläufen im Unternehmen zusammen hängen.

  • Monatliche / wiederkehrende Rechnungen, da ja dies solange läuft, bis der Kunde seinen Vertrag kündigt wenn das so etwas ist, wie unsere monatlichen / Quartalsweisen Subskriptionsrechnungen, dann würde ich das als Wiederholenden Auftrag anlegen mit einem Verrechnungsbeginn usw. Das bedeutet dann, dass man z.B. einmal zum Monatsbeginn im Rechnungsmodul auf Extras, Wiederholende Aufträge verrechnen klickt und automatisch die Rechnungen angelegt bekommt

  • Ist es aber eher so etwas wie Wartung, dann könnte man für jeden Vertrag einen Artikel anlegen, bei diesem im Reiter Sonstiges das Wartungsintervall hinterlegen und auch die letzte Wartung definieren. Zugleich kann man am Artikel in der Dokumentenablage die ganzen Belege und Verträge etc. hinterlegen. Und man erhält im Artikel, Journal, nächste Wartungen eine Übersicht wann man sich worum kümmern muss. Siehe.

  • Eine dritte Variante wäre das in den Angeboten abzubilden, mit einem Nachfasstermin von z.B. in einem Jahr

  • Man legt sich im Projekt einen Bereich laufende Wartungsverträge an (nach der Bereichsanlage (in den Grunddaten) das Modul neu starten) Hier hat man dann z.B. die Kategorie Server und hinterlegt da was alles vereinbart ist. Auch hier gibt es Zieltermine usw. nach denen man sortieren kann.

4 - Sortierung defekt

Sortierung defekt, wie reparieren

In sehr seltenen Fällen kommt es vor, dass die in den Bewegungsdaten enthaltene Sortierung durcheinander kommt.

Man merkt das daran, dass die Reihenfolge der Positionen mit den blauen Pfeilen nicht mehr verändert werden kann. D.h. es bleibt quasi die Sortierung stecken, kann nicht mehr weiter verschoben werden.

In anderen Fällen kommt es vor, dass bei der Übernahme in den Nachfolge-Beleg ein Serverfehler gemeldet wird .
Im Detail steht dann, ziemlich am Anfang

returns more than one elements.

Wie kann man den Sortierungsfehler reparieren

Dafür muss man in die Datenbank gehen und die Detailpositionen des jeweiligen Beleges manuell richtigstellen.

Es sei dies am Beispiel des Angebotes 24/0368 des Mandanten 001 erklärt.

  1. starten PGAdmin und als postgres mit allen Rechten anmelden
  2. Wähle deine Kieselstein Datenbank aus und die entsprechende Tabelle der Positionen der Bewegungsdaten. In unserem Beispiel wollen wir die Angebotspositionen verändern und klicken daher auf angb_angebotposition (ACHTUNG: Das Verhalten ist je nach PGAdmin Version leicht unterschiedlich)
  3. Klicke nun oben auf 2 Query Tool
  4. Führe nun eine Abfrage nur auf die Positionen dieses einen Beleges aus, in unserem Falle die Positionen des Angebotes.

select * from angb_angebotposition where angebot_i_id= (select i_id from angb_angebot where c_nr=‘24/0368’ and mandant_c_nr=‘001’);

Ergebnis:

  1. Du siehst nun in dem Ergebnis der Abfrage, dass der i_sort 2 doppelt vorhanden ist. Dies ist der Auslöser für das Fehlverhalten, die Fehlermeldungen.
  2. d.h. du gibst nun einer der Datenzeilen einen neuen I_Sort.
    Wir nutzen dafür die Logik, dass jede Datenzeile einer Tabelle immer eine eigene I_ID hat. Z.B. update angb_angebotposition set i_sort=5 where i_id=29587; Achte hier darauf wirklich nur diesen einen Datensatz zu verändern.
  3. Machst du nun obige Abfrage erneut, so ist jeder I_Sort nur einmal vorhanden.
  4. Vermutlich ist nun die Sortierung nicht ganz so wie du sie erwartest, bzw. an den Kunden gesandt hast. D.h. du gehst nun in den betroffenen Beleg und korrigierst die Sortierung wie gewünscht.
  5. Gegebenenfalls musst du den Beleg nach der Richtigstellung der tatsächlichen Sortierung noch aktivieren.