// Validate only the user's selected origins; do not supply prices or services by default. export function workshopBillingProposal(order, services, form) { const selected=order.entries.filter(r=>form.get(`select-${r.id}`)==='on'); if(!selected.length)throw new Error('Marque «Incluir origem integral» em pelo menos uma origem verificada.'); const lines=selected.map(r=>{ const service=services.find(s=>String(s.id)===form.get(`service-${r.id}`)); if(!service)throw new Error(`Origem #${r.id}: seleccione o serviço comercial na lista.`); const price=String(form.get(`price-${r.id}`)??'').trim(); if(!price)throw new Error(`Origem #${r.id}: preencha o preço comercial.`); const source=String(form.get(`source-${r.id}`)??'').trim(); if(source.length<3)throw new Error(`Origem #${r.id}: preencha a fonte comercial e versão (mínimo 3 caracteres).`); return {entry_id:r.id,entry_version:r.version,service_id:service.id,service_version:service.version,price,price_source:source}; }); const evidence=String(form.get('evidence')??'').trim(); if(evidence.length<3)throw new Error('Preencha o fundamento da proposta (mínimo 3 caracteres).'); const last=order.proposals.at(-1); return {version:(last?.version??0)+1,previous_id:last?.id??null,client_id:order.client_id,currency:'MZN',lines,evidence}; }