Files
claude-plugins/crm-ops/skills/expense/references/ticket-processing.md
Emanuel Almeida 6b3a6f2698 feat: refactor 30+ skills to Anthropic progressive disclosure pattern
- All SKILL.md files now <500 lines (avg reduction 69%)
- Detailed content extracted to references/ subdirectories
- Frontmatter standardised: only name + description (Anthropic standard)
- New skills: brand-guidelines, spec-coauthor, report-templates, skill-creator
- Design skills: anti-slop guidelines, premium-proposals reference
- Removed non-standard frontmatter fields (triggers, version, author, category)

Plugins affected: infraestrutura, marketing, dev-tools, crm-ops, gestao,
core-tools, negocio, perfex-dev, wordpress, design-media

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 15:05:03 +00:00

2.8 KiB

/expense - Processamento de Despesas de Tickets

Regras

  1. Processar tickets UM A UM com confirmacao do utilizador (ou em lote se solicitado)
  2. Verificar SEMPRE se despesa ja foi lancada (prevenir duplicados)
  3. NAO adicionar respostas aos tickets - apenas criar despesa e anexos
  4. Manter valor original na moeda do documento (EUR=3, USD=2)
  5. Saltar tickets que sao apenas recibos de pagamento (nao sao facturas)

Protocolo Ticket a Ticket

1. Obter ticket: get_ticket(ticket_id)
2. Verificar anexos: SELECT * FROM tblticket_attachments WHERE ticketid = X
3. SE nao tem PDFs: SALTAR ticket (apenas notificacao)
4. VERIFICAR DUPLICADOS (OBRIGATORIO):
   SELECT id, amount, date, note FROM tblexpenses
   WHERE reference_no LIKE '%{receipt_number}%' OR note LIKE '%ticket #{ticket_id}%'
   SE encontrar: PARAR e informar "Despesa ja existe: #ID"
5. Extrair dados:
   - Do HTML do ticket (valor, data, referencia)
   - OU usar script Python: python3 /home/ealmeida/scripts/extract_invoice_data.py {pdf_path}
6. APRESENTAR resumo ao utilizador e AGUARDAR confirmacao
7. Apos confirmacao:
   a. SQL: INSERT INTO tblexpenses (..., send_invoice_to_customer, ...) VALUES (..., 0, ...)
      OU create_expense via MCP (se disponivel)
   b. UPDATE tblexpenses SET expense_name = '{Fornecedor}' WHERE id = {id}
   c. mcp__ssh-unified__ssh_execute: mkdir -p uploads/expenses/{expenseid}
   d. mcp__ssh-unified__sftp_upload: PDF para uploads/expenses/{expenseid}/
   e. mcp__ssh-unified__ssh_execute: chown -R ealmeida:ealmeida uploads/expenses/{expenseid}
   f. SQL: INSERT INTO tblfiles (rel_id, rel_type, file_name, filetype,
      visible_to_customer, staffid, contact_id, dateadded)
      VALUES ({id}, 'expense', '{file}', 'application/pdf', 0, 1, 0, NOW())
   g. Mover PDF para arquivo mensal: Contabilidade/YYYY/NN-NomeMes/
8. Confirmar ao utilizador e passar ao proximo

Processamento em Lote

Se utilizador pedir "criar todas" ou "processar em lote":

  1. Obter todos os tickets pendentes em paralelo
  2. Identificar duplicados e tickets a saltar
  3. Criar despesas em paralelo via create_expense
  4. Actualizar expense_name e reference_no em batch via SQL
  5. Copiar PDFs em batch
  6. Registar ficheiros em batch via SQL INSERT multiplo

Tickets a Saltar

Tipo Descricao Accao
Payment Receipt Recibo de pagamento (nao e fatura) SALTAR
Duplicado Mesmo numero fatura ja processado SALTAR
Sem anexo PDF Apenas notificacao por email SALTAR

Exemplos:

  • "Invoice Payment Confirmation" (e recibo, nao fatura)
  • Ticket com mesmo invoice_number de outro ja processado

Credenciais Base de Dados

Localizacao: /home/ealmeida/desk.descomplicar.pt/application/config/app-config.php

grep -E "APP_DB" /home/ealmeida/desk.descomplicar.pt/application/config/app-config.php