using CPM; using MLL; using System.Drawing; using System.Windows.Forms; namespace UI { public class OrdensDeslocamentoPanel : FormularioModelo { // Inputs para Saída e Chegada private LV_TEXTBOX1 txtId, txtCodOrdem, txtDia; private LV_TEXTBOX1 txtHoraSai, txtKmSai, txtHoraChega, txtKmChega; // Inputs para Volta private LV_TEXTBOX1 txtHoraVoltaSai, txtKmVoltaSai, txtHoraVolta, txtKmVolta; // Despesas extras private LV_TEXTBOX1 txtAlimenta, txtHospeda; public OrdensDeslocamentoPanel() { this.Titulo = "CONTROLE DE DESLOCAMENTO / VIAGEM"; MontarInterface(); } private void MontarInterface() { // --- SEÇÃO 1: IDENTIFICAÇÃO --- content.Controls.Add(CreateSectionHeader("Dados Gerais", 20)); txtId = AddInput(content, "ID REGISTRO", 20, 55, 100, 28, true); txtCodOrdem = AddInput(content, "CÓDIGO O.S.", 130, 55, 120, 28, true); txtDia = AddInput(content, "DATA DA VIAGEM", 260, 55, 150, 28); // --- SEÇÃO 2: IDA (SAÍDA E CHEGADA NO DESTINO) --- content.Controls.Add(CreateSectionHeader("Ida ao Cliente / Destino", 115)); txtHoraSai = AddInput(content, "HORA SAÍDA", 20, 150, 120, 28); txtKmSai = AddInput(content, "KM SAÍDA", 150, 150, 120, 28); txtHoraChega = AddInput(content, "HORA CHEGADA", 300, 150, 120, 28); txtKmChega = AddInput(content, "KM CHEGADA", 430, 150, 120, 28); // --- SEÇÃO 3: VOLTA (SAÍDA DO CLIENTE E CHEGADA NA BASE) --- content.Controls.Add(CreateSectionHeader("Retorno à Base", 210)); txtHoraVoltaSai = AddInput(content, "HORA VOLTA (SAÍDA)", 20, 245, 120, 28); txtKmVoltaSai = AddInput(content, "KM VOLTA (SAÍDA)", 150, 245, 120, 28); txtHoraVolta = AddInput(content, "HORA FINAL", 300, 245, 120, 28); txtKmVolta = AddInput(content, "KM FINAL", 430, 245, 120, 28); // --- SEÇÃO 4: DESPESAS ADICIONAIS --- content.Controls.Add(CreateSectionHeader("Despesas de Viagem", 305)); txtAlimenta = AddInput(content, "ALIMENTAÇÃO (R$)", 20, 340, 150, 28); txtHospeda = AddInput(content, "HOSPEDAGEM (R$)", 180, 340, 150, 28); } // --- IMPLEMENTAÇÃO DOS MÉTODOS ABSTRATOS --- protected override void OnNovo() { // Limpar todos os campos para novo registro foreach (Control c in content.Controls) { if (c is LV_TEXTBOX1 txt && !txt.ReadOnly) txt.Text = string.Empty; } txtDia.Focus(); } protected override void OnSalvar() { // Mapeando para o seu ModeloOrdensDeslocamento var deslocamento = new ModeloOrdensDeslocamento { DIA = txtDia.Text, HORA_SAI = txtHoraSai.Text, KM_SAI = txtKmSai.Text, HORA_CHEGA = txtHoraChega.Text, KM_CHEGA = txtKmChega.Text, HORA_VOLTA_SAI = txtHoraVoltaSai.Text, KM_VOLTA_SAI = txtKmVoltaSai.Text, HORA_VOLTA = txtHoraVolta.Text, KM_VOLTA = txtKmVolta.Text, ALIMENTA = txtAlimenta.Text, HOSPEDA = txtHospeda.Text }; // Aqui você chamaria a sua BLL/DAL para persistir MessageBox.Show("Dados de deslocamento registrados!", "LevelOS", MessageBoxButtons.OK, MessageBoxIcon.Information); } protected override void OnAlterar() { /* Lógica de Alteração */ } protected override void OnExcluir() { /* Lógica de Exclusão */ } protected override void OnLocalizar() { /* Abrir tela de busca */ } protected override void OnCancelar() { OnNovo(); } } }