Beispiel #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));
        }
Beispiel #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));
        }
Beispiel #3
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));
        }