v1.3.25: add sem_acento() - remove acentos de loja antes de enviar (União→uniao)
This commit is contained in:
@@ -7,6 +7,29 @@ use std::time::Duration;
|
||||
use tauri::State;
|
||||
use thiserror::Error;
|
||||
|
||||
/// Remove acentos de uma string (ex: "União" → "Uniao")
|
||||
fn sem_acento(s: &str) -> String {
|
||||
s.replace("ã", "a")
|
||||
.replace("á", "a")
|
||||
.replace("à", "a")
|
||||
.replace("â", "a")
|
||||
.replace("é", "e")
|
||||
.replace("è", "e")
|
||||
.replace("ê", "e")
|
||||
.replace("í", "i")
|
||||
.replace("ì", "i")
|
||||
.replace("î", "i")
|
||||
.replace("õ", "o")
|
||||
.replace("ó", "o")
|
||||
.replace("ò", "o")
|
||||
.replace("ô", "o")
|
||||
.replace("ú", "u")
|
||||
.replace("ù", "u")
|
||||
.replace("û", "u")
|
||||
.replace("ç", "c")
|
||||
.replace("ñ", "n")
|
||||
}
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
#[allow(dead_code)]
|
||||
pub enum SupabaseError {
|
||||
@@ -69,20 +92,29 @@ impl SupabaseClient {
|
||||
|
||||
/// Salva/atualiza um fechamento na tabela `fechamentos_web`.
|
||||
pub fn salvar_fechamento(&self, estado: &serde_json::Value) -> Result<Value, SupabaseError> {
|
||||
// id_fechamento = {loja}_{data}_{operador} (唯一, existe na tabela)
|
||||
let loja = estado.get("loja").and_then(|v| v.as_str()).unwrap_or("uniao");
|
||||
// Normaliza loja e turno para minúsculo (CHECK constraints do Postgres)
|
||||
let loja = estado
|
||||
.get("loja")
|
||||
.and_then(|v| v.as_str())
|
||||
.map(|s| sem_acento(&s.to_lowercase()).replace(" ", "_"))
|
||||
.unwrap_or_else(|| "uniao".to_string());
|
||||
let data = estado.get("data").and_then(|v| v.as_str()).unwrap_or("");
|
||||
let operador = estado.get("operador").and_then(|v| v.as_str()).unwrap_or("");
|
||||
let id_fechamento = format!("{}_{}_{}", loja, data, operador)
|
||||
.to_lowercase()
|
||||
.replace(" ", "_");
|
||||
let turno = estado
|
||||
.get("turno")
|
||||
.and_then(|v| v.as_str())
|
||||
.map(|s| s.to_lowercase())
|
||||
.unwrap_or_else(|| "manha".to_string());
|
||||
|
||||
let payload = serde_json::json!({
|
||||
"id_fechamento": id_fechamento,
|
||||
"loja": loja,
|
||||
"data": data,
|
||||
"operador": operador,
|
||||
"turno": estado.get("turno").and_then(|v| v.as_str()).unwrap_or(""),
|
||||
"turno": turno,
|
||||
"saldo_troco": estado.get("saldo_troco").and_then(|v| v.as_f64()).unwrap_or(0.0),
|
||||
"saldo_credito": estado.get("credito").and_then(|v| v.as_f64()).unwrap_or(0.0),
|
||||
"saldo_debito": estado.get("debito").and_then(|v| v.as_f64()).unwrap_or(0.0),
|
||||
|
||||
Reference in New Issue
Block a user