public void Guardar() { this.Validar(); DateTime getDate = DB.GetDate(); Entities.CuentaFlujoCajas CuentaFlujo = new Entities.CuentaFlujoCajas(); if (this.ValePrepagado != null && this.ValePrepagado.Denominacion > 0) { this.ValePrepagado.FechaCanje = getDate; // Creamos un cargo en la cuenta de cajas - Es la referencia del dinero que se retiró de caja Entities.CuentaCajas ccs = new Entities.CuentaCajas(); ccs.Cargo = Math.Abs(this.ValePrepagado.Denominacion); ccs.Caja_ID = Sesion.Caja_ID.Value; ccs.Abono = 0; ccs.Comentarios = "RETIRO DE EFECTIVO EN CAJA - VALES PREPAGADOS -"; ccs.Concepto_ID = 148; ccs.Cuenta_ID = 5; ccs.Empresa_ID = 601; //adeudo.Empresa_ID; ccs.Estacion_ID = Sesion.Estacion_ID; ccs.Fecha = getDate; ccs.Saldo = 0; ccs.Sesion_ID = Sesion.Sesion_ID; ccs.Usuario_ID = Sesion.Usuario_ID; ccs.Create(); // Creamos un abono en la cuenta de flujo de caja CuentaFlujo = new Entities.CuentaFlujoCajas(); CuentaFlujo.Abono = Math.Abs(this.ValePrepagado.Denominacion); CuentaFlujo.Caja_ID = Sesion.Caja_ID.Value; CuentaFlujo.Cargo = 0; CuentaFlujo.Concepto = "PAGO CON VALES - CANJE"; CuentaFlujo.Fecha = getDate; CuentaFlujo.Moneda_ID = 3; CuentaFlujo.Saldo = 0; CuentaFlujo.Sesion_ID = Sesion.Sesion_ID; CuentaFlujo.Usuario_ID = Sesion.Usuario_ID; CuentaFlujo.Create(); CuentaFlujo = new Entities.CuentaFlujoCajas(); CuentaFlujo.Abono = 0; CuentaFlujo.Caja_ID = Sesion.Caja_ID.Value; CuentaFlujo.Cargo = Math.Abs(this.ValePrepagado.Denominacion); CuentaFlujo.Concepto = "PAGO CON VALES - CANJE"; CuentaFlujo.Fecha = getDate; CuentaFlujo.Moneda_ID = 1; CuentaFlujo.Saldo = 0; // Se calcula solo CuentaFlujo.Sesion_ID = Sesion.Sesion_ID; CuentaFlujo.Usuario_ID = Sesion.Usuario_ID; CuentaFlujo.Create(); MarcarVale(this.ValePrepagado); } if (this.ValeEmpresarial != null && this.Cargo > 0) { this.ValeEmpresarial.Monto = this.Cargo; this.ValeEmpresarial.Caja_ID = Sesion.Caja_ID.Value; this.ValeEmpresarial.UsuarioCaja_ID = Sesion.Usuario_ID; this.ValeEmpresarial.FechaCanje = getDate; // Creamos un cargo en la cuenta de cajas - Es la referencia del dinero que se retiró de caja Entities.CuentaCajas ccs = new Entities.CuentaCajas(); ccs.Cargo = Math.Abs((decimal)this.ValeEmpresarial.Monto); ccs.Caja_ID = Sesion.Caja_ID.Value; ccs.Abono = 0; ccs.Comentarios = "RETIRO DE EFECTIVO EN CAJA - VALES EMPRESARIALES -"; ccs.Concepto_ID = 148; ccs.Cuenta_ID = 5; ccs.Empresa_ID = 601; ccs.Estacion_ID = Sesion.Estacion_ID; ccs.Fecha = getDate; ccs.Saldo = 0; ccs.Sesion_ID = Sesion.Sesion_ID; ccs.Usuario_ID = Sesion.Usuario_ID; ccs.Create(); // Creamos un abono en la cuenta de flujo de caja CuentaFlujo = new Entities.CuentaFlujoCajas(); CuentaFlujo.Abono = Math.Abs((decimal)this.ValeEmpresarial.Monto); CuentaFlujo.Caja_ID = Sesion.Caja_ID.Value; CuentaFlujo.Cargo = 0; CuentaFlujo.Concepto = "PAGO CON VALES EMPRESARIALES - CANJE"; CuentaFlujo.Fecha = getDate; CuentaFlujo.Moneda_ID = 4; // Servicios Empresariales CuentaFlujo.Saldo = 0; // Se calcula solo CuentaFlujo.Sesion_ID = Sesion.Sesion_ID; CuentaFlujo.Usuario_ID = Sesion.Usuario_ID; CuentaFlujo.Create(); CuentaFlujo = new Entities.CuentaFlujoCajas(); CuentaFlujo.Abono = 0; CuentaFlujo.Caja_ID = Sesion.Caja_ID.Value; CuentaFlujo.Cargo = Math.Abs((decimal)this.ValeEmpresarial.Monto); CuentaFlujo.Concepto = "PAGO CON VALES EMPRESARIALES - CANJE"; CuentaFlujo.Fecha = getDate; CuentaFlujo.Moneda_ID = 1; // efectivo CuentaFlujo.Saldo = 0; // Se calcula solo CuentaFlujo.Sesion_ID = Sesion.Sesion_ID; CuentaFlujo.Usuario_ID = Sesion.Usuario_ID; CuentaFlujo.Create(); MarcarValeEmpresarial(this.ValeEmpresarial); } }
/// <summary> /// Registra las operaciones de caja en la base de datos /// </summary> private void RegistrarOperaciones() { // Validamos las operaciones Validar(); // Obtenemos la fecha getDate = DB.GetDate(); // Instanciamos una cuenta de flujo de caja Entities.CuentaFlujoCajas CuentaFlujo = new Entities.CuentaFlujoCajas(); // Creamos el ticket Ticket = new Entities.Tickets(); Ticket.Caja_ID = Sesion.Caja_ID.Value; Ticket.Conductor_ID = DatosConductor.Conductor_ID; Ticket.Empresa_ID = (DatosConductor.Empresa_ID != null) ? DatosConductor.Empresa_ID.Value : GetEmpresa_ID(); Ticket.Estacion_ID = Sesion.Estacion_ID.Value; Ticket.EstatusTicket_ID = 1; Ticket.Fecha = getDate; Ticket.Sesion_ID = Sesion.Sesion_ID; Ticket.Unidad_ID = DatosConductor.Unidad_ID; Ticket.Usuario_ID = Sesion.Usuario_ID; Ticket.Create(); // Realizamos las operaciones de Cuenta conductores // Cuenta cajas // Cuenta Unidades // Para cada adeudo en la lista foreach (Entities.AdeudosDeConductor adeudo in Adeudos) { // Si el adeudo ha sido pagado if (adeudo.Pagar > 0) { #region CuentaConductores // Ingresamos en pago en la cuenta de conductores Entities.CuentaConductores cc = new Entities.CuentaConductores(); cc.Abono = adeudo.Pagar; cc.Caja_ID = Sesion.Caja_ID.Value; cc.Cargo = 0; cc.Comentarios = "PAGO EN CAJA"; cc.Concepto_ID = adeudo.Concepto_ID; cc.Conductor_ID = Ticket.Conductor_ID; cc.Cuenta_ID = adeudo.Cuenta_ID; cc.Empresa_ID = adeudo.Empresa_ID; cc.Estacion_ID = Sesion.Estacion_ID.Value; cc.Fecha = getDate; cc.Saldo = 0; // Se calcula solo cc.Ticket_ID = Ticket.Ticket_ID; cc.Unidad_ID = DatosConductor.Unidad_ID; cc.Usuario_ID = Sesion.Usuario_ID; cc.Create(); // Si la cuenta es de "SUPERPRODUCTIVIDAD" // calculamos el cargo correspondiente if (adeudo.Cuenta_ID == 18) { cc = new Entities.CuentaConductores(); cc.Abono = 0; cc.Caja_ID = Sesion.Caja_ID.Value; cc.Cargo = adeudo.Pagar; cc.Comentarios = "CARGO POR SUPERPRODUCTIVIDAD"; cc.Concepto_ID = 133; // El concepto de cargo cc.Conductor_ID = Ticket.Conductor_ID; cc.Cuenta_ID = adeudo.Cuenta_ID; cc.Empresa_ID = adeudo.Empresa_ID; cc.Estacion_ID = Sesion.Estacion_ID.Value; cc.Fecha = getDate; cc.Saldo = 0; // Se calcula solo //cc.Ticket_ID = Ticket.Ticket_ID; // Entra sin ticket, para no afectar el reporte de tickets cc.Unidad_ID = DatosConductor.Unidad_ID; cc.Usuario_ID = Sesion.Usuario_ID; cc.Create(); } #endregion #region CuentaUnidades // Si hay registro de unidad if (DatosConductor.Unidad_ID != null) { // Realizamos el registro de un abono // a la cuenta de unidad Entities.CuentaUnidades cu = new Entities.CuentaUnidades(); cu.Abono = adeudo.Pagar; cu.Caja_ID = Sesion.Caja_ID.Value; cu.Comentarios = "PAGO EN CAJA"; cu.Concepto_ID = adeudo.Concepto_ID; cu.Conductor_ID = Ticket.Conductor_ID; cu.Cuenta_ID = adeudo.Cuenta_ID; cu.Empresa_ID = adeudo.Empresa_ID; cu.Estacion_ID = Sesion.Estacion_ID.Value; cu.Fecha = getDate; cu.Saldo = 0; // Se calcula solo; cu.Ticket_ID = Ticket.Ticket_ID; cu.Unidad_ID = DatosConductor.Unidad_ID.Value; cu.Usuario_ID = Sesion.Usuario_ID; cu.Create(); } #endregion #region CuentaCajas // El pago lo registramos en la cuenta de cajas Entities.CuentaCajas ccs = new Entities.CuentaCajas(); ccs.Abono = adeudo.Pagar; ccs.Caja_ID = Sesion.Caja_ID.Value; ccs.Cargo = 0; ccs.Comentarios = "PAGO EN CAJA"; ccs.Concepto_ID = adeudo.Concepto_ID; ccs.Cuenta_ID = adeudo.Cuenta_ID; ccs.Empresa_ID = adeudo.Empresa_ID; ccs.Estacion_ID = Sesion.Estacion_ID.Value; ccs.Fecha = getDate; ccs.Saldo = 0; // Se calcula solo ccs.Sesion_ID = Sesion.Sesion_ID; ccs.Ticket_ID = Ticket.Ticket_ID; ccs.Usuario_ID = Sesion.Usuario_ID; ccs.Create(); #endregion } } #region Planillas Cuenta Cajas // Para cada planilla fiscal foreach (Entities.PlanillasFiscales planilla in Planillas) { // Creamos un abono en la cuenta de cajas Entities.CuentaCajas ccs = new Entities.CuentaCajas(); ccs.Abono = planilla.Precio; ccs.Caja_ID = Sesion.Caja_ID.Value; ccs.Cargo = 0; ccs.Comentarios = "PAGO EN CAJA - PLANILLAS -"; ccs.Concepto_ID = 147; ccs.Cuenta_ID = 6; ccs.Empresa_ID = planilla.Empresa_ID; ccs.Estacion_ID = Sesion.Estacion_ID.Value; ccs.Fecha = getDate; ccs.Saldo = 0; // Se calcula solo ccs.Sesion_ID = Sesion.Sesion_ID; ccs.Ticket_ID = Ticket.Ticket_ID; ccs.Usuario_ID = Sesion.Usuario_ID; ccs.Create(); } #endregion #region Vales Cuenta Cajas // Para cada vale prepagado foreach (Entities.ValesPrepagados vale in Vales) { // Creamos un abono en la cuenta de cajas Entities.CuentaCajas ccs = new Entities.CuentaCajas(); ccs.Abono = vale.Denominacion; ccs.Caja_ID = Sesion.Caja_ID.Value; ccs.Cargo = 0; ccs.Comentarios = "PAGO EN CAJA - VALES -"; ccs.Concepto_ID = 148; ccs.Cuenta_ID = 5; ccs.Empresa_ID = 6; // Los vales son de Axertis ccs.Estacion_ID = Sesion.Estacion_ID.Value; ccs.Fecha = getDate; ccs.Saldo = 0; // Se calcula solo ccs.Sesion_ID = Sesion.Sesion_ID; ccs.Ticket_ID = Ticket.Ticket_ID; ccs.Usuario_ID = Sesion.Usuario_ID; ccs.Create(); } #endregion // Si hay vales prepagados if (Operacion.TotalVales > 0) { #region Flujo Caja Vales // Creamos un abono en la cuenta de flujo de caja CuentaFlujo = new Entities.CuentaFlujoCajas(); CuentaFlujo.Abono = Operacion.TotalVales; CuentaFlujo.Caja_ID = Sesion.Caja_ID.Value; CuentaFlujo.Cargo = 0; CuentaFlujo.Concepto = "PAGO CON VALES"; CuentaFlujo.Fecha = getDate; CuentaFlujo.Moneda_ID = 3; // Los vales CuentaFlujo.Saldo = 0; // Se calcula solo CuentaFlujo.Sesion_ID = Sesion.Sesion_ID; CuentaFlujo.Ticket_ID = Ticket.Ticket_ID; CuentaFlujo.Usuario_ID = Sesion.Usuario_ID; CuentaFlujo.Create(); #endregion #region Retribucion de Vales // El total de los vales decimal totalvales = this.Operacion.TotalVales; // El pago con vales decimal pagovales; // Para cada adeudo foreach (Entities.AdeudosDeConductor adeudo in Adeudos) { // Si fue pagado if (adeudo.Pagar > 0) { // Si el total de vales es menor o igual que el adeudo pagado if (totalvales <= adeudo.Pagar) { // El pago de vales es el tota pagovales = totalvales; } else // Si no { // El pago de vales es la cantidad pagada pagovales = adeudo.Pagar; } // Creamos la retribución de vales para la cuenta de cajas // es decir, se carga la cantidad de pago con vales // que fueron utilizados en lugar del pago con efectivo Entities.CuentaCajas ccs = new Entities.CuentaCajas(); ccs.Cargo = Math.Abs(pagovales); ccs.Caja_ID = Sesion.Caja_ID.Value; ccs.Abono = 0; ccs.Comentarios = "RETRIBUCION EN CAJA - VALES -"; ccs.Concepto_ID = adeudo.Concepto_ID; ccs.Cuenta_ID = adeudo.Cuenta_ID; ccs.Empresa_ID = adeudo.Empresa_ID; // Los vales son de Axertis ccs.Estacion_ID = Sesion.Estacion_ID.Value; ccs.Fecha = getDate; ccs.Saldo = 0; // Se calcula solo ccs.Sesion_ID = Sesion.Sesion_ID; ccs.Ticket_ID = Ticket.Ticket_ID; ccs.Usuario_ID = Sesion.Usuario_ID; ccs.Create(); // Se disminuye el total de vales totalvales -= pagovales; // En cuanto se llegue a 0 // sale del ciclo if (totalvales == 0) break; } } #endregion } // Si hubo pago con efectivo pago con efectivo if (Operacion.PagoEfectivo > 0) { // El efectivo se ingresa a la cuenta de flujo de caja CuentaFlujo = new Entities.CuentaFlujoCajas(); CuentaFlujo.Abono = Operacion.PagoEfectivo; CuentaFlujo.Caja_ID = Sesion.Caja_ID.Value; CuentaFlujo.Cargo = 0; CuentaFlujo.Concepto = "PAGO CON EFECTIVO"; CuentaFlujo.Fecha = getDate; CuentaFlujo.Moneda_ID = 1; // El efectivo CuentaFlujo.Saldo = 0; // Se calcula automáticamente CuentaFlujo.Sesion_ID = Sesion.Sesion_ID; CuentaFlujo.Ticket_ID = Ticket.Ticket_ID; CuentaFlujo.Usuario_ID = Sesion.Usuario_ID; CuentaFlujo.Create(); } // Si hay cambio if (Math.Abs(Operacion.Cambio) > 0) { // El cambio, en efectivo, sale de la caja CuentaFlujo = new Entities.CuentaFlujoCajas(); CuentaFlujo.Abono = 0; CuentaFlujo.Caja_ID = Sesion.Caja_ID.Value; CuentaFlujo.Cargo = Math.Abs(Operacion.Cambio); CuentaFlujo.Concepto = "CAMBIO / PAGO CONDUCTOR"; CuentaFlujo.Fecha = getDate; CuentaFlujo.Moneda_ID = 1; // El efectivo CuentaFlujo.Saldo = 0; // Se calcula automáticamente CuentaFlujo.Sesion_ID = Sesion.Sesion_ID; CuentaFlujo.Ticket_ID = Ticket.Ticket_ID; CuentaFlujo.Usuario_ID = Sesion.Usuario_ID; CuentaFlujo.Create(); } // Solamente si hay servicios, estos se ingresan // a la cuenta de flujo de caja if (Math.Abs(Operacion.TotalServicios) > 0) { CuentaFlujo.Cargo = 0; CuentaFlujo.Caja_ID = Sesion.Caja_ID.Value; CuentaFlujo.Abono = Math.Abs(Operacion.TotalServicios); CuentaFlujo.Concepto = "CANJE DE BOLETOS"; CuentaFlujo.Fecha = getDate; CuentaFlujo.Moneda_ID = 2; // Boletos de Servicios CuentaFlujo.Saldo = 0; // Se calcula automáticamente CuentaFlujo.Sesion_ID = Sesion.Sesion_ID; CuentaFlujo.Ticket_ID = Ticket.Ticket_ID; CuentaFlujo.Usuario_ID = Sesion.Usuario_ID; CuentaFlujo.Create(); } // Dar de baja los vales foreach (Entities.ValesPrepagados vale in Vales) { MarcarVale(vale); } // Dar de baja las planillas fiscales foreach (Entities.PlanillasFiscales planilla in Planillas) { MarcarPlanilla(planilla); } // Dar de baja los servicios que existan foreach (Entities.ServiciosPendientesConductor sp in this.ServiciosPendientes) { MarcarServicio(sp); } }