Пример #1
0
 public InvoiceController()
 {
     sales_order = new SalesOrder();
     order_items = new OrderItems();
     item        = new Item();
     SAddress    = new ServiceAddress();
     client      = new Client();
     contract    = new ClientContract();
     franchisee  = new Franchisee();
     inventory   = new Inventory();
 }
Пример #2
0
        private void RoyaltyFeeCollection_Load(object sender, EventArgs e)
        {
            int[] ids = new Franchisee().getTotal();
            for (int h = 0; h < ids.Length; h++)
            {
                String[] data = new String[6];
                string   url  = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory)
                                + "\\Resources\\royaltyFee_" + ids[h] + ".xml";
                XmlDocument doc = new System.Xml.XmlDocument();
                doc.Load(url);
                XmlElement docElement = doc.DocumentElement;
                int        i          = 0;
                /// loop through all childNodes
                foreach (XmlNode childNode in docElement.ChildNodes)
                {
                    if (childNode.HasChildNodes)
                    {
                        foreach (XmlNode c in childNode.ChildNodes)
                        {
                            data[i] = c.InnerText;
                            //Console.WriteLine(c.Name + ": " + c.InnerText);
                            i++;
                        }
                    }
                    else
                    {
                        //Console.WriteLine(childNode.Name + ": " + childNode.InnerText);
                        data[i] = childNode.InnerText;
                        i++;
                    }
                }


                if (!r.check(data[0], data[3] + "-" + data[2] + "-" + data[1]))
                {
                    r.set(data);
                }
            }
        }
Пример #3
0
        private void RoyaltyFeeCollection_Load(object sender, EventArgs e)
        {
            int[] ids = new Franchisee().getTotal();
            for (int h = 0; h <ids.Length ; h++)
            {

                String[] data = new String[6];
                string url = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory)
                    + "\\Resources\\royaltyFee_" + ids[h] + ".xml";
                XmlDocument doc = new System.Xml.XmlDocument();
                doc.Load(url);
                XmlElement docElement = doc.DocumentElement;
                int i = 0;
                /// loop through all childNodes
                foreach (XmlNode childNode in docElement.ChildNodes)
                {
                    if (childNode.HasChildNodes)
                    {
                        foreach (XmlNode c in childNode.ChildNodes)
                        {
                            data[i] = c.InnerText;
                            //Console.WriteLine(c.Name + ": " + c.InnerText);
                            i++;
                        }
                    }
                    else
                    {
                        //Console.WriteLine(childNode.Name + ": " + childNode.InnerText);
                        data[i] = childNode.InnerText;
                        i++;
                    }
                }

                if (!r.check(data[0], data[3] + "-" + data[2] + "-" + data[1]))
                    r.set(data);
            }
        }
Пример #4
0
        // update the view
        public void preview(object sender, EventArgs e)
        {
            QuoteForm quoteForm = (QuoteForm)((Button)sender).FindForm();

            try
            {
                //start creating the PDF

                //Create a Catalog Dictionary
                CatalogDict catalogDict = new CatalogDict();

                //Create a Page Tree Dictionary
                PageTreeDict pageTreeDict = new PageTreeDict();

                //Create a Font Dictionary - Only the standard fonts Time, Helvetica and courier etc can be created by this method.
                //See Adobe doco for more info on other fonts
                FontDict TimesRoman  = new FontDict();
                FontDict TimesItalic = new FontDict();
                FontDict TimesBold   = new FontDict();
                FontDict Courier     = new FontDict();

                //Create the info Dictionary
                InfoDict infoDict = new InfoDict();
                //Create the font called Times Roman
                TimesRoman.CreateFontDict("T1", "Times-Roman");

                //Create the font called Times Italic
                TimesItalic.CreateFontDict("T2", "Times-Italic");

                //Create the font called Times Bold
                TimesBold.CreateFontDict("T3", "Times-Bold");

                //Create the font called Courier
                Courier.CreateFontDict("T4", "Courier");

                //Set the info Dictionary. xxx will be the invoice number
                infoDict.SetInfo("Quote xxx" /*+ quoteForm.getID()*/, "System Generated", "Fire-Alert");

                //Create a utility object
                Utility pdfUtility = new Utility();
                String  FilePath   = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory) + "\\Resources\\Quote.pdf";

                //Open a file specifying the file name as the output pdf file
                //String FilePath = @"C:\Users\Hassan\Desktop\Preview.pdf";

                FileStream file = new FileStream(FilePath, FileMode.Create);
                int        size = 0;
                file.Write(pdfUtility.GetHeader("1.5", out size), 0, size);
                file.Close();

                //Finished the first step



                //Create a Page Dictionary , this represents a visible page
                PageDict    page    = new PageDict();
                ContentDict content = new ContentDict();

                //The page size object will hold all the page size information
                //also holds the dictionary objects for font, images etc.
                //A4 595,842
                //Letter 612,792
                PageSize pSize = new PageSize(612, 792); //A4 paper portrait in 1/72" measurements
                pSize.SetMargins(10, 10, 10, 10);

                //create the page main details
                page.CreatePage(pageTreeDict.objectNum, pSize);

                //add a page
                pageTreeDict.AddPage(page.objectNum);

                //add the fonts to this page
                page.AddResource(TimesRoman, content.objectNum);
                page.AddResource(TimesItalic, content.objectNum);
                page.AddResource(TimesBold, content.objectNum);
                page.AddResource(Courier, content.objectNum);

                //Create a Text And Table Object that presents the text elements in the page
                TextAndTables textAndtable = new TextAndTables(pSize);

                //create the reference to an image and the data that represents it
                String    ImagePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory) + "\\Resources\\logo.jpg"; //file path to image source
                ImageDict I1        = new ImageDict();                                                                         //new image dictionary object
                I1.CreateImageDict("I1", ImagePath);                                                                           //create the object which describes the image
                page.AddImageResource(I1.PDFImageName, I1, content.objectNum);                                                 //create a reference where the PDF can identify which object
                //describes the image when we want to draw it on the page

                /*
                 * draw the image to page (add the instruction to the content stream which says draw the image called I1 starting
                 * at X = 269, Y = 20 and with an ACTUAL image size on the page of w = 144 and h = 100)
                 */
                PageImages pi = new PageImages();
                content.SetStream(pi.ShowImage("I1", 400, 680, 155, 85));   //tell the PDF we want to draw an image called 'I1', where and what size

                String[] sAd = new String[6];
                sAd = new ServiceAddress().get(quoteForm.getServiceAddressId()).Split(',');

                String[] client = new String[9];
                client = new Client().get(new ClientContract().getClient(quoteForm.getServiceAddressId())).Split(',');

                String[] franchisee = new String[6];
                franchisee = new Franchisee().get(new ClientContract().getFranchisee(quoteForm.getServiceAddressId())).Split(',');

                String[] user = new String[4];
                user = new Users().get(franchiseeUserId).Split(',');

                //Add text to the page
                textAndtable.AddText(50, 50, "Quote: " + ((type == 2) ? quoteForm.getId() : "To Be Created"), 10, "T3", Align.LeftAlign);
                textAndtable.AddText(50, 60, "Date Issued: " /* + quoteForm.getDateIssued()*/, 10, "T3", Align.LeftAlign);


                textAndtable.AddText(50, 100, "To: " + client[0], 10, "T3", Align.LeftAlign);
                textAndtable.AddText(50, 110, client[4], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(50, 120, client[6] + ", " + client[7] + ", " + client[8] + " " + client[2], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(50, 130, "Primary Contact: " + client[5], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(50, 140, "Ph: " + client[3], 10, "T1", Align.LeftAlign);

                textAndtable.AddText(300, 100, "Prepared By: ", 10, "T3", Align.LeftAlign);
                textAndtable.AddText(300, 110, franchisee[5], 10, "T3", Align.LeftAlign);
                textAndtable.AddText(300, 120, franchisee[0], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(300, 130, franchisee[2] + ", " + franchisee[3] + ", " + franchisee[4] + " " + franchisee[1], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(300, 140, "Contact: " + user[0] + " " + user[1], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(300, 150, "Ph: " + user[2], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(300, 160, "Email: " + user[3], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(300, 170, "Web: http://www.fire-alert.ca", 10, "T1", Align.LeftAlign);

                textAndtable.AddText(50, 160, "Service Location: ", 10, "T3", Align.LeftAlign);
                textAndtable.AddText(50, 170, sAd[0], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(50, 180, sAd[3] + ", " + sAd[4] + ", " + sAd[5] + " " + sAd[1], 10, "T1", Align.LeftAlign);

                //Add table to the page
                Align[] alignC = new Align[4];
                alignC[0] = Align.CenterAlign;
                alignC[1] = Align.CenterAlign;
                alignC[2] = Align.CenterAlign;
                alignC[3] = Align.CenterAlign;

                Align[] alignR = new Align[4];
                alignR[0] = Align.LeftAlign;
                alignR[1] = Align.LeftAlign;
                alignR[2] = Align.LeftAlign;
                alignR[3] = Align.LeftAlign;

                //Specify the color for the cell and the line
                ColorSpec cellColor = new ColorSpec(196, 34, 34);
                ColorSpec lineColor = new ColorSpec(1, 1, 1);

                //Fill in the parameters for the table
                TableParams table = new TableParams(2, 235, 90, 75, 75);
                table.yPos      = 550;
                table.xPos      = 50;
                table.rowHeight = 15;

                //Set the parameters of this table
                textAndtable.SetParams(table, cellColor, Align.CenterAlign, 3);
                textAndtable.AddRow(false, 8, "T3", alignC, true, "Service Rep.", "Valid Until");
                //After drawing table and text add them to the page
                content.SetStream(textAndtable.EndTable(lineColor, true));

                TextAndTables textAndtable2 = new TextAndTables(pSize);
                //Specify the color for the cell and the line
                ColorSpec   cell1  = new ColorSpec(255, 255, 255);
                ColorSpec   line1  = new ColorSpec(1, 1, 1);
                TableParams table2 = new TableParams(2, 235, 90, 75, 75);
                table2.yPos      = 535;
                table2.xPos      = 50;
                table2.rowHeight = 15;
                textAndtable2.SetParams(table2, cell1, Align.CenterAlign, 3);
                textAndtable2.AddRow(false, 8, "T3", alignR, false, "", "");
                content.SetStream(textAndtable2.EndTable(line1, true));

                Align[] alignC2 = new Align[7];
                alignC2[0] = Align.CenterAlign;
                alignC2[1] = Align.CenterAlign;
                alignC2[2] = Align.CenterAlign;
                alignC2[3] = Align.CenterAlign;
                alignC2[4] = Align.CenterAlign;
                alignC2[5] = Align.CenterAlign;
                alignC2[6] = Align.CenterAlign;


                Align[] alignR2 = new Align[7];
                alignR2[0] = Align.LeftAlign;
                alignR2[1] = Align.LeftAlign;
                alignR2[2] = Align.LeftAlign;
                alignR2[3] = Align.LeftAlign;
                alignR2[4] = Align.RightAlign;
                alignR2[5] = Align.RightAlign;
                alignR2[6] = Align.RightAlign;

                TextAndTables textAndtable3 = new TextAndTables(pSize);
                //Specify the color for the cell and the line
                ColorSpec   cell2  = new ColorSpec(196, 34, 34);
                ColorSpec   line2  = new ColorSpec(1, 1, 1);
                TableParams table3 = new TableParams(7, 15, 100, 160, 40, 40, 60, 60);
                table3.yPos      = 510;
                table3.xPos      = 50;
                table3.rowHeight = 15;
                textAndtable3.SetParams(table3, cell2, Align.CenterAlign, 3);
                textAndtable3.AddRow(false, 8, "T3", alignC2, true, "#", "Charge", "Description", "Hours", "Qty", "Price", "Line Total");
                content.SetStream(textAndtable3.EndTable(line2, true));


                TextAndTables textAndtable4 = new TextAndTables(pSize);
                //Specify the color for the cell and the line
                ColorSpec   cell3  = new ColorSpec(255, 255, 255);
                ColorSpec   line3  = new ColorSpec(1, 1, 1);
                TableParams table4 = new TableParams(7, 15, 100, 160, 40, 40, 60, 60);
                table4.yPos      = 495;
                table4.xPos      = 50;
                table4.rowHeight = 15;
                textAndtable4.SetParams(table4, cell3, Align.CenterAlign, 3);
                DataGridView dgvSalesOrder = quoteForm.getQuoteItems();
                for (int i = 0; i < dgvSalesOrder.Rows.Count - 1; i++)
                {
                    textAndtable4.AddRow(false, 8, "T3", alignR2, false, dgvSalesOrder.Rows[i].Cells[0].Value.ToString(),
                                         dgvSalesOrder.Rows[i].Cells[1].FormattedValue.ToString(), dgvSalesOrder.Rows[i].Cells[2].Value.ToString(),
                                         (dgvSalesOrder.Rows[i].Cells[3].Value == null || dgvSalesOrder.Rows[i].Cells[3].Value.ToString() == "") ? "-" : dgvSalesOrder.Rows[i].Cells[3].Value.ToString(),
                                         (dgvSalesOrder.Rows[i].Cells[4].Value == null || dgvSalesOrder.Rows[i].Cells[4].Value.ToString() == "") ? "-" : dgvSalesOrder.Rows[i].Cells[4].Value.ToString(),
                                         dgvSalesOrder.Rows[i].Cells[5].Value.ToString(), dgvSalesOrder.Rows[i].Cells[6].Value.ToString());
                }
                content.SetStream(textAndtable4.EndTable(line3, true));



                textAndtable.AddText(400, 650, "Subtotal ", 10, "T1", Align.LeftAlign);
                textAndtable.AddText(400, 665, "HST ", 10, "T1", Align.LeftAlign);
                textAndtable.AddText(400, 680, "Total ", 10, "T1", Align.LeftAlign);


                TextAndTables textAndtable5 = new TextAndTables(pSize);
                Align[]       align         = new Align[1];
                align[0] = Align.RightAlign;
                //Specify the color for the cell and the line
                TableParams table5 = new TableParams(1, 60);
                table5.yPos      = 152;
                table5.xPos      = 100;
                table5.rowHeight = 15;
                textAndtable5.SetParams(table5, cell3, Align.RightAlign, 3);
                textAndtable5.AddRow(false, 10, "T3", align, false, quoteForm.getSubtotal());
                textAndtable5.AddRow(false, 10, "T3", align, false, quoteForm.getHST());
                content.SetStream(textAndtable5.EndTable(line3, true));

                TextAndTables textAndtable6 = new TextAndTables(pSize);
                //Specify the color for the cell and the line
                TableParams table6 = new TableParams(1, 60);
                table6.yPos      = 122;
                table6.xPos      = 100;
                table6.rowHeight = 15;
                textAndtable6.SetParams(table6, cell2, Align.RightAlign, 3);
                textAndtable6.AddRow(false, 10, "T3", align, true, "$" + quoteForm.getTotal());


                content.SetStream(textAndtable.EndText());


                //All done - send the information to the PDF file

                size = 0;
                file = new FileStream(FilePath, FileMode.Append);
                file.Write(page.GetPageDict(file.Length, out size), 0, size);
                file.Write(content.GetContentDict(file.Length, out size), 0, size);
                file.Close();

                file = new FileStream(FilePath, FileMode.Append);
                file.Write(catalogDict.GetCatalogDict(pageTreeDict.objectNum, file.Length, out size), 0, size);
                file.Write(pageTreeDict.GetPageTree(file.Length, out size), 0, size);
                file.Write(TimesRoman.GetFontDict(file.Length, out size), 0, size);
                file.Write(TimesItalic.GetFontDict(file.Length, out size), 0, size);
                file.Write(TimesBold.GetFontDict(file.Length, out size), 0, size);
                file.Write(Courier.GetFontDict(file.Length, out size), 0, size);

                //write image dict
                file.Write(I1.GetImageDict(file.Length, out size), 0, size);

                file.Write(infoDict.GetInfoDict(file.Length, out size), 0, size);
                file.Write(pdfUtility.CreateXrefTable(file.Length, out size), 0, size);
                file.Write(pdfUtility.GetTrailer(catalogDict.objectNum, infoDict.objectNum, out size), 0, size);
                file.Close();

                //Messages.Visible = true;
                Preview testDialog = new Preview(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory) + "\\Resources\\Quote.pdf");
                testDialog.ShowDialog(quoteForm);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Could not display the document because " + ex.ToString());
            }
        }
Пример #5
0
        private void generateStatement()
        {
            try
            {
                //start creating the PDF

                //Create a Catalog Dictionary
                CatalogDict catalogDict = new CatalogDict();

                //Create a Page Tree Dictionary
                PageTreeDict pageTreeDict = new PageTreeDict();

                //Create a Font Dictionary - Only the standard fonts Time, Helvetica and courier etc can be created by this method.
                //See Adobe doco for more info on other fonts
                FontDict TimesRoman  = new FontDict();
                FontDict TimesItalic = new FontDict();
                FontDict TimesBold   = new FontDict();
                FontDict Courier     = new FontDict();

                //Create the info Dictionary
                InfoDict infoDict = new InfoDict();
                Invoice  invoice  = new Invoice();
                //Create the font called Times Roman
                TimesRoman.CreateFontDict("T1", "Times-Roman");

                //Create the font called Times Italic
                TimesItalic.CreateFontDict("T2", "Times-Italic");

                //Create the font called Times Bold
                TimesBold.CreateFontDict("T3", "Times-Bold");

                //Create the font called Courier
                Courier.CreateFontDict("T4", "Times-Roman");

                //Set the info Dictionary. xxx will be the invoice number
                infoDict.SetInfo("Statement of " + cbClients.Text, "System Generated", "Fire-Alert");

                //Create a utility object
                Utility pdfUtility = new Utility();
                String  FilePath   = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory) + "\\Resources\\Statement_" + cbClients.SelectedValue + ".pdf";

                //Open a file specifying the file name as the output pdf file
                //String FilePath = @"C:\Users\Hassan\Desktop\Preview.pdf";

                FileStream file = new FileStream(FilePath, FileMode.Create);
                int        size = 0;
                file.Write(pdfUtility.GetHeader("1.5", out size), 0, size);
                file.Close();

                //Finished the first step



                //Create a Page Dictionary , this represents a visible page
                PageDict    page    = new PageDict();
                ContentDict content = new ContentDict();

                //The page size object will hold all the page size information
                //also holds the dictionary objects for font, images etc.
                //A4 595,842
                //Letter 612,792
                PageSize pSize = new PageSize(612, 792); //A4 paper portrait in 1/72" measurements
                pSize.SetMargins(10, 10, 10, 10);

                //create the page main details
                page.CreatePage(pageTreeDict.objectNum, pSize);

                //add a page
                pageTreeDict.AddPage(page.objectNum);

                //add the fonts to this page
                page.AddResource(TimesRoman, content.objectNum);
                page.AddResource(TimesItalic, content.objectNum);
                page.AddResource(TimesBold, content.objectNum);
                page.AddResource(Courier, content.objectNum);

                //Create a Text And Table Object that presents the text elements in the page
                TextAndTables textAndtable = new TextAndTables(pSize);


                //create the reference to an image and the data that represents it
                String    ImagePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory) + "\\Resources\\logo.jpg"; //file path to image source
                ImageDict I1        = new ImageDict();                                                                         //new image dictionary object
                I1.CreateImageDict("I1", ImagePath);                                                                           //create the object which describes the image
                page.AddImageResource(I1.PDFImageName, I1, content.objectNum);                                                 //create a reference where the PDF can identify which object
                //describes the image when we want to draw it on the page

                /*
                 * draw the image to page (add the instruction to the content stream which says draw the image called I1 starting
                 * at X = 269, Y = 20 and with an ACTUAL image size on the page of w = 144 and h = 100)
                 */
                PageImages pi = new PageImages();
                content.SetStream(pi.ShowImage("I1", 450, 690, 155, 85));   //tell the PDF we want to draw an image called 'I1', where and what size



                String   clientInfo = new Client().get(cbClients.SelectedValue.ToString());
                String[] client     = new String[9];
                client = clientInfo.Split(',');

                String   franchiseeInfo = new Franchisee().get(new ClientContract().getFranchiseeOfClient(cbClients.SelectedValue.ToString()));
                String[] franchisee     = new String[6];
                franchisee = franchiseeInfo.Split(',');

                if (franchisee.Length < 6)
                {
                    franchisee = new String[6] {
                        "", "", "", "", "", ""
                    }
                }
                ;

                String   userInfo = new Users().get(userid.ToString());
                String[] user     = new String[4];
                user = userInfo.Split(',');

                //Add text to the page
                textAndtable.AddText(260, 50, "STATEMENT", 20, "T3", Align.LeftAlign);
                textAndtable.AddText(50, 80, franchisee[5], 16, "T3", Align.LeftAlign);
                textAndtable.AddText(50, 90, franchisee[0], 10, "T3", Align.LeftAlign);
                textAndtable.AddText(50, 100, franchisee[2] + ", " + franchisee[3] + ", " + franchisee[4] + " " + franchisee[1], 10, "T3", Align.LeftAlign);
                textAndtable.AddText(50, 110, user[2], 10, "T3", Align.LeftAlign);
                // textAndtable.AddText(50, 60, "Total: " + txtTotal.Text, 10, "T3", Align.LeftAlign);


                textAndtable.AddText(50, 190, client[0], 10, "T3", Align.LeftAlign);
                textAndtable.AddText(50, 205, client[5], 10, "T4", Align.LeftAlign);
                textAndtable.AddText(50, 215, client[1], 10, "T4", Align.LeftAlign);
                textAndtable.AddText(50, 225, client[6] + ", " + client[7] + " " + client[2], 10, "T4", Align.LeftAlign);
                textAndtable.AddText(50, 235, client[8], 10, "T4", Align.LeftAlign);

                textAndtable.AddText(430, 150, "PLEASE RETURN THIS PORTION WITH", 8, "T4", Align.LeftAlign);
                textAndtable.AddText(430, 160, "YOUR PAYMENT", 8, "T4", Align.LeftAlign);
                textAndtable.AddText(400, 175, client[0], 10, "T3", Align.LeftAlign);
                textAndtable.AddText(430, 210, "IF PAYING BY INVOICE CHECK", 8, "T4", Align.LeftAlign);
                textAndtable.AddText(430, 220, "INDIVIDUAL INVOICES PAID", 8, "T4", Align.LeftAlign);
                textAndtable.AddText(435, 240, "AMOUNT REMITTED __________", 8, "T4", Align.LeftAlign);

                Align[] alignC = new Align[1];
                alignC[0] = Align.CenterAlign;

                //Specify the color for the cell and the line
                ColorSpec cellColor = new ColorSpec(255, 255, 255);
                ColorSpec lineColor = new ColorSpec(1, 1, 1);

                //Fill in the parameters for the table
                TableParams table = new TableParams(1, 100);
                table.yPos      = 700;
                table.xPos      = 50;
                table.rowHeight = 15;

                //Set the parameters of this table
                textAndtable.SetParams(table, cellColor, Align.RightAlign, 3);
                textAndtable.AddRow(false, 10, "T3", alignC, false, "Statement Date");
                textAndtable.AddRow(false, 10, "T4", alignC, false, DateTime.Today.ToShortDateString());

                //After drawing table and text add them to the page
                content.SetStream(textAndtable.EndTable(lineColor, true));

                table.yPos = 630;
                table.xPos = 0;
                //Set the parameters of this table
                textAndtable.SetParams(table, cellColor, Align.CenterAlign, 3);
                textAndtable.AddRow(false, 10, "T3", alignC, false, "Statement Date");
                textAndtable.AddRow(false, 10, "T4", alignC, false, DateTime.Today.ToShortDateString());

                //After drawing table and text add them to the page
                content.SetStream(textAndtable.EndTable(lineColor, true));

                textAndtable.AddText(50, 275, "Page:    1", 10, "T4", Align.LeftAlign);
                Align[] alignC1 = new Align[5];
                alignC1[0] = Align.CenterAlign;
                alignC1[1] = Align.CenterAlign;
                alignC1[2] = Align.CenterAlign;
                alignC1[3] = Align.CenterAlign;
                alignC1[4] = Align.CenterAlign;

                Align[] alignC2 = new Align[5];
                alignC2[0] = Align.LeftAlign;
                alignC2[1] = Align.LeftAlign;
                alignC2[2] = Align.RightAlign;
                alignC2[3] = Align.RightAlign;
                alignC2[4] = Align.CenterAlign;

                //Fill in the parameters for the table
                TableParams table2 = new TableParams(5, 150, 90, 90, 90, 40);
                table2.yPos      = 510;
                table2.xPos      = 37;
                table2.rowHeight = 15;

                //Set the parameters of this table
                textAndtable.SetParams(table2, cellColor, Align.LeftAlign, 3);
                // MessageBox.Show("\u221A");
                textAndtable.AddRow(false, 10, "T3", alignC1, false, "Statement Date", "Invoice No.", "Balance", "Total Due", "");
                String[] rows          = new Invoice().getOutstandingInvoices(cbClients.SelectedValue.ToString());
                double   total         = 0;
                double   interestTotal = 0;
                double   interest      = 0;
                double   below30       = 0;
                double   between3160   = 0;
                double   over60        = 0;
                DateTime interestDate  = DateTime.Today.Date.AddDays(-30);
                for (int i = 0; i < rows.Length; i++)
                {
                    String[] cells = new String[3];
                    cells  = rows[i].Split(',');
                    total += Convert.ToDouble(cells[2]);
                    if (Convert.ToDateTime(cells[0]) < interestDate)
                    {
                        interestTotal += Convert.ToDouble(cells[2]);
                    }
                    if (Convert.ToDateTime(cells[0]) > interestDate)
                    {
                        below30 += Convert.ToDouble(cells[2]);
                    }
                    if (Convert.ToDateTime(cells[0]) < DateTime.Today.Date.AddDays(-30) && Convert.ToDateTime(cells[0]) >= DateTime.Today.Date.AddDays(-60))
                    {
                        between3160 += Convert.ToDouble(cells[2]);
                    }
                    if (Convert.ToDateTime(cells[0]) < DateTime.Today.Date.AddDays(-60))
                    {
                        over60 += Convert.ToDouble(cells[2]);
                    }
                    Console.WriteLine(cells[0] + " " + cells[1]);
                    textAndtable.AddRow(false, 10, "T4", alignC2, false, cells[0], cells[1], "$" + cells[2], "$" + total.ToString(), "");
                }
                interest = interestTotal * 0.02;
                total   += interest;
                below30 += interest;
                textAndtable.AddRow(false, 10, "T4", alignC2, false, "2% interest on balance over 30 days", "", "$" + (interest).ToString(), "$" + total.ToString(), "");

                //After drawing table and text add them to the page
                content.SetStream(textAndtable.EndTable(lineColor, true));

                Align[] alignC3 = new Align[5];
                alignC3[0] = Align.LeftAlign;
                alignC3[1] = Align.RightAlign;
                alignC3[2] = Align.RightAlign;
                alignC3[3] = Align.RightAlign;
                alignC3[4] = Align.CenterAlign;

                //Fill in the parameters for the table  120,100,100,100,40 = 460
                TableParams table3 = new TableParams(5, 100, 90, 90, 90, 90);
                table3.yPos      = 100;
                table3.xPos      = 37;
                table3.rowHeight = 15;

                //Set the parameters of this table
                textAndtable.SetParams(table3, cellColor, Align.LeftAlign, 3);
                // MessageBox.Show("\u221A");
                textAndtable.AddRow(false, 10, "T3", alignC3, false, "Age", "Current ", "31-60 ", "Over 60 ", "Total");
                textAndtable.AddRow(false, 10, "T3", alignC3, false, "Amount", below30.ToString(), between3160.ToString(), over60.ToString(), total.ToString());
                content.SetStream(textAndtable.EndTable(lineColor, true));

                content.SetStream(textAndtable.EndText());


                //All done - send the information to the PDF file

                size = 0;
                file = new FileStream(FilePath, FileMode.Append);
                file.Write(page.GetPageDict(file.Length, out size), 0, size);
                file.Write(content.GetContentDict(file.Length, out size), 0, size);
                file.Close();

                file = new FileStream(FilePath, FileMode.Append);
                file.Write(catalogDict.GetCatalogDict(pageTreeDict.objectNum, file.Length, out size), 0, size);
                file.Write(pageTreeDict.GetPageTree(file.Length, out size), 0, size);
                file.Write(TimesRoman.GetFontDict(file.Length, out size), 0, size);
                file.Write(TimesItalic.GetFontDict(file.Length, out size), 0, size);
                file.Write(TimesBold.GetFontDict(file.Length, out size), 0, size);
                file.Write(Courier.GetFontDict(file.Length, out size), 0, size);

                //write image dict
                file.Write(I1.GetImageDict(file.Length, out size), 0, size);

                file.Write(infoDict.GetInfoDict(file.Length, out size), 0, size);
                file.Write(pdfUtility.CreateXrefTable(file.Length, out size), 0, size);
                file.Write(pdfUtility.GetTrailer(catalogDict.objectNum, infoDict.objectNum, out size), 0, size);
                file.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Could not display the document because " + ex.ToString());
            }
        }
Пример #6
0
        private void generate_btn_Click(object sender, EventArgs e)
        {
            MainMap.Visible = true;
            int order = 1;

            routes.Routes.Clear();
            objects.Markers.Clear();
            String[] startingAddress = new Franchisee().getAddress(userid);

            PointLatLng?       pos;
            GeoCoderStatusCode status = GeoCoderStatusCode.Unknow;

            {
                pos = GMapProviders.GoogleMap.GetPoint(startingAddress[2] + ", " + startingAddress[0], out status);
                if (pos != null && status == GeoCoderStatusCode.G_GEO_SUCCESS)
                {
                    currentMarker.Position = pos.Value;
                }
            }
            AddLocation(order++, startingAddress[0]);
            List <PointLatLng> myWaypoints = new List <PointLatLng>();

            if (workOrderTable.SelectedRows.Count > 0)
            {
                String[] address  = new String[workOrderTable.SelectedRows.Count];
                String[] location = new String[workOrderTable.SelectedRows.Count];
                String[] country  = new String[workOrderTable.SelectedRows.Count];
                for (int i = 0; i < workOrderTable.SelectedRows.Count; i++)
                {
                    country[i] = workOrderTable.SelectedRows[i].Cells[6].Value.ToString();
                    address[i] = workOrderTable.SelectedRows[i].Cells[3].Value.ToString();
//                    location[i] = workOrderTable.SelectedRows[i].Cells[6].Value.ToString() + ", " + workOrderTable.SelectedRows[i].Cells[4].Value.ToString();
                    location[i] = workOrderTable.SelectedRows[i].Cells[3].Value.ToString() + ", "
                                  + workOrderTable.SelectedRows[i].Cells[4].Value.ToString() + ", "
                                  + workOrderTable.SelectedRows[i].Cells[5].Value.ToString() + ", "
                                  + workOrderTable.SelectedRows[i].Cells[6].Value.ToString();
                }

                for (int i = 0; i < workOrderTable.SelectedRows.Count; i++)
                {
                    //MessageBox.Show(location[i].ToString());
                    PointLatLng?pos1 = GMapProviders.GoogleMap.GetPoint(location[i].ToString(), out status);
                    if (pos1 != null && status == GeoCoderStatusCode.G_GEO_SUCCESS)
                    {
                        myWaypoints.Add(pos1.Value);
                        AddLocation(order++, location[i]);
                        currentMarker.Position = pos1.Value;
                    }
                    else
                    {
                        myWaypoints.Add(new PointLatLng(42.98252, -81.25397));
                        AddLocation(order++, location[i]);
                        if (currentMarker != null)
                        {
                            currentMarker.Position = new PointLatLng(42.98252, -81.25397);
                        }
                    }
                }
            }
            if (servicesTable.SelectedRows.Count > 0)
            {
                String[] address  = new String[servicesTable.SelectedRows.Count];
                String[] location = new String[servicesTable.SelectedRows.Count];
                String[] country  = new String[servicesTable.SelectedRows.Count];
                for (int i = 0; i < servicesTable.SelectedRows.Count; i++)
                {
                    country[i]  = servicesTable.SelectedRows[i].Cells[8].Value.ToString();
                    address[i]  = servicesTable.SelectedRows[i].Cells[5].Value.ToString();
                    location[i] = servicesTable.SelectedRows[i].Cells[8].Value.ToString() + ", " + servicesTable.SelectedRows[i].Cells[6].Value.ToString();
                }

                for (int i = 0; i < servicesTable.SelectedRows.Count; i++)
                {
                    PointLatLng?pos1 = GMapProviders.GoogleMap.GetPoint(country[i] + ", " + address[i], out status);
                    myWaypoints.Add(pos1.Value);
                    AddLocation(order++, address[i]);
                    currentMarker.Position = pos1.Value;
                }
            }
            GMapRoute rte = new GMapRoute("name");

            GDirections _dir;

            if (pos == null)
            {
                pos = new PointLatLng();
            }
            DirectionsStatusCode _code = GMapProviders.GoogleMap.GetDirections(out _dir, pos.Value, myWaypoints, false, false, false, true, true);

            if (_code == DirectionsStatusCode.OK)
            {
                foreach (GDirectionStep _step in _dir.Steps)
                {
                    rte.Points.AddRange(_step.Points);
                }
            }

            routes.Routes.Add(rte);
        }
Пример #7
0
        private void LoadMap()
        {
            // set cache mode only if no internet avaible
            if (!DesignMode)
            {
                // set cache mode only if no internet avaible
                if (!PingNetwork("www.google.ca"))
                //        if (!Stuff.PingNetwork("www.google.ca"))
                {
                    MainMap.Manager.Mode = AccessMode.CacheOnly;
                    MessageBox.Show("No internet connection available, going to CacheOnly mode.", "FAFOS Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }

                String[] startingAddress = new Franchisee().getAddress(userid);

                // config map
                MainMap.MapProvider = GMapProviders.BingMap; //.GoogleMap;
                GeoCoderStatusCode status = GeoCoderStatusCode.Unknow;
                //          PointLatLng? p = GMapProviders.GoogleMap.GetPoint(startingAddress[0] + ", " + startingAddress[2] + ", " + startingAddress[1], out status);
                PointLatLng?p = GMapProviders.GoogleMap.GetPoint("817 Silversmith Street, London, Ontario, N6H 5T4, Canada", out status);
                if (p != null && status == GeoCoderStatusCode.G_GEO_SUCCESS)
                {
                    MainMap.Position = p.Value;
                }
                else
                {
                    MainMap.Position = new PointLatLng(42.98252, -81.25397);
                }

                MainMap.MinZoom = 3;
                MainMap.MaxZoom = 20;
                MainMap.Zoom    = 13;

                // map events
                {
                    MainMap.OnTileLoadStart += new TileLoadStart(MainMap_OnTileLoadStart);


                    MainMap.OnMarkerClick += new MarkerClick(MainMap_OnMarkerClick);
                    MainMap.OnMarkerEnter += new MarkerEnter(MainMap_OnMarkerEnter);
                    MainMap.OnMarkerLeave += new MarkerLeave(MainMap_OnMarkerLeave);

                    MainMap.OnPolygonEnter += new PolygonEnter(MainMap_OnPolygonEnter);
                    MainMap.OnPolygonLeave += new PolygonLeave(MainMap_OnPolygonLeave);

                    MainMap.OnRouteEnter += new RouteEnter(MainMap_OnRouteEnter);
                    MainMap.OnRouteLeave += new RouteLeave(MainMap_OnRouteLeave);

                    MainMap.Manager.OnTileCacheComplete += new TileCacheComplete(OnTileCacheComplete);
                    //   MainMap.Manager.OnTileCacheProgress += new TileCacheProgress(OnTileCacheProgress);
                }
                MainMap.MouseMove += new MouseEventHandler(MainMap_MouseMove);
                MainMap.MouseDown += new MouseEventHandler(MainMap_MouseDown);
                MainMap.MouseUp   += new MouseEventHandler(MainMap_MouseUp);

                MainMap.DragButton = MouseButtons.Left;

                // add custom layers
                {
                    MainMap.Overlays.Add(routes);
                    MainMap.Overlays.Add(polygons);
                    MainMap.Overlays.Add(objects);
                    MainMap.Overlays.Add(top);
                }

                //Set Operational Region

                /*       PointLatLng? p2 = GMapProviders.GoogleMap.GetPoint(startingAddress[2]+", "+startingAddress[0], out status);
                 *     GMapMarkerCircle circle = new GMapMarkerCircle(p2.Value);
                 *     circle.Radius = 15000;
                 *     circle.Stroke=new Pen(Color.Red);
                 *     circle.Fill = Brushes.Transparent;//new Brush(Color.Red); //Color.Transparent;
                 *     top.Markers.Add(circle);
                 */
                // set current marker
                currentMarker = new GMarkerGoogle(MainMap.Position, GMarkerGoogleType.red_pushpin);
                currentMarker.IsHitTestVisible = false;
                top.Markers.Add(currentMarker);
            }
        }
Пример #8
0
        private void LoadMap()
        {
            // set cache mode only if no internet avaible
            if (!DesignMode)
            {
                // set cache mode only if no internet avaible
                if (!PingNetwork("www.google.ca"))
            //        if (!Stuff.PingNetwork("www.google.ca"))
                {
                    MainMap.Manager.Mode = AccessMode.CacheOnly;
                    MessageBox.Show("No internet connection available, going to CacheOnly mode.", "FAFOS Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }

                String[] startingAddress = new Franchisee().getAddress(userid);

                // config map
                MainMap.MapProvider = GMapProviders.BingMap; //.GoogleMap;
                GeoCoderStatusCode status = GeoCoderStatusCode.Unknow;
              //          PointLatLng? p = GMapProviders.GoogleMap.GetPoint(startingAddress[0] + ", " + startingAddress[2] + ", " + startingAddress[1], out status);
                PointLatLng? p = GMapProviders.GoogleMap.GetPoint("817 Silversmith Street, London, Ontario, N6H 5T4, Canada", out status);
                if (p != null && status == GeoCoderStatusCode.G_GEO_SUCCESS)
                {
                    MainMap.Position = p.Value;
                }
                else
                {
                    MainMap.Position =  new PointLatLng(42.98252, -81.25397);
                }

                MainMap.MinZoom = 3;
                MainMap.MaxZoom = 20;
                MainMap.Zoom = 13;

                // map events
                {

                    MainMap.OnTileLoadStart += new TileLoadStart(MainMap_OnTileLoadStart);

                    MainMap.OnMarkerClick += new MarkerClick(MainMap_OnMarkerClick);
                    MainMap.OnMarkerEnter += new MarkerEnter(MainMap_OnMarkerEnter);
                    MainMap.OnMarkerLeave += new MarkerLeave(MainMap_OnMarkerLeave);

                    MainMap.OnPolygonEnter += new PolygonEnter(MainMap_OnPolygonEnter);
                    MainMap.OnPolygonLeave += new PolygonLeave(MainMap_OnPolygonLeave);

                    MainMap.OnRouteEnter += new RouteEnter(MainMap_OnRouteEnter);
                    MainMap.OnRouteLeave += new RouteLeave(MainMap_OnRouteLeave);

                    MainMap.Manager.OnTileCacheComplete += new TileCacheComplete(OnTileCacheComplete);
                    //   MainMap.Manager.OnTileCacheProgress += new TileCacheProgress(OnTileCacheProgress);
                }
                MainMap.MouseMove += new MouseEventHandler(MainMap_MouseMove);
                MainMap.MouseDown += new MouseEventHandler(MainMap_MouseDown);
                MainMap.MouseUp += new MouseEventHandler(MainMap_MouseUp);

                MainMap.DragButton = MouseButtons.Left;

                // add custom layers
                {
                    MainMap.Overlays.Add(routes);
                    MainMap.Overlays.Add(polygons);
                    MainMap.Overlays.Add(objects);
                    MainMap.Overlays.Add(top);
                }

                //Set Operational Region
                /*       PointLatLng? p2 = GMapProviders.GoogleMap.GetPoint(startingAddress[2]+", "+startingAddress[0], out status);
                       GMapMarkerCircle circle = new GMapMarkerCircle(p2.Value);
                       circle.Radius = 15000;
                       circle.Stroke=new Pen(Color.Red);
                       circle.Fill = Brushes.Transparent;//new Brush(Color.Red); //Color.Transparent;
                       top.Markers.Add(circle);
                      */
                // set current marker
                currentMarker = new GMarkerGoogle(MainMap.Position, GMarkerGoogleType.red_pushpin);
                currentMarker.IsHitTestVisible = false;
                top.Markers.Add(currentMarker);

            }
        }
Пример #9
0
        private void generate_btn_Click(object sender, EventArgs e)
        {
            MainMap.Visible = true;
            int order = 1;
            routes.Routes.Clear();
            objects.Markers.Clear();
            String[] startingAddress = new Franchisee().getAddress(userid);

            PointLatLng? pos;
            GeoCoderStatusCode status = GeoCoderStatusCode.Unknow;
            {
                pos = GMapProviders.GoogleMap.GetPoint(startingAddress[2] + ", " + startingAddress[0], out status);
                if (pos != null && status == GeoCoderStatusCode.G_GEO_SUCCESS)
                {
                    currentMarker.Position = pos.Value;
                }
            }
            AddLocation(order++, startingAddress[0]);
            List<PointLatLng> myWaypoints = new List<PointLatLng>();

            if (workOrderTable.SelectedRows.Count > 0)
            {
                String[] address = new String[workOrderTable.SelectedRows.Count];
                String[] location = new String[workOrderTable.SelectedRows.Count];
                String[] country = new String[workOrderTable.SelectedRows.Count];
                for (int i = 0; i < workOrderTable.SelectedRows.Count; i++)
                {

                    country[i] = workOrderTable.SelectedRows[i].Cells[6].Value.ToString();
                    address[i] = workOrderTable.SelectedRows[i].Cells[3].Value.ToString();
            //                    location[i] = workOrderTable.SelectedRows[i].Cells[6].Value.ToString() + ", " + workOrderTable.SelectedRows[i].Cells[4].Value.ToString();
                    location[i] = workOrderTable.SelectedRows[i].Cells[3].Value.ToString() + ", "
                        + workOrderTable.SelectedRows[i].Cells[4].Value.ToString() + ", "
                        + workOrderTable.SelectedRows[i].Cells[5].Value.ToString() + ", "
                        + workOrderTable.SelectedRows[i].Cells[6].Value.ToString() ;

                }

                for (int i = 0; i < workOrderTable.SelectedRows.Count; i++)
                {
                    //MessageBox.Show(location[i].ToString());
                    PointLatLng? pos1 = GMapProviders.GoogleMap.GetPoint(location[i].ToString(), out status);
                    if (pos1 != null && status == GeoCoderStatusCode.G_GEO_SUCCESS)
                    {
                        myWaypoints.Add(pos1.Value);
                        AddLocation(order++, location[i]);
                        currentMarker.Position = pos1.Value;
                    }
                    else
                    {
                        myWaypoints.Add(new PointLatLng(42.98252, -81.25397));
                        AddLocation(order++, location[i]);
                        if (currentMarker != null)
                            currentMarker.Position = new PointLatLng(42.98252, -81.25397);
                    }

                }

            }
            if (servicesTable.SelectedRows.Count > 0)
            {
                String[] address = new String[servicesTable.SelectedRows.Count];
                String[] location = new String[servicesTable.SelectedRows.Count];
                String[] country = new String[servicesTable.SelectedRows.Count];
                for (int i = 0; i < servicesTable.SelectedRows.Count; i++)
                {

                    country[i] = servicesTable.SelectedRows[i].Cells[8].Value.ToString();
                    address[i] = servicesTable.SelectedRows[i].Cells[5].Value.ToString();
                    location[i] = servicesTable.SelectedRows[i].Cells[8].Value.ToString() + ", " + servicesTable.SelectedRows[i].Cells[6].Value.ToString();

                }

                for (int i = 0; i < servicesTable.SelectedRows.Count; i++)
                {
                    PointLatLng? pos1 = GMapProviders.GoogleMap.GetPoint(country[i] + ", " + address[i], out status);
                    myWaypoints.Add(pos1.Value);
                    AddLocation(order++, address[i]);
                    currentMarker.Position = pos1.Value;
                }
            }
            GMapRoute rte = new GMapRoute("name");

            GDirections _dir;

            if (pos == null)
                pos = new PointLatLng();
            DirectionsStatusCode _code = GMapProviders.GoogleMap.GetDirections(out _dir, pos.Value, myWaypoints, false, false, false, true, true);
            if (_code == DirectionsStatusCode.OK)
            {
                foreach (GDirectionStep _step in _dir.Steps)
                {
                    rte.Points.AddRange(_step.Points);
                }
            }

            routes.Routes.Add(rte);
        }
Пример #10
0
        // update the view
        public void preview(object sender, EventArgs e)
        {
            QuoteForm quoteForm = (QuoteForm)((Button)sender).FindForm();
            try
            {
                //start creating the PDF

                //Create a Catalog Dictionary
                CatalogDict catalogDict = new CatalogDict();

                //Create a Page Tree Dictionary
                PageTreeDict pageTreeDict = new PageTreeDict();

                //Create a Font Dictionary - Only the standard fonts Time, Helvetica and courier etc can be created by this method.
                //See Adobe doco for more info on other fonts
                FontDict TimesRoman = new FontDict();
                FontDict TimesItalic = new FontDict();
                FontDict TimesBold = new FontDict();
                FontDict Courier = new FontDict();

                //Create the info Dictionary
                InfoDict infoDict = new InfoDict();
                //Create the font called Times Roman
                TimesRoman.CreateFontDict("T1", "Times-Roman");

                //Create the font called Times Italic
                TimesItalic.CreateFontDict("T2", "Times-Italic");

                //Create the font called Times Bold
                TimesBold.CreateFontDict("T3", "Times-Bold");

                //Create the font called Courier
                Courier.CreateFontDict("T4", "Courier");

                //Set the info Dictionary. xxx will be the invoice number
                infoDict.SetInfo("Quote xxx" /*+ quoteForm.getID()*/, "System Generated", "Fire-Alert");

                //Create a utility object
                Utility pdfUtility = new Utility();
                String FilePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory) + "\\Resources\\Quote.pdf";

                //Open a file specifying the file name as the output pdf file
                //String FilePath = @"C:\Users\Hassan\Desktop\Preview.pdf";

                FileStream file = new FileStream(FilePath, FileMode.Create);
                int size = 0;
                file.Write(pdfUtility.GetHeader("1.5", out size), 0, size);
                file.Close();

                //Finished the first step

                //Create a Page Dictionary , this represents a visible page
                PageDict page = new PageDict();
                ContentDict content = new ContentDict();

                //The page size object will hold all the page size information
                //also holds the dictionary objects for font, images etc.
                //A4 595,842
                //Letter 612,792
                PageSize pSize = new PageSize(612, 792); //A4 paper portrait in 1/72" measurements
                pSize.SetMargins(10, 10, 10, 10);

                //create the page main details
                page.CreatePage(pageTreeDict.objectNum, pSize);

                //add a page
                pageTreeDict.AddPage(page.objectNum);

                //add the fonts to this page
                page.AddResource(TimesRoman, content.objectNum);
                page.AddResource(TimesItalic, content.objectNum);
                page.AddResource(TimesBold, content.objectNum);
                page.AddResource(Courier, content.objectNum);

                //Create a Text And Table Object that presents the text elements in the page
                TextAndTables textAndtable = new TextAndTables(pSize);

                //create the reference to an image and the data that represents it
                String ImagePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory) + "\\Resources\\logo.jpg";   //file path to image source
                ImageDict I1 = new ImageDict();                     //new image dictionary object
                I1.CreateImageDict("I1", ImagePath);                //create the object which describes the image
                page.AddImageResource(I1.PDFImageName, I1, content.objectNum);  //create a reference where the PDF can identify which object
                //describes the image when we want to draw it on the page

                /*
                 * draw the image to page (add the instruction to the content stream which says draw the image called I1 starting
                 * at X = 269, Y = 20 and with an ACTUAL image size on the page of w = 144 and h = 100)
                 */
                PageImages pi = new PageImages();
                content.SetStream(pi.ShowImage("I1", 400, 680, 155, 85));   //tell the PDF we want to draw an image called 'I1', where and what size

                String[] sAd = new String[6];
                sAd = new ServiceAddress().get(quoteForm.getServiceAddressId()).Split(',');

                String[] client = new String[9];
                client = new Client().get(new ClientContract().getClient(quoteForm.getServiceAddressId())).Split(',');

                String[] franchisee = new String[6];
                franchisee = new Franchisee().get(new ClientContract().getFranchisee(quoteForm.getServiceAddressId())).Split(',');

                String[] user = new String[4];
                user = new Users().get(franchiseeUserId).Split(',');

                //Add text to the page
                textAndtable.AddText(50, 50, "Quote: " + ((type == 2) ? quoteForm.getId() : "To Be Created"), 10, "T3", Align.LeftAlign);
                textAndtable.AddText(50, 60, "Date Issued: "/* + quoteForm.getDateIssued()*/, 10, "T3", Align.LeftAlign);

                textAndtable.AddText(50, 100, "To: " + client[0], 10, "T3", Align.LeftAlign);
                textAndtable.AddText(50, 110, client[4], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(50, 120, client[6] + ", " + client[7] + ", " + client[8] + " " + client[2], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(50, 130, "Primary Contact: " + client[5], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(50, 140, "Ph: " + client[3], 10, "T1", Align.LeftAlign);

                textAndtable.AddText(300, 100, "Prepared By: ", 10, "T3", Align.LeftAlign);
                textAndtable.AddText(300, 110, franchisee[5], 10, "T3", Align.LeftAlign);
                textAndtable.AddText(300, 120, franchisee[0], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(300, 130, franchisee[2] + ", " + franchisee[3] + ", " + franchisee[4] + " " + franchisee[1], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(300, 140, "Contact: " + user[0] + " " + user[1], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(300, 150, "Ph: " + user[2], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(300, 160, "Email: " + user[3], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(300, 170, "Web: http://www.fire-alert.ca", 10, "T1", Align.LeftAlign);

                textAndtable.AddText(50, 160, "Service Location: ", 10, "T3", Align.LeftAlign);
                textAndtable.AddText(50, 170, sAd[0], 10, "T1", Align.LeftAlign);
                textAndtable.AddText(50, 180, sAd[3] + ", " + sAd[4] + ", " + sAd[5] + " " + sAd[1], 10, "T1", Align.LeftAlign);

                //Add table to the page
                Align[] alignC = new Align[4];
                alignC[0] = Align.CenterAlign;
                alignC[1] = Align.CenterAlign;
                alignC[2] = Align.CenterAlign;
                alignC[3] = Align.CenterAlign;

                Align[] alignR = new Align[4];
                alignR[0] = Align.LeftAlign;
                alignR[1] = Align.LeftAlign;
                alignR[2] = Align.LeftAlign;
                alignR[3] = Align.LeftAlign;

                //Specify the color for the cell and the line
                ColorSpec cellColor = new ColorSpec(196, 34, 34);
                ColorSpec lineColor = new ColorSpec(1, 1, 1);

                //Fill in the parameters for the table
                TableParams table = new TableParams(2, 235, 90, 75, 75);
                table.yPos = 550;
                table.xPos = 50;
                table.rowHeight = 15;

                //Set the parameters of this table
                textAndtable.SetParams(table, cellColor, Align.CenterAlign, 3);
                textAndtable.AddRow(false, 8, "T3", alignC, true, "Service Rep.", "Valid Until");
                //After drawing table and text add them to the page
                content.SetStream(textAndtable.EndTable(lineColor, true));

                TextAndTables textAndtable2 = new TextAndTables(pSize);
                //Specify the color for the cell and the line
                ColorSpec cell1 = new ColorSpec(255, 255, 255);
                ColorSpec line1 = new ColorSpec(1, 1, 1);
                TableParams table2 = new TableParams(2, 235, 90, 75, 75);
                table2.yPos = 535;
                table2.xPos = 50;
                table2.rowHeight = 15;
                textAndtable2.SetParams(table2, cell1, Align.CenterAlign, 3);
                textAndtable2.AddRow(false, 8, "T3", alignR, false, "", "");
                content.SetStream(textAndtable2.EndTable(line1, true));

                Align[] alignC2 = new Align[7];
                alignC2[0] = Align.CenterAlign;
                alignC2[1] = Align.CenterAlign;
                alignC2[2] = Align.CenterAlign;
                alignC2[3] = Align.CenterAlign;
                alignC2[4] = Align.CenterAlign;
                alignC2[5] = Align.CenterAlign;
                alignC2[6] = Align.CenterAlign;

                Align[] alignR2 = new Align[7];
                alignR2[0] = Align.LeftAlign;
                alignR2[1] = Align.LeftAlign;
                alignR2[2] = Align.LeftAlign;
                alignR2[3] = Align.LeftAlign;
                alignR2[4] = Align.RightAlign;
                alignR2[5] = Align.RightAlign;
                alignR2[6] = Align.RightAlign;

                TextAndTables textAndtable3 = new TextAndTables(pSize);
                //Specify the color for the cell and the line
                ColorSpec cell2 = new ColorSpec(196, 34, 34);
                ColorSpec line2 = new ColorSpec(1, 1, 1);
                TableParams table3 = new TableParams(7, 15, 100, 160, 40, 40, 60, 60);
                table3.yPos = 510;
                table3.xPos = 50;
                table3.rowHeight = 15;
                textAndtable3.SetParams(table3, cell2, Align.CenterAlign, 3);
                textAndtable3.AddRow(false, 8, "T3", alignC2, true, "#", "Charge", "Description", "Hours", "Qty", "Price", "Line Total");
                content.SetStream(textAndtable3.EndTable(line2, true));

                TextAndTables textAndtable4 = new TextAndTables(pSize);
                //Specify the color for the cell and the line
                ColorSpec cell3 = new ColorSpec(255, 255, 255);
                ColorSpec line3 = new ColorSpec(1, 1, 1);
                TableParams table4 = new TableParams(7, 15, 100, 160, 40, 40, 60, 60);
                table4.yPos = 495;
                table4.xPos = 50;
                table4.rowHeight = 15;
                textAndtable4.SetParams(table4, cell3, Align.CenterAlign, 3);
                DataGridView dgvSalesOrder = quoteForm.getQuoteItems();
                for (int i = 0; i < dgvSalesOrder.Rows.Count - 1; i++)
                {
                    textAndtable4.AddRow(false, 8, "T3", alignR2, false, dgvSalesOrder.Rows[i].Cells[0].Value.ToString(),
                        dgvSalesOrder.Rows[i].Cells[1].FormattedValue.ToString(), dgvSalesOrder.Rows[i].Cells[2].Value.ToString(),
                        (dgvSalesOrder.Rows[i].Cells[3].Value == null || dgvSalesOrder.Rows[i].Cells[3].Value.ToString() == "") ? "-" : dgvSalesOrder.Rows[i].Cells[3].Value.ToString(),
                        (dgvSalesOrder.Rows[i].Cells[4].Value == null || dgvSalesOrder.Rows[i].Cells[4].Value.ToString() == "") ? "-" : dgvSalesOrder.Rows[i].Cells[4].Value.ToString(),
                        dgvSalesOrder.Rows[i].Cells[5].Value.ToString(), dgvSalesOrder.Rows[i].Cells[6].Value.ToString());
                }
                content.SetStream(textAndtable4.EndTable(line3, true));

                textAndtable.AddText(400, 650, "Subtotal ", 10, "T1", Align.LeftAlign);
                textAndtable.AddText(400, 665, "HST ", 10, "T1", Align.LeftAlign);
                textAndtable.AddText(400, 680, "Total ", 10, "T1", Align.LeftAlign);

                TextAndTables textAndtable5 = new TextAndTables(pSize);
                Align[] align = new Align[1];
                align[0] = Align.RightAlign;
                //Specify the color for the cell and the line
                TableParams table5 = new TableParams(1, 60);
                table5.yPos = 152;
                table5.xPos = 100;
                table5.rowHeight = 15;
                textAndtable5.SetParams(table5, cell3, Align.RightAlign, 3);
                textAndtable5.AddRow(false, 10, "T3", align, false, quoteForm.getSubtotal());
                textAndtable5.AddRow(false, 10, "T3", align, false, quoteForm.getHST());
                content.SetStream(textAndtable5.EndTable(line3, true));

                TextAndTables textAndtable6 = new TextAndTables(pSize);
                //Specify the color for the cell and the line
                TableParams table6 = new TableParams(1, 60);
                table6.yPos = 122;
                table6.xPos = 100;
                table6.rowHeight = 15;
                textAndtable6.SetParams(table6, cell2, Align.RightAlign, 3);
                textAndtable6.AddRow(false, 10, "T3", align, true, "$" + quoteForm.getTotal());

                content.SetStream(textAndtable.EndText());

                //All done - send the information to the PDF file

                size = 0;
                file = new FileStream(FilePath, FileMode.Append);
                file.Write(page.GetPageDict(file.Length, out size), 0, size);
                file.Write(content.GetContentDict(file.Length, out size), 0, size);
                file.Close();

                file = new FileStream(FilePath, FileMode.Append);
                file.Write(catalogDict.GetCatalogDict(pageTreeDict.objectNum, file.Length, out size), 0, size);
                file.Write(pageTreeDict.GetPageTree(file.Length, out size), 0, size);
                file.Write(TimesRoman.GetFontDict(file.Length, out size), 0, size);
                file.Write(TimesItalic.GetFontDict(file.Length, out size), 0, size);
                file.Write(TimesBold.GetFontDict(file.Length, out size), 0, size);
                file.Write(Courier.GetFontDict(file.Length, out size), 0, size);

                //write image dict
                file.Write(I1.GetImageDict(file.Length, out size), 0, size);

                file.Write(infoDict.GetInfoDict(file.Length, out size), 0, size);
                file.Write(pdfUtility.CreateXrefTable(file.Length, out size), 0, size);
                file.Write(pdfUtility.GetTrailer(catalogDict.objectNum, infoDict.objectNum, out size), 0, size);
                file.Close();

                //Messages.Visible = true;
                Preview testDialog = new Preview(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory) + "\\Resources\\Quote.pdf");
                testDialog.ShowDialog(quoteForm);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Could not display the document because " + ex.ToString());
            }
        }
Пример #11
0
        private void generateStatement()
        {
            try
            {
                //start creating the PDF

                //Create a Catalog Dictionary
                CatalogDict catalogDict = new CatalogDict();

                //Create a Page Tree Dictionary
                PageTreeDict pageTreeDict = new PageTreeDict();

                //Create a Font Dictionary - Only the standard fonts Time, Helvetica and courier etc can be created by this method.
                //See Adobe doco for more info on other fonts
                FontDict TimesRoman = new FontDict();
                FontDict TimesItalic = new FontDict();
                FontDict TimesBold = new FontDict();
                FontDict Courier = new FontDict();

                //Create the info Dictionary
                InfoDict infoDict = new InfoDict();
                Invoice invoice = new Invoice();
                //Create the font called Times Roman
                TimesRoman.CreateFontDict("T1", "Times-Roman");

                //Create the font called Times Italic
                TimesItalic.CreateFontDict("T2", "Times-Italic");

                //Create the font called Times Bold
                TimesBold.CreateFontDict("T3", "Times-Bold");

                //Create the font called Courier
                Courier.CreateFontDict("T4", "Times-Roman");

                //Set the info Dictionary. xxx will be the invoice number
                infoDict.SetInfo("Statement of " + cbClients.Text, "System Generated", "Fire-Alert");

                //Create a utility object
                Utility pdfUtility = new Utility();
                String FilePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory) + "\\Resources\\Statement_"+cbClients.SelectedValue+".pdf";

                //Open a file specifying the file name as the output pdf file
                //String FilePath = @"C:\Users\Hassan\Desktop\Preview.pdf";

                FileStream file = new FileStream(FilePath, FileMode.Create);
                int size = 0;
                file.Write(pdfUtility.GetHeader("1.5", out size), 0, size);
                file.Close();

                //Finished the first step

                //Create a Page Dictionary , this represents a visible page
                PageDict page = new PageDict();
                ContentDict content = new ContentDict();

                //The page size object will hold all the page size information
                //also holds the dictionary objects for font, images etc.
                //A4 595,842
                //Letter 612,792
                PageSize pSize = new PageSize(612, 792); //A4 paper portrait in 1/72" measurements
                pSize.SetMargins(10, 10, 10, 10);

                //create the page main details
                page.CreatePage(pageTreeDict.objectNum, pSize);

                //add a page
                pageTreeDict.AddPage(page.objectNum);

                //add the fonts to this page
                page.AddResource(TimesRoman, content.objectNum);
                page.AddResource(TimesItalic, content.objectNum);
                page.AddResource(TimesBold, content.objectNum);
                page.AddResource(Courier, content.objectNum);

                //Create a Text And Table Object that presents the text elements in the page
                TextAndTables textAndtable = new TextAndTables(pSize);

                //create the reference to an image and the data that represents it
                String ImagePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory) + "\\Resources\\logo.jpg";   //file path to image source
                ImageDict I1 = new ImageDict();                     //new image dictionary object
                I1.CreateImageDict("I1", ImagePath);                //create the object which describes the image
                page.AddImageResource(I1.PDFImageName, I1, content.objectNum);  //create a reference where the PDF can identify which object
                //describes the image when we want to draw it on the page

                /*
                 * draw the image to page (add the instruction to the content stream which says draw the image called I1 starting
                 * at X = 269, Y = 20 and with an ACTUAL image size on the page of w = 144 and h = 100)
                 */
                PageImages pi = new PageImages();
                content.SetStream(pi.ShowImage("I1", 450, 690, 155, 85));   //tell the PDF we want to draw an image called 'I1', where and what size

                String clientInfo = new Client().get(cbClients.SelectedValue.ToString());
                String[] client = new String[9];
                client = clientInfo.Split(',');

                String franchiseeInfo = new Franchisee().get(new ClientContract().getFranchiseeOfClient(cbClients.SelectedValue.ToString()));
                String[] franchisee = new String[6];
                franchisee = franchiseeInfo.Split(',');

                if (franchisee.Length < 6)
                    franchisee = new String[6] { "", "", "", "", "", "" };

                String userInfo = new Users().get(userid.ToString());
                String[] user = new String[4];
                user = userInfo.Split(',');

                //Add text to the page
                textAndtable.AddText(260, 50, "STATEMENT", 20, "T3", Align.LeftAlign);
                textAndtable.AddText(50, 80, franchisee[5], 16, "T3", Align.LeftAlign);
                textAndtable.AddText(50, 90, franchisee[0], 10, "T3", Align.LeftAlign);
                textAndtable.AddText(50, 100, franchisee[2] + ", " + franchisee[3] + ", " + franchisee[4] + " " + franchisee[1], 10, "T3", Align.LeftAlign);
                textAndtable.AddText(50, 110, user[2], 10, "T3", Align.LeftAlign);
               // textAndtable.AddText(50, 60, "Total: " + txtTotal.Text, 10, "T3", Align.LeftAlign);

                textAndtable.AddText(50, 190, client[0], 10, "T3", Align.LeftAlign);
                textAndtable.AddText(50, 205, client[5], 10, "T4", Align.LeftAlign);
                textAndtable.AddText(50, 215, client[1], 10, "T4", Align.LeftAlign);
                textAndtable.AddText(50, 225, client[6] + ", " + client[7] + " " + client[2], 10, "T4", Align.LeftAlign);
                textAndtable.AddText(50, 235, client[8], 10, "T4", Align.LeftAlign);

                textAndtable.AddText(430, 150, "PLEASE RETURN THIS PORTION WITH", 8, "T4", Align.LeftAlign);
                textAndtable.AddText(430, 160, "YOUR PAYMENT", 8, "T4", Align.LeftAlign);
                textAndtable.AddText(400, 175, client[0], 10, "T3", Align.LeftAlign);
                textAndtable.AddText(430, 210, "IF PAYING BY INVOICE CHECK", 8, "T4", Align.LeftAlign);
                textAndtable.AddText(430, 220, "INDIVIDUAL INVOICES PAID", 8, "T4", Align.LeftAlign);
                textAndtable.AddText(435, 240, "AMOUNT REMITTED __________", 8, "T4", Align.LeftAlign);

                Align[] alignC = new Align[1];
                alignC[0] = Align.CenterAlign;

                //Specify the color for the cell and the line
                ColorSpec cellColor = new ColorSpec(255, 255, 255);
                ColorSpec lineColor = new ColorSpec(1, 1, 1);

                //Fill in the parameters for the table
                TableParams table = new TableParams(1, 100);
                table.yPos = 700;
                table.xPos = 50;
                table.rowHeight = 15;

                //Set the parameters of this table
                textAndtable.SetParams(table, cellColor, Align.RightAlign, 3);
                textAndtable.AddRow(false, 10, "T3", alignC, false, "Statement Date");
                textAndtable.AddRow(false, 10, "T4", alignC, false, DateTime.Today.ToShortDateString());

                //After drawing table and text add them to the page
                content.SetStream(textAndtable.EndTable(lineColor, true));

                table.yPos = 630;
                table.xPos = 0;
                //Set the parameters of this table
                textAndtable.SetParams(table, cellColor, Align.CenterAlign, 3);
                textAndtable.AddRow(false, 10, "T3", alignC, false, "Statement Date");
                textAndtable.AddRow(false, 10, "T4", alignC, false, DateTime.Today.ToShortDateString());

                //After drawing table and text add them to the page
                content.SetStream(textAndtable.EndTable(lineColor, true));

                textAndtable.AddText(50, 275, "Page:    1", 10, "T4", Align.LeftAlign);
                Align[] alignC1 = new Align[5];
                alignC1[0] = Align.CenterAlign;
                alignC1[1] = Align.CenterAlign;
                alignC1[2] = Align.CenterAlign;
                alignC1[3] = Align.CenterAlign;
                alignC1[4] = Align.CenterAlign;

                Align[] alignC2 = new Align[5];
                alignC2[0] = Align.LeftAlign;
                alignC2[1] = Align.LeftAlign;
                alignC2[2] = Align.RightAlign;
                alignC2[3] = Align.RightAlign;
                alignC2[4] = Align.CenterAlign;

                //Fill in the parameters for the table
                TableParams table2 = new TableParams(5, 150,90,90,90,40);
                table2.yPos = 510;
                table2.xPos = 37;
                table2.rowHeight = 15;

                //Set the parameters of this table
                textAndtable.SetParams(table2, cellColor, Align.LeftAlign, 3);
               // MessageBox.Show("\u221A");
                textAndtable.AddRow(false, 10, "T3", alignC1, false, "Statement Date", "Invoice No.", "Balance", "Total Due", "");
                String[] rows = new Invoice().getOutstandingInvoices(cbClients.SelectedValue.ToString());
                double total = 0;
                double interestTotal = 0;
                double interest = 0;
                double below30 = 0;
                double between3160 = 0;
                double over60 = 0;
                DateTime interestDate = DateTime.Today.Date.AddDays(-30);
                for (int i = 0; i < rows.Length; i++)
                {
                    String[] cells = new String[3];
                    cells = rows[i].Split(',');
                    total += Convert.ToDouble(cells[2]);
                    if (Convert.ToDateTime(cells[0]) < interestDate)
                        interestTotal += Convert.ToDouble(cells[2]);
                    if (Convert.ToDateTime(cells[0]) > interestDate)
                        below30 += Convert.ToDouble(cells[2]);
                    if (Convert.ToDateTime(cells[0]) < DateTime.Today.Date.AddDays(-30) && Convert.ToDateTime(cells[0]) >= DateTime.Today.Date.AddDays(-60))
                        between3160 += Convert.ToDouble(cells[2]);
                    if (Convert.ToDateTime(cells[0]) < DateTime.Today.Date.AddDays(-60))
                        over60 += Convert.ToDouble(cells[2]);
                    Console.WriteLine(cells[0] + " " + cells[1]);
                    textAndtable.AddRow(false, 10, "T4", alignC2, false, cells[0], cells[1], "$" + cells[2], "$" + total.ToString(), "");
                }
                interest = interestTotal * 0.02;
                total += interest;
                below30 += interest;
                textAndtable.AddRow(false, 10, "T4", alignC2, false, "2% interest on balance over 30 days", "", "$" + (interest).ToString(), "$" + total.ToString(), "");

                //After drawing table and text add them to the page
                content.SetStream(textAndtable.EndTable(lineColor, true));

                Align[] alignC3 = new Align[5];
                alignC3[0] = Align.LeftAlign;
                alignC3[1] = Align.RightAlign;
                alignC3[2] = Align.RightAlign;
                alignC3[3] = Align.RightAlign;
                alignC3[4] = Align.CenterAlign;

                //Fill in the parameters for the table  120,100,100,100,40 = 460
                TableParams table3 = new TableParams(5, 100, 90, 90, 90, 90);
                table3.yPos = 100;
                table3.xPos = 37;
                table3.rowHeight = 15;

                //Set the parameters of this table
                textAndtable.SetParams(table3, cellColor, Align.LeftAlign, 3);
                // MessageBox.Show("\u221A");
                textAndtable.AddRow(false, 10, "T3", alignC3, false, "Age", "Current ", "31-60 ", "Over 60 ", "Total");
                textAndtable.AddRow(false, 10, "T3", alignC3, false, "Amount", below30.ToString(), between3160.ToString(), over60.ToString(), total.ToString());
                content.SetStream(textAndtable.EndTable(lineColor, true));

                content.SetStream(textAndtable.EndText());

                //All done - send the information to the PDF file

                size = 0;
                file = new FileStream(FilePath, FileMode.Append);
                file.Write(page.GetPageDict(file.Length, out size), 0, size);
                file.Write(content.GetContentDict(file.Length, out size), 0, size);
                file.Close();

                file = new FileStream(FilePath, FileMode.Append);
                file.Write(catalogDict.GetCatalogDict(pageTreeDict.objectNum, file.Length, out size), 0, size);
                file.Write(pageTreeDict.GetPageTree(file.Length, out size), 0, size);
                file.Write(TimesRoman.GetFontDict(file.Length, out size), 0, size);
                file.Write(TimesItalic.GetFontDict(file.Length, out size), 0, size);
                file.Write(TimesBold.GetFontDict(file.Length, out size), 0, size);
                file.Write(Courier.GetFontDict(file.Length, out size), 0, size);

                //write image dict
               file.Write(I1.GetImageDict(file.Length, out size), 0, size);

                file.Write(infoDict.GetInfoDict(file.Length, out size), 0, size);
                file.Write(pdfUtility.CreateXrefTable(file.Length, out size), 0, size);
                file.Write(pdfUtility.GetTrailer(catalogDict.objectNum, infoDict.objectNum, out size), 0, size);
                file.Close();

            }
            catch (Exception ex)
            {
                MessageBox.Show("Could not display the document because " + ex.ToString());
            }
        }