import React,{useEffect,useRef,useState} from 'react'; import {moduleGuides,overviewSources,overviewPage} from './workspace-overview.js'; export function OverviewRecords({source,result,navigate}){ return <>{result.facts?.length>0&&
{result.facts.map(f=>
{f.label}
{f.value}
)}
}

{result.total} registo(s) nesta fonte autorizada · página {result.page} de {result.last}.{result.observed&&` Referência da fonte: ${result.observed}.`}

{result.rows.map((r,i)=>)}
Referência e descriçãoEstado ou entidadeValor ou identificaçãoEvidência
{r.reference}{r.detail}{r.state}{r.value}{r.evidence}
{!result.rows.length&&

Nenhum registo nesta página e fonte autorizadas.

}

{source.href?Abrir consulta completa, documentos e histórico:}

; } export default function WorkspaceHome({context,groups=[],can=()=>false,api,navigate=()=>{},openPage=()=>{}}) { const sources=overviewSources(context,can),guide=moduleGuides[context.module_id]; const [selection,setSelection]=useState(''),[result,setResult]=useState(null),[error,setError]=useState(''),[loading,setLoading]=useState(false);const generation=useRef(0); useEffect(()=>{generation.current++;setSelection('');setResult(null);setError('');setLoading(false);return()=>{generation.current++;};},[context.token]); const source=sources.find(s=>s.id===selection); async function load(s,page=1){const current=++generation.current;setSelection(s.id);setResult(null);setError('');setLoading(true);try{const r=await api(s.path+(s.path.includes('?')?'&':'?')+'page='+page);const value=overviewPage(s,r);if(current===generation.current)setResult(value);}catch(e){if(current===generation.current)setError(e.message);}finally{if(current===generation.current)setLoading(false);}} const activeGroups=groups.filter(g=>!['start','admin'].includes(g.id)); return

ÁREA DE TRABALHO

{guide?guide.label:'Início do SGF'}

{guide?.purpose??'Escolha um módulo e uma função autorizada para trabalhar com os seus documentos.'}

{context.company.name}{context.unit&&` / ${context.unit.name}`}. Informação limitada ao contexto e à função actuais.

{!context.unit&&

Seleccione uma unidade para consultar os percursos de trabalho dessa unidade.

} {guide&&

Do primeiro registo à evidência final

    {guide.steps.map(s=>
  1. {s}
  2. )}
O que comprova o percurso
{guide.evidence}
Como interpretar a informação
{guide.boundary}
Ligação à etapa seguinte
{guide.next}
} {!!sources.length&&

Informação existente neste módulo

Escolha a fonte a consultar. A leitura não prepara nem repete operações; cada página traz até25 registos (requisições:15). Os valores são apresentados individualmente.

{sources.map(s=>)}
{loading&&

A consultar a fonte autorizada…

}{error&&

{error}

Não é possível concluir que existem zero registos ou saldo zero.

}{source&&result&&<>

{source.label}

Leitura actual por página, sem fotografia global entre páginas. Eventos de preparação/revisão não são movimentos financeiros; não se somam os valores desta lista.

}
} {activeGroups.length>0&&

Funções disponíveis para o seu trabalho

{activeGroups.map(g=>

{g.label}

{g.items.map(i=>)}
)}
}

Continuidade entre módulos

A mudança de módulo é explícita e conserva os controlos de acesso. Cada entrada abaixo oferece apenas as funções já autorizadas para a sua conta.

{(context.modules??[]).map(m=>{const g=moduleGuides[m.id];return

{m.label}

{g?.purpose}

{g?.next}

;})}
{context.single_installation&&

Instalação local com dados fictícios. As consultas mostram os registos existentes; mapas fiscais internos e indicadores de ensaio não comprovam conformidade legal ou operação real.

}
; }