Esempio n. 1
0
        public IActionResult GetPdf([FromQuery] DateTimeOffset arrivalDate, [FromQuery] GarmentDebtBalanceDetailFilterEnum supplierTypeFilter, [FromQuery] int supplierId, [FromQuery] int currencyId, [FromQuery] string paymentType)
        {
            try
            {
                VerifyUser();

                var data   = _service.GetDebtBalanceDetail(arrivalDate, supplierTypeFilter, supplierId, currencyId, paymentType);
                var stream = GarmentDebtBalanceDetailPDFGenerator.Generate(data, arrivalDate, _identityService.TimezoneOffset);

                var filename = "LAPORAN RINCIAN HUTANG";
                filename += ".pdf";

                return(new FileStreamResult(stream, "application/pdf")
                {
                    FileDownloadName = filename
                });
            }
            catch (Exception e)
            {
                var result =
                    new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message)
                    .Fail();
                return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, result));
            }
        }
Esempio n. 2
0
        public IActionResult GetDetail([FromQuery] DateTimeOffset arrivalDate, [FromQuery] GarmentDebtBalanceDetailFilterEnum supplierTypeFilter, [FromQuery] int supplierId, [FromQuery] int currencyId, [FromQuery] string paymentType)
        {
            try
            {
                VerifyUser();

                var data = _service.GetDebtBalanceDetail(arrivalDate, supplierTypeFilter, supplierId, currencyId, paymentType);

                return(Ok(new
                {
                    apiVersion = ApiVersion,
                    data = data,
                    info = new
                    {
                        Count = data.Count,
                        Order = new List <string>(),
                        Selected = new List <string>()
                    },
                    message = General.OK_MESSAGE,
                    statusCode = General.OK_STATUS_CODE
                }));
            }
            catch (Exception e)
            {
                var result =
                    new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message)
                    .Fail();
                return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, result));
            }
        }
Esempio n. 3
0
        public IActionResult GetXls([FromQuery] DateTimeOffset arrivalDate, [FromQuery] GarmentDebtBalanceDetailFilterEnum supplierTypeFilter, [FromQuery] int supplierId, [FromQuery] int currencyId, [FromQuery] string paymentType)
        {
            try
            {
                VerifyUser();

                var data   = _service.GetDebtBalanceDetail(arrivalDate, supplierTypeFilter, supplierId, currencyId, paymentType);
                var stream = GarmentDebtBalanceDetailExcelGenerator.Generate(data, arrivalDate, _identityService.TimezoneOffset);

                var filename = "LAPORAN RINCIAN HUTANG";
                filename += ".xlsx";

                var bytes = stream.ToArray();

                return(File(bytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename));
            }
            catch (Exception e)
            {
                var result =
                    new ResultFormatter(ApiVersion, General.INTERNAL_ERROR_STATUS_CODE, e.Message)
                    .Fail();
                return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, result));
            }
        }
        public List <GarmentDebtBalanceDetailDto> GetDebtBalanceDetail(DateTimeOffset arrivalDate, GarmentDebtBalanceDetailFilterEnum supplierTypeFilter, int supplierId, int currencyId, string paymentType)
        {
            var query = _dbContext.GarmentDebtBalances.Where(entity => (entity.DPPAmount + entity.CurrencyDPPAmount + entity.VATAmount - entity.IncomeTaxAmount) - entity.BankExpenditureNoteInvoiceAmount != 0);

            query = query.Where(entity => entity.ArrivalDate != DateTimeOffset.MinValue && entity.ArrivalDate <= arrivalDate);

            if (supplierId > 0)
            {
                query = query.Where(entity => entity.SupplierId == supplierId);
            }

            if (supplierTypeFilter == GarmentDebtBalanceDetailFilterEnum.SupplierImport)
            {
                query = query.Where(entity => entity.SupplierIsImport);
            }

            if (supplierTypeFilter == GarmentDebtBalanceDetailFilterEnum.SupplierLocal)
            {
                query = query.Where(entity => !entity.SupplierIsImport);
            }

            if (currencyId > 0)
            {
                query = query.Where(entity => entity.CurrencyId == currencyId);
            }

            if (!string.IsNullOrWhiteSpace(paymentType))
            {
                query = query.Where(entity => entity.PaymentType == paymentType);
            }

            var queryResult = query.ToList();
            var result      = new List <GarmentDebtBalanceDetailDto>();

            foreach (var element in queryResult)
            {
                var debtAging     = Math.Abs((int)(arrivalDate - element.ArrivalDate).TotalDays);
                var total         = element.DPPAmount + element.VATAmount - element.IncomeTaxAmount;
                var currencyTotal = element.CurrencyDPPAmount + element.CurrencyVATAmount - element.CurrencyIncomeTaxAmount;
                result.Add(new GarmentDebtBalanceDetailDto(element.SupplierId, element.SupplierCode, element.SupplierName, element.BillsNo, element.PaymentBills, element.GarmentDeliveryOrderId, element.GarmentDeliveryOrderNo, element.PaymentType, element.ArrivalDate, debtAging, element.InternalNoteId, element.InternalNoteNo, element.InvoiceId, element.InvoiceNo, element.DPPAmount, element.CurrencyDPPAmount, element.VATAmount, element.CurrencyVATAmount, element.IncomeTaxAmount, element.CurrencyIncomeTaxAmount, total, currencyTotal, element.CurrencyId, element.CurrencyCode, element.CurrencyRate, element.VATNo));
            }

            var totalResult = result.GroupBy(element => element.CurrencyId).Select(element => new GarmentDebtBalanceDetailDto(0, "", "", "", "", 0, "", "", null, 0, 0, "", 0, "", element.Sum(sum => sum.DPPAmount), element.Sum(sum => sum.CurrencyDPPAmount), element.Sum(sum => sum.VATAmount), element.Sum(sum => sum.CurrencyVATAmount), element.Sum(sum => sum.IncomeTaxAmount), element.Sum(sum => sum.CurrencyIncomeTaxAmount), element.Sum(sum => sum.Total), element.Sum(sum => sum.CurrencyTotal), element.FirstOrDefault().CurrencyId, element.FirstOrDefault().CurrencyCode, element.FirstOrDefault().CurrencyRate, "")).ToList();
            var firstTotal  = totalResult.FirstOrDefault();

            if (firstTotal != null)
            {
                firstTotal.SetTotal();
            }

            result.AddRange(totalResult);
            return(result);
        }