{"context":{"domain":"roue"},"layers":{"ApplicationLayer":{"reference":"ApplicationLayer","availableInstances":[{"reference":"ComponentsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"SystemsDataSet","params":{"filter":{"domain":"data2"},"pagination":{"size":1},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSource"}}}},{"reference":"ExternalComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"SystemsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5e3b796d6228227ca637d0f4","name":"data2","domain":"data2","organization":"62292184611f480b3191c37c","visibility":"public","updatedAt":"2026-07-27T14:19:36.810Z"}]}},{"reference":"OrganizationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"DataComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"OneFileComponentInstancesDataSet","params":{"pagination":{"size":1},"master":{"dataset":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSet"}},"localField":"system","masterField":"_id"},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"FileComponentInstancesDataSource"}}}},{"reference":"ApplicationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ServiceComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@Data2TableDataSource","reference":"FileComponentInstancesDataSource","params":{"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}}]}},{"component":"data2-core@MemoryDataSource","reference":"EmptyDataSource","params":{"initialData":[]}},{"reference":"ComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"UserComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"DataComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ServiceComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ExternalComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ApplicationsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}}],"processesParams":{}},"HostApplicationLayer":{"reference":"HostApplicationLayer","availableInstances":[{"_id":"5f15ff190528b92601890f71","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"SystemsTableDataSource"}},"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"domain"}}},"pk":"_id","fields":[{"component":"data2-core-types@FieldReference","params":{"key":"_id"}},{"component":"data2-core-types@FieldReference","params":{"key":"name"}},{"component":"data2-core-types@FieldReference","params":{"key":"domain"}},{"component":"data2-core-types@FieldReference","params":{"key":"visibility"}},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization._id"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.name"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.billingStatus"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.publicTrial.active"}}},"break":true}],"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"staticPagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"policies":[{"component":"data2-core-auth@Policy","params":{"allow":{"params":{"actions":[{"params":{"components":[{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"_id"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"domain"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"}]},"component":"data2-core-logical-operators@Or"}]},"component":"data2-core-flow@Series"}}}]},"reference":"SystemsDataSet","updatedAt":"2025-11-05T19:23:47.135Z","createdAt":"2020-07-20T20:31:21.838Z"},{"_id":"5f1601ce0528b92601890f7c","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":1000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"sort":{"params.package":1,"params.component":1},"pk":"_id","autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"staticFilter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}},"filter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}}},"reference":"ComponentsDataSet","updatedAt":"2025-11-05T19:37:01.935Z","createdAt":"2020-07-20T20:42:54.898Z"},{"_id":"5f9041dbc8da12be8b94aea4","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":2000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"UserComponentsDataSet","updatedAt":"2025-11-06T21:06:58.095Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"65d8c4fabc9dbb8f94de8d53","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ExternalComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ExternalComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:23.742Z","createdAt":"2024-02-23T16:17:01.816Z"},{"reference":"SystemsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6138ba0292425036c3b32255","name":"roue","domain":"roue","visibility":"public","updatedAt":"2026-07-27T14:19:36.810Z"}]}},{"reference":"ComponentsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5f52a278a575399a45d239b4","component":"data2-core-types@Component","params":{"package":"data2-core-primitives","component":"Router","interactions":{"component":"data2-core-types@FieldSet","params":{"fields":{"goBack":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.goBack","args":[]}}}},"icon":{"component":"data2-core-primitives@String","params":{"content":"arrow-left"}},"visibility":"public"}},"goTo":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"component":"data2-core-types@Reference","params":{"reference":"url"}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}}}]}},"parameters":[{"component":"data2-core-primitives@String","params":{"content":"url"}},{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}]},"break":true},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Path to route"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Path to redirect user"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Boolean"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Preserve Query"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Preserve query string parameters  preserve query parameters on navigating."}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"}]}},"open":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"pathname":{"component":"data2-core-types@Reference","params":{"reference":"value"}}}]}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}]}},"close":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":"close"}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"times"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}],"description":{"component":"data2-core-primitives@String","params":{"content":"Closes a window that was opened via router.open."}}}}}}}}},{"_id":"620d28658271aa4129919d89","component":"data2-core-types@Component","params":{"package":"data2-interface-services","component":"DeviceController","interactions":{"params":{"fields":{"postMessage":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@String","title":{"component":"data2-core-primitives@String","params":{"content":"data"}}}}]},"component":"data2-core-types@ComponentParameter"},"print":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"zoom":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Number"}},"title":{"component":"data2-core-primitives@String","params":{"content":"zoom"}},"visibility":"public"}}},"visibility":"public"},"component":"data2-core-types@ComponentParameter"}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"share":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}}},"component":"data2-core-types@ComponentParameter"},"clipboard.copy":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"clipboard.paste":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"download":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}]},"component":"data2-core-types@ComponentParameter"},"downloadUrl":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Url"}}}}]},"component":"data2-core-types@ComponentParameter"},"promptFiles":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"params":{"fields":{"multiple":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Multiple"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Whether or not to allow selecting multiple files"}},"component":"data2-core-primitives@Boolean"}},"acceptedFormats":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Accepted Formats"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Accepted file formats"}},"component":"data2-core-primitives@String","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},"timeout":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Timeout"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Max milliseconds to wait for file upload"}},"component":"data2-core-primitives@Number"}}}},"component":"data2-core-types@FieldSet"}}}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"meetingRecord":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","definition":{"params":{"actions":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"meeting"}},"script":{"component":"data2-core-primitives@String","params":{"content":"(function() {\n  let mediaRecorder;\n  let audioChunks = [];\n  let combinedStream;\n  let audioContext;\n  \n  window.meetingCapture = async function() {\n    try {\n      // Solicitar acesso ao áudio da guia (e vídeo, que será ignorado depois)\n      const tabStream = await navigator.mediaDevices.getDisplayMedia({ \n        video: true, // Necessário para alguns navegadores\n        audio: true\n      });\n      \n      // Remover a trilha de vídeo\n      const tabAudioTrack = tabStream.getAudioTracks()[0];\n      \n      // Solicitar acesso ao microfone\n      const micStream = await navigator.mediaDevices.getUserMedia({ audio: true });\n      const micAudioTrack = micStream.getAudioTracks()[0];\n      \n      // Criar um novo MediaStream com ambas as trilhas de áudio\n      combinedStream = new MediaStream([tabAudioTrack, micAudioTrack]);\n      \n      // Criar um contexto de áudio para misturar os streams\n      audioContext = new AudioContext();\n      const destination = audioContext.createMediaStreamDestination();\n      \n      // Conectar a trilha de áudio da guia\n      const tabSource = audioContext.createMediaStreamSource(new MediaStream([tabAudioTrack]));\n      tabSource.connect(destination);\n      \n      // Conectar a trilha de áudio do microfone\n      const micSource = audioContext.createMediaStreamSource(new MediaStream([micAudioTrack]));\n      micSource.connect(destination);\n      \n      // Iniciar gravação com o stream misturado\n      mediaRecorder = new MediaRecorder(destination.stream);\n      audioChunks = [];\n      mediaRecorder.ondataavailable = (e) => audioChunks.push(e.data);\n      mediaRecorder.start();\n      \n      console.log('Gravação iniciada. Chame meetingCaptureStop() para finalizar.');\n    } catch (error) {\n      console.error('Erro ao iniciar a captura:', error);\n    }\n  };\n  \n  window.meetingCaptureStop = function() {\n    return new Promise((resolve, reject) => {\n      if (!mediaRecorder) {\n        reject('Nenhuma gravação em andamento.');\n        return;\n      }\n      \n      mediaRecorder.onstop = () => {\n        const audioBlob = new Blob(audioChunks, { type: 'audio/webm' });\n        combinedStream.getTracks().forEach(track => track.stop());\n        audioContext.close();\n        \n        resolve(audioBlob);\n        console.log('Gravação finalizada. O arquivo de áudio está pronto para upload.');\n      };\n      \n      mediaRecorder.stop();\n    });\n  };\n})();"}}},"component":"data2-core-web@Script"},{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCapture"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"meetingRecordStop":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}],"definition":{"params":{"actions":[{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCaptureStop"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"notify":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"private","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","parameters":{"title":{"params":{"component":"data2-core-primitives@String","index":{"component":"data2-core-primitives@Number","params":{"content":0}},"title":{"component":"data2-core-primitives@String","params":{"content":"title"}}},"component":"data2-core-types@ComponentParameter"},"sound":{"params":{"component":"data2-core-types@FileComponentUrlReference","index":{"component":"data2-core-primitives@Number","params":{"content":1}},"title":{"component":"data2-core-primitives@String","params":{"content":"sound"}}},"component":"data2-core-types@ComponentParameter"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}}]},"component":"data2-core-types@ComponentParameter"}}},"component":"data2-core-types@FieldSet"}}},{"_id":"6a2f4cb9ccdaee8ef6410a92","component":"data2-core-types@Component","system":"6138ba0292425036c3b32255","params":{"extends":"data2-core-primitives@Block","component":"kRoueGrid","package":"roue","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"export default {\n  css: `\n    :host{display:block;height:100%;background:#0d0d0d;--red:#c8102e;--gold:#dcb42b;}\n    .wrap{height:100%;display:flex;flex-direction:column;background:#0d0d0d;color:#f4f1ea;font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;padding:44px 46px 0;box-sizing:border-box;max-width:1360px;margin:0 auto;width:100%;overflow:hidden;position:relative;}\n    .tick{width:36px;height:3px;background:var(--red);margin-bottom:14px;}\n    .head{display:flex;justify-content:space-between;align-items:flex-end;}\n    h1{margin:0;font-size:52px;font-weight:800;letter-spacing:-2.5px;line-height:.95;}\n    .eyebrow{margin-top:14px;font-size:11px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);}\n    .right{display:flex;flex-direction:column;align-items:flex-end;gap:12px;}\n    .search{display:flex;align-items:center;gap:8px;background:rgba(244,241,234,0.04);border:1px solid rgba(244,241,234,0.12);padding:9px 13px;min-width:240px;}\n    .search input{background:transparent;border:0;outline:none;color:#f4f1ea;font-size:13px;width:100%;letter-spacing:.5px;}\n    .act{background:transparent;border:1px solid var(--red);color:var(--red);font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px 18px;cursor:pointer;}\n    .act:active{transform:translateY(1px);}\n    .grid{flex:1;display:flex;flex-direction:column;margin-top:24px;min-height:0;}\n    .hrow{display:flex;padding:0 0 10px;border-bottom:1px solid rgba(244,241,234,0.1);}\n    .hrow .h{font-size:9px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);cursor:pointer;white-space:nowrap;}\n    .hrow .h.on{color:var(--gold);}\n    .body{flex:1;overflow:auto;}\n    .row{display:flex;align-items:center;border-bottom:1px solid rgba(244,241,234,0.06);min-height:60px;}\n    .row:hover{background:rgba(244,241,234,0.02);}\n    .cell{padding:10px 6px;overflow:hidden;}\n    .c-code{font-size:11px;letter-spacing:1.8px;font-weight:700;color:rgba(220,180,43,0.85);text-transform:uppercase;}\n    .c-strong{font-size:16px;font-weight:700;}\n    .c-text{font-size:14px;font-weight:600;}\n    .c-muted{font-size:10px;letter-spacing:1.5px;font-weight:700;color:rgba(244,241,234,0.55);text-transform:uppercase;}\n    .c-amount{font-size:24px;font-weight:800;letter-spacing:-1px;color:var(--gold);font-variant-numeric:tabular-nums;}\n    .c-money{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;}\n    .pill{display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;padding:5px 10px;}\n    .pill .d{width:5px;height:5px;border-radius:50%;background:currentColor;}\n    .rowact{background:transparent;border:1px solid var(--red);color:var(--red);font-size:10px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;padding:8px 12px;cursor:pointer;}\n    .edit{background:transparent;border:1px solid rgba(244,241,234,0.2);color:rgba(244,241,234,0.6);font-size:11px;padding:6px 10px;cursor:pointer;}\n    .edit:hover{border-color:var(--gold);color:var(--gold);}\n    .rowdone{font-size:10px;letter-spacing:1.5px;color:rgba(244,241,234,0.3);text-transform:uppercase;}\n    .chev{cursor:pointer;color:rgba(244,241,234,0.4);font-size:12px;width:18px;text-align:center;}\n    .chev.open{transform:rotate(90deg);color:var(--gold);}\n    .detail{background:rgba(244,241,234,0.02);padding:6px 0 14px 40px;}\n    .drow{display:flex;padding:6px;font-size:12px;color:rgba(244,241,234,0.7);}\n    .drow .dk{flex:1;letter-spacing:1px;} .drow .dv{color:var(--gold);font-weight:700;}\n    .empty{padding:60px;text-align:center;color:rgba(244,241,234,0.35);font-size:13px;}\n    .empty .el1{font-size:14px;color:rgba(244,241,234,0.55);margin-bottom:8px;}\n    .empty .el2{font-size:11px;letter-spacing:.5px;color:rgba(244,241,234,0.4);}\n    .empty .hl{color:var(--gold);font-weight:800;}\n    .empty-clear{display:inline-block;margin-top:14px;color:var(--gold);text-decoration:underline;cursor:pointer;font-weight:700;font-size:11px;letter-spacing:.5px;}\n    .empty-clear:hover{color:#f4f1ea;}\n    .foot{padding:14px 0;font-size:9px;letter-spacing:2.5px;font-weight:700;color:rgba(244,241,234,0.3);text-transform:uppercase;}\n    .pager{display:flex;align-items:center;justify-content:center;gap:16px;padding:10px 0 16px;}\n    .pgbtn{background:transparent;border:1px solid rgba(244,241,234,0.18);color:rgba(244,241,234,0.7);font-size:10px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;padding:8px 14px;cursor:pointer;}\n    .pgbtn:hover{border-color:var(--gold);color:var(--gold);}\n    .pgbtn:disabled{opacity:.3;cursor:not-allowed;}\n    .pgstat{font-size:10.5px;letter-spacing:1px;color:rgba(244,241,234,0.4);}\n    .toast{margin-top:10px;font-size:11px;font-weight:700;letter-spacing:1px;padding:8px 12px;}\n    .toast.ok{color:var(--gold);background:rgba(220,180,43,0.08);} .toast.err{color:#ff6b6b;background:rgba(255,107,107,0.08);}\n    .scrim{position:absolute;inset:0;background:rgba(0,0,0,0.6);display:flex;justify-content:flex-end;z-index:50;}\n    .drawer{width:440px;max-width:90%;height:100%;background:#141414;border-left:1px solid rgba(244,241,234,0.12);padding:40px 34px;box-sizing:border-box;overflow:auto;display:flex;flex-direction:column;gap:18px;}\n    .drawer h3{margin:0;font-size:28px;font-weight:800;letter-spacing:-1px;}\n    .ff{display:flex;flex-direction:column;gap:6px;}\n    .ff label{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .ff input,.ff select{background:rgba(244,241,234,0.05);border:1px solid rgba(244,241,234,0.15);color:#f4f1ea;font-size:14px;padding:11px 12px;outline:none;}\n    .ff input:focus,.ff select:focus{border-color:var(--gold);}\n    .fbtns{display:flex;gap:10px;margin-top:10px;}\n    .fbtns .save{flex:1;background:var(--red);border:0;color:#fff;font-size:12px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px;cursor:pointer;}\n    .fbtns .cancel{background:transparent;border:1px solid rgba(244,241,234,0.2);color:rgba(244,241,234,0.7);font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;padding:13px 18px;cursor:pointer;}\n  `,\n  render(d2){\n    function gp(o,p){ if(p==null) return o; var a=String(p).split('.'),v=o; for(var i=0;i<a.length;i++){ if(v==null) return undefined; v=v[a[i]]; } return v; }\n    function mid(v){ return v && typeof v==='object'?v._id:v; }\n    function esc(s){ return String(s==null?'':s).replace(/[&<>\"]/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n    function brl(n){ return 'R$ '+(Number(n)||0).toLocaleString('pt-BR'); }\n    function buildMap(name){ var m={}; try{ var ds=d2.data(name); var rs=ds&&ds.records?ds.records():null; if(rs){ rs.forEach(function(x){ m[mid(x._id)]=x; }); } }catch(e){} return m; }\n    function recs(n){ try{ var d=d2.data(n); return (d&&d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    var red=d2.param('accent','#c8102e');\n    var cols=d2.param('columns',[])||[];\n    var rows=recs('dataset');\n    var pageInfo=(function(){ try{ var d=d2.data('dataset'); return (d&&typeof d.pageInfo==='function')?d.pageInfo():null; }catch(e){ return null; } })();\n    var groupBy=d2.param('groupBy',null);\n    var sumKey=d2.param('sumKey',null);\n    if(groupBy && groupBy.length && sumKey){\n      try{ var gd=d2.data('dataset'); var gpi=(typeof gd.pageInfo==='function')?gd.pageInfo():null; if(gpi && gpi.pages>1 && typeof gd.loadAll==='function') gd.loadAll(); }catch(e){}\n      var gmap={}, gorder=[];\n      rows.forEach(function(r){\n        var gkey=groupBy.map(function(k){ var v=gp(r,k); return (v&&typeof v==='object')?mid(v):v; }).join('|');\n        if(!gmap[gkey]){ gmap[gkey]=Object.assign({},r); gmap[gkey][sumKey]=0; gorder.push(gkey); }\n        gmap[gkey][sumKey]=(Number(gmap[gkey][sumKey])||0)+(Number(gp(r,sumKey))||0);\n      });\n      rows=gorder.map(function(k){ return gmap[k]; });\n    }\n    var totalAll=groupBy?rows.length:((pageInfo&&pageInfo.total!=null)?pageInfo.total:rows.length);\n    var maps={look1:buildMap('look1'),look2:buildMap('look2'),look3:buildMap('look3')};\n    var looksRecs={look1:(function(){try{return d2.data('look1').records()||[]}catch(e){return[]}})(),look2:(function(){try{return d2.data('look2').records()||[]}catch(e){return[]}})(),look3:(function(){try{return d2.data('look3').records()||[]}catch(e){return[]}})()};\n    var pillMap=d2.param('pillMap',{})||{};\n    var searchKeys=d2.param('searchKeys',null);\n    var actionLabel=d2.param('actionLabel',''), rowActionLabel=d2.param('rowActionLabel','');\n    var rowWhen=d2.param('rowActionWhen',null);\n    var expandZip=d2.param('expandZip',null);\n    var formFields=d2.param('formFields',null);\n\n    var q=(d2.state.q||'').toLowerCase().trim();\n    var sortIdx=d2.state.sortIdx, sortDir=d2.state.sortDir||'asc';\n    var expanded=d2.state.expanded||{};\n\n    function lookLabel(c,v){ var rec=(maps[c.lookFrom]||{})[mid(v)]; return rec?gp(rec,c.lookLabel||'name'):(mid(v)?String(mid(v)).slice(-6):''); }\n\n    var view=rows.slice();\n    if(q){ view=view.filter(function(r){ var ks=searchKeys||cols.map(function(c){return c.key;}); for(var i=0;i<ks.length;i++){ var val=gp(r,ks[i]); if(val!=null && String(val).toLowerCase().indexOf(q)>=0) return true; } return false; }); }\n    if(sortIdx!=null && cols[sortIdx]){ var sc=cols[sortIdx], dir=sortDir==='asc'?1:-1; view.sort(function(a,b){ var x=sc.kind==='lookup'?lookLabel(sc,gp(a,sc.key)):gp(a,sc.key), y=sc.kind==='lookup'?lookLabel(sc,gp(b,sc.key)):gp(b,sc.key); if(typeof x==='string')x=x.toLowerCase(); if(typeof y==='string')y=y.toLowerCase(); return x<y?-dir:x>y?dir:0; }); }\n\n    function ws(c){ return c.width?('flex:0 0 '+c.width+'px;'):('flex:1 1 0;'); }\n    function as(c){ return c.align==='right'?'text-align:right;':''; }\n\n    var headHtml=cols.map(function(c,i){ var on=sortIdx===i; return '<div class=\"h'+(on?' on':'')+'\" data-sort=\"'+i+'\" style=\"'+ws(c)+as(c)+'\">'+esc(c.label||'')+(on?(sortDir==='asc'?' ▲':' ▼'):'')+'</div>'; }).join('');\n    var disableEdit=d2.param('disableEdit',false);\n    var deletable=d2.param('deletable',false);\n    if(expandZip) headHtml='<div class=\"h\" style=\"flex:0 0 18px\"></div>'+headHtml;\n    if(formFields && !disableEdit) headHtml+='<div class=\"h\" style=\"flex:0 0 54px\"></div>';\n    if(deletable) headHtml+='<div class=\"h\" style=\"flex:0 0 40px\"></div>';\n    if(rowActionLabel) headHtml+='<div class=\"h\" style=\"flex:0 0 120px\"></div>';\n\n    function cellHtml(r,c){\n      var v=gp(r,c.key); var k=c.kind||'text';\n      if(k==='pill'){ var pm=pillMap[String(v==null?'':v).toUpperCase()]||pillMap[String(v)]||['#f4f1ea','rgba(244,241,234,0.1)',String(v||'—')]; return '<span class=\"pill\" style=\"color:'+pm[0]+';background:'+pm[1]+'\"><span class=\"d\"></span>'+esc(pm[2])+'</span>'; }\n      if(k==='lookup'){ return '<span class=\"c-'+(c.as||'strong')+'\">'+esc(lookLabel(c,v)||'—')+'</span>'; }\n      if(k==='money'){ return '<span class=\"c-money\">'+esc(brl(v))+'</span>'; }\n      if(v==null||v==='') v='—';\n      return '<span class=\"c-'+k+'\">'+esc(v)+'</span>';\n    }\n\n    var bodyHtml;\n    if(!view.length){\n      if(q){\n        bodyHtml='<div class=\"empty\"><div class=\"el1\">Nada encontrado para \"'+esc(d2.state.q||'')+'\".</div><span class=\"empty-clear\" data-clear-search>limpar busca</span></div>';\n      } else {\n        var emptyTitle=d2.param('title','registro');\n        var emptyCta=actionLabel?('<div class=\"el2\">Clique em <span class=\"hl\">+ '+esc(actionLabel)+'</span> para criar o primeiro.</div>'):'';\n        bodyHtml='<div class=\"empty\"><div class=\"el1\">Ainda não há registros em <span class=\"hl\">'+esc(emptyTitle)+'</span>.</div>'+emptyCta+'</div>';\n      }\n    }\n    else { bodyHtml=view.map(function(r){\n      var id=mid(r._id);\n      var cells=cols.map(function(c){ return '<div class=\"cell\" style=\"'+ws(c)+as(c)+'\">'+cellHtml(r,c)+'</div>'; }).join('');\n      var chev=expandZip?('<div class=\"chev'+(expanded[id]?' open':'')+'\" data-exp=\"'+esc(id)+'\" style=\"flex:0 0 18px\">▶</div>'):'';\n      var ed=(formFields && !disableEdit)?('<div class=\"cell\" style=\"flex:0 0 54px\"><button class=\"edit\" data-edit=\"'+esc(id)+'\">✎</button></div>'):'';\n      var del=(deletable)?('<div class=\"cell\" style=\"flex:0 0 40px\"><button class=\"edit\" data-del=\"'+esc(id)+'\" title=\"Excluir\">✕</button></div>'):'';\n      var ract='';\n      if(rowActionLabel){ var show=true; if(rowWhen){ show=String(gp(r,rowWhen.key)||'').toUpperCase()!==String(rowWhen.neq||'').toUpperCase(); }\n        if(d2.state.busyRow===id) ract='<div class=\"cell\" style=\"flex:0 0 120px\"><span class=\"rowdone\">···</span></div>';\n        else if(show) ract='<div class=\"cell\" style=\"flex:0 0 120px\"><button class=\"rowact\" data-ract=\"'+esc(id)+'\">'+esc(rowActionLabel)+'</button></div>';\n        else ract='<div class=\"cell\" style=\"flex:0 0 120px\"><span class=\"rowdone\">✓</span></div>'; }\n      var main='<div class=\"row\" data-key=\"'+esc(id)+'\">'+chev+cells+ed+del+ract+'</div>';\n      var detail='';\n      if(expandZip && expanded[id]){ var aA=gp(r,expandZip.arrays[0])||[],aB=gp(r,expandZip.arrays[1])||[]; detail='<div class=\"detail\">'+(aA.map(function(it,ix){ var nm=(it&&typeof it==='object')?(it.model||it.code||mid(it)):it; return '<div class=\"drow\"><span class=\"dk\">'+esc(nm)+'</span><span class=\"dv\">×'+esc(aB[ix]!=null?aB[ix]:'?')+'</span></div>'; }).join('')||'<div class=\"drow\">—</div>')+'</div>'; }\n      return main+detail;\n    }).join(''); }\n\n    var toast=d2.state.toast?'<div class=\"toast '+(d2.state.toastErr?'err':'ok')+'\">'+esc(d2.state.toast)+'</div>':'';\n    var actBtn=(actionLabel)?'<button class=\"act\" data-new>+ '+esc(actionLabel)+'</button>':'';\n\n    var drawer='';\n    if(d2.state.formMode && formFields){\n      var fd=d2.state.formData||{};\n      var fieldsHtml=formFields.map(function(f){\n        var val=fd[f.key]; if(val==null) val='';\n        if(f.type==='checkbox'){ var checked=!!fd[f.key]; return '<div class=\"ff\"><label>'+esc(f.label)+'</label><input type=\"checkbox\" data-ff-bool=\"'+esc(f.key)+'\"'+(checked?' checked':'')+'/></div>'; }\n        if(f.type==='select'){ var opts; if(f.options){ opts=f.options.map(function(o){ return '<option value=\"'+esc(o.value)+'\"'+(String(val)===String(o.value)?' selected':'')+'>'+esc(o.label)+'</option>'; }).join(''); } else { opts=(looksRecs[f.lookFrom]||[]).map(function(o){ var oid=mid(o._id); return '<option value=\"'+esc(oid)+'\"'+(String(mid(val))===String(oid)?' selected':'')+'>'+esc(gp(o,f.lookLabel||'name')||oid)+'</option>'; }).join(''); } return '<div class=\"ff\"><label>'+esc(f.label)+'</label><select data-ff=\"'+esc(f.key)+'\"><option value=\"\">—</option>'+opts+'</select></div>'; }\n        var t=f.type==='number'?'number':(f.type==='password'?'password':'text');\n        var ph=(f.type==='password'&&d2.state.formMode==='edit')?' placeholder=\"deixe em branco para manter a senha atual\"':'';\n        return '<div class=\"ff\"><label>'+esc(f.label)+(f.type==='password'&&d2.state.formMode==='edit'?' · opcional':'')+'</label><input type=\"'+t+'\" data-ff=\"'+esc(f.key)+'\"'+ph+' value=\"'+esc(val)+'\"/></div>';\n      }).join('');\n      drawer='<div class=\"scrim\" data-scrim><div class=\"drawer\"><h3>'+(d2.state.formMode==='edit'?'Editar':'Novo')+'</h3>'+fieldsHtml+'<div class=\"fbtns\"><button class=\"save\" data-save>Salvar</button><button class=\"cancel\" data-cancel>Cancelar</button></div></div></div>';\n    }\n\n    var pager='';\n    if(pageInfo && pageInfo.pages>1 && !q && !groupBy){\n      pager='<div class=\"pager\">'\n        +'<button class=\"pgbtn\" data-prevpage'+(pageInfo.page<=1?' disabled':'')+'>‹ Anterior</button>'\n        +'<span class=\"pgstat\">Página '+pageInfo.page+' de '+pageInfo.pages+' · '+totalAll+' registros</span>'\n        +'<button class=\"pgbtn\" data-nextpage'+(pageInfo.page>=pageInfo.pages?' disabled':'')+'>Próxima ›</button>'\n        +'</div>';\n    }\n\n    return '<div class=\"wrap\"><div class=\"tick\"></div>'\n      +'<div class=\"head\"><div><h1>'+esc(d2.param('title',''))+'</h1><div class=\"eyebrow\">'+esc(d2.param('eyebrow',''))+'  ·  '+view.length+' / '+totalAll+'</div></div>'\n      +'<div class=\"right\">'+actBtn+'<label class=\"search\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"11\" cy=\"11\" r=\"7\"/><path d=\"m21 21-4.3-4.3\"/></svg><input data-q placeholder=\"BUSCAR\" value=\"'+esc(d2.state.q||'')+'\"/></label></div></div>'\n      +toast+'<div class=\"grid\"><div class=\"hrow\">'+headHtml+'</div><div class=\"body\">'+bodyHtml+'</div></div>'\n      +pager+'<div class=\"foot\">'+esc(d2.param('footer','ROUE WATCH · LIVE'))+'</div>'+drawer+'</div>';\n  },\n  mounted(d2){\n    (function(){ try{ var sp=new URLSearchParams(window.location.search); var qp=sp.get('q'); if(qp && !d2.state.q){ d2.setState({q:qp}); } }catch(e){} })();\n    function gp(o,p){ if(p==null) return o; var a=String(p).split('.'),v=o; for(var i=0;i<a.length;i++){ if(v==null) return undefined; v=v[a[i]]; } return v; }\n    function mid(v){ return v && typeof v==='object'?v._id:v; }\n    function recs(n){ try{ var d=d2.data(n); return (d&&d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    d2.on('[data-q]','input',function(e,el){ d2.setState({q:el.value}); });\n    d2.on('[data-clear-search]','click',function(){ d2.setState({q:''}); });\n    d2.on('[data-prevpage]','click',function(){ try{ d2.data('dataset').prevPage(); }catch(e){} });\n    d2.on('[data-nextpage]','click',function(){ try{ d2.data('dataset').nextPage(); }catch(e){} });\n    d2.on('[data-sort]','click',function(e,el){ var i=parseInt(el.getAttribute('data-sort'),10); if(d2.state.sortIdx===i){ d2.setState({sortDir:d2.state.sortDir==='asc'?'desc':'asc'}); } else { d2.setState({sortIdx:i,sortDir:'asc'}); } });\n    d2.on('[data-exp]','click',function(e,el){ var id=el.getAttribute('data-exp'); var ex=Object.assign({},d2.state.expanded||{}); ex[id]=!ex[id]; d2.setState({expanded:ex}); });\n    d2.on('[data-new]','click',function(){ var init={}; (d2.param('formFields',[])||[]).forEach(function(f){ if(f.default!=null) init[f.key]=f.default; }); d2.setState({formMode:'create', formData:init, formId:null}); });\n    d2.on('[data-edit]','click',function(e,el){ var id=el.getAttribute('data-edit'); var rows=recs('dataset'); var rec=null; for(var i=0;i<rows.length;i++){ if(mid(rows[i]._id)===id){ rec=rows[i]; break; } } var fd={}; (d2.param('formFields',[])||[]).forEach(function(f){ var v=gp(rec,f.key); fd[f.key]=(f.type==='select')?mid(v):v; }); d2.setState({formMode:'edit', formData:fd, formId:id}); });\n    d2.on('[data-ff]','input',function(e,el){ var k=el.getAttribute('data-ff'); var fd=Object.assign({},d2.state.formData||{}); fd[k]=el.value; d2.state.formData=fd; });\n    d2.on('[data-ff]','change',function(e,el){ var k=el.getAttribute('data-ff'); var fd=Object.assign({},d2.state.formData||{}); fd[k]=el.value; d2.state.formData=fd; });\n    d2.on('[data-ff-bool]','change',function(e,el){ var k=el.getAttribute('data-ff-bool'); var fd=Object.assign({},d2.state.formData||{}); fd[k]=!!el.checked; d2.state.formData=fd; });\n    d2.on('[data-del]','click',function(e,el){\n      var id=el.getAttribute('data-del');\n      Promise.resolve(d2.dialog.confirm('Excluir este registro? Esta ação não pode ser desfeita.')).then(function(ok){\n        if(!ok) return;\n        var ds=d2.data('dataset');\n        d2.setState({toast:'Excluindo…', toastErr:false});\n        Promise.resolve(ds.remove(id)).then(function(){ ds.refresh(); d2.setState({toast:'✓ '+(d2.param('title','Registro'))+' excluído.', toastErr:false}); })\n          .catch(function(err){ d2.setState({toast:'Erro ao excluir: '+(err&&err.message?err.message:err), toastErr:true}); });\n      });\n    });\n    d2.on('[data-cancel]','click',function(){ d2.setState({formMode:null, formData:{}}); });\n    d2.on('[data-scrim]','click',function(e,el){ if(e.target===el) d2.setState({formMode:null, formData:{}}); });\n    d2.on('[data-save]','click',function(){\n      var fd=d2.state.formData||{}; var rec={}; var mode0=d2.state.formMode;\n      var reqFields=(d2.param('formFields',[])||[]).filter(function(f){ return f&&f.required && !(f.type==='password' && mode0==='edit'); });\n      for(var ri=0;ri<reqFields.length;ri++){ var rfv=fd[reqFields[ri].key]; if(rfv==null||(typeof rfv==='string'&&rfv.trim()==='')){ d2.setState({toast:'Preencha os campos obrigatórios.', toastErr:true}); return; } }\n      (d2.param('formFields',[])||[]).forEach(function(f){\n        if(f.type==='checkbox'){ rec[f.key]=!!fd[f.key]; return; }\n        var v=fd[f.key];\n        if(f.type==='password' && mode0==='edit' && (v==null||v==='')){ return; }\n        if(v==='')v=null;\n        if(f.type==='number'&&v!=null)v=Number(v);\n        rec[f.key]=v;\n      });\n      var ds=d2.data('dataset'); var mode=d2.state.formMode, id=d2.state.formId;\n      var saveRush=d2.param('formSaveRush',null);\n      if(saveRush && mode!=='edit'){\n        var map=d2.param('formSaveRushBody',{})||{};\n        var body={}; for(var k in map){ var mv=map[k]; body[k]=(typeof mv==='string'&&mv.indexOf('form:')===0)?fd[mv.slice(5)]:mv; }\n        var slug=d2.param('systemSlug','roue');\n        d2.setState({toast:'Salvando…', toastErr:false});\n        d2.rush(saveRush).invoke(body, {headers:{Authorization:'Bearer '+(localStorage.getItem('__data2-session-'+slug)||'')}})\n          .then(function(res){ var dd=res&&res.data?res.data:res; if(dd&&dd.error){ throw new Error(dd.error.message||JSON.stringify(dd.error)); } ds.refresh(); d2.setState({formMode:null, formData:{}, toast:'✓ '+(d2.param('actionLabel','')||d2.param('title','Registro'))+' salvo.', toastErr:false}); })\n          .catch(function(err){ d2.setState({toast:'Erro ao salvar: '+(err&&err.message?err.message:err), toastErr:true}); });\n        return;\n      }\n      var editRush=d2.param('formEditRush',null);\n      if(editRush && mode==='edit'){\n        var slug2=d2.param('systemSlug','roue');\n        d2.setState({toast:'Salvando…', toastErr:false});\n        d2.rush(editRush).invoke({directoryId:id, patch:rec}, {headers:{Authorization:'Bearer '+(localStorage.getItem('__data2-session-'+slug2)||'')}})\n          .then(function(res){ var dd=res&&res.data?res.data:res; if(dd&&dd.error){ throw new Error(dd.error.message||JSON.stringify(dd.error)); } ds.refresh(); d2.setState({formMode:null, formData:{}, toast:'✓ '+(d2.param('actionLabel','')||d2.param('title','Registro'))+' atualizado.', toastErr:false}); })\n          .catch(function(err){ d2.setState({toast:'Erro ao salvar: '+(err&&err.message?err.message:err), toastErr:true}); });\n        return;\n      }\n      var entityTitle=d2.param('title','Registro');\n      d2.setState({toast:'Salvando…', toastErr:false});\n      var p; if(mode==='edit'){ rec._id=id; p=Promise.resolve(ds.update(rec)); } else { p=Promise.resolve(ds.create(rec)); }\n      Promise.resolve(p).then(function(){ return ds.save(); }).then(function(){ ds.refresh(); d2.setState({formMode:null, formData:{}, toast:'✓ '+entityTitle+(mode==='edit'?' atualizado.':' criado.'), toastErr:false}); })\n        .catch(function(err){ d2.setState({toast:'Erro ao salvar: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n    d2.on('[data-ract]','click',function(e,el){\n      var id=el.getAttribute('data-ract'); var rush=d2.param('rowActionRush',''); if(!rush){ d2.emit('rowAction', id); return; }\n      var rows=recs('dataset'); var row=null; for(var i=0;i<rows.length;i++){ if(mid(rows[i]._id)===id){ row=rows[i]; break; } }\n      var map=d2.param('rowActionBody',{})||{}; var body={}; for(var k in map){ var mv=map[k]; body[k]=(typeof mv==='string')?gp(row,mv):mv; if(body[k]&&typeof body[k]==='object') body[k]=mid(body[k]); }\n      var slug=d2.param('systemSlug','roue'); var ractLabel=d2.param('rowActionLabel','Ação');\n      d2.setState({busyRow:id, toast:'Processando…', toastErr:false});\n      d2.rush(rush).invoke(body, {headers:{Authorization:'Bearer '+(localStorage.getItem('__data2-session-'+slug)||'')}})\n        .then(function(res){ var dd=res&&res.data?res.data:res; if(dd&&dd.error){ throw new Error(dd.error.message||JSON.stringify(dd.error)); } d2.data('dataset').refresh(); d2.setState({busyRow:null, toast:'✓ '+ractLabel+' concluído.', toastErr:false}); })\n        .catch(function(err){ d2.setState({busyRow:null, toast:'Erro ao processar '+ractLabel+': '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n  }\n};"}},"accent":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"accent"}}}},"actionLabel":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"actionLabel"}}}},"columns":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"columns"}}}},"dataset":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"dataset"}}}},"deletable":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"deletable"}}}},"disableEdit":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"disableEdit"}}}},"expandZip":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"expandZip"}}}},"eyebrow":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"eyebrow"}}}},"footer":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"footer"}}}},"formEditRush":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"formEditRush"}}}},"formFields":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"formFields"}}}},"formSaveRush":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"formSaveRush"}}}},"formSaveRushBody":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"formSaveRushBody"}}}},"groupBy":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"groupBy"}}}},"sumKey":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"sumKey"}}}},"look1":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"look1"}}}},"look2":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"look2"}}}},"look3":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"look3"}}}},"pillMap":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"pillMap"}}}},"rowActionBody":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"rowActionBody"}}}},"rowActionLabel":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"rowActionLabel"}}}},"rowActionRush":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"rowActionRush"}}}},"rowActionWhen":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"rowActionWhen"}}}},"searchKeys":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"searchKeys"}}}},"systemSlug":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"systemSlug"}}}},"title":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"title"}}}}}}}}}},{"_id":"6a72225487a70a5944310ca5","component":"data2-core-types@Component","system":"6138ba0292425036c3b32255","params":{"extends":"data2-core-primitives@Block","component":"kHelpTip","package":"roue","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"export default {\n  css: `\n    :host{display:block;width:100%;height:100%;}\n    .rk-help-btn{width:100%;height:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;border-radius:999px;border:1px solid rgba(244,241,234,0.28);background:rgba(244,241,234,0.04);color:rgba(244,241,234,0.62);cursor:pointer;font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;font-size:13px;font-weight:800;user-select:none;}\n    .rk-help-btn:hover{border-color:#dcb42b;color:#dcb42b;background:rgba(220,180,43,0.1);}\n  `,\n  render(d2) {\n    return '<div class=\"rk-help-btn\" data-help title=\"Ajuda\">?</div>';\n  },\n  mounted(d2) {\n    var STYLE_ID = 'rkHelpStyle';\n    var pop = null;\n\n    function esc(s) { s = (s == null ? '' : String(s)); return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;'); }\n\n    function ensureStyle() {\n      if (document.getElementById(STYLE_ID)) return;\n      var st = document.createElement('style');\n      st.id = STYLE_ID;\n      st.textContent = `\n        .rk-help-backdrop{position:fixed;inset:0;z-index:9985;background:transparent;}\n        .rk-help-pop{position:fixed;z-index:9986;width:320px;max-width:88vw;background:#131313;border:1px solid rgba(244,241,234,0.16);box-shadow:0 20px 50px rgba(0,0,0,0.55);padding:18px 20px;box-sizing:border-box;font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;color:#f4f1ea;}\n        .rk-help-pop .tick{width:20px;height:3px;background:#c8102e;margin-bottom:10px;}\n        .rk-help-pop h4{margin:0 0 8px;font-size:15px;font-weight:800;letter-spacing:-.2px;padding-right:16px;}\n        .rk-help-pop p{margin:0;font-size:12.5px;line-height:1.65;color:rgba(244,241,234,0.72);white-space:pre-wrap;}\n        .rk-help-pop .x{position:absolute;top:12px;right:14px;cursor:pointer;color:rgba(244,241,234,0.4);font-size:13px;line-height:1;}\n        .rk-help-pop .x:hover{color:#f4f1ea;}\n      `;\n      document.head.appendChild(st);\n    }\n\n    function onKey(e) { if (e.key === 'Escape') close(); }\n\n    function close() {\n      if (pop && pop.parentNode) pop.parentNode.removeChild(pop);\n      pop = null;\n      document.removeEventListener('keydown', onKey);\n    }\n\n    function open(triggerEl) {\n      if (pop) { close(); return; }\n      ensureStyle();\n      var r = triggerEl.getBoundingClientRect();\n      var backdrop = document.createElement('div');\n      backdrop.className = 'rk-help-backdrop';\n      backdrop.addEventListener('click', close);\n      var card = document.createElement('div');\n      card.className = 'rk-help-pop';\n      var titleTxt = d2.param('title', '');\n      var bodyTxt = d2.param('body', '');\n      card.innerHTML = '<span class=\"x\" data-x>✕</span><div class=\"tick\"></div><h4>' + esc(titleTxt) + '</h4><p>' + esc(bodyTxt) + '</p>';\n      var top = r.bottom + 8;\n      var left = Math.max(8, Math.min(r.left - 288, window.innerWidth - 336));\n      card.style.top = top + 'px';\n      card.style.left = left + 'px';\n      backdrop.appendChild(card);\n      document.body.appendChild(backdrop);\n      card.querySelector('[data-x]').addEventListener('click', close);\n      card.addEventListener('click', function (e) { e.stopPropagation(); });\n      document.addEventListener('keydown', onKey);\n      pop = backdrop;\n      d2.onUnmount(close);\n    }\n\n    d2.on('[data-help]', 'click', function (e, el) { e.stopPropagation(); open(el); });\n  }\n};\n"}},"title":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"title"}}}},"body":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"body"}}}}}}}}}},{"_id":"6a2f49b4ed769e0c5825fd48","component":"data2-core-types@Component","system":"6138ba0292425036c3b32255","params":{"extends":"data2-core-primitives@Block","component":"kBuyOrders","package":"roue","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"export default {\n  css: `\n    :host{--red:#c8102e;--gold:#dcb42b;--green:#3ed47e;--blue:#5aa9ff;display:block;height:100%;background:#0d0d0d;}\n    .wrap{height:100%;display:flex;flex-direction:column;background:#0d0d0d;color:#f4f1ea;font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;padding:44px 46px 0;box-sizing:border-box;max-width:1360px;margin:0 auto;width:100%;overflow:hidden;position:relative;}\n    .tick{width:36px;height:3px;background:var(--red);margin-bottom:14px;}\n    .head{display:flex;justify-content:space-between;align-items:flex-end;}\n    h1{margin:0;font-size:52px;font-weight:800;letter-spacing:-2.5px;line-height:.95;}\n    .eyebrow{margin-top:14px;font-size:11px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);}\n    .act{background:transparent;border:1px solid var(--red);color:var(--red);font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px 18px;cursor:pointer;}\n    .act:active{transform:translateY(1px);}\n    .cols{flex:1;display:flex;gap:28px;margin-top:24px;min-height:0;}\n    .list{flex:0 0 42%;display:flex;flex-direction:column;min-height:0;border-right:1px solid rgba(244,241,234,0.08);padding-right:24px;}\n    .lh{font-size:9px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);padding-bottom:10px;border-bottom:1px solid rgba(244,241,234,0.1);}\n    .lsearch{padding:10px 0;} .lsearch .lq{width:100%;box-sizing:border-box;background:rgba(244,241,234,0.04);border:1px solid rgba(244,241,234,0.12);padding:8px 10px;color:#f4f1ea;font-size:12px;letter-spacing:.5px;outline:none;font-family:inherit;}\n    .rows{flex:1;overflow:auto;}\n    .o{display:flex;align-items:center;gap:12px;padding:14px 8px;border-bottom:1px solid rgba(244,241,234,0.06);cursor:pointer;}\n    .o:hover{background:rgba(244,241,234,0.02);}\n    .o.sel{background:rgba(220,180,43,0.06);box-shadow:inset 3px 0 0 var(--gold);}\n    .o .id{font-size:10px;letter-spacing:1.6px;font-weight:700;color:rgba(220,180,43,0.85);text-transform:uppercase;flex:0 0 74px;}\n    .o .nm{flex:1;font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .o .tot{font-family:ui-monospace,Menlo,monospace;font-size:13px;font-weight:700;color:var(--gold);font-variant-numeric:tabular-nums;}\n    .pill{display:inline-flex;align-items:center;gap:6px;font-size:9px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;padding:4px 9px;}\n    .pill .d{width:5px;height:5px;border-radius:50%;background:currentColor;}\n    .panel{flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto;position:relative;}\n    .empty{margin:auto;color:rgba(244,241,234,0.35);font-size:13px;letter-spacing:1px;text-align:center;line-height:1.7;}\n    .phead{display:flex;align-items:flex-start;gap:16px;}\n    .phead h2{margin:0;font-size:28px;font-weight:800;letter-spacing:-1px;}\n    .phead .sub{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);margin-top:6px;line-height:1.6;}\n    .stamp{margin-left:auto;align-self:center;padding:6px 14px;border:2.5px solid var(--green);border-radius:5px;color:var(--green);font-weight:800;font-size:15px;letter-spacing:2.5px;text-transform:uppercase;transform:rotate(-6deg);opacity:.92;\n      -webkit-mask-image:repeating-linear-gradient(44deg,#000 0 4px,rgba(0,0,0,.5) 4px 6px);}\n    .stamp small{display:block;font-family:ui-monospace,Menlo,monospace;font-size:7px;letter-spacing:1.5px;text-align:center;margin-top:1px;}\n    .items{margin-top:20px;border-top:2px solid rgba(244,241,234,0.85);}\n    .ih,.ir{display:grid;grid-template-columns:1fr 78px 96px 96px;align-items:center;}\n    .ih{padding:8px 4px;border-bottom:1px solid rgba(244,241,234,0.1);}\n    .ih div{font-size:9px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);}\n    .ih .r,.ir .r{text-align:right;}\n    .ir{padding:11px 4px;border-bottom:1px solid rgba(244,241,234,0.06);}\n    .ir .part{font-size:13.5px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .ir .part span{display:block;font-family:ui-monospace,Menlo,monospace;font-size:8.5px;letter-spacing:1px;color:rgba(220,180,43,0.6);text-transform:uppercase;margin-top:1px;}\n    .ir .num{font-family:ui-monospace,Menlo,monospace;font-size:14px;font-weight:600;text-align:right;font-variant-numeric:tabular-nums;}\n    .ir .rec{text-align:right;font-family:ui-monospace,Menlo,monospace;font-size:13px;font-weight:700;}\n    .ir .rec.done{color:var(--green);} .ir .rec.wait{color:rgba(244,241,234,0.4);}\n    .totrow{display:flex;justify-content:space-between;align-items:center;padding:14px 4px 6px;border-top:2px solid rgba(244,241,234,0.85);margin-top:8px;}\n    .totrow .tl{font-size:10px;letter-spacing:2.5px;text-transform:uppercase;color:rgba(244,241,234,0.5);font-weight:700;}\n    .totrow .tv{font-family:ui-monospace,Menlo,monospace;font-size:28px;font-weight:800;letter-spacing:-1px;font-variant-numeric:tabular-nums;color:var(--gold);}\n    .totrow .tv small{font-size:14px;color:rgba(244,241,234,0.55);margin-right:4px;}\n    .sec{margin-top:22px;padding-top:16px;border-top:1px solid rgba(244,241,234,0.08);}\n    .sec .sh{font-size:9px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);padding-bottom:8px;}\n    .sec .sh2{font-size:9px;letter-spacing:1.5px;font-weight:700;text-transform:uppercase;color:rgba(220,180,43,0.55);padding:8px 0 4px;}\n    .hrow{display:flex;justify-content:space-between;align-items:center;padding:8px 2px;border-bottom:1px solid rgba(244,241,234,0.06);}\n    .hrow .part{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:10px;}\n    .hrow .val{font-family:ui-monospace,Menlo,monospace;font-size:13px;font-weight:700;color:var(--gold);flex:0 0 auto;font-variant-numeric:tabular-nums;}\n    .hrow .val.dim{color:rgba(244,241,234,0.45);font-weight:600;}\n    .cta{padding:14px 0 22px;}\n    .cta button{width:100%;border:0;font-size:12px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:15px;cursor:pointer;border-radius:7px;\n      box-shadow:0 1px 0 rgba(255,255,255,.14) inset,0 5px 12px -5px rgba(0,0,0,.8);transition:transform .09s,filter .15s;}\n    .cta button:active{transform:translateY(2px);} .cta button:hover{filter:brightness(1.09);}\n    .cta .recv{background:linear-gradient(180deg,#3ed47e,#1f7a48);color:#04240f;}\n    .cta button:disabled{opacity:.4;cursor:not-allowed;filter:none;}\n    .toast{margin-top:10px;font-size:11px;font-weight:700;letter-spacing:1px;padding:8px 12px;}\n    .toast.ok{color:var(--gold);background:rgba(220,180,43,0.08);} .toast.err{color:#ff6b6b;background:rgba(255,107,107,0.08);}\n    .lnk{cursor:pointer;}\n    .lnk:hover{text-decoration:underline;color:var(--gold);}\n    .scrim{position:absolute;inset:0;background:rgba(0,0,0,0.6);display:flex;justify-content:flex-end;z-index:50;}\n    .drawer{width:460px;max-width:90%;height:100%;background:#141414;border-left:1px solid rgba(244,241,234,0.12);padding:40px 32px;box-sizing:border-box;overflow:auto;display:flex;flex-direction:column;gap:16px;}\n    .drawer h3{margin:0;font-size:26px;font-weight:800;letter-spacing:-1px;}\n    .drawer .stepnote{font-size:11px;color:rgba(244,241,234,0.45);letter-spacing:.5px;line-height:1.6;margin-top:-8px;}\n    .ff{display:flex;flex-direction:column;gap:6px;}\n    .ff label{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .ff input,.ff select{background:rgba(244,241,234,0.05);border:1px solid rgba(244,241,234,0.15);color:#f4f1ea;font-size:14px;padding:11px 12px;outline:none;font-family:inherit;}\n    .ff input:focus,.ff select:focus{border-color:var(--gold);}\n    .fbtns{display:flex;gap:10px;margin-top:8px;}\n    .fbtns .save{flex:1;background:var(--green);border:0;color:#04240f;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px;cursor:pointer;border-radius:6px;}\n    .fbtns .cancel{background:transparent;border:1px solid rgba(244,241,234,0.2);color:rgba(244,241,234,0.7);font-weight:700;letter-spacing:1px;text-transform:uppercase;padding:13px 18px;cursor:pointer;border-radius:6px;}\n    .sechr{height:1px;background:rgba(244,241,234,0.1);margin:2px 0 4px;}\n    .lines3{display:flex;flex-direction:column;gap:8px;}\n    .lnrow3{display:grid;grid-template-columns:1fr 64px 84px 32px;gap:8px;align-items:center;}\n    .lnrow3 select,.lnrow3 input{background:rgba(244,241,234,0.05);border:1px solid rgba(244,241,234,0.15);color:#f4f1ea;font-size:12.5px;padding:9px 8px;outline:none;font-family:inherit;width:100%;box-sizing:border-box;}\n    .lnrow3 select:focus,.lnrow3 input:focus{border-color:var(--gold);}\n    .rmbtn{background:transparent;border:1px solid rgba(255,107,107,0.4);color:#ff6b6b;font-size:13px;font-weight:800;cursor:pointer;width:30px;height:36px;border-radius:4px;line-height:1;}\n    .rmbtn:hover{background:rgba(255,107,107,0.1);}\n    .addln{margin-top:2px;background:transparent;border:1px dashed rgba(244,241,234,0.25);color:rgba(244,241,234,0.6);font-size:11px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;padding:10px;cursor:pointer;width:100%;}\n    .addln:hover{border-color:var(--gold);color:var(--gold);}\n    .lntot{text-align:right;font-size:11px;color:rgba(244,241,234,0.5);margin-top:2px;}\n    .lntot b{color:var(--gold);font-family:ui-monospace,Menlo,monospace;}\n  `,\n  render(d2){\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    function esc(s){ return String(s==null?'':s).replace(/[&<>\"]/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n    function recs(n){ try{ var d=d2.data(n); if(!d) return []; var pi=(typeof d.pageInfo==='function')?d.pageInfo():null; if(pi && pi.pages>1 && typeof d.loadAll==='function') d.loadAll(); return (d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    function mapBy(a){ var m={}; a.forEach(function(x){ m[mid(x._id)]=x; }); return m; }\n    function money(n){ return (Number(n)||0).toLocaleString('pt-BR',{minimumFractionDigits:2,maximumFractionDigits:2}); }\n\n    var buys=recs('buy'), items=recs('items'), mats=recs('materials'), comps=recs('companies'), locs=recs('locations'), invs=recs('invoices');\n    var suppliers=comps.filter(function(c){ return String(c.relation||'').toUpperCase()==='SUPPLIER'; });\n    var matMap=mapBy(mats), compMap=mapBy(comps), locMap=mapBy(locs), invMap=mapBy(invs);\n    var itemsByBuy={}; items.forEach(function(it){ var b=mid(it.buy_order); if(b) (itemsByBuy[b]=itemsByBuy[b]||[]).push(it); });\n    function linesOf(o){ var id=mid(o._id); var its=itemsByBuy[id]||[]; if(its.length) return its; if(o.material) return [{material:o.material, qty:o.qty, unit_cost:o.unit_cost, received_qty:(String(o.status||'').toUpperCase()==='RECEIVED'?(Number(o.qty)||0):0)}]; return []; }\n    function totOfO(o){ return linesOf(o).reduce(function(s,it){ return s+(Number(it.qty)||0)*(Number(it.unit_cost)||0); },0); }\n    function matName(id){ var m=matMap[mid(id)]; return m?(m.model||m.code||'—'):(mid(id)?String(mid(id)).slice(-6):'—'); }\n    function compName(id){ var c=compMap[mid(id)]; return c?(c.name||'—'):'—'; }\n    function locName(id){ var l=locMap[mid(id)]; return l?(l.name||'—'):'—'; }\n\n    function buildHistory(o, selId){\n      var moves=recs('movements').filter(function(m){ return mid(m.material_buy_order)===selId; });\n      var byType={};\n      moves.forEach(function(m){ var t=String(m.type||'').toUpperCase(); (byType[t]=byType[t]||[]).push(m); });\n      var TLABEL={CONSUME:'Consumido',PRODUCE:'Produzido',RECEIVE:'Recebido'};\n      var movHtml='';\n      if(moves.length){\n        movHtml='<div class=\"sec\"><div class=\"sh\">Movimentos de estoque · '+moves.length+'</div>'\n          +Object.keys(byType).map(function(t){\n            return '<div class=\"sh2\">'+esc(TLABEL[t]||t)+'</div>'+byType[t].map(function(m){\n              return '<div class=\"hrow\"><div class=\"part lnk\" data-goto=\"/stock-movement\">'+esc(matName(m.material))+'</div><div class=\"val'+(t==='CONSUME'?' dim':'')+'\">'+(t==='CONSUME'?'-':'+')+Math.abs(Number(m.amount)||0)+'</div></div>';\n            }).join('');\n          }).join('')\n          +'</div>';\n      }\n      var invId=mid(o.invoice);\n      var inv=invId?invMap[invId]:null;\n      var invHtml='';\n      if(inv){\n        var evts=recs('invoiceEvents').filter(function(ev){ return mid(ev.invoice)===invId; });\n        invHtml='<div class=\"sec\"><div class=\"sh lnk\" data-goto=\"/invoices\">Invoice · '+esc(inv.identifier||invId.slice(-6))+'</div>'\n          +'<div class=\"hrow\"><div class=\"part\">Valor total</div><div class=\"val\">R$ '+(inv.total_value!=null?Number(inv.total_value).toFixed(2):'—')+'</div></div>'\n          +(evts.length?evts.map(function(ev){\n            return '<div class=\"hrow\"><div class=\"part\">'+esc(ev.type||'Evento')+(ev.date?(' · '+String(ev.date).slice(0,10)):'')+'</div><div class=\"val dim\">'+(ev.total_value!=null?Number(ev.total_value).toFixed(2):'—')+'</div></div>';\n          }).join(''):'<div class=\"empty\" style=\"margin:10px auto;font-size:11px\">Sem eventos.</div>')\n          +'</div>';\n      }\n      return movHtml+invHtml;\n    }\n\n    var PILL={OPEN:['#dcb42b','rgba(220,180,43,0.12)','Aberta'],RECEIVED:['#3ed47e','rgba(62,212,126,0.12)','Recebida'],NULL:['rgba(244,241,234,0.5)','rgba(244,241,234,0.08)','—']};\n    function pill(s){ var p=PILL[String(s||'NULL').toUpperCase()]||PILL.NULL; return '<span class=\"pill\" style=\"color:'+p[0]+';background:'+p[1]+'\"><span class=\"d\"></span>'+esc(p[2])+'</span>'; }\n\n    var sel=d2.state.sel;\n    var q=String(d2.state.q||'').toLowerCase();\n    var buysF=!q?buys:buys.filter(function(o){\n      var sup=compName(o.supplier);\n      return String(o.identifier||'').toLowerCase().indexOf(q)>=0 || String(sup||'').toLowerCase().indexOf(q)>=0 || String(o.status||'').toLowerCase().indexOf(q)>=0;\n    });\n    var listHtml=buysF.map(function(o){\n      var id=mid(o._id); var n=linesOf(o).length;\n      return '<div class=\"o'+(sel===id?' sel':'')+'\" data-sel=\"'+esc(id)+'\"><span class=\"id\">'+esc(o.identifier||id.slice(-5))+'</span>'\n        +'<span class=\"nm\">'+esc(compName(o.supplier))+' · '+n+' '+(n===1?'item':'itens')+'</span>'\n        +'<span class=\"tot\">'+money(totOfO(o))+'</span>'+pill(o.status)+'</div>';\n    }).join('')||('<div class=\"empty\" style=\"margin:40px auto\">'+(q?('Nada encontrado para “'+esc(q)+'”.'):'Nenhuma ordem de compra.<br>Elas nascem no MRP da Produção ou aqui.')+'</div>');\n\n    var panel='<div class=\"empty\">Selecione uma ordem de compra<br>para ver as linhas.</div>';\n    if(sel){\n      var o=null; for(var i=0;i<buys.length;i++){ if(mid(buys[i]._id)===sel){ o=buys[i]; break; } }\n      if(o){\n        var its=linesOf(o);\n        var received=String(o.status||'').toUpperCase()==='RECEIVED';\n        var irows=its.map(function(it){\n          var rq=Number(it.received_qty)||0, q=Number(it.qty)||0;\n          return '<div class=\"ir\"><div class=\"part lnk\" data-goto=\"/materials\">'+esc(matName(it.material))+'<span>'+esc((matMap[mid(it.material)]||{}).code||'')+'</span></div>'\n            +'<div class=\"num\">'+q+'</div><div class=\"num\">'+money(it.unit_cost)+'</div>'\n            +'<div class=\"rec '+(rq>=q&&q>0?'done':'wait')+'\">'+(rq>0?rq+'/'+q:'—')+'</div></div>';\n        }).join('')||'<div class=\"empty\" style=\"margin:30px auto\">Sem linhas.</div>';\n        var inv=invMap[mid(o.invoice)];\n        var stamp=received?'<div class=\"stamp\">Recebida<small>estoque atualizado</small></div>':'';\n        panel='<div class=\"phead\"><div><h2>'+esc(o.identifier||'Compra')+'</h2>'\n          +'<div class=\"sub\">'+pill(o.status)+' &nbsp;·&nbsp; Fornecedor <span class=\"lnk\" data-goto=\"/companies\">'+esc(compName(o.supplier))+'</span> · Destino '+esc(locName(o.destination))+(inv?(' · <span class=\"lnk\" data-goto=\"/invoices\">Conta '+esc(inv.identifier||'')+'</span>'):'')+'</div></div>'+stamp+'</div>'\n          +'<div class=\"items\"><div class=\"ih\"><div>Peça</div><div class=\"r\">Qtd</div><div class=\"r\">Custo un.</div><div class=\"r\">Recebido</div></div>'+irows+'</div>'\n          +'<div class=\"totrow\"><div class=\"tl\">Total da ordem</div><div class=\"tv\"><small>R$</small>'+money(totOfO(o))+'</div></div>'\n          +'<div class=\"cta\"><button class=\"recv\" data-recv '+(received?'disabled':'')+'>'+(received?'Ordem recebida':'Receber ordem no estoque')+'</button></div>'\n          +buildHistory(o, sel);\n      }\n    }\n    var toast=d2.state.toast?'<div class=\"toast '+(d2.state.toastErr?'err':'ok')+'\">'+esc(d2.state.toast)+'</div>':'';\n\n    function lineRows3Html(lines){\n      var arr=lines||[];\n      var rows=arr.map(function(ln,i){\n        var matOpts='<option value=\"\">—</option>'+mats.map(function(m){ var id=mid(m._id); return '<option value=\"'+esc(id)+'\"'+(String(ln.material)===String(id)?' selected':'')+'>'+esc((m.code?m.code+' · ':'')+(m.model||id))+'</option>'; }).join('');\n        return '<div class=\"lnrow3\" data-idx=\"'+i+'\">'\n          +'<select data-ln-mat data-idx=\"'+i+'\">'+matOpts+'</select>'\n          +'<input type=\"number\" min=\"0\" step=\"1\" data-ln-qty data-idx=\"'+i+'\" placeholder=\"Qtd\" value=\"'+esc(ln.qty!=null?ln.qty:'')+'\"/>'\n          +'<input type=\"number\" min=\"0\" step=\"0.01\" data-ln-cost data-idx=\"'+i+'\" placeholder=\"Custo un.\" value=\"'+esc(ln.unit_cost!=null?ln.unit_cost:'')+'\"/>'\n          +'<button class=\"rmbtn\" data-rm-line data-idx=\"'+i+'\" type=\"button\">×</button>'\n          +'</div>';\n      }).join('')||'<div class=\"empty\" style=\"margin:8px auto;font-size:12px\">Sem linhas. Adicione a primeira.</div>';\n      var tot=arr.reduce(function(s,ln){ return s+(Number(ln.qty)||0)*(Number(ln.unit_cost)||0); },0);\n      return '<div class=\"lines3\">'+rows+'</div><button class=\"addln\" data-add-line type=\"button\">+ Adicionar linha</button><div class=\"lntot\">Total: <b>R$ '+money(tot)+'</b></div>';\n    }\n\n    var newDrawer='';\n    if(d2.state.formOpen){\n      var fd=d2.state.formData||{};\n      var supOpts=suppliers.map(function(c){ var id=mid(c._id); return '<option value=\"'+esc(id)+'\"'+(String(fd.supplier)===String(id)?' selected':'')+'>'+esc(c.name||id)+'</option>'; }).join('');\n      var locOpts=locs.map(function(l){ var id=mid(l._id); return '<option value=\"'+esc(id)+'\"'+(String(fd.destination)===String(id)?' selected':'')+'>'+esc(l.name||id)+'</option>'; }).join('');\n      var invOpts=invs.map(function(v){ var id=mid(v._id); return '<option value=\"'+esc(id)+'\"'+(String(fd.invoice)===String(id)?' selected':'')+'>'+esc(v.identifier||id)+'</option>'; }).join('');\n      newDrawer='<div class=\"scrim\" data-scrim><div class=\"drawer\"><h3>Nova ordem de compra</h3>'\n        +'<div class=\"stepnote\">Uma ordem, várias peças — como uma nota de compra de verdade.</div>'\n        +'<div class=\"ff\"><label>Fornecedor</label><select data-ff=\"supplier\"><option value=\"\">—</option>'+supOpts+'</select></div>'\n        +'<div class=\"ff\"><label>Destino</label><select data-ff=\"destination\"><option value=\"\">—</option>'+locOpts+'</select></div>'\n        +'<div class=\"ff\"><label>Invoice (opcional)</label><select data-ff=\"invoice\"><option value=\"\">—</option>'+invOpts+'</select></div>'\n        +'<div class=\"sechr\"></div>'\n        +'<div class=\"ff\"><label>Peças da ordem</label></div>'\n        +lineRows3Html(fd.lines)\n        +'<div class=\"fbtns\"><button class=\"save\" data-save>Criar ordem</button><button class=\"cancel\" data-cancel>Cancelar</button></div></div></div>';\n    }\n\n    return '<div class=\"wrap\"><div class=\"tick\"></div>'\n      +'<div class=\"head\"><div><h1>Compras</h1><div class=\"eyebrow\">Ordens de compra de materiais · '+buys.length+' ordens</div></div><button class=\"act\" data-new>+ Nova ordem de compra</button></div>'\n      +toast\n      +'<div class=\"cols\"><div class=\"list\"><div class=\"lh\">Ordens de compra</div><div class=\"lsearch\"><input class=\"lq\" data-lq placeholder=\"BUSCAR\" value=\"'+esc(d2.state.q||'')+'\"/></div><div class=\"rows\">'+listHtml+'</div></div>'\n      +'<div class=\"panel\">'+panel+'</div></div>'+newDrawer+'</div>';\n  },\n  mounted(d2){\n    (function(){ try{ var sp=new URLSearchParams(window.location.search); var hl=sp.get('highlight'); if(hl && !d2.state.sel){ d2.setState({sel:hl}); } }catch(e){} })();\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    function recs(n){ try{ var d=d2.data(n); if(!d) return []; var pi=(typeof d.pageInfo==='function')?d.pageInfo():null; if(pi && pi.pages>1 && typeof d.loadAll==='function') d.loadAll(); return (d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    var slug=d2.param('systemSlug','roue');\n    d2.on('[data-sel]','click',function(e,el){ d2.setState({sel:el.getAttribute('data-sel'), toast:null}); });\n    d2.on('[data-goto]','click',function(e,el){ var target=el.getAttribute('data-goto'); var r=d2.process('XGxUgyQ-5U2VmVp3rFvVvInterface'); var h=r&&r.get&&r.get('history'); if (h && typeof h.push==='function') h.push(target); });\n    d2.on('[data-lq]','input',function(e,el){ d2.setState({q:el.value}); });\n    d2.on('[data-new]','click',function(){ d2.setState({formOpen:true, formData:{supplier:'',destination:'',invoice:'',lines:[{material:'',qty:'',unit_cost:0}]}}); });\n    d2.on('[data-cancel]','click',function(){ d2.setState({formOpen:false, formData:{}}); });\n    d2.on('[data-scrim]','click',function(e,el){ if(e.target===el) d2.setState({formOpen:false, formData:{}}); });\n    d2.on('[data-ff]','input',function(e,el){ var k=el.getAttribute('data-ff'); var fd=Object.assign({},d2.state.formData||{}); fd[k]=el.value; d2.state.formData=fd; });\n    d2.on('[data-ff]','change',function(e,el){ var k=el.getAttribute('data-ff'); var fd=Object.assign({},d2.state.formData||{}); fd[k]=el.value; d2.state.formData=fd; });\n\n    function patchLine(idx, field, val){\n      var fd=Object.assign({}, d2.state.formData||{});\n      var lines=(fd.lines||[]).map(function(l){ return Object.assign({},l); });\n      if(!lines[idx]) lines[idx]={material:'',qty:'',unit_cost:0};\n      lines[idx][field]=val;\n      fd.lines=lines;\n      d2.setState({formData:fd});\n    }\n    d2.on('[data-ln-mat]','change',function(e,el){ patchLine(Number(el.getAttribute('data-idx')),'material',el.value); });\n    d2.on('[data-ln-qty]','input',function(e,el){ patchLine(Number(el.getAttribute('data-idx')),'qty',el.value); });\n    d2.on('[data-ln-cost]','input',function(e,el){ patchLine(Number(el.getAttribute('data-idx')),'unit_cost',el.value); });\n    d2.on('[data-add-line]','click',function(){\n      var fd=Object.assign({}, d2.state.formData||{});\n      var lines=(fd.lines||[]).slice(); lines.push({material:'',qty:'',unit_cost:0});\n      fd.lines=lines; d2.setState({formData:fd});\n    });\n    d2.on('[data-rm-line]','click',function(e,el){\n      var idx=Number(el.getAttribute('data-idx'));\n      var fd=Object.assign({}, d2.state.formData||{});\n      var lines=(fd.lines||[]).slice(); lines.splice(idx,1);\n      fd.lines=lines; d2.setState({formData:fd});\n    });\n\n    d2.on('[data-save]','click',function(){\n      var fd=d2.state.formData||{};\n      if(!fd.supplier||!fd.destination){ d2.setState({toast:'Escolha fornecedor e destino.', toastErr:true}); return; }\n      var lines=(fd.lines||[]).filter(function(l){ return l && (l.material||l.qty); });\n      if(!lines.length){ d2.setState({toast:'Adicione ao menos uma peça.', toastErr:true}); return; }\n      for(var i=0;i<lines.length;i++){\n        if(!lines[i].material || !(Number(lines[i].qty)>0)){ d2.setState({toast:'Selecione material e quantidade (>0) em todas as linhas.', toastErr:true}); return; }\n      }\n      var mat_ids=lines.map(function(l){ return l.material; });\n      var qtys=lines.map(function(l){ return Number(l.qty)||0; });\n      var unit_costs=lines.map(function(l){ return Number(l.unit_cost)||0; });\n      d2.setState({toast:'Criando ordem de compra…', toastErr:false});\n      fetch('https://'+slug+'.data2apis.com/rush/create_buy_order_multi',{method:'POST',headers:{'Content-Type':'application/json','Authorization':'Bearer '+(localStorage.getItem('__data2-session-'+slug)||'')},body:JSON.stringify({supplier:fd.supplier, destination:fd.destination, invoice:fd.invoice||null, mat_ids:mat_ids, qtys:qtys, unit_costs:unit_costs})}).then(function(r){ return r.json().then(function(j){ return {ok:r.ok, status:r.status, body:j}; }); }).then(function(res){\n        var dd=res.body&&res.body.data?res.body.data:res.body;\n        if(!res.ok || !dd || dd.ok===false){ d2.setState({toast:'Erro ao criar ordem'+(res.status===401?' (sem permissão)':'')+'.', toastErr:true}); return; }\n        d2.data('buy').refresh(); d2.data('items').refresh();\n        d2.setState({formOpen:false, formData:{}, toast:'✓ Ordem '+(dd.identifier||'')+' criada · '+(dd.items||mat_ids.length)+' peças.', toastErr:false});\n      }).catch(function(err){ d2.setState({toast:'Erro ao criar ordem: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n\n    d2.on('[data-recv]','click',function(){\n      var sel=d2.state.sel; if(!sel) return;\n      var buys=recs('buy'), items=recs('items');\n      var o=null; for(var i=0;i<buys.length;i++){ if(mid(buys[i]._id)===sel){ o=buys[i]; break; } }\n      if(!o){ return; }\n      var its=items.filter(function(it){ return mid(it.buy_order)===sel; });\n      d2.setState({toast:'Recebendo no estoque…', toastErr:false});\n      var itemCount=its.length||1;\n      var done=function(res){ d2.data('buy').refresh(); d2.data('items').refresh(); d2.setState({toast:'✓ Recebido — '+itemCount+' '+(itemCount===1?'item':'itens')+' no estoque.', toastErr:false}); };\n      var fail=function(err){ d2.setState({toast:'Erro ao receber: '+(err&&err.message?err.message:err), toastErr:true}); };\n      if(its.length){\n        var body={ buy_order_id:sel, destination_id:mid(o.destination), item_ids:its.map(function(it){return mid(it._id);}), mat_ids:its.map(function(it){return mid(it.material);}), qtys:its.map(function(it){return Number(it.qty)||0;}) };\n        d2.rush('receive_buy_order_multi').invoke(body, {headers:{Authorization:'Bearer '+(localStorage.getItem('__data2-session-'+slug)||'')}}).then(function(res){ var dd=res&&res.data?res.data:res; if(dd&&dd.error){ throw new Error(dd.error.message||'Erro'); } done(dd); }).catch(fail);\n      } else if(o.material){\n        var b2={ buy_order_id:sel, material_id:mid(o.material), destination_id:mid(o.destination), qty:Number(o.qty)||0 };\n        d2.rush('receive_buy_order').invoke(b2, {headers:{Authorization:'Bearer '+(localStorage.getItem('__data2-session-'+slug)||'')}}).then(function(res){ var dd=res&&res.data?res.data:res; if(dd&&dd.error){ throw new Error(dd.error.message||'Erro'); } done(dd); }).catch(fail);\n      } else { d2.setState({toast:'Ordem sem linhas.', toastErr:true}); }\n    });\n  }\n};"}},"buy":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"buy"}}}},"items":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"items"}}}},"materials":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"materials"}}}},"companies":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"companies"}}}},"locations":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"locations"}}}},"invoices":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"invoices"}}}},"movements":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"movements"}}}},"invoiceEvents":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"invoiceEvents"}}}},"systemSlug":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"systemSlug"}}}}}}}},"__d2PrevCode":{"code":"export default {\n  css: `\n    :host{--red:#c8102e;--gold:#dcb42b;--green:#3ed47e;--blue:#5aa9ff;display:block;height:100%;background:#0d0d0d;}\n    .wrap{height:100%;display:flex;flex-direction:column;background:#0d0d0d;color:#f4f1ea;font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;padding:44px 46px 0;box-sizing:border-box;max-width:1360px;margin:0 auto;width:100%;overflow:hidden;position:relative;}\n    .tick{width:36px;height:3px;background:var(--red);margin-bottom:14px;}\n    .head{display:flex;justify-content:space-between;align-items:flex-end;}\n    h1{margin:0;font-size:52px;font-weight:800;letter-spacing:-2.5px;line-height:.95;}\n    .eyebrow{margin-top:14px;font-size:11px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);}\n    .act{background:transparent;border:1px solid var(--red);color:var(--red);font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px 18px;cursor:pointer;}\n    .act:active{transform:translateY(1px);}\n    .cols{flex:1;display:flex;gap:28px;margin-top:24px;min-height:0;}\n    .list{flex:0 0 42%;display:flex;flex-direction:column;min-height:0;border-right:1px solid rgba(244,241,234,0.08);padding-right:24px;}\n    .lh{font-size:9px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);padding-bottom:10px;border-bottom:1px solid rgba(244,241,234,0.1);}\n    .lsearch{padding:10px 0;} .lsearch .lq{width:100%;box-sizing:border-box;background:rgba(244,241,234,0.04);border:1px solid rgba(244,241,234,0.12);padding:8px 10px;color:#f4f1ea;font-size:12px;letter-spacing:.5px;outline:none;font-family:inherit;}\n    .rows{flex:1;overflow:auto;}\n    .o{display:flex;align-items:center;gap:12px;padding:14px 8px;border-bottom:1px solid rgba(244,241,234,0.06);cursor:pointer;}\n    .o:hover{background:rgba(244,241,234,0.02);}\n    .o.sel{background:rgba(220,180,43,0.06);box-shadow:inset 3px 0 0 var(--gold);}\n    .o .id{font-size:10px;letter-spacing:1.6px;font-weight:700;color:rgba(220,180,43,0.85);text-transform:uppercase;flex:0 0 74px;}\n    .o .nm{flex:1;font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .o .tot{font-family:ui-monospace,Menlo,monospace;font-size:13px;font-weight:700;color:var(--gold);font-variant-numeric:tabular-nums;}\n    .pill{display:inline-flex;align-items:center;gap:6px;font-size:9px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;padding:4px 9px;}\n    .pill .d{width:5px;height:5px;border-radius:50%;background:currentColor;}\n    .panel{flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto;position:relative;}\n    .empty{margin:auto;color:rgba(244,241,234,0.35);font-size:13px;letter-spacing:1px;text-align:center;line-height:1.7;}\n    .phead{display:flex;align-items:flex-start;gap:16px;}\n    .phead h2{margin:0;font-size:28px;font-weight:800;letter-spacing:-1px;}\n    .phead .sub{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);margin-top:6px;line-height:1.6;}\n    .stamp{margin-left:auto;align-self:center;padding:6px 14px;border:2.5px solid var(--green);border-radius:5px;color:var(--green);font-weight:800;font-size:15px;letter-spacing:2.5px;text-transform:uppercase;transform:rotate(-6deg);opacity:.92;\n      -webkit-mask-image:repeating-linear-gradient(44deg,#000 0 4px,rgba(0,0,0,.5) 4px 6px);}\n    .stamp small{display:block;font-family:ui-monospace,Menlo,monospace;font-size:7px;letter-spacing:1.5px;text-align:center;margin-top:1px;}\n    .items{margin-top:20px;border-top:2px solid rgba(244,241,234,0.85);}\n    .ih,.ir{display:grid;grid-template-columns:1fr 78px 96px 96px;align-items:center;}\n    .ih{padding:8px 4px;border-bottom:1px solid rgba(244,241,234,0.1);}\n    .ih div{font-size:9px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);}\n    .ih .r,.ir .r{text-align:right;}\n    .ir{padding:11px 4px;border-bottom:1px solid rgba(244,241,234,0.06);}\n    .ir .part{font-size:13.5px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .ir .part span{display:block;font-family:ui-monospace,Menlo,monospace;font-size:8.5px;letter-spacing:1px;color:rgba(220,180,43,0.6);text-transform:uppercase;margin-top:1px;}\n    .ir .num{font-family:ui-monospace,Menlo,monospace;font-size:14px;font-weight:600;text-align:right;font-variant-numeric:tabular-nums;}\n    .ir .rec{text-align:right;font-family:ui-monospace,Menlo,monospace;font-size:13px;font-weight:700;}\n    .ir .rec.done{color:var(--green);} .ir .rec.wait{color:rgba(244,241,234,0.4);}\n    .totrow{display:flex;justify-content:space-between;align-items:center;padding:14px 4px 6px;border-top:2px solid rgba(244,241,234,0.85);margin-top:8px;}\n    .totrow .tl{font-size:10px;letter-spacing:2.5px;text-transform:uppercase;color:rgba(244,241,234,0.5);font-weight:700;}\n    .totrow .tv{font-family:ui-monospace,Menlo,monospace;font-size:28px;font-weight:800;letter-spacing:-1px;font-variant-numeric:tabular-nums;color:var(--gold);}\n    .totrow .tv small{font-size:14px;color:rgba(244,241,234,0.55);margin-right:4px;}\n    .sec{margin-top:22px;padding-top:16px;border-top:1px solid rgba(244,241,234,0.08);}\n    .sec .sh{font-size:9px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);padding-bottom:8px;}\n    .sec .sh2{font-size:9px;letter-spacing:1.5px;font-weight:700;text-transform:uppercase;color:rgba(220,180,43,0.55);padding:8px 0 4px;}\n    .hrow{display:flex;justify-content:space-between;align-items:center;padding:8px 2px;border-bottom:1px solid rgba(244,241,234,0.06);}\n    .hrow .part{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:10px;}\n    .hrow .val{font-family:ui-monospace,Menlo,monospace;font-size:13px;font-weight:700;color:var(--gold);flex:0 0 auto;font-variant-numeric:tabular-nums;}\n    .hrow .val.dim{color:rgba(244,241,234,0.45);font-weight:600;}\n    .cta{padding:14px 0 22px;}\n    .cta button{width:100%;border:0;font-size:12px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:15px;cursor:pointer;border-radius:7px;\n      box-shadow:0 1px 0 rgba(255,255,255,.14) inset,0 5px 12px -5px rgba(0,0,0,.8);transition:transform .09s,filter .15s;}\n    .cta button:active{transform:translateY(2px);} .cta button:hover{filter:brightness(1.09);}\n    .cta .recv{background:linear-gradient(180deg,#3ed47e,#1f7a48);color:#04240f;}\n    .cta button:disabled{opacity:.4;cursor:not-allowed;filter:none;}\n    .toast{margin-top:10px;font-size:11px;font-weight:700;letter-spacing:1px;padding:8px 12px;}\n    .toast.ok{color:var(--gold);background:rgba(220,180,43,0.08);} .toast.err{color:#ff6b6b;background:rgba(255,107,107,0.08);}\n    .lnk{cursor:pointer;}\n    .lnk:hover{text-decoration:underline;color:var(--gold);}\n    .scrim{position:absolute;inset:0;background:rgba(0,0,0,0.6);display:flex;justify-content:flex-end;z-index:50;}\n    .drawer{width:460px;max-width:90%;height:100%;background:#141414;border-left:1px solid rgba(244,241,234,0.12);padding:40px 32px;box-sizing:border-box;overflow:auto;display:flex;flex-direction:column;gap:16px;}\n    .drawer h3{margin:0;font-size:26px;font-weight:800;letter-spacing:-1px;}\n    .drawer .stepnote{font-size:11px;color:rgba(244,241,234,0.45);letter-spacing:.5px;line-height:1.6;margin-top:-8px;}\n    .ff{display:flex;flex-direction:column;gap:6px;}\n    .ff label{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .ff input,.ff select{background:rgba(244,241,234,0.05);border:1px solid rgba(244,241,234,0.15);color:#f4f1ea;font-size:14px;padding:11px 12px;outline:none;font-family:inherit;}\n    .ff input:focus,.ff select:focus{border-color:var(--gold);}\n    .fbtns{display:flex;gap:10px;margin-top:8px;}\n    .fbtns .save{flex:1;background:var(--green);border:0;color:#04240f;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px;cursor:pointer;border-radius:6px;}\n    .fbtns .cancel{background:transparent;border:1px solid rgba(244,241,234,0.2);color:rgba(244,241,234,0.7);font-weight:700;letter-spacing:1px;text-transform:uppercase;padding:13px 18px;cursor:pointer;border-radius:6px;}\n    .sechr{height:1px;background:rgba(244,241,234,0.1);margin:2px 0 4px;}\n    .lines3{display:flex;flex-direction:column;gap:8px;}\n    .lnrow3{display:grid;grid-template-columns:1fr 64px 84px 32px;gap:8px;align-items:center;}\n    .lnrow3 select,.lnrow3 input{background:rgba(244,241,234,0.05);border:1px solid rgba(244,241,234,0.15);color:#f4f1ea;font-size:12.5px;padding:9px 8px;outline:none;font-family:inherit;width:100%;box-sizing:border-box;}\n    .lnrow3 select:focus,.lnrow3 input:focus{border-color:var(--gold);}\n    .rmbtn{background:transparent;border:1px solid rgba(255,107,107,0.4);color:#ff6b6b;font-size:13px;font-weight:800;cursor:pointer;width:30px;height:36px;border-radius:4px;line-height:1;}\n    .rmbtn:hover{background:rgba(255,107,107,0.1);}\n    .addln{margin-top:2px;background:transparent;border:1px dashed rgba(244,241,234,0.25);color:rgba(244,241,234,0.6);font-size:11px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;padding:10px;cursor:pointer;width:100%;}\n    .addln:hover{border-color:var(--gold);color:var(--gold);}\n    .lntot{text-align:right;font-size:11px;color:rgba(244,241,234,0.5);margin-top:2px;}\n    .lntot b{color:var(--gold);font-family:ui-monospace,Menlo,monospace;}\n  `,\n  render(d2){\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    function esc(s){ return String(s==null?'':s).replace(/[&<>\"]/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n    function recs(n){ try{ var d=d2.data(n); if(!d) return []; var pi=(typeof d.pageInfo==='function')?d.pageInfo():null; if(pi && pi.pages>1 && typeof d.loadAll==='function') d.loadAll(); return (d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    function mapBy(a){ var m={}; a.forEach(function(x){ m[mid(x._id)]=x; }); return m; }\n    function money(n){ return (Number(n)||0).toLocaleString('pt-BR',{minimumFractionDigits:2,maximumFractionDigits:2}); }\n\n    var buys=recs('buy'), items=recs('items'), mats=recs('materials'), comps=recs('companies'), locs=recs('locations'), invs=recs('invoices');\n    var suppliers=comps.filter(function(c){ return String(c.relation||'').toUpperCase()==='SUPPLIER'; });\n    var matMap=mapBy(mats), compMap=mapBy(comps), locMap=mapBy(locs), invMap=mapBy(invs);\n    var itemsByBuy={}; items.forEach(function(it){ var b=mid(it.buy_order); if(b) (itemsByBuy[b]=itemsByBuy[b]||[]).push(it); });\n    function linesOf(o){ var id=mid(o._id); var its=itemsByBuy[id]||[]; if(its.length) return its; if(o.material) return [{material:o.material, qty:o.qty, unit_cost:o.unit_cost, received_qty:(String(o.status||'').toUpperCase()==='RECEIVED'?(Number(o.qty)||0):0)}]; return []; }\n    function totOfO(o){ return linesOf(o).reduce(function(s,it){ return s+(Number(it.qty)||0)*(Number(it.unit_cost)||0); },0); }\n    function matName(id){ var m=matMap[mid(id)]; return m?(m.model||m.code||'—'):(mid(id)?String(mid(id)).slice(-6):'—'); }\n    function compName(id){ var c=compMap[mid(id)]; return c?(c.name||'—'):'—'; }\n    function locName(id){ var l=locMap[mid(id)]; return l?(l.name||'—'):'—'; }\n\n    function buildHistory(o, selId){\n      var moves=recs('movements').filter(function(m){ return mid(m.material_buy_order)===selId; });\n      var byType={};\n      moves.forEach(function(m){ var t=String(m.type||'').toUpperCase(); (byType[t]=byType[t]||[]).push(m); });\n      var TLABEL={CONSUME:'Consumido',PRODUCE:'Produzido',RECEIVE:'Recebido'};\n      var movHtml='';\n      if(moves.length){\n        movHtml='<div class=\"sec\"><div class=\"sh\">Movimentos de estoque · '+moves.length+'</div>'\n          +Object.keys(byType).map(function(t){\n            return '<div class=\"sh2\">'+esc(TLABEL[t]||t)+'</div>'+byType[t].map(function(m){\n              return '<div class=\"hrow\"><div class=\"part lnk\" data-goto=\"/stock-movement\">'+esc(matName(m.material))+'</div><div class=\"val'+(t==='CONSUME'?' dim':'')+'\">'+(t==='CONSUME'?'-':'+')+Math.abs(Number(m.amount)||0)+'</div></div>';\n            }).join('');\n          }).join('')\n          +'</div>';\n      }\n      var invId=mid(o.invoice);\n      var inv=invId?invMap[invId]:null;\n      var invHtml='';\n      if(inv){\n        var evts=recs('invoiceEvents').filter(function(ev){ return mid(ev.invoice)===invId; });\n        invHtml='<div class=\"sec\"><div class=\"sh lnk\" data-goto=\"/invoices\">Invoice · '+esc(inv.identifier||invId.slice(-6))+'</div>'\n          +'<div class=\"hrow\"><div class=\"part\">Valor total</div><div class=\"val\">R$ '+(inv.total_value!=null?Number(inv.total_value).toFixed(2):'—')+'</div></div>'\n          +(evts.length?evts.map(function(ev){\n            return '<div class=\"hrow\"><div class=\"part\">'+esc(ev.type||'Evento')+(ev.date?(' · '+String(ev.date).slice(0,10)):'')+'</div><div class=\"val dim\">'+(ev.total_value!=null?Number(ev.total_value).toFixed(2):'—')+'</div></div>';\n          }).join(''):'<div class=\"empty\" style=\"margin:10px auto;font-size:11px\">Sem eventos.</div>')\n          +'</div>';\n      }\n      return movHtml+invHtml;\n    }\n\n    var PILL={OPEN:['#dcb42b','rgba(220,180,43,0.12)','Aberta'],RECEIVED:['#3ed47e','rgba(62,212,126,0.12)','Recebida'],NULL:['rgba(244,241,234,0.5)','rgba(244,241,234,0.08)','—']};\n    function pill(s){ var p=PILL[String(s||'NULL').toUpperCase()]||PILL.NULL; return '<span class=\"pill\" style=\"color:'+p[0]+';background:'+p[1]+'\"><span class=\"d\"></span>'+esc(p[2])+'</span>'; }\n\n    var sel=d2.state.sel;\n    var q=String(d2.state.q||'').toLowerCase();\n    var buysF=!q?buys:buys.filter(function(o){\n      var sup=compName(o.supplier);\n      return String(o.identifier||'').toLowerCase().indexOf(q)>=0 || String(sup||'').toLowerCase().indexOf(q)>=0 || String(o.status||'').toLowerCase().indexOf(q)>=0;\n    });\n    var listHtml=buysF.map(function(o){\n      var id=mid(o._id); var n=linesOf(o).length;\n      return '<div class=\"o'+(sel===id?' sel':'')+'\" data-sel=\"'+esc(id)+'\"><span class=\"id\">'+esc(o.identifier||id.slice(-5))+'</span>'\n        +'<span class=\"nm\">'+esc(compName(o.supplier))+' · '+n+' '+(n===1?'item':'itens')+'</span>'\n        +'<span class=\"tot\">'+money(totOfO(o))+'</span>'+pill(o.status)+'</div>';\n    }).join('')||('<div class=\"empty\" style=\"margin:40px auto\">'+(q?('Nada encontrado para “'+esc(q)+'”.'):'Nenhuma ordem de compra.<br>Elas nascem no MRP da Produção ou aqui.')+'</div>');\n\n    var panel='<div class=\"empty\">Selecione uma ordem de compra<br>para ver as linhas.</div>';\n    if(sel){\n      var o=null; for(var i=0;i<buys.length;i++){ if(mid(buys[i]._id)===sel){ o=buys[i]; break; } }\n      if(o){\n        var its=linesOf(o);\n        var received=String(o.status||'').toUpperCase()==='RECEIVED';\n        var irows=its.map(function(it){\n          var rq=Number(it.received_qty)||0, q=Number(it.qty)||0;\n          return '<div class=\"ir\"><div class=\"part lnk\" data-goto=\"/materials\">'+esc(matName(it.material))+'<span>'+esc((matMap[mid(it.material)]||{}).code||'')+'</span></div>'\n            +'<div class=\"num\">'+q+'</div><div class=\"num\">'+money(it.unit_cost)+'</div>'\n            +'<div class=\"rec '+(rq>=q&&q>0?'done':'wait')+'\">'+(rq>0?rq+'/'+q:'—')+'</div></div>';\n        }).join('')||'<div class=\"empty\" style=\"margin:30px auto\">Sem linhas.</div>';\n        var inv=invMap[mid(o.invoice)];\n        var stamp=received?'<div class=\"stamp\">Recebida<small>estoque atualizado</small></div>':'';\n        panel='<div class=\"phead\"><div><h2>'+esc(o.identifier||'Compra')+'</h2>'\n          +'<div class=\"sub\">'+pill(o.status)+' &nbsp;·&nbsp; Fornecedor <span class=\"lnk\" data-goto=\"/companies\">'+esc(compName(o.supplier))+'</span> · Destino '+esc(locName(o.destination))+(inv?(' · <span class=\"lnk\" data-goto=\"/invoices\">Conta '+esc(inv.identifier||'')+'</span>'):'')+'</div></div>'+stamp+'</div>'\n          +'<div class=\"items\"><div class=\"ih\"><div>Peça</div><div class=\"r\">Qtd</div><div class=\"r\">Custo un.</div><div class=\"r\">Recebido</div></div>'+irows+'</div>'\n          +'<div class=\"totrow\"><div class=\"tl\">Total da ordem</div><div class=\"tv\"><small>R$</small>'+money(totOfO(o))+'</div></div>'\n          +'<div class=\"cta\"><button class=\"recv\" data-recv '+(received?'disabled':'')+'>'+(received?'Ordem recebida':'Receber ordem no estoque')+'</button></div>'\n          +buildHistory(o, sel);\n      }\n    }\n    var toast=d2.state.toast?'<div class=\"toast '+(d2.state.toastErr?'err':'ok')+'\">'+esc(d2.state.toast)+'</div>':'';\n\n    function lineRows3Html(lines){\n      var arr=lines||[];\n      var rows=arr.map(function(ln,i){\n        var matOpts='<option value=\"\">—</option>'+mats.map(function(m){ var id=mid(m._id); return '<option value=\"'+esc(id)+'\"'+(String(ln.material)===String(id)?' selected':'')+'>'+esc((m.code?m.code+' · ':'')+(m.model||id))+'</option>'; }).join('');\n        return '<div class=\"lnrow3\" data-idx=\"'+i+'\">'\n          +'<select data-ln-mat data-idx=\"'+i+'\">'+matOpts+'</select>'\n          +'<input type=\"number\" min=\"0\" step=\"1\" data-ln-qty data-idx=\"'+i+'\" placeholder=\"Qtd\" value=\"'+esc(ln.qty!=null?ln.qty:'')+'\"/>'\n          +'<input type=\"number\" min=\"0\" step=\"0.01\" data-ln-cost data-idx=\"'+i+'\" placeholder=\"Custo un.\" value=\"'+esc(ln.unit_cost!=null?ln.unit_cost:'')+'\"/>'\n          +'<button class=\"rmbtn\" data-rm-line data-idx=\"'+i+'\" type=\"button\">×</button>'\n          +'</div>';\n      }).join('')||'<div class=\"empty\" style=\"margin:8px auto;font-size:12px\">Sem linhas. Adicione a primeira.</div>';\n      var tot=arr.reduce(function(s,ln){ return s+(Number(ln.qty)||0)*(Number(ln.unit_cost)||0); },0);\n      return '<div class=\"lines3\">'+rows+'</div><button class=\"addln\" data-add-line type=\"button\">+ Adicionar linha</button><div class=\"lntot\">Total: <b>R$ '+money(tot)+'</b></div>';\n    }\n\n    var newDrawer='';\n    if(d2.state.formOpen){\n      var fd=d2.state.formData||{};\n      var supOpts=suppliers.map(function(c){ var id=mid(c._id); return '<option value=\"'+esc(id)+'\"'+(String(fd.supplier)===String(id)?' selected':'')+'>'+esc(c.name||id)+'</option>'; }).join('');\n      var locOpts=locs.map(function(l){ var id=mid(l._id); return '<option value=\"'+esc(id)+'\"'+(String(fd.destination)===String(id)?' selected':'')+'>'+esc(l.name||id)+'</option>'; }).join('');\n      var invOpts=invs.map(function(v){ var id=mid(v._id); return '<option value=\"'+esc(id)+'\"'+(String(fd.invoice)===String(id)?' selected':'')+'>'+esc(v.identifier||id)+'</option>'; }).join('');\n      newDrawer='<div class=\"scrim\" data-scrim><div class=\"drawer\"><h3>Nova ordem de compra</h3>'\n        +'<div class=\"stepnote\">Uma ordem, várias peças — como uma nota de compra de verdade.</div>'\n        +'<div class=\"ff\"><label>Fornecedor</label><select data-ff=\"supplier\"><option value=\"\">—</option>'+supOpts+'</select></div>'\n        +'<div class=\"ff\"><label>Destino</label><select data-ff=\"destination\"><option value=\"\">—</option>'+locOpts+'</select></div>'\n        +'<div class=\"ff\"><label>Invoice (opcional)</label><select data-ff=\"invoice\"><option value=\"\">—</option>'+invOpts+'</select></div>'\n        +'<div class=\"sechr\"></div>'\n        +'<div class=\"ff\"><label>Peças da ordem</label></div>'\n        +lineRows3Html(fd.lines)\n        +'<div class=\"fbtns\"><button class=\"save\" data-save>Criar ordem</button><button class=\"cancel\" data-cancel>Cancelar</button></div></div></div>';\n    }\n\n    return '<div class=\"wrap\"><div class=\"tick\"></div>'\n      +'<div class=\"head\"><div><h1>Compras</h1><div class=\"eyebrow\">Ordens de compra de materiais · '+buys.length+' ordens</div></div><button class=\"act\" data-new>+ Nova ordem de compra</button></div>'\n      +toast\n      +'<div class=\"cols\"><div class=\"list\"><div class=\"lh\">Ordens de compra</div><div class=\"lsearch\"><input class=\"lq\" data-lq placeholder=\"BUSCAR\" value=\"'+esc(d2.state.q||'')+'\"/></div><div class=\"rows\">'+listHtml+'</div></div>'\n      +'<div class=\"panel\">'+panel+'</div></div>'+newDrawer+'</div>';\n  },\n  mounted(d2){\n    (function(){ try{ var sp=new URLSearchParams(window.location.search); var hl=sp.get('highlight'); if(hl && !d2.state.sel){ d2.setState({sel:hl}); } }catch(e){} })();\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    function recs(n){ try{ var d=d2.data(n); if(!d) return []; var pi=(typeof d.pageInfo==='function')?d.pageInfo():null; if(pi && pi.pages>1 && typeof d.loadAll==='function') d.loadAll(); return (d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    var slug=d2.param('systemSlug','roue');\n    d2.on('[data-sel]','click',function(e,el){ d2.setState({sel:el.getAttribute('data-sel'), toast:null}); });\n    d2.on('[data-goto]','click',function(e,el){ var target=el.getAttribute('data-goto'); var r=d2.process('XGxUgyQ-5U2VmVp3rFvVvInterface'); var h=r&&r.get&&r.get('history'); if (h && typeof h.push==='function') h.push(target); });\n    d2.on('[data-lq]','input',function(e,el){ d2.setState({q:el.value}); });\n    d2.on('[data-new]','click',function(){ d2.setState({formOpen:true, formData:{supplier:'',destination:'',invoice:'',lines:[{material:'',qty:'',unit_cost:0}]}}); });\n    d2.on('[data-cancel]','click',function(){ d2.setState({formOpen:false, formData:{}}); });\n    d2.on('[data-scrim]','click',function(e,el){ if(e.target===el) d2.setState({formOpen:false, formData:{}}); });\n    d2.on('[data-ff]','input',function(e,el){ var k=el.getAttribute('data-ff'); var fd=Object.assign({},d2.state.formData||{}); fd[k]=el.value; d2.state.formData=fd; });\n    d2.on('[data-ff]','change',function(e,el){ var k=el.getAttribute('data-ff'); var fd=Object.assign({},d2.state.formData||{}); fd[k]=el.value; d2.state.formData=fd; });\n\n    function patchLine(idx, field, val){\n      var fd=Object.assign({}, d2.state.formData||{});\n      var lines=(fd.lines||[]).map(function(l){ return Object.assign({},l); });\n      if(!lines[idx]) lines[idx]={material:'',qty:'',unit_cost:0};\n      lines[idx][field]=val;\n      fd.lines=lines;\n      d2.setState({formData:fd});\n    }\n    d2.on('[data-ln-mat]','change',function(e,el){ patchLine(Number(el.getAttribute('data-idx')),'material',el.value); });\n    d2.on('[data-ln-qty]','input',function(e,el){ patchLine(Number(el.getAttribute('data-idx')),'qty',el.value); });\n    d2.on('[data-ln-cost]','input',function(e,el){ patchLine(Number(el.getAttribute('data-idx')),'unit_cost',el.value); });\n    d2.on('[data-add-line]','click',function(){\n      var fd=Object.assign({}, d2.state.formData||{});\n      var lines=(fd.lines||[]).slice(); lines.push({material:'',qty:'',unit_cost:0});\n      fd.lines=lines; d2.setState({formData:fd});\n    });\n    d2.on('[data-rm-line]','click',function(e,el){\n      var idx=Number(el.getAttribute('data-idx'));\n      var fd=Object.assign({}, d2.state.formData||{});\n      var lines=(fd.lines||[]).slice(); lines.splice(idx,1);\n      fd.lines=lines; d2.setState({formData:fd});\n    });\n\n    d2.on('[data-save]','click',function(){\n      var fd=d2.state.formData||{};\n      if(!fd.supplier||!fd.destination){ d2.setState({toast:'Escolha fornecedor e destino.', toastErr:true}); return; }\n      var lines=(fd.lines||[]).filter(function(l){ return l && (l.material||l.qty); });\n      if(!lines.length){ d2.setState({toast:'Adicione ao menos uma peça.', toastErr:true}); return; }\n      for(var i=0;i<lines.length;i++){\n        if(!lines[i].material || !(Number(lines[i].qty)>0)){ d2.setState({toast:'Selecione material e quantidade (>0) em todas as linhas.', toastErr:true}); return; }\n      }\n      var mat_ids=lines.map(function(l){ return l.material; });\n      var qtys=lines.map(function(l){ return Number(l.qty)||0; });\n      var unit_costs=lines.map(function(l){ return Number(l.unit_cost)||0; });\n      d2.setState({toast:'Criando ordem de compra…', toastErr:false});\n      fetch('https://'+slug+'.data2apis.com/rush/create_buy_order_multi',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({supplier:fd.supplier, destination:fd.destination, invoice:fd.invoice||null, mat_ids:mat_ids, qtys:qtys, unit_costs:unit_costs})}).then(function(r){return r.json();}).then(function(res){\n        var dd=res&&res.data?res.data:res;\n        if(!dd||dd.ok===false){ d2.setState({toast:'Erro ao criar ordem.', toastErr:true}); return; }\n        d2.data('buy').refresh(); d2.data('items').refresh();\n        d2.setState({formOpen:false, formData:{}, toast:'✓ Ordem '+(dd.identifier||'')+' criada · '+(dd.items||mat_ids.length)+' peças.', toastErr:false});\n      }).catch(function(err){ d2.setState({toast:'Erro ao criar ordem: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n\n    d2.on('[data-recv]','click',function(){\n      var sel=d2.state.sel; if(!sel) return;\n      var buys=recs('buy'), items=recs('items');\n      var o=null; for(var i=0;i<buys.length;i++){ if(mid(buys[i]._id)===sel){ o=buys[i]; break; } }\n      if(!o){ return; }\n      var its=items.filter(function(it){ return mid(it.buy_order)===sel; });\n      d2.setState({toast:'Recebendo no estoque…', toastErr:false});\n      var itemCount=its.length||1;\n      var done=function(res){ d2.data('buy').refresh(); d2.data('items').refresh(); d2.setState({toast:'✓ Recebido — '+itemCount+' '+(itemCount===1?'item':'itens')+' no estoque.', toastErr:false}); };\n      var fail=function(err){ d2.setState({toast:'Erro ao receber: '+(err&&err.message?err.message:err), toastErr:true}); };\n      if(its.length){\n        var body={ buy_order_id:sel, destination_id:mid(o.destination), item_ids:its.map(function(it){return mid(it._id);}), mat_ids:its.map(function(it){return mid(it.material);}), qtys:its.map(function(it){return Number(it.qty)||0;}) };\n        d2.rush('receive_buy_order_multi').invoke(body, {headers:{Authorization:'Bearer '+(localStorage.getItem('__data2-session-'+slug)||'')}}).then(function(res){ var dd=res&&res.data?res.data:res; if(dd&&dd.error){ throw new Error(dd.error.message||'Erro'); } done(dd); }).catch(fail);\n      } else if(o.material){\n        var b2={ buy_order_id:sel, material_id:mid(o.material), destination_id:mid(o.destination), qty:Number(o.qty)||0 };\n        d2.rush('receive_buy_order').invoke(b2, {headers:{Authorization:'Bearer '+(localStorage.getItem('__data2-session-'+slug)||'')}}).then(function(res){ var dd=res&&res.data?res.data:res; if(dd&&dd.error){ throw new Error(dd.error.message||'Erro'); } done(dd); }).catch(fail);\n      } else { d2.setState({toast:'Ordem sem linhas.', toastErr:true}); }\n    });\n  }\n};","at":"2026-08-05T17:04:31.365Z"}}},{"_id":"6a4f951d94372c05a20dda51","component":"data2-core-types@Component","system":"6138ba0292425036c3b32255","params":{"extends":"data2-core-primitives@Block","component":"kProduction","package":"roue","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"export default {\n  css: `\n    :host{--red:#c8102e;--gold:#dcb42b;display:block;height:100%;background:#0d0d0d;}\n    .wrap{height:100%;display:flex;flex-direction:column;background:#0d0d0d;color:#f4f1ea;font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;padding:44px 46px 0;box-sizing:border-box;max-width:1360px;margin:0 auto;width:100%;overflow:hidden;position:relative;}\n    .tick{width:36px;height:3px;background:var(--red);margin-bottom:14px;}\n    .head{display:flex;justify-content:space-between;align-items:flex-end;}\n    h1{margin:0;font-size:52px;font-weight:800;letter-spacing:-2.5px;line-height:.95;}\n    .eyebrow{margin-top:14px;font-size:11px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);}\n    .act{background:transparent;border:1px solid var(--red);color:var(--red);font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px 18px;cursor:pointer;}\n    .act:active{transform:translateY(1px);}\n    .cols{flex:1;display:flex;gap:28px;margin-top:24px;min-height:0;}\n    .list{flex:0 0 42%;display:flex;flex-direction:column;min-height:0;border-right:1px solid rgba(244,241,234,0.08);padding-right:24px;}\n    .list .lh{font-size:9px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);padding-bottom:10px;border-bottom:1px solid rgba(244,241,234,0.1);}\n    .lsearch{padding:10px 0;} .lsearch .lq{width:100%;box-sizing:border-box;background:rgba(244,241,234,0.04);border:1px solid rgba(244,241,234,0.12);padding:8px 10px;color:#f4f1ea;font-size:12px;letter-spacing:.5px;outline:none;font-family:inherit;}\n    .rows{flex:1;overflow:auto;}\n    .o{display:flex;align-items:center;gap:12px;padding:14px 8px;border-bottom:1px solid rgba(244,241,234,0.06);cursor:pointer;}\n    .o:hover{background:rgba(244,241,234,0.02);}\n    .o.sel{background:rgba(220,180,43,0.06);box-shadow:inset 3px 0 0 var(--gold);}\n    .o .id{font-size:10px;letter-spacing:1.6px;font-weight:700;color:rgba(220,180,43,0.85);text-transform:uppercase;flex:0 0 78px;}\n    .o .nm{flex:1;font-size:15px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .o .qt{font-size:20px;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums;}\n    .pill{display:inline-flex;align-items:center;gap:6px;font-size:9px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;padding:4px 9px;}\n    .pill .d{width:5px;height:5px;border-radius:50%;background:currentColor;}\n    .panel{flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto;}\n    .empty{margin:auto;color:rgba(244,241,234,0.35);font-size:13px;letter-spacing:1px;}\n    .ptitle{display:flex;justify-content:space-between;align-items:baseline;}\n    .ptitle h2{margin:0;font-size:26px;font-weight:800;letter-spacing:-1px;}\n    .ptitle .sub{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .mrp{margin-top:18px;}\n    .mh,.mr{display:flex;align-items:center;}\n    .mh{padding-bottom:8px;border-bottom:1px solid rgba(244,241,234,0.1);}\n    .mh div{font-size:9px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);}\n    .mr{padding:9px 0;border-bottom:1px solid rgba(244,241,234,0.05);}\n    .mr .part{flex:1;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .mr .code{font-size:9px;letter-spacing:1.2px;color:rgba(220,180,43,0.7);text-transform:uppercase;}\n    .num{flex:0 0 88px;text-align:right;font-variant-numeric:tabular-nums;font-size:15px;font-weight:700;}\n    .num.dim{color:rgba(244,241,234,0.45);font-size:13px;}\n    .num.buy{color:var(--red);font-weight:800;}\n    .num.ok{color:var(--gold);}\n    .mr.short{background:rgba(200,16,46,0.05);}\n    .summary{display:flex;gap:22px;margin-top:16px;padding-top:16px;border-top:1px solid rgba(244,241,234,0.1);}\n    .kpi .v{font-size:30px;font-weight:800;letter-spacing:-1px;font-variant-numeric:tabular-nums;}\n    .kpi .l{font-size:9px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);margin-top:2px;}\n    .sec{margin-top:22px;padding-top:16px;border-top:1px solid rgba(244,241,234,0.08);}\n    .sec .sh{font-size:9px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);padding-bottom:8px;}\n    .sec .sh2{font-size:9px;letter-spacing:1.5px;font-weight:700;text-transform:uppercase;color:rgba(220,180,43,0.55);padding:8px 0 4px;}\n    .hrow{display:flex;justify-content:space-between;align-items:center;padding:8px 2px;border-bottom:1px solid rgba(244,241,234,0.06);}\n    .hrow .part{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:10px;}\n    .hrow .val{font-family:ui-monospace,Menlo,monospace;font-size:13px;font-weight:700;color:var(--gold);flex:0 0 auto;font-variant-numeric:tabular-nums;}\n    .hrow .val.dim{color:rgba(244,241,234,0.45);font-weight:600;}\n    .cta{margin-top:18px;display:flex;gap:12px;}\n    .cta button{flex:1;border:0;font-size:12px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:15px;cursor:pointer;}\n    .cta .buy{background:var(--red);color:#fff;}\n    .cta .prod{background:var(--gold);color:#0d0d0d;}\n    .cta button:disabled{opacity:.35;cursor:not-allowed;}\n    .toast{margin-top:12px;font-size:11px;font-weight:700;letter-spacing:1px;padding:9px 12px;}\n    .toast.ok{color:var(--gold);background:rgba(220,180,43,0.08);} .toast.err{color:#ff6b6b;background:rgba(255,107,107,0.08);}\n    .scrim{position:absolute;inset:0;background:rgba(0,0,0,0.6);display:flex;justify-content:flex-end;z-index:50;}\n    .drawer{width:440px;max-width:90%;height:100%;background:#141414;border-left:1px solid rgba(244,241,234,0.12);padding:40px 34px;box-sizing:border-box;overflow:auto;display:flex;flex-direction:column;gap:18px;}\n    .drawer h3{margin:0;font-size:28px;font-weight:800;letter-spacing:-1px;}\n    .ff{display:flex;flex-direction:column;gap:6px;}\n    .ff label{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .ff input,.ff select{background:rgba(244,241,234,0.05);border:1px solid rgba(244,241,234,0.15);color:#f4f1ea;font-size:14px;padding:11px 12px;outline:none;}\n    .ff input:focus,.ff select:focus{border-color:var(--gold);}\n    .fbtns{display:flex;gap:10px;margin-top:10px;}\n    .fbtns .save{flex:1;background:var(--red);border:0;color:#fff;font-size:12px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px;cursor:pointer;}\n    .fbtns .cancel{background:transparent;border:1px solid rgba(244,241,234,0.2);color:rgba(244,241,234,0.7);font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;padding:13px 18px;cursor:pointer;}\n    .lnk{cursor:pointer;}\n    .lnk:hover{text-decoration:underline;color:var(--gold);}\n  `,\n  render(d2){\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    function esc(s){ return String(s==null?'':s).replace(/[&<>\"]/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n    function recs(n){ try{ var d=d2.data(n); if(!d) return []; var pi=(typeof d.pageInfo==='function')?d.pageInfo():null; if(pi && pi.pages>1 && typeof d.loadAll==='function') d.loadAll(); return (d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    function mapBy(arr){ var m={}; arr.forEach(function(x){ m[mid(x._id)]=x; }); return m; }\n\n    var prod=recs('prod'), watches=recs('watches'), locs=recs('locations'), invs=recs('invoices'), mats=recs('materials'), boms=recs('bom'), stock=recs('stock'), buys=recs('buy');\n    var matMap=mapBy(mats), locMap=mapBy(locs), invMap=mapBy(invs);\n    var skus=mats.filter(function(m){ return String(m.type||'').toUpperCase()==='WATCH'; });\n\n    // stock balance per material id (append-only ledger → sum)\n    var bal={}; stock.forEach(function(s){ var m=mid(s.material); if(!m) return; bal[m]=(bal[m]||0)+(Number(s.amount)||0); });\n    // bom by sku id\n    var bomBySku={}; boms.forEach(function(b){ bomBySku[mid(b.sku_reference)]=b; });\n\n    var PILL={OPEN:['#dcb42b','rgba(220,180,43,0.12)','Aberta'],PLANNED:['#5aa9ff','rgba(90,169,255,0.12)','Planejada'],COMPLETED:['#3ed47e','rgba(62,212,126,0.12)','Concluída'],NULL:['rgba(244,241,234,0.5)','rgba(244,241,234,0.08)','—']};\n    function pill(st){ var p=PILL[String(st||'NULL').toUpperCase()]||PILL.NULL; return '<span class=\"pill\" style=\"color:'+p[0]+';background:'+p[1]+'\"><span class=\"d\"></span>'+esc(p[2])+'</span>'; }\n    function wname(id){ var w=matMap[mid(id)]; return w?(w.model||w.code||'—'):'—'; }\n\n    function buildHistory(o, selId){\n      var moves=recs('movements').filter(function(m){ return mid(m.production_order)===selId; });\n      var byType={};\n      moves.forEach(function(m){ var t=String(m.type||'').toUpperCase(); (byType[t]=byType[t]||[]).push(m); });\n      var TLABEL={CONSUME:'Consumido',PRODUCE:'Produzido',RECEIVE:'Recebido'};\n      var movHtml='';\n      if(moves.length){\n        movHtml='<div class=\"sec\"><div class=\"sh\">Movimentos de estoque · '+moves.length+'</div>'\n          +Object.keys(byType).map(function(t){\n            return '<div class=\"sh2\">'+esc(TLABEL[t]||t)+'</div>'+byType[t].map(function(m){\n              return '<div class=\"hrow\"><div class=\"part lnk\" data-goto=\"/stock-movement\">'+esc(wname(m.material))+'</div><div class=\"val'+(t==='CONSUME'?' dim':'')+'\">'+(t==='CONSUME'?'-':'+')+Math.abs(Number(m.amount)||0)+'</div></div>';\n            }).join('');\n          }).join('')\n          +'</div>';\n      }\n      var invId=mid(o.invoice);\n      var inv=invId?invMap[invId]:null;\n      var invHtml='';\n      if(inv){\n        var evts=recs('invoiceEvents').filter(function(ev){ return mid(ev.invoice)===invId; });\n        invHtml='<div class=\"sec\"><div class=\"sh lnk\" data-goto=\"/invoices\">Invoice · '+esc(inv.identifier||invId.slice(-6))+'</div>'\n          +'<div class=\"hrow\"><div class=\"part\">Valor total</div><div class=\"val\">R$ '+(inv.total_value!=null?Number(inv.total_value).toFixed(2):'—')+'</div></div>'\n          +(evts.length?evts.map(function(ev){\n            return '<div class=\"hrow\"><div class=\"part\">'+esc(ev.type||'Evento')+(ev.date?(' · '+String(ev.date).slice(0,10)):'')+'</div><div class=\"val dim\">'+(ev.total_value!=null?Number(ev.total_value).toFixed(2):'—')+'</div></div>';\n          }).join(''):'<div class=\"empty\" style=\"margin:10px auto;font-size:11px\">Sem eventos.</div>')\n          +'</div>';\n      }\n      return movHtml+invHtml;\n    }\n\n    var sel=d2.state.sel;\n    var validProd=prod.filter(function(o){ return mid(o.watch_sku); });\n    var hiddenN=prod.length-validProd.length;\n    var q=String(d2.state.q||'').toLowerCase();\n    var validProdF=!q?validProd:validProd.filter(function(o){\n      var wn=wname(o.watch_sku);\n      return String(o.identifier||'').toLowerCase().indexOf(q)>=0 || String(wn||'').toLowerCase().indexOf(q)>=0 || String(o.status||'').toLowerCase().indexOf(q)>=0;\n    });\n    var orderRows=validProdF.map(function(o){\n      var id=mid(o._id); var wn=wname(o.watch_sku);\n      return '<div class=\"o'+(sel===id?' sel':'')+'\" data-sel=\"'+esc(id)+'\"><span class=\"id\">'+esc(o.identifier||id.slice(-5))+'</span>'\n        +'<span class=\"nm\">'+esc(wn)+'</span><span class=\"qt\">'+esc(o.qty!=null?o.qty:'?')+'</span>'+pill(o.status)+'</div>';\n    }).join('')||('<div class=\"empty\" style=\"margin:40px auto\">'+(q?('Nada encontrado para “'+esc(q)+'”.'):'Nenhuma ordem.')+'</div>');\n\n    // right panel — MRP for selected order\n    var panel='<div class=\"empty\">Selecione uma ordem<br>ou crie uma nova.</div>';\n    if(sel){\n      var o=null; for(var i=0;i<prod.length;i++){ if(mid(prod[i]._id)===sel){ o=prod[i]; break; } }\n      if(o){\n        var skuId=mid(o.watch_sku), qty=Number(o.qty)||0;\n        var bom=bomBySku[skuId];\n        if(!bom || !bom.material || !bom.material.length){\n          panel='<div class=\"ptitle\"><h2 class=\"lnk\" data-goto=\"/materials\">'+esc(wname(o.watch_sku))+'</h2><span class=\"sub\">'+pill(o.status)+' &nbsp;·&nbsp; '+esc(o.identifier||'')+'</span></div>'\n            +'<div class=\"empty\" style=\"margin-top:40px\">Sem BOM cadastrada para este SKU.</div>';\n        } else {\n          var lines=bom.material.map(function(m,ix){\n            var matId=mid(m), per=Number(bom.qtd[ix])||0, need=per*qty, have=bal[matId]||0, buy=Math.max(0,need-have);\n            var nm=(m&&typeof m==='object')?(m.model||m.code||matId):(matMap[matId]?(matMap[matId].model||matMap[matId].code):matId);\n            var code=(m&&typeof m==='object')?m.code:(matMap[matId]?matMap[matId].code:'');\n            return {matId:matId, nm:nm, code:code, need:need, have:have, buy:buy};\n          });\n          var toBuy=lines.filter(function(l){ return l.buy>0; });\n          var mrpRows=lines.map(function(l){\n            return '<div class=\"mr'+(l.buy>0?' short':'')+'\"><div class=\"part\">'+esc(l.nm)+'<div class=\"code\">'+esc(l.code||'')+'</div></div>'\n              +'<div class=\"num dim\">'+l.need+'</div><div class=\"num '+(l.have>=l.need?'ok':'')+'\">'+l.have+'</div>'\n              +'<div class=\"num '+(l.buy>0?'buy':'dim')+'\">'+(l.buy>0?l.buy:'—')+'</div></div>';\n          }).join('');\n          var covered=(toBuy.length===0), done=String(o.status||'').toUpperCase()==='COMPLETED';\n          var cta='';\n          if(done){ cta='<div class=\"toast ok\" style=\"text-align:center\">✓ Produção concluída.</div>'; }\n          else {\n            cta='<div class=\"cta\">'\n              +'<button class=\"buy\" data-genbuy '+(toBuy.length?'':'disabled')+'>Gerar compras · '+toBuy.length+'</button>'\n              +'<button class=\"prod\" data-produce '+(covered?'':'disabled')+'>Produzir</button></div>';\n          }\n          panel='<div class=\"ptitle\"><h2 class=\"lnk\" data-goto=\"/materials\">'+esc(wname(o.watch_sku))+'</h2><span class=\"sub\">'+pill(o.status)+' &nbsp;·&nbsp; '+esc(o.identifier||'')+' · '+esc((locMap[mid(o.factory_location)]||{}).name||'sem fábrica')+' · '+qty+' un</span></div>'\n            +'<div class=\"mrp\"><div class=\"mh\"><div class=\"part\">Peça</div><div class=\"num\" style=\"flex:0 0 88px\">Precisa</div><div class=\"num\" style=\"flex:0 0 88px\">Tem</div><div class=\"num\" style=\"flex:0 0 88px\">Comprar</div></div>'+mrpRows+'</div>'\n            +'<div class=\"summary\"><div class=\"kpi\"><div class=\"v\">'+lines.length+'</div><div class=\"l\">Peças</div></div>'\n            +'<div class=\"kpi\"><div class=\"v\" style=\"color:'+(covered?'#3ed47e':'#c8102e')+'\">'+toBuy.length+'</div><div class=\"l\">Em falta</div></div>'\n            +'<div class=\"kpi\"><div class=\"v\" style=\"color:var(--gold)\">'+(covered?'PRONTO':'FALTA')+'</div><div class=\"l\">Estoque</div></div></div>'\n            +cta;\n        }\n        panel += buildHistory(o, sel);\n      }\n    }\n\n    var toast=d2.state.toast?'<div class=\"toast '+(d2.state.toastErr?'err':'ok')+'\">'+esc(d2.state.toast)+'</div>':'';\n\n    // new-order drawer\n    var drawer='';\n    if(d2.state.formOpen){\n      var fd=d2.state.formData||{};\n      var wopts=skus.map(function(w){ var id=mid(w._id); return '<option value=\"'+esc(id)+'\"'+(String(fd.watch_sku)===String(id)?' selected':'')+'>'+esc(w.model||w.code||id)+'</option>'; }).join('');\n      var facs=locs.filter(function(l){ return String(l.type||'').toUpperCase()==='FACTORY'; });\n      var fopts=facs.map(function(l){ var id=mid(l._id); return '<option value=\"'+esc(id)+'\"'+(String(fd.factory_location)===String(id)?' selected':'')+'>'+esc(l.name||id)+'</option>'; }).join('');\n      var iopts=invs.map(function(v){ var id=mid(v._id); return '<option value=\"'+esc(id)+'\"'+(String(fd.invoice)===String(id)?' selected':'')+'>'+esc(v.identifier||id)+'</option>'; }).join('');\n      var previewHtml='';\n      if(fd.watch_sku && Number(fd.qty)>0){\n        var pbom=bomBySku[fd.watch_sku];\n        var pqty=Number(fd.qty)||0;\n        if(!pbom || !pbom.material || !pbom.material.length){\n          previewHtml='<div class=\"sec\"><div class=\"sh\">Prévia da produção</div><div class=\"empty\" style=\"margin:14px auto;font-size:12px;text-align:center\">Sem BOM cadastrada para este SKU.<br><span class=\"lnk\" data-goto=\"/bom\">Cadastrar composição →</span></div></div>';\n        } else {\n          var plines=pbom.material.map(function(m,ix){\n            var matId=mid(m), per=Number(pbom.qtd[ix])||0, need=per*pqty, have=bal[matId]||0, buy=Math.max(0,need-have);\n            var nm=(m&&typeof m==='object')?(m.model||m.code||matId):(matMap[matId]?(matMap[matId].model||matMap[matId].code):matId);\n            return {nm:nm, need:need, have:have, buy:buy};\n          });\n          var ptoBuy=plines.filter(function(l){ return l.buy>0; });\n          var prows=plines.map(function(l){\n            return '<div class=\"mr'+(l.buy>0?' short':'')+'\" style=\"padding:6px 0\"><div class=\"part\" style=\"font-size:12px\">'+esc(l.nm)+'</div><div class=\"num dim\" style=\"flex:0 0 60px;font-size:12px\">'+l.need+'</div><div class=\"num '+(l.have>=l.need?'ok':'')+'\" style=\"flex:0 0 60px;font-size:12px\">'+l.have+'</div><div class=\"num '+(l.buy>0?'buy':'dim')+'\" style=\"flex:0 0 60px;font-size:12px\">'+(l.buy>0?l.buy:'—')+'</div></div>';\n          }).join('');\n          previewHtml='<div class=\"sec\"><div class=\"sh\">Prévia da produção · '+plines.length+' peças'+(ptoBuy.length?(' · '+ptoBuy.length+' em falta'):' · estoque cobre tudo')+'</div>'\n            +'<div class=\"mh\" style=\"margin-top:6px\"><div class=\"part\" style=\"font-size:9px\">Peça</div><div style=\"flex:0 0 60px;font-size:9px\">Precisa</div><div style=\"flex:0 0 60px;font-size:9px\">Tem</div><div style=\"flex:0 0 60px;font-size:9px\">Comprar</div></div>'\n            +prows+'</div>';\n        }\n      }\n      drawer='<div class=\"scrim\" data-scrim><div class=\"drawer\"><h3>Nova ordem</h3>'\n        +'<div class=\"ff\"><label>Relógio (SKU)</label><select data-ff=\"watch_sku\"><option value=\"\">—</option>'+wopts+'</select></div>'\n        +'<div class=\"ff\"><label>Quantidade</label><input type=\"number\" data-ff=\"qty\" value=\"'+esc(fd.qty!=null?fd.qty:'')+'\"/></div>'\n        +'<div class=\"ff\"><label>Fábrica</label><select data-ff=\"factory_location\"><option value=\"\">—</option>'+fopts+'</select></div>'\n        +'<div class=\"ff\"><label>Invoice (conta)</label><select data-ff=\"invoice\"><option value=\"\">—</option>'+iopts+'</select></div>'\n        +previewHtml\n        +'<div class=\"fbtns\"><button class=\"save\" data-save>Criar ordem</button><button class=\"cancel\" data-cancel>Cancelar</button></div></div></div>';\n    }\n\n    return '<div class=\"wrap\"><div class=\"tick\"></div>'\n      +'<div class=\"head\"><div><h1>Produção</h1><div class=\"eyebrow\">Ordens de produção · MRP  ·  '+validProd.length+' ordens'+(hiddenN?' · '+hiddenN+' incompletas ocultas':'')+'</div></div>'\n      +'<button class=\"act\" data-new>+ Nova ordem</button></div>'\n      +toast\n      +'<div class=\"cols\"><div class=\"list\"><div class=\"lh\">Ordens</div><div class=\"lsearch\"><input class=\"lq\" data-lq placeholder=\"BUSCAR\" value=\"'+esc(d2.state.q||'')+'\"/></div><div class=\"rows\">'+orderRows+'</div></div>'\n      +'<div class=\"panel\">'+panel+'</div></div>'+drawer+'</div>';\n  },\n  mounted(d2){\n    (function(){ try{ var sp=new URLSearchParams(window.location.search); var hl=sp.get('highlight'); if(hl && !d2.state.sel){ d2.setState({sel:hl}); } }catch(e){} })();\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    function recs(n){ try{ var d=d2.data(n); if(!d) return []; var pi=(typeof d.pageInfo==='function')?d.pageInfo():null; if(pi && pi.pages>1 && typeof d.loadAll==='function') d.loadAll(); return (d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    var slug=d2.param('systemSlug','roue');\n\n    d2.on('[data-lq]','input',function(e,el){ d2.setState({q:el.value}); });\n    d2.on('[data-sel]','click',function(e,el){ d2.setState({sel:el.getAttribute('data-sel'), toast:null}); });\n    d2.on('[data-goto]','click',function(e,el){ var target=el.getAttribute('data-goto'); var r=d2.process('XGxUgyQ-5U2VmVp3rFvVvInterface'); var h=r&&r.get&&r.get('history'); if (h && typeof h.push==='function') h.push(target); });\n    d2.on('[data-new]','click',function(){ d2.setState({formOpen:true, formData:{}}); });\n    d2.on('[data-cancel]','click',function(){ d2.setState({formOpen:false, formData:{}}); });\n    d2.on('[data-scrim]','click',function(e,el){ if(e.target===el) d2.setState({formOpen:false, formData:{}}); });\n    d2.on('[data-ff]','input',function(e,el){ var k=el.getAttribute('data-ff'); var fd=Object.assign({},d2.state.formData||{}); fd[k]=el.value; d2.state.formData=fd; });\n    d2.on('[data-ff]','change',function(e,el){ var k=el.getAttribute('data-ff'); var fd=Object.assign({},d2.state.formData||{}); fd[k]=el.value; d2.state.formData=fd; });\n\n    d2.on('[data-save]','click',function(){\n      var fd=d2.state.formData||{};\n      if(!fd.watch_sku||!fd.qty){ d2.setState({toast:'Escolha o relógio e a quantidade.', toastErr:true}); return; }\n      var rec={ watch_sku:fd.watch_sku, qty:Number(fd.qty), factory_location:fd.factory_location||null, invoice:fd.invoice||null, status:'OPEN' };\n      var ds=d2.data('prod');\n      d2.setState({toast:'Criando ordem…', toastErr:false});\n      Promise.resolve(ds.create(rec)).then(function(){ return ds.save(); }).then(function(){ ds.refresh(); d2.setState({formOpen:false, formData:{}, toast:'✓ Ordem criada.', toastErr:false}); })\n        .catch(function(err){ d2.setState({toast:'Erro ao criar ordem: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n\n    d2.on('[data-genbuy]','click',function(){\n      var sel=d2.state.sel; if(!sel) return;\n      var prod=recs('prod'), boms=recs('bom'), stock=recs('stock'), invs=recs('invoices'), buys=recs('buy');\n      var o=null; for(var i=0;i<prod.length;i++){ if(mid(prod[i]._id)===sel){ o=prod[i]; break; } }\n      if(!o){ return; }\n      var skuId=mid(o.watch_sku), qty=Number(o.qty)||0;\n      var bom=null; for(var j=0;j<boms.length;j++){ if(mid(boms[j].sku_reference)===skuId){ bom=boms[j]; break; } }\n      if(!bom){ d2.setState({toast:'Sem BOM para este SKU.', toastErr:true}); return; }\n      var bal={}; stock.forEach(function(s){ var m=mid(s.material); if(m) bal[m]=(bal[m]||0)+(Number(s.amount)||0); });\n      var mat_ids=[], qtys=[], unit_costs=[];\n      bom.material.forEach(function(m,ix){ var matId=mid(m), need=(Number(bom.qtd[ix])||0)*qty, have=bal[matId]||0, buy=Math.max(0,need-have); if(buy>0){ mat_ids.push(matId); qtys.push(buy); unit_costs.push(0); } });\n      if(!mat_ids.length){ d2.setState({toast:'Estoque já cobre — nada a comprar.', toastErr:false}); return; }\n      var invId=mid(o.invoice); var inv=null; for(var k=0;k<invs.length;k++){ if(mid(invs[k]._id)===invId){ inv=invs[k]; break; } }\n      var supplier=inv?mid(inv.issuer):null;\n      var bid='BO-'+String(buys.length+1).padStart(3,'0');\n      var body={ production_order_id:sel, invoice_id:invId, supplier_id:supplier, destination_id:mid(o.factory_location), currency:'BRL', buy_identifier:bid, total:0, mat_ids:mat_ids, qtys:qtys, unit_costs:unit_costs };\n      d2.setState({toast:'Gerando ordem de compra…', toastErr:false});\n      fetch('https://'+slug+'.data2apis.com/rush/plan_production_order',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(body)}).then(function(r){return r.json();}).then(function(res){ var dd=res&&res.data?res.data:res; d2.data('prod').refresh(); d2.data('buy').refresh(); d2.setState({toast:'✓ Compra '+esc(dd.identifier||'')+' gerada · '+(dd.items||mat_ids.length)+' itens.', toastErr:false}); }).catch(function(err){ d2.setState({toast:'Erro ao gerar compra: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n\n    d2.on('[data-produce]','click',function(){\n      var sel=d2.state.sel; if(!sel) return;\n      var prod=recs('prod'); var o=null; for(var i=0;i<prod.length;i++){ if(mid(prod[i]._id)===sel){ o=prod[i]; break; } }\n      if(!o){ return; }\n      var body={ production_order_id:sel, qty_multiplier:Number(o.qty)||1, factory_location_id:mid(o.factory_location), watch_sku_id:mid(o.watch_sku), identifier:o.identifier||'' };\n      d2.setState({toast:'Produzindo…', toastErr:false});\n      d2.rush('bom_consume_one').invoke(body, {headers:{Authorization:'Bearer '+(localStorage.getItem('__data2-session-'+slug)||'')}}).then(function(res){ var dd=res&&res.data?res.data:res; if(dd&&dd.error){ throw new Error(dd.error.message||'Erro'); } d2.data('prod').refresh(); d2.data('stock').refresh(); d2.setState({toast:'✓ Produção concluída — estoque atualizado ('+(dd.units_produced||o.qty)+' un · '+(dd.bom_lines||'?')+' peças consumidas).', toastErr:false}); }).catch(function(err){ d2.setState({toast:'Erro ao produzir: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n  }\n};"}},"prod":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"prod"}}}},"watches":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"watches"}}}},"locations":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"locations"}}}},"invoices":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"invoices"}}}},"materials":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"materials"}}}},"bom":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"bom"}}}},"stock":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"stock"}}}},"buy":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"buy"}}}},"systemSlug":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"systemSlug"}}}},"movements":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"movements"}}}},"invoiceEvents":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"invoiceEvents"}}}}}}}},"__d2PrevCode":{"code":"export default {\n  css: `\n    :host{--red:#c8102e;--gold:#dcb42b;display:block;height:100%;background:#0d0d0d;}\n    .wrap{height:100%;display:flex;flex-direction:column;background:#0d0d0d;color:#f4f1ea;font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;padding:44px 46px 0;box-sizing:border-box;max-width:1360px;margin:0 auto;width:100%;overflow:hidden;position:relative;}\n    .tick{width:36px;height:3px;background:var(--red);margin-bottom:14px;}\n    .head{display:flex;justify-content:space-between;align-items:flex-end;}\n    h1{margin:0;font-size:52px;font-weight:800;letter-spacing:-2.5px;line-height:.95;}\n    .eyebrow{margin-top:14px;font-size:11px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);}\n    .act{background:transparent;border:1px solid var(--red);color:var(--red);font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px 18px;cursor:pointer;}\n    .act:active{transform:translateY(1px);}\n    .cols{flex:1;display:flex;gap:28px;margin-top:24px;min-height:0;}\n    .list{flex:0 0 42%;display:flex;flex-direction:column;min-height:0;border-right:1px solid rgba(244,241,234,0.08);padding-right:24px;}\n    .list .lh{font-size:9px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);padding-bottom:10px;border-bottom:1px solid rgba(244,241,234,0.1);}\n    .lsearch{padding:10px 0;} .lsearch .lq{width:100%;box-sizing:border-box;background:rgba(244,241,234,0.04);border:1px solid rgba(244,241,234,0.12);padding:8px 10px;color:#f4f1ea;font-size:12px;letter-spacing:.5px;outline:none;font-family:inherit;}\n    .rows{flex:1;overflow:auto;}\n    .o{display:flex;align-items:center;gap:12px;padding:14px 8px;border-bottom:1px solid rgba(244,241,234,0.06);cursor:pointer;}\n    .o:hover{background:rgba(244,241,234,0.02);}\n    .o.sel{background:rgba(220,180,43,0.06);box-shadow:inset 3px 0 0 var(--gold);}\n    .o .id{font-size:10px;letter-spacing:1.6px;font-weight:700;color:rgba(220,180,43,0.85);text-transform:uppercase;flex:0 0 78px;}\n    .o .nm{flex:1;font-size:15px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .o .qt{font-size:20px;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums;}\n    .pill{display:inline-flex;align-items:center;gap:6px;font-size:9px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;padding:4px 9px;}\n    .pill .d{width:5px;height:5px;border-radius:50%;background:currentColor;}\n    .panel{flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto;}\n    .empty{margin:auto;color:rgba(244,241,234,0.35);font-size:13px;letter-spacing:1px;}\n    .ptitle{display:flex;justify-content:space-between;align-items:baseline;}\n    .ptitle h2{margin:0;font-size:26px;font-weight:800;letter-spacing:-1px;}\n    .ptitle .sub{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .mrp{margin-top:18px;}\n    .mh,.mr{display:flex;align-items:center;}\n    .mh{padding-bottom:8px;border-bottom:1px solid rgba(244,241,234,0.1);}\n    .mh div{font-size:9px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);}\n    .mr{padding:9px 0;border-bottom:1px solid rgba(244,241,234,0.05);}\n    .mr .part{flex:1;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .mr .code{font-size:9px;letter-spacing:1.2px;color:rgba(220,180,43,0.7);text-transform:uppercase;}\n    .num{flex:0 0 88px;text-align:right;font-variant-numeric:tabular-nums;font-size:15px;font-weight:700;}\n    .num.dim{color:rgba(244,241,234,0.45);font-size:13px;}\n    .num.buy{color:var(--red);font-weight:800;}\n    .num.ok{color:var(--gold);}\n    .mr.short{background:rgba(200,16,46,0.05);}\n    .summary{display:flex;gap:22px;margin-top:16px;padding-top:16px;border-top:1px solid rgba(244,241,234,0.1);}\n    .kpi .v{font-size:30px;font-weight:800;letter-spacing:-1px;font-variant-numeric:tabular-nums;}\n    .kpi .l{font-size:9px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);margin-top:2px;}\n    .sec{margin-top:22px;padding-top:16px;border-top:1px solid rgba(244,241,234,0.08);}\n    .sec .sh{font-size:9px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);padding-bottom:8px;}\n    .sec .sh2{font-size:9px;letter-spacing:1.5px;font-weight:700;text-transform:uppercase;color:rgba(220,180,43,0.55);padding:8px 0 4px;}\n    .hrow{display:flex;justify-content:space-between;align-items:center;padding:8px 2px;border-bottom:1px solid rgba(244,241,234,0.06);}\n    .hrow .part{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:10px;}\n    .hrow .val{font-family:ui-monospace,Menlo,monospace;font-size:13px;font-weight:700;color:var(--gold);flex:0 0 auto;font-variant-numeric:tabular-nums;}\n    .hrow .val.dim{color:rgba(244,241,234,0.45);font-weight:600;}\n    .cta{margin-top:18px;display:flex;gap:12px;}\n    .cta button{flex:1;border:0;font-size:12px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:15px;cursor:pointer;}\n    .cta .buy{background:var(--red);color:#fff;}\n    .cta .prod{background:var(--gold);color:#0d0d0d;}\n    .cta button:disabled{opacity:.35;cursor:not-allowed;}\n    .toast{margin-top:12px;font-size:11px;font-weight:700;letter-spacing:1px;padding:9px 12px;}\n    .toast.ok{color:var(--gold);background:rgba(220,180,43,0.08);} .toast.err{color:#ff6b6b;background:rgba(255,107,107,0.08);}\n    .scrim{position:absolute;inset:0;background:rgba(0,0,0,0.6);display:flex;justify-content:flex-end;z-index:50;}\n    .drawer{width:440px;max-width:90%;height:100%;background:#141414;border-left:1px solid rgba(244,241,234,0.12);padding:40px 34px;box-sizing:border-box;overflow:auto;display:flex;flex-direction:column;gap:18px;}\n    .drawer h3{margin:0;font-size:28px;font-weight:800;letter-spacing:-1px;}\n    .ff{display:flex;flex-direction:column;gap:6px;}\n    .ff label{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .ff input,.ff select{background:rgba(244,241,234,0.05);border:1px solid rgba(244,241,234,0.15);color:#f4f1ea;font-size:14px;padding:11px 12px;outline:none;}\n    .ff input:focus,.ff select:focus{border-color:var(--gold);}\n    .fbtns{display:flex;gap:10px;margin-top:10px;}\n    .fbtns .save{flex:1;background:var(--red);border:0;color:#fff;font-size:12px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px;cursor:pointer;}\n    .fbtns .cancel{background:transparent;border:1px solid rgba(244,241,234,0.2);color:rgba(244,241,234,0.7);font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;padding:13px 18px;cursor:pointer;}\n    .lnk{cursor:pointer;}\n    .lnk:hover{text-decoration:underline;color:var(--gold);}\n  `,\n  render(d2){\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    function esc(s){ return String(s==null?'':s).replace(/[&<>\"]/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n    function recs(n){ try{ var d=d2.data(n); if(!d) return []; var pi=(typeof d.pageInfo==='function')?d.pageInfo():null; if(pi && pi.pages>1 && typeof d.loadAll==='function') d.loadAll(); return (d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    function mapBy(arr){ var m={}; arr.forEach(function(x){ m[mid(x._id)]=x; }); return m; }\n\n    var prod=recs('prod'), watches=recs('watches'), locs=recs('locations'), invs=recs('invoices'), mats=recs('materials'), boms=recs('bom'), stock=recs('stock'), buys=recs('buy');\n    var matMap=mapBy(mats), locMap=mapBy(locs), invMap=mapBy(invs);\n    var skus=mats.filter(function(m){ return String(m.type||'').toUpperCase()==='WATCH'; });\n\n    // stock balance per material id (append-only ledger → sum)\n    var bal={}; stock.forEach(function(s){ var m=mid(s.material); if(!m) return; bal[m]=(bal[m]||0)+(Number(s.amount)||0); });\n    // bom by sku id\n    var bomBySku={}; boms.forEach(function(b){ bomBySku[mid(b.sku_reference)]=b; });\n\n    var PILL={OPEN:['#dcb42b','rgba(220,180,43,0.12)','Aberta'],PLANNED:['#5aa9ff','rgba(90,169,255,0.12)','Planejada'],COMPLETED:['#3ed47e','rgba(62,212,126,0.12)','Concluída'],NULL:['rgba(244,241,234,0.5)','rgba(244,241,234,0.08)','—']};\n    function pill(st){ var p=PILL[String(st||'NULL').toUpperCase()]||PILL.NULL; return '<span class=\"pill\" style=\"color:'+p[0]+';background:'+p[1]+'\"><span class=\"d\"></span>'+esc(p[2])+'</span>'; }\n    function wname(id){ var w=matMap[mid(id)]; return w?(w.model||w.code||'—'):'—'; }\n\n    function buildHistory(o, selId){\n      var moves=recs('movements').filter(function(m){ return mid(m.production_order)===selId; });\n      var byType={};\n      moves.forEach(function(m){ var t=String(m.type||'').toUpperCase(); (byType[t]=byType[t]||[]).push(m); });\n      var TLABEL={CONSUME:'Consumido',PRODUCE:'Produzido',RECEIVE:'Recebido'};\n      var movHtml='';\n      if(moves.length){\n        movHtml='<div class=\"sec\"><div class=\"sh\">Movimentos de estoque · '+moves.length+'</div>'\n          +Object.keys(byType).map(function(t){\n            return '<div class=\"sh2\">'+esc(TLABEL[t]||t)+'</div>'+byType[t].map(function(m){\n              return '<div class=\"hrow\"><div class=\"part lnk\" data-goto=\"/stock-movement\">'+esc(wname(m.material))+'</div><div class=\"val'+(t==='CONSUME'?' dim':'')+'\">'+(t==='CONSUME'?'-':'+')+Math.abs(Number(m.amount)||0)+'</div></div>';\n            }).join('');\n          }).join('')\n          +'</div>';\n      }\n      var invId=mid(o.invoice);\n      var inv=invId?invMap[invId]:null;\n      var invHtml='';\n      if(inv){\n        var evts=recs('invoiceEvents').filter(function(ev){ return mid(ev.invoice)===invId; });\n        invHtml='<div class=\"sec\"><div class=\"sh lnk\" data-goto=\"/invoices\">Invoice · '+esc(inv.identifier||invId.slice(-6))+'</div>'\n          +'<div class=\"hrow\"><div class=\"part\">Valor total</div><div class=\"val\">R$ '+(inv.total_value!=null?Number(inv.total_value).toFixed(2):'—')+'</div></div>'\n          +(evts.length?evts.map(function(ev){\n            return '<div class=\"hrow\"><div class=\"part\">'+esc(ev.type||'Evento')+(ev.date?(' · '+String(ev.date).slice(0,10)):'')+'</div><div class=\"val dim\">'+(ev.total_value!=null?Number(ev.total_value).toFixed(2):'—')+'</div></div>';\n          }).join(''):'<div class=\"empty\" style=\"margin:10px auto;font-size:11px\">Sem eventos.</div>')\n          +'</div>';\n      }\n      return movHtml+invHtml;\n    }\n\n    var sel=d2.state.sel;\n    var validProd=prod.filter(function(o){ return mid(o.watch_sku); });\n    var hiddenN=prod.length-validProd.length;\n    var q=String(d2.state.q||'').toLowerCase();\n    var validProdF=!q?validProd:validProd.filter(function(o){\n      var wn=wname(o.watch_sku);\n      return String(o.identifier||'').toLowerCase().indexOf(q)>=0 || String(wn||'').toLowerCase().indexOf(q)>=0 || String(o.status||'').toLowerCase().indexOf(q)>=0;\n    });\n    var orderRows=validProdF.map(function(o){\n      var id=mid(o._id); var wn=wname(o.watch_sku);\n      return '<div class=\"o'+(sel===id?' sel':'')+'\" data-sel=\"'+esc(id)+'\"><span class=\"id\">'+esc(o.identifier||id.slice(-5))+'</span>'\n        +'<span class=\"nm\">'+esc(wn)+'</span><span class=\"qt\">'+esc(o.qty!=null?o.qty:'?')+'</span>'+pill(o.status)+'</div>';\n    }).join('')||('<div class=\"empty\" style=\"margin:40px auto\">'+(q?('Nada encontrado para “'+esc(q)+'”.'):'Nenhuma ordem.')+'</div>');\n\n    // right panel — MRP for selected order\n    var panel='<div class=\"empty\">Selecione uma ordem<br>ou crie uma nova.</div>';\n    if(sel){\n      var o=null; for(var i=0;i<prod.length;i++){ if(mid(prod[i]._id)===sel){ o=prod[i]; break; } }\n      if(o){\n        var skuId=mid(o.watch_sku), qty=Number(o.qty)||0;\n        var bom=bomBySku[skuId];\n        if(!bom || !bom.material || !bom.material.length){\n          panel='<div class=\"ptitle\"><h2 class=\"lnk\" data-goto=\"/materials\">'+esc(wname(o.watch_sku))+'</h2><span class=\"sub\">'+pill(o.status)+' &nbsp;·&nbsp; '+esc(o.identifier||'')+'</span></div>'\n            +'<div class=\"empty\" style=\"margin-top:40px\">Sem BOM cadastrada para este SKU.</div>';\n        } else {\n          var lines=bom.material.map(function(m,ix){\n            var matId=mid(m), per=Number(bom.qtd[ix])||0, need=per*qty, have=bal[matId]||0, buy=Math.max(0,need-have);\n            var nm=(m&&typeof m==='object')?(m.model||m.code||matId):(matMap[matId]?(matMap[matId].model||matMap[matId].code):matId);\n            var code=(m&&typeof m==='object')?m.code:(matMap[matId]?matMap[matId].code:'');\n            return {matId:matId, nm:nm, code:code, need:need, have:have, buy:buy};\n          });\n          var toBuy=lines.filter(function(l){ return l.buy>0; });\n          var mrpRows=lines.map(function(l){\n            return '<div class=\"mr'+(l.buy>0?' short':'')+'\"><div class=\"part\">'+esc(l.nm)+'<div class=\"code\">'+esc(l.code||'')+'</div></div>'\n              +'<div class=\"num dim\">'+l.need+'</div><div class=\"num '+(l.have>=l.need?'ok':'')+'\">'+l.have+'</div>'\n              +'<div class=\"num '+(l.buy>0?'buy':'dim')+'\">'+(l.buy>0?l.buy:'—')+'</div></div>';\n          }).join('');\n          var covered=(toBuy.length===0), done=String(o.status||'').toUpperCase()==='COMPLETED';\n          var cta='';\n          if(done){ cta='<div class=\"toast ok\" style=\"text-align:center\">✓ Produção concluída.</div>'; }\n          else {\n            cta='<div class=\"cta\">'\n              +'<button class=\"buy\" data-genbuy '+(toBuy.length?'':'disabled')+'>Gerar compras · '+toBuy.length+'</button>'\n              +'<button class=\"prod\" data-produce '+(covered?'':'disabled')+'>Produzir</button></div>';\n          }\n          panel='<div class=\"ptitle\"><h2 class=\"lnk\" data-goto=\"/materials\">'+esc(wname(o.watch_sku))+'</h2><span class=\"sub\">'+pill(o.status)+' &nbsp;·&nbsp; '+esc(o.identifier||'')+' · '+esc((locMap[mid(o.factory_location)]||{}).name||'sem fábrica')+' · '+qty+' un</span></div>'\n            +'<div class=\"mrp\"><div class=\"mh\"><div class=\"part\">Peça</div><div class=\"num\" style=\"flex:0 0 88px\">Precisa</div><div class=\"num\" style=\"flex:0 0 88px\">Tem</div><div class=\"num\" style=\"flex:0 0 88px\">Comprar</div></div>'+mrpRows+'</div>'\n            +'<div class=\"summary\"><div class=\"kpi\"><div class=\"v\">'+lines.length+'</div><div class=\"l\">Peças</div></div>'\n            +'<div class=\"kpi\"><div class=\"v\" style=\"color:'+(covered?'#3ed47e':'#c8102e')+'\">'+toBuy.length+'</div><div class=\"l\">Em falta</div></div>'\n            +'<div class=\"kpi\"><div class=\"v\" style=\"color:var(--gold)\">'+(covered?'PRONTO':'FALTA')+'</div><div class=\"l\">Estoque</div></div></div>'\n            +cta;\n        }\n        panel += buildHistory(o, sel);\n      }\n    }\n\n    var toast=d2.state.toast?'<div class=\"toast '+(d2.state.toastErr?'err':'ok')+'\">'+esc(d2.state.toast)+'</div>':'';\n\n    // new-order drawer\n    var drawer='';\n    if(d2.state.formOpen){\n      var fd=d2.state.formData||{};\n      var wopts=skus.map(function(w){ var id=mid(w._id); return '<option value=\"'+esc(id)+'\"'+(String(fd.watch_sku)===String(id)?' selected':'')+'>'+esc(w.model||w.code||id)+'</option>'; }).join('');\n      var facs=locs.filter(function(l){ return String(l.type||'').toUpperCase()==='FACTORY'; });\n      var fopts=facs.map(function(l){ var id=mid(l._id); return '<option value=\"'+esc(id)+'\"'+(String(fd.factory_location)===String(id)?' selected':'')+'>'+esc(l.name||id)+'</option>'; }).join('');\n      var iopts=invs.map(function(v){ var id=mid(v._id); return '<option value=\"'+esc(id)+'\"'+(String(fd.invoice)===String(id)?' selected':'')+'>'+esc(v.identifier||id)+'</option>'; }).join('');\n      drawer='<div class=\"scrim\" data-scrim><div class=\"drawer\"><h3>Nova ordem</h3>'\n        +'<div class=\"ff\"><label>Relógio (SKU)</label><select data-ff=\"watch_sku\"><option value=\"\">—</option>'+wopts+'</select></div>'\n        +'<div class=\"ff\"><label>Quantidade</label><input type=\"number\" data-ff=\"qty\" value=\"'+esc(fd.qty!=null?fd.qty:'')+'\"/></div>'\n        +'<div class=\"ff\"><label>Fábrica</label><select data-ff=\"factory_location\"><option value=\"\">—</option>'+fopts+'</select></div>'\n        +'<div class=\"ff\"><label>Invoice (conta)</label><select data-ff=\"invoice\"><option value=\"\">—</option>'+iopts+'</select></div>'\n        +'<div class=\"fbtns\"><button class=\"save\" data-save>Criar ordem</button><button class=\"cancel\" data-cancel>Cancelar</button></div></div></div>';\n    }\n\n    return '<div class=\"wrap\"><div class=\"tick\"></div>'\n      +'<div class=\"head\"><div><h1>Produção</h1><div class=\"eyebrow\">Ordens de produção · MRP  ·  '+validProd.length+' ordens'+(hiddenN?' · '+hiddenN+' incompletas ocultas':'')+'</div></div>'\n      +'<button class=\"act\" data-new>+ Nova ordem</button></div>'\n      +toast\n      +'<div class=\"cols\"><div class=\"list\"><div class=\"lh\">Ordens</div><div class=\"lsearch\"><input class=\"lq\" data-lq placeholder=\"BUSCAR\" value=\"'+esc(d2.state.q||'')+'\"/></div><div class=\"rows\">'+orderRows+'</div></div>'\n      +'<div class=\"panel\">'+panel+'</div></div>'+drawer+'</div>';\n  },\n  mounted(d2){\n    (function(){ try{ var sp=new URLSearchParams(window.location.search); var hl=sp.get('highlight'); if(hl && !d2.state.sel){ d2.setState({sel:hl}); } }catch(e){} })();\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    function recs(n){ try{ var d=d2.data(n); if(!d) return []; var pi=(typeof d.pageInfo==='function')?d.pageInfo():null; if(pi && pi.pages>1 && typeof d.loadAll==='function') d.loadAll(); return (d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    var slug=d2.param('systemSlug','roue');\n\n    d2.on('[data-lq]','input',function(e,el){ d2.setState({q:el.value}); });\n    d2.on('[data-sel]','click',function(e,el){ d2.setState({sel:el.getAttribute('data-sel'), toast:null}); });\n    d2.on('[data-goto]','click',function(e,el){ var target=el.getAttribute('data-goto'); var r=d2.process('XGxUgyQ-5U2VmVp3rFvVvInterface'); var h=r&&r.get&&r.get('history'); if (h && typeof h.push==='function') h.push(target); });\n    d2.on('[data-new]','click',function(){ d2.setState({formOpen:true, formData:{}}); });\n    d2.on('[data-cancel]','click',function(){ d2.setState({formOpen:false, formData:{}}); });\n    d2.on('[data-scrim]','click',function(e,el){ if(e.target===el) d2.setState({formOpen:false, formData:{}}); });\n    d2.on('[data-ff]','input',function(e,el){ var k=el.getAttribute('data-ff'); var fd=Object.assign({},d2.state.formData||{}); fd[k]=el.value; d2.state.formData=fd; });\n    d2.on('[data-ff]','change',function(e,el){ var k=el.getAttribute('data-ff'); var fd=Object.assign({},d2.state.formData||{}); fd[k]=el.value; d2.state.formData=fd; });\n\n    d2.on('[data-save]','click',function(){\n      var fd=d2.state.formData||{};\n      if(!fd.watch_sku||!fd.qty){ d2.setState({toast:'Escolha o relógio e a quantidade.', toastErr:true}); return; }\n      var rec={ watch_sku:fd.watch_sku, qty:Number(fd.qty), factory_location:fd.factory_location||null, invoice:fd.invoice||null, status:'OPEN' };\n      var ds=d2.data('prod');\n      d2.setState({toast:'Criando ordem…', toastErr:false});\n      Promise.resolve(ds.create(rec)).then(function(){ return ds.save(); }).then(function(){ ds.refresh(); d2.setState({formOpen:false, formData:{}, toast:'✓ Ordem criada.', toastErr:false}); })\n        .catch(function(err){ d2.setState({toast:'Erro ao criar ordem: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n\n    d2.on('[data-genbuy]','click',function(){\n      var sel=d2.state.sel; if(!sel) return;\n      var prod=recs('prod'), boms=recs('bom'), stock=recs('stock'), invs=recs('invoices'), buys=recs('buy');\n      var o=null; for(var i=0;i<prod.length;i++){ if(mid(prod[i]._id)===sel){ o=prod[i]; break; } }\n      if(!o){ return; }\n      var skuId=mid(o.watch_sku), qty=Number(o.qty)||0;\n      var bom=null; for(var j=0;j<boms.length;j++){ if(mid(boms[j].sku_reference)===skuId){ bom=boms[j]; break; } }\n      if(!bom){ d2.setState({toast:'Sem BOM para este SKU.', toastErr:true}); return; }\n      var bal={}; stock.forEach(function(s){ var m=mid(s.material); if(m) bal[m]=(bal[m]||0)+(Number(s.amount)||0); });\n      var mat_ids=[], qtys=[], unit_costs=[];\n      bom.material.forEach(function(m,ix){ var matId=mid(m), need=(Number(bom.qtd[ix])||0)*qty, have=bal[matId]||0, buy=Math.max(0,need-have); if(buy>0){ mat_ids.push(matId); qtys.push(buy); unit_costs.push(0); } });\n      if(!mat_ids.length){ d2.setState({toast:'Estoque já cobre — nada a comprar.', toastErr:false}); return; }\n      var invId=mid(o.invoice); var inv=null; for(var k=0;k<invs.length;k++){ if(mid(invs[k]._id)===invId){ inv=invs[k]; break; } }\n      var supplier=inv?mid(inv.issuer):null;\n      var bid='BO-'+String(buys.length+1).padStart(3,'0');\n      var body={ production_order_id:sel, invoice_id:invId, supplier_id:supplier, destination_id:mid(o.factory_location), currency:'BRL', buy_identifier:bid, total:0, mat_ids:mat_ids, qtys:qtys, unit_costs:unit_costs };\n      d2.setState({toast:'Gerando ordem de compra…', toastErr:false});\n      fetch('https://'+slug+'.data2apis.com/rush/plan_production_order',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(body)}).then(function(r){return r.json();}).then(function(res){ var dd=res&&res.data?res.data:res; d2.data('prod').refresh(); d2.data('buy').refresh(); d2.setState({toast:'✓ Compra '+esc(dd.identifier||'')+' gerada · '+(dd.items||mat_ids.length)+' itens.', toastErr:false}); }).catch(function(err){ d2.setState({toast:'Erro ao gerar compra: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n\n    d2.on('[data-produce]','click',function(){\n      var sel=d2.state.sel; if(!sel) return;\n      var prod=recs('prod'); var o=null; for(var i=0;i<prod.length;i++){ if(mid(prod[i]._id)===sel){ o=prod[i]; break; } }\n      if(!o){ return; }\n      var body={ production_order_id:sel, qty_multiplier:Number(o.qty)||1, factory_location_id:mid(o.factory_location), watch_sku_id:mid(o.watch_sku), identifier:o.identifier||'' };\n      d2.setState({toast:'Produzindo…', toastErr:false});\n      d2.rush('bom_consume_one').invoke(body, {headers:{Authorization:'Bearer '+(localStorage.getItem('__data2-session-'+slug)||'')}}).then(function(res){ var dd=res&&res.data?res.data:res; if(dd&&dd.error){ throw new Error(dd.error.message||'Erro'); } d2.data('prod').refresh(); d2.data('stock').refresh(); d2.setState({toast:'✓ Produção concluída — estoque atualizado ('+(dd.units_produced||o.qty)+' un · '+(dd.bom_lines||'?')+' peças consumidas).', toastErr:false}); }).catch(function(err){ d2.setState({toast:'Erro ao produzir: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n  }\n};","at":"2026-08-05T16:13:53.419Z"}}},{"_id":"6a730ee0e4322d6c1e2269ac","component":"data2-core-types@Component","system":"6138ba0292425036c3b32255","params":{"extends":"data2-core-primitives@Block","component":"kBomEditor","package":"roue","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"export default {\n  css: `\n    :host{--red:#c8102e;--gold:#dcb42b;display:block;height:100%;background:#0d0d0d;}\n    .wrap{height:100%;display:flex;flex-direction:column;background:#0d0d0d;color:#f4f1ea;font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;padding:44px 46px 0;box-sizing:border-box;max-width:1360px;margin:0 auto;width:100%;overflow:hidden;position:relative;}\n    .tick{width:36px;height:3px;background:var(--red);margin-bottom:14px;}\n    .head{display:flex;justify-content:space-between;align-items:flex-end;}\n    h1{margin:0;font-size:52px;font-weight:800;letter-spacing:-2.5px;line-height:.95;}\n    .eyebrow{margin-top:14px;font-size:11px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);}\n    .act{background:transparent;border:1px solid var(--red);color:var(--red);font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px 18px;cursor:pointer;}\n    .act:active{transform:translateY(1px);}\n    .act.sec{border-color:rgba(244,241,234,0.25);color:rgba(244,241,234,0.6);}\n    .cols{flex:1;display:flex;gap:28px;margin-top:24px;min-height:0;}\n    .list{flex:0 0 42%;display:flex;flex-direction:column;min-height:0;border-right:1px solid rgba(244,241,234,0.08);padding-right:24px;}\n    .list .lh{font-size:9px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);padding-bottom:10px;border-bottom:1px solid rgba(244,241,234,0.1);}\n    .lsearch{padding:10px 0;} .lsearch .lq{width:100%;box-sizing:border-box;background:rgba(244,241,234,0.04);border:1px solid rgba(244,241,234,0.12);padding:8px 10px;color:#f4f1ea;font-size:12px;letter-spacing:.5px;outline:none;font-family:inherit;}\n    .rows{flex:1;overflow:auto;}\n    .o{display:flex;align-items:center;gap:12px;padding:14px 8px;border-bottom:1px solid rgba(244,241,234,0.06);cursor:pointer;}\n    .o:hover{background:rgba(244,241,234,0.02);}\n    .o.sel{background:rgba(220,180,43,0.06);box-shadow:inset 3px 0 0 var(--gold);}\n    .o .id{font-size:10px;letter-spacing:1.6px;font-weight:700;color:rgba(220,180,43,0.85);text-transform:uppercase;flex:0 0 130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .o .nm{flex:1;font-size:15px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .o .qt{font-size:18px;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums;}\n    .panel{flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto;position:relative;}\n    .empty{margin:auto;color:rgba(244,241,234,0.35);font-size:13px;letter-spacing:1px;text-align:center;line-height:1.7;}\n    .ptitle{display:flex;justify-content:space-between;align-items:baseline;}\n    .ptitle h2{margin:0;font-size:26px;font-weight:800;letter-spacing:-1px;}\n    .ptitle .sub{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .lines{margin-top:18px;}\n    .lnh,.lnrow{display:grid;grid-template-columns:1fr 110px 40px;gap:10px;align-items:center;}\n    .lnh{padding-bottom:8px;border-bottom:1px solid rgba(244,241,234,0.1);}\n    .lnh div{font-size:9px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);}\n    .lnrow{padding:8px 0;border-bottom:1px solid rgba(244,241,234,0.06);}\n    .lnrow select,.lnrow input{background:rgba(244,241,234,0.05);border:1px solid rgba(244,241,234,0.15);color:#f4f1ea;font-size:13px;padding:8px 10px;outline:none;font-family:inherit;width:100%;box-sizing:border-box;}\n    .lnrow select:focus,.lnrow input:focus{border-color:var(--gold);}\n    .rmbtn{background:transparent;border:1px solid rgba(255,107,107,0.4);color:#ff6b6b;font-size:14px;font-weight:800;cursor:pointer;width:32px;height:32px;border-radius:4px;line-height:1;}\n    .rmbtn:hover{background:rgba(255,107,107,0.1);}\n    .addln{margin-top:12px;background:transparent;border:1px dashed rgba(244,241,234,0.25);color:rgba(244,241,234,0.6);font-size:11px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;padding:10px;cursor:pointer;width:100%;}\n    .addln:hover{border-color:var(--gold);color:var(--gold);}\n    .savebar{display:flex;gap:12px;margin-top:20px;padding-bottom:24px;}\n    .savebar button{flex:1;border:0;font-size:12px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:14px;cursor:pointer;border-radius:6px;}\n    .savebar .save{background:var(--red);color:#fff;}\n    .toast{margin-top:12px;font-size:11px;font-weight:700;letter-spacing:1px;padding:9px 12px;}\n    .toast.ok{color:var(--gold);background:rgba(220,180,43,0.08);} .toast.err{color:#ff6b6b;background:rgba(255,107,107,0.08);}\n    .scrim{position:absolute;inset:0;background:rgba(0,0,0,0.6);display:flex;justify-content:flex-end;z-index:50;}\n    .drawer{width:460px;max-width:90%;height:100%;background:#141414;border-left:1px solid rgba(244,241,234,0.12);padding:40px 34px;box-sizing:border-box;overflow:auto;display:flex;flex-direction:column;gap:18px;}\n    .drawer h3{margin:0;font-size:28px;font-weight:800;letter-spacing:-1px;}\n    .drawer .stepnote{font-size:11px;color:rgba(244,241,234,0.45);letter-spacing:.5px;line-height:1.6;margin-top:-10px;}\n    .ff{display:flex;flex-direction:column;gap:6px;}\n    .ff label{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .ff input,.ff select{background:rgba(244,241,234,0.05);border:1px solid rgba(244,241,234,0.15);color:#f4f1ea;font-size:14px;padding:11px 12px;outline:none;}\n    .ff select:focus,.ff input:focus{border-color:var(--gold);}\n    .fbtns{display:flex;gap:10px;margin-top:10px;}\n    .fbtns .save{flex:1;background:var(--red);border:0;color:#fff;font-size:12px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px;cursor:pointer;border-radius:6px;}\n    .fbtns .cancel{background:transparent;border:1px solid rgba(244,241,234,0.2);color:rgba(244,241,234,0.7);font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;padding:13px 18px;cursor:pointer;border-radius:6px;}\n    .sechr{height:1px;background:rgba(244,241,234,0.1);margin:2px 0 4px;}\n  `,\n  render(d2){\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    function esc(s){ return String(s==null?'':s).replace(/[&<>\"]/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n    function recs(n){ try{ var d=d2.data(n); return (d&&d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    function mapBy(a){ var m={}; a.forEach(function(x){ m[mid(x._id)]=x; }); return m; }\n    function matLabel(m){ return (m.code?m.code+' · ':'')+(m.model||mid(m._id)); }\n\n    var boms=recs('bom'), mats=recs('materials');\n    var matMap=mapBy(mats);\n    var skus=mats.filter(function(m){ return String(m.type||'').toUpperCase()==='WATCH'; });\n    var bomBySku={}; boms.forEach(function(b){ bomBySku[mid(b.sku_reference)]=b; });\n\n    function matOptionsHtml(list, selId){\n      return '<option value=\"\">—</option>'+list.map(function(m){\n        var id=mid(m._id);\n        return '<option value=\"'+esc(id)+'\"'+(String(selId)===String(id)?' selected':'')+'>'+esc(matLabel(m))+'</option>';\n      }).join('');\n    }\n\n    function lineRowsHtml(matIds, qtys, scope){\n      var arr=matIds||[];\n      var rows=arr.map(function(mIdVal,i){\n        return '<div class=\"lnrow\" data-key=\"'+esc(scope)+'-'+i+'\">'\n          +'<select data-ln-mat data-scope=\"'+scope+'\" data-idx=\"'+i+'\">'+matOptionsHtml(mats, mIdVal)+'</select>'\n          +'<input type=\"number\" min=\"0\" step=\"1\" data-ln-qty data-scope=\"'+scope+'\" data-idx=\"'+i+'\" value=\"'+esc((qtys&&qtys[i]!=null)?qtys[i]:'')+'\"/>'\n          +'<button class=\"rmbtn\" data-rm-line data-scope=\"'+scope+'\" data-idx=\"'+i+'\" type=\"button\">×</button>'\n          +'</div>';\n      }).join('')||'<div class=\"empty\" style=\"margin:16px auto;font-size:12px\">Sem linhas. Adicione a primeira.</div>';\n      return '<div class=\"lines\"><div class=\"lnh\"><div>Material</div><div>Qtd</div><div></div></div>'+rows+'</div>'\n        +'<button class=\"addln\" data-add-line data-scope=\"'+scope+'\" type=\"button\">+ Adicionar linha</button>';\n    }\n\n    var sel=d2.state.sel;\n    var q=String(d2.state.q||'').toLowerCase();\n    var bomsF=!q?boms:boms.filter(function(b){\n      var m=matMap[mid(b.sku_reference)]||{};\n      return String(m.code||'').toLowerCase().indexOf(q)>=0 || String(m.model||'').toLowerCase().indexOf(q)>=0;\n    });\n    var listRows=bomsF.map(function(b){\n      var id=mid(b._id); var m=matMap[mid(b.sku_reference)]||{}; var n=(b.material||[]).length;\n      return '<div class=\"o'+(sel===id?' sel':'')+'\" data-sel=\"'+esc(id)+'\"><span class=\"id\">'+esc(m.code||id.slice(-6))+'</span>'\n        +'<span class=\"nm\">'+esc(m.model||'—')+'</span><span class=\"qt\">'+n+'</span></div>';\n    }).join('')||('<div class=\"empty\" style=\"margin:40px auto\">'+(q?('Nada encontrado para “'+esc(q)+'”.'):'Nenhuma BOM cadastrada.')+'</div>');\n\n    var panel='<div class=\"empty\">Selecione uma BOM à esquerda<br>ou crie um novo produto.</div>';\n    if(sel){\n      var b=null; for(var i=0;i<boms.length;i++){ if(mid(boms[i]._id)===sel){ b=boms[i]; break; } }\n      if(b){\n        var skuId=mid(b.sku_reference); var skuMat=matMap[skuId]||{};\n        var el=d2.state.editLines||{material:[],qtd:[]};\n        panel='<div class=\"ptitle\"><h2>'+esc(skuMat.model||skuId)+'</h2><span class=\"sub\">'+esc(skuMat.code||'')+' &nbsp;·&nbsp; '+(el.material||[]).length+' '+((el.material||[]).length===1?'linha':'linhas')+'</span></div>'\n          +lineRowsHtml(el.material, el.qtd, 'edit')\n          +'<div class=\"savebar\"><button class=\"save\" data-save-edit type=\"button\">Salvar alterações</button></div>';\n      }\n    }\n\n    var toast=d2.state.toast?'<div class=\"toast '+(d2.state.toastErr?'err':'ok')+'\">'+esc(d2.state.toast)+'</div>':'';\n\n    var drawer='';\n    if(d2.state.formOpen){\n      var fd=d2.state.formData||{watch_sku:'',material:[''],qtd:[1]};\n      var eligible=skus.filter(function(w){ return !bomBySku[mid(w._id)]; });\n      var skuOpts='<option value=\"\">—</option>'+eligible.map(function(w){\n        var id=mid(w._id);\n        return '<option value=\"'+esc(id)+'\"'+(String(fd.watch_sku)===String(id)?' selected':'')+'>'+esc(matLabel(w))+'</option>';\n      }).join('');\n      drawer='<div class=\"scrim\" data-scrim><div class=\"drawer\"><h3>Nova BOM</h3>'\n        +'<div class=\"stepnote\">Para um produto (relógio) que já existe no catálogo de materiais mas ainda não tem composição.</div>'\n        +'<div class=\"ff\"><label>SKU (relógio) sem BOM</label><select data-new-sku>'+skuOpts+'</select></div>'\n        +lineRowsHtml(fd.material, fd.qtd, 'new')\n        +'<div class=\"fbtns\"><button class=\"save\" data-save-new type=\"button\">Criar BOM</button><button class=\"cancel\" data-cancel-new type=\"button\">Cancelar</button></div>'\n        +'</div></div>';\n    }\n    if(d2.state.wizardOpen){\n      var wd=d2.state.wizardData||{code:'',model:'',color:'',material:[''],qtd:[1]};\n      drawer+='<div class=\"scrim\" data-scrim-wiz><div class=\"drawer\"><h3>Novo Produto</h3>'\n        +'<div class=\"stepnote\">Cadastra o relógio (material) e a composição (BOM) juntos, em um só passo.</div>'\n        +'<div class=\"ff\"><label>Código</label><input data-wiz-ff=\"code\" value=\"'+esc(wd.code||'')+'\" placeholder=\"ex: WKITPS1426\"/></div>'\n        +'<div class=\"ff\"><label>Nome / Modelo</label><input data-wiz-ff=\"model\" value=\"'+esc(wd.model||'')+'\" placeholder=\"ex: TPS Fourteen\"/></div>'\n        +'<div class=\"ff\"><label>Cor (opcional)</label><input data-wiz-ff=\"color\" value=\"'+esc(wd.color||'')+'\"/></div>'\n        +'<div class=\"sechr\"></div>'\n        +'<div class=\"ff\"><label>Composição (peças e quantidades)</label></div>'\n        +lineRowsHtml(wd.material, wd.qtd, 'wiz')\n        +'<div class=\"fbtns\"><button class=\"save\" data-save-wizard type=\"button\">Criar produto</button><button class=\"cancel\" data-cancel-wizard type=\"button\">Cancelar</button></div>'\n        +'</div></div>';\n    }\n\n    return '<div class=\"wrap\"><div class=\"tick\"></div>'\n      +'<div class=\"head\"><div><h1>BOM</h1><div class=\"eyebrow\">Lista de materiais · receita por SKU · '+boms.length+' BOMs</div></div>'\n      +'<div style=\"display:flex;gap:10px\"><button class=\"act\" data-new-product type=\"button\">+ Novo Produto</button><button class=\"act sec\" data-new type=\"button\">+ Nova BOM</button></div></div>'\n      +toast\n      +'<div class=\"cols\"><div class=\"list\"><div class=\"lh\">BOMs</div><div class=\"lsearch\"><input class=\"lq\" data-lq placeholder=\"BUSCAR\" value=\"'+esc(d2.state.q||'')+'\"/></div><div class=\"rows\">'+listRows+'</div></div>'\n      +'<div class=\"panel\">'+panel+'</div></div>'+drawer+'</div>';\n  },\n  mounted(d2){\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    function recs(n){ try{ var d=d2.data(n); return (d&&d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    function cloneLines(o){ return { material:(o&&o.material?o.material.slice():[]), qtd:(o&&o.qtd?o.qtd.slice():[]) }; }\n    function stateKeyFor(scope){ return scope==='edit' ? 'editLines' : (scope==='wiz' ? 'wizardData' : 'formData'); }\n    var slug=d2.param('systemSlug','roue');\n\n    function linePatch(scope, idx, field, val){\n      if(scope==='edit'){\n        var l=cloneLines(d2.state.editLines);\n        l[field][idx]=val;\n        return {editLines:l};\n      }\n      var key=stateKeyFor(scope);\n      var fd=Object.assign({}, d2.state[key]||{});\n      var l2=cloneLines(fd);\n      l2[field][idx]=val;\n      fd.material=l2.material; fd.qtd=l2.qtd;\n      var patch={}; patch[key]=fd; return patch;\n    }\n    function addLinePatch(scope){\n      if(scope==='edit'){\n        var l=cloneLines(d2.state.editLines); l.material.push(''); l.qtd.push(1);\n        return {editLines:l};\n      }\n      var key=stateKeyFor(scope);\n      var fd=Object.assign({}, d2.state[key]||{});\n      var l2=cloneLines(fd); l2.material.push(''); l2.qtd.push(1);\n      fd.material=l2.material; fd.qtd=l2.qtd;\n      var patch={}; patch[key]=fd; return patch;\n    }\n    function rmLinePatch(scope, idx){\n      if(scope==='edit'){\n        var l=cloneLines(d2.state.editLines); l.material.splice(idx,1); l.qtd.splice(idx,1);\n        return {editLines:l};\n      }\n      var key=stateKeyFor(scope);\n      var fd=Object.assign({}, d2.state[key]||{});\n      var l2=cloneLines(fd); l2.material.splice(idx,1); l2.qtd.splice(idx,1);\n      fd.material=l2.material; fd.qtd=l2.qtd;\n      var patch={}; patch[key]=fd; return patch;\n    }\n\n    d2.on('[data-lq]','input',function(e,el){ d2.setState({q:el.value}); });\n\n    d2.on('[data-sel]','click',function(e,el){\n      var id=el.getAttribute('data-sel');\n      var boms=recs('bom');\n      var b=null; for(var i=0;i<boms.length;i++){ if(mid(boms[i]._id)===id){ b=boms[i]; break; } }\n      var matIds=(b&&b.material?b.material:[]).map(mid);\n      var qtys=(b&&b.qtd?b.qtd.slice():[]);\n      d2.setState({sel:id, editLines:{material:matIds, qtd:qtys}, toast:null});\n    });\n\n    d2.on('[data-new]','click',function(){\n      d2.setState({formOpen:true, formData:{watch_sku:'', material:[''], qtd:[1]}, toast:null});\n    });\n    d2.on('[data-cancel-new]','click',function(){ d2.setState({formOpen:false}); });\n    d2.on('[data-scrim]','click',function(e,el){ if(e.target===el) d2.setState({formOpen:false}); });\n    d2.on('[data-new-sku]','change',function(e,el){\n      var fd=Object.assign({}, d2.state.formData||{});\n      fd.watch_sku=el.value;\n      d2.setState({formData:fd});\n    });\n\n    d2.on('[data-new-product]','click',function(){\n      d2.setState({wizardOpen:true, wizardData:{code:'',model:'',color:'',material:[''],qtd:[1]}, toast:null});\n    });\n    d2.on('[data-cancel-wizard]','click',function(){ d2.setState({wizardOpen:false}); });\n    d2.on('[data-scrim-wiz]','click',function(e,el){ if(e.target===el) d2.setState({wizardOpen:false}); });\n    d2.on('[data-wiz-ff]','input',function(e,el){\n      var k=el.getAttribute('data-wiz-ff');\n      var wd=Object.assign({}, d2.state.wizardData||{});\n      wd[k]=el.value;\n      d2.setState({wizardData:wd});\n    });\n\n    d2.on('[data-ln-mat]','input',function(e,el){ var scope=el.getAttribute('data-scope'), idx=Number(el.getAttribute('data-idx')); d2.setState(linePatch(scope,idx,'material',el.value)); });\n    d2.on('[data-ln-mat]','change',function(e,el){ var scope=el.getAttribute('data-scope'), idx=Number(el.getAttribute('data-idx')); d2.setState(linePatch(scope,idx,'material',el.value)); });\n    d2.on('[data-ln-qty]','input',function(e,el){ var scope=el.getAttribute('data-scope'), idx=Number(el.getAttribute('data-idx')); d2.setState(linePatch(scope,idx,'qtd',el.value)); });\n    d2.on('[data-ln-qty]','change',function(e,el){ var scope=el.getAttribute('data-scope'), idx=Number(el.getAttribute('data-idx')); d2.setState(linePatch(scope,idx,'qtd',el.value)); });\n    d2.on('[data-add-line]','click',function(e,el){ d2.setState(addLinePatch(el.getAttribute('data-scope'))); });\n    d2.on('[data-rm-line]','click',function(e,el){ d2.setState(rmLinePatch(el.getAttribute('data-scope'), Number(el.getAttribute('data-idx')))); });\n\n    function validLines(mats, qts){\n      if(!mats || !mats.length) return 'Adicione ao menos uma linha.';\n      for(var i=0;i<mats.length;i++){\n        if(!mats[i] || !(Number(qts[i])>0)) return 'Selecione material e quantidade (>0) em todas as linhas.';\n      }\n      return null;\n    }\n\n    d2.on('[data-save-edit]','click',function(){\n      var sel=d2.state.sel; if(!sel) return;\n      var el=d2.state.editLines||{material:[],qtd:[]};\n      var err=validLines(el.material, el.qtd);\n      if(err){ d2.setState({toast:err, toastErr:true}); return; }\n      var qtyNums=(el.qtd||[]).map(function(v){ return Number(v)||0; });\n      var ds=d2.data('bom');\n      d2.setState({toast:'Salvando…', toastErr:false});\n      Promise.resolve(ds.update({_id:sel, material:el.material, qtd:qtyNums}))\n        .then(function(){ return ds.save(); })\n        .then(function(){ ds.refresh(); d2.setState({toast:'✓ BOM atualizada.', toastErr:false}); })\n        .catch(function(err){ d2.setState({toast:'Erro ao salvar: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n\n    d2.on('[data-save-new]','click',function(){\n      var fd=d2.state.formData||{};\n      if(!fd.watch_sku){ d2.setState({toast:'Escolha o SKU do relógio.', toastErr:true}); return; }\n      var err=validLines(fd.material, fd.qtd);\n      if(err){ d2.setState({toast:err, toastErr:true}); return; }\n      var qtyNums=(fd.qtd||[]).map(function(v){ return Number(v)||0; });\n      var ds=d2.data('bom');\n      d2.setState({toast:'Salvando…', toastErr:false});\n      Promise.resolve(ds.create({sku_reference:fd.watch_sku, material:fd.material, qtd:qtyNums}))\n        .then(function(){ return ds.save(); })\n        .then(function(){ ds.refresh(); d2.setState({formOpen:false, formData:{watch_sku:'',material:[''],qtd:[1]}, toast:'✓ BOM criada.', toastErr:false}); })\n        .catch(function(err){ d2.setState({toast:'Erro ao salvar: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n\n    d2.on('[data-save-wizard]','click',function(){\n      var wd=d2.state.wizardData||{};\n      if(!wd.code||!wd.model){ d2.setState({toast:'Preencha código e nome do produto.', toastErr:true}); return; }\n      var err=validLines(wd.material, wd.qtd);\n      if(err){ d2.setState({toast:err, toastErr:true}); return; }\n      var qtyNums=(wd.qtd||[]).map(function(v){ return Number(v)||0; });\n      d2.setState({toast:'Criando produto…', toastErr:false});\n      fetch('https://'+slug+'.data2apis.com/rush/create_product',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({code:wd.code, model:wd.model, color:wd.color||null, min_stock_limit:0, material_ids:wd.material, qtds:qtyNums})})\n        .then(function(r){return r.json();}).then(function(res){\n          var dd=res&&res.data?res.data:res;\n          if(!dd||dd.ok===false){ d2.setState({toast:'Erro ao criar produto.', toastErr:true}); return; }\n          d2.data('bom').refresh(); d2.data('materials').refresh();\n          d2.setState({wizardOpen:false, wizardData:{code:'',model:'',color:'',material:[''],qtd:[1]}, toast:'✓ Produto '+(wd.code||'')+' criado.', toastErr:false});\n        })\n        .catch(function(err){ d2.setState({toast:'Erro ao criar produto: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n  }\n};"}},"bom":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"bom"}}}},"materials":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"materials"}}}},"systemSlug":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"systemSlug"}}}}}}}},"__d2PrevCode":{"code":"export default {\n  css: `\n    :host{--red:#c8102e;--gold:#dcb42b;display:block;height:100%;background:#0d0d0d;}\n    .wrap{height:100%;display:flex;flex-direction:column;background:#0d0d0d;color:#f4f1ea;font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;padding:44px 46px 0;box-sizing:border-box;max-width:1360px;margin:0 auto;width:100%;overflow:hidden;position:relative;}\n    .tick{width:36px;height:3px;background:var(--red);margin-bottom:14px;}\n    .head{display:flex;justify-content:space-between;align-items:flex-end;}\n    h1{margin:0;font-size:52px;font-weight:800;letter-spacing:-2.5px;line-height:.95;}\n    .eyebrow{margin-top:14px;font-size:11px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);}\n    .act{background:transparent;border:1px solid var(--red);color:var(--red);font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px 18px;cursor:pointer;}\n    .act:active{transform:translateY(1px);}\n    .cols{flex:1;display:flex;gap:28px;margin-top:24px;min-height:0;}\n    .list{flex:0 0 42%;display:flex;flex-direction:column;min-height:0;border-right:1px solid rgba(244,241,234,0.08);padding-right:24px;}\n    .list .lh{font-size:9px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);padding-bottom:10px;border-bottom:1px solid rgba(244,241,234,0.1);}\n    .lsearch{padding:10px 0;} .lsearch .lq{width:100%;box-sizing:border-box;background:rgba(244,241,234,0.04);border:1px solid rgba(244,241,234,0.12);padding:8px 10px;color:#f4f1ea;font-size:12px;letter-spacing:.5px;outline:none;font-family:inherit;}\n    .rows{flex:1;overflow:auto;}\n    .o{display:flex;align-items:center;gap:12px;padding:14px 8px;border-bottom:1px solid rgba(244,241,234,0.06);cursor:pointer;}\n    .o:hover{background:rgba(244,241,234,0.02);}\n    .o.sel{background:rgba(220,180,43,0.06);box-shadow:inset 3px 0 0 var(--gold);}\n    .o .id{font-size:10px;letter-spacing:1.6px;font-weight:700;color:rgba(220,180,43,0.85);text-transform:uppercase;flex:0 0 130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .o .nm{flex:1;font-size:15px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .o .qt{font-size:18px;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums;}\n    .panel{flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto;position:relative;}\n    .empty{margin:auto;color:rgba(244,241,234,0.35);font-size:13px;letter-spacing:1px;text-align:center;line-height:1.7;}\n    .ptitle{display:flex;justify-content:space-between;align-items:baseline;}\n    .ptitle h2{margin:0;font-size:26px;font-weight:800;letter-spacing:-1px;}\n    .ptitle .sub{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .lines{margin-top:18px;}\n    .lnh,.lnrow{display:grid;grid-template-columns:1fr 110px 40px;gap:10px;align-items:center;}\n    .lnh{padding-bottom:8px;border-bottom:1px solid rgba(244,241,234,0.1);}\n    .lnh div{font-size:9px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);}\n    .lnrow{padding:8px 0;border-bottom:1px solid rgba(244,241,234,0.06);}\n    .lnrow select,.lnrow input{background:rgba(244,241,234,0.05);border:1px solid rgba(244,241,234,0.15);color:#f4f1ea;font-size:13px;padding:8px 10px;outline:none;font-family:inherit;width:100%;box-sizing:border-box;}\n    .lnrow select:focus,.lnrow input:focus{border-color:var(--gold);}\n    .rmbtn{background:transparent;border:1px solid rgba(255,107,107,0.4);color:#ff6b6b;font-size:14px;font-weight:800;cursor:pointer;width:32px;height:32px;border-radius:4px;line-height:1;}\n    .rmbtn:hover{background:rgba(255,107,107,0.1);}\n    .addln{margin-top:12px;background:transparent;border:1px dashed rgba(244,241,234,0.25);color:rgba(244,241,234,0.6);font-size:11px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;padding:10px;cursor:pointer;width:100%;}\n    .addln:hover{border-color:var(--gold);color:var(--gold);}\n    .savebar{display:flex;gap:12px;margin-top:20px;padding-bottom:24px;}\n    .savebar button{flex:1;border:0;font-size:12px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:14px;cursor:pointer;border-radius:6px;}\n    .savebar .save{background:var(--red);color:#fff;}\n    .toast{margin-top:12px;font-size:11px;font-weight:700;letter-spacing:1px;padding:9px 12px;}\n    .toast.ok{color:var(--gold);background:rgba(220,180,43,0.08);} .toast.err{color:#ff6b6b;background:rgba(255,107,107,0.08);}\n    .scrim{position:absolute;inset:0;background:rgba(0,0,0,0.6);display:flex;justify-content:flex-end;z-index:50;}\n    .drawer{width:460px;max-width:90%;height:100%;background:#141414;border-left:1px solid rgba(244,241,234,0.12);padding:40px 34px;box-sizing:border-box;overflow:auto;display:flex;flex-direction:column;gap:18px;}\n    .drawer h3{margin:0;font-size:28px;font-weight:800;letter-spacing:-1px;}\n    .ff{display:flex;flex-direction:column;gap:6px;}\n    .ff label{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .ff select{background:rgba(244,241,234,0.05);border:1px solid rgba(244,241,234,0.15);color:#f4f1ea;font-size:14px;padding:11px 12px;outline:none;}\n    .ff select:focus{border-color:var(--gold);}\n    .fbtns{display:flex;gap:10px;margin-top:10px;}\n    .fbtns .save{flex:1;background:var(--red);border:0;color:#fff;font-size:12px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px;cursor:pointer;border-radius:6px;}\n    .fbtns .cancel{background:transparent;border:1px solid rgba(244,241,234,0.2);color:rgba(244,241,234,0.7);font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;padding:13px 18px;cursor:pointer;border-radius:6px;}\n  `,\n  render(d2){\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    function esc(s){ return String(s==null?'':s).replace(/[&<>\"]/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n    function recs(n){ try{ var d=d2.data(n); return (d&&d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    function mapBy(a){ var m={}; a.forEach(function(x){ m[mid(x._id)]=x; }); return m; }\n    function matLabel(m){ return (m.code?m.code+' · ':'')+(m.model||mid(m._id)); }\n\n    var boms=recs('bom'), mats=recs('materials');\n    var matMap=mapBy(mats);\n    var skus=mats.filter(function(m){ return String(m.type||'').toUpperCase()==='WATCH'; });\n    var bomBySku={}; boms.forEach(function(b){ bomBySku[mid(b.sku_reference)]=b; });\n\n    function matOptionsHtml(list, selId){\n      return '<option value=\"\">—</option>'+list.map(function(m){\n        var id=mid(m._id);\n        return '<option value=\"'+esc(id)+'\"'+(String(selId)===String(id)?' selected':'')+'>'+esc(matLabel(m))+'</option>';\n      }).join('');\n    }\n\n    function lineRowsHtml(matIds, qtys, scope){\n      var arr=matIds||[];\n      var rows=arr.map(function(mIdVal,i){\n        return '<div class=\"lnrow\" data-key=\"'+esc(scope)+'-'+i+'\">'\n          +'<select data-ln-mat data-scope=\"'+scope+'\" data-idx=\"'+i+'\">'+matOptionsHtml(mats, mIdVal)+'</select>'\n          +'<input type=\"number\" min=\"0\" step=\"1\" data-ln-qty data-scope=\"'+scope+'\" data-idx=\"'+i+'\" value=\"'+esc((qtys&&qtys[i]!=null)?qtys[i]:'')+'\"/>'\n          +'<button class=\"rmbtn\" data-rm-line data-scope=\"'+scope+'\" data-idx=\"'+i+'\" type=\"button\">×</button>'\n          +'</div>';\n      }).join('')||'<div class=\"empty\" style=\"margin:16px auto;font-size:12px\">Sem linhas. Adicione a primeira.</div>';\n      return '<div class=\"lines\"><div class=\"lnh\"><div>Material</div><div>Qtd</div><div></div></div>'+rows+'</div>'\n        +'<button class=\"addln\" data-add-line data-scope=\"'+scope+'\" type=\"button\">+ Adicionar linha</button>';\n    }\n\n    var sel=d2.state.sel;\n    var q=String(d2.state.q||'').toLowerCase();\n    var bomsF=!q?boms:boms.filter(function(b){\n      var m=matMap[mid(b.sku_reference)]||{};\n      return String(m.code||'').toLowerCase().indexOf(q)>=0 || String(m.model||'').toLowerCase().indexOf(q)>=0;\n    });\n    var listRows=bomsF.map(function(b){\n      var id=mid(b._id); var m=matMap[mid(b.sku_reference)]||{}; var n=(b.material||[]).length;\n      return '<div class=\"o'+(sel===id?' sel':'')+'\" data-sel=\"'+esc(id)+'\"><span class=\"id\">'+esc(m.code||id.slice(-6))+'</span>'\n        +'<span class=\"nm\">'+esc(m.model||'—')+'</span><span class=\"qt\">'+n+'</span></div>';\n    }).join('')||('<div class=\"empty\" style=\"margin:40px auto\">'+(q?('Nada encontrado para “'+esc(q)+'”.'):'Nenhuma BOM cadastrada.')+'</div>');\n\n    var panel='<div class=\"empty\">Selecione uma BOM à esquerda<br>ou crie uma nova.</div>';\n    if(sel){\n      var b=null; for(var i=0;i<boms.length;i++){ if(mid(boms[i]._id)===sel){ b=boms[i]; break; } }\n      if(b){\n        var skuId=mid(b.sku_reference); var skuMat=matMap[skuId]||{};\n        var el=d2.state.editLines||{material:[],qtd:[]};\n        panel='<div class=\"ptitle\"><h2>'+esc(skuMat.model||skuId)+'</h2><span class=\"sub\">'+esc(skuMat.code||'')+' &nbsp;·&nbsp; '+(el.material||[]).length+' '+((el.material||[]).length===1?'linha':'linhas')+'</span></div>'\n          +lineRowsHtml(el.material, el.qtd, 'edit')\n          +'<div class=\"savebar\"><button class=\"save\" data-save-edit type=\"button\">Salvar alterações</button></div>';\n      }\n    }\n\n    var toast=d2.state.toast?'<div class=\"toast '+(d2.state.toastErr?'err':'ok')+'\">'+esc(d2.state.toast)+'</div>':'';\n\n    var drawer='';\n    if(d2.state.formOpen){\n      var fd=d2.state.formData||{watch_sku:'',material:[''],qtd:[1]};\n      var eligible=skus.filter(function(w){ return !bomBySku[mid(w._id)]; });\n      var skuOpts='<option value=\"\">—</option>'+eligible.map(function(w){\n        var id=mid(w._id);\n        return '<option value=\"'+esc(id)+'\"'+(String(fd.watch_sku)===String(id)?' selected':'')+'>'+esc(matLabel(w))+'</option>';\n      }).join('');\n      drawer='<div class=\"scrim\" data-scrim><div class=\"drawer\"><h3>Nova BOM</h3>'\n        +'<div class=\"ff\"><label>SKU (relógio) sem BOM</label><select data-new-sku>'+skuOpts+'</select></div>'\n        +lineRowsHtml(fd.material, fd.qtd, 'new')\n        +'<div class=\"fbtns\"><button class=\"save\" data-save-new type=\"button\">Criar BOM</button><button class=\"cancel\" data-cancel-new type=\"button\">Cancelar</button></div>'\n        +'</div></div>';\n    }\n\n    return '<div class=\"wrap\"><div class=\"tick\"></div>'\n      +'<div class=\"head\"><div><h1>BOM</h1><div class=\"eyebrow\">Lista de materiais · receita por SKU · '+boms.length+' BOMs</div></div>'\n      +'<button class=\"act\" data-new type=\"button\">+ Nova BOM</button></div>'\n      +toast\n      +'<div class=\"cols\"><div class=\"list\"><div class=\"lh\">BOMs</div><div class=\"lsearch\"><input class=\"lq\" data-lq placeholder=\"BUSCAR\" value=\"'+esc(d2.state.q||'')+'\"/></div><div class=\"rows\">'+listRows+'</div></div>'\n      +'<div class=\"panel\">'+panel+'</div></div>'+drawer+'</div>';\n  },\n  mounted(d2){\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    function recs(n){ try{ var d=d2.data(n); return (d&&d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    function cloneLines(o){ return { material:(o&&o.material?o.material.slice():[]), qtd:(o&&o.qtd?o.qtd.slice():[]) }; }\n\n    d2.on('[data-lq]','input',function(e,el){ d2.setState({q:el.value}); });\n\n    d2.on('[data-sel]','click',function(e,el){\n      var id=el.getAttribute('data-sel');\n      var boms=recs('bom');\n      var b=null; for(var i=0;i<boms.length;i++){ if(mid(boms[i]._id)===id){ b=boms[i]; break; } }\n      var matIds=(b&&b.material?b.material:[]).map(mid);\n      var qtys=(b&&b.qtd?b.qtd.slice():[]);\n      d2.setState({sel:id, editLines:{material:matIds, qtd:qtys}, toast:null});\n    });\n\n    d2.on('[data-new]','click',function(){\n      d2.setState({formOpen:true, formData:{watch_sku:'', material:[''], qtd:[1]}, toast:null});\n    });\n    d2.on('[data-cancel-new]','click',function(){ d2.setState({formOpen:false}); });\n    d2.on('[data-scrim]','click',function(e,el){ if(e.target===el) d2.setState({formOpen:false}); });\n    d2.on('[data-new-sku]','change',function(e,el){\n      var fd=Object.assign({}, d2.state.formData||{});\n      fd.watch_sku=el.value;\n      d2.setState({formData:fd});\n    });\n\n    function onLnMat(e,el){\n      var scope=el.getAttribute('data-scope'), idx=Number(el.getAttribute('data-idx'));\n      if(scope==='edit'){\n        var l=cloneLines(d2.state.editLines);\n        l.material[idx]=el.value;\n        d2.setState({editLines:l});\n      } else {\n        var fd=Object.assign({}, d2.state.formData||{});\n        var l2=cloneLines(fd);\n        l2.material[idx]=el.value;\n        fd.material=l2.material; fd.qtd=l2.qtd;\n        d2.setState({formData:fd});\n      }\n    }\n    d2.on('[data-ln-mat]','input',onLnMat);\n    d2.on('[data-ln-mat]','change',onLnMat);\n\n    function onLnQty(e,el){\n      var scope=el.getAttribute('data-scope'), idx=Number(el.getAttribute('data-idx'));\n      if(scope==='edit'){\n        var l=cloneLines(d2.state.editLines);\n        l.qtd[idx]=el.value;\n        d2.setState({editLines:l});\n      } else {\n        var fd=Object.assign({}, d2.state.formData||{});\n        var l2=cloneLines(fd);\n        l2.qtd[idx]=el.value;\n        fd.material=l2.material; fd.qtd=l2.qtd;\n        d2.setState({formData:fd});\n      }\n    }\n    d2.on('[data-ln-qty]','input',onLnQty);\n    d2.on('[data-ln-qty]','change',onLnQty);\n\n    d2.on('[data-add-line]','click',function(e,el){\n      var scope=el.getAttribute('data-scope');\n      if(scope==='edit'){\n        var l=cloneLines(d2.state.editLines);\n        l.material.push(''); l.qtd.push(1);\n        d2.setState({editLines:l});\n      } else {\n        var fd=Object.assign({}, d2.state.formData||{});\n        var l2=cloneLines(fd);\n        l2.material.push(''); l2.qtd.push(1);\n        fd.material=l2.material; fd.qtd=l2.qtd;\n        d2.setState({formData:fd});\n      }\n    });\n\n    d2.on('[data-rm-line]','click',function(e,el){\n      var scope=el.getAttribute('data-scope'), idx=Number(el.getAttribute('data-idx'));\n      if(scope==='edit'){\n        var l=cloneLines(d2.state.editLines);\n        l.material.splice(idx,1); l.qtd.splice(idx,1);\n        d2.setState({editLines:l});\n      } else {\n        var fd=Object.assign({}, d2.state.formData||{});\n        var l2=cloneLines(fd);\n        l2.material.splice(idx,1); l2.qtd.splice(idx,1);\n        fd.material=l2.material; fd.qtd=l2.qtd;\n        d2.setState({formData:fd});\n      }\n    });\n\n    d2.on('[data-save-edit]','click',function(){\n      var sel=d2.state.sel; if(!sel) return;\n      var el=d2.state.editLines||{material:[],qtd:[]};\n      var mats=el.material||[], qts=el.qtd||[];\n      if(!mats.length){ d2.setState({toast:'Adicione ao menos uma linha.', toastErr:true}); return; }\n      for(var i=0;i<mats.length;i++){\n        if(!mats[i] || !(Number(qts[i])>0)){ d2.setState({toast:'Selecione material e quantidade (>0) em todas as linhas.', toastErr:true}); return; }\n      }\n      var qtyNums=qts.map(function(v){ return Number(v)||0; });\n      var ds=d2.data('bom');\n      d2.setState({toast:'Salvando…', toastErr:false});\n      Promise.resolve(ds.update({_id:sel, material:mats, qtd:qtyNums}))\n        .then(function(){ return ds.save(); })\n        .then(function(){ ds.refresh(); d2.setState({toast:'✓ BOM atualizada.', toastErr:false}); })\n        .catch(function(err){ d2.setState({toast:'Erro ao salvar: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n\n    d2.on('[data-save-new]','click',function(){\n      var fd=d2.state.formData||{};\n      if(!fd.watch_sku){ d2.setState({toast:'Escolha o SKU do relógio.', toastErr:true}); return; }\n      var mats=fd.material||[], qts=fd.qtd||[];\n      if(!mats.length){ d2.setState({toast:'Adicione ao menos uma linha.', toastErr:true}); return; }\n      for(var i=0;i<mats.length;i++){\n        if(!mats[i] || !(Number(qts[i])>0)){ d2.setState({toast:'Selecione material e quantidade (>0) em todas as linhas.', toastErr:true}); return; }\n      }\n      var qtyNums=qts.map(function(v){ return Number(v)||0; });\n      var ds=d2.data('bom');\n      d2.setState({toast:'Salvando…', toastErr:false});\n      Promise.resolve(ds.create({sku_reference:fd.watch_sku, material:mats, qtd:qtyNums}))\n        .then(function(){ return ds.save(); })\n        .then(function(){ ds.refresh(); d2.setState({formOpen:false, formData:{watch_sku:'',material:[''],qtd:[1]}, toast:'✓ BOM criada.', toastErr:false}); })\n        .catch(function(err){ d2.setState({toast:'Erro ao salvar: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n  }\n};","at":"2026-08-05T16:00:02.744Z"}}},{"_id":"6a4f9b4a2e494a489b5d307e","component":"data2-core-types@Component","system":"6138ba0292425036c3b32255","params":{"extends":"data2-core-primitives@Block","component":"kLocations","package":"roue","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"export default {\n  css: `\n    :host{--red:#c8102e;--gold:#dcb42b;--green:#3ed47e;--blue:#5aa9ff;display:block;height:100%;background:#0d0d0d;}\n    .wrap{height:100%;display:flex;flex-direction:column;background:#0d0d0d;color:#f4f1ea;font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;padding:44px 46px 0;box-sizing:border-box;max-width:1360px;margin:0 auto;width:100%;overflow:hidden;position:relative;}\n    .tick{width:36px;height:3px;background:var(--red);margin-bottom:14px;}\n    .head{display:flex;justify-content:space-between;align-items:flex-end;}\n    h1{margin:0;font-size:52px;font-weight:800;letter-spacing:-2.5px;line-height:.95;}\n    .eyebrow{margin-top:14px;font-size:11px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);}\n    .act{background:transparent;border:1px solid var(--red);color:var(--red);font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px 18px;cursor:pointer;}\n    .act:active{transform:translateY(1px);}\n    .cols{flex:1;display:flex;gap:28px;margin-top:24px;min-height:0;}\n    .list{flex:0 0 46%;display:flex;flex-direction:column;min-height:0;border-right:1px solid rgba(244,241,234,0.08);padding-right:24px;overflow:auto;}\n    .card{display:flex;align-items:center;gap:14px;padding:16px 10px;border-bottom:1px solid rgba(244,241,234,0.06);cursor:pointer;}\n    .card:hover{background:rgba(244,241,234,0.02);}\n    .card.sel{background:rgba(220,180,43,0.06);box-shadow:inset 3px 0 0 var(--gold);}\n    .icon{width:44px;height:44px;flex:0 0 44px;border-radius:9px;display:grid;place-items:center;font-size:20px;\n      background:linear-gradient(180deg,rgba(244,241,234,0.09),rgba(244,241,234,0.03));box-shadow:0 1px 0 rgba(255,255,255,.08) inset,0 2px 4px rgba(0,0,0,.4);}\n    .card .nm{flex:1;min-width:0;}\n    .card .nm b{font-size:16px;font-weight:700;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .card .nm span{font-size:9px;letter-spacing:1.8px;text-transform:uppercase;color:rgba(244,241,234,0.4);font-weight:700;}\n    .card .units{text-align:right;}\n    .card .units b{font-family:ui-monospace,Menlo,monospace;font-size:22px;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums;display:block;letter-spacing:-1px;}\n    .card .units span{font-size:8px;letter-spacing:2px;text-transform:uppercase;color:rgba(244,241,234,0.4);font-weight:700;}\n    .pill{display:inline-block;font-size:8.5px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;padding:3px 8px;border-radius:3px;margin-top:4px;}\n    .panel{flex:1;display:flex;flex-direction:column;min-height:0;}\n    .empty{margin:auto;color:rgba(244,241,234,0.35);font-size:13px;letter-spacing:1px;text-align:center;line-height:1.7;}\n    .ph{display:flex;justify-content:space-between;align-items:baseline;}\n    .ph h2{margin:0;font-size:28px;font-weight:800;letter-spacing:-1px;}\n    .ph .sub{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .sb{flex:0 1 auto;min-height:0;overflow:auto;margin-top:18px;border-top:2px solid rgba(244,241,234,0.85);}\n    .sh{display:grid;grid-template-columns:1fr 90px;padding:8px 4px;border-bottom:1px solid rgba(244,241,234,0.1);}\n    .sh div{font-size:9px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);}\n    .sh .r{text-align:right;}\n    .sr{display:grid;grid-template-columns:1fr 90px;padding:10px 4px;border-bottom:1px solid rgba(244,241,234,0.05);align-items:center;}\n    .sr .p{font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .sr .p span{font-family:ui-monospace,Menlo,monospace;font-size:8.5px;letter-spacing:1px;color:rgba(220,180,43,0.6);text-transform:uppercase;margin-left:6px;}\n    .sr .q{font-family:ui-monospace,Menlo,monospace;font-size:15px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums;}\n    .sr .q.neg{color:#ff7a8a;}\n    .toast{margin-top:10px;font-size:11px;font-weight:700;letter-spacing:1px;padding:8px 12px;}\n    .toast.ok{color:var(--gold);background:rgba(220,180,43,0.08);} .toast.err{color:#ff6b6b;background:rgba(255,107,107,0.08);}\n    .scrim{position:absolute;inset:0;background:rgba(0,0,0,0.6);display:flex;justify-content:flex-end;z-index:50;}\n    .drawer{width:380px;max-width:90%;height:100%;background:#141414;border-left:1px solid rgba(244,241,234,0.12);padding:40px 32px;box-sizing:border-box;display:flex;flex-direction:column;gap:16px;}\n    .drawer h3{margin:0;font-size:26px;font-weight:800;letter-spacing:-1px;}\n    .ff{display:flex;flex-direction:column;gap:6px;}\n    .ff label{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .ff input,.ff select{background:rgba(244,241,234,0.05);border:1px solid rgba(244,241,234,0.15);color:#f4f1ea;font-size:14px;padding:11px 12px;outline:none;}\n    .ff input:focus,.ff select:focus{border-color:var(--gold);}\n    .fbtns{display:flex;gap:10px;margin-top:8px;}\n    .fbtns .save{flex:1;background:var(--red);border:0;color:#fff;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px;cursor:pointer;border-radius:6px;}\n    .fbtns .cancel{background:transparent;border:1px solid rgba(244,241,234,0.2);color:rgba(244,241,234,0.7);font-weight:700;letter-spacing:1px;text-transform:uppercase;padding:13px 18px;cursor:pointer;border-radius:6px;}\n    .card .del{flex:0 0 auto;background:transparent;border:1px solid rgba(244,241,234,0.18);color:rgba(244,241,234,0.5);font-size:12px;padding:6px 9px;cursor:pointer;border-radius:5px;}\n    .card .del:hover{border-color:var(--red);color:var(--red);}\n  `,\n  render(d2){\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    function esc(s){ return String(s==null?'':s).replace(/[&<>\"]/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n    function recs(n){ try{ var d=d2.data(n); if(!d) return []; var pi=(typeof d.pageInfo==='function')?d.pageInfo():null; if(pi && pi.pages>1 && typeof d.loadAll==='function') d.loadAll(); return (d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    function mapBy(a){ var m={}; a.forEach(function(x){ m[mid(x._id)]=x; }); return m; }\n    function num(n){ return (Number(n)||0).toLocaleString('pt-BR'); }\n\n    var locs=recs('locations'), stock=recs('stock'), comps=recs('companies'), mats=recs('materials');\n    var matMap=mapBy(mats), compMap=mapBy(comps);\n    // stock balance per location per material\n    var byLoc={}; stock.forEach(function(s){ var l=mid(s.location); if(!l) return; var m=mid(s.material); var o=byLoc[l]||(byLoc[l]={}); o[m]=(o[m]||0)+(Number(s.amount)||0); });\n    function totUnits(id){ var o=byLoc[id]||{}; var t=0; for(var k in o) t+=o[k]; return t; }\n    function nSkus(id){ var o=byLoc[id]||{}; var c=0; for(var k in o){ if(o[k]!==0) c++; } return c; }\n    function matName(id){ var m=matMap[id]; return m?(m.model||m.code||String(id).slice(-6)):String(id).slice(-6); }\n\n    var TYPE={FACTORY:['#dcb42b','rgba(220,180,43,0.14)','F','Fábrica'],RETAIL:['#5aa9ff','rgba(90,169,255,0.14)','L','Loja'],RESELLER:['#c78bff','rgba(199,139,255,0.14)','R','Revenda'],NULL:['rgba(244,241,234,0.5)','rgba(244,241,234,0.08)','·','—']};\n    function ty(t){ return TYPE[String(t||'NULL').toUpperCase()]||TYPE.NULL; }\n\n    var sel=d2.state.sel;\n    var listHtml=locs.map(function(l){\n      var id=mid(l._id); var t=ty(l.type);\n      return '<div class=\"card'+(sel===id?' sel':'')+'\" data-sel=\"'+esc(id)+'\"><div class=\"icon\" style=\"color:'+t[0]+';font-weight:800;font-size:16px;letter-spacing:0\">'+esc(t[2])+'</div>'\n        +'<div class=\"nm\"><b>'+esc(l.name||'—')+'</b><span>'+esc((compMap[mid(l.company_relation)]||{}).name||'sem empresa')+'</span>'\n        +'<div class=\"pill\" style=\"color:'+t[0]+';background:'+t[1]+'\">'+esc(t[3])+'</div></div>'\n        +'<div class=\"units\"><b>'+num(totUnits(id))+'</b><span>'+nSkus(id)+' itens</span></div>'\n        +'<button class=\"del\" data-del=\"'+esc(id)+'\" title=\"Excluir\">✕</button></div>';\n    }).join('')||'<div class=\"empty\" style=\"margin:40px auto\">Nenhum local.</div>';\n\n    var panel='<div class=\"empty\">Selecione um local<br>para ver o estoque.</div>';\n    if(sel){\n      var l=null; for(var i=0;i<locs.length;i++){ if(mid(locs[i]._id)===sel){ l=locs[i]; break; } }\n      if(l){\n        var o=byLoc[sel]||{}; var arr=[]; for(var k in o){ if(o[k]!==0) arr.push([k,o[k]]); } arr.sort(function(a,b){ return b[1]-a[1]; });\n        var srows=arr.map(function(p){ return '<div class=\"sr\"><div class=\"p\">'+esc(matName(p[0]))+'<span>'+esc((matMap[p[0]]||{}).code||'')+'</span></div><div class=\"q'+(p[1]<0?' neg':'')+'\">'+num(p[1])+'</div></div>'; }).join('')||'<div class=\"empty\" style=\"margin:30px auto\">Sem estoque neste local.</div>';\n        var t=ty(l.type);\n        panel='<div class=\"ph\"><div><h2>'+esc(l.name||'Local')+'</h2><div class=\"sub\">'+esc(t[3])+' · '+esc((compMap[mid(l.company_relation)]||{}).name||'—')+'</div></div><div class=\"units\" style=\"text-align:right\"><b style=\"font-family:ui-monospace,Menlo,monospace;font-size:30px;font-weight:800;color:var(--gold);letter-spacing:-1px\">'+num(totUnits(sel))+'</b><div style=\"font-size:9px;letter-spacing:2px;text-transform:uppercase;color:rgba(244,241,234,0.4);font-weight:700\">unidades</div></div></div>'\n          +'<div class=\"sb\"><div class=\"sh\"><div>Material em estoque</div><div class=\"r\">Qtd</div></div>'+srows+'</div>';\n      }\n    }\n    var toast=d2.state.toast?'<div class=\"toast '+(d2.state.toastErr?'err':'ok')+'\">'+esc(d2.state.toast)+'</div>':'';\n    var drawer='';\n    if(d2.state.formOpen){\n      var fd=d2.state.formData||{};\n      var copts=comps.map(function(c){ var id=mid(c._id); return '<option value=\"'+esc(id)+'\"'+(String(fd.company_relation)===String(id)?' selected':'')+'>'+esc(c.name||id)+'</option>'; }).join('');\n      var topts=['FACTORY','RETAIL','RESELLER'].map(function(t){ return '<option value=\"'+t+'\"'+(fd.type===t?' selected':'')+'>'+ty(t)[3]+'</option>'; }).join('');\n      drawer='<div class=\"scrim\" data-scrim><div class=\"drawer\"><h3>Novo local</h3>'\n        +'<div class=\"ff\"><label>Nome</label><input data-ff=\"name\" value=\"'+esc(fd.name||'')+'\"/></div>'\n        +'<div class=\"ff\"><label>Tipo</label><select data-ff=\"type\"><option value=\"\">—</option>'+topts+'</select></div>'\n        +'<div class=\"ff\"><label>Empresa</label><select data-ff=\"company_relation\"><option value=\"\">—</option>'+copts+'</select></div>'\n        +'<div class=\"fbtns\"><button class=\"save\" data-save>Criar local</button><button class=\"cancel\" data-cancel>Cancelar</button></div></div></div>';\n    }\n\n    return '<div class=\"wrap\"><div class=\"tick\"></div>'\n      +'<div class=\"head\"><div><h1>Locais</h1><div class=\"eyebrow\">Locais e estoque · '+locs.length+' locais</div></div><button class=\"act\" data-new>+ Novo local</button></div>'\n      +toast+'<div class=\"cols\"><div class=\"list\">'+listHtml+'</div><div class=\"panel\">'+panel+'</div></div>'+drawer+'</div>';\n  },\n  mounted(d2){\n    d2.on('[data-sel]','click',function(e,el){ d2.setState({sel:el.getAttribute('data-sel'), toast:null}); });\n    d2.on('[data-del]','click',function(e,el){\n      e.stopPropagation();\n      var id=el.getAttribute('data-del');\n      Promise.resolve(d2.dialog.confirm('Excluir este local? Esta ação não pode ser desfeita.')).then(function(ok){\n        if(!ok) return;\n        var ds=d2.data('locations');\n        d2.setState({toast:'Excluindo…', toastErr:false});\n        Promise.resolve(ds.remove(id)).then(function(){ ds.refresh(); d2.setState({sel:null, toast:'✓ Local excluído.', toastErr:false}); })\n          .catch(function(err){ d2.setState({toast:'Erro ao excluir: '+(err&&err.message?err.message:err), toastErr:true}); });\n      });\n    });\n    d2.on('[data-new]','click',function(){ d2.setState({formOpen:true, formData:{}}); });\n    d2.on('[data-cancel]','click',function(){ d2.setState({formOpen:false}); });\n    d2.on('[data-scrim]','click',function(e,el){ if(e.target===el) d2.setState({formOpen:false}); });\n    d2.on('[data-ff]','input',function(e,el){ var k=el.getAttribute('data-ff'); var fd=Object.assign({},d2.state.formData||{}); fd[k]=el.value; d2.state.formData=fd; });\n    d2.on('[data-ff]','change',function(e,el){ var k=el.getAttribute('data-ff'); var fd=Object.assign({},d2.state.formData||{}); fd[k]=el.value; d2.state.formData=fd; });\n    d2.on('[data-save]','click',function(){\n      var fd=d2.state.formData||{}; if(!fd.name){ d2.setState({toast:'Informe o nome.', toastErr:true}); return; }\n      var rec={ name:fd.name, type:fd.type||null, company_relation:fd.company_relation||null };\n      var ds=d2.data('locations');\n      d2.setState({toast:'Criando…', toastErr:false});\n      Promise.resolve(ds.create(rec)).then(function(){ return ds.save(); }).then(function(){ ds.refresh(); d2.setState({formOpen:false, formData:{}, toast:'✓ Local criado.', toastErr:false}); })\n        .catch(function(err){ d2.setState({toast:'Erro: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n  }\n};"}},"locations":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"locations"}}}},"stock":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"stock"}}}},"companies":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"companies"}}}},"materials":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"materials"}}}}}}}},"__d2PrevCode":{"code":"export default {\n  css: `\n    :host{--red:#c8102e;--gold:#dcb42b;--green:#3ed47e;--blue:#5aa9ff;display:block;height:100%;background:#0d0d0d;}\n    .wrap{height:100%;display:flex;flex-direction:column;background:#0d0d0d;color:#f4f1ea;font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;padding:44px 46px 0;box-sizing:border-box;max-width:1360px;margin:0 auto;width:100%;overflow:hidden;position:relative;}\n    .tick{width:36px;height:3px;background:var(--red);margin-bottom:14px;}\n    .head{display:flex;justify-content:space-between;align-items:flex-end;}\n    h1{margin:0;font-size:52px;font-weight:800;letter-spacing:-2.5px;line-height:.95;}\n    .eyebrow{margin-top:14px;font-size:11px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);}\n    .act{background:transparent;border:1px solid var(--red);color:var(--red);font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px 18px;cursor:pointer;}\n    .act:active{transform:translateY(1px);}\n    .cols{flex:1;display:flex;gap:28px;margin-top:24px;min-height:0;}\n    .list{flex:0 0 46%;display:flex;flex-direction:column;min-height:0;border-right:1px solid rgba(244,241,234,0.08);padding-right:24px;overflow:auto;}\n    .card{display:flex;align-items:center;gap:14px;padding:16px 10px;border-bottom:1px solid rgba(244,241,234,0.06);cursor:pointer;}\n    .card:hover{background:rgba(244,241,234,0.02);}\n    .card.sel{background:rgba(220,180,43,0.06);box-shadow:inset 3px 0 0 var(--gold);}\n    .icon{width:44px;height:44px;flex:0 0 44px;border-radius:9px;display:grid;place-items:center;font-size:20px;\n      background:linear-gradient(180deg,rgba(244,241,234,0.09),rgba(244,241,234,0.03));box-shadow:0 1px 0 rgba(255,255,255,.08) inset,0 2px 4px rgba(0,0,0,.4);}\n    .card .nm{flex:1;min-width:0;}\n    .card .nm b{font-size:16px;font-weight:700;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .card .nm span{font-size:9px;letter-spacing:1.8px;text-transform:uppercase;color:rgba(244,241,234,0.4);font-weight:700;}\n    .card .units{text-align:right;}\n    .card .units b{font-family:ui-monospace,Menlo,monospace;font-size:22px;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums;display:block;letter-spacing:-1px;}\n    .card .units span{font-size:8px;letter-spacing:2px;text-transform:uppercase;color:rgba(244,241,234,0.4);font-weight:700;}\n    .pill{display:inline-block;font-size:8.5px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;padding:3px 8px;border-radius:3px;margin-top:4px;}\n    .panel{flex:1;display:flex;flex-direction:column;min-height:0;}\n    .empty{margin:auto;color:rgba(244,241,234,0.35);font-size:13px;letter-spacing:1px;text-align:center;line-height:1.7;}\n    .ph{display:flex;justify-content:space-between;align-items:baseline;}\n    .ph h2{margin:0;font-size:28px;font-weight:800;letter-spacing:-1px;}\n    .ph .sub{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .sb{flex:0 1 auto;min-height:0;overflow:auto;margin-top:18px;border-top:2px solid rgba(244,241,234,0.85);}\n    .sh{display:grid;grid-template-columns:1fr 90px;padding:8px 4px;border-bottom:1px solid rgba(244,241,234,0.1);}\n    .sh div{font-size:9px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);}\n    .sh .r{text-align:right;}\n    .sr{display:grid;grid-template-columns:1fr 90px;padding:10px 4px;border-bottom:1px solid rgba(244,241,234,0.05);align-items:center;}\n    .sr .p{font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .sr .p span{font-family:ui-monospace,Menlo,monospace;font-size:8.5px;letter-spacing:1px;color:rgba(220,180,43,0.6);text-transform:uppercase;margin-left:6px;}\n    .sr .q{font-family:ui-monospace,Menlo,monospace;font-size:15px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums;}\n    .sr .q.neg{color:#ff7a8a;}\n    .toast{margin-top:10px;font-size:11px;font-weight:700;letter-spacing:1px;padding:8px 12px;}\n    .toast.ok{color:var(--gold);background:rgba(220,180,43,0.08);} .toast.err{color:#ff6b6b;background:rgba(255,107,107,0.08);}\n    .scrim{position:absolute;inset:0;background:rgba(0,0,0,0.6);display:flex;justify-content:flex-end;z-index:50;}\n    .drawer{width:380px;max-width:90%;height:100%;background:#141414;border-left:1px solid rgba(244,241,234,0.12);padding:40px 32px;box-sizing:border-box;display:flex;flex-direction:column;gap:16px;}\n    .drawer h3{margin:0;font-size:26px;font-weight:800;letter-spacing:-1px;}\n    .ff{display:flex;flex-direction:column;gap:6px;}\n    .ff label{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .ff input,.ff select{background:rgba(244,241,234,0.05);border:1px solid rgba(244,241,234,0.15);color:#f4f1ea;font-size:14px;padding:11px 12px;outline:none;}\n    .ff input:focus,.ff select:focus{border-color:var(--gold);}\n    .fbtns{display:flex;gap:10px;margin-top:8px;}\n    .fbtns .save{flex:1;background:var(--red);border:0;color:#fff;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px;cursor:pointer;border-radius:6px;}\n    .fbtns .cancel{background:transparent;border:1px solid rgba(244,241,234,0.2);color:rgba(244,241,234,0.7);font-weight:700;letter-spacing:1px;text-transform:uppercase;padding:13px 18px;cursor:pointer;border-radius:6px;}\n    .card .del{flex:0 0 auto;background:transparent;border:1px solid rgba(244,241,234,0.18);color:rgba(244,241,234,0.5);font-size:12px;padding:6px 9px;cursor:pointer;border-radius:5px;}\n    .card .del:hover{border-color:var(--red);color:var(--red);}\n  `,\n  render(d2){\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    function esc(s){ return String(s==null?'':s).replace(/[&<>\"]/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n    function recs(n){ try{ var d=d2.data(n); return (d&&d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    function mapBy(a){ var m={}; a.forEach(function(x){ m[mid(x._id)]=x; }); return m; }\n    function num(n){ return (Number(n)||0).toLocaleString('pt-BR'); }\n\n    var locs=recs('locations'), stock=recs('stock'), comps=recs('companies'), mats=recs('materials');\n    var matMap=mapBy(mats), compMap=mapBy(comps);\n    // stock balance per location per material\n    var byLoc={}; stock.forEach(function(s){ var l=mid(s.location); if(!l) return; var m=mid(s.material); var o=byLoc[l]||(byLoc[l]={}); o[m]=(o[m]||0)+(Number(s.amount)||0); });\n    function totUnits(id){ var o=byLoc[id]||{}; var t=0; for(var k in o) t+=o[k]; return t; }\n    function nSkus(id){ var o=byLoc[id]||{}; var c=0; for(var k in o){ if(o[k]!==0) c++; } return c; }\n    function matName(id){ var m=matMap[id]; return m?(m.model||m.code||String(id).slice(-6)):String(id).slice(-6); }\n\n    var TYPE={FACTORY:['#dcb42b','rgba(220,180,43,0.14)','F','Fábrica'],RETAIL:['#5aa9ff','rgba(90,169,255,0.14)','L','Loja'],RESELLER:['#c78bff','rgba(199,139,255,0.14)','R','Revenda'],NULL:['rgba(244,241,234,0.5)','rgba(244,241,234,0.08)','·','—']};\n    function ty(t){ return TYPE[String(t||'NULL').toUpperCase()]||TYPE.NULL; }\n\n    var sel=d2.state.sel;\n    var listHtml=locs.map(function(l){\n      var id=mid(l._id); var t=ty(l.type);\n      return '<div class=\"card'+(sel===id?' sel':'')+'\" data-sel=\"'+esc(id)+'\"><div class=\"icon\" style=\"color:'+t[0]+';font-weight:800;font-size:16px;letter-spacing:0\">'+esc(t[2])+'</div>'\n        +'<div class=\"nm\"><b>'+esc(l.name||'—')+'</b><span>'+esc((compMap[mid(l.company_relation)]||{}).name||'sem empresa')+'</span>'\n        +'<div class=\"pill\" style=\"color:'+t[0]+';background:'+t[1]+'\">'+esc(t[3])+'</div></div>'\n        +'<div class=\"units\"><b>'+num(totUnits(id))+'</b><span>'+nSkus(id)+' itens</span></div>'\n        +'<button class=\"del\" data-del=\"'+esc(id)+'\" title=\"Excluir\">✕</button></div>';\n    }).join('')||'<div class=\"empty\" style=\"margin:40px auto\">Nenhum local.</div>';\n\n    var panel='<div class=\"empty\">Selecione um local<br>para ver o estoque.</div>';\n    if(sel){\n      var l=null; for(var i=0;i<locs.length;i++){ if(mid(locs[i]._id)===sel){ l=locs[i]; break; } }\n      if(l){\n        var o=byLoc[sel]||{}; var arr=[]; for(var k in o){ if(o[k]!==0) arr.push([k,o[k]]); } arr.sort(function(a,b){ return b[1]-a[1]; });\n        var srows=arr.map(function(p){ return '<div class=\"sr\"><div class=\"p\">'+esc(matName(p[0]))+'<span>'+esc((matMap[p[0]]||{}).code||'')+'</span></div><div class=\"q'+(p[1]<0?' neg':'')+'\">'+num(p[1])+'</div></div>'; }).join('')||'<div class=\"empty\" style=\"margin:30px auto\">Sem estoque neste local.</div>';\n        var t=ty(l.type);\n        panel='<div class=\"ph\"><div><h2>'+esc(l.name||'Local')+'</h2><div class=\"sub\">'+esc(t[3])+' · '+esc((compMap[mid(l.company_relation)]||{}).name||'—')+'</div></div><div class=\"units\" style=\"text-align:right\"><b style=\"font-family:ui-monospace,Menlo,monospace;font-size:30px;font-weight:800;color:var(--gold);letter-spacing:-1px\">'+num(totUnits(sel))+'</b><div style=\"font-size:9px;letter-spacing:2px;text-transform:uppercase;color:rgba(244,241,234,0.4);font-weight:700\">unidades</div></div></div>'\n          +'<div class=\"sb\"><div class=\"sh\"><div>Material em estoque</div><div class=\"r\">Qtd</div></div>'+srows+'</div>';\n      }\n    }\n    var toast=d2.state.toast?'<div class=\"toast '+(d2.state.toastErr?'err':'ok')+'\">'+esc(d2.state.toast)+'</div>':'';\n    var drawer='';\n    if(d2.state.formOpen){\n      var fd=d2.state.formData||{};\n      var copts=comps.map(function(c){ var id=mid(c._id); return '<option value=\"'+esc(id)+'\"'+(String(fd.company_relation)===String(id)?' selected':'')+'>'+esc(c.name||id)+'</option>'; }).join('');\n      var topts=['FACTORY','RETAIL','RESELLER'].map(function(t){ return '<option value=\"'+t+'\"'+(fd.type===t?' selected':'')+'>'+ty(t)[3]+'</option>'; }).join('');\n      drawer='<div class=\"scrim\" data-scrim><div class=\"drawer\"><h3>Novo local</h3>'\n        +'<div class=\"ff\"><label>Nome</label><input data-ff=\"name\" value=\"'+esc(fd.name||'')+'\"/></div>'\n        +'<div class=\"ff\"><label>Tipo</label><select data-ff=\"type\"><option value=\"\">—</option>'+topts+'</select></div>'\n        +'<div class=\"ff\"><label>Empresa</label><select data-ff=\"company_relation\"><option value=\"\">—</option>'+copts+'</select></div>'\n        +'<div class=\"fbtns\"><button class=\"save\" data-save>Criar local</button><button class=\"cancel\" data-cancel>Cancelar</button></div></div></div>';\n    }\n\n    return '<div class=\"wrap\"><div class=\"tick\"></div>'\n      +'<div class=\"head\"><div><h1>Locais</h1><div class=\"eyebrow\">Locais e estoque · '+locs.length+' locais</div></div><button class=\"act\" data-new>+ Novo local</button></div>'\n      +toast+'<div class=\"cols\"><div class=\"list\">'+listHtml+'</div><div class=\"panel\">'+panel+'</div></div>'+drawer+'</div>';\n  },\n  mounted(d2){\n    d2.on('[data-sel]','click',function(e,el){ d2.setState({sel:el.getAttribute('data-sel'), toast:null}); });\n    d2.on('[data-del]','click',function(e,el){\n      e.stopPropagation();\n      var id=el.getAttribute('data-del');\n      Promise.resolve(d2.dialog.confirm('Excluir este local? Esta ação não pode ser desfeita.')).then(function(ok){\n        if(!ok) return;\n        var ds=d2.data('locations');\n        d2.setState({toast:'Excluindo…', toastErr:false});\n        Promise.resolve(ds.remove(id)).then(function(){ ds.refresh(); d2.setState({sel:null, toast:'✓ Local excluído.', toastErr:false}); })\n          .catch(function(err){ d2.setState({toast:'Erro ao excluir: '+(err&&err.message?err.message:err), toastErr:true}); });\n      });\n    });\n    d2.on('[data-new]','click',function(){ d2.setState({formOpen:true, formData:{}}); });\n    d2.on('[data-cancel]','click',function(){ d2.setState({formOpen:false}); });\n    d2.on('[data-scrim]','click',function(e,el){ if(e.target===el) d2.setState({formOpen:false}); });\n    d2.on('[data-ff]','input',function(e,el){ var k=el.getAttribute('data-ff'); var fd=Object.assign({},d2.state.formData||{}); fd[k]=el.value; d2.state.formData=fd; });\n    d2.on('[data-ff]','change',function(e,el){ var k=el.getAttribute('data-ff'); var fd=Object.assign({},d2.state.formData||{}); fd[k]=el.value; d2.state.formData=fd; });\n    d2.on('[data-save]','click',function(){\n      var fd=d2.state.formData||{}; if(!fd.name){ d2.setState({toast:'Informe o nome.', toastErr:true}); return; }\n      var rec={ name:fd.name, type:fd.type||null, company_relation:fd.company_relation||null };\n      var ds=d2.data('locations');\n      d2.setState({toast:'Criando…', toastErr:false});\n      Promise.resolve(ds.create(rec)).then(function(){ return ds.save(); }).then(function(){ ds.refresh(); d2.setState({formOpen:false, formData:{}, toast:'✓ Local criado.', toastErr:false}); })\n        .catch(function(err){ d2.setState({toast:'Erro: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n  }\n};","at":"2026-08-05T13:07:39.346Z"}}},{"_id":"6a4f97be143f11aaf6bbaee8","component":"data2-core-types@Component","system":"6138ba0292425036c3b32255","params":{"extends":"data2-core-primitives@Block","component":"kInvoice","package":"roue","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"export default {\n  css: `\n    :host{--red:#c8102e;--gold:#dcb42b;--brass:#b0902f;--brass-hi:#ecd489;--brass-lo:#6f571c;--green:#3ed47e;--blue:#5aa9ff;display:block;height:100%;background:#0d0d0d;}\n    .wrap{height:100%;display:flex;flex-direction:column;background:#0d0d0d;color:#f4f1ea;font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;padding:44px 46px 0;box-sizing:border-box;max-width:1360px;margin:0 auto;width:100%;overflow:hidden;position:relative;}\n    .tick{width:36px;height:3px;background:var(--red);margin-bottom:14px;}\n    .head{display:flex;justify-content:space-between;align-items:flex-end;}\n    h1{margin:0;font-size:52px;font-weight:800;letter-spacing:-2.5px;line-height:.95;}\n    .eyebrow{margin-top:14px;font-size:11px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);}\n    .act{background:transparent;border:1px solid var(--red);color:var(--red);font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px 18px;cursor:pointer;}\n    .act:active{transform:translateY(1px);}\n    .cols{flex:1;display:flex;gap:28px;margin-top:24px;min-height:0;}\n    .list{flex:0 0 40%;display:flex;flex-direction:column;min-height:0;border-right:1px solid rgba(244,241,234,0.08);padding-right:24px;}\n    .lh{font-size:9px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);padding-bottom:10px;border-bottom:1px solid rgba(244,241,234,0.1);}\n    .lsearch{padding:10px 0;} .lsearch .lq{width:100%;box-sizing:border-box;background:rgba(244,241,234,0.04);border:1px solid rgba(244,241,234,0.12);padding:8px 10px;color:#f4f1ea;font-size:12px;letter-spacing:.5px;outline:none;font-family:inherit;}\n    .rows{flex:1;overflow:auto;}\n    .a{display:flex;align-items:center;gap:13px;padding:14px 8px;border-bottom:1px solid rgba(244,241,234,0.06);cursor:pointer;}\n    .a:hover{background:rgba(244,241,234,0.02);}\n    .a.sel{background:rgba(220,180,43,0.06);box-shadow:inset 3px 0 0 var(--gold);}\n    .a .seal{width:40px;height:40px;flex:0 0 40px;}\n    .a .info{flex:1;min-width:0;}\n    .a .id{font-size:10px;letter-spacing:1.6px;font-weight:700;color:rgba(220,180,43,0.85);text-transform:uppercase;}\n    .a .nm{font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;}\n    .a .bal{font-family:ui-monospace,Menlo,monospace;font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;text-align:right;}\n    .seal svg{width:100%;height:100%;display:block;}\n    .eye{transition:r .1s;}\n    .facepath{transition:d .45s ease;}\n    .panel{flex:1;display:flex;flex-direction:column;min-height:0;position:relative;}\n    .empty{margin:auto;color:rgba(244,241,234,0.35);font-size:13px;letter-spacing:1px;text-align:center;line-height:1.7;}\n    .phead{display:flex;align-items:flex-start;gap:18px;}\n    .phead .bigseal{width:64px;height:64px;flex:0 0 64px;filter:drop-shadow(0 3px 5px rgba(0,0,0,.5));}\n    .phead h2{margin:0;font-size:28px;font-weight:800;letter-spacing:-1px;}\n    .phead .sub{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);margin-top:6px;}\n    .stamp{margin-left:auto;align-self:center;padding:6px 14px;border:2.5px solid var(--red);border-radius:5px;color:var(--red);font-weight:800;font-size:15px;letter-spacing:2.5px;text-transform:uppercase;transform:rotate(-7deg);opacity:.92;\n      -webkit-mask-image:repeating-linear-gradient(44deg,#000 0 4px,rgba(0,0,0,.5) 4px 6px);}\n    .stamp.closed{color:var(--green);border-color:var(--green);transform:rotate(-3deg);}\n    .stamp small{display:block;font-family:ui-monospace,Menlo,monospace;font-size:7px;letter-spacing:1.5px;text-align:center;margin-top:1px;}\n    .ledger{flex:0 1 auto;min-height:0;overflow:auto;margin-top:20px;border-top:2px solid rgba(244,241,234,0.85);}\n    .lr{display:grid;grid-template-columns:52px 1fr 110px 118px;align-items:center;padding:11px 4px;border-bottom:1px solid rgba(244,241,234,0.07);}\n    .lr:hover{background:rgba(244,241,234,0.02);}\n    .lr .dt{font-family:ui-monospace,Menlo,monospace;font-size:11px;color:rgba(244,241,234,0.5);}\n    .lr .ds{display:flex;align-items:center;gap:10px;min-width:0;}\n    .bdg{width:24px;height:24px;flex:0 0 24px;border-radius:5px;display:grid;place-items:center;font-weight:800;font-size:11px;box-shadow:0 1px 0 rgba(255,255,255,.15) inset,0 1px 2px rgba(0,0,0,.4);}\n    .bdg.pay{background:linear-gradient(180deg,#4fd88a,#1f7a48);color:#062;}\n    .bdg.buy{background:linear-gradient(180deg,#e2415a,#8f0f21);color:#fff;}\n    .bdg.prod{background:linear-gradient(180deg,var(--brass-hi),var(--brass-lo));color:#2a2004;}\n    .bdg.close{background:linear-gradient(180deg,#8a8a8a,#3a3a3a);color:#fff;}\n    .lr .dd{min-width:0;}\n    .lr .dd b{font-size:13.5px;font-weight:700;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .lr .dd span{font-family:ui-monospace,Menlo,monospace;font-size:8.5px;letter-spacing:1px;text-transform:uppercase;color:rgba(244,241,234,0.4);}\n    .amt{font-family:ui-monospace,Menlo,monospace;font-size:14px;font-weight:600;text-align:right;font-variant-numeric:tabular-nums;}\n    .amt.plus{color:var(--green);} .amt.minus{color:#ff7a8a;}\n    .run{font-family:ui-monospace,Menlo,monospace;font-size:14px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums;color:#f4f1ea;}\n    .balrow{display:flex;justify-content:space-between;align-items:center;padding:16px 4px 6px;border-top:2px solid rgba(244,241,234,0.85);margin-top:8px;}\n    .balrow .bl{font-size:10px;letter-spacing:2.5px;text-transform:uppercase;color:rgba(244,241,234,0.5);font-weight:700;}\n    .balrow .bv{font-family:ui-monospace,Menlo,monospace;font-size:32px;font-weight:800;letter-spacing:-1px;font-variant-numeric:tabular-nums;text-shadow:0 1px 0 rgba(0,0,0,.5);}\n    .balrow .bv small{font-size:15px;color:rgba(244,241,234,0.55);margin-right:4px;}\n    .cta{display:flex;gap:12px;padding:14px 0 22px;}\n    .cta button{border:0;font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:14px 20px;cursor:pointer;border-radius:7px;\n      box-shadow:0 1px 0 rgba(255,255,255,.14) inset,0 5px 12px -5px rgba(0,0,0,.8);transition:transform .09s,filter .15s;}\n    .cta button:active{transform:translateY(2px);}\n    .cta button:hover{filter:brightness(1.09);}\n    .cta .pay{background:linear-gradient(180deg,#3ed47e,#1f7a48);color:#04240f;flex:1;}\n    .cta .close{background:linear-gradient(180deg,#d33049,#8f0f21);color:#fff;flex:1;}\n    .cta button:disabled{opacity:.35;cursor:not-allowed;filter:none;}\n    .toast{margin-top:10px;font-size:11px;font-weight:700;letter-spacing:1px;padding:8px 12px;}\n    .toast.ok{color:var(--gold);background:rgba(220,180,43,0.08);} .toast.err{color:#ff6b6b;background:rgba(255,107,107,0.08);}\n    .scrim{position:absolute;inset:0;background:rgba(0,0,0,0.6);display:flex;justify-content:flex-end;z-index:50;}\n    .drawer{width:380px;max-width:90%;height:100%;background:#141414;border-left:1px solid rgba(244,241,234,0.12);padding:40px 32px;box-sizing:border-box;display:flex;flex-direction:column;gap:16px;}\n    .drawer h3{margin:0;font-size:26px;font-weight:800;letter-spacing:-1px;}\n    .ff{display:flex;flex-direction:column;gap:6px;}\n    .ff label{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .ff input{background:rgba(244,241,234,0.05);border:1px solid rgba(244,241,234,0.15);color:#f4f1ea;font-size:20px;font-family:ui-monospace,Menlo,monospace;padding:12px;outline:none;}\n    .ff input:focus{border-color:var(--gold);}\n    .ff select{background:rgba(244,241,234,0.05);border:1px solid rgba(244,241,234,0.15);color:#f4f1ea;font-size:14px;padding:11px 12px;outline:none;font-family:inherit;}\n    .ff select:focus{border-color:var(--gold);}\n    .fbtns{display:flex;gap:10px;margin-top:8px;}\n    .fbtns .save{flex:1;background:var(--green);border:0;color:#04240f;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px;cursor:pointer;border-radius:6px;}\n    .fbtns .cancel{background:transparent;border:1px solid rgba(244,241,234,0.2);color:rgba(244,241,234,0.7);font-weight:700;letter-spacing:1px;text-transform:uppercase;padding:13px 18px;cursor:pointer;border-radius:6px;}\n  `,\n  render(d2){\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    function esc(s){ return String(s==null?'':s).replace(/[&<>\"]/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n    function recs(n){ try{ var d=d2.data(n); if(!d) return []; var pi=(typeof d.pageInfo==='function')?d.pageInfo():null; if(pi && pi.pages>1 && typeof d.loadAll==='function') d.loadAll(); return (d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    function money(n){ n=Number(n)||0; return n.toLocaleString('pt-BR',{minimumFractionDigits:2,maximumFractionDigits:2}); }\n    function dshort(d){ if(!d) return '—'; var x=new Date(d); if(isNaN(x)) return '—'; return ('0'+x.getDate()).slice(-2)+'/'+('0'+(x.getMonth()+1)).slice(-2); }\n\n    var invs=recs('invoices'), evs=recs('events'), comps=recs('companies');\n    // group events by invoice id\n    var byInv={}; evs.forEach(function(e){ var iv=mid(e.invoice); if(!iv) return; (byInv[iv]=byInv[iv]||[]).push(e); });\n    function sign(t){ t=String(t||'').toUpperCase(); if(t==='PAYMENT') return 1; if(t==='CLOSING') return 0; return -1; }\n    function balOf(iv){ var es=byInv[iv]||[]; var b=0; es.forEach(function(e){ b+=sign(e.type)*(Number(e.total_value)||0); }); return b; }\n    function isClosed(iv){ return (byInv[iv]||[]).some(function(e){ return String(e.type||'').toUpperCase()==='CLOSING'; }); }\n\n    // seal svg with a face; state: happy|worried|joy\n    function seal(state,rx){\n      var mouth = state==='joy'?'M43,70 Q60,86 77,70' : state==='worried'?'M45,76 Q60,68 75,76' : 'M45,72 Q60,80 75,72';\n      var gid='g'+(rx||Math.round(60));\n      return '<svg viewBox=\"0 0 120 120\"><defs><radialGradient id=\"brass'+gid+'\" cx=\"38%\" cy=\"32%\" r=\"75%\"><stop offset=\"0%\" stop-color=\"#ecd489\"/><stop offset=\"48%\" stop-color=\"#b0902f\"/><stop offset=\"100%\" stop-color=\"#6f571c\"/></radialGradient></defs>'\n        +'<circle cx=\"60\" cy=\"60\" r=\"57\" fill=\"url(#brass'+gid+')\" stroke=\"#5c4715\" stroke-width=\"1.5\"/>'\n        +'<circle cx=\"60\" cy=\"60\" r=\"50\" fill=\"none\" stroke=\"#f0da95\" stroke-width=\"1\" opacity=\".45\"/>'\n        +'<circle class=\"eye\" cx=\"46\" cy=\"56\" r=\"3.4\" fill=\"#4a3910\"/><circle class=\"eye\" cx=\"74\" cy=\"56\" r=\"3.4\" fill=\"#4a3910\"/>'\n        +'<path class=\"facepath\" d=\"'+mouth+'\" fill=\"none\" stroke=\"#4a3910\" stroke-width=\"3.4\" stroke-linecap=\"round\"/></svg>';\n    }\n    function faceState(iv){ if(isClosed(iv)) return 'joy'; return balOf(iv)<0?'worried':'happy'; }\n\n    var sel=d2.state.sel;\n    var q=String(d2.state.q||'').toLowerCase();\n    var invsF=!q?invs:invs.filter(function(v){\n      var issuer=(v.issuer&&typeof v.issuer==='object')?v.issuer.name:'';\n      var buyer=(v.buyer&&typeof v.buyer==='object')?v.buyer.name:'';\n      return String(v.identifier||'').toLowerCase().indexOf(q)>=0 || String(issuer||'').toLowerCase().indexOf(q)>=0 || String(buyer||'').toLowerCase().indexOf(q)>=0;\n    });\n    var listHtml=invsF.map(function(v){\n      var id=mid(v._id); var b=balOf(id);\n      var issuer=(v.issuer&&typeof v.issuer==='object')?v.issuer.name:'';\n      return '<div class=\"a'+(sel===id?' sel':'')+'\" data-sel=\"'+esc(id)+'\"><div class=\"seal\">'+seal(faceState(id),id.slice(-3))+'</div>'\n        +'<div class=\"info\"><div class=\"id\">'+esc(v.identifier||id.slice(-5))+'</div><div class=\"nm\">'+esc(issuer||'—')+'</div></div>'\n        +'<div class=\"bal\" style=\"color:'+(b<0?'#ff7a8a':'#dcb42b')+'\">'+money(b)+'</div></div>';\n    }).join('')||('<div class=\"empty\" style=\"margin:40px auto\">'+(q?('Nada encontrado para “'+esc(q)+'”.'):'Nenhuma conta.')+'</div>');\n\n    var panel='<div class=\"empty\">Selecione uma conta<br>para ver a movimentação.</div>';\n    if(sel){\n      var inv=null; for(var i=0;i<invs.length;i++){ if(mid(invs[i]._id)===sel){ inv=invs[i]; break; } }\n      if(inv){\n        var es=(byInv[sel]||[]).slice().sort(function(a,b){ var da=new Date(a.date||a.createdAt||0),db=new Date(b.date||b.createdAt||0); if(da-db!==0) return da-db; return String(a._id).localeCompare(String(b._id)); });\n        var LB={PAYMENT:['pay','$','Depósito à fábrica'],BUY_ORDER:['buy','C','Ordem de compra'],PRODUCTION_ORDER:['prod','P','Ordem de produção'],CLOSING:['close','■','Fechamento da conta']};\n        var run=0;\n        var lrows=es.map(function(e){\n          var t=String(e.type||'').toUpperCase(); var meta=LB[t]||['close','·',t||'Evento']; var s=sign(t); var val=Number(e.total_value)||0; run+=s*val;\n          var amtHtml = t==='CLOSING' ? '<div class=\"amt\" style=\"color:rgba(244,241,234,0.4)\">—</div>' : '<div class=\"amt '+(s>0?'plus':'minus')+'\">'+(s>0?'+':'−')+money(val)+'</div>';\n          return '<div class=\"lr\"><div class=\"dt\">'+dshort(e.date||e.createdAt)+'</div>'\n            +'<div class=\"ds\"><div class=\"bdg '+meta[0]+'\">'+meta[1]+'</div><div class=\"dd\"><b>'+esc(meta[2])+'</b><span>'+esc(t.replace('_',' '))+'</span></div></div>'\n            +amtHtml+'<div class=\"run\">'+money(run)+'</div></div>';\n        }).join('')||'<div class=\"empty\" style=\"margin:30px auto\">Sem lançamentos ainda.</div>';\n        var bal=balOf(sel), closed=isClosed(sel);\n        var issuer=(inv.issuer&&typeof inv.issuer==='object')?inv.issuer.name:'—';\n        var buyer=(inv.buyer&&typeof inv.buyer==='object')?inv.buyer.name:'';\n        var stamp='<div class=\"stamp'+(closed?' closed':'')+'\">'+(closed?'Quitada':'Em aberto')+'<small>'+(closed?'oficial':'não oficial')+'</small></div>';\n        panel='<div class=\"phead\"><div class=\"bigseal\">'+seal(faceState(sel),'big')+'</div>'\n          +'<div><h2>'+esc(inv.identifier||'Conta')+'</h2><div class=\"sub\">'+esc(issuer)+(buyer?(' · '+esc(buyer)):'')+'</div></div>'+stamp+'</div>'\n          +'<div class=\"ledger\">'+lrows+'</div>'\n          +'<div class=\"balrow\"><div class=\"bl\">Saldo pré-pago na fábrica</div><div class=\"bv\" style=\"color:'+(bal<0?'#ff7a8a':'#f4f1ea')+'\"><small>R$</small>'+money(bal)+'</div></div>'\n          +'<div class=\"cta\"><button class=\"pay\" data-pay '+(closed?'disabled':'')+'>+ Registrar pagamento</button><button class=\"close\" data-close '+(closed?'disabled':'')+'>'+(closed?'Conta fechada':'Fechar conta')+'</button></div>';\n      }\n    }\n\n    var toast=d2.state.toast?'<div class=\"toast '+(d2.state.toastErr?'err':'ok')+'\">'+esc(d2.state.toast)+'</div>':'';\n    var drawer='';\n    if(d2.state.payOpen){\n      drawer='<div class=\"scrim\" data-scrim><div class=\"drawer\"><h3>Registrar pagamento</h3>'\n        +'<div class=\"ff\"><label>Valor enviado à fábrica (R$)</label><input type=\"number\" data-payval placeholder=\"0,00\" value=\"'+esc(d2.state.payVal||'')+'\"/></div>'\n        +'<div class=\"fbtns\"><button class=\"save\" data-paysave>Registrar</button><button class=\"cancel\" data-cancel>Cancelar</button></div></div></div>';\n    }\n    if(d2.state.newOpen){\n      var nd=d2.state.newData||{};\n      var issuerOpts=comps.filter(function(c){ var r=String(c.relation||'').toUpperCase(); return r==='SUPPLIER'||r==='SELF'; }).map(function(c){ var id=mid(c._id); return '<option value=\"'+esc(id)+'\"'+(String(nd.issuer)===String(id)?' selected':'')+'>'+esc(c.name||id)+'</option>'; }).join('');\n      var buyerOpts=comps.map(function(c){ var id=mid(c._id); return '<option value=\"'+esc(id)+'\"'+(String(nd.buyer)===String(id)?' selected':'')+'>'+esc(c.name||id)+'</option>'; }).join('');\n      drawer+='<div class=\"scrim\" data-scrim2><div class=\"drawer\"><h3>Nova conta</h3>'\n        +'<div class=\"ff\"><label>Emissor</label><select data-newff=\"issuer\"><option value=\"\">—</option>'+issuerOpts+'</select></div>'\n        +'<div class=\"ff\"><label>Comprador</label><select data-newff=\"buyer\"><option value=\"\">—</option>'+buyerOpts+'</select></div>'\n        +'<div class=\"ff\"><label>Valor total (R$)</label><input type=\"number\" data-newff=\"total_value\" value=\"'+esc(nd.total_value!=null?nd.total_value:'')+'\"/></div>'\n        +'<div class=\"ff\"><label>Data de emissão</label><input type=\"date\" data-newff=\"issue_date\" value=\"'+esc(nd.issue_date||'')+'\"/></div>'\n        +'<div class=\"fbtns\"><button class=\"save\" data-newsave>Criar conta</button><button class=\"cancel\" data-newcancel>Cancelar</button></div></div></div>';\n    }\n\n    return '<div class=\"wrap\"><div class=\"tick\"></div>'\n      +'<div class=\"head\"><div><h1>Contas</h1><div class=\"eyebrow\">Conta corrente com a fábrica · '+invs.length+' contas</div></div><button class=\"act\" data-newopen>+ Nova conta</button></div>'\n      +toast\n      +'<div class=\"cols\"><div class=\"list\"><div class=\"lh\">Contas · Fábrica</div><div class=\"lsearch\"><input class=\"lq\" data-lq placeholder=\"BUSCAR\" value=\"'+esc(d2.state.q||'')+'\"/></div><div class=\"rows\">'+listHtml+'</div></div>'\n      +'<div class=\"panel\">'+panel+'</div></div>'+drawer+'</div>';\n  },\n  mounted(d2){\n    (function(){ try{ var sp=new URLSearchParams(window.location.search); var hl=sp.get('highlight'); if(hl && !d2.state.sel){ d2.setState({sel:hl}); } }catch(e){} })();\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    var slug=d2.param('systemSlug','roue');\n    d2.on('[data-sel]','click',function(e,el){ d2.setState({sel:el.getAttribute('data-sel'), toast:null}); });\n    d2.on('[data-newopen]','click',function(){ d2.setState({newOpen:true, newData:{}}); });\n    d2.on('[data-newcancel]','click',function(){ d2.setState({newOpen:false, newData:{}}); });\n    d2.on('[data-scrim2]','click',function(e,el){ if(e.target===el) d2.setState({newOpen:false, newData:{}}); });\n    d2.on('[data-newff]','input',function(e,el){ var k=el.getAttribute('data-newff'); var nd=Object.assign({},d2.state.newData||{}); nd[k]=el.value; d2.state.newData=nd; });\n    d2.on('[data-newff]','change',function(e,el){ var k=el.getAttribute('data-newff'); var nd=Object.assign({},d2.state.newData||{}); nd[k]=el.value; d2.state.newData=nd; });\n    d2.on('[data-newsave]','click',function(){\n      var nd=d2.state.newData||{};\n      if(!nd.issuer||!nd.buyer||!nd.total_value){ d2.setState({toast:'Preencha emissor, comprador e valor.', toastErr:true}); return; }\n      d2.setState({toast:'Criando conta…', toastErr:false});\n      fetch('https://'+slug+'.data2apis.com/rush/create_invoice',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({issuer:nd.issuer, buyer:nd.buyer, total_value:Number(nd.total_value), issue_date:nd.issue_date||null})}).then(function(r){return r.json();}).then(function(res){\n        var dd=res&&res.data?res.data:res;\n        if(!dd||dd.ok===false){ d2.setState({toast:'Erro ao criar conta.', toastErr:true}); return; }\n        d2.data('invoices').refresh();\n        d2.setState({newOpen:false, newData:{}, toast:'✓ Conta '+(dd.identifier||'')+' criada.', toastErr:false});\n      }).catch(function(err){ d2.setState({toast:'Erro ao criar conta: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n    d2.on('[data-lq]','input',function(e,el){ d2.setState({q:el.value}); });\n    d2.on('[data-pay]','click',function(){ d2.setState({payOpen:true, payVal:''}); });\n    d2.on('[data-cancel]','click',function(){ d2.setState({payOpen:false}); });\n    d2.on('[data-scrim]','click',function(e,el){ if(e.target===el) d2.setState({payOpen:false}); });\n    d2.on('[data-payval]','input',function(e,el){ d2.state.payVal=el.value; });\n    d2.on('[data-paysave]','click',function(){\n      var sel=d2.state.sel; var val=Number(d2.state.payVal);\n      if(!sel){ return; } if(!val||val<=0){ d2.setState({toast:'Informe um valor válido.', toastErr:true}); return; }\n      var ds=d2.data('events');\n      d2.setState({toast:'Registrando…', toastErr:false});\n      Promise.resolve(ds.create({ invoice:sel, type:'PAYMENT', total_value:val, date:new Date().toISOString() })).then(function(){ return ds.save(); }).then(function(){ ds.refresh(); d2.setState({payOpen:false, payVal:'', toast:'✓ Pagamento registrado.', toastErr:false}); })\n        .catch(function(err){ d2.setState({toast:'Erro: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n    d2.on('[data-close]','click',function(){\n      var sel=d2.state.sel; if(!sel) return;\n      Promise.resolve(d2.dialog.confirm('Fechar esta conta? Ela vira o documento oficial e não recebe mais lançamentos.')).then(function(ok){\n        if(!ok) return;\n        var ds=d2.data('events');\n        d2.setState({toast:'Fechando conta…', toastErr:false});\n        Promise.resolve(ds.create({ invoice:sel, type:'CLOSING', total_value:0, date:new Date().toISOString() })).then(function(){ return ds.save(); }).then(function(){ ds.refresh(); d2.setState({toast:'✓ Conta fechada — agora é oficial.', toastErr:false}); })\n          .catch(function(err){ d2.setState({toast:'Erro: '+(err&&err.message?err.message:err), toastErr:true}); });\n      });\n    });\n  }\n};"}},"invoices":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"invoices"}}}},"events":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"events"}}}},"companies":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"companies"}}}}}}}},"__d2PrevCode":{"code":"export default {\n  css: `\n    :host{--red:#c8102e;--gold:#dcb42b;--brass:#b0902f;--brass-hi:#ecd489;--brass-lo:#6f571c;--green:#3ed47e;--blue:#5aa9ff;display:block;height:100%;background:#0d0d0d;}\n    .wrap{height:100%;display:flex;flex-direction:column;background:#0d0d0d;color:#f4f1ea;font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;padding:44px 46px 0;box-sizing:border-box;max-width:1360px;margin:0 auto;width:100%;overflow:hidden;position:relative;}\n    .tick{width:36px;height:3px;background:var(--red);margin-bottom:14px;}\n    .head{display:flex;justify-content:space-between;align-items:flex-end;}\n    h1{margin:0;font-size:52px;font-weight:800;letter-spacing:-2.5px;line-height:.95;}\n    .eyebrow{margin-top:14px;font-size:11px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);}\n    .act{background:transparent;border:1px solid var(--red);color:var(--red);font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px 18px;cursor:pointer;}\n    .act:active{transform:translateY(1px);}\n    .cols{flex:1;display:flex;gap:28px;margin-top:24px;min-height:0;}\n    .list{flex:0 0 40%;display:flex;flex-direction:column;min-height:0;border-right:1px solid rgba(244,241,234,0.08);padding-right:24px;}\n    .lh{font-size:9px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.4);padding-bottom:10px;border-bottom:1px solid rgba(244,241,234,0.1);}\n    .lsearch{padding:10px 0;} .lsearch .lq{width:100%;box-sizing:border-box;background:rgba(244,241,234,0.04);border:1px solid rgba(244,241,234,0.12);padding:8px 10px;color:#f4f1ea;font-size:12px;letter-spacing:.5px;outline:none;font-family:inherit;}\n    .rows{flex:1;overflow:auto;}\n    .a{display:flex;align-items:center;gap:13px;padding:14px 8px;border-bottom:1px solid rgba(244,241,234,0.06);cursor:pointer;}\n    .a:hover{background:rgba(244,241,234,0.02);}\n    .a.sel{background:rgba(220,180,43,0.06);box-shadow:inset 3px 0 0 var(--gold);}\n    .a .seal{width:40px;height:40px;flex:0 0 40px;}\n    .a .info{flex:1;min-width:0;}\n    .a .id{font-size:10px;letter-spacing:1.6px;font-weight:700;color:rgba(220,180,43,0.85);text-transform:uppercase;}\n    .a .nm{font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;}\n    .a .bal{font-family:ui-monospace,Menlo,monospace;font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;text-align:right;}\n    .seal svg{width:100%;height:100%;display:block;}\n    .eye{transition:r .1s;}\n    .facepath{transition:d .45s ease;}\n    .panel{flex:1;display:flex;flex-direction:column;min-height:0;position:relative;}\n    .empty{margin:auto;color:rgba(244,241,234,0.35);font-size:13px;letter-spacing:1px;text-align:center;line-height:1.7;}\n    .phead{display:flex;align-items:flex-start;gap:18px;}\n    .phead .bigseal{width:64px;height:64px;flex:0 0 64px;filter:drop-shadow(0 3px 5px rgba(0,0,0,.5));}\n    .phead h2{margin:0;font-size:28px;font-weight:800;letter-spacing:-1px;}\n    .phead .sub{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);margin-top:6px;}\n    .stamp{margin-left:auto;align-self:center;padding:6px 14px;border:2.5px solid var(--red);border-radius:5px;color:var(--red);font-weight:800;font-size:15px;letter-spacing:2.5px;text-transform:uppercase;transform:rotate(-7deg);opacity:.92;\n      -webkit-mask-image:repeating-linear-gradient(44deg,#000 0 4px,rgba(0,0,0,.5) 4px 6px);}\n    .stamp.closed{color:var(--green);border-color:var(--green);transform:rotate(-3deg);}\n    .stamp small{display:block;font-family:ui-monospace,Menlo,monospace;font-size:7px;letter-spacing:1.5px;text-align:center;margin-top:1px;}\n    .ledger{flex:0 1 auto;min-height:0;overflow:auto;margin-top:20px;border-top:2px solid rgba(244,241,234,0.85);}\n    .lr{display:grid;grid-template-columns:52px 1fr 110px 118px;align-items:center;padding:11px 4px;border-bottom:1px solid rgba(244,241,234,0.07);}\n    .lr:hover{background:rgba(244,241,234,0.02);}\n    .lr .dt{font-family:ui-monospace,Menlo,monospace;font-size:11px;color:rgba(244,241,234,0.5);}\n    .lr .ds{display:flex;align-items:center;gap:10px;min-width:0;}\n    .bdg{width:24px;height:24px;flex:0 0 24px;border-radius:5px;display:grid;place-items:center;font-weight:800;font-size:11px;box-shadow:0 1px 0 rgba(255,255,255,.15) inset,0 1px 2px rgba(0,0,0,.4);}\n    .bdg.pay{background:linear-gradient(180deg,#4fd88a,#1f7a48);color:#062;}\n    .bdg.buy{background:linear-gradient(180deg,#e2415a,#8f0f21);color:#fff;}\n    .bdg.prod{background:linear-gradient(180deg,var(--brass-hi),var(--brass-lo));color:#2a2004;}\n    .bdg.close{background:linear-gradient(180deg,#8a8a8a,#3a3a3a);color:#fff;}\n    .lr .dd{min-width:0;}\n    .lr .dd b{font-size:13.5px;font-weight:700;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n    .lr .dd span{font-family:ui-monospace,Menlo,monospace;font-size:8.5px;letter-spacing:1px;text-transform:uppercase;color:rgba(244,241,234,0.4);}\n    .amt{font-family:ui-monospace,Menlo,monospace;font-size:14px;font-weight:600;text-align:right;font-variant-numeric:tabular-nums;}\n    .amt.plus{color:var(--green);} .amt.minus{color:#ff7a8a;}\n    .run{font-family:ui-monospace,Menlo,monospace;font-size:14px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums;color:#f4f1ea;}\n    .balrow{display:flex;justify-content:space-between;align-items:center;padding:16px 4px 6px;border-top:2px solid rgba(244,241,234,0.85);margin-top:8px;}\n    .balrow .bl{font-size:10px;letter-spacing:2.5px;text-transform:uppercase;color:rgba(244,241,234,0.5);font-weight:700;}\n    .balrow .bv{font-family:ui-monospace,Menlo,monospace;font-size:32px;font-weight:800;letter-spacing:-1px;font-variant-numeric:tabular-nums;text-shadow:0 1px 0 rgba(0,0,0,.5);}\n    .balrow .bv small{font-size:15px;color:rgba(244,241,234,0.55);margin-right:4px;}\n    .cta{display:flex;gap:12px;padding:14px 0 22px;}\n    .cta button{border:0;font-size:11px;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:14px 20px;cursor:pointer;border-radius:7px;\n      box-shadow:0 1px 0 rgba(255,255,255,.14) inset,0 5px 12px -5px rgba(0,0,0,.8);transition:transform .09s,filter .15s;}\n    .cta button:active{transform:translateY(2px);}\n    .cta button:hover{filter:brightness(1.09);}\n    .cta .pay{background:linear-gradient(180deg,#3ed47e,#1f7a48);color:#04240f;flex:1;}\n    .cta .close{background:linear-gradient(180deg,#d33049,#8f0f21);color:#fff;flex:1;}\n    .cta button:disabled{opacity:.35;cursor:not-allowed;filter:none;}\n    .toast{margin-top:10px;font-size:11px;font-weight:700;letter-spacing:1px;padding:8px 12px;}\n    .toast.ok{color:var(--gold);background:rgba(220,180,43,0.08);} .toast.err{color:#ff6b6b;background:rgba(255,107,107,0.08);}\n    .scrim{position:absolute;inset:0;background:rgba(0,0,0,0.6);display:flex;justify-content:flex-end;z-index:50;}\n    .drawer{width:380px;max-width:90%;height:100%;background:#141414;border-left:1px solid rgba(244,241,234,0.12);padding:40px 32px;box-sizing:border-box;display:flex;flex-direction:column;gap:16px;}\n    .drawer h3{margin:0;font-size:26px;font-weight:800;letter-spacing:-1px;}\n    .ff{display:flex;flex-direction:column;gap:6px;}\n    .ff label{font-size:10px;letter-spacing:2px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .ff input{background:rgba(244,241,234,0.05);border:1px solid rgba(244,241,234,0.15);color:#f4f1ea;font-size:20px;font-family:ui-monospace,Menlo,monospace;padding:12px;outline:none;}\n    .ff input:focus{border-color:var(--gold);}\n    .ff select{background:rgba(244,241,234,0.05);border:1px solid rgba(244,241,234,0.15);color:#f4f1ea;font-size:14px;padding:11px 12px;outline:none;font-family:inherit;}\n    .ff select:focus{border-color:var(--gold);}\n    .fbtns{display:flex;gap:10px;margin-top:8px;}\n    .fbtns .save{flex:1;background:var(--green);border:0;color:#04240f;font-weight:800;letter-spacing:2px;text-transform:uppercase;padding:13px;cursor:pointer;border-radius:6px;}\n    .fbtns .cancel{background:transparent;border:1px solid rgba(244,241,234,0.2);color:rgba(244,241,234,0.7);font-weight:700;letter-spacing:1px;text-transform:uppercase;padding:13px 18px;cursor:pointer;border-radius:6px;}\n  `,\n  render(d2){\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    function esc(s){ return String(s==null?'':s).replace(/[&<>\"]/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n    function recs(n){ try{ var d=d2.data(n); return (d&&d.records)?(d.records()||[]):[]; }catch(e){ return []; } }\n    function money(n){ n=Number(n)||0; return n.toLocaleString('pt-BR',{minimumFractionDigits:2,maximumFractionDigits:2}); }\n    function dshort(d){ if(!d) return '—'; var x=new Date(d); if(isNaN(x)) return '—'; return ('0'+x.getDate()).slice(-2)+'/'+('0'+(x.getMonth()+1)).slice(-2); }\n\n    var invs=recs('invoices'), evs=recs('events'), comps=recs('companies');\n    // group events by invoice id\n    var byInv={}; evs.forEach(function(e){ var iv=mid(e.invoice); if(!iv) return; (byInv[iv]=byInv[iv]||[]).push(e); });\n    function sign(t){ t=String(t||'').toUpperCase(); if(t==='PAYMENT') return 1; if(t==='CLOSING') return 0; return -1; }\n    function balOf(iv){ var es=byInv[iv]||[]; var b=0; es.forEach(function(e){ b+=sign(e.type)*(Number(e.total_value)||0); }); return b; }\n    function isClosed(iv){ return (byInv[iv]||[]).some(function(e){ return String(e.type||'').toUpperCase()==='CLOSING'; }); }\n\n    // seal svg with a face; state: happy|worried|joy\n    function seal(state,rx){\n      var mouth = state==='joy'?'M43,70 Q60,86 77,70' : state==='worried'?'M45,76 Q60,68 75,76' : 'M45,72 Q60,80 75,72';\n      var gid='g'+(rx||Math.round(60));\n      return '<svg viewBox=\"0 0 120 120\"><defs><radialGradient id=\"brass'+gid+'\" cx=\"38%\" cy=\"32%\" r=\"75%\"><stop offset=\"0%\" stop-color=\"#ecd489\"/><stop offset=\"48%\" stop-color=\"#b0902f\"/><stop offset=\"100%\" stop-color=\"#6f571c\"/></radialGradient></defs>'\n        +'<circle cx=\"60\" cy=\"60\" r=\"57\" fill=\"url(#brass'+gid+')\" stroke=\"#5c4715\" stroke-width=\"1.5\"/>'\n        +'<circle cx=\"60\" cy=\"60\" r=\"50\" fill=\"none\" stroke=\"#f0da95\" stroke-width=\"1\" opacity=\".45\"/>'\n        +'<circle class=\"eye\" cx=\"46\" cy=\"56\" r=\"3.4\" fill=\"#4a3910\"/><circle class=\"eye\" cx=\"74\" cy=\"56\" r=\"3.4\" fill=\"#4a3910\"/>'\n        +'<path class=\"facepath\" d=\"'+mouth+'\" fill=\"none\" stroke=\"#4a3910\" stroke-width=\"3.4\" stroke-linecap=\"round\"/></svg>';\n    }\n    function faceState(iv){ if(isClosed(iv)) return 'joy'; return balOf(iv)<0?'worried':'happy'; }\n\n    var sel=d2.state.sel;\n    var q=String(d2.state.q||'').toLowerCase();\n    var invsF=!q?invs:invs.filter(function(v){\n      var issuer=(v.issuer&&typeof v.issuer==='object')?v.issuer.name:'';\n      var buyer=(v.buyer&&typeof v.buyer==='object')?v.buyer.name:'';\n      return String(v.identifier||'').toLowerCase().indexOf(q)>=0 || String(issuer||'').toLowerCase().indexOf(q)>=0 || String(buyer||'').toLowerCase().indexOf(q)>=0;\n    });\n    var listHtml=invsF.map(function(v){\n      var id=mid(v._id); var b=balOf(id);\n      var issuer=(v.issuer&&typeof v.issuer==='object')?v.issuer.name:'';\n      return '<div class=\"a'+(sel===id?' sel':'')+'\" data-sel=\"'+esc(id)+'\"><div class=\"seal\">'+seal(faceState(id),id.slice(-3))+'</div>'\n        +'<div class=\"info\"><div class=\"id\">'+esc(v.identifier||id.slice(-5))+'</div><div class=\"nm\">'+esc(issuer||'—')+'</div></div>'\n        +'<div class=\"bal\" style=\"color:'+(b<0?'#ff7a8a':'#dcb42b')+'\">'+money(b)+'</div></div>';\n    }).join('')||('<div class=\"empty\" style=\"margin:40px auto\">'+(q?('Nada encontrado para “'+esc(q)+'”.'):'Nenhuma conta.')+'</div>');\n\n    var panel='<div class=\"empty\">Selecione uma conta<br>para ver a movimentação.</div>';\n    if(sel){\n      var inv=null; for(var i=0;i<invs.length;i++){ if(mid(invs[i]._id)===sel){ inv=invs[i]; break; } }\n      if(inv){\n        var es=(byInv[sel]||[]).slice().sort(function(a,b){ var da=new Date(a.date||a.createdAt||0),db=new Date(b.date||b.createdAt||0); if(da-db!==0) return da-db; return String(a._id).localeCompare(String(b._id)); });\n        var LB={PAYMENT:['pay','$','Depósito à fábrica'],BUY_ORDER:['buy','C','Ordem de compra'],PRODUCTION_ORDER:['prod','P','Ordem de produção'],CLOSING:['close','■','Fechamento da conta']};\n        var run=0;\n        var lrows=es.map(function(e){\n          var t=String(e.type||'').toUpperCase(); var meta=LB[t]||['close','·',t||'Evento']; var s=sign(t); var val=Number(e.total_value)||0; run+=s*val;\n          var amtHtml = t==='CLOSING' ? '<div class=\"amt\" style=\"color:rgba(244,241,234,0.4)\">—</div>' : '<div class=\"amt '+(s>0?'plus':'minus')+'\">'+(s>0?'+':'−')+money(val)+'</div>';\n          return '<div class=\"lr\"><div class=\"dt\">'+dshort(e.date||e.createdAt)+'</div>'\n            +'<div class=\"ds\"><div class=\"bdg '+meta[0]+'\">'+meta[1]+'</div><div class=\"dd\"><b>'+esc(meta[2])+'</b><span>'+esc(t.replace('_',' '))+'</span></div></div>'\n            +amtHtml+'<div class=\"run\">'+money(run)+'</div></div>';\n        }).join('')||'<div class=\"empty\" style=\"margin:30px auto\">Sem lançamentos ainda.</div>';\n        var bal=balOf(sel), closed=isClosed(sel);\n        var issuer=(inv.issuer&&typeof inv.issuer==='object')?inv.issuer.name:'—';\n        var buyer=(inv.buyer&&typeof inv.buyer==='object')?inv.buyer.name:'';\n        var stamp='<div class=\"stamp'+(closed?' closed':'')+'\">'+(closed?'Quitada':'Em aberto')+'<small>'+(closed?'oficial':'não oficial')+'</small></div>';\n        panel='<div class=\"phead\"><div class=\"bigseal\">'+seal(faceState(sel),'big')+'</div>'\n          +'<div><h2>'+esc(inv.identifier||'Conta')+'</h2><div class=\"sub\">'+esc(issuer)+(buyer?(' · '+esc(buyer)):'')+'</div></div>'+stamp+'</div>'\n          +'<div class=\"ledger\">'+lrows+'</div>'\n          +'<div class=\"balrow\"><div class=\"bl\">Saldo pré-pago na fábrica</div><div class=\"bv\" style=\"color:'+(bal<0?'#ff7a8a':'#f4f1ea')+'\"><small>R$</small>'+money(bal)+'</div></div>'\n          +'<div class=\"cta\"><button class=\"pay\" data-pay '+(closed?'disabled':'')+'>+ Registrar pagamento</button><button class=\"close\" data-close '+(closed?'disabled':'')+'>'+(closed?'Conta fechada':'Fechar conta')+'</button></div>';\n      }\n    }\n\n    var toast=d2.state.toast?'<div class=\"toast '+(d2.state.toastErr?'err':'ok')+'\">'+esc(d2.state.toast)+'</div>':'';\n    var drawer='';\n    if(d2.state.payOpen){\n      drawer='<div class=\"scrim\" data-scrim><div class=\"drawer\"><h3>Registrar pagamento</h3>'\n        +'<div class=\"ff\"><label>Valor enviado à fábrica (R$)</label><input type=\"number\" data-payval placeholder=\"0,00\" value=\"'+esc(d2.state.payVal||'')+'\"/></div>'\n        +'<div class=\"fbtns\"><button class=\"save\" data-paysave>Registrar</button><button class=\"cancel\" data-cancel>Cancelar</button></div></div></div>';\n    }\n    if(d2.state.newOpen){\n      var nd=d2.state.newData||{};\n      var issuerOpts=comps.filter(function(c){ var r=String(c.relation||'').toUpperCase(); return r==='SUPPLIER'||r==='SELF'; }).map(function(c){ var id=mid(c._id); return '<option value=\"'+esc(id)+'\"'+(String(nd.issuer)===String(id)?' selected':'')+'>'+esc(c.name||id)+'</option>'; }).join('');\n      var buyerOpts=comps.map(function(c){ var id=mid(c._id); return '<option value=\"'+esc(id)+'\"'+(String(nd.buyer)===String(id)?' selected':'')+'>'+esc(c.name||id)+'</option>'; }).join('');\n      drawer+='<div class=\"scrim\" data-scrim2><div class=\"drawer\"><h3>Nova conta</h3>'\n        +'<div class=\"ff\"><label>Emissor</label><select data-newff=\"issuer\"><option value=\"\">—</option>'+issuerOpts+'</select></div>'\n        +'<div class=\"ff\"><label>Comprador</label><select data-newff=\"buyer\"><option value=\"\">—</option>'+buyerOpts+'</select></div>'\n        +'<div class=\"ff\"><label>Valor total (R$)</label><input type=\"number\" data-newff=\"total_value\" value=\"'+esc(nd.total_value!=null?nd.total_value:'')+'\"/></div>'\n        +'<div class=\"ff\"><label>Data de emissão</label><input type=\"date\" data-newff=\"issue_date\" value=\"'+esc(nd.issue_date||'')+'\"/></div>'\n        +'<div class=\"fbtns\"><button class=\"save\" data-newsave>Criar conta</button><button class=\"cancel\" data-newcancel>Cancelar</button></div></div></div>';\n    }\n\n    return '<div class=\"wrap\"><div class=\"tick\"></div>'\n      +'<div class=\"head\"><div><h1>Contas</h1><div class=\"eyebrow\">Conta corrente com a fábrica · '+invs.length+' contas</div></div><button class=\"act\" data-newopen>+ Nova conta</button></div>'\n      +toast\n      +'<div class=\"cols\"><div class=\"list\"><div class=\"lh\">Contas · Fábrica</div><div class=\"lsearch\"><input class=\"lq\" data-lq placeholder=\"BUSCAR\" value=\"'+esc(d2.state.q||'')+'\"/></div><div class=\"rows\">'+listHtml+'</div></div>'\n      +'<div class=\"panel\">'+panel+'</div></div>'+drawer+'</div>';\n  },\n  mounted(d2){\n    (function(){ try{ var sp=new URLSearchParams(window.location.search); var hl=sp.get('highlight'); if(hl && !d2.state.sel){ d2.setState({sel:hl}); } }catch(e){} })();\n    function mid(v){ return v && typeof v==='object' ? v._id : v; }\n    var slug=d2.param('systemSlug','roue');\n    d2.on('[data-sel]','click',function(e,el){ d2.setState({sel:el.getAttribute('data-sel'), toast:null}); });\n    d2.on('[data-newopen]','click',function(){ d2.setState({newOpen:true, newData:{}}); });\n    d2.on('[data-newcancel]','click',function(){ d2.setState({newOpen:false, newData:{}}); });\n    d2.on('[data-scrim2]','click',function(e,el){ if(e.target===el) d2.setState({newOpen:false, newData:{}}); });\n    d2.on('[data-newff]','input',function(e,el){ var k=el.getAttribute('data-newff'); var nd=Object.assign({},d2.state.newData||{}); nd[k]=el.value; d2.state.newData=nd; });\n    d2.on('[data-newff]','change',function(e,el){ var k=el.getAttribute('data-newff'); var nd=Object.assign({},d2.state.newData||{}); nd[k]=el.value; d2.state.newData=nd; });\n    d2.on('[data-newsave]','click',function(){\n      var nd=d2.state.newData||{};\n      if(!nd.issuer||!nd.buyer||!nd.total_value){ d2.setState({toast:'Preencha emissor, comprador e valor.', toastErr:true}); return; }\n      d2.setState({toast:'Criando conta…', toastErr:false});\n      fetch('https://'+slug+'.data2apis.com/rush/create_invoice',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({issuer:nd.issuer, buyer:nd.buyer, total_value:Number(nd.total_value), issue_date:nd.issue_date||null})}).then(function(r){return r.json();}).then(function(res){\n        var dd=res&&res.data?res.data:res;\n        if(!dd||dd.ok===false){ d2.setState({toast:'Erro ao criar conta.', toastErr:true}); return; }\n        d2.data('invoices').refresh();\n        d2.setState({newOpen:false, newData:{}, toast:'✓ Conta '+(dd.identifier||'')+' criada.', toastErr:false});\n      }).catch(function(err){ d2.setState({toast:'Erro ao criar conta: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n    d2.on('[data-lq]','input',function(e,el){ d2.setState({q:el.value}); });\n    d2.on('[data-pay]','click',function(){ d2.setState({payOpen:true, payVal:''}); });\n    d2.on('[data-cancel]','click',function(){ d2.setState({payOpen:false}); });\n    d2.on('[data-scrim]','click',function(e,el){ if(e.target===el) d2.setState({payOpen:false}); });\n    d2.on('[data-payval]','input',function(e,el){ d2.state.payVal=el.value; });\n    d2.on('[data-paysave]','click',function(){\n      var sel=d2.state.sel; var val=Number(d2.state.payVal);\n      if(!sel){ return; } if(!val||val<=0){ d2.setState({toast:'Informe um valor válido.', toastErr:true}); return; }\n      var ds=d2.data('events');\n      d2.setState({toast:'Registrando…', toastErr:false});\n      Promise.resolve(ds.create({ invoice:sel, type:'PAYMENT', total_value:val, date:new Date().toISOString() })).then(function(){ return ds.save(); }).then(function(){ ds.refresh(); d2.setState({payOpen:false, payVal:'', toast:'✓ Pagamento registrado.', toastErr:false}); })\n        .catch(function(err){ d2.setState({toast:'Erro: '+(err&&err.message?err.message:err), toastErr:true}); });\n    });\n    d2.on('[data-close]','click',function(){\n      var sel=d2.state.sel; if(!sel) return;\n      Promise.resolve(d2.dialog.confirm('Fechar esta conta? Ela vira o documento oficial e não recebe mais lançamentos.')).then(function(ok){\n        if(!ok) return;\n        var ds=d2.data('events');\n        d2.setState({toast:'Fechando conta…', toastErr:false});\n        Promise.resolve(ds.create({ invoice:sel, type:'CLOSING', total_value:0, date:new Date().toISOString() })).then(function(){ return ds.save(); }).then(function(){ ds.refresh(); d2.setState({toast:'✓ Conta fechada — agora é oficial.', toastErr:false}); })\n          .catch(function(err){ d2.setState({toast:'Erro: '+(err&&err.message?err.message:err), toastErr:true}); });\n      });\n    });\n  }\n};","at":"2026-08-05T13:10:19.714Z"}}},{"_id":"6a2f6022ccdaee8ef6413790","component":"data2-core-types@Component","system":"6138ba0292425036c3b32255","params":{"extends":"data2-core-primitives@Block","component":"kCockpit","package":"roue","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"export default {\n  css: `\n    :host{display:block;height:100%;position:relative;}\n    .wrap{height:100%;box-sizing:border-box;background:#0d0d0d;color:#f4f1ea;font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;padding:40px 44px;overflow:auto;}\n    .tick{width:36px;height:3px;background:var(--red);margin-bottom:14px;}\n    h1{margin:0;font-size:46px;font-weight:800;letter-spacing:-2px;line-height:1;}\n    .eyebrow{margin-top:12px;font-size:11px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);}\n    .kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:rgba(244,241,234,0.1);border:1px solid rgba(244,241,234,0.1);margin:28px 0;}\n    .kpi{background:#0d0d0d;padding:22px 20px;position:relative;overflow:hidden;}\n    .kpi .glyph{position:absolute;right:12px;top:14px;width:26px;height:26px;opacity:.45;}\n    .kpi .l{font-size:9px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .kpi .v{font-size:42px;font-weight:800;letter-spacing:-2px;margin-top:10px;font-variant-numeric:tabular-nums;}\n    .kpi .s{font-size:11px;color:rgba(244,241,234,0.4);margin-top:4px;letter-spacing:.5px;}\n    .kpi.gold .v{color:var(--gold);} .kpi.red .v{color:#ff5b52;} .kpi.green .v{color:#4ade80;}\n    .panels{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-top:8px;}\n    .panel h3{margin:0 0 4px;font-size:11px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);display:flex;justify-content:space-between;}\n    .panel .bar{height:1px;background:rgba(244,241,234,0.12);margin:10px 0;}\n    .li{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid rgba(244,241,234,0.06);}\n    .li .nm{flex:1;font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}\n    .li .cd{font-family:ui-monospace,Menlo,monospace;font-size:10px;color:rgba(220,180,43,0.7);letter-spacing:1px;}\n    .li .amt{font-size:17px;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums;}\n    .tag{font-size:9px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;padding:3px 8px;}\n    .empty{padding:24px 0;color:rgba(244,241,234,0.3);font-size:12px;letter-spacing:1px;}\n    .action{margin-top:28px;}\n    .action>h3{font-size:11px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);margin:0 0 4px;}\n    .cols3{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:10px;}\n    .lnk{cursor:pointer;font-size:10px;letter-spacing:1px;text-transform:none;font-weight:700;color:rgba(220,180,43,0.85);}\n    .lnk:hover{text-decoration:underline;}\n    .li.clk{cursor:pointer;}\n    .li.clk:hover{background:rgba(244,241,234,0.03);}\n    .section-lbl{font-size:11px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);margin:34px 0 4px;}\n    .track-wrap{position:relative;padding:10px 6px 6px;}\n    .track-line{position:absolute;left:26px;top:14px;bottom:14px;width:2px;background:linear-gradient(180deg,rgba(244,241,234,.18),rgba(244,241,234,.03));}\n    .tnode{position:relative;display:flex;align-items:center;gap:14px;padding:11px 0;}\n    .tdot{width:14px;height:14px;border-radius:50%;flex:0 0 14px;border:2px solid #0d0d0d;box-shadow:0 0 0 2px currentColor;position:relative;z-index:1;}\n    .tdot.consume{color:#ff5b52;background:#ff5b52;} .tdot.produce{color:var(--gold);background:var(--gold);} .tdot.receive{color:#4ade80;background:#4ade80;}\n    .tinfo{flex:1;min-width:0;}\n    .tinfo .tt{font-size:9px;font-weight:800;letter-spacing:1.3px;text-transform:uppercase;}\n    .tinfo .tt.consume{color:#ff5b52;} .tinfo .tt.produce{color:var(--gold);} .tinfo .tt.receive{color:#4ade80;}\n    .tinfo .nm{font-size:14px;font-weight:600;margin-top:1px;}\n    .tamt{font-size:16px;font-weight:800;color:#f4f1ea;font-variant-numeric:tabular-nums;}\n    .health{display:flex;align-items:center;gap:22px;}\n    .donut{flex:0 0 auto;position:relative;width:112px;height:112px;}\n    .donut .ctr{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;}\n    .donut .ctr b{font-size:24px;font-weight:800;letter-spacing:-1px;}\n    .donut .ctr span{font-size:8px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(244,241,234,0.4);margin-top:2px;}\n    .legend{display:flex;flex-direction:column;gap:9px;}\n    .leg-row{display:flex;align-items:center;gap:9px;font-size:12.5px;}\n    .leg-dot{width:9px;height:9px;border-radius:2px;flex:0 0 9px;}\n    .leg-n{font-weight:800;font-variant-numeric:tabular-nums;margin-left:auto;padding-left:14px;}\n    .bars{display:flex;align-items:flex-end;gap:9px;height:110px;padding:0 2px;}\n    .bcol{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end;}\n    .bstack{width:100%;max-width:26px;display:flex;flex-direction:column-reverse;border-radius:2px 2px 0 0;overflow:hidden;min-height:2px;}\n    .bstack div{width:100%;}\n    .bday{font-size:8.5px;letter-spacing:.5px;color:rgba(244,241,234,0.4);text-transform:uppercase;}\n    .flow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;align-items:center;gap:0;margin-top:6px;}\n    .fnode{background:rgba(244,241,234,0.02);border:1px solid rgba(244,241,234,0.1);padding:16px 14px;text-align:center;position:relative;cursor:pointer;}\n    .fnode .fg{width:24px;height:24px;margin:0 auto 8px;display:block;}\n    .fnode .ft{font-size:9.5px;letter-spacing:1.5px;font-weight:800;text-transform:uppercase;color:rgba(244,241,234,0.5);}\n    .fnode .fv{font-size:24px;font-weight:800;margin-top:6px;font-variant-numeric:tabular-nums;}\n    .fnode .fs{font-size:10px;color:rgba(244,241,234,0.4);margin-top:2px;}\n    .farrow{display:flex;align-items:center;justify-content:center;color:rgba(244,241,234,0.25);padding:0 6px;}\n    .farrow svg{width:18px;height:18px;}\n    .fnode.stuck{border-color:rgba(255,91,82,.35);} .fnode.stuck .fv{color:#ff5b52;}\n    .fnode.flowing .fv{color:var(--gold);}\n    .seals{display:flex;gap:14px;overflow-x:auto;padding-bottom:4px;}\n    .seal-card{flex:0 0 112px;background:rgba(244,241,234,0.02);border:1px solid rgba(244,241,234,0.1);padding:12px 10px 10px;text-align:center;cursor:pointer;transition:border-color .15s;}\n    .seal-card:hover{border-color:rgba(220,180,43,.4);}\n    .seal-card svg{width:48px;height:48px;}\n    .seal-card .sid{font-size:9px;letter-spacing:1.4px;font-weight:800;color:rgba(220,180,43,.85);text-transform:uppercase;margin-top:6px;}\n    .seal-card .snm{font-size:10px;color:rgba(244,241,234,.5);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}\n    .seal-card .sbal{font-family:ui-monospace,Menlo,monospace;font-size:12.5px;font-weight:800;margin-top:6px;}\n    .seal-card .sbal.neg{color:#ff7a8a;} .seal-card .sbal.pos{color:var(--gold);}\n    .crates{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:6px;}\n    .crate{background:rgba(244,241,234,0.02);border:1px solid rgba(244,241,234,0.1);padding:14px;position:relative;overflow:hidden;cursor:pointer;}\n    .crate svg{width:30px;height:30px;}\n    .crate .cid{font-size:11px;font-weight:800;letter-spacing:.5px;margin-top:8px;}\n    .crate .cfrom{font-size:10px;color:rgba(244,241,234,.45);margin-top:2px;}\n    .crate .stamp{position:absolute;top:10px;right:10px;font-size:8px;font-weight:800;letter-spacing:1px;text-transform:uppercase;padding:3px 7px;border:1.5px solid var(--gold);color:var(--gold);transform:rotate(-8deg);opacity:.9;}\n    .crate.done .stamp{border-color:#4ade80;color:#4ade80;transform:rotate(-4deg);}\n    .crate.done svg{opacity:.55;}\n  `,\n  render(d2){\n    function mid(v){ return v && typeof v==='object'?v._id:v; }\n    function esc(s){ return String(s==null?'':s).replace(/[&<>\"]/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n    function gp(o,p){ if(p==null)return o; var a=String(p).split('.'),v=o; for(var i=0;i<a.length;i++){ if(v==null)return undefined; v=v[a[i]]; } return v; }\n    function recs(name){ var d=d2.data(name); if(!d) return []; try{ var pi=typeof d.pageInfo==='function'?d.pageInfo():null; if(pi && pi.pages>1 && typeof d.loadAll==='function') d.loadAll(); }catch(e){} return (typeof d.records==='function' && d.records()) || []; }\n    function mapBy(arr){ var m={}; arr.forEach(function(x){ m[mid(x._id)]=x; }); return m; }\n    var materials=recs('materials');\n    var stock=recs('stock');\n    var prod=recs('prod');\n    var buy=recs('buy');\n    var moves=recs('moves');\n    var companies=recs('companies');\n    var invoices=recs('invoices');\n    var events=recs('events');\n    var matMap={}; materials.forEach(function(m){ matMap[mid(m._id)]=m; });\n    var compMap=mapBy(companies);\n\n    var onHand={}; stock.forEach(function(s){ var k=mid(s.material); if(k) onHand[k]=(onHand[k]||0)+(Number(s.amount)||0); });\n    var units=0,zero=0,low=0,crit=[];\n    materials.forEach(function(m){ var oh=onHand[mid(m._id)]||0; units+=oh; var min=Number(m.min_stock_limit)||0; var st=oh<=0?'zero':(min>0&&oh<min?'low':'ok'); if(st!=='ok'){ zero+=(st==='zero'?1:0); low+=(st==='low'?1:0); crit.push({m:m,oh:oh,st:st}); } });\n    crit.sort(function(a,b){return a.oh-b.oh;});\n    var ok=Math.max(0,materials.length-zero-low);\n    function pOpen(o){ return String(o.status||'').toUpperCase()!=='COMPLETED'; }\n    function bOpen(o){ var s=String(o.status||'').toUpperCase(); return s!=='RECEIVED'; }\n    var openProdList=prod.filter(function(o){ return pOpen(o) && mid(o.watch_sku); });\n    var openBuyList=buy.filter(bOpen);\n    var prodOpen=prod.filter(pOpen).length, buyOpen=buy.filter(bOpen).length;\n\n    // invoice/conta helpers (mirrors kInvoice)\n    var byInv={}; events.forEach(function(e){ var iv=mid(e.invoice); if(!iv) return; (byInv[iv]=byInv[iv]||[]).push(e); });\n    function sign(t){ t=String(t||'').toUpperCase(); if(t==='PAYMENT') return 1; if(t==='CLOSING') return 0; return -1; }\n    function balOf(iv){ var es=byInv[iv]||[]; var b=0; es.forEach(function(e){ b+=sign(e.type)*(Number(e.total_value)||0); }); return b; }\n    function isClosed(iv){ return (byInv[iv]||[]).some(function(e){ return String(e.type||'').toUpperCase()==='CLOSING'; }); }\n    var contasAbertas=invoices.filter(function(v){ return !isClosed(mid(v._id)); }).length;\n    function seal(state,rx){\n      var mouth = state==='joy'?'M43,70 Q60,86 77,70' : state==='worried'?'M45,76 Q60,68 75,76' : 'M45,72 Q60,80 75,72';\n      var gid='g'+esc(rx||Math.round(Math.abs(60)));\n      return '<svg viewBox=\"0 0 120 120\"><defs><radialGradient id=\"brass'+gid+'\" cx=\"38%\" cy=\"32%\" r=\"75%\"><stop offset=\"0%\" stop-color=\"#ecd489\"/><stop offset=\"48%\" stop-color=\"#b0902f\"/><stop offset=\"100%\" stop-color=\"#6f571c\"/></radialGradient></defs>'\n        +'<circle cx=\"60\" cy=\"60\" r=\"57\" fill=\"url(#brass'+gid+')\" stroke=\"#5c4715\" stroke-width=\"1.5\"/>'\n        +'<circle cx=\"60\" cy=\"60\" r=\"50\" fill=\"none\" stroke=\"#f0da95\" stroke-width=\"1\" opacity=\".45\"/>'\n        +'<circle cx=\"46\" cy=\"56\" r=\"3.4\" fill=\"#4a3910\"/><circle cx=\"74\" cy=\"56\" r=\"3.4\" fill=\"#4a3910\"/>'\n        +'<path d=\"'+mouth+'\" fill=\"none\" stroke=\"#4a3910\" stroke-width=\"3.4\" stroke-linecap=\"round\"/></svg>';\n    }\n\n    function kpi(cls,label,val,sub,glyph){ return '<div class=\"kpi '+cls+'\">'+(glyph?'<svg class=\"glyph\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\">'+glyph+'</svg>':'')+'<div class=\"l\">'+esc(label)+'</div><div class=\"v\">'+esc(val)+'</div><div class=\"s\">'+esc(sub)+'</div></div>'; }\n    var G_STOCK='<circle cx=\"12\" cy=\"12\" r=\"9\"/><circle cx=\"12\" cy=\"12\" r=\"1.4\" fill=\"currentColor\"/><path d=\"M12 3v3M12 18v3M3 12h3M18 12h3\"/>';\n    var G_ZERO='<rect x=\"4\" y=\"7\" width=\"16\" height=\"13\" rx=\"1.5\"/><path d=\"M4 10h16M9 7V5.5A2 2 0 0 1 11 3.5h2A2 2 0 0 1 15 5.5V7\"/>';\n    var G_PROD='<circle cx=\"9\" cy=\"9\" r=\"3\"/><circle cx=\"17\" cy=\"16\" r=\"2.2\"/><path d=\"M9 12v2.5M17 13.8V12M6.5 10.8 5 12.5M11.5 10.8 13 12.5M15.3 17.6 14 19M18.7 17.6 20 19\"/>';\n    var G_BUY='<path d=\"M4 8h16l-1.5 10a1.5 1.5 0 0 1-1.5 1.3H7a1.5 1.5 0 0 1-1.5-1.3L4 8Z\"/><path d=\"M8 8V6a4 4 0 0 1 8 0v2\"/>';\n    var G_MOVE='<path d=\"M4 12h4l2-6 4 12 2-6h4\"/>';\n    var kpis='<div class=\"kpis\">'\n      +kpi('gold','Unidades em estoque',units,materials.length+' materiais cadastrados',G_STOCK)\n      +kpi(zero>0?'red':'green','Peças zeradas',zero,low+' abaixo do mínimo',G_ZERO)\n      +kpi(prodOpen>0?'gold':'green','Produção em aberto',prodOpen,prod.length+' no total',G_PROD)\n      +kpi(buyOpen>0?'gold':'green','Compras em aberto',buyOpen,buy.length+' no total',G_BUY)\n      +kpi('','Movimentações',moves.length,'lançamentos',G_MOVE)\n    +'</div>';\n\n    var critHtml=crit.length?crit.slice(0,7).map(function(r){ var c=r.st==='zero'?['#ff5b52','rgba(255,91,82,0.12)','ZERADO']:['#dcb42b','rgba(220,180,43,0.12)','BAIXO']; return '<div class=\"li\"><span class=\"nm\">'+esc(r.m.model||'—')+'</span><span class=\"cd\">'+esc(r.m.code||'')+'</span><span class=\"amt\" style=\"color:'+c[0]+'\">'+r.oh+'</span><span class=\"tag\" style=\"color:'+c[0]+';background:'+c[1]+'\">'+c[2]+'</span></div>'; }).join(''):'<div class=\"empty\">Tudo acima do mínimo.</div>';\n\n    // track: movimentações recentes as a mechanism trail\n    var feed=moves.slice().reverse().slice(0,6);\n    var TLABEL={CONSUME:'consumo',PRODUCE:'produção',RECEIVE:'recebimento'};\n    var trackHtml=feed.length?('<div class=\"track-wrap\"><div class=\"track-line\"></div>'+feed.map(function(mv){\n      var t=String(mv.type||'').toUpperCase(); var cls=t==='CONSUME'?'consume':(t==='PRODUCE'?'produce':(t==='RECEIVE'?'receive':''));\n      var nm=gp(mv,'material.model')||gp(mv,'material.code')||'—';\n      return '<div class=\"tnode\"><div class=\"tdot '+cls+'\"></div><div class=\"tinfo\"><div class=\"tt '+cls+'\">'+esc(TLABEL[t]||t||'—')+'</div><div class=\"nm\">'+esc(nm)+'</div></div><div class=\"tamt\">'+(Number(mv.amount)||0)+'</div></div>';\n    }).join('')+'</div>'):'<div class=\"empty\">Nenhuma movimentação ainda.</div>';\n\n    // donut: saúde do estoque\n    var donutTotal=materials.length||1;\n    var segData=[{v:ok,c:'#4ade80'},{v:low,c:'#dcb42b'},{v:zero,c:'#ff5b52'}];\n    var r=48,cx=56,cy=56,circ=2*Math.PI*r,doff=0;\n    var donutSvg=segData.map(function(sg){\n      var len=(sg.v/donutTotal)*circ;\n      var s='<circle cx=\"'+cx+'\" cy=\"'+cy+'\" r=\"'+r+'\" fill=\"none\" stroke=\"'+sg.c+'\" stroke-width=\"12\" stroke-dasharray=\"'+len+' '+(circ-len)+'\" stroke-dashoffset=\"'+(-doff)+'\" transform=\"rotate(-90 '+cx+' '+cy+')\"/>';\n      doff+=len; return s;\n    }).join('');\n    var donutHtml='<div class=\"donut\"><svg viewBox=\"0 0 112 112\" width=\"112\" height=\"112\">'+donutSvg+'</svg><div class=\"ctr\"><b>'+materials.length+'</b><span>skus</span></div></div>';\n\n    // 7-day trend bars from real moves (grouped by day/type)\n    var DOW=['dom','seg','ter','qua','qui','sex','sáb'];\n    var dayBuckets=[], dayKeys=[];\n    for(var di=6; di>=0; di--){ var dt=new Date(); dt.setDate(dt.getDate()-di); var key=dt.getFullYear()+'-'+dt.getMonth()+'-'+dt.getDate(); dayKeys.push(key); dayBuckets.push({label: di===0?'hoje':DOW[dt.getDay()], consume:0, produce:0, receive:0}); }\n    moves.forEach(function(mv){\n      var when=mv.createdAt||mv.availability_date; if(!when) return;\n      var dt=new Date(when); var key=dt.getFullYear()+'-'+dt.getMonth()+'-'+dt.getDate();\n      var idx=dayKeys.indexOf(key); if(idx<0) return;\n      var t=String(mv.type||'').toUpperCase();\n      if(t==='CONSUME') dayBuckets[idx].consume++; else if(t==='PRODUCE') dayBuckets[idx].produce++; else if(t==='RECEIVE') dayBuckets[idx].receive++;\n    });\n    var maxDay=Math.max.apply(null,dayBuckets.map(function(x){return x.consume+x.produce+x.receive;}))||1;\n    var barsHtml=dayBuckets.map(function(x){\n      var tot=x.consume+x.produce+x.receive; var h=Math.round((tot/maxDay)*100);\n      function seg(v,color){ var pct=tot?(v/tot*100):0; return pct?('<div style=\"height:'+pct+'%;background:'+color+'\"></div>'):''; }\n      return '<div class=\"bcol\"><div class=\"bstack\" style=\"height:'+h+'%\">'+seg(x.consume,'#ff5b52')+seg(x.produce,'#dcb42b')+seg(x.receive,'#4ade80')+'</div><div class=\"bday\">'+esc(x.label)+'</div></div>';\n    }).join('');\n\n    // fluxo operacional\n    var flow='<div class=\"flow\">'\n      +'<div class=\"fnode'+(buyOpen>0?' stuck':'')+'\" data-goto=\"/material-buy-order\"><svg class=\"fg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\">'+G_BUY+'</svg><div class=\"ft\">Compras</div><div class=\"fv\">'+buyOpen+'</div><div class=\"fs\">esperando fornecedor</div></div>'\n      +'<div class=\"farrow\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M4 12h14M13 6l6 6-6 6\"/></svg></div>'\n      +'<div class=\"fnode flowing\" data-goto=\"/stock\"><svg class=\"fg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\">'+G_STOCK+'</svg><div class=\"ft\">Estoque</div><div class=\"fv\">'+units+'</div><div class=\"fs\">unidades em mãos</div></div>'\n      +'<div class=\"farrow\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M4 12h14M13 6l6 6-6 6\"/></svg></div>'\n      +'<div class=\"fnode'+(prodOpen>0?' stuck':'')+'\" data-goto=\"/production-order\"><svg class=\"fg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\">'+G_PROD+'</svg><div class=\"ft\">Produção</div><div class=\"fv\">'+prodOpen+'</div><div class=\"fs\">esperando peça/fábrica</div></div>'\n      +'<div class=\"farrow\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"><path d=\"M4 12h14M13 6l6 6-6 6\"/></svg></div>'\n      +'<div class=\"fnode'+(contasAbertas>0?' stuck':'')+'\" data-goto=\"/invoices\"><svg class=\"fg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"2\"/><path d=\"M8 9h8M8 12h8M8 15h5\"/></svg><div class=\"ft\">Contas</div><div class=\"fv\">'+contasAbertas+'</div><div class=\"fs\">em aberto com a fábrica</div></div>'\n      +'</div>';\n\n    // contas: selos de latão\n    var sealsHtml=invoices.length?('<div class=\"seals\">'+invoices.slice(0,8).map(function(v){\n      var id=mid(v._id); var bal=balOf(id); var closed=isClosed(id);\n      var state=closed?'joy':(bal<0?'worried':'happy');\n      var issuer=(v.issuer&&typeof v.issuer==='object')?v.issuer.name:((compMap[mid(v.issuer)]||{}).name);\n      return '<div class=\"seal-card\" data-goto=\"/invoices\">'+seal(state,id.slice(-4))+'<div class=\"sid\">'+esc(v.identifier||id.slice(-5))+'</div><div class=\"snm\">'+esc(issuer||'—')+'</div><div class=\"sbal '+(bal<0?'neg':'pos')+'\">R$ '+Math.abs(bal).toLocaleString('pt-BR')+'</div></div>';\n    }).join('')+'</div>'):'<div class=\"empty\">Nenhuma conta ainda.</div>';\n\n    // remessas: crates recentes\n    function matName(id){ var m=matMap[mid(id)]; return m?(m.model||m.code):''; }\n    var recentBuys=buy.slice().reverse().slice(0,6);\n    var cratesHtml=recentBuys.length?('<div class=\"crates\">'+recentBuys.map(function(o){\n      var received=String(o.status||'').toUpperCase()==='RECEIVED';\n      var sup=(o.supplier&&typeof o.supplier==='object')?o.supplier.name:((compMap[mid(o.supplier)]||{}).name);\n      var sub=[sup, matName(o.material)].filter(Boolean).join(' · ');\n      return '<div class=\"crate'+(received?' done':'')+'\" data-goto=\"/material-buy-order\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"'+(received?'#4ade80':'var(--gold)')+'\" stroke-width=\"1.4\"><path d=\"M3 8.5 12 4l9 4.5-9 4.5-9-4.5Z\"/><path d=\"M3 8.5V16l9 4.5 9-4.5V8.5M12 13v7.5\"/>'+(received?'<path d=\"m8 11 2.3 2L15 9\" stroke-width=\"1.8\"/>':'')+'</svg><div class=\"stamp\">'+(received?'Recebida':'Aberta')+'</div><div class=\"cid\">'+esc(o.identifier||mid(o._id).slice(-6))+'</div><div class=\"cfrom\">'+esc(sub||'—')+'</div></div>';\n    }).join('')+'</div>'):'<div class=\"empty\">Nenhuma compra ainda.</div>';\n\n    var openProdListHtml=openProdList.slice(0,5).map(function(o){\n      var wn=(matMap[mid(o.watch_sku)]||{}).model||(matMap[mid(o.watch_sku)]||{}).code||'—';\n      return '<div class=\"li clk\" data-goto=\"/production-order\"><span class=\"nm\">'+esc(wn)+'</span><span class=\"cd\">'+esc(o.identifier||String(mid(o._id)).slice(-5))+'</span><span class=\"tag\" style=\"color:#dcb42b;background:rgba(220,180,43,0.12)\">'+esc(o.qty!=null?o.qty+' un':'')+'</span></div>';\n    }).join('')||'<div class=\"empty\">Nenhuma ordem aberta.</div>';\n    var openBuyListHtml=openBuyList.slice(0,5).map(function(o){\n      return '<div class=\"li clk\" data-goto=\"/material-buy-order\"><span class=\"nm\">'+esc(o.identifier||String(mid(o._id)).slice(-5))+'</span><span class=\"tag\" style=\"color:#dcb42b;background:rgba(220,180,43,0.12)\">ABERTA</span></div>';\n    }).join('')||'<div class=\"empty\">Nenhuma compra aberta.</div>';\n    var attnCritHtml=crit.slice(0,5).map(function(r){\n      var c=r.st==='zero'?['#ff5b52','rgba(255,91,82,0.12)','ZERADO']:['#dcb42b','rgba(220,180,43,0.12)','BAIXO'];\n      return '<div class=\"li clk\" data-goto=\"/stock\"><span class=\"nm\">'+esc(r.m.model||'—')+'</span><span class=\"cd\">'+esc(r.m.code||'')+'</span><span class=\"amt\" style=\"color:'+c[0]+'\">'+r.oh+'</span><span class=\"tag\" style=\"color:'+c[0]+';background:'+c[1]+'\">'+c[2]+'</span></div>';\n    }).join('')||'<div class=\"empty\">Tudo acima do mínimo.</div>';\n\n    var attention='<div class=\"action\"><h3>Precisa de você</h3><div class=\"cols3\">'\n      +'<div class=\"panel\"><h3><span>Produção aberta</span><span class=\"lnk\" data-goto=\"/production-order\">ver todas →</span></h3><div class=\"bar\"></div>'+openProdListHtml+'</div>'\n      +'<div class=\"panel\"><h3><span>Compras abertas</span><span class=\"lnk\" data-goto=\"/material-buy-order\">ver todas →</span></h3><div class=\"bar\"></div>'+openBuyListHtml+'</div>'\n      +'<div class=\"panel\"><h3><span>Estoque crítico</span><span class=\"lnk\" data-goto=\"/stock\">ver todas →</span></h3><div class=\"bar\"></div>'+attnCritHtml+'</div>'\n      +'</div></div>';\n\n    return '<div class=\"wrap\"><div class=\"tick\"></div><h1>Cockpit</h1><div class=\"eyebrow\">ROUE WATCH · OPERATIONS · LIVE</div>'\n      +kpis\n      +'<div class=\"panels\"><div class=\"panel\"><h3><span>Estoque crítico</span><span>'+(zero+low)+' itens</span></h3><div class=\"bar\"></div>'+critHtml+'</div>'\n      +'<div class=\"panel\"><h3><span>Trilha de movimentação</span><span class=\"lnk\" data-goto=\"/stock-movement\">ver todas →</span></h3><div class=\"bar\"></div>'+trackHtml+'</div></div>'\n      +'<div class=\"panels\"><div class=\"panel\"><h3><span>Saúde do estoque</span><span>'+materials.length+' SKUs</span></h3><div class=\"bar\"></div><div class=\"health\">'+donutHtml+'<div class=\"legend\"><div class=\"leg-row\"><span class=\"leg-dot\" style=\"background:#4ade80\"></span>OK<span class=\"leg-n\">'+ok+'</span></div><div class=\"leg-row\"><span class=\"leg-dot\" style=\"background:#dcb42b\"></span>Baixo<span class=\"leg-n\">'+low+'</span></div><div class=\"leg-row\"><span class=\"leg-dot\" style=\"background:#ff5b52\"></span>Zerado<span class=\"leg-n\">'+zero+'</span></div></div></div></div>'\n      +'<div class=\"panel\"><h3><span>Tendência · 7 dias</span><span>consumo/produção/recebimento</span></h3><div class=\"bar\"></div><div class=\"bars\">'+barsHtml+'</div></div></div>'\n      +'<div class=\"section-lbl\">Fluxo operacional</div>'+flow\n      +'<div class=\"section-lbl\">Contas · fábrica</div>'+sealsHtml\n      +'<div class=\"section-lbl\">Remessas recentes</div>'+cratesHtml\n      +attention+'</div>';\n  },\n  mounted(d2){\n    d2.on('[data-goto]','click',function(e,el){\n      var target=el.getAttribute('data-goto');\n      var r=d2.process('XGxUgyQ-5U2VmVp3rFvVvInterface');\n      var h=r&&r.get&&r.get('history');\n      if (h && typeof h.push==='function') h.push(target);\n    });\n  }\n};"}},"accent":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"accent"}}}},"buy":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"buy"}}}},"materials":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"materials"}}}},"moves":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"moves"}}}},"prod":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"prod"}}}},"stock":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"stock"}}}},"companies":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"companies"}}}},"invoices":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"invoices"}}}},"events":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"events"}}}}}}}},"__d2PrevCode":{"code":"export default {\n  css: `\n    :host{display:block;height:100%;position:relative;}\n    .wrap{height:100%;box-sizing:border-box;background:#0d0d0d;color:#f4f1ea;font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;padding:40px 44px;overflow:auto;}\n    .tick{width:36px;height:3px;background:var(--red);margin-bottom:14px;}\n    h1{margin:0;font-size:46px;font-weight:800;letter-spacing:-2px;line-height:1;}\n    .eyebrow{margin-top:12px;font-size:11px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);}\n    .kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:rgba(244,241,234,0.1);border:1px solid rgba(244,241,234,0.1);margin:28px 0;}\n    .kpi{background:#0d0d0d;padding:22px 20px;}\n    .kpi .l{font-size:9px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.45);}\n    .kpi .v{font-size:42px;font-weight:800;letter-spacing:-2px;margin-top:10px;font-variant-numeric:tabular-nums;}\n    .kpi .s{font-size:11px;color:rgba(244,241,234,0.4);margin-top:4px;letter-spacing:.5px;}\n    .kpi.gold .v{color:var(--gold);} .kpi.red .v{color:#ff5b52;} .kpi.green .v{color:#4ade80;}\n    .panels{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-top:8px;}\n    .panel h3{margin:0 0 4px;font-size:11px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);display:flex;justify-content:space-between;}\n    .panel .bar{height:1px;background:rgba(244,241,234,0.12);margin:10px 0;}\n    .li{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid rgba(244,241,234,0.06);}\n    .li .nm{flex:1;font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}\n    .li .cd{font-family:ui-monospace,Menlo,monospace;font-size:10px;color:rgba(220,180,43,0.7);letter-spacing:1px;}\n    .li .amt{font-size:17px;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums;}\n    .tag{font-size:9px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;padding:3px 8px;}\n    .empty{padding:24px 0;color:rgba(244,241,234,0.3);font-size:12px;letter-spacing:1px;}\n    .action{margin-top:28px;}\n    .action>h3{font-size:11px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(244,241,234,0.5);margin:0 0 4px;}\n    .cols3{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:10px;}\n    .lnk{cursor:pointer;font-size:10px;letter-spacing:1px;text-transform:none;font-weight:700;color:rgba(220,180,43,0.85);}\n    .lnk:hover{text-decoration:underline;}\n    .li.clk{cursor:pointer;}\n    .li.clk:hover{background:rgba(244,241,234,0.03);}\n  `,\n  render(d2){\n    function mid(v){ return v && typeof v==='object'?v._id:v; }\n    function esc(s){ return String(s==null?'':s).replace(/[&<>\"]/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n    function gp(o,p){ if(p==null)return o; var a=String(p).split('.'),v=o; for(var i=0;i<a.length;i++){ if(v==null)return undefined; v=v[a[i]]; } return v; }\n    function recs(name){ var d=d2.data(name); if(!d) return []; try{ var pi=typeof d.pageInfo==='function'?d.pageInfo():null; if(pi && pi.pages>1 && typeof d.loadAll==='function') d.loadAll(); }catch(e){} return (typeof d.records==='function' && d.records()) || []; }\n    var materials=recs('materials');\n    var stock=recs('stock');\n    var prod=recs('prod');\n    var buy=recs('buy');\n    var moves=recs('moves');\n    var matMap={}; materials.forEach(function(m){ matMap[mid(m._id)]=m; });\n\n    var onHand={}; stock.forEach(function(s){ var k=mid(s.material); if(k) onHand[k]=(onHand[k]||0)+(Number(s.amount)||0); });\n    var units=0,zero=0,low=0,crit=[];\n    materials.forEach(function(m){ var oh=onHand[mid(m._id)]||0; units+=oh; var min=Number(m.min_stock_limit)||0; var st=oh<=0?'zero':(min>0&&oh<min?'low':'ok'); if(st!=='ok'){ zero+=(st==='zero'?1:0); low+=(st==='low'?1:0); crit.push({m:m,oh:oh,st:st}); } });\n    crit.sort(function(a,b){return a.oh-b.oh;});\n    function pOpen(o){ return String(o.status||'').toUpperCase()!=='COMPLETED'; }\n    function bOpen(o){ var s=String(o.status||'').toUpperCase(); return s!=='RECEIVED'; }\n    var openProdList=prod.filter(function(o){ return pOpen(o) && mid(o.watch_sku); });\n    var openBuyList=buy.filter(bOpen);\n    var prodOpen=prod.filter(pOpen).length, buyOpen=buy.filter(bOpen).length;\n\n    function kpi(cls,label,val,sub){ return '<div class=\"kpi '+cls+'\"><div class=\"l\">'+esc(label)+'</div><div class=\"v\">'+esc(val)+'</div><div class=\"s\">'+esc(sub)+'</div></div>'; }\n    var kpis='<div class=\"kpis\">'\n      +kpi('gold','Unidades em estoque',units,materials.length+' materiais cadastrados')\n      +kpi(zero>0?'red':'green','Peças zeradas',zero,low+' abaixo do mínimo')\n      +kpi(prodOpen>0?'gold':'green','Produção em aberto',prodOpen,prod.length+' no total')\n      +kpi(buyOpen>0?'gold':'green','Compras em aberto',buyOpen,buy.length+' no total')\n      +kpi('','Movimentações',moves.length,'lançamentos')\n    +'</div>';\n\n    var critHtml=crit.length?crit.slice(0,7).map(function(r){ var c=r.st==='zero'?['#ff5b52','rgba(255,91,82,0.12)','ZEROED']:['#dcb42b','rgba(220,180,43,0.12)','LOW']; return '<div class=\"li\"><span class=\"nm\">'+esc(r.m.model||'—')+'</span><span class=\"cd\">'+esc(r.m.code||'')+'</span><span class=\"amt\" style=\"color:'+c[0]+'\">'+r.oh+'</span><span class=\"tag\" style=\"color:'+c[0]+';background:'+c[1]+'\">'+c[2]+'</span></div>'; }).join(''):'<div class=\"empty\">All above minimum.</div>';\n\n    var feed=moves.slice().reverse().slice(0,7);\n    var typeColor={CONSUME:['#ff5b52','rgba(255,91,82,0.12)'],PRODUCE:['#dcb42b','rgba(220,180,43,0.12)'],RECEIVE:['#4ade80','rgba(74,222,128,0.12)']};\n    var feedHtml=feed.length?feed.map(function(mv){ var t=String(mv.type||'').toUpperCase(); var c=typeColor[t]||['rgba(244,241,234,0.5)','rgba(244,241,234,0.06)']; var nm=gp(mv,'material.model')||gp(mv,'material.code')||'—'; return '<div class=\"li\"><span class=\"tag\" style=\"color:'+c[0]+';background:'+c[1]+'\">'+(t||'—')+'</span><span class=\"nm\">'+esc(nm)+'</span><span class=\"amt\">'+(Number(mv.amount)||0)+'</span></div>'; }).join(''):'<div class=\"empty\">No movements yet.</div>';\n\n    var attnProd=openProdList.slice(0,5).map(function(o){\n      var wn=(matMap[mid(o.watch_sku)]||{}).model||(matMap[mid(o.watch_sku)]||{}).code||'—';\n      return '<div class=\"li clk\" data-goto=\"/production-order\"><span class=\"nm\">'+esc(wn)+'</span><span class=\"cd\">'+esc(o.identifier||String(mid(o._id)).slice(-5))+'</span><span class=\"tag\" style=\"color:#dcb42b;background:rgba(220,180,43,0.12)\">'+esc(o.qty!=null?o.qty+' un':'')+'</span></div>';\n    }).join('')||'<div class=\"empty\">Nenhuma ordem aberta.</div>';\n    var attnBuy=openBuyList.slice(0,5).map(function(o){\n      return '<div class=\"li clk\" data-goto=\"/material-buy-order\"><span class=\"nm\">'+esc(o.identifier||String(mid(o._id)).slice(-5))+'</span><span class=\"tag\" style=\"color:#dcb42b;background:rgba(220,180,43,0.12)\">ABERTA</span></div>';\n    }).join('')||'<div class=\"empty\">Nenhuma compra aberta.</div>';\n    var attnCrit=crit.slice(0,5).map(function(r){\n      var c=r.st==='zero'?['#ff5b52','rgba(255,91,82,0.12)','ZEROED']:['#dcb42b','rgba(220,180,43,0.12)','LOW'];\n      return '<div class=\"li clk\" data-goto=\"/stock\"><span class=\"nm\">'+esc(r.m.model||'—')+'</span><span class=\"cd\">'+esc(r.m.code||'')+'</span><span class=\"amt\" style=\"color:'+c[0]+'\">'+r.oh+'</span><span class=\"tag\" style=\"color:'+c[0]+';background:'+c[1]+'\">'+c[2]+'</span></div>';\n    }).join('')||'<div class=\"empty\">Tudo acima do mínimo.</div>';\n\n    var attention='<div class=\"action\"><h3>Precisa de você</h3><div class=\"cols3\">'\n      +'<div class=\"panel\"><h3><span>Produção aberta</span><span class=\"lnk\" data-goto=\"/production-order\">ver todas →</span></h3><div class=\"bar\"></div>'+attnProd+'</div>'\n      +'<div class=\"panel\"><h3><span>Compras abertas</span><span class=\"lnk\" data-goto=\"/material-buy-order\">ver todas →</span></h3><div class=\"bar\"></div>'+attnBuy+'</div>'\n      +'<div class=\"panel\"><h3><span>Estoque crítico</span><span class=\"lnk\" data-goto=\"/stock\">ver todas →</span></h3><div class=\"bar\"></div>'+attnCrit+'</div>'\n      +'</div></div>';\n\n    return '<div class=\"wrap\"><div class=\"tick\"></div><h1>Cockpit</h1><div class=\"eyebrow\">ROUE WATCH · OPERATIONS · LIVE</div>'\n      +kpis\n      +'<div class=\"panels\"><div class=\"panel\"><h3><span>Estoque crítico</span><span>'+(zero+low)+' itens</span></h3><div class=\"bar\"></div>'+critHtml+'</div>'\n      +'<div class=\"panel\"><h3><span>Movimentações</span><span>recentes</span></h3><div class=\"bar\"></div>'+feedHtml+'</div></div>'\n      +attention+'</div>';\n  },\n  mounted(d2){\n    d2.on('[data-goto]','click',function(e,el){\n      var target=el.getAttribute('data-goto');\n      var r=d2.process('XGxUgyQ-5U2VmVp3rFvVvInterface');\n      var h=r&&r.get&&r.get('history');\n      if (h && typeof h.push==='function') h.push(target);\n    });\n  }\n};","at":"2026-08-05T15:36:12.131Z"}}},{"_id":"5ed9bed7b9e0891ce913e884","component":"data2-core-types@Component","params":{"package":"data2-core","component":"DataSource","renderable":{"dimensions":{"disabled":false,"component":"data2-core-types@Dimensions","params":{"width":1366,"exactWidth":false,"exactHeight":false,"height":768}}}}},{"_id":"5f472ae463c680de4ff296e9","component":"data2-core-types@Component","params":{"package":"data2-core","component":"Data2TableDataSource","extends":"data2-core@DataSource","renderable":{"dimensions":{"disabled":false,"component":"data2-core-types@Dimensions","params":{"width":1366,"exactWidth":false,"exactHeight":false,"height":768}}}}},{"_id":"5ecd05ded68ce41360f74b43","component":"data2-core-types@Component","params":{"extendable":{"placeholder":"children"},"component":"Block","package":"data2-core-primitives"}},{"_id":"5f494791a575399a45020f87","component":"data2-core-types@Component","params":{"definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"html@input","params":{"style":{"width":"100%","height":"100%","boxSizing":"border-box","background":{"component":"data2-core-flow@If","params":{"compare":[{"component":"data2-core-comparision-operators@Identical","params":{"subject":{"params":{"reference":"type","source":"VIRTUAL_COMPONENT_PARAMS"},"component":"data2-core-types@Reference"},"comparisonSubject":"checkbox"}}],"then":{"component":"data2-core-flow@If","params":{"compare":[{"component":"data2-core-comparision-operators@Identical","params":{"subject":{"component":"data2-core-types@DataLinkGetter","params":{"dataset":{"component":"data2-core-types@Reference","params":{"reference":"dataset","source":"VIRTUAL_COMPONENT_PARAMS"}},"field":{"component":"data2-core-types@Reference","params":{"reference":"field","source":"VIRTUAL_COMPONENT_PARAMS"}},"record":{"component":"data2-core-types@Reference","params":{"reference":"record","source":"VIRTUAL_COMPONENT_PARAMS"}}}},"comparisonSubject":true}}],"then":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"checkboxFill"}}}},"rgba(0,118,255,1)"]},"component":"data2-core-logical-operators@Or"},"else":{"params":{"content":"none"},"component":"data2-core-primitives@String"}}},"else":{"params":{"content":"none"},"component":"data2-core-primitives@String"}}},"color":{"params":{"reference":"super.textColor"},"component":"data2-core-types@Reference"},"border":"none","outline":"none","appearance":{"component":"data2-core-flow@If","params":{"compare":[{"component":"data2-core-comparision-operators@Identical","params":{"subject":{"params":{"reference":"orient","source":"VIRTUAL_COMPONENT_PARAMS"},"component":"data2-core-types@Reference"},"comparisonSubject":"vertical"}}],"then":"slider-vertical","else":"none"}},"cursor":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"super.cursor"}}}},{"component":"data2-core-flow@If","params":{"compare":[{"component":"data2-core-comparision-operators@Identical","params":{"subject":{"params":{"reference":"disabled","source":"VIRTUAL_COMPONENT_PARAMS"},"component":"data2-core-types@Reference"},"comparisonSubject":true}}],"then":{"component":"data2-core-primitives@String","params":{"content":"not-allowed"}},"else":{"component":"data2-core-primitives@String","params":{"content":"auto"}}}}]},"component":"data2-core-logical-operators@Or"},"fontWeight":{"component":"data2-core-primitives@String","params":{"content":"inherit"}},"paddingLeft":{"component":"data2-core-flow@If","params":{"compare":[{"params":{"comparisonSubject":{"params":{},"component":"data2-core-primitives@Undefined"},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"padding.left"}}}}},"component":"data2-core-comparison-operators@Different"}],"then":{"params":{"portions":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"padding.left"}}}},{"component":"data2-core-primitives@String","params":{"content":"px"}}]},"component":"data2-core-functions@StringConcat"}}},"paddingRight":{"component":"data2-core-flow@If","params":{"compare":[{"params":{"comparisonSubject":{"params":{},"component":"data2-core-primitives@Undefined"},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"padding.right"}}}}},"component":"data2-core-comparison-operators@Different"}],"then":{"params":{"portions":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"padding.right"}}}},{"component":"data2-core-primitives@String","params":{"content":"px"}}]},"component":"data2-core-functions@StringConcat"}}},"caretColor":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"caretColor"}}}},"textAlign":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"super.textFormat.textAlign"}}},"component":"data2-core-types@Reference"}},"tabIndex":{"component":"data2-core-types@Reference","params":{"reference":"tabIndex","source":"VIRTUAL_COMPONENT_PARAMS"}},"step":{"component":"data2-core-types@Reference","params":{"reference":"step","source":"VIRTUAL_COMPONENT_PARAMS"}},"min":{"component":"data2-core-types@Reference","params":{"reference":"min","source":"VIRTUAL_COMPONENT_PARAMS"}},"max":{"component":"data2-core-types@Reference","params":{"reference":"max","source":"VIRTUAL_COMPONENT_PARAMS"}},"maxLength":{"params":{"then":{"params":{},"component":"data2-core-primitives@Undefined"},"compare":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":"maxLength","source":"VIRTUAL_COMPONENT_PARAMS"}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":""}}},"component":"data2-core-comparison-operators@Equal"}],"else":{"component":"data2-core-types@Reference","params":{"reference":"maxLength","source":"VIRTUAL_COMPONENT_PARAMS"}}},"component":"data2-core-flow@If"},"orient":{"component":"data2-core-types@Reference","params":{"reference":"orient","source":"VIRTUAL_COMPONENT_PARAMS"}},"type":{"component":"data2-core-types@Reference","params":{"reference":"type","source":"VIRTUAL_COMPONENT_PARAMS"}},"placeholder":{"component":"data2-core-logical-operators@Or","params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":"placeholder","source":"VIRTUAL_COMPONENT_PARAMS"}},{"component":"data2-core-types@Reference","params":{"reference":"field","source":"VIRTUAL_COMPONENT_PARAMS"}}]}},"value":{"params":{"expression":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"defaultCase":{"component":"data2-core-types@DataLinkGetter","params":{"dataset":{"component":"data2-core-types@Reference","params":{"reference":"dataset","source":"VIRTUAL_COMPONENT_PARAMS"}},"field":{"component":"data2-core-types@Reference","params":{"reference":"field","source":"VIRTUAL_COMPONENT_PARAMS"}},"record":{"component":"data2-core-types@Reference","params":{"reference":"record","source":"VIRTUAL_COMPONENT_PARAMS"}},"mask":{"component":"data2-core-types@Reference","params":{"reference":"mask","source":"VIRTUAL_COMPONENT_PARAMS"}}}},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-comparision-operators@Identical","params":{"subject":{"params":{"reference":"type","source":"VIRTUAL_COMPONENT_PARAMS"},"component":"data2-core-types@Reference"},"comparisonSubject":"date"}},"value":{"component":"data2-core-functions@DateFormat","params":{"date":{"component":"data2-core-types@DataLinkGetter","params":{"dataset":{"component":"data2-core-types@Reference","params":{"reference":"dataset","source":"VIRTUAL_COMPONENT_PARAMS"}},"field":{"component":"data2-core-types@Reference","params":{"reference":"field","source":"VIRTUAL_COMPONENT_PARAMS"}},"record":{"component":"data2-core-types@Reference","params":{"reference":"record","source":"VIRTUAL_COMPONENT_PARAMS"}}}},"format":"YYYY-MM-DD"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-comparision-operators@Identical","params":{"subject":{"params":{"reference":"type","source":"VIRTUAL_COMPONENT_PARAMS"},"component":"data2-core-types@Reference"},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"month"}}}},"value":{"component":"data2-core-functions@DateFormat","params":{"date":{"component":"data2-core-types@DataLinkGetter","params":{"dataset":{"component":"data2-core-types@Reference","params":{"reference":"dataset","source":"VIRTUAL_COMPONENT_PARAMS"}},"field":{"component":"data2-core-types@Reference","params":{"reference":"field","source":"VIRTUAL_COMPONENT_PARAMS"}},"record":{"component":"data2-core-types@Reference","params":{"reference":"record","source":"VIRTUAL_COMPONENT_PARAMS"}}}},"format":{"component":"data2-core-primitives@String","params":{"content":"YYYY-MM"}}}}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-comparision-operators@Identical","params":{"subject":{"params":{"reference":"type","source":"VIRTUAL_COMPONENT_PARAMS"},"component":"data2-core-types@Reference"},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"datetime-local"}}}},"value":{"component":"data2-core-functions@DateFormat","params":{"date":{"component":"data2-core-types@DataLinkGetter","params":{"dataset":{"component":"data2-core-types@Reference","params":{"reference":"dataset","source":"VIRTUAL_COMPONENT_PARAMS"}},"field":{"component":"data2-core-types@Reference","params":{"reference":"field","source":"VIRTUAL_COMPONENT_PARAMS"}},"record":{"component":"data2-core-types@Reference","params":{"reference":"record","source":"VIRTUAL_COMPONENT_PARAMS"}}}},"format":{"component":"data2-core-primitives@String","params":{"content":"YYYY-MM-DDTHH:mm"}}}}}}]},"component":"data2-core-flow@Switch"},"onChange":{"component":"data2-core-types@DataLinkSetter","params":{"dataset":{"component":"data2-core-types@Reference","params":{"reference":"dataset","source":"VIRTUAL_COMPONENT_PARAMS"}},"field":{"component":"data2-core-types@Reference","params":{"reference":"field","source":"VIRTUAL_COMPONENT_PARAMS"}},"record":{"component":"data2-core-types@Reference","params":{"reference":"record","source":"VIRTUAL_COMPONENT_PARAMS"}},"recordUpsert":{"component":"data2-core-types@Reference","params":{"reference":"recordUpsert","source":"VIRTUAL_COMPONENT_PARAMS"}},"onChange":{"component":"data2-core-types@Reference","params":{"reference":"onChange","source":"VIRTUAL_COMPONENT_PARAMS"}},"mask":{"component":"data2-core-types@Reference","params":{"reference":"mask","source":"VIRTUAL_COMPONENT_PARAMS"}}}},"defaultChecked":{"component":"data2-core-flow@If","params":{"compare":[{"component":"data2-core-comparision-operators@Identical","params":{"subject":{"params":{"reference":"type","source":"VIRTUAL_COMPONENT_PARAMS"},"component":"data2-core-types@Reference"},"comparisonSubject":"checkbox"}}],"then":{"component":"data2-core-types@DataLinkGetter","params":{"dataset":{"component":"data2-core-types@Reference","params":{"reference":"dataset","source":"VIRTUAL_COMPONENT_PARAMS"}},"field":{"component":"data2-core-types@Reference","params":{"reference":"field","source":"VIRTUAL_COMPONENT_PARAMS"}},"record":{"component":"data2-core-types@Reference","params":{"reference":"record","source":"VIRTUAL_COMPONENT_PARAMS"}}}},"else":""}},"field":{"component":"data2-core-types@Reference","params":{"reference":"field"}},"opacity":{"component":"data2-core-flow@If","params":{"compare":[{"params":{"reference":"disabled","source":"VIRTUAL_COMPONENT_PARAMS"},"component":"data2-core-types@Reference"}],"then":0.38,"else":1}},"disabled":{"params":{"reference":"disabled","source":"VIRTUAL_COMPONENT_PARAMS"},"component":"data2-core-types@Reference"},"autoComplete":{"component":"data2-core-flow@If","params":{"compare":[{"component":"data2-core-comparision-operators@Equal","params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":"builder"}},"comparisonSubject":true}}],"then":"new-password","else":{"params":{"compare":{"params":{"comparisonSubject":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"subject":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"autoComplete"}}},"component":"data2-core-types@Reference"}},"component":"data2-core-comparison-operators@Identical"},"else":{"params":{"components":[{"params":{"reference":"autoComplete","source":"VIRTUAL_COMPONENT_PARAMS"},"component":"data2-core-types@Reference"},{"component":"data2-core-primitives@String","params":{"content":"off"}}]},"component":"data2-core-logical-operators@Or"}},"component":"data2-core-flow@If"}}},"data-lpignore":{"component":"data2-core-flow@If","params":{"compare":[{"params":{"reference":"autoComplete","source":"VIRTUAL_COMPONENT_PARAMS"},"component":"data2-core-types@Reference"}],"then":"","else":"true"}},"onFocus":{"component":"data2-core-types@Reference","params":{"reference":"onFocus","source":"VIRTUAL_COMPONENT_PARAMS"}},"onBlur":{"component":"data2-core-types@Reference","params":{"reference":"onBlur","source":"VIRTUAL_COMPONENT_PARAMS"}},"onKeyPress":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"onKeyPress"}}}},"autoCapitalize":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"autoCapitalize"}}}},"spellCheck":{"params":{"expression":{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"spellCheck"}}},"component":"data2-core-types@Reference"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"value":{"component":"data2-core-primitives@String","params":{"content":"true"}}}},{"component":"data2-core-flow@Case","params":{"expression":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"value":{"component":"data2-core-primitives@String","params":{"content":"false"}}}}]},"component":"data2-core-flow@Switch"}}}}},"component":"DataFieldBlock","package":"data2-blocks","extends":"data2-core-primitives@Block"}},{"_id":"6a720043e3e23473fe6da603","component":"data2-core-types@Component","system":"6138ba0292425036c3b32255","params":{"extends":"data2-core-primitives@Block","component":"kCmdK","package":"roue","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"export default {\n  css: `\n    :host{display:block;width:100%;height:100%;}\n    .rkcmdk-trigger{display:flex;align-items:center;gap:8px;width:100%;height:100%;box-sizing:border-box;padding:0 10px;background:rgba(244,241,234,0.03);border:1px solid rgba(244,241,234,0.12);cursor:pointer;color:rgba(244,241,234,0.55);font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;}\n    .rkcmdk-trigger:hover{background:rgba(244,241,234,0.07);border-color:rgba(220,180,43,0.45);color:#f4f1ea;}\n    .rkcmdk-trigger svg{flex:0 0 auto;opacity:.75;}\n    .rkcmdk-trigger .tlabel{flex:1;font-size:11px;letter-spacing:1.4px;text-transform:uppercase;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}\n    .rkcmdk-trigger .tkbd{flex:0 0 auto;font-size:9px;letter-spacing:.5px;color:rgba(244,241,234,0.4);border:1px solid rgba(244,241,234,0.18);padding:2px 5px;}\n  `,\n  render(d2) {\n    return '<div class=\"rkcmdk-trigger\" data-trigger>' +\n      '<svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"11\" cy=\"11\" r=\"7\"/><path d=\"m21 21-4.3-4.3\"/></svg>' +\n      '<span class=\"tlabel\">Buscar</span>' +\n      '<span class=\"tkbd\">⌘K</span>' +\n      '</div>';\n  },\n  mounted(d2) {\n    var ROUTER_IFACE = 'XGxUgyQ-5U2VmVp3rFvVvInterface';\n    var STYLE_ID = 'rkCmdkStyle';\n    var open = false;\n    var query = '';\n    var selIdx = 0;\n    var flat = [];\n    var lastFocused = null;\n    var ready = false;\n    var mat = [], co = [], prod = [], buy = [], inv = [], users = [];\n    var matById = {}, coById = {};\n    var backdropEl = null, inputEl = null, bodyEl = null;\n\n    function esc(s) { s = (s == null ? '' : String(s)); return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;'); }\n    function mid(v) { return v && typeof v === 'object' ? v._id : v; }\n    function low(s) { return String(s == null ? '' : s).toLowerCase(); }\n\n    function ensureStyle() {\n      if (document.getElementById(STYLE_ID)) return;\n      var st = document.createElement('style');\n      st.id = STYLE_ID;\n      st.textContent = `\n        .rkcmdk-backdrop{position:fixed;inset:0;z-index:9990;background:rgba(10,10,10,0.72);display:none;align-items:flex-start;justify-content:center;padding-top:11vh;font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;}\n        .rkcmdk-panel{width:640px;max-width:92vw;max-height:70vh;background:#131313;border:1px solid rgba(244,241,234,0.14);box-shadow:0 24px 60px rgba(0,0,0,0.55);display:flex;flex-direction:column;overflow:hidden;}\n        .rkcmdk-searchrow{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid rgba(244,241,234,0.1);flex:0 0 auto;}\n        .rkcmdk-tick{width:22px;height:3px;background:#c8102e;flex:0 0 auto;}\n        .rkcmdk-searchrow input{flex:1;background:transparent;border:0;outline:none;color:#f4f1ea;font-size:16px;letter-spacing:.2px;min-width:0;}\n        .rkcmdk-searchrow input::placeholder{color:rgba(244,241,234,0.35);text-transform:uppercase;font-size:11px;letter-spacing:1.5px;}\n        .rkcmdk-kbd{font-size:10px;color:rgba(244,241,234,0.4);border:1px solid rgba(244,241,234,0.18);padding:2px 6px;letter-spacing:.5px;flex:0 0 auto;}\n        .rkcmdk-body{overflow-y:auto;flex:1;padding:8px 0;}\n        .rkcmdk-sec-label{font-size:9px;letter-spacing:2.5px;font-weight:700;text-transform:uppercase;color:rgba(220,180,43,0.8);padding:14px 18px 6px;}\n        .rkcmdk-item{display:flex;align-items:center;gap:10px;padding:10px 18px;cursor:pointer;}\n        .rkcmdk-item:hover,.rkcmdk-item.sel{background:rgba(244,241,234,0.06);}\n        .rkcmdk-item.sel{box-shadow:inset 3px 0 0 #dcb42b;}\n        .rkcmdk-item .col{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}\n        .rkcmdk-item .t1{font-size:14px;font-weight:700;color:#f4f1ea;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n        .rkcmdk-item .t2{font-size:11px;color:rgba(244,241,234,0.5);letter-spacing:.3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}\n        .rkcmdk-pill{flex:0 0 auto;font-size:9px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;padding:3px 8px;}\n        .rkcmdk-empty{padding:50px 20px;text-align:center;color:rgba(244,241,234,0.4);font-size:13px;}\n        .rkcmdk-hint{padding:40px 20px;text-align:center;color:rgba(244,241,234,0.32);font-size:11px;letter-spacing:1px;text-transform:uppercase;}\n        .rkcmdk-foot{display:flex;gap:16px;padding:10px 18px;border-top:1px solid rgba(244,241,234,0.08);font-size:10px;letter-spacing:.6px;color:rgba(244,241,234,0.35);text-transform:uppercase;flex:0 0 auto;}\n        .rkcmdk-foot b{color:rgba(244,241,234,0.6);}\n      `;\n      document.head.appendChild(st);\n    }\n\n    function statusPill(v) {\n      var m = { OPEN: ['#dcb42b', 'rgba(220,180,43,0.12)'], COMPLETED: ['#3ed47e', 'rgba(62,212,126,0.12)'], RECEIVED: ['#5aa9ff', 'rgba(90,169,255,0.14)'], CANCELLED: ['#ff5b52', 'rgba(255,91,82,0.12)'] };\n      var c = m[String(v || '').toUpperCase()] || ['#f4f1ea', 'rgba(244,241,234,0.1)'];\n      return '<span class=\"rkcmdk-pill\" style=\"color:' + c[0] + ';background:' + c[1] + '\">' + esc(v || '—') + '</span>';\n    }\n    function relationPill(v) {\n      var m = { SELF: ['#dcb42b', 'rgba(220,180,43,0.12)', 'Nós'], SUPPLIER: ['#5aa9ff', 'rgba(90,169,255,0.14)', 'Fornecedor'], RETAIL: ['#3ed47e', 'rgba(62,212,126,0.12)', 'Loja'], RESELLER: ['#c78bff', 'rgba(199,139,255,0.14)', 'Revenda'] };\n      var c = m[String(v || '').toUpperCase()] || ['#f4f1ea', 'rgba(244,241,234,0.1)', String(v || '—')];\n      return '<span class=\"rkcmdk-pill\" style=\"color:' + c[0] + ';background:' + c[1] + '\">' + esc(c[2]) + '</span>';\n    }\n    function rolePill(v) {\n      var m = { ADMIN: ['#c8102e', 'rgba(200,16,46,0.12)', 'Admin'], FACTORY: ['#5aa9ff', 'rgba(90,169,255,0.14)', 'Fábrica'], PURCHASING: ['#dcb42b', 'rgba(220,180,43,0.12)', 'Compras'], FINANCE: ['#c78bff', 'rgba(199,139,255,0.14)', 'Financeiro'], VIEWER: ['#f4f1ea', 'rgba(244,241,234,0.12)', 'Visualizador'] };\n      var c = m[String(v || '').toUpperCase()] || ['#f4f1ea', 'rgba(244,241,234,0.1)', String(v || '—')];\n      return '<span class=\"rkcmdk-pill\" style=\"color:' + c[0] + ';background:' + c[1] + '\">' + esc(c[2]) + '</span>';\n    }\n\n    function isAdmin() {\n      try {\n        var a = d2.auth('auth');\n        var role = (a && a.session && a.session.role) || (a && a.user && a.user.role) || '';\n        return String(role).toUpperCase() === 'ADMIN';\n      } catch (e) { return false; }\n    }\n\n    function loadAll() {\n      var mm = { rows: [] }, cc = { rows: [] }, pp = { rows: [] }, bb = { rows: [] }, ii = { rows: [] }, uu = { rows: [] };\n      function job(name, target) {\n        return d2.data(name).loadAll().then(function (rows) { target.rows = rows || []; }).catch(function () { target.rows = []; });\n      }\n      return Promise.all([\n        job('materials', mm), job('companies', cc), job('prod', pp),\n        job('buy', bb), job('invoices', ii), job('users', uu)\n      ]).then(function () {\n        mat = mm.rows; co = cc.rows; prod = pp.rows; buy = bb.rows; inv = ii.rows; users = uu.rows;\n        matById = {}; mat.forEach(function (m) { matById[String(m._id)] = m; });\n        coById = {}; co.forEach(function (c) { coById[String(c._id)] = c; });\n        ready = true;\n        if (open) renderPalette();\n      });\n    }\n\n    function buildGroups(q) {\n      var groups = [];\n      var lq = low(q);\n      function pushGroup(key, label, items) {\n        if (!items.length) return;\n        groups.push({ key: key, label: label, items: items.slice(0, 6) });\n      }\n      if (!lq) return groups;\n\n      var mres = mat.filter(function (r) { return low(r.code).indexOf(lq) >= 0 || low(r.model).indexOf(lq) >= 0; });\n      pushGroup('materials', 'MATERIAIS', mres.map(function (r) {\n        return { title: r.code || '—', sub: r.model || '', pillHtml: '', path: '/materials', params: { q: r.code } };\n      }));\n\n      var cres = co.filter(function (r) { return low(r.name).indexOf(lq) >= 0; });\n      pushGroup('companies', 'EMPRESAS', cres.map(function (r) {\n        return { title: r.name || '—', sub: '', pillHtml: relationPill(r.relation), path: '/companies', params: { q: r.name } };\n      }));\n\n      var pres = prod.filter(function (r) {\n        var m = matById[String(mid(r.watch_sku))];\n        var skuTxt = m ? (m.code + ' ' + m.model) : '';\n        return low(r.identifier).indexOf(lq) >= 0 || low(skuTxt).indexOf(lq) >= 0;\n      });\n      pushGroup('prod', 'ORDENS DE PRODUÇÃO', pres.map(function (r) {\n        var m = matById[String(mid(r.watch_sku))];\n        return { title: r.identifier || ('#' + String(r._id).slice(-6)), sub: m ? (m.code + ' · ' + m.model) : '', pillHtml: statusPill(r.status), path: '/production-order', params: { highlight: String(r._id) } };\n      }));\n\n      var bres = buy.filter(function (r) {\n        var s = coById[String(mid(r.supplier))];\n        var supName = s ? s.name : '';\n        return low(r.identifier).indexOf(lq) >= 0 || low(supName).indexOf(lq) >= 0;\n      });\n      pushGroup('buy', 'COMPRAS DE MATERIAL', bres.map(function (r) {\n        var s = coById[String(mid(r.supplier))];\n        return { title: r.identifier || ('#' + String(r._id).slice(-6)), sub: s ? s.name : '', pillHtml: statusPill(r.status), path: '/material-buy-order', params: { highlight: String(r._id) } };\n      }));\n\n      var ires = inv.filter(function (r) { return low(r.identifier).indexOf(lq) >= 0; });\n      pushGroup('invoices', 'NOTAS FISCAIS', ires.map(function (r) {\n        var buyerName = r.buyer && r.buyer.name ? r.buyer.name : '';\n        return { title: r.identifier || ('#' + String(r._id).slice(-6)), sub: buyerName, pillHtml: '', path: '/invoices', params: { highlight: String(r._id) } };\n      }));\n\n      if (isAdmin()) {\n        var ures = users.filter(function (r) { return low(r.name).indexOf(lq) >= 0 || low(r.email).indexOf(lq) >= 0; });\n        pushGroup('users', 'USUÁRIOS', ures.map(function (r) {\n          return { title: r.name || '—', sub: r.email || '', pillHtml: rolePill(r.role), path: '/users', params: { q: r.name } };\n        }));\n      }\n      return groups;\n    }\n\n    function renderPalette() {\n      if (!bodyEl) return;\n      var q = query;\n      if (!q) {\n        bodyEl.innerHTML = '<div class=\"rkcmdk-hint\">Digite para buscar em toda a Roue ERP</div>';\n        flat = [];\n        return;\n      }\n      if (!ready) {\n        bodyEl.innerHTML = '<div class=\"rkcmdk-hint\">Carregando…</div>';\n        flat = [];\n        return;\n      }\n      var groups = buildGroups(q);\n      flat = [];\n      groups.forEach(function (g) { g.items.forEach(function (it) { flat.push(it); }); });\n      if (!flat.length) {\n        bodyEl.innerHTML = '<div class=\"rkcmdk-empty\">Nada encontrado para “' + esc(q) + '”.</div>';\n        return;\n      }\n      if (selIdx >= flat.length) selIdx = flat.length - 1;\n      if (selIdx < 0) selIdx = 0;\n      var idx = 0;\n      var html = '';\n      groups.forEach(function (g) {\n        if (!g.items.length) return;\n        html += '<div class=\"rkcmdk-sec-label\">' + esc(g.label) + '</div>';\n        g.items.forEach(function (it) {\n          var i = idx++;\n          html += '<div class=\"rkcmdk-item' + (i === selIdx ? ' sel' : '') + '\" data-idx=\"' + i + '\">' +\n            '<div class=\"col\"><div class=\"t1\">' + esc(it.title) + '</div>' + (it.sub ? ('<div class=\"t2\">' + esc(it.sub) + '</div>') : '') + '</div>' +\n            (it.pillHtml || '') +\n            '</div>';\n        });\n      });\n      bodyEl.innerHTML = html;\n    }\n\n    function moveSel(delta) {\n      if (!flat.length) return;\n      selIdx = (selIdx + delta + flat.length) % flat.length;\n      renderPalette();\n      var el = bodyEl.querySelector('[data-idx=\"' + selIdx + '\"]');\n      if (el && el.scrollIntoView) el.scrollIntoView({ block: 'nearest' });\n    }\n    function activateSel() {\n      var it = flat[selIdx];\n      if (!it) return;\n      goTo(it.path, it.params);\n    }\n    function goTo(path, params) {\n      var qs = '';\n      if (params) {\n        var parts = [];\n        for (var k in params) { if (params[k]) parts.push(encodeURIComponent(k) + '=' + encodeURIComponent(params[k])); }\n        if (parts.length) qs = '?' + parts.join('&');\n      }\n      var full = path + qs;\n      try {\n        var r = d2.process(ROUTER_IFACE);\n        var h = r && r.get && r.get('history');\n        if (h && typeof h.push === 'function') { h.push(full); }\n      } catch (e) { /* no-op */ }\n      closePalette();\n    }\n\n    function ensurePortal() {\n      if (backdropEl) return;\n      ensureStyle();\n      backdropEl = document.createElement('div');\n      backdropEl.className = 'rkcmdk-backdrop';\n      backdropEl.innerHTML =\n        '<div class=\"rkcmdk-panel\" data-panel>' +\n        '<div class=\"rkcmdk-searchrow\">' +\n        '<div class=\"rkcmdk-tick\"></div>' +\n        '<input type=\"text\" placeholder=\"BUSCAR MATERIAIS, EMPRESAS, ORDENS...\" data-input autocomplete=\"off\" spellcheck=\"false\"/>' +\n        '<span class=\"rkcmdk-kbd\">ESC</span>' +\n        '</div>' +\n        '<div class=\"rkcmdk-body\" data-body></div>' +\n        '<div class=\"rkcmdk-foot\"><span><b>&uarr;&darr;</b> navegar</span><span><b>&crarr;</b> abrir</span><span><b>esc</b> fechar</span></div>' +\n        '</div>';\n      document.body.appendChild(backdropEl);\n      inputEl = backdropEl.querySelector('[data-input]');\n      bodyEl = backdropEl.querySelector('[data-body]');\n      backdropEl.addEventListener('click', function (e) { if (e.target === backdropEl) closePalette(); });\n      inputEl.addEventListener('input', function () { query = inputEl.value; selIdx = 0; renderPalette(); });\n      bodyEl.addEventListener('click', function (e) {\n        var itemEl = e.target.closest ? e.target.closest('.rkcmdk-item') : null;\n        if (!itemEl) return;\n        var idx = parseInt(itemEl.getAttribute('data-idx'), 10);\n        if (!isNaN(idx)) { selIdx = idx; activateSel(); }\n      });\n      d2.onUnmount(function () {\n        if (backdropEl && backdropEl.parentNode) backdropEl.parentNode.removeChild(backdropEl);\n        document.body.style.overflow = '';\n      });\n    }\n\n    function openPalette() {\n      if (open) return;\n      open = true;\n      lastFocused = document.activeElement;\n      query = ''; selIdx = 0;\n      ensurePortal();\n      if (inputEl) inputEl.value = '';\n      backdropEl.style.display = 'flex';\n      document.body.style.overflow = 'hidden';\n      if (!ready) { loadAll(); }\n      renderPalette();\n      setTimeout(function () { if (inputEl) inputEl.focus(); }, 0);\n    }\n    function closePalette() {\n      if (!open) return;\n      open = false;\n      if (backdropEl) backdropEl.style.display = 'none';\n      document.body.style.overflow = '';\n      if (lastFocused && typeof lastFocused.focus === 'function') { try { lastFocused.focus(); } catch (e) { } }\n    }\n\n    d2.on('[data-trigger]', 'click', function () { openPalette(); });\n\n    d2.on(document, 'keydown', function (e) {\n      var metaK = (e.metaKey || e.ctrlKey) && (e.key === 'k' || e.key === 'K');\n      if (metaK) {\n        e.preventDefault();\n        if (open) { closePalette(); } else { openPalette(); }\n        return;\n      }\n      if (!open) return;\n      if (e.key === 'Escape') { e.preventDefault(); closePalette(); return; }\n      if (e.key === 'ArrowDown') { e.preventDefault(); moveSel(1); return; }\n      if (e.key === 'ArrowUp') { e.preventDefault(); moveSel(-1); return; }\n      if (e.key === 'Enter') { e.preventDefault(); activateSel(); return; }\n    });\n  }\n};\n"}},"materials":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"materials"}}}},"companies":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"companies"}}}},"prod":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"prod"}}}},"buy":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"buy"}}}},"invoices":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"invoices"}}}},"users":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"users"}}}},"auth":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"auth"}}}}}}}}}},{"_id":"6a730dda35773a2f8c0cba7e","component":"data2-core-types@Component","system":"6138ba0292425036c3b32255","params":{"extends":"data2-core-primitives@Block","component":"a_yRRis7V2sKhQA7peA8q","package":"roue","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"export default {\n  css: `\n    :host{display:block; width:100%; height:100%; overflow-y:auto; overflow-x:hidden; font-family:ui-sans-serif,-apple-system,\"Segoe UI\",Roboto,sans-serif; scrollbar-width:thin;}\n    :host::-webkit-scrollbar{width:4px;}\n    :host::-webkit-scrollbar-thumb{background:rgba(244,241,234,0.15);}\n    .grp{margin-top:6px;}\n    .grp:first-child{margin-top:0;}\n    .lbl{font-size:9px; letter-spacing:.12em; font-weight:700; text-transform:uppercase; color:rgba(244,241,234,0.4); padding:0 8px; margin-bottom:1px;}\n    .item{display:block; padding:1px 8px; font-size:12.5px; color:rgba(244,241,234,1); cursor:pointer; border-left:4px solid transparent; line-height:1.4; white-space:nowrap;}\n    .item:hover{color:#f4f1ea; background:rgba(244,241,234,0.04);}\n    .item.on{color:#dcb42b; text-decoration:underline; border-left-color:#dcb42b;}\n  `,\n  render(d2){\n    function esc(s){ return String(s==null?'':s).replace(/[&<>\"]/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n    var path = (typeof window!=='undefined' && window.location && window.location.pathname) || '/';\n    var SECTIONS = [\n      {label:'PRINCIPAL', items:[\n        {text:'Painel', path:'/'}\n      ]},\n      {label:'ESTOQUE & PRODUÇÃO', items:[\n        {text:'Estoque', path:'/stock'},\n        {text:'Movimentações', path:'/stock-movement'},\n        {text:'Composição (BOM)', path:'/bom'},\n        {text:'Ordens de produção', path:'/production-order'}\n      ]},\n      {label:'COMPRAS & FINANCEIRO', items:[\n        {text:'Ordens de compra', path:'/material-buy-order'},\n        {text:'Contas', path:'/invoices'},\n        {text:'Pagamentos', path:'/invoice-events'}\n      ]},\n      {label:'CADASTROS', items:[\n        {text:'Empresas', path:'/companies'},\n        {text:'Materiais', path:'/materials'},\n        {text:'Locais', path:'/locations'}\n      ]},\n      {label:'ADMINISTRAÇÃO', items:[\n        {text:'Usuários', path:'/users'}\n      ]}\n    ];\n    return SECTIONS.map(function(g){\n      var items = g.items.map(function(it){\n        var on = path === it.path;\n        return '<div class=\"item'+(on?' on':'')+'\" data-nav=\"'+esc(it.path)+'\">'+esc(it.text)+'</div>';\n      }).join('');\n      return '<div class=\"grp\"><div class=\"lbl\">'+esc(g.label)+'</div>'+items+'</div>';\n    }).join('');\n  },\n  mounted(d2){\n    var ROUTER_IFACE = 'XGxUgyQ-5U2VmVp3rFvVvInterface';\n    d2.on('[data-nav]', 'click', function(e, el){\n      var path = el.getAttribute('data-nav');\n      try{\n        var r = d2.process(ROUTER_IFACE);\n        var h = r && r.get && r.get('history');\n        if (h && typeof h.push === 'function') h.push(path);\n      }catch(err){}\n    });\n  }\n};"}}}}}},"__d2PrevCode":{"code":"export default {\n  css: `\n    :host{display:block; width:100%; height:100%; overflow-y:auto; overflow-x:hidden; font-family:ui-sans-serif,-apple-system,\"Segoe UI\",Roboto,sans-serif; scrollbar-width:thin;}\n    :host::-webkit-scrollbar{width:4px;}\n    :host::-webkit-scrollbar-thumb{background:rgba(244,241,234,0.15);}\n    .grp{margin-top:6px;}\n    .grp:first-child{margin-top:0;}\n    .lbl{font-size:9px; letter-spacing:.12em; font-weight:700; text-transform:uppercase; color:rgba(244,241,234,0.4); padding:0 8px; margin-bottom:1px;}\n    .item{display:block; padding:1px 8px; font-size:12.5px; color:rgba(244,241,234,1); cursor:pointer; border-left:4px solid transparent; line-height:1.4; white-space:nowrap;}\n    .item:hover{color:#f4f1ea; background:rgba(244,241,234,0.04);}\n    .item.on{color:#dcb42b; text-decoration:underline; border-left-color:#dcb42b;}\n  `,\n  render(d2){\n    function esc(s){ return String(s==null?'':s).replace(/[&<>\"]/g,function(c){return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;'}[c];}); }\n    var path = (typeof window!=='undefined' && window.location && window.location.pathname) || '/';\n    var SECTIONS = [\n      {label:'PRINCIPAL', items:[\n        {text:'home', path:'/'},\n        {text:'Stock Overview', path:'/stock'}\n      ]},\n      {label:'ESTOQUE & PRODUÇÃO', items:[\n        {text:'stock movement', path:'/stock-movement'},\n        {text:'production orders', path:'/production-order'}\n      ]},\n      {label:'COMPRAS & FINANCEIRO', items:[\n        {text:'material buy orders', path:'/material-buy-order'},\n        {text:'Invoices', path:'/invoices'},\n        {text:'Pagamentos', path:'/invoice-events'}\n      ]},\n      {label:'CADASTROS', items:[\n        {text:'companies', path:'/companies'},\n        {text:'materials', path:'/materials'},\n        {text:'locations', path:'/locations'},\n        {text:'Product Materials', path:'/bom'}\n      ]},\n      {label:'ADMINISTRAÇÃO', items:[\n        {text:'usuários', path:'/users'}\n      ]}\n    ];\n    return SECTIONS.map(function(g){\n      var items = g.items.map(function(it){\n        var on = path === it.path;\n        return '<div class=\"item'+(on?' on':'')+'\" data-nav=\"'+esc(it.path)+'\">'+esc(it.text)+'</div>';\n      }).join('');\n      return '<div class=\"grp\"><div class=\"lbl\">'+esc(g.label)+'</div>'+items+'</div>';\n    }).join('');\n  },\n  mounted(d2){\n    var ROUTER_IFACE = 'XGxUgyQ-5U2VmVp3rFvVvInterface';\n    d2.on('[data-nav]', 'click', function(e, el){\n      var path = el.getAttribute('data-nav');\n      try{\n        var r = d2.process(ROUTER_IFACE);\n        var h = r && r.get && r.get('history');\n        if (h && typeof h.push === 'function') h.push(path);\n      }catch(err){}\n    });\n  }\n};","at":"2026-08-05T13:34:08.729Z"}}},{"_id":"69a1e4380023321294aaa314","component":"data2-core-types@Component","system":"6138ba0292425036c3b32255","params":{"extends":"data2-core-primitives@Block","package":"roue","component":"UU_V1mZVRUjo23Y8L4sgr","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"UU_V1mZVRUjo23Y8L4sgr"}}}}}}]}},{"reference":"ExternalComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"_id":"5f060d9b1ca96def42f3c40a","displayName":"Builder AuthStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"credentials":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"verifier":{"component":"data2-core-types@DataSetReference","params":{"reference":"UsersDataSet"}},"sessionShared":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},"email":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"nR6Q9d7qdaPtZhJ28Q8Dy"},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"yPCJBTKo8q1Mw0B_3Kpwl"},"component":"data2-core-types@ArtboardReference"}}},"session":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"name"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"sessionMetadata":{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},{"params":{"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"active"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.status"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is active user"}]},"component":"data2-core-logical-operators@And","displayName":"is active and has _id"}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $user"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-primitives@String","params":{"content":"@data2.app"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.email"}}}}},"component":"data2-core-functions@Includes","displayName":"isData2User"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}},"component":"data2-core-flow@Step"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.d2_app"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"management"}}]},"component":"data2-core-functions@Includes","displayName":"isData2App Exception"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}},"component":"data2-core-flow@Step"},{"params":{"resultName":{"component":"data2-core-primitives@String","params":{"content":"has_access"}},"action":{"params":{"compare":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}}}]},"component":"data2-core-logical-operators@Or"},"else":{"params":{"actions":[{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $metadata.system"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":"filter","args":[{"_id":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records.length"}}}}},"component":"data2-core-logical-operators@Not","displayName":"systems not found"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check system found"},{"params":{"actions":[{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"organization":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.organization._id"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"}]},"component":"data2-core-flow@Parallel"}]},"component":"data2-core-flow@Series","displayName":"common setup"},{"params":{"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"else":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"compare":{"params":{"components":{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"mapper":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"system"}}],"body":{"params":{"expression":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.visibility"}}}},"defaultCase":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"public"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"billing-owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}},{"component":"data2-core-primitives@String","params":{"content":"member"}}]},"component":"data2-core-functions@Includes","displayName":"has role with access"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"collaborator"}}},"component":"data2-core-comparison-operators@Equal","displayName":"is collaborator"}]},"component":"data2-core-logical-operators@And","displayName":"is org member and collaborator"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is collaborator"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is collaborator and has system access"}]},"component":"data2-core-logical-operators@Or"}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"private"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}}]},"component":"data2-core-functions@Includes","displayName":"is owner/admin"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is owner/admin"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is member and has system access"}]},"component":"data2-core-logical-operators@Or","displayName":"is owner/admin or has system access"}}}]},"component":"data2-core-flow@Switch"}}}},"component":"data2-core-functions@ArrayMap"}},"component":"data2-core-logical-operators@And","displayName":"has org member for all systems in request"}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-flow@If"}},"component":"data2-core-flow@Step"},{"params":{"then":{"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"else":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"has_access"}}}}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"sessionExpiresIn":{"component":"data2-core-primitives@Number","params":{"content":604800}},"sessionRenewal":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"identityProviders":[{"provider":{"component":"data2-core-primitives@String","params":{"content":"GOOGLE"}},"clientId":{"component":"data2-core-primitives@String","params":{"content":"55470861603-22pvfc1t49lp8cjnbfk71s5ct9hp1q1v.apps.googleusercontent.com"}}}]},"reference":"Data2BuilderAuthentication","updatedAt":"2026-08-06T19:31:23.557Z"},{"_id":"5f060ee51ca96def42f3fbd1","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"UsersTableDataSource"}},"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}}},"reference":"UsersDataSet","updatedAt":"2026-03-04T21:16:40.291Z"},{"_id":"68f938cf5fb002e33752a43d","displayName":"InternalApplicationsAuthenticationStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}}},"verifier":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"InternalApplicationsVerifierDataSet"}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"secret"}},"credentials":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}],"session":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}]},"reference":"InternalApplicationsAuthenticationStrategy","updatedAt":"2025-10-22T20:08:54.442Z","createdAt":"2025-10-22T20:04:31.198Z"},{"component":"data2-core@DataSet","reference":"SessionsDataSet","params":{"requiresConfirmation":false,"pk":"key","datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"data2sessionsdatasource"}}}},{"reference":"UsersTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@ServerSessionsDataSource","reference":"data2sessionsdatasource","params":{}},{"_id":"5f1600b70528b92601890f75","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ServiceComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ServiceComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:20.208Z","createdAt":"2020-07-20T20:38:15.436Z"},{"_id":"5f1602190528b92601890f7d","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":40000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentInstancesTableDataSource"}},"sort":{"_id":1},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:07.089Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"5f16017f0528b92601890f7a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"FileComponentInstancesDataSet","updatedAt":"2023-08-03T16:08:18.193Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"5f1601990528b92601890f7b","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ApplicationsTableDataSource"}},"pk":"_id","autoEdit":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"params":{"column":"_id"},"component":"data2-core-types@DataSetColumnReference"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"ApplicationsDataSet","updatedAt":"2022-12-13T21:51:13.995Z","createdAt":"2020-07-20T20:42:01.657Z"},{"_id":"5f16172a0528b92601890f85","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":10000}}},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"DataComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"DataComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:12.831Z","createdAt":"2020-07-20T22:14:02.097Z"},{"_id":"60ddc1bbda3861ca65407c5a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"pagination":{"size":1},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"}},"reference":"OneFileComponentInstancesDataSet","updatedAt":"2022-02-09T19:44:38.036Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"63ee3d38b8c9838c62fb05fb","displayName":"DriveFileComponentInstancesDataSet","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core@Drive"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"DriveFileComponentInstancesDataSet","updatedAt":"2025-12-04T21:58:32.367Z","createdAt":"2023-02-16T14:27:07.797Z"},{"reference":"ServiceComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"641a31a8f38a4905a8b69245","component":"data2-interface-services@Timer","reference":"vMcJTigq6Vi8116mWz7-y","system":"6138ba0292425036c3b32255","params":{"interval":{"component":"data2-core-primitives@Number","params":{"content":5000}},"onTick":{"params":{"actions":[{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"x5Kpqa4iFzEmUIlg18-fu"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.glow"}},"value":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}}},{"params":{"delay":{"component":"data2-core-primitives@Number","params":{"content":1000}}},"component":"data2-core-flow@Delay"},{"component":"data2-core-types@Setter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"x5Kpqa4iFzEmUIlg18-fu"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.glow"}},"value":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}}]},"component":"data2-core-flow@Series"},"autoStart":{"component":"data2-core-primitives@Boolean","params":{"content":false}}}},{"_id":"69a5e6be79603527968ce289","component":"data2-interface-services@Timer","reference":"i40adXjwiJ8fxbKg4bkCG","system":"6138ba0292425036c3b32255","params":{"interval":{"component":"data2-core-primitives@Number","params":{"content":1000}},"onTick":{"params":{"actions":[{"params":{"module":{"params":{"reference":"8zzw36OuKRjAEjcZ5n8Cg"},"component":"data2-core-types@InteractiveModuleReference"},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.seconds"}},"value":{"params":{"format":{"component":"data2-core-primitives@String","params":{"content":"ss"}},"date":{"params":{},"component":"data2-core-functions@DateNow"}},"component":"data2-core-functions@DateFormat"}},"component":"data2-core-types@Setter"},{"params":{"module":{"params":{"reference":"8zzw36OuKRjAEjcZ5n8Cg"},"component":"data2-core-types@InteractiveModuleReference"},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.hours"}},"value":{"params":{"format":{"component":"data2-core-primitives@String","params":{"content":"hh"}},"date":{"params":{},"component":"data2-core-functions@DateNow"}},"component":"data2-core-functions@DateFormat"}},"component":"data2-core-types@Setter"},{"params":{"module":{"params":{"reference":"8zzw36OuKRjAEjcZ5n8Cg"},"component":"data2-core-types@InteractiveModuleReference"},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.minutes"}},"value":{"params":{"format":{"component":"data2-core-primitives@String","params":{"content":"mm"}},"date":{"params":{},"component":"data2-core-functions@DateNow"}},"component":"data2-core-functions@DateFormat"}},"component":"data2-core-types@Setter"}]},"component":"data2-core-flow@Series"},"autoStart":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"activeInBuilder":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}}]}},{"reference":"ComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a7130a4f6cf4e77dc4b6efc","component":"data2-core-primitives@Router","system":"6138ba0292425036c3b32255","displayName":"erp-router-v2","params":{"routerType":{"component":"data2-core-primitives@String","params":{"content":"browser"}},"routes":[{"component":"data2-core-primitives@Route","params":{"path":"/","content":{"component":"data2-core-types@ArtboardReference","params":{"reference":"FEjQZik03nZ2Hl8K1jo7a"}},"policies":[{"component":"data2-core-auth@Policy","params":{"authenticationStrategy":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"roueErpAuth"}},"allowedRoles":[{"component":"data2-core-primitives@String","params":{"content":"ADMIN"}},{"component":"data2-core-primitives@String","params":{"content":"FACTORY"}},{"component":"data2-core-primitives@String","params":{"content":"PURCHASING"}},{"component":"data2-core-primitives@String","params":{"content":"FINANCE"}},{"component":"data2-core-primitives@String","params":{"content":"VIEWER"}}]}}]}},{"component":"data2-core-primitives@Route","params":{"path":"/invoices","content":{"component":"data2-core-types@ArtboardReference","params":{"reference":"ME98oYJdMJ_SaLAH4NGLo"}},"policies":[{"component":"data2-core-auth@Policy","params":{"authenticationStrategy":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"roueErpAuth"}},"allowedRoles":[{"component":"data2-core-primitives@String","params":{"content":"ADMIN"}},{"component":"data2-core-primitives@String","params":{"content":"FINANCE"}}]}}]}},{"component":"data2-core-primitives@Route","params":{"path":"/invoice-events","content":{"component":"data2-core-types@ArtboardReference","params":{"reference":"blnaxrb3lFGW8qti0cP4C"}},"policies":[{"component":"data2-core-auth@Policy","params":{"authenticationStrategy":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"roueErpAuth"}},"allowedRoles":[{"component":"data2-core-primitives@String","params":{"content":"ADMIN"}},{"component":"data2-core-primitives@String","params":{"content":"FINANCE"}}]}}]}},{"component":"data2-core-primitives@Route","params":{"path":"/companies","content":{"component":"data2-core-types@ArtboardReference","params":{"reference":"h0d5ZekYG7tjwkHgk9bfn"}},"policies":[{"component":"data2-core-auth@Policy","params":{"authenticationStrategy":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"roueErpAuth"}},"allowedRoles":[{"component":"data2-core-primitives@String","params":{"content":"ADMIN"}},{"component":"data2-core-primitives@String","params":{"content":"PURCHASING"}},{"component":"data2-core-primitives@String","params":{"content":"FINANCE"}}]}}]}},{"component":"data2-core-primitives@Route","params":{"path":"/locations","content":{"component":"data2-core-types@ArtboardReference","params":{"reference":"PK-xTZpiw7nB1jy7sj3bE"}},"policies":[{"component":"data2-core-auth@Policy","params":{"authenticationStrategy":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"roueErpAuth"}},"allowedRoles":[{"component":"data2-core-primitives@String","params":{"content":"ADMIN"}},{"component":"data2-core-primitives@String","params":{"content":"FACTORY"}},{"component":"data2-core-primitives@String","params":{"content":"PURCHASING"}}]}}]}},{"component":"data2-core-primitives@Route","params":{"path":"/materials","content":{"component":"data2-core-types@ArtboardReference","params":{"reference":"unAYSY6q6pOkeVyuFMzAK"}},"policies":[{"component":"data2-core-auth@Policy","params":{"authenticationStrategy":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"roueErpAuth"}},"allowedRoles":[{"component":"data2-core-primitives@String","params":{"content":"ADMIN"}},{"component":"data2-core-primitives@String","params":{"content":"FACTORY"}},{"component":"data2-core-primitives@String","params":{"content":"PURCHASING"}}]}}]}},{"component":"data2-core-primitives@Route","params":{"path":"/bom","content":{"component":"data2-core-types@ArtboardReference","params":{"reference":"nMT3BkhYRijVIlHznXyyN"}},"policies":[{"component":"data2-core-auth@Policy","params":{"authenticationStrategy":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"roueErpAuth"}},"allowedRoles":[{"component":"data2-core-primitives@String","params":{"content":"ADMIN"}},{"component":"data2-core-primitives@String","params":{"content":"FACTORY"}}]}}]}},{"component":"data2-core-primitives@Route","params":{"path":"/stock","content":{"component":"data2-core-types@ArtboardReference","params":{"reference":"PmZ4dA_epuEbycB_z2sqf"}},"policies":[{"component":"data2-core-auth@Policy","params":{"authenticationStrategy":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"roueErpAuth"}},"allowedRoles":[{"component":"data2-core-primitives@String","params":{"content":"ADMIN"}},{"component":"data2-core-primitives@String","params":{"content":"FACTORY"}},{"component":"data2-core-primitives@String","params":{"content":"PURCHASING"}}]}}]}},{"component":"data2-core-primitives@Route","params":{"path":"/stock-movement","content":{"component":"data2-core-types@ArtboardReference","params":{"reference":"ln8whZNBgSGeWL5oc1JFE"}},"policies":[{"component":"data2-core-auth@Policy","params":{"authenticationStrategy":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"roueErpAuth"}},"allowedRoles":[{"component":"data2-core-primitives@String","params":{"content":"ADMIN"}},{"component":"data2-core-primitives@String","params":{"content":"FACTORY"}},{"component":"data2-core-primitives@String","params":{"content":"PURCHASING"}}]}}]}},{"component":"data2-core-primitives@Route","params":{"path":"/production-order","content":{"component":"data2-core-types@ArtboardReference","params":{"reference":"GFnDC0EOGIAXWTNVkZaIP"}},"policies":[{"component":"data2-core-auth@Policy","params":{"authenticationStrategy":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"roueErpAuth"}},"allowedRoles":[{"component":"data2-core-primitives@String","params":{"content":"ADMIN"}},{"component":"data2-core-primitives@String","params":{"content":"FACTORY"}}]}}]}},{"component":"data2-core-primitives@Route","params":{"path":"/material-buy-order","content":{"component":"data2-core-types@ArtboardReference","params":{"reference":"FG70t9vOY9v1947hoHNvw"}},"policies":[{"component":"data2-core-auth@Policy","params":{"authenticationStrategy":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"roueErpAuth"}},"allowedRoles":[{"component":"data2-core-primitives@String","params":{"content":"ADMIN"}},{"component":"data2-core-primitives@String","params":{"content":"PURCHASING"}}]}}]}},{"component":"data2-core-primitives@Route","params":{"path":"/users","content":{"component":"data2-core-types@ArtboardReference","params":{"reference":"aAnCOLm5AGkxCdD3jBlGa"}},"policies":[{"component":"data2-core-auth@Policy","params":{"authenticationStrategy":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"roueErpAuth"}},"allowedRoles":[{"component":"data2-core-primitives@String","params":{"content":"ADMIN"}}]}}]}}],"login":{"component":"data2-core-types@ArtboardReference","params":{"reference":"O-fGCQSEAh8fQCYIvlzF6"}}},"reference":"XGxUgyQ-5U2VmVp3rFvVv"},{"_id":"6a70b77b978a1908d0b519fe","component":"data2-core-primitives@Artboard","system":"6138ba0292425036c3b32255","displayName":"Login","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Login"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":560,"height":680}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}}},"reference":"O-fGCQSEAh8fQCYIvlzF6"},{"_id":"6a70e2c6e86dc02039796d3f","component":"data2-core-primitives@Artboard","system":"6138ba0292425036c3b32255","displayName":"Usuários · Roue (code)","params":{"title":"Usuários · Roue (code)","dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1366,"height":768}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}},"fill":{"component":"data2-core-types@Color","params":{"rgba":"#0d0d0d"}}},"reference":"aAnCOLm5AGkxCdD3jBlGa"},{"_id":"6a4f9a6ea896d4d2f7346d83","component":"data2-core-primitives@Artboard","system":"6138ba0292425036c3b32255","displayName":"Compras · Roue (code)","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Compras · Roue (code)"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1366,"height":768}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}},"fill":{"component":"data2-core-types@Color","params":{"rgba":"#0d0d0d"}}},"reference":"FG70t9vOY9v1947hoHNvw"},{"_id":"6a4f9872d332d6287e15874d","component":"data2-core-primitives@Artboard","system":"6138ba0292425036c3b32255","displayName":"Produção · Roue MRP (code)","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Produção · Roue MRP (code)"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1366,"height":768}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}},"fill":{"component":"data2-core-types@Color","params":{"rgba":"#0d0d0d"}}},"reference":"GFnDC0EOGIAXWTNVkZaIP"},{"_id":"69a2193934acdb2c25cc8a54","component":"data2-core-primitives@Artboard","system":"6138ba0292425036c3b32255","displayName":"Stock Movements","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1366,"height":768}},"fill":{"params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"},"transitionReference":{"component":"data2-core-primitives@String","params":{"content":"screen"}}},"reference":"ln8whZNBgSGeWL5oc1JFE"},{"_id":"69f0a2946a1455035d772435","component":"data2-core-primitives@Artboard","system":"6138ba0292425036c3b32255","displayName":"Stock · Roue","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Stock · Roue"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1366,"height":768}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}},"fill":{"component":"data2-core-types@Color","params":{"rgba":"#0d0d0d"}}},"reference":"PmZ4dA_epuEbycB_z2sqf"},{"_id":"698578bb1f6df98691882302","component":"data2-core-primitives@Artboard","system":"6138ba0292425036c3b32255","displayName":"Bill-Of-Materials","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1366,"height":768}},"fill":{"params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"},"transitionReference":{"component":"data2-core-primitives@String","params":{"content":"screen"}}},"reference":"nMT3BkhYRijVIlHznXyyN"},{"_id":"69f0a2940c8490fb2902bbd3","component":"data2-core-primitives@Artboard","system":"6138ba0292425036c3b32255","displayName":"Materials · Roue","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Materials · Roue"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1366,"height":768}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}},"fill":{"component":"data2-core-types@Color","params":{"rgba":"#0d0d0d"}}},"reference":"unAYSY6q6pOkeVyuFMzAK"},{"_id":"6a4f9b5f143f11aaf6bbb927","component":"data2-core-primitives@Artboard","system":"6138ba0292425036c3b32255","displayName":"Locais · Roue (code)","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Locais · Roue (code)"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1366,"height":768}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}},"fill":{"component":"data2-core-types@Color","params":{"rgba":"#0d0d0d"}}},"reference":"PK-xTZpiw7nB1jy7sj3bE"},{"_id":"6a4f9b62ad0c30c1707d3f62","component":"data2-core-primitives@Artboard","system":"6138ba0292425036c3b32255","displayName":"Empresas · Roue (code)","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Empresas · Roue (code)"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1366,"height":768}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}},"fill":{"component":"data2-core-types@Color","params":{"rgba":"#0d0d0d"}}},"reference":"h0d5ZekYG7tjwkHgk9bfn"},{"_id":"6a4f9b6694372c05a20ded0f","component":"data2-core-primitives@Artboard","system":"6138ba0292425036c3b32255","displayName":"Pagamentos · Roue (code)","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Pagamentos · Roue (code)"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1366,"height":768}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}},"fill":{"component":"data2-core-types@Color","params":{"rgba":"#0d0d0d"}}},"reference":"blnaxrb3lFGW8qti0cP4C"},{"_id":"6a4f9870f0be44ad28468f95","component":"data2-core-primitives@Artboard","system":"6138ba0292425036c3b32255","displayName":"Contas · Roue (code)","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Contas · Roue (code)"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1366,"height":768}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}},"fill":{"component":"data2-core-types@Color","params":{"rgba":"#0d0d0d"}}},"reference":"ME98oYJdMJ_SaLAH4NGLo"},{"_id":"6a4f9b6aa896d4d2f7346fb3","component":"data2-core-primitives@Artboard","system":"6138ba0292425036c3b32255","displayName":"Dashboard · Roue (code)","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Dashboard · Roue (code)"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1366,"height":768}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}},"fill":{"component":"data2-core-types@Color","params":{"rgba":"#0d0d0d"}}},"reference":"FEjQZik03nZ2Hl8K1jo7a"},{"_id":"9e067591ec90a9c3e8d61099","parent":"6a70b77b978a1908d0b519fe","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Bg","params":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":560,"height":680}},"fill":{"component":"data2-core-types@Fill","params":{"backgrounds":[{"component":"data2-core-types@Background","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"#0d0d0d"}}}}]}}},"index":0,"reference":"Q6teo-US4nLxGfpBfT97f"},{"_id":"cc9d247209936235f997b274","parent":"6a70e2c6e86dc02039796d3f","component":"roue@kRoueGrid","system":"6138ba0292425036c3b32255","displayName":"Users Grid","params":{"title":"Usuários","eyebrow":"Contas · papéis · acesso","dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"erp-users-directoryDataSet"}},"look1":{"component":"data2-core-types@DataSetReference","params":{"reference":"c8xgoXMx8OQnihp1jTMhW"}},"columns":[{"key":"name","label":"Nome","kind":"strong"},{"key":"email","label":"Email","kind":"text"},{"key":"role","label":"Papel","kind":"pill","width":160},{"key":"active","label":"Status","kind":"pill","width":120}],"pillMap":{"ADMIN":["#c8102e","rgba(200,16,46,0.12)","Admin"],"FACTORY":["#5aa9ff","rgba(90,169,255,0.14)","Fábrica"],"PURCHASING":["#dcb42b","rgba(220,180,43,0.12)","Compras"],"FINANCE":["#c78bff","rgba(199,139,255,0.14)","Financeiro"],"VIEWER":["#f4f1ea","rgba(244,241,234,0.12)","Visualizador"],"TRUE":["#3ed47e","rgba(62,212,126,0.12)","Ativo"],"FALSE":["#8a8a8a","rgba(138,138,138,0.14)","Inativo"]},"searchKeys":["name","email","role"],"actionLabel":"Novo usuário","formFields":[{"key":"name","label":"Nome","type":"text","required":true},{"key":"email","label":"Email","type":"text","required":true},{"key":"password","label":"Senha","type":"password","required":true},{"key":"role","label":"Papel","type":"select","options":[{"value":"ADMIN","label":"Admin"},{"value":"FACTORY","label":"Fábrica"},{"value":"PURCHASING","label":"Compras"},{"value":"FINANCE","label":"Financeiro"},{"value":"VIEWER","label":"Visualizador"}]},{"key":"active","label":"Ativo","type":"checkbox","default":true}],"systemSlug":"roue","super":{"position":{"component":"data2-core-types@Position","params":{"x":252,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1114,"height":768}}},"footer":"ROUE ERP · USUÁRIOS","deletable":true,"formSaveRush":"create_user","formSaveRushBody":{"name":"form:name","email":"form:email","password":"form:password","role":"form:role","active":"form:active"},"formEditRush":{"component":"data2-core-primitives@String","params":{"content":"update_user"}}},"index":0,"reference":"0TrOJJev2N6dGzmAPnrMP"},{"_id":"0b162b6cd834ad3bd8a30cc3","parent":"6a70e2c6e86dc02039796d3f","component":"roue@kHelpTip","system":"6138ba0292425036c3b32255","displayName":"Help","params":{"title":"Contas de acesso","body":"Quem pode entrar no sistema e o que cada um pode fazer. O Papel (Admin/Fábrica/Compras/Financeiro/Visualizador) controla quais telas cada pessoa vê. Tela restrita a administradores.","super":{"position":{"component":"data2-core-types@Position","params":{"x":700,"y":82,"freeTransform":true,"left":true,"right":false,"top":true,"bottom":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":32,"height":32}}}},"index":0.5,"reference":"beb9ReClDKP4nvwQWywuo"},{"_id":"b32b1cc1f031c0524482a8da","parent":"6a70e2c6e86dc02039796d3f","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Sidebar","params":{"position":{"component":"data2-core-types@Position","params":{"x":20,"y":20,"freeTransform":true,"left":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":226,"height":728}},"childrenMode":"reference","childrenReference":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"Mm2TolFORCESqtqbEBqI_"}},"transitionReference":"screen-menu","id":"menu"},"index":1,"reference":"BQFPUQRzHqKcv9TgeqFR8"},{"_id":"b0590c34190f9850725ce751","parent":"6a4f9a6ea896d4d2f7346d83","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Sidebar","params":{"position":{"component":"data2-core-types@Position","params":{"x":20,"y":20,"freeTransform":true,"left":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":226,"height":728}},"childrenMode":"reference","childrenReference":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"Mm2TolFORCESqtqbEBqI_"}},"transitionReference":"screen-menu","id":"menu"},"index":0,"reference":"P8HiW2cn22ciwDpaxk3pG"},{"_id":"e544030049bfb4d399427245","parent":"6a4f9a6ea896d4d2f7346d83","component":"roue@kBuyOrders","system":"6138ba0292425036c3b32255","displayName":"Buy Orders","params":{"buy":{"component":"data2-core-types@DataSetReference","params":{"reference":"_K9F_EIkSHX2-SJwN0Hdf"}},"items":{"component":"data2-core-types@DataSetReference","params":{"reference":"AIAlGrzo3dWynlhcezNGJDataSet"}},"materials":{"component":"data2-core-types@DataSetReference","params":{"reference":"Tne6oMht3ZPMmskeKwNxm"}},"companies":{"component":"data2-core-types@DataSetReference","params":{"reference":"cZdetMQLGKekc42K7upQM"}},"locations":{"component":"data2-core-types@DataSetReference","params":{"reference":"c8xgoXMx8OQnihp1jTMhW"}},"invoices":{"component":"data2-core-types@DataSetReference","params":{"reference":"VTddmR9WQ3FNXGjSiXOGf"}},"systemSlug":"roue","super":{"position":{"component":"data2-core-types@Position","params":{"x":252,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1114,"height":768}}},"movements":{"component":"data2-core-types@DataSetReference","params":{"reference":"EzdXI4XQ0W8UbF3_24jWZ"}},"invoiceEvents":{"component":"data2-core-types@DataSetReference","params":{"reference":"N3xqOKU6XKLwyvg9E8vgh"}}},"index":2,"reference":"gAxc5jHnNELtynndqqXaI"},{"_id":"0b6c77eade9176da245351ed","parent":"6a4f9a6ea896d4d2f7346d83","component":"roue@kHelpTip","system":"6138ba0292425036c3b32255","displayName":"Help","params":{"title":"Ordens de compra","body":"Pedidos de compra de materiais junto a fornecedores. Nascem automaticamente de uma ordem de produção com falta de peça, ou podem ser criadas manualmente. \"Receber ordem no estoque\" dá entrada nos materiais comprados.","super":{"position":{"component":"data2-core-types@Position","params":{"x":700,"y":82,"freeTransform":true,"left":true,"right":false,"top":true,"bottom":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":32,"height":32}}}},"index":3,"reference":"hQduQm38IEE7z0Ti51nbz"},{"_id":"877a1944cf448b49450ca248","parent":"6a4f9872d332d6287e15874d","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Sidebar","params":{"position":{"component":"data2-core-types@Position","params":{"x":20,"y":20,"freeTransform":true,"left":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":226,"height":728}},"childrenMode":"reference","childrenReference":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"Mm2TolFORCESqtqbEBqI_"}},"transitionReference":"screen-menu","id":"menu"},"index":1,"reference":"iYwKndMglKJ9d2J8XmY7y"},{"_id":"7ead7dea31265a8fc51cf61e","parent":"6a4f9872d332d6287e15874d","component":"roue@kProduction","system":"6138ba0292425036c3b32255","displayName":"Production MRP","params":{"prod":{"component":"data2-core-types@DataSetReference","params":{"reference":"mMOBOiz-PeT9XbjhViaCN"}},"bom":{"component":"data2-core-types@DataSetReference","params":{"reference":"dW_BE-9PxPXdd-lMZssy_"}},"stock":{"component":"data2-core-types@DataSetReference","params":{"reference":"SpYoZMAqwiTIaVJ7Y9FS-"}},"locations":{"component":"data2-core-types@DataSetReference","params":{"reference":"c8xgoXMx8OQnihp1jTMhW"}},"invoices":{"component":"data2-core-types@DataSetReference","params":{"reference":"VTddmR9WQ3FNXGjSiXOGf"}},"materials":{"component":"data2-core-types@DataSetReference","params":{"reference":"Tne6oMht3ZPMmskeKwNxm"}},"buy":{"component":"data2-core-types@DataSetReference","params":{"reference":"_K9F_EIkSHX2-SJwN0Hdf"}},"systemSlug":"roue","super":{"position":{"component":"data2-core-types@Position","params":{"x":252,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1114,"height":768}}},"movements":{"component":"data2-core-types@DataSetReference","params":{"reference":"EzdXI4XQ0W8UbF3_24jWZ"}},"invoiceEvents":{"component":"data2-core-types@DataSetReference","params":{"reference":"N3xqOKU6XKLwyvg9E8vgh"}}},"index":2,"reference":"lNQCDhBud48vuLMMIEfnI"},{"_id":"2059805a2aec5e0632261a7c","parent":"6a4f9872d332d6287e15874d","component":"roue@kHelpTip","system":"6138ba0292425036c3b32255","displayName":"Help","params":{"title":"Ordens de produção (MRP)","body":"Cada ordem representa a montagem de um relógio (SKU) em uma quantidade. Ao selecionar uma ordem, o sistema calcula automaticamente as peças necessárias (via BOM), compara com o estoque disponível e mostra o que falta comprar. Os botões avançam o fluxo: gerar compra e produzir.","super":{"position":{"component":"data2-core-types@Position","params":{"x":700,"y":82,"freeTransform":true,"left":true,"right":false,"top":true,"bottom":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":32,"height":32}}}},"index":3,"reference":"0YrEVDML4Uj1Riu2UyKlp"},{"_id":"0ae8fefb0996c24b38cd87e4","parent":"69a2193934acdb2c25cc8a54","component":"roue@kRoueGrid","system":"6138ba0292425036c3b32255","displayName":"Movements Grid","params":{"dataset":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"EzdXI4XQ0W8UbF3_24jWZ"}},"title":"Movimentações","eyebrow":"EXTRATO · CONSUMO / PRODUÇÃO / RECEBIMENTO · LIVE","footer":"ROUE WATCH · MOVIMENTAÇÕES · v1.0","columns":[{"key":"type","label":"Tipo","kind":"pill","width":140},{"key":"material.model","label":"Material","kind":"strong"},{"key":"material.code","label":"Código","kind":"code","width":160},{"key":"amount","label":"Quantidade","kind":"amount","align":"right","width":120},{"key":"location_a.name","label":"Origem","kind":"muted","width":150},{"key":"location_b.name","label":"Destino","kind":"muted","width":150},{"key":"notes","label":"Motivo","kind":"text"}],"pillMap":{"CONSUME":["#c8102e","rgba(200,16,46,0.15)","CONSUMO"],"PRODUCE":["#dcb42b","rgba(220,180,43,0.15)","PRODUÇÃO"],"RECEIVE":["#0f7b4a","rgba(15,123,74,0.15)","RECEBIMENTO"],"NULL":["rgba(244,241,234,0.5)","rgba(244,241,234,0.08)","SEM TIPO"],"ADJUSTMENT":["#5b8def","rgba(91,141,239,0.15)","AJUSTE"]},"super":{"position":{"component":"data2-core-types@Position","params":{"x":252,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1114,"height":768}}}},"index":1,"reference":"oQGd5DqRRmDhJLjGBecya"},{"_id":"0d7490c639f7580e71a7e39e","parent":"69a2193934acdb2c25cc8a54","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Sidebar","params":{"position":{"component":"data2-core-types@Position","params":{"x":20,"y":20,"freeTransform":true,"left":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":226,"height":728}},"childrenMode":"reference","childrenReference":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"Mm2TolFORCESqtqbEBqI_"}},"transitionReference":"screen-menu","id":"menu"},"index":1,"reference":"gShnC7A_-7viIVtneeUQi"},{"_id":"0d300fbe4d3823c90bca42ea","parent":"69a2193934acdb2c25cc8a54","component":"roue@kHelpTip","system":"6138ba0292425036c3b32255","displayName":"Help","params":{"title":"Movimentações de estoque","body":"Histórico completo de entradas e saídas: o que foi consumido, produzido ou recebido, quando e em qual local. É o extrato do estoque — cada linha aqui explica uma mudança de saldo.","super":{"position":{"component":"data2-core-types@Position","params":{"x":700,"y":82,"freeTransform":true,"left":true,"right":false,"top":true,"bottom":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":32,"height":32}}}},"index":2,"reference":"Og4suBGKA2v_nUjULnIA9"},{"_id":"c04c6d8980e8d3fb4eee9203","parent":"69f0a2946a1455035d772435","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Sidebar","params":{"position":{"component":"data2-core-types@Position","params":{"x":20,"y":20,"freeTransform":true,"left":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":226,"height":728}},"childrenMode":"reference","childrenReference":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"Mm2TolFORCESqtqbEBqI_"}},"transitionReference":"screen-menu","id":"menu"},"index":0,"reference":"aMICD_Bpm4y8cWrn4q3Na"},{"_id":"2fb223a8441d68dfe0fdcce3","parent":"69f0a2946a1455035d772435","component":"roue@kRoueGrid","system":"6138ba0292425036c3b32255","displayName":"Stock Grid","params":{"dataset":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"SpYoZMAqwiTIaVJ7Y9FS-"}},"title":"Estoque","eyebrow":"SALDO ATUAL · MATERIAL × LOCAL · LIVE","footer":"ROUE WATCH · ESTOQUE · v1.0","actionLabel":"AJUSTE DE ESTOQUE","columns":[{"key":"material.code","label":"Material","kind":"code","width":160},{"key":"material.model","label":"Descrição","kind":"strong"},{"key":"location.name","label":"Local","kind":"text","width":240},{"key":"material.type","label":"Tipo","kind":"muted","width":150},{"key":"amount","label":"Saldo","kind":"amount","align":"right","width":120}],"super":{"position":{"component":"data2-core-types@Position","params":{"x":252,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1114,"height":768}}},"look1":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Tne6oMht3ZPMmskeKwNxm"}},"look2":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"c8xgoXMx8OQnihp1jTMhW"}},"formFields":[{"key":"material","label":"Material","type":"select","lookFrom":"look1","lookLabel":"model"},{"key":"location","label":"Local","type":"select","lookFrom":"look2","lookLabel":"name"},{"key":"amount","label":"Quantidade (+ entrada / − saída)","type":"number"},{"key":"reason","label":"Motivo","type":"text","required":true}],"disableEdit":true,"formSaveRush":"stock_adjust","formSaveRushBody":{"material_id":"form:material","location_id":"form:location","amount":"form:amount","reason":"form:reason"},"groupBy":["material._id","location._id"],"sumKey":"amount"},"index":2,"reference":"qlUiWdnzj2GwBUt5yuGtv"},{"_id":"de1177b93267ae7575b864f0","parent":"69f0a2946a1455035d772435","component":"roue@kHelpTip","system":"6138ba0292425036c3b32255","displayName":"Help","params":{"title":"Estoque por local","body":"Saldo atual de cada material em cada local. Fica negativo/zerado quando o consumo passa da compra. É atualizado automaticamente por toda movimentação (produção, compra, consumo).","super":{"position":{"component":"data2-core-types@Position","params":{"x":700,"y":82,"freeTransform":true,"left":true,"right":false,"top":true,"bottom":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":32,"height":32}}}},"index":3,"reference":"hIove7o7PBATkBFZJzmxn"},{"_id":"70b080498c813df8027a50c2","parent":"698578bb1f6df98691882302","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Sidebar","params":{"position":{"component":"data2-core-types@Position","params":{"x":20,"y":20,"freeTransform":true,"left":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":226,"height":728}},"childrenMode":"reference","childrenReference":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"Mm2TolFORCESqtqbEBqI_"}},"transitionReference":"screen-menu","id":"menu"},"index":1,"reference":"jFc9xMZcFDTHRY20W6sbZ"},{"_id":"6b3dd9ba5e1f3d2b1c3a961a","parent":"698578bb1f6df98691882302","component":"roue@kRoueGrid","system":"6138ba0292425036c3b32255","displayName":"BOM Grid","params":{"dataset":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"dW_BE-9PxPXdd-lMZssy_"}},"title":"Bill of Materials","eyebrow":"RECIPE · MATERIAL × QTY PER SKU · LIVE","footer":"ROUE WATCH · BOM · v1.0","columns":[{"key":"sku_reference.code","label":"SKU","kind":"code","width":200},{"key":"sku_reference.model","label":"Watch","kind":"strong"},{"key":"material.length","label":"BOM Lines","kind":"amount","align":"right","width":150}],"expandZip":{"arrays":["material","qtd"]},"super":{"position":{"component":"data2-core-types@Position","params":{"x":252,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1114,"height":768}},"hide":true}},"index":2,"reference":"axlonA9AfHMjowjlTky2Q"},{"_id":"682002a8ab92b64d7ab31c39","parent":"698578bb1f6df98691882302","component":"roue@kHelpTip","system":"6138ba0292425036c3b32255","displayName":"Help","params":{"title":"Lista de materiais (BOM)","body":"Define a \"receita\" de cada relógio: quais peças e em que quantidade são necessárias para montar um SKU. É a base do cálculo de produção — sem BOM cadastrada, o sistema não sabe o que comprar ou consumir.","super":{"position":{"component":"data2-core-types@Position","params":{"x":700,"y":82,"freeTransform":true,"left":true,"right":false,"top":true,"bottom":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":32,"height":32}}}},"index":3,"reference":"Dwl9N_ls-Rr6dRKsJe3tv"},{"_id":"f77cdb9055141d2b08ba7325","parent":"698578bb1f6df98691882302","component":"roue@kBomEditor","system":"6138ba0292425036c3b32255","displayName":"BOM Editor","params":{"bom":{"component":"data2-core-types@DataSetReference","params":{"reference":"dW_BE-9PxPXdd-lMZssy_"}},"materials":{"component":"data2-core-types@DataSetReference","params":{"reference":"Tne6oMht3ZPMmskeKwNxm"}},"super":{"position":{"component":"data2-core-types@Position","params":{"x":252,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1114,"height":768}}}},"reference":"vXc0eQ-zEdj9ALDnOt5-F"},{"_id":"7eeed57aadd3ff495d03b0b1","parent":"69f0a2940c8490fb2902bbd3","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Sidebar","params":{"position":{"component":"data2-core-types@Position","params":{"x":20,"y":20,"freeTransform":true,"left":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":226,"height":728}},"childrenMode":"reference","childrenReference":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"Mm2TolFORCESqtqbEBqI_"}},"transitionReference":"screen-menu","id":"menu"},"index":0,"reference":"K87PuWBS3LVDdxGClLeqA"},{"_id":"ff3cfa70e7c13f685aeee3e9","parent":"69f0a2940c8490fb2902bbd3","component":"roue@kRoueGrid","system":"6138ba0292425036c3b32255","displayName":"Materials Grid","params":{"dataset":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Tne6oMht3ZPMmskeKwNxm"}},"title":"Materiais","eyebrow":"COMPONENTES & PRODUTOS ACABADOS · LIVE","footer":"ROUE WATCH · MATERIAIS · v1.0","columns":[{"key":"code","label":"Código","kind":"code","width":170},{"key":"model","label":"Descrição","kind":"strong"},{"key":"type","label":"Tipo","kind":"muted","width":200},{"key":"color","label":"Cor","kind":"text","width":150},{"key":"min_stock_limit","label":"Estoque Mínimo","kind":"amount","align":"right","width":120}],"super":{"position":{"component":"data2-core-types@Position","params":{"x":252,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1114,"height":768}}},"actionLabel":"NOVO MATERIAL","formFields":[{"key":"code","label":"Código","type":"text"},{"key":"model","label":"Descrição","type":"text"},{"key":"type","label":"Tipo","type":"text"},{"key":"color","label":"Cor","type":"text"},{"key":"min_stock_limit","label":"Estoque Mínimo","type":"number"}],"deletable":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"index":2,"reference":"oGxpmye9HCp1APeHaufnS"},{"_id":"b81ea7c4342a34215a5ae009","parent":"69f0a2940c8490fb2902bbd3","component":"roue@kHelpTip","system":"6138ba0292425036c3b32255","displayName":"Help","params":{"title":"Catálogo de materiais e SKUs","body":"Cada linha é um componente ou relógio pronto (SKU). O código identifica a peça de forma única; a Descrição e o Tipo ajudam a localizar. Clique em ✎ para editar, ou em \"+ NEW MATERIAL\" para cadastrar um novo. Use a busca para filtrar por código ou nome.","super":{"position":{"component":"data2-core-types@Position","params":{"x":700,"y":82,"freeTransform":true,"left":true,"right":false,"top":true,"bottom":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":32,"height":32}}}},"index":3,"reference":"kgOWgY_oB29GyVr-TKs3P"},{"_id":"81c92423f93c86cf4af985f2","parent":"6a4f9b5f143f11aaf6bbb927","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Sidebar","params":{"position":{"component":"data2-core-types@Position","params":{"x":20,"y":20,"freeTransform":true,"left":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":226,"height":728}},"childrenMode":"reference","childrenReference":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"Mm2TolFORCESqtqbEBqI_"}},"transitionReference":"screen-menu","id":"menu"},"index":0,"reference":"aDj6koq9TKpsWC_sNfnbT"},{"_id":"084e1df2e9a244a31e0c9472","parent":"6a4f9b5f143f11aaf6bbb927","component":"roue@kLocations","system":"6138ba0292425036c3b32255","displayName":"Locations","params":{"locations":{"component":"data2-core-types@DataSetReference","params":{"reference":"c8xgoXMx8OQnihp1jTMhW"}},"stock":{"component":"data2-core-types@DataSetReference","params":{"reference":"SpYoZMAqwiTIaVJ7Y9FS-"}},"companies":{"component":"data2-core-types@DataSetReference","params":{"reference":"cZdetMQLGKekc42K7upQM"}},"materials":{"component":"data2-core-types@DataSetReference","params":{"reference":"Tne6oMht3ZPMmskeKwNxm"}},"super":{"position":{"component":"data2-core-types@Position","params":{"x":252,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1114,"height":768}}}},"index":1,"reference":"8_QLB05j5EBncVxbHUuua"},{"_id":"8f9ed0cc8a8554d68f7f6118","parent":"6a4f9b5f143f11aaf6bbb927","component":"roue@kHelpTip","system":"6138ba0292425036c3b32255","displayName":"Help","params":{"title":"Locais físicos","body":"Onde o estoque fica de fato: fábricas e pontos de venda. Cada local pertence a uma empresa. O estoque e as movimentações são sempre lançados contra um local.","super":{"position":{"component":"data2-core-types@Position","params":{"x":700,"y":82,"freeTransform":true,"left":true,"right":false,"top":true,"bottom":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":32,"height":32}}}},"index":2,"reference":"82QrmRiisZ0hfOuiSp6kZ"},{"_id":"8fef87a54cab5dbd2599928a","parent":"6a4f9b62ad0c30c1707d3f62","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Sidebar","params":{"position":{"component":"data2-core-types@Position","params":{"x":20,"y":20,"freeTransform":true,"left":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":226,"height":728}},"childrenMode":"reference","childrenReference":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"Mm2TolFORCESqtqbEBqI_"}},"transitionReference":"screen-menu","id":"menu"},"index":0,"reference":"KlwQ6KBCRxEGPZrZxG4Wb"},{"_id":"24e7fa714e5f95852d9dd56e","parent":"6a4f9b62ad0c30c1707d3f62","component":"roue@kRoueGrid","system":"6138ba0292425036c3b32255","displayName":"Companies Grid","params":{"title":"Empresas","eyebrow":"Fornecedores · lojas · fábricas","dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"cZdetMQLGKekc42K7upQM"}},"look1":{"component":"data2-core-types@DataSetReference","params":{"reference":"c8xgoXMx8OQnihp1jTMhW"}},"columns":[{"key":"name","label":"Empresa","kind":"strong"},{"key":"relation","label":"Tipo","kind":"pill","width":160},{"key":"location","label":"Local","kind":"lookup","lookFrom":"look1","lookLabel":"name","width":220}],"pillMap":{"SELF":["#dcb42b","rgba(220,180,43,0.12)","Nós"],"SUPPLIER":["#5aa9ff","rgba(90,169,255,0.14)","Fornecedor"],"RETAIL":["#3ed47e","rgba(62,212,126,0.12)","Loja"],"RESELLER":["#c78bff","rgba(199,139,255,0.14)","Revenda"]},"searchKeys":["name","relation"],"actionLabel":"Nova empresa","formFields":[{"key":"name","label":"Nome","type":"text"},{"key":"relation","label":"Tipo (SUPPLIER / RETAIL / RESELLER / SELF)","type":"select","options":[{"value":"SELF","label":"Nós"},{"value":"SUPPLIER","label":"Fornecedor"},{"value":"RETAIL","label":"Loja"},{"value":"RESELLER","label":"Revenda"}]},{"key":"location","label":"Local","type":"select","lookFrom":"look1","lookLabel":"name"}],"systemSlug":"roue","super":{"position":{"component":"data2-core-types@Position","params":{"x":252,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1114,"height":768}}},"deletable":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"index":1,"reference":"MTEpZzDHn_-2dl9esTY44"},{"_id":"29c04028f1b8c2763454fc64","parent":"6a4f9b62ad0c30c1707d3f62","component":"roue@kHelpTip","system":"6138ba0292425036c3b32255","displayName":"Help","params":{"title":"Empresas parceiras","body":"Fornecedores, lojas e a própria fábrica. O Tipo (Nós/Fornecedor/Loja/Revenda) define o papel de cada empresa nas ordens de compra e notas fiscais. Use a busca para filtrar por nome.","super":{"position":{"component":"data2-core-types@Position","params":{"x":700,"y":82,"freeTransform":true,"left":true,"right":false,"top":true,"bottom":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":32,"height":32}}}},"index":2,"reference":"8ucoO8cTyex1P68qVoB5d"},{"_id":"e14ac8fd0d0b5bd98ae8a8e4","parent":"6a4f9b6694372c05a20ded0f","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Sidebar","params":{"position":{"component":"data2-core-types@Position","params":{"x":20,"y":20,"freeTransform":true,"left":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":226,"height":728}},"childrenMode":"reference","childrenReference":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"Mm2TolFORCESqtqbEBqI_"}},"transitionReference":"screen-menu","id":"menu"},"index":0,"reference":"k-AmrZdyAeq6OGor4nC1s"},{"_id":"5825bc4fee521a0be3316175","parent":"6a4f9b6694372c05a20ded0f","component":"roue@kRoueGrid","system":"6138ba0292425036c3b32255","displayName":"Payments Grid","params":{"title":"Pagamentos","eyebrow":"Lançamentos na conta da fábrica","dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"N3xqOKU6XKLwyvg9E8vgh"}},"look1":{"component":"data2-core-types@DataSetReference","params":{"reference":"VTddmR9WQ3FNXGjSiXOGf"}},"columns":[{"key":"type","label":"Tipo","kind":"pill","width":170},{"key":"invoice","label":"Conta","kind":"lookup","lookFrom":"look1","lookLabel":"identifier"},{"key":"total_value","label":"Valor","kind":"money","align":"right","width":170}],"pillMap":{"PAYMENT":["#3ed47e","rgba(62,212,126,0.12)","Pagamento"],"BUY_ORDER":["#c8102e","rgba(200,16,46,0.14)","Compra"],"PRODUCTION_ORDER":["#dcb42b","rgba(220,180,43,0.12)","Produção"],"CLOSING":["rgba(244,241,234,0.6)","rgba(244,241,234,0.1)","Fechamento"]},"systemSlug":"roue","super":{"position":{"component":"data2-core-types@Position","params":{"x":252,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1114,"height":768}}}},"index":1,"reference":"yzogcytjNcHArvb8ror2K"},{"_id":"c4895e744ac0e617a53c7326","parent":"6a4f9b6694372c05a20ded0f","component":"roue@kHelpTip","system":"6138ba0292425036c3b32255","displayName":"Help","params":{"title":"Lançamentos financeiros","body":"Todo pagamento, ordem de compra ou produção que afeta o saldo de uma nota fiscal aparece aqui como um evento. É o detalhe por trás do saldo mostrado em Notas Fiscais.","super":{"position":{"component":"data2-core-types@Position","params":{"x":700,"y":82,"freeTransform":true,"left":true,"right":false,"top":true,"bottom":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":32,"height":32}}}},"index":2,"reference":"oDfkEkf6aKwPsspHhvbJn"},{"_id":"033de9eafddb025582e1a1a6","parent":"6a4f9870f0be44ad28468f95","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Sidebar","params":{"position":{"component":"data2-core-types@Position","params":{"x":20,"y":20,"freeTransform":true,"left":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":226,"height":728}},"childrenMode":"reference","childrenReference":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"Mm2TolFORCESqtqbEBqI_"}},"transitionReference":"screen-menu","id":"menu"},"index":1,"reference":"QAwgQmNYwKWf1hpl3kAS8"},{"_id":"3cecc66a0036edfb61b44139","parent":"6a4f9870f0be44ad28468f95","component":"roue@kInvoice","system":"6138ba0292425036c3b32255","displayName":"Invoice Ledger","params":{"invoices":{"component":"data2-core-types@DataSetReference","params":{"reference":"VTddmR9WQ3FNXGjSiXOGf"}},"events":{"component":"data2-core-types@DataSetReference","params":{"reference":"N3xqOKU6XKLwyvg9E8vgh"}},"companies":{"component":"data2-core-types@DataSetReference","params":{"reference":"cZdetMQLGKekc42K7upQM"}},"super":{"position":{"component":"data2-core-types@Position","params":{"x":252,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1114,"height":768}}}},"index":1,"reference":"GvowEMkihC3USXlEf7hWk"},{"_id":"c43bc8fc2de25ea886dbba39","parent":"6a4f9870f0be44ad28468f95","component":"roue@kHelpTip","system":"6138ba0292425036c3b32255","displayName":"Help","params":{"title":"Conta corrente com a fábrica","body":"Cada nota fiscal (identificador tipo I0000xx) representa um contrato entre comprador e vendedor. O saldo mostra quanto ainda falta pagar ou receber. Pagamentos e fechamentos de conta são lançados aqui.","super":{"position":{"component":"data2-core-types@Position","params":{"x":700,"y":82,"freeTransform":true,"left":true,"right":false,"top":true,"bottom":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":32,"height":32}}}},"index":2,"reference":"-5T2mNDJffTD_woReKEsY"},{"_id":"0b5c00acd601cf92f065ff35","parent":"6a4f9b6aa896d4d2f7346fb3","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Sidebar","params":{"position":{"component":"data2-core-types@Position","params":{"x":20,"y":20,"freeTransform":true,"left":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":226,"height":728}},"childrenMode":"reference","childrenReference":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"Mm2TolFORCESqtqbEBqI_"}},"transitionReference":"screen-menu","id":"menu","hide":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"index":0,"reference":"Aze2IyggO3wR6DUm__Vrd"},{"_id":"7193acc8e485939cc152b773","parent":"6a4f9b6aa896d4d2f7346fb3","component":"roue@kCockpit","system":"6138ba0292425036c3b32255","displayName":"Cockpit","params":{"materials":{"component":"data2-core-types@DataSetReference","params":{"reference":"Tne6oMht3ZPMmskeKwNxm"}},"stock":{"component":"data2-core-types@DataSetReference","params":{"reference":"SpYoZMAqwiTIaVJ7Y9FS-"}},"prod":{"component":"data2-core-types@DataSetReference","params":{"reference":"mMOBOiz-PeT9XbjhViaCN"}},"buy":{"component":"data2-core-types@DataSetReference","params":{"reference":"_K9F_EIkSHX2-SJwN0Hdf"}},"moves":{"component":"data2-core-types@DataSetReference","params":{"reference":"EzdXI4XQ0W8UbF3_24jWZ"}},"accent":"#c8102e","super":{"position":{"component":"data2-core-types@Position","params":{"x":252,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1114,"height":768}},"hide":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"companies":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"cZdetMQLGKekc42K7upQM"}},"invoices":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"VTddmR9WQ3FNXGjSiXOGf"}},"events":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"N3xqOKU6XKLwyvg9E8vgh"}}},"index":2,"reference":"jaVpD8i07REdZFMz99kq5"},{"_id":"666b78fac4227a51fcfdecd1","parent":"6a4f9b6aa896d4d2f7346fb3","component":"roue@kHelpTip","system":"6138ba0292425036c3b32255","displayName":"Help","params":{"title":"Painel de operações","body":"Visão geral da fábrica: estoque, produção e compras em aberto, e os eventos mais recentes. Os números vêm direto das tabelas de Materiais, Produção e Compras. Use os links em \"Precisa de você\" para ir direto ao que está pendente.","super":{"position":{"component":"data2-core-types@Position","params":{"x":700,"y":82,"freeTransform":true,"left":true,"right":false,"top":true,"bottom":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":32,"height":32}},"hide":false}},"index":3,"reference":"1FAok6tF1_XKojoy4Miuk"},{"_id":"fa4eb65fff189b4aa1df1c23","parent":"9e067591ec90a9c3e8d61099","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Card","params":{"position":{"component":"data2-core-types@Position","params":{"x":60,"y":60,"freeTransform":true,"left":true,"top":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":440,"height":560}},"fill":{"component":"data2-core-types@Fill","params":{"backgrounds":[{"component":"data2-core-types@Background","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(20,20,20,1)"}}}}]}},"border":{"component":"data2-core-types@Border","params":{"width":1,"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,0.12)"}}}}},"index":0,"reference":"gOLRunbLKGdzAdW6pxOFx"},{"_id":"697971948a8b2091975279de","component":"data2-core-primitives@Artboard","system":"6138ba0292425036c3b32255","displayName":"menu","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"height":1050,"exactWidth":225,"exactHeight":1050,"width":225}}},"reference":"Mm2TolFORCESqtqbEBqI_"},{"_id":"91d5eaae57a340dd1393e31e","parent":"fa4eb65fff189b4aa1df1c23","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Tick","params":{"position":{"component":"data2-core-types@Position","params":{"x":40,"y":44,"freeTransform":true,"left":true,"top":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":36,"height":3}},"fill":{"component":"data2-core-types@Fill","params":{"backgrounds":[{"component":"data2-core-types@Background","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"#c8102e"}}}}]}}},"index":0,"reference":"HhfYPdvh0XMunijGg7gtc"},{"_id":"941d357d9ee178a832a43b53","parent":"fa4eb65fff189b4aa1df1c23","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Title","params":{"position":{"component":"data2-core-types@Position","params":{"x":40,"y":56,"freeTransform":true,"left":true,"top":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":360,"height":56}},"text":"Roue","textColor":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,1)"}},"textSize":44,"textFormat":{"component":"data2-core-types@TextFormat","params":{"fontWeight":"800","letterSpacing":{"component":"data2-core-numerical-operators@Subtract","params":{"components":[0,2]}}}}},"index":1,"reference":"JtrVPJzyJmX68wW-r-4xn"},{"_id":"f9c7117ff4208aebc79b8cc6","parent":"fa4eb65fff189b4aa1df1c23","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Eyebrow","params":{"position":{"component":"data2-core-types@Position","params":{"x":40,"y":120,"freeTransform":true,"left":true,"top":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":360,"height":16}},"text":"ACESSO AO SISTEMA · ERP","textColor":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,0.5)"}},"textSize":11,"textFormat":{"component":"data2-core-types@TextFormat","params":{"fontWeight":"700","letterSpacing":2}}},"index":2,"reference":"OVp5y14n2CITFkSVZDLTL"},{"_id":"e133bc06d22d1aed1561cadd","parent":"fa4eb65fff189b4aa1df1c23","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"EmailLabel","params":{"position":{"component":"data2-core-types@Position","params":{"x":40,"y":196,"freeTransform":true,"left":true,"top":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":200,"height":14}},"text":"EMAIL","textColor":{"component":"data2-core-types@Color","params":{"rgba":"rgba(220,180,43,1)"}},"textSize":11,"textFormat":{"component":"data2-core-types@TextFormat","params":{"fontWeight":"700","letterSpacing":2}}},"index":3,"reference":"4G61CkZ7axza8BLgp2Wnd"},{"_id":"3fb84b13ae83dd9475ab6b9c","parent":"fa4eb65fff189b4aa1df1c23","component":"data2-blocks@DataFieldBlock","system":"6138ba0292425036c3b32255","displayName":"EmailField","params":{"dataset":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"loginForm"}},"field":"data.email","placeholder":"voce@data2.app","padding":{"left":14,"right":14},"super":{"position":{"component":"data2-core-types@Position","params":{"x":40,"y":216,"freeTransform":true,"left":true,"top":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":360,"height":46}},"fill":{"component":"data2-core-types@Fill","params":{"backgrounds":[{"component":"data2-core-types@Background","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,0.04)"}}}}]}},"border":{"component":"data2-core-types@Border","params":{"width":1,"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,0.15)"}}}},"textColor":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,1)"}}}},"index":4,"reference":"WuDEKXSLEPVWNSyfNZsZJ"},{"_id":"d7f98194985507bda519796c","parent":"fa4eb65fff189b4aa1df1c23","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"PasswordLabel","params":{"position":{"component":"data2-core-types@Position","params":{"x":40,"y":280,"freeTransform":true,"left":true,"top":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":200,"height":14}},"text":"SENHA","textColor":{"component":"data2-core-types@Color","params":{"rgba":"rgba(220,180,43,1)"}},"textSize":11,"textFormat":{"component":"data2-core-types@TextFormat","params":{"fontWeight":"700","letterSpacing":2}}},"index":5,"reference":"Bn5X6xiwBN2K-MPSt3ALv"},{"_id":"4f91dafb3eff01a2614c7dda","parent":"fa4eb65fff189b4aa1df1c23","component":"data2-blocks@DataFieldBlock","system":"6138ba0292425036c3b32255","displayName":"PasswordField","params":{"dataset":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"loginForm"}},"field":"data.password","type":"password","padding":{"left":14,"right":14},"super":{"position":{"component":"data2-core-types@Position","params":{"x":40,"y":300,"freeTransform":true,"left":true,"top":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":360,"height":46}},"fill":{"component":"data2-core-types@Fill","params":{"backgrounds":[{"component":"data2-core-types@Background","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,0.04)"}}}}]}},"border":{"component":"data2-core-types@Border","params":{"width":1,"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,0.15)"}}}},"textColor":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,1)"}}},"placeholder":"••••••••"},"index":6,"reference":"euJVL6bLHIWNBe2ez6OAj"},{"_id":"1bb6fea004a492ce3ce44935","parent":"fa4eb65fff189b4aa1df1c23","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"ErrorText","params":{"position":{"component":"data2-core-types@Position","params":{"x":40,"y":358,"freeTransform":true,"left":true,"top":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":360,"height":20}},"text":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"loginForm"}},"prop":"data.error"}},"hide":{"component":"data2-core-logical-operators@Not","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"loginForm"}},"prop":"data.error"}}}},"textColor":{"component":"data2-core-types@Color","params":{"rgba":"#ff6b6b"}},"textSize":12,"textFormat":{"component":"data2-core-types@TextFormat","params":{"fontWeight":"700"}}},"index":7,"reference":"V7TT1cnwVe905o3FECtZa"},{"_id":"b2512f973d02d4855fdd656f","parent":"fa4eb65fff189b4aa1df1c23","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"SubmitBtn","params":{"position":{"component":"data2-core-types@Position","params":{"x":40,"y":392,"freeTransform":true,"left":true,"top":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":360,"height":52}},"text":"ENTRAR","cursor":"pointer","fill":{"component":"data2-core-types@Fill","params":{"backgrounds":[{"component":"data2-core-types@Background","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"#c8102e"}}}}]}},"textColor":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,1)"}},"textFormat":{"component":"data2-core-types@TextFormat","params":{"fontWeight":"800","letterSpacing":2,"horizontalAlignment":"center","verticalAlignment":"middle"}},"onClick":{"component":"data2-core-flow@Series","params":{"actions":[{"component":"data2-core-flow@Step","params":{"action":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"loginForm"}},"prop":"data.email"}},"resultName":"email"}},{"component":"data2-core-flow@Step","params":{"action":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"loginForm"}},"prop":"data.password"}},"resultName":"password"}},{"component":"data2-core-flow@Step","params":{"action":{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"roueErpAuth"}},"prop":"login","args":[{"credentials":{"email":{"component":"data2-core-types@Reference","params":{"reference":"email"}},"password":{"component":"data2-core-types@Reference","params":{"reference":"password"}}}}]}},"resultName":"result"}},{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-types@Reference","params":{"reference":"result.isData2Error"}},"then":{"component":"data2-core-types@Setter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"loginForm"}},"prop":"data.error","value":"Email ou senha incorretos"}},"else":{"component":"data2-core-flow@Series","params":{"actions":[{"component":"data2-core-types@Setter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"loginForm"}},"prop":"data.error","value":""}},{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"goTo","args":["/"]}}]}}}}]}}},"index":8,"reference":"QWUDt1Ycpy190CJkWQkpS"},{"_id":"3b31a4ae52e976c121435531","parent":"fa4eb65fff189b4aa1df1c23","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Footer","params":{"position":{"component":"data2-core-types@Position","params":{"x":40,"y":492,"freeTransform":true,"left":true,"top":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":360,"height":14}},"text":"ROUE WATCH · ERP","textColor":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,0.3)"}},"textSize":9,"textFormat":{"component":"data2-core-types@TextFormat","params":{"fontWeight":"700","letterSpacing":2.5}}},"index":9,"reference":"oL6HYQffaFIOD-OfvsQdI"},{"_id":"697971968a8b2091975279ef","parent":"697971948a8b2091975279de","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":225,"height":1050,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false,"top":true,"left":true,"bottom":true,"growV":false,"right":true,"growH":false}},"border":{"params":{"width":{"top":0,"right":0,"bottom":0,"left":0},"radius":{"leftTop":150,"rightTop":150,"leftBottom":150,"rightBottom":150},"color":"#3a9cff","type":"solid"},"component":"data2-core-types@Border"},"fill":{"params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(30,30,30,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"}},"index":1},{"_id":"4217adfa1a0007843b80e8b5","parent":"697971948a8b2091975279de","component":"roue@kCmdK","system":"6138ba0292425036c3b32255","displayName":"CmdK Search","params":{"materials":{"component":"data2-core-types@DataSetReference","params":{"reference":"Tne6oMht3ZPMmskeKwNxm"}},"companies":{"component":"data2-core-types@DataSetReference","params":{"reference":"cZdetMQLGKekc42K7upQM"}},"prod":{"component":"data2-core-types@DataSetReference","params":{"reference":"mMOBOiz-PeT9XbjhViaCN"}},"buy":{"component":"data2-core-types@DataSetReference","params":{"reference":"_K9F_EIkSHX2-SJwN0Hdf"}},"invoices":{"component":"data2-core-types@DataSetReference","params":{"reference":"VTddmR9WQ3FNXGjSiXOGf"}},"users":{"component":"data2-core-types@DataSetReference","params":{"reference":"erp-usersDataSet"}},"super":{"position":{"component":"data2-core-types@Position","params":{"x":21,"y":234,"freeTransform":true,"left":true,"right":false,"top":true,"bottom":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":184,"height":26}}},"auth":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"roueErpAuth"}}},"index":2,"reference":"2nuCT-fp2VdFyEOkGwVgL"},{"_id":"6979722f8a8b209197527a00","parent":"697971968a8b2091975279ef","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"fill":{"component":"data2-core-types@Fill","params":{"backgrounds":[{"component":"data2-core-types@Background","params":{"color":{"component":"data2-core-types@ColorGradient","params":{"colors":[{"component":"data2-core-types@Color","params":{"rgba":"rgba(242,242,242,1)"}}]},"disabled":true},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"1PKHLrNu7iXW3HO2xSR-3"}},"size":"contain","skipServerSideProcessing":true,"repeat":"no-repeat","positionX":"left","positionY":"center"}}]}},"border":{"component":"data2-core-types@Border","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"#707070","opacity":1}},"radius":{},"width":{"left":1,"top":1,"right":1,"bottom":1}},"disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":26,"height":12,"exactWidth":26,"exactHeight":12.34,"y":745.47,"maintainAspectRatio":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":100,"y":1038,"left":false,"top":false,"exactX":false,"exactY":false,"bottom":true,"growV":false}},"shadow":[{"component":"data2-core-types@Shadow","params":{"type":"complex","offsetX":"0","offsetY":"4","spread":"5","blur":"4","color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0.04)"}}}}],"onVisibleOnScreen":{"disabled":false,"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"vMcJTigq6Vi8116mWz7-y"}},"prop":"start"}},"id":{"component":"data2-core-primitives@String","params":{"content":"logo"}},"transitionReference":{"component":"data2-core-primitives@String","params":{"content":"logo"}},"hide":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"index":3},{"_id":"697971968a8b2091975279f0","parent":"697971968a8b2091975279ef","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#1c1c1c","radius":{},"width":{"left":"0","top":"1","right":"0","bottom":"1"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":198,"height":536,"exactHeight":535.78,"maintainAspectRatio":false,"exactWidth":198,"y":262.25}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":14,"y":264,"exactX":false,"exactY":false,"top":true,"bottom":true,"growV":false}},"scroll":{"params":{"y":true},"component":"data2-core-types@Scroll"},"childrenMode":"rows","hide":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},{"_id":"69a102d94014cc4d21ba766c","parent":"697971968a8b2091975279ef","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":184,"height":18,"maintainAspectRatio":false,"exactWidth":184,"exactHeight":17.93,"y":211.07}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":21,"y":"212","exactX":false,"exactY":false,"top":true}}}},{"_id":"69a10e103d1dd90cb59eb161","parent":"697971968a8b2091975279ef","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":225,"height":203,"exactHeight":202.53,"exactWidth":225,"maintainAspectRatio":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":5,"exactX":false,"exactY":false,"top":true}},"transitionReference":{"component":"data2-core-primitives@String","params":{"content":"watches"}}}},{"_id":"69a6091268ab6c0ed13c2a0c","parent":"697971968a8b2091975279ef","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":225,"height":211,"exactHeight":210.86,"exactWidth":225,"y":557.29,"maintainAspectRatio":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":839,"exactX":false,"exactY":false,"top":false,"bottom":true,"growV":false}},"transitionReference":{"component":"data2-core-primitives@String","params":{"content":"watches"}}}},{"_id":"69a60e3472814b29bbcf2972","parent":"697971968a8b2091975279ef","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,120,220,0)"}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":184,"height":21,"maintainAspectRatio":false,"exactWidth":184,"exactHeight":21.08,"y":539.21}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":21,"y":"819","exactX":false,"exactY":false,"top":false,"bottom":true,"growV":false}}}},{"_id":"87f025446a0a8bad8e9c3082","parent":"697971968a8b2091975279ef","component":"roue@a_yRRis7V2sKhQA7peA8q","system":"6138ba0292425036c3b32255","displayName":"Sidebar Nav","params":{"super":{"position":{"component":"data2-core-types@Position","params":{"x":14,"y":264,"freeTransform":true,"left":true,"right":false,"top":true,"bottom":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":198,"height":536}}}},"reference":"He9pIspNzzo6FXk3ymnLv"},{"_id":"697971968a8b2091975279f4","parent":"697971968a8b2091975279f0","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"width":{"left":"0","top":"0","right":"0","bottom":"0"},"color":"rgba(0,0,0,0)"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":182,"height":12}},"position":{"component":"data2-core-types@Position","params":{"x":8,"y":0,"freeTransform":false}},"textSize":11,"textColor":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,0.5)"}},"text":"PRINCIPAL","textFormat":{"component":"data2-core-types@TextFormat","params":{"textTransform":"uppercase","letterSpacing":2,"fontWeight":"700","verticalAlignment":"middle"}}},"index":8},{"_id":"697971968a8b2091975279fb","parent":"697971968a8b2091975279f0","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"width":{"left":"4","top":"0","right":"0","bottom":"0"},"color":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"#dcb42b"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0)"}}}}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":182,"height":22}},"position":{"component":"data2-core-types@Position","params":{"x":8,"y":3,"freeTransform":false}},"text":"home","textColor":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"rgba(218,180,43,1)"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,1)"}}}},"textDecoration":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/"}},"then":{"component":"data2-core-types@TextDecoration","params":{"underline":true}}}},"textSize":14,"onClick":{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"goTo","args":["/"]}},"font":{"disabled":true,"component":"data2-core-web@GoogleFont","params":{}},"textFormat":{"component":"data2-core-types@TextFormat","params":{"textTransform":"lowercase","verticalAlignment":"middle","horizontalAlignment":"left"}},"opacity":{"component":"data2-core-types@Opacity","params":{"value":100}},"cursor":"pointer"},"index":8.5},{"_id":"69a8bb686c86e98117e9e3b5","parent":"697971968a8b2091975279f0","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"width":{"left":"4","top":"0","right":"0","bottom":"0"},"color":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/stock"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"#dcb42b"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0)"}}}}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":182,"height":22}},"position":{"component":"data2-core-types@Position","params":{"x":8,"y":1,"freeTransform":false}},"text":"Stock Overview","textDecoration":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/stock"}},"then":{"component":"data2-core-types@TextDecoration","params":{"underline":true}}}},"textSize":14,"onClick":{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"goTo","args":["/stock"]}},"font":{"disabled":true,"component":"data2-core-web@GoogleFont","params":{}},"textFormat":{"component":"data2-core-types@TextFormat","params":{"textTransform":"lowercase","verticalAlignment":"middle","horizontalAlignment":"left"}},"textColor":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/stock"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"rgba(218,180,43,1)"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,1)"}}}},"cursor":"pointer"},"index":8.75},{"_id":"697971968a8b2091975279f7","parent":"697971968a8b2091975279f0","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"width":{"left":"0","top":"0","right":"0","bottom":"0"},"color":"rgba(0,0,0,0)"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":182,"height":12}},"position":{"component":"data2-core-types@Position","params":{"x":8,"y":10,"freeTransform":false}},"textSize":11,"textColor":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,0.5)"}},"text":"ESTOQUE & PRODUÇÃO","textFormat":{"component":"data2-core-types@TextFormat","params":{"textTransform":"uppercase","letterSpacing":2,"fontWeight":"700","verticalAlignment":"middle"}}},"index":8.875},{"_id":"697971968a8b2091975279f5","parent":"697971968a8b2091975279f0","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":182,"height":22}},"position":{"component":"data2-core-types@Position","params":{"x":8,"y":3,"freeTransform":false}},"text":"stock movement","textColor":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/stock-movement"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"rgba(218,180,43,1)"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,1)"}}}},"textSize":14,"textDecoration":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/stock-movement"}},"then":{"component":"data2-core-types@TextDecoration","params":{"underline":true}}}},"onClick":{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"goTo","args":["/stock-movement"]}},"font":{"disabled":true,"component":"data2-core-web@GoogleFont","params":{}},"textFormat":{"component":"data2-core-types@TextFormat","params":{"textTransform":"lowercase","verticalAlignment":"middle","horizontalAlignment":"left"}},"cursor":"pointer","border":{"component":"data2-core-types@Border","params":{"width":{"left":"4","top":"0","right":"0","bottom":"0"},"color":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/stock-movement"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"#dcb42b"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0)"}}}}}}},"index":8.9375},{"_id":"697971968a8b2091975279f6","parent":"697971968a8b2091975279f0","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"width":{"left":"4","top":"0","right":"0","bottom":"0"},"color":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/production-order"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"#dcb42b"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0)"}}}}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":182,"height":22}},"position":{"component":"data2-core-types@Position","params":{"x":8,"y":1,"freeTransform":false}},"text":"production orders","textColor":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/production-order"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"rgba(218,180,43,1)"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,1)"}}}},"textSize":14,"textDecoration":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/production-order"}},"then":{"component":"data2-core-types@TextDecoration","params":{"underline":true}}}},"onClick":{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"goTo","args":["/production-order"]}},"font":{"disabled":true,"component":"data2-core-web@GoogleFont","params":{}},"textFormat":{"component":"data2-core-types@TextFormat","params":{"textTransform":"lowercase","verticalAlignment":"middle","horizontalAlignment":"left"}},"cursor":"pointer"},"index":8.96875},{"_id":"697971968a8b2091975279fa","parent":"697971968a8b2091975279f0","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"width":{"left":"0","top":"0","right":"0","bottom":"0"},"color":"rgba(0,0,0,0)"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":182,"height":12}},"position":{"component":"data2-core-types@Position","params":{"x":8,"y":10,"freeTransform":false}},"textSize":11,"textColor":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,0.5)"}},"text":"COMPRAS & FINANCEIRO","textFormat":{"component":"data2-core-types@TextFormat","params":{"textTransform":"uppercase","letterSpacing":2,"fontWeight":"700","verticalAlignment":"middle"}}},"index":8.984375},{"_id":"697971968a8b2091975279f8","parent":"697971968a8b2091975279f0","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"width":{"left":"4","top":"0","right":"0","bottom":"0"},"color":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/material-buy-order"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"#dcb42b"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0)"}}}}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":182,"height":22}},"position":{"component":"data2-core-types@Position","params":{"x":8,"y":3,"freeTransform":false}},"text":"material buy orders","textColor":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/material-buy-order"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"rgba(218,180,43,1)"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,1)"}}}},"textSize":14,"textDecoration":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/material-buy-order"}},"then":{"component":"data2-core-types@TextDecoration","params":{"underline":true}}}},"onClick":{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"goTo","args":["/material-buy-order"]}},"font":{"disabled":true,"component":"data2-core-web@GoogleFont","params":{}},"textFormat":{"component":"data2-core-types@TextFormat","params":{"textTransform":"lowercase","verticalAlignment":"middle","horizontalAlignment":"left"}},"cursor":"pointer"},"index":8.9921875},{"_id":"697971968a8b2091975279f9","parent":"697971968a8b2091975279f0","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":182,"height":22}},"position":{"component":"data2-core-types@Position","params":{"x":8,"y":1,"freeTransform":false}},"text":"Invoices","textColor":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/invoices"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"rgba(218,180,43,1)"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,1)"}}}},"textSize":14,"onClick":{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"goTo","args":["/invoices"]}},"textDecoration":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/invoices"}},"then":{"component":"data2-core-types@TextDecoration","params":{"underline":true}}}},"font":{"disabled":true,"component":"data2-core-web@GoogleFont","params":{}},"textFormat":{"component":"data2-core-types@TextFormat","params":{"textTransform":"lowercase","verticalAlignment":"middle","horizontalAlignment":"left"}},"cursor":"pointer","border":{"component":"data2-core-types@Border","params":{"width":{"left":"4","top":"0","right":"0","bottom":"0"},"color":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/invoices"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"#dcb42b"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0)"}}}}}}},"index":8.99609375},{"_id":"1f18a4b801df051a1c0fbd21","parent":"697971968a8b2091975279f0","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":182,"height":22}},"position":{"component":"data2-core-types@Position","params":{"x":8,"y":1,"freeTransform":false}},"text":"Pagamentos","textColor":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/invoice-events"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"rgba(218,180,43,1)"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,1)"}}}},"textSize":14,"onClick":{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"goTo","args":["/invoice-events"]}},"textDecoration":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/invoice-events"}},"then":{"component":"data2-core-types@TextDecoration","params":{"underline":true}}}},"font":{"disabled":true,"component":"data2-core-web@GoogleFont","params":{}},"textFormat":{"component":"data2-core-types@TextFormat","params":{"textTransform":"lowercase","verticalAlignment":"middle","horizontalAlignment":"left"}},"cursor":"pointer","border":{"component":"data2-core-types@Border","params":{"width":{"left":"4","top":"0","right":"0","bottom":"0"},"color":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"H9FzDG-x0qRD6MaJWFP0rInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/invoice-events"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"#dcb42b"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0)"}}}}}}},"index":8.998046875,"reference":"35bSKsuNIV8MsOadl7lGz"},{"_id":"480a636a00965d41dbe8231b","parent":"697971968a8b2091975279f0","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Label-CADASTROS","params":{"position":{"component":"data2-core-types@Position","params":{"x":8,"y":10,"freeTransform":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":182,"height":12}},"text":"CADASTROS","textColor":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,0.5)"}},"textSize":11,"border":{"component":"data2-core-types@Border","params":{"width":{"left":"0","top":"0","right":"0","bottom":"0"},"color":"rgba(0,0,0,0)"}},"textFormat":{"component":"data2-core-types@TextFormat","params":{"textTransform":"uppercase","letterSpacing":2,"fontWeight":"700","verticalAlignment":"middle"}}},"index":8.9990234375,"reference":"-Sy-Q-ganhQxGtg0gU7E8"},{"_id":"697971968a8b2091975279f1","parent":"697971968a8b2091975279f0","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":182,"height":22}},"position":{"component":"data2-core-types@Position","params":{"x":8,"y":3,"freeTransform":false}},"text":"companies","textColor":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/companies"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"rgba(218,180,43,1)"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,1)"}}}},"textSize":14,"textDecoration":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/companies"}},"then":{"component":"data2-core-types@TextDecoration","params":{"underline":true}}}},"onClick":{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"goTo","args":["/companies"]}},"font":{"disabled":true,"component":"data2-core-web@GoogleFont","params":{}},"textFormat":{"component":"data2-core-types@TextFormat","params":{"textTransform":"lowercase","verticalAlignment":"middle","horizontalAlignment":"left"}},"cursor":"pointer","border":{"component":"data2-core-types@Border","params":{"width":{"left":"4","top":"0","right":"0","bottom":"0"},"color":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"H9FzDG-x0qRD6MaJWFP0rInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/companies"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"#dcb42b"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0)"}}}}}}},"index":9.49951171875},{"_id":"697971968a8b2091975279f2","parent":"697971968a8b2091975279f0","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":182,"height":22}},"position":{"component":"data2-core-types@Position","params":{"x":8,"y":1,"freeTransform":false}},"text":"materials","textColor":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/materials"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"rgba(218,180,43,1)"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,1)"}}}},"textSize":14,"textDecoration":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/materials"}},"then":{"component":"data2-core-types@TextDecoration","params":{"underline":true}}}},"onClick":{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"goTo","args":["/materials"]}},"font":{"disabled":true,"component":"data2-core-web@GoogleFont","params":{}},"textFormat":{"component":"data2-core-types@TextFormat","params":{"textTransform":"lowercase","verticalAlignment":"middle","horizontalAlignment":"left"}},"cursor":"pointer","border":{"component":"data2-core-types@Border","params":{"width":{"left":"4","top":"0","right":"0","bottom":"0"},"color":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/materials"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"#dcb42b"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0)"}}}}}}},"index":10.249755859375},{"_id":"697971968a8b2091975279f3","parent":"697971968a8b2091975279f0","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":182,"height":22}},"position":{"component":"data2-core-types@Position","params":{"x":8,"y":1,"freeTransform":false}},"text":"locations","textColor":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/locations"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"rgba(218,180,43,1)"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,1)"}}}},"textSize":14,"textDecoration":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/locations"}},"then":{"component":"data2-core-types@TextDecoration","params":{"underline":true}}}},"onClick":{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"goTo","args":["/locations"]}},"font":{"disabled":true,"component":"data2-core-web@GoogleFont","params":{}},"textFormat":{"component":"data2-core-types@TextFormat","params":{"textTransform":"lowercase","verticalAlignment":"middle","horizontalAlignment":"left"}},"cursor":"pointer","border":{"component":"data2-core-types@Border","params":{"width":{"left":"4","top":"0","right":"0","bottom":"0"},"color":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"H9FzDG-x0qRD6MaJWFP0rInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/locations"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"#dcb42b"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0)"}}}}}}},"index":11.1248779296875},{"_id":"1109108038c2d0364f4455e3","parent":"697971968a8b2091975279f0","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":182,"height":22}},"position":{"component":"data2-core-types@Position","params":{"x":8,"y":1,"freeTransform":false}},"text":"Product Materials","textColor":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/bom"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"rgba(218,180,43,1)"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,1)"}}}},"textDecoration":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/bom"}},"then":{"component":"data2-core-types@TextDecoration","params":{"underline":true}}}},"textSize":14,"cursor":"pointer","onClick":{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"goTo","args":["/bom"]}},"font":{"disabled":true,"component":"data2-core-web@GoogleFont","params":{}},"textFormat":{"component":"data2-core-types@TextFormat","params":{"textTransform":"lowercase","verticalAlignment":"middle","horizontalAlignment":"left"}},"border":{"component":"data2-core-types@Border","params":{"width":{"left":"4","top":"0","right":"0","bottom":"0"},"color":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"H9FzDG-x0qRD6MaJWFP0rInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/bom"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"#dcb42b"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0)"}}}}}}},"index":12.56243896484375},{"_id":"dee04919ec418d8c14dc6e2f","parent":"697971968a8b2091975279f0","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Label-ADMINISTRAÇÃO","params":{"position":{"component":"data2-core-types@Position","params":{"x":8,"y":10,"freeTransform":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":182,"height":12}},"text":"ADMINISTRAÇÃO","textColor":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,0.5)"}},"textSize":11,"border":{"component":"data2-core-types@Border","params":{"width":{"left":"0","top":"0","right":"0","bottom":"0"},"color":"rgba(0,0,0,0)"}},"textFormat":{"component":"data2-core-types@TextFormat","params":{"textTransform":"uppercase","letterSpacing":2,"fontWeight":"700","verticalAlignment":"middle"}}},"index":13.781219482421875,"reference":"G8jtEj9PuP5PoUAAa_ST8"},{"_id":"281f9e827fd7747e65bf4968","parent":"697971968a8b2091975279f0","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Nav-usuarios","params":{"position":{"component":"data2-core-types@Position","params":{"x":8,"y":3,"freeTransform":false}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":182,"height":22}},"text":"usuários","textSize":14,"cursor":"pointer","hide":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"textFormat":{"component":"data2-core-types@TextFormat","params":{"textTransform":"lowercase","verticalAlignment":"middle","horizontalAlignment":"left"}},"textColor":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/users"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"rgba(218,180,43,1)"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(244,241,234,1)"}}}},"textDecoration":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/users"}},"then":{"component":"data2-core-types@TextDecoration","params":{"underline":true}}}},"border":{"component":"data2-core-types@Border","params":{"width":{"left":"4","top":"0","right":"0","bottom":"0"},"color":{"component":"data2-core-flow@If","params":{"compare":{"component":"data2-core-comparison-operators@Equal","params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"location.pathname"}},"comparisonSubject":"/users"}},"then":{"component":"data2-core-types@Color","params":{"rgba":"#dcb42b"}},"else":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0)"}}}}}},"onClick":{"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"XGxUgyQ-5U2VmVp3rFvVvInterface"}},"prop":"goTo","args":["/users"]}}},"index":14.781219482421875,"reference":"vQyYufvjia9qMb8Grvg98"},{"_id":"69a60e8c72814b29bbcf2977","parent":"69a102d94014cc4d21ba766c","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":82,"height":15,"exactWidth":81.93,"exactHeight":15,"y":17.58,"maintainAspectRatio":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":51,"y":0,"exactX":false,"exactY":false}},"text":"São Paulo","textSize":{"component":"data2-core-primitives@Number","params":{"content":12}},"textColor":{"params":{"rgba":"rgba(255,255,255,1)"},"component":"data2-core-types@Color"},"textFormat":{"params":{"textOverflow":false,"verticalAlignment":"middle","horizontalAlignment":"center"},"component":"data2-core-types@TextFormat"}}},{"_id":"69a2174bceda73f0dfa1164e","parent":"69a10e103d1dd90cb59eb161","component":"roue@UU_V1mZVRUjo23Y8L4sgr","system":"6138ba0292425036c3b32255","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"900"},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":210,"height":210,"exactWidth":210,"exactHeight":210}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":8,"y":7,"exactX":false,"exactY":false}},"style":{"transform":{"component":"data2-core-primitives@String","params":{"content":"scale(0.8)"}}},"transitionReference":{"component":"data2-core-primitives@String","params":{"content":"watch_a"}}},"style":{"transform":{"component":"data2-core-primitives@String","params":{"content":"scale(0.8)"}}}}},{"_id":"69a6091268ab6c0ed13c2a0e","parent":"69a6091268ab6c0ed13c2a0c","component":"roue@UU_V1mZVRUjo23Y8L4sgr","system":"6138ba0292425036c3b32255","params":{"super":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":0,"rightTop":0,"rightBottom":0,"leftBottom":0},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":210,"height":210,"exactWidth":210,"exactHeight":210}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":8,"y":-11,"exactX":8,"exactY":-11}},"style":{"transform":{"component":"data2-core-primitives@String","params":{"content":"scale(0.8)"}}},"transitionReference":{"component":"data2-core-primitives@String","params":{"content":"watch_a"}}}}},{"_id":"69a60eac72814b29bbcf2979","parent":"69a60e3472814b29bbcf2972","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":82,"height":15,"exactWidth":81.93,"exactHeight":15,"y":17.58,"maintainAspectRatio":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":51,"y":0,"exactX":false,"exactY":false}},"text":"Hong Kong","textSize":{"component":"data2-core-primitives@Number","params":{"content":12}},"textColor":{"params":{"rgba":"rgba(255,255,255,1)"},"component":"data2-core-types@Color"},"textFormat":{"params":{"textOverflow":false,"verticalAlignment":"middle","horizontalAlignment":"center"},"component":"data2-core-types@TextFormat"}}},{"_id":"69a1e4380023321294aaa315","component":"data2-core-primitives@Artboard","system":"6138ba0292425036c3b32255","displayName":"BIG_CAL","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":210,"height":210,"exactWidth":210,"exactHeight":210}},"componentClass":{"disabled":false,"component":"data2-core-types@ComponentClass","params":{}}},"reference":"UU_V1mZVRUjo23Y8L4sgr"},{"_id":"69a1e4380023321294aaa316","parent":"69a1e4380023321294aaa315","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Copy of Yellow-Outer","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"900"},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false,"bottom":true}},"fill":{"disabled":false,"component":"data2-core-types@Fill","params":{"backgrounds":[{"params":{"color":{"disabled":true,"component":"data2-core-types@Color","params":{"rgba":"rgba(231,193,73,1)"}},"gradient":{"disabled":false,"component":"data2-core-types@ColorGradient","params":{"type":"radial","colors":[{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(248,200,93,1)"}},"offset":"0%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(248,201,94,1)"}},"offset":"45.1%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(251,182,63,1)"}},"offset":"70.6%"}}]}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]}},"dimensions":{"params":{"width":210,"exactWidth":false,"height":210,"exactHeight":false},"component":"data2-core-types@Dimensions"},"transitions":[{"component":"data2-core-types@Transition","params":{"easing":"cubic-bezier(0.42,0,0.58,1)","duration":"600","delay":"300"}}],"style":{"transform":{"params":{"then":{"component":"data2-core-primitives@String","params":{"content":"scale(1)"}},"compare":{"params":{"components":[{"params":{"module":{"params":{"reference":"__UIState"},"component":"data2-core-types@InteractiveModuleReference"},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"69a889a3d0e9ea7801adae7d"}},"key":{"component":"data2-core-primitives@String","params":{"content":"initialized"}}}}},"component":"data2-core-types@Getter"},{"params":{"reference":"builder"},"component":"data2-core-types@Reference"}]},"component":"data2-core-logical-operators@Or"},"else":{"component":"data2-core-primitives@String","params":{"content":"scale(0)"}}},"component":"data2-core-flow@If"}},"onVisibleOnScreen":{"params":{"module":{"params":{"reference":"__UIState"},"component":"data2-core-types@InteractiveModuleReference"},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"69a889a3d0e9ea7801adae7d"}},"key":{"component":"data2-core-primitives@String","params":{"content":"initialized"}}}},"value":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"}},"index":0},{"_id":"69a889a3d0e9ea7801adae7d","parent":"69a1e4380023321294aaa315","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Copy of UI_STATE_HOLDER","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":22,"height":19}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":94,"y":96,"exactX":false,"exactY":false}},"stateDefinitions":[{"component":"data2-core-user-interface@StateDefinition","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"initialized"}},"component":"data2-core-primitives@Boolean"}}],"onVisibleOnScreen":{"params":{"module":{"params":{"reference":"__UIState"},"component":"data2-core-types@InteractiveModuleReference"},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"69a889a3d0e9ea7801adae7d"}},"key":{"component":"data2-core-primitives@String","params":{"content":"initialized"}}}},"value":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"},"index":{"component":"data2-core-primitives@String","params":{"content":"999999999999999999"}},"fill":{"params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(221,0,0,0.02)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"}},"index":1},{"_id":"6e316e0a33f0eec8bf0275da","parent":"69a1e4380023321294aaa315","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"TimerMountForce","params":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"freeTransform":true,"left":true,"top":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1,"height":1}},"opacity":0,"text":{"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"i40adXjwiJ8fxbKg4bkCG"}},"prop":"interval"}}},"index":2,"reference":"4TM4uVpCmg-be5fCXP8Iw"},{"_id":"69a1e4380023321294aaa317","parent":"69a1e4380023321294aaa316","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Bezel","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":206,"height":206,"exactHeight":206,"exactWidth":206}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":2,"y":2,"exactX":false,"exactY":false}},"border":{"disabled":false,"component":"data2-core-types@Border","params":{"radius":{"leftTop":"900"}}},"fill":{"params":{"backgrounds":[{"params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,1)"},"disabled":true},"gradient":{"disabled":false,"component":"data2-core-types@ColorGradient","params":{"type":"conic","colors":[{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(26,26,26,1)"}},"offset":"0%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0.24)"}},"offset":"12.9%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(93,93,93,0.23)"}},"offset":"23.200000000000003%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(26,26,26,0.21)"}},"offset":"30.599999999999998%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(26,26,26,1)"}},"offset":"64.9%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(160,160,160,0.17)"}},"offset":"77.2%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0.16)"}},"offset":"86%"}},{"component":"data2-core-types@ColorGradientStop","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(26,26,26,1)"}},"offset":"100%"}}]}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"},{"params":{"color":{"disabled":true,"component":"data2-core-types@Color","params":{"rgba":"rgba(32,26,26,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"Qfz6zQHXYagGSvqXAb5ke"}},"size":{"params":{"portions":[{"component":"data2-core-primitives@String","params":{"content":"25px 25px"}}]},"component":"data2-core-functions@StringConcat"}},"component":"data2-core-types@Background","break":true}]},"component":"data2-core-types@Fill"},"opacity":{"params":{"compare":{"params":{"components":[{"params":{"module":{"params":{"reference":"__UIState"},"component":"data2-core-types@InteractiveModuleReference"},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"69a889a3d0e9ea7801adae7d"}},"key":{"component":"data2-core-primitives@String","params":{"content":"initialized"}}}}},"component":"data2-core-types@Getter"},{"params":{"reference":"builder"},"component":"data2-core-types@Reference"}]},"component":"data2-core-logical-operators@Or"},"then":{"params":{},"component":"data2-core-types@Opacity"},"else":{"params":{"value":0},"component":"data2-core-types@Opacity"}},"component":"data2-core-flow@If"},"transitions":[{"component":"data2-core-types@Transition","params":{"easing":"cubic-bezier(0.42,0,0.58,1)","duration":"600","delay":"1500"}}]},"index":0},{"_id":"69a1e4380023321294aaa31b","parent":"69a1e4380023321294aaa317","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Ticker Numbers","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"90"},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":206,"height":206,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":"1","y":0,"exactX":false,"exactY":false}},"repeat":{"params":{"content":12},"component":"data2-core-primitives@Number"},"repeatReference":{"component":"data2-core-primitives@String","params":{"content":"tick"}}},"index":0},{"_id":"69a1e4380023321294aaa31f","parent":"69a1e4380023321294aaa317","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Tickers","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":900000000,"rightTop":900000000,"leftBottom":900000000,"rightBottom":900000000},"width":{"left":0,"top":0,"right":0,"bottom":0},"type":"solid"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":202,"height":202,"exactWidth":202,"exactHeight":202}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":2,"y":2,"exactX":false,"exactY":false}},"repeat":{"params":{"content":12},"component":"data2-core-primitives@Number"},"repeatReference":{"component":"data2-core-primitives@String","params":{"content":"tick"}},"childrenOverflow":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"index":1},{"_id":"69a1e4380023321294aaa318","parent":"69a1e4380023321294aaa317","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Dial","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"900"},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":15,"y":15,"exactX":false,"exactY":false,"bottom":false}},"fill":{"params":{"backgrounds":[{"params":{"color":{"disabled":true,"component":"data2-core-types@Color","params":{"rgba":"rgba(32,26,26,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"Qfz6zQHXYagGSvqXAb5ke"}},"size":{"params":{"portions":[{"component":"data2-core-primitives@String","params":{"content":"50px 50px"}}]},"component":"data2-core-functions@StringConcat"}},"component":"data2-core-types@Background","break":true}]},"component":"data2-core-types@Fill"},"dimensions":{"params":{"width":176,"exactWidth":176,"height":176,"exactHeight":176},"component":"data2-core-types@Dimensions"},"filter":[{"component":"data2-core-types@BitmapFilter","params":{"type":"brightness","unit":"%","value":77}}],"shadow":[{"component":"data2-core-types@Shadow","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0.23)"}},"blur":"3","type":"inset","spread":"0","offsetY":"0","offsetX":"0"}}],"opacity":{"params":{"compare":{"params":{"components":[{"params":{"module":{"params":{"reference":"__UIState"},"component":"data2-core-types@InteractiveModuleReference"},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"69a889a3d0e9ea7801adae7d"}},"key":{"component":"data2-core-primitives@String","params":{"content":"initialized"}}}}},"component":"data2-core-types@Getter"},{"params":{"reference":"builder"},"component":"data2-core-types@Reference"}]},"component":"data2-core-logical-operators@Or"},"then":{"params":{},"component":"data2-core-types@Opacity"},"else":{"params":{"value":0},"component":"data2-core-types@Opacity"}},"component":"data2-core-flow@If"}},"index":2},{"_id":"69a1e4380023321294aaa325","parent":"69a1e4380023321294aaa317","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Hands","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":206,"height":206,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false}},"style":{"transform":{"params":{"then":{"component":"data2-core-primitives@String","params":{"content":"scale(1)"}},"compare":{"params":{"components":[{"params":{"module":{"params":{"reference":"__UIState"},"component":"data2-core-types@InteractiveModuleReference"},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"69a889a3d0e9ea7801adae7d"}},"key":{"component":"data2-core-primitives@String","params":{"content":"initialized"}}}}},"component":"data2-core-types@Getter"},{"params":{"reference":"builder"},"component":"data2-core-types@Reference"}]},"component":"data2-core-logical-operators@Or"},"else":{"component":"data2-core-primitives@String","params":{"content":"scale(0)"}}},"component":"data2-core-flow@If"}},"transitions":[{"component":"data2-core-types@Transition","params":{"easing":"cubic-bezier(0.42,0,0.58,1)","duration":"600","delay":"4500"}}]}},{"_id":"69a1e4380023321294aaa31c","parent":"69a1e4380023321294aaa31b","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":18,"height":206,"exactWidth":17.84,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":94,"y":0,"exactX":false,"exactY":false}},"rotate":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"tickRepeaterIndex"}}}},{"component":"data2-core-primitives@Number","params":{"content":30}}]},"component":"data2-core-numerical-operators@Multiply"},"opacity":{"params":{"compare":{"params":{"components":[{"params":{"module":{"params":{"reference":"__UIState"},"component":"data2-core-types@InteractiveModuleReference"},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"69a889a3d0e9ea7801adae7d"}},"key":{"component":"data2-core-primitives@String","params":{"content":"initialized"}}}}},"component":"data2-core-types@Getter"},{"params":{"reference":"builder"},"component":"data2-core-types@Reference"}]},"component":"data2-core-logical-operators@Or"},"then":{"params":{},"component":"data2-core-types@Opacity"},"else":{"params":{"value":0},"component":"data2-core-types@Opacity"}},"component":"data2-core-flow@If"},"transitions":[{"component":"data2-core-types@Transition","params":{"delay":{"params":{"components":[{"component":"data2-core-primitives@String","params":{"content":"2500"}},{"params":{"components":[{"params":{"reference":"tickRepeaterIndex"},"component":"data2-core-types@Reference"},{"component":"data2-core-primitives@Number","params":{"content":100}}]},"component":"data2-core-numerical-operators@Multiply"}]},"component":"data2-core-numerical-operators@Add"},"duration":"200"},"break":true}]}},{"_id":"69a1e4380023321294aaa320","parent":"69a1e4380023321294aaa31f","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":28,"height":202,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":89,"y":0,"exactX":false,"exactY":false}},"rotate":{"params":{"components":[{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"tickRepeaterIndex"}}}},{"component":"data2-core-primitives@Number","params":{"content":30}}]},"component":"data2-core-numerical-operators@Multiply"},{"component":"data2-core-primitives@Number","params":{"content":"0"}}]},"component":"data2-core-numerical-operators@Add"},"childrenOverflow":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"opacity":{"params":{"compare":{"params":{"components":[{"params":{"module":{"params":{"reference":"__UIState"},"component":"data2-core-types@InteractiveModuleReference"},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"69a889a3d0e9ea7801adae7d"}},"key":{"component":"data2-core-primitives@String","params":{"content":"initialized"}}}}},"component":"data2-core-types@Getter"},{"params":{"reference":"builder"},"component":"data2-core-types@Reference"}]},"component":"data2-core-logical-operators@Or"},"then":{"params":{},"component":"data2-core-types@Opacity"},"else":{"params":{"value":0},"component":"data2-core-types@Opacity"}},"component":"data2-core-flow@If"},"transitions":[{"component":"data2-core-types@Transition","params":{"delay":{"params":{"components":[{"component":"data2-core-primitives@String","params":{"content":"3000"}},{"params":{"components":[{"params":{"reference":"tickRepeaterIndex"},"component":"data2-core-types@Reference"},{"component":"data2-core-primitives@Number","params":{"content":100}}]},"component":"data2-core-numerical-operators@Multiply"}]},"component":"data2-core-numerical-operators@Add"},"duration":"200"},"break":true}]}},{"_id":"69a1e5830023321294aaa333","parent":"69a1e4380023321294aaa318","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Logo","params":{"fill":{"component":"data2-core-types@Fill","params":{"backgrounds":[{"component":"data2-core-types@Background","params":{"color":{"component":"data2-core-types@ColorGradient","params":{"colors":[{"component":"data2-core-types@Color","params":{"rgba":"rgba(242,242,242,1)"}}]},"disabled":true},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"1PKHLrNu7iXW3HO2xSR-3"}},"size":"contain","skipServerSideProcessing":true,"repeat":"no-repeat","positionX":"left","positionY":"center"}}]}},"border":{"component":"data2-core-types@Border","params":{"color":{"component":"data2-core-types@Color","params":{"rgba":"#707070","opacity":1}},"radius":{},"width":{"left":1,"top":1,"right":1,"bottom":1}},"disabled":true},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":31,"height":35,"exactWidth":31.18,"exactHeight":34.71,"y":736.59,"maintainAspectRatio":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":75,"y":"25","left":false,"top":true,"exactX":false,"exactY":false}},"shadow":[{"component":"data2-core-types@Shadow","params":{"type":"complex","offsetX":"0","offsetY":"4","spread":"5","blur":"4","color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0.04)"}}}}],"onVisibleOnScreen":{"disabled":false,"component":"data2-core-types@Interaction","params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"vMcJTigq6Vi8116mWz7-y"}},"prop":"start"}},"transitions":[{"component":"data2-core-types@Transition","params":{"easing":"cubic-bezier(0.42,0,0.58,1)","duration":"600","delay":"5500"}}],"style":{"transform":{"params":{"then":{"component":"data2-core-primitives@String","params":{"content":"scale(1)"}},"compare":{"params":{"components":[{"params":{"module":{"params":{"reference":"__UIState"},"component":"data2-core-types@InteractiveModuleReference"},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"69a889a3d0e9ea7801adae7d"}},"key":{"component":"data2-core-primitives@String","params":{"content":"initialized"}}}}},"component":"data2-core-types@Getter"},{"params":{"reference":"builder"},"component":"data2-core-types@Reference"}]},"component":"data2-core-logical-operators@Or"},"else":{"component":"data2-core-primitives@String","params":{"content":"scale(0)"}}},"component":"data2-core-flow@If"}}},"index":0},{"_id":"69a1e4380023321294aaa31a","parent":"69a1e4380023321294aaa318","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Date","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":22,"height":27,"exactHeight":27,"exactWidth":22,"maintainAspectRatio":false,"x":78.68,"y":144.61}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":77,"y":"134","exactX":false,"exactY":false}},"text":{"params":{"format":{"component":"data2-core-primitives@String","params":{"content":"D"}}},"component":"data2-core-functions@DateFormat"},"textSize":{"component":"data2-core-primitives@Number","params":{"content":"22"}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"horizontalAlignment":"center","textOverflow":false,"verticalAlignment":"bottom","letterSpacing":-0.1,"lineHeight":1}},"font":{"disabled":false,"component":"data2-core-web@GoogleFont","params":{"fontFamily":"Aldrich"}},"fill":{"params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]},"component":"data2-core-types@Fill"},"shadow":[],"transitions":[{"component":"data2-core-types@Transition","params":{"easing":"cubic-bezier(0.42,0,0.58,1)","duration":"600","delay":"5000"}}],"style":{"transform":{"params":{"then":{"component":"data2-core-primitives@String","params":{"content":"scale(1)"}},"compare":{"params":{"components":[{"params":{"module":{"params":{"reference":"__UIState"},"component":"data2-core-types@InteractiveModuleReference"},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"69a889a3d0e9ea7801adae7d"}},"key":{"component":"data2-core-primitives@String","params":{"content":"initialized"}}}}},"component":"data2-core-types@Getter"},{"params":{"reference":"builder"},"component":"data2-core-types@Reference"}]},"component":"data2-core-logical-operators@Or"},"else":{"component":"data2-core-primitives@String","params":{"content":"scale(0)"}}},"component":"data2-core-flow@If"}}},"index":1},{"_id":"69a1e4380023321294aaa329","parent":"69a1e4380023321294aaa325","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Minutes HDS","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"90"},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":206,"height":206,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false}},"repeatReference":{"component":"data2-core-primitives@String","params":{"content":"tick"}},"shadow":[{"component":"data2-core-types@Shadow","params":{"type":"inset","color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,0.71)"}},"blur":"5"}}]},"index":3},{"_id":"69a1e4380023321294aaa32c","parent":"69a1e4380023321294aaa325","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Hours HDS","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"90"},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":206,"height":206,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false}},"repeatReference":{"component":"data2-core-primitives@String","params":{"content":"tick"}}},"index":4},{"_id":"69a1e4380023321294aaa326","parent":"69a1e4380023321294aaa325","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","displayName":"Seconds HDS","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{"leftTop":"90"},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":206,"height":206,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false}},"repeatReference":{"component":"data2-core-primitives@String","params":{"content":"tick"}}},"index":5},{"_id":"69a1e4380023321294aaa31d","parent":"69a1e4380023321294aaa31c","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":18,"height":32,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false}}}},{"_id":"69a1e4380023321294aaa321","parent":"69a1e4380023321294aaa320","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":28,"height":32,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":"-2","exactX":false,"exactY":false}},"childrenOverflow":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},{"_id":"69a1e4380023321294aaa32a","parent":"69a1e4380023321294aaa329","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":20,"height":206,"exactWidth":20,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":93,"y":0,"exactX":false,"exactY":false}},"rotate":{"params":{"components":[{"params":{"content":{"params":{"prop":{"component":"data2-core-primitives@String","params":{"content":"data.minutes"}},"module":{"params":{"reference":"8zzw36OuKRjAEjcZ5n8Cg"},"component":"data2-core-types@InteractiveModuleReference"}},"component":"data2-core-types@Getter"}},"component":"data2-core-primitives@Number","break":true},{"params":{"components":[{"component":"data2-core-primitives@Number","params":{"content":360}},{"component":"data2-core-primitives@Number","params":{"content":60}}]},"component":"data2-core-numerical-operators@Divide"}]},"component":"data2-core-numerical-operators@Multiply"},"shadow":[{"component":"data2-core-types@Shadow","params":{"blur":"2","color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,1)"}},"type":"complex"}}]}},{"_id":"69a1e4380023321294aaa32d","parent":"69a1e4380023321294aaa32c","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":15,"height":206,"exactWidth":15,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":96,"y":0,"exactX":false,"exactY":false}},"rotate":{"params":{"components":[{"params":{"content":{"params":{"prop":{"component":"data2-core-primitives@String","params":{"content":"data.hours"}},"module":{"params":{"reference":"8zzw36OuKRjAEjcZ5n8Cg"},"component":"data2-core-types@InteractiveModuleReference"}},"component":"data2-core-types@Getter"}},"component":"data2-core-primitives@Number","break":true},{"params":{"components":[{"component":"data2-core-primitives@Number","params":{"content":360}},{"component":"data2-core-primitives@Number","params":{"content":12}}]},"component":"data2-core-numerical-operators@Divide"}]},"component":"data2-core-numerical-operators@Multiply"},"shadow":[{"component":"data2-core-types@Shadow","params":{"blur":"2","color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,1)"}},"type":"complex"}}]}},{"_id":"69a1e4380023321294aaa327","parent":"69a1e4380023321294aaa326","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":17,"height":206,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":95,"y":0,"exactX":95.25,"exactY":-0.25}},"rotate":{"params":{"components":[{"params":{"components":[{"params":{"content":{"params":{"prop":{"component":"data2-core-primitives@String","params":{"content":"data.seconds"}},"module":{"params":{"reference":"8zzw36OuKRjAEjcZ5n8Cg"},"component":"data2-core-types@InteractiveModuleReference"}},"component":"data2-core-types@Getter"}},"component":"data2-core-primitives@Number","break":true},{"params":{"components":[{"component":"data2-core-primitives@Number","params":{"content":360}},{"component":"data2-core-primitives@Number","params":{"content":60}}]},"component":"data2-core-numerical-operators@Divide"}]},"component":"data2-core-numerical-operators@Multiply"},{"params":{"components":[{"params":{"module":{"params":{"reference":"8zzw36OuKRjAEjcZ5n8Cg"},"component":"data2-core-types@InteractiveModuleReference"},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.ticker"}}},"component":"data2-core-types@Getter"},{"component":"data2-core-primitives@Number","params":{"content":0.0001}}]},"component":"data2-core-numerical-operators@Divide"}]},"component":"data2-core-numerical-operators@Add"},"transitions":[{"component":"data2-core-types@Transition","params":{"duration":"1000","easing":"cubic-bezier(0,0,1,1)"}}],"shadow":[{"component":"data2-core-types@Shadow","params":{"blur":"2","color":{"component":"data2-core-types@Color","params":{"rgba":"rgba(0,0,0,1)"}},"type":"complex"}}]}},{"_id":"69a1e4380023321294aaa31e","parent":"69a1e4380023321294aaa31d","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":18,"height":12,"exactWidth":false,"exactHeight":11.97}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":"1","exactX":false,"exactY":false}},"text":{"params":{"compare":{"params":{"components":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"tickRepeaterIndex"}}},"component":"data2-core-types@Reference"},{"component":"data2-core-primitives@Number","params":{"content":5}}]},"component":"data2-core-numerical-operators@Multiply"},"then":{"params":{"components":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"tickRepeaterIndex"}}},"component":"data2-core-types@Reference"},{"component":"data2-core-primitives@Number","params":{"content":5}}]},"component":"data2-core-numerical-operators@Multiply"},"else":{"component":"data2-core-primitives@String","params":{"content":"60"}}},"component":"data2-core-flow@If"},"textSize":{"component":"data2-core-primitives@Number","params":{"content":"12"}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"textOverflow":false,"verticalAlignment":"top","lineHeight":1.3,"horizontalAlignment":"center","letterSpacing":"","fontWeight":500}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(238,238,238,1)"}},"font":{"component":"data2-core-web@GoogleFont","params":{"fontFamily":"Aldrich"}},"rotate":{"params":{"compare":{"params":{"components":[{"params":{"subject":{"params":{"compare":{"params":{"components":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"tickRepeaterIndex"}}},"component":"data2-core-types@Reference"},{"component":"data2-core-primitives@Number","params":{"content":5}}]},"component":"data2-core-numerical-operators@Multiply"},"then":{"params":{"components":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"tickRepeaterIndex"}}},"component":"data2-core-types@Reference"},{"component":"data2-core-primitives@Number","params":{"content":5}}]},"component":"data2-core-numerical-operators@Multiply"},"else":{"component":"data2-core-primitives@String","params":{"content":"60"}}},"component":"data2-core-flow@If"},"comparisonSubject":{"component":"data2-core-primitives@Number","params":{"content":20}}},"component":"data2-core-comparison-operators@EqualOrGreaterThan"},{"params":{"subject":{"params":{"compare":{"params":{"components":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"tickRepeaterIndex"}}},"component":"data2-core-types@Reference"},{"component":"data2-core-primitives@Number","params":{"content":5}}]},"component":"data2-core-numerical-operators@Multiply"},"then":{"params":{"components":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"tickRepeaterIndex"}}},"component":"data2-core-types@Reference"},{"component":"data2-core-primitives@Number","params":{"content":5}}]},"component":"data2-core-numerical-operators@Multiply"},"else":{"component":"data2-core-primitives@String","params":{"content":"60"}}},"component":"data2-core-flow@If"},"comparisonSubject":{"component":"data2-core-primitives@Number","params":{"content":40}}},"component":"data2-core-comparison-operators@EqualOrLesserThan"}]},"component":"data2-core-logical-operators@And"},"then":{"component":"data2-core-primitives@String","params":{"content":"180"}}},"component":"data2-core-flow@If"},"onVisibleOnScreen":{"params":{"module":{"params":{"reference":"__UIState"},"component":"data2-core-types@InteractiveModuleReference"},"prop":{"component":"data2-core-user-interface@StateProp","params":{"componentId":{"component":"data2-core-primitives@String","params":{"content":"69a889a3d0e9ea7801adae7d"}},"key":{"component":"data2-core-primitives@String","params":{"content":"initialized"}}}},"value":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-types@Setter"}}},{"_id":"69a1e4380023321294aaa322","parent":"69a1e4380023321294aaa321","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":28,"height":12,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":0,"exactX":false,"exactY":false}},"textSize":{"component":"data2-core-primitives@Number","params":{"content":"3"}},"textFormat":{"disabled":false,"component":"data2-core-types@TextFormat","params":{"textOverflow":false,"verticalAlignment":"top","lineHeight":1.85,"horizontalAlignment":"center"}},"textColor":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(238,238,238,1)"}},"childrenOverflow":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},{"_id":"69a1e4380023321294aaa32b","parent":"69a1e4380023321294aaa32a","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":12,"height":150,"exactWidth":12,"exactHeight":150}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":4,"y":"-19","exactX":false,"exactY":false}},"fill":{"disabled":false,"component":"data2-core-types@Fill","params":{"backgrounds":[{"params":{"color":{"disabled":true,"component":"data2-core-types@Color","params":{}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"XBGBRMoI5HSfiCOhau_p4"}},"size":"contain","positionX":"center","positionY":"center","repeat":"no-repeat"},"component":"data2-core-types@Background"}]}}},"index":0},{"_id":"69a1e4380023321294aaa32e","parent":"69a1e4380023321294aaa32d","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":15,"height":78,"exactWidth":false,"exactHeight":false}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":0,"y":"34","exactX":false,"exactY":false}},"fill":{"disabled":false,"component":"data2-core-types@Fill","params":{"backgrounds":[{"params":{"color":{"disabled":true,"component":"data2-core-types@Color","params":{}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"ZTuEKt7s_JcyMCV61rrAb"}},"size":"contain","positionX":"center","positionY":"center","repeat":"no-repeat"},"component":"data2-core-types@Background"}]}}}},{"_id":"69a1e4380023321294aaa328","parent":"69a1e4380023321294aaa327","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"border":{"component":"data2-core-types@Border","params":{"color":"#808080","radius":{},"width":{"left":"0","top":"0","right":"0","bottom":"0"}}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":10,"height":108,"exactWidth":10,"exactHeight":107.88}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":4,"y":10,"exactX":false,"exactY":false}},"fill":{"disabled":false,"component":"data2-core-types@Fill","params":{"backgrounds":[{"params":{"color":{"disabled":true,"component":"data2-core-types@Color","params":{}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"component":"data2-core-types@FileComponentUrlReference","params":{"reference":"A3i9OhdoejkG9ix_rNioY"}},"size":"contain","positionX":"center","positionY":"center","repeat":"no-repeat"},"component":"data2-core-types@Background"}]}}}},{"_id":"69a1e4380023321294aaa323","parent":"69a1e4380023321294aaa322","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1,"height":10,"exactHeight":10,"exactWidth":0.91}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":26,"y":"2","exactX":false,"exactY":false}},"fill":{"disabled":false,"component":"data2-core-types@Fill","params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]}},"rotate":{"component":"data2-core-primitives@Number","params":{"content":"9"}}}},{"_id":"69a1e4380023321294aaa324","parent":"69a1e4380023321294aaa322","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1,"height":10,"exactHeight":10,"exactWidth":0.91}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":"1","y":2,"exactX":false,"exactY":false}},"fill":{"disabled":false,"component":"data2-core-types@Fill","params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]}},"rotate":{"component":"data2-core-primitives@Number","params":{"content":"-6"}}}},{"_id":"69a1e7b70023321294aaa339","parent":"69a1e4380023321294aaa322","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1,"height":10,"exactHeight":10,"exactWidth":0.91}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":"-7","y":"3","exactX":false,"exactY":false}},"fill":{"disabled":false,"component":"data2-core-types@Fill","params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]}},"rotate":{"component":"data2-core-primitives@Number","params":{"content":"-11"}}}},{"_id":"69a1e7ea0023321294aaa33a","parent":"69a1e4380023321294aaa322","component":"data2-core-primitives@Block","system":"6138ba0292425036c3b32255","params":{"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1,"height":10,"exactHeight":10,"exactWidth":0.91}},"position":{"component":"data2-core-types@Position","params":{"freeTransform":true,"x":"35","y":"3","exactX":false,"exactY":false}},"fill":{"disabled":false,"component":"data2-core-types@Fill","params":{"backgrounds":[{"params":{"color":{"disabled":false,"component":"data2-core-types@Color","params":{"rgba":"rgba(255,255,255,1)"}},"gradient":{"disabled":true,"component":"data2-core-types@ColorGradient","params":{}},"image":{"disabled":true,"component":"data2-core-types@String","params":{}}},"component":"data2-core-types@Background"}]}},"rotate":{"component":"data2-core-primitives@Number","params":{"content":"13"}}}}]}},{"_id":"5fc4faeec8da12be8bf3d08a","component":"data2-core@Data2TableDataSource","system":"5e3b796d6228227ca637d0f4","params":{"paginate":{"default":1000},"super":{},"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"fileId"}},"title":"File ID","component":"data2-core-primitives@ObjectId"},"break":true}],"hooks":{"before":{"all":[{"hook":"softDelete"}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"timestamp","options":{"fields":["createdAt","updatedAt"]}}],"update":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}],"patch":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}]},"after":{"all":[{"hook":"fileUrl","options":{"downloadField":"params.fileUrl","uploadField":"params.uploadFileUrl","enhanceSchema":false}}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"update":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"patch":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"remove":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}]}},"multi":["create"],"useEstimatedDocumentCount":true},"reference":"FileComponentInstancesTableDataSource","updatedAt":"2022-12-19T20:42:51.837Z","createdAt":"2020-11-30T13:59:52.294Z"},{"reference":"ApplicationsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"698575ee1f6df986918822ac","displayName":"roue-erp","reference":"gC1LVj1eYgK_NzMM37CkI","params":{"responseHeaders":{"X-Frame-Options":{"params":{"content":""},"component":"data2-core-primitives@String"},"Content-Security-Policy":{"params":{"content":""},"component":"data2-core-primitives@String"},"X-XSS-Protection":{"params":{"content":""},"component":"data2-core-primitives@String"}},"domain":{"component":"data2-core-primitives@String","params":{"content":"erp"}},"entryPoint":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Router","reference":"XGxUgyQ-5U2VmVp3rFvVv"}}},"system":"6138ba0292425036c3b32255","component":"data2-core-primitives@Application"}]}},{"reference":"DataComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a70b5c9d4bd75cc974afd33","component":"data2-core@AuthenticationStrategy","system":"6138ba0292425036c3b32255","params":{"credentials":[{"key":"email"},{"key":"password"}],"verifier":{"component":"data2-core-types@DataSetReference","params":{"reference":"erp-usersDataSet"}},"email":"email","password":"password","role":"role","roleDefault":"VIEWER"},"reference":"roueErpAuth"},{"_id":"6a70b5bd33123b8c9cd24f50","component":"data2-core@DataSet","system":"6138ba0292425036c3b32255","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"erp-users"}}},"reference":"erp-usersDataSet"},{"_id":"6a70b5bd501ce6887ade0a02","component":"data2-core@Data2TableDataSource","system":"6138ba0292425036c3b32255","params":{"table":"erp-users","schema":[{"component":"data2-core-types@Field","params":{"key":"name","title":"Nome","component":"data2-core-primitives@String","required":true}},{"component":"data2-core-types@Field","params":{"key":"email","title":"Email","component":"data2-core-primitives@String","required":true}},{"component":"data2-core-types@Field","params":{"key":"password","title":"Senha","component":"data2-core-types@Password","required":true}},{"component":"data2-core-types@Field","params":{"key":"role","title":"Role","component":"data2-core-primitives@String","required":true}},{"component":"data2-core-types@Field","params":{"key":"active","title":"Ativo","component":"data2-core-primitives@Boolean"}}]},"reference":"erp-users"},{"_id":"697941728a8b2091975278cf","component":"data2-core@DataSet","system":"6138ba0292425036c3b32255","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"3fXM8YvdwCs60A6EWFjIG"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"pagination":{"size":20}},"reference":"c8xgoXMx8OQnihp1jTMhW"},{"_id":"6a7325d250d16ad2237ba786","component":"data2-core@DataSet","system":"6138ba0292425036c3b32255","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"erp-users-directory"}}},"reference":"erp-users-directoryDataSet"},{"_id":"6986430c4f4c81f84ae02f9f","component":"data2-core@DataSet","system":"6138ba0292425036c3b32255","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"AFdxWsoHeSKzkhzo08iRG"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"pagination":{"size":20},"lookupDataSets":{"invoice":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"VTddmR9WQ3FNXGjSiXOGf"}}},"aggregations":[{"component":"data2-core-registry@DataSetAggregation","params":{"group":[{"component":"data2-core-registry@DataSetAggregationField","params":{"field":{"params":{"content":"invoice"},"component":"data2-core-primitives@String"}}},{"component":"data2-core-registry@DataSetAggregationField","params":{"field":{"params":{"content":"type"},"component":"data2-core-primitives@String"}}}],"expressions":[{"component":"data2-core-registry@DataSetAggregationExpression","params":{"operation":"sum","field":{"params":{"content":"total_value"},"component":"data2-core-primitives@String"}}}]}}]},"reference":"N3xqOKU6XKLwyvg9E8vgh"},{"_id":"697942ba8a8b2091975278d1","component":"data2-core@DataSet","system":"6138ba0292425036c3b32255","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"fB4xG69CSwqDgBOy2Mzxx"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"pagination":{"size":20},"lookupDataSets":{"material":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"Tne6oMht3ZPMmskeKwNxm"}},"location_a":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"c8xgoXMx8OQnihp1jTMhW"}},"location_b":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"c8xgoXMx8OQnihp1jTMhW"}}},"aggregations":[{"component":"data2-core-registry@DataSetAggregation","params":{"group":[{"component":"data2-core-registry@DataSetAggregationField","params":{"field":{"component":"data2-core-primitives@String","params":{"content":"material"}}}},{"component":"data2-core-registry@DataSetAggregationField","params":{"field":{"component":"data2-core-primitives@String","params":{"content":"location_b"}}}}],"expressions":[{"component":"data2-core-registry@DataSetAggregationExpression","params":{"operation":"sum","field":{"component":"data2-core-primitives@String","params":{"content":"amount"}},"as":{"component":"data2-core-primitives@String","params":{"content":"inbound"}}}}]}},{"component":"data2-core-registry@DataSetAggregation","params":{"group":[{"component":"data2-core-registry@DataSetAggregationField","params":{"field":{"component":"data2-core-primitives@String","params":{"content":"material"}}}},{"component":"data2-core-registry@DataSetAggregationField","params":{"field":{"component":"data2-core-primitives@String","params":{"content":"location_a"}}}}],"expressions":[{"component":"data2-core-registry@DataSetAggregationExpression","params":{"operation":"sum","field":{"component":"data2-core-primitives@String","params":{"content":"amount"}},"as":{"component":"data2-core-primitives@String","params":{"content":"outbound"}}}}]}}]},"reference":"EzdXI4XQ0W8UbF3_24jWZ"},{"_id":"6986426e4f4c81f84ae02f9d","component":"data2-core@DataSet","system":"6138ba0292425036c3b32255","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"_SqTkdeEjs3zFjkeq-gU7"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"pagination":{"size":20},"lookupDataSets":{"buyer":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"cZdetMQLGKekc42K7upQM"}},"issuer":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"cZdetMQLGKekc42K7upQM"}}}},"reference":"VTddmR9WQ3FNXGjSiXOGf"},{"_id":"697943748a8b2091975278d7","component":"data2-core@DataSet","system":"6138ba0292425036c3b32255","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"veJ5QHC2RnrNagCrWlTSx"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"pagination":{"size":20}},"reference":"cZdetMQLGKekc42K7upQM"},{"_id":"69792e678a8b2091975278be","component":"data2-core@DataSet","system":"6138ba0292425036c3b32255","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"n7SZQ022DjhprT6ZRIraL"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1000}}},"sort":{"params":{"code":{"component":"data2-core-primitives@String","params":{"content":"1"}}},"component":"data2-core-types@DataSetSort"}},"reference":"Tne6oMht3ZPMmskeKwNxm"},{"_id":"69f0385f6a1455035d76d52b","component":"data2-core@DataSet","system":"6138ba0292425036c3b32255","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"AIAlGrzo3dWynlhcezNGJ"}}},"reference":"AIAlGrzo3dWynlhcezNGJDataSet"},{"_id":"697943298a8b2091975278d5","component":"data2-core@DataSet","system":"6138ba0292425036c3b32255","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"CYV0eAyxr_2piZQjfWlFo"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"pagination":{"size":20}},"reference":"_K9F_EIkSHX2-SJwN0Hdf"},{"_id":"697941108a8b2091975278cd","component":"data2-core@DataSet","system":"6138ba0292425036c3b32255","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"H_RfPmfpjpqfp0RNZgJ92"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"pagination":{"size":20}},"reference":"SpYoZMAqwiTIaVJ7Y9FS-"},{"_id":"6979315b8a8b2091975278c6","component":"data2-core@DataSet","system":"6138ba0292425036c3b32255","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"qFZw_pTzuhDmu6E4SDpIY"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"pagination":{"size":20},"lookupDataSets":{"material":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"Tne6oMht3ZPMmskeKwNxm"}},"sku_reference":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"zmMs0DTyG1aBUtJmeWjox"}}}},"reference":"dW_BE-9PxPXdd-lMZssy_"},{"_id":"6979431d8a8b2091975278d3","component":"data2-core@DataSet","system":"6138ba0292425036c3b32255","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"r6KSrWUTWBIVOR9F0jQKy"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"pagination":{"size":20},"lookupDataSets":{"params":{"fields":{"invoice":{"params":{"reference":"VTddmR9WQ3FNXGjSiXOGf"},"component":"data2-core-types@DataSetReference"}},"fieldsList":[{"key":{"component":"data2-core-primitives@String","params":{"content":"order_items.0.product"}},"value":{"params":{"reference":"Tne6oMht3ZPMmskeKwNxm"},"component":"data2-core-types@DataSetReference"}},{"key":{"component":"data2-core-primitives@String","params":{"content":"order_items.1.product"}},"value":{"params":{"reference":"Tne6oMht3ZPMmskeKwNxm"},"component":"data2-core-types@DataSetReference"}},{"key":{"component":"data2-core-primitives@String","params":{"content":"order_items.2.product"}},"value":{"params":{"reference":"Tne6oMht3ZPMmskeKwNxm"},"component":"data2-core-types@DataSetReference"}},{"key":{"component":"data2-core-primitives@String","params":{"content":"order_items.3.product"}},"value":{"params":{"reference":"Tne6oMht3ZPMmskeKwNxm"},"component":"data2-core-types@DataSetReference"}}]},"component":"data2-core-types@FieldSet"}},"reference":"mMOBOiz-PeT9XbjhViaCN"},{"_id":"697941728a8b2091975278ce","component":"data2-core@Data2TableDataSource","system":"6138ba0292425036c3b32255","params":{"table":"3fXM8YvdwCs60A6EWFjIG","multi":["create"],"super":{},"schema":[{"component":"data2-core-types@Field","params":{"title":"name","key":"name","component":"data2-core-primitives@String","table":"n7SZQ022DjhprT6ZRIraL"}},{"component":"data2-core-types@Field","params":{"title":"type","key":"type","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"company_relation","key":"company_relation","component":"data2-core-types@Lookup","table":"veJ5QHC2RnrNagCrWlTSx"}}]},"reference":"3fXM8YvdwCs60A6EWFjIG"},{"_id":"6a7325d2d96c6ac437222630","component":"data2-core@Data2TableDataSource","system":"6138ba0292425036c3b32255","params":{"table":"erp-users-directory","schema":[{"component":"data2-core-types@Field","params":{"key":"name","title":"Nome","component":"data2-core-primitives@String","required":true}},{"component":"data2-core-types@Field","params":{"key":"email","title":"Email","component":"data2-core-primitives@String","required":true}},{"component":"data2-core-types@Field","params":{"key":"role","title":"Role","component":"data2-core-primitives@String","required":true}},{"component":"data2-core-types@Field","params":{"key":"active","title":"Ativo","component":"data2-core-primitives@Boolean"}},{"component":"data2-core-types@Field","params":{"key":"erpUserRef","title":"ERP User Ref","component":"data2-core-primitives@String"}}]},"reference":"erp-users-directory"},{"_id":"6986430c4f4c81f84ae02f9e","component":"data2-core@Data2TableDataSource","system":"6138ba0292425036c3b32255","params":{"table":"AFdxWsoHeSKzkhzo08iRG","multi":["create"],"super":{},"schema":[{"component":"data2-core-types@Field","params":{"title":"total_value","key":"total_value","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"title":"type","key":"type","component":"data2-core-primitives@String","table":"veJ5QHC2RnrNagCrWlTSx","sensitive":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"PAYMENT,INVOICE_UPDATE,CLOSING_PAYMENT"}}}}},{"component":"data2-core-types@Field","params":{"title":"invoice","key":"invoice","component":"data2-core-types@Lookup","list":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"table":"_SqTkdeEjs3zFjkeq-gU7"}},{"component":"data2-core-types@Field","params":{"title":"date","key":"date","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"attachment","key":"attachment","component":"data2-core-types@File"}}]},"reference":"AFdxWsoHeSKzkhzo08iRG"},{"_id":"697942ba8a8b2091975278d0","component":"data2-core@Data2TableDataSource","system":"6138ba0292425036c3b32255","params":{"table":"fB4xG69CSwqDgBOy2Mzxx","multi":["create"],"super":{},"schema":[{"component":"data2-core-types@Field","params":{"title":"amount","key":"amount","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"title":"material","key":"material","component":"data2-core-types@Lookup","table":"n7SZQ022DjhprT6ZRIraL"}},{"component":"data2-core-types@Field","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Origin"}},"key":"location_a","component":"data2-core-types@Lookup","table":"3fXM8YvdwCs60A6EWFjIG"},"break":true},{"component":"data2-core-types@Field","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Destination"}},"key":"location_b","component":"data2-core-types@Lookup","table":"3fXM8YvdwCs60A6EWFjIG"},"break":true},{"component":"data2-core-types@Field","params":{"title":"production_order","key":"production_order","component":"data2-core-types@Lookup","table":"r6KSrWUTWBIVOR9F0jQKy"}},{"component":"data2-core-types@Field","params":{"title":"availability_date","key":"availability_date","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"attachment","key":"attachment","component":"data2-core-types@File","folder":{"component":"data2-core-types@FileComponentReference","params":{"reference":"BRbYXPbHRr3A2JScsma1g"}}}},{"component":"data2-core-types@Field","params":{"key":"material_buy_order","title":"Material Buy Order","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"type","title":"Type","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"notes","title":"Notes","component":"data2-core-primitives@String"}}]},"reference":"fB4xG69CSwqDgBOy2Mzxx"},{"_id":"6986418a4f4c81f84ae02f9c","component":"data2-core@Data2TableDataSource","system":"6138ba0292425036c3b32255","params":{"table":"_SqTkdeEjs3zFjkeq-gU7","multi":["create"],"super":{},"schema":[{"component":"data2-core-types@Field","params":{"component":"data2-core-primitives@String","title":"identifier","key":"identifier"}},{"component":"data2-core-types@Field","params":{"title":"total_value","key":"total_value","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"title":"buyer","key":"buyer","component":"data2-core-types@Lookup","table":"veJ5QHC2RnrNagCrWlTSx"}},{"component":"data2-core-types@Field","params":{"title":"issuer","key":"issuer","component":"data2-core-types@Lookup","table":"veJ5QHC2RnrNagCrWlTSx"}},{"component":"data2-core-types@Field","params":{"title":"issue_date","key":"issue_date","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"attachment","key":"attachment","component":"data2-core-types@File","folder":{"component":"data2-core-types@FileComponentReference","params":{"reference":"dk0bIesB4TsRc0u7Fg2ai"}}}}]},"reference":"_SqTkdeEjs3zFjkeq-gU7"},{"_id":"697943688a8b2091975278d6","component":"data2-core@Data2TableDataSource","system":"6138ba0292425036c3b32255","params":{"table":"veJ5QHC2RnrNagCrWlTSx","multi":["create"],"super":{},"schema":[{"component":"data2-core-types@Field","params":{"title":"name","key":"name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"location","key":"location","component":"data2-core-types@Lookup","table":"3fXM8YvdwCs60A6EWFjIG"}},{"component":"data2-core-types@Field","params":{"title":"relation","key":"relation","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"SELF,SUPPLIER"}}}}}]},"reference":"veJ5QHC2RnrNagCrWlTSx"},{"_id":"69792de18a8b2091975278ba","component":"data2-core@Data2TableDataSource","system":"6138ba0292425036c3b32255","params":{"table":"n7SZQ022DjhprT6ZRIraL","multi":["create"],"super":{},"schema":[{"component":"data2-core-types@Field","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"description"}},"key":"model","component":"data2-core-primitives@String"},"break":true},{"component":"data2-core-types@Field","params":{"title":"code","key":"code","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"type","key":"type","component":"data2-core-primitives@String","validation":{"oneOf":{"component":"data2-core-primitives@String","params":{"content":"DIAL,WATCHROLL,PACKAGING,CASE,CASEBACK,HANDS_HM,HANDS_MAIN_CHRONOGRAPH,HANDS_SUB_DIAL, INSTRUCTIONS_MANUAL,STRAP,WATCH,MOVEMENT"}}}}},{"component":"data2-core-types@Field","params":{"title":"color","key":"color","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"min_stock_limit","key":"min_stock_limit","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"title":"image","key":"image","component":"data2-core-types@File","folder":{"component":"data2-core-types@FileComponentReference","params":{"reference":"8Rc3vfB3jipUE4jPIniME"}}}}]},"reference":"n7SZQ022DjhprT6ZRIraL"},{"_id":"69f0385f4a0e21f4d2afcfbe","component":"data2-core@Data2TableDataSource","system":"6138ba0292425036c3b32255","params":{"table":"AIAlGrzo3dWynlhcezNGJ","schema":[{"component":"data2-core-types@Field","params":{"key":"buy_order","title":"Buy Order","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"material","title":"Material","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"qty","title":"Quantity","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"key":"unit_cost","title":"Unit Cost","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"key":"received_qty","title":"Received Qty","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"key":"notes","title":"Notes","component":"data2-core-primitives@String"}}]},"reference":"AIAlGrzo3dWynlhcezNGJ"},{"_id":"697943298a8b2091975278d4","component":"data2-core@Data2TableDataSource","system":"6138ba0292425036c3b32255","params":{"table":"CYV0eAyxr_2piZQjfWlFo","multi":["create"],"super":{},"schema":[{"component":"data2-core-types@Field","params":{"key":"invoice","title":"Invoice","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"destination","title":"Destination","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"supplier","title":"Supplier","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"status","title":"Status","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"identifier","title":"Identifier","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"expected_date","title":"Expected Date","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"key":"received_date","title":"Received Date","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"key":"currency","title":"Currency","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"notes","title":"Notes","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"material","title":"Material","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"qty","title":"Quantity","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"key":"unit_cost","title":"Unit Cost","component":"data2-core-primitives@Number"}}]},"reference":"CYV0eAyxr_2piZQjfWlFo"},{"_id":"697940f88a8b2091975278cc","component":"data2-core@Data2TableDataSource","system":"6138ba0292425036c3b32255","params":{"table":"H_RfPmfpjpqfp0RNZgJ92","multi":["create"],"super":{},"schema":[{"component":"data2-core-types@Field","params":{"title":"amount","key":"amount","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"title":"material","key":"material","component":"data2-core-types@Lookup","table":"n7SZQ022DjhprT6ZRIraL"}},{"component":"data2-core-types@Field","params":{"title":"location","key":"location","component":"data2-core-types@Lookup","table":"3fXM8YvdwCs60A6EWFjIG"}}]},"reference":"H_RfPmfpjpqfp0RNZgJ92"},{"_id":"69a0f3df45643701a92d0b04","component":"data2-core@DataSet","system":"6138ba0292425036c3b32255","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"n7SZQ022DjhprT6ZRIraL"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"pagination":{"size":20},"filter":{"params":{"type":{"component":"data2-core-primitives@String","params":{"content":"WATCH"}}},"component":"data2-core-types@DataSetFilter"}},"reference":"zmMs0DTyG1aBUtJmeWjox"},{"_id":"69792de58a8b2091975278bb","component":"data2-core@Data2TableDataSource","system":"6138ba0292425036c3b32255","params":{"table":"qFZw_pTzuhDmu6E4SDpIY","multi":["create"],"super":{},"schema":[{"component":"data2-core-types@Field","params":{"component":"data2-core-types@Lookup","table":"n7SZQ022DjhprT6ZRIraL","title":"sku_reference","key":"sku_reference"}},{"component":"data2-core-types@Field","params":{"component":"data2-core-types@Lookup","table":"n7SZQ022DjhprT6ZRIraL","title":"MATERIAL","key":"material","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},{"component":"data2-core-types@Field","params":{"component":"data2-core-primitives@Number","table":"n7SZQ022DjhprT6ZRIraL","title":"qtd","key":"qtd","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}}]},"reference":"qFZw_pTzuhDmu6E4SDpIY"},{"_id":"6979431d8a8b2091975278d2","component":"data2-core@Data2TableDataSource","system":"6138ba0292425036c3b32255","params":{"table":"r6KSrWUTWBIVOR9F0jQKy","multi":["create"],"super":{},"schema":[{"component":"data2-core-types@Field","params":{"title":"order_items","key":"order_items","component":"data2-core-primitives@Object","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"schema":{"product":{"params":{"component":"data2-core-types@Lookup","title":"product","key":"product","table":"n7SZQ022DjhprT6ZRIraL"},"component":"data2-core-types@Field"},"amount":{"params":{"title":"amount","key":"amount","component":"data2-core-primitives@Number"},"component":"data2-core-types@Field"}}}},{"component":"data2-core-types@Field","params":{"title":"invoice","key":"invoice","component":"data2-core-types@Lookup","table":"_SqTkdeEjs3zFjkeq-gU7"}},{"component":"data2-core-types@Field","params":{"title":"order_date","key":"order_date","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"key":"factory_location","title":"Factory Location","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"status","title":"Status","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"identifier","title":"Identifier","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"expected_date","title":"Expected Date","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"key":"completed_date","title":"Completed Date","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"key":"bom_snapshot","title":"BOM Snapshot","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"watch_sku","title":"Watch SKU","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"qty","title":"Quantity","component":"data2-core-primitives@Number"}}],"semanticSearchFields":[]},"reference":"r6KSrWUTWBIVOR9F0jQKy"},{"_id":"6a70b77e095876e75a236f0d","component":"data2-core@Store","system":"6138ba0292425036c3b32255","params":{"initialData":{"email":"","password":"","error":""}},"reference":"loginForm"},{"_id":"641a3255f38a4905a8b69246","component":"data2-core@Store","system":"6138ba0292425036c3b32255","params":{"initialData":{"params":{"fields":{"glow":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}},"component":"data2-core-types@FieldSet"}},"reference":"x5Kpqa4iFzEmUIlg18-fu"},{"_id":"699a71b026eafc959b4ecb9b","component":"data2-core@Store","system":"6138ba0292425036c3b32255","params":{"initialData":{"ticker":{"component":"data2-core-primitives@String","params":{"content":"0"}},"hours":{"component":"data2-core-primitives@String","params":{}},"minutes":{"component":"data2-core-primitives@String","params":{}},"watch_initialized":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}},"reference":"8zzw36OuKRjAEjcZ5n8Cg"}]}},{"reference":"BundlesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}}],"processesParams":{}}}}