Varejo de instrumentos musicais

ERP Mixart
Do celular do vendedor à nota fiscal, com a maquininha Stone ligada ao caixa.
- Cliente
- Loja Mixart
- Categoria
- ERP e PDV com integração fiscal e de maquininha
- Período
- out 2026
- Estado
- Em validação: no ar desde 07/10/2026, a loja testando módulo a módulo
O problema
A loja vinha de dois PDVs, cada um com metade do que precisava. Um tinha catálogo, orçamento, sinal com assinatura e nota fiscal; o outro tinha caixa com conferência, holerite, comissão e maquininha. Nos dois, as regras de acesso eram abertas: qualquer usuário fazia tudo. Num deles a numeração das vendas era contada no aparelho, e dois caixas podiam gerar o mesmo número; no outro, excluir uma venda não devolvia o produto ao estoque. O dono queria um sistema só, com papéis diferentes para admin, sócio, caixa e vendedor.
O que foi construído
O vendedor monta o carrinho no celular, lendo o código de barras com a câmera, e envia para o caixa; o carrinho aparece na fila na hora, sem recarregar a página. O caixa aplica desconto, divide o pagamento em várias formas e calcula o juro do crediário de 1x a 12x, escolhendo quem paga. No cartão, a cobrança vai direto para a maquininha Stone pelo Connect e volta confirmada; uma cobrança paga só fecha uma venda. A nota fiscal sai pela Focus NFe, NFC-e ou NF-e, com DANFE, XML, envio por e-mail e o arquivo do mês para o contador. Orçamentos numerados viram venda com um clique, e o sinal de encomenda é assinado no aparelho ou por um link no WhatsApp, entra no caixa e abate na venda. A mercadoria entra pela nota do fornecedor e só mexe no estoque quando o dono aprova; as parcelas viram contas a pagar. Em volta disso, 37 telas: caixa com conferência e foto do fechamento, painel financeiro, relatórios do shopping, por vendedor e do dia, ordem de serviço com fotos, holerite com comissão por faixa de meta e os acessos de cada pessoa.
Decisões de engenharia
A maquininha recebe o valor do caixa
O caixa escolhe débito, crédito, Pix ou voucher e as parcelas, e a cobrança vai para a maquininha Stone pelo Connect. Ninguém digita valor no terminal. A confirmação volta por webhook, autenticado por segredo, ou pela consulta ao provedor quando o webhook atrasa, e grava NSU, autorização e bandeira. Uma cobrança paga só pode ser vinculada a uma venda, e a venda no cartão só fecha com a referência de uma cobrança paga.
erpmixart/backend/src/ErpMixart.Infrastructure/Stone/StoneConnectClient.cs; erpmixart/backend/src/ErpMixart.Core/Pagamentos/CobrancaMaquininha.cs:74 (ConfirmarPagamento), :99 (VincularVenda); erpmixart/backend/src/ErpMixart.Api/Controllers/PublicoStoneController.cs:18 (webhook); erpmixart/backend/src/ErpMixart.Infrastructure/Stone/SimuladorMaquininha.cs
O sinal entra no caixa e abate na venda
O sinal da encomenda é registrado com o dinheiro na gaveta, e não por fora: em dinheiro ele soma no valor esperado do fechamento; em Pix ou cartão fica registrado sem mexer na gaveta. Na venda final ele entra como forma de pagamento e o cliente paga só o restante. Um índice único no banco impede que o mesmo sinal feche duas vendas, e cancelar a venda devolve o sinal para em aberto.
erpmixart/backend/src/ErpMixart.Core/Orcamentos/Sinal.cs:132 (AbaterEmVenda), :167 (DesfazerAbatimento); erpmixart/backend/src/ErpMixart.Core/Caixa/LancamentoCaixa.cs; erpmixart/backend/src/ErpMixart.Infrastructure/Persistence/UnitOfWork.cs:14 (ux_vendas_sinal_ativa)
Nota fiscal no padrão de loja de música
A emissão segue o perfil da loja: Simples Nacional, CSOSN 102, CFOP 5102 e NCM padrão quando o produto não tem. Antes de enviar, o sistema confere cliente e itens; nome e endereço são cortados no limite do XSD, que era o motivo de rejeição no PDV antigo. Do caixa sai a NFC-e; com cliente completo, a NF-e. O XML do mês vai em ZIP para o e-mail do contador.
erpmixart/backend/src/ErpMixart.UseCases/Fiscal/MontadorPayloadFocus.cs:12, :18-19 (CFOP 5102, CSOSN 102); erpmixart/backend/src/ErpMixart.Core/Fiscal/Destinatario.cs:11 (LimiteXsd = 60); erpmixart/backend/src/ErpMixart.UseCases/Fiscal/FiscalUseCases.cs:250 (XML mensal para o contador)
Cada um vê só o que pode, e o servidor confere
São quatro papéis e 26 permissões, que o admin libera pessoa por pessoa. O app esconde o botão de quem não pode, e o servidor repete a checagem em cada rota com as mesmas chaves: são 86 marcações de permissão nos controllers. Nos dois PDVs anteriores as regras eram abertas.
erpmixart/lib/features/auth/domain/value_objects/permissao.dart (26 chaves); erpmixart/lib/features/auth/domain/value_objects/papel.dart:5 (admin, sócio, caixa, vendedor); 86 atributos [Permissao(...)] em erpmixart/backend/src/ErpMixart.Api/Controllers
Numeração e estoque que não se perdem
O número da venda, do orçamento e do código interno sai do servidor, numa linha travada em transação, e dois caixas não geram o mesmo número. O saldo do produto nunca é escrito direto: cada entrada, venda, estorno ou ajuste vira um movimento, gravado junto com o saldo. Cancelar uma venda devolve o produto ao estoque.
erpmixart/backend/src/ErpMixart.Infrastructure/Persistence/ContadorService.cs:15-16 (INSERT ON CONFLICT e SELECT FOR UPDATE); erpmixart/backend/src/ErpMixart.Core/Produtos/Produto.cs:15 (saldo só via Movimentar); erpmixart/backend/src/ErpMixart.Core/Produtos/MovimentoEstoque.cs:19
Caixa conferido e embalagem que vira unidade
O fechamento compara a contagem com o valor esperado, e diferença acima de R$ 1,00 exige justificativa; a foto do fechamento e as sangrias ficam no histórico. Na entrada por nota, a caixa com 12 unidades vira 12 no estoque, com o custo dividido, e o lucro do painel sai certo.
erpmixart/backend/src/ErpMixart.Core/Caixa/SessaoCaixa.cs:10 (DiferencaMaxima = 1,00), :58-59; erpmixart/backend/src/ErpMixart.Core/Inventario/ItemEntrada.cs:26-28 (TotalUnidades, CustoPorUnidade)
Stack
Telas









Em uso
O papel da CG Mixart
Arquitetura e engenharia inteira, com um desenvolvedor só: o levantamento dos dois PDVs anteriores e do pedido do dono, o app em Flutter para o balcão e o celular, a API em .NET, o banco, as integrações com a Stone e com a Focus NFe, o deploy na Oracle Cloud e o quadro de testes com o cliente. Também os vídeos de apresentação, inclusive o enviado ao programa de parceiros da Stone.
Ressalvas e notas técnicas, verificadas no códigoabrir
No ar desde 07/10/2026, na mesma VM da plataforma Mixart, com a loja validando cada módulo por um quadro de testes no Trello. A maquininha roda hoje no simulador: a integração com o Stone Connect está pronta e espera a credencial do programa de parceiros da Stone, pedido em 08/10/2026. A emissão da nota em nome da loja espera o certificado digital dela. A leitura dos catálogos das marcas por IA foi desenhada e ficou de fora por custo. As telas e os vídeos são do modo de demonstração, com dados de exemplo.