Files
SGF/resources/js/ComposedAccountingWorkspace.jsx
T
2026-11-11 09:00:17 +02:00

17 lines
5.0 KiB
React

import React from 'react';
import {accountingSections,visibleAccountingSections} from './accounting-menu.js';
const LedgerReportsWorkspace=React.lazy(()=>import('./LedgerReportsWorkspace.jsx'));
export default function ComposedAccountingWorkspace({section,context,can,navigate,api}){
const active=accountingSections.find(s=>s.id===section),unit=context.unit.id;
const links=<div className="actions"><a href="/general-ledger">Diário, origens e decisões</a><button onClick={()=>navigate('accounting_analysis')}>Balancete e razão por período</button><button onClick={()=>navigate('accounting_review')}>Conferências disponíveis</button></div>;
return <div className="accounting-menu-workspace"><div className="page-title"><p className="eyebrow">CONTABILIDADE</p><h1>{active.label}</h1><p>{context.company.name} / {context.unit.name}</p></div><nav className="accounting-tabs" aria-label="Submenus de contabilidade">{visibleAccountingSections(can).map(s=><button key={s.id} aria-current={s.id===section?'page':undefined} onClick={()=>navigate(s.id)}>{s.label}</button>)}</nav>
{section==='accounting_analysis'?<React.Suspense fallback={<p role="status">A abrir relatórios…</p>}><LedgerReportsWorkspace key={context.token} context={context} api={api}/></React.Suspense>:<>
{section==='accounting_panel'&&<section className="panel"><h2>Do documento ao relatório</h2><p>O diário reúne origens autorizadas de Compras, Comercial, Oficinas e Stock. Cada aplicação exige origem actual, preparação, revisão distinta e confirmação individual. Um documento preparado não é um lançamento aplicado.</p>{links}<h3>Como conferir</h3><ol><li>Abra a origem e a respectiva proposta no diário.</li><li>Confira a revisão, fundamento, data e contas.</li><li>Consulte o balancete no intervalo pretendido e abra o razão da conta.</li><li>Conserve as correcções e a ligação ao original; não elimine movimentos anteriores.</li></ol></section>}
{section==='accounting_daily'&&<section className="panel"><h2>Lançamentos e origens</h2><p>No diário pode conferir propostas, revisões, lançamentos aplicados e correcções. A repetição de uma operação recupera o mesmo resultado; uma versão alterada exige nova conferência.</p>{links}<p>O acesso de consulta não concede preparação, revisão ou aplicação. As funções responsáveis mantêm os poderes já aprovados para o exercício QA.</p></section>}
{section==='accounting_review'&&<section className="panel"><h2>Conferir com a fonte responsável</h2><p>Escolha o percurso cuja origem pretende conferir. As contas contabilísticas e as fontes auxiliares conservam os seus estados e permissões próprios.</p><a href="/general-ledger">Revisões, correcções e evidências no diário</a><div className="actions">{can('fiscal_assessments.view',unit)&&context.fiscal_qa_enabled&&<button onClick={()=>navigate('fiscal_iva')}>Livro e mapa interno de IVA QA</button>}{can('fiscal_rules.view',unit)&&context.fiscal_rules_qa_enabled&&<button onClick={()=>navigate('fiscal_rules')}>Versões e cálculos fiscais internos</button>}{can('bank_reconciliation.view',unit)&&context.bank_qa_enabled&&<button onClick={()=>navigate('bank_reconciliation')}>Escolher Financeiro e conferir extracto</button>}</div><p>Sem reconciliação bancária geral, apuramento integral de impostos ou eliminação automática de diferenças. Cada correspondência e decisão continua individual.</p></section>}
{section==='accounting_closing'&&<section className="panel"><h2>Conferência do período</h2><p>O percurso existente no diário permite consultar factos, pendências, revisão distinta e estado do período QA. Consultar não fecha nem reabre o período. O fecho do exemplo foi ensaiado com reversão da transacção; a instalação conserva o estado já aprovado.</p><a href="/general-ledger">Abrir diário e conferência do período</a><p>Depreciações, câmbio, acréscimos, diferimentos e fecho legal da empresa exigem tratamento próprio; não são gerados por este ecrã. Reabertura permanece fora do âmbito autorizado.</p></section>}
{section==='accounting_configuration'&&<section className="panel"><h2>Contas, classificações e regras</h2><a href="/general-ledger">Pesquisar contas no plano do livro integrado</a><div className="actions">{can('catalogue_accounting.view')&&<button onClick={()=>navigate('catalogue_accounting')}>Classificação contabilística e histórico</button>}{can('service_fiscal.view')&&<button onClick={()=>navigate('service_fiscal')}>Perfis fiscais e cobertura</button>}{can('fiscal_rules.view',unit)&&context.fiscal_rules_qa_enabled&&<button onClick={()=>navigate('fiscal_rules')}>Fontes e regras versionadas</button>}</div><p>Classificação, conta e regra fiscal são decisões diferentes. Uma referência legal por conferir não se transforma numa regra activa. Alterações estruturais exigem os direitos e revisões existentes.</p></section>}
</>}
<p className="help">Exercício local com contas e documentos de teste. Não representa demonstrações financeiras legais, emissão fiscal ou autorização de operações reais.</p></div>;
}