MyCompany é uma solução gratuita e de código aberto para pequenas empresas





Há cerca de um ano, lançamos uma plataforma de código aberto e gratuita para o desenvolvimento de aplicativos de negócios lsFusion . Em primeiro lugar, nos concentramos em desenvolvedores que podem criar vários sistemas de informação de forma rápida e fácil. No entanto, o desenvolvimento de um sistema de gestão a partir do zero, mesmo para uma pequena empresa, continua a ser um processo bastante trabalhoso.



Por este motivo, decidimos criar uma solução básica chamada MyCompany que implementa os processos básicos de negócios de pequenas empresas. É totalmente gratuito, lançado sob a licença Apache, e o código-fonte está no Github . A solução é fácil de instalar e atende à legislação russa.



PostgreSQL é usado como um sistema de gerenciamento de banco de dados . No servidor, a solução é instalada e iniciada como um aplicativo Java que consiste em um servidor de aplicativos e um aplicativo da web executando o Apache Tomcat . Tanto a interface da web quanto o cliente desktop lançados via Java Web Start podem ser usados ​​como uma GUI.



Funcional



Uma versão demo com dados preenchidos pode ser visualizada em https://demo.lsfusion.org/mycompany-ru . A autorização para o link especificado está desativada.



imagem



Como base, a lógica foi tomada, assentada na solução mundialmente famosa - Odoo . Infelizmente, nem todas as abordagens implementadas nele são adequadas para uso na realidade russa. Portanto, alguns dos processos tiveram que ser alterados de acordo com nossa própria experiência e outras aplicações populares. Apesar disso, a lógica de "MyCompany" está muito mais próxima dos padrões mundiais do que da lógica de 1C. Também possui localização em inglês (com a capacidade de adicionar qualquer outro idioma).



No momento, a solução carece da implementação de reporte regulatório (contabilidade) e folha de pagamento. Neste nicho no território da Federação Russa, as posições de soluções na plataforma 1C são historicamente fortes, e o contador é de usuários muito conservadores. Por isso, na primeira fase, é feito o upload dos dados necessários para o sistema contábil, e a própria solução é utilizada para manter a contabilidade gerencial.



"MyCompany" tem uma arquitetura modular e consiste em sete grandes blocos: O



imagem



processamento da maioria dos documentos no sistema é baseado no princípio de passagem de status. Ao atingir determinados status, os dados correspondentes na contabilidade são alterados e colunas e ações adicionais podem ser adicionadas.



Referências (dados mestre)



O sistema contém os diretórios básicos necessários para trabalhar com as contrapartes e a nomenclatura das mercadorias.



As contrapartes são divididas em dois tipos: pessoas jurídicas e pessoas físicas. Qualquer pessoa pode estar vinculada à organização em que trabalha. Suporta o funcionamento de várias empresas próprias.



Tanto bens quanto serviços podem ser usados ​​como uma nomenclatura. Eles podem ser vinculados a categorias que formam uma árvore dinâmica de profundidade. Para cada categoria, você pode especificar quais atributos podem e devem ser definidos para todo o item incluído nela. Você também pode especificar como gerar um nome comum com base em valores de atributos. Para qualquer item, você pode definir suas variedades.



É possível carregar automaticamente dados de pessoas jurídicas por meio da API fornecida pela DaData .



Armazém (Estoque)



Este bloco implementa a lógica da contabilidade do armazém com o cálculo dos saldos por locais de armazenamento. Os locais de armazenamento podem ser hierárquicos. Os funcionários da empresa só podem ter acesso a locais de armazenamento específicos.



Suporta o cálculo do custo dos saldos com custo fixo e médio, bem como pelo método FIFO. O método de cálculo pode ser escolhido de forma diferente dependendo da categoria de produtos.



Os principais usuários deste módulo são trabalhadores de almoxarifado que operam exclusivamente com características quantitativas.



Quatro tipos principais de documentos são suportados:



  • Aceitação. Registra a aceitação da mercadoria no depósito. Suporta a lógica de quantidades esperadas e recebidas, bem como estados do processo de recebimento e colocação.
  • Envio. Reflete o consumo do armazém e a movimentação entre os armazéns. Além disso, ele reserva as mercadorias no depósito em um determinado status.
  • Eliminar. Reflete a baixa de mercadorias do depósito.
  • Inventário. Registra a descoberta ou perda de mercadorias no depósito. O inventário pode ser realizado inteiramente no depósito, na categoria selecionada ou em mercadorias específicas.




Implementou contabilidade peça a peça e integração com Honesty Znak em termos de obtenção de marcas de controle, transferência e recebimento de documentos de / para GIS MT.



Cálculos (Faturamento)



Este bloco implementa a lógica de registro de faturas e pagamentos de entrada e saída. A lógica de comunicação entre documentos de entrada e saída é suportada para o cálculo de dívidas de um documento e contrapartes. A possibilidade de contabilizar o custo dos serviços no custo das mercadorias de várias maneiras foi implementada.



Quatro tipos principais de documentos são suportados:



  • Recibo. Registra uma fatura recebida ou um ato de conclusão de bens ou serviços. Com base neste documento, um documento de armazenamento pode ser gerado automática ou manualmente.
  • Implementação. Registra uma fatura emitida ou um certificado de conclusão de bens ou serviços. Com base neste documento, um documento de remessa de depósito pode ser gerado automática ou manualmente.
  • Pagamentos recebidos. Reflete o recebimento de fundos no caixa ou na conta corrente.
  • Pagamentos de saída. Reflete a despesa de fundos do caixa ou da conta à ordem.




Os formulários de impressão UPD, TORG-12 e TORG-13 foram implementados.



Compra



O bloco implementa a lógica de pedidos de bens e serviços de um fornecedor. Suporta a capacidade de registrar listas de preços de fornecedores com subsequente substituição automática de preços no pedido.



A encomenda passa por vários estados, durante os quais pode ser enviada automaticamente para o fornecedor por email. O pedido confirmado gera automaticamente uma entrada de mercadorias planejada, que é então processada pelo lojista. Depois que as mercadorias são aceitas, o contador cria um documento de recebimento com base na quantidade aceita.



Vendas



Este bloco implementa a funcionalidade de registrar pedidos de clientes e gerar preços de venda.



Foi implementada a capacidade de definir vários tipos de preços, que são então vinculados aos clientes ou tipos de pedidos. Os preços para cada tipo são definidos usando documentos de lista de preços com diferentes períodos de validade. A formação de formulários impressos de listas de preços e etiquetas de preços é suportada.



Os descontos podem ser definidos para diferentes tipos de preços, que serão calculados automática ou manualmente ao colocar pedidos ou documentos de venda (inclusive no PDV).



O pedido do comprador também passa por vários status com a possibilidade de enviar uma confirmação do pedido ao comprador. Nesse caso, é criado automaticamente um documento para a expedição de mercadorias, que é posteriormente executado pelo empregado do depósito. O contador pode então criar um documento de vendas com base na quantidade enviada.



Varejo



Este bloco implementa a funcionalidade para o comércio varejista de bens e serviços.



O principal elemento da embalagem é o formulário POS, que é usado para vender e devolver mercadorias. A capacidade de abrir e fechar turnos, depositar e sacar dinheiro é suportada. A integração com o registrador fiscal ATOL por meio de um servidor web foi implementada.



Vários checkouts podem ser conectados ao sistema, configurados tanto para um como para diferentes pontos de venda.



Todos os cheques são lançados como documentos de vendas, refletindo automaticamente todas as mudanças na contabilidade. Os cheques podem ser gerados com base nos pedidos de venda.



Manufatura



Este bloco implementa a capacidade de levar em consideração a produção de produtos e baixas de matérias-primas para ele com o cálculo do custo.



As matérias-primas são produzidas e descartadas com base nas ordens de produção. Com a ajuda deles, é possível registrar tanto a produção quanto a desmontagem (desmontagem) de produtos acabados. Implantei cálculo automático da quantidade de produtos, resíduos e matérias-primas com base nas especificações inseridas. A criação de especificações é suportada, levando em consideração seu "aninhamento" entre si. A capacidade de criar ordens de produção automaticamente com base em ordens de venda foi implementada.



Instalação



Para instalar a solução, você precisa de um servidor executando o sistema operacional Linux ou Windows com conexão à Internet.

Deve ter pelo menos 2 gigabytes de RAM, a porta 8080 para o cliente web e a porta 7652 para o cliente desktop devem estar abertas.



Linux



Vejamos como instalar o MyCompany usando o exemplo de comandos para um servidor que executa o CentOS 7, executado com direitos de superusuário root.



Instale a 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 a configuração 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 o serviço do servidor lsFusion:

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







O processo de inicialização do servidor de aplicativos pode ser monitorado no log /var/log/lsfusion4-server/start.log.



janelas



Baixe e execute o instalador do servidor e do cliente a partir do link: SO de 64 bits , SO de 32 bits .

Deixe todos os parâmetros como padrão. Se necessário, defina senhas.



Baixe a versão mais recente de MyCompany do link e salve-os na pasta lib do servidor. (por padrão - C: \ Arquivos de programas \ lsFusion 4 \ Server \ lib)

Reinicie o serviço do servidor lsFusion.

imagem



Migração de dados



A solução possui um mecanismo simples de carregamento de dados iniciais via arquivos Excel. Para importar diretórios e outros objetos, basta acessar Administração / Migração. Para cada tipo de diretório existe um botão separado que gera um modelo no formato XLSX, a partir do qual você pode carregar os dados do sistema antigo.

imagem



Refinamento



A lógica da solução é refinada fazendo alterações no código-fonte na linguagem interna da plataforma lsFusion . Em um servidor de produção, isso pode ser feito adicionando novos módulos, copiando os arquivos para a pasta / var / lib / lsfusion.



Para um desenvolvimento rápido e fácil, é recomendável instalar um kit de distribuição local que contém o IntelliJ IDEA Community Edition junto com um plugin pré-instalado, bem como um aplicativo cliente na forma de um servidor web. Durante a instalação, não é necessário instalar o lado do servidor, uma vez que as bibliotecas necessárias serão carregadas automaticamente usando o Maven. Em IDEA, você precisa executar Get from Version Control / Github e inserir github.com/lsfusion-solutions/mycompany.git... Depois disso, você precisa configurar a inicialização do servidor por meio de Editar configurações / + / lsFusion Server. Após quaisquer alterações feitas no código-fonte, você precisa reiniciar o servidor de aplicativos.



imagem



Para construir o arquivo jar levando em consideração as mudanças feitas, é necessário configurar a montagem dos artefatos. O artefato montado precisa ser copiado para a pasta / var / lib / lsfusion em vez do arquivo jar original da solução MyCompany.



Há uma opção para conectar a solução MyCompany básica por meio do Maven. A vantagem dessa abordagem é que, ao atualizar a partir da solução base, não será necessário mesclar as alterações de código-fonte “sobrepostas”. A desvantagem é a incapacidade de fazer alterações no código-fonte da solução base.



Para conectar a solução MyCompany por meio do Maven, você precisa registrar os seguintes parâmetros no 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>







imagem



Para maior transparência das melhorias e eliminando a necessidade de mesclar código, é recomendado adicionar novas funcionalidades aos módulos separados.



Exemplo:



Suponha que você queira adicionar a capacidade de definir um limite de crédito para um cliente à lógica de seu aplicativo.



Primeiro, criamos um novo módulo DebtLimit:

MODULE DebtLimit;





Em seguida, vamos para a interface do usuário sob o administrador e passamos o mouse sobre o título do campo com a dívida do comprador:



imagem



Vemos que a propriedade calculada que calcula a dívida é declarada no módulo DebtPartner e é chamada dívida com o único parâmetro Parceiro . No novo módulo, conectamos este módulo para que você possa acessar suas propriedades:

REQUIRE DebtPartner;







Vamos criar um novo Limite de crédito de propriedade para a contraparte, no qual o usuário pode inserir um valor e colocá-lo no formulário de edição da contraparte do parceiro no contêiner headerRight:

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



EXTEND FORM partner

   PROPERTIES(p) debtLimit

;



DESIGN partner {

   headerRight {

       MOVE PROPERTY(debtLimit(p));

   }

}







imagem

Por fim, adicionamos uma restrição que verificará se a dívida, a qualquer momento, não deve exceder o limite de crédito para este comprador:

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







Resta conectar este módulo ao projeto. Vamos criar um novo módulo RogaIKopyta e gravá-lo no arquivo settings.properties:

logics.topModule = RogaIKopyta







Ao iniciar o servidor de aplicativos, apenas os módulos dos quais o módulo RogaIKopyta depende serão conectados (incluindo recursivamente). Assim, conectamos a ele o módulo que criamos e MyCompanyRu a partir da solução base, na qual todos os módulos principais estão conectados, bem como a localização em russo:

MODULE RogaIKopyta;



REQUIRE MyCompanyRu,

       DebtLimit;







Para instalar essas mudanças no servidor de produção, você precisa construir o artefato, conforme descrito acima, ou simplesmente copiar dois arquivos com os módulos RogaIKopyta e DebtLimit para a pasta / var / lib / lsfusion. Além disso, lembre-se de alterar o logics.topModule no servidor de produção. Após as alterações, você precisa reiniciar o serviço do servidor de aplicativos.



imagem



Suporte e desenvolvimento



A solução MyCompany está sendo desenvolvida pela empresa bielorrussa LuxSoft . Ela existe há mais de 20 anos e é líder no mercado de automação de grande varejo na Bielo-Rússia. Cinco das oito maiores redes de varejo da Bielo-Rússia usam sua solução lsFusion ERP para automatizar seus negócios principais.



Graças ao uso de tecnologias Java, você pode conectar facilmente várias bibliotecas prontas para todos os tipos de integrações com sistemas externos e outras ações de baixo nível. A facilidade de desenvolvimento é garantida pelo uso de um dos melhores IDEs do mundo - IntelliJ IDEA (Community Edition) .



O objetivo principal de desenvolver uma solução MyCompany deve apoiar o movimento de código aberto e popularizar a plataforma lsFusion. A solução é financiada por meio de vendas e suporte de sistemas comerciais baseados na plataforma da Bielo-Rússia.



No momento da redação deste artigo, as funções básicas exigidas em nossa opinião para um produto mínimo viável foram implementadas. O desenvolvimento posterior será feito com base nas necessidades do usuário. Sugestões para finalizar a solução podem ser criadas na forma de Problemas no Github. Além disso, qualquer dúvida sobre a solução pode ser feita em nosso canal do Slack .



Estamos prontos para implementar melhorias e dar suporte, inclusive comercial. Ao mesmo tempo, apoiaremos de todas as formas possíveis aqueles que desejam fazer isso por conta própria ou prestar serviços a terceiros. A licença da solução Apache e a licença da plataforma LGPL permitem que você desenvolva e venda uma solução baseada nelas sob sua própria marca.



A arquitetura modular torna possível criar código aberto e módulos comerciais conectáveis ​​separadamente que irão estender a funcionalidade central da solução. Usando o Maven, você pode criar e vincular bibliotecas separadas com lógica específica e, em seguida, construir uma solução pronta a partir delas.



Em nossa experiência, o desenvolvimento em lsFusion requer muito menos esforço e habilidade do que o desenvolvimento na mesma plataforma 1C. Não requer escrever consultas manualmente, gerenciar a interação cliente-servidor e muitos outros aspectos técnicos. Qualquer programador 1C será capaz de dominar rapidamente o desenvolvimento na plataforma e fornecer serviços de suporte para a solução MyCompany. Ao mesmo tempo, há muitas pessoas em nossa empresa que não tinham nenhuma experiência de desenvolvimento em nada e aprenderam a programar na plataforma lsFusion sem problemas. A maioria dos usuários avançados de Excel que são capazes de construir fórmulas complexas nele, assim como os programadores de SQL, serão capazes de dominar facilmente os mecanismos básicos da plataforma de autodesenvolvimento da solução MyCompany.



As empresas, por sua vez, poderão economizar em diversas licenças (1C, Windows, Microsoft SQL Server), ao mesmo tempo em que recebem uma solução ágil e moderna.



Conclusão



As principais vantagens da MyCompany sobre suas contrapartes no mercado russo:



  1. Livre e aberto. Sem condições de licença, assinaturas, restrições de usuário, pagamentos, chaves HASP e outros inconvenientes.
  2. Rapidez e facilidade de uso. Ao contrário das soluções baseadas em 1C, a interface da web funciona tão rápido que funciona muito bem mesmo em um navegador móvel. Dezenas de milhares de registros podem ser adicionados aos documentos e isso não causará lentidão significativa durante o trabalho. Absolutamente todas as tabelas em qualquer formulário têm muitos recursos de análise e navegação integrados .
  3. . lsFusion, - 1.



All Articles