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)); }
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 <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)); }