import { inputText } from '../lib/input-text.ts'; import { useState } from 'react'; import { newOwnName, switchOwnNameTreatment, ownNameBook, ownNameConditions, ownNameSpecificConditions, ownNameCurrent, ownNameReportRows, ownNameSource, ownNameTreatments, recordOwnNames, saveOwnNameBook, type OwnNameBook, type OwnNameRow, } from '@/lib/iva-own-name'; export function SimulationOwnName({ draft, onChange, }: { draft: Record; onChange: (field: string, value: string) => void; }) { const [error, setError] = useState(''); let book: OwnNameBook; try { book = ownNameBook(draft); } catch (cause) { return

{String(cause)}

; } const save = (next: OwnNameBook) => { try { onChange('modelo_a_snapshot', saveOwnNameBook(draft, next)); setError(''); } catch (cause) { setError(String(cause)); } }; const change = (id: string, patch: Partial) => save({ ...book, rows: book.rows.map((row) => row.id === id ? { ...row, ...patch } : row, ), }); return (
Comissão e mandato — circuitos emnome próprio

Oportunidade:{' '} {inputText(draft.context_opportunity || 'entrada geral')}. Venda/prestação:mandante ou comitente → agente → terceiro. Aquisição:terceiro → agente → mandante ou comitente. Nos serviços,o mandatário emnome próprio é adquirente eprestador sucessivamente;nos bens,os papéis dependem da comissão de compra ou venda.

Conserve as contraprestações originais das duas relações separadas. Este percurso não as soma,não calcula imposto nem dedução e não cria uma comissão autónoma. A base de comissões de bensP091já entregue mantém o seu cálculo e histórico próprios.

{ownNameSource}

{error &&

{error}

} {book.rows.map((row) => (
{row.description || 'Circuito por identificar'} —{' '} {row.period || 'mês por indicar'}
{( [ ['description', 'Circuito identificado'], [ 'operationRef', 'Referência da operação / pressuposto', ], [ 'operationDate', 'Data da operação / prevista', ], ['period', 'Mês da operação'], [ 'documentRef', 'Documento / referência da previsão', ], [ 'documentDate', 'Data do documento / prevista', ], [ 'principalRef', 'Mandante ou comitente e referência', ], [ 'agentRef', 'Comissário ou mandatário e referência', ], ['thirdPartyRef', 'Terceiro e referência'], [ 'contractRef', 'Contrato de comissão ou mandato', ], [ 'subjectRef', 'Bens ou serviço e âmbito do objecto', ], [ 'currency', 'Moeda original das contraprestações', ], [ 'firstAmount', 'Contraprestação original da relação1', ], ['firstLegRef', 'Referência da relação1'], [ 'secondAmount', 'Contraprestação original da relação2', ], ['secondLegRef', 'Referência da relação2'], [ 'scope', 'Âmbito:partes,objecto,operação eperíodo', ], [ 'evidence', 'Fundamento factual / pressupostos', ], ] as const ).map(([field, label]) => ( ))} {ownNameTreatments.find((t) => t.id === row.treatment) ?.kind === 'goods' && ( )}

As relações seguem a ordem indicada no sentido escolhido;contraprestação desconhecida não é zero. A referênciaP091é reutilizável e não constitui nova exigência para identificar o circuito. Mudar sentido/natureza conserva partes,contrato,valores e referências,mas exige rever os factos próprios.

Factos próprios do circuito {[ ...ownNameConditions, ...ownNameSpecificConditions(row.treatment), ].map(([key, label]) => ( ))}
))} {!!book.rows.length && ( )} {book.result && ( <>

{ownNameCurrent(draft, book) ? 'Circuitos correspondentes às entradas guardadas.' : 'Entradas alteradas;circuitos históricos conservados. Reveja e identifique novamente.'}{' '} {book.history?.length ?? 0} versões anteriores. Duas relações separadas,sem soma de bases,IVA ou dedução/campo11.

{ownNameReportRows(draft).map( ([, label, value, origin], index) => (
{label}
{value} {origin}
), )}
)}
); }