using CPM; using MLL; using System; using System.Drawing; using System.Windows.Forms; using UI; namespace UI { public partial class TransportadorasCadastroPanel : FormularioModelo { private ModeloTransportadoras _transportadora = new ModeloTransportadoras(); // Controles - Identificação private LV_TEXTBOX1 txtId, txtEmpresaId, txtRazaoSocial, txtNomeFantasia, txtCNPJ; // Controles - Localização private LV_TEXTBOX1 txtCep, txtEndereco, txtNumero, txtBairro, txtCidade, txtUF, txtComplemento; // Controles - Logística e Contato private LV_TEXTBOX1 txtTelefone, txtEmail, txtTipoFrete, txtPrazo, txtValorFrete, txtObservacoes; private CheckBox chkAtivo; public TransportadorasCadastroPanel() { this.Titulo = "Cadastro de Transportadoras"; MontarInterface(); } private void MontarInterface() { // --- SEÇÃO 1: Identificação --- content.Controls.Add(CreateSectionHeader("DADOS DA TRANSPORTADORA", 20)); txtId = AddInput(content, "ID", 20, 50, 70, 30, true); txtEmpresaId = AddInput(content, "ID EMPRESA", 100, 50, 80, 30); txtCNPJ = AddInput(content, "CNPJ", 190, 50, 200, 30); txtRazaoSocial = AddInput(content, "RAZÃO SOCIAL", 20, 105, 430, 30); txtNomeFantasia = AddInput(content, "NOME FANTASIA", 460, 105, 420, 30); // --- SEÇÃO 2: Localização --- content.Controls.Add(CreateSectionHeader("ENDEREÇO SEDE", 175)); txtCep = AddInput(content, "CEP", 20, 205, 100, 30); txtEndereco = AddInput(content, "LOGRADOURO", 130, 205, 350, 30); txtNumero = AddInput(content, "Nº", 490, 205, 70, 30); txtBairro = AddInput(content, "BAIRRO", 570, 205, 190, 30); txtUF = AddInput(content, "UF", 770, 205, 50, 30); txtCidade = AddInput(content, "CIDADE", 20, 260, 300, 30); txtComplemento = AddInput(content, "COMPLEMENTO", 330, 260, 550, 30); // --- SEÇÃO 3: Regras de Logística e Contato --- content.Controls.Add(CreateSectionHeader("CONFIGURAÇÕES DE FRETE E CONTATO", 330)); txtTipoFrete = AddInput(content, "TIPO DE FRETE (CIF/FOB)", 20, 360, 180, 30); txtPrazo = AddInput(content, "PRAZO MÉDIO (DIAS)", 210, 360, 150, 30); txtValorFrete = AddInput(content, "VALOR PADRÃO (R$)", 370, 360, 150, 30); chkAtivo = CreateCheckBox("TRANSPORTADORA ATIVA", 540, 378); content.Controls.Add(chkAtivo); txtTelefone = AddInput(content, "TELEFONE", 20, 415, 180, 30); txtEmail = AddInput(content, "E-MAIL PARA COTAÇÃO", 210, 415, 670, 30); // --- SEÇÃO 4: Observações --- content.Controls.Add(CreateSectionHeader("OBSERVAÇÕES ADICIONAIS", 485)); txtObservacoes = AddInput(content, "NOTAS DE LOGÍSTICA", 20, 515, 860, 80); txtObservacoes.Height = 80; content.Height = 630; } private void PreencherModel() { _transportadora.RazaoSocial = txtRazaoSocial.Text; _transportadora.NomeFantasia = txtNomeFantasia.Text; _transportadora.CNPJ = txtCNPJ.Text; _transportadora.Cep = txtCep.Text; _transportadora.Endereco = txtEndereco.Text; _transportadora.Bairro = txtBairro.Text; _transportadora.Cidade = txtCidade.Text; _transportadora.UF = txtUF.Text; _transportadora.Complemento = txtComplemento.Text; // Conversões numéricas if (int.TryParse(txtNumero.Text, out int num)) _transportadora.Numero = num; if (int.TryParse(txtEmpresaId.Text, out int emp)) _transportadora.EmpresaId = emp; if (int.TryParse(txtPrazo.Text, out int prazo)) _transportadora.PrazoEntrega = prazo; if (decimal.TryParse(txtValorFrete.Text, out decimal valor)) _transportadora.ValorFretePadrao = valor; _transportadora.TipoFrete = txtTipoFrete.Text; _transportadora.Telefone = txtTelefone.Text; _transportadora.Email = txtEmail.Text; _transportadora.Observacoes = txtObservacoes.Text; _transportadora.Ativo = chkAtivo.Checked; } protected override void OnNovo() { _transportadora = new ModeloTransportadoras(); txtCNPJ.Focus(); } protected override void OnSalvar() { try { PreencherModel(); // BLLTransportadora.Salvar(_transportadora); MessageBox.Show("Transportadora registrada com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show("Erro ao processar dados: " + ex.Message); } } protected override void OnAlterar() { } protected override void OnExcluir() { } protected override void OnLocalizar() { } protected override void OnCancelar() { OnNovo(); } } }