Ejemplo n.º 1
0
        public async Task <ReportDto[]> GetList(ReportFilterDto filter)
        {
            _logger.LogDebug($"Calling getList Report");

            IQueryable <Report> query = _dbCtx.Reports;

            if (filter.Id != Guid.Empty)
            {
                query = query.Where(x => x.Id == filter.Id);
            }

            if (filter.Enabled.HasValue)
            {
                query = query.Where(x => x.Enabled == filter.Enabled.Value);
            }

            if (filter.Family.HasValue)
            {
                query = query.Where(x => x.Family == (dal.Entities.ReportFamily)filter.Family.Value);
            }

            var result = await query.ToArrayAsync();

            return(result.Select(x => x.ToDto()).ToArray());
        }
Ejemplo n.º 2
0
        public async Task <ActionResult <ReportDto[]> > GetListFiltered([FromBody] ReportFilterDto filter)
        {
            var res = await _service.GetList(filter);

            return(res);
        }
Ejemplo n.º 3
0
        public async Task <PayrollReportResponseDto> GetPayrollReportAsync(ReportFilterDto payrollFilterDto)
        {
            string[]    splitDate = payrollFilterDto.Date.Split("/");
            CultureInfo ci        = new CultureInfo("es-Do");

            DateTime startedDate = new DateTime(int.Parse(splitDate[1]), int.Parse(splitDate[0]), 1);
            DateTime endDate     = new DateTime(int.Parse(splitDate[1]), int.Parse(splitDate[0]) + 1, 1).AddDays(-1);

            IEnumerable <Payroll> result = await _payrollRepository.FindAsync(payroll => payroll.PayrollDate >= startedDate && payroll.PayrollDate <= endDate);

            IEnumerable <PayrollDetailDto> response = result.OrderBy(payroll => payroll.PayrollDate).Select(payroll => new PayrollDetailDto()
            {
                Employee    = payroll.EmployeeId.ToString(),
                NetTotal    = payroll.NetSalary.ToString("C", ci),
                RawTotal    = payroll.RawSalary.ToString("C", ci),
                Gender      = "",
                TaxTotal    = payroll.TaxableSalary.ToString("C", ci),
                Status      = payroll.Status ? "Activo" : "Inactivo",
                PayrollDate = payroll.PayrollDate.Value.ToString("m"),
                Id          = payroll.Id
            }).ToList();

            foreach (var item in response)
            {
                Employee employee = await _employeeRepository.GetByIdAsync(int.Parse(item.Employee));

                item.Employee = $"{employee.Name} {employee.LastName}";
                item.Gender   = employee.Gender;
            }

            if (!string.IsNullOrEmpty(payrollFilterDto.Filter))
            {
                response = response.Where(item => item.Employee.ToUpper().Contains(payrollFilterDto.Filter.ToUpper()));
            }

            if (!string.IsNullOrEmpty(payrollFilterDto.Gender))
            {
                response = response.Where(item => item.Gender == payrollFilterDto.Gender);
            }

            if (!string.IsNullOrEmpty(payrollFilterDto.Status))
            {
                response = response.Where(item => item.Status == payrollFilterDto.Status);
            }

            switch (payrollFilterDto.OrderBy)
            {
            case "NameUp":
                response = response.OrderBy(item => item.Employee);
                break;

            case "NameDown":
                response = response.OrderByDescending(item => item.Employee);
                break;

            case "SalaryUp":
                response = response.OrderBy(item => item.NetTotal);
                break;

            case "SalaryDown":
                response = response.OrderByDescending(item => item.NetTotal);
                break;

            default:
                break;
            }

            var groupList    = response.GroupBy(item => item.PayrollDate);
            var responseList = new List <PayrollResults>();

            foreach (var item in groupList)
            {
                var itemToInsert = new PayrollResults();
                itemToInsert.PayrollName = $"Nomina del {item.Key} - {item.FirstOrDefault().Status}";

                itemToInsert.RawTotal = item.Sum(p => float.Parse(p.RawTotal.Replace(",", "").Replace("$", ""), CultureInfo.InvariantCulture)).ToString("C", ci);
                itemToInsert.TaxTotal = item.Sum(p => float.Parse(p.TaxTotal.Replace(",", "").Replace("$", ""), CultureInfo.InvariantCulture)).ToString("C", ci);
                itemToInsert.NetTotal = item.Sum(p => float.Parse(p.NetTotal.Replace(",", "").Replace("$", ""), CultureInfo.InvariantCulture)).ToString("C", ci);

                itemToInsert.Results = new List <PayrollDetailDto>();
                foreach (var data in item)
                {
                    itemToInsert.Results.Add(data);
                }
                responseList.Add(itemToInsert);
            }


            return(new PayrollReportResponseDto()
            {
                Results = responseList, Filters = payrollFilterDto
            });
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> ReportAsync(ReportFilterDto payrollFilterDto)
        {
            PayrollReportResponseDto response = await _payrollService.GetPayrollReportAsync(payrollFilterDto);

            return(View(response));
        }
Ejemplo n.º 5
0
        public async Task <Pager <CustomerCreditUtilizedDto> > GetCustomerCreditUtilizedComparedReport(ReportFilterDto filter)
        {
            var company = await _companyManager.FindInclude(filter.CompanyId);

            if (company.Settings == null || !company.Settings.SaveCreditValues)
            {
                return(new Pager <CustomerCreditUtilizedDto>(new List <CustomerCreditUtilizedDto>(), 0, filter.Offset, filter.Limit));
            }

            var creditUtilizedSettings = await _businessManager.GetCustomerCreditUtilizedSettings(filter.CompanyId, filter.Date);

            if (creditUtilizedSettings == null)
            {
                creditUtilizedSettings = new CustomerCreditUtilizedSettingsDto()
                {
                    RoundType = company.Settings.RoundType,
                    CompanyId = company.Id
                };
            }

            var creditUtilizedList = new List <CustomerCreditUtilizedDto>();
            var report             = await GetAgingReport(filter.CompanyId, filter.Date, 30, 4, false);

            foreach (var data in report.Rows)
            {
                var customer = data.Customer;
                var value    = data.Data["Total"];//new height credit

                if (creditUtilizedSettings.RoundType == RoundType.RoundUp)
                {
                    value = Math.Ceiling(value);
                }
                else if (creditUtilizedSettings.RoundType == RoundType.RoundDown)
                {
                    value = Math.Floor(value);
                }

                var creditUtilized = customer.CreditUtilizeds.FirstOrDefault();

                if (creditUtilized == null || (creditUtilized.CreatedDate != filter.Date && creditUtilized.Value < value))
                {
                    if (creditUtilized == null)
                    {
                        creditUtilized = new CustomerCreditUtilizedDto()
                        {
                            CreatedDate = DateTime.Now
                        };
                    }

                    creditUtilized.CustomerId     = customer.Id;
                    creditUtilized.Customer       = customer;
                    creditUtilized.IsNew          = true;
                    creditUtilized.NewValue       = value;
                    creditUtilized.NewCreatedDate = filter.Date;

                    creditUtilizedList.Add(creditUtilized);
                }
                else if (creditUtilized.Value < value)
                {
                    creditUtilized.CustomerId     = customer.Id;
                    creditUtilized.Customer       = customer;
                    creditUtilized.NewValue       = value;
                    creditUtilized.NewCreatedDate = filter.Date;

                    creditUtilizedList.Add(creditUtilized);
                }
            }
            var count = creditUtilizedList.Count();

            if (count == 0)
            {
                return(new Pager <CustomerCreditUtilizedDto>(new List <CustomerCreditUtilizedDto>(), 0, filter.Offset, filter.Limit));
            }

            var page  = (filter.Offset + filter.Limit) / filter.Limit;
            var pager = new Pager <CustomerCreditUtilizedDto>(creditUtilizedList.Skip(filter.Offset).Take(filter.Limit), count, page, filter.Limit);

            return(pager);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Display Credit Utilized Report by Company and Month with the options to delete record
        /// </summary>
        /// <param name="filter"></param>
        /// <returns></returns>
        public async Task <Pager <CustomerCreditUtilizedDto> > GetCustomerCreditUtilizedReport(ReportFilterDto filter)
        {
            var customers = await _customerManager.FindByCompanyId(filter.CompanyId);

            customers = customers.Where(x => (true) &&
                                        (string.IsNullOrEmpty(filter.Search) || x.Name.ToLower().Contains(filter.Search.ToLower()) || x.No.ToLower().Contains(filter.Search.ToLower()))
                                        ).ToList();

            var credits = await _customerCreditUtilizedManager.FindByCompanyIdAndDate(filter.CompanyId, filter.Date);

            credits = credits.GroupBy(x => x.Customer, x => x, (customer, credits) => new { Customer = customer, Credit = credits.OrderByDescending(x => x.CreatedDate).FirstOrDefault() })
                      .Where(x => x.Credit != null)
                      .Select(x => x.Credit).ToList();

            var dates = credits.GroupBy(x => x.CreatedDate).Select(x => x.Key)
                        .OrderBy(x => x)
                        .Select(x => $"{x.Month}/{x.Year}")
                        .ToList();

            if (filter.FilterDate.HasValue)
            {
                credits = credits.Where(x => x.CreatedDate.ToString("MM/yyyy") == filter.FilterDate.Value.ToString("MM/yyyy")).ToList();
            }

            var result = _mapper.Map <List <CustomerCreditUtilizedDto> >(credits);

            var count = result.Count;

            if (count == 0)
            {
                return(new Pager <CustomerCreditUtilizedDto>(new List <CustomerCreditUtilizedDto>(), 0, filter.Offset, filter.Limit));
            }

            var page  = (filter.Offset + filter.Limit) / filter.Limit;
            var pager = new Pager <CustomerCreditUtilizedDto>(result.Skip(filter.Offset).Take(filter.Limit), count, page, filter.Limit);

            pager.Filter.Add("CreatedDate", dates);
            return(pager);
        }
Ejemplo n.º 7
0
        public async Task <IActionResult> ReportAsync(ReportFilterDto employeeFilterDto)
        {
            CultureInfo ci = new CultureInfo("es-Do");

            IEnumerable <Employee> result = await _employeeRepository.GetAllAsync();

            var response = result.Select(employee => new EmployeeDto()
            {
                Gender   = employee.Gender,
                Id       = employee.Id,
                LastName = employee.LastName,
                Name     = employee.Name,
                Status   = employee.Status ? "Activo": "Inactivo",
                Salary   = employee.Salary.ToString("C", ci)
            }).ToList();

            if (!string.IsNullOrEmpty(employeeFilterDto.Filter))
            {
                response = response.Where(item => item.Name.ToUpper().Contains(employeeFilterDto.Filter.ToUpper()) ||
                                          item.LastName.ToUpper().Contains(employeeFilterDto.Filter.ToUpper()) ||
                                          item.Salary.ToString().Contains(employeeFilterDto.Filter)).ToList();
            }

            if (!string.IsNullOrEmpty(employeeFilterDto.Gender))
            {
                response = response.Where(item => item.Gender == employeeFilterDto.Gender).ToList();
            }

            if (!string.IsNullOrEmpty(employeeFilterDto.Status))
            {
                response = response.Where(item => item.Status == employeeFilterDto.Status).ToList();
            }

            float total = 0;

            foreach (var item in response)
            {
                total += float.Parse(item.Salary.Replace(",", "").Replace("$", ""), CultureInfo.InvariantCulture);
            }

            var totalSalary = total.ToString("C", ci);

            switch (employeeFilterDto.OrderBy)
            {
            case "NameUp":
                response = response.OrderBy(item => item.Name).ToList();
                break;

            case "NameDown":
                response = response.OrderByDescending(item => item.Name).ToList();
                break;

            case "LastNameUp":
                response = response.OrderBy(item => item.LastName).ToList();
                break;

            case "LastNameDown":
                response = response.OrderByDescending(item => item.LastName).ToList();
                break;

            case "SalaryUp":
                response = response.OrderBy(item => item.Salary).ToList();
                break;

            case "SalaryDown":
                response = response.OrderByDescending(item => item.Salary).ToList();
                break;

            default:
                break;
            }

            return(View(new EmployeeResponseDto()
            {
                Results = response, Filters = employeeFilterDto, TotalSalary = totalSalary
            }));
        }