Example #1
0
        public async Task <IActionResult> Update(CobPagosRetencionesDto cobPagosRetencionesDto)
        {
            CobPagosRetencionesDto resultDto = new CobPagosRetencionesDto();
            Metadata metadata = new Metadata
            {
                IsValid = true,
                Message = ""
            };


            CobPagosRetenciones cobPagosRetenciones = _mapper.Map <CobPagosRetenciones>(cobPagosRetencionesDto);



            var cobro = await _cobPagosRetencionesService.GetById(cobPagosRetencionesDto.Id);

            if (cobro != null)
            {
                var retencionValida = await _cobPagosRetencionesService.ValidateInsert(cobPagosRetenciones);

                if (!retencionValida.IsValid && retencionValida.Message != "Ya tiene porentaje cargado para este impuesto, eliminelo y vuelvalo a crear.")
                {
                    metadata = retencionValida;
                }
                else
                {
                    await Delete(cobPagosRetencionesDto);

                    cobPagosRetencionesDto.Id = 0;
                    await Insert(cobPagosRetencionesDto);

                    metadata.IsValid = true;

                    metadata.Message = "Retencion Actualizada";
                }
            }
            else
            {
                metadata.IsValid = false;

                metadata.Message = "Retencion No existe";
            }



            ApiResponse <CobPagosRetencionesDto> response = new ApiResponse <CobPagosRetencionesDto>(resultDto)
            {
                Meta = metadata,
            };

            return(Ok(response));
        }
Example #2
0
        public async Task <IActionResult> Delete(CobPagosRetencionesDto cobPagosRetencionesDto)
        {
            CobPagosRetencionesDto resultDto = new CobPagosRetencionesDto();
            Metadata metadata = new Metadata
            {
                IsValid = true,
                Message = ""
            };
            CobPagosRetenciones cobPagosRetenciones = _mapper.Map <CobPagosRetenciones>(cobPagosRetencionesDto);



            var cobranza = await _cobPagosRetencionesService.Delete(cobPagosRetencionesDto.Id);

            if (cobranza)
            {
                var grabacionCobranza = await _cobGrabacionCobranzasService.GetById(cobPagosRetenciones.IdCobranza);

                if (grabacionCobranza.Transaccion == "RE")
                {
                    grabacionCobranza.Monto = grabacionCobranza.Monto - cobPagosRetenciones.Monto;
                    var grabacionCobranzaResult = await _cobGrabacionCobranzasService.Update(grabacionCobranza);
                }

                metadata.IsValid = true;
                metadata.Message = "Registro eliminado Satisfactoriamente";
            }
            else
            {
                metadata.IsValid = false;

                metadata.Message = "Registro No Eliminado";
            }



            ApiResponse <CobPagosRetencionesDto> response = new ApiResponse <CobPagosRetencionesDto>(resultDto)
            {
                Meta = metadata,
            };

            return(Ok(response));
        }
        public async Task <CobPagosRetenciones> Insert(CobPagosRetenciones cobPagosRetenciones)
        {
            if (cobPagosRetenciones.DocumentoSap == null)
            {
                cobPagosRetenciones.DocumentoSap = "";
            }

            if (cobPagosRetenciones.EjercicioDocumentoSap == null)
            {
                cobPagosRetenciones.EjercicioDocumentoSap = "";
            }


            await _unitOfWork.CobPagosRetencionesRepository.Add(cobPagosRetenciones);

            await _unitOfWork.SaveChangesAsync();

            return(cobPagosRetenciones);
        }
        public async Task <CobPagosRetenciones> Update(CobPagosRetenciones cobPagosRetenciones)
        {
            if (cobPagosRetenciones.DocumentoSap == null)
            {
                cobPagosRetenciones.DocumentoSap = "";
            }

            if (cobPagosRetenciones.EjercicioDocumentoSap == null)
            {
                cobPagosRetenciones.EjercicioDocumentoSap = "";
            }

            var retencion = await GetById(cobPagosRetenciones.Id);

            if (retencion == null)
            {
                throw new Exception("Banco No existe");
            }

            _unitOfWork.CobPagosRetencionesRepository.Update(cobPagosRetenciones);
            await _unitOfWork.SaveChangesAsync();

            return(await GetById(retencion.Id));
        }
Example #5
0
        public async Task Delete(long id)
        {
            CobPagosRetenciones entity = await GetById(id);

            _context.CobPagosRetenciones.Remove(entity);
        }
Example #6
0
 public void Update(CobPagosRetenciones entity)
 {
     _context.CobPagosRetenciones.Update(entity);
 }
Example #7
0
 public async Task Add(CobPagosRetenciones entity)
 {
     await _context.CobPagosRetenciones.AddAsync(entity);
 }
Example #8
0
        public async Task <IActionResult> Insert(CobPagosRetencionesDto cobPagosRetencionesDto)
        {
            CobPagosRetencionesDto resultDto = new CobPagosRetencionesDto();

            Metadata metadata = new Metadata
            {
                IsValid = true,
                Message = ""
            };

            CobPagosRetenciones cobPagosRetenciones = _mapper.Map <CobPagosRetenciones>(cobPagosRetencionesDto);

            var retencionValida = await _cobPagosRetencionesService.ValidateInsert(cobPagosRetenciones);

            if (!retencionValida.IsValid)
            {
                metadata = retencionValida;
            }
            else
            {
                //AGREGAMOS EL REGISTRO
                cobPagosRetenciones.FechaCrea = DateTime.Now;

                cobPagosRetenciones.FlagComprobanteNo = false;

                var grabacionCobranza = await _cobGrabacionCobranzasService.GetById(cobPagosRetenciones.IdCobranza);

                var estadoCuenta = await _cobEstadoCuentaService.GetEstadoCuentaById(grabacionCobranza.DocAfecta);

                var ValRet = await _cobValoresRetencionesService.GetById(cobPagosRetenciones.IdTransaccion);

                //Se determina si la retencion es por la base o por el iva de la factura
                decimal baseCalculoRetencion = 0;
                if (ValRet.FlagRetieneSobreImp != true)
                {
                    baseCalculoRetencion = (decimal)estadoCuenta.BaseImponible;
                }
                else
                {
                    baseCalculoRetencion = (decimal)(estadoCuenta.Iva);
                }

                if (estadoCuenta.Moneda == "USD")
                {
                    var tasa = await _tPaTasaBancoCentralServices.GetTasaByFecha((DateTime)estadoCuenta.FechaDocumento);

                    if (tasa != null)
                    {
                        baseCalculoRetencion = baseCalculoRetencion * (decimal)tasa.Tasa;
                    }
                    else
                    {
                        var ultimaTasa = await _tPaTasaBancoCentralServices.GetTasaByFecha((DateTime)DateTime.Now);

                        baseCalculoRetencion = baseCalculoRetencion * (decimal)ultimaTasa.Tasa;
                    }
                }
                cobPagosRetenciones.Monto = Math.Round((cobPagosRetenciones.Porcentaje / Convert.ToDecimal(100.0000)) * Convert.ToDecimal(baseCalculoRetencion), 2);

                var transaccion = await _cobTransaccionesService.GetById(cobPagosRetencionesDto.IdTransaccion);

                decimal Diferencia = 0;

                Diferencia = Math.Abs(cobPagosRetenciones.Monto - cobPagosRetencionesDto.Monto);
                if (Diferencia <= transaccion.BsHolgura)
                {
                    cobPagosRetenciones.Monto = cobPagosRetencionesDto.Monto;
                }


                var cobranza = await _cobPagosRetencionesService.Insert(cobPagosRetenciones);

                if (cobranza != null)
                {
                    if (grabacionCobranza.Transaccion == "RE")
                    {
                        grabacionCobranza.Monto = _cobPagosRetencionesService.GetTotalRetencionesByIdCobranzas(grabacionCobranza.Id);;
                        var grabacionCobranzaResult = await _cobGrabacionCobranzasService.Update(grabacionCobranza);
                    }

                    resultDto        = _mapper.Map <CobPagosRetencionesDto>(cobranza);
                    metadata.IsValid = true;
                    metadata.Message = "Creado Satisfactoriamente";
                }
                else
                {
                    metadata.IsValid = false;

                    metadata.Message = "Registro No actualizado";
                }
            }



            ApiResponse <CobPagosRetencionesDto> response = new ApiResponse <CobPagosRetencionesDto>(resultDto)
            {
                Meta = metadata,
            };

            return(Ok(response));
        }
        public async Task <Metadata> ValidateInsert(CobPagosRetenciones cobPagosRetenciones)
        {
            Metadata metadata = new Metadata
            {
                IsValid = false,
                Message = ""
            };

            try
            {
                if (cobPagosRetenciones.IdTransaccion == 0)
                {
                    metadata.IsValid = false;
                    metadata.Message = "Debe indicar tipo de retención";
                    return(metadata);
                }
                if (cobPagosRetenciones.Porcentaje == 0)
                {
                    metadata.IsValid = false;
                    metadata.Message = "Debe indicar el Porcentaje de la Retención";
                    return(metadata);
                }

                var meta = await ValorRetencion(cobPagosRetenciones.IdTransaccion, Convert.ToDouble(cobPagosRetenciones.Porcentaje));

                metadata = meta;
                if (!meta.IsValid)
                {
                    metadata = meta;
                    return(metadata);
                }


                //BUSCAMOS LA TRANSACCION///////////////////////////////////////////////

                var transacciones = await _unitOfWork.CobTransaccionesRepository.GetById(cobPagosRetenciones.IdTransaccion);

                //VERIFICAMOS QUE LA RETENCION YA FUE CARGADA
                if (transacciones.FlagRepiteImpuesto == false)
                {
                    //var qryPago = _unitOfWork.CobPagosRetencionesRepository.GetAll().Where(x => x.IdCobranza == cobPagosRetenciones.IdCobranza && x.IdTransaccion == cobPagosRetenciones.IdTransaccion).FirstOrDefault();
                    var qryPago = await _unitOfWork.CobPagosRetencionesRepository.GetByIdCobranzasTransaccion(cobPagosRetenciones.IdCobranza, cobPagosRetenciones.IdTransaccion);

                    //var QryPagos = (from Pago in db.CobPagosRetenciones where Pago.IdCobranza == Pagos.IdCobranza && Pago.IdTransaccion == Pagos.IdTransaccion select Pago).FirstOrDefault();
                    if (qryPago != null)
                    {
                        metadata.IsValid = false;
                        metadata.Message = "Ya tiene porentaje cargado para este impuesto, eliminelo y vuelvalo a crear.";
                        return(metadata);
                    }
                }
                else
                {
                    var qryPago = _unitOfWork.CobPagosRetencionesRepository.GetAll().Where(x => x.IdCobranza == cobPagosRetenciones.IdCobranza && x.IdTransaccion == cobPagosRetenciones.IdTransaccion && x.Porcentaje == cobPagosRetenciones.Porcentaje).FirstOrDefault();
                    //var QryPagos = (from Pago in db.CobPagosRetenciones where Pago.IdCobranza == Pagos.IdCobranza && Pago.IdTransaccion == Pagos.IdTransaccion && Pago.Porcentaje == Pagos.Porcentaje select Pago).FirstOrDefault();
                    if (qryPago != null)
                    {
                        metadata.IsValid = false;
                        metadata.Message = "Ya tiene porentaje cargado para este impuesto, eliminelo y vuelvalo a crear.";
                        return(metadata);
                    }
                }

                //VERIFICAMOS QUE LA RETENCION NO HAYA SIDO CARGADA EN OTRO RECIBO DE COBRO

                // var grabacionCobranzaActual = _unitOfWork.CobGrabacionCobranzasRepository.GetAll().Where(x=> x.Id== cobPagosRetenciones.IdCobranza).FirstOrDefault();

                var grabacionCobranzaActual = await _unitOfWork.CobGrabacionCobranzasRepository.GetById(cobPagosRetenciones.IdCobranza);


                //var otraGrabacionCobranza = _unitOfWork.CobGrabacionCobranzasRepository.GetAll().Where(x => x.DocAfecta == grabacionCobranzaActual.DocAfecta).FirstOrDefault();
                var otraGrabacionCobranza = _unitOfWork.CobGrabacionCobranzasRepository.GetByDocumentoAfecta(grabacionCobranzaActual.DocAfecta);


                if (otraGrabacionCobranza != null)
                {
                    //var pagosretencion = _unitOfWork.CobPagosRetencionesRepository.GetAll().Where(x => x.IdCobranza == otraGrabacionCobranza.Id && x.IdTransaccion== cobPagosRetenciones.IdTransaccion).FirstOrDefault();
                    var pagosretencion = await _unitOfWork.CobPagosRetencionesRepository.GetByIdCobranzasTransaccion(otraGrabacionCobranza.Id, cobPagosRetenciones.IdTransaccion);

                    if (pagosretencion != null)
                    {
                        var general = await _unitOfWork.GeneralCobranzaRepository.GetGeneralCobranzaDocumento((long)otraGrabacionCobranza.Documento);

                        if (general.FlagAnulado == false)
                        {
                            metadata.IsValid = false;
                            metadata.Message = "La Factura " + otraGrabacionCobranza.Rpdoc.ToString() + " ya tiene la " + transacciones.NombreTransaccion + " cargada en el RC N° " + otraGrabacionCobranza.Documento.ToString();
                            return(metadata);
                        }
                    }
                }



                metadata.IsValid = true;
                metadata.Message = "Retencion Valida";
                return(metadata);
            }
            catch (Exception ex)
            {
                metadata.IsValid = false;
                metadata.Message = ex.InnerException.Message;
                return(metadata);
            }
        }