import {useState} from 'react'; import {newCommissionBase,switchCommissionDirection,commissionBaseBook,commissionBaseConditions,commissionBaseCurrent,commissionBaseReportRows,commissionBaseSource,commissionBaseTreatments,recordCommissionBases,saveCommissionBaseBook,type CommissionBaseBook,type CommissionBaseRow} from '@/lib/iva-commission-base'; export function SimulationCommissionBase({draft,onChange}:{draft:Record;onChange:(field:string,value:string)=>void}){ const[error,setError]=useState('');let book:CommissionBaseBook; try{book=commissionBaseBook(draft);}catch(cause){return

{String(cause)}

;} const save=(next:CommissionBaseBook)=>{try{onChange('modelo_a_snapshot',saveCommissionBaseBook(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
Base tributável — bens em comissão de venda ou compra

Oportunidade: {String(draft.context_opportunity||'entrada geral')}. Prepare apenas transferências de bens entre comitente e comissário em execução do contrato de comissão, incluindo consignação quando aplicável. Não é o IVA de um serviço autónomo de intermediação nem uma regra para qualquer pagamento de comissão.

Comissão de venda: preço de venda acordado pelo comissário menos comissão. Comissão de compra: preço de compra acordado pelo comissário mais comissão. Indique valores sem IVA, antes deste ajuste, e as referências da operação; montantes em falta não são zero. Base não determina incidência, taxa ou imposto.

{commissionBaseSource}

{error&&

{error}

} {book.rows.map(row=>{const rule=commissionBaseTreatments.find(item=>item.id===row.treatment);return
{row.description||'Transferência por identificar'} — {row.period||'mês por indicar'}
{([['description','Bens e operação identificados'],['principal','Comitente'],['agent','Comissário'],['agreementRef','Contrato de comissão / referência da previsão'],['documentRef','Documento da operação / referência da previsão'],['documentDate','Data do documento / prevista'],['period','Mês da operação'],['currency','Moeda de origem'],['compositionRef','Referência da composição sem IVA — inclusões e exclusões aplicáveis'],['evidence','Fundamento factual / pressupostos']] as const).map(([field,label])=>)} {rule&&<>}

Mudar de sentido conserva os valores e referências, mas exige confirmar os papéis e o preço correspondente ao novo sentido antes de determinar a base. As versões anteriores mantêm-se.

{rule?
Condições próprias da base de comissão{commissionBaseConditions.map(([key,label])=>)}
:

Escolha o sentido para apresentar o preço e as condições aplicáveis;os valores anteriores conservam-se.

}
;})} {!!book.rows.length&&} {book.result&&<>

{commissionBaseCurrent(draft,book)?'Bases de comissão correspondentes às entradas guardadas.':'Entradas alteradas;bases de comissão históricas conservadas. Reveja e determine novamente.'} {book.history?.length??0} versões anteriores. IVA e campo11 não são preenchidos por estas bases.

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