Exferia/Exferia_Compras/Exferia_Compras/3_Vistas/P_EntradaMercanciaCabecera_...

937 lines
53 KiB
C#

using Exferia_Aplicacion.General;
using Exferia_Aplicacion.Visualizacion;
using Exferia_Controles;
using Exferia_General;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Linq;
using static Exferia_Aplicacion.General.Enumerados;
using Exferia_Aplicacion.Modelos_Listado_Filtros;
using ClosedXML.Excel;
using System.Reflection;
using Exferia_Formularios;
using Exferia_Compras._3_Vistas.Controladoras;
namespace Exferia_Compras._3_Vistas
{
public partial class P_EntradaMercanciaCabecera_Bolsa : Exferia_Formularios.P_Base_Mantenimientos
{
#region Variables General
private P_EntradaMercanciaCabecera_Bolsa_Controladora g_obj_Controladora;
public INTERNO_OpcionesDetalle_Modelo g_mdl_INTERNO_OpcionesDetalle_Modelo = null;
private bool g_bol_ConstructorPantalla_Terminado_Correctamente = true;
internal List<INTERNO_Permisos_Modelo> g_lst_INTERNO_Permisos_Modelo = null;
//Clientes a Seleccionar
private INTERNO_ConfiguracionPantalla_Modelo g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA = null;
#endregion
#region Objetos en Pantalla
//Exferia_BarraProgreso
internal Exferia_BarraProgreso Exferia_BarraProgreso_Bolsa { get { return ex_pgb_P_EntradaMercanciaCabecera_Bolsa_BarraProgreso; } }
//Exferia_DataGridView
internal Exferia_DataGridView Exferia_DataGridView_Listado { get { return ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado; } }
#endregion
#region Constructor
public P_EntradaMercanciaCabecera_Bolsa(INTERNO_ValoresGenerales_Modelo _mdl_INTERNO_ValoresGenerales_Modelo, DateTime _dtt_FechaTrabajo)
{
InitializeComponent();
try
{
Repintar.Empezar(this);
CheckForIllegalCrossThreadCalls = false;
//Empresa seleccionada y fecha de trabajo ....................................................
P_Base_ValoresGenerales = _mdl_INTERNO_ValoresGenerales_Modelo;
P_Base_FechaTrabajo = _dtt_FechaTrabajo;
//Datos de Opciones detalle
g_mdl_INTERNO_OpcionesDetalle_Modelo = Datos_Generales.PRV_Opciones_Buscar_Detalles(Variables.G_STR_OPCION_COM_ENTRADAMERCANCIACABECERA_BOLSA);
//Instanciar Controladora
g_obj_Controladora = new P_EntradaMercanciaCabecera_Bolsa_Controladora(this);
//Buscar los Permisos
g_lst_INTERNO_Permisos_Modelo = Datos_Generales.Permisos_Buscar(Variables.G_STR_OPCION_COM_ENTRADAMERCANCIACABECERA_BOLSA);
//Titulo de la Pantalla .............................................................................
P_Base_TituloPantalla = g_mdl_INTERNO_OpcionesDetalle_Modelo.descripcion_TituloMantenimiento;
if (Variables.G_DCT_CONFIGURACIONPANTALLA != null && Variables.G_DCT_CONFIGURACIONPANTALLA.Count > 0)
{
//Listado bolsa
if (Variables.G_DCT_CONFIGURACIONPANTALLA.ContainsKey(g_obj_Controladora.g_obj_ABS_Listado_COM_EntradasMercanciaCabecera_Bolsa.NOMBRELISTADO_ALMACENARCONFIGURACION()))
{
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA = Variables.G_DCT_CONFIGURACIONPANTALLA[g_obj_Controladora.g_obj_ABS_Listado_COM_EntradasMercanciaCabecera_Bolsa.NOMBRELISTADO_ALMACENARCONFIGURACION()];
}
}
// Label con Empresa Seleccionada
if (P_Base_ValoresGenerales != null)
{
try
{
P_Base_Mantenimientos_InformacionEmpresaSeleccionada = P_Base_ValoresGenerales.str_Empresa_Descripcion + " - " +
"(" + P_Base_FechaTrabajo.ToString("dd/MM/yyyy") + ")";
}
catch (Exception ex)
{
//No se muestra mensaje pero se guarda en el log
Control_Errores.Errores_Log("", ex, nameof(P_EntradaMercanciaCabecera_Bolsa) + "/" + nameof(P_EntradaMercanciaCabecera_Bolsa));
}
}
//....................................................................................................
//Bloquear pantalla hasta que termine la carga por defecto .....
Enabled = false;
//.............................................................
}
catch (Control_Errores)
{
g_bol_ConstructorPantalla_Terminado_Correctamente = false;
}
catch (Exception ex)
{
g_bol_ConstructorPantalla_Terminado_Correctamente = false;
//No se muestra mensaje pero se guarda en el log
Control_Errores.Errores_Log("", ex, nameof(P_EntradaMercanciaCabecera_Bolsa) + "/" + nameof(P_EntradaMercanciaCabecera_Bolsa));
}
finally
{
//Bloquear pantalla hasta que termine la carga por defecto .....
Enabled = true;
//.............................................................
}
}
#endregion
#region Inicio de pantalla
private void P_EntradaMercanciaCabecera_Bolsa_Load(object sender, EventArgs e)
{
try
{
#region LISTADO BOLSA
//Crear Columnas Listado
CrearColumnas_Listado();
//Poner el tipo de orden si lo hubiera por defecto ###################################################################################
if (g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA != null &&
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA.LISTADO_ORDEN_DIRECCION_PORDEFECTO != null &&
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA.LISTADO_ORDEN_DIRECCION_PORDEFECTO.Trim().Length > 0)
{
//Descendente
if (g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA.LISTADO_ORDEN_DIRECCION_PORDEFECTO.Equals("1"))
{
Funciones.Cambiar_Imagen_Boton_Orden(0, ex_btn_P_EntradaMercanciaCabecera_Bolsa_OrdenListado);
ex_btn_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.Tag = "1";
}
//Ascendente
else
{
Funciones.Cambiar_Imagen_Boton_Orden(1, ex_btn_P_EntradaMercanciaCabecera_Bolsa_OrdenListado);
ex_btn_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.Tag = "0";
}
}
else
{
if (g_obj_Controladora.g_obj_ABS_Listado_COM_EntradasMercanciaCabecera_Bolsa.ORDENACION_TIPO_PORDEFECTO().Trim().Length > 0)
{
//Descendente
if (g_obj_Controladora.g_obj_ABS_Listado_COM_EntradasMercanciaCabecera_Bolsa.ORDENACION_TIPO_PORDEFECTO().Equals("1"))
{
Funciones.Cambiar_Imagen_Boton_Orden(0, ex_btn_P_EntradaMercanciaCabecera_Bolsa_OrdenListado);
ex_btn_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.Tag = "1";
}
//Ascendente
else
{
Funciones.Cambiar_Imagen_Boton_Orden(1, ex_btn_P_EntradaMercanciaCabecera_Bolsa_OrdenListado);
ex_btn_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.Tag = "0";
}
}
}
//Seleccionar Orden por Defecto en Combo ###########################################################################################################
if (g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA != null &&
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA.LISTADO_ORDEN_COLUMNA_PORDEFECTO != null &&
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA.LISTADO_ORDEN_COLUMNA_PORDEFECTO.Trim().Length > 0)
{
ex_cbo_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.SelectedItem = ex_cbo_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.Items.Cast<INTERNO_ComboBox_Modelo>().Where(m => m.Descripcion.Equals(g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA.LISTADO_ORDEN_COLUMNA_PORDEFECTO)).FirstOrDefault();
}
else
{
if (g_obj_Controladora.g_obj_ABS_Listado_COM_EntradasMercanciaCabecera_Bolsa.ORDENACION_NOMBRECOLUMNA_PORDEFECTO().Trim().Length > 0)
{
ex_cbo_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.SelectedItem = ex_cbo_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.Items.Cast<INTERNO_ComboBox_Modelo>().Where(m => m.Identificador.Equals(g_obj_Controladora.g_obj_ABS_Listado_COM_EntradasMercanciaCabecera_Bolsa.ORDENACION_NOMBRECOLUMNA_PORDEFECTO())).FirstOrDefault();
}
else
{
ex_cbo_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.SelectedItem = ex_cbo_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.Items.Cast<INTERNO_ComboBox_Modelo>().FirstOrDefault();
}
}
#endregion
}
catch (Exception ex)
{
Control_Errores.Errores_Log("", ex, nameof(P_EntradaMercanciaCabecera_Bolsa) + "/" + nameof(P_EntradaMercanciaCabecera_Bolsa_Load));
g_bol_ConstructorPantalla_Terminado_Correctamente = false;
}
}
private void P_EntradaMercanciaCabecera_Bolsa_Shown(object sender, EventArgs e)
{
try
{
if (g_bol_ConstructorPantalla_Terminado_Correctamente)
{
//Rellenar el Listado
g_obj_Controladora.Recargar_Listado(true);
}
else
{
Mensajes.MostrarMensaje(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA());
Salir_P_Base();
}
}
catch (Control_Errores)
{
Mensajes.MostrarMensaje(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA());
Salir_P_Base();
}
catch (Exception ex)
{
//No se muestra mensaje pero se guarda en el log
Control_Errores.Errores_Log("", ex, nameof(P_EntradaMercanciaCabecera_Bolsa) + "/" + nameof(P_EntradaMercanciaCabecera_Bolsa_Shown));
Mensajes.MostrarMensaje(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_CARGARDATOSPANTALLA());
Salir_P_Base();
}
}
#endregion
#region Listado
private void CrearColumnas_Listado()
{
ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.AutoGenerateColumns = false;
foreach (INTERNO_ABS_Listado_ColumnasDatos_Modelo mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo in g_obj_Controladora.g_obj_ABS_Listado_COM_EntradasMercanciaCabecera_Bolsa.LISTADO_COLUMNAS().Values.ToList())
{
DataGridViewTextBoxColumn dgv_Columna = new DataGridViewTextBoxColumn();
dgv_Columna.DataPropertyName = mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna;
dgv_Columna.Name = mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna;
dgv_Columna.HeaderText = mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_AMostrar;
//Poner visible o no .........................................................................
bool bol_Visible = true;
if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.NoOcultable == false)
{
if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Oculto)
{
bol_Visible = false;
}
else if (g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA != null &&
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA.LISTADO_COLUMNASAMOSTRAR != null &&
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA.LISTADO_COLUMNASAMOSTRAR.Count > 0)
{
if (!g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA.LISTADO_COLUMNASAMOSTRAR.Contains(mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna))
{
bol_Visible = false;
}
}
else if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Mostrado_PorDefecto == false)
{
bol_Visible = false;
}
}
dgv_Columna.Visible = bol_Visible;
if (bol_Visible)
{
g_obj_Controladora.g_lst_ColumnasAMostrar_BOLSA.Add(mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna);
}
//.....................................................................................................
//Tipo de Formateo si fuera Fecha
if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.TipoDato.Equals(G_ENUM_TIPOSDATOS.DATETIME))
{
dgv_Columna.DefaultCellStyle.Format = "d";
}
//Poner Ancho Columna ................................................................................
if (g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA != null &&
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA.LISTADO_COLUMNAS_ANCHO != null &&
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA.LISTADO_COLUMNAS_ANCHO.Count > 0 &&
g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA.LISTADO_COLUMNAS_ANCHO.ContainsKey(mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna))
{
dgv_Columna.Width = g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA.LISTADO_COLUMNAS_ANCHO[mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna];
}
else
{
if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Ancho > 0)
{
dgv_Columna.Width = mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Ancho;
}
}
//................................................................................................................
dgv_Columna.ReadOnly = true;
//Poner alineado segun tipo de datos ......................................................................................
if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.TipoDato.Equals(G_ENUM_TIPOSDATOS.DECIMAL) ||
mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.TipoDato.Equals(G_ENUM_TIPOSDATOS.LONG) ||
mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.TipoDato.Equals(G_ENUM_TIPOSDATOS.LONG_TEXT) ||
mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.TipoDato.Equals(G_ENUM_TIPOSDATOS.INT))
{
dgv_Columna.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
}
else
{
dgv_Columna.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
}
//..............................................................................................................................
ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.Columns.Add(dgv_Columna);
//RELLENAR EL ORDEN EN COMBO
if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Oculto == false)
{
ex_cbo_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.Items.Add(new INTERNO_ComboBox_Modelo(mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna, mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_AMostrar, null));
}
}
//Cambiar el orden de las columnas ........
if (g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA != null && g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA.LISTADO_COLUMNAS_ORDEN != null && g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA.LISTADO_COLUMNAS_ORDEN.Count > 0)
{
foreach (KeyValuePair<string, int> kvp_Valores in g_mdl_INTERNO_ConfiguracionPantalla_Modelo_BOLSA.LISTADO_COLUMNAS_ORDEN)
{
ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.Columns[kvp_Valores.Key].DisplayIndex = kvp_Valores.Value;
}
}
//.........................................
}
#region Orden
private void ex_btn_P_EntradaMercanciaCabecera_Bolsa_OrdenListado_Click(object sender, EventArgs e)
{
//Esta Descedente
if (ex_btn_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.Tag.ToString().Equals("1"))
{
Funciones.Cambiar_Imagen_Boton_Orden(1, ex_btn_P_EntradaMercanciaCabecera_Bolsa_OrdenListado);
}
//Esta Ascendente
else
{
Funciones.Cambiar_Imagen_Boton_Orden(0, ex_btn_P_EntradaMercanciaCabecera_Bolsa_OrdenListado);
}
//Ordena el Listado
Ordenar_DataGridView();
}
private void ex_cbo_P_EntradaMercanciaCabecera_Bolsa_OrdenListado_SelectedIndexChanged(object sender, EventArgs e)
{
//Ordena el Listado
Ordenar_DataGridView();
}
private void Ordenar_DataGridView()
{
try
{
if (ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.Rows.Count > 0)
{
//Saber el Tipo de Ordenacion .................................
ListSortDirection obj_ListSortDirection = ListSortDirection.Ascending;
if (ex_btn_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.Tag.ToString().Equals("1"))
{
obj_ListSortDirection = ListSortDirection.Descending;
}
//..............................................................
if (ex_cbo_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.SelectedItem != null && ((INTERNO_ComboBox_Modelo)ex_cbo_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.SelectedItem).Identificador.Trim().Length > 0)
{
ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.Sort(ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.Columns[((INTERNO_ComboBox_Modelo)ex_cbo_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.SelectedItem).Identificador], obj_ListSortDirection);
//Ordenar el Listado ##################
//Descendente
if (ex_btn_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.Tag.ToString().Equals("1"))
{
g_obj_Controladora.g_lst_Valores = g_obj_Controladora.g_lst_Valores.OrderByDescending(m => m.GetType().GetProperty(((INTERNO_ComboBox_Modelo)ex_cbo_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.SelectedItem).Identificador).GetValue(m, null)).ToList();
}
//Ascendente
else
{
g_obj_Controladora.g_lst_Valores = g_obj_Controladora.g_lst_Valores.OrderBy(m => m.GetType().GetProperty(((INTERNO_ComboBox_Modelo)ex_cbo_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.SelectedItem).Identificador).GetValue(m, null)).ToList();
}
}
else
{
ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.Sort(ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.Columns[g_obj_Controladora.g_obj_ABS_Listado_COM_EntradasMercanciaCabecera_Bolsa.ORDENACION_NOMBRECOLUMNA_PORDEFECTO()], obj_ListSortDirection);
//Descendente
if (ex_btn_P_EntradaMercanciaCabecera_Bolsa_OrdenListado.Tag.ToString().Equals("1"))
{
g_obj_Controladora.g_lst_Valores = g_obj_Controladora.g_lst_Valores.OrderByDescending(m => m.GetType().GetProperty(g_obj_Controladora.g_obj_ABS_Listado_COM_EntradasMercanciaCabecera_Bolsa.ORDENACION_NOMBRECOLUMNA_PORDEFECTO()).GetValue(m, null)).ToList();
}
//Ascendente
else
{
g_obj_Controladora.g_lst_Valores = g_obj_Controladora.g_lst_Valores.OrderBy(m => m.GetType().GetProperty(g_obj_Controladora.g_obj_ABS_Listado_COM_EntradasMercanciaCabecera_Bolsa.ORDENACION_NOMBRECOLUMNA_PORDEFECTO()).GetValue(m, null)).ToList();
}
}
string str_NombreCampoClave = "id";
INTERNO_ABS_Listado_ColumnasDatos_Modelo mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo = g_obj_Controladora.g_obj_ABS_Listado_COM_EntradasMercanciaCabecera_Bolsa.LISTADO_COLUMNAS().Values.Where(m => m.ColumnaClave).FirstOrDefault();
if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo != null)
{
str_NombreCampoClave = mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna;
}
///m.GetType().GetProperty(str_NombreCampoClave).GetValue(m, null)
P_Base_Objetos_Filtrados = g_obj_Controladora.g_lst_Valores.Select(m => new INTERNO_Listado_CamposClave_Modelo { ID = m.GetType().GetProperty(str_NombreCampoClave).GetValue(m) }).ToList();
//...........................................................................................................
//Seleccionar la primera
ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.ClearSelection();
ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.Rows[0].Selected = true;
}
}
catch (Exception)
{ }
}
#endregion
#endregion
#region Eventos y Procedimientos Publicos
public override void P_Base_ActualizarRegistros_Campo(List<INTERNO_ActualizarCampoListadoGeneral_Modelo> _lst_CamposActualizar, G_ENUM_TIPOACCION _enum_TipoAccion)
{
if (_lst_CamposActualizar != null && _lst_CamposActualizar.Count > 0)
{
//Actualizar el Listado Principal
if (P_Base_PantallaOrigen != null)
{
P_Base_PantallaOrigen.P_Base_ActualizarRegistros_Campo(_lst_CamposActualizar, _enum_TipoAccion);
}
//Cargar los Datos desde Base de datos
g_obj_Controladora.Recargar_Listado(true);
}
}
#endregion
#region Botones
//Exportar a Excel
private void ex_btn_P_EntradaMercanciaCabecera_Bolsa_ExportarExcel_Click(object sender, EventArgs e)
{
Exportar_Excel();
}
private void Exportar_Excel()
{
if (Datos_Generales.Permisos_Comprobar(g_mdl_INTERNO_OpcionesDetalle_Modelo.opcion, g_lst_INTERNO_Permisos_Modelo, (int)G_ENUM_PERMISOS.ExportarAExcel, true))
{
XLWorkbook obj_XLWorkbook = new XLWorkbook();
try
{
//Crea la hoja del Excell
var obj_worksheet = obj_XLWorkbook.Worksheets.Add("Hoja 1");
//Cabecera
int int_Contador = 1;
List<DataGridViewColumn> lst_ColumnasVisibles = ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.Columns
.Cast<DataGridViewColumn>()
.Where(r => r.Visible)
.OrderBy(r => r.DisplayIndex)
.ToList();
foreach (DataGridViewColumn dgvc_Columna in lst_ColumnasVisibles)
{
obj_worksheet.Cell(1, int_Contador).Value = dgvc_Columna.HeaderText;
//Formato de color al texto y al fondo
obj_worksheet.Cell(1, int_Contador).Style.Fill.BackgroundColor = XLColor.FromHtml(Funciones.Convertir_Color_Hexadecimal(Colores.G_COLOR_PRINCIPAL_BASE));
obj_worksheet.Cell(1, int_Contador).Style.Font.FontColor = XLColor.FromHtml(Funciones.Convertir_Color_Hexadecimal(Colores.G_COLOR_LISTADO_CABECERA_LETRA));
int_Contador++;
}
//Lineas
int int_Contador_Fila = 0;
int int_Contador_Columna = 0;
if (g_obj_Controladora.g_lst_Valores != null)
{
//Recorrer las Filas
foreach (dynamic dnm_Registro in g_obj_Controladora.g_lst_Valores)
{
//Recorrer Columnas Visibles
foreach (DataGridViewColumn dgvc_Columna in lst_ColumnasVisibles)
{
string str_NombreColumna = dgvc_Columna.Name;
//Buscar el modelo para poder saber que tipo de columna es
INTERNO_ABS_Listado_ColumnasDatos_Modelo mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo = g_obj_Controladora.g_obj_ABS_Listado_COM_EntradasMercanciaCabecera_Bolsa.LISTADO_COLUMNAS()[str_NombreColumna];
if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo != null)
{
//Tipo fecha
if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.TipoDato.Equals(G_ENUM_TIPOSDATOS.DATETIME))
{
DateTime? dtt_Valor = dnm_Registro.GetType().GetProperty(mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna).GetValue(dnm_Registro, null);
if (dtt_Valor != null)
{
obj_worksheet.Cell(int_Contador_Fila + 2, int_Contador_Columna + 1).SetValue(dtt_Valor.Value.ToString("dd/MM/yyyy")).Style.DateFormat.SetFormat("dd/mm/yyyy");
}
else
{
obj_worksheet.Cell(int_Contador_Fila + 2, int_Contador_Columna + 1).Value = "";
}
}
//Tipo booleano
else if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.TipoDato.Equals(G_ENUM_TIPOSDATOS.BOOLEAN))
{
bool? bol_Valor = dnm_Registro.GetType().GetProperty(mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna).GetValue(dnm_Registro, null);
string str_Valor = bol_Valor != null && bol_Valor.Value ? "X" : "";
obj_worksheet.Cell(int_Contador_Fila + 2, int_Contador_Columna + 1).SetValue(str_Valor).SetDataType(XLCellValues.Text);
}
//Tipo decimal
else if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.TipoDato.Equals(G_ENUM_TIPOSDATOS.DECIMAL))
{
decimal? dcm_valor = dnm_Registro.GetType().GetProperty(mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna).GetValue(dnm_Registro, null);
string str_Valor = (dcm_valor != null ? dcm_valor.ToString() : "").Replace(",", ".");
obj_worksheet.Cell(int_Contador_Fila + 2, int_Contador_Columna + 1).SetValue(str_Valor).SetDataType(XLCellValues.Number);
obj_worksheet.Cell(int_Contador_Fila + 2, int_Contador_Columna + 1).Style.NumberFormat.Format = "0.0#?";
//Alinear los numeros a la derecha
obj_worksheet.Cell(int_Contador_Fila + 2, int_Contador_Columna + 1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
}
//Tipo long
else if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.TipoDato.Equals(G_ENUM_TIPOSDATOS.LONG))
{
long? lng_valor = dnm_Registro.GetType().GetProperty(mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna).GetValue(dnm_Registro, null);
string str_Valor = lng_valor != null ? lng_valor.ToString() : "";
obj_worksheet.Cell(int_Contador_Fila + 2, int_Contador_Columna + 1).SetValue(str_Valor).SetDataType(XLCellValues.Number);
obj_worksheet.Cell(int_Contador_Fila + 2, int_Contador_Columna + 1).Style.NumberFormat.Format = "0";
//Alinear los numeros a la derecha
obj_worksheet.Cell(int_Contador_Fila + 2, int_Contador_Columna + 1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
}
//Tipo int
else if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.TipoDato.Equals(G_ENUM_TIPOSDATOS.INT))
{
int? int_valor = dnm_Registro.GetType().GetProperty(mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna).GetValue(dnm_Registro, null);
string str_Valor = int_valor != null ? int_valor.ToString() : "";
obj_worksheet.Cell(int_Contador_Fila + 2, int_Contador_Columna + 1).SetValue(str_Valor).SetDataType(XLCellValues.Number);
obj_worksheet.Cell(int_Contador_Fila + 2, int_Contador_Columna + 1).Style.NumberFormat.Format = "0";
//Alinear los numeros a la derecha
obj_worksheet.Cell(int_Contador_Fila + 2, int_Contador_Columna + 1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right;
}
//Tipo texto
else
{
string str_valor = dnm_Registro.GetType().GetProperty(mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna).GetValue(dnm_Registro, null);
obj_worksheet.Cell(int_Contador_Fila + 2, int_Contador_Columna + 1).SetValue(str_valor).SetDataType(XLCellValues.Text);
//Alinear los texto a la derecha
obj_worksheet.Cell(int_Contador_Fila + 2, int_Contador_Columna + 1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left;
}
}
else
{
obj_worksheet.Cell(int_Contador_Fila + 2, int_Contador_Columna + 1).Value = "";
}
//Sumo 1 a la columna
int_Contador_Columna += 1;
}
//Sumo 1 a la fila
int_Contador_Fila += 1;
//las Columnas se reinician a 0
int_Contador_Columna = 0;
}
}
//Ajusto el Excell al contenido
obj_worksheet.Columns().AdjustToContents();
//Abro un dialog para Guardar
SaveFileDialog save = new SaveFileDialog();
save.Filter = "Excel (*.xlsx)|*.xlsx";
save.Title = "Excel";
if (save.ShowDialog() == DialogResult.OK)
{
//Guardo el Excell
obj_XLWorkbook.SaveAs(save.FileName);
Mensajes.MostrarMensaje(Mensajes.G_STR_MENSAJES_GENERAL_EXPORTAREXCEL_CORRECTO());
}
}
catch (Exception ex)
{
Control_Errores.Errores_Log("", ex, nameof(P_EntradaMercanciaCabecera_Bolsa) + "/" + nameof(Exportar_Excel));
Mensajes.MostrarMensaje(Mensajes.G_STR_MENSAJES_GENERAL_ERROR_EXPORTAREXCEL());
}
finally
{
obj_XLWorkbook.Dispose();
}
}
}
//Borrar Lineas
private void ex_btn_P_EntradaMercanciaCabecera_Bolsa_Borrar_Click(object sender, EventArgs e)
{
Borrar();
}
private void Borrar()
{
try
{
if (Datos_Generales.Permisos_Comprobar(g_mdl_INTERNO_OpcionesDetalle_Modelo.opcion, g_lst_INTERNO_Permisos_Modelo, (int)G_ENUM_PERMISOS.Borrar, true))
{
//Registro Seleccionados ........................................
List<dynamic> lst_ids = new List<dynamic>();
if (ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.Rows.Count > 0)
{
//Buscar el Campo Clave
string str_NombreCampoClave = "id";
INTERNO_ABS_Listado_ColumnasDatos_Modelo mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo = g_obj_Controladora.g_obj_ABS_Listado_COM_EntradasMercanciaCabecera_Bolsa.LISTADO_COLUMNAS().Values.Where(m => m.ColumnaClave).FirstOrDefault();
if (mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo != null)
{
str_NombreCampoClave = mdl_INTERNO_ABS_Listado_ColumnasDatos_Modelo.Descripcion_Interna;
}
if (ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.SelectedRows != null && ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.SelectedRows.Count > 0)
{
foreach (DataGridViewRow dgvr in ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.SelectedRows)
{
lst_ids.Add(long.Parse(dgvr.Cells[str_NombreCampoClave].Value.ToString()));
}
}
}
//................................................................
//Cargamos el ensamblado
Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_COMPRAS + ".dll");
//Obtenemos el tipo de la clase
Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_COMPRAS + "." + Variables.G_STR_LIBRERIA_OPCIONES);
//creamos la instancia
var obj_Clase = Activator.CreateInstance(m_type);
//Cargamos el metodo solicitado
MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_OPCIONES_PROCEDIMIENTO_BORRAR_BOLSA, BindingFlags.Instance | BindingFlags.NonPublic);
object[] arr_Parametros = { g_mdl_INTERNO_OpcionesDetalle_Modelo.opcion,
this,
Variables.G_MDL_INTERNO_VALORESGENERALES_MODELO,
this.P_Base_FechaTrabajo,
lst_ids
};
//Pasamos los parametros al metodo y lo ejecutamos
obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
}
}
catch (Control_Errores)
{ }
catch (Exception ex)
{
Control_Errores.Errores_Log("", ex, nameof(P_EntradaMercanciaCabecera_Bolsa) + "/" + nameof(Borrar));
}
}
//Añadir segun filtros
private void ex_btn_P_EntradaMercanciaCabecera_Bolsa_FiltroAdd_Click(object sender, EventArgs e)
{
FiltroAdd();
}
private void FiltroAdd()
{
try
{
if (Datos_Generales.Permisos_Comprobar(Variables.G_STR_OPCION_COM_ENTRADAMERCANCIACABECERA_BOLSA, g_lst_INTERNO_Permisos_Modelo, (int)G_ENUM_PERMISOS.Anadir, true))
{
Dictionary<string, object> dct_ListadoFiltros_Agregados = new Dictionary<string, object>();
PE_Listados_Filtros frm_PE_Listados_Filtros = new PE_Listados_Filtros(g_obj_Controladora.g_obj_ABS_Listado_COM_EntradasMercanciaCabecera_Bolsa, ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.Columns, dct_ListadoFiltros_Agregados);
frm_PE_Listados_Filtros.ShowDialog();
if (frm_PE_Listados_Filtros.g_bol_BotonAceptar)
{
//Mostrar/Ocultar las Columnas que no esten en el Listado ############################################
g_obj_Controladora.g_lst_ColumnasAMostrar_BOLSA = frm_PE_Listados_Filtros.g_lst_ColumnasAMostrar;
bool bol_Cambio_MostraroOcultar_Columnas = false;
foreach (DataGridViewColumn dgvc_ColumnasActuales in ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.Columns)
{
//Mostrar
if (g_obj_Controladora.g_lst_ColumnasAMostrar_BOLSA.Contains(dgvc_ColumnasActuales.Name))
{
if (!dgvc_ColumnasActuales.Visible)
{
bol_Cambio_MostraroOcultar_Columnas = true;
}
dgvc_ColumnasActuales.Visible = true;
}
//Ocultar
else
{
if (dgvc_ColumnasActuales.Visible)
{
bol_Cambio_MostraroOcultar_Columnas = true;
}
dgvc_ColumnasActuales.Visible = false;
}
}
//######################################################################################################
//Rellenar los bolsa con los filtros hechos #############################################################################################################################
dct_ListadoFiltros_Agregados = frm_PE_Listados_Filtros.g_dct_ListadoFiltros.ToDictionary(entry => entry.Key, entry => entry.Value);
//Si no cambio ninguna columna (mostrar/Ocultar) y no hay filtros, se cargar los filtros avanzados
//Si no cambio ninguna columna (mostrar/Ocultar) y hay filtros, se cargar los filtros avanzados
//Si cambio alguna columna (mostrar/Ocultar) y no hay filtros, no se cargar los filtros avanzados
//Si cambio alguna columna (mostrar/Ocultar) y hay filtros, se cargar los filtros avanzados
if (bol_Cambio_MostraroOcultar_Columnas && (dct_ListadoFiltros_Agregados == null || dct_ListadoFiltros_Agregados.Count == 0))
{
if (frm_PE_Listados_Filtros.g_bol_RecargarListado)
{
//Cargar los Datos desde Base de datos
g_obj_Controladora.Recargar_Listado(true);
}
}
else if (dct_ListadoFiltros_Agregados != null && dct_ListadoFiltros_Agregados.Count > 0)
{
//Cargamos el ensamblado
Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_COMPRAS + ".dll");
//Obtenemos el tipo de la clase
Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_COMPRAS + "." + Variables.G_STR_LIBRERIA_OPCIONES);
//creamos la instancia
var obj_Clase = Activator.CreateInstance(m_type);
//Cargamos el metodo solicitado
MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_OPCIONES_PROCEDIMIENTO_FILTRAR_REGISTROS_PARA_BOLSA, BindingFlags.Instance | BindingFlags.NonPublic);
object[] arr_Parametros = { g_mdl_INTERNO_OpcionesDetalle_Modelo.opcion,
Variables.G_STR_OPCION_COM_ENTRADAMERCANCIACABECERA,
P_Base_ValoresGenerales.lng_idEmpresa,
P_Base_ValoresGenerales.EjercicioActivo.id,
g_obj_Controladora.g_lst_ColumnasAMostrar_BOLSA,
dct_ListadoFiltros_Agregados
};
//Pasamos los parametros al metodo y lo ejecutamos
List<long> lst_id_Agregar = (List<long>)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
//########################################################################################################################################################################
if (lst_id_Agregar != null && lst_id_Agregar.Count > 0)
{
List<dynamic> lst_id_AgregarFInal = lst_id_Agregar.Cast<dynamic>().ToList();
//creamos la instancia
var obj_Clase2 = Activator.CreateInstance(m_type);
//Cargamos el metodo solicitado
MethodInfo obj_MethodInfo2 = obj_Clase2.GetType().GetMethod(Variables.G_STR_LIBRERIA_OPCIONES_PROCEDIMIENTO_AGREGAR_BOLSA, BindingFlags.Instance | BindingFlags.NonPublic);
object[] arr_Parametros2 = { g_mdl_INTERNO_OpcionesDetalle_Modelo.opcion,
this,
Variables.G_MDL_INTERNO_VALORESGENERALES_MODELO,
this.P_Base_FechaTrabajo,
lst_id_AgregarFInal
};
//Pasamos los parametros al metodo y lo ejecutamos
obj_MethodInfo2.Invoke(obj_Clase2, arr_Parametros2);
}
else if (frm_PE_Listados_Filtros.g_bol_RecargarListado)
{
//Cargar los Datos desde Base de datos
g_obj_Controladora.Recargar_Listado(true);
}
}
}
}
}
catch (Control_Errores)
{ }
catch (Exception ex)
{
Control_Errores.Errores_Log("", ex, nameof(P_EntradaMercanciaCabecera_Bolsa) + "/" + nameof(FiltroAdd));
}
}
//Quitar segun Filtros
private void ex_btn_P_EntradaMercanciaCabecera_Bolsa_FiltroBorrar_Click(object sender, EventArgs e)
{
FiltroBorrar();
}
private void FiltroBorrar()
{
try
{
if (Datos_Generales.Permisos_Comprobar(Variables.G_STR_OPCION_COM_ENTRADAMERCANCIACABECERA_BOLSA, g_lst_INTERNO_Permisos_Modelo, (int)G_ENUM_PERMISOS.Borrar, true))
{
Dictionary<string, object> dct_ListadoFiltros_Agregados = new Dictionary<string, object>();
PE_Listados_Filtros frm_PE_Listados_Filtros = new PE_Listados_Filtros(g_obj_Controladora.g_obj_ABS_Listado_COM_EntradasMercanciaCabecera_Bolsa, ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.Columns, dct_ListadoFiltros_Agregados);
frm_PE_Listados_Filtros.ShowDialog();
if (frm_PE_Listados_Filtros.g_bol_BotonAceptar)
{
//Mostrar/Ocultar las Columnas que no esten en el Listado ############################################
g_obj_Controladora.g_lst_ColumnasAMostrar_BOLSA = frm_PE_Listados_Filtros.g_lst_ColumnasAMostrar;
bool bol_Cambio_MostraroOcultar_Columnas = false;
foreach (DataGridViewColumn dgvc_ColumnasActuales in ex_dgv_P_EntradaMercanciaCabecera_Bolsa_Listado.Columns)
{
//Mostrar
if (g_obj_Controladora.g_lst_ColumnasAMostrar_BOLSA.Contains(dgvc_ColumnasActuales.Name))
{
if (!dgvc_ColumnasActuales.Visible)
{
bol_Cambio_MostraroOcultar_Columnas = true;
}
dgvc_ColumnasActuales.Visible = true;
}
//Ocultar
else
{
if (dgvc_ColumnasActuales.Visible)
{
bol_Cambio_MostraroOcultar_Columnas = true;
}
dgvc_ColumnasActuales.Visible = false;
}
}
//######################################################################################################
//Rellenar los bolsa con los filtros hechos #############################################################################################################################
dct_ListadoFiltros_Agregados = frm_PE_Listados_Filtros.g_dct_ListadoFiltros.ToDictionary(entry => entry.Key, entry => entry.Value);
//Si no cambio ninguna columna (mostrar/Ocultar) y no hay filtros, se cargar los filtros avanzados
//Si no cambio ninguna columna (mostrar/Ocultar) y hay filtros, se cargar los filtros avanzados
//Si cambio alguna columna (mostrar/Ocultar) y no hay filtros, no se cargar los filtros avanzados
//Si cambio alguna columna (mostrar/Ocultar) y hay filtros, se cargar los filtros avanzados
if (bol_Cambio_MostraroOcultar_Columnas && (dct_ListadoFiltros_Agregados == null || dct_ListadoFiltros_Agregados.Count == 0))
{
if (frm_PE_Listados_Filtros.g_bol_RecargarListado)
{
//Cargar los Datos desde Base de datos
g_obj_Controladora.Recargar_Listado(true);
}
}
else if (dct_ListadoFiltros_Agregados != null && dct_ListadoFiltros_Agregados.Count > 0)
{
//Cargamos el ensamblado
Assembly m_assembly = Assembly.LoadFrom(Variables.G_STR_LIBRERIA_RUTAINICIAL + @"\" + Variables.G_STR_LIBRERIA_COMPRAS + ".dll");
//Obtenemos el tipo de la clase
Type m_type = m_assembly.GetType(Variables.G_STR_LIBRERIA_COMPRAS + "." + Variables.G_STR_LIBRERIA_OPCIONES);
//creamos la instancia
var obj_Clase = Activator.CreateInstance(m_type);
//Cargamos el metodo solicitado
MethodInfo obj_MethodInfo = obj_Clase.GetType().GetMethod(Variables.G_STR_LIBRERIA_OPCIONES_PROCEDIMIENTO_FILTRAR_REGISTROS_PARA_BOLSA, BindingFlags.Instance | BindingFlags.NonPublic);
object[] arr_Parametros = { g_mdl_INTERNO_OpcionesDetalle_Modelo.opcion,
Variables.G_STR_OPCION_COM_ENTRADAMERCANCIACABECERA,
P_Base_ValoresGenerales.lng_idEmpresa,
P_Base_ValoresGenerales.EjercicioActivo.id,
g_obj_Controladora.g_lst_ColumnasAMostrar_BOLSA,
dct_ListadoFiltros_Agregados
};
//Pasamos los parametros al metodo y lo ejecutamos
List<long> lst_id_Agregar = (List<long>)obj_MethodInfo.Invoke(obj_Clase, arr_Parametros);
//########################################################################################################################################################################
if (lst_id_Agregar != null && lst_id_Agregar.Count > 0)
{
List<dynamic> lst_id_AgregarFInal = lst_id_Agregar.Cast<dynamic>().ToList();
//creamos la instancia
var obj_Clase2 = Activator.CreateInstance(m_type);
//Cargamos el metodo solicitado
MethodInfo obj_MethodInfo2 = obj_Clase2.GetType().GetMethod(Variables.G_STR_LIBRERIA_OPCIONES_PROCEDIMIENTO_BORRAR_BOLSA, BindingFlags.Instance | BindingFlags.NonPublic);
object[] arr_Parametros2 = { g_mdl_INTERNO_OpcionesDetalle_Modelo.opcion,
this,
Variables.G_MDL_INTERNO_VALORESGENERALES_MODELO,
this.P_Base_FechaTrabajo,
lst_id_AgregarFInal
};
//Pasamos los parametros al metodo y lo ejecutamos
obj_MethodInfo2.Invoke(obj_Clase2, arr_Parametros2);
}
else if (frm_PE_Listados_Filtros.g_bol_RecargarListado)
{
//Cargar los Datos desde Base de datos
g_obj_Controladora.Recargar_Listado(true);
}
}
}
}
}
catch (Control_Errores)
{ }
catch (Exception ex)
{
Control_Errores.Errores_Log("", ex, nameof(P_EntradaMercanciaCabecera_Bolsa) + "/" + nameof(FiltroBorrar));
}
}
#endregion
private void ex_btn_P_EntradaMercanciaCabecera_Bolsa_Actualizar_Click(object sender, EventArgs e)
{
if (g_obj_Controladora != null)
{
g_obj_Controladora.Recargar_Listado(true);
}
}
}
}