/expense - Mapeamento de Categorias e Dados Técnicos
Categorias Activas (consolidacao 12-02-2026)
| ID |
Nome |
Fornecedores típicos |
| 1 |
Telecomunicacoes |
MEO |
| 4 |
Alojamento web (Hosting) |
Hetzner, CWP |
| 6 |
Servicos Externos |
Make/Celonis, Gamma |
| 14 |
Subscricoes e Servicos Digitais |
YouTube Premium, BdThemes |
| 28 |
Licencas Software |
Canva, Cursor, Descript, GitHub, Softaculous |
| 30 |
Servicos Cloud e Infraestrutura |
Google One, Google Workspace, ElasticEmail |
| 37 |
Dominios |
PTisp, Namecheap |
| 38 |
Servicos IA e APIs |
Anthropic, OpenRouter, CapSolver, Replicate |
Existem ~30 categorias na BD mas apenas 8 são usadas regularmente. SEMPRE usar get_expense_categories() para lista completa.
Mapeamento Fornecedor → Categoria
| Fornecedor |
Categoria ID |
Nome |
| Anthropic, OpenRouter, CapSolver, Replicate |
38 |
Servicos IA e APIs |
| Canva, Cursor, Descript, GitHub, Softaculous, CWP |
28 |
Licencas Software |
| Google One, Google Workspace, ElasticEmail |
30 |
Servicos Cloud e Infraestrutura |
| Hetzner |
4 |
Alojamento web (Hosting) |
| MEO |
1 |
Telecomunicacoes |
| PTisp, Namecheap |
37 |
Dominios |
| Make/Celonis, Gamma |
6 |
Servicos Externos |
| YouTube Premium, BdThemes |
14 |
Subscricoes e Servicos Digitais |
Mapeamento Email → Categoria
| Dominio Email |
Categoria ID |
Fornecedor |
| anthropic.com |
38 |
Anthropic |
| openrouter.ai |
38 |
OpenRouter |
| payproglobal.com |
38 |
CapSolver |
| replicate.com |
38 |
Replicate |
| cursor.com, anysphere.dev |
28 |
Cursor |
| canva.com |
28 |
Canva |
| descript.com |
28 |
Descript |
| github.com |
28 |
GitHub |
| softaculous.com |
28 |
Softaculous |
| centos-webpanel.com |
28 |
CWP |
| elasticemail.com |
30 |
ElasticEmail |
| google.com (One/Workspace) |
30 |
Google Cloud |
| hetzner.com |
4 |
Hetzner |
| meoempresas.pt |
1 |
MEO |
| namecheap.com |
37 |
Namecheap |
| ptisp.pt |
37 |
PTisp |
| make.com, celonis.com |
6 |
Make/Celonis |
| gamma.app |
6 |
Gamma |
moloni.com NAO incluido - é plataforma de facturação.
Mapeamento Padrão PDF → Categoria
| Padrão no PDF |
Fornecedor |
Categoria ID |
Gondooffice, Cubic Choices |
Gondooffice |
21 Contabilidade |
Autoridade Tributaria, emiteDoc, AT - |
AT |
15 Planos Prestacionais |
Staples, STP_ECOFACTURA |
Staples |
3 Material Escritorio |
MEO, meoempresas |
MEO |
1 Telecomunicacoes |
TOConline, Recibo de Vencimento |
Salario |
22 Salarios |
Seguranca Social |
SS |
25 Contribuicoes SS |
Cursor, Anysphere |
Cursor |
28 Licencas Software |
Anthropic |
Anthropic |
38 Servicos IA e APIs |
Hetzner |
Hetzner |
4 Alojamento web |
ElasticEmail |
ElasticEmail |
30 Servicos Cloud |
Campos create_expense
| Campo |
Tipo |
Obrigatório |
Descrição |
| category_id |
number |
Sim |
ID da categoria |
| amount |
number |
Sim |
Valor da despesa |
| date |
string |
Sim |
Data (YYYY-MM-DD) |
| note |
string |
Sim |
Descrição (incluir ticket ID) |
| reference |
string |
Sim |
Número fatura/recibo |
| tax |
number |
Sim |
ID da taxa (1 = IVA 23%) |
| currency |
number |
Sim |
EUR = 3, USD = 2 |
| send_invoice_to_customer |
number |
Sim |
Sempre 0 |
| client_id |
number |
Não |
Cliente associado |
| project_id |
number |
Não |
Projecto associado |
| billable |
boolean |
Não |
Facturável (default: false) |
Moedas
| ID |
Nome |
Símbolo |
Default |
| 2 |
USD |
$ |
Não |
| 3 |
EUR |
€ |
Sim |
CRITICO: EUR = 3, USD = 2. currency = 1 não existe e causa despesas invisíveis nos relatórios.
Taxas de Imposto
| ID |
Nome |
Taxa |
| 1 |
IVA Tx Normal |
23% |
Comandos SQL
Método 1: Script Python (recomendado)
Retorna JSON com: vendor, cat_id, total, date, invoice, currency, text
Método 2: pdfplumber directo
Método 3: pdftotext (fallback)
Paths de Ficheiros
- Anexos ticket:
/uploads/ticket_attachments/{ticketid}/
- Anexos despesa:
/uploads/expenses/{expenseid}/
- Arquivo mensal:
/media/ealmeida/Dados/GDrive/Cloud/ADM_Descomplicar/Financeiro/Contabilidade/YYYY/NN-NomeMes/
- Credenciais BD:
/home/ealmeida/desk.descomplicar.pt/application/config/app-config.php
Tickets a Saltar
| Tipo |
Descrição |
Acção |
| Payment Receipt |
Recibo de pagamento (não é fatura) |
SALTAR |
| Duplicado |
Mesmo nº fatura já processado |
SALTAR |
| Sem anexo PDF |
Apenas notificação por email |
SALTAR |
Campos para Rastreio de Duplicados
| Campo |
Conteúdo |
Exemplo |
| reference |
Número do recibo |
2810-3712-9577 |
| note |
Incluir ticket ID |
Anthropic Max (ticket #9648) |