Example #1
0
        public static CajaEgreso GenerarResguardo(decimal mImporte, int iSucursalID)
        {
            var oCajaEgreso = new CajaEgreso()
            {
                CajaTipoEgresoID = Cat.CajaTiposDeEgreso.Resguardo,
                Concepto         = "RESGUARDO",
                Importe          = mImporte,
                Fecha            = DateTime.Now,
                SucursalID       = iSucursalID,
                RealizoUsuarioID = Theos.UsuarioID
            };

            Datos.Guardar <CajaEgreso>(oCajaEgreso);
            return(oCajaEgreso);
        }
Example #2
0
        private bool Resguardo()
        {
            // Se valida
            CajaResguardo oResguardo = (this.ctlCajaGeneral.ctlResguardo);
            if (!oResguardo.Validar())
                return false;

            // Se confirma la operación
            if (UtilLocal.MensajePregunta("¿Estás seguro que deseas hacer el Resguardo de " + oResguardo.Total.ToString(GlobalClass.FormatoMoneda))
                != DialogResult.Yes)
                return false;

            // Se solicita la validación del usuario
            var Res = UtilLocal.ValidarObtenerUsuario("Ventas.Resguardo.Agregar");
            if (Res.Error)
                return false;
            var oUsuario = Res.Respuesta;

            // Se solicita la validación de autorización
            Res = UtilLocal.ValidarObtenerUsuario("Autorizaciones.Ventas.Resguardo.Agregar", "Autorización");
            var oAutorizo = Res.Respuesta;

            // Se procede a guardar los datos
            DateTime dAhora = DateTime.Now;

            // Se guarda el Resguardo (como un Egreso)
            var oEgreso = new CajaEgreso()
            {
                CajaTipoEgresoID = Cat.CajaTiposDeEgreso.Resguardo,
                Importe = oResguardo.Total,
                Fecha = dAhora,
                SucursalID = GlobalClass.SucursalID,
                Concepto = "RESGUARDO",
                RealizoUsuarioID = oUsuario.UsuarioID
            };
            Datos.Guardar<CajaEgreso>(oEgreso);

            // Se registran los pagos bancarios resguardados
            var oPagosBan = oResguardo.GenerarPagosBancariosResguardados();
            foreach (var oPagoBan in oPagosBan)
                Datos.Guardar<VentaPagoDetalleResguardo>(oPagoBan);

            // Se crea la Poliza correspondiente (AfeConta)
            ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.Resguardo, oEgreso.CajaEgresoID, oUsuario.NombreUsuario, "RESGUARDO");

            // Se guarda la autorización
            VentasProc.GenerarAutorizacion(Cat.AutorizacionesProcesos.Resguardo, Cat.Tablas.CajaEgreso, oEgreso.CajaEgresoID
                , (oAutorizo == null ? 0 : oAutorizo.UsuarioID));

            // Se genera el ticket
            var oConteo = oResguardo.GenerarConteo();
            var oRep = new Report();
            oRep.Load(GlobalClass.ConfiguracionGlobal.pathReportes + "CajaResguardoTicket.frx");
            oRep.RegisterData(new List<ConteoCaja>() { oConteo }, "Conteo");
            UtilLocal.EnviarReporteASalida("Reportes.CajaResguardoTicket.Salida", oRep);

            // Se muestra una notifiación con el resultado
            UtilLocal.MostrarNotificacion("Procedimiento completado correctamente.");

            return true;
        }
Example #3
0
        private bool Gastos()
        {
            CajaGastos oGastos = this.ctlCajaGeneral.ctlGastos;

            // Se obtiene la lista de los cambios necesarios
            var oIngresos = oGastos.GenerarListaDeIngresos();
            var oEgresos = oGastos.GenerarListaDeEgresos();
            var oIngresosBorrados = oGastos.GenerarListaDeIngresosBorrados();
            var oEgresosBorrados = oGastos.GenerarListaDeEgresosBorrados();

            // Se verifica si hay cambios necesarios
            bool bCambios = (oIngresos.Count > 0 || oEgresos.Count > 0 || oIngresosBorrados.Count > 0 || oEgresosBorrados.Count > 0);
            if (!bCambios)
                return false;

            // Se solicita la validación del usuario
            var oResUs = UtilLocal.ValidarObtenerUsuario(new List<string>() { "Ventas.Ingresos.Agregar", "Ventas.Ingresos.Borrar",
                "Ventas.Egresos.Agregar", "Ventas.Egresos.Borrar" }, true);
            if (oResUs.Error)
                return false;
            int iRealizoUsuarioID = oResUs.Respuesta.UsuarioID;

            // Se solicita la autorización
            var ResAut = UtilLocal.ValidarObtenerUsuario(new List<string>() { "Autorizaciones.Ventas.Ingresos.Agregar", "Autorizaciones.Ventas.Ingresos.Borrar",
                "Autorizaciones.Ventas.Egresos.Agregar", "Autorizaciones.Ventas.Egresos.Borrar" }, true, "Autorización");
            int iAutorizoID = (ResAut.Respuesta == null ? 0 : ResAut.Respuesta.UsuarioID);

            // Se procede a guardar los datos
            DateTime dAhora = DateTime.Now;

            // Se guardan los Ingresos
            foreach (var oMov in oIngresos)
            {
                oMov.RealizoUsuarioID = iRealizoUsuarioID;
                Datos.Guardar<CajaIngreso>(oMov);

                // Si es un refuerzo, se elimina la póliza correspondiente
                if (oMov.CajaTipoIngresoID == Cat.CajaTiposDeIngreso.Refuerzo)
                {
                    var oPoliza = Datos.GetEntity<ContaPoliza>(c => c.RelacionTabla == Cat.Tablas.CajaIngreso && c.RelacionID == oMov.CajaIngresoID);
                    ContaProc.BorrarPoliza(oPoliza.ContaPolizaID);
                }

                // Se genera la autorización
                VentasProc.GenerarAutorizacion(Cat.AutorizacionesProcesos.OtrosIngresos, Cat.Tablas.CajaIngreso, oMov.CajaIngresoID, iAutorizoID);
            }
            // Se guardan los ingresos borrados
            foreach (var oMov in oIngresosBorrados)
            {
                oMov.Estatus = false;
                Datos.Guardar<CajaIngreso>(oMov);
                // Se genera la autorización
                VentasProc.GenerarAutorizacion(Cat.AutorizacionesProcesos.OtrosIngresosBorrar, Cat.Tablas.CajaIngreso, oMov.CajaIngresoID, iAutorizoID);
            }

            // Se guardan los Egresos
            bool bGastoCaja = false;
            var oGastosCaja = new List<int>();
            foreach (var oMov in oEgresos)
            {
                // Referente a lo contable

                // Validación de importe máximo (5000) para gastos de sueldos de Isidro padre e hijo (durazo)
                int iCuentaAuxiliarID = Util.Entero(oMov["CategoriaID"]);
                if (iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.SueldoIsidroPadre || iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.SueldoIsidroHijo)
                {
                    var oFechas = UtilDatos.FechasDeComisiones(DateTime.Now);
                    var oContaEgresos = Datos.GetListOf<ContaEgreso>(c => c.ContaCuentaAuxiliarID == iCuentaAuxiliarID
                        && (c.Fecha >= oFechas.Valor1 && c.Fecha <= oFechas.Valor2));
                    if (oContaEgresos.Count > 0 && oContaEgresos.Sum(c => c.Importe) >= 5000)
                        iCuentaAuxiliarID = (iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.SueldoIsidroPadre
                            ? Cat.ContaCuentasAuxiliares.UtilidadesIsidroPadre : Cat.ContaCuentasAuxiliares.UtilidadesIsidroHijo);
                }
                //

                // Se genera el Gasto Contable
                var oGastoConta = new ContaEgreso()
                {
                    ContaCuentaAuxiliarID = iCuentaAuxiliarID,
                    Fecha = dAhora,
                    Importe = Util.Decimal(oMov["Importe"]),
                    TipoFormaPagoID = Cat.FormasDePago.Efectivo,
                    Observaciones = Util.Cadena(oMov["Concepto"]),
                    RealizoUsuarioID = iRealizoUsuarioID,
                    SucursalID = Util.Entero(oMov["SucursalID"])
                };
                Datos.Guardar<ContaEgreso>(oGastoConta);
                // Se manda devengar automáticamente, si aplica
                ContaProc.GastoVerDevengarAutomaticamente(oGastoConta);
                // Se genera el gasto de caja (CajaEgreso)
                var oEgreso = new CajaEgreso()
                {
                    CajaTipoEgresoID = Cat.CajaTiposDeEgreso.CuentaAuxiliar,
                    Concepto = oGastoConta.Observaciones,
                    Importe = oGastoConta.Importe,
                    Fecha = dAhora,
                    SucursalID = oGastoConta.SucursalID,
                    RealizoUsuarioID = iRealizoUsuarioID,
                    ContaEgresoID = oGastoConta.ContaEgresoID
                };
                Datos.Guardar<CajaEgreso>(oEgreso);

                // Si es un gasto de la cuenta deudores diversos, se genera la póliza correspondiente (AfeConta)
                if (Datos.Exists<ContaCuentaAuxiliar>(c => c.ContaCuentaAuxiliarID == iCuentaAuxiliarID && c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.DeudoresDiversos))
                {
                    ContaProc.CrearPoliza(Cat.ContaTiposDePoliza.Egreso, "PRÉSTAMO", iCuentaAuxiliarID, Cat.ContaCuentasAuxiliares.Caja, oGastoConta.Importe
                        , oResUs.Respuesta.NombreUsuario, Cat.Tablas.CajaEgreso, oEgreso.CajaEgresoID);
                    // Se marca el gasto como ya afectado en pólizas, para que no aparezca en gastos pendientes
                    oEgreso.AfectadoEnPolizas = true;
                    Datos.Guardar<CajaEgreso>(oEgreso);
                }

                // Se verifica si es una gasto de Reparto utilidades, para hacer un refuerzo por la misma cantidad
                if (Datos.Exists<ContaCuentaAuxiliar>(c => c.ContaCuentaAuxiliarID == iCuentaAuxiliarID && c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.ReparteDeUtilidades))
                {
                    var oRef = VentasProc.GenerarRefuerzo(oEgreso.Importe, oEgreso.SucursalID);
                    oRef.Fecha = oEgreso.Fecha;
                    Datos.Guardar<CajaIngreso>(oRef);
                }

                // Se verifica si es un gasto de casco, para afectar la existencia
                if (iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.CascoChico || iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.CascoMediano
                    || iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.CascoGrande || iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.CascoExtragrande)
                {
                    int iCascoParteID = 0;
                    switch (iCuentaAuxiliarID)
                    {
                        case Cat.ContaCuentasAuxiliares.CascoChico: iCascoParteID = Cat.Partes.DepositoCascoChico; break;
                        case Cat.ContaCuentasAuxiliares.CascoMediano: iCascoParteID = Cat.Partes.DepositoCascoMediano; break;
                        case Cat.ContaCuentasAuxiliares.CascoGrande: iCascoParteID = Cat.Partes.DepositoCascoGrande; break;
                        case Cat.ContaCuentasAuxiliares.CascoExtragrande: iCascoParteID = Cat.Partes.DepositoCascoExtragrande; break;
                    }
                    var oSucursal = Datos.GetEntity<Sucursal>(c => c.SucursalID == GlobalClass.SucursalID && c.Estatus);
                    AdmonProc.AfectarExistenciaYKardex(iCascoParteID, GlobalClass.SucursalID, Cat.OperacionesKardex.EntradaInventario, oEgreso.CajaEgresoID.ToString()
                        , iRealizoUsuarioID, "----", "Gasto por Casco", oSucursal.NombreSucursal, 1, oGastoConta.Importe, Cat.Tablas.CajaEgreso, oEgreso.CajaEgresoID);
                }

                // Se genera la autorización
                VentasProc.GenerarAutorizacion(Cat.AutorizacionesProcesos.Gastos, Cat.Tablas.CajaEgreso, oEgreso.CajaEgresoID, iAutorizoID);

                // Bandera para saber si se realizó un gasto
                oGastosCaja.Add(oEgreso.CajaEgresoID);
                bGastoCaja = true;
            }
            // Se guardan los egresos borrados
            foreach (var oMov in oEgresosBorrados)
            {
                // Se guarda el borrado del gasto de caja (CajaEgreso)
                int iEgresoID = oMov.ContaEgresoID.Valor();
                Datos.Eliminar<CajaEgreso>(oMov);  // Ahora se borra definitivamente, pues el gasto contable no tiene campo de "Estatus"
                // Se guarda el borrado del Gasto Contable, si hubiera
                int iCuentaAuxiliarID = 0;
                if (iEgresoID > 0)
                {
                    var oContaEgreso = Datos.GetEntity<ContaEgreso>(c => c.ContaEgresoID == iEgresoID);
                    iCuentaAuxiliarID = oContaEgreso.ContaCuentaAuxiliarID;
                    ContaProc.GastoEliminar(iEgresoID);
                }

                // Si es un resguardo, se elimina la póliza correspondiente
                if (oMov.CajaTipoEgresoID == Cat.CajaTiposDeEgreso.Resguardo)
                {
                    var oPoliza = Datos.GetEntity<ContaPoliza>(c => c.RelacionTabla == Cat.Tablas.CajaEgreso && c.RelacionID == oMov.CajaEgresoID);
                    ContaProc.BorrarPoliza(oPoliza.ContaPolizaID);
                }
                // Si es un gasto de la cuenta deudores diversos, se verifica y elimina la póliza (AfeConta)
                if (Datos.Exists<ContaCuentaAuxiliar>(c => c.ContaCuentaAuxiliarID == iCuentaAuxiliarID && c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.DeudoresDiversos))
                {
                    var oPoliza = Datos.GetEntity<ContaPoliza>(c => c.RelacionTabla == Cat.Tablas.CajaEgreso && c.RelacionID == oMov.CajaEgresoID);
                    ContaProc.BorrarPoliza(oPoliza.ContaPolizaID);
                }

                // Se verifica si es una gasto de Reparto utilidades, para borrar el refuerzo creado
                if (Datos.Exists<ContaCuentaAuxiliar>(c => c.ContaCuentaAuxiliarID == iCuentaAuxiliarID && c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.ReparteDeUtilidades))
                {
                    var oRef = Datos.GetEntity<CajaIngreso>(c => c.CajaTipoIngresoID == Cat.CajaTiposDeIngreso.Refuerzo && c.Importe == oMov.Importe && c.Fecha == oMov.Fecha);
                    Datos.Eliminar<CajaIngreso>(oRef, true);
                }

                // Se verifica si es un gasto de casco, para afectar la existencia
                if (iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.CascoChico || iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.CascoMediano
                    || iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.CascoGrande || iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.CascoExtragrande)
                {
                    int iCascoParteID = 0;
                    switch (iCuentaAuxiliarID)
                    {
                        case Cat.ContaCuentasAuxiliares.CascoChico: iCascoParteID = Cat.Partes.DepositoCascoChico; break;
                        case Cat.ContaCuentasAuxiliares.CascoMediano: iCascoParteID = Cat.Partes.DepositoCascoMediano; break;
                        case Cat.ContaCuentasAuxiliares.CascoGrande: iCascoParteID = Cat.Partes.DepositoCascoGrande; break;
                        case Cat.ContaCuentasAuxiliares.CascoExtragrande: iCascoParteID = Cat.Partes.DepositoCascoExtragrande; break;
                    }
                    var oSucursal = Datos.GetEntity<Sucursal>(c => c.SucursalID == GlobalClass.SucursalID && c.Estatus);
                    AdmonProc.AfectarExistenciaYKardex(iCascoParteID, GlobalClass.SucursalID, Cat.OperacionesKardex.SalidaInventario, oMov.CajaEgresoID.ToString()
                        , iRealizoUsuarioID, "----", "Gasto por Casco", oSucursal.NombreSucursal, -1, oMov.Importe, Cat.Tablas.CajaEgreso, oMov.CajaEgresoID);
                }
                // Se genera la autorización
                VentasProc.GenerarAutorizacion(Cat.AutorizacionesProcesos.GastosBorrar, Cat.Tablas.CajaEgreso, oMov.CajaEgresoID, iAutorizoID);
            }

            // Se pregunta si se debe mostrar el ticket, cuando hubo gastos
            if (bGastoCaja)
            {
                if (UtilLocal.MensajePregunta("¿Deseas imprimir los Tickets de Gasto correspondientes?") == DialogResult.Yes)
                {
                    foreach (int iEgresoID in oGastosCaja)
                        VentasLoc.GenerarTicketGasto(iEgresoID);
                }
            }

            // Se muestra una notifiación con el resultado
            UtilLocal.MostrarNotificacion("Procedimiento completado correctamente.");

            return true;
        }
Example #4
0
 public static CajaEgreso GenerarResguardo(decimal mImporte, int iSucursalID)
 {
     var oCajaEgreso = new CajaEgreso()
     {
         CajaTipoEgresoID = Cat.CajaTiposDeEgreso.Resguardo,
         Concepto = "RESGUARDO",
         Importe = mImporte,
         Fecha = DateTime.Now,
         SucursalID = iSucursalID,
         RealizoUsuarioID = Theos.UsuarioID
     };
     Datos.Guardar<CajaEgreso>(oCajaEgreso);
     return oCajaEgreso;
 }