Vor ungefähr einem Jahr haben wir eine Open Source und kostenlose Plattform für die Entwicklung von Geschäftsanwendungen lsFusion veröffentlicht . Zunächst haben wir uns auf Entwickler konzentriert, die schnell und einfach verschiedene Informationssysteme darauf erstellen können. Trotzdem bleibt die Entwicklung eines Managementsystems von Grund auf, selbst für ein kleines Unternehmen, ein ziemlich mühsamer Prozess.
Aus diesem Grund haben wir uns entschlossen, eine Basislösung namens MyCompany zu entwickeln , die die grundlegenden Geschäftsprozesse kleiner Unternehmen implementiert. Es ist völlig kostenlos, unter der Apache-Lizenz veröffentlicht und die Quelle ist auf Github . Die Lösung ist einfach zu installieren und unterstützt die russische Gesetzgebung.
PostgreSQL wird als Datenbankverwaltungssystem verwendet . Auf dem Server wird die Lösung als Java-Anwendung installiert und gestartet, die aus einem Anwendungsserver und einer Webanwendung besteht, auf der Apache Tomcat ausgeführt wird . Sowohl die Weboberfläche als auch der über Java Web Start gestartete Desktop-Client können als GUI verwendet werden.
Funktionell
Eine Demoversion mit ausgefüllten Daten kann unter https://demo.lsfusion.org/mycompany-ru eingesehen werden . Die Autorisierung für den angegebenen Link ist deaktiviert.
Als Grundlage diente die Logik der weltberühmten Lösung Odoo . Leider sind nicht alle darin implementierten Ansätze für die Verwendung in der russischen Realität gut geeignet. Daher mussten einige der Prozesse entsprechend unserer eigenen Erfahrung und anderen gängigen Anwendungen geändert werden. Trotzdem ist die Logik von "MyCompany" den Weltstandards viel näher als der Logik von 1C. Es hat auch Englisch Lokalisierung (mit der Möglichkeit, jede andere Sprache hinzuzufügen).
Derzeit fehlt der Lösung die Implementierung von regulatorischer Berichterstattung (Buchhaltung) und Gehaltsabrechnung. In dieser Nische auf dem Territorium der Russischen Föderation sind die Positionen von Lösungen auf der 1C-Plattform historisch stark, und der Buchhalter ist ein sehr konservativer Benutzer. Aus diesem Grund sollen in der ersten Phase die erforderlichen Daten in das Buchhaltungssystem hochgeladen werden, und die Lösung selbst wird zur Verwaltung des Management Accounting verwendet.
"MyCompany" hat eine modulare Architektur und besteht aus sieben großen Blöcken: Die
Verarbeitung der meisten Dokumente im System basiert auf dem Prinzip der Statusübergabe. Bei Erreichen bestimmter Status werden die entsprechenden Daten in der Buchhaltung geändert und zusätzliche Spalten und Aktionen hinzugefügt.
Referenzen (Stammdaten)
Das System enthält die grundlegenden Verzeichnisse, die für die Arbeit mit Gegenparteien erforderlich sind, sowie die Nomenklatur der Waren.
Gegenparteien werden in zwei Typen unterteilt: juristische Personen und Einzelpersonen. Jeder kann der Organisation zugeordnet werden, in der er arbeitet. Unterstützt die Führung mehrerer eigener Unternehmen.
Sowohl Waren als auch Dienstleistungen können als Nomenklatur verwendet werden. Sie können an Kategorien gebunden werden, die einen dynamischen Tiefenbaum bilden. Für jede Kategorie können Sie angeben, welche Attribute für das gesamte darin enthaltene Element festgelegt werden können und sollen. Sie können auch angeben, wie ein allgemeiner Name basierend auf Attributwerten generiert werden soll. Für jeden Artikel können Sie seine Sorten einstellen.
Es ist möglich, Daten von juristischen Personen automatisch über die von DaData bereitgestellte API zu laden .
Lager (Inventar)
Dieser Block implementiert die Logik der Lagerabrechnung mit der Berechnung der Salden nach Lagerorten. Speicherorte können hierarchisch sein. Mitarbeitern des Unternehmens kann nur Zugriff auf bestimmte Lagerorte gewährt werden.
Unterstützt die Berechnung der Saldenkosten zu festen und durchschnittlichen Kosten sowie nach der FIFO-Methode. Die Berechnungsmethode kann je nach Warenkategorie unterschiedlich gewählt werden.
Die Hauptnutzer dieses Moduls sind Lagerarbeiter, die ausschließlich mit quantitativen Merkmalen arbeiten.
Es werden vier Haupttypen von Dokumenten unterstützt:
- Annahme. Registriert die Annahme von Waren im Lager. Unterstützt die Logik der erwarteten und empfangenen Mengen sowie den Status des Empfangs- und Platzierungsprozesses.
- Sendung. Reflektiert den Verbrauch aus dem Lager und die Bewegung zwischen den Lagern. Darüber hinaus reserviert es die Waren im Lager auf einem bestimmten Status.
- Abschreiben. Reflektiert die Abschreibung von Waren aus dem Lager.
- Inventar. Registriert die Entdeckung oder den Verlust von Waren im Lager. Die Bestandsaufnahme kann vollständig am Lagerort, in der ausgewählten Kategorie oder bei bestimmten Waren durchgeführt werden.
Implementierung einer Stück-für-Stück-Buchhaltung und Integration mit Honesty Znak im Hinblick auf das Erhalten von Kontrollmarken, das Übertragen und Empfangen von Dokumenten an / von GIS MT.
Berechnungen (Fakturierung)
Dieser Block implementiert die Logik zum Registrieren eingehender und ausgehender Rechnungen und Zahlungen. Die Logik der Kommunikation zwischen eingehenden und ausgehenden Dokumenten wird bei der Berechnung der Schulden für ein Dokument und Gegenparteien unterstützt. Die Möglichkeit, die Kosten für Dienstleistungen auf verschiedene Weise auf die Kosten für Waren zu buchen, wurde umgesetzt.
Es werden vier Haupttypen von Dokumenten unterstützt:
- Kassenbon. Registriert eine eingehende Rechnung oder einen Abschlussakt für Waren oder Dienstleistungen. Basierend auf diesem Dokument kann ein Einlagerungsdokument automatisch oder manuell generiert werden.
- Implementierung. Registriert eine ausgehende Rechnung oder ein Abschlusszertifikat für Waren oder Dienstleistungen. Basierend auf diesem Dokument kann ein Lagerversandbeleg automatisch oder manuell generiert werden.
- Eingehende Zahlungen. Reflektiert den Eingang von Geldern an den Kassierer oder auf das Girokonto.
- Ausgehende Zahlungen. Spiegelt die Kosten des Geldes von der Kasse oder vom Girokonto wider.
Die Druckformen UPD, TORG-12 und TORG-13 wurden implementiert.
Kauf
Der Block implementiert die Logik von Bestellungen für Waren und Dienstleistungen von einem Lieferanten. Unterstützt die Möglichkeit, Lieferantenpreislisten mit anschließender automatischer Ersetzung der Preise in der Bestellung zu registrieren.
Die Bestellung durchläuft mehrere Status, in denen sie automatisch per E-Mail an den Lieferanten gesendet werden kann. Die bestätigte Bestellung generiert automatisch einen geplanten Wareneingang, der dann vom Ladenbesitzer bearbeitet wird. Nachdem die Waren angenommen wurden, erstellt der Buchhalter einen Belegbeleg basierend auf der akzeptierten Menge.
Der Umsatz
Dieser Block implementiert die Funktionalität zum Registrieren von Kundenaufträgen und zum Generieren von Verkaufspreisen.
Es wurde die Möglichkeit implementiert, verschiedene Arten von Preisen festzulegen, die dann mit Kunden oder Arten von Bestellungen verknüpft werden. Die Preise für jeden Typ werden anhand von Preislistendokumenten mit unterschiedlichen Gültigkeitszeiträumen festgelegt. Die Bildung gedruckter Formen von Preislisten und Preisschildern wird unterstützt.
Rabatte können für verschiedene Arten von Preisen festgelegt werden, die automatisch oder manuell berechnet werden, wenn Bestellungen oder Verkaufsbelege aufgegeben werden (auch im POS).
Die Bestellung des Käufers durchläuft auch mehrere Status mit der Möglichkeit, eine Bestellbestätigung an den Käufer zu senden. In diesem Fall wird automatisch ein Beleg für den Warensand erstellt, der anschließend vom Lagermitarbeiter ausgeführt wird. Der Buchhalter kann dann basierend auf der versendeten Menge einen Verkaufsbeleg erstellen.
Einzelhandel
Dieser Block implementiert die Funktionalität für den Einzelhandel mit Waren und Dienstleistungen.
Das Hauptelement des Pakets ist das POS-Formular, das für den Einzelhandel und die Rücksendung von Waren verwendet wird. Die Möglichkeit, Schichten zu öffnen und zu schließen, Geld einzuzahlen und abzuheben, wird unterstützt. Die Integration mit dem ATOL-Steuerregister über einen Webserver wurde implementiert.
An das System können mehrere Kassen angeschlossen werden, die sowohl für eine als auch für verschiedene Verkaufsstellen konfiguriert sind.
Alle Schecks werden als Verkaufsbelege gebucht und spiegeln automatisch alle Änderungen in der Buchhaltung wider. Schecks können basierend auf Kundenaufträgen generiert werden.
Herstellung
Dieser Block implementiert die Fähigkeit, die Produktion von Produkten und Abschreibungen von Rohstoffen für ihn bei der Berechnung der Kosten zu berücksichtigen.
Rohstoffe werden auf der Grundlage von Produktionsaufträgen hergestellt und entsorgt. Mit ihrer Hilfe ist es möglich, sowohl die Produktion als auch die Demontage (Demontage) von Fertigprodukten zu registrieren. Automatische Berechnung der Menge an Produkten, Abfällen und Rohstoffen basierend auf den eingegebenen Spezifikationen implementiert. Die Erstellung von Spezifikationen wird unterstützt, wobei deren "Verschachtelung" ineinander berücksichtigt wird. Die Möglichkeit, Fertigungsaufträge basierend auf Kundenaufträgen automatisch zu erstellen, wurde implementiert.
Installation
Zur Installation der Lösung benötigen Sie einen Server, auf dem ein Linux- oder Windows-Betriebssystem mit einer Internetverbindung ausgeführt wird.
Es muss mindestens 2 Gigabyte RAM haben, Port 8080 für den Webclient und Port 7652 für den Desktopclient müssen geöffnet sein.
Linux
Schauen wir uns die Installation von MyCompany am Beispiel von Befehlen für einen Server an, auf dem CentOS 7 ausgeführt wird und der mit Root-Superuser-Rechten ausgeführt wird.
Installieren Sie die lsFusion-Plattform:
root@centos7: localectl set-locale LANG=ru_RU.UTF-8
root@centos7: source <(curl -s https://download.lsfusion.org/yum/install-lsfusion4)
Installieren Sie die MyCompany-Konfiguration:
root@centos7: yum install -y wget
root@centos7: wget http://download.lsfusion.org/solutions/mycompany-1.0.jar -O /var/lib/lsfusion/mycompany.jar
root@centos7: echo "logics.topModule = MyCompanyRu" >> /etc/lsfusion4-server/settings.properties
Starten Sie den lsFusion-Serverdienst neu:
root@centos7: systemctl stop lsfusion4-server root@centos7: systemctl start lsfusion4-server
Der Startvorgang des Anwendungsservers kann im Protokoll /var/log/lsfusion4-server/start.log überwacht werden.
Windows
Laden Sie das Server- und Client-Installationsprogramm über den folgenden Link herunter und führen Sie es aus: 64-Bit-Betriebssystem , 32-Bit-Betriebssystem .
Belassen Sie alle Parameter als Standard. Legen Sie ggf. Kennwörter fest.
Laden Sie die neueste Version von MyCompany über den Link herunter und speichern Sie sie im Ordner server lib. (Standardmäßig - C: \ Programme \ lsFusion 4 \ Server \ lib)
Starten Sie den lsFusion Server-Dienst neu.
Datenmigration
Die Lösung verfügt über einen einfachen Mechanismus zum Laden von Anfangsdaten über Excel-Dateien. Um Verzeichnisse und andere Objekte zu importieren, gehen Sie einfach zu Administration / Migration. Für jeden Verzeichnistyp gibt es eine separate Schaltfläche, die eine Vorlage im XLSX-Format generiert, aus der Sie dann Daten aus dem alten System laden können.
Raffinesse
Die Logik der Lösung wird verfeinert, indem Änderungen am Quellcode in der internen Sprache der lsFusion- Plattform vorgenommen werden . Auf einem Produktionsserver können Sie dazu neue Module hinzufügen, indem Sie Dateien in den Ordner / var / lib / lsfusion kopieren.
Für eine schnelle und einfache Entwicklung wird empfohlen, ein lokales Distributionskit zu installieren , das IntelliJ IDEA Community Edition zusammen mit einem vorinstallierten Plugin sowie eine Clientanwendung in Form eines Webservers enthält. Während der Installation ist es nicht erforderlich, die Serverseite zu installieren, da die erforderlichen Bibliotheken automatisch mit Maven geladen werden. Dann müssen Sie in IDEA Get from Version Control / Github ausführen und github.com/lsfusion-solutions/mycompany.git eingeben ... Danach müssen Sie den Start des Servers über Konfigurationen bearbeiten / + / lsFusion Server konfigurieren. Nach Änderungen am Quellcode müssen Sie den Anwendungsserver neu starten.
Um die JAR-Datei unter Berücksichtigung der vorgenommenen Änderungen zu erstellen, müssen Sie die Artefakt-Assembly konfigurieren. Das zusammengestellte Artefakt muss in den Ordner / var / lib / lsfusion anstelle der ursprünglichen JAR-Datei der MyCompany-Lösung kopiert werden.
Es besteht die Möglichkeit, die grundlegende MyCompany-Lösung über Maven zu verbinden. Der Vorteil dieses Ansatzes besteht darin, dass Sie beim Upgrade von der Basislösung keine „überlappenden“ Quellcodeänderungen zusammenführen müssen. Der Nachteil ist die Unfähigkeit, Änderungen am Quellcode der Basislösung vorzunehmen.
Um die MyCompany-Lösung über Maven zu verbinden, müssen Sie die folgenden Parameter in der Datei pom.xml registrieren:
<repositories>
|
Um die Transparenz der Verbesserungen zu erhöhen und das Zusammenführen von Code zu vermeiden, wird empfohlen, separaten Modulen neue Funktionen hinzuzufügen.
Beispiel:
Angenommen, Sie möchten Ihrer Anwendungslogik die Möglichkeit hinzufügen, ein Kreditlimit für einen Kunden festzulegen.
Zuerst erstellen wir ein neues DebtLimit-Modul:
MODULE DebtLimit;
|
Dann gehen wir zur Benutzeroberfläche unter dem Administrator und bewegen den Mauszeiger über den Titel des Feldes mit der Schuld des Käufers:
Wir sehen, dass die berechnete Eigenschaft, die die Schuld berechnet, im DebtPartner-Modul deklariert wird und mit dem einzigen Parameter Partner Schulden heißt . Im neuen Modul verbinden wir dieses Modul, damit Sie auf seine Eigenschaften zugreifen können:
REQUIRE DebtPartner;
|
Erstellen Sie ein neues Eigenschaftskreditlimit für die Gegenpartei, in das der Benutzer einen Wert eingeben und ihn im Bearbeitungsformular der Gegenpartei des Partners im headerRight-Container platzieren kann:
debtLimit ' ' = DATA NUMERIC[14,2] (Partner);
|
Schließlich fügen wir eine Einschränkung hinzu, die überprüft, ob die Schulden zu einem bestimmten Zeitpunkt das Kreditlimit für diesen Käufer nicht überschreiten dürfen:
CONSTRAINT debt(Partner p) > debtLimit(p) MESSAGE ' ';
|
Es bleibt dieses Modul mit dem Projekt zu verbinden. Erstellen wir ein neues RogaIKopyta-Modul und schreiben es in die Datei settings.properties:
logics.topModule = RogaIKopyta
|
Beim Starten des Anwendungsservers werden nur die Module verbunden, von denen das RogaIKopyta-Modul abhängt (auch rekursiv). Dementsprechend verbinden wir das von uns erstellte Modul und MyCompanyRu aus der Basislösung, in der alle Hauptmodule verbunden sind, sowie die russische Lokalisierung:
MODULE RogaIKopyta;
|
Um diese Änderungen auf dem Produktionsserver zu installieren, müssen Sie entweder wie oben beschrieben Artefakte erstellen oder einfach zwei Dateien mit den Modulen RogaIKopyta und DebtLimit in den Ordner / var / lib / lsfusion kopieren. Denken Sie auch daran, die Datei logics.topModule auf dem Produktionsserver zu ändern. Nach den Änderungen müssen Sie den Application Server-Dienst neu starten.
Unterstützung und Entwicklung
Die MyCompany-Lösung wird von der belarussischen Firma LuxSoft entwickelt . Es besteht seit über 20 Jahren und ist führend auf dem großen Markt für Einzelhandelsautomatisierung in Belarus. Fünf der acht größten Einzelhandelsketten in Belarus nutzen ihre ERP- Lösung lsFusion , um ihr Kerngeschäft zu automatisieren.
Dank der Verwendung von Java-Technologien können Sie problemlos verschiedene vorgefertigte Bibliotheken für alle Arten von Integrationen mit externen Systemen und anderen Aktionen auf niedriger Ebene verbinden. Die einfache Entwicklung wird durch die Verwendung einer der besten IDEs der Welt sichergestellt - IntelliJ IDEA (Community Edition) .
Der Hauptzweck der Entwicklung einer Lösung MyCompany soll die Open-Source-Bewegung unterstützen und die lsFusion-Plattform bekannt machen. Die Lösung wird durch den Verkauf und Support kommerzieller Systeme auf Basis der Plattform in Belarus finanziert.
Zum Zeitpunkt dieses Schreibens wurden die Grundfunktionen implementiert, die unserer Meinung nach für ein Produkt mit minimaler Lebensfähigkeit erforderlich sind. Die Weiterentwicklung erfolgt auf Basis der Benutzeranforderungen. Vorschläge zur Fertigstellung der Lösung können in Form von Problemen mit Github erstellt werden. Fragen zur Lösung können auch in unserem Slack-Kanal gestellt werden .
Wir sind bereit, Verbesserungen umzusetzen und Support zu leisten, auch auf kommerzieller Basis. Gleichzeitig werden wir in jeder Hinsicht diejenigen unterstützen, die dies selbst tun oder Dienstleistungen für Dritte erbringen möchten. Mit der Apache-Lösungslizenz und der LGPL-Plattformlizenz können Sie sogar eine darauf basierende Lösung unter Ihrem eigenen Markennamen entwickeln und verkaufen.
Die modulare Architektur ermöglicht es, separat steckbare Open Source- und kommerzielle Module zu erstellen, die die Kernfunktionalität der Lösung erweitern. Mit Maven können Sie separate Bibliotheken erstellen und mit einer bestimmten Logik verknüpfen und daraus eine vorgefertigte Lösung erstellen.
Nach unserer Erfahrung erfordert die Entwicklung auf lsFusion erheblich weniger Aufwand und Fähigkeiten als die Entwicklung auf derselben 1C-Plattform. Es ist nicht erforderlich, Abfragen manuell zu schreiben, die Client-Server-Interaktion zu verwalten und viele andere technische Aspekte zu berücksichtigen. Jeder 1C-Programmierer kann die Entwicklung auf der Plattform schnell beherrschen und Support-Services für die MyCompany-Lösung bereitstellen. Gleichzeitig gibt es in unserem Unternehmen viele Mitarbeiter, die keine Entwicklungserfahrung mit irgendetwas hatten und gelernt haben, problemlos auf der lsFusion-Plattform zu programmieren. Die meisten fortgeschrittenen Excel-Benutzer, die in der Lage sind, komplexe Formeln darin zu erstellen, sowie SQL-Programmierer können die grundlegenden Mechanismen der Plattform für die Selbstentwicklung der MyCompany-Lösung problemlos beherrschen.
Unternehmen wiederum können verschiedene Lizenzen (1C, Windows, Microsoft SQL Server) einsparen und gleichzeitig eine schnelle und moderne Lösung erhalten.
Fazit
Die Hauptvorteile von MyCompany gegenüber ihren Kollegen auf dem russischen Markt:
- Frei und offen. Keine Lizenzbedingungen, Abonnements, Benutzereinschränkungen, Zahlungen, HASP-Schlüssel und andere Unannehmlichkeiten.
- Geschwindigkeit und Benutzerfreundlichkeit. Im Gegensatz zu Lösungen, die auf 1C basieren, arbeitet die Weboberfläche so schnell, dass sie auch in einem mobilen Browser hervorragend funktioniert. Zehntausende von Datensätzen können zu Dokumenten hinzugefügt werden, was zu keiner wesentlichen Verlangsamung während der Arbeit führt. In absolut jeder Tabelle in jedem Formular sind viele Analyse- und Navigationsfunktionen integriert .
- . lsFusion, - 1.