Logo Ateliê Maria Bonita
Ateliê Maria BonitaCRM • Precificação • Compras • Financeiro • Financeiro
Somente neste aparelho
Pedidos cadastrados0
Entregas próximas0
Pagamentos pendentes0
Valor a receberR$ 0,00
ClienteProdutos do pedidoEntregaStatusTotalPagamentoPendência
Nenhum pedido cadastrado.

Clique em qualquer ponto da linha para abrir e editar o pedido.

NOVO ORÇAMENTO

Quanto cobrar?

Informe cliente, peças e custos. O preço é calculado na hora.

1Cliente e proposta

2Peças e materiais

2BInsumos e processos

Use aqui itens como fita de cetim, folhas, cola, montagem, prensagem, impressão, acabamento ou qualquer material/processo cadastrado em Custos.

3Custos adicionais


ORÇAMENTOS

Propostas comerciais

Gere o PDF, acompanhe a aprovação e transforme a proposta em pedido.

Nenhuma proposta comercial salva.
BASE DE CUSTOS

Configurações

Os valores ficam salvos neste aparelho e, quando a nuvem estiver conectada, são sincronizados com os outros dispositivos.

A alteração recalcula imediatamente os novos orçamentos.

Materiais por chapa

Outros materiais / insumos

Ex.: fita de cetim por metro, folha de impressão por unidade, cola por ml, medalha metálica por unidade.

Processos

Ex.: montagem por minuto, prensagem por unidade, impressão por folha, instalação por hora.
SAÍDAS

Compras & despesas

Registre tudo que foi comprado ou pago pelo Ateliê.

Nenhuma compra ou despesa cadastrada.
FECHAMENTO

Resultado por período

Compare faturamento, recebimentos e gastos no intervalo escolhido.

FaturadoR$ 0,00
RecebidoR$ 0,00
A receberR$ 0,00
Compras / despesasR$ 0,00
Resultado brutoR$ 0,00
Resumo
Faturamento por pedido
Gastos por categoria
V5.6 ADMINISTRAÇÃO

Usuários e permissões

O administrador autoriza quem pode acessar o CRM e define quais áreas cada pessoa pode usar.

Meu acesso
Usuário
Perfil
Status
Autorizar / editar pessoa

A pessoa autorizada cria a própria senha em “Nuvem → Criar meu usuário”. O administrador nunca precisa saber a senha dela.

Pessoas autorizadas
Carregando…
V5.6 USUÁRIOS + PERMISSÕES

Nuvem do Ateliê

Conecte o CRM a um banco Supabase para usar os mesmos dados no Dell, iPhone e outros aparelhos.

1. Conexão com o Supabase
2. Sincronização
StatusAinda não conectado.
Última sincronização
Última atualização na nuvem
Dispositivo

A V5.6 continua funcionando offline. Quando a conexão volta, as alterações locais são enviadas automaticamente. Para evitar conflito, não edite o mesmo pedido simultaneamente em dois aparelhos.

3. Primeira configuração do banco
Execute este SQL uma única vez no Supabase para ativar o compartilhamento e o controle de acesso da V5.6. O primeiro usuário que entrar após a migração torna-se Administrador; depois ele autoriza os demais pela aba Usuários.
create table if not exists public.crm_state ( id text primary key, owner uuid default auth.uid(), data jsonb not null default '{}'::jsonb, device text, updated_at timestamptz not null default now() ); create table if not exists public.crm_access ( email text primary key, display_name text not null default '', role text not null default 'consulta', permissions jsonb not null default '{}'::jsonb, active boolean not null default true, created_at timestamptz not null default now(), updated_at timestamptz not null default now() ); alter table public.crm_state enable row level security; alter table public.crm_access enable row level security; create or replace function public.crm_access_empty() returns boolean language sql stable security definer set search_path=public as $$ select not exists(select 1 from public.crm_access); $$; create or replace function public.crm_is_active() returns boolean language sql stable security definer set search_path=public as $$ select exists(select 1 from public.crm_access a where lower(a.email)=lower(auth.jwt()->>'email') and a.active); $$; create or replace function public.crm_is_admin() returns boolean language sql stable security definer set search_path=public as $$ select exists(select 1 from public.crm_access a where lower(a.email)=lower(auth.jwt()->>'email') and a.active and a.role='admin'); $$; drop policy if exists "crm_select_own" on public.crm_state; drop policy if exists "crm_insert_own" on public.crm_state; drop policy if exists "crm_update_own" on public.crm_state; drop policy if exists "crm_state_shared_select" on public.crm_state; drop policy if exists "crm_state_shared_insert" on public.crm_state; drop policy if exists "crm_state_shared_update" on public.crm_state; create policy "crm_state_shared_select" on public.crm_state for select using (public.crm_is_active()); create policy "crm_state_shared_insert" on public.crm_state for insert with check (public.crm_is_active()); create policy "crm_state_shared_update" on public.crm_state for update using (public.crm_is_active()) with check (public.crm_is_active()); drop policy if exists "crm_access_select" on public.crm_access; drop policy if exists "crm_access_insert" on public.crm_access; drop policy if exists "crm_access_update" on public.crm_access; drop policy if exists "crm_access_delete" on public.crm_access; create policy "crm_access_select" on public.crm_access for select using (lower(email)=lower(auth.jwt()->>'email') or public.crm_is_admin()); create policy "crm_access_insert" on public.crm_access for insert with check (public.crm_is_admin() or (public.crm_access_empty() and lower(email)=lower(auth.jwt()->>'email'))); create policy "crm_access_update" on public.crm_access for update using (public.crm_is_admin()) with check (public.crm_is_admin()); create policy "crm_access_delete" on public.crm_access for delete using (public.crm_is_admin());