From c8d1044267ad94d9e3b31b1662504ec52fe4a5a7 Mon Sep 17 00:00:00 2001 From: manuel Date: Fri, 23 Jan 2026 12:45:41 +0100 Subject: [PATCH] Agregar archivos de proyecto. --- GestionGrupoSanchoToro/.editorconfig | 131 + GestionGrupoSanchoToro/Application.xaml | 9 + GestionGrupoSanchoToro/Application.xaml.vb | 25 + GestionGrupoSanchoToro/AssemblyInfo.vb | 11 + .../Compras/ucFacturaRecibida.xaml | 460 ++ .../Compras/ucFacturaRecibida.xaml.vb | 683 +++ .../Compras/ucFacturasRecibidas.xaml | 196 + .../Compras/ucFacturasRecibidas.xaml.vb | 286 + .../Compras/ucPagoMultipleFacturas.xaml | 144 + .../Compras/ucPagoMultipleFacturas.xaml.vb | 202 + GestionGrupoSanchoToro/Comun.vb | 410 ++ .../FicherosMaestros/ucAlmacen.xaml | 138 + .../FicherosMaestros/ucAlmacen.xaml.vb | 232 + .../FicherosMaestros/ucAlmacenes.xaml | 46 + .../FicherosMaestros/ucAlmacenes.xaml.vb | 84 + .../FicherosMaestros/ucCaja.xaml | 202 + .../FicherosMaestros/ucCaja.xaml.bak | 202 + .../FicherosMaestros/ucCaja.xaml.vb | 205 + .../FicherosMaestros/ucCajas.xaml | 76 + .../FicherosMaestros/ucCajas.xaml.vb | 534 ++ .../FicherosMaestros/ucProducto.xaml | 199 + .../FicherosMaestros/ucProducto.xaml.vb | 309 + .../FicherosMaestros/ucProductos.xaml | 120 + .../FicherosMaestros/ucProductos.xaml.vb | 192 + GestionGrupoSanchoToro/FuncionesDinamicas.vb | 116 + .../GestionGrupoSanchoToro.vbproj | 116 + GestionGrupoSanchoToro/Informes/Informes.vb | 136 + .../Informes/ucPlantillas.xaml | 67 + .../Informes/ucPlantillas.xaml.vb | 401 ++ .../Informes/xrCierreCaja.Designer.vb | 627 ++ .../Informes/xrCierreCaja.Designer.vb.bak | 627 ++ .../Informes/xrCierreCaja.resx | 120 + .../Informes/xrCierreCaja.vb | 3 + GestionGrupoSanchoToro/ListadosYProcesos.vb | 82 + .../My Project/Application.myapp | 10 + .../My Project/Resources.Designer.vb | 73 + .../My Project/Resources.resx | 124 + .../My Project/Settings.Designer.vb | 73 + .../My Project/Settings.settings | 6 + .../Properties/Licenses.licx | 1 + .../Publicacion/Publicar.cmd | 5 + .../Publicacion/changelog.htm | 239 + .../changelog_archivos/colorschememapping.xml | 2 + .../changelog_archivos/filelist.xml | 6 + .../changelog_archivos/themedata.thmx | Bin 0 -> 3348 bytes .../Publicacion/m3Factu.xml | 6 + .../Publicacion/winscpftp.txt | 5 + .../Resources/LogoTcsColor.png | Bin 0 -> 56602 bytes GestionGrupoSanchoToro/Resources/STSur.jpg | Bin 0 -> 59825 bytes GestionGrupoSanchoToro/Resources/stsur.ico | Bin 0 -> 2207 bytes .../Resources/stsur_simple_icon_32x32.png | Bin 0 -> 2189 bytes .../dxwAgregarNuevoCodigoPostal.xaml | 37 + .../dxwAgregarNuevoCodigoPostal.xaml.vb | 71 + .../dxwAgregarNuevoMunicipio.xaml | 34 + .../dxwAgregarNuevoMunicipio.xaml.vb | 82 + .../VentanasEmergentes/dxwArticulos.xaml | 72 + .../VentanasEmergentes/dxwArticulos.xaml.vb | 60 + .../dxwCodigosPostales.xaml | 51 + .../dxwCodigosPostales.xaml.vb | 69 + .../VentanasEmergentes/dxwEntidades.xaml | 62 + .../VentanasEmergentes/dxwEntidades.xaml.vb | 70 + .../VentanasEmergentes/dxwEnvioCorreo.xaml | 43 + .../VentanasEmergentes/dxwEnvioCorreo.xaml.vb | 82 + .../VentanasEmergentes/dxwIVA.xaml | 47 + .../VentanasEmergentes/dxwIdentificacion.xaml | 44 + .../dxwIdentificacion.xaml.vb | 73 + .../VentanasEmergentes/dxwIva.xaml.vb | 61 + .../VentanasEmergentes/dxwPoblaciones.xaml | 50 + .../VentanasEmergentes/dxwPoblaciones.xaml.vb | 63 + .../VentanasEmergentes/dxwProductos.xaml | 67 + .../VentanasEmergentes/dxwProductos.xaml.vb | 64 + .../Ventas/ucFacturaEmitida.xaml | 879 +++ .../Ventas/ucFacturaEmitida.xaml.vb | 839 +++ .../Ventas/ucFacturasEmitidas.xaml | 137 + .../Ventas/ucFacturasEmitidas.xaml.vb | 347 ++ GestionGrupoSanchoToro/dxwInicio.xaml | 43 + GestionGrupoSanchoToro/dxwInicio.xaml.vb | 352 ++ GestionGrupoSanchoToro/escalera.ico | Bin 0 -> 2663 bytes .../ucCambioContrasenna.xaml | 70 + .../ucCambioContrasenna.xaml.vb | 115 + .../ucConciliacionBancaria.xaml | 175 + .../ucConciliacionBancaria.xaml.vb | 404 ++ .../ucConciliacionBancariaant.xaml | 114 + .../ucConciliacionBancariaant.xaml.vb | 648 +++ .../ucConciliacionesBancaria.xaml | 77 + .../ucConciliacionesBancaria.xaml.vb | 170 + GestionGrupoSanchoToro/ucConfiguracion.xaml | 106 + .../ucConfiguracion.xaml.bak | 106 + .../ucConfiguracion.xaml.vb | 90 + GestionGrupoSanchoToro/ucCorreos.xaml | 95 + GestionGrupoSanchoToro/ucCorreos.xaml.vb | 202 + GestionGrupoSanchoToro/ucEntidad.xaml | 400 ++ GestionGrupoSanchoToro/ucEntidad.xaml.bak | 564 ++ GestionGrupoSanchoToro/ucEntidad.xaml.vb | 684 +++ GestionGrupoSanchoToro/ucEntidades.xaml | 105 + GestionGrupoSanchoToro/ucEntidades.xaml.vb | 157 + .../ucExtractoBancario.xaml | 117 + .../ucExtractoBancario.xaml.vb | 121 + .../ucExtractosBancarios.xaml | 81 + .../ucExtractosBancarios.xaml.vb | 342 ++ GestionGrupoSanchoToro/ucFiesta.xaml | 48 + GestionGrupoSanchoToro/ucFiesta.xaml.bak | 48 + GestionGrupoSanchoToro/ucFiesta.xaml.vb | 116 + GestionGrupoSanchoToro/ucFiestas.xaml | 45 + GestionGrupoSanchoToro/ucFiestas.xaml.vb | 75 + .../ucGrupoEnumeraciones.xaml | 75 + .../ucGrupoEnumeraciones.xaml.vb | 124 + GestionGrupoSanchoToro/ucGrupoUsuarios.xaml | 70 + .../ucGrupoUsuarios.xaml.vb | 108 + .../ucGruposEnumeraciones.xaml | 30 + .../ucGruposEnumeraciones.xaml.vb | 155 + GestionGrupoSanchoToro/ucGruposUsuarios.xaml | 29 + .../ucGruposUsuarios.xaml.vb | 90 + GestionGrupoSanchoToro/ucModelo347.xaml | 58 + GestionGrupoSanchoToro/ucModelo347.xaml.vb | 247 + GestionGrupoSanchoToro/ucMovimientoCaja.xaml | 218 + .../ucMovimientoCaja.xaml.bak | 218 + .../ucMovimientoCaja.xaml.vb | 328 ++ GestionGrupoSanchoToro/ucMovimientosCaja.xaml | 121 + .../ucMovimientosCaja.xaml.vb | 272 + GestionGrupoSanchoToro/ucPermiso.xaml | 169 + GestionGrupoSanchoToro/ucPermiso.xaml.vb | 125 + GestionGrupoSanchoToro/ucPermisos.xaml | 27 + GestionGrupoSanchoToro/ucPermisos.xaml.vb | 80 + GestionGrupoSanchoToro/ucProceso.xaml | 59 + GestionGrupoSanchoToro/ucProceso.xaml.bak | 59 + GestionGrupoSanchoToro/ucProceso.xaml.vb | 128 + GestionGrupoSanchoToro/ucProcesos.xaml | 53 + GestionGrupoSanchoToro/ucProcesos.xaml.vb | 179 + GestionGrupoSanchoToro/ucSerieFactura.xaml | 69 + GestionGrupoSanchoToro/ucSerieFactura.xaml.vb | 132 + GestionGrupoSanchoToro/ucSeriesFacturas.xaml | 58 + .../ucSeriesFacturas.xaml.vb | 69 + GestionGrupoSanchoToro/ucTraspasoCaja.xaml | 57 + .../ucTraspasoCaja.xaml.bak | 57 + GestionGrupoSanchoToro/ucTraspasoCaja.xaml.vb | 157 + GestionGrupoSanchoToro/ucUsuario.xaml | 75 + GestionGrupoSanchoToro/ucUsuario.xaml.vb | 129 + GestionGrupoSanchoToro/ucUsuarios.xaml | 35 + GestionGrupoSanchoToro/ucUsuarios.xaml.vb | 79 + GrupoSanchoToro.sln | 44 + ServicioGrupoSanchoToro/Comprobaciones.cs | 164 + ServicioGrupoSanchoToro/Configuracion.cs | 18 + ServicioGrupoSanchoToro/Logs.cs | 116 + ServicioGrupoSanchoToro/Procesos.cs | 44 + ServicioGrupoSanchoToro/ProcesosCorreos.cs | 122 + ServicioGrupoSanchoToro/Program.cs | 46 + .../Properties/launchSettings.json | 19 + .../ServicioGrupoSanchoToro.csproj | 23 + ServicioGrupoSanchoToro/Worker.cs | 111 + ServicioGrupoSanchoToro/appsettings.json | 14 + bdGrupoSanchoToro/CalculosDinamicos.cs | 242 + .../CodeTemplates/EFCore/DbContext.t4 | 353 ++ .../CodeTemplates/EFCore/EntityType.t4 | 176 + .../ServiceReference1/ConnectedService.json | 104 + .../ServiceReference1/Reference.cs | 5099 +++++++++++++++++ bdGrupoSanchoToro/FodyWeavers.xml | 3 + bdGrupoSanchoToro/Utilidades.cs | 144 + bdGrupoSanchoToro/bdGrupoSanchoToro.csproj | 33 + bdGrupoSanchoToro/db/albaranes.cs | 89 + bdGrupoSanchoToro/db/almacenes.cs | 41 + bdGrupoSanchoToro/db/articulos.cs | 45 + bdGrupoSanchoToro/db/autorizacionesgrupos.cs | 33 + .../db/autorizacionesusuarios.cs | 33 + bdGrupoSanchoToro/db/bancos.cs | 17 + bdGrupoSanchoToro/db/cajas.cs | 39 + bdGrupoSanchoToro/db/codigospostales.cs | 19 + .../db/conciliacionesbancarias.cs | 33 + bdGrupoSanchoToro/db/correos.cs | 63 + bdGrupoSanchoToro/db/cuentascorreo.cs | 35 + bdGrupoSanchoToro/db/detallepresupuesto.cs | 33 + bdGrupoSanchoToro/db/detallesalbaranes.cs | 33 + bdGrupoSanchoToro/db/detallesfacturas.cs | 41 + .../db/detallesfacturasrecibidas.cs | 31 + bdGrupoSanchoToro/db/documentosfacturas.cs | 29 + .../db/documentosfacturasrecibidas.cs | 29 + .../db/documentospresupuestos.cs | 31 + bdGrupoSanchoToro/db/empresas.cs | 45 + bdGrupoSanchoToro/db/entidades.cs | 91 + bdGrupoSanchoToro/db/enumeraciones.cs | 67 + bdGrupoSanchoToro/db/eventos.cs | 47 + bdGrupoSanchoToro/db/expedientesentidades.cs | 29 + bdGrupoSanchoToro/db/extractosbancarios.cs | 31 + bdGrupoSanchoToro/db/facturas.cs | 95 + bdGrupoSanchoToro/db/facturasrecibidas.cs | 91 + bdGrupoSanchoToro/db/ficheros.cs | 61 + bdGrupoSanchoToro/db/ficherosadjuntos.cs | 19 + bdGrupoSanchoToro/db/ficherosconfiguracion.cs | 19 + bdGrupoSanchoToro/db/fiestas.cs | 15 + bdGrupoSanchoToro/db/formulas.cs | 19 + bdGrupoSanchoToro/db/gruposenumeraciones.cs | 19 + bdGrupoSanchoToro/db/gruposusuarios.cs | 17 + bdGrupoSanchoToro/db/logs.cs | 37 + bdGrupoSanchoToro/db/menus.cs | 27 + bdGrupoSanchoToro/db/movimientosbancarios.cs | 35 + bdGrupoSanchoToro/db/movimientoscaja.cs | 63 + bdGrupoSanchoToro/db/municipios.cs | 33 + bdGrupoSanchoToro/db/permisos.cs | 27 + bdGrupoSanchoToro/db/plantillas.cs | 43 + bdGrupoSanchoToro/db/presupuestos.cs | 61 + bdGrupoSanchoToro/db/procesos.cs | 33 + bdGrupoSanchoToro/db/productos.cs | 101 + bdGrupoSanchoToro/db/provincias.cs | 15 + bdGrupoSanchoToro/db/seriesfacturas.cs | 29 + bdGrupoSanchoToro/db/stocks.cs | 21 + bdGrupoSanchoToro/db/tablas.cs | 15 + bdGrupoSanchoToro/db/trabajador.cs | 27 + bdGrupoSanchoToro/db/usuarios.cs | 67 + bdGrupoSanchoToro/db/v_albaranesextendidos.cs | 99 + .../dbcontext/EnumeracionesService.cs | 27 + .../dbcontext/GrupoSanchoToroContext.cs | 2186 +++++++ bdGrupoSanchoToro/dbcontext/conexion.cs | 93 + .../dbcontext/tscGrupoSanchoToro.cs | 166 + bdGrupoSanchoToro/efpt.config.json | 245 + bdGrupoSanchoToro/extensiones/almacenes.cs | 73 + bdGrupoSanchoToro/extensiones/cajas.cs | 37 + .../extensiones/codigospostales.cs | 29 + .../extensiones/conciliacionesbancarias.cs | 94 + bdGrupoSanchoToro/extensiones/correos.cs | 127 + .../extensiones/detallesfacturas.cs | 101 + .../extensiones/detallesfacturasrecibidas.cs | 28 + .../extensiones/documentosfacturas.cs | 26 + .../documentosfacturasrecibidas.cs | 26 + bdGrupoSanchoToro/extensiones/entidades.cs | 156 + bdGrupoSanchoToro/extensiones/eventos.cs | 31 + bdGrupoSanchoToro/extensiones/facturas.cs | 319 ++ .../extensiones/facturasrecibidas.cs | 91 + bdGrupoSanchoToro/extensiones/fiestas.cs | 10 + bdGrupoSanchoToro/extensiones/formulas.cs | 13 + bdGrupoSanchoToro/extensiones/logs.cs | 26 + .../extensiones/movimientosbancarios.cs | 66 + .../extensiones/movimientoscaja.cs | 492 ++ bdGrupoSanchoToro/extensiones/municipios.cs | 252 + bdGrupoSanchoToro/extensiones/productos.cs | 50 + .../extensiones/seriesfacturas.cs | 24 + bdGrupoSanchoToro/extensiones/stocks.cs | 31 + bdGrupoSanchoToro/optimiza.cmd | 1 + 237 files changed, 34721 insertions(+) create mode 100644 GestionGrupoSanchoToro/.editorconfig create mode 100644 GestionGrupoSanchoToro/Application.xaml create mode 100644 GestionGrupoSanchoToro/Application.xaml.vb create mode 100644 GestionGrupoSanchoToro/AssemblyInfo.vb create mode 100644 GestionGrupoSanchoToro/Compras/ucFacturaRecibida.xaml create mode 100644 GestionGrupoSanchoToro/Compras/ucFacturaRecibida.xaml.vb create mode 100644 GestionGrupoSanchoToro/Compras/ucFacturasRecibidas.xaml create mode 100644 GestionGrupoSanchoToro/Compras/ucFacturasRecibidas.xaml.vb create mode 100644 GestionGrupoSanchoToro/Compras/ucPagoMultipleFacturas.xaml create mode 100644 GestionGrupoSanchoToro/Compras/ucPagoMultipleFacturas.xaml.vb create mode 100644 GestionGrupoSanchoToro/Comun.vb create mode 100644 GestionGrupoSanchoToro/FicherosMaestros/ucAlmacen.xaml create mode 100644 GestionGrupoSanchoToro/FicherosMaestros/ucAlmacen.xaml.vb create mode 100644 GestionGrupoSanchoToro/FicherosMaestros/ucAlmacenes.xaml create mode 100644 GestionGrupoSanchoToro/FicherosMaestros/ucAlmacenes.xaml.vb create mode 100644 GestionGrupoSanchoToro/FicherosMaestros/ucCaja.xaml create mode 100644 GestionGrupoSanchoToro/FicherosMaestros/ucCaja.xaml.bak create mode 100644 GestionGrupoSanchoToro/FicherosMaestros/ucCaja.xaml.vb create mode 100644 GestionGrupoSanchoToro/FicherosMaestros/ucCajas.xaml create mode 100644 GestionGrupoSanchoToro/FicherosMaestros/ucCajas.xaml.vb create mode 100644 GestionGrupoSanchoToro/FicherosMaestros/ucProducto.xaml create mode 100644 GestionGrupoSanchoToro/FicherosMaestros/ucProducto.xaml.vb create mode 100644 GestionGrupoSanchoToro/FicherosMaestros/ucProductos.xaml create mode 100644 GestionGrupoSanchoToro/FicherosMaestros/ucProductos.xaml.vb create mode 100644 GestionGrupoSanchoToro/FuncionesDinamicas.vb create mode 100644 GestionGrupoSanchoToro/GestionGrupoSanchoToro.vbproj create mode 100644 GestionGrupoSanchoToro/Informes/Informes.vb create mode 100644 GestionGrupoSanchoToro/Informes/ucPlantillas.xaml create mode 100644 GestionGrupoSanchoToro/Informes/ucPlantillas.xaml.vb create mode 100644 GestionGrupoSanchoToro/Informes/xrCierreCaja.Designer.vb create mode 100644 GestionGrupoSanchoToro/Informes/xrCierreCaja.Designer.vb.bak create mode 100644 GestionGrupoSanchoToro/Informes/xrCierreCaja.resx create mode 100644 GestionGrupoSanchoToro/Informes/xrCierreCaja.vb create mode 100644 GestionGrupoSanchoToro/ListadosYProcesos.vb create mode 100644 GestionGrupoSanchoToro/My Project/Application.myapp create mode 100644 GestionGrupoSanchoToro/My Project/Resources.Designer.vb create mode 100644 GestionGrupoSanchoToro/My Project/Resources.resx create mode 100644 GestionGrupoSanchoToro/My Project/Settings.Designer.vb create mode 100644 GestionGrupoSanchoToro/My Project/Settings.settings create mode 100644 GestionGrupoSanchoToro/Properties/Licenses.licx create mode 100644 GestionGrupoSanchoToro/Publicacion/Publicar.cmd create mode 100644 GestionGrupoSanchoToro/Publicacion/changelog.htm create mode 100644 GestionGrupoSanchoToro/Publicacion/changelog_archivos/colorschememapping.xml create mode 100644 GestionGrupoSanchoToro/Publicacion/changelog_archivos/filelist.xml create mode 100644 GestionGrupoSanchoToro/Publicacion/changelog_archivos/themedata.thmx create mode 100644 GestionGrupoSanchoToro/Publicacion/m3Factu.xml create mode 100644 GestionGrupoSanchoToro/Publicacion/winscpftp.txt create mode 100644 GestionGrupoSanchoToro/Resources/LogoTcsColor.png create mode 100644 GestionGrupoSanchoToro/Resources/STSur.jpg create mode 100644 GestionGrupoSanchoToro/Resources/stsur.ico create mode 100644 GestionGrupoSanchoToro/Resources/stsur_simple_icon_32x32.png create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwAgregarNuevoCodigoPostal.xaml create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwAgregarNuevoCodigoPostal.xaml.vb create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwAgregarNuevoMunicipio.xaml create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwAgregarNuevoMunicipio.xaml.vb create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwArticulos.xaml create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwArticulos.xaml.vb create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwCodigosPostales.xaml create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwCodigosPostales.xaml.vb create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwEntidades.xaml create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwEntidades.xaml.vb create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwEnvioCorreo.xaml create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwEnvioCorreo.xaml.vb create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwIVA.xaml create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwIdentificacion.xaml create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwIdentificacion.xaml.vb create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwIva.xaml.vb create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwPoblaciones.xaml create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwPoblaciones.xaml.vb create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwProductos.xaml create mode 100644 GestionGrupoSanchoToro/VentanasEmergentes/dxwProductos.xaml.vb create mode 100644 GestionGrupoSanchoToro/Ventas/ucFacturaEmitida.xaml create mode 100644 GestionGrupoSanchoToro/Ventas/ucFacturaEmitida.xaml.vb create mode 100644 GestionGrupoSanchoToro/Ventas/ucFacturasEmitidas.xaml create mode 100644 GestionGrupoSanchoToro/Ventas/ucFacturasEmitidas.xaml.vb create mode 100644 GestionGrupoSanchoToro/dxwInicio.xaml create mode 100644 GestionGrupoSanchoToro/dxwInicio.xaml.vb create mode 100644 GestionGrupoSanchoToro/escalera.ico create mode 100644 GestionGrupoSanchoToro/ucCambioContrasenna.xaml create mode 100644 GestionGrupoSanchoToro/ucCambioContrasenna.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucConciliacionBancaria.xaml create mode 100644 GestionGrupoSanchoToro/ucConciliacionBancaria.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucConciliacionBancariaant.xaml create mode 100644 GestionGrupoSanchoToro/ucConciliacionBancariaant.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucConciliacionesBancaria.xaml create mode 100644 GestionGrupoSanchoToro/ucConciliacionesBancaria.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucConfiguracion.xaml create mode 100644 GestionGrupoSanchoToro/ucConfiguracion.xaml.bak create mode 100644 GestionGrupoSanchoToro/ucConfiguracion.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucCorreos.xaml create mode 100644 GestionGrupoSanchoToro/ucCorreos.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucEntidad.xaml create mode 100644 GestionGrupoSanchoToro/ucEntidad.xaml.bak create mode 100644 GestionGrupoSanchoToro/ucEntidad.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucEntidades.xaml create mode 100644 GestionGrupoSanchoToro/ucEntidades.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucExtractoBancario.xaml create mode 100644 GestionGrupoSanchoToro/ucExtractoBancario.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucExtractosBancarios.xaml create mode 100644 GestionGrupoSanchoToro/ucExtractosBancarios.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucFiesta.xaml create mode 100644 GestionGrupoSanchoToro/ucFiesta.xaml.bak create mode 100644 GestionGrupoSanchoToro/ucFiesta.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucFiestas.xaml create mode 100644 GestionGrupoSanchoToro/ucFiestas.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucGrupoEnumeraciones.xaml create mode 100644 GestionGrupoSanchoToro/ucGrupoEnumeraciones.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucGrupoUsuarios.xaml create mode 100644 GestionGrupoSanchoToro/ucGrupoUsuarios.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucGruposEnumeraciones.xaml create mode 100644 GestionGrupoSanchoToro/ucGruposEnumeraciones.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucGruposUsuarios.xaml create mode 100644 GestionGrupoSanchoToro/ucGruposUsuarios.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucModelo347.xaml create mode 100644 GestionGrupoSanchoToro/ucModelo347.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucMovimientoCaja.xaml create mode 100644 GestionGrupoSanchoToro/ucMovimientoCaja.xaml.bak create mode 100644 GestionGrupoSanchoToro/ucMovimientoCaja.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucMovimientosCaja.xaml create mode 100644 GestionGrupoSanchoToro/ucMovimientosCaja.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucPermiso.xaml create mode 100644 GestionGrupoSanchoToro/ucPermiso.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucPermisos.xaml create mode 100644 GestionGrupoSanchoToro/ucPermisos.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucProceso.xaml create mode 100644 GestionGrupoSanchoToro/ucProceso.xaml.bak create mode 100644 GestionGrupoSanchoToro/ucProceso.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucProcesos.xaml create mode 100644 GestionGrupoSanchoToro/ucProcesos.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucSerieFactura.xaml create mode 100644 GestionGrupoSanchoToro/ucSerieFactura.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucSeriesFacturas.xaml create mode 100644 GestionGrupoSanchoToro/ucSeriesFacturas.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucTraspasoCaja.xaml create mode 100644 GestionGrupoSanchoToro/ucTraspasoCaja.xaml.bak create mode 100644 GestionGrupoSanchoToro/ucTraspasoCaja.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucUsuario.xaml create mode 100644 GestionGrupoSanchoToro/ucUsuario.xaml.vb create mode 100644 GestionGrupoSanchoToro/ucUsuarios.xaml create mode 100644 GestionGrupoSanchoToro/ucUsuarios.xaml.vb create mode 100644 GrupoSanchoToro.sln create mode 100644 ServicioGrupoSanchoToro/Comprobaciones.cs create mode 100644 ServicioGrupoSanchoToro/Configuracion.cs create mode 100644 ServicioGrupoSanchoToro/Logs.cs create mode 100644 ServicioGrupoSanchoToro/Procesos.cs create mode 100644 ServicioGrupoSanchoToro/ProcesosCorreos.cs create mode 100644 ServicioGrupoSanchoToro/Program.cs create mode 100644 ServicioGrupoSanchoToro/Properties/launchSettings.json create mode 100644 ServicioGrupoSanchoToro/ServicioGrupoSanchoToro.csproj create mode 100644 ServicioGrupoSanchoToro/Worker.cs create mode 100644 ServicioGrupoSanchoToro/appsettings.json create mode 100644 bdGrupoSanchoToro/CalculosDinamicos.cs create mode 100644 bdGrupoSanchoToro/CodeTemplates/EFCore/DbContext.t4 create mode 100644 bdGrupoSanchoToro/CodeTemplates/EFCore/EntityType.t4 create mode 100644 bdGrupoSanchoToro/Connected Services/ServiceReference1/ConnectedService.json create mode 100644 bdGrupoSanchoToro/Connected Services/ServiceReference1/Reference.cs create mode 100644 bdGrupoSanchoToro/FodyWeavers.xml create mode 100644 bdGrupoSanchoToro/Utilidades.cs create mode 100644 bdGrupoSanchoToro/bdGrupoSanchoToro.csproj create mode 100644 bdGrupoSanchoToro/db/albaranes.cs create mode 100644 bdGrupoSanchoToro/db/almacenes.cs create mode 100644 bdGrupoSanchoToro/db/articulos.cs create mode 100644 bdGrupoSanchoToro/db/autorizacionesgrupos.cs create mode 100644 bdGrupoSanchoToro/db/autorizacionesusuarios.cs create mode 100644 bdGrupoSanchoToro/db/bancos.cs create mode 100644 bdGrupoSanchoToro/db/cajas.cs create mode 100644 bdGrupoSanchoToro/db/codigospostales.cs create mode 100644 bdGrupoSanchoToro/db/conciliacionesbancarias.cs create mode 100644 bdGrupoSanchoToro/db/correos.cs create mode 100644 bdGrupoSanchoToro/db/cuentascorreo.cs create mode 100644 bdGrupoSanchoToro/db/detallepresupuesto.cs create mode 100644 bdGrupoSanchoToro/db/detallesalbaranes.cs create mode 100644 bdGrupoSanchoToro/db/detallesfacturas.cs create mode 100644 bdGrupoSanchoToro/db/detallesfacturasrecibidas.cs create mode 100644 bdGrupoSanchoToro/db/documentosfacturas.cs create mode 100644 bdGrupoSanchoToro/db/documentosfacturasrecibidas.cs create mode 100644 bdGrupoSanchoToro/db/documentospresupuestos.cs create mode 100644 bdGrupoSanchoToro/db/empresas.cs create mode 100644 bdGrupoSanchoToro/db/entidades.cs create mode 100644 bdGrupoSanchoToro/db/enumeraciones.cs create mode 100644 bdGrupoSanchoToro/db/eventos.cs create mode 100644 bdGrupoSanchoToro/db/expedientesentidades.cs create mode 100644 bdGrupoSanchoToro/db/extractosbancarios.cs create mode 100644 bdGrupoSanchoToro/db/facturas.cs create mode 100644 bdGrupoSanchoToro/db/facturasrecibidas.cs create mode 100644 bdGrupoSanchoToro/db/ficheros.cs create mode 100644 bdGrupoSanchoToro/db/ficherosadjuntos.cs create mode 100644 bdGrupoSanchoToro/db/ficherosconfiguracion.cs create mode 100644 bdGrupoSanchoToro/db/fiestas.cs create mode 100644 bdGrupoSanchoToro/db/formulas.cs create mode 100644 bdGrupoSanchoToro/db/gruposenumeraciones.cs create mode 100644 bdGrupoSanchoToro/db/gruposusuarios.cs create mode 100644 bdGrupoSanchoToro/db/logs.cs create mode 100644 bdGrupoSanchoToro/db/menus.cs create mode 100644 bdGrupoSanchoToro/db/movimientosbancarios.cs create mode 100644 bdGrupoSanchoToro/db/movimientoscaja.cs create mode 100644 bdGrupoSanchoToro/db/municipios.cs create mode 100644 bdGrupoSanchoToro/db/permisos.cs create mode 100644 bdGrupoSanchoToro/db/plantillas.cs create mode 100644 bdGrupoSanchoToro/db/presupuestos.cs create mode 100644 bdGrupoSanchoToro/db/procesos.cs create mode 100644 bdGrupoSanchoToro/db/productos.cs create mode 100644 bdGrupoSanchoToro/db/provincias.cs create mode 100644 bdGrupoSanchoToro/db/seriesfacturas.cs create mode 100644 bdGrupoSanchoToro/db/stocks.cs create mode 100644 bdGrupoSanchoToro/db/tablas.cs create mode 100644 bdGrupoSanchoToro/db/trabajador.cs create mode 100644 bdGrupoSanchoToro/db/usuarios.cs create mode 100644 bdGrupoSanchoToro/db/v_albaranesextendidos.cs create mode 100644 bdGrupoSanchoToro/dbcontext/EnumeracionesService.cs create mode 100644 bdGrupoSanchoToro/dbcontext/GrupoSanchoToroContext.cs create mode 100644 bdGrupoSanchoToro/dbcontext/conexion.cs create mode 100644 bdGrupoSanchoToro/dbcontext/tscGrupoSanchoToro.cs create mode 100644 bdGrupoSanchoToro/efpt.config.json create mode 100644 bdGrupoSanchoToro/extensiones/almacenes.cs create mode 100644 bdGrupoSanchoToro/extensiones/cajas.cs create mode 100644 bdGrupoSanchoToro/extensiones/codigospostales.cs create mode 100644 bdGrupoSanchoToro/extensiones/conciliacionesbancarias.cs create mode 100644 bdGrupoSanchoToro/extensiones/correos.cs create mode 100644 bdGrupoSanchoToro/extensiones/detallesfacturas.cs create mode 100644 bdGrupoSanchoToro/extensiones/detallesfacturasrecibidas.cs create mode 100644 bdGrupoSanchoToro/extensiones/documentosfacturas.cs create mode 100644 bdGrupoSanchoToro/extensiones/documentosfacturasrecibidas.cs create mode 100644 bdGrupoSanchoToro/extensiones/entidades.cs create mode 100644 bdGrupoSanchoToro/extensiones/eventos.cs create mode 100644 bdGrupoSanchoToro/extensiones/facturas.cs create mode 100644 bdGrupoSanchoToro/extensiones/facturasrecibidas.cs create mode 100644 bdGrupoSanchoToro/extensiones/fiestas.cs create mode 100644 bdGrupoSanchoToro/extensiones/formulas.cs create mode 100644 bdGrupoSanchoToro/extensiones/logs.cs create mode 100644 bdGrupoSanchoToro/extensiones/movimientosbancarios.cs create mode 100644 bdGrupoSanchoToro/extensiones/movimientoscaja.cs create mode 100644 bdGrupoSanchoToro/extensiones/municipios.cs create mode 100644 bdGrupoSanchoToro/extensiones/productos.cs create mode 100644 bdGrupoSanchoToro/extensiones/seriesfacturas.cs create mode 100644 bdGrupoSanchoToro/extensiones/stocks.cs create mode 100644 bdGrupoSanchoToro/optimiza.cmd diff --git a/GestionGrupoSanchoToro/.editorconfig b/GestionGrupoSanchoToro/.editorconfig new file mode 100644 index 0000000..a75484c --- /dev/null +++ b/GestionGrupoSanchoToro/.editorconfig @@ -0,0 +1,131 @@ +[*.cs] + +# CS8981: El nombre de tipo solo contiene caracteres ASCII en minúsculas. Estos nombres pueden reservarse para el idioma. +dotnet_diagnostic.CS8981.severity = none + +[*.cs] +#### Estilos de nomenclatura #### + +# Reglas de nomenclatura + +dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion +dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface +dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i + +dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.types_should_be_pascal_case.symbols = types +dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members +dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case + +# Especificaciones de símbolos + +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.interface.required_modifiers = + +dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.types.required_modifiers = + +dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method +dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.non_field_members.required_modifiers = + +# Estilos de nomenclatura + +dotnet_naming_style.begins_with_i.required_prefix = I +dotnet_naming_style.begins_with_i.required_suffix = +dotnet_naming_style.begins_with_i.word_separator = +dotnet_naming_style.begins_with_i.capitalization = pascal_case + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case +csharp_style_expression_bodied_methods = false:silent +csharp_style_expression_bodied_constructors = false:silent +csharp_style_expression_bodied_operators = false:silent +csharp_style_expression_bodied_properties = true:silent +csharp_style_expression_bodied_indexers = true:silent +csharp_style_expression_bodied_accessors = true:silent +csharp_style_expression_bodied_lambdas = true:silent +csharp_style_expression_bodied_local_functions = false:silent +csharp_style_allow_embedded_statements_on_same_line_experimental = true:silent +csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true:silent +csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true:silent +csharp_style_allow_blank_line_after_token_in_conditional_expression_experimental = true:silent +csharp_style_allow_blank_line_after_token_in_arrow_expression_clause_experimental = true:silent +csharp_prefer_simple_using_statement = true:suggestion +csharp_prefer_braces = true:silent +csharp_style_namespace_declarations = block_scoped:silent +csharp_style_prefer_method_group_conversion = true:silent +csharp_style_prefer_top_level_statements = true:silent +csharp_style_prefer_primary_constructors = true:suggestion +csharp_style_prefer_switch_expression = true:suggestion +csharp_style_prefer_pattern_matching = true:silent +csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion +csharp_style_pattern_matching_over_as_with_null_check = true:suggestion +csharp_style_prefer_not_pattern = true:suggestion +csharp_style_prefer_extended_property_pattern = true:suggestion + +[*.vb] +#### Estilos de nomenclatura #### + +# Reglas de nomenclatura + +dotnet_naming_rule.interface_should_be_empieza_por_i.severity = suggestion +dotnet_naming_rule.interface_should_be_empieza_por_i.symbols = interface +dotnet_naming_rule.interface_should_be_empieza_por_i.style = empieza_por_i + +dotnet_naming_rule.tipos_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.tipos_should_be_pascal_case.symbols = tipos +dotnet_naming_rule.tipos_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.miembros_que_no_son_un_campo_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.miembros_que_no_son_un_campo_should_be_pascal_case.symbols = miembros_que_no_son_un_campo +dotnet_naming_rule.miembros_que_no_son_un_campo_should_be_pascal_case.style = pascal_case + +# Especificaciones de símbolos + +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected +dotnet_naming_symbols.interface.required_modifiers = + +dotnet_naming_symbols.tipos.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.tipos.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected +dotnet_naming_symbols.tipos.required_modifiers = + +dotnet_naming_symbols.miembros_que_no_son_un_campo.applicable_kinds = property, event, method +dotnet_naming_symbols.miembros_que_no_son_un_campo.applicable_accessibilities = public, friend, private, protected, protected_friend, private_protected +dotnet_naming_symbols.miembros_que_no_son_un_campo.required_modifiers = + +# Estilos de nomenclatura + +dotnet_naming_style.empieza_por_i.required_prefix = I +dotnet_naming_style.empieza_por_i.required_suffix = +dotnet_naming_style.empieza_por_i.word_separator = +dotnet_naming_style.empieza_por_i.capitalization = pascal_case + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case + +[*.{cs,vb}] +end_of_line = crlf +dotnet_style_allow_multiple_blank_lines_experimental = true:silent +dotnet_style_allow_statement_immediately_after_block_experimental = true:silent +dotnet_style_readonly_field = true:suggestion \ No newline at end of file diff --git a/GestionGrupoSanchoToro/Application.xaml b/GestionGrupoSanchoToro/Application.xaml new file mode 100644 index 0000000..777d912 --- /dev/null +++ b/GestionGrupoSanchoToro/Application.xaml @@ -0,0 +1,9 @@ + + + + + diff --git a/GestionGrupoSanchoToro/Application.xaml.vb b/GestionGrupoSanchoToro/Application.xaml.vb new file mode 100644 index 0000000..34c53f8 --- /dev/null +++ b/GestionGrupoSanchoToro/Application.xaml.vb @@ -0,0 +1,25 @@ +Imports System.Configuration +Imports System.Globalization +Imports System.Threading +Imports System.Windows.Threading +Imports DevExpress.Xpf.Core + +Namespace GrupoSanchoToro + ''' + ''' Interaction logic for App.xaml + ''' + Partial Public Class App + Inherits Application + Private Sub OnAppStartup_UpdateThemeName(sender As Object, e As StartupEventArgs) + DevExpress.Xpf.Core.ApplicationThemeHelper.UpdateApplicationThemeName() + End Sub + + Private Sub App_DispatcherUnhandledException(sender As Object, e As DispatcherUnhandledExceptionEventArgs) Handles Me.DispatcherUnhandledException + MsgBox(e.Exception.Message) + End Sub + + Private Sub App_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup + Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("es-ES") + End Sub + End Class +End Namespace diff --git a/GestionGrupoSanchoToro/AssemblyInfo.vb b/GestionGrupoSanchoToro/AssemblyInfo.vb new file mode 100644 index 0000000..6f1a7e6 --- /dev/null +++ b/GestionGrupoSanchoToro/AssemblyInfo.vb @@ -0,0 +1,11 @@ +Imports System.Windows + +'The ThemeInfo attribute describes where any theme specific AndAlso generic resource dictionaries can be found. +'1st parameter: where theme specific resource dictionaries are located +'(used if a resource is not found in the page, +' OrElse application resource dictionaries) + +'2nd parameter: where the generic resource dictionary is located +'(used if a resource is not found in the page, +'app, AndAlso any theme specific resource dictionaries) + diff --git a/GestionGrupoSanchoToro/Compras/ucFacturaRecibida.xaml b/GestionGrupoSanchoToro/Compras/ucFacturaRecibida.xaml new file mode 100644 index 0000000..1233141 --- /dev/null +++ b/GestionGrupoSanchoToro/Compras/ucFacturaRecibida.xaml @@ -0,0 +1,460 @@ + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/Compras/ucFacturaRecibida.xaml.vb b/GestionGrupoSanchoToro/Compras/ucFacturaRecibida.xaml.vb new file mode 100644 index 0000000..0e559cb --- /dev/null +++ b/GestionGrupoSanchoToro/Compras/ucFacturaRecibida.xaml.vb @@ -0,0 +1,683 @@ +Imports DevExpress.Xpf.Editors +Imports DevExpress.Xpf.LayoutControl +Imports tsWPFCore +Imports System.ComponentModel +Imports System.Data +Imports DevExpress.Xpf.Editors.Validation +Imports DevExpress.Xpf.Editors.Helpers +Imports DevExpress.Xpf.Core +Imports tsWPFCore.modExtensiones +Imports System.Data.Common +Imports bdGrupoSanchoToro.db +Imports tsUtilidades.Datos +Imports DevExpress.Xpf.Bars +Imports DevExpress.Xpf.Grid +Imports System.Collections +Imports tsEFCore8.Extensiones +Imports bdGrupoSanchoToro.db.Utilidades + +Imports tsUtilidades.Enumeraciones +Imports tsUtilidades +Imports bdGrupoSanchoToro.db.productos +Imports System.IO +Imports Microsoft.Win32 +Imports tsUtilidades.Extensiones + +'TODO: Comprobar cuando se puede modificar una factura (o eliminar) +Public Class ucFacturaRecibida + Private bd As tscGrupoSanchoToro + Friend _idFactura As Nullable(Of Integer) + Private lProductos As List(Of productos) + Private ivas As List(Of enumeraciones) + Friend idLog As Integer? + Dim ra As facturasrecibidas + Public Overrides Sub Cargado() + Me.Tipo_ucControlBusqueda = GetType(ucFacturasRecibidas) + End Sub + + Public Overrides Sub EstableceDataContextSecundarios(Optional Background As Boolean = False) + Try + lProductos = bd.productos.OrderBy(Function(x) x.Descripcion).ToList + Dim lProductosFra = ra.detallesfacturasrecibidas.Select(Function(x) x.idProducto).ToArray + lProductos = lProductos.Where(Function(x) x.FechaBaja Is Nothing OrElse lProductosFra.Contains(x.idProducto)).ToList + cbProducto.ItemsSource = lProductos + + + 'For Each d In ra.detallesfacturasrecibidas + ' If Not ivas.Contains(d.PorcentajeIVA) Then ivas.Add(d.PorcentajeIVA) + 'Next + + cbIva.ItemsSource = ivas + cbTipoDocumento.ItemsSource = tsUtilidades.DescripcionValor.EnumADescripcionValor(GetType(bdGrupoSanchoToro.db.documentosfacturasrecibidas.TipoDocumentoFacturaEnum)).OrderBy(Function(x) x.Descripcion) + cbCategoria.ItemsSource = bd.enumeraciones.Where(Function(x) x.idGrupoEnumeracionNavigation.Grupo = "CATFR").OrderBy(Function(x) x.Descripcion).ToList + Dim plantillas As List(Of tsWPFCore.Plantilla) = Comun.ObtienePlantillas(bd, {"GRUPLA.FACREC"}, False) + Me.ContenedorAplicacion.cbPlantillaAImprimir.ItemsSource = plantillas + If plantillas.Count > 0 Then + Me.ContenedorAplicacion.bePlantilla.EditValue = plantillas.First.idPlantilla + End If + Catch ex As Exception + Throw New Exception(ex.Message, ex) + End Try + End Sub + + + Public Overrides Function EstablecedcPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As tsUtilidades.EstadosAplicacion + Dim NuevoEstado As tsUtilidades.EstadosAplicacion + + ivas = bd.enumeraciones.Where(Function(x) x.idGrupoEnumeracionNavigation.Grupo = "PIVA").OrderBy(Function(x) x.ValorNumerico2).ToList + + If idLog.HasValue Then + Try + Dim log = bd.logs.First(Function(x) x.idLog = idLog) + ra = tsUtilidades.Utilidades.DeserializarSinErrores(log.Log, GetType(facturasrecibidas)) + If ra.idUsuario.HasValue Then ra.idUsuarioNavigation = bd.usuarios.FirstOrDefault(Function(x) x.idUsuario = ra.idUsuario.Value) + Dim df = bd.logs.FirstOrDefault(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "DETALLESFACTURASRECIBIDAS") + If df IsNot Nothing Then + Dim ld = tsUtilidades.Utilidades.DeserializarSinErrores(df.Log, GetType(List(Of detallesfacturasrecibidas))) + For Each d In ld + ra.detallesfacturasrecibidas.Add(d) + Next + End If + Dim mv = bd.logs.FirstOrDefault(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "MOVIMIENTOSCAJA_FR") + If mv IsNot Nothing Then + Dim ld = tsUtilidades.Utilidades.DeserializarSinErrores(mv.Log, GetType(List(Of movimientoscaja))) + For Each d In ld + ra.movimientoscaja.Add(d) + Next + End If + Dim lent = bd.logs.FirstOrDefault(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "ENTIDADES") + If lent IsNot Nothing Then + Dim ent = tsUtilidades.Utilidades.DeserializarSinErrores(lent.Log, GetType(entidades)) + ra.idProveedorNavigation = ent + lgDatosProveedor.DataContext = ra.idProveedorNavigation + End If + Dim lfic = bd.logs.FirstOrDefault(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "FICHEROS") + If lfic IsNot Nothing Then + Dim fic = tsUtilidades.Utilidades.DeserializarSinErrores(lfic.Log, GetType(db.ficheros)) + ra.idFicheroNavigation = fic + End If + NuevoEstado = tsUtilidades.EstadosAplicacion.ModificandoRegistro + Catch EX As Exception + Throw New Exception("No ha sido posible mostrar el registro del cambio (id " & idLog.Value.ToString & ").", EX) + End Try + Else + If FuerzaNuevo OrElse _idFactura Is Nothing Then + ra = New facturasrecibidas + ra.FechaFactura = DateOnly.FromDateTime(Today) + _idFactura = Nothing + ra.FechaRegistro = DateOnly.FromDateTime(Today) + NuevoEstado = tsUtilidades.EstadosAplicacion.Nuevo + lgDatosProveedor.DataContext = ra.idProveedorNavigation + Else + ra = bd.facturasrecibidas.First(Function(x) x.idFactura = _idFactura) + NuevoEstado = tsUtilidades.EstadosAplicacion.ModificandoRegistro + lgDatosProveedor.DataContext = ra.idProveedorNavigation + End If + End If + cbIVA.ItemsSource = ivas + Dim lCajas = bd.cajas.Where(Function(x) x.idEmpresa = EmpresaActual.idEmpresa).ToList.Where(Function(x) (x.FechaBaja.HasValue = False OrElse ra.movimientoscaja.Any(Function(y) y.idCaja = x.idCaja))).OrderBy(Function(x) x.Descripcion).ToList + Me.cbCaja.ItemsSource = lCajas + + + + + + cbRazonSocial.ItemsSource = bd.entidades.Where(Function(x) x.idEmpresa = EmpresaActual.idEmpresa AndAlso ((x.EsProveedor AndAlso x.FechaBaja.HasValue = False) OrElse x.idEntidad = ra.idProveedor)).ToList + gcDetalle.ItemsSource = ra.detallesfacturasrecibidas + gcRecibos.ItemsSource = ra.movimientoscaja + gcDocumentos.ItemsSource = ra.documentosfacturasrecibidas + Me.gcLogs.ItemsSource = bd.logs.Where(Function(x) x.id = ra.idFactura AndAlso x.Aplicacion = "FACTURASRECIBIDAS").ToList + + 'Dim Acciones As New List(Of tsWPFCore.Accion) + 'Acciones.Add(New Accion With { + ' .idAccion = 1, + ' .Descripcion = "AGREGAR PRODUCTOS PENDIENTES DE FACTURAR"}) + 'Acciones.Add(New Accion With { + ' .idAccion = 2, + ' .Descripcion = "SALDAR FACTURA POR CAJA CONTADO"}) + 'Acciones.Add(New Accion With { + ' .idAccion = 3, + ' .Descripcion = "SALDAR FACTURA POR TPV"}) + 'Acciones.Add(New Accion With { + ' .idAccion = 4, + ' .Descripcion = "SALDAR FACTURA POR BANCO"}) + 'Me.ContenedorAplicacion.cbAcciones.ItemsSource = Acciones + 'Me.ContenedorAplicacion.beAcciones.EditValue = Acciones.First.idAccion + Me.DataContext = ra + Return NuevoEstado + End Function + + Public Overrides Function ObtieneBD() As tsUtilidades.ItsContexto + bd = tscGrupoSanchoToro.NuevoContexto + Return bd + End Function + + Public Overrides ReadOnly Property NombreTablaBase As String + Get + Return "facturasrecibidas" + End Get + End Property + + 'Public Overrides ReadOnly Property CampoIndice As String + ' Get + ' Return "idFactura" + ' End Get + 'End Property + Public Overrides ReadOnly Property idRegistroAplicacionActual As String + Get + If idLog.HasValue Then + Return "Gastos / Factura Proveedor R.C.:" & idLog.ToString + Else + If Me.Estado = tsUtilidades.EstadosAplicacion.Nuevo Then + Return "Gastos / Factura Proveedor.Nuevo" + Else + Return "Gastos / Factura Proveedor." & DirectCast(Me.DataContext, facturasrecibidas).idFactura.ToString + End If + End If + End Get + End Property + + Public Overrides ReadOnly Property DescripcionRegistro As String + Get + Return "Gastos / Factura Proveedor" + End Get + End Property + + Public Sub New(Optional idFactura As Integer? = Nothing) + + ' Llamada necesaria para el diseñador. + InitializeComponent() + _idFactura = idFactura + ' Agregue cualquier inicialización después de la llamada a InitializeComponent(). + + End Sub + + + + + Public Overrides Sub EstableceTitulo() + If idLog.HasValue Then + Dim fr As facturasrecibidas = Me.DataContext + Me.docpanel.Caption = "R.C. Gastos / Factura de Proveedor " & fr.NumeroFactura + Me.docpanel.Tag = "R.C. Gastos / Factura Recibida." & fr.NumeroFactura + Else + If Me.Estado = tsUtilidades.EstadosAplicacion.ModificandoRegistro Then + Dim fr As facturasrecibidas = Me.DataContext + Me.docpanel.Caption = " Gastos / Factura de Proveedor " & fr.NumeroFactura + Me.docpanel.Tag = " Gastos / Factura Recibida." & fr.NumeroFactura + Else + Me.docpanel.Caption = " Gastos / Factura de Proveedor Nueva" + Me.docpanel.Tag = " Gastos / FacturaRecibida.Nuevo" + End If + End If + ' End If + 'End If + End Sub + + Public Overrides Function ObtienePermisos() As tsUtilidades.Permisos + Dim pers = Comun.ObtienePermisos(Me.bd, "AP.ADMINISTRATIVOS", idUsuario) + ' pers.Eliminar = False + Return pers + End Function + + + Private Sub ap_ValidarControl(sender As Object, e As ValidationEventArgs, ByRef ev As ErrorValidacion, ByRef ValorOriginalCambiado As Object) Handles Me.ValidarControl + Dim pts As PropiedadesTS = sender.parent.propiedadests + Try + If Not pts Is Nothing Then + Me.ErroresValidacion.EliminaError("validando-" & pts.NombreCampo) + Dim ra As facturasrecibidas = Me.DataContext + Select Case pts.NombreCampo.ToLower + Case "idproveedor_nulable" + Dim id As Integer = e.Value + Dim ent = bd.entidades.First(Function(x) x.idEntidad = id) + lgDatosProveedor.DataContext = ent + End Select + End If + Catch ex As Exception + Dim sCodigoError As String = "validando-" + If pts IsNot Nothing Then + sCodigoError &= pts.NombreCampo + End If + ev = New ErrorValidacion(sCodigoError, sender, ex.Message, ex, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical) + e.IsValid = False + End Try + End Sub + + + Private Sub ap_DespuesGuardar(sender As Object, e As ItemClickEventArgs, OpcionGuardado As Integer) Handles Me.DespuesGuardar + _idFactura = ra.idFactura + RefrescaUC() + ' Me.gcRecibos.ItemsSource = ra.movimientoscaja + ' Me.gcLogs.ItemsSource = bd.logs.Where(Function(x) x.id = ra.idFactura AndAlso x.Aplicacion = "FACTURASRECIBIDAS").ToList + End Sub + + + Private Sub ap_Enlazar(Celda As EditGridCellData, Defecto As Boolean) Handles Me.Enlazar + Dim ra As facturasrecibidas = Me.DataContext + Select Case Celda.Column.FieldName.ToLower + Case "idlog" + Dim log As logs = gcLogs.CurrentItem + Dim id As Integer = log.idLog + Dim uc As New ucFacturaRecibida + uc.idLog = log.idLog + FuncionesDinamicas.AbrirAP(uc, OtrosParametros) + End Select + 'Select Case Celda.Column.FieldName.ToLower + ' Case "numeroalbaranentrega" + ' Dim ra = DirectCast(Me.gcDetalle.CurrentItem, detallesfacturasrecibidas) + ' Dim id As Integer = ra.detallesalbaranes.idAlbaranEntrega + ' FuncionesDinamicas.AbrirAP(New ucAlbaranEntrega(id), OtrosParametros) + ' Case "numeroalbaranrecogida" + ' Dim ra = DirectCast(Me.gcDetalle.CurrentItem, detallesfacturasrecibidas) + ' Dim id As Integer = ra.detallesalbaranes.idAlbaranRecogida + ' FuncionesDinamicas.AbrirAP(New ucAlbaranRecogida(id), OtrosParametros) + 'End Select + End Sub + + + + + + + + Private Sub ap_EstadoCambiado(EstadoAnterior As tsUtilidades.EstadosAplicacion, EstadoNuevo As tsUtilidades.EstadosAplicacion) Handles Me.EstadoCambiado + Select Case EstadoNuevo + Case EstadosAplicacion.ModificandoRegistro + Dim ra As facturasrecibidas = Me.DataContext + + ' Dim ra As albaranesrecogida = Me.DataContext + ' If ra.detallesfacturasrecibidas.ToList.Any(Function(x) x.idAlbaranRecogida.HasValue OrElse (x.idUltimaFactura.HasValue AndAlso (x.facturasrecibidas.Fecha > ra.Fecha.Date))) Then me.EstableceSoloLectura() + End Select + If idLog.HasValue Then EstableceSoloLectura() + EstableceSoloLecturaCI() + End Sub + + + Private Sub BiBuscarProducto_Click(sender As Object, e As RoutedEventArgs) + 'Dim dxw As New dxwProductos(lProductos) + 'If dxw.ShowDialog Then + ' If gcDetalle.CurrentItem Is Nothing Then tvDetalle.AddNewRow() + ' Dim def As detallesfacturasrecibidas = gcDetalle.CurrentItem + ' Dim prod = lProductos.First(Function(x) x.idProducto = dxw.idProducto) + ' def.idProducto = prod.idProducto + ' RellenaDatosProducto(def) + ' tvDetalle.MoveNextCell() + ' gcDetalle.RefreshRow(tvDetalle.FocusedRowHandle) + 'End If + If tvDetalle.ActiveEditor Is Nothing Then + Dispatcher.BeginInvoke(New Action(Sub() tvDetalle.ShowEditor()), System.Windows.Threading.DispatcherPriority.Render) + End If + + Dim dxw As New dxwProductos(lProductos) + If dxw.ShowDialog Then + If gcDetalle.CurrentItem Is Nothing Then tvDetalle.AddNewRow() + Dim def As detallesfacturasrecibidas = gcDetalle.CurrentItem + Dim prod = lProductos.First(Function(x) x.idProducto = dxw.idProducto) + def.idProducto = prod.idProducto + If tvDetalle.ActiveEditor IsNot Nothing Then tvDetalle.ActiveEditor.EditValue = prod.idProducto + tvDetalle.PostEditor() + tvDetalle.CloseEditor() + gcDetalle.RefreshRow(tvDetalle.FocusedRowHandle) + End If + End Sub + + + + + + Private Sub ap_AntesGuardar(sender As Object, e As ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, OpcionGuardado As Integer) Handles Me.AntesGuardar + + ra.idUsuario = idUsuario + Dim hte As New Hashtable + If ra.detallesfacturasrecibidas.Count = 0 Then + hte.Add("ALMACENAR-DETALLE_OBLIGATORIO", "Es obligatorio introducir al menos un artículo") + End If + If bd.facturasrecibidas.Any(Function(x) x.NumeroFactura = ra.NumeroFactura AndAlso x.idProveedor = ra.idProveedor AndAlso x.idFactura <> ra.idFactura) Then + hte.Add("ALMACENAR-YA-EXISTE-OTRA-FACTURA", "Ya existe esta factura del mismo cliente registrada") + End If + If ra.TotalFactura = 0 Then + hte.Add("ALMACENAR-IMPORTE_0", "El total de la factura no puede ser 0") + End If + If Math.Abs(ra.ImportePagado) > Math.Abs(ra.TotalFactura) Then + hte.Add("ALMACENAR-IMPORTE_PAGADO_SUPERIOR", "El importe pagado de los recibos no puede superar al total de la factura") + End If + + If hte.Count > 0 Then + MensajesError = hte + Cancelar = True + Else + For Each mv In ra.movimientoscaja + mv.Tipo = TipoMovimientoEnum.RECIBO_PROVEEDOR + If mv.idUsuario.HasValue = False Then mv.idUsuario = idUsuario + Next + For Each d In ra.documentosfacturasrecibidas + If d.idUsuario.HasValue = False Then d.idUsuario = idUsuario + Next + If ra.ImportePendiente = 0 Then + ra.FechaPago = DateOnly.FromDateTime(ra.movimientoscaja.OrderByDescending(Function(x) x.Fecha).First.Fecha) + Else + ra.FechaPago = Nothing + End If + If ra.PorcentajeIVA2.HasValue = False Then + ra.BaseImponible2 = Nothing + ra.CuotaIVA2 = Nothing + End If + If ra.PorcentajeIVA3.HasValue = False Then + ra.BaseImponible3 = Nothing + ra.CuotaIVA3 = Nothing + End If + End If + End Sub + + Private Sub tvDetalle_CellValueChanged(sender As Object, e As CellValueChangedEventArgs) Handles tvDetalle.CellValueChanged + Try + Dim def As detallesfacturasrecibidas = e.Row + Select Case e.Column.FieldName.ToLower + Case "idproducto" + RellenaDatosProducto(def) + 'Case "cantidad", "precio" + ' def.RefrescaImporte() + Case "idtipoiva" + Dim idTIVA = CInt(e.Value) + def.PorcentajeIVA = ivas.First(Function(x) x.idEnumeracion = idTIVA).ValorNumerico1 + End Select + Catch ex As Exception + + End Try + End Sub + Private Sub RellenaDatosProducto(dea As detallesfacturasrecibidas) + Dim ae As facturasrecibidas = Me.DataContext + Dim pr = lProductos.First(Function(x) x.idProducto = dea.idProducto) + dea.Precio = pr.UltimoPrecioCompra + If dea.Cantidad = 0 Then dea.Cantidad = 1 + 'dea.RefrescaImporte() + End Sub + + Private Sub BiBuscarProveedor_Click(sender As Object, e As RoutedEventArgs) + If Me.ContenedorAplicacion.btGuardar.IsEnabled Then + Dim dxw As New dxwEntidades(bd, False, True) + If dxw.ShowDialog Then + Dim ra As facturasrecibidas = Me.DataContext + Dim ent = bd.entidades.First(Function(x) x.idEntidad = dxw.Entidad.idEntidad) + ra.idProveedorNavigation = ent + ra.idProveedor_Nulable = ent.idEntidad + lgDatosProveedor.DataContext = ent + End If + End If + End Sub + + + + + + + + + Private Sub ap_ImprimirPlantilla(sender As Object, e As ItemClickEventArgs, idPlantilla As Integer) Handles Me.ImprimirPlantilla + Imprimir(idPlantilla, False, 1) + End Sub + Private Sub Imprimir(idPlantilla As Integer, ImpresoraDefecto As Boolean, Copias As Integer) + + Dim ds As List(Of facturasrecibidas) + Dim pl = bd.plantillas.AsNoTracking.Where(Function(x) x.idPlantilla = idPlantilla).Select(Function(x) New With {.Fichero = x.idFicheroNavigation.Fichero, .Tipo = x.idGrupoNavigation.Codigo}).FirstOrDefault + ds = New List(Of facturasrecibidas) + ds.Add(ra) + Informes.ImprimirPlantilla(bd, pl.Fichero, ds, ImpresoraDefecto, Copias) + + End Sub + + + 'Private Sub ap_EjecutarAccion(sender As Object, e As ItemClickEventArgs, idAccion As Integer) Handles Me.EjecutarAccion + + + 'End Sub + + + Private Sub tvDetalle_RowUpdated(sender As Object, e As DevExpress.Xpf.Grid.RowEventArgs) Handles tvDetalle.RowUpdated + Call CalculaTotales() + End Sub + Sub CalculaTotales() + Dim ra As facturasrecibidas = Me.DataContext + Dim ivas(2) As Double? + For Each df In ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA.HasValue).ToList + For i = 0 To 3 + If i = 3 Then Throw New Exception("Demasiados tipos de iva en la misma factura.") + If ivas(i).HasValue = False OrElse ivas(i).Value = df.PorcentajeIVA Then + ivas(i) = df.PorcentajeIVA + Exit For + End If + Next + Next + ra.PorcentajeIVA1 = ivas(0) + ra.PorcentajeIVA2 = ivas(1) + ra.PorcentajeIVA3 = ivas(2) + ra.BaseImponibleExenta = ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA.HasValue = False).Sum(Function(x) x.Importe) + ra.BaseImponible1 = Nothing + ra.BaseImponible2 = Nothing + ra.BaseImponible3 = Nothing + If ivas(0).HasValue Then ra.BaseImponible1 = ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA.HasValue AndAlso x.PorcentajeIVA = ivas(0)).Sum(Function(x) x.Importe) + If ivas(1).HasValue Then ra.BaseImponible2 = ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA.HasValue AndAlso x.PorcentajeIVA = ivas(1)).Sum(Function(x) x.Importe) + If ivas(2).HasValue Then ra.BaseImponible3 = ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA.HasValue AndAlso x.PorcentajeIVA = ivas(2)).Sum(Function(x) x.Importe) + 'ra.BaseImponible2 = If(ivas(2).HasValue, ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA = ivas(1)).Sum(Function(x) x.Importe), 0) + 'ra.BaseImponible3 = If(ivas(2).HasValue, ra.detallesfacturasrecibidas.Where(Function(x) x.PorcentajeIVA = ivas(2)).Sum(Function(x) x.Importe), 0) + ra.TotalBaseImponible = Math.Round(ra.detallesfacturasrecibidas.Sum(Function(x) x.Importe), 2) + CalculaIRPF(ra) + CalculaCuotasIVA(ra) + CalculaTotalesFinales(ra) + End Sub + Public Sub CalculaIRPF(F As facturasrecibidas) + F.IRPF = Math.Round(F.TotalBaseImponible * F.PorcentajeIRPF / 100, 2, MidpointRounding.AwayFromZero) + End Sub + Public Sub CalculaCuotasIVA(F As facturasrecibidas) + F.CuotaIVA1 = Nothing + F.CuotaIVA2 = Nothing + F.CuotaIVA3 = Nothing + If F.PorcentajeIVA1.HasValue Then + F.CuotaIVA1 = Math.Round(F.BaseImponible1.Value * F.PorcentajeIVA1.Value / 100, 2, MidpointRounding.AwayFromZero) + End If + If F.PorcentajeIVA2.HasValue Then + F.CuotaIVA2 = Math.Round(F.BaseImponible2.Value * F.PorcentajeIVA2.Value / 100, 2, MidpointRounding.AwayFromZero) + End If + If F.PorcentajeIVA3.HasValue Then + F.CuotaIVA3 = Math.Round(F.BaseImponible3.Value * F.PorcentajeIVA3.Value / 100, 2, MidpointRounding.AwayFromZero) + End If + End Sub + Public Sub CalculaTotalesFinales(ra As facturasrecibidas) + ra.TotalIVA = If(ra.CuotaIVA1.HasValue, ra.CuotaIVA1.Value, 0) + If(ra.CuotaIVA2.HasValue, ra.CuotaIVA2.Value, 0) + If(ra.CuotaIVA3.HasValue, ra.CuotaIVA3.Value, 0) + ra.TotalFactura = Math.Round(ra.TotalBaseImponible + ra.TotalIVA - ra.IRPF, 2, MidpointRounding.AwayFromZero) + ra.ImportePagado = Math.Round(ra.movimientoscaja.Sum(Function(x) x.ImporteNegativo), 2, MidpointRounding.AwayFromZero) + + End Sub + Private Sub tvDetalle_ValidaFila(sender As Object, e As DevExpress.Xpf.Grid.GridRowValidationEventArgs) Handles tvDetalle.ValidateRow + 'Dim df As detallesfacturasrecibidas = e.Row + 'Dim htErrores = New Hashtable + 'If df.Cantidad = 0 Then + ' DXMessageBox.Show("La Cantidad no puede ser 0", "Error") + ' e.SetError("La Cantidad no puede ser 0") + ' e.IsValid = False + 'End If + Try + Dim htErrores = New Hashtable + ErroresValidacion.LimpiarErrores("TSGC-" & gcDetalle.PropiedadesTS.NumeroObjeto.ToString & ":" & e.RowHandle.ToString & ":") + Dim df As detallesfacturasrecibidas = e.Row + + If df.Cantidad = 0 Then + htErrores.Add("Cantidad0", "La Cantidad no puede ser 0") + End If + + If htErrores.Count > 0 Then + Me.AgregaErroresTSGC(gcDetalle, htErrores, e) + End If + Catch ex As Exception + FuncionesDinamicas.ErrorNoControladoAp(Me, ex) + DXMessageBox.Show(ex.Message, "Error") + End Try + End Sub + + Private Sub gcDetalle_DespuesEliminar(gc As tsGridControl) Handles gcDetalle.DespuesEliminar + CalculaTotales() + End Sub + + Private Sub tvRecibos_ValidaFila(sender As Object, e As GridRowValidationEventArgs) Handles tvRecibos.ValidateRow + 'Dim mv As movimientoscaja = e.Row + 'If mv.Importe = 0 Then + ' DXMessageBox.Show("El Importe no puede ser 0", "Error") + ' e.SetError("El Importe no puede ser 0") + ' e.IsValid = False + 'End If + Try + Dim htErrores = New Hashtable + ErroresValidacion.LimpiarErrores("TSGC-" & gcRecibos.PropiedadesTS.NumeroObjeto.ToString & ":" & e.RowHandle.ToString & ":") + Dim mv As movimientoscaja = e.Row + + If mv.Importe = 0 Then + htErrores.Add("Importe0", "El Importe no puede ser 0") + End If + If htErrores.Count > 0 Then + Me.AgregaErroresTSGC(gcRecibos, htErrores, e) + End If + Catch ex As Exception + FuncionesDinamicas.ErrorNoControladoAp(Me, ex) + DXMessageBox.Show(ex.Message, "Error") + End Try + End Sub + + Private Sub gcRecibos_DespuesEliminar(gc As tsGridControl) Handles gcRecibos.DespuesEliminar + CalculaTotales() + End Sub + + Private Sub tvRecibos_RowUpdated(sender As Object, e As RowEventArgs) Handles tvRecibos.RowUpdated + Dim ra As facturasrecibidas = Me.DataContext + CalculaTotalesFinales(ra) + End Sub + + Private Sub tvRecibos_InitNewRow(sender As Object, e As InitNewRowEventArgs) Handles tvRecibos.InitNewRow + gcRecibos.SetCellValue(e.RowHandle, "Fecha", Now) + gcRecibos.SetCellValue(e.RowHandle, "FechaCreacion", Now) + End Sub + + Private Sub ucFacturaRecibida_CampoActualizado(sender As Object, e As DataTransferEventArgs) Handles Me.CampoActualizado + Dim pts As PropiedadesTS = sender.parent.propiedadests + If Not pts Is Nothing Then + Dim ra As facturasrecibidas = Me.DataContext + Select Case pts.NombreCampo.ToLower + Case "porcentajeirpf" + CalculaIRPF(ra) + CalculaTotalesFinales(ra) + Case "cuotaiva1", "cuotaiva2", "cuotaiva3", "irpf" + CalculaTotalesFinales(ra) + Case "idproveedor_nulable" + ra.idProveedorNavigation = bd.entidades.First(Function(x) x.idEntidad = ra.idProveedor) + End Select + End If + End Sub + + Private Sub tvDetalle_InitNewRow(sender As Object, e As InitNewRowEventArgs) Handles tvDetalle.InitNewRow + gcDetalle.SetCellValue(e.RowHandle, "idTipoIVA", ivas.OrderByDescending(Function(x) x.ValorNumerico1).First.idEnumeracion) + End Sub + + + + Private Sub tvDetalle_PreviewKeyDown(sender As Object, e As Input.KeyEventArgs) Handles tvDetalle.PreviewKeyDown + If e.Key = Key.F6 Then + Select Case gcDetalle.CurrentColumn.FieldName.ToLower + Case "idproducto" + tvDetalle.ShowEditor() + BiBuscarProducto_Click(Nothing, Nothing) + End Select + End If + End Sub + + Private Sub cbRazonSocial_PreviewKeyDown(sender As Object, e As Input.KeyEventArgs) Handles cbRazonSocial.PreviewKeyDown + If e.Key = Key.F6 Then + BiBuscarProveedor_Click(Nothing, Nothing) + End If + End Sub + + Private Sub gcRecibos_AntesEliminar(gc As tsGridControl, ByRef Cancelar As Boolean) Handles gcRecibos.AntesEliminar + Dim da As movimientoscaja = gc.CurrentItem + If da.idMovimientoCierre.HasValue Then + DXMessageBox.Show("No se puede eliminar un pago ya que está cerrado") + Cancelar = True + End If + End Sub + + Private Sub tvDocumentos_ValidateRow(sender As Object, e As GridRowValidationEventArgs) Handles tvDocumentos.ValidateRow + Dim ges As documentosfacturasrecibidas = gcDocumentos.CurrentItem + If ges.idUsuario.HasValue = False Then + ges.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario + End If + End Sub + Private Sub VerDocumento(sender As System.Object, e As System.Windows.RoutedEventArgs) + Try + Dim exp As documentosfacturasrecibidas = gcDocumentos.CurrentItem + If exp IsNot Nothing AndAlso exp.idFicheroNavigation IsNot Nothing AndAlso exp.idFicheroNavigation.NombreFichero IsNot Nothing AndAlso exp.idFicheroNavigation.Fichero IsNot Nothing Then + Dim sftmp As String = tsUtilidades.Utilidades.ObtieneDirectorioAleatorio("GrupoSanchoToro") & "\" & exp.idFicheroNavigation.NombreFichero + tsUtilidades.Utilidades.ByteArrayAFichero(exp.idFicheroNavigation.Fichero, sftmp, True) + tsUtilidades.Sistema.EjecutaFichero(sftmp) + End If + Catch ex As Exception + End Try + End Sub + Private Sub Examinar(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles btFichero.DefaultButtonClick + Try + If gcDocumentos.CurrentItem Is Nothing Then tvDocumentos.AddNewRow() + Dim exp As documentosfacturasrecibidas = gcDocumentos.CurrentItem + Dim ofd As New OpenFileDialog + If ofd.ShowDialog() Then + Dim fin As New FileInfo(ofd.FileName) + If fin.Length > 1024 * 1024 * 50 Then + DXMessageBox.Show("El fichero no puede ser mayor de 50 Mb", "Atención") + Else + Dim f() As Byte = IO.File.ReadAllBytes(ofd.FileName) + Dim idTipoDocumentoExp = bd.enumeraciones.First(Function(x) x.Codigo = "TIPFIC.EXPENT").idEnumeracion + If exp.idFicheroNavigation Is Nothing Then + Dim fi As New db.ficheros + exp.idFicheroNavigation = fi + End If + exp.idFicheroNavigation.NombreFichero = IO.Path.GetFileName(ofd.FileName) + exp.idFicheroNavigation.Fichero = f + exp.idFicheroNavigation.Fecha = Now + exp.idFicheroNavigation.Descripcion = exp.Descripcion.Acortar(80) + exp.idFicheroNavigation.idTipo = idTipoDocumentoExp + exp.Fecha = Now + Dim usu = bd.usuarios.First(Function(x) x.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario) + exp.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario + exp.idUsuarioNavigation = usu + tvDocumentos.MoveNextCell() + gcDocumentos.RefreshRow(tvDocumentos.FocusedRowHandle) + End If + End If + Catch ex As Exception + DXMessageBox.Show(ex.Message, "Error") + End Try + End Sub + + Private Sub tvDocumentos_PreviewKeyDown(sender As Object, e As KeyEventArgs) + If e.Key = Key.F6 AndAlso gcDocumentos.CurrentColumn.FieldName.ToLower = "ficheros.nombrefichero" Then + Examinar(Nothing, Nothing) + End If + End Sub + + Private Sub tvDocumentos_InitNewRow(sender As Object, e As InitNewRowEventArgs) Handles tvDocumentos.InitNewRow + gcDocumentos.SetCellValue(e.RowHandle, "Fecha", Now) + End Sub + + Private Sub teBI1_EditValueChanged(sender As Object, e As EditValueChangedEventArgs) Handles teBI1.EditValueChanged + EstableceSoloLectura(teCuotaIVA1, ra IsNot Nothing AndAlso ra.BaseImponible1.HasValue AndAlso ra.BaseImponible1.Value <> 0) + End Sub + Private Sub teBI2_EditValueChanged(sender As Object, e As EditValueChangedEventArgs) Handles teBI1.EditValueChanged + EstableceSoloLectura(teCuotaIVA2, ra IsNot Nothing AndAlso ra.BaseImponible2.HasValue AndAlso ra.BaseImponible2.Value <> 0) + End Sub + Private Sub teBI3_EditValueChanged(sender As Object, e As EditValueChangedEventArgs) Handles teBI1.EditValueChanged + EstableceSoloLectura(teCuotaIVA3, ra IsNot Nothing AndAlso ra.BaseImponible3.HasValue AndAlso ra.BaseImponible3.Value <> 0) + End Sub + Private Sub EstableceSoloLecturaCI() + EstableceSoloLectura(teCuotaIVA1, ra IsNot Nothing AndAlso ra.BaseImponible1.HasValue AndAlso ra.BaseImponible1.Value <> 0) + EstableceSoloLectura(teCuotaIVA2, ra IsNot Nothing AndAlso ra.BaseImponible2.HasValue AndAlso ra.BaseImponible2.Value <> 0) + EstableceSoloLectura(teCuotaIVA3, ra IsNot Nothing AndAlso ra.BaseImponible3.HasValue AndAlso ra.BaseImponible3.Value <> 0) + End Sub + +End Class + diff --git a/GestionGrupoSanchoToro/Compras/ucFacturasRecibidas.xaml b/GestionGrupoSanchoToro/Compras/ucFacturasRecibidas.xaml new file mode 100644 index 0000000..f526366 --- /dev/null +++ b/GestionGrupoSanchoToro/Compras/ucFacturasRecibidas.xaml @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/GestionGrupoSanchoToro/Informes/ucPlantillas.xaml.vb b/GestionGrupoSanchoToro/Informes/ucPlantillas.xaml.vb new file mode 100644 index 0000000..e445d94 --- /dev/null +++ b/GestionGrupoSanchoToro/Informes/ucPlantillas.xaml.vb @@ -0,0 +1,401 @@ +Imports bdGrupoSanchoToro.db +Imports System.Data.Entity +Imports DevExpress.Xpf.Core.ServerMode +Imports DevExpress.Xpf.Core +Imports DevExpress.XtraReports.UserDesigner +Imports DevExpress.XtraReports.UI +Imports System.IO +Imports DevExpress.Xpf.Grid +Imports DevExpress.Xpf.RichEdit +Imports DevExpress.Office.Services +Imports System.ComponentModel + +Imports tsWPFCore +Imports DevExpress.Xpf.Docking + + +Imports DevExpress.Xpf.Reports.UserDesigner +Imports DevExpress.Xpf.Reports.UserDesigner.Native +Imports System +Imports System.Collections.Generic +Imports System.Data +Imports System.Linq +Imports System.Text +Imports System.Windows +Imports System.Collections + +Imports bdGrupoSanchoToro.db.Utilidades +Imports bdGrupoSanchoToro.dbcontext + + +Public Class ucPlantillas + + + Private bd As bdGrupoSanchoToro.tscGrupoSanchoToro + Private PlantillaActual As plantillas + Private WithEvents bplas As BindingList(Of plantillas) + ' Private mdiController As XRDesignMdiController + + 'Public Overrides ReadOnly Property CampoIndice As String + ' Get + ' Return "" + ' End Get + 'End Property + + Public Overrides ReadOnly Property idRegistroAplicacionActual As String + Get + Return "Plantillas" + End Get + End Property + + Public Overrides ReadOnly Property DescripcionRegistro As String + Get + Return "Plantillas" + End Get + End Property + + Public Overrides ReadOnly Property NombreTablaBase As String + Get + Return "plantillas" + End Get + End Property + + + + Private Sub tvPlantillas_InitNewRow(sender As Object, e As DevExpress.Xpf.Grid.InitNewRowEventArgs) + ' e.Source = New plantillas + GC.SetCellValue(e.RowHandle, "Oculto", False) + gc.SetCellValue(e.RowHandle, "TipoListado", False) + gc.SetCellValue(e.RowHandle, "idEmpresa", EmpresaActual.idEmpresa) + 'e.Handled = True + End Sub + + + Private Sub btEditar_Click(sender As Object, e As RoutedEventArgs) + + Dim pl As plantillas + + If GC.View.FocusedRowHandle = DataControlBase.NewItemRowHandle Then + pl = GC.GetRow(DataControlBase.NewItemRowHandle) + GC.View.CommitEditing(True) + Else + GC.View.CommitEditing(True) + pl = Me.gc.GetFocusedRow + End If + + If pl.idGrupo <> 0 Then + EditarPlantilla(pl) + Else + DXMessageBox.Show("La columna Grupo de plantilla es obligatoria", "Atención", MessageBoxButton.OK, MessageBoxImage.Exclamation) + End If + End Sub + + + Private Sub EditarPlantilla(pl As bdGrupoSanchoToro.db.plantillas) + Try + If pl.idPlantilla > 0 Then + bd = tscGrupoSanchoToro.NuevoContexto + pl = bd.plantillas.First(Function(X) X.idPlantilla = pl.idPlantilla) + End If + PlantillaActual = pl + Select Case PlantillaActual.idGrupoNavigation.Codigo + 'Case "GRUPLA.CERTIFICADOS" + ' Dim tsEditor As tsWPFCore.dxwEditor + + ' If pl.idFichero.HasValue AndAlso pl.idFicheroNavigation.Fichero IsNot Nothing Then + ' ' tsEditor = New tsWPFCore.dxwEditor(New IO.MemoryStream(pl.idFicheroNavigation.Fichero), DevExpress.XtraRichEdit.DocumentFormat.OpenXml, DevExpress.XtraRichEdit.DocumentFormat.OpenXml, AddressOf Guardar, AddressOf CargarDatosMailMergeCertificados) + ' Else + ' ' tsEditor = New tsWPFCore.dxwEditor(Nothing, DevExpress.XtraRichEdit.DocumentFormat.OpenXml, DevExpress.XtraRichEdit.DocumentFormat.OpenXml, AddressOf Guardar, AddressOf CargarDatosMailMergeCertificados) + ' End If + ' tsEditor.ShowDialog() + Case "GRUPLA.DOCX" + Dim tsEditor As tsWPFCore.dxwEditor + + If pl.idFichero.HasValue AndAlso pl.idFicheroNavigation.Fichero IsNot Nothing Then + tsEditor = New tsWPFCore.dxwEditor(New IO.MemoryStream(pl.idFicheroNavigation.Fichero), DevExpress.XtraRichEdit.DocumentFormat.OpenXml, DevExpress.XtraRichEdit.DocumentFormat.OpenXml, AddressOf GuardarPlantilla) + Else + tsEditor = New tsWPFCore.dxwEditor(Nothing, DevExpress.XtraRichEdit.DocumentFormat.OpenXml, DevExpress.XtraRichEdit.DocumentFormat.OpenXml, AddressOf GuardarPlantilla) + End If + tsEditor.ShowDialog() + + Case "GRUPLA.ODT" + Dim tsEditor As tsWPFCore.dxwEditor + + If pl.idFichero.HasValue AndAlso pl.idFicheroNavigation.Fichero IsNot Nothing Then + tsEditor = New tsWPFCore.dxwEditor(New IO.MemoryStream(pl.idFicheroNavigation.Fichero), DevExpress.XtraRichEdit.DocumentFormat.OpenDocument, DevExpress.XtraRichEdit.DocumentFormat.OpenDocument, AddressOf GuardarPlantilla) + Else + tsEditor = New tsWPFCore.dxwEditor(Nothing, DevExpress.XtraRichEdit.DocumentFormat.OpenDocument, DevExpress.XtraRichEdit.DocumentFormat.OpenDocument, AddressOf GuardarPlantilla) + End If + tsEditor.ShowDialog() + Case Else + ' Dim fr = New InformesCOAS.xrFactura + Dim xr As New XtraReport + Try + If pl.idFichero.HasValue = False OrElse pl.idFicheroNavigation.Fichero Is Nothing Then + xr = New XtraReport + Else + xr.LoadLayoutFromXml(New MemoryStream(pl.idFicheroNavigation.Fichero)) + End If + Me.Guardar(Nothing, Nothing, True, False) + Dim vi As New tsWPFCore.ucDiseñadorInformes(xr, pl.idPlantilla, AddressOf GuardarWPF) + + Dim GrupoDocumentos = Me.GrupoDocumentos + Dim dc = tsWPFCore.Comun.dm.DockController + + Dim docpanel As DevExpress.Xpf.Docking.DocumentPanel + Dim d = (From p In GrupoDocumentos.Items Where p.Tag = "Plantilla." & pl.idPlantilla.ToString) + If d.Count > 0 Then + docpanel = d.First + Else + docpanel = New DevExpress.Xpf.Docking.DocumentPanel + docpanel.Caption = pl.Descripcion + docpanel.Content = vi + docpanel.ClosingBehavior = DevExpress.Xpf.Docking.ClosingBehavior.ImmediatelyRemove + docpanel.Tag = "Plantilla." & pl.idPlantilla.ToString + GrupoDocumentos.Items.Add(docpanel) + End If + dc.Activate(docpanel) + + + Catch ex As Exception + DXMessageBox.Show(ex.Message, "Error ucPlantillas.EditarPlantilla") + 'Comun.GeneraRegistroCorreoExcepcion(bd, ex, "ucPlantillas.EditarPlantilla") + Finally + 'xr.Dispose() + 'xr = Nothing + 'System.GC.Collect() + 'System.GC.WaitForFullGCComplete() + End Try + End Select + Catch ex As Exception + DXMessageBox.Show(ex.Message, "Error") + End Try + End Sub + + + + + + Private Sub GuardarPlantilla(ms As MemoryStream) + Me.Guardar(Nothing, Nothing, True, False) + + If PlantillaActual.idFichero.HasValue = False Then + Dim idTipoPlantilla = bd.enumeraciones.Where(Function(x) x.Codigo = "TIPFIC.PLANTILLA").First.idEnumeracion + PlantillaActual.idFicheroNavigation = New ficheros With {.idTipo = idTipoPlantilla} + End If + Dim sextension As String + Select Case PlantillaActual.idGrupoNavigation.Codigo + Case "GRUPLA.ODT" + sextension = ".odt" + Case "GRUPLA.XHTML" + sextension = ".xhtml" + 'Case "GRUPLA.NOMINASWORD" + ' sextension = ".odt" + Case "GRUPLA.DOCX" + sextension = ".docx" + Case Else + sextension = ".xml" + End Select + PlantillaActual.idFicheroNavigation.Fichero = ms.ToArray + PlantillaActual.idFicheroNavigation.Fecha = Now + PlantillaActual.idFicheroNavigation.Descripcion = PlantillaActual.Descripcion + PlantillaActual.idFicheroNavigation.NombreFichero = PlantillaActual.idPlantilla.ToString & sextension + bd.GuardarCambios() + + End Sub + + + + + Private Sub CopiarPlantilla(sender As Object, e As RoutedEventArgs) + Try + Dim ra As bdGrupoSanchoToro.db.plantillas = Me.gc.CurrentItem + Dim np As New plantillas + Dim i As Integer = 1 + Do + np.Descripcion = "Copia " & i.ToString & " " & ra.Descripcion + i += 1 + Loop Until Not bd.plantillas.ToList.Any(Function(x) x.Descripcion = np.Descripcion) + If ra.Codigo IsNot Nothing Then + i = 1 + Do + np.Codigo = ra.Codigo & "-" & i.ToString + i += 1 + Loop Until Not bd.plantillas.ToList.Any(Function(x) x.Codigo = np.Codigo) + End If + np.idGrupo = ra.idGrupo + np.Observaciones = ra.Observaciones + np.Oculta = ra.Oculta + np.TipoListado = ra.TipoListado + bd.plantillas.Add(np) + bd.GuardarCambios() + Dim idTipoPlantilla = bd.enumeraciones.Where(Function(x) x.Codigo = "TIPFIC.PLANTILLA").First.idEnumeracion + np.idFicheroNavigation = New ficheros With {.idTipo = idTipoPlantilla} + Dim sextension As String + Select Case ra.idGrupoNavigation.Codigo + Case "GRUPLA.XHTML" + sextension = ".xhtml" + Case "GRUPLA.ODT" + sextension = ".odt" + Case "GRUPLA.DOCX" + sextension = ".docx" + Case Else + sextension = ".xml" + End Select + np.idFicheroNavigation.Fichero = ra.idFicheroNavigation.Fichero + np.idFicheroNavigation.Fecha = Now + np.idFicheroNavigation.Descripcion = np.Descripcion + np.idFicheroNavigation.NombreFichero = np.idPlantilla.ToString & sextension + bd.GuardarCambios() + + EstableceDCPrincipal() + Catch ex As Exception + DXMessageBox.Show(ex.Message, "Error") + End Try + + End Sub + + Private Sub bplas_ListChanged(sender As Object, e As ListChangedEventArgs) Handles bplas.ListChanged + If e.ListChangedType = ListChangedType.ItemAdded Then + bd.plantillas.Add(DirectCast(bplas.Item(e.NewIndex), plantillas)) + End If + End Sub + + Private Sub gc_DespuesEliminar(gc As tsWPFCore.tsGridControl) Handles gc.DespuesEliminar + bplas.Remove(gc.CurrentItem) + Me.bd.GuardarCambios() + End Sub + + + + Private Sub tvPlantillas_ValidateRow(sender As Object, e As GridRowValidationEventArgs) Handles tvPlantillas.ValidateRow + Try + ErroresValidacion.EliminaError("DatosDuplicados") + Dim pl As plantillas + If tvPlantillas.FocusedRowHandle = DataControlBase.NewItemRowHandle Then + pl = gc.GetRow(DataControlBase.NewItemRowHandle) + Else + pl = gc.CurrentItem + End If + If pl.idPlantilla = 0 Then + If bplas.Where(Function(x) x.Descripcion = pl.Descripcion).Count > 1 OrElse bd.plantillas.Any(Function(x) x.Descripcion = pl.Descripcion) Then + e.IsValid = False + + ' Debug.WriteLine("bplas:" & bplas.Any(Function(x) x.Descripcion = pl.Descripcion).ToString) + ' Debug.WriteLine("bd:" & bd.plantillas.Any(Function(x) x.Descripcion = pl.Descripcion).ToString) + End If + If pl.Codigo IsNot Nothing AndAlso pl.Codigo <> "" Then + If bplas.Where(Function(x) x.Codigo = pl.Codigo).Count > 1 OrElse bd.plantillas.Any(Function(x) x.Codigo = pl.Codigo) Then + e.IsValid = False + End If + End If + Else + If bd.plantillas.Any(Function(x) x.idPlantilla <> pl.idPlantilla AndAlso (x.Descripcion = pl.Descripcion)) Then + e.IsValid = False + + End If + If pl.Codigo IsNot Nothing AndAlso pl.Codigo <> "" Then + If bplas.Where(Function(x) x.Codigo = pl.Codigo).Count > 1 OrElse bd.plantillas.Any(Function(x) x.idPlantilla <> pl.idPlantilla AndAlso x.Codigo = pl.Codigo) Then + e.IsValid = False + End If + End If + End If + If Not e.IsValid Then + e.SetError("Nombre de Plantilla o Codigo ya utilizado") + DXMessageBox.Show("Nombre de Plantilla o Codigo ya utilizado", "Error") + End If + bd.GuardarCambios() + Catch EX As Exception + e.SetError(EX.Message) + e.IsValid = False + DXMessageBox.Show(EX.Message, "Error") + End Try + End Sub + + + Public Shared Sub GuardarWPF(b() As Byte, idPlantilla As Integer) + Dim bd = tscGrupoSanchoToro.NuevoContexto() + Dim plantilla = bd.plantillas.First(Function(X) X.idPlantilla = idPlantilla) + + + bd.GuardarCambios() + If plantilla.idFichero.HasValue = False Then + Dim idTipoPlantilla = bd.enumeraciones.Where(Function(x) x.Codigo = "TIPFIC.PLANTILLA").First.idEnumeracion + plantilla.idFicheroNavigation = New ficheros With {.idTipo = idTipoPlantilla} + End If + Dim sextension As String + Select Case plantilla.idGrupoNavigation.Codigo + Case "GRUPLA.XHTML" + sextension = ".xhtml" + Case "GRUPLA.DOCX" + sextension = ".docx" + Case Else + sextension = ".xml" + End Select + plantilla.idFicheroNavigation.Fichero = b + plantilla.idFicheroNavigation.Fecha = Now + plantilla.idFicheroNavigation.Descripcion = plantilla.Descripcion + plantilla.idFicheroNavigation.NombreFichero = plantilla.idPlantilla.ToString & sextension + bd.GuardarCambios() + End Sub + + Public Overrides Function EstableceDCPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As tsUtilidades.EstadosAplicacion + Try + Dim gptmp = (From e In bd.enumeraciones Select e Where e.idGrupoEnumeracionNavigation.Grupo = "GRUPLA").ToList + Dim gp As New List(Of bdGrupoSanchoToro.db.enumeraciones) + For Each g In gptmp + If Comun.ObtienePermisos(bd, g.Codigo, idUsuario).Impresion Then + gp.Add(g) + End If + Next + Me.cbGrupo.ItemsSource = gp + Me.cbPermiso.ItemsSource = bd.permisos.ToList + Dim plas = bd.plantillas.ToList.Where(Function(p) gp.Any(Function(x) x.Codigo = p.idGrupoNavigation.Codigo)).ToList + Me.gc.DataContext = bd + bplas = New BindingList(Of plantillas)(plas) + + Me.gc.ItemsSource = bplas + Return tsUtilidades.EstadosAplicacion.SinDatos + Catch ex As Exception + Throw New Exception(ex.Message, ex) + End Try + End Function + + Public Overrides Sub EstableceDataContextSecundarios(Optional Background As Boolean = False) + + End Sub + + Public Overrides Sub EstableceTitulo() + Me.docpanel.Caption = "Plantillas" + Me.docpanel.Tag = "Plantillas" + End Sub + + Public Overrides Sub Cargado() + Me.ContenedorAplicacion.btNuevo.IsVisible = False + Me.ContenedorAplicacion.siEstado.IsVisible = False + If bd.usuarios.First(Function(x) x.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario).idGrupoNavigation.Descripcion.ToLower = "administradores" Then + Me.gcPermiso.Visible = True + Me.gcCodigo.Visible = True + Me.gcEditar.VisibleIndex = Me.gc.Columns.Count + End If + Dim mi As New MenuItem() + mi.Header = "Copiar Plantilla" + AddHandler mi.Click, AddressOf CopiarPlantilla + Me.gc.ContextMenu.Items.Add(mi) + End Sub + + Public Overrides Function ObtieneBD() As tsUtilidades.ItsContexto + bd = tscGrupoSanchoToro.NuevoContexto() + Return bd + End Function + + + + Public Overrides Function ObtienePermisos() As tsUtilidades.Permisos + Return Comun.ObtienePermisos(Me.bd, "AP.SUPERADMINISTRADORES", idUsuario) + End Function +End Class + + + + diff --git a/GestionGrupoSanchoToro/Informes/xrCierreCaja.Designer.vb b/GestionGrupoSanchoToro/Informes/xrCierreCaja.Designer.vb new file mode 100644 index 0000000..cd1508d --- /dev/null +++ b/GestionGrupoSanchoToro/Informes/xrCierreCaja.Designer.vb @@ -0,0 +1,627 @@ + _ +Partial Public Class xrCierreCaja + Inherits DevExpress.XtraReports.UI.XtraReport + + 'XtraReport overrides dispose to clean up the component list. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Designer + 'It can be modified using the Designer. + 'Do not modify it using the code editor. + _ + Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() + Dim ShapeRectangle1 As DevExpress.XtraPrinting.Shape.ShapeRectangle = New DevExpress.XtraPrinting.Shape.ShapeRectangle() + Dim ShapeRectangle2 As DevExpress.XtraPrinting.Shape.ShapeRectangle = New DevExpress.XtraPrinting.Shape.ShapeRectangle() + Me.TopMargin = New DevExpress.XtraReports.UI.TopMarginBand() + Me.XrPanel1 = New DevExpress.XtraReports.UI.XRPanel() + Me.XrLabel22 = New DevExpress.XtraReports.UI.XRLabel() + Me.BottomMargin = New DevExpress.XtraReports.UI.BottomMarginBand() + Me.Detail = New DevExpress.XtraReports.UI.DetailBand() + Me.XrLabel19 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel20 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel17 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel18 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel3 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel5 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel1 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel2 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel4 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel6 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel14 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel13 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrShape2 = New DevExpress.XtraReports.UI.XRShape() + Me.DetailReport = New DevExpress.XtraReports.UI.DetailReportBand() + Me.Detail1 = New DevExpress.XtraReports.UI.DetailBand() + Me.XrTable1 = New DevExpress.XtraReports.UI.XRTable() + Me.XrTableRow1 = New DevExpress.XtraReports.UI.XRTableRow() + Me.XrTableCell1 = New DevExpress.XtraReports.UI.XRTableCell() + Me.XrTableCell2 = New DevExpress.XtraReports.UI.XRTableCell() + Me.XrTableCell6 = New DevExpress.XtraReports.UI.XRTableCell() + Me.XrTableCell7 = New DevExpress.XtraReports.UI.XRTableCell() + Me.XrTableCell9 = New DevExpress.XtraReports.UI.XRTableCell() + Me.GroupHeader1 = New DevExpress.XtraReports.UI.GroupHeaderBand() + Me.XrTable2 = New DevExpress.XtraReports.UI.XRTable() + Me.XrTableRow2 = New DevExpress.XtraReports.UI.XRTableRow() + Me.XrTableCell3 = New DevExpress.XtraReports.UI.XRTableCell() + Me.XrTableCell4 = New DevExpress.XtraReports.UI.XRTableCell() + Me.XrTableCell11 = New DevExpress.XtraReports.UI.XRTableCell() + Me.XrTableCell12 = New DevExpress.XtraReports.UI.XRTableCell() + Me.XrTableCell14 = New DevExpress.XtraReports.UI.XRTableCell() + Me.GroupFooter1 = New DevExpress.XtraReports.UI.GroupFooterBand() + Me.XrLabel16 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel15 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel12 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel11 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel10 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel9 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel8 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel7 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrShape1 = New DevExpress.XtraReports.UI.XRShape() + Me.ObjectDataSource1 = New DevExpress.DataAccess.ObjectBinding.ObjectDataSource(Me.components) + Me.Fecha = New DevExpress.XtraReports.Parameters.Parameter() + CType(Me.XrTable1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.XrTable2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.ObjectDataSource1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me, System.ComponentModel.ISupportInitialize).BeginInit() + ' + 'TopMargin + ' + Me.TopMargin.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.XrPanel1}) + Me.TopMargin.Dpi = 254.0! + Me.TopMargin.HeightF = 138.7708! + Me.TopMargin.Name = "TopMargin" + ' + 'XrPanel1 + ' + Me.XrPanel1.Borders = DevExpress.XtraPrinting.BorderSide.None + Me.XrPanel1.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.XrLabel22}) + Me.XrPanel1.Dpi = 254.0! + Me.XrPanel1.LocationFloat = New DevExpress.Utils.PointFloat(67.24997!, 25.00001!) + Me.XrPanel1.Name = "XrPanel1" + Me.XrPanel1.SizeF = New System.Drawing.SizeF(963.0831!, 113.7708!) + Me.XrPanel1.StylePriority.UseBorders = False + ' + 'XrLabel22 + ' + Me.XrLabel22.Dpi = 254.0! + Me.XrLabel22.Font = New DevExpress.Drawing.DXFont("Arial", 12.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel22.LocationFloat = New DevExpress.Utils.PointFloat(25.40002!, 25.40002!) + Me.XrLabel22.Name = "XrLabel22" + Me.XrLabel22.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel22.SizeF = New System.Drawing.SizeF(444.5!, 58.42001!) + Me.XrLabel22.StylePriority.UseFont = False + Me.XrLabel22.StylePriority.UseTextAlignment = False + Me.XrLabel22.Text = "CIERRE DE CAJA" + Me.XrLabel22.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter + ' + 'BottomMargin + ' + Me.BottomMargin.Dpi = 254.0! + Me.BottomMargin.HeightF = 50.0! + Me.BottomMargin.Name = "BottomMargin" + ' + 'Detail + ' + Me.Detail.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.XrLabel19, Me.XrLabel20, Me.XrLabel17, Me.XrLabel18, Me.XrLabel3, Me.XrLabel5, Me.XrLabel1, Me.XrLabel2, Me.XrLabel4, Me.XrLabel6, Me.XrLabel14, Me.XrLabel13, Me.XrShape2}) + Me.Detail.Dpi = 254.0! + Me.Detail.HeightF = 238.6076! + Me.Detail.HierarchyPrintOptions.Indent = 50.8! + Me.Detail.Name = "Detail" + ' + 'XrLabel19 + ' + Me.XrLabel19.Dpi = 254.0! + Me.XrLabel19.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[ImporteCerrado]")}) + Me.XrLabel19.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel19.LocationFloat = New DevExpress.Utils.PointFloat(1704.458!, 131.6514!) + Me.XrLabel19.Name = "XrLabel19" + Me.XrLabel19.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel19.SizeF = New System.Drawing.SizeF(276.6497!, 58.42004!) + Me.XrLabel19.StylePriority.UseFont = False + Me.XrLabel19.StylePriority.UseTextAlignment = False + Me.XrLabel19.Text = "[profesores.Nombre] [Profesores.Apellidos]" + Me.XrLabel19.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft + Me.XrLabel19.TextFormatString = "{0:c2}" + ' + 'XrLabel20 + ' + Me.XrLabel20.Dpi = 254.0! + Me.XrLabel20.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel20.LocationFloat = New DevExpress.Utils.PointFloat(1356.514!, 131.6514!) + Me.XrLabel20.Name = "XrLabel20" + Me.XrLabel20.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel20.SizeF = New System.Drawing.SizeF(329.4233!, 58.42001!) + Me.XrLabel20.StylePriority.UseFont = False + Me.XrLabel20.Text = "Importe M. Cerrados:" + ' + 'XrLabel17 + ' + Me.XrLabel17.Dpi = 254.0! + Me.XrLabel17.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[idCajaNavigation].[Descripcion]")}) + Me.XrLabel17.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel17.LocationFloat = New DevExpress.Utils.PointFloat(824.3406!, 52.91675!) + Me.XrLabel17.Name = "XrLabel17" + Me.XrLabel17.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel17.SizeF = New System.Drawing.SizeF(518.9336!, 58.42002!) + Me.XrLabel17.StylePriority.UseFont = False + Me.XrLabel17.Text = "[profesores.Nombre] [Profesores.Apellidos]" + ' + 'XrLabel18 + ' + Me.XrLabel18.Dpi = 254.0! + Me.XrLabel18.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel18.LocationFloat = New DevExpress.Utils.PointFloat(540.0046!, 52.91683!) + Me.XrLabel18.Name = "XrLabel18" + Me.XrLabel18.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel18.SizeF = New System.Drawing.SizeF(266.3013!, 58.41997!) + Me.XrLabel18.StylePriority.UseFont = False + Me.XrLabel18.Text = "Caja Cierre:" + ' + 'XrLabel3 + ' + Me.XrLabel3.Dpi = 254.0! + Me.XrLabel3.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[idMovimiento]")}) + Me.XrLabel3.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel3.LocationFloat = New DevExpress.Utils.PointFloat(219.5094!, 52.91675!) + Me.XrLabel3.Name = "XrLabel3" + Me.XrLabel3.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel3.SizeF = New System.Drawing.SizeF(287.2332!, 58.42002!) + Me.XrLabel3.StylePriority.UseFont = False + Me.XrLabel3.Text = "[profesores.Nombre] [Profesores.Apellidos]" + ' + 'XrLabel5 + ' + Me.XrLabel5.Dpi = 254.0! + Me.XrLabel5.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel5.LocationFloat = New DevExpress.Utils.PointFloat(540.0046!, 131.6514!) + Me.XrLabel5.Name = "XrLabel5" + Me.XrLabel5.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel5.SizeF = New System.Drawing.SizeF(266.3012!, 58.41997!) + Me.XrLabel5.StylePriority.UseFont = False + Me.XrLabel5.Text = "Usuario que cierra:" + ' + 'XrLabel1 + ' + Me.XrLabel1.Dpi = 254.0! + Me.XrLabel1.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Fecha]")}) + Me.XrLabel1.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel1.LocationFloat = New DevExpress.Utils.PointFloat(219.5094!, 131.6514!) + Me.XrLabel1.Name = "XrLabel1" + Me.XrLabel1.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel1.SizeF = New System.Drawing.SizeF(287.2332!, 58.42004!) + Me.XrLabel1.StylePriority.UseFont = False + Me.XrLabel1.Text = "[profesores.Nombre] [Profesores.Apellidos]" + Me.XrLabel1.TextFormatString = "{0:dd/MM/yyyy}" + ' + 'XrLabel2 + ' + Me.XrLabel2.Dpi = 254.0! + Me.XrLabel2.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel2.LocationFloat = New DevExpress.Utils.PointFloat(29.55924!, 131.6515!) + Me.XrLabel2.Name = "XrLabel2" + Me.XrLabel2.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel2.SizeF = New System.Drawing.SizeF(189.9501!, 58.41997!) + Me.XrLabel2.StylePriority.UseFont = False + Me.XrLabel2.Text = "Fecha Cierre:" + ' + 'XrLabel4 + ' + Me.XrLabel4.Dpi = 254.0! + Me.XrLabel4.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[idUsuarioNavigation].[Nombre]")}) + Me.XrLabel4.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel4.LocationFloat = New DevExpress.Utils.PointFloat(824.3407!, 131.6514!) + Me.XrLabel4.Name = "XrLabel4" + Me.XrLabel4.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel4.SizeF = New System.Drawing.SizeF(518.9335!, 58.42004!) + Me.XrLabel4.StylePriority.UseFont = False + Me.XrLabel4.Text = "[profesores.Nombre] [Profesores.Apellidos]" + ' + 'XrLabel6 + ' + Me.XrLabel6.Dpi = 254.0! + Me.XrLabel6.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel6.LocationFloat = New DevExpress.Utils.PointFloat(29.55924!, 52.91667!) + Me.XrLabel6.Name = "XrLabel6" + Me.XrLabel6.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel6.SizeF = New System.Drawing.SizeF(189.9501!, 58.41999!) + Me.XrLabel6.StylePriority.UseFont = False + Me.XrLabel6.Text = "Nº Cierre" + ' + 'XrLabel14 + ' + Me.XrLabel14.Dpi = 254.0! + Me.XrLabel14.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel14.LocationFloat = New DevExpress.Utils.PointFloat(1356.514!, 52.91675!) + Me.XrLabel14.Name = "XrLabel14" + Me.XrLabel14.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel14.SizeF = New System.Drawing.SizeF(252.316!, 58.41997!) + Me.XrLabel14.StylePriority.UseFont = False + Me.XrLabel14.Text = "Fecha Impresión:" + ' + 'XrLabel13 + ' + Me.XrLabel13.Dpi = 254.0! + Me.XrLabel13.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "?Fecha")}) + Me.XrLabel13.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel13.LocationFloat = New DevExpress.Utils.PointFloat(1619.414!, 52.91659!) + Me.XrLabel13.Name = "XrLabel13" + Me.XrLabel13.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel13.SizeF = New System.Drawing.SizeF(362.6234!, 58.42004!) + Me.XrLabel13.StylePriority.UseFont = False + Me.XrLabel13.Text = "[profesores.Nombre] [Profesores.Apellidos]" + Me.XrLabel13.TextFormatString = "{0:dd/MM/yyyy}" + ' + 'XrShape2 + ' + Me.XrShape2.Dpi = 254.0! + Me.XrShape2.FillColor = System.Drawing.Color.WhiteSmoke + Me.XrShape2.LocationFloat = New DevExpress.Utils.PointFloat(13.76757!, 25.00001!) + Me.XrShape2.Name = "XrShape2" + ShapeRectangle1.Fillet = 20 + Me.XrShape2.Shape = ShapeRectangle1 + Me.XrShape2.SizeF = New System.Drawing.SizeF(1986.233!, 199.8627!) + ' + 'DetailReport + ' + Me.DetailReport.Bands.AddRange(New DevExpress.XtraReports.UI.Band() {Me.Detail1, Me.GroupHeader1, Me.GroupFooter1}) + Me.DetailReport.DataMember = "MovimientosDelCierre" + Me.DetailReport.DataSource = Me.ObjectDataSource1 + Me.DetailReport.Dpi = 254.0! + Me.DetailReport.Level = 0 + Me.DetailReport.Name = "DetailReport" + ' + 'Detail1 + ' + Me.Detail1.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.XrTable1}) + Me.Detail1.Dpi = 254.0! + Me.Detail1.HeightF = 47.28944! + Me.Detail1.HierarchyPrintOptions.Indent = 50.8! + Me.Detail1.Name = "Detail1" + Me.Detail1.SortFields.AddRange(New DevExpress.XtraReports.UI.GroupField() {New DevExpress.XtraReports.UI.GroupField("idMovimiento", DevExpress.XtraReports.UI.XRColumnSortOrder.Ascending)}) + ' + 'XrTable1 + ' + Me.XrTable1.Dpi = 254.0! + Me.XrTable1.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrTable1.LocationFloat = New DevExpress.Utils.PointFloat(13.76761!, 0!) + Me.XrTable1.Name = "XrTable1" + Me.XrTable1.Rows.AddRange(New DevExpress.XtraReports.UI.XRTableRow() {Me.XrTableRow1}) + Me.XrTable1.SizeF = New System.Drawing.SizeF(1961.232!, 47.28944!) + Me.XrTable1.StylePriority.UseFont = False + ' + 'XrTableRow1 + ' + Me.XrTableRow1.Cells.AddRange(New DevExpress.XtraReports.UI.XRTableCell() {Me.XrTableCell1, Me.XrTableCell2, Me.XrTableCell6, Me.XrTableCell7, Me.XrTableCell9}) + Me.XrTableRow1.Dpi = 254.0! + Me.XrTableRow1.Name = "XrTableRow1" + Me.XrTableRow1.Weight = 11.5R + ' + 'XrTableCell1 + ' + Me.XrTableCell1.Dpi = 254.0! + Me.XrTableCell1.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Descripcion]")}) + Me.XrTableCell1.Name = "XrTableCell1" + Me.XrTableCell1.StylePriority.UseFont = False + Me.XrTableCell1.Text = "XrTableCell1" + Me.XrTableCell1.Weight = 0.65133730026355985R + ' + 'XrTableCell2 + ' + Me.XrTableCell2.Dpi = 254.0! + Me.XrTableCell2.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Fecha]")}) + Me.XrTableCell2.Name = "XrTableCell2" + Me.XrTableCell2.Text = "XrTableCell2" + Me.XrTableCell2.TextFormatString = "{0:dd/MM/yyyy HH:mm}" + Me.XrTableCell2.Weight = 0.14856320511943927R + ' + 'XrTableCell6 + ' + Me.XrTableCell6.Dpi = 254.0! + Me.XrTableCell6.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[idMovimiento]")}) + Me.XrTableCell6.Name = "XrTableCell6" + Me.XrTableCell6.Text = "XrTableCell6" + Me.XrTableCell6.Weight = 0.15225145388319286R + ' + 'XrTableCell7 + ' + Me.XrTableCell7.Dpi = 254.0! + Me.XrTableCell7.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Importe]")}) + Me.XrTableCell7.Name = "XrTableCell7" + Me.XrTableCell7.StylePriority.UseTextAlignment = False + Me.XrTableCell7.Text = "XrTableCell7" + Me.XrTableCell7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight + Me.XrTableCell7.TextFormatString = "{0:c2}" + Me.XrTableCell7.Weight = 0.12158946848324614R + ' + 'XrTableCell9 + ' + Me.XrTableCell9.Dpi = 254.0! + Me.XrTableCell9.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[idUsuarioNavigation].[Nombre]")}) + Me.XrTableCell9.Name = "XrTableCell9" + Me.XrTableCell9.StylePriority.UseTextAlignment = False + Me.XrTableCell9.Text = "XrTableCell9" + Me.XrTableCell9.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter + Me.XrTableCell9.Weight = 0.14983867201936621R + ' + 'GroupHeader1 + ' + Me.GroupHeader1.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.XrTable2}) + Me.GroupHeader1.Dpi = 254.0! + Me.GroupHeader1.HeightF = 56.78311! + Me.GroupHeader1.Name = "GroupHeader1" + ' + 'XrTable2 + ' + Me.XrTable2.BackColor = System.Drawing.Color.Silver + Me.XrTable2.Dpi = 254.0! + Me.XrTable2.Font = New DevExpress.Drawing.DXFont("Segoe UI", 9.75!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrTable2.ForeColor = System.Drawing.Color.Black + Me.XrTable2.LocationFloat = New DevExpress.Utils.PointFloat(13.76761!, 0!) + Me.XrTable2.Name = "XrTable2" + Me.XrTable2.Rows.AddRange(New DevExpress.XtraReports.UI.XRTableRow() {Me.XrTableRow2}) + Me.XrTable2.SizeF = New System.Drawing.SizeF(1961.232!, 47.28944!) + Me.XrTable2.StylePriority.UseBackColor = False + Me.XrTable2.StylePriority.UseFont = False + Me.XrTable2.StylePriority.UseForeColor = False + ' + 'XrTableRow2 + ' + Me.XrTableRow2.Cells.AddRange(New DevExpress.XtraReports.UI.XRTableCell() {Me.XrTableCell3, Me.XrTableCell4, Me.XrTableCell11, Me.XrTableCell12, Me.XrTableCell14}) + Me.XrTableRow2.Dpi = 254.0! + Me.XrTableRow2.Name = "XrTableRow2" + Me.XrTableRow2.Weight = 11.5R + ' + 'XrTableCell3 + ' + Me.XrTableCell3.Dpi = 254.0! + Me.XrTableCell3.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrTableCell3.Name = "XrTableCell3" + Me.XrTableCell3.StylePriority.UseFont = False + Me.XrTableCell3.Text = "Descripción" + Me.XrTableCell3.Weight = 0.651216911310395R + ' + 'XrTableCell4 + ' + Me.XrTableCell4.Dpi = 254.0! + Me.XrTableCell4.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrTableCell4.Name = "XrTableCell4" + Me.XrTableCell4.StylePriority.UseFont = False + Me.XrTableCell4.Text = "Fecha" + Me.XrTableCell4.Weight = 0.14853577036309198R + ' + 'XrTableCell11 + ' + Me.XrTableCell11.Dpi = 254.0! + Me.XrTableCell11.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrTableCell11.Name = "XrTableCell11" + Me.XrTableCell11.StylePriority.UseFont = False + Me.XrTableCell11.Text = "Nº Movimiento" + Me.XrTableCell11.Weight = 0.15222340015547486R + ' + 'XrTableCell12 + ' + Me.XrTableCell12.Dpi = 254.0! + Me.XrTableCell12.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrTableCell12.Name = "XrTableCell12" + Me.XrTableCell12.StylePriority.UseFont = False + Me.XrTableCell12.StylePriority.UseTextAlignment = False + Me.XrTableCell12.Text = "Importe" + Me.XrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight + Me.XrTableCell12.Weight = 0.10990615377483919R + ' + 'XrTableCell14 + ' + Me.XrTableCell14.Dpi = 254.0! + Me.XrTableCell14.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrTableCell14.Name = "XrTableCell14" + Me.XrTableCell14.StylePriority.UseFont = False + Me.XrTableCell14.StylePriority.UseTextAlignment = False + Me.XrTableCell14.Text = "Usuario" + Me.XrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter + Me.XrTableCell14.Weight = 0.16147183210373589R + ' + 'GroupFooter1 + ' + Me.GroupFooter1.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.XrLabel16, Me.XrLabel15, Me.XrLabel12, Me.XrLabel11, Me.XrLabel10, Me.XrLabel9, Me.XrLabel8, Me.XrLabel7, Me.XrShape1}) + Me.GroupFooter1.Dpi = 254.0! + Me.GroupFooter1.HeightF = 238.7961! + Me.GroupFooter1.Name = "GroupFooter1" + ' + 'XrLabel16 + ' + Me.XrLabel16.Dpi = 254.0! + Me.XrLabel16.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[SaldoAntesCierre]")}) + Me.XrLabel16.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel16.LocationFloat = New DevExpress.Utils.PointFloat(430.3529!, 47.36097!) + Me.XrLabel16.Name = "XrLabel16" + Me.XrLabel16.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel16.SizeF = New System.Drawing.SizeF(274.0038!, 58.42003!) + Me.XrLabel16.StylePriority.UseFont = False + Me.XrLabel16.Text = "[profesores.Nombre] [Profesores.Apellidos]" + Me.XrLabel16.TextFormatString = "{0:c2}" + ' + 'XrLabel15 + ' + Me.XrLabel15.Dpi = 254.0! + Me.XrLabel15.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel15.LocationFloat = New DevExpress.Utils.PointFloat(55.95015!, 47.36121!) + Me.XrLabel15.Name = "XrLabel15" + Me.XrLabel15.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel15.SizeF = New System.Drawing.SizeF(353.2359!, 58.41998!) + Me.XrLabel15.StylePriority.UseFont = False + Me.XrLabel15.Text = "Saldo Cierre Anterior:" + ' + 'XrLabel12 + ' + Me.XrLabel12.Dpi = 254.0! + Me.XrLabel12.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[SaldoDespuesCierre]")}) + Me.XrLabel12.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel12.LocationFloat = New DevExpress.Utils.PointFloat(430.3529!, 139.5012!) + Me.XrLabel12.Name = "XrLabel12" + Me.XrLabel12.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel12.SizeF = New System.Drawing.SizeF(274.0038!, 58.42003!) + Me.XrLabel12.StylePriority.UseFont = False + Me.XrLabel12.Text = "[profesores.Nombre] [Profesores.Apellidos]" + Me.XrLabel12.TextFormatString = "{0:c2}" + ' + 'XrLabel11 + ' + Me.XrLabel11.Dpi = 254.0! + Me.XrLabel11.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel11.LocationFloat = New DevExpress.Utils.PointFloat(845.7034!, 47.36105!) + Me.XrLabel11.Name = "XrLabel11" + Me.XrLabel11.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel11.SizeF = New System.Drawing.SizeF(292.7596!, 58.41998!) + Me.XrLabel11.StylePriority.UseFont = False + Me.XrLabel11.Text = "Importe Entrada:" + ' + 'XrLabel10 + ' + Me.XrLabel10.Dpi = 254.0! + Me.XrLabel10.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[ImporteEntradasMovimientosCerrados]")}) + Me.XrLabel10.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel10.LocationFloat = New DevExpress.Utils.PointFloat(1154.338!, 47.36113!) + Me.XrLabel10.Name = "XrLabel10" + Me.XrLabel10.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel10.SizeF = New System.Drawing.SizeF(263.0427!, 58.42005!) + Me.XrLabel10.StylePriority.UseFont = False + Me.XrLabel10.Text = "[profesores.Nombre] [Profesores.Apellidos]" + Me.XrLabel10.TextFormatString = "{0:c2}" + ' + 'XrLabel9 + ' + Me.XrLabel9.Dpi = 254.0! + Me.XrLabel9.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel9.LocationFloat = New DevExpress.Utils.PointFloat(1445.093!, 47.36113!) + Me.XrLabel9.Name = "XrLabel9" + Me.XrLabel9.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel9.SizeF = New System.Drawing.SizeF(289.7356!, 58.41998!) + Me.XrLabel9.StylePriority.UseFont = False + Me.XrLabel9.Text = "Importe Salida:" + ' + 'XrLabel8 + ' + Me.XrLabel8.Dpi = 254.0! + Me.XrLabel8.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[ImporteSalidasMovimientosCerrados]")}) + Me.XrLabel8.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel8.LocationFloat = New DevExpress.Utils.PointFloat(1734.828!, 47.36105!) + Me.XrLabel8.Name = "XrLabel8" + Me.XrLabel8.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel8.SizeF = New System.Drawing.SizeF(240.1718!, 58.42003!) + Me.XrLabel8.StylePriority.UseFont = False + Me.XrLabel8.Text = "[profesores.Nombre] [Profesores.Apellidos]" + Me.XrLabel8.TextFormatString = "{0:c2}" + ' + 'XrLabel7 + ' + Me.XrLabel7.Dpi = 254.0! + Me.XrLabel7.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel7.LocationFloat = New DevExpress.Utils.PointFloat(55.95015!, 139.5012!) + Me.XrLabel7.Name = "XrLabel7" + Me.XrLabel7.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel7.SizeF = New System.Drawing.SizeF(353.2359!, 58.41998!) + Me.XrLabel7.StylePriority.UseFont = False + Me.XrLabel7.Text = "Saldo Caja Al Cierre:" + ' + 'XrShape1 + ' + Me.XrShape1.Dpi = 254.0! + Me.XrShape1.FillColor = System.Drawing.Color.WhiteSmoke + Me.XrShape1.LocationFloat = New DevExpress.Utils.PointFloat(13.76757!, 25.00001!) + Me.XrShape1.Name = "XrShape1" + ShapeRectangle2.Fillet = 20 + Me.XrShape1.Shape = ShapeRectangle2 + Me.XrShape1.SizeF = New System.Drawing.SizeF(1986.233!, 213.7961!) + ' + 'ObjectDataSource1 + ' + Me.ObjectDataSource1.DataSource = GetType(Global.bdGrupoSanchoToro.db.movimientoscaja) + Me.ObjectDataSource1.Name = "ObjectDataSource1" + ' + 'Fecha + ' + Me.Fecha.Description = "Parameter1" + Me.Fecha.Name = "Fecha" + Me.Fecha.Type = GetType(Integer) + Me.Fecha.ValueInfo = "0" + ' + 'xrCierreCaja + ' + Me.Bands.AddRange(New DevExpress.XtraReports.UI.Band() {Me.TopMargin, Me.BottomMargin, Me.Detail, Me.DetailReport}) + Me.ComponentStorage.AddRange(New System.ComponentModel.IComponent() {Me.ObjectDataSource1}) + Me.DataSource = Me.ObjectDataSource1 + Me.Dpi = 254.0! + Me.Font = New DevExpress.Drawing.DXFont("Arial", 9.75!) + Me.Margins = New DevExpress.Drawing.DXMargins(50.0!, 50.0!, 138.7708!, 50.0!) + Me.PageHeight = 2970 + Me.PageWidth = 2100 + Me.PaperKind = DevExpress.Drawing.Printing.DXPaperKind.A4 + Me.Parameters.AddRange(New DevExpress.XtraReports.Parameters.Parameter() {Me.Fecha}) + Me.ReportUnit = DevExpress.XtraReports.UI.ReportUnit.TenthsOfAMillimeter + Me.SnapGridSize = 25.0! + Me.Version = "23.2" + CType(Me.XrTable1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.XrTable2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.ObjectDataSource1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me, System.ComponentModel.ISupportInitialize).EndInit() + + End Sub + + Friend WithEvents TopMargin As DevExpress.XtraReports.UI.TopMarginBand + Friend WithEvents BottomMargin As DevExpress.XtraReports.UI.BottomMarginBand + Friend WithEvents Detail As DevExpress.XtraReports.UI.DetailBand + Friend WithEvents XrLabel3 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel5 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel1 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel2 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel4 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel6 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel14 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel13 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrShape2 As DevExpress.XtraReports.UI.XRShape + Friend WithEvents ObjectDataSource1 As DevExpress.DataAccess.ObjectBinding.ObjectDataSource + Friend WithEvents DetailReport As DevExpress.XtraReports.UI.DetailReportBand + Friend WithEvents Detail1 As DevExpress.XtraReports.UI.DetailBand + Friend WithEvents XrTable1 As DevExpress.XtraReports.UI.XRTable + Friend WithEvents XrTableRow1 As DevExpress.XtraReports.UI.XRTableRow + Friend WithEvents XrTableCell1 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents XrTableCell2 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents XrTableCell6 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents XrTableCell7 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents XrTableCell9 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents GroupHeader1 As DevExpress.XtraReports.UI.GroupHeaderBand + Friend WithEvents XrTable2 As DevExpress.XtraReports.UI.XRTable + Friend WithEvents XrTableRow2 As DevExpress.XtraReports.UI.XRTableRow + Friend WithEvents XrTableCell3 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents XrTableCell4 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents XrTableCell11 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents XrTableCell12 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents XrTableCell14 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents GroupFooter1 As DevExpress.XtraReports.UI.GroupFooterBand + Friend WithEvents XrLabel12 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel11 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel10 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel9 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel8 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel7 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrShape1 As DevExpress.XtraReports.UI.XRShape + Friend WithEvents XrLabel16 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel15 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel17 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel18 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents Fecha As DevExpress.XtraReports.Parameters.Parameter + Friend WithEvents XrPanel1 As DevExpress.XtraReports.UI.XRPanel + Friend WithEvents XrLabel22 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel19 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel20 As DevExpress.XtraReports.UI.XRLabel +End Class diff --git a/GestionGrupoSanchoToro/Informes/xrCierreCaja.Designer.vb.bak b/GestionGrupoSanchoToro/Informes/xrCierreCaja.Designer.vb.bak new file mode 100644 index 0000000..842428e --- /dev/null +++ b/GestionGrupoSanchoToro/Informes/xrCierreCaja.Designer.vb.bak @@ -0,0 +1,627 @@ + _ +Partial Public Class xrCierreCaja + Inherits DevExpress.XtraReports.UI.XtraReport + + 'XtraReport overrides dispose to clean up the component list. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + MyBase.Dispose(disposing) + End Sub + + 'Required by the Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Designer + 'It can be modified using the Designer. + 'Do not modify it using the code editor. + _ + Private Sub InitializeComponent() + Me.components = New System.ComponentModel.Container() + Dim ShapeRectangle1 As DevExpress.XtraPrinting.Shape.ShapeRectangle = New DevExpress.XtraPrinting.Shape.ShapeRectangle() + Dim ShapeRectangle2 As DevExpress.XtraPrinting.Shape.ShapeRectangle = New DevExpress.XtraPrinting.Shape.ShapeRectangle() + Me.TopMargin = New DevExpress.XtraReports.UI.TopMarginBand() + Me.XrPanel1 = New DevExpress.XtraReports.UI.XRPanel() + Me.XrLabel22 = New DevExpress.XtraReports.UI.XRLabel() + Me.BottomMargin = New DevExpress.XtraReports.UI.BottomMarginBand() + Me.Detail = New DevExpress.XtraReports.UI.DetailBand() + Me.XrLabel19 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel20 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel17 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel18 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel3 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel5 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel1 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel2 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel4 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel6 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel14 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel13 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrShape2 = New DevExpress.XtraReports.UI.XRShape() + Me.DetailReport = New DevExpress.XtraReports.UI.DetailReportBand() + Me.Detail1 = New DevExpress.XtraReports.UI.DetailBand() + Me.XrTable1 = New DevExpress.XtraReports.UI.XRTable() + Me.XrTableRow1 = New DevExpress.XtraReports.UI.XRTableRow() + Me.XrTableCell1 = New DevExpress.XtraReports.UI.XRTableCell() + Me.XrTableCell2 = New DevExpress.XtraReports.UI.XRTableCell() + Me.XrTableCell6 = New DevExpress.XtraReports.UI.XRTableCell() + Me.XrTableCell7 = New DevExpress.XtraReports.UI.XRTableCell() + Me.XrTableCell9 = New DevExpress.XtraReports.UI.XRTableCell() + Me.GroupHeader1 = New DevExpress.XtraReports.UI.GroupHeaderBand() + Me.XrTable2 = New DevExpress.XtraReports.UI.XRTable() + Me.XrTableRow2 = New DevExpress.XtraReports.UI.XRTableRow() + Me.XrTableCell3 = New DevExpress.XtraReports.UI.XRTableCell() + Me.XrTableCell4 = New DevExpress.XtraReports.UI.XRTableCell() + Me.XrTableCell11 = New DevExpress.XtraReports.UI.XRTableCell() + Me.XrTableCell12 = New DevExpress.XtraReports.UI.XRTableCell() + Me.XrTableCell14 = New DevExpress.XtraReports.UI.XRTableCell() + Me.GroupFooter1 = New DevExpress.XtraReports.UI.GroupFooterBand() + Me.XrLabel16 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel15 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel12 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel11 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel10 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel9 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel8 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrLabel7 = New DevExpress.XtraReports.UI.XRLabel() + Me.XrShape1 = New DevExpress.XtraReports.UI.XRShape() + Me.ObjectDataSource1 = New DevExpress.DataAccess.ObjectBinding.ObjectDataSource(Me.components) + Me.Fecha = New DevExpress.XtraReports.Parameters.Parameter() + CType(Me.XrTable1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.XrTable2, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.ObjectDataSource1, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me, System.ComponentModel.ISupportInitialize).BeginInit() + ' + 'TopMargin + ' + Me.TopMargin.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.XrPanel1}) + Me.TopMargin.Dpi = 254.0! + Me.TopMargin.HeightF = 138.7708! + Me.TopMargin.Name = "TopMargin" + ' + 'XrPanel1 + ' + Me.XrPanel1.Borders = DevExpress.XtraPrinting.BorderSide.None + Me.XrPanel1.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.XrLabel22}) + Me.XrPanel1.Dpi = 254.0! + Me.XrPanel1.LocationFloat = New DevExpress.Utils.PointFloat(67.24997!, 25.00001!) + Me.XrPanel1.Name = "XrPanel1" + Me.XrPanel1.SizeF = New System.Drawing.SizeF(963.0831!, 113.7708!) + Me.XrPanel1.StylePriority.UseBorders = False + ' + 'XrLabel22 + ' + Me.XrLabel22.Dpi = 254.0! + Me.XrLabel22.Font = New DevExpress.Drawing.DXFont("Arial", 12.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel22.LocationFloat = New DevExpress.Utils.PointFloat(25.40002!, 25.40002!) + Me.XrLabel22.Name = "XrLabel22" + Me.XrLabel22.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel22.SizeF = New System.Drawing.SizeF(444.5!, 58.42001!) + Me.XrLabel22.StylePriority.UseFont = False + Me.XrLabel22.StylePriority.UseTextAlignment = False + Me.XrLabel22.Text = "CIERRE DE CAJA" + Me.XrLabel22.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter + ' + 'BottomMargin + ' + Me.BottomMargin.Dpi = 254.0! + Me.BottomMargin.HeightF = 50.0! + Me.BottomMargin.Name = "BottomMargin" + ' + 'Detail + ' + Me.Detail.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.XrLabel19, Me.XrLabel20, Me.XrLabel17, Me.XrLabel18, Me.XrLabel3, Me.XrLabel5, Me.XrLabel1, Me.XrLabel2, Me.XrLabel4, Me.XrLabel6, Me.XrLabel14, Me.XrLabel13, Me.XrShape2}) + Me.Detail.Dpi = 254.0! + Me.Detail.HeightF = 238.6076! + Me.Detail.HierarchyPrintOptions.Indent = 50.8! + Me.Detail.Name = "Detail" + ' + 'XrLabel19 + ' + Me.XrLabel19.Dpi = 254.0! + Me.XrLabel19.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[ImporteCerrado]")}) + Me.XrLabel19.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel19.LocationFloat = New DevExpress.Utils.PointFloat(1704.458!, 131.6514!) + Me.XrLabel19.Name = "XrLabel19" + Me.XrLabel19.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel19.SizeF = New System.Drawing.SizeF(276.6497!, 58.42004!) + Me.XrLabel19.StylePriority.UseFont = False + Me.XrLabel19.StylePriority.UseTextAlignment = False + Me.XrLabel19.Text = "[profesores.Nombre] [Profesores.Apellidos]" + Me.XrLabel19.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft + Me.XrLabel19.TextFormatString = "{0:c2}" + ' + 'XrLabel20 + ' + Me.XrLabel20.Dpi = 254.0! + Me.XrLabel20.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel20.LocationFloat = New DevExpress.Utils.PointFloat(1356.514!, 131.6514!) + Me.XrLabel20.Name = "XrLabel20" + Me.XrLabel20.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel20.SizeF = New System.Drawing.SizeF(329.4233!, 58.42001!) + Me.XrLabel20.StylePriority.UseFont = False + Me.XrLabel20.Text = "Importe M. Cerrados:" + ' + 'XrLabel17 + ' + Me.XrLabel17.Dpi = 254.0! + Me.XrLabel17.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[cajas].[Descripcion]")}) + Me.XrLabel17.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel17.LocationFloat = New DevExpress.Utils.PointFloat(824.3406!, 52.91675!) + Me.XrLabel17.Name = "XrLabel17" + Me.XrLabel17.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel17.SizeF = New System.Drawing.SizeF(518.9336!, 58.42002!) + Me.XrLabel17.StylePriority.UseFont = False + Me.XrLabel17.Text = "[profesores.Nombre] [Profesores.Apellidos]" + ' + 'XrLabel18 + ' + Me.XrLabel18.Dpi = 254.0! + Me.XrLabel18.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel18.LocationFloat = New DevExpress.Utils.PointFloat(540.0046!, 52.91683!) + Me.XrLabel18.Name = "XrLabel18" + Me.XrLabel18.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel18.SizeF = New System.Drawing.SizeF(266.3013!, 58.41997!) + Me.XrLabel18.StylePriority.UseFont = False + Me.XrLabel18.Text = "Caja Cierre:" + ' + 'XrLabel3 + ' + Me.XrLabel3.Dpi = 254.0! + Me.XrLabel3.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[cajas].[Descripcion]")}) + Me.XrLabel3.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel3.LocationFloat = New DevExpress.Utils.PointFloat(219.5094!, 52.91675!) + Me.XrLabel3.Name = "XrLabel3" + Me.XrLabel3.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel3.SizeF = New System.Drawing.SizeF(287.2332!, 58.42002!) + Me.XrLabel3.StylePriority.UseFont = False + Me.XrLabel3.Text = "[profesores.Nombre] [Profesores.Apellidos]" + ' + 'XrLabel5 + ' + Me.XrLabel5.Dpi = 254.0! + Me.XrLabel5.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel5.LocationFloat = New DevExpress.Utils.PointFloat(540.0046!, 131.6514!) + Me.XrLabel5.Name = "XrLabel5" + Me.XrLabel5.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel5.SizeF = New System.Drawing.SizeF(266.3012!, 58.41997!) + Me.XrLabel5.StylePriority.UseFont = False + Me.XrLabel5.Text = "Usuario que cierra:" + ' + 'XrLabel1 + ' + Me.XrLabel1.Dpi = 254.0! + Me.XrLabel1.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Fecha]")}) + Me.XrLabel1.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel1.LocationFloat = New DevExpress.Utils.PointFloat(219.5094!, 131.6514!) + Me.XrLabel1.Name = "XrLabel1" + Me.XrLabel1.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel1.SizeF = New System.Drawing.SizeF(287.2332!, 58.42004!) + Me.XrLabel1.StylePriority.UseFont = False + Me.XrLabel1.Text = "[profesores.Nombre] [Profesores.Apellidos]" + Me.XrLabel1.TextFormatString = "{0:dd/MM/yyyy}" + ' + 'XrLabel2 + ' + Me.XrLabel2.Dpi = 254.0! + Me.XrLabel2.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel2.LocationFloat = New DevExpress.Utils.PointFloat(29.55924!, 131.6515!) + Me.XrLabel2.Name = "XrLabel2" + Me.XrLabel2.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel2.SizeF = New System.Drawing.SizeF(189.9501!, 58.41997!) + Me.XrLabel2.StylePriority.UseFont = False + Me.XrLabel2.Text = "Fecha Cierre:" + ' + 'XrLabel4 + ' + Me.XrLabel4.Dpi = 254.0! + Me.XrLabel4.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[usuarios].[Nombre]")}) + Me.XrLabel4.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel4.LocationFloat = New DevExpress.Utils.PointFloat(824.3407!, 131.6514!) + Me.XrLabel4.Name = "XrLabel4" + Me.XrLabel4.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel4.SizeF = New System.Drawing.SizeF(518.9335!, 58.42004!) + Me.XrLabel4.StylePriority.UseFont = False + Me.XrLabel4.Text = "[profesores.Nombre] [Profesores.Apellidos]" + ' + 'XrLabel6 + ' + Me.XrLabel6.Dpi = 254.0! + Me.XrLabel6.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel6.LocationFloat = New DevExpress.Utils.PointFloat(29.55924!, 52.91667!) + Me.XrLabel6.Name = "XrLabel6" + Me.XrLabel6.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel6.SizeF = New System.Drawing.SizeF(189.9501!, 58.41999!) + Me.XrLabel6.StylePriority.UseFont = False + Me.XrLabel6.Text = "Nº Cierre" + ' + 'XrLabel14 + ' + Me.XrLabel14.Dpi = 254.0! + Me.XrLabel14.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel14.LocationFloat = New DevExpress.Utils.PointFloat(1356.514!, 52.91675!) + Me.XrLabel14.Name = "XrLabel14" + Me.XrLabel14.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel14.SizeF = New System.Drawing.SizeF(252.316!, 58.41997!) + Me.XrLabel14.StylePriority.UseFont = False + Me.XrLabel14.Text = "Fecha Impresión:" + ' + 'XrLabel13 + ' + Me.XrLabel13.Dpi = 254.0! + Me.XrLabel13.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "?Fecha")}) + Me.XrLabel13.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel13.LocationFloat = New DevExpress.Utils.PointFloat(1619.414!, 52.91659!) + Me.XrLabel13.Name = "XrLabel13" + Me.XrLabel13.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel13.SizeF = New System.Drawing.SizeF(362.6234!, 58.42004!) + Me.XrLabel13.StylePriority.UseFont = False + Me.XrLabel13.Text = "[profesores.Nombre] [Profesores.Apellidos]" + Me.XrLabel13.TextFormatString = "{0:dd/MM/yyyy}" + ' + 'XrShape2 + ' + Me.XrShape2.Dpi = 254.0! + Me.XrShape2.FillColor = System.Drawing.Color.WhiteSmoke + Me.XrShape2.LocationFloat = New DevExpress.Utils.PointFloat(13.76757!, 25.00001!) + Me.XrShape2.Name = "XrShape2" + ShapeRectangle1.Fillet = 20 + Me.XrShape2.Shape = ShapeRectangle1 + Me.XrShape2.SizeF = New System.Drawing.SizeF(1986.233!, 199.8627!) + ' + 'DetailReport + ' + Me.DetailReport.Bands.AddRange(New DevExpress.XtraReports.UI.Band() {Me.Detail1, Me.GroupHeader1, Me.GroupFooter1}) + Me.DetailReport.DataMember = "MovimientosDelCierre" + Me.DetailReport.DataSource = Me.ObjectDataSource1 + Me.DetailReport.Dpi = 254.0! + Me.DetailReport.Level = 0 + Me.DetailReport.Name = "DetailReport" + ' + 'Detail1 + ' + Me.Detail1.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.XrTable1}) + Me.Detail1.Dpi = 254.0! + Me.Detail1.HeightF = 47.28944! + Me.Detail1.HierarchyPrintOptions.Indent = 50.8! + Me.Detail1.Name = "Detail1" + Me.Detail1.SortFields.AddRange(New DevExpress.XtraReports.UI.GroupField() {New DevExpress.XtraReports.UI.GroupField("idMovimiento", DevExpress.XtraReports.UI.XRColumnSortOrder.Ascending)}) + ' + 'XrTable1 + ' + Me.XrTable1.Dpi = 254.0! + Me.XrTable1.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrTable1.LocationFloat = New DevExpress.Utils.PointFloat(13.76761!, 0!) + Me.XrTable1.Name = "XrTable1" + Me.XrTable1.Rows.AddRange(New DevExpress.XtraReports.UI.XRTableRow() {Me.XrTableRow1}) + Me.XrTable1.SizeF = New System.Drawing.SizeF(1961.232!, 47.28944!) + Me.XrTable1.StylePriority.UseFont = False + ' + 'XrTableRow1 + ' + Me.XrTableRow1.Cells.AddRange(New DevExpress.XtraReports.UI.XRTableCell() {Me.XrTableCell1, Me.XrTableCell2, Me.XrTableCell6, Me.XrTableCell7, Me.XrTableCell9}) + Me.XrTableRow1.Dpi = 254.0! + Me.XrTableRow1.Name = "XrTableRow1" + Me.XrTableRow1.Weight = 11.5R + ' + 'XrTableCell1 + ' + Me.XrTableCell1.Dpi = 254.0! + Me.XrTableCell1.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Descripcion]")}) + Me.XrTableCell1.Name = "XrTableCell1" + Me.XrTableCell1.StylePriority.UseFont = False + Me.XrTableCell1.Text = "XrTableCell1" + Me.XrTableCell1.Weight = 0.65133730026355985R + ' + 'XrTableCell2 + ' + Me.XrTableCell2.Dpi = 254.0! + Me.XrTableCell2.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Fecha]")}) + Me.XrTableCell2.Name = "XrTableCell2" + Me.XrTableCell2.Text = "XrTableCell2" + Me.XrTableCell2.TextFormatString = "{0:dd/MM/yyyy HH:mm}" + Me.XrTableCell2.Weight = 0.14856320511943927R + ' + 'XrTableCell6 + ' + Me.XrTableCell6.Dpi = 254.0! + Me.XrTableCell6.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[idMovimiento]")}) + Me.XrTableCell6.Name = "XrTableCell6" + Me.XrTableCell6.Text = "XrTableCell6" + Me.XrTableCell6.Weight = 0.15225145388319286R + ' + 'XrTableCell7 + ' + Me.XrTableCell7.Dpi = 254.0! + Me.XrTableCell7.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Importe]")}) + Me.XrTableCell7.Name = "XrTableCell7" + Me.XrTableCell7.StylePriority.UseTextAlignment = False + Me.XrTableCell7.Text = "XrTableCell7" + Me.XrTableCell7.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight + Me.XrTableCell7.TextFormatString = "{0:c2}" + Me.XrTableCell7.Weight = 0.12158946848324614R + ' + 'XrTableCell9 + ' + Me.XrTableCell9.Dpi = 254.0! + Me.XrTableCell9.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[usuarios].[Usuario]")}) + Me.XrTableCell9.Name = "XrTableCell9" + Me.XrTableCell9.StylePriority.UseTextAlignment = False + Me.XrTableCell9.Text = "XrTableCell9" + Me.XrTableCell9.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter + Me.XrTableCell9.Weight = 0.14983867201936621R + ' + 'GroupHeader1 + ' + Me.GroupHeader1.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.XrTable2}) + Me.GroupHeader1.Dpi = 254.0! + Me.GroupHeader1.HeightF = 56.78311! + Me.GroupHeader1.Name = "GroupHeader1" + ' + 'XrTable2 + ' + Me.XrTable2.BackColor = System.Drawing.Color.Silver + Me.XrTable2.Dpi = 254.0! + Me.XrTable2.Font = New DevExpress.Drawing.DXFont("Segoe UI", 9.75!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrTable2.ForeColor = System.Drawing.Color.Black + Me.XrTable2.LocationFloat = New DevExpress.Utils.PointFloat(13.76761!, 0!) + Me.XrTable2.Name = "XrTable2" + Me.XrTable2.Rows.AddRange(New DevExpress.XtraReports.UI.XRTableRow() {Me.XrTableRow2}) + Me.XrTable2.SizeF = New System.Drawing.SizeF(1961.232!, 47.28944!) + Me.XrTable2.StylePriority.UseBackColor = False + Me.XrTable2.StylePriority.UseFont = False + Me.XrTable2.StylePriority.UseForeColor = False + ' + 'XrTableRow2 + ' + Me.XrTableRow2.Cells.AddRange(New DevExpress.XtraReports.UI.XRTableCell() {Me.XrTableCell3, Me.XrTableCell4, Me.XrTableCell11, Me.XrTableCell12, Me.XrTableCell14}) + Me.XrTableRow2.Dpi = 254.0! + Me.XrTableRow2.Name = "XrTableRow2" + Me.XrTableRow2.Weight = 11.5R + ' + 'XrTableCell3 + ' + Me.XrTableCell3.Dpi = 254.0! + Me.XrTableCell3.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrTableCell3.Name = "XrTableCell3" + Me.XrTableCell3.StylePriority.UseFont = False + Me.XrTableCell3.Text = "Descripción" + Me.XrTableCell3.Weight = 0.651216911310395R + ' + 'XrTableCell4 + ' + Me.XrTableCell4.Dpi = 254.0! + Me.XrTableCell4.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrTableCell4.Name = "XrTableCell4" + Me.XrTableCell4.StylePriority.UseFont = False + Me.XrTableCell4.Text = "Fecha" + Me.XrTableCell4.Weight = 0.14853577036309199R + ' + 'XrTableCell11 + ' + Me.XrTableCell11.Dpi = 254.0! + Me.XrTableCell11.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrTableCell11.Name = "XrTableCell11" + Me.XrTableCell11.StylePriority.UseFont = False + Me.XrTableCell11.Text = "Nº Movimiento" + Me.XrTableCell11.Weight = 0.15222340015547486R + ' + 'XrTableCell12 + ' + Me.XrTableCell12.Dpi = 254.0! + Me.XrTableCell12.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrTableCell12.Name = "XrTableCell12" + Me.XrTableCell12.StylePriority.UseFont = False + Me.XrTableCell12.StylePriority.UseTextAlignment = False + Me.XrTableCell12.Text = "Importe" + Me.XrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight + Me.XrTableCell12.Weight = 0.10990615377483919R + ' + 'XrTableCell14 + ' + Me.XrTableCell14.Dpi = 254.0! + Me.XrTableCell14.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrTableCell14.Name = "XrTableCell14" + Me.XrTableCell14.StylePriority.UseFont = False + Me.XrTableCell14.StylePriority.UseTextAlignment = False + Me.XrTableCell14.Text = "Usuario" + Me.XrTableCell14.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopCenter + Me.XrTableCell14.Weight = 0.16147183210373589R + ' + 'GroupFooter1 + ' + Me.GroupFooter1.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.XrLabel16, Me.XrLabel15, Me.XrLabel12, Me.XrLabel11, Me.XrLabel10, Me.XrLabel9, Me.XrLabel8, Me.XrLabel7, Me.XrShape1}) + Me.GroupFooter1.Dpi = 254.0! + Me.GroupFooter1.HeightF = 238.7961! + Me.GroupFooter1.Name = "GroupFooter1" + ' + 'XrLabel16 + ' + Me.XrLabel16.Dpi = 254.0! + Me.XrLabel16.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[SaldoAntesCierre]")}) + Me.XrLabel16.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel16.LocationFloat = New DevExpress.Utils.PointFloat(430.3529!, 47.36097!) + Me.XrLabel16.Name = "XrLabel16" + Me.XrLabel16.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel16.SizeF = New System.Drawing.SizeF(274.0038!, 58.42003!) + Me.XrLabel16.StylePriority.UseFont = False + Me.XrLabel16.Text = "[profesores.Nombre] [Profesores.Apellidos]" + Me.XrLabel16.TextFormatString = "{0:c2}" + ' + 'XrLabel15 + ' + Me.XrLabel15.Dpi = 254.0! + Me.XrLabel15.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel15.LocationFloat = New DevExpress.Utils.PointFloat(55.95015!, 47.36121!) + Me.XrLabel15.Name = "XrLabel15" + Me.XrLabel15.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel15.SizeF = New System.Drawing.SizeF(353.2359!, 58.41998!) + Me.XrLabel15.StylePriority.UseFont = False + Me.XrLabel15.Text = "Saldo Cierre Anterior:" + ' + 'XrLabel12 + ' + Me.XrLabel12.Dpi = 254.0! + Me.XrLabel12.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[SaldoDespuesCierre]")}) + Me.XrLabel12.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel12.LocationFloat = New DevExpress.Utils.PointFloat(430.3529!, 139.5012!) + Me.XrLabel12.Name = "XrLabel12" + Me.XrLabel12.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel12.SizeF = New System.Drawing.SizeF(274.0038!, 58.42003!) + Me.XrLabel12.StylePriority.UseFont = False + Me.XrLabel12.Text = "[profesores.Nombre] [Profesores.Apellidos]" + Me.XrLabel12.TextFormatString = "{0:c2}" + ' + 'XrLabel11 + ' + Me.XrLabel11.Dpi = 254.0! + Me.XrLabel11.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel11.LocationFloat = New DevExpress.Utils.PointFloat(845.7034!, 47.36105!) + Me.XrLabel11.Name = "XrLabel11" + Me.XrLabel11.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel11.SizeF = New System.Drawing.SizeF(292.7596!, 58.41998!) + Me.XrLabel11.StylePriority.UseFont = False + Me.XrLabel11.Text = "Importe Entrada:" + ' + 'XrLabel10 + ' + Me.XrLabel10.Dpi = 254.0! + Me.XrLabel10.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[ImporteEntradasMovimientosCerrados]")}) + Me.XrLabel10.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel10.LocationFloat = New DevExpress.Utils.PointFloat(1154.338!, 47.36113!) + Me.XrLabel10.Name = "XrLabel10" + Me.XrLabel10.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel10.SizeF = New System.Drawing.SizeF(263.0427!, 58.42005!) + Me.XrLabel10.StylePriority.UseFont = False + Me.XrLabel10.Text = "[profesores.Nombre] [Profesores.Apellidos]" + Me.XrLabel10.TextFormatString = "{0:c2}" + ' + 'XrLabel9 + ' + Me.XrLabel9.Dpi = 254.0! + Me.XrLabel9.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel9.LocationFloat = New DevExpress.Utils.PointFloat(1445.093!, 47.36113!) + Me.XrLabel9.Name = "XrLabel9" + Me.XrLabel9.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel9.SizeF = New System.Drawing.SizeF(289.7356!, 58.41998!) + Me.XrLabel9.StylePriority.UseFont = False + Me.XrLabel9.Text = "Importe Salida:" + ' + 'XrLabel8 + ' + Me.XrLabel8.Dpi = 254.0! + Me.XrLabel8.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[ImporteSalidasMovimientosCerrados]")}) + Me.XrLabel8.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!) + Me.XrLabel8.LocationFloat = New DevExpress.Utils.PointFloat(1734.828!, 47.36105!) + Me.XrLabel8.Name = "XrLabel8" + Me.XrLabel8.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel8.SizeF = New System.Drawing.SizeF(240.1718!, 58.42003!) + Me.XrLabel8.StylePriority.UseFont = False + Me.XrLabel8.Text = "[profesores.Nombre] [Profesores.Apellidos]" + Me.XrLabel8.TextFormatString = "{0:c2}" + ' + 'XrLabel7 + ' + Me.XrLabel7.Dpi = 254.0! + Me.XrLabel7.Font = New DevExpress.Drawing.DXFont("Segoe UI", 8.0!, DevExpress.Drawing.DXFontStyle.Bold) + Me.XrLabel7.LocationFloat = New DevExpress.Utils.PointFloat(55.95015!, 139.5012!) + Me.XrLabel7.Name = "XrLabel7" + Me.XrLabel7.Padding = New DevExpress.XtraPrinting.PaddingInfo(5, 5, 0, 0, 254.0!) + Me.XrLabel7.SizeF = New System.Drawing.SizeF(353.2359!, 58.41998!) + Me.XrLabel7.StylePriority.UseFont = False + Me.XrLabel7.Text = "Saldo Caja Al Cierre:" + ' + 'XrShape1 + ' + Me.XrShape1.Dpi = 254.0! + Me.XrShape1.FillColor = System.Drawing.Color.WhiteSmoke + Me.XrShape1.LocationFloat = New DevExpress.Utils.PointFloat(13.76757!, 25.00001!) + Me.XrShape1.Name = "XrShape1" + ShapeRectangle2.Fillet = 20 + Me.XrShape1.Shape = ShapeRectangle2 + Me.XrShape1.SizeF = New System.Drawing.SizeF(1986.233!, 213.7961!) + ' + 'ObjectDataSource1 + ' + Me.ObjectDataSource1.DataSource = GetType(bdGrupoSanchoToro.db.movimientoscaja) + Me.ObjectDataSource1.Name = "ObjectDataSource1" + ' + 'Fecha + ' + Me.Fecha.Description = "Parameter1" + Me.Fecha.Name = "Fecha" + Me.Fecha.Type = GetType(Integer) + Me.Fecha.ValueInfo = "0" + ' + 'xrCierreCaja + ' + Me.Bands.AddRange(New DevExpress.XtraReports.UI.Band() {Me.TopMargin, Me.BottomMargin, Me.Detail, Me.DetailReport}) + Me.ComponentStorage.AddRange(New System.ComponentModel.IComponent() {Me.ObjectDataSource1}) + Me.DataSource = Me.ObjectDataSource1 + Me.Dpi = 254.0! + Me.Font = New DevExpress.Drawing.DXFont("Arial", 9.75!) + Me.Margins = New DevExpress.Drawing.DXMargins(50, 50, 139, 50) + Me.PageHeight = 2970 + Me.PageWidth = 2100 + Me.PaperKind = System.Drawing.Printing.PaperKind.A4 + Me.Parameters.AddRange(New DevExpress.XtraReports.Parameters.Parameter() {Me.Fecha}) + Me.ReportUnit = DevExpress.XtraReports.UI.ReportUnit.TenthsOfAMillimeter + Me.SnapGridSize = 25.0! + Me.Version = "19.2" + CType(Me.XrTable1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.XrTable2, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.ObjectDataSource1, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me, System.ComponentModel.ISupportInitialize).EndInit() + + End Sub + + Friend WithEvents TopMargin As DevExpress.XtraReports.UI.TopMarginBand + Friend WithEvents BottomMargin As DevExpress.XtraReports.UI.BottomMarginBand + Friend WithEvents Detail As DevExpress.XtraReports.UI.DetailBand + Friend WithEvents XrLabel3 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel5 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel1 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel2 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel4 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel6 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel14 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel13 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrShape2 As DevExpress.XtraReports.UI.XRShape + Friend WithEvents ObjectDataSource1 As DevExpress.DataAccess.ObjectBinding.ObjectDataSource + Friend WithEvents DetailReport As DevExpress.XtraReports.UI.DetailReportBand + Friend WithEvents Detail1 As DevExpress.XtraReports.UI.DetailBand + Friend WithEvents XrTable1 As DevExpress.XtraReports.UI.XRTable + Friend WithEvents XrTableRow1 As DevExpress.XtraReports.UI.XRTableRow + Friend WithEvents XrTableCell1 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents XrTableCell2 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents XrTableCell6 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents XrTableCell7 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents XrTableCell9 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents GroupHeader1 As DevExpress.XtraReports.UI.GroupHeaderBand + Friend WithEvents XrTable2 As DevExpress.XtraReports.UI.XRTable + Friend WithEvents XrTableRow2 As DevExpress.XtraReports.UI.XRTableRow + Friend WithEvents XrTableCell3 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents XrTableCell4 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents XrTableCell11 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents XrTableCell12 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents XrTableCell14 As DevExpress.XtraReports.UI.XRTableCell + Friend WithEvents GroupFooter1 As DevExpress.XtraReports.UI.GroupFooterBand + Friend WithEvents XrLabel12 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel11 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel10 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel9 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel8 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel7 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrShape1 As DevExpress.XtraReports.UI.XRShape + Friend WithEvents XrLabel16 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel15 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel17 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel18 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents Fecha As DevExpress.XtraReports.Parameters.Parameter + Friend WithEvents XrPanel1 As DevExpress.XtraReports.UI.XRPanel + Friend WithEvents XrLabel22 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel19 As DevExpress.XtraReports.UI.XRLabel + Friend WithEvents XrLabel20 As DevExpress.XtraReports.UI.XRLabel +End Class diff --git a/GestionGrupoSanchoToro/Informes/xrCierreCaja.resx b/GestionGrupoSanchoToro/Informes/xrCierreCaja.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/GestionGrupoSanchoToro/Informes/xrCierreCaja.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/Informes/xrCierreCaja.vb b/GestionGrupoSanchoToro/Informes/xrCierreCaja.vb new file mode 100644 index 0000000..2daddf4 --- /dev/null +++ b/GestionGrupoSanchoToro/Informes/xrCierreCaja.vb @@ -0,0 +1,3 @@ +Public Class xrCierreCaja + +End Class \ No newline at end of file diff --git a/GestionGrupoSanchoToro/ListadosYProcesos.vb b/GestionGrupoSanchoToro/ListadosYProcesos.vb new file mode 100644 index 0000000..08808db --- /dev/null +++ b/GestionGrupoSanchoToro/ListadosYProcesos.vb @@ -0,0 +1,82 @@ +Imports System.Data.OleDb +Imports tsEFCore8.Extensiones +Imports DevExpress.Xpf.Core +Imports bdGrupoSanchoToro.db +Imports bdGrupoSanchoToro.db.productos +Imports DevExpress.Spreadsheet +Imports System.Text.RegularExpressions +Imports VeriFactu.Business +Partial Public Class ListadosYProcesos + + + Public Shared Function CierraCaja(idCaja As Integer, Optional ImprimirCierre As Boolean = False) As String + Dim bd = tscGrupoSanchoToro.NuevoContexto + Dim Caja = bd.cajas.First(Function(x) x.idCaja = idCaja) + Dim mac = Caja.movimientoscaja.Where(Function(x) x.idMovimientoCierre.HasValue = False) + 'Dim SaldoACerrar = mac.Sum(Function(x) x.Importe) + Dim mc = New movimientoscaja + With mc + .Tipo = TipoMovimientoEnum.CIERRE_CAJA + .Importe = 0 + .Observaciones = "Importe Movimientos Cerrados: " & Caja.SaldoPendienteCierre.ToString("0.##") & " €. Saldo en Caja: " & Caja.SaldoActual.ToString("0.##'") & "€." + .Fecha = Now + .FechaCreacion = Now + .idCaja = Caja.idCaja + .idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario + .DocumentoPago = "" + .SaldoAntesCierre = Caja.SaldoAlCierre + End With + bd.movimientoscaja.Add(mc) + Caja.SaldoAlCierre = Caja.SaldoActual + Caja.FechaCierre = Now + bd.GuardarCambios() + For Each m In mac + m.idMovimientoCierre = mc.idMovimiento + Next + bd.GuardarCambios() + If ImprimirCierre Then + Dim lm As New List(Of movimientoscaja) + lm.Add(mc) + Dim xr As New xrCierreCaja + Informes.ImprimeInforme(xr, False, 1, bd.AhoraMySql, lm) + End If + Return mc.Observaciones + End Function + + Friend Shared Sub Anadelogtxt(ByVal Mensaje As String, ByVal FicheroLog As String) + + Dim sw As IO.StreamWriter = Nothing + Try + Mensaje = Mensaje.Replace(vbCrLf, "---") + If IO.File.Exists(FicheroLog) Then + sw = IO.File.AppendText(FicheroLog) + Else + sw = IO.File.CreateText(FicheroLog) + End If + Mensaje = Now.ToString & "|" & "Ws: " & System.Diagnostics.Process.GetCurrentProcess.WorkingSet64.ToString.PadLeft(20) & + " PMS: " & System.Diagnostics.Process.GetCurrentProcess.PrivateMemorySize64.ToString.PadLeft(20) & "|" & Mensaje + + sw.WriteLine(Mensaje) + + Catch ex As Exception + + Finally + Try + sw.Close() + Catch + End Try + End Try + + End Sub + + 'Public Shared Sub PruebaVeriFactu() + ' Dim conf As New VeriFactu.Config.Settings() + ' Debug.WriteLine(conf.CertificatePath) + + ' Dim invoice = New Invoice("GITHUB-EJ-002", New DateTime(2024, 11, 4), "B72877814") + + + 'End Sub + + +End Class diff --git a/GestionGrupoSanchoToro/My Project/Application.myapp b/GestionGrupoSanchoToro/My Project/Application.myapp new file mode 100644 index 0000000..9aa7b50 --- /dev/null +++ b/GestionGrupoSanchoToro/My Project/Application.myapp @@ -0,0 +1,10 @@ + + + true + dxwInicio + false + 0 + true + 0 + true + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/My Project/Resources.Designer.vb b/GestionGrupoSanchoToro/My Project/Resources.Designer.vb new file mode 100644 index 0000000..4ff8f55 --- /dev/null +++ b/GestionGrupoSanchoToro/My Project/Resources.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' Este código fue generado por una herramienta. +' Versión de runtime:4.0.30319.42000 +' +' Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si +' se vuelve a generar el código. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + 'StronglyTypedResourceBuilder generó automáticamente esta clase + 'a través de una herramienta como ResGen o Visual Studio. + 'Para agregar o quitar un miembro, edite el archivo .ResX y, a continuación, vuelva a ejecutar ResGen + 'con la opción /str o recompile su proyecto de VS. + ''' + ''' Clase de recurso fuertemente tipado, para buscar cadenas traducidas, etc. + ''' + _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + ''' + ''' Devuelve la instancia de ResourceManager almacenada en caché utilizada por esta clase. + ''' + _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("GrupoSanchoToro.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + ''' + ''' Reemplaza la propiedad CurrentUICulture del subproceso actual para todas las + ''' búsquedas de recursos mediante esta clase de recurso fuertemente tipado. + ''' + _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + + ''' + ''' Busca un recurso adaptado de tipo System.Byte[]. + ''' + Friend ReadOnly Property STSur() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("STSur", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + End Module +End Namespace diff --git a/GestionGrupoSanchoToro/My Project/Resources.resx b/GestionGrupoSanchoToro/My Project/Resources.resx new file mode 100644 index 0000000..ef284dc --- /dev/null +++ b/GestionGrupoSanchoToro/My Project/Resources.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\STSur.jpg;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/My Project/Settings.Designer.vb b/GestionGrupoSanchoToro/My Project/Settings.Designer.vb new file mode 100644 index 0000000..e7aba1c --- /dev/null +++ b/GestionGrupoSanchoToro/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' +' Este código fue generado por una herramienta. +' Versión de runtime:4.0.30319.42000 +' +' Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si +' se vuelve a generar el código. +' +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) + +#Region "Funcionalidad para autoguardar My.Settings" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + _ + Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + _ + Friend Module MySettingsProperty + + _ + Friend ReadOnly Property Settings() As Global.GrupoSanchoToro.My.MySettings + Get + Return Global.GrupoSanchoToro.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/GestionGrupoSanchoToro/My Project/Settings.settings b/GestionGrupoSanchoToro/My Project/Settings.settings new file mode 100644 index 0000000..392df0a --- /dev/null +++ b/GestionGrupoSanchoToro/My Project/Settings.settings @@ -0,0 +1,6 @@ + + + + + + diff --git a/GestionGrupoSanchoToro/Properties/Licenses.licx b/GestionGrupoSanchoToro/Properties/Licenses.licx new file mode 100644 index 0000000..dca2f78 --- /dev/null +++ b/GestionGrupoSanchoToro/Properties/Licenses.licx @@ -0,0 +1 @@ +DevExpress.Xpf.RichEdit.RichEditControl, DevExpress.Xpf.RichEdit.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/GestionGrupoSanchoToro/Publicacion/Publicar.cmd b/GestionGrupoSanchoToro/Publicacion/Publicar.cmd new file mode 100644 index 0000000..8ee0a38 --- /dev/null +++ b/GestionGrupoSanchoToro/Publicacion/Publicar.cmd @@ -0,0 +1,5 @@ +"C:\Program Files\7-Zip\7z.exe" a -tzip -r "C:\m3soft\vs.net\GrupoSanchoToro\GrupoSanchoToro\Publicacion\GrupoSanchoToro.zip" "C:\m3soft\vs.net\GrupoSanchoToro\GrupoSanchoToro\bin\Debug\net8.0-windows7.0\*.*" +"C:\Program Files (x86)\winscp\WinSCP.com" /ini=null /log=c:\tmp\ftp.log /script=C:\m3soft\vs.net\GrupoSanchoToro\GrupoSanchoToro\Publicacion\winscpftp.txt +del "C:\m3soft\vs.net\GrupoSanchoToro\GrupoSanchoToro\Publicacion\GrupoSanchoToro.zip" +del "C:\m3soft\vs.net\GrupoSanchoToro\GrupoSanchoToro\Publicacion\null" +pause diff --git a/GestionGrupoSanchoToro/Publicacion/changelog.htm b/GestionGrupoSanchoToro/Publicacion/changelog.htm new file mode 100644 index 0000000..d9d2fae --- /dev/null +++ b/GestionGrupoSanchoToro/Publicacion/changelog.htm @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Cambios en las versiones:

+

+·         +12/12/2025 Modificaciones en la +versión 1.0.0.31

+

+o    +Corrección +problema multiempresa

+

+·         +18/111/2025 Modificaciones en la +versión 1.0.0.30

+

+o    +Corrección +problema multiempresa

+

+·         +08/10/2025 Modificaciones en la versión 1.0.0.29

+

+o    +Corrección +problema multiempresa

+

+·         +07/10/2025 Modificaciones en la versión 1.0.0.28

+

+o    +Corrección +problema duplicados

+

+·         +06/10/2025 Modificaciones en la versión 1.0.0.27

+

+o    +Corrección +aplicación de Clientes/Proveedores

+

+·         +03/10/2025 Modificaciones en la versión 1.0.0.25

+

+o    +Se incluye la empresa Hermanos Murga

+

+·         +15/07/2025 Modificaciones en la versión 1.0.0.24

+

+o    +Se corrige problema al en facturas emitidas.

+

+·         +30/05/2025 Modificaciones en la versión 1.0.0.23

+

+o    +Se añade campo de Observaciones en Impresión a la +pantalla de facturas emitidas.

+

+o    +Se corrige problema al imprimir.

+

+·         +04/04/2025 Modificaciones en la versión 1.0.0.22

+

+o    +Se corrige error de campo obligatorio producto en facturas +de venta.

+

+·         +13/03/2025 Modificaciones en la versión 1.0.0.21

+

+o    +Se permite eliminar facturas recibidas.

+

+·         +12/03/2025 Modificaciones en la versión 1.0.0.20

+

+o    +Corrección aplicación de facturas Emitidas en redondeos

+

+·         +12/02/2025 Modificaciones en la versión 1.0.0.18

+

+o    +Corrección aplicación de IRPF en facturas Emitidas

+

+o    +Se adjunta en los correos para la asesoría la factura +escaneada (tanto en recibidas como emitidas)

+

+·         +07/02/2025 Modificaciones en la versión 1.0.0.17

+

+o    +Se Añade campo en series de factura para indicar que el +IRPF se calcula después de IVA

+

+o    +Se permite eliminar facturas de clientes si son del tipo +“Emitidas por el Cliente”

+

+·         +24/01/2025 Modificaciones en la versión 1.0.0.16

+

+o    +Correcciones varias

+

+·         +07/01/2025 Modificaciones en la versión 1.0.0.15

+

+o    +Correcciones varias

+

+·         +14/11/2024 Modificaciones en la versión 1.0.0.14

+

+o    +Correcciones varias

+

+·         +12/11/2024 Modificaciones en la versión 1.0.0.13

+

+o    +Correcciones varias

+

+·         +11/11/2024 Modificaciones en la versión 1.0.0.12

+

+o    +Correcciones varias

+

+·         +04/12/2024 Modificaciones en la versión 1.0.0.11

+

+o    +Correcciones varias

+

+·         +02/12/2024 Modificaciones en la versión 1.0.0.10

+

+o    +Correcciones varias

+

+·         +29/11/2024 Modificaciones en la versión 1.0.0.9

+

+o    +Correcciones varias

+

+·         +27/11/2024 Modificaciones en la versión 1.0.0.8

+

+o    +Correcciones varias

+

+·         +25/11/2024 Modificaciones en la versión 1.0.0.7

+

+o    +Corrección en campos obligatorios en facturas recibidas

+

+o    +Corrección en aplicación de Conciliaciones Bancarias

+

+·         +21/11/2024 Modificaciones en la versión 1.0.0.6

+

+o    +Correcciones varias

+

+·         +21/11/2024 Modificaciones en la versión 1.0.0.6

+

+o    +Correcciones varias

+

+·         +17/11/2024 Modificaciones en la versión 1.0.0.5

+

+o    +Se añade Tipo de IVA Exento.

+

+·         +16/11/2024 Modificaciones en la versión 1.0.0.4

+

1.      +Correcciones en fechas de facturas emitidas y recibidas.

+

+·         +11/11/2024 Modificaciones en la versión 1.0.0.3

+

1.      +Correcciones en productos.

+ + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/Publicacion/changelog_archivos/colorschememapping.xml b/GestionGrupoSanchoToro/Publicacion/changelog_archivos/colorschememapping.xml new file mode 100644 index 0000000..6a0069c --- /dev/null +++ b/GestionGrupoSanchoToro/Publicacion/changelog_archivos/colorschememapping.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/Publicacion/changelog_archivos/filelist.xml b/GestionGrupoSanchoToro/Publicacion/changelog_archivos/filelist.xml new file mode 100644 index 0000000..1be7d89 --- /dev/null +++ b/GestionGrupoSanchoToro/Publicacion/changelog_archivos/filelist.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/Publicacion/changelog_archivos/themedata.thmx b/GestionGrupoSanchoToro/Publicacion/changelog_archivos/themedata.thmx new file mode 100644 index 0000000000000000000000000000000000000000..345edcf52d0185bfaacd1890a7e0451f392a9336 GIT binary patch literal 3348 zcmaKu2T+sC7RN&o=^#kxQVhL@jz|}g4naVqi4sIV&h=4ZOwQUM9@ixDj1@OmduL%i#~z@GRU zk?6c$%a)smtd(oFPO^ith*|C(s#u2BO6q94{(Ic4Vk=Eb+0odkF-wp7nfR)Be>vM8 zL-gszJA0~YjKe)aRzU~;^GJYW*yKi05>ez#Uh z>PTF8L+D_D$xtf`pN~XgqNYSa0AOA)$c2}EihX0ssDq3WMIQDBhc8zCULJEe|7w*R zm|jBGx}d4r?K1D9+!Pej8U6;&M{ec&Afmu;s>ZI~c(CAVFPOdXMy+Hr16|alQ9Yzw z!*Q^aen?kqO6D#o2%h9+H_nxo%{nKiKfDKojLY9CPe62@R<}y_WE-J_DnysHNIm6W z>ANo7%|l2mnl>aNoJvM64b;>fj-3!n`R_vApQHdo2?ahUOb){Ic5%AzB=O5?VDD*v z&*|Zh4x#Qbpls!)SDO#Wdz?5a?|>52x?9y{Nw4k*i!cR%8@cZQ9eAzph=K+9jZU6xIyX3(?(#Bf$#;|uX zHJ#s4l?h1Q8!byf@8lcxf0C~K(=k$c>_*|%&dtZsB}1`ocgbf>#h*3vFC~UIZ1RMO zVq3)DFC~B{KpCpM6(v?PW{}QoRt`z~>yqB7fw<9%S--tm)6toJTmBJLvo(Fn{o1rhtJSIrBSA}(}(8_I96n?{QMoU|&onl{2g-IK++5st#FEIm0 z+Jm+#nGEMqe2Ww>wz~>GhZN`yWDK|!n7f-XUV~utOo-j?aW9Hh;(gzPU|7sl372Ww z2@m`P|t{DKW^g;2R~VxcEVd$AtRXI}IU5No)5J{u=&o7CCCFt_k^@PCn%|^bfwK$Vnol z!d+VpWktJ;Iykva-O8o>k)0jih7b-tYvD+6 zt&2*YV6tF~P)hbue3k?D)(mslEgxk*SRbjCE{b$FNV9PrD1jQcWvL?H%01rfKr#H3wKGu&b-=Kf0hErY~`nSFlPHK*luQEoCsDg5j~#r?1N`l{kWX;wK9sX;MY8BQr7FhYohp6-jX`E zKWj`qU7??bXa+bf4U9B~=zP?a8jKE_HUe^6eUDS292uL7UzI%D%&U;jaG2n04%}Dy z$OkB!-o!8G4!>rkU$_l7k{n4oiG4IRJiRaT{WQP`=Aw%6k%~Nun=)*Vq+P6i*-2-i zVklrLCowRNAW6XHYI7Zf&Km`!gbfu>8~gKqMJEJfq+=+kg%tx(&8QPfdeEdm z@r4`RzL}jEdR8Ncw;{uM$ck6jcr7?7plzfaZ0q)L&v5w0(krp5*1o4UoF2}}X55zX z<1KeNXiFR;JZrj1>NOgi+1EqI#EAI(I2qa<<)Vv1ulXqm=;KMZY9OMRf5|r<{&uH0i3Cotx|=UsZ+Npks>*wx zl2xUfsSjFn(2Lf6QHGuw_VrrN8k7xs&i$dq$A@3j3baZZn&W?sJu$b7LZM39FYxJW6M=6pE z2uYEC;cO{gR+?W@q!eQ*?a|#FF9tPVqA|B()HIY9@lQcMHuZd*vEg$RmaiL(raD$E z*+gT}d`?;Td~(W7e98 z%|S;QYNeS@5e#ZzE*HZ=R^|mCDxr%^&NVarsx+gk52>Ke2eiP9oAjr0q#1 zS+Vj6*F<=&{~JbV1`~5?2`B6XR1rAyp8ri?e}Ty_Nb+wYGoWmdycmWLc}xz44kPK4 z_-CR9%0@`SmSkz)T~ZM2dP=GO9>nKmGxw=boBi?Y`hu- zXc#@IJtUF=z9`eK%4I->afZ1bAtKpJ#&{cO7uy)tdPhL znE#YcL@WmQ--u4Q_RIJUup8_BQ{XJK{*0C+`1uRLo((+9fIkCS32^)i3;xZ8zu13P w=`4`_R2uu8(qDLXR^x0F{M0C-{AV`*rzMQ_&XN5HJV*F!2-WBPfOx>a0GiU~rT_o{ literal 0 HcmV?d00001 diff --git a/GestionGrupoSanchoToro/Publicacion/m3Factu.xml b/GestionGrupoSanchoToro/Publicacion/m3Factu.xml new file mode 100644 index 0000000..cae1422 --- /dev/null +++ b/GestionGrupoSanchoToro/Publicacion/m3Factu.xml @@ -0,0 +1,6 @@ + +1.0.0.31 +https://www.english-skills.net/GrupoSanchoToro/GrupoSanchoToro.zip +https://www.english-skills.net/GrupoSanchoToro/changelog.htm +true + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/Publicacion/winscpftp.txt b/GestionGrupoSanchoToro/Publicacion/winscpftp.txt new file mode 100644 index 0000000..fbddfc1 --- /dev/null +++ b/GestionGrupoSanchoToro/Publicacion/winscpftp.txt @@ -0,0 +1,5 @@ +open ftp://manuel:tsl4net.Ts87@192.168.200.1:993/ -explicittls -certificate=* +put C:\m3soft\vs.net\GrupoSanchoToro\GrupoSanchoToro\Publicacion\GrupoSanchoToro.zip /inetpub/wwwroot/GrupoSanchoToro/ +put C:\m3soft\vs.net\GrupoSanchoToro\GrupoSanchoToro\Publicacion\GrupoSanchoToro.xml /inetpub/wwwroot/GrupoSanchoToro/ +put C:\m3soft\vs.net\GrupoSanchoToro\GrupoSanchoToro\Publicacion\changelog.htm /inetpub/wwwroot/GrupoSanchoToro/ +exit \ No newline at end of file diff --git a/GestionGrupoSanchoToro/Resources/LogoTcsColor.png b/GestionGrupoSanchoToro/Resources/LogoTcsColor.png new file mode 100644 index 0000000000000000000000000000000000000000..a75510407d1ae597d2e04ac00a5fc78bb0edfb79 GIT binary patch literal 56602 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 literal 0 HcmV?d00001 diff --git a/GestionGrupoSanchoToro/Resources/STSur.jpg b/GestionGrupoSanchoToro/Resources/STSur.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6a174cfacda24f94121f486a85b57e0fbee917da GIT binary patch literal 59825 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 M_%yW4K4y~Inpo;g5~~r7O{Yx(6KOI&c*y;A zzVGg`yF4=OJLd|bCNJwqx9R z9&O<~G*!jntLs;6m$L#80bIRQ4Q=*RTq<$F-5Mu!Y8-J-GtS27UT!t@puSpe9^*K0 zFZnp)ZjCc8mOKSrt{YlEKEdnR0l4+$AEC{jg4V;XfJp!v1U#vyRt7W*5bI?SjRN}X zsc+wo)Ti-eG>+#q3AlP_GPF5vxP9}gJ%FalXk09DVW+;+GV~f8q)Ci2+)_#3F{e95wn~SeiPP|C(X$Ogc z1{rGe=VQkkt8nFm>9~5t4PRG3g&%ce_&tNI9|nxUrnU6VMq}=%oS-Z81;l;{0A;#P z>46UQIHsDM?&};;k+}dBS&LA(YbhS+N260S9@i@;<4=dDu(Uysg^^h^g>_vza;?O4?3V%y5pYO5jZR0@5fzGnWezzdU#4FEF}Ps{-HN-y+2 z?y>@?D{#kmnz3m8a2ixOzBp4l6ZdrEpe=X~@1?y6L(#J+&sdDSxBRhh=Q6haX)mE{ z@5{*Ez8pI@2cck>KR>%x{xn1jh!GeV0>HR$2L4v&2N|(A41i7v zK#emtCayt5WIQ_56Mzc>a<&B^Yuj@C;m{1U9&rPj1(qcn#of|23%Gc|16A1z&53MX z)K&=;f)2GDb%Pn85Ok;=@olXWzB%TC$0WNm0t$C5L+IKB1c$GKsbn_iNUzZWef2W* z*~pB5Q245{6+F)N>q#jV=~@5`VL+en&J~TnhU8_G3d+%}g-G8T08Rc}JU%^|YXgCx zNjdu)sa6O;lYsBFa$K))<@fZC6hZUxdy;LVRG{cXhvWdMpi?7fgx&OIMk!&A=lVje zoQHE|Gl6pg9vH^pql`sJ-LM*aHm|^!m829`WV{)GqMa|JZ1)o6Y5Mj>6IG z1xVcxf?b;eS-u2r7yzAS8Or&qX>kTnFW^MJ0tfakLGykuphbWxYXO$6N|@xVJex$=->M7Duk^~zz=#kGqL#9RD68!m*~(>K<3uv2ntKWCkJPs zOYexZ)D;McScmVmjyRU%i-iGO@af^{c&KxLzQ7B;-NS^S&n5&Ej$?TXP_kzU&cElu z0CsN*#Huw(xLGv`|EP6_Cf^6`>ha7@!45wJu33*Z)g-=ud&{d>5xO3qe>9a4_NB6AThc<}9Cu_9W^JUKiT0DrBT!T?BuAEqy6 z-|~#-v2;}mv+z(a8<_zDz~$4N1IKa|IF_f7=xY!V7aN7OQL)U1Zl4ccTKNWVTvh<< zal;HCDIo%(5eYnxsdzT~QZ7Bx%Z4&QrPu<1%d1hw6cYWvf9E&2^u7o04TU?G!asN; z_G}JBd|VXkzOCAo_X3ike^3g(sC=65_wQK(zo29;LW%K_SZP+z586?K7Y$ilHGd2o1^6vBO+op1b zcve8WW<2t?`ynf99CU>? zXBzI@`ingP`crBB8xUF(VOOXq- zxo)_2Sv&O4$a3Af(TZkO610U1Xq8^jDm~5Z|7tVs#~1nH+|fj|-ITuEauI;x|BeCP hEc(d0f4+@${RhL-`pcXG0z?1+002ovPDHLkV1j>w4?O?? literal 0 HcmV?d00001 diff --git a/GestionGrupoSanchoToro/Resources/stsur_simple_icon_32x32.png b/GestionGrupoSanchoToro/Resources/stsur_simple_icon_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..66158531b905c149fd89c3a745c15badbafeb386 GIT binary patch literal 2189 zcmV;82y*v{P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2qH;DK~z{r#a9VX zRo5B5NEKfQYKw}QXmMf%QM9QD22Ij5nv}!^8-o~G1%jfeNI{2`RD}kj5g{P(9xg0m z$|fN1!Bc_9W8W8-YN=pMjMGI~5~@|;-LLbXd++11b*3|&>7DuJ+(fB%2Z z<#?W7$Mbx|{|g+?^D&t4;xY8>F@~QLdj4w+=^>0U*+m2*qz4|r-8&7?>Y1obn+;{+LR@dkX7i0A(B0X9qJ;UlnL8I~;ecii zXyAY*4rt|o#z{c$C%PXC8n2ndjT{R`;_I%q(F8O(9;i(-XGXdP4#V|E;2SxH`^9rG zRA(#@YvRC*?-?45psP26u0ebr1NN?diU=b%K6yfW$;W^IKLn-R4&SNGn89$JV5n;` zLVl7x!b4rqmb(zw^A_M6wK<+tPt&i6ujfPp5-9_6ggSu)we(Djcu-;nRf;_Toj`!p zNDYa}m@kQyN;EQ~Z#oMHpr@DCz^XOEd$`!yy&JBNo?XW?R;BRVfzpj&BysPHX# zRA$Boe^O0vBT6z^P*!5EtQu_(&(nqt+ui z`dxf+WHXK&-iEly_aTpd2e%7f)@w-*<`p4qlsy80??(t+J+lZ8)iZH$pBr}V@ce%$HG2D+4*HcC}?8R z#F!BDG7s2{CGZL!s%Ic5&;#DS0qD`Z2;Amy^2kP<_`Nflvlro3{(Rtun3fVK_Jo@p z>N2g66~BgQh$fcAX$VOJ;|Nd)ddg+^N7)Rffx%j1HgJ68ui?3KFWkHWg_X4n?qn&- zgeJt8CMAN|36AVLz1zk5K=!1I$qC4<*bBBQN-t3`S@DkeJbV)_C$Ge_`l&*evyt^ind%! zM(95iXdKC1B5*0ufn`Bux;1c%L)Mp$*t{(SLHj)6wQ~@cY;wy%nYy&`w2(Vj==sp{Pjlqx;+h2jnL?p!EDw z#{Sb#7kK#u;A!nN=85%NK0#B~B0Q=!!|_iyVY|mZG-tnp{@NE18TJ9(y#g^%B|~0< z1K!#cj`kc&Jg+fAamo@5O9TcD36O#%0?Y%ekr=fe)frZd0J(Cz$9~*X&B5QwXQC*1 zC3?$ESr)_{bHX>bO}X8+ENVGk_Zh#FiwO-pjjY59w2B^ZP>HFzb|}zcQJ2}9yWY<2o+Q#?u>+> zTV=uC2L^b<-D?liNa=Z7W?Od77DKfhN+<-92Lu9(M+h_-fhPhT914Nl_^dh*#Lk4j}g4z9omc~ z`VA=~=5>Sy?ZEw#*-V%{+7}UX^ga0d`>{=~EY+4Rine1C;jmr<&wHSxy+HH;-@@Ua zHPet4zZw@}Uq@!_TBOIk$1hsgCcvf9c(ZbvW2!| ztqdww3B?l;_+fT#e{f}nIG}JKWt$3ZzY;nOQdB%S3(o?G072LVNBYQ43M~=(Rz2oS zNT<_^OFL0Rr{Xqg5Fry7q)DWEsh<@r@kC6mq0I!}@Z#CAI`t>0%=aCAET?n2GRYDh z^j|=3CU;TZOIt3rlR;de{$7IN_pDeMp)GqZo9F($8>0!(pUREqOHd^(L`}Lm?q8XO z9<7Y&VlwoKAW^YaydP^v<9w~2iK + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/VentanasEmergentes/dxwAgregarNuevoCodigoPostal.xaml.vb b/GestionGrupoSanchoToro/VentanasEmergentes/dxwAgregarNuevoCodigoPostal.xaml.vb new file mode 100644 index 0000000..8d12693 --- /dev/null +++ b/GestionGrupoSanchoToro/VentanasEmergentes/dxwAgregarNuevoCodigoPostal.xaml.vb @@ -0,0 +1,71 @@ + +Imports System.Data.Entity +Imports DevExpress.Xpf.Core.ServerMode +Imports DevExpress.Mvvm +Imports DevExpress.Xpf.Grid +Imports tsWPFCore +Imports tsEFCore8.Extensiones +Imports DevExpress.Xpf.Core + +Imports bdGrupoSanchoToro.db.Utilidades +Imports bdGrupoSanchoToro + +Public Class dxwAgregarNuevoCodigoPostal + + ' Private _alumno As alumnos + Friend _CodigoPostal As String + Private _bd As tscGrupoSanchoToro + + Private Sub dxwAgregarNuevoCodigoPostal_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded + Me.teCodigoPostal.EditValue = _CodigoPostal + Dim sCodigoProvincia As String = _CodigoPostal.Substring(0, 2) + Me.teProvincia.EditValue = _bd.provincias.First(Function(x) x.CodigoProvincia = sCodigoProvincia).Nombre + Me.cbMunicipio.ItemsSource = _bd.municipios.Where(Function(x) x.CodigoProvincia = sCodigoProvincia).OrderBy(Function(x) x.Nombre).ToList + Me.cbMunicipio.Focus() + End Sub + + Public Sub New(CodigoPostal As String, bd As tscGrupoSanchoToro) + _CodigoPostal = CodigoPostal + _bd = bd + ' Llamada necesaria para el diseñador. + InitializeComponent() + Comun.EscalaVentana(Me, Me.grid.LayoutTransform) + + ' Agregue cualquier inicialización después de la llamada a InitializeComponent(). + + End Sub + + + Private Sub btCancelar_Click(sender As Object, e As RoutedEventArgs) + Me.DialogResult = False + Me.Close() + End Sub + + Private Sub btAceptar_Click(sender As Object, e As RoutedEventArgs) + Try + If cbMunicipio.EditValue Is Nothing Then + DXMessageBox.Show("El municipio es obligatorio") + Else + Dim _CodigoMunicipio As String = "" + If cbMunicipio.EditValue IsNot Nothing Then _CodigoMunicipio = cbMunicipio.EditValue + Dim sDescripcionAdicional As String = "" + If teDescripcionAdicional.EditValue IsNot Nothing Then sDescripcionAdicional = teDescripcionAdicional.EditValue + Dim ncp As New bdGrupoSanchoToro.db.codigospostales + With ncp + .CodigoMunicipio = _CodigoMunicipio + .CodigoPostal = _CodigoPostal + .DescripcionAdicional = sDescripcionAdicional + End With + _bd.codigospostales.Add(ncp) + _bd.GuardarCambios() + Me.DialogResult = True + Me.Close() + End If + Catch ex As Exception + Comun.GeneraRegistroCorreoExcepcion(Nothing, ex, "dxwAgregarNuevoCodigoPostal.btAceptar_Click") + DXMessageBox.Show(ex.Message, "Error") + End Try + End Sub +End Class + + diff --git a/GestionGrupoSanchoToro/VentanasEmergentes/dxwAgregarNuevoMunicipio.xaml b/GestionGrupoSanchoToro/VentanasEmergentes/dxwAgregarNuevoMunicipio.xaml new file mode 100644 index 0000000..67125f9 --- /dev/null +++ b/GestionGrupoSanchoToro/VentanasEmergentes/dxwAgregarNuevoMunicipio.xaml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/VentanasEmergentes/dxwAgregarNuevoMunicipio.xaml.vb b/GestionGrupoSanchoToro/VentanasEmergentes/dxwAgregarNuevoMunicipio.xaml.vb new file mode 100644 index 0000000..4ee7e80 --- /dev/null +++ b/GestionGrupoSanchoToro/VentanasEmergentes/dxwAgregarNuevoMunicipio.xaml.vb @@ -0,0 +1,82 @@ + +Imports System.Data.Entity +Imports DevExpress.Xpf.Core.ServerMode +Imports DevExpress.Mvvm +Imports DevExpress.Xpf.Grid +Imports tsWPFCore +Imports tsEFCore8.Extensiones +Imports DevExpress.Xpf.Core +Imports DevExpress.XtraReports.UI +Imports System.IO +Imports DevExpress.Xpf.Printing +Imports Microsoft.Win32 +Imports System.Data.Objects +Imports System.Data.Objects.DataClasses +Imports DevExpress.Xpf.Editors +Imports bdGrupoSanchoToro.db.tscGrupoSanchoToro +Imports bdGrupoSanchoToro + +Public Class dxwAgregarNuevoMunicipio + ' Private _alumno As alumnos + Friend _CodigoPostal As String + Friend _CodigoMunicipio As String + Private bd As tscGrupoSanchoToro + + Private Sub dxwAgregarNuevoCodigoPostal_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded + Me.teCodigoPostal.Focus() + End Sub + + Public Sub New(CodigoPostal As String) + ' Llamada necesaria para el diseñador. + InitializeComponent() + ' Agregue cualquier inicialización después de la llamada a InitializeComponent(). + bd = tscGrupoSanchoToro.NuevoContexto + _CodigoPostal = CodigoPostal + teCodigoPostal.EditValue = CodigoPostal + End Sub + + + Private Sub btCancelar_Click(sender As Object, e As RoutedEventArgs) + Me.DialogResult = False + Me.Close() + End Sub + + Private Sub btAceptar_Click(sender As Object, e As RoutedEventArgs) + Try + If teMunicipio.EditValue IsNot Nothing AndAlso teCodigoPostal.EditValue IsNot Nothing Then + _CodigoPostal = teCodigoPostal.EditValue + If _CodigoPostal.Length <> 5 Then Throw New Exception("El código postal es erróneo") + Dim codpro = _CodigoPostal.Substring(0, 2) + Dim provincia = bd.provincias.FirstOrDefault(Function(x) x.CodigoProvincia = codpro) + If provincia Is Nothing Then Throw New Exception("El código postal no pertenece a ninguna provincia") + Dim mun As String = teMunicipio.EditValue + If mun.NothingAVacio = "" Then Throw New Exception("El municipio es obligatorio") + _CodigoMunicipio = bdGrupoSanchoToro.db.municipios.ObtieneCodigoMunicipioMasCoincidente(bd, _CodigoPostal, mun) + Me.DialogResult = True + Me.Close() + Else + DXMessageBox.Show("El codigo postal y el municipio son obligatorios", "Atención") + End If + Catch ex As Exception + FuncionesDinamicas.ErrorNoControladoAp("dxwagregarnuevomunicipio_aceptar_click", ex) + DXMessageBox.Show(ex.Message, "Error") + End Try + End Sub + + Private Sub teCodigoPostal_EditValueChanged(sender As Object, e As EditValueChangedEventArgs) Handles teCodigoPostal.EditValueChanged + Dim codpos As String = teCodigoPostal.EditValue + If codpos IsNot Nothing AndAlso codpos.Length = 5 Then + Dim codpro = codpos.Substring(0, 2) + Dim provincia = bd.provincias.FirstOrDefault(Function(x) x.CodigoProvincia = codpro) + If provincia IsNot Nothing Then + cbProvincia.EditValue = provincia.Nombre + Else + cbProvincia.EditValue = "" + End If + Else + cbProvincia.EditValue = "" + End If + End Sub +End Class + + diff --git a/GestionGrupoSanchoToro/VentanasEmergentes/dxwArticulos.xaml b/GestionGrupoSanchoToro/VentanasEmergentes/dxwArticulos.xaml new file mode 100644 index 0000000..3e2b440 --- /dev/null +++ b/GestionGrupoSanchoToro/VentanasEmergentes/dxwArticulos.xaml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/VentanasEmergentes/dxwArticulos.xaml.vb b/GestionGrupoSanchoToro/VentanasEmergentes/dxwArticulos.xaml.vb new file mode 100644 index 0000000..dcd4e89 --- /dev/null +++ b/GestionGrupoSanchoToro/VentanasEmergentes/dxwArticulos.xaml.vb @@ -0,0 +1,60 @@ +Imports System.Data.Entity +Imports bdGrupoSanchoToro.db +Imports DevExpress.Xpf.Core +Imports bdGrupoSanchoToro.db.Utilidades + +Public Class dxwArticulos + Private _idProducto As Integer + Private _LArticulos As List(Of articulos) + Friend idArticulo As Integer + + Private Sub btAceptar_Click(sender As Object, e As RoutedEventArgs) + If gcArticulos.CurrentItem IsNot Nothing Then + Dim art = DirectCast(gcArticulos.CurrentItem, articulos) + idArticulo = art.idarticulo + Me.DialogResult = True + Me.Close() + End If + End Sub + + Private Sub btCancelar_Click(sender As Object, e As RoutedEventArgs) + Me.DialogResult = False + Me.Close() + End Sub + + Private Sub dxwproductos_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded + Try + + Me.gcArticulos.ItemsSource = _LArticulos.Where(Function(x) x.idProducto = _idProducto).OrderBy(Function(x) x.CodigoArticulo).ToList + Me.gcArticulos.View.SearchControl.Focus() + Catch ex As Exception + DXMessageBox.Show(ex.Message, "Error") + Finally + If DXSplashScreen.IsActive Then DXSplashScreen.Close() + End Try + End Sub + + 'Public Sub New(bd As m3academiaEntities, Existentes As List(Of Integer?)) + Public Sub New(lArticulos As List(Of articulos), idProducto As Integer) + + ' Llamada necesaria para el diseñador. + InitializeComponent() + Comun.EscalaVentana(Me, Me.grid.LayoutTransform) + + _LArticulos = lArticulos + _idProducto = idProducto + ' Agregue cualquier inicialización después de la llamada a InitializeComponent(). + + End Sub + + + Private Sub dxw_PreviewKeyDown(sender As Object, e As KeyEventArgs) Handles Me.PreviewKeyDown + If e.Key = Key.Enter Then + btAceptar_Click(Nothing, Nothing) + End If + End Sub + + Private Sub tv_MouseDoubleClick(sender As Object, e As MouseButtonEventArgs) Handles tvArticulos.MouseDoubleClick + btAceptar_Click(Nothing, Nothing) + End Sub +End Class diff --git a/GestionGrupoSanchoToro/VentanasEmergentes/dxwCodigosPostales.xaml b/GestionGrupoSanchoToro/VentanasEmergentes/dxwCodigosPostales.xaml new file mode 100644 index 0000000..290a756 --- /dev/null +++ b/GestionGrupoSanchoToro/VentanasEmergentes/dxwCodigosPostales.xaml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/VentanasEmergentes/dxwCodigosPostales.xaml.vb b/GestionGrupoSanchoToro/VentanasEmergentes/dxwCodigosPostales.xaml.vb new file mode 100644 index 0000000..0d89c8a --- /dev/null +++ b/GestionGrupoSanchoToro/VentanasEmergentes/dxwCodigosPostales.xaml.vb @@ -0,0 +1,69 @@ +Imports bdGrupoSanchoToro.db +Imports DevExpress.Xpf.Core +Imports bdGrupoSanchoToro.db.Utilidades +Imports bdGrupoSanchoToro +Imports System.Linq.Dynamic.Core +Imports Microsoft.EntityFrameworkCore + +Public Class dxwCodigosPostales + Friend CodigoMunicipio As String + Friend CodigoPostal As String + Private _CodigoPostal As String + Friend _bd As tscGrupoSanchoToro + + Private Sub btAceptar_Click(sender As Object, e As RoutedEventArgs) + If gc.CurrentItem IsNot Nothing Then + Dim cp = DirectCast(gc.CurrentItem, codigospostales) + CodigoMunicipio = cp.CodigoMunicipio + CodigoPostal = cp.CodigoPostal + Me.DialogResult = True + Me.Close() + End If + End Sub + + Private Sub btCancelar_Click(sender As Object, e As RoutedEventArgs) + Me.DialogResult = False + Me.Close() + End Sub + + Private Sub dxwCodigosPostales_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded + Try + + If _CodigoPostal <> "" Then + Me.gc.ItemsSource = _bd.codigospostales.Include(Function(x) x.CodigoMunicipioNavigation.CodigoProvinciaNavigation).Where(Function(x) x.CodigoPostal = _CodigoPostal).OrderBy(Function(x) x.CodigoMunicipioNavigation.Nombre).ToList + Else + Me.gc.ItemsSource = _bd.codigospostales.Include(Function(x) x.CodigoMunicipioNavigation.CodigoProvinciaNavigation).OrderBy(Function(x) x.CodigoMunicipioNavigation.Nombre).ToList + End If + Me.gc.View.SearchControl.Focus() + Catch ex As Exception + DXMessageBox.Show(ex.Message, "Error") + Finally + If DXSplashScreen.IsActive Then DXSplashScreen.Close() + End Try + End Sub + + 'Public Sub New(bd As m3academiaEntities, Existentes As List(Of Integer?)) + Public Sub New(bd As tscGrupoSanchoToro, CodigoPostal As String) + + ' Llamada necesaria para el diseñador. + InitializeComponent() + Comun.EscalaVentana(Me, Me.grid.LayoutTransform) + _CodigoPostal = CodigoPostal + _bd = bd + ' _existentes = Existentes + + ' Agregue cualquier inicialización después de la llamada a InitializeComponent(). + + End Sub + + + Private Sub dxw_PreviewKeyDown(sender As Object, e As KeyEventArgs) Handles Me.PreviewKeyDown + If e.Key = Key.Enter Then + btAceptar_Click(Nothing, Nothing) + End If + End Sub + + Private Sub tv_MouseDoubleClick(sender As Object, e As MouseButtonEventArgs) Handles tv.MouseDoubleClick + btAceptar_Click(Nothing, Nothing) + End Sub +End Class diff --git a/GestionGrupoSanchoToro/VentanasEmergentes/dxwEntidades.xaml b/GestionGrupoSanchoToro/VentanasEmergentes/dxwEntidades.xaml new file mode 100644 index 0000000..c718769 --- /dev/null +++ b/GestionGrupoSanchoToro/VentanasEmergentes/dxwEntidades.xaml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/VentanasEmergentes/dxwEntidades.xaml.vb b/GestionGrupoSanchoToro/VentanasEmergentes/dxwEntidades.xaml.vb new file mode 100644 index 0000000..c4f32d2 --- /dev/null +++ b/GestionGrupoSanchoToro/VentanasEmergentes/dxwEntidades.xaml.vb @@ -0,0 +1,70 @@ +Imports System.Data.Entity +Imports bdGrupoSanchoToro.db +Imports DevExpress.Xpf.Core +Imports bdGrupoSanchoToro.db.Utilidades +Imports bdGrupoSanchoToro + +Public Class dxwEntidades + Friend Entidad As entidades + Friend _bd As tscGrupoSanchoToro + Private _EsCliente As Boolean + Private _EsProveedor As Boolean + + + Private Sub btAceptar_Click(sender As Object, e As RoutedEventArgs) + If gc.CurrentItem IsNot Nothing Then + Dim ent = DirectCast(gc.CurrentItem, entidades) + Entidad = ent + Me.DialogResult = True + Me.Close() + End If + End Sub + + Private Sub btCancelar_Click(sender As Object, e As RoutedEventArgs) + Me.DialogResult = False + Me.Close() + End Sub + + Private Sub dxwEntidades_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded + Try + + Dim ients = _bd.entidades.Where(Function(x) x.idEmpresa = EmpresaActual.idEmpresa AndAlso x.FechaBaja Is Nothing).Include(Function(x) x.CodigoMunicipioNavigation.CodigoProvinciaNavigation).AsQueryable + ients = ients.Where(Function(x) (x.EsCliente AndAlso _EsCliente) OrElse (x.EsProveedor AndAlso _EsProveedor)) + Me.gc.ItemsSource = ients.OrderBy(Function(x) x.RazonSocial).ToList + Me.gc.View.SearchControl.Focus() + Catch ex As Exception + DXMessageBox.Show(ex.Message, "Error") + Finally + If DXSplashScreen.IsActive Then DXSplashScreen.Close() + End Try + End Sub + + 'Public Sub New(bd As m3academiaEntities, Existentes As List(Of Integer?)) + Public Sub New(bd As tscGrupoSanchoToro, EsCliente As Boolean, EsProveedor As Boolean) + + ' Llamada necesaria para el diseñador. + InitializeComponent() + + Comun.EscalaVentana(Me, Me.grid.LayoutTransform) + + + _EsCliente = EsCliente + _EsProveedor = EsProveedor + _bd = bd + ' _existentes = Existentes + + ' Agregue cualquier inicialización después de la llamada a InitializeComponent(). + + End Sub + + + Private Sub dxw_PreviewKeyDown(sender As Object, e As KeyEventArgs) Handles Me.PreviewKeyDown + If e.Key = Key.Enter Then + btAceptar_Click(Nothing, Nothing) + End If + End Sub + + Private Sub tv_MouseDoubleClick(sender As Object, e As MouseButtonEventArgs) Handles tv.MouseDoubleClick + btAceptar_Click(Nothing, Nothing) + End Sub +End Class diff --git a/GestionGrupoSanchoToro/VentanasEmergentes/dxwEnvioCorreo.xaml b/GestionGrupoSanchoToro/VentanasEmergentes/dxwEnvioCorreo.xaml new file mode 100644 index 0000000..ade47a8 --- /dev/null +++ b/GestionGrupoSanchoToro/VentanasEmergentes/dxwEnvioCorreo.xaml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/VentanasEmergentes/dxwEnvioCorreo.xaml.vb b/GestionGrupoSanchoToro/VentanasEmergentes/dxwEnvioCorreo.xaml.vb new file mode 100644 index 0000000..28d3b04 --- /dev/null +++ b/GestionGrupoSanchoToro/VentanasEmergentes/dxwEnvioCorreo.xaml.vb @@ -0,0 +1,82 @@ + +Imports System.Data.Entity +Imports DevExpress.Xpf.Core.ServerMode +Imports DevExpress.Mvvm +Imports DevExpress.Xpf.Grid +Imports tsWPFCore +Imports tsEFCore8.Extensiones +Imports DevExpress.Xpf.Core +Imports DevExpress.XtraReports.UI +Imports System.IO +Imports DevExpress.Xpf.Printing +Imports Microsoft.Win32 +Imports System.Data.Objects +Imports System.Data.Objects.DataClasses +Imports bdGrupoSanchoToro.db.Utilidades +Public Class dxwEnvioCorreo + + + Friend _Destinatarios As String + Friend _CC As String + Friend _BCC As String + Friend _Asunto As String + Friend _Cuerpo As String + Friend _Adjunto As String + + + Private Sub dxw_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded + + teDestinatario.Text = _Destinatarios + teCuerpo.Text = _Cuerpo + teAdjunto.Text = _Adjunto + teCopia.Text = _CC + teCopiaOculta.Text = _BCC + teAsunto.Text = _Asunto + teDestinatario.Focus() + End Sub + + Public Sub New(Destinatarios As String, CC As String, BCC As String, Asunto As String, Cuerpo As String, Adjunto As String) + _Destinatarios = Destinatarios + _CC = CC + _BCC = BCC + _Asunto = Asunto + _Cuerpo = Cuerpo + _Adjunto = Adjunto + + ' Llamada necesaria para el diseñador. + InitializeComponent() + Comun.EscalaVentana(Me, Me.grid.LayoutTransform) + + ' Agregue cualquier inicialización después de la llamada a InitializeComponent(). + + End Sub + + + Private Sub btCancelar_Click(sender As Object, e As RoutedEventArgs) + Me.DialogResult = False + Me.Close() + End Sub + + Private Sub btAceptar_Click(sender As Object, e As RoutedEventArgs) + Try + If teDestinatario.Text.Trim.ToLower.EsEmailValido AndAlso teAsunto.Text.Trim <> "" Then + _Destinatarios = teDestinatario.Text.Trim.ToLower + _Cuerpo = teCuerpo.Text + _Adjunto = teAdjunto.Text + _CC = teCopia.Text + _BCC = teCopiaOculta.Text + _Asunto = teAsunto.Text + + Me.DialogResult = True + Me.Close() + Else + DXMessageBox.Show("El asunto y el destinatario son campos obligatorios") + End If + Catch ex As Exception + Comun.GeneraRegistroCorreoExcepcion(Nothing, ex, "dxwAgregarNuevoCodigoPostal.btAceptar_Click") + DXMessageBox.Show(ex.Message, "Error") + End Try + End Sub +End Class + + diff --git a/GestionGrupoSanchoToro/VentanasEmergentes/dxwIVA.xaml b/GestionGrupoSanchoToro/VentanasEmergentes/dxwIVA.xaml new file mode 100644 index 0000000..147f922 --- /dev/null +++ b/GestionGrupoSanchoToro/VentanasEmergentes/dxwIVA.xaml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/VentanasEmergentes/dxwIdentificacion.xaml b/GestionGrupoSanchoToro/VentanasEmergentes/dxwIdentificacion.xaml new file mode 100644 index 0000000..652f77a --- /dev/null +++ b/GestionGrupoSanchoToro/VentanasEmergentes/dxwIdentificacion.xaml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/VentanasEmergentes/dxwPoblaciones.xaml.vb b/GestionGrupoSanchoToro/VentanasEmergentes/dxwPoblaciones.xaml.vb new file mode 100644 index 0000000..2f7bb16 --- /dev/null +++ b/GestionGrupoSanchoToro/VentanasEmergentes/dxwPoblaciones.xaml.vb @@ -0,0 +1,63 @@ +Imports bdGrupoSanchoToro.db +Imports DevExpress.Xpf.Core +Imports bdGrupoSanchoToro.db.Utilidades +Imports bdGrupoSanchoToro +Imports Microsoft.EntityFrameworkCore + +Public Class dxwPoblaciones + Friend CodigoMunicipio As String + ' Friend CodigoPostal As String + ' Private _CodigoPostal As String + Friend _bd As tscGrupoSanchoToro + + Private Sub btAceptar_Click(sender As Object, e As RoutedEventArgs) + If gc.CurrentItem IsNot Nothing Then + CodigoMunicipio = DirectCast(gc.CurrentItem, municipios).CodigoMunicipio + Me.DialogResult = True + Me.Close() + End If + End Sub + + Private Sub btCancelar_Click(sender As Object, e As RoutedEventArgs) + Me.DialogResult = False + Me.Close() + End Sub + + Private Sub dxwPoblaciones_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded + Try + + Me.gc.ItemsSource = _bd.municipios.Include(Function(x) x.CodigoProvinciaNavigation).OrderBy(Function(x) x.Nombre).ToList + Me.gc.View.SearchControl.Focus() + Catch ex As Exception + If DXSplashScreen.IsActive Then DXSplashScreen.Close() + DXMessageBox.Show(ex.Message, "Error") + Finally + If DXSplashScreen.IsActive Then DXSplashScreen.Close() + End Try + End Sub + + 'Public Sub New(bd As m3academiaEntities, Existentes As List(Of Integer?)) + Public Sub New(bd As tscGrupoSanchoToro) + + ' Llamada necesaria para el diseñador. + InitializeComponent() + Comun.EscalaVentana(Me, Me.grid.LayoutTransform) + + _bd = bd + ' _existentes = Existentes + + ' Agregue cualquier inicialización después de la llamada a InitializeComponent(). + + End Sub + + + Private Sub dxw_PreviewKeyDown(sender As Object, e As KeyEventArgs) Handles Me.PreviewKeyDown + If e.Key = Key.Enter Then + btAceptar_Click(Nothing, Nothing) + End If + End Sub + + Private Sub tv_MouseDoubleClick(sender As Object, e As MouseButtonEventArgs) Handles tv.MouseDoubleClick + btAceptar_Click(Nothing, Nothing) + End Sub +End Class diff --git a/GestionGrupoSanchoToro/VentanasEmergentes/dxwProductos.xaml b/GestionGrupoSanchoToro/VentanasEmergentes/dxwProductos.xaml new file mode 100644 index 0000000..1a05350 --- /dev/null +++ b/GestionGrupoSanchoToro/VentanasEmergentes/dxwProductos.xaml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/VentanasEmergentes/dxwProductos.xaml.vb b/GestionGrupoSanchoToro/VentanasEmergentes/dxwProductos.xaml.vb new file mode 100644 index 0000000..a86bd13 --- /dev/null +++ b/GestionGrupoSanchoToro/VentanasEmergentes/dxwProductos.xaml.vb @@ -0,0 +1,64 @@ +Imports System.Data.Entity +Imports bdGrupoSanchoToro.db +Imports DevExpress.Xpf.Core +Imports bdGrupoSanchoToro.db.Utilidades +Imports bdGrupoSanchoToro + +Public Class dxwProductos + Friend idProducto As Integer + Friend _bd As tscGrupoSanchoToro + Private _Lproductos As List(Of productos) + + Private Sub btAceptar_Click(sender As Object, e As RoutedEventArgs) + If gc.CurrentItem IsNot Nothing Then + Dim pro = DirectCast(gc.CurrentItem, productos) + idProducto = pro.idProducto + Me.DialogResult = True + Me.Close() + End If + End Sub + + Private Sub btCancelar_Click(sender As Object, e As RoutedEventArgs) + Me.DialogResult = False + Me.Close() + End Sub + + Private Sub dxwproductos_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded + Try + + Me.gc.ItemsSource = _Lproductos.ToList + Me.gc.View.SearchControl.Focus() + Catch ex As Exception + DXMessageBox.Show(ex.Message, "Error") + Finally + If DXSplashScreen.IsActive Then DXSplashScreen.Close() + End Try + End Sub + + 'Public Sub New(bd As m3academiaEntities, Existentes As List(Of Integer?)) + Public Sub New(lProductos As List(Of productos), Optional OcultarStock As Boolean = False) + + ' Llamada necesaria para el diseñador. + InitializeComponent() + If OcultarStock Then + gcStock.Visible = False + gcUnidadesAlquiladas.Visible = False + End If + Comun.EscalaVentana(Me, Me.grid.LayoutTransform) + + _Lproductos = lProductos + ' Agregue cualquier inicialización después de la llamada a InitializeComponent(). + + End Sub + + + Private Sub dxw_PreviewKeyDown(sender As Object, e As KeyEventArgs) Handles Me.PreviewKeyDown + If e.Key = Key.Enter Then + btAceptar_Click(Nothing, Nothing) + End If + End Sub + + Private Sub tv_MouseDoubleClick(sender As Object, e As MouseButtonEventArgs) Handles tvProductos.MouseDoubleClick + btAceptar_Click(Nothing, Nothing) + End Sub +End Class diff --git a/GestionGrupoSanchoToro/Ventas/ucFacturaEmitida.xaml b/GestionGrupoSanchoToro/Ventas/ucFacturaEmitida.xaml new file mode 100644 index 0000000..ec3ef36 --- /dev/null +++ b/GestionGrupoSanchoToro/Ventas/ucFacturaEmitida.xaml @@ -0,0 +1,879 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/GestionGrupoSanchoToro/Ventas/ucFacturaEmitida.xaml.vb b/GestionGrupoSanchoToro/Ventas/ucFacturaEmitida.xaml.vb new file mode 100644 index 0000000..3cade7a --- /dev/null +++ b/GestionGrupoSanchoToro/Ventas/ucFacturaEmitida.xaml.vb @@ -0,0 +1,839 @@ +Imports DevExpress.Xpf.Editors +Imports DevExpress.Xpf.LayoutControl +Imports tsWPFCore +Imports System.ComponentModel +Imports System.Data +Imports DevExpress.Xpf.Editors.Validation +Imports DevExpress.Xpf.Editors.Helpers +Imports DevExpress.Xpf.Core +Imports tsWPFCore.modExtensiones +Imports System.Data.Common +Imports bdGrupoSanchoToro.db +Imports tsUtilidades.Datos +Imports DevExpress.Xpf.Bars +Imports DevExpress.Xpf.Grid +Imports System.Collections +Imports tsEFCore8.Extensiones +Imports bdGrupoSanchoToro.db.Utilidades +Imports tsUtilidades.Enumeraciones +Imports tsUtilidades +Imports bdGrupoSanchoToro.db.productos +Imports System.Windows.Threading +Imports System.IO +Imports Microsoft.Win32 + +'TODO: Comprobar cuando se puede modificar una factura (o eliminar) +Public Class ucFacturaEmitida + Private bd As tscGrupoSanchoToro + Friend _idFactura As Nullable(Of Integer) + Private lProductos As List(Of productos) + Private ivas As List(Of enumeraciones) + Friend idLog As Integer? + Dim ra As facturas + Public Overrides Sub Cargado() + Me.Tipo_ucControlBusqueda = GetType(ucFacturasEmitidas) + End Sub + + Public Overrides Sub EstableceDataContextSecundarios(Optional Background As Boolean = False) + Try + lProductos = bd.productos.OrderBy(Function(x) x.Descripcion).ToList + Dim lProductosFra = ra.detallesfacturas.Select(Function(x) x.idProducto).ToArray + lProductos = lProductos.Where(Function(x) x.FechaBaja Is Nothing OrElse lProductosFra.Contains(x.idProducto)).ToList + cbProducto.ItemsSource = lProductos + Dim cjs = bd.cajas.Where(Function(x) x.idEmpresa = EmpresaActual.idEmpresa AndAlso x.FechaBaja.HasValue = False).OrderBy(Function(x) x.Descripcion).ToList + Dim lCajas = cjs + Dim ids = ra.movimientoscaja.Select(Function(x) x.idCaja).ToList + Me.cbCaja.ItemsSource = lCajas.Where(Function(x) x.FechaBaja.HasValue = False OrElse ids.Contains(x.idCaja)).ToList + cbTipoDocumento.ItemsSource = tsUtilidades.DescripcionValor.EnumADescripcionValor(GetType(bdGrupoSanchoToro.db.documentosfacturas.TipoDocumentoFacturaEnum)).OrderBy(Function(x) x.Descripcion) + Dim plantillas As List(Of tsWPFCore.Plantilla) = Comun.ObtienePlantillas(bd, {"GRUPLA.FACEMI"}, False) + Me.ContenedorAplicacion.cbPlantillaAImprimir.ItemsSource = plantillas + If plantillas.Count > 0 Then + Me.ContenedorAplicacion.bePlantilla.EditValue = plantillas.First.idPlantilla + End If + Catch ex As Exception + Throw New Exception(ex.Message, ex) + End Try + End Sub + + + Public Overrides Function EstablecedcPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As tsUtilidades.EstadosAplicacion + Dim NuevoEstado As tsUtilidades.EstadosAplicacion + + If idLog.HasValue Then + Try + Dim log = bd.logs.First(Function(x) x.idLog = idLog) + ra = tsUtilidades.Utilidades.DeserializarSinErrores(log.Log, GetType(facturas)) + If ra.idUsuario.HasValue Then ra.idUsuarioNavigation = bd.usuarios.FirstOrDefault(Function(x) x.idUsuario = ra.idUsuario.Value) + Dim df = bd.logs.FirstOrDefault(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "DETALLESFACTURAS") + If df IsNot Nothing Then + Dim ld = tsUtilidades.Utilidades.DeserializarSinErrores(df.Log, GetType(List(Of detallesfacturas))) + For Each d In ld + ra.detallesfacturas.Add(d) + Next + End If + Dim mv = bd.logs.FirstOrDefault(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "MOVIMIENTOSCAJA_FR") + If mv IsNot Nothing Then + Dim ld = tsUtilidades.Utilidades.DeserializarSinErrores(mv.Log, GetType(List(Of movimientoscaja))) + For Each d In ld + ra.movimientoscaja.Add(d) + Next + End If + Dim lent = bd.logs.FirstOrDefault(Function(x) x.idRelacionado = log.idLog AndAlso x.Aplicacion = "ENTIDADES") + If lent IsNot Nothing Then + Dim ent = tsUtilidades.Utilidades.DeserializarSinErrores(lent.Log, GetType(entidades)) + ra.idClienteNavigation = ent + End If + NuevoEstado = tsUtilidades.EstadosAplicacion.ModificandoRegistro + Catch EX As Exception + Throw New Exception("No ha sido posible mostrar el registro del cambio (id " & idLog.Value.ToString & ").", EX) + End Try + Else + If FuerzaNuevo OrElse _idFactura Is Nothing Then + ra = New facturas + ra.FechaFactura = DateOnly.FromDateTime(Today) + _idFactura = Nothing + ra.FechaEmision = Now + NuevoEstado = tsUtilidades.EstadosAplicacion.Nuevo + ivas = bd.enumeraciones.Where(Function(x) x.idGrupoEnumeracionNavigation.Grupo = "PIVA" AndAlso x.FechaBaja Is Nothing).ToList + + Else + ra = bd.facturas.First(Function(x) x.idFactura = _idFactura) + Dim tiv = ra.detallesfacturas.Select(Function(x) x.idTipoIVA).GroupBy(Function(x) x).Select(Function(x) x.FirstOrDefault).ToList + ivas = bd.enumeraciones.Where(Function(x) x.idGrupoEnumeracionNavigation.Grupo = "PIVA" AndAlso (x.FechaBaja Is Nothing OrElse tiv.Contains(x.idEnumeracion))).ToList + NuevoEstado = tsUtilidades.EstadosAplicacion.ModificandoRegistro + End If + End If + cbRazonSocial.ItemsSource = bd.entidades.Where(Function(x) x.idEmpresa = EmpresaActual.idEmpresa AndAlso (x.EsCliente AndAlso x.FechaBaja.HasValue = False) OrElse x.idEntidad = ra.idCliente).ToList + cbSerie.ItemsSource = bd.seriesfacturas.Where(Function(x) x.FechaBaja.HasValue = False AndAlso x.idEmpresa = EmpresaActual.idEmpresa).ToList + cbIva.ItemsSource = ivas + gcDetalle.ItemsSource = ra.detallesfacturas + gcRecibos.ItemsSource = ra.movimientoscaja + gcDocumentos.ItemsSource = ra.documentosfacturas + Me.gcLogs.ItemsSource = bd.logs.Where(Function(x) x.id = ra.idFactura AndAlso x.Aplicacion = "facturas").ToList + Me.DataContext = ra + Return NuevoEstado + End Function + + + + Public Overrides Function ObtieneBD() As tsUtilidades.ItsContexto + bd = tscGrupoSanchoToro.NuevoContexto(,,, True, "FACTURAS") + Return bd + End Function + + Public Overrides ReadOnly Property NombreTablaBase As String + Get + Return "facturas" + End Get + End Property + + 'Public Overrides ReadOnly Property CampoIndice As String + ' Get + ' Return "idFactura" + ' End Get + 'End Property + Public Overrides ReadOnly Property idRegistroAplicacionActual As String + Get + If idLog.HasValue Then + Return "Factura Cliente R.C.:" & idLog.ToString + Else + If Me.Estado = tsUtilidades.EstadosAplicacion.Nuevo Then + Return "Factura Cliente.Nuevo" + Else + Return "Factura Cliente." & DirectCast(Me.DataContext, facturas).idFactura.ToString + End If + End If + End Get + End Property + + Public Overrides ReadOnly Property DescripcionRegistro As String + Get + Return "Factura Cliente" + End Get + End Property + + Public Sub New(Optional idFactura As Integer? = Nothing) + + ' Llamada necesaria para el diseñador. + InitializeComponent() + _idFactura = idFactura + + ' Agregue cualquier inicialización después de la llamada a InitializeComponent(). + + End Sub + + + + + Public Overrides Sub EstableceTitulo() + If idLog.HasValue Then + Dim fr As facturas = Me.DataContext + Me.docpanel.Caption = "R.C. Factura de Cliente " & fr.NumeroFactura + Me.docpanel.Tag = "R.C. Factura Emitida." & fr.NumeroFactura + Else + If Me.Estado = tsUtilidades.EstadosAplicacion.ModificandoRegistro Then + Dim fr As facturas = Me.DataContext + Me.docpanel.Caption = "Factura de Cliente " & fr.NumeroFactura + Me.docpanel.Tag = "Factura Emitida." & fr.NumeroFactura + Else + Me.docpanel.Caption = "Factura de Cliente Nueva" + Me.docpanel.Tag = "FacturaEmitida.Nuevo" + End If + End If + ' End If + 'End If + End Sub + + Public Overrides Function ObtienePermisos() As tsUtilidades.Permisos + Dim pers = Comun.ObtienePermisos(Me.bd, "AP.ADMINISTRATIVOS", idUsuario) + ' pers.Eliminar = False + Return pers + End Function + + + Private Sub ap_ValidarControl(sender As Object, e As ValidationEventArgs, ByRef ev As ErrorValidacion, ByRef ValorOriginalCambiado As Object) Handles Me.ValidarControl + Dim pts As PropiedadesTS = sender.parent.propiedadests + Try + If Not pts Is Nothing Then + Me.ErroresValidacion.EliminaError("validando-" & pts.NombreCampo) + + Select Case pts.NombreCampo.ToLower + Case "idseriefactura_nulable" + Dim Serie = CInt(e.Value) + Dim sf = bd.seriesfacturas.First(Function(x) x.idSerieFactura = Serie) + Dim Tipo As bdGrupoSanchoToro.db.seriesfacturas.TipoSerieFacturaEnum = sf.Tipo + If Tipo = seriesfacturas.TipoSerieFacturaEnum.EMITIDA_POR_CLIENTE Then + ra.NumeroFactura = sf.Serie & "/" + Else + ra.NumeroFactura = Nothing + End If + Dim lc As New List(Of tsLayoutItem)({liNumeroFactura}) + If Tipo <> seriesfacturas.TipoSerieFacturaEnum.EMITIDA_POR_CLIENTE Then + EstableceSoloLectura(lc, True) + Else + EstableceSoloLectura(lc, False) + End If + Case "idcliente_nulable" + Dim id As Integer = e.Value + Dim ent = bd.entidades.First(Function(x) x.idEntidad = id) + ra.RazonSocial = ent.RazonSocial + ra.Direccion = ent.Direccion + ra.CodigoMunicipio = ent.CodigoMunicipio + ra.CodigoPostal = ent.CodigoPostal + ra.NIF = ent.NIF + ra.CodigoMunicipioNavigation = ent.CodigoMunicipioNavigation + Case "numerofactura" + Dim sf = bd.seriesfacturas.First(Function(x) x.idSerieFactura = ra.idSerieFactura) + Dim Tipo As bdGrupoSanchoToro.db.seriesfacturas.TipoSerieFacturaEnum = sf.Tipo + If Tipo = seriesfacturas.TipoSerieFacturaEnum.EMITIDA_POR_CLIENTE Then + Dim nf As String = e.Value + Dim nff = sf.Serie & "/" + Dim numeracion As String = nf + If numeracion.StartsWith(sf.Serie & "/") Then numeracion = nf.Split("/", 2)(1).Trim + If numeracion.Length > sf.NumeroDigitos Then + Throw New Exception("La numeración de la factura excede los dígitos permitidos") + Else + numeracion = numeracion.PadLeft(sf.NumeroDigitos, "0") + End If + nff &= numeracion + If nff <> nf Then + ValorOriginalCambiado = nff + ra.NumeroFactura = nff + End If + End If + End Select + End If + Catch ex As Exception + Dim sCodigoError As String = "validando-" + If pts IsNot Nothing Then + sCodigoError &= pts.NombreCampo + End If + ev = New ErrorValidacion(sCodigoError, sender, ex.Message, ex, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Critical) + e.IsValid = False + End Try + End Sub + + + Private Sub ap_DespuesGuardar(sender As Object, e As ItemClickEventArgs, OpcionGuardado As Integer) Handles Me.DespuesGuardar + _idFactura = ra.idFactura + Me.gcRecibos.ItemsSource = ra.movimientoscaja + Me.gcLogs.ItemsSource = bd.logs.Where(Function(x) x.id = ra.idFactura AndAlso x.Aplicacion = "FACTURAS").ToList + End Sub + + + Private Sub ap_Enlazar(Celda As EditGridCellData, Defecto As Boolean) Handles Me.Enlazar + + Select Case Celda.Column.FieldName.ToLower + Case "idlog" + Dim log As logs = gcLogs.CurrentItem + Dim id As Integer = log.idLog + Dim uc As New ucFacturaEmitida + uc.idLog = log.idLog + FuncionesDinamicas.AbrirAP(uc, OtrosParametros) + Case "numerorecibotmp" + Dim fa As facturas = Me.DataContext + Dim rec As movimientoscaja = Celda.RowData.Row + If rec IsNot Nothing Then + Dim lr As New List(Of movimientoscaja) + Dim Continuar As Boolean + If Me.ContenedorAplicacion.btGuardar.IsEnabled Then + Me.tvRecibos.CommitEditing() + If Not Guardar(Nothing, Nothing,,, 9) Then + If rec.Fecha = Date.MinValue Then + rec.Fecha = AhoraMySql(bd) + rec.FechaCreacion = rec.Fecha + End If + Continuar = True + Else + Continuar = False + End If + Else + Continuar = True + End If + If Continuar Then + lr.Add(rec) + Dim cp As String = "RECIBO" + Dim pl = bd.plantillas.AsNoTracking.Where(Function(x) x.Codigo = cp).Select(Function(x) New With {.Fichero = x.idFicheroNavigation.Fichero, .Tipo = x.idGrupoNavigation.Codigo}).FirstOrDefault + Informes.ImprimirPlantilla(bd, pl.Fichero, lr, False, 1) + End If + End If + End Select + 'Select Case Celda.Column.FieldName.ToLower + ' Case "numeroalbaranentrega" + ' Dim ra = DirectCast(Me.gcDetalle.CurrentItem, detallesfacturas) + ' Dim id As Integer = ra.detallesalbaranes.idAlbaranEntrega + ' FuncionesDinamicas.AbrirAP(New ucAlbaranEntrega(id), OtrosParametros) + ' Case "numeroalbaranrecogida" + ' Dim ra = DirectCast(Me.gcDetalle.CurrentItem, detallesfacturas) + ' Dim id As Integer = ra.detallesalbaranes.idAlbaranRecogida + ' FuncionesDinamicas.AbrirAP(New ucAlbaranRecogida(id), OtrosParametros) + 'End Select + End Sub + + + + + + + + Private Sub ap_EstadoCambiado(EstadoAnterior As tsUtilidades.EstadosAplicacion, EstadoNuevo As tsUtilidades.EstadosAplicacion) Handles Me.EstadoCambiado + Dim lc As New List(Of tsLayoutItem)({liNumeroFactura}) + + Select Case EstadoNuevo + Case EstadosAplicacion.ModificandoRegistro + If DirectCast(ra.idSerieFacturaNavigation.Tipo, db.seriesfacturas.TipoSerieFacturaEnum) <> seriesfacturas.TipoSerieFacturaEnum.EMITIDA_POR_CLIENTE Then + EstableceSoloLectura(lc, True) + End If + Case EstadosAplicacion.Nuevo + EstableceSoloLectura(lc, True) + End Select + If idLog.HasValue Then EstableceSoloLectura() + End Sub + + + Private Sub BiBuscarProducto_Click(sender As Object, e As RoutedEventArgs) + 'Dim dxw As New dxwProductos(lProductos) + 'If dxw.ShowDialog Then + ' If gcDetalle.CurrentItem Is Nothing Then tvDetalle.AddNewRow() + ' Dim def As detallesfacturas = gcDetalle.CurrentItem + ' Dim prod = lProductos.First(Function(x) x.idProducto = dxw.idProducto) + ' def.idProducto = prod.idProducto + ' RellenaDatosProducto(def) + ' tvDetalle.MoveNextCell() + ' gcDetalle.RefreshRow(tvDetalle.FocusedRowHandle) + 'End If + If tvDetalle.ActiveEditor Is Nothing Then + Dispatcher.BeginInvoke(New Action(Sub() tvDetalle.ShowEditor()), System.Windows.Threading.DispatcherPriority.Render) + End If + + Dim dxw As New dxwProductos(lProductos) + If dxw.ShowDialog Then + If gcDetalle.CurrentItem Is Nothing Then tvDetalle.AddNewRow() + Dim def As detallesfacturas = gcDetalle.CurrentItem + Dim prod = lProductos.First(Function(x) x.idProducto = dxw.idProducto) + def.idProducto = prod.idProducto + If tvDetalle.ActiveEditor IsNot Nothing Then tvDetalle.ActiveEditor.EditValue = prod.idProducto + tvDetalle.PostEditor() + tvDetalle.CloseEditor() + gcDetalle.RefreshRow(tvDetalle.FocusedRowHandle) + End If + End Sub + + + + + + Private Sub ap_AntesGuardar(sender As Object, e As ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, OpcionGuardado As Integer) Handles Me.AntesGuardar + + ra.idUsuario = idUsuario + Dim hte As New Hashtable + If ra.detallesfacturas.Count = 0 Then + hte.Add("ALMACENAR-DETALLE_OBLIGATORIO", "Es obligatorio introducir al menos un artículo") + End If + If ra.TotalFactura = 0 Then + hte.Add("ALMACENAR-IMPORTE_0", "El total de la factura no puede ser 0") + End If + + Dim sf = bd.seriesfacturas.First(Function(x) x.idSerieFactura = ra.idSerieFactura) + ra.idSerieFacturaNavigation = sf + If DirectCast(ra.idSerieFacturaNavigation.Tipo, db.seriesfacturas.TipoSerieFacturaEnum) = seriesfacturas.TipoSerieFacturaEnum.EMITIDA_POR_CLIENTE Then + If ra.NumeroFactura.Trim.NothingAVacio = "" Then + hte.Add("ALMACENAR-NUMERO_FACTURA_OBLIGATORIO", "El nº de factura es obligatorio.") + End If + End If + If bd.facturas.Any(Function(x) x.NumeroFactura = ra.NumeroFactura AndAlso x.idCliente = ra.idCliente AndAlso x.idFactura <> ra.idFactura) Then + hte.Add("ALMACENAR-YA_EXISTE_OTRA_FACTURA", "Ya existe esta factura del mismo cliente registrada") + End If + If Math.Abs(ra.ImportePagado) > Math.Abs(ra.TotalFactura) Then + hte.Add("ALMACENAR-IMPORTE_PAGADO_SUPERIOR", "El importe pagado de los recibos no puede superar al total de la factura") + End If + If DirectCast(ra.idSerieFacturaNavigation.Tipo, db.seriesfacturas.TipoSerieFacturaEnum) <> seriesfacturas.TipoSerieFacturaEnum.EMITIDA_POR_CLIENTE Then + If Estado = EstadosAplicacion.Nuevo Then + Dim Año = ra.FechaFactura.Year + If bd.facturas.Any(Function(x) x.idSerieFactura = ra.idSerieFactura AndAlso x.FechaFactura > ra.FechaFactura AndAlso x.FechaFactura.Year = Año) Then + hte.Add("ALMACENAR_YA_EXISTE_OTRA_FACTURA", "Existen facturas con fecha posterior a la actual") + End If + Else + Dim serie = ra.NumeroFactura.Split("/")(0) + Dim Numero = ra.NumeroFactura.Split("/")(1) + Dim ant = serie & "/" & (Integer.Parse(Numero) - 1).ToString.PadLeft(ra.idSerieFacturaNavigation.NumeroDigitos, "0") + Dim pos = serie & "/" & (Integer.Parse(Numero) + 1).ToString.PadLeft(ra.idSerieFacturaNavigation.NumeroDigitos, "0") + Dim fa = bd.facturas.FirstOrDefault(Function(x) x.NumeroFactura = ant And x.idSerieFactura = ra.idSerieFactura) + Dim fp = bd.facturas.FirstOrDefault(Function(x) x.NumeroFactura = pos And x.idSerieFactura = ra.idSerieFactura) + If (fa IsNot Nothing AndAlso fa.FechaFactura > ra.FechaFactura) OrElse (fp IsNot Nothing AndAlso fp.FechaFactura < ra.FechaFactura) Then + hte.Add("ALMACENAR_YA_EXISTE_OTRA_FACTURA", "Las fechas de facturas deben seguir el orden de la numeración") + End If + End If + End If + If hte.Count > 0 Then + MensajesError = hte + Cancelar = True + Else + Dim dfrtf = ra.detallesfacturas.Where(Function(x) x.DetalleRTFModificado).ToList + For Each d In dfrtf + If d.idDetalle = 0 Then + If d.DetalleRTF.Length > 0 Then + Dim f As New bdGrupoSanchoToro.db.ficheros + With f + .Descripcion = "Más descripción f.r." + .Fichero = d.DetalleRTF + .Fecha = Now + End With + d.idDetalleRTFNavigation = f + End If + Else + If d.idDetalleRTF Is Nothing Then + d.idDetalleRTFNavigation = New db.ficheros + End If + With d.idDetalleRTFNavigation + .Fichero = d.DetalleRTF + .Fecha = Now + End With + End If + Next + + If ra.NumeroFactura.NothingAVacio = "" Then ra.EstableceNumeroFactura(bd) + For Each mv In ra.movimientoscaja + mv.Tipo = TipoMovimientoEnum.RECIBO_CLIENTE + If mv.idUsuario.HasValue = False Then mv.idUsuario = idUsuario + Next + For Each r In ra.movimientoscaja.ToList.Where(Function(x) x.NumeroRecibo.NothingAVacio = "") + r.idFacturaNavigation = ra + r.EstableceNumeroRecibo() + Next + For Each d In ra.documentosfacturas + If d.idUsuario.HasValue = False Then d.idUsuario = idUsuario + Next + If ra.ImportePendiente = 0 Then + ra.FechaPago = DateOnly.FromDateTime(ra.movimientoscaja.OrderByDescending(Function(x) x.Fecha).First.Fecha) + Else + ra.FechaPago = Nothing + End If + If ra.PorcentajeIVA2.HasValue = False Then + ra.BaseImponible2 = Nothing + ra.CuotaIVA2 = Nothing + End If + If ra.PorcentajeIVA2.HasValue = False Then + ra.BaseImponible3 = Nothing + ra.CuotaIVA3 = Nothing + End If + End If + End Sub + + Private Sub tvDetalle_CellValueChanged(sender As Object, e As CellValueChangedEventArgs) Handles tvDetalle.CellValueChanged + Dim def As detallesfacturas = e.Row + Select Case e.Column.FieldName.ToLower + Case "idproducto" + RellenaDatosProducto(def) + Case "idtipoiva" + Dim idTIVA = CInt(e.Value) + def.PorcentajeIVA = ivas.First(Function(x) x.idEnumeracion = idTIVA).ValorNumerico1 + End Select + 'tvDetalle.CommitEditing() + 'gcDetalle.CurrentItem = e.Row + + End Sub + Private Sub RellenaDatosProducto(dea As detallesfacturas) + Dim ae As facturas = Me.DataContext + Dim pr = lProductos.First(Function(x) x.idProducto = dea.idProducto) + dea.Precio = pr.UltimoPrecioCompra + If dea.Cantidad = 0 Then dea.Cantidad = 1 + ' dea.RefrescaImporte() + End Sub + + Private Sub BiBuscarCliente_Click(sender As Object, e As RoutedEventArgs) + If Me.ContenedorAplicacion.btGuardar.IsEnabled Then + Dim dxw As New dxwEntidades(bd, True, False) + If dxw.ShowDialog Then + Dim ent = bd.entidades.First(Function(x) x.idEntidad = dxw.Entidad.idEntidad) + ra.idClienteNavigation = ent + ra.idCliente_Nulable = ent.idEntidad + ra.RazonSocial = ent.RazonSocial + ra.CodigoPostal = ent.CodigoPostal + ra.CodigoMunicipio = ent.CodigoMunicipio + ra.Direccion = ent.Direccion + ra.Observaciones = "" + ra.NIF = ent.NIF + ' ra.RefrescaExtensiones() + End If + End If + End Sub + + + + + + + + + Private Sub ap_ImprimirPlantilla(sender As Object, e As ItemClickEventArgs, idPlantilla As Integer) Handles Me.ImprimirPlantilla + Imprimir(idPlantilla, False, 1) + End Sub + Private Sub Imprimir(idPlantilla As Integer, ImpresoraDefecto As Boolean, Copias As Integer) + + Dim ds As List(Of facturas) + Dim pl = bd.plantillas.AsNoTracking.Where(Function(x) x.idPlantilla = idPlantilla).Select(Function(x) New With {.Fichero = x.idFicheroNavigation.Fichero, .Tipo = x.idGrupoNavigation.Codigo}).FirstOrDefault + ds = New List(Of facturas) + ds.Add(ra) + Informes.ImprimirPlantilla(bd, pl.Fichero, ds, ImpresoraDefecto, Copias) + + End Sub + + + 'Private Sub ap_EjecutarAccion(sender As Object, e As ItemClickEventArgs, idAccion As Integer) Handles Me.EjecutarAccion + + + 'End Sub + + + Private Sub tvDetalle_RowUpdated(sender As Object, e As DevExpress.Xpf.Grid.RowEventArgs) Handles tvDetalle.RowUpdated + If e.RowHandle = GridControl.NewItemRowHandle Then + Dispatcher.BeginInvoke(New Action(Function() + e.Source.Grid.CurrentItem = e.Row + e.Source.ShowEditor() + End Function), DispatcherPriority.Render) + End If + Call CalculaTotales() + End Sub + Sub CalculaTotales() + + Dim ivas(2) As Double? + For Each df In ra.detallesfacturas + For i = 0 To 3 + If i = 3 Then Throw New Exception("Demasiados tipos de iva en la misma factura.") + If ivas(i).HasValue = False OrElse ivas(i).Value = df.PorcentajeIVA Then + ivas(i) = df.PorcentajeIVA + Exit For + End If + Next + Next + ra.PorcentajeIVA1 = ivas(0) + ra.PorcentajeIVA2 = ivas(1) + ra.PorcentajeIVA3 = ivas(2) + ra.BaseImponibleExenta = ra.detallesfacturas.Where(Function(x) x.PorcentajeIVA.HasValue = False).Sum(Function(x) x.Importe) + ra.BaseImponible1 = Nothing + ra.BaseImponible2 = Nothing + ra.BaseImponible3 = Nothing + If ivas(0).HasValue Then ra.BaseImponible1 = ra.detallesfacturas.Where(Function(x) x.PorcentajeIVA.HasValue AndAlso x.PorcentajeIVA = ivas(0)).Sum(Function(x) x.Importe) + If ivas(1).HasValue Then ra.BaseImponible2 = ra.detallesfacturas.Where(Function(x) x.PorcentajeIVA.HasValue AndAlso x.PorcentajeIVA = ivas(1)).Sum(Function(x) x.Importe) + If ivas(2).HasValue Then ra.BaseImponible3 = ra.detallesfacturas.Where(Function(x) x.PorcentajeIVA.HasValue AndAlso x.PorcentajeIVA = ivas(2)).Sum(Function(x) x.Importe) + ra.TotalBaseImponible = Math.Round(ra.detallesfacturas.Sum(Function(x) x.Importe), 2) + CalculaCuotasIVA(ra) + CalculaIRPF(ra) + CalculaTotalesFinales(ra) + End Sub + Public Sub CalculaIRPF(F As facturas) + If F.idSerieFacturaNavigation Is Nothing Then + DXMessageBox.Show("Primero debe definir la serie de la factura", "Atención") + Else + If F.idSerieFacturaNavigation.IRPFDespuesDeIVA Then + F.IRPF = Math.Round((F.TotalBaseImponible + F.TotalIVA) * F.PorcentajeIRPF / 100, 2, MidpointRounding.AwayFromZero) + Else + F.IRPF = Math.Round(F.TotalBaseImponible * F.PorcentajeIRPF / 100, 2, MidpointRounding.AwayFromZero) + End If + End If + End Sub + Public Sub CalculaCuotasIVA(F As facturas) + F.CuotaIVA1 = Nothing + F.CuotaIVA2 = Nothing + F.CuotaIVA3 = Nothing + If F.PorcentajeIVA1.HasValue Then + F.CuotaIVA1 = Math.Round(F.BaseImponible1.Value * F.PorcentajeIVA1.Value / 100, 2, MidpointRounding.AwayFromZero) + End If + If F.PorcentajeIVA2.HasValue Then + F.CuotaIVA2 = Math.Round(F.BaseImponible2.Value * F.PorcentajeIVA2.Value / 100, 2, MidpointRounding.AwayFromZero) + End If + If F.PorcentajeIVA3.HasValue Then + F.CuotaIVA3 = Math.Round(F.BaseImponible3.Value * F.PorcentajeIVA3.Value / 100, 2, MidpointRounding.AwayFromZero) + End If + End Sub + Public Sub CalculaTotalesFinales(ra As facturas) + ra.TotalIVA = Math.Round(If(ra.CuotaIVA1.HasValue, ra.CuotaIVA1.Value, 0) + If(ra.CuotaIVA2.HasValue, ra.CuotaIVA2.Value, 0) + If(ra.CuotaIVA3.HasValue, ra.CuotaIVA3.Value, 0), 2, MidpointRounding.AwayFromZero) + ra.TotalFactura = Math.Round(ra.TotalBaseImponible + ra.TotalIVA - ra.IRPF, 2, MidpointRounding.AwayFromZero) + ra.ImportePagado = Math.Round(ra.movimientoscaja.Sum(Function(x) x.Importe), 2, MidpointRounding.AwayFromZero) + ' ra.RefrescaExtensiones() + End Sub + Private Sub tvDetalle_ValidaFila(sender As Object, e As DevExpress.Xpf.Grid.GridRowValidationEventArgs) Handles tvDetalle.ValidateRow + 'Dim df As detallesfacturas = e.Row + 'Dim htErrores = New Hashtable + 'If df.Cantidad = 0 Then + ' DXMessageBox.Show("La Cantidad no puede ser 0", "Error") + ' e.SetError("La Cantidad no puede ser 0") + ' e.IsValid = False + 'End If + Try + Dim htErrores = New Hashtable + ErroresValidacion.LimpiarErrores("TSGC-" & gcDetalle.PropiedadesTS.NumeroObjeto.ToString & ":" & e.RowHandle.ToString & ":") + Dim df As detallesfacturas = e.Row + + If df.Cantidad = 0 Then + htErrores.Add("Cantidad0", "La Cantidad no puede ser 0") + End If + + If htErrores.Count > 0 Then + Me.AgregaErroresTSGC(gcDetalle, htErrores, e) + End If + Catch ex As Exception + FuncionesDinamicas.ErrorNoControladoAp(Me, ex) + DXMessageBox.Show(ex.Message, "Error") + End Try + End Sub + + Private Sub gcDetalle_DespuesEliminar(gc As tsGridControl) Handles gcDetalle.DespuesEliminar + CalculaTotales() + End Sub + + Private Sub tvRecibos_ValidaFila(sender As Object, e As GridRowValidationEventArgs) Handles tvRecibos.ValidateRow + 'Dim mv As movimientoscaja = e.Row + 'If mv.Importe = 0 Then + ' DXMessageBox.Show("El Importe no puede ser 0", "Error") + ' e.SetError("El Importe no puede ser 0") + ' e.IsValid = False + 'End If + Try + Dim htErrores = New Hashtable + ErroresValidacion.LimpiarErrores("TSGC-" & gcRecibos.PropiedadesTS.NumeroObjeto.ToString & ":" & e.RowHandle.ToString & ":") + Dim mv As movimientoscaja = e.Row + + If mv.Importe = 0 Then + htErrores.Add("Importe0", "El Importe no puede ser 0") + End If + If htErrores.Count > 0 Then + Me.AgregaErroresTSGC(gcRecibos, htErrores, e) + End If + Catch ex As Exception + FuncionesDinamicas.ErrorNoControladoAp(Me, ex) + DXMessageBox.Show(ex.Message, "Error") + End Try + End Sub + + Private Sub gcRecibos_DespuesEliminar(gc As tsGridControl) Handles gcRecibos.DespuesEliminar + CalculaTotales() + End Sub + + Private Sub tvRecibos_RowUpdated(sender As Object, e As RowEventArgs) Handles tvRecibos.RowUpdated + + CalculaTotalesFinales(ra) + End Sub + + Private Sub tvRecibos_InitNewRow(sender As Object, e As InitNewRowEventArgs) Handles tvRecibos.InitNewRow + gcRecibos.SetCellValue(e.RowHandle, "Fecha", Now) + gcRecibos.SetCellValue(e.RowHandle, "FechaCreacion", Now) + End Sub + + Private Sub ucFacturaEmitida_CampoActualizado(sender As Object, e As DataTransferEventArgs) Handles Me.CampoActualizado + Dim pts As PropiedadesTS = sender.parent.propiedadests + If Not pts Is Nothing Then + Select Case pts.NombreCampo.ToLower + Case "porcentajeirpf" + CalculaIRPF(ra) + CalculaTotalesFinales(ra) + Case "cuotaiva1", "cuotaiva2", "cuotaiva3", "irpf" + CalculaTotalesFinales(ra) + Case "idcliente_nulable" + ra.idClienteNavigation = bd.entidades.First(Function(x) x.idEntidad = ra.idCliente) + Case "idseriefactura_nulable" + If ra.idSerieFactura_Nulable.HasValue Then + Dim sf = bd.seriesfacturas.First(Function(x) x.idSerieFactura = ra.idSerieFactura_Nulable) + ra.idSerieFacturaNavigation = sf + End If + End Select + End If + End Sub + + Private Sub tvDetalle_InitNewRow(sender As Object, e As InitNewRowEventArgs) Handles tvDetalle.InitNewRow + gcDetalle.SetCellValue(e.RowHandle, "idTipoIVA", ivas.OrderByDescending(Function(x) x.ValorNumerico2).First.idEnumeracion) + Dispatcher.BeginInvoke(New Action(Function() + Dim view = TryCast(sender, TableView) + view.CommitEditing() + End Function)) + End Sub + + Private Sub tvDetalle_PreviewKeyDown(sender As Object, e As Input.KeyEventArgs) Handles tvDetalle.PreviewKeyDown + If e.Key = Key.F6 Then + Select Case gcDetalle.CurrentColumn.FieldName.ToLower + Case "idproducto" + tvDetalle.ShowEditor() + BiBuscarProducto_Click(Nothing, Nothing) + End Select + End If + End Sub + + Private Sub cbRazonSocial_PreviewKeyDown(sender As Object, e As Input.KeyEventArgs) Handles cbRazonSocial.PreviewKeyDown + If e.Key = Key.F6 Then + BiBuscarCliente_Click(Nothing, Nothing) + End If + End Sub + + Private Sub gcRecibos_AntesEliminar(gc As tsGridControl, ByRef Cancelar As Boolean) Handles gcRecibos.AntesEliminar + Dim da As movimientoscaja = gc.CurrentItem + If da.idMovimientoCierre.HasValue Then + DXMessageBox.Show("No se puede eliminar un pago ya que está cerrado") + Cancelar = True + End If + End Sub + + Private Sub tvRecibos_ShowingEditor(sender As Object, e As ShowingEditorEventArgs) Handles tvRecibos.ShowingEditor + 'If e.RowHandle <> DataControlBase.NewItemRowHandle Then + ' Dim rec As movimientoscaja = gcRecibos.GetRow(e.RowHandle) + ' If e.Column.FieldName.ToLower = "importe" OrElse e.Column.FieldName.ToLower = "idcaja" OrElse e.Column.FieldName.ToLower = "fecha" Then + ' If rec.idMovimientoCierre.HasValue OrElse rec.FechaSupervision.HasValue Then + ' e.Cancel = True + ' e.Handled = True + ' End If + ' End If + 'End If + End Sub + + Private Cargando As Boolean + Private Sub gcDetalle_SelectedItemChanged(sender As Object, e As SelectedItemChangedEventArgs) Handles gcDetalle.SelectedItemChanged + Try + + Dim df As detallesfacturas = gcDetalle.CurrentItem + If df IsNot Nothing Then + recEditor.LoadDocument(df.DetalleRTF) + recEditor.IsEnabled = True + Else + recEditor.CreateNewDocument() + recEditor.IsEnabled = False + End If + Catch ex As Exception + Debug.WriteLine(ex.Message) + 'Throw New Exception(ex.Message, ex) + End Try + End Sub + + Private Sub recEditor_ContentChanged(sender As Object, e As EventArgs) Handles recEditor.ContentChanged + Try + If Cargando Then + Cargando = False + Else + Dim df As detallesfacturas = gcDetalle.CurrentItem + If df IsNot Nothing AndAlso tvDetalle.FocusedRowHandle >= 0 Then + Dim doc = recEditor.Document + If doc.GetText(doc.Range).Trim = "" Then + df.DetalleRTF = Nothing + Else + df.DetalleRTF = recEditor.SaveDocument(DevExpress.XtraRichEdit.DocumentFormat.Rtf) + End If + df.DetalleRTFModificado = True + End If + End If + Catch ex As Exception + Debug.WriteLine(ex.Message) + End Try + End Sub + + Private Sub recEditor_DocumentLoaded(sender As Object, e As EventArgs) Handles recEditor.DocumentLoaded + Cargando = True + End Sub + + Private Sub tvDocumentos_ValidateRow(sender As Object, e As GridRowValidationEventArgs) Handles tvDocumentos.ValidateRow + Dim ges As documentosfacturas = gcDocumentos.CurrentItem + If ges.idUsuario.HasValue = False Then + ges.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario + End If + End Sub + Private Sub VerDocumento(sender As System.Object, e As System.Windows.RoutedEventArgs) + Try + Dim exp As documentosfacturas = gcDocumentos.CurrentItem + If exp IsNot Nothing AndAlso exp.idFicheroNavigation IsNot Nothing AndAlso exp.idFicheroNavigation.NombreFichero IsNot Nothing AndAlso exp.idFicheroNavigation.Fichero IsNot Nothing Then + Dim sftmp As String = tsUtilidades.Utilidades.ObtieneDirectorioAleatorio("GrupoSanchoToro") & "\" & exp.idFicheroNavigation.NombreFichero + tsUtilidades.Utilidades.ByteArrayAFichero(exp.idFicheroNavigation.Fichero, sftmp, True) + tsUtilidades.Sistema.EjecutaFichero(sftmp) + End If + Catch ex As Exception + End Try + End Sub + Private Sub Examinar(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles btFichero.DefaultButtonClick + Try + If gcDocumentos.CurrentItem Is Nothing Then tvDocumentos.AddNewRow() + Dim exp As documentosfacturas = gcDocumentos.CurrentItem + Dim ofd As New OpenFileDialog + If ofd.ShowDialog() Then + Dim fin As New FileInfo(ofd.FileName) + If fin.Length > 1024 * 1024 * 50 Then + DXMessageBox.Show("El fichero no puede ser mayor de 50 Mb", "Atención") + Else + Dim f() As Byte = IO.File.ReadAllBytes(ofd.FileName) + Dim idTipoDocumentoExp = bd.enumeraciones.First(Function(x) x.Codigo = "TIPFIC.EXPENT").idEnumeracion + If exp.idFicheroNavigation Is Nothing Then + Dim fi As New db.ficheros + exp.idFicheroNavigation = fi + End If + exp.idFicheroNavigation.NombreFichero = IO.Path.GetFileName(ofd.FileName) + exp.idFicheroNavigation.Fichero = f + exp.idFicheroNavigation.Fecha = Now + exp.idFicheroNavigation.Descripcion = exp.Descripcion.Acortar(80) + exp.idFicheroNavigation.idTipo = idTipoDocumentoExp + exp.Fecha = Now + Dim usu = bd.usuarios.First(Function(x) x.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario) + exp.idUsuario = bdGrupoSanchoToro.db.Utilidades.idUsuario + exp.idUsuarioNavigation = usu + tvDocumentos.MoveNextCell() + gcDocumentos.RefreshRow(tvDocumentos.FocusedRowHandle) + End If + End If + Catch ex As Exception + DXMessageBox.Show(ex.Message, "Error") + End Try + End Sub + + Private Sub tvDocumentos_PreviewKeyDown(sender As Object, e As KeyEventArgs) + If e.Key = Key.F6 AndAlso gcDocumentos.CurrentColumn.FieldName.ToLower = "ficheros.nombrefichero" Then + Examinar(Nothing, Nothing) + End If + End Sub + + Private Sub tvDocumentos_InitNewRow(sender As Object, e As InitNewRowEventArgs) Handles tvDocumentos.InitNewRow + gcDocumentos.SetCellValue(e.RowHandle, "Fecha", Now) + End Sub + + Private Sub ucFacturaEmitida_AntesEliminar(sender As Object, e As ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, ByRef OmitirPreguntaContinuar As Boolean) Handles Me.AntesEliminar + If ra.idSerieFacturaNavigation.Tipo <> seriesfacturas.TipoSerieFacturaEnum.EMITIDA_POR_CLIENTE Then + DXMessageBox.Show("Las facturas que no son emitidas por los clientes no se pueden eliminar", "Atención") + Cancelar = True + End If + End Sub +End Class + diff --git a/GestionGrupoSanchoToro/Ventas/ucFacturasEmitidas.xaml b/GestionGrupoSanchoToro/Ventas/ucFacturasEmitidas.xaml new file mode 100644 index 0000000..63ed9c0 --- /dev/null +++ b/GestionGrupoSanchoToro/Ventas/ucFacturasEmitidas.xaml @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/GestionGrupoSanchoToro/ucProcesos.xaml.vb b/GestionGrupoSanchoToro/ucProcesos.xaml.vb new file mode 100644 index 0000000..3b6f5b0 --- /dev/null +++ b/GestionGrupoSanchoToro/ucProcesos.xaml.vb @@ -0,0 +1,179 @@ +Imports tsWPFCore +Imports bdGrupoSanchoToro.db +Imports System.CodeDom.Compiler +Imports DevExpress.Xpf.Core +Imports System.Reflection +Imports bdGrupoSanchoToro.db.tscGrupoSanchoToro +Imports bdGrupoSanchoToro.db.Utilidades + + +Public Class ucProcesos + + + Private bd As tscGrupoSanchoToro + + + + Public Overrides Sub Cargado() + + End Sub + + + Public Overrides Function EstablecedcPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As tsUtilidades.EstadosAplicacion + gcProcesos.ItemsSource = bd.procesos.ToList + Return tsUtilidades.EstadosAplicacion.AplicacionSinIndice + + End Function + + Public Overrides Sub EstableceDataContextSecundarios(Optional Background As Boolean = False) + + End Sub + + Public Overrides Sub EstableceTitulo() + Me.docpanel.Caption = "Procesos" + + End Sub + + Public Overrides ReadOnly Property idRegistroAplicacionActual As String + Get + Return "Procesos" + End Get + End Property + + Public Overrides ReadOnly Property NombreTablaBase As String + Get + Return "procesos" + End Get + End Property + + Public Overrides ReadOnly Property DescripcionRegistro As String + Get + Return "Procesos" + End Get + End Property + + Public Overrides Function ObtieneBD() As tsUtilidades.ItsContexto + bd = tscGrupoSanchoToro.NuevoContexto() + Return bd + End Function + + + + Public Overrides Function ObtienePermisos() As tsUtilidades.Permisos + Return Comun.ObtienePermisos(Me.bd, "AP.ADMINISTRATIVOS", idUsuario) + End Function + + Private Sub btEjecutar_Click(sender As Object, e As RoutedEventArgs) + + Try + Dim dwi As dxwInicio = CType(Window.GetWindow(Me), dxwInicio) + Dim pr As bdGrupoSanchoToro.db.procesos = CType(Me.gcProcesos.CurrentItem, procesos) + + If pr.Accion <> "" Then + + Dim stipo As String = tsUtilidades.Utilidades.Ttagi(pr.Accion, "CLASE") + Dim tipo As Type + If stipo <> "" Then + Dim sEnsamblado As String = tsUtilidades.Utilidades.Ttagi(pr.Accion, "ENS") + If sEnsamblado <> "" Then + Dim dm As AppDomain = AppDomain.CurrentDomain + Dim b() As Byte = IO.File.ReadAllBytes(sEnsamblado) + tipo = dm.Load(b).GetType(stipo, False, True) + Try + tipo.GetMethod(tsUtilidades.Utilidades.Ttagi(pr.Accion, "SUB")).Invoke(Nothing, Nothing) + tipo = Nothing + Catch ex As Exception + + End Try + Else + tipo = tsUtilidades.Utilidades.FindType(stipo) + End If + Dim sSub As String = tsUtilidades.Utilidades.Ttagi(pr.Accion, "SUB") + Dim sPar As String = tsUtilidades.Utilidades.Ttagi(pr.Accion, "PAR") + + If tipo.GetMethod(sSub).GetParameters.Count = 0 Then + tipo.GetMethod(sSub).Invoke(Nothing, Nothing) + Else + If sPar = "" Then + ' tipo.GetMethod(sSub).Invoke(Nothing, {dwi, Comun.dcfg, Comun.dcn, bdGrupoSanchoToro.db.Utilidades.dsc, pr.Accion}) + tipo.GetMethod(sSub).Invoke(Nothing, {dwi, pr.Accion}) + Else + 'tipo.GetMethod(sSub).Invoke(Nothing, {sPar, dwi, Comun.dcfg, Comun.dcn, bdGrupoSanchoToro.db.Utilidades.dsc, pr.Accion}) + tipo.GetMethod(sSub).Invoke(Nothing, {sPar, dwi, pr.Accion}) + End If + End If + End If + Else + + + Dim oCProvider As New VBCodeProvider + Dim oCompiler As CodeDomProvider = oCProvider + Dim oCParam As New CompilerParameters + oCParam.GenerateInMemory = True + ' oCParam.CompilerOptions = [String].Format("/lib:""{0}""", IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "Reference Assemblies\Microsoft\Framework\v4.0")) + [String].Format(" /lib:""{0}""", IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "Reference Assemblies\Microsoft\Framework\v4.5")) + + + ' Dim a As Assembly = Assembly.GetExecutingAssembly + + 'For Each ra In a.GetReferencedAssemblies + ' oCParam.ReferencedAssemblies.Add(ra.Name) + 'Next + oCParam.ReferencedAssemblies.AddRange(AppDomain.CurrentDomain.GetAssemblies.Where(Function(x) x.IsDynamic = False).Select(Function(x) x.Location).ToArray) + + + + 'oCParam.ReferencedAssemblies.Add("System.dll") + 'oCParam.ReferencedAssemblies.Add("System.Data.dll") + 'oCParam.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll") + 'oCParam.ReferencedAssemblies.Add("PresentationFramework.dll") + 'oCParam.ReferencedAssemblies.Add("GestionParlamento.exe") + + 'Creamos un objeto CompilerResult que obtendrá los resultados de la compilación + Dim oCResult As CompilerResults + + Dim sRutina As String = System.Text.Encoding.UTF8.GetString(pr.idFicheroNavigation.Fichero) + oCResult = oCompiler.CompileAssemblyFromSource(oCParam, sRutina) + + 'Comprobamos que no existan errores de compilación. + Dim oCError As CompilerError + Dim sErrores As String = "" + If oCResult.Errors.Count > 0 Then + 'Si existen errores los mostramos. + 'Si bien, podriamos implementar un mejor método para visualizar + 'los errores de compilación, este nos servirá por los momentos. + For Each oCError In oCResult.Errors + sErrores &= oCError.ErrorText.ToString & " --- " + 'MsgBox(oCError.ErrorText.ToString) + Next + Throw New Exception(sErrores) + Else + 'Como el ensamblado se generó en memoria, debemos obtener + 'una referencia al ensamblado generado, para esto usamos + 'la propiedad CompiledAssembly + Dim oEnsamblado As System.Reflection.Assembly + oEnsamblado = oCResult.CompiledAssembly + Dim oClass As Type = oEnsamblado.GetType("RutinasTecnosis") + oClass.GetMethod("Ejecutar").Invoke(Nothing, Nothing) + End If + + End If + Catch ex As Exception + DXMessageBox.Show(ex.Message, "Error") + End Try + End Sub + + Private Sub Nuevo(sender As Object, e As DevExpress.Xpf.Bars.ItemClickEventArgs) + FuncionesDinamicas.AbrirAP(New ucProceso, OtrosParametros) + End Sub + + Private Sub ap_Enlazar(Celda As DevExpress.Xpf.Grid.EditGridCellData, Defecto As Boolean) Handles Me.Enlazar + Dim P = Comun.ObtienePermisos(Me.bd, "AP.ADMINISTRADOR", idUsuario) + If P.Consultar Then + Dim id As Integer = DirectCast(Me.gcProcesos.CurrentItem, procesos).idProceso + FuncionesDinamicas.AbrirAP(New ucProceso(id), OtrosParametros) + Else + btEjecutar_Click(Nothing, Nothing) + End If + End Sub + +End Class diff --git a/GestionGrupoSanchoToro/ucSerieFactura.xaml b/GestionGrupoSanchoToro/ucSerieFactura.xaml new file mode 100644 index 0000000..6c2f765 --- /dev/null +++ b/GestionGrupoSanchoToro/ucSerieFactura.xaml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/GestionGrupoSanchoToro/ucSerieFactura.xaml.vb b/GestionGrupoSanchoToro/ucSerieFactura.xaml.vb new file mode 100644 index 0000000..da41a28 --- /dev/null +++ b/GestionGrupoSanchoToro/ucSerieFactura.xaml.vb @@ -0,0 +1,132 @@ +Imports tsWPFCore +Imports bdGrupoSanchoToro.db +Imports System.Collections + +Imports bdGrupoSanchoToro.db.Utilidades +Imports DevExpress.Xpf.Bars + +Public Class ucSerieFactura + + + Private bd As tscGrupoSanchoToro + + Dim _idSerie As Integer? + + + + Public Overrides Sub Cargado() + Me.Tipo_ucControlBusqueda = GetType(ucSeriesFacturas) + + End Sub + + Dim ra As seriesfacturas + Public Overrides Function EstablecedcPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As tsUtilidades.EstadosAplicacion + Dim NuevoEstado As tsUtilidades.EstadosAplicacion + + If FuerzaNuevo OrElse _idSerie Is Nothing Then + ra = New seriesfacturas + ra.idEmpresa = EmpresaActual.idEmpresa + Me.DataContext = ra + _idSerie = Nothing + NuevoEstado = tsUtilidades.EstadosAplicacion.Nuevo + Else + ra = bd.seriesfacturas.First(Function(x) x.idSerieFactura = _idSerie.Value) + NuevoEstado = tsUtilidades.EstadosAplicacion.ModificandoRegistro + End If + Me.DataContext = ra + Return NuevoEstado + End Function + + Public Overrides Sub EstableceDataContextSecundarios(Optional Background As Boolean = False) + cbTipo.ItemsSource = tsUtilidades.DescripcionValor.EnumADescripcionValor(GetType(bdGrupoSanchoToro.db.seriesfacturas.TipoSerieFacturaEnum)).OrderBy(Function(x) x.Descripcion) + End Sub + + Public Overrides Sub EstableceTitulo() + If Me.Estado = tsUtilidades.EstadosAplicacion.ModificandoRegistro Then + Me.docpanel.Caption = "Serie " & ra.Serie + Me.docpanel.Tag = "Serie." & ra.Serie.ToString + Else + Me.docpanel.Caption = "Serie nueva" + Me.docpanel.Tag = "Serie.Nuevo" + End If + End Sub + + Public Overrides ReadOnly Property idRegistroAplicacionActual As String + Get + If Estado = tsUtilidades.EstadosAplicacion.Nuevo Then + Return "Serie.Nuevo" + Else + Return "Serie." & ra.Serie.ToString + End If + End Get + End Property + + Public Overrides ReadOnly Property NombreTablaBase As String + Get + Return "seriesfacturas" + End Get + End Property + + Public Overrides ReadOnly Property DescripcionRegistro As String + Get + Return "Serie" + End Get + End Property + + Public Overrides Function ObtieneBD() As tsUtilidades.ItsContexto + bd = tscGrupoSanchoToro.NuevoContexto() + Return bd + End Function + + + + Public Overrides Function ObtienePermisos() As tsUtilidades.Permisos + Return Comun.ObtienePermisos(Me.bd, "AP.ADMINISTRATIVOS", idUsuario) + End Function + + + + + + Public Sub New(Optional idSerie As Integer? = Nothing) + + ' Llamada necesaria para el diseñador. + InitializeComponent() + _idSerie = idSerie + + ' Agregue cualquier inicialización después de la llamada a InitializeComponent(). + + End Sub + + Private Sub ucSerie_AntesGuardar(sender As Object, e As ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, EliminacionManual As Integer) Handles Me.AntesGuardar + Dim hte As New Hashtable + If Estado = tsUtilidades.EstadosAplicacion.ModificandoRegistro Then + If bd.seriesfacturas.Any(Function(x) x.idSerieFactura <> ra.idSerieFactura AndAlso x.idEmpresa = EmpresaActual.idEmpresa AndAlso x.Serie = ra.Serie) Then + hte.Add("ALMACENAR-SERIE_YA_EXISTENTE", "Ya existe esa serie de factura.") + End If + If ra.NumeroDigitos > 18 Or ra.NumeroDigitos < 4 Then + hte.Add("ALMACENAR-NUMERO_DIGITOS_INVÁLIDOS", "Los nº de dígitos deben estar entre 4 y 18") + End If + End If + If hte.Count > 0 Then + MensajesError = hte + Cancelar = True + End If + End Sub + + Private Sub ucSerie_DespuesGuardar(sender As Object, e As ItemClickEventArgs, OpcionGuardado As Integer) Handles Me.DespuesGuardar + Dim fi As seriesfacturas = Me.DataContext + _idSerie = fi.idSerieFactura + End Sub + + Private Sub ucSerieFactura_AntesEliminar(sender As Object, e As ItemClickEventArgs, ByRef Cancelar As Boolean, ByRef MensajesError As Hashtable, ByRef OmitirPreguntaContinuar As Boolean) Handles Me.AntesEliminar + Dim hte As New Hashtable + If bd.facturas.Any(Function(x) x.idSerieFactura = ra.idSerieFactura) Then + hte.Add("ALMACENAR-SERIE_CON_FACTURAS", "No se puede eliminar una serie si ya tiene facturas.") + End If + If hte.Count > 0 Then + MensajesError = hte + Cancelar = True + End If + End Sub +End Class diff --git a/GestionGrupoSanchoToro/ucSeriesFacturas.xaml b/GestionGrupoSanchoToro/ucSeriesFacturas.xaml new file mode 100644 index 0000000..f50fce1 --- /dev/null +++ b/GestionGrupoSanchoToro/ucSeriesFacturas.xaml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/GestionGrupoSanchoToro/ucSeriesFacturas.xaml.vb b/GestionGrupoSanchoToro/ucSeriesFacturas.xaml.vb new file mode 100644 index 0000000..099b16d --- /dev/null +++ b/GestionGrupoSanchoToro/ucSeriesFacturas.xaml.vb @@ -0,0 +1,69 @@ +Imports bdGrupoSanchoToro.db.Utilidades +Imports DevExpress.Xpf.Grid +Public Class ucSeriesFacturas + Private bd As tscGrupoSanchoToro + Public Overrides Sub Cargado() + + End Sub + Public Overrides Function EstablecedcPrincipal(Optional Background As Boolean = False, Optional FuerzaNuevo As Boolean = False, Optional Refrescar As Boolean = False) As tsUtilidades.EstadosAplicacion + If cbIncluirBajas.IsChecked Then + gcSeries.ItemsSource = bd.seriesfacturas.Where(Function(x) x.idEmpresa = EmpresaActual.idEmpresa).OrderBy(Function(x) x.idSerieFactura).ToList + Else + gcSeries.ItemsSource = bd.seriesfacturas.Where(Function(x) x.idEmpresa = EmpresaActual.idEmpresa AndAlso x.FechaBaja Is Nothing).OrderBy(Function(x) x.idSerieFactura).ToList + End If + + Return tsUtilidades.EstadosAplicacion.AplicacionSinIndice + End Function + + Public Overrides Sub EstableceDataContextSecundarios(Optional Background As Boolean = False) + + End Sub + + Public Overrides Sub EstableceTitulo() + Me.docpanel.Caption = "Series de Facturas" + + End Sub + + Public Overrides ReadOnly Property idRegistroAplicacionActual As String + Get + Return "SeriesFacturas" + End Get + End Property + + Public Overrides ReadOnly Property NombreTablaBase As String + Get + Return "seriesfacturas" + End Get + End Property + + Public Overrides ReadOnly Property DescripcionRegistro As String + Get + Return "Serie de Factura" + End Get + End Property + + Public Overrides Function ObtieneBD() As tsUtilidades.ItsContexto + bd = tscGrupoSanchoToro.NuevoContexto() + Return bd + End Function + + + + Public Overrides Function ObtienePermisos() As tsUtilidades.Permisos + Return Comun.ObtienePermisos(Me.bd, "AP.ADMINISTRATIVOS", idUsuario) + End Function + + Private Sub cbIncluirBajas_EditValueChanged(sender As Object, e As DevExpress.Xpf.Editors.EditValueChangedEventArgs) + EstablecedcPrincipal() + End Sub + + Private Sub ucSeriesFacturas_BotonNuevoPulsado() Handles Me.BotonNuevoPulsado + FuncionesDinamicas.AbrirAP(New ucSerieFactura(), Me.OtrosParametros) + + End Sub + + Private Sub ucSeriesFacturas_Enlazar(Celda As EditGridCellData, Defecto As Boolean) Handles Me.Enlazar + Dim sf As db.seriesfacturas = gcSeries.CurrentItem + FuncionesDinamicas.AbrirAP(New ucSerieFactura(sf.idSerieFactura), Me.OtrosParametros) + End Sub +End Class diff --git a/GestionGrupoSanchoToro/ucTraspasoCaja.xaml b/GestionGrupoSanchoToro/ucTraspasoCaja.xaml new file mode 100644 index 0000000..d4c706c --- /dev/null +++ b/GestionGrupoSanchoToro/ucTraspasoCaja.xaml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +