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 <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)); }
public async Task Delete(long id) { CobPagosRetenciones entity = await GetById(id); _context.CobPagosRetenciones.Remove(entity); }
public void Update(CobPagosRetenciones entity) { _context.CobPagosRetenciones.Update(entity); }
public async Task Add(CobPagosRetenciones entity) { await _context.CobPagosRetenciones.AddAsync(entity); }
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); } }