MyCompany est une solution gratuite et open source pour les petites entreprises





Il y a environ un an, nous avons lancé une plate-forme open source et gratuite pour le développement d'applications métier lsFusion . Tout d'abord, nous nous sommes concentrés sur les développeurs qui peuvent créer rapidement et facilement différents systèmes d'information dessus. Néanmoins, le développement d'un système de gestion à partir de zéro, même pour une petite entreprise, reste un processus assez laborieux.



Pour cette raison, nous avons décidé de créer une solution de base appelée MyCompany qui implémente les processus métier de base des petites entreprises. C'est entièrement gratuit, publié sous la licence Apache, et la source est sur Github . La solution est facile à installer et prend en charge la législation russe.



PostgreSQL est utilisé comme système de gestion de base de données . Sur le serveur, la solution est installée et lancée en tant qu'application Java composée d'un serveur d'applications et d'une application Web exécutant Apache Tomcat . L'interface Web et le client de bureau lancé via Java Web Start peuvent être utilisés comme une interface graphique.



Fonctionnel



Une version de démonstration avec des données remplies peut être consultée sur https://demo.lsfusion.org/mycompany-ru . L'autorisation pour le lien spécifié est désactivée.



image



Comme base, la logique a été prise, posée dans la solution mondialement connue - Odoo . Malheureusement, toutes les approches mises en œuvre ne sont pas adaptées aux réalités russes. Par conséquent, certains des processus ont dû être modifiés en fonction de notre propre expérience et d'autres applications populaires. Malgré cela, la logique de «MyCompany» est bien plus proche des standards mondiaux que de la logique de 1C. Il a également une localisation en anglais (avec la possibilité d'ajouter n'importe quelle autre langue).



Pour le moment, la solution manque de mise en place de reporting réglementaire (comptabilité) et de paie. Dans ce créneau sur le territoire de la Fédération de Russie, les positions des solutions sur la plateforme 1C sont historiquement fortes, et le comptable est des utilisateurs très conservateurs. Pour cette raison, à la première étape, il est censé télécharger les données nécessaires dans le système comptable, et la solution elle-même est utilisée pour maintenir la comptabilité de gestion.



"MyCompany" a une architecture modulaire et se compose de sept grands blocs: Le



image



traitement de la plupart des documents dans le système est basé sur le principe du passage des statuts. Une fois certains statuts atteints, les données correspondantes dans la comptabilité sont modifiées et des colonnes et des actions supplémentaires peuvent être ajoutées.



Références (données de base)



Le système contient les répertoires de base nécessaires pour travailler avec les contreparties et la nomenclature des marchandises.



Les contreparties sont divisées en deux types: les personnes morales et les personnes physiques. N'importe qui peut être rattaché à l'organisation dans laquelle il travaille. Prend en charge la gestion de plusieurs entreprises propres.



Les biens et les services peuvent être utilisés comme nomenclature. Ils peuvent être liés à des catégories qui forment un arbre de profondeur dynamique. Pour chaque catégorie, vous pouvez spécifier quels attributs peuvent et doivent être définis pour l'ensemble de l'élément qui y est inclus. Vous pouvez également spécifier comment générer un nom commun basé sur les valeurs d'attribut. Pour tout élément, vous pouvez définir ses variétés.



Il est possible de charger automatiquement les données des personnes morales via l'API fournie par DaData .



Inventaire d'entrepôt)



Ce bloc implémente la logique de la comptabilité magasin avec le calcul des soldes par magasin. Les emplacements de stockage peuvent être hiérarchiques. Les employés de l'entreprise ne peuvent avoir accès qu'à des emplacements de stockage spécifiques.



Prend en charge le calcul du coût des soldes à un coût fixe et moyen, ainsi que par la méthode FIFO. La méthode de calcul peut être choisie différemment selon la catégorie de marchandises.



Les principaux utilisateurs de ce module sont les magasiniers qui travaillent exclusivement avec des caractéristiques quantitatives.



Quatre principaux types de documents sont pris en charge:



  • Acceptation. Enregistre l'acceptation des marchandises à l'entrepôt. Prend en charge la logique des quantités attendues et reçues, ainsi que les statuts du processus de réception et de placement.
  • Expédition. Reflète la consommation de l'entrepôt et les mouvements entre les entrepôts. De plus, il réserve les marchandises dans l'entrepôt sur un certain statut.
  • Écrire. Reflète la radiation des marchandises de l'entrepôt.
  • Inventaire. Enregistre la découverte ou la perte de marchandises dans l'entrepôt. L'inventaire peut être entièrement réalisé sur le lieu de stockage, la catégorie sélectionnée ou des marchandises spécifiques.




Mise en œuvre de la comptabilité pièce par pièce et de l'intégration avec Honesty Znak en termes d'obtention de marques de contrôle, de transfert et de réception de documents vers / depuis GIS MT.



Calculs (facturation)



Ce bloc implémente la logique d'enregistrement des factures et des paiements entrants et sortants. La logique de communication entre les documents entrants et sortants est prise en charge pour le calcul des dettes d'un document et des contreparties. La possibilité de comptabiliser le coût des services sur le coût des biens de diverses manières a été mise en œuvre.



Quatre principaux types de documents sont pris en charge:



  • Le reçu. Enregistre une facture entrante ou un acte d'achèvement pour des biens ou des services. Sur la base de ce document, un document de mise en stock peut être généré automatiquement ou manuellement.
  • La mise en oeuvre. Enregistre une facture sortante ou un certificat d'achèvement pour des biens ou des services. Sur la base de ce document, un document d'expédition entrepôt peut être généré automatiquement ou manuellement.
  • Paiements entrants. Reflète la réception des fonds à la caisse ou au compte courant.
  • Paiements sortants. Reflète la dépense des fonds de la caisse ou du compte courant.




Les formulaires d'impression UPD, TORG-12 et TORG-13 ont été mis en œuvre.



achat



Le bloc implémente la logique des commandes de biens et services d'un fournisseur. Prend en charge la possibilité d'enregistrer les listes de prix des fournisseurs avec substitution automatique des prix dans la commande.



La commande passe par plusieurs statuts, au cours desquels elle peut être automatiquement envoyée au fournisseur par email. La commande confirmée génère automatiquement une entrée de marchandises planifiée, qui est ensuite traitée par le magasinier. Une fois les marchandises acceptées, le comptable crée un document de réception basé sur la quantité acceptée.



Ventes



Ce bloc implémente la fonctionnalité d'enregistrement des commandes clients et de génération des prix de vente.



La possibilité de fixer plusieurs types de prix a été mise en place, qui sont ensuite liés aux clients ou aux types de commandes. Les prix de chaque type sont définis à l'aide de documents tarifaires avec des périodes de validité différentes. La formation de formulaires imprimés de listes de prix et d'étiquettes de prix est prise en charge.



Des remises peuvent être définies pour différents types de prix, qui seront calculés automatiquement ou manuellement lors de la passation de commandes ou de documents de vente (y compris dans le PDV).



La commande de l'acheteur passe également par plusieurs statuts avec la possibilité d'envoyer une confirmation de commande à l'acheteur. Dans ce cas, un document est automatiquement créé pour l'expédition de marchandises, qui est ensuite exécuté par le magasinier. Le comptable peut ensuite créer un document de vente en fonction de la quantité expédiée.



Vente au détail



Ce bloc implémente la fonctionnalité pour le commerce de détail de biens et services.



L'élément principal de l'emballage est le formulaire POS, qui est utilisé pour la vente au détail et le retour des marchandises. La possibilité d'ouvrir et de fermer des quarts de travail, de déposer et de retirer de l'argent est prise en charge. L'intégration avec le registraire fiscal ATOL via un serveur Web a été mise en œuvre.



Plusieurs caisses peuvent être connectées au système, configurées à la fois pour un et pour différents points de vente.



Tous les chèques sont enregistrés comme documents de vente, reflétant automatiquement tous les changements de comptabilité. Les chèques peuvent être générés en fonction des commandes client.



Fabrication



Ce bloc met en œuvre la capacité de prendre en compte la production de produits et les radiations de matières premières pour celui-ci avec le calcul du coût.



Les matières premières sont produites et éliminées en fonction des ordres de fabrication. Avec leur aide, il est possible d'enregistrer à la fois la production et le démontage (démontage) des produits finis. Mise en place d'un calcul automatique de la quantité de produits, de déchets et de matières premières en fonction des spécifications saisies. La création de spécifications est prise en charge, en tenant compte de leur «imbrication» les unes dans les autres. La possibilité de créer automatiquement des ordres de fabrication en fonction des commandes client a été mise en œuvre.



Installation



Pour installer la solution, vous avez besoin d'un serveur exécutant un système d'exploitation Linux ou Windows avec une connexion Internet.

Il doit avoir au moins 2 gigaoctets de RAM, le port 8080 pour le client Web et le port 7652 pour le client de bureau doivent être ouverts.



Linux



Regardons l'installation de MyCompany en utilisant l'exemple de commandes pour un serveur exécutant CentOS 7, exécutées avec les droits de superutilisateur root.



Installez la plateforme lsFusion:

root@centos7: localectl set-locale LANG=ru_RU.UTF-8
root@centos7: source <(curl -s https://download.lsfusion.org/yum/install-lsfusion4)
      
      





Installez la configuration de MyCompany:

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
      
      





Redémarrez le service serveur lsFusion:

root@centos7: systemctl stop lsfusion4-server
root@centos7: systemctl start lsfusion4-server
      
      







Le processus de démarrage du serveur d'applications peut être surveillé dans le journal /var/log/lsfusion4-server/start.log.



les fenêtres



Téléchargez et exécutez le serveur et installation du client à partir du lien: 64-bit OS , 32 bits OS .

Laissez tous les paramètres par défaut. Si nécessaire, définissez des mots de passe.



Téléchargez la dernière version de MyCompany à partir du lien et enregistrez-les dans le dossier lib du serveur. (par défaut - C: \ Program Files \ lsFusion 4 \ Server \ lib)

Redémarrez le service lsFusion Server.

image



Migration de données



La solution dispose d'un mécanisme simple pour charger les données initiales via des fichiers Excel. Pour importer des répertoires et d'autres objets, allez simplement dans Administration / Migration. Pour chaque type de répertoire, il existe un bouton séparé qui génère un modèle au format XLSX, à partir duquel vous pouvez ensuite charger les données de l'ancien système.

image



Raffinement



La logique de la solution est affinée en apportant des modifications au code source dans le langage interne de la plateforme lsFusion . Sur un serveur de production, cela peut être fait en ajoutant de nouveaux modules en copiant les fichiers dans le dossier / var / lib / lsfusion.



Pour un développement rapide et facile, il est recommandé d'installer un kit de distribution local qui contient IntelliJ IDEA Community Edition avec un plugin pré-installé, ainsi qu'une application client sous la forme d'un serveur Web. Lors de l'installation, il n'est pas nécessaire d'installer côté serveur, car les bibliothèques nécessaires seront automatiquement chargées à l'aide de Maven. Ensuite, dans IDEA, vous devez exécuter Get from Version Control / Github et entrez github.com/lsfusion-solutions/mycompany.git... Après cela, vous devez configurer le lancement du serveur via Modifier les configurations / + / lsFusion Server. Après toutes les modifications apportées au code source, vous devez redémarrer le serveur d'applications.



image



Afin de créer le fichier jar en tenant compte des modifications apportées, vous devez configurer l'assemblage des artefacts. L'artefact assemblé doit être copié dans le dossier / var / lib / lsfusion au lieu du fichier jar d'origine de la solution MyCompany.



Il existe une option pour connecter la solution de base MyCompany via Maven. L'avantage de cette approche est que lorsque vous effectuez une mise à niveau à partir de la solution de base, vous n'aurez pas besoin de fusionner les modifications de code source «qui se chevauchent». L'inconvénient est l'impossibilité d'apporter des modifications au code source de la solution de base.



Pour connecter la solution MyCompany via Maven, vous devez enregistrer les paramètres suivants dans le pom.xml:

<repositories>

    <repository>

        <id>lsfusion</id>

        <name>lsFusion Public Repository</name>

        <url>http://repo.lsfusion.org</url>

    </repository>

</repositories>



<dependencies>

    <dependency>

        <groupId>lsfusion.solutions</groupId>

        <artifactId>mycompany</artifactId>

        <version>1.0.0-SNAPSHOT</version>

    </dependency>

</dependencies>







image



Pour une plus grande transparence des améliorations et éliminant le besoin de fusionner le code, il est recommandé d'ajouter de nouvelles fonctionnalités aux modules séparés.



Exemple:



Supposons que vous souhaitiez ajouter la possibilité de définir une limite de crédit pour un client à votre logique d'application.



Tout d'abord, nous créons un nouveau module DebtLimit:

MODULE DebtLimit;





Ensuite, on passe à l'interface utilisateur sous l'administrateur et on passe la souris sur le titre du champ avec la dette de l'acheteur:



image



On voit que la propriété calculée qui calcule la dette est déclarée dans le module DebtPartner et s'appelle dette avec le seul paramètre Partenaire . Dans le nouveau module, nous connectons ce module afin que vous puissiez accéder à ses propriétés:

REQUIRE DebtPartner;







Créons une nouvelle propriété Limite de crédit pour la contrepartie, dans laquelle l'utilisateur peut entrer une valeur et la placer sur le formulaire d'édition de la contrepartie du partenaire dans le conteneur headerRight:

debtLimit ' ' = DATA NUMERIC[14,2] (Partner);



EXTEND FORM partner

   PROPERTIES(p) debtLimit

;



DESIGN partner {

   headerRight {

       MOVE PROPERTY(debtLimit(p));

   }

}







image

Enfin, nous ajoutons une contrainte qui vérifiera que la dette à un moment donné ne doit pas dépasser la limite de crédit de cet acheteur:

CONSTRAINT debt(Partner p) > debtLimit(p) MESSAGE '    ';







Il reste à connecter ce module au projet. Créons un nouveau module RogaIKopyta et écrivons-le dans le fichier settings.properties:

logics.topModule = RogaIKopyta







Lors du démarrage du serveur d'applications, seuls les modules dont dépend le module RogaIKopyta (y compris récursivement) seront connectés. En conséquence, nous y connectons le module que nous avons créé et MyCompanyRu à partir de la solution de base, dans laquelle tous les modules principaux sont connectés, ainsi que la localisation russe:

MODULE RogaIKopyta;



REQUIRE MyCompanyRu,

       DebtLimit;







Pour installer ces modifications sur le serveur de production, vous devez soit créer un artefact, comme décrit ci-dessus, soit simplement copier deux fichiers avec les modules RogaIKopyta et DebtLimit dans le dossier / var / lib / lsfusion. N'oubliez pas non plus de modifier le logics.topModule sur le serveur de production. Après les modifications, vous devez redémarrer le service Application Server.



image



Support et développement



La solution MyCompany est développée par la société biélorusse LuxSoft . Elle existe depuis plus de 20 ans et est un leader sur le grand marché de l'automatisation de la vente au détail en Biélorussie. Cinq des huit plus grandes chaînes de vente au détail en Biélorussie utilisent sa solution ERP lsFusion pour automatiser leur activité principale.



Grâce à l'utilisation des technologies Java, vous pouvez facilement connecter diverses bibliothèques prêtes à l'emploi pour toutes sortes d'intégrations avec des systèmes externes et d'autres actions de bas niveau. La facilité de développement est assurée en utilisant l'un des meilleurs IDE au monde - IntelliJ IDEA (Community Edition) .



L'objectif principal du développement d'une solution MyCompany est d'accompagner le mouvement open source et de vulgariser la plateforme lsFusion. La solution est financée par la vente et le support de systèmes commerciaux basés sur la plate-forme en Biélorussie.



Au moment d'écrire ces lignes, les fonctions de base requises à notre avis pour un produit minimum viable ont été mises en œuvre. Un développement ultérieur sera effectué en fonction des besoins des utilisateurs. Des suggestions pour finaliser la solution peuvent être créées sous la forme de problèmes sur Github. De plus, toutes les questions sur la solution peuvent être posées dans notre chaîne Slack .



Nous sommes prêts à mettre en œuvre des améliorations et à fournir un soutien, y compris sur une base commerciale. Dans le même temps, nous soutiendrons de toutes les manières possibles ceux qui souhaitent le faire seuls ou fournir des services à des tiers. La licence de solution Apache et la licence de plate-forme LGPL vous permettent même de développer et de vendre une solution basée sur elles sous votre propre nom de marque.



L'architecture modulaire permet de créer des modules open source et commerciaux enfichables séparément qui étendront les fonctionnalités de base de la solution. À l'aide de Maven, vous pouvez créer et lier des bibliothèques séparées avec une logique spécifique, puis créer une solution prête à l'emploi à partir d'elles.



D'après notre expérience, le développement sur lsFusion nécessite beaucoup moins d'efforts et de compétences que le développement sur la même plate-forme 1C. Il ne nécessite pas d'écriture manuelle de requêtes, de gestion de l'interaction client-serveur et de nombreux autres aspects techniques. Tout programmeur 1C sera en mesure de maîtriser rapidement le développement sur la plateforme et de fournir des services de support pour la solution MyCompany. Dans le même temps, il y a beaucoup de personnes dans notre entreprise qui n'avaient aucune expérience de développement sur quoi que ce soit et qui ont appris à programmer sur la plateforme lsFusion sans aucun problème. Les utilisateurs d'Excel les plus avancés capables d'y construire des formules complexes, ainsi que les programmeurs SQL, pourront facilement maîtriser les mécanismes de base de la plateforme pour l'auto-développement de la solution MyCompany.



Les entreprises, quant à elles, pourront économiser sur diverses licences (1C, Windows, Microsoft SQL Server), tout en bénéficiant d'une solution rapide et moderne.



Conclusion



Les principaux avantages de MyCompany par rapport à leurs homologues du marché russe:



  1. Gratuit et ouvert. Pas de conditions de licence, d'abonnements, de restrictions d'utilisateurs, de paiements, de clés HASP et d'autres inconvénients.
  2. Rapidité et facilité d'utilisation. Contrairement aux solutions basées sur 1C, l'interface Web fonctionne si rapidement qu'elle fonctionne parfaitement même dans un navigateur mobile. Des dizaines de milliers d'enregistrements peuvent être ajoutés aux documents, et cela n'entraînera pas de ralentissements significatifs pendant le travail. Absolument chaque table sur n'importe quel formulaire a beaucoup de capacités d' analyse et de navigation intégrées .
  3. . lsFusion, - 1.



All Articles