Hace aproximadamente un año, lanzamos una plataforma gratuita y de código abierto para desarrollar aplicaciones comerciales lsFusion . En primer lugar, nos centramos en los desarrolladores que pueden crear rápida y fácilmente varios sistemas de información en él. Sin embargo, el desarrollo de un sistema de gestión desde cero, incluso para una pequeña empresa, sigue siendo un proceso bastante laborioso.
Por esta razón, decidimos crear una solución básica llamada MyCompany que implementa los procesos comerciales básicos de las pequeñas empresas. Es completamente gratuito, publicado bajo la licencia de Apache y la fuente está en Github . La solución es fácil de instalar y es compatible con la legislación rusa.
PostgreSQL se utiliza como sistema de gestión de bases de datos . En el servidor, la solución se instala y ejecuta como una aplicación Java que consta de un servidor de aplicaciones y una aplicación web que ejecuta Apache Tomcat . Tanto la interfaz web como el cliente de escritorio iniciados a través de Java Web Start se pueden utilizar como GUI.
Funcional
Se puede ver una versión de demostración con datos completos en https://demo.lsfusion.org/mycompany-ru . La autorización para el enlace especificado está deshabilitada.
Como base, se tomó la lógica, se estableció en la solución de fama mundial: Odoo . Desafortunadamente, no todos los enfoques implementados en él son adecuados para su uso en la realidad rusa. Por lo tanto, algunos de los procesos tuvieron que cambiarse de acuerdo con nuestra propia experiencia y otras aplicaciones populares. A pesar de esto, la lógica de "MyCompany" está mucho más cerca de los estándares mundiales que de la lógica de 1C. También tiene localización en inglés (con la posibilidad de agregar cualquier otro idioma).
Por el momento, la solución carece de la implementación de informes regulatorios (contabilidad) y nómina. En este nicho en el territorio de la Federación de Rusia, las posiciones de las soluciones en la plataforma 1C son históricamente sólidas y el contador es un usuario muy conservador. Por esta razón, en la primera etapa, se supone que debe cargar los datos necesarios en el sistema de contabilidad, y la solución en sí se utiliza para mantener la contabilidad de gestión.
"MyCompany" tiene una arquitectura modular y consta de siete grandes bloques: El
procesamiento de la mayoría de los documentos en el sistema se basa en el principio de aprobación de estados. Al alcanzar ciertos estados, los datos correspondientes en la contabilidad se cambian y se pueden agregar columnas y acciones adicionales.
Referencias (datos maestros)
El sistema contiene los directorios básicos necesarios para trabajar con contrapartes y la nomenclatura de bienes.
Las contrapartes se dividen en dos tipos: personas jurídicas y personas físicas. Cualquiera puede adscribirse a la organización en la que trabaja. Admite la gestión de varias empresas propias.
Tanto los bienes como los servicios se pueden utilizar como nomenclatura. Se pueden vincular a categorías que forman un árbol de profundidad dinámico. Para cada categoría, puede especificar qué atributos pueden y deben establecerse para todo el elemento incluido en ella. También puede especificar cómo generar un nombre común basado en valores de atributo. Para cualquier artículo, puede configurar sus variedades.
Es posible cargar automáticamente datos de entidades legales a través de la API proporcionada por DaData .
Inventario de almacén)
Este bloque implementa la lógica de la contabilidad de almacén con el cálculo de saldos por ubicaciones de almacenamiento. Las ubicaciones de almacenamiento pueden ser jerárquicas. Los empleados de la empresa solo pueden tener acceso a ubicaciones de almacenamiento específicas.
Soporta el cálculo del costo de saldos a costo fijo y promedio, así como por el método FIFO. El método de cálculo se puede elegir de manera diferente según la categoría de bienes.
Los principales usuarios de este módulo son trabajadores de almacén que operan exclusivamente con características cuantitativas.
Se admiten cuatro tipos principales de documentos:
- Aceptación. Registra la aceptación de mercancía en el almacén. Soporta la lógica de cantidades esperadas y recibidas, así como los estados del proceso de recepción y colocación.
- Envío. Refleja el consumo del almacén y el movimiento entre almacenes. Además, reserva la mercancía en el almacén en un estado determinado.
- Pedir por escrito. Refleja la amortización de mercancías del almacén.
- Inventario. Registra el descubrimiento o pérdida de mercadería en el almacén. El inventario se puede realizar íntegramente en el lugar de almacenamiento, la categoría seleccionada o mercancías específicas.
Implementación de la contabilidad pieza por pieza y la integración con Honesty Znak en términos de obtención de marcas de control, transferencia y recepción de documentos hacia / desde GIS MT.
Cálculos (facturación)
Este bloque implementa la lógica para registrar facturas y pagos entrantes y salientes. La lógica de comunicación entre documentos entrantes y salientes es compatible con el cálculo de las deudas de un documento y contrapartes. Se ha implementado la posibilidad de contabilizar el costo de los servicios con el costo de los bienes de diversas formas.
Se admiten cuatro tipos principales de documentos:
- Recibo. Registra una factura entrante o un acto de finalización de bienes o servicios. Con base en este documento, se puede generar un documento almacenado de forma automática o manual.
- Implementación. Registra una factura saliente o un certificado de finalización de bienes o servicios. Con base en este documento, se puede generar un documento de envío de almacén de forma automática o manual.
- Pagos entrantes. Refleja el recibo de fondos al cajero o a la cuenta corriente.
- Pagos salientes. Refleja el gasto de fondos de la caja o de la cuenta corriente.
Se han implementado los formularios de impresión UPD, TORG-12 y TORG-13.
Compra
El bloque implementa la lógica de los pedidos de bienes y servicios de un proveedor. Admite la capacidad de registrar listas de precios de proveedores con la subsiguiente sustitución automática de precios en el pedido.
El pedido pasa por varios estados, durante los cuales se puede enviar automáticamente al proveedor por correo electrónico. El pedido confirmado genera automáticamente una entrada de mercancías planificada, que luego es procesada por el almacenista. Una vez que se aceptan las mercancías, el contador crea un documento de recepción basado en la cantidad aceptada.
Ventas
Este bloque implementa la funcionalidad de registrar pedidos de clientes y generar precios de venta.
Se ha implementado la posibilidad de fijar varios tipos de precios, que luego se vinculan a clientes o tipos de pedidos. Los precios para cada tipo se establecen utilizando documentos de lista de precios con diferentes períodos de validez. Se apoya la formación de formularios impresos de listas de precios y etiquetas de precios.
Se pueden establecer descuentos para diferentes tipos de precios, que se calcularán automática o manualmente al realizar pedidos o documentos de venta (incluso en POS).
El pedido del comprador también pasa por varios estados con la capacidad de enviar una confirmación del pedido al comprador. En este caso, se crea automáticamente un documento para el envío de mercancías, que posteriormente es ejecutado por el empleado del almacén. El contador puede entonces crear un documento de ventas basado en la cantidad enviada.
Al por menor
Este bloque implementa la funcionalidad para el comercio minorista de bienes y servicios.
El elemento principal del paquete es el formulario POS, que se utiliza para la venta al por menor y la devolución de productos. Se admite la capacidad de abrir y cerrar turnos, depositar y retirar dinero. Se implementó la integración con el registrador fiscal ATOL a través de un servidor web.
Se pueden conectar varias cajas al sistema, configuradas tanto para uno como para diferentes puntos de venta.
Todos los cheques se contabilizan como documentos de ventas, reflejando automáticamente todos los cambios en la contabilidad. Los cheques se pueden generar en función de las órdenes de venta.
Fabricación
Este bloque implementa la capacidad de tener en cuenta la producción de productos y las cancelaciones de materias primas para ello con el cálculo del costo.
Las materias primas se producen y descartan según las órdenes de producción. Con su ayuda, es posible registrar tanto la producción como el desmontaje (desmontaje) de productos terminados. Se implementó el cálculo automático de la cantidad de productos, desechos y materias primas en base a las especificaciones ingresadas. Se admite la creación de especificaciones, teniendo en cuenta su "anidamiento" entre sí. Se implementó la capacidad de crear automáticamente órdenes de producción basadas en órdenes de venta.
Instalación
Para instalar la solución, necesita un servidor con un sistema operativo Linux o Windows con conexión a Internet.
Debe tener al menos 2 gigabytes de RAM, el puerto 8080 para el cliente web y el puerto 7652 para el cliente de escritorio deben estar abiertos.
Linux
Veamos la instalación de MyCompany usando el ejemplo de comandos para un servidor que ejecuta CentOS 7, ejecutado con derechos de superusuario root.
Instale la plataforma lsFusion:
root@centos7: localectl set-locale LANG=ru_RU.UTF-8
root@centos7: source <(curl -s https://download.lsfusion.org/yum/install-lsfusion4)
Instale la configuración 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
Reinicie el servicio del servidor lsFusion:
root@centos7: systemctl stop lsfusion4-server root@centos7: systemctl start lsfusion4-server
El proceso de inicio del servidor de aplicaciones se puede monitorear en el registro /var/log/lsfusion4-server/start.log.
Ventanas
Descargue y ejecute el instalador del servidor y del cliente desde el enlace: SO de 64 bits , SO de 32 bits .
Deje todos los parámetros por defecto. Si es necesario, establezca contraseñas.
Descargue la última versión de MyCompany desde el enlace y guárdelos en la carpeta lib del servidor. (de forma predeterminada, C: \ Archivos de programa \ lsFusion 4 \ Server \ lib)
Reinicie el servicio del servidor lsFusion.
Migración de datos
La solución tiene un mecanismo simple para cargar datos iniciales a través de archivos de Excel. Para importar directorios y otros objetos, simplemente vaya a Administración / Migración. Para cada tipo de directorio hay un botón separado que genera una plantilla en formato XLSX, desde la cual luego puede cargar datos del sistema antiguo.
Refinamiento
La lógica de la solución se refina al realizar cambios en el código fuente en el lenguaje interno de la plataforma lsFusion . En un servidor de producción, esto se puede hacer agregando nuevos módulos copiando archivos en la carpeta / var / lib / lsfusion.
Para un desarrollo rápido y fácil, se recomienda instalar un kit de distribución local que contenga IntelliJ IDEA Community Edition junto con un complemento preinstalado, así como una aplicación cliente en forma de servidor web. Durante la instalación, no es necesario instalar el lado del servidor, ya que las bibliotecas necesarias se cargarán automáticamente usando Maven. Luego, en IDEA, debe ejecutar Get from Version Control / Github e ingresar github.com/lsfusion-solutions/mycompany.git... Después de eso, debe configurar el inicio del servidor a través de Editar configuraciones / + / lsFusion Server. Después de realizar cualquier cambio en el código fuente, debe reiniciar el servidor de aplicaciones.
Para construir el archivo jar teniendo en cuenta los cambios realizados, debe configurar el ensamblaje de artefactos. El artefacto ensamblado debe copiarse en la carpeta / var / lib / lsfusion en lugar del archivo jar original de la solución MyCompany.
Existe la opción de conectar la solución básica MyCompany a través de Maven. La ventaja de este enfoque es que cuando actualiza desde la solución base, no necesitará fusionar los cambios de código fuente "superpuestos". La desventaja es la imposibilidad de realizar cambios en el código fuente de la solución base.
Para conectar la solución MyCompany a través de Maven, debe registrar los siguientes parámetros en pom.xml:
<repositories>
|
Para una mayor transparencia de las mejoras y eliminar la necesidad de fusionar código, se recomienda agregar nuevas funciones a módulos separados.
Ejemplo:
Suponga que desea agregar la capacidad de establecer un límite de crédito para un cliente a la lógica de su aplicación.
Primero, creamos un nuevo módulo DebtLimit:
MODULE DebtLimit;
|
Luego vamos a la interfaz de usuario debajo del administrador y pasamos el mouse sobre el título del campo con la deuda del comprador:
Vemos que la propiedad calculada que calcula la deuda se declara en el módulo DebtPartner y se llama deuda con el único parámetro Partner . En el nuevo módulo, conectamos este módulo para que puedas acceder a sus propiedades:
REQUIRE DebtPartner;
|
Creemos un nuevo límite de crédito de propiedad para la contraparte, en el que el usuario puede ingresar un valor y colocarlo en el formulario de edición de la contraparte del socio en el contenedor headerRight:
debtLimit ' ' = DATA NUMERIC[14,2] (Partner);
|
Finalmente, agregamos una restricción que verificará que la deuda en un momento dado no debe exceder el límite de crédito para este comprador:
CONSTRAINT debt(Partner p) > debtLimit(p) MESSAGE ' ';
|
Queda por conectar este módulo al proyecto. Creemos un nuevo módulo RogaIKopyta y escribamos en el archivo settings.properties:
logics.topModule = RogaIKopyta
|
Al iniciar el servidor de aplicaciones, solo se conectarán aquellos módulos de los que depende el módulo RogaIKopyta (incluso de forma recursiva). En consecuencia, le conectamos el módulo que creamos y MyCompanyRu desde la solución base, en la que están conectados todos los módulos principales, así como la localización rusa:
MODULE RogaIKopyta;
|
Para instalar estos cambios en el servidor de producción, debe crear el artefacto, como se describe anteriormente, o simplemente copiar dos archivos con los módulos RogaIKopyta y DebtLimit en la carpeta / var / lib / lsfusion. Además, recuerde cambiar logics.topModule en el servidor de producción. Después de los cambios, debe reiniciar el servicio del servidor de aplicaciones.
Soporte y desarrollo
La solución MyCompany está siendo desarrollada por la empresa bielorrusa LuxSoft . Ha existido durante más de 20 años y es líder en el gran mercado de automatización minorista en Bielorrusia. Cinco de las ocho cadenas minoristas más grandes de Bielorrusia utilizan su solución lsFusion ERP para automatizar su negocio principal.
Gracias al uso de tecnologías Java, puede conectar fácilmente varias bibliotecas listas para usar para todo tipo de integraciones con sistemas externos y otras acciones de bajo nivel. La facilidad de desarrollo está garantizada mediante el uso de uno de los mejores IDE del mundo: IntelliJ IDEA (Community Edition) .
El objetivo principal de desarrollar una solución. MyCompany es para apoyar el movimiento de código abierto y popularizar la plataforma lsFusion. La solución se financia mediante ventas y soporte de sistemas comerciales basados en la plataforma en Bielorrusia.
Al momento de escribir este artículo, se han implementado las funciones básicas requeridas en nuestra opinión para un producto mínimo viable. Se realizará un mayor desarrollo en función de las necesidades de los usuarios. Se pueden crear sugerencias para finalizar la solución en forma de Problemas en Github. Además, cualquier pregunta sobre la solución se puede hacer en nuestro canal de Slack .
Estamos listos para implementar mejoras y brindar soporte, incluso a nivel comercial. Al mismo tiempo, apoyaremos de todas las formas posibles a quienes deseen hacerlo por nuestra cuenta o prestar servicios a terceros. La licencia de la solución Apache y la licencia de la plataforma LGPL incluso le permiten desarrollar y vender una solución basada en ellas bajo su propia marca.
La arquitectura modular permite crear módulos comerciales y de código abierto conectables por separado que ampliarán la funcionalidad principal de la solución. Con Maven, puede crear y vincular bibliotecas separadas con lógica específica y luego construir una solución lista para usar a partir de ellas.
En nuestra experiencia, el desarrollo en lsFusion requiere significativamente menos esfuerzo y habilidad que el desarrollo en la misma plataforma 1C. No requiere escribir consultas manualmente, administrar la interacción cliente-servidor y muchos otros aspectos técnicos. Cualquier programador de 1C podrá dominar rápidamente el desarrollo en la plataforma y proporcionar servicios de soporte para la solución MyCompany. Al mismo tiempo, hay muchas personas en nuestra empresa que no tenían experiencia en el desarrollo de nada y aprendieron a programar en la plataforma lsFusion sin ningún problema. Los usuarios de Excel más avanzados que sean capaces de construir fórmulas complejas en él, así como los programadores SQL, podrán dominar fácilmente los mecanismos básicos de la plataforma para el autodesarrollo de la solución MyCompany.
Las empresas, a su vez, podrán ahorrar en varias licencias (1C, Windows, Microsoft SQL Server), mientras reciben una solución rápida y moderna.
Conclusión
Las principales ventajas de MyCompany sobre sus contrapartes en el mercado ruso:
- Libre y abierto. Sin condiciones de licencia, suscripciones, restricciones de usuario, pagos, claves HASP y otros inconvenientes.
- Rapidez y facilidad de uso. A diferencia de las soluciones basadas en 1C, la interfaz web funciona tan rápido que funciona muy bien incluso en un navegador móvil. Se pueden agregar decenas de miles de registros a los documentos, y esto no provocará una ralentización significativa durante el trabajo. Absolutamente todas las tablas en cualquier formulario tienen muchas capacidades analíticas y de navegación integradas .
- . lsFusion, - 1.