public IPdfReportData CreateReport02(string szReportFolderPath, HttpResponseBase Response, int Invoiceid = 0)
        {
            decimal dUnitPrice = 0;
            decimal dQty = 0;
            decimal dAmount = 0;
            string szConnectionString = ConfigurationManager.ConnectionStrings["TimelyDepotContext"].ToString();
            string szProviderName = ConfigurationManager.ConnectionStrings["TimelyDepotContext"].ProviderName;
            string szSql = "";
            string szFilePath = "";

            szSql = string.Format("SELECT TOP (100) PERCENT InvoiceId, Quantity, ShipQuantity, BackOrderQuantity, ItemID, Sub_ItemID, Description, Tax, UnitPrice, ItemPosition, ItemOrder " +
                "FROM  InvoiceDetail WHERE (InvoiceId = {0}) ORDER BY ItemPosition, ItemOrder", Invoiceid.ToString());

            var report = new PdfReport();

            //Document preferences
            report.DocumentPreferences(doc =>
            {
                doc.RunDirection(PdfRunDirection.LeftToRight);
                doc.Orientation(PageOrientation.Portrait);
                doc.PageSize(PdfPageSize.A4);
                doc.DocumentMetadata(new DocumentMetadata { Author = "Vios", Application = "PdfRpt", Keywords = "IList Rpt.", Subject = "Invoice Report", Title = "Invoice" });
                doc.Compression(new CompressionSettings
                {
                    EnableCompression = true,
                    EnableFullCompression = true
                });
                doc.PrintingPreferences(new PrintingPreferences
                {
                    ShowPrintDialogAutomatically = true
                });
            }
            );

            //Fonts
            report.DefaultFonts(fonts =>
            {
                string szFontsPath = System.IO.Path.Combine(szReportFolderPath, "fonts\\arial.ttf");
                string szFontsPath2 = System.IO.Path.Combine(szReportFolderPath, "fonts\\verdana.ttf");
                fonts.Path(szFontsPath, szFontsPath2);

                //fonts.Path(System.IO.Path.Combine(Environment.GetEnvironmentVariable("SystemRoot"), "fonts\\arial.ttf"),
                //           System.IO.Path.Combine(Environment.GetEnvironmentVariable("SystemRoot"), "fonts\\verdana.ttf"));

                fonts.Size(9);
                fonts.Color(System.Drawing.Color.Black);

            });

            //The footer
            report.PagesFooter(footer =>
            {
                var date = DateTime.Now.ToString("MM/dd/yyyy");
                footer.InlineFooter(inlineFooter =>
                {
                    inlineFooter.FooterProperties(new FooterBasicProperties
                    {
                        PdfFont = footer.PdfFont,
                        HorizontalAlignment = HorizontalAlignment.Center,
                        RunDirection = PdfRunDirection.LeftToRight,
                        SpacingBeforeTable = 30,
                        TotalPagesCountTemplateHeight = 9,
                        TotalPagesCountTemplateWidth = 50
                    });

                    inlineFooter.AddPageFooter(data =>
                    {
                        return createFooter(footer, date, data);
                    });
                });

            });

            // The Header
            report.PagesHeader(header =>
            {
                header.InlineHeader(inlineheader =>
                {
                    inlineheader.AddPageHeader(data =>
                    {
                        return createHeader(header, Invoiceid);
                    });
                });
            });

            //Main table
            report.MainTableTemplate(template =>
            {
                template.BasicTemplate(BasicTemplate.TimelyDepoTemplate);
            });

            report.MainTablePreferences(table =>
            {
                table.ColumnsWidthsType(TableColumnWidthType.Relative);
                table.NumberOfDataRowsPerPage(15);
            });

            //Main data
            report.MainTableDataSource(dataSource =>
            {
                //var listOfRows = new List<User>();
                //for (int i = 0; i < 10; i++)
                //{
                //    listOfRows.Add(new User { Id = i, LastName = "LastName " + i, Name = "Name " + i, Balance = i + 1000 });
                //}

                //var listOfRows = new List<InvoiceDetail>();
                //qryDetails = db.InvoiceDetails.Where(sldt => sldt.InvoiceId == Invoiceid);
                //if (qryDetails.Count() > 0)
                //{
                //    foreach (var item in qryDetails)
                //    {
                //        listOfRows.Add(item);
                //    }
                //}
                //dataSource.StronglyTypedList(listOfRows);

                {
                    dataSource.GenericDataReader(
                       providerName: szProviderName,
                       connectionString: szConnectionString,
                       sql: szSql
                   );
                }
            });

            //Summary main Data
            //report.MainTableSummarySettings(summarySettings =>
            //{
            //    summarySettings.OverallSummarySettings("Summary");
            //    summarySettings.PreviousPageSummarySettings("Previous Page Summary");
            //    summarySettings.PageSummarySettings("Page Summary");

            //});

            // Required Columns and formats
            report.MainTableColumns(columns =>
            {
                columns.AddColumn(column =>
                {
                    column.PropertyName("rowNo");
                    column.IsRowNumber(true);
                    column.CellsHorizontalAlignment(HorizontalAlignment.Left);
                    column.IsVisible(true);
                    column.Order(0);
                    column.Width(1);
                    column.HeaderCell("#");
                    column.IsVisible(false);
                });

                columns.AddColumn(column =>
                {
                    column.PropertyName("InvoiceId");
                    column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                    column.Order(1);
                    column.Width(1);
                    column.HeaderCell("Invoice Id");
                    column.IsVisible(false);
                });

                columns.AddColumn(column =>
                {
                    column.PropertyName("Quantity");
                    column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                    column.Order(2);
                    column.Width(0.75f);
                    column.HeaderCell("Req. Qty");
                    column.IsVisible(true);
                });

                columns.AddColumn(column =>
                {
                    column.PropertyName("ShipQuantity");
                    column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                    column.Order(3);
                    column.Width(0.75f);
                    column.HeaderCell("Ship Qty");
                    column.IsVisible(true);
                });

                columns.AddColumn(column =>
                {
                    column.PropertyName("BackOrderQuantity");
                    column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                    column.Order(4);
                    column.Width(0.75f);
                    column.HeaderCell("B.O. Qty");
                    column.IsVisible(true);
                });

                columns.AddColumn(column =>
                {
                    column.PropertyName("ItemID");
                    column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                    column.Order(5);
                    column.Width(1);
                    column.HeaderCell("ItemID");
                    column.IsVisible(false);
                });

                columns.AddColumn(column =>
                {
                    column.PropertyName("Sub_ItemID");
                    column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                    column.Order(6);
                    column.Width(2);
                    column.HeaderCell("ItemID No.");
                    column.IsVisible(true);
                });

                columns.AddColumn(column =>
                {
                    column.PropertyName("Description");
                    column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                    column.Order(7);
                    column.Width(4);
                    column.HeaderCell("Description");
                    column.IsVisible(true);
                });

                columns.AddColumn(column =>
                {
                    column.PropertyName("Tax");
                    column.CellsHorizontalAlignment(HorizontalAlignment.Center);
                    column.Order(8);
                    column.Width(0.5f);
                    column.HeaderCell("Tax");
                    column.IsVisible(false);
                });

                columns.AddColumn(column =>
                {
                    column.PropertyName("UnitPrice");
                    column.CellsHorizontalAlignment(HorizontalAlignment.Right);
                    column.Order(9);
                    column.Width(1);
                    column.HeaderCell("Unit Price");
                    column.IsVisible(true);
                    column.ColumnItemsTemplate(template =>
                    {
                        template.TextBlock();
                        template.DisplayFormatFormula(obj => obj == null ? string.Empty : string.Format("{0:n2}", obj));
                    });
                });

                columns.AddColumn(column =>
                {
                    column.PropertyName("CF1");
                    column.HeaderCell("Ext. Amount");
                    column.Width(1);
                    column.CellsHorizontalAlignment(HorizontalAlignment.Right);

                    column.ColumnItemsTemplate(template =>
                    {
                        template.TextBlock();
                        template.DisplayFormatFormula(obj => obj == null ? string.Empty : string.Format("{0:n2}", obj));
                    });

                    column.CalculatedField(list =>
                    {
                        if (list == null)
                        {
                            return string.Empty;
                        }

                        if (list.GetValueOf("UnitPrice") == null)
                        {
                            dUnitPrice = 0;
                        }
                        else
                        {
                            dUnitPrice = Convert.ToDecimal(list.GetValueOf("UnitPrice"));
                        }

                        if (list.GetValueOf("Quantity") == null)
                        {
                            dQty = 0;
                        }
                        else
                        {
                            dQty = Convert.ToDecimal(list.GetValueOf("Quantity"));
                        }

                        dAmount = dQty * dUnitPrice;
                        return dAmount;
                    });

                    //column.AggregateFunction(aggregateFunction =>
                    //{
                    //    aggregateFunction.NumericAggregateFunction(AggregateFunction.Sum);
                    //    aggregateFunction.DisplayFormatFormula(obj => obj == null ? string.Empty : string.Format("{0:n2}", obj));
                    //});

                    column.Order(10);
                    column.IsVisible(true);
                });

            });

            //report.MainTableColumns(columns =>
            //{
            //    columns.AddColumn(column =>
            //    {
            //        column.PropertyName("rowNo");
            //        column.IsRowNumber(true);
            //        column.CellsHorizontalAlignment(HorizontalAlignment.Center);
            //        column.IsVisible(true);
            //        column.Order(0);
            //        column.Width(1);
            //        column.HeaderCell("#");
            //    });

            //    columns.AddColumn(column =>
            //    {
            //        column.PropertyName<User>(x => x.Id);
            //        column.CellsHorizontalAlignment(HorizontalAlignment.Center);
            //        column.IsVisible(true);
            //        column.Order(1);
            //        column.Width(2);
            //        column.HeaderCell("Id");
            //    });

            //    columns.AddColumn(column =>
            //    {
            //        column.PropertyName<User>(x => x.Name);
            //        column.CellsHorizontalAlignment(HorizontalAlignment.Center);
            //        column.IsVisible(true);
            //        column.Order(2);
            //        column.Width(3);
            //        column.HeaderCell("Name");
            //    });

            //    columns.AddColumn(column =>
            //    {
            //        column.PropertyName<User>(x => x.LastName);
            //        column.CellsHorizontalAlignment(HorizontalAlignment.Center);
            //        column.IsVisible(true);
            //        column.Order(3);
            //        column.Width(3);
            //        column.HeaderCell("Last Name");
            //    });

            //    columns.AddColumn(column =>
            //    {
            //        column.PropertyName<User>(x => x.Balance);
            //        column.CellsHorizontalAlignment(HorizontalAlignment.Center);
            //        column.IsVisible(true);
            //        column.Order(4);
            //        column.Width(2);
            //        column.HeaderCell("Balance");
            //        column.ColumnItemsTemplate(template =>
            //        {
            //            template.TextBlock();
            //            template.DisplayFormatFormula(obj => obj == null ? string.Empty : string.Format("{0:n0}", obj));
            //        });
            //        column.AggregateFunction(aggregateFunction =>
            //        {
            //            aggregateFunction.NumericAggregateFunction(AggregateFunction.Sum);
            //            aggregateFunction.DisplayFormatFormula(obj => obj == null ? string.Empty : string.Format("{0:n0}", obj));
            //        });
            //    });

            //    columns.AddColumn(column =>
            //    {
            //        column.PropertyName<User>(x => x.Id);
            //        column.CellsHorizontalAlignment(HorizontalAlignment.Center);
            //        column.IsVisible(true);
            //        column.Order(5);
            //        column.Width(2);
            //        column.HeaderCell("QRCode");
            //        column.ColumnItemsTemplate(itemsTemplate =>
            //        {
            //            itemsTemplate.InlineField(inlineField =>
            //            {
            //                inlineField.RenderCell(cellData =>
            //                {
            //                    var data = cellData.Attributes.RowData.TableRowData;
            //                    var id = data.GetSafeStringValueOf<User>(x => x.Id);

            //                    var qrcode = new BarcodeQRCode(id, 1, 1, null);
            //                    var image = qrcode.GetImage();
            //                    var mask = qrcode.GetImage();
            //                    mask.MakeMask();
            //                    image.ImageMask = mask; // making the background color transparent
            //                    var pdfCell = new PdfPCell(image, fit: false);

            //                    return pdfCell;
            //                });
            //            });
            //        });
            //    });
            //});

            //Main table Events
            report.MainTableEvents(events =>
            {
                events.DataSourceIsEmpty(message: "There is no data available to display.");

                events.MainTableAdded(args =>
                {
                    //var data = args.LastOverallAggregateValueOf<Order>(y => y.Price);
                    //var msg = "Total: " + data + ", " + long.Parse(data, NumberStyles.AllowThousands, CultureInfo.InvariantCulture).NumberToText(Language.English);
                    //var infoTable = new PdfGrid(numColumns: 1)
                    //{
                    //    WidthPercentage = 100
                    //};
                    //infoTable.AddSimpleRow(
                    //     (cellData, properties) =>
                    //     {
                    //         cellData.Value = "Show data after the main table ...";
                    //         properties.PdfFont = events.PdfFont;
                    //         properties.RunDirection = PdfRunDirection.LeftToRight;
                    //     });
                    //infoTable.AddSimpleRow(
                    //     (cellData, properties) =>
                    //     {
                    //         cellData.Value = msg;
                    //         properties.PdfFont = events.PdfFont;
                    //         properties.RunDirection = PdfRunDirection.LeftToRight;
                    //     });
                    //args.PdfDoc.Add(infoTable.AddBorderToTable(borderColor: BaseColor.LIGHT_GRAY, spacingBefore: 25f));

                    PdfPTable salesamounttb = GetSalesAmountData(Invoiceid);
                    args.PdfDoc.Add(salesamounttb);
                });

            });

            //Export report
            report.Export(export =>
            {
                export.ToExcel();
                export.ToCsv();
                export.ToXml();
            });

            //szFilePath = string.Format("{0}\\InvoiceReport-{1}.pdf", szReportFolderPath, Invoiceid.ToString());
            //var szHlp = AppPath.ApplicationPath;

            //var reportHlp = report.Generate(data => data.AsPdfFile(string.Format("{0}\\Pdf\\InvoiceReport-{1}.pdf", AppPath.ApplicationPath, Guid.NewGuid().ToString("N"))));
            //var reportHlp = report.Generate(data => data.AsPdfFile(string.Format("{0}\\Pdf\\InvoiceReport-{1}.pdf", AppPath.ApplicationPath, Invoiceid.ToString())));
            //var reportHlp = report.Generate(data => data.AsPdfFile(string.Format("{0}Pdf\\InvoiceReport-{1}.pdf", AppPath.ApplicationPath, Invoiceid.ToString())));

            //var reportHlp = report.Generate(data => data.AsPdfFile(szFilePath));

            //var reportHlp = report.Generate(data => data.AsPdfFile(string.Format("{0}\\Pdf\\InvoiceReport-{1}.pdf", AppPath.ApplicationPath, Invoiceid.ToString())));

            //var reportHlp = report.Generate02(data => data.AsPdfFile(string.Format("{0}\\Pdf\\InvoiceReport-{1}.pdf", AppPath.ApplicationPath, Invoiceid.ToString())), Response);
            var reportHlp = report.Generate02(null, Response);

            return reportHlp;
        }