diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 92a4329..2a70c12 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -96,6 +96,8 @@ fn main() { plugins::supabase::sb_carregar_rascunho, plugins::supabase::sb_listar_recentes, plugins::supabase::sb_buscar_por_id, + plugins::supabase::sb_buscar_por_uuid, + plugins::supabase::sb_atualizar_fechamento, plugins::supabase::sb_salvar_listas, plugins::supabase::sb_carregar_listas, plugins::supabase::sb_online, diff --git a/src-tauri/src/plugins/supabase.rs b/src-tauri/src/plugins/supabase.rs index 22fdc6f..1678d99 100644 --- a/src-tauri/src/plugins/supabase.rs +++ b/src-tauri/src/plugins/supabase.rs @@ -153,7 +153,59 @@ impl SupabaseClient { } } - /// Lista fechamentos recentes de uma loja. + /// Busca um fechamento pelo UUID. + pub fn buscar_por_uuid(&self, uuid: &str) -> Result, SupabaseError> { + let url = format!( + "{}/rest/v1/fechamentos_web?uuid=eq.{}&select=*", + self.base_url, uuid + ); + + let resp = self + .http + .get(&url) + .headers(self.headers(false)) + .send()?; + + if resp.status().is_success() { + let arr: Vec = resp.json()?; + Ok(arr.into_iter().next()) + } else { + let status = resp.status(); + let body = resp.text().unwrap_or_default(); + Err(SupabaseError::Api(format!( + "HTTP {}: {}", + status.as_u16(), + body + ))) + } + } + + /// Atualiza campos específicos de um fechamento pelo UUID (PATCH). + pub fn atualizar_fechamento(&self, uuid: &str, updates: &serde_json::Value) -> Result { + let url = format!( + "{}/rest/v1/fechamentos_web?uuid=eq.{}", + self.base_url, uuid + ); + + let resp = self + .http + .patch(&url) + .headers(self.headers(true)) + .json(updates) + .send()?; + + if resp.status().is_success() { + Ok(serde_json::json!({ "ok": true, "uuid": uuid })) + } else { + let status = resp.status(); + let body = resp.text().unwrap_or_default(); + Err(SupabaseError::Api(format!( + "HTTP {}: {}", + status.as_u16(), + body + ))) + } + } pub fn listar_recentes(&self, loja: &str, limite: i64) -> Result, SupabaseError> { let url = format!( "{}/rest/v1/fechamentos_web?loja=eq.{}&order=data.desc,atualizado_em.desc&limit={}&select=id,uuid,data,operador,turno,saldo_troco,saldo_esperado,fechamento,sync_status,observacoes,atualizado_em", @@ -322,6 +374,23 @@ pub fn sb_buscar_por_id( sb.buscar_por_id(id) } +#[tauri::command] +pub fn sb_buscar_por_uuid( + sb: State<'_, SupabaseClient>, + uuid: String, +) -> Result, SupabaseError> { + sb.buscar_por_uuid(&uuid) +} + +#[tauri::command] +pub fn sb_atualizar_fechamento( + sb: State<'_, SupabaseClient>, + uuid: String, + updates: serde_json::Value, +) -> Result { + sb.atualizar_fechamento(&uuid, &updates) +} + #[tauri::command] pub fn sb_salvar_listas( sb: State<'_, SupabaseClient>, diff --git a/src/index.html b/src/index.html index 6c47e30..44ff4cb 100644 --- a/src/index.html +++ b/src/index.html @@ -514,6 +514,12 @@
+
+
🔐 Senha Admin (editar dias anteriores)
+
+ +
+