using CPM; using MLL; using System; using System.Drawing; using System.Windows.Forms; using UI; namespace UI { public partial class FluxoCaixaCadastroPanel : FormularioModelo { private ModeloFcaixa _fluxo = new ModeloFcaixa(); // Controles - Identificação e Data private LV_TEXTBOX1 txtId, txtCodigo, txtDia; // Controles - Classificação private LV_TEXTBOX1 txtPlanoContas, txtCodConta, txtFormaPgto; private Button btnBuscaPlano; // Controles - Valores private LV_TEXTBOX1 txtReceita, txtDespesa; // Controles - Notas private LV_TEXTBOX1 txtObs; public FluxoCaixaCadastroPanel() { this.Titulo = "Lançamento de Fluxo de Caixa"; MontarInterface(); } private void MontarInterface() { // --- SEÇÃO 1: Identificação do Lançamento --- content.Controls.Add(CreateSectionHeader("DADOS DO MOVIMENTO", 20)); txtId = AddInput(content, "ID", 20, 50, 70, 30, true); txtCodigo = AddInput(content, "Nº DOC/CONTROLE", 100, 50, 150, 30); txtDia = AddInput(content, "DATA DO MOVIMENTO", 260, 50, 150, 30); // --- SEÇÃO 2: Classificação Financeira --- content.Controls.Add(CreateSectionHeader("CLASSIFICAÇÃO E CONTA", 110)); // Plano de Contas (Ex: Vendas de Mercadorias, Aluguel, etc.) txtPlanoContas = AddInput(content, "PLANO DE CONTAS / CATEGORIA", 20, 140, 300, 30); btnBuscaPlano = CriarBotaoLupa(325, 156, OnBuscaPlano); // Conta Bancária / Caixa de Origem (Vinculado ao ModeloContasContas) txtCodConta = AddInput(content, "CÓD. CONTA/CAIXA", 370, 140, 150, 30); // Forma de Movimentação (Ex: Dinheiro, Pix, TED) txtFormaPgto = AddInput(content, "FORMA DE MOVIMENTAÇÃO", 530, 140, 200, 30); // --- SEÇÃO 3: Valores (Lado a Lado) --- content.Controls.Add(CreateSectionHeader("VALORES DO LANÇAMENTO", 200)); txtReceita = AddInput(content, "VALOR ENTRADA (R$)", 20, 230, 200, 30); txtReceita.BackColor = Color.FromArgb(230, 255, 230); // Tom esverdeado para entrada txtDespesa = AddInput(content, "VALOR SAÍDA (R$)", 240, 230, 200, 30); txtDespesa.BackColor = Color.FromArgb(255, 230, 230); // Tom avermelhado para saída // --- SEÇÃO 4: Observações --- content.Controls.Add(CreateSectionHeader("HISTÓRICO / OBSERVAÇÕES", 295)); txtObs = AddInput(content, "DETALHAMENTO DO LANÇAMENTO", 20, 325, 710, 60); content.Height = 420; } private Button CriarBotaoLupa(int x, int y, EventHandler clickEvent) { var btn = new Button { Text = "🔍", Location = new Point(x, y), Size = new Size(32, 30), BackColor = AccentBlue, ForeColor = Color.White, FlatStyle = FlatStyle.Flat, Cursor = Cursors.Hand }; btn.FlatAppearance.BorderSize = 0; btn.Click += clickEvent; content.Controls.Add(btn); return btn; } private void OnBuscaPlano(object sender, EventArgs e) => MessageBox.Show("Busca de Plano de Contas"); private void PreencherModel() { _fluxo.CODIGO = txtCodigo.Text; _fluxo.DIA = txtDia.Text; _fluxo.RECEITA = txtReceita.Text; _fluxo.DESPESA = txtDespesa.Text; _fluxo.PLANO_CONTAS = txtPlanoContas.Text; _fluxo.COD_CONTA = txtCodConta.Text; _fluxo.FORMA = txtFormaPgto.Text; _fluxo.OBS = txtObs.Text; } protected override void OnNovo() { _fluxo = new ModeloFcaixa(); txtDia.Text = DateTime.Now.ToString("dd/MM/yyyy"); txtCodigo.Focus(); } protected override void OnSalvar() { try { PreencherModel(); // BLL.Salvar(_fluxo); MessageBox.Show("Movimentação de caixa registrada!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show("Erro: " + ex.Message); } } protected override void OnAlterar() { } protected override void OnExcluir() { } protected override void OnLocalizar() { } protected override void OnCancelar() { OnNovo(); } } }