Files
SGF/resources/js/workshop-report-view.js
2026-11-11 09:00:17 +02:00

13 lines
2.2 KiB
JavaScript

import {workshopStates} from './workshop-menu.js';
export function checkedWorkshopReport(data,query){
if(data.read_only!==true||data.states_are!=='current_resource_records_not_delivery_or_payment'||!Array.isArray(data.orders?.data)||data.orders.current_page!==query.page||data.orders.data.length>Number(query.per_page))throw Error('A resposta não corresponde à página de ordens pedida.');
if(query.equipment_id&&data.equipment?.id!==Number(query.equipment_id))throw Error('A resposta pertence a outro equipamento. Consulte novamente.');
if(query.from&&(data.opening_period?.from!==query.from||data.opening_period?.to!==query.to||data.opening_period?.basis!=='order_created_at_current_records'||data.opening_period?.zone!=='Africa/Johannesburg'))throw Error('O período da resposta mudou. Consulte novamente.');
if(!query.from&&data.opening_period!==null)throw Error('Período inesperado na consulta.');
return data;
}
export function workshopPageCsv(data,query){
checkedWorkshopReport(data,query);const cell=v=>'"'+String(v??'').replaceAll('"','""')+'"',text=v=>"'"+String(v??''),p=data.opening_period;
return [['SGF QA — ORDENS DE OFICINA — APENAS ESTA PAGINA'],['Periodo de abertura',p?.from??'Sem corte',p?.to??'Sem corte','Zona',p?.zone??'UTC da origem'],['Base','Apontamentos actuais; NAO E FECHO DIARIO, ENTREGA OU SALDO HISTORICO'],['Equipamento escolhido',text(data.equipment?.identifier??'Sem filtro individual'),text(data.equipment?.description),text(data.equipment?.client_name)],['Leitura',data.observed_at],['Pagina',data.orders.current_page,'de',data.orders.last_page,'Total de ordens do filtro',data.orders.total],['Filtros',JSON.stringify(query)],['Ordem','Cliente actual','Equipamento actual','Descricao actual','Serie','Responsavel actual','Abertura na origem','Estado dos apontamentos','Apontamentos actuais','Sem verificacao favoravel','Minutos apontados','Minutos verificados'],...data.orders.data.map(r=>[text(r.reference),text(r.client),text(r.equipment),text(r.description),text(r.serial),text(r.technician),text(r.created_at),workshopStates[r.state]??text(r.state),r.points,r.points_not_verified,r.minutes_reported,r.minutes_verified])].map(row=>row.map(cell).join(';')).join('\r\n')+'\r\n';
}