public async Task <CobGrabacionCobranzas> Insert(CobGrabacionCobranzas cobGrabacionCobranzas)
        {
            var docAfecta = await _unitOfWork.CobEstadoDeCuentaRepository.GetById(cobGrabacionCobranzas.DocAfecta);

            if (docAfecta != null)
            {
                cobGrabacionCobranzas.Rpdoc        = docAfecta.Rpdoc;
                cobGrabacionCobranzas.Rpdct        = docAfecta.Rpdct;
                cobGrabacionCobranzas.Rpkco        = docAfecta.Rpkco;
                cobGrabacionCobranzas.Rpsfx        = docAfecta.Rpsfx;
                cobGrabacionCobranzas.DocAfectaSap = docAfecta.DocumentoSap;
            }
            if (cobGrabacionCobranzas.DocumentoSap == null)
            {
                cobGrabacionCobranzas.DocumentoSap = "";
            }
            if (cobGrabacionCobranzas.EjercicioDocumentoSap == null)
            {
                cobGrabacionCobranzas.EjercicioDocumentoSap = "";
            }

            await _unitOfWork.CobGrabacionCobranzasRepository.Add(cobGrabacionCobranzas);

            await _unitOfWork.SaveChangesAsync();

            var generalCobranza = await _unitOfWork.GeneralCobranzaRepository.GetGeneralCobranzaDocumento((long)cobGrabacionCobranzas.Documento);

            generalCobranza.TotalDetalleCobrado = generalCobranza.MontoTransaccion - TotalDetalleRecibo((long)cobGrabacionCobranzas.Documento);

            await _unitOfWork.GeneralCobranzaRepository.Update(generalCobranza);

            await _unitOfWork.SaveChangesAsync();

            return(cobGrabacionCobranzas);
        }
Пример #2
0
        public async Task <Metadata> ValidaUpdateCobranza(CobGeneralCobranza generalCobranza)
        {
            Metadata metadata = new Metadata
            {
                IsValid = true,
                Message = ""
            };
            CobGrabacionCobranzas cambiaRcRu = await _unitOfWork.GeneralCobranzaRepository.RCRUYaTieneCobranzaGrabada(generalCobranza.Documento);

            if (cambiaRcRu != null && generalCobranza.IdTipoTransaccion == "RET")
            {
                //throw new BusinessException("Este cliente ya tiene un RC abierto pendiente por enviar N° " + existenDocumentosPendientes.Documento.ToString() + ".Agregue la cobranza a este RC.Si es necesario grabar otro RC a este cliente, envíe el que está pendiente a la administradora.");
                metadata.IsValid = false;
                metadata.Message = "Este recibo ya tiene cobranza registrada, para cambiarlo a retención debe eliminarla.";
            }

            CobGrabacionCobranzas cambiaRet = await _unitOfWork.GeneralCobranzaRepository.RETYaTieneCobranzaGrabada(generalCobranza.Documento);

            if (cambiaRet != null && generalCobranza.IdTipoTransaccion != "RET")
            {
                //throw new BusinessException("Este cliente ya tiene un RC abierto pendiente por enviar N° " + existenDocumentosPendientes.Documento.ToString() + ".Agregue la cobranza a este RC.Si es necesario grabar otro RC a este cliente, envíe el que está pendiente a la administradora.");
                metadata.IsValid = false;
                metadata.Message = "Este recibo ya tiene retenciones registradas, para cambiarla a cobranza debe eliminarla.";
            }


            return(metadata);
        }
Пример #3
0
        public async Task <IActionResult> Delete(CobGrabacionCobranzaDto cobGrabacionCobranzaDto)
        {
            CobGrabacionCobranzaDto resultDto = new CobGrabacionCobranzaDto();
            Metadata metadata = new Metadata
            {
                IsValid = true,
                Message = ""
            };

            CobGrabacionCobranzas cobGrabacionCobranza = _mapper.Map <CobGrabacionCobranzas>(cobGrabacionCobranzaDto);


            bool cobranza = await _cobGrabacionCobranzasService.Delete(cobGrabacionCobranza.Id);

            if (cobranza)
            {
                metadata.IsValid = true;
                metadata.Message = "Actualizado Satisfactoriamente";
            }
            else
            {
                metadata.IsValid = false;

                metadata.Message = "Registro No actualizado";
            }



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

            return(Ok(response));
        }
        public async Task <CobGrabacionCobranzas> Update(CobGrabacionCobranzas cobGrabacionCobranzas)
        {
            var cobranza = await GetById(cobGrabacionCobranzas.Id);

            if (cobranza == null)
            {
                throw new Exception("Documento No existe");
            }



            cobranza.Monto = cobGrabacionCobranzas.Monto;

            cobranza.Transaccion = cobGrabacionCobranzas.Transaccion;
            cobranza.Cotizacion  = cobGrabacionCobranzas.Cotizacion;
            cobranza.DocAfecta   = cobGrabacionCobranzas.DocAfecta;
            var docAfecta = await _unitOfWork.CobEstadoDeCuentaRepository.GetById(cobGrabacionCobranzas.DocAfecta);

            if (docAfecta != null)
            {
                cobranza.Rpdoc        = docAfecta.Rpdoc;
                cobranza.Rpdct        = docAfecta.Rpdct;
                cobranza.Rpkco        = docAfecta.Rpkco;
                cobranza.Rpsfx        = docAfecta.Rpsfx;
                cobranza.DocAfectaSap = docAfecta.DocumentoSap;
            }

            if (cobGrabacionCobranzas.DocumentoSap == null)
            {
                cobGrabacionCobranzas.DocumentoSap = "";
            }
            if (cobGrabacionCobranzas.EjercicioDocumentoSap == null)
            {
                cobGrabacionCobranzas.EjercicioDocumentoSap = "";
            }


            await _unitOfWork.CobGrabacionCobranzasRepository.Update(cobranza);

            await _unitOfWork.SaveChangesAsync();

            var generalCobranza = await _unitOfWork.GeneralCobranzaRepository.GetGeneralCobranzaDocumento((long)cobGrabacionCobranzas.Documento);

            generalCobranza.TotalDetalleCobrado = generalCobranza.MontoTransaccion - TotalDetalleRecibo((long)cobGrabacionCobranzas.Documento);

            await _unitOfWork.GeneralCobranzaRepository.Update(generalCobranza);

            await _unitOfWork.SaveChangesAsync();

            return(await GetById(cobGrabacionCobranzas.Id));
        }
        public async Task Delete(long id)
        {
            CobGrabacionCobranzas entity = await GetById(id);

            _context.CobGrabacionCobranzas.Remove(entity);
        }
 public async Task Update(CobGrabacionCobranzas entity)
 {
     _context.CobGrabacionCobranzas.Update(entity);
 }
 public async Task Add(CobGrabacionCobranzas entity)
 {
     await _context.CobGrabacionCobranzas.AddAsync(entity);
 }
        public async Task <CobGrabacionCobranzas> RETYaTieneCobranzaGrabada(long documento)
        {
            CobGrabacionCobranzas row = await _context.CobGrabacionCobranzas.Where(x => x.Documento == documento && x.Transaccion == "RE").FirstOrDefaultAsync();

            return(row);
        }
Пример #9
0
        public async Task <IActionResult> Update(CobGrabacionCobranzaDto cobGrabacionCobranzaDto)
        {
            CobGrabacionCobranzaDto resultDto = new CobGrabacionCobranzaDto();
            Metadata metadata = new Metadata
            {
                IsValid = true,
                Message = ""
            };



            ApiResponse <CobGrabacionCobranzaDto> response = new ApiResponse <CobGrabacionCobranzaDto>(resultDto);



            CobGrabacionCobranzas cobGrabacionCobranza = _mapper.Map <CobGrabacionCobranzas>(cobGrabacionCobranzaDto);

            CobGeneralCobranza generalCobranza = await _generalCobranzaService.GetGeneralCobranzaPorDocumento((long)cobGrabacionCobranza.Documento);

            MtrTipoMoneda tipomoneda = await _mtrTipoMonedaService.GetById((long)generalCobranza.IdMtrTipoMoneda);

            CobEstadoDeCuenta estadoCuenta = await _cobEstadoCuentaService.GetEstadoCuentaById(cobGrabacionCobranzaDto.DocAfecta);

            if (estadoCuenta != null)
            {
                CobGrabacionCobranzas grabacionActual = await _cobGrabacionCobranzasService.GetById(cobGrabacionCobranzaDto.Id);



                if (cobGrabacionCobranzaDto.Transaccion != "RU")
                {
                    if (generalCobranza.IdTipoTransaccion != "RET")
                    {
                        bool existeMonedaDocumentoMonedaPago = await _cobMatrixMonedaValidaPagoService.ExisteMonedaDocumentoMonedaPago(estadoCuenta.Moneda, tipomoneda.Descripcion);

                        if (!existeMonedaDocumentoMonedaPago)
                        {
                            metadata.IsValid = false;

                            metadata.Message = "Esta intentando grabar cobro en moneda no valida a el Recibo";

                            response.Meta = metadata;
                            return(Ok(response));
                        }
                    }


                    decimal totalAfectadoDocumento = _cobGrabacionCobranzasService.TotalAfectadoDocumento((long)cobGrabacionCobranzaDto.Documento, cobGrabacionCobranzaDto.DocAfecta);


                    decimal totalAfectadoDocumentoResta = totalAfectadoDocumento - (decimal)grabacionActual.Monto;


                    if (totalAfectadoDocumentoResta + (decimal)cobGrabacionCobranzaDto.Monto > (decimal)estadoCuenta.Rpaap)
                    {
                        metadata.IsValid = false;

                        metadata.Message = "Esta intentando grabar monto superior al saldo del documento:" + "Total registrado en recibo: " + totalAfectadoDocumento.ToString() + "Saldo documento: " + estadoCuenta.Rpaap.ToString();

                        response.Meta = metadata;
                        return(Ok(response));
                    }
                }
            }


            CobGrabacionCobranzas grabacionCobranzaActual = await _cobGrabacionCobranzasService.GetById(cobGrabacionCobranzaDto.Id);

            if (grabacionCobranzaActual.DocumentoSap.Length > 1)
            {
                metadata.IsValid = false;

                metadata.Message = "Esta intentando modificar un cobro ya contabilizado";

                response.Meta = metadata;
                return(Ok(response));
            }


            CobGrabacionCobranzas cobranza = await _cobGrabacionCobranzasService.Update(cobGrabacionCobranza);

            if (cobranza != null)
            {
                resultDto        = _mapper.Map <CobGrabacionCobranzaDto>(cobranza);
                metadata.IsValid = true;
                metadata.Message = "Actualizado Satisfactoriamente";
            }
            else
            {
                metadata.IsValid = false;

                metadata.Message = "Registro No actualizado";
            }



            //ApiResponse<CobGrabacionCobranzaDto> response = new ApiResponse<CobGrabacionCobranzaDto>(resultDto)
            //{
            //    Meta = metadata,
            //};
            response.Meta = metadata;
            response.Data = resultDto;
            return(Ok(response));
        }
Пример #10
0
        public async Task <IActionResult> Insert(CobGrabacionCobranzaDto cobGrabacionCobranzaDto)
        {
            CobGrabacionCobranzaDto resultDto = new CobGrabacionCobranzaDto();

            Metadata metadata = new Metadata
            {
                IsValid = true,
                Message = ""
            };
            ApiResponse <CobGrabacionCobranzaDto> response = new ApiResponse <CobGrabacionCobranzaDto>(resultDto);

            try
            {
                CobGeneralCobranza generalCobranza = await _generalCobranzaService.GetGeneralCobranzaPorDocumento((long)cobGrabacionCobranzaDto.Documento);

                if (cobGrabacionCobranzaDto.Transaccion == "RU" && generalCobranza.FlagPagoMas != true)
                {
                    OfdCotizacion cotizacion = new OfdCotizacion();


                    cotizacion = await _ofdCotizacionService.GetCotizacion(cobGrabacionCobranzaDto.Cotizacion);

                    if (cotizacion != null)
                    {
                        if (cotizacion.IdCliente == generalCobranza.IdCliente)
                        {
                            metadata.IsValid = true;
                            metadata.Message = "";
                        }
                        else
                        {
                            metadata.IsValid = false;
                            metadata.Message = "Cotizacion no pertenece a este cliente!!! " + generalCobranza.IdCliente;
                            response.Meta    = metadata;
                            response.Data    = resultDto;
                            return(Ok(response));
                        }
                    }
                    else
                    {
                        metadata.IsValid = false;
                        metadata.Message = "Cotizacion no existe!!!";
                        response.Meta    = metadata;
                        response.Data    = resultDto;

                        return(Ok(response));
                    }
                }



                CobGrabacionCobranzas cobGrabacionCobranza = _mapper.Map <CobGrabacionCobranzas>(cobGrabacionCobranzaDto);


                MtrTipoMoneda tipomoneda = await _mtrTipoMonedaService.GetById((long)generalCobranza.IdMtrTipoMoneda);

                bool dividirPagoImpuesto       = false;
                CobEstadoDeCuenta estadoCuenta = await _cobEstadoCuentaService.GetEstadoCuentaById(cobGrabacionCobranzaDto.DocAfecta);

                if (estadoCuenta != null)
                {
                    if (cobGrabacionCobranzaDto.Transaccion != "RU")
                    {
                        if (generalCobranza.IdTipoTransaccion != "RET")
                        {
                            bool existeMonedaDocumentoMonedaPago = await _cobMatrixMonedaValidaPagoService.ExisteMonedaDocumentoMonedaPago(estadoCuenta.Moneda, tipomoneda.Descripcion);

                            if (!existeMonedaDocumentoMonedaPago)
                            {
                                metadata.IsValid = false;

                                metadata.Message = "Esta intentando grabar cobro en moneda no valida a el Recibo";

                                response.Meta = metadata;
                                return(Ok(response));
                            }

                            decimal totalAfectadoDocumento = _cobGrabacionCobranzasService.TotalAfectadoDocumento((long)cobGrabacionCobranzaDto.Documento, cobGrabacionCobranzaDto.DocAfecta);
                            if (totalAfectadoDocumento + (decimal)cobGrabacionCobranzaDto.Monto > (decimal)estadoCuenta.Rpaap)
                            {
                                metadata.IsValid = false;

                                metadata.Message = "Esta intentando grabar monto superior al saldo del documento:" + "Total registrado en recibo: " + totalAfectadoDocumento.ToString() + "Saldo documento: " + estadoCuenta.Rpaap.ToString();
                                return(Ok(response));
                            }
                        }
                    }


                    if (cobGrabacionCobranzaDto.Monto > estadoCuenta.BaseImponible && cobGrabacionCobranzaDto.Transaccion != "RE" && tipomoneda.Descripcion == estadoCuenta.Moneda)
                    {
                        dividirPagoImpuesto = true;
                    }
                }

                if (!dividirPagoImpuesto)
                {
                    cobGrabacionCobranza.PagoCorrespondeIva = false;
                    CobGrabacionCobranzas cobranza = await _cobGrabacionCobranzasService.Insert(cobGrabacionCobranza);

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

                        metadata.Message = "Registro No actualizado";
                    }
                }
                else
                {
                    CobGrabacionCobranzas cobGrabacionCobranzaImpuesto = _mapper.Map <CobGrabacionCobranzas>(cobGrabacionCobranzaDto);


                    decimal?montoGrabado = cobGrabacionCobranza.Monto;
                    cobGrabacionCobranza.Monto = estadoCuenta.BaseImponible;


                    cobGrabacionCobranza.PagoCorrespondeIva = false;
                    CobGrabacionCobranzas cobranza = await _cobGrabacionCobranzasService.Insert(cobGrabacionCobranza);


                    cobGrabacionCobranzaImpuesto.Monto = montoGrabado - estadoCuenta.BaseImponible;
                    cobGrabacionCobranzaImpuesto.PagoCorrespondeIva = true;
                    CobGrabacionCobranzas cobranzaImpuesto = await _cobGrabacionCobranzasService.Insert(cobGrabacionCobranzaImpuesto);

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

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

                //ApiResponse<CobGrabacionCobranzaDto> response = new ApiResponse<CobGrabacionCobranzaDto>(resultDto)
                //{
                //    Meta = metadata,
                //};
                response.Meta = metadata;
                response.Data = resultDto;

                return(Ok(response));
            }
            catch (Exception ex)
            {
                metadata.IsValid = false;

                metadata.Message = ex.InnerException.Message;

                response.Meta = metadata;
                response.Data = resultDto;
                //ApiResponse<CobGrabacionCobranzaDto> response = new ApiResponse<CobGrabacionCobranzaDto>(resultDto)
                //{
                //    Meta = metadata,
                //};
                return(Ok(response));
            }
        }