示例#1
0
        public async Task <IActionResult> GetAllCobPagosRetenciones(CobPagosRetencionesQueryFilter filters)
        {
            Metadata metadata = new Metadata
            {
                IsValid = false,
                Message = ""
            };

            List <CobPagosRetenciones> listaCobPagosRetenciones = new List <CobPagosRetenciones>();

            try
            {
                listaCobPagosRetenciones = _cobPagosRetencionesService.GetListCobPagosRetenciones(filters).ToList();

                IEnumerable <CobPagosRetencionesDto> cobPagosRetencionesDtos = _mapper.Map <IEnumerable <CobPagosRetencionesDto> >(listaCobPagosRetenciones);


                if (cobPagosRetencionesDtos != null)
                {
                    foreach (var itemRet in cobPagosRetencionesDtos)
                    {
                        decimal decimalValue = (decimal)itemRet.Monto;
                        itemRet.MontoString = string.Format("{0:N}", decimalValue); // 1,234,567.00

                        CobTransacciones transaccion = await _cobTransaccionesService.GetById(itemRet.IdTransaccion);

                        if (transaccion != null)
                        {
                            itemRet.NombreTransaccion = transaccion.NombreTransaccion;
                            itemRet.TxOrigen          = transaccion.TipoSap;
                        }
                        itemRet.FechaComprobanteString = itemRet.FechaComprobante.ToShortDateString();
                    }
                }

                PagedList <CobPagosRetencionesDto> pagedRetenciones = PagedList <CobPagosRetencionesDto> .Create(cobPagosRetencionesDtos, filters.PageNumber, filters.PageSize);


                metadata.IsValid = true;
                metadata.Message = "";


                var response = new ApiResponse <IEnumerable <CobPagosRetencionesDto> >(pagedRetenciones)
                {
                    Meta = metadata
                };

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


                var response = new ApiResponse <List <CobPagosRetencionesDto> >(null)
                {
                    Meta = metadata
                };

                return(Ok(response));
            }
        }
示例#2
0
        public async Task <ReciboDto> GeneraReciboDto(long recibo)
        {
            ReciboDto                    result                     = new ReciboDto();
            CobGeneralCobranza           cobGeneralCobranza         = new CobGeneralCobranza();
            List <CobGrabacionCobranzas> listaCobGrabacionCobranzas = new List <CobGrabacionCobranzas>();

            try
            {
                //Crea Objeto General cobranzas
                cobGeneralCobranza = await GetGeneralCobranzaPorDocumento(recibo);

                CobGeneralCobranzaDto generalCobranzasDtos = _mapper.Map <CobGeneralCobranzaDto>(cobGeneralCobranza);

                MtrCliente cliente = await _mtrClienteService.GetByIdAsync(generalCobranzasDtos.IdCliente);

                MtrVendedor vendedor = await _mtrVendedorService.GetByIdAsync(cliente.Vendedor1);

                generalCobranzasDtos.NombreCliente          = cliente.NoRegTribut + " " + cliente.Nombre.Trim();
                generalCobranzasDtos.IdCliente              = generalCobranzasDtos.IdCliente.Trim();
                generalCobranzasDtos.FechaTransaccionString = generalCobranzasDtos.FechaTransaccion.ToShortDateString();
                generalCobranzasDtos.NombreVendedor         = vendedor.Nombre;
                generalCobranzasDtos.vendedor         = vendedor.Codigo;
                generalCobranzasDtos.CorreoVendedor   = vendedor.EMail;
                generalCobranzasDtos.TelefonoVendedor = vendedor.TlfCelular;



                decimal decimalValue = generalCobranzasDtos.MontoTransaccion;
                generalCobranzasDtos.MontoTransaccionString = string.Format("{0:N}", decimalValue); // 1,234,567.00


                //creamos el objeto
                Moneda oMoneda = new Moneda();

                //primer parametro es la cantidad en string
                //segundo parametro es si queremos que sea mayuscula
                //tercer parametro la moneda


                MtrTipoMoneda tipoMoneda = await _mtrTipoMonedaService.GetById((long)cobGeneralCobranza.IdMtrTipoMoneda);

                string MonedaString = tipoMoneda.Descripcion;



                string resultado = oMoneda.Convertir(generalCobranzasDtos.MontoTransaccion.ToString(), true, MonedaString);
                generalCobranzasDtos.MontoLetras = resultado;


                decimal?detalleValue = generalCobranzasDtos.TotalDetalleCobrado;
                generalCobranzasDtos.TotalDetalleCobradoString = string.Format("{0:N}", detalleValue);
                generalCobranzasDtos.Status = EstatusRecibo(cobGeneralCobranza);

                MtrBancos banco = await _mtrBancosService.GetByCodigo(generalCobranzasDtos.IdBanco);

                generalCobranzasDtos.NombreBanco = banco.Nombre;

                CobTipoTransaccion tipoTransaccion = await _cobTipoTransaccionService.GetById(generalCobranzasDtos.IdTipoTransaccion);

                generalCobranzasDtos.NombreTipoTransaccion = tipoTransaccion.NombreTipoTransaccion;
                generalCobranzasDtos.FlagImpuesto          = tipoTransaccion.FlagImpuesto;


                MtrTipoMoneda mtrTipoMoneda = await _mtrTipoMonedaService.GetById((long)generalCobranzasDtos.IdMtrTipoMoneda);

                generalCobranzasDtos.NombreTipoMoneda = mtrTipoMoneda.Descripcion;



                listaCobGrabacionCobranzas = _unitOfWork.CobGrabacionCobranzasRepository.GetByDocumento(recibo);
                listaCobGrabacionCobranzas = listaCobGrabacionCobranzas.Where(x => x.DocumentoSap == "").ToList();

                List <CobGrabacionCobranzaDto> listaCobGrabacionCobranzasDto = _mapper.Map <List <CobGrabacionCobranzaDto> >(listaCobGrabacionCobranzas);

                foreach (CobGrabacionCobranzaDto item in listaCobGrabacionCobranzasDto)
                {
                    item.CuentaBancaria = banco.CodContable;
                    item.Moneda         = mtrTipoMoneda.Descripcion;
                    if (item.Transaccion == "RU")
                    {
                        item.DocAfectaMostrar = item.Cotizacion;
                    }
                    else
                    {
                        item.DocAfectaMostrar = item.DocAfectaSap;
                    }

                    decimalValue      = (decimal)item.Monto;
                    item.MontoMostrar = string.Format("{0:N}", decimalValue); // 1,234,567.00

                    CobEstadoDeCuenta cobEstadoDeCuenta = await _cobEstadoCuentaService.GetEstadoCuentaById(item.DocAfecta);

                    if (cobEstadoDeCuenta != null)
                    {
                        decimalValue              = (decimal)cobEstadoDeCuenta.BaseImponible;
                        item.BaseImponible        = (decimal)cobEstadoDeCuenta.BaseImponible;
                        item.BaseImponibleMostrar = string.Format("{0:N}", decimalValue); // 1,234,567.00
                        decimalValue              = (decimal)cobEstadoDeCuenta.Iva;
                        item.Iva        = (decimal)cobEstadoDeCuenta.Iva;
                        item.IvaMostrar = string.Format("{0:N}", decimalValue); // 1,234,567.00
                        decimalValue    = (decimal)cobEstadoDeCuenta.MontoOriginal;

                        item.MontoOriginalMostrar = string.Format("{0:N}", decimalValue); // 1,234,567.00
                        item.FechaDocumento       = cobEstadoDeCuenta.FechaDocumento;
                        DateTime fechaDocumento = (DateTime)cobEstadoDeCuenta.FechaDocumento;
                        item.FechaDocumentoString = fechaDocumento.ToShortDateString();
                    }

                    //List<CobPagosRetencionesDto> listCobPagosRetencionesDto = new List<CobPagosRetencionesDto>();
                    List <CobPagosRetenciones> listCobPagosRetenciones = _unitOfWork.CobPagosRetencionesRepository.GetByIdCobranzas(item.Id);

                    List <CobPagosRetencionesDto> listCobPagosRetencionesDto = _mapper.Map <List <CobPagosRetencionesDto> >(listCobPagosRetenciones);

                    if (listCobPagosRetencionesDto != null && listCobPagosRetencionesDto.Count > 0)
                    {
                        foreach (CobPagosRetencionesDto itemRet in listCobPagosRetencionesDto)
                        {
                            decimalValue        = itemRet.Monto;
                            itemRet.MontoString = string.Format("{0:N}", decimalValue); // 1,234,567.00

                            CobTransacciones transaccion = await _cobTransaccionesService.GetById(itemRet.IdTransaccion);

                            if (transaccion != null)
                            {
                                itemRet.NombreTransaccion = transaccion.NombreTransaccion;
                                itemRet.TxOrigen          = transaccion.TipoSap;
                            }
                            itemRet.FechaComprobanteString = itemRet.FechaComprobante.ToShortDateString();
                        }
                    }


                    item.CobPagosRetencionesDto = listCobPagosRetencionesDto;
                }



                result.CobGeneralCobranzaDto   = generalCobranzasDtos;
                result.CobGrabacionCobranzaDto = listaCobGrabacionCobranzasDto;

                return(result);
            }
            catch (Exception e)
            {
                string message = e.Message;
                throw;
            }
        }
        public async Task <Metadata> ValorRetencion(int IdTrans, double Valor)
        {
            Metadata metadata = new Metadata
            {
                IsValid = true,
                Message = ""
            };

            CobTransacciones Trans = await _unitOfWork.CobTransaccionesRepository.GetById(IdTrans);


            Boolean ValValido = false;

            var Valores = await _unitOfWork.CobValoresRetencionesRepository.GetById(IdTrans);


            if (Valores != null)
            {
                if (Valores.FlagRango == true && Valores.FlagValorFijo == false)
                {
                    string[] ValPermitidos = Valores.Valores.Split('-');

                    if (Valor >= Convert.ToDouble(ValPermitidos[0]) && Valor <= Convert.ToDouble(ValPermitidos[1]))
                    {
                        metadata.Message = "";
                        metadata.IsValid = true;
                        return(metadata);
                    }
                    else
                    {
                        metadata.Message = "El Porcentaje " + Valor.ToString() + " no es un valor permitido para " + Trans.NombreTransaccion.ToUpper() + ". \n Los valores permitidos para esta retención se encuentran entre " + ValPermitidos[0] + " y " + ValPermitidos[1];
                        metadata.IsValid = false;
                        return(metadata);
                    }
                }

                if (Valores.FlagRango == false && Valores.FlagValorFijo == true)
                {
                    string[] ValPermitidos = Valores.Valores.Split(',');

                    foreach (string Val in ValPermitidos)
                    {
                        if (Valor == Convert.ToDouble(Val))
                        {
                            ValValido = true;

                            break;
                        }
                    }

                    if (ValValido == true)
                    {
                        metadata.Message = "";
                        metadata.IsValid = true;
                        return(metadata);
                    }
                    else
                    {
                        metadata.Message = "El Porcentaje " + Valor.ToString() + " no es un valor permitido para " + Trans.NombreTransaccion.ToUpper() + ". \n Los valores permitidos para esta retención deben ser algunos de esto: " + Valores.Valores;;
                        metadata.IsValid = false;
                        return(metadata);
                    }
                }
            }
            else
            {
                metadata.Message = "No existen valores de retencion definidos para esta transaccion";
                metadata.IsValid = false;
                return(metadata);
            }

            return(metadata);
        }