public List <ComprobanteDto> ObtenerPoIdUsuario(long id)
        {
            var comprobante = _comprobanteRepositorio.GetByFilter(x => x.UsuarioId == id);

            if (comprobante == null)
            {
                throw new Exception("No se encontro registro solicitado");
            }

            List <ComprobanteDto> Lista = new List <ComprobanteDto>();

            foreach (var item in comprobante)
            {
                var aux = new ComprobanteDto()
                {
                    Id        = item.Id,
                    Numero    = item.Numero,
                    Fecha     = item.Fecha,
                    SubTotal  = item.SubTotal,
                    Total     = item.Total,
                    Descuento = item.Descuento,
                    EventoId  = item.EventoId,
                    UsuarioId = item.UsuarioId
                };

                Lista.Add(aux);
            }

            return(Lista);
        }
Ejemplo n.º 2
0
        private void CargarComprobantesYaAutorizados(FEAuthRequest feAuthRequest, FECAERequest feCAERequest)
        {
            // Agregar comprobantes que fueron autorizados pero que no fueron cargados
            // por problemas en la comunicacion (devolucion de datos por parte de la AFIP)
            FERecuperaLastCbteResponse ultimoCbteAutorizadoAfip = this.ObtenerUltimoComprobanteAutorizado(feAuthRequest, feCAERequest);
            ComprobanteDto             ultimoCbteCargado        = this.ObtenerUltimoComprobanteCargado(feCAERequest);

            if (ultimoCbteCargado == null ||
                ultimoCbteCargado.CbteHasta < ultimoCbteAutorizadoAfip.CbteNro)
            {
                // Cargarlo en la base los comprobantes faltantes
                long           cbteNro = ultimoCbteCargado != null ? (long)ultimoCbteCargado.CbteHasta + 1 : 1;
                ComprobanteDto cbteDto = null;
                while (cbteNro <= ultimoCbteAutorizadoAfip.CbteNro)
                {
                    FECompConsResponse cbteAfip = this.ObtenerComprobanteAfip(feAuthRequest, feCAERequest, cbteNro).ResultGet;
                    if (cbteAfip == null)
                    {
                        break;
                    }

                    if (cbteAfip.EmisionTipo == "CAE")
                    {
                        cbteDto     = new ComprobanteDto();
                        cbteDto.CAE = cbteAfip.CodAutorizacion;
                        cbteDto.CAEFechaVencimiento = DateTimeHelper.ConvertyyyyMMddToDate(cbteAfip.FchVto);
                        cbteDto.CbteDesde           = cbteAfip.CbteDesde;
                        cbteDto.CbteHasta           = cbteAfip.CbteHasta;
                        cbteDto.CbteFecha           = DateTimeHelper.ConvertyyyyMMddToDate(cbteAfip.CbteFch);
                        cbteDto.PtoVta            = cbteAfip.PtoVta;
                        cbteDto.TipoComprobanteId = cbteAfip.CbteTipo;
                        TipoComprobanteDto tipoCbteDto = this.comprobanteSvc.ObtenerTipoComprobantePorCodigoAfip(cbteDto.TipoComprobanteId);
                        if (tipoCbteDto != null)
                        {
                            cbteDto.TipoComprobanteId = tipoCbteDto.Id;
                        }
                        if (cbteAfip.DocTipo == 80) // CUIT
                        {
                            ClienteDto clienteDto = this.clienteSvc.ObtenerClientePorCuit(cbteAfip.DocNro);
                            if (clienteDto != null)
                            {
                                cbteDto.ClienteId = clienteDto.Id;
                            }
                        }
                        // #TODO: borrar
                        //EstadoComprobanteDto estadoDto = this.comprobanteSvc.ObtenerEstado(CodigoEstadoCbte.NoVisualizado);
                        //if (estadoDto != null)
                        //{
                        //    cbteDto.EstadoId = estadoDto.Id;
                        //}
                        this.comprobanteSvc.CrearComprobante(cbteDto);
                        cbteNro = (long)cbteDto.CbteHasta + 1;
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
Ejemplo n.º 3
0
 public void CrearComprobante(ComprobanteDto dto)
 {
     using (var ctx = new FacturaElectronicaEntities())
     {
         Comprobante cbte = new Comprobante();
         ToComprobante(dto, cbte);
         ctx.Comprobantes.AddObject(cbte);
         ctx.SaveChanges();
     }
 }
Ejemplo n.º 4
0
 private static void ToComprobante(ComprobanteDto dto, Comprobante cbte)
 {
     cbte.CAE = dto.CAE;
     cbte.CAEFechaVencimiento = dto.CAEFechaVencimiento;
     cbte.FechaDeCarga        = DateTime.Now;
     cbte.CbteDesde           = dto.CbteDesde;
     cbte.CbteHasta           = dto.CbteHasta;
     cbte.CbteFecha           = dto.CbteFecha;
     cbte.ClienteId           = dto.ClienteId;
     cbte.TipoComprobanteId   = dto.TipoComprobanteId;
     cbte.PtoVta = dto.PtoVta;
 }
Ejemplo n.º 5
0
        public ComprobanteDto ObtenerComprobanteDeArchivoAsociado(long archivoAsociadoId)
        {
            using (var ctx = new FacturaElectronicaEntities())
            {
                var dbArchivoAsociado = ctx.ArchivoAsociadoes.Where(a => a.Id == archivoAsociadoId).Single();
                var dbComprobante     = dbArchivoAsociado.Comprobante;

                ComprobanteDto comprobanteDto = ToComprobanteDto(dbComprobante);
                comprobanteDto.NroComprobante = dbArchivoAsociado.NroComprobante;
                return(comprobanteDto);
            }
        }
Ejemplo n.º 6
0
        public ComprobanteDto Modificar(ComprobanteDto dto)
        {
            var entity = _comprobanteRepositorio.ObtenerPorId(dto.Id);

            entity.Codigo         = dto.Codigo;
            entity.FechaSolicitud = dto.FechaSolicitud;
            entity.HorarioId      = dto.HorarioId;

            _comprobanteRepositorio.Modificar(entity);
            Guardar();

            return(dto);
        }
Ejemplo n.º 7
0
        public ActionResult PagarEntrada(ComprobanteViewDto dto)
        {
            try
            {
                dto.Numero    = _comprobanteServicio.ObtenerCodigo();
                dto.Fecha     = DateTime.Now;
                dto.SubTotal  = SessionActiva.Monto;
                dto.Total     = dto.Total;
                dto.UsuarioId = SessionActiva.UsuarioId;
                dto.EventoId  = dto.EventoId;

                var Comprobante = new ComprobanteDto()
                {
                    Numero    = dto.Numero,
                    Fecha     = dto.Fecha,
                    SubTotal  = dto.SubTotal,
                    Total     = dto.Total,
                    UsuarioId = dto.UsuarioId,
                    EventoId  = dto.EventoId
                };

                dto.ComprobanteId = _comprobanteServicio.Insertar(Comprobante).Id;

                if (dto.Total > 0)
                {
                    var Tarjeta = new TarjetaDebitoDto()
                    {
                        NombreTitular = dto.NombreTitular,
                        Tarjeta       = dto.Tarjeta,
                        Mes           = dto.Mes,
                        Año           = dto.Año,
                        CCV           = dto.CCV,
                        ComprobanteId = dto.ComprobanteId
                    };

                    _tarjetaDebitoServicio.Insertar(Tarjeta);
                }
                //*****************************//


                return(RedirectToAction("CreateEntrada", new { id = dto.EventoId }));
            }
            catch (Exception e)
            {
                ViewBag.Error = e;

                return(View());
            }
        }
Ejemplo n.º 8
0
        public ComprobanteDto Agregar(ComprobanteDto dto)
        {
            var entity = new Dominio.Entidades.Entidades.Comprobante()
            {
                Codigo         = dto.Codigo,
                FechaSolicitud = dto.FechaSolicitud,
                HorarioId      = dto.HorarioId,
                Eliminado      = false
            };

            _comprobanteRepositorio.Agregar(entity);
            Guardar();
            dto.Id = entity.Id;

            return(dto);
        }
        public ComprobanteDto Insertar(ComprobanteDto dto)
        {
            var Comprobante = new Dominio.Entity.Entidades.Comprobante()
            {
                Numero    = dto.Numero,
                Fecha     = dto.Fecha,
                SubTotal  = dto.SubTotal,
                Total     = dto.Total,
                Descuento = dto.Descuento,
                EventoId  = dto.EventoId,
                UsuarioId = dto.UsuarioId
            };

            _comprobanteRepositorio.Add(Comprobante);
            Guardar();

            dto.Id = Comprobante.Id;
            return(dto);
        }
Ejemplo n.º 10
0
        private static ComprobanteDto ToComprobanteDto(Comprobante comprobante)
        {
            if (comprobante == null)
            {
                return(null);
            }

            ComprobanteDto dto = new ComprobanteDto();

            dto.Id                         = comprobante.Id;
            dto.CAE                        = comprobante.CAE;
            dto.ClienteId                  = comprobante.ClienteId;
            dto.ClienteNombre              = comprobante.Cliente != null ? comprobante.Cliente.RazonSocial : string.Empty;
            dto.CAEFechaVencimiento        = comprobante.CAEFechaVencimiento;
            dto.FechaDeCarga               = comprobante.FechaDeCarga;
            dto.TipoComprobanteId          = comprobante.TipoComprobanteId;
            dto.TipoComprobanteDescripcion = comprobante.TipoComprobante.Descripcion;
            dto.CbteDesde                  = comprobante.CbteDesde;
            dto.CbteHasta                  = comprobante.CbteHasta;
            dto.CbteFecha                  = comprobante.CbteFecha;
            dto.PtoVta                     = comprobante.PtoVta;
            //#TODO: logica para obtener comprobante de acuerdo al nro.
            // Recordar lo de Factura B que se puede poner un rango.
            ArchivoAsociado archivoAsociado = comprobante.ArchivoAsociadoes.FirstOrDefault();

            if (archivoAsociado != null)
            {
                dto.PathFile = comprobante.ArchivoAsociadoes.First().PathArchivo;
                VisualizacionComprobante visualizacionCbte = archivoAsociado.VisualizacionComprobantes.FirstOrDefault();
                if (visualizacionCbte != null)
                {
                    dto.DireccionIp        = visualizacionCbte.DireccionIP;
                    dto.FechaVisualizacion = visualizacionCbte.Fecha;
                }
            }

            return(dto);
        }
Ejemplo n.º 11
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                HasPermissionToSeeMe(Operaciones.MensajesAlertasClientes);
                this.comprobanteSvc = ServiceFactory.GetComprobanteService();
                if (!this.IsPostBack)
                {
                    if (this.Request.QueryString["Id"] != null)
                    {
                        ComprobanteCriteria criteria = new ComprobanteCriteria();
                        this.ArchivoAsociadoId = long.Parse(this.Request.QueryString["Id"]);
                        ComprobanteDto comprobante = this.comprobanteSvc.ObtenerComprobanteDeArchivoAsociado(ArchivoAsociadoId);
                        this.lblComprobante.Text = comprobante.NroComprobante.ToString();
                    }

                    this.Buscar();
                }
            }
            catch (Exception ex)
            {
                ExceptionManager.Instance.HandleException(ex);
            }
        }
Ejemplo n.º 12
0
        public virtual long Insertar(ComprobanteDto dto)
        {
            var comprobante = GenericInstance <Comprobante> .InstanciarEntidad(dto, _diccionario);

            return(comprobante.Insertar(dto));
        }
Ejemplo n.º 13
0
        public override long Insertar(ComprobanteDto comprobante)
        {
            using (var tran = new TransactionScope())
            {
                try
                {
                    int numeroComprobante = 0;

                    var cajaActual = _unidadDeTrabajo.CajaRepositorio.Obtener
                                         (x => x.UsuarioAperturaId == comprobante.UsuarioId &&
                                         x.UsuarioCierreId == null).FirstOrDefault();

                    if (cajaActual == null)
                    {
                        throw new Exception("Ocurrio un error al obtener la Caja");
                    }

                    var ctaCteCompDto = (CtaCteComprobanteDto)comprobante;

                    CuentaCorrienteCliente _CtaCteNueva = new CuentaCorrienteCliente();

                    numeroComprobante = _contadorServicio.ObtenerSiguienteNumeroComprobante(comprobante.TipoComprobante);

                    _CtaCteNueva = new CuentaCorrienteCliente
                    {
                        ClienteId           = ctaCteCompDto.ClienteId,
                        Descuento           = ctaCteCompDto.Descuento,
                        EmpleadoId          = ctaCteCompDto.EmpleadoId,
                        Fecha               = ctaCteCompDto.Fecha,
                        Iva105              = ctaCteCompDto.Iva105,
                        Iva21               = ctaCteCompDto.Iva21,
                        Numero              = numeroComprobante,
                        SubTotal            = ctaCteCompDto.SubTotal,
                        Total               = ctaCteCompDto.Total,
                        TipoComprobante     = ctaCteCompDto.TipoComprobante,
                        UsuarioId           = ctaCteCompDto.UsuarioId,
                        DetalleComprobantes = new List <DetalleComprobante>(),
                        Movimientos         = new List <Movimiento>(),
                        FormaPagos          = new List <FormaPago>(),
                        EstaEliminado       = false
                    };



                    _CtaCteNueva.Movimientos.Add(new Movimiento
                    {
                        ComprobanteId  = _CtaCteNueva.Id,
                        CajaId         = cajaActual.Id,
                        Fecha          = ctaCteCompDto.Fecha,
                        Monto          = ctaCteCompDto.Total,
                        UsuarioId      = ctaCteCompDto.UsuarioId,
                        TipoMovimiento = TipoMovimiento.Ingreso,
                        Descripcion    = $"Fa- { ctaCteCompDto.TipoComprobante.ToString() }-Nro { numeroComprobante }",
                        EstaEliminado  = false
                    });

                    foreach (var fp in ctaCteCompDto.FormasDePagos)
                    {
                        var fpCtaCTe = (FormaPagoCtaCteDto)fp;
                        _CtaCteNueva.FormaPagos.Add(new FormaPagoCtaCte
                        {
                            Monto         = fpCtaCTe.Monto,
                            TipoPago      = TipoPago.CtaCte,
                            ClienteId     = fpCtaCTe.ClienteId,
                            EstaEliminado = false
                        });

                        _CtaCteNueva.Movimientos.Add(new MovimientoCuentaCorriente
                        {
                            ComprobanteId  = _CtaCteNueva.Id,
                            CajaId         = cajaActual.Id,
                            Fecha          = ctaCteCompDto.Fecha,
                            Monto          = fpCtaCTe.Monto,
                            UsuarioId      = ctaCteCompDto.UsuarioId,
                            TipoMovimiento =
                                TipoMovimiento.Egreso,
                            Descripcion   = $"Fa- { ctaCteCompDto.TipoComprobante.ToString() }-Nro { numeroComprobante }",
                            ClienteId     = fpCtaCTe.ClienteId,
                            EstaEliminado = false
                        });
                        cajaActual.TotalEntradaCtaCte +=
                            fpCtaCTe.Monto;
                        cajaActual.DetalleCajas.Add(new DetalleCaja
                        {
                            Monto    = fpCtaCTe.Monto,
                            TipoPago = TipoPago.CtaCte
                        });


                        _unidadDeTrabajo.CajaRepositorio.Modificar(cajaActual);
                    }

                    _unidadDeTrabajo.FacturaRepositorio.Modificar(_CtaCteNueva);

                    _unidadDeTrabajo.Commit();
                    tran.Complete();
                    return(0);
                }
                catch (DbEntityValidationException ex)
                {
                    var error = ex.EntityValidationErrors.SelectMany(v => v.ValidationErrors)
                                .Aggregate(string.Empty,
                                           (current, validationError) =>
                                           current +
                                           ($"Property: {validationError.PropertyName} Error: {validationError.ErrorMessage}. {Environment.NewLine}"
                                           ));

                    tran.Dispose();
                    throw new Exception($"Ocurrio un error grave al grabar la Factura. Error: {error}");
                }
            }
        }
Ejemplo n.º 14
0
        public override long Insertar(ComprobanteDto comprobante)
        {
            using (var tran = new TransactionScope())
            {
                try
                {
                    var numeroComprobante = _contadorServicio.ObtenerSiguienteNumero(comprobante.TipoComprobante);

                    var config = _configuracionServicio.Obtener();

                    if (config == null)
                    {
                        throw new Exception("Ocurrio un erorr al obtener la Configuración");
                    }

                    var cajaActual = _unidadDeTrabajo.CajaRepositorio.Obtener(x => x.UsuarioAperturaId == comprobante.UsuarioId &&
                                                                              x.UsuarioCierreId == null).FirstOrDefault();

                    if (cajaActual == null)
                    {
                        throw new Exception("Ocurrio un error al obtener la Caja");
                    }

                    cajaActual.DetalleCajas = new List <DetalleCaja>();

                    var facturaDto = (FacturaDto)comprobante;

                    Dominio.Entidades.Factura _facturaNueva = new Dominio.Entidades.Factura();


                    if (facturaDto.Estado == Estado.Pendiente && !facturaDto.VieneVentas)
                    {
                        _facturaNueva = _unidadDeTrabajo.FacturaRepositorio.Obtener(facturaDto.Id, "DetalleComprobantes");

                        _facturaNueva.DetalleComprobantes = new List <DetalleComprobante>();
                        _facturaNueva.Movimientos         = new List <Movimiento>();
                        _facturaNueva.FormaPagos          = new List <FormaPago>();
                    }
                    else
                    {
                        _facturaNueva = new Dominio.Entidades.Factura
                        {
                            ClienteId           = facturaDto.ClienteId,
                            Descuento           = facturaDto.Descuento,
                            EmpleadoId          = facturaDto.EmpleadoId,
                            Estado              = facturaDto.Estado,
                            Fecha               = facturaDto.Fecha,
                            Iva105              = facturaDto.Iva105,
                            Iva21               = facturaDto.Iva21,
                            Numero              = numeroComprobante,
                            SubTotal            = facturaDto.SubTotal,
                            Total               = facturaDto.Total,
                            PuestoTrabajoId     = facturaDto.PuestoTrabajoId,
                            TipoComprobante     = facturaDto.TipoComprobante,
                            UsuarioId           = facturaDto.UsuarioId,
                            DetalleComprobantes = new List <DetalleComprobante> (), Movimientos = new List <Movimiento>(), FormaPagos = new List <FormaPago>(),
                            EstaEliminado       = false
                        };
                        foreach (var item in facturaDto.Items)
                        {
                            if (config.FacturaDescuentaStock)
                            {
                                var stockActual =
                                    _unidadDeTrabajo.StockRepositorio.Obtener(x =>
                                                                              x.ArticuloId == item.ArticuloId &&
                                                                              x.DepositoId ==
                                                                              config.DepositoVentaId).FirstOrDefault();
                                if (stockActual == null)
                                {
                                    throw new Exception("Ocurrio un error al obtener el Stock del Articulo");
                                }

                                if (stockActual.Cantidad >= item.Cantidad)
                                {
                                    stockActual.Cantidad -= item.Cantidad;
                                }
                                _unidadDeTrabajo.StockRepositorio.Modificar
                                    (stockActual);
                            }

                            _facturaNueva.DetalleComprobantes.Add(new DetalleComprobante
                            {
                                Cantidad    = item.Cantidad,
                                ArticuloId  = item.ArticuloId,
                                Iva         = item.Iva,
                                Descripcion = item.Descripcion,
                                Precio      = item.Precio,
                                Codigo      = item.Codigo,
                                SubTotal    = item.SubTotal
                            });
                        }
                    }
                    if (facturaDto.Estado == Estado.Pagada)
                    {
                        _facturaNueva.Movimientos.Add(new Movimiento
                        {
                            CajaId         = cajaActual.Id,
                            Fecha          = facturaDto.Fecha,
                            Monto          = facturaDto.Total,
                            UsuarioId      = facturaDto.UsuarioId,
                            TipoMovimiento = TipoMovimiento.Ingreso,
                            Descripcion    = $"Fa-{ facturaDto.TipoComprobante.ToString() }-Nro{ numeroComprobante }",
                            EstaEliminado  = false
                        });
                        foreach (var fp in facturaDto.FormasDePagos)
                        {
                            switch (fp.TipoPago)
                            {
                            case TipoPago.Efectivo:

                                _facturaNueva.FormaPagos.Add(new FormaPago
                                {
                                    Monto         = fp.Monto,
                                    TipoPago      = fp.TipoPago,
                                    EstaEliminado = false
                                });
                                cajaActual.TotalEntradaEfectivo += fp.Monto;

                                cajaActual.DetalleCajas.Add(new DetalleCaja
                                {
                                    Monto    = fp.Monto,
                                    TipoPago = TipoPago.Efectivo
                                });

                                break;

                            //case TipoPago.Tarjeta:
                            //    var fpTarjeta = (FormaPagoTarjetaDto)fp; _facturaNueva.FormaPagos.Add(new FormaPagoTarjeta
                            //    {
                            //        Monto = fpTarjeta.Monto,
                            //        TipoPago = fpTarjeta.TipoPago,
                            //        CantidadCuotas = fpTarjeta.CantidadCuotas,
                            //        CuponPago = fpTarjeta.CuponPago,
                            //        NumeroTarjeta = fpTarjeta.NumeroTarjeta,
                            //        TarjetaId = fpTarjeta.TarjetaId,
                            //        EstaEliminado = false
                            //    });
                            //    cajaActual.TotalEntradaTarjeta +=
                            //    fpTarjeta.Monto;
                            //    cajaActual.DetalleCajas.Add(new DetalleCaja
                            //    {
                            //        Monto = fpTarjeta.Monto,
                            //        TipoPago = TipoPago.Tarjeta
                            //    });
                            //    break;
                            //case TipoPago.Cheque:
                            //    var fpCheque = (FormaPagoChequeDto)fp; _facturaNueva.FormaPagos.Add(new FormaPagoCheque
                            //    {
                            //        Cheque = new Cheque
                            //        {
                            //            BancoId = fpCheque.BancoId,
                            //            ClienteId = fpCheque.ClienteId,
                            //            FechaVencimiento = fpCheque.FechaVencimiento,
                            //            Numero = fpCheque.Numero,
                            //            EstaRechazado = false,
                            //            EstaEliminado = false
                            //        },
                            //        Monto = fpCheque.Monto,
                            //        TipoPago = TipoPago.Cheque
                            //    });
                            //    cajaActual.TotalEntradaCheque +=
                            //    fpCheque.Monto;
                            //    cajaActual.DetalleCajas.Add(new DetalleCaja
                            //    {
                            //        Monto = fpCheque.Monto,
                            //        TipoPago = TipoPago.Cheque
                            //    });
                            //    break;
                            case TipoPago.CtaCte:

                                var fpCtaCTe = (FormaPagoCtaCteDto)
                                               fp;  _facturaNueva.FormaPagos.Add(new FormaPagoCtaCte
                                {
                                    Monto         = fpCtaCTe.Monto,
                                    TipoPago      = TipoPago.CtaCte,
                                    ClienteId     = fpCtaCTe.ClienteId,
                                    EstaEliminado = false
                                });
                                _facturaNueva.Movimientos.Add(new MovimientoCuentaCorriente
                                {
                                    CajaId         = cajaActual.Id,
                                    Fecha          = facturaDto.Fecha,
                                    Monto          = fpCtaCTe.Monto,
                                    UsuarioId      = facturaDto.UsuarioId,
                                    TipoMovimiento =
                                        TipoMovimiento.Egreso,
                                    Descripcion   = $"Fa-{ facturaDto.TipoComprobante.ToString() }-Nro{ numeroComprobante }",
                                    ClienteId     = fpCtaCTe.ClienteId,
                                    EstaEliminado = false
                                });


                                cajaActual.TotalEntradaCtaCte += fpCtaCTe.Monto;

                                cajaActual.DetalleCajas.Add(new DetalleCaja
                                {
                                    Monto    = fpCtaCTe.Monto,
                                    TipoPago = TipoPago.CtaCte
                                });
                                break;
                            }
                        }

                        _unidadDeTrabajo.CajaRepositorio.Modificar(cajaActual);
                    }

                    _unidadDeTrabajo.FacturaRepositorio.Insertar(_facturaNueva);

                    _unidadDeTrabajo.Commit();
                    tran.Complete();
                    return(0);
                }
                catch
                {
                    tran.Dispose();
                    throw new Exception("Ocurrio un error grave al grabar la Factura");
                }
            }
        }
Ejemplo n.º 15
0
 public virtual long Insertar(ComprobanteDto comprobante)
 {
     return(0);
 }
Ejemplo n.º 16
0
 public override long Insertar(ComprobanteDto dto)
 {
     return(base.Insertar(dto));
 }