Diferencia entre revisiones de «Formulario Edición 2.0.N»
Ir a la navegación
Ir a la búsqueda
| (No se muestran 30 ediciones intermedias del mismo usuario) | |||
| Línea 15: | Línea 15: | ||
public class ##FORMULARIO## : FlexiEdicion | public class ##FORMULARIO## : FlexiEdicion | ||
{ | { | ||
| + | int REG_ITEMS = 0; | ||
| + | |||
| + | int ITE_IDPROD = 0; | ||
| + | int ITE_CANT = 1; | ||
| + | |||
// Este metodo se ejecuta 1 vez para cargar la definición del formulario | // Este metodo se ejecuta 1 vez para cargar la definición del formulario | ||
public override void InicializarFormulario() | public override void InicializarFormulario() | ||
| Línea 24: | Línea 29: | ||
this.ParametroRecibido = "id"; | this.ParametroRecibido = "id"; | ||
this.GuardarYNuevo = false; | this.GuardarYNuevo = false; | ||
| + | this.CssClassRecuadro = "fondoRojo"; | ||
| + | this.EncabezadoLogoVisible = false; | ||
| + | |||
| + | // Indico que si es PopUp el campo que se pasa de texto es: | ||
| + | this.CampoTextoPopUp = "nombre"; | ||
// Campos a editar de la cabecera (tabla cabecera) | // Campos a editar de la cabecera (tabla cabecera) | ||
| − | // Habilitado | + | // Requerido, Habilitado |
this.AgregarCampoCabeceraCadenaLarga("nombre", "Nombre", true, true); | this.AgregarCampoCabeceraCadenaLarga("nombre", "Nombre", true, true); | ||
| + | this.BuscarCampoCabecera("nombre").Ancho = 100; | ||
this.AgregarCampoCabeceraCadena("nombre", "Nombre", true, true); | this.AgregarCampoCabeceraCadena("nombre", "Nombre", true, true); | ||
this.AgregarCampoCabeceraCadenaMultilinea("nombre", "Nombre", true, true); | this.AgregarCampoCabeceraCadenaMultilinea("nombre", "Nombre", true, true); | ||
| Línea 38: | Línea 49: | ||
this.AgregarCampoCabeceraMoneda("nombre", "Nombre", true, true); | this.AgregarCampoCabeceraMoneda("nombre", "Nombre", true, true); | ||
this.AgregarCampoCabeceraPassword("nombre", "Nombre", true, true); | this.AgregarCampoCabeceraPassword("nombre", "Nombre", true, true); | ||
| + | this.BuscarCampoCabecera("nombre").AccionEscrituraDirectaAjax = "facturaEnter"; | ||
| + | |||
| + | this.AgregarCampoCabeceraBoton("agregar", "Agregar +", true, "agregar"); | ||
| + | this.BuscarCampoCabecera("agregar").CssClass = "btn-danger"; | ||
| + | this.BuscarCampoCabecera("agregar").EstablecerAnchoGrid(0, 2, true); | ||
| + | |||
| + | // Al presionar enter se ejecuta una accion | ||
| + | this.BuscarCampoCabecera("telefonos").AccionComoEnter = true; | ||
| + | this.BuscarCampoCabecera("telefonos").Accion = "telefono"; | ||
| + | this.BuscarCampoCabecera("telefonos").TituloVisible = false; | ||
// Creo una region de una tabla relacionada | // Creo una region de una tabla relacionada | ||
| Línea 46: | Línea 67: | ||
regionItems.CampoFiltradoItems = "idTablaMaestra"; | regionItems.CampoFiltradoItems = "idTablaMaestra"; | ||
regionItems.EliminacionMasiva = true; | regionItems.EliminacionMasiva = true; | ||
| + | regionItems.CssClassRecuadro = "fondoRojo"; | ||
| − | // Habilitado | + | // Requerido, Habilitado |
regionItems.AgregarCampoItemDependienteAjax("idFactura", "Factura (nro, fecha)", "FacturasVW", "id", "nombre", true, true, ""); | regionItems.AgregarCampoItemDependienteAjax("idFactura", "Factura (nro, fecha)", "FacturasVW", "id", "nombre", true, true, ""); | ||
regionItems.AgregarCampoItemMoneda("monto", "Monto Aplicado", true, true); | regionItems.AgregarCampoItemMoneda("monto", "Monto Aplicado", true, true); | ||
regionItems.AgregarCampoInferiorMoneda("totalAplicado", "Total Facturas", false, false); | regionItems.AgregarCampoInferiorMoneda("totalAplicado", "Total Facturas", false, false); | ||
regionItems.AgregarCampoItemCadenaLarga("codigoBarras", "Código de Barras", true, false); | regionItems.AgregarCampoItemCadenaLarga("codigoBarras", "Código de Barras", true, false); | ||
| + | regionItems.AgregarCampoItemCadenaMultilinea("observaciones", "Observaciones", true, false); | ||
| + | regionItems.AgregarCampoItemFecha("fechaAlta", "Fecha Alta", true, false); | ||
| + | regionItems.AgregarCampoItemSiNo("habilitado", "Habilitado", true); | ||
| + | regionItems.AgregarCampoItemEntero("cantidad", "Cantidad", true, true); | ||
| + | regionItems.BuscarCampoItem("cantidad").CssClass = "textoDestacado"; | ||
| + | regionItems.BuscarCampoItem("cantidad").CssClassTitulo = "textoDestacadoVerde"; | ||
| + | |||
| + | // Deshabilitar enter | ||
| + | regionItems.BuscarCampoItem("codigoBarras").DesHabilitarEnter = true; | ||
| + | |||
| + | regionItems.AgregarCampoInferiorCadenaLarga("email", "Email", false, true); | ||
| + | regionItems.AgregarCampoInferiorDependienteAjax("idVendedor", "Vendedor", "Vendedores", "id", "nombre", false, true, ""); | ||
this.AgregarRegion(regionItems); | this.AgregarRegion(regionItems); | ||
| + | |||
| + | this.AgregarAccion("Imprimir", false); | ||
| + | this.BuscarAccion("Imprimir").MostrarLoading = false; | ||
| + | |||
// Ejemplo de como obtener un valor cargado en los campos segun tipo | // Ejemplo de como obtener un valor cargado en los campos segun tipo | ||
| Línea 61: | Línea 99: | ||
string strVar = this.BuscarCampoCabecera("valor").ValorCadena; | string strVar = this.BuscarCampoCabecera("valor").ValorCadena; | ||
decimal decVar = this.BuscarCampoCabecera("valor").ValorMoneda; | decimal decVar = this.BuscarCampoCabecera("valor").ValorMoneda; | ||
| + | |||
| + | // Setea foco en un campo de una region de una fila | ||
| + | // region, posFila, "nombreCampo" | ||
| + | this.SetearFocoRegionItem(REG_ITEMS, 0, "idFactura"); | ||
| + | |||
| + | // Cambia el orgien de datos de un campo ajax de una region. | ||
| + | this.Regiones[REG_DIR_OT].CambiarTablaOConsultaCampoItem("campo", "Tabla"); | ||
| + | |||
| + | this.HabilitarFormulario(false); | ||
| + | |||
| + | this.AgregarAccion("guardarTambien", "Guardar Tambien"); | ||
| + | this.BuscarAccion("guardarTambien").GuardarAlEjecutar = true; | ||
| + | this.BuscarAccion("guardarTambien").GuardarYSalirAlEjecutar = true; | ||
| + | |||
} | } | ||
| Línea 69: | Línea 121: | ||
if (this.IdEntidad == 0) | if (this.IdEntidad == 0) | ||
{ | { | ||
| + | |||
| + | if (VariablesDeEntorno.ExisteValorDeVariable(this.WorkflowId, "idCliente")) | ||
| + | { | ||
| + | int idCliente = (int)VariablesDeEntorno.ObtenerValorDeVariable(this.WorkflowId, "idCliente"); | ||
| + | VariablesDeEntorno.EliminarValorDeVariable(this.WorkflowId, "idCliente"); | ||
| + | } | ||
// Ej: se inicializan los campos con valores | // Ej: se inicializan los campos con valores | ||
this.BuscarCampoCabecera("nombre").Valor = "aca va el nombre"; | this.BuscarCampoCabecera("nombre").Valor = "aca va el nombre"; | ||
| + | |||
| + | // Setear foco en campo de cabecera | ||
| + | this.SetearFocoCabecera("nombre"); | ||
} | } | ||
else | else | ||
| Línea 76: | Línea 137: | ||
// Ej: si ya esta creado, no dejo cambiar el nombre | // Ej: si ya esta creado, no dejo cambiar el nombre | ||
this.BuscarCampoCabecera("nombre").Habilitado = false; | this.BuscarCampoCabecera("nombre").Habilitado = false; | ||
| + | |||
| + | this.BuscarAccion("Imprimir").Visible = true; | ||
} | } | ||
| + | |||
| + | // Deshabilita todo el formulario | ||
| + | this.DeshabilitarCamposYAcciones(); | ||
} | } | ||
| Línea 107: | Línea 173: | ||
if (nombre == "JUANA") | if (nombre == "JUANA") | ||
throw new Exception("El nombre no puede ser JUANA."); | throw new Exception("El nombre no puede ser JUANA."); | ||
| + | |||
| + | this.BuscarAccion("Imprimir").Visible = true; | ||
} | } | ||
| Línea 123: | Línea 191: | ||
// Ej: deshabilito parte del formulario | // Ej: deshabilito parte del formulario | ||
// Ej: genero un PDF | // Ej: genero un PDF | ||
| + | } | ||
| + | else if (accion == "facturaEnter") | ||
| + | { | ||
| + | string textoIngresado = this.BuscarCampoCabecera("idClienteCategoria").ValorEscrituraDirectaAjax; | ||
| + | this.AgregarMensajeResultados(textoIngresado); | ||
} | } | ||
} | } | ||
| Línea 166: | Línea 239: | ||
filaReg.Columnas[APLI_MONTO].Valor = LogicaDeFacturas.ObtenerMontoPendienteDeAplicar(idFactura); | filaReg.Columnas[APLI_MONTO].Valor = LogicaDeFacturas.ObtenerMontoPendienteDeAplicar(idFactura); | ||
} | } | ||
| + | } | ||
| + | |||
| + | //Metodo Auxiliar para reccorrer las filas de una region | ||
| + | private void ValidarRemitar() | ||
| + | { | ||
| + | int cant = 0; | ||
| + | foreach (FlexiEdicionRegionFila fila in this.Regiones[REG_ITEMS].Filas) | ||
| + | { | ||
| + | if (!fila.Eliminada && fila.Pos > 0) | ||
| + | { | ||
| + | int idRemitoItem = fila.Columnas[COL_RE_REL].ValorEntero; | ||
| + | if (idRemitoItem > 0) | ||
| + | cant++; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | this.BuscarAccion("Remitar").Visible = (cant == 0); | ||
| + | } | ||
| + | |||
| + | // Esta funcionalidad esta pensada para poder dividir 1 region de muchas columnas en 2 regiones cada una con 1 subgrupo | ||
| + | public override void ValidarSiCargaFilaEnRegion(int region, int idEntidadFila, FlexiEdicionAccionARealizarEnFila accionPosible) | ||
| + | { | ||
| + | FlexiDbFila fila = FlexiDb.CargarEntidad(idEntidadFila, "ClientesDomiciliosEntrega"); | ||
| + | string calle = fila.ObtenerCadena("calle"); | ||
| + | |||
| + | if (region == REG_DIR_CALL1) | ||
| + | { | ||
| + | if (calle != "calle 1") | ||
| + | accionPosible.CancelarCarga = true; | ||
| + | } | ||
| + | else if (region == REG_DIR_OT) | ||
| + | { | ||
| + | if (calle == "calle 1") | ||
| + | accionPosible.CancelarCarga = true; | ||
| + | } | ||
| + | |||
| + | |||
} | } | ||
Revisión actual del 10:16 8 feb 2024
Formulario Edición
Código de Referencia
using FlexiPyme.ui.formularios.especificos.edicion;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using FlexiAplicacion.LogicaComun;
namespace FlexiAplicacion.##CARPETA##
{
public class ##FORMULARIO## : FlexiEdicion
{
int REG_ITEMS = 0;
int ITE_IDPROD = 0;
int ITE_CANT = 1;
// Este metodo se ejecuta 1 vez para cargar la definición del formulario
public override void InicializarFormulario()
{
// Parametros generales del formulario
this.Titulo = "Edición de Tabla";
this.TablaCabecera = "Tabla";
this.CampoClaveCabecera = "id";
this.ParametroRecibido = "id";
this.GuardarYNuevo = false;
this.CssClassRecuadro = "fondoRojo";
this.EncabezadoLogoVisible = false;
// Indico que si es PopUp el campo que se pasa de texto es:
this.CampoTextoPopUp = "nombre";
// Campos a editar de la cabecera (tabla cabecera)
// Requerido, Habilitado
this.AgregarCampoCabeceraCadenaLarga("nombre", "Nombre", true, true);
this.BuscarCampoCabecera("nombre").Ancho = 100;
this.AgregarCampoCabeceraCadena("nombre", "Nombre", true, true);
this.AgregarCampoCabeceraCadenaMultilinea("nombre", "Nombre", true, true);
this.AgregarCampoCabeceraEntero("nombre", "Nombre", true, true);
this.AgregarCampoCabeceraFecha("nombre", "Nombre", true, true);
this.AgregarCampoCabeceraSiNo("nombre", "Nombre", true, true);
this.AgregarCampoCabeceraDependiente("nombre", "Nombre", "Tabla", "id", "nombre", true, true);
this.AgregarCampoCabeceraDependienteAjax("nombre", "Nombre", "Tabla", "id", "nombre", true, true, "accion");
this.AgregarCampoCabeceraMoneda("nombre", "Nombre", true, true);
this.AgregarCampoCabeceraPassword("nombre", "Nombre", true, true);
this.BuscarCampoCabecera("nombre").AccionEscrituraDirectaAjax = "facturaEnter";
this.AgregarCampoCabeceraBoton("agregar", "Agregar +", true, "agregar");
this.BuscarCampoCabecera("agregar").CssClass = "btn-danger";
this.BuscarCampoCabecera("agregar").EstablecerAnchoGrid(0, 2, true);
// Al presionar enter se ejecuta una accion
this.BuscarCampoCabecera("telefonos").AccionComoEnter = true;
this.BuscarCampoCabecera("telefonos").Accion = "telefono";
this.BuscarCampoCabecera("telefonos").TituloVisible = false;
// Creo una region de una tabla relacionada
FlexiEdicionRegion regionItems = new FlexiEdicionRegion();
regionItems.Nombre = "Items de la tabla";
regionItems.TablaItems = "NombreTablaItems";
regionItems.CampoClaveItems = "id";
regionItems.CampoFiltradoItems = "idTablaMaestra";
regionItems.EliminacionMasiva = true;
regionItems.CssClassRecuadro = "fondoRojo";
// Requerido, Habilitado
regionItems.AgregarCampoItemDependienteAjax("idFactura", "Factura (nro, fecha)", "FacturasVW", "id", "nombre", true, true, "");
regionItems.AgregarCampoItemMoneda("monto", "Monto Aplicado", true, true);
regionItems.AgregarCampoInferiorMoneda("totalAplicado", "Total Facturas", false, false);
regionItems.AgregarCampoItemCadenaLarga("codigoBarras", "Código de Barras", true, false);
regionItems.AgregarCampoItemCadenaMultilinea("observaciones", "Observaciones", true, false);
regionItems.AgregarCampoItemFecha("fechaAlta", "Fecha Alta", true, false);
regionItems.AgregarCampoItemSiNo("habilitado", "Habilitado", true);
regionItems.AgregarCampoItemEntero("cantidad", "Cantidad", true, true);
regionItems.BuscarCampoItem("cantidad").CssClass = "textoDestacado";
regionItems.BuscarCampoItem("cantidad").CssClassTitulo = "textoDestacadoVerde";
// Deshabilitar enter
regionItems.BuscarCampoItem("codigoBarras").DesHabilitarEnter = true;
regionItems.AgregarCampoInferiorCadenaLarga("email", "Email", false, true);
regionItems.AgregarCampoInferiorDependienteAjax("idVendedor", "Vendedor", "Vendedores", "id", "nombre", false, true, "");
this.AgregarRegion(regionItems);
this.AgregarAccion("Imprimir", false);
this.BuscarAccion("Imprimir").MostrarLoading = false;
// Ejemplo de como obtener un valor cargado en los campos segun tipo
int intVal = this.BuscarCampoCabecera("valor").ValorEntero;
bool boolVar = this.BuscarCampoCabecera("valor").ValorBool;
DateTime dateVar = this.BuscarCampoCabecera("valor").ValorFecha;
string strVar = this.BuscarCampoCabecera("valor").ValorCadena;
decimal decVar = this.BuscarCampoCabecera("valor").ValorMoneda;
// Setea foco en un campo de una region de una fila
// region, posFila, "nombreCampo"
this.SetearFocoRegionItem(REG_ITEMS, 0, "idFactura");
// Cambia el orgien de datos de un campo ajax de una region.
this.Regiones[REG_DIR_OT].CambiarTablaOConsultaCampoItem("campo", "Tabla");
this.HabilitarFormulario(false);
this.AgregarAccion("guardarTambien", "Guardar Tambien");
this.BuscarAccion("guardarTambien").GuardarAlEjecutar = true;
this.BuscarAccion("guardarTambien").GuardarYSalirAlEjecutar = true;
}
// Se ejecuta la primera vez que se ingresa al formulario
public override void AntesDeVisualizar()
{
// Verifico si es un nuevo registro o si es existente
if (this.IdEntidad == 0)
{
if (VariablesDeEntorno.ExisteValorDeVariable(this.WorkflowId, "idCliente"))
{
int idCliente = (int)VariablesDeEntorno.ObtenerValorDeVariable(this.WorkflowId, "idCliente");
VariablesDeEntorno.EliminarValorDeVariable(this.WorkflowId, "idCliente");
}
// Ej: se inicializan los campos con valores
this.BuscarCampoCabecera("nombre").Valor = "aca va el nombre";
// Setear foco en campo de cabecera
this.SetearFocoCabecera("nombre");
}
else
{
// Ej: si ya esta creado, no dejo cambiar el nombre
this.BuscarCampoCabecera("nombre").Habilitado = false;
this.BuscarAccion("Imprimir").Visible = true;
}
// Deshabilita todo el formulario
this.DeshabilitarCamposYAcciones();
}
// Eset evento permite validar antes de eliminar
public override void AntesDeEliminar()
{
// Ej: validar que no tenga registros dependientes de otras tablas
string sql = "select count(*) from TablaRelacionada where id = @idActual";
Dictionary pars = new Dictionary();
pars.Add("@idActual", this.IdEntidad);
int cant = FlexiDb.EjecutarScalarInt(sql, pars);
if (cant > 0)
throw new Exception("No puede eliminar el registro porque tiene Tablas Vinculadas.");
}
public override void DespuesDeEliminar()
{
// Ej: puede cambiar el estado de otra tabla
//o enviar aviso de eliminacion o actualizar totales.
}
// Se ejecuta al presionar Guardar, si genera un error, no se guarda el formulario.
// Se tiene que hacer todas las validaciones necesarias.
public override void AntesDeGuardar()
{
string nombre = this.BuscarCampoCabecera("nombre").ValorCadena;
if (nombre == "JUANA")
throw new Exception("El nombre no puede ser JUANA.");
this.BuscarAccion("Imprimir").Visible = true;
}
public override void DespuesDeGuardar()
{
// Ej: puede cambiar el estado de otra tabla
//o enviar aviso de eliminacion o actualizar totales.
}
// Cada campo de la cabecera o las acciones al pie pueden disparar este evento
public override void EjecutarAccion(string accion)
{
if (accion == "nombre de la accion")
{
// Ej: cambio otro campo
// Ej: deshabilito parte del formulario
// Ej: genero un PDF
}
else if (accion == "facturaEnter")
{
string textoIngresado = this.BuscarCampoCabecera("idClienteCategoria").ValorEscrituraDirectaAjax;
this.AgregarMensajeResultados(textoIngresado);
}
}
// Se ejecuta antes de agregar un item en la region indicada
// En la posición 0 (cero) de los items de la region esta la fila a agregar
public override void AntesDeAgregarItem(int region)
{
// Ej segun el valor de un campo, valido otro
FlexiEdicionRegionFila fila = this.Regiones[region].FilaNueva;
int idReciboItemTipo = fila.Columnas[PAG_TIPO].ValorEntero;
string tipo = LogicaDeNombres.ObtenerCodigoReciboItemTipo(idReciboItemTipo);
if (tipo == "TR" || tipo == "DEP")
{
int idCuentaBancaria = fila.Columnas[PAG_CTA_BCO].ValorEntero;
if (idCuentaBancaria == 0)
throw new BusinessException("La cuenta bancaria es requerida para transferencias o depósitos.");
}
}
// Se ejecuta luego de agregar un item
public override void DespuesDeAgregarItem(int region)
{
// Generalemnte se recalculan totales o re enumeran lineas
}
// Se ejecuta luego de eliminar un item
public override void DespuesDeEliminarItem(int region)
{
// Generalemnte se recalculan totales o re enumeran lineas
}
// Se ejecuta cuando se dispara una accion en una fila de una region
public override void EjecutarAccion(string accion, int region, int fila)
{
FlexiEdicionRegionFila filaReg = this.Regiones[region].Filas[fila];
if (accion == "factura")
{
int idFactura = filaReg.Columnas[APLI_FAC].ValorEntero;
//Obtengo monto pendiente de aplicar factura.
filaReg.Columnas[APLI_MONTO].Valor = LogicaDeFacturas.ObtenerMontoPendienteDeAplicar(idFactura);
}
}
//Metodo Auxiliar para reccorrer las filas de una region
private void ValidarRemitar()
{
int cant = 0;
foreach (FlexiEdicionRegionFila fila in this.Regiones[REG_ITEMS].Filas)
{
if (!fila.Eliminada && fila.Pos > 0)
{
int idRemitoItem = fila.Columnas[COL_RE_REL].ValorEntero;
if (idRemitoItem > 0)
cant++;
}
}
this.BuscarAccion("Remitar").Visible = (cant == 0);
}
// Esta funcionalidad esta pensada para poder dividir 1 region de muchas columnas en 2 regiones cada una con 1 subgrupo
public override void ValidarSiCargaFilaEnRegion(int region, int idEntidadFila, FlexiEdicionAccionARealizarEnFila accionPosible)
{
FlexiDbFila fila = FlexiDb.CargarEntidad(idEntidadFila, "ClientesDomiciliosEntrega");
string calle = fila.ObtenerCadena("calle");
if (region == REG_DIR_CALL1)
{
if (calle != "calle 1")
accionPosible.CancelarCarga = true;
}
else if (region == REG_DIR_OT)
{
if (calle == "calle 1")
accionPosible.CancelarCarga = true;
}
}
}
}