import { inputText } from '../lib/input-text.ts'; import { SimulationOfferWorkflow } from './simulation-offer-workflow'; import { useState } from 'react'; import { newOfferPreparation, offerPreparationBook, offerPreparationSource, offerReusableData, recordOfferPreparations, reuseOfferData, saveOfferPreparationBook, emptyOfferRequest, recordOfferRequest, offerRequestLabels, offerScenarios, type OfferRequest, type OfferPreparation, type OfferPreparationBook, } from '@/lib/iva-offer-preparations'; export function SimulationOfferPreparations({ draft, onChange, }: { draft: Record; onChange: (field: string, value: string) => void; }) { const [error, setError] = useState(''); let book: OfferPreparationBook; let reusable: ReturnType; try { book = offerPreparationBook(draft); reusable = offerReusableData(draft); } catch (cause) { return

{String(cause)}

; } const run = (action: () => void) => { try { action(); setError(''); } catch (cause) { setError(String(cause)); } }; const save = (next: OfferPreparationBook) => onChange('modelo_a_snapshot', saveOfferPreparationBook(draft, next)); const change = (id: string, patch: Partial) => run(() => save({ ...book, rows: book.rows.map((row) => row.id === id ? { ...row, ...patch } : row, ), }), ); const question = ( row: OfferPreparation, key: | 'nationalInstitution' | 'publicSocialInstitution' | 'goodsSuitable' | 'publicInterestUse' | 'mitigation', label: string, ) => ( ); return (
Ofertas a instituições e para calamidades — preparar rascunhos

Prepare apenas as ofertas relevantes para a oportunidade{' '} {inputText(draft.context_opportunity || 'entrada geral')}. Pode guardar dados incompletos e reutilizar referências existentes. A reutilização preenche apenas campos vazios; as suas edições mantêm-se.

Procedimento operacional indicado pela Tempo:prepare o pedido escrito,registe a apresentação externa,a decisão com despacho e o formulário aplicável. Antes do deferimento,compare o cenário normal com uma hipótese condicionada. Apresentar o pedido não concede isenção. Estes cenários não alteram a dedução no campo11; os restantes enquadramentos continuam disponíveis.

{error &&

{error}

} {' '} {book.rows.map((row) => (
{row.branch} —{' '} {row.description || 'Bens por identificar'}

{row.branch === 'P084' ? 'Artigo14(2)(a): aquisição ou importação de bens para ofertas a instituições nacionais de interesse público e relevantes fins sociais.' : 'Artigo14(2)(b): aquisição de bens para ofertas destinadas a atenuar efeitos de calamidades naturais.'}{' '} {offerPreparationSource}

{row.branch === 'P084' && ( )} {row.reusedFrom && (

Referência reutilizada: {row.reusedFrom.key}. A origem foi conservada; a aquisição/importação original não foi alterada.

)}
{( [ 'description', 'period', 'currency', 'amount', 'counterparty', 'documentRef', 'documentDate', 'beneficiary', 'purpose', 'evidence', ] as const ).map((key, index) => ( ))}
{row.branch === 'P084' ? (
Condições próprias da oferta à instituição {question( row, 'nationalInstitution', 'A instituição beneficiária é nacional', )} {question( row, 'publicSocialInstitution', 'A instituição tem interesse público e relevantes fins sociais', )} {question( row, 'goodsSuitable', 'Os bens são inteiramente adequados à natureza da instituição', )} {question( row, 'publicInterestUse', 'A instituição utilizará os bens em actividades de evidente interesse público', )}
) : (
Finalidade própria da oferta para calamidade {question( row, 'mitigation', 'Os bens destinam-se a ofertas para atenuar os efeitos da calamidade identificada', )}
)} {row.branch === 'P085' && (