Skip to content
This repository has been archived by the owner on Nov 9, 2020. It is now read-only.

Modul ERP DE

Stefan Haslinger edited this page Feb 23, 2015 · 22 revisions

Das Modul ist imlementiert als Rubygem in Form einer Rails Engine: mercator_mesonic
Es implementiert eine Schnittstelle in des ERP-System von Mesonic.

Voraussetzungen

  • Mesonic ERP Datenbank
  • Als Datenbank Microsoft SQL Server (ab Version 2005)
  • WEBARTIKEL-View ist angelegt
  • FreeTDS stellt den Datenbankadapter für MSSQL Server bereit
    sudo apt-get install freetds-dev freetds-bin tdsodbc unixodbc unixodbc-dev

Da das Mesonic ERP nicht über eine API verfügt, greifen wir direkt auf die Microsoft SQL Server Datenbank zu.

Funktionen

  • Bestellungen werden nach Abschluss bzw. bei erfolgreicher Bezahlung in das ERP-System als Web-Bestellungen übergeleitet.
  • User in Mercator werden als Interessenten in Mesonic angelegt, und zwar inklusive Kontenstamm, Kontaktestamm, Kontenstamm für Fakturen, Kontenstamm für Finanzbuchhaltung, Rechnungsadresse
  • Diese Daten werden auch bei Stammdatenänderung in Mercator in Mesonic aktualisiert.
  • Kundennummern und Kundengruppe in Mesonic werden zu Usern in Mercator übertragen, um eine benutzerspezifische Preisfindung zu ermöglichen.
  • Deaktivieren veralteter Produkte in Mercator
  • rudimentäres Anlegen von Produktkategorien und Produkten
  • Anlegen von Inventaren und benutzerunspezifischen Preisen per Job
  • Ermittlung benutzer- und benutzergruppenspezifischer Preise in Echtzeit
  • Zuordnen neuer Produkte zu Kategorien
  • Rechnungsadressimport aus Mesonic
  • Darstellung eines Reports über den Status der Fakturen, der offenen Lieferungen und der offenen Zahlungen (die nicht aus dem E-Payment stammen)

Tasks und Jobs

  • rake mesonic:users:update_erp_account_nrs RAILS_ENV=ENVIRONMENT – Aktualisiert ERP Account Nummern aus Mesonic in die Mercator Datenbank
  • rake mesonic:addresses:import RAILS_ENV=ENVIRONMENT – Import der Rechnungsadressen und Lieferadressen aus Mesonic nach Mercator
  • rake webartikel:import RAILS_ENV=ENVIRONMENT – Import der Produkte (einzelne Schritte: siehe unten)
  • bundle exec rake webartikel:update RAILS_ENV=ENVIRONMENT – Update der Produkte (einzelne Schritte: siehe unten)
  • rake webartikel:remove_orphans RAILS_ENV=ENVIRONMENT – Löscht verwaiste Produkte
  • rake webartikel:show_differences RAILS_ENV=ENVIRONMENT – Zeigt Unterschiede zwischen Produkten im Webartikel View
  • rake webartikel:test_connection RAILS_ENV=production – Testet die Datenbankverbindung zum Mesonic System (genauer: zählt die Anzahl der Einträge im Webartikel View am Microsoft SQL Server)

Ein täglicher Cronjob für die Produktaktualisierung kann derart eingerichtet werden:

30 4 * * * /bin/bash -l -c 'cd /PATH/TO/mercator && RAILS_ENV=production bundle exec rake webartikel:update --silent >> /PATH/TO/mercator/log/cron.log 2>&1'

Schritte des Produkt – Importjobs

  1. Testet die Datenbankverbindung
    • Methode: MercatorMesonic::Webartikel.test_connection
    • 5 Mal wird versucht, den MSSQL Server zu erreichen
  2. Aktualisiert aus dem Webartikel View
    • Methode: MercatorMesonic::Webartikel.import(update: "changed")
    • Diese Methode verwendet den User mit Familiennamen “Job User”.
    • Aktualisiert werden alle Webartikel Änderungen seit der letzen Änderung eines Inventars, wengistens aber 24 Stunden.
  3. Alte Inventare werden gelöscht (Preise werden automatisch mitgelöscht)
  4. Empfehlungen werden gelöscht
  5. Kategorisierung zu Neuheiten, Angebote und Topseller werden gelöscht
  6. Produkt wird gegebenenfalle reaktivert
  7. Produkt wird gegebenenfalls erstellt
  8. Inventar zum Produkt wird erstellt (je eines pro Webartikel Eintrag)
  9. Topseller Flag wird gesetzt und Kategorisierung Topseller erstellt wenn Kennzeichen = T
  10. Topseller Flag wird gegebenenfalls gelöscht und Kategorisierung Topseller gelöscht
  11. Neuheiten Flag wird gesetzt und Kategorisierung Neuheiten erstellt wenn Kennzeichen = N
  12. Neuheiten Flag wird gegebenenfalls gelöscht und Kategorisierung Neuheiten gelöscht
  13. Kategorisierung Angebote wird erstellt, wenn Preisdaten vorhanden und jetzt gültig
  14. Kategorisierung Angebote wird gegebenenfalls gelöscht
  15. Preis wird erstellt
  16. Empfehlung wird angelegt, wenn Notizfeld gefüllt
  17. verwaiste Inventare werden gelöscht
    • Methode: self.remove_orphans(only_old: true)
    • Das sind Inventare, zu denen es keinen Eintrag im Webartikel View mehr gibt (Preise werden automatisch mitgelöscht).
    • Zur Beschleunigung werden nur jene Inventare angesehen, die nicht gerade importiert worden sind (flag: just_imorted)
    • Flag just_imported wird für alle Inventare gelöscht
  18. Produkte werden gegebenenfalls “veraltet” gesetzt
    • Methode: ::Product.deprecate
    • Das betrifft Podukte, die Status neu oder aktiv haben, aber zu denen es kein Inventar gibt.
  19. Kategorien werden in Suchmaschine reindiziert
    • Methode: ::Category.reindexing_and_filter_updates
    • Eigenschaften und Eigenchaftengruppen für Filter werden neu ermittelt (→ dieser Job sollte nach dem Icecat Job laufen)
    • Maximal- und Minimalpreis für Filter werden neu ermittelt aus allen Preisen aller Produkte dieser Kategorie

Produkte landen durch diesen Job nicht in “verwaiste Produkte”, das ist ein anderer Task, der Produkte aufnimmt, die in keiner Kategorie mehr zugeordnet sind.

Ein täglicher Cronjob für die Aktualisierung der Kundennummern aus dem ERP kann derart eingerichtet werden:

30 4 * * *  /bin/bash -l -c 'cd /PATH/TO/mercator && RAILS_ENV=production bundle exec rake mesonic:users:update_erp_account_nrs --silent >> /PATH/TO/mercator/log/cron.log 2>&1'