// Classificacao partilhada de "este artigo move stock?" (produto vs
// servico) — usada por facturas.tsx, vendas-dinheiro.tsx e notas.tsx.
// Antes cada ficheiro tinha a sua propria copia com defaults diferentes
// para o caso ambiguo de artigo.tipo em branco/invalido: Factura so
// movimentava com tipo==='produto' explicito (fail-closed), VD so deixava
// de movimentar com tipo==='servico' explicito (fail-open), e notas.tsx
// nem tinha a rede de seguranca do codigo SERV. Um artigo com tipo em
// branco comportava-se de forma diferente consoante o documento usado
// para o vender.

export function codigoIndicaServico(codigo?: unknown): boolean {
  return /^SERV/i.test(String(codigo || '').trim());
}

export function artigoMovimentaStock(
  artigo: any,
  item?: { codigo?: string; artigoId?: string },
): boolean {
  if (!artigo) return false;

  if (
    codigoIndicaServico(artigo.codigo) ||
    codigoIndicaServico(item?.codigo) ||
    codigoIndicaServico(item?.artigoId)
  ) {
    return false;
  }

  return String(artigo.tipo || '').trim().toLowerCase() === 'produto';
}
