示例#1
0
        private bool CuentaEliminar(int iNivel, int iCuentaID)
        {
            // Se valida que no se tengan cuentas hijas o movimientos
            switch (iNivel)
            {
            case 2:     // Cuenta de Mayor
                if (Datos.Exists <ContaCuentaAuxiliar>(c => c.ContaCuentaDeMayorID == iCuentaID))
                {
                    UtilLocal.MensajeError("La Cuenta seleccionada tiene Subcuentas asignadas. No se puede eliminar.");
                    return(false);
                }
                // Se procede a eliminar la cuenta
                var oCuentaMay = Datos.GetEntity <ContaCuentaDeMayor>(c => c.ContaCuentaDeMayorID == iCuentaID);
                Datos.Eliminar <ContaCuentaDeMayor>(oCuentaMay);
                break;

            case 3:     // Cuenta auxiliar
                if (Datos.Exists <ContaEgreso>(c => c.ContaCuentaAuxiliarID == iCuentaID))
                {
                    UtilLocal.MensajeError("La Cuenta seleccionada ha sido utilizado en varios movimientos. No se puede eliminar.");
                    return(false);
                }
                // Se manda eliminar la cuenta
                ContaProc.CuentaAuxiliarEliminar(iCuentaID);
                break;
            }

            return(true);
        }
示例#2
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);
            }
        }
示例#3
0
        private void DevolverControlCasco(int iDevolucionDetalleID, int iUsuarioID)
        {
            // Se obtiene el registro del control de casco
            var oDevDet = Datos.GetEntity <VentaDevolucionDetalle>(c => c.VentaDevolucionDetalleID == iDevolucionDetalleID && c.Estatus);
            var oDev    = Datos.GetEntity <VentaDevolucion>(c => c.VentaDevolucionID == oDevDet.VentaDevolucionID && c.Estatus);

            for (int i = 0; i < oDevDet.Cantidad; i++)
            {
                int iCancelarVentaID = 0;
                var oCascoReg        = Datos.GetEntity <CascoRegistro>(c => c.VentaID == oDev.VentaID && c.ParteID == oDevDet.ParteID);
                // Acción si no se recibió ningún casco
                if (oCascoReg.RecibidoCascoID == null)
                {
                    iCancelarVentaID = oCascoReg.CobroVentaID.Valor();
                }
                else
                {
                    var oParte = Datos.GetEntity <Parte>(c => c.ParteID == oCascoReg.ParteID && c.Estatus);

                    // Se registra la salida del inventario
                    var oVentaV = Datos.GetEntity <VentasView>(c => c.VentaID == oDev.VentaID);
                    var oCascoRecibidoPrecio = Datos.GetEntity <PartePrecio>(c => c.ParteID == oCascoReg.RecibidoCascoID.Value && c.Estatus);
                    AdmonProc.AfectarExistenciaYKardex(oCascoReg.RecibidoCascoID.Valor(), GlobalClass.SucursalID, Cat.OperacionesKardex.SalidaInventario
                                                       , oCascoReg.CascoRegistroID.ToString(), iUsuarioID, oVentaV.Cliente, "CONTROL DE CASCOS", oVentaV.Sucursal, -1, oCascoRecibidoPrecio.Costo.Valor()
                                                       , Cat.Tablas.CascoRegistro, oCascoReg.CascoRegistroID);

                    // Acciones si no se recibió el casco adecuado
                    if (oCascoReg.RecibidoCascoID != oParte.RequiereCascoDe)
                    {
                        // Acción si hubo diferencia de importe entre el casco recibido y el esperado
                        iCancelarVentaID = oCascoReg.CobroVentaID.Valor();  // Por si se realizó un cobro
                        // Por si se generó un vale
                        var oVale = Datos.GetEntity <NotaDeCredito>(c => c.OrigenID == Cat.OrigenesNotaDeCredito.CascoDeMayorValor &&
                                                                    c.RelacionID == oCascoReg.CascoRegistroID);
                        if (oVale != null)
                        {
                            VentasProc.CancelarNotaDeCredito(oVale.NotaDeCreditoID, "POR CANCELACIÓN DE VENTA CON CASCO");
                        }
                        // Si se utilizarn importes de caso a favor, se liberan
                        var oUsados = Datos.GetListOf <CascoRegistroImporte>(c => c.CascoRegistroID == oCascoReg.CascoRegistroID);
                        foreach (var oReg in oUsados)
                        {
                            var oCascoImp = Datos.GetEntity <CascoImporte>(c => c.CascoImporteID == oReg.CascoImporteID);
                            oCascoImp.ImporteUsado -= oReg.Importe.Valor();
                            Datos.Guardar <CascoImporte>(oCascoImp);
                            Datos.Eliminar <CascoRegistroImporte>(oReg);
                        }
                        // Si se creó un importe de caso a favor, se cancela
                        var oCascoImporte = Datos.GetEntity <CascoImporte>(c => c.OrigenID == oCascoReg.CascoRegistroID && c.Importe > 0);
                        if (oCascoImporte != null)
                        {
                            // Se verifica si ha sido usado
                            if (Datos.Exists <CascoRegistroImporte>(c => c.CascoImporteID == oCascoImporte.CascoImporteID))
                            {
                                // Se mete un Casco Importe negativo, porque ya fue usado
                                Datos.Guardar <CascoImporte>(new CascoImporte()
                                {
                                    Fecha    = DateTime.Now,
                                    OrigenID = oCascoReg.CascoRegistroID,
                                    Importe  = (oCascoImporte.Importe * -1)
                                });
                            }
                            else
                            {
                                // Se elimina el importe a favor
                                Datos.Eliminar <CascoImporte>(oCascoImporte);
                            }
                        }
                    }
                }

                // Se cancela la venta del cobro de la diferencia (sólo lo correspondiente al cobro), si aplica
                if (iCancelarVentaID > 0)
                {
                    int iDevParteID = Cat.Partes.DiferenciaDeCascos;
                    if (oCascoReg.RecibidoCascoID == null)
                    {
                        var oParte = Datos.GetEntity <Parte>(c => c.ParteID == oCascoReg.ParteID && c.Estatus);
                        iDevParteID = oParte.RequiereDepositoDe.Valor();
                        if (iDevParteID <= 0)
                        {
                            UtilLocal.MensajeError("El Artículo registrado en Control de Cascos no tiene un depósito asignado.");
                            break;
                        }
                    }

                    var oVentaDet = Datos.GetListOf <VentaDetalle>(c => c.VentaID == iCancelarVentaID && c.Estatus);
                    if (oVentaDet.Count > 0)
                    {
                        var oParteDet = oVentaDet.FirstOrDefault(c => c.ParteID == iDevParteID);
                        // Se obtiene la forma de pago
                        var oPagoDetV      = Datos.GetEntity <VentasPagosDetalleView>(c => c.VentaID == iCancelarVentaID);
                        int iFormaDePagoID = (oPagoDetV.Fecha.Valor().Date == DateTime.Now.Date ? oPagoDetV.FormaDePagoID : Cat.FormasDePago.Efectivo);
                        // Se general el registro de devolución
                        var oDevolucion = new VentaDevolucion()
                        {
                            VentaID          = iCancelarVentaID,
                            Fecha            = DateTime.Now,
                            SucursalID       = GlobalClass.SucursalID,
                            MotivoID         = Cat.VentaDevolucionMotivos.Otro,
                            Observacion      = "POR CANCELACIÓN DE VENTA CON CASCO",
                            RealizoUsuarioID = iUsuarioID,
                            TipoFormaPagoID  = iFormaDePagoID,
                            EsCancelacion    = (oVentaDet.Count == 1)
                        };
                        // Se genera el detalle de la devolución
                        var oDetDev = new VentaDevolucionDetalle()
                        {
                            ParteID           = iDevParteID,
                            Cantidad          = oParteDet.Cantidad,
                            PrecioUnitario    = oParteDet.PrecioUnitario,
                            Iva               = oParteDet.Iva,
                            Costo             = oParteDet.Costo,
                            CostoConDescuento = oParteDet.CostoConDescuento
                        };
                        // Se guarda la devolución
                        int iValeClienteID = 0;
                        if (iFormaDePagoID == Cat.FormasDePago.Vale)
                        {
                            var oVale = Datos.GetEntity <NotaDeCredito>(c => c.NotaDeCreditoID == oPagoDetV.NotaDeCreditoID && c.Estatus);
                            iValeClienteID = oVale.ClienteID;
                        }
                        this.GuardarDevolucion(oDevolucion, new List <VentaDevolucionDetalle>()
                        {
                            oDetDev
                        }, iValeClienteID);
                    }
                }
            }
        }
示例#4
0
        public static void EnviarReporteASalida(string sParametro, Report oReporte, bool bUsarPreparado)
        {
            // Se abre el xml correspondiente al reporte
            var oXmlRep = new XmlDocument();

            oXmlRep.Load(oReporte.FileName);

            // Se obtiene el tipo de salida, primero del xml del reporte, si no, de la base de datos
            string sTipoDeSalida = "";

            if (oXmlRep.DocumentElement.Attributes["Cr_Salida"] == null)
            {
                sTipoDeSalida = Config.Valor(sParametro);
            }
            else
            {
                sTipoDeSalida = oXmlRep.DocumentElement.Attributes["Cr_Salida"].Value;
            }

            switch (sTipoDeSalida.ToLower())
            {
            case "d":
                oReporte.Design();
                break;

            case "p":
                if (bUsarPreparado)
                {
                    oReporte.ShowPrepared();
                }
                else
                {
                    oReporte.Show();
                }
                break;

            case "i":
                bool bDialogo = (oReporte.PrintSettings.Printer == "");
                oReporte.PrintSettings.ShowDialog = bDialogo;

                // Se intenta mandar a imprimir
                try
                {
                    if (bUsarPreparado)
                    {
                        oReporte.PrintPrepared();
                    }
                    else
                    {
                        oReporte.Print();
                    }

                    if (bDialogo)
                    {
                        if (UtilLocal.MensajePregunta("¿Deseas guardar los datos de impresión especificados como predeterminados para este reporte?") == DialogResult.Yes)
                        {
                            oReporte.PrintSettings.SavePrinterWithReport = true;
                            oReporte.Save(oReporte.FileName);
                        }
                    }
                }
                catch (Exception e)
                {
                    UtilLocal.MensajeError(e.Message);
                }

                break;
            }
        }
示例#5
0
        private void GuardarCaracteristicas()
        {
            Cargando.Mostrar();

            LineaCaracteristica oReg;

            foreach (DataGridViewRow oFila in this.dgvCaracteristicas.Rows)
            {
                if (oFila.IsNewRow)
                {
                    continue;
                }

                int iId     = this.dgvCaracteristicas.ObtenerId(oFila);
                int iCambio = this.dgvCaracteristicas.ObtenerIdCambio(oFila);
                switch (iCambio)
                {
                case Cat.TiposDeAfectacion.Agregar:
                case Cat.TiposDeAfectacion.Modificar:
                    if (iCambio == Cat.TiposDeAfectacion.Agregar)
                    {
                        oReg = new LineaCaracteristica();
                    }
                    else
                    {
                        oReg = Datos.GetEntity <LineaCaracteristica>(c => c.LineaCaracteristicaID == iId);
                    }

                    // Se llenan los datos
                    oReg.LineaID          = this.Linea.LineaID;
                    oReg.CaracteristicaID = Util.Entero(oFila.Cells["colCaracteristicaID"].Value);
                    // Se valida que no exista ya
                    if (iCambio == Cat.TiposDeAfectacion.Agregar)
                    {
                        if (Datos.Exists <LineaCaracteristica>(c => c.LineaID == this.Linea.LineaID && c.CaracteristicaID == oReg.CaracteristicaID))
                        {
                            continue;
                        }
                    }
                    // Se verifican los cambios a la característica en sí
                    var oCaracteristica = Datos.GetEntity <Caracteristica>(c => c.CaracteristicaID == oReg.CaracteristicaID);
                    if (oCaracteristica == null)
                    {
                        oCaracteristica = new Caracteristica()
                        {
                            Caracteristica1 = Util.Cadena((oFila.Cells["colCaracteristicaID"] as DataGridViewComboBoxCell).FormattedValue)
                        }
                    }
                    ;
                    // Se valida si cambiaron las opciones
                    bool   bOpcionEnUso = false;
                    string sOpciones    = Util.Cadena(oFila.Cells["colMultipleOpciones"].Value);
                    if (oCaracteristica.MultipleOpciones != null && sOpciones != oCaracteristica.MultipleOpciones)
                    {
                        var oOpcionesAnt = oCaracteristica.MultipleOpciones.Split(',');
                        var oOpciones    = sOpciones.Split(',');
                        var oDif         = oOpcionesAnt.Except(oOpciones);
                        foreach (var sOpcion in oDif)
                        {
                            if (Datos.Exists <ParteCaracteristica>(c => c.CaracteristicaID == oReg.CaracteristicaID && c.Valor == sOpcion))
                            {
                                UtilLocal.MensajeError("Alguna de las características removidas está siendo usada. No se puede guardar.");
                                bOpcionEnUso = true;
                                break;
                            }
                        }
                    }
                    if (!bOpcionEnUso)
                    {
                        //
                        oCaracteristica.MultipleOpciones = sOpciones;
                        oCaracteristica.Multiple         = (oCaracteristica.MultipleOpciones != "");
                        Datos.Guardar <Caracteristica>(oCaracteristica);
                        // Se guarda
                        oReg.CaracteristicaID = oCaracteristica.CaracteristicaID;
                        Datos.Guardar <LineaCaracteristica>(oReg);
                    }
                    break;

                case Cat.TiposDeAfectacion.Borrar:
                    oReg = Datos.GetEntity <LineaCaracteristica>(c => c.LineaCaracteristicaID == iId);
                    Datos.Eliminar <LineaCaracteristica>(oReg);
                    break;
                }
            }

            Cargando.Cerrar();
            // this.CargarCaracteristicas();
        }