Пример #1
0
        public override bool Ejecutar()
        {
            // Se verifica si ya se hizo el cierre de caja
            if (UtilDatos.VerCierreDeDaja())
            {
                UtilLocal.MensajeAdvertencia("Ya se hizo el Corte de Caja. No se puede continuar.");
                return(false);
            }

            // Se realiza la acción según el caso
            bool bResultado;

            if (this.ctlBusqueda.GarantiaNueva)
            {
                bResultado = this.AgregarGarantia();
            }
            else
            {
                bResultado = this.CompletarGarantia();
            }

            if (!bResultado)
            {
                return(false);
            }

            // Se muestra una notifiación con el resultado
            UtilLocal.MostrarNotificacion("Garantía guardada correctamente.");

            // Se limpia después de haberse guardado
            this.Limpiar();

            return(true);
        }
Пример #2
0
        private void btnCancelarFacPen_Click(object sender, EventArgs e)
        {
            if (this.dgvFacturasPorCancelar.CurrentRow == null)
            {
                UtilLocal.MensajeAdvertencia("No hay ninguna factura por cancelar seleccionada.");
                return;
            }

            this.btnCancelarFacPen.Enabled = false;
            Cargando.Mostrar();

            int    iVentaFacturaDevolucionID = Util.Entero(this.dgvFacturasPorCancelar.CurrentRow.Cells["VentaFacturaDevolucionID"].Value);
            string sFolioFiscal = Util.Cadena(this.dgvFacturasPorCancelar.CurrentRow.Cells["FolioFiscal"].Value);
            var    Res          = VentasLoc.GenerarFacturaCancelacion(sFolioFiscal, iVentaFacturaDevolucionID);

            if (Res.Exito)
            {
                this.ActualizarFacturasPorCancelar();
                Cargando.Cerrar();
            }
            else
            {
                Cargando.Cerrar();
                UtilLocal.MensajeAdvertencia("Hubo un error al cancelar la factura:\n\n" + Res.Mensaje);
            }

            this.btnCancelarFacPen.Enabled = true;
        }
Пример #3
0
        public override bool Ejecutar()
        {
            // Se verifica si ya se hizo el cierre de caja
            if (UtilDatos.VerCierreDeDaja())
            {
                UtilLocal.MensajeAdvertencia("Ya se hizo el Corte de Caja. No se puede continuar.");
                return(false);
            }

            bool bExito;

            if (this.Opcion == eOpcion.Agregar)
            {
                bExito = this.Agregar9500();
            }
            else
            {
                bExito = this.Completar9500();
            }

            if (!bExito)
            {
                return(false);
            }

            // Se limpia después de haberse guardado
            this.Limpiar();

            return(true);
        }
Пример #4
0
        private bool GastoEliminar(DataGridViewRow oFila)
        {
            // Se verifica si es un gasto desde caja, el cual no se puede borrar
            int iEgresoID = Util.Entero(oFila.Cells["Gastos_ContaEgresoID"].Value);

            if (Datos.Exists <CajaEgreso>(c => c.ContaEgresoID == iEgresoID))
            {
                UtilLocal.MensajeAdvertencia("El gasto especificado se creó desde caja. No se puede eliminar desde aquí.");
                return(false);
            }

            if (UtilLocal.MensajePregunta(string.Format("¿Estás seguro que deseas eliminar el gasto \"{0}\"?", oFila.Cells["Gastos_Observaciones"].Value)) != DialogResult.Yes)
            {
                return(false);
            }

            // Se borra el gasto, de manera lógica
            // var oEgreso = General.GetEntity<ContaEgreso>(c => c.ContaEgresoID == iEgresoID && c.Estatus);
            // Datos.Eliminar<ContaEgreso>(oEgreso, true);
            ContaProc.GastoEliminar(iEgresoID);

            // Se actualizan los datos
            this.dgvGastos.Rows.Clear();
            this.LlenarCuentasTotales();

            return(true);
        }
Пример #5
0
        public static void MostrarEventosClientes(bool bAbiertoManual)
        {
            DateTime dHoy     = DateTime.Now.Date;
            DateTime dManiana = dHoy.AddDays(1);
            var      oAlertas = Datos.GetListOf <ClientesEventosCalendarioView>(c => c.Fecha >= dHoy && c.Fecha < dManiana && !c.Revisado).OrderBy(c => c.Fecha);

            Eventos.Instance.LimpiarEventos();
            foreach (var oReg in oAlertas)
            {
                /* if (oReg.Fecha < DateTime.Now)
                 *  AdmonProc.MostrarRecordatorioClientes(oReg.ClienteEventoCalendarioID);
                 * else
                 *  Program.oTimers.Add("AlertaPedido" + Program.oTimers.Count.ToString(), new System.Threading.Timer(new TimerCallback(AdmonProc.MostrarRecordatorioClientes)
                 *      , oReg.ClienteEventoCalendarioID, (int)(oReg.Fecha - DateTime.Now).TotalMilliseconds, Timeout.Infinite));
                 */

                Eventos.Instance.AgregarEvento(oReg.ClienteEventoCalendarioID, oReg.Fecha, oReg.Cliente, oReg.Evento);
            }

            // Se muestra el formulario de eventos
            if (oAlertas.Count() > 0)
            {
                Eventos.Instance.Show();
            }
            else if (bAbiertoManual)
            {
                UtilLocal.MensajeAdvertencia("No hay avisos pendientes por notificar.");
            }
        }
Пример #6
0
        private void CargarCsv(string sRutaCsv)
        {
            // Verifica que el archivo exista
            if (!File.Exists(sRutaCsv))
            {
                UtilLocal.MensajeAdvertencia("El archivo especificado no existe.");
                return;
            }

            // Se lee el archivo csv
            var oDatos = Util.LeerCsv(sRutaCsv);

            // Se generan las columnas
            this.dgvProceso.Columns.Clear();
            foreach (DataColumn oCol in oDatos.Columns)
            {
                int iCol = this.dgvProceso.Columns.Add(oCol.ColumnName, oCol.ColumnName);
                // this.dgvProceso.Columns[iCol].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
            }

            // Se insertan los registros
            this.dgvProceso.Rows.Clear();
            foreach (DataRow oFila in oDatos.Rows)
            {
                this.dgvProceso.Rows.Add(oFila.ItemArray);
                // int iFila = this.dgvProceso.Rows.Add();
                // for (int iCol = 0; iCol < oFila.ItemArray.Length; iCol++)
                //     this.dgvProceso[iCol, iFila].Value = oFila[iCol];
            }

            this.prgProgreso.Inicializar(this.dgvProceso.Rows.Count, 1);
        }
Пример #7
0
        // Ya no se usa
        private void AgregarNotaDeCredito(int iNotaID)
        {
            if (this.NotasDeCredito.ContainsKey(iNotaID))
            {
                return;
            }

            var Nota = Datos.GetEntity <NotaDeCredito>(q => q.NotaDeCreditoID == iNotaID);

            // Se verifica si existe la nota de crédito
            if (Nota == null)
            {
                UtilLocal.MensajeAdvertencia("La Nota de Crédito especificada no existe.");
                return;
            }

            // Se verifica si es del cliente seleccionado
            if (Nota.ClienteID != this.ClienteID)
            {
                this.ctlAdvertencia.PonerError(this.txtNotaDeCredito,
                                               "Una o más Notas de Crédito no pertenecen al Cliente seleccionado. Se requerirá autorización para continuar.", ErrorIconAlignment.MiddleLeft);
            }

            // Se agrea la nota de crédito
            this.txtNotaDeCredito.Text += (", " + iNotaID.ToString());
            this.NotasDeCredito.Add(iNotaID, Nota.Importe);

            this.CalcularTotales();
        }
Пример #8
0
        private void Cancelar9500(int i9500ID)
        {
            var o9500 = Datos.GetEntity <Cotizacion9500>(q => q.Cotizacion9500ID == i9500ID && q.Estatus);

            // Se valida que ya se haya cobrado la venta del anticipo
            var oVenta = Datos.GetEntity <Venta>(q => q.VentaID == o9500.AnticipoVentaID && q.Estatus);

            if (oVenta.VentaEstatusID == Cat.VentasEstatus.Realizada)
            {
                UtilLocal.MensajeAdvertencia("El 9500 seleccionado no ha sido cobrado. Para cancelarlo, cancela la Venta del anticipo desde Ventas por Cobrar.");
                return;
            }

            if (UtilLocal.MensajePregunta("¿Estás seguro que deseas cancelar el 9500 seleccionado?") == DialogResult.Yes)
            {
                var oMotivo = UtilLocal.ObtenerValor("¿Cuál es el motivo de la baja?", "", MensajeObtenerValor.Tipo.TextoLargo);
                if (oMotivo == null)
                {
                    return;
                }
                var oResU = UtilLocal.ValidarObtenerUsuario();
                if (oResU.Error)
                {
                    return;
                }

                Cargando.Mostrar();
                // Se cancela el 9500
                VentasProc.Cancelar9500(i9500ID, Util.Cadena(oMotivo), oResU.Respuesta.UsuarioID);
                Cargando.Cerrar();
                this.CargarLista9500();
            }
        }
Пример #9
0
        public void ActualizarDatos()
        {
            // Se oculta la ventana de cobro, por si estuviera visible
            this.ctlCobro.SendToBack();
            // Se limpian los datos de detalle
            this.ctlDetalle.LimpiarDetalle();

            // Se limpian los datos del Grid
            this.dgvDatos.Rows.Clear();
            // Se cargan las ventas pendientes en el Grid
            DateTime dHoy    = DateTime.Today;
            var      oVentas = Datos.GetListOf <VentasView>(q => q.SucursalID == GlobalClass.SucursalID &&
                                                            q.VentaEstatusID == Cat.VentasEstatus.Realizada && EntityFunctions.TruncateTime(q.Fecha) == dHoy);

            foreach (var oVenta in oVentas)
            {
                this.dgvDatos.Rows.Add(oVenta.VentaID, oVenta.ClienteID, oVenta.Facturada, oVenta.Folio, oVenta.Cliente, oVenta.Vendedor, oVenta.Total);
            }

            // Se muestra ventana de recordatorio de cambio de turno, si aplica
            DateTime dHora = (DateTime.Now > dHoy.AddHours(18) ? dHoy.AddHours(18) : (DateTime.Now > dHoy.AddHours(12) ? dHoy.AddHours(12) : dHoy));

            if (dHora > dHoy && !Datos.Exists <CajaCambioDeTurno>(c => c.SucursalID == GlobalClass.SucursalID && c.Fecha >= dHora))
            {
                UtilLocal.MensajeAdvertencia("Favor de realizar un Cambio de Turno para verificar caja.");
            }
        }
Пример #10
0
        private void PolizasCambiarFecha()
        {
            if (this.dgvDetalle.SelectedRows.Count <= 0)
            {
                UtilLocal.MensajeAdvertencia("No hay ninguna póliza seleccionada.");
                return;
            }

            if (UtilLocal.MensajePregunta(string.Format("Se han seleccionado {0} pólizas. ¿Estás seguro que deseas cambiar la fecha de todas esas pólizas?"
                                                        , this.dgvDetalle.SelectedRows.Count)) != DialogResult.Yes)
            {
                return;
            }

            // Se pide la nueva sucursal
            var frmValor = new MensajeObtenerValor("Selecciona la nueva fecha:", DateTime.Now, MensajeObtenerValor.Tipo.Fecha);

            if (frmValor.ShowDialog(Principal.Instance) == DialogResult.OK)
            {
                DateTime dNueva = Util.FechaHora(frmValor.Valor).Date;
                foreach (DataGridViewRow oFila in this.dgvDetalle.SelectedRows)
                {
                    int iPolizaID = Util.Entero(oFila.Cells["ContaPolizaID"].Value);
                    var oPoliza   = Datos.GetEntity <ContaPoliza>(c => c.ContaPolizaID == iPolizaID);
                    oPoliza.Fecha = (dNueva.Add(oPoliza.Fecha - oPoliza.Fecha.Date));
                    Datos.Guardar <ContaPoliza>(oPoliza);
                }
                this.LlenarArbol();
            }
            frmValor.Dispose();
        }
Пример #11
0
        public static bool ValidarPermiso(int iUsuarioID, string sPermiso, bool bMostrarMensaje)
        {
            bool bValido = Datos.Exists <UsuariosPermisosView>(c => c.UsuarioID == iUsuarioID && c.Permiso == sPermiso);

            if (bValido)
            {
                return(true);
            }
            else
            {
                if (bMostrarMensaje)
                {
                    var oPermiso = Datos.GetEntity <Permiso>(c => c.NombrePermiso == sPermiso);
                    if (oPermiso == null)
                    {
                        UtilLocal.MensajeError("El Permiso especificado ni siquiera existe. ¡Échame la mano!");
                    }
                    else
                    {
                        UtilLocal.MensajeAdvertencia(oPermiso.MensajeDeError);
                    }
                }
                return(false);
            }
        }
Пример #12
0
 private void FilaCambioImporteAUsar(DataGridViewRow Fila)
 {
     if (Util.Decimal(Fila.Cells["ImporteAUsar"].Value) > Util.Decimal(Fila.Cells["Importe"].Value))
     {
         UtilLocal.MensajeAdvertencia("El importe a usar es mayor que el importe total de la nota de crédito.");
         Fila.Cells["ImporteAUsar"].Value = 0;
     }
     this.CalcularTotal();
 }
Пример #13
0
 public static bool ValidarTodosPermisos(string pagina)
 {
     if (ValidarPermisosCalculoCuadroMultiple(pagina).Count <= 0 || ValidarPermisosTiendaCuadroMultiple(pagina).ToArray().Length <= 0)
     {
         UtilLocal.MensajeAdvertencia("No existen permisos para esta página");
         return(false);
     }
     return(true);
 }
Пример #14
0
        private void btnMostrar_Click(object sender, EventArgs e)
        {
            if (this.cmbSucursal.SelectedValue == null)
            {
                UtilLocal.MensajeAdvertencia("Debes seleccionar una sucursal.");
                return;
            }

            this.CargarDatos();
        }
Пример #15
0
        /*
         * public static Form MostrarPantallaIniciando()
         * {
         *  var frmIniciando = new Form()
         *  {
         *      FormBorderStyle = FormBorderStyle.None,
         *      ShowInTaskbar = false,
         *      Size = new System.Drawing.Size(700, 400),
         *      StartPosition = FormStartPosition.CenterScreen,
         *  };
         *  var lblMensaje = new Label()
         *  {
         *      BackColor = System.Drawing.Color.FromArgb(58, 79, 109),
         *      BorderStyle = BorderStyle.FixedSingle,
         *      Dock = DockStyle.Fill,
         *      ForeColor = System.Drawing.Color.White,
         *      Font = new System.Drawing.Font("Arial", 14),
         *      Text = "Theos está iniciando..",
         *      TextAlign = System.Drawing.ContentAlignment.MiddleCenter
         *  };
         *  frmIniciando.Controls.Add(lblMensaje);
         *  frmIniciando.Show();
         *  Application.DoEvents();
         * }
         */

        public static bool VerNuevaVersion()
        {
            string sRutaActualizacion = Util.AgregarSeparadorDeCarpeta(Config.Valor("Actualizacion.RutaArchivos"));
            string sNombreExe         = AppDomain.CurrentDomain.FriendlyName;
            string sRutaEjecutable    = (sRutaActualizacion + sNombreExe);

            // Se verifica si existe el archivo ejecutable
            if (!File.Exists(sRutaEjecutable))
            {
                return(false);
            }

            // Se verifica si la versión es más nueva
            bool bActualizar = false;
            var  oInfoVer    = FileVersionInfo.GetVersionInfo(sRutaEjecutable);

            if (Application.ProductVersion != oInfoVer.ProductVersion)
            {
                var aVerAct         = Application.ProductVersion.Split('.');
                var aVerNueva       = oInfoVer.ProductVersion.Split('.');
                int iNumerosVersion = Math.Min(aVerAct.Length, aVerNueva.Length);
                for (int i = 0; i < iNumerosVersion; i++)
                {
                    if (Util.Entero(aVerAct[i]) < Util.Entero(aVerNueva[i]))
                    {
                        bActualizar = true;
                        break;
                    }
                }
            }


            if (bActualizar)
            {
                if (UtilLocal.MensajePregunta(string.Format("Hay una versión más nueva de la aplicación ({0})\n¿Deseas cerrar el sistema y aplicar la actualización?"
                                                            , oInfoVer.ProductVersion)) != DialogResult.Yes)
                {
                    return(false);
                }

                // Se abre el actualizador y se cierra el sistema
                string sRutaAp = UtilLocal.RutaAplicacion();
                if (File.Exists(sRutaAp + Program.NombreActualizador))
                {
                    Process.Start(sRutaAp + Program.NombreActualizador, string.Format(" -t ap -r \"{0}\"", sRutaActualizacion));
                    return(true);
                }
                else
                {
                    UtilLocal.MensajeAdvertencia("No se encontró el archivo del Actualizador.");
                }
            }

            return(false);
        }
Пример #16
0
        private void CargarAsignacion()
        {
            Cargando.Mostrar();

            int iLineaID   = Util.Entero(this.cmbLinea.SelectedValue);
            var oCantidad  = Datos.GetListOf <InventarioLineasPartesView>(c => c.LineaID == iLineaID);
            var oCapacidad = Datos.GetListOf <InventarioUsuariosView>().OrderBy(o => o.SucursalID).ToList();

            // Se determina cuántos le corresponden a cada usuario
            var  oUsuariosCant = new Dictionary <int, int>();
            bool bUsuariosRep  = false;

            foreach (var oReg in oCantidad)
            {
                var oUsuarios = oCapacidad.Where(c => c.SucursalID == oReg.SucursalID).ToList();
                if (oUsuarios.Count <= 0)
                {
                    continue;
                }

                int iCantPorUsuario = (oReg.Partes.Valor() / oUsuarios.Count);
                foreach (var oUsuario in oUsuarios)
                {
                    if (oUsuariosCant.ContainsKey(oUsuario.InvUsuarioID))
                    {
                        bUsuariosRep = true;
                    }
                    else
                    {
                        oUsuariosCant.Add(oUsuario.InvUsuarioID, iCantPorUsuario);
                    }
                }
                int iDiferencia = (oReg.Partes.Valor() - (iCantPorUsuario * oUsuarios.Count));
                if (iDiferencia > 0)
                {
                    oUsuariosCant[oUsuarios[0].InvUsuarioID] += iDiferencia;
                }
            }
            if (bUsuariosRep)
            {
                UtilLocal.MensajeAdvertencia("Existe uno o más usuarios repetidos en las diferentes sucursales. Revisar.");
            }

            // Se llena el grid de asignación
            this.dgvAsignacionManual.Rows.Clear();
            foreach (var oReg in oCapacidad)
            {
                int iPartes = oCantidad.SingleOrDefault(c => c.SucursalID == oReg.SucursalID).Partes.Valor();
                this.dgvAsignacionManual.Rows.Add(oReg.SucursalID, oReg.InvUsuarioID, oReg.Sucursal, iPartes, oReg.Usuario, oUsuariosCant[oReg.InvUsuarioID]);
            }

            Cargando.Cerrar();
            this.btnAsignar.Enabled = true;
        }
Пример #17
0
        private void btnReagendar_Click(object sender, EventArgs e)
        {
            if (this.dtpFechaHora.Value <= DateTime.Now)
            {
                UtilLocal.MensajeAdvertencia("No puedes agendar un evento para el pasado.");
                return;
            }

            this.oEvento.Fecha  = this.dtpFechaHora.Value;
            this.oEvento.Evento = this.txtEvento.Text;
            Datos.Guardar <ProveedorEventoCalendario>(this.oEvento);
            this.Close();
        }
Пример #18
0
        public override void FilaVistoBuenoCambiado(DataGridViewRow Fila, bool bVistoBueno)
        {
            if (this.Actualizando)
            {
                return;
            }

            string sCatTabla    = Util.Cadena(Fila.Cells["Tabla"].Value);
            int    iRegistroID  = Util.Entero(Fila.Cells["RegistroID"].Value);
            int    iUsuarioVBId = GlobalClass.UsuarioGlobal.UsuarioID;

            // Se obtiene el visto bueno a marcar/desmarcar, si es que ya existe
            DateTime dHoy        = DateTime.Today;
            var      oVistoBueno = Datos.GetEntity <CajaVistoBueno>(q => q.CatTabla == sCatTabla && q.TablaRegistroID == iRegistroID &&
                                                                    EntityFunctions.TruncateTime(q.Fecha) == dHoy);

            if (bVistoBueno)
            {
                if (oVistoBueno == null)
                {
                    // Se guarda el dato de visto bueno
                    oVistoBueno = new CajaVistoBueno()
                    {
                        CatTabla            = sCatTabla,
                        TablaRegistroID     = iRegistroID,
                        UsuarioVistoBuenoID = iUsuarioVBId,
                        Fecha = DateTime.Now
                    };
                    Datos.Guardar <CajaVistoBueno>(oVistoBueno);
                }
                else
                {
                    UtilLocal.MensajeAdvertencia("Ya existe un Visto Bueno para el registro especificado.");
                }
                Fila.Cells["TextoCheck"].Value = oVistoBueno.Fecha.ToString(CajaDetalleCorte.FormatoHora);
            }
            else
            {
                // Se borra el dato de visto bueno
                if (oVistoBueno == null)
                {
                    UtilLocal.MensajeAdvertencia("No se encontró el Visto Bueno especificado, en la base de datos.");
                }
                else
                {
                    Datos.Eliminar <CajaVistoBueno>(oVistoBueno, false);
                }
                Fila.Cells["TextoCheck"].Value = "";
            }
        }
Пример #19
0
 private void txtReimpresion_KeyPress(object sender, KeyPressEventArgs e)
 {
     if (e.KeyChar == (char)Keys.Enter)
     {
         this.txtReimpresion.SelectAll();
         string sFolioCob = this.txtReimpresion.Text;
         var    oCobranza = Datos.GetEntity <CobranzaTicket>(q => q.Ticket == sFolioCob);
         if (oCobranza == null)
         {
             UtilLocal.MensajeAdvertencia("El folio de Cobranza especificado no existe.");
             return;
         }
         VentasLoc.GenerarTicketCobranza(sFolioCob);
     }
 }
Пример #20
0
 public static void EnviarMensajeTcp(string sEquipo, string sCodigo, string sMensaje)
 {
     try
     {
         int iPuerto  = GlobalClass.Puerto;
         var oTcpCli  = new TcpClient(sEquipo, iPuerto);
         var oStream  = oTcpCli.GetStream();
         var oMensaje = UTF8Encoding.UTF8.GetBytes(sCodigo + sMensaje);
         oStream.Write(oMensaje, 0, oMensaje.Length);
         oStream.Close(1000 * 1);
     }
     catch (Exception oEx)
     {
         UtilLocal.MensajeAdvertencia("Error al mandar un mensaje a través de Ip.\n\n" + oEx.Message + "\n" + Util.Cadena(oEx.InnerException));
     }
 }
Пример #21
0
        private void btnAgregar_Click(object sender, System.EventArgs e)
        {
            // Se valida el permiso
            if (this.PermisoAgregar != "")
            {
                UtilLocal.MensajeAdvertencia(this.PermisoAgregar);
                return;
            }

            var frmCambio = new CambiosSistemaDetalle();

            frmCambio.ShowDialog(Principal.Instance);
            if (frmCambio.DialogResult == DialogResult.OK)
            {
                this.ActualizarDatos();
            }
        }
Пример #22
0
        private void btnAceptar_Click(object sender, System.EventArgs e)
        {
            // Se valida el usuario
            this.UsuarioSel = UtilDatos.ObtenerUsuarioDeContrasenia(this.txtContrasenia.Text);
            this.Valido     = (this.UsuarioSel != null);
            if (!this.Valido)
            {
                UtilLocal.MensajeAdvertencia("Usuario o contraseña inválidos.");
                this.RegresarAContrasenia();
                return;
            }
            // Se valida que el usuario esté activo
            if (!this.UsuarioSel.Activo)
            {
                UtilLocal.MensajeAdvertencia("El Usuario especificado no está activo en el sistema.");
                this.RegresarAContrasenia();
                return;
            }

            // Se valida la sucursal, si aplica
            if (this.MostrarSeleccionDeSucursal && this.SucursalID != GlobalClass.SucursalID)
            {
                bool bPermiso = UtilLocal.ValidarPermiso(this.UsuarioSel.UsuarioID, "Sistema.VerOtrasSucursales", true);
                if (!bPermiso)
                {
                    this.RegresarAContrasenia();
                    return;
                }
            }

            // Se validan los permisos, si hay
            if (this.Permisos != null)
            {
                var oResV = UtilDatos.ValidarUsuarioPermisos(this.UsuarioSel.UsuarioID, this.Permisos, this.CumplirTodosLosPermisos);
                if (oResV.Error)
                {
                    UtilLocal.MensajeAdvertencia(oResV.Mensaje);
                    this.RegresarAContrasenia();
                    return;
                }
            }

            this.DialogResult = DialogResult.OK;
            this.Close();
        }
Пример #23
0
        private void VerTicketDevolucion()
        {
            string sFolio = this.txtReimpresion.Text;
            var    oVenta = Datos.GetEntity <Venta>(c => c.Folio == sFolio && c.Estatus);

            if (oVenta == null)
            {
                UtilLocal.MensajeAdvertencia("La venta especificada no existe.");
                return;
            }

            // Se obtiene la devolución a reimprimir
            var oDevs  = Datos.GetListOf <VentasDevolucionesView>(c => c.VentaID == oVenta.VentaID);
            int iDevID = 0;

            if (oDevs.Count == 0)
            {
                UtilLocal.MensajeAdvertencia("La venta especificada no tiene devoluciones/cancelaciones.");
                return;
            }
            else if (oDevs.Count > 1)
            {
                var frmListado = new SeleccionListado(oDevs);
                frmListado.Text = "Selecciona una Devolución/Cancelación";
                frmListado.MostrarColumnas("Fecha", "VentaDevolucionID", "Total");
                frmListado.dgvListado.Columns["VentaDevolucionID"].HeaderText = "Folio Dev.";
                frmListado.dgvListado.Columns["Total"].FormatoMoneda();
                if (frmListado.ShowDialog(Principal.Instance) == DialogResult.OK)
                {
                    iDevID = Util.Entero(frmListado.Seleccion["VentaDevolucionID"]);
                }
                frmListado.Dispose();
            }
            else
            {
                iDevID = oDevs[0].VentaDevolucionID;
            }

            // Se manda reimprimir
            if (iDevID > 0)
            {
                VentasLoc.GenerarTicketDevolucion(iDevID);
                this.txtReimpresion.Clear();
            }
        }
Пример #24
0
        private void FijarDescripcion(string sNumeroDeParte)
        {
            var Partes = Datos.GetListOf <PartesView>(q => q.NumeroDeParte == sNumeroDeParte);

            this.ParteIDSel = 0;
            bool bSel = false;

            if (Partes.Count > 0)  // Se tiene que mostrar un listado
            {
                var Lista = new ObtenerElementoLista("Selecciona la parte que deseas utilizar o presiona el botón \"Ninguna\" si no es alguna de las listadas."
                                                     , Partes);
                Lista.MostrarColumnas("Descripcion", "Marca", "Linea");
                Lista.btnAceptar.Text = "&Seleccionar";
                Lista.btnCerrar.Text  = "&Ninguna";
                if (Lista.ShowDialog(Principal.Instance) == DialogResult.OK)
                {
                    // Se verifica si la parte tiene su máximo mayor a cero, lo cual indica que no puede ser 9500
                    int iParteID = Util.Entero(Lista.Sel["ParteID"]);
                    if (Datos.Exists <ParteMaxMin>(c => c.ParteID == iParteID && c.Maximo > 0))
                    {
                        UtilLocal.MensajeAdvertencia("Este artículo no puede ser 9500. Si no hay existencia, favor de reportarlo al Departamento de Compras.");
                        this.txtDescripcion.Text     = "";
                        this.txtDescripcion.ReadOnly = true;
                        return;
                    }

                    this.txtDescripcion.Text = Util.Cadena(Lista.Sel["Descripcion"]);
                    this.ParteIDSel          = iParteID;
                    // this.chkPaqueteria.Focus();
                    bSel = true;
                }
            }
            else
            {
                // Se sugiere el nombre
                var oProvGanV = (this.cmbLineaMarca.SelectedItem as ProveedoresMarcasLineasView);
                if (oProvGanV != null)
                {
                    this.txtDescripcion.Text = UtilDatos.GenerarSugerenciaNombreParte(oProvGanV.LineaID, oProvGanV.MarcaID, sNumeroDeParte);
                }
            }

            this.txtDescripcion.ReadOnly = bSel;
        }
Пример #25
0
        private void dgvNotasDeCredito_KeyDown(object sender, KeyEventArgs e)
        {
            if (this.dgvNotasDeCredito.CurrentRow == null)
            {
                return;
            }

            if (e.KeyCode == Keys.Delete)
            {
                // Se verifica la nota de crédito seleccionada
                int iNotaDeCreditoID = Util.Entero(this.dgvNotasDeCredito.CurrentRow.Cells["ncNotaDeCreditoID"].Value);
                var oNota            = Datos.GetEntity <NotaDeCredito>(q => q.NotaDeCreditoID == iNotaDeCreditoID && q.Estatus);
                if (oNota.Valida == false)
                {
                    UtilLocal.MensajeAdvertencia("La nota de crédito seleccionada ya no es válida. No se puede continuar.");
                    return;
                }

                if (UtilLocal.MensajePregunta("¿Estás seguro que deseas dar de baja la nota de crédito seleccionada?") == DialogResult.Yes)
                {
                    // Se solicita el motivo
                    var oMotivo = UtilLocal.ObtenerValor("Indica el motivo de la baja", "", MensajeObtenerValor.Tipo.TextoLargo);
                    if (oMotivo != null)
                    {
                        // Se solicita la validación de usuario
                        var ResU = UtilLocal.ValidarObtenerUsuario("Ventas.NotasDeCredito.Baja");
                        if (ResU.Exito)
                        {
                            oNota.Valida     = false;
                            oNota.MotivoBaja = Util.Cadena(oMotivo);
                            Datos.Guardar <NotaDeCredito>(oNota);
                            this.NcAplicarFiltro();
                        }
                        else
                        {
                            if (ResU.Respuesta != null)
                            {
                                UtilLocal.MensajeAdvertencia("No tienes permisos para realizar la operación solicitada.");
                            }
                        }
                    }
                }
            }
        }
Пример #26
0
        private void FilaCambioId(DataGridViewRow Fila)
        {
            int iNotaID = Util.Entero(Fila.Cells["NotaDeCreditoID"].Value);
            var oNota   = Datos.GetEntity <NotaDeCredito>(q => q.NotaDeCreditoID == iNotaID && q.Valida && q.Estatus);

            if (oNota == null)
            {
                UtilLocal.MensajeAdvertencia("La nota de crédito especificada no es válida.");
            }

            Fila.Cells["colClienteID"].Value = (oNota == null ? 0 : oNota.ClienteID);
            Fila.Cells["Usar"].Value         = (oNota != null);
            Fila.Cells["Importe"].Value      = (oNota == null ? 0 : oNota.Importe);
            Fila.Cells["ImporteAUsar"].Value = (oNota == null ? 0 : oNota.Importe);

            Fila.Cells["Usar"].ReadOnly         = (oNota == null);
            Fila.Cells["ImporteAUsar"].ReadOnly = (oNota == null);

            this.CalcularTotal();
        }
Пример #27
0
        private bool AccionAceptar()
        {
            if (this.dgvFacturas.CurrentRow == null)
            {
                UtilLocal.MensajeAdvertencia("No hay ninguna factura seleccionada.");
                return(false);
            }

            // Se llena el dato de Id, para garantías
            int iId = Util.Entero(this.dgvPartes.CurrentRow.Cells["parId"].Value);

            if (this.bGarantias)
            {
                this.iGarantiaID = iId;
            }
            // Se llena el movimiento detalle
            int iIdDet = Util.Entero(this.dgvFacturas.CurrentRow.Cells["facMovimientoInventarioDetalleID"].Value);

            this.oMovimientoDetalle = Datos.GetEntity <MovimientoInventarioDetalle>(c => c.MovimientoInventarioDetalleID == iIdDet && c.Estatus);

            return(true);
        }
Пример #28
0
        static void Main()
        {
            //
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // Se muestra la pantalla de iniciando..
            var frmIniciando = new Iniciando();

            frmIniciando.Show();
            Application.DoEvents();

            // Se inicializan parámetros de la aplicación
            var oIni = Proc.InicializarAplicacion();

            if (oIni.Error)
            {
                UtilLocal.MensajeAdvertencia(oIni.Mensaje + "\n\nTheos encontró un problema al iniciar la aplicación y por lo tanto se cerrará.");
                frmIniciando.Close();
                return;
            }

            // Se verifica si hay una actualización
            if (Util.Logico(System.Configuration.ConfigurationManager.AppSettings["VerNuevaVersion"]))
            {
                if (Proc.VerNuevaVersion())
                {
                    frmIniciando.Close();
                    return;
                }
            }

            // Se abre el formulario principal
            frmIniciando.Close();
            Application.Run(Principal.Instance);

            Proc.FinalizarAplicacion();
        }
Пример #29
0
        private void btnModificar_Click(object sender, System.EventArgs e)
        {
            if (this.dgvDatos.CurrentRow == null)
            {
                return;
            }

            // Se valida el permiso
            if (this.PermisoModificar != "")
            {
                UtilLocal.MensajeAdvertencia(this.PermisoModificar);
                return;
            }

            int iCambioSistemaID = Util.Entero(this.dgvDatos.CurrentRow.Cells["CambioSistemaID"].Value);
            var frmCambio        = new CambiosSistemaDetalle(iCambioSistemaID);

            frmCambio.ShowDialog(Principal.Instance);
            if (frmCambio.DialogResult == DialogResult.OK)
            {
                this.ActualizarDatos();
            }
        }
Пример #30
0
        public static void InicializarSesion(int iSucursalID, Usuario oUsuario)
        {
            // Se llenan datos globales
            GlobalClass.SucursalID   = iSucursalID;
            GlobalClass.NombreTienda = Datos.GetEntity <Sucursal>(s => s.SucursalID == iSucursalID && s.Estatus).NombreSucursal;
            // Se llenan los datos del Usuario
            UtilLocal.LlenarUsuarioGlobal(oUsuario);
            // Se llena el título
            Principal.Instance.LlenarTitulo();
            // Se llenan los datos en la librería de TheosProc,
            Theos.SucursalID   = iSucursalID;
            Theos.UsuarioID    = oUsuario.UsuarioID;
            Theos.Iva          = GlobalClass.ConfiguracionGlobal.IVA;
            Theos.RutaImagenes = GlobalClass.ConfiguracionGlobal.pathImagenes;
            Theos.Titulo       = GlobalClass.NombreApp;

            //Se verifica si el usuario ya se ha logueado este dia para tomar asistencia
            var fechaHora = UtilDatos.FechaServidorDeDatos();

            if (!Datos.Exists <UsuarioAsistencia>(u => u.AccesoUsuarioID == oUsuario.UsuarioID && EntityFunctions.TruncateTime(u.FechaHora) == fechaHora.Date))
            {//Si no, se registra
                UsuarioAsistencia oAsistencia = new UsuarioAsistencia()
                {
                    AccesoUsuarioID = oUsuario.UsuarioID,
                    SucursalID      = GlobalClass.SucursalID,
                    FechaHora       = fechaHora
                };
                Datos.Guardar <UsuarioAsistencia>(oAsistencia);
            }

            // Se registra la ip acutal del usuario
            string sIp = Util.IpLocal();

            if (oUsuario.Ip != sIp)
            {
                oUsuario.Ip = sIp;
                Datos.Guardar <Usuario>(oUsuario);
            }

            // Se inicializa el socket de escucha, si aplica
            if (oUsuario.Alerta9500.Valor())
            {
                //
                if (Proc.oEscucha != null)
                {
                    Proc.oEscucha.Detener();
                }
                //
                Proc.oEscucha = new ServidorTcp(GlobalClass.Puerto);
                Proc.oEscucha.ConexionRecibida += oEscucha_ConexionRecibida;

                Proc.oEscucha.Escuchar();

                // Proc.oEscucha.Probar();
            }

            // Se configuran los recordatorios para Pedidos a Proveedores, si aplica
            if (oUsuario.AlertaPedidos.Valor())
            {
                DateTime dManiana = DateTime.Now.Date.AddDays(1);
                var      oAlertas = Datos.GetListOf <ProveedorEventoCalendario>(c => c.Fecha < dManiana && !c.Revisado);
                foreach (var oReg in oAlertas)
                {
                    if (oReg.Fecha < DateTime.Now)
                    {
                        Admon.MostrarRecordatorioPedidos(oReg.ProveedorEventoCalendarioID);
                    }
                    else
                    {
                        Program.oTimers.Add("AlertaPedido" + Program.oTimers.Count.ToString(), new System.Threading.Timer(new TimerCallback(Admon.MostrarRecordatorioPedidos)
                                                                                                                          , oReg.ProveedorEventoCalendarioID, (int)(oReg.Fecha - DateTime.Now).TotalMilliseconds, Timeout.Infinite));
                    }
                }
            }

            // Se verifica la alterta de traspasos
            if (oUsuario.AlertaTraspasos.Valor())
            {
                if (Datos.Exists <MovimientoInventarioTraspasoContingencia>(
                        c => c.MovimientoInventarioEstatusContingenciaID == Cat.TraspasosContingenciasEstatus.NoSolucionado))
                {
                    UtilLocal.MensajeAdvertencia("Existen conflictos de traspasos sin resolver.");
                }
            }

            // Se configuran los recordatorios para Cobros a Clientes, si aplica
            if (oUsuario.AlertaCalendarioClientes.Valor())
            {
                Eventos.Instance.Show();
            }


            // Se configuran los recordatorios para conteos de inventario, si aplica
            if (Datos.Exists <InventarioUsuario>(c => c.InvUsuarioID == GlobalClass.UsuarioGlobal.UsuarioID))
            {
                Asincrono.ProcesoHora(Principal.Instance.MostrarMensaje, new DosVal <string, string>("Recordatorio de Inventario", "Te recordamos realizar el inventario."), 9, 10);
                Asincrono.ProcesoHora(UtilLocal.VerInventarioConteoPendiente, null, 18, 00);
                // Asincrono.ProcesoHora(UtilLocal.VerInventarioConteoPendiente, null, 13, 16);
            }
        }