129 lines
3.4 KiB
Rust
129 lines
3.4 KiB
Rust
use crate::domain::entities::nota::Nota;
|
|
use crate::domain::entities::{
|
|
chave_serie::ChaveSerie,
|
|
layout::{Layout, LayoutXlsx},
|
|
resultado_analise::{ResultadoAnalise, ResultadoPreAnalise},
|
|
};
|
|
use crate::domain::errors::ResumoAvisos;
|
|
use rusqlite::Connection;
|
|
use std::path::PathBuf;
|
|
use std::sync::{Arc, Mutex};
|
|
|
|
/// Todos os eventos/interações da UI.
|
|
#[derive(Debug, Clone)]
|
|
pub enum Message {
|
|
// --- Inicialização ---
|
|
BancoInicializado(Result<(Arc<Mutex<Connection>>, bool, Vec<Layout>), String>),
|
|
LayoutsRecarregados(Vec<Layout>),
|
|
|
|
// --- Navegação ---
|
|
IrParaImportacao,
|
|
IrParaConfiguracaoColunas,
|
|
IrParaLayouts,
|
|
Voltar,
|
|
|
|
// --- Arquivo ---
|
|
SelecionarArquivo,
|
|
ArquivoSelecionado(PathBuf),
|
|
/// Arquivo arrastado e solto sobre a janela (drag-and-drop).
|
|
ArquivoSolto(PathBuf),
|
|
/// Arquivo está sendo arrastado sobre a janela (hover).
|
|
ArquivoEmHover,
|
|
/// Arquivo arrastado saiu da janela sem ser solto.
|
|
ArquivoHoverSaiu,
|
|
AbaSelecionada(String),
|
|
|
|
// --- XLSX: abas carregadas em background ---
|
|
AbaxlsxCarregadas {
|
|
caminho: PathBuf,
|
|
abas: Vec<String>,
|
|
layout_xlsx: LayoutXlsx,
|
|
nome_layout: String,
|
|
},
|
|
XlsxErroAoCarregar(String),
|
|
|
|
// --- Background tasks ---
|
|
AnaliseCompleta(ResultadoPendente),
|
|
|
|
// --- Configuração CSV ---
|
|
DelimitadorAlterado(char),
|
|
EncodingAlterado(String),
|
|
LinhaCabecalhoAlterada(usize),
|
|
IndiceNumeroAlterado(usize),
|
|
IndiceSerieAlterado(usize),
|
|
IndiceValorToggle(bool),
|
|
IndiceValorAlterado(usize),
|
|
IndiceDataToggle(bool),
|
|
IndiceDataAlterado(usize),
|
|
IndiceDocTipoToggle(bool),
|
|
IndiceDocTipoAlterado(usize),
|
|
|
|
// --- Configuração XLSX ---
|
|
AbaXlsxAlterada(String),
|
|
PosNumeroAlterada(String),
|
|
PosSerieAlterada(String),
|
|
PosValorToggle(bool),
|
|
PosValorAlterada(String),
|
|
PosDataToggle(bool),
|
|
PosDataAlterada(String),
|
|
PosDocTipoToggle(bool),
|
|
PosDocTipoAlterada(String),
|
|
|
|
// --- Análise ---
|
|
ExecutarImportacao,
|
|
ReanalisarArquivo,
|
|
ConfirmarExpansaoFaltantes,
|
|
CancelarExpansao,
|
|
NovaAnalise,
|
|
|
|
// --- Resultado ---
|
|
PaginaFaltantesAlterada(usize),
|
|
PaginaDuplicatasAlterada(usize),
|
|
ItensPorPaginaAlterado(usize),
|
|
CopiarFaltantes(ChaveSerie),
|
|
CopiarDuplicatas(ChaveSerie),
|
|
ExportarPdf,
|
|
PdfExportado(Result<PathBuf, String>),
|
|
|
|
// --- Layouts ---
|
|
LayoutSelecionado(i64),
|
|
SalvarLayout,
|
|
NomeLayoutAlterado(String),
|
|
ExcluirLayout(i64),
|
|
ExclusaoConfirmada(i64),
|
|
ExportarLayoutJson(i64),
|
|
ImportarLayoutJson,
|
|
LayoutJsonImportado(String),
|
|
SobrescreverLayout(Layout),
|
|
|
|
// --- Modal ---
|
|
ModalTextoAlterado(String),
|
|
ModalConfirmado,
|
|
ModalCancelado,
|
|
|
|
// --- Sem operação (used as fallback) ---
|
|
Noop,
|
|
}
|
|
|
|
/// Resultado enviado pela task de análise em background para a UI.
|
|
#[derive(Debug, Clone)]
|
|
pub enum ResultadoPendente {
|
|
/// Análise concluída com sucesso.
|
|
Concluido {
|
|
resultado: ResultadoAnalise,
|
|
avisos: Option<ResumoAvisos>,
|
|
notas: Option<Vec<Nota>>,
|
|
},
|
|
/// Pré-análise concluída mas precisa de confirmação do usuário.
|
|
AguardandoConfirmacao {
|
|
pre: ResultadoPreAnalise,
|
|
series_excessivas: Vec<(ChaveSerie, u64)>,
|
|
avisos: ResumoAvisos,
|
|
notas: Vec<Nota>,
|
|
},
|
|
/// Arquivo importado não continha notas válidas.
|
|
Vazio,
|
|
/// Erro durante importação ou análise.
|
|
Erro(String),
|
|
}
|