public ProcessResult<List<CierreCajaDomain>> BuscarCierreCaja(String codigoCierreCaja)
        {
            ProcessResult<List<CierreCajaDomain>> list = new ProcessResult<List<CierreCajaDomain>>();
            List<CierreCajaDomain> listResult = new List<CierreCajaDomain>();
            try
            {
                List<CierreCajaLogic> solicitudVenta = EmpleadoLogicRepository.BuscarCierreCaja(codigoCierreCaja);

                foreach (var item in solicitudVenta)
                {
                    CierreCajaDomain svd = new CierreCajaDomain();

                    svd.codigoCierreCaja = item.codigoCierreCaja;
                    svd.fechaCierre = item.fechaCierre;
                    svd.nombreEmpleado = item.nombreEmpleado;
                    svd.efectivoSoles = item.efectivoSoles;
                    svd.efectivoDolares = item.efectivoDolares;
                    svd.tarjetaSoles = item.tarjetaSoles;
                    svd.tarjetaDolares = item.tarjetaDolares;
                    svd.devolucionSoles = item.devolucionSoles;
                    svd.devolucionDolares = item.devolucionDolares;
                    svd.efectivoSolesReal = item.efectivoSolesReal;
                    svd.efectivoDolaresReal = item.efectivoDolaresReal;
                    svd.tarjetaSolesReal = item.tarjetaSolesReal;
                    svd.tarjetaDolaresReal = item.tarjetaDolaresReal;
                    svd.devolucionSolesReal = item.devolucionSolesReal;
                    svd.devolucionDolaresReal = item.devolucionDolaresReal;
                    svd.MontoReal = item.MontoReal;
                    svd.MontoTotal = item.MontoTotal;
                    svd.montoDiferencia = item.montoDiferencia;

                    listResult.Add(svd);
                }

                list.Result = listResult;

            }
            catch (Exception e)
            {
                list.IsSuccess = true;
                list.Exception = new ApplicationLayerException<SolicitudPermisoService>("Ocurrio un problema en el sistema", e);
            }
            return list;
        }
        public ProcessResult<CierreCajaDomain> CierreCaja()
        {
            ProcessResult<CierreCajaDomain> list = new ProcessResult<CierreCajaDomain>();
            //CierreCajaDomain listResult = new CierreCajaDomain();
            try
            {
                CierreCajaLogic cierreCaja = EmpleadoLogicRepository.CierreCaja();
                CierreCajaDomain svd = new CierreCajaDomain();

                /*svd.numeroFacturasEmitidas = cierreCaja.numeroFacturasEmitidas;
                svd.numeroFacturasAnuladas = cierreCaja.numeroFacturasAnuladas;
                svd.numeroBoletasEmitidas = cierreCaja.numeroBoletasEmitidas;
                svd.numeroBoletasAnuladas = cierreCaja.numeroBoletasAnuladas;
                svd.numeroVouchers = cierreCaja.numeroVouchers;
                svd.montoNotasCredito = cierreCaja.montoNotasCredito;*/
                svd.efectivoDolares = cierreCaja.efectivoDolares;
                svd.efectivoSoles = cierreCaja.efectivoSoles;
                svd.tarjetaSoles = cierreCaja.tarjetaSoles;
                svd.tarjetaDolares = cierreCaja.tarjetaDolares;
                svd.devolucionSoles = cierreCaja.devolucionSoles;
                svd.devolucionDolares = cierreCaja.devolucionDolares;

                list.Result = svd;

            }
            catch (Exception e)
            {
                list.IsSuccess = true;
                list.Exception = new ApplicationLayerException<SolicitudPermisoService>("Ocurrio un problema en el sistema", e);
            }
            return list;
        }
        public ProcessResult<String> GrabarCierre(CierreCajaDomain obj)
        {
            ProcessResult<String> result = new ProcessResult<String>();

            var numeroCierre = "";

            try
            {

                CierreCajaLogic cierre = new CierreCajaLogic();

                cierre.efectivoSoles = obj.efectivoSoles;
                cierre.efectivoDolares = obj.efectivoDolares;
                cierre.tarjetaSoles = obj.tarjetaSoles;
                cierre.tarjetaDolares = obj.tarjetaDolares;
                cierre.devolucionSoles = obj.devolucionSoles;
                cierre.devolucionDolares = obj.devolucionDolares;
                cierre.montoDiferencia = obj.montoDiferencia;
                cierre.codigoEmpleado = obj.codigoEmpleado;
                cierre.numeroCaja = obj.numeroCaja;

                numeroCierre = EmpleadoLogicRepository.GrabarCierre(cierre);
                result.Result = numeroCierre;
            }
            catch (Exception e)
            {
                result.IsSuccess = true;
                result.Exception = new ApplicationLayerException<SolicitudPermisoService>("Ocurrio un problema en el sistema", e);
            }

            return result;
        }
        public virtual JsonResult GrabarCierre(CierreRequest request)
        {
            
            decimal efectivoSoles = request.efectivoSoles;
            decimal efectivoDolares = request.efectivoDolares;
            decimal tarjetaSoles = request.tarjetaSoles;
            decimal tarjetaDolares = request.tarjetaDolares;
            decimal devolucionSoles = request.devolucionSoles;
            decimal devolucionDolares = request.devolucionDolares;
            decimal montoDiferencia = request.montoDiferencia;
            int codigoEmpleado = request.codigoEmpleado;
            int numeroCaja = request.numeroCaja;

            /* decimal efectivoSoles = 100;
             decimal efectivoDolares = 50;
             decimal montoTarjetas = 30;
             decimal montoDevoluciones = 0;
             decimal montoDiferencia = 20;
             int codigoEmpleado = 1;
             int numeroCaja = 1;*/

            CierreCajaDomain cierre = new CierreCajaDomain();
            cierre.efectivoSoles = efectivoSoles;
            cierre.efectivoDolares = efectivoDolares;
            cierre.tarjetaSoles = tarjetaSoles;
            cierre.tarjetaDolares = tarjetaDolares;
            cierre.devolucionSoles = devolucionSoles;
            cierre.devolucionDolares = devolucionDolares;
            cierre.montoDiferencia = montoDiferencia;
            cierre.codigoEmpleado = codigoEmpleado;
            cierre.numeroCaja = numeroCaja;

            var numeroCierre = solicitudVentaService.GrabarCierre(cierre);

            var cierreCaja = solicitudVentaService.BuscarCierreCaja(numeroCierre.Result.ToString());

            // solicitudes.Exception = null; // --> Test only
            return Json(cierreCaja);

        }