176 lines
7.2 KiB
C#
176 lines
7.2 KiB
C#
using CPM;
|
|
using MLL; // Namespace da sua model
|
|
using System;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
using UI; // Namespace do seu FormularioModelo
|
|
|
|
namespace UI
|
|
{
|
|
public partial class ContratosCadastroPanel : FormularioModelo
|
|
{
|
|
private ModeloContrato _contrato = new ModeloContrato();
|
|
|
|
// Controles específicos
|
|
private LV_TEXTBOX1 txtId, txtEmpresaId, txtClienteId, txtDescricao;
|
|
private LV_TEXTBOX1 txtValor, txtDataInicio, txtDataValidade, txtFranquia;
|
|
private LV_TEXTBOX1 txtObservacoes;
|
|
private CheckBox chkAtivo;
|
|
private LV_TEXTBOX1 txtNomeCliente; // Novo campo para o nome
|
|
private Button btnBuscaCliente; // Botão da lupa
|
|
public ContratosCadastroPanel()
|
|
{
|
|
this.Titulo = "Gestão de Contratos";
|
|
MontarInterface();
|
|
}
|
|
|
|
//private void MontarInterface()
|
|
//{
|
|
// // --- SEÇÃO 1: Vínculos e Descrição ---
|
|
// content.Controls.Add(CreateSectionHeader("IDENTIFICAÇÃO DO CONTRATO", 20));
|
|
|
|
// txtId = AddInput(content, "ID", 20, 50, 80, 30, true);
|
|
// txtEmpresaId = AddInput(content, "ID EMPRESA", 110, 50, 100, 30);
|
|
// txtClienteId = AddInput(content, "ID CLIENTE", 220, 50, 100, 30);
|
|
// txtDescricao = AddInput(content, "DESCRIÇÃO DO CONTRATO", 330, 50, 550, 30);
|
|
|
|
// // --- SEÇÃO 2: Valores e Prazos ---
|
|
// content.Controls.Add(CreateSectionHeader("FINANCEIRO E VIGÊNCIA", 110));
|
|
|
|
// txtValor = AddInput(content, "VALOR MENSAL (R$)", 20, 140, 150, 30);
|
|
// txtDataInicio = AddInput(content, "DATA INÍCIO", 180, 140, 150, 30);
|
|
// txtDataValidade = AddInput(content, "VALIDADE/TÉRMINO", 340, 140, 150, 30);
|
|
// txtFranquia = AddInput(content, "FRANQUIA (HORAS/MIN)", 500, 140, 180, 30);
|
|
|
|
// chkAtivo = CreateCheckBox("CONTRATO ATIVO", 700, 158);
|
|
// content.Controls.Add(chkAtivo);
|
|
|
|
// // --- SEÇÃO 3: Observações ---
|
|
// content.Controls.Add(CreateSectionHeader("DETALHES E OBSERVAÇÕES", 200));
|
|
|
|
// txtObservacoes = AddInput(content, "OBSERVAÇÕES INTERNAS", 20, 230, 860, 80);
|
|
|
|
// // Ajuste para o campo de observações ser maior (se o seu LV_TEXTBOX1 permitir)
|
|
// txtObservacoes.Height = 80;
|
|
//}
|
|
private void MontarInterface()
|
|
{
|
|
// --- SEÇÃO 1: Identificação e Vínculos ---
|
|
content.Controls.Add(CreateSectionHeader("IDENTIFICAÇÃO DO CONTRATO", 20));
|
|
|
|
// Linha 1: IDs e Busca
|
|
txtId = AddInput(content, "ID CONTRATO", 20, 50, 90, 30, true);
|
|
txtClienteId = AddInput(content, "ID CLIENTE", 120, 50, 80, 30);
|
|
|
|
// Botão Lupa
|
|
btnBuscaCliente = new Button
|
|
{
|
|
Text = "🔍",
|
|
Location = new Point(205, 66), // Alinhado ao topo do textbox (50 + 16)
|
|
Size = new Size(32, 30),
|
|
BackColor = AccentBlue,
|
|
ForeColor = Color.White,
|
|
FlatStyle = FlatStyle.Flat,
|
|
Cursor = Cursors.Hand
|
|
};
|
|
btnBuscaCliente.FlatAppearance.BorderSize = 0;
|
|
btnBuscaCliente.Click += (s, e) => OnLocalizarCliente();
|
|
content.Controls.Add(btnBuscaCliente);
|
|
|
|
txtNomeCliente = AddInput(content, "NOME DO CLIENTE / RAZÃO SOCIAL", 247, 50, 410, 30, true);
|
|
txtEmpresaId = AddInput(content, "ID EMPRESA", 667, 50, 80, 30);
|
|
|
|
// Linha 2: Descrição (abaixo dos IDs)
|
|
txtDescricao = AddInput(content, "DESCRIÇÃO DO CONTRATO", 20, 105, 727, 30);
|
|
|
|
// --- SEÇÃO 2: Valores e Prazos ---
|
|
// Aumentei o Y para 170 para dar espaço à descrição acima
|
|
content.Controls.Add(CreateSectionHeader("FINANCEIRO E VIGÊNCIA", 175));
|
|
|
|
txtValor = AddInput(content, "VALOR MENSAL (R$)", 20, 205, 150, 30);
|
|
txtDataInicio = AddInput(content, "DATA INÍCIO", 185, 205, 150, 30);
|
|
txtDataValidade = AddInput(content, "VALIDADE/TÉRMINO", 350, 205, 150, 30);
|
|
txtFranquia = AddInput(content, "FRANQUIA (HORAS/MIN)", 515, 205, 170, 30);
|
|
|
|
// Checkbox Alinhado com os inputs
|
|
chkAtivo = CreateCheckBox("CONTRATO ATIVO", 700, 223); // Y do input (205) + ~18px
|
|
content.Controls.Add(chkAtivo);
|
|
|
|
// --- SEÇÃO 3: Detalhes e Notas ---
|
|
content.Controls.Add(CreateSectionHeader("DETALHES E OBSERVAÇÕES", 275));
|
|
|
|
txtObservacoes = AddInput(content, "OBSERVAÇÕES INTERNAS", 20, 305, 860, 100);
|
|
|
|
// Forçar a altura maior para o campo de observações
|
|
txtObservacoes.Height = 100;
|
|
// Se o seu LV_TEXTBOX1 tiver a propriedade Multiline, ative-a aqui:
|
|
// txtObservacoes.Multiline = true;
|
|
}
|
|
|
|
// Método que você precisará implementar para a busca
|
|
private void OnLocalizarCliente()
|
|
{
|
|
//Logica para abrir o form de busca e retornar os dados
|
|
//Exemplo:
|
|
// var busca = new FormBuscaCliente();
|
|
//if (busca.ShowDialog() == DialogResult.OK)
|
|
//{
|
|
// txtClienteId.Text = busca.IdSelecionado;
|
|
// txtNomeCliente.Text = busca.NomeSelecionado;
|
|
//}
|
|
}
|
|
|
|
private void PreencherModel()
|
|
{
|
|
_contrato.Descricao = txtDescricao.Text;
|
|
_contrato.Observacoes = txtObservacoes.Text;
|
|
_contrato.Ativo = chkAtivo.Checked;
|
|
|
|
// Conversões seguras
|
|
if (decimal.TryParse(txtValor.Text, out decimal v)) _contrato.Valor = v;
|
|
if (int.TryParse(txtEmpresaId.Text, out int emp)) _contrato.EmpresaId = emp;
|
|
if (int.TryParse(txtClienteId.Text, out int cli)) _contrato.ClienteId = cli;
|
|
if (int.TryParse(txtFranquia.Text, out int fra)) _contrato.FranquiaTempo = fra;
|
|
|
|
if (DateTime.TryParse(txtDataInicio.Text, out DateTime dtIn)) _contrato.DataInicio = dtIn;
|
|
if (DateTime.TryParse(txtDataValidade.Text, out DateTime dtVal)) _contrato.DataValidade = dtVal;
|
|
}
|
|
|
|
// --- MÉTODOS OBRIGATÓRIOS DA BASE ---
|
|
|
|
protected override void OnNovo()
|
|
{
|
|
_contrato = new ModeloContrato();
|
|
// Limpar campos...
|
|
txtDescricao.Focus();
|
|
}
|
|
|
|
protected override void OnSalvar()
|
|
{
|
|
try
|
|
{
|
|
PreencherModel();
|
|
// Chamar BLL.Salvar(_contrato);
|
|
MessageBox.Show("Contrato processado com sucesso!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show("Erro ao salvar contrato: " + ex.Message);
|
|
}
|
|
}
|
|
|
|
protected override void OnAlterar() { /* Implementar busca/edição */ }
|
|
|
|
protected override void OnExcluir()
|
|
{
|
|
if (MessageBox.Show("Deseja rescindir/excluir este contrato?", "Confirmação", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
|
{
|
|
// Lógica de exclusão
|
|
}
|
|
}
|
|
|
|
protected override void OnLocalizar() { /* Abrir grid de contratos */ }
|
|
|
|
protected override void OnCancelar() { OnNovo(); }
|
|
}
|
|
} |