Categorias
Histórico Completo
-- Tabela de estoque
create table if not exists estoque_dados (
id text primary key default 'main',
produtos jsonb default '[]',
categorias jsonb default '[]',
historico jsonb default '[]',
subcategorias jsonb default '[]',
prod_id int default 1,
sub_id int default 1000,
hist_id int default 1,
cat_id int default 10,
subcat_id int default 1,
updated_at timestamptz default now()
);
insert into estoque_dados (id) values ('main')
on conflict (id) do nothing;
alter table estoque_dados add column if not exists notas_fiscais jsonb default '[]';
alter table estoque_dados add column if not exists nf_id int default 1;
-- Tabela de checklist, planner e tarefas diárias
create table if not exists checklist_dados (
id text primary key default 'main',
tasks jsonb default '[]',
lists jsonb default '[]',
task_id int default 1,
list_id int default 10,
daily_tasks jsonb default '[]',
daily_done jsonb default '{}',
planner_tasks jsonb default '[]',
planner_done jsonb default '{}',
updated_at timestamptz default now()
);
insert into checklist_dados (id) values ('main')
on conflict (id) do nothing;
-- Tabela de cotações e fornecedores
create table if not exists cotacoes_dados (
id text primary key default 'main',
cotacoes jsonb default '[]',
fornecedores jsonb default '[]',
preco_hist jsonb default '[]',
cot_next_id int default 1,
forn_next_id int default 1,
updated_at timestamptz default now()
);
insert into cotacoes_dados (id) values ('main')
on conflict (id) do nothing;
-- Tabela de perdas · Hortifruti
create table if not exists perdas_dados (
id text primary key default 'main',
perdas jsonb default '[]',
motivos jsonb default '[]',
relatorios jsonb default '[]',
catalogo jsonb default '[]',
horti_selecionados jsonb default '[]',
updated_at timestamptz default now()
);
-- Se a tabela já existia, adiciona a coluna se ainda não existir:
alter table perdas_dados add column if not exists horti_selecionados jsonb default '[]';
-- Garante acesso sem autenticação (anon key):
alter table perdas_dados enable row level security;
drop policy if exists "allow_all_perdas" on perdas_dados;
create policy "allow_all_perdas" on perdas_dados for all using (true) with check (true);
insert into perdas_dados (id) values ('main')
on conflict (id) do nothing;
-- Tabela de equipamentos de comodato (fornecedor é dono, empresa só usa)
create table if not exists comodato_dados (
id text primary key default 'main',
equipamentos jsonb default '[]',
updated_at timestamptz default now()
);
alter table comodato_dados enable row level security;
drop policy if exists "allow_all_comodato" on comodato_dados;
create policy "allow_all_comodato" on comodato_dados for all using (true) with check (true);
insert into comodato_dados (id) values ('main')
on conflict (id) do nothing;
-- ⚡ Tabela de tokens para links curtos de cotação (substitui Storage)
create table if not exists cotacoes_tokens (
token text primary key,
payload jsonb not null,
updated_at timestamptz default now()
);
-- Acesso sem autenticação (anon key)
alter table cotacoes_tokens enable row level security;
drop policy if exists "tokens_allow_all" on cotacoes_tokens;
create policy "tokens_allow_all" on cotacoes_tokens
for all using (true) with check (true);
-- ⚡ Storage: bucket para formulários de cotação (links curtos no WhatsApp)
-- Rode no SQL Editor do Supabase:
insert into storage.buckets (id, name, public, file_size_limit, allowed_mime_types)
values ('formularios', 'formularios', true, 5242880, array['text/html'])
on conflict (id) do nothing;
-- Política de acesso público para leitura dos formulários
drop policy if exists "formularios_public_read" on storage.objects;
create policy "formularios_public_read" on storage.objects
for select using (bucket_id = 'formularios');
-- Política para inserção/atualização via anon key (sem autenticação)
drop policy if exists "formularios_anon_insert" on storage.objects;
create policy "formularios_anon_insert" on storage.objects
for insert with check (bucket_id = 'formularios');
drop policy if exists "formularios_anon_update" on storage.objects;
create policy "formularios_anon_update" on storage.objects
for update using (bucket_id = 'formularios');