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); }
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; }
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; }
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; }