feat: DOBRADO_LOJA env injetado no build — builds separadas Uniao/Alianca/Ambos
Build Fechamento de Caixa / build (macos-14, app) (push) Has been cancelled
Build Fechamento de Caixa / build (ubuntu-22.04, deb) (push) Has been cancelled
Build Fechamento de Caixa / build (windows-2022, msi) (push) Has been cancelled

- app.rs: LOJA_FIXA via option_env!(DOBRADO_LOJA), get_loja_fixa command
- app.rs: set_loja bloqueado se build fixa
- index.html: DOMContentLoaded detecta loja fixa e esconde seletor
- 3 executáveis: fc-uniao.exe / fc-alianca.exe / fc-ambos.exe
This commit is contained in:
root
2026-07-02 20:53:40 +00:00
parent 5c9cb1905b
commit 659d9779b3
3 changed files with 51 additions and 2 deletions
+1
View File
@@ -111,6 +111,7 @@ fn main() {
plugins::printer::ativar_modo_teste_impressao,
// App
plugins::app::get_loja,
plugins::app::get_loja_fixa,
plugins::app::set_loja,
plugins::app::get_config,
plugins::app::set_config,
+27 -1
View File
@@ -1,5 +1,8 @@
//! Plugin de configuração da aplicação (loja, preferências)
//! Persistido em config.json ao lado do banco SQLite.
//!
//! LOJA_FIXA: definido em tempo de build via env DOBRADO_LOJA (Uniao | Alianca).
//! Quando definido, a loja é travada e o seletor do formulário fica desabilitado.
use serde::{Deserialize, Serialize};
use std::fs;
@@ -7,6 +10,9 @@ use std::path::PathBuf;
use std::sync::Mutex;
use tauri::State;
/// Indica se a loja foi fixada em tempo de build.
pub const LOJA_FIXA: Option<&'static str> = option_env!("DOBRADO_LOJA");
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct AppConfig {
pub loja: String,
@@ -15,17 +21,28 @@ pub struct AppConfig {
pub turno_default: String,
pub sync_automatico: bool,
pub auto_open_printer: bool,
/// Verdadeiro quando a build tem loja fixa (não permite trocar no formulário)
#[serde(skip_serializing_if = "Option::is_none")]
pub loja_fixa: Option<bool>,
}
impl AppConfig {
/// Loja padrão: o env DOBRADO_LOJA se existir, senão "Uniao"
pub fn default_loja() -> String {
LOJA_FIXA.unwrap_or("Uniao").to_string()
}
}
impl Default for AppConfig {
fn default() -> Self {
Self {
loja: "Uniao".to_string(),
loja: Self::default_loja(),
pdv_nome: "PDV-01".to_string(),
operador_default: String::new(),
turno_default: String::new(),
sync_automatico: true,
auto_open_printer: false,
loja_fixa: LOJA_FIXA.map(|_| true),
}
}
}
@@ -65,8 +82,17 @@ pub fn get_loja(state: State<'_, AppState>) -> String {
state.config.lock().unwrap().loja.clone()
}
#[tauri::command]
pub fn get_loja_fixa() -> Option<String> {
LOJA_FIXA.map(|s| s.to_string())
}
#[tauri::command]
pub fn set_loja(state: State<'_, AppState>, loja: String) -> Result<(), String> {
// Se loja_fixa está ativa, não permite alterar
if LOJA_FIXA.is_some() {
return Err("Loja fixa em tempo de build — não é possível trocar.".to_string());
}
state.config.lock().unwrap().loja = loja;
state.save()
}