Exemple #1
0
        private static void ReportBuilder(SqlDataReader drPay, int cropYear, int paymentNumber, string paymentDescription,
            string fromDate, string toDate, string statementDate, bool isCumulative, string logoUrl, System.IO.FileStream fs)
        {
            const string METHOD_NAME = "rptTransmittal.ReportBuilder: ";
            const int resetFlag = 0;

            Document document = null;
            PdfWriter writer = null;
            PdfPTable table = null;
            TransmittalReportEvent pgEvent = null;
            iTextSharp.text.Image imgLogo = null;

            int contractNumber = 0;
            int lastContractNumber = 0;
            int payeeNumber = 0;
            int lastPayeeNumber = 0;

            decimal ytdEHBonus = 0;
            decimal ytdEHAmount = 0;
            decimal ytdRHAmount = 0;
            decimal ytdDeductions = 0;
            decimal ytdEHAmountMoved = 0;
            decimal ytdRHAmountMoved = 0;
            decimal ytdNet = 0;
            decimal curSLM = 0;
            decimal pctPaid = 0;
            decimal actualSugar = 0;

            string rptTitle = "Western Sugar Cooperative Payment Transmittal";

            Font headerFont = FontFactory.GetFont("HELVETICA", 8F, Font.NORMAL);
            Font normalFont = FontFactory.GetFont("HELVETICA", 8F, Font.NORMAL);
            Font labelFont = FontFactory.GetFont("HELVETICA", 8F, Font.BOLD);

            try {

                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BeetConn"].ToString())) {

                    while (drPay.Read()) {

                        try {

                            contractNumber = Convert.ToInt32(drPay.GetString(drPay.GetOrdinal("Contract_Number")));
                            payeeNumber = drPay.GetInt16(drPay.GetOrdinal("Payee_Number"));

                            if (document == null) {

                                lastContractNumber = contractNumber;
                                lastPayeeNumber = payeeNumber;

                                // IF YOU CHANGE MARGINS, CHANGE YOUR TABLE LAYOUTS !!!
                                //  ***  US LETTER: 612 X 792  ***
                                //document = new Document(iTextSharp.text.PageSize.LETTER, 36, 36, 54, 72);
                                document = new Document(PortraitPageSize.PgPageSize, PortraitPageSize.PgLeftMargin,
                                    PortraitPageSize.PgRightMargin, PortraitPageSize.PgTopMargin, PortraitPageSize.PgBottomMargin);

                                // we create a writer that listens to the document
                                // and directs a PDF-stream to a file
                                writer = PdfWriter.GetInstance(document, fs);

                                imgLogo = PdfReports.GetImage(logoUrl, 127, 50, iTextSharp.text.Element.ALIGN_CENTER);

                                // Attach my override event handler(s)
                                pgEvent = new TransmittalReportEvent();
                                pgEvent.FillEvent(drPay, cropYear, statementDate, resetFlag, rptTitle, paymentDescription, imgLogo);
                                writer.PageEvent = pgEvent;

                                // Open the document
                                document.Open();

                            } else {

                                if (contractNumber != lastContractNumber || payeeNumber != lastPayeeNumber) {

                                    ytdEHBonus = 0;
                                    ytdEHAmount = 0;
                                    ytdRHAmount = 0;
                                    ytdDeductions = 0;
                                    ytdNet = 0;
                                    ytdEHAmountMoved = 0;
                                    ytdRHAmountMoved = 0;

                                    lastContractNumber = contractNumber;
                                    if (payeeNumber != lastPayeeNumber) {
                                        lastPayeeNumber = payeeNumber;
                                    }
                                    pgEvent.FillEvent(drPay, cropYear, statementDate, resetFlag, rptTitle, paymentDescription, imgLogo);
                                    document.NewPage();
                                }
                            }

                            // =======================================================
                            // Add Payment Detail
                            // =======================================================
                            table = PdfReports.CreateTable(_primaryTableLayout, 1);
                            PdfReports.AddText2Table(table, drPay.GetString(drPay.GetOrdinal("Payment_Description")) + " Payment", labelFont, 8);

                            // Header
                            PdfReports.AddText2Table(table, " ", labelFont);
                            PdfReports.AddText2Table(table, "SLM", labelFont, "center");
                            PdfReports.AddText2Table(table, "% Sugar", labelFont);
                            PdfReports.AddText2Table(table, "% Paid", labelFont);
                            PdfReports.AddText2Table(table, "Price/Ton", labelFont);
                            PdfReports.AddText2Table(table, "Tons", labelFont);
                            PdfReports.AddText2Table(table, "YTD Amount", labelFont);
                            PdfReports.AddText2Table(table, "Current Amount", labelFont);

                            // EH Premium
                            PdfReports.AddText2Table(table, "Early Harvest Premium", labelFont, "left");
                            PdfReports.AddText2Table(table, " ", labelFont);
                            PdfReports.AddText2Table(table, " ", labelFont);
                            PdfReports.AddText2Table(table, " ", labelFont);
                            PdfReports.AddText2Table(table, " ", labelFont);
                            PdfReports.AddText2Table(table, " ", labelFont);

                            if (isCumulative) {
                                ytdEHBonus += drPay.GetDecimal(drPay.GetOrdinal("EH_Bonus"));
                            } else {
                                ytdEHBonus = drPay.GetDecimal(drPay.GetOrdinal("ncYtdEhBonus"));
                            }

                            PdfReports.AddText2Table(table, ytdEHBonus.ToString("$#,##0.00"), normalFont);
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("EH_Bonus")).ToString("$#,##0.00"), normalFont);

                            // Early Harvest
                            actualSugar = drPay.GetDecimal(drPay.GetOrdinal("EH_Sugar"));
                            curSLM = drPay.GetDecimal(drPay.GetOrdinal("EH_SLM"));
                            pctPaid = drPay.GetDecimal(drPay.GetOrdinal("Pct_EH_Paid"));

                            PdfReports.AddText2Table(table, "Early Harvest   ", labelFont, "left");

                            if (drPay.GetDecimal(drPay.GetOrdinal("EH_SLM")) != 0) {
                                PdfReports.AddText2Table(table, curSLM.ToString("N4"), normalFont, "center");
                            } else {
                                PdfReports.AddText2Table(table, "------", normalFont, "center");
                            }

                            if (drPay.GetDecimal(drPay.GetOrdinal("EH_Sugar")) != 0) {
                                PdfReports.AddText2Table(table, actualSugar.ToString("N2"), normalFont);
                            } else {
                                PdfReports.AddText2Table(table, "------", normalFont);
                            }

                            if (drPay.GetDecimal(drPay.GetOrdinal("Pct_EH_Paid")) != 0) {
                                PdfReports.AddText2Table(table, pctPaid.ToString("N3"), normalFont);
                            } else {
                                PdfReports.AddText2Table(table, "------", normalFont);
                            }

                            if (drPay.GetDecimal(drPay.GetOrdinal("EH_Price")) != 0) {
                                PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("EH_Price")).ToString("$#,##0.000"), normalFont);
                            } else {
                                PdfReports.AddText2Table(table, "------", normalFont);
                            }

                            if (drPay.GetDecimal(drPay.GetOrdinal("EH_Tons")) != 0 || drPay.GetDecimal(drPay.GetOrdinal("EH_tons_moved")) != 0) {
                                PdfReports.AddText2Table(table, (drPay.GetDecimal(drPay.GetOrdinal("EH_Tons")) - drPay.GetDecimal(drPay.GetOrdinal("EH_tons_moved"))).ToString("N4"), normalFont);
                            } else {
                                PdfReports.AddText2Table(table, "------", normalFont);
                            }

                            if (isCumulative) {
                                ytdEHAmount += drPay.GetDecimal(drPay.GetOrdinal("EH_Gross_Pay")) - drPay.GetDecimal(drPay.GetOrdinal("EH_amt_moved"));
                            } else {
                                ytdEHAmount = drPay.GetDecimal(drPay.GetOrdinal("ncYtdEhGrossPay")) - drPay.GetDecimal(drPay.GetOrdinal("ncYtdEhAmtMoved"));
                            }
                            PdfReports.AddText2Table(table, ytdEHAmount.ToString("$#,##0.00"), normalFont);
                            PdfReports.AddText2Table(table, (drPay.GetDecimal(drPay.GetOrdinal("EH_Gross_Pay")) - drPay.GetDecimal(drPay.GetOrdinal("EH_amt_moved"))).ToString("$#,##0.00"), normalFont);

                            // Regular Harvest
                            actualSugar = drPay.GetDecimal(drPay.GetOrdinal("RH_Sugar"));
                            curSLM = drPay.GetDecimal(drPay.GetOrdinal("RH_SLM"));
                            pctPaid = drPay.GetDecimal(drPay.GetOrdinal("Pct_RH_Paid"));

                            PdfReports.AddText2Table(table, "Regular Harvest ", labelFont, "left");
                            PdfReports.AddText2Table(table, curSLM.ToString("N4"), normalFont, "center");
                            PdfReports.AddText2Table(table, actualSugar.ToString("N2"), normalFont);
                            PdfReports.AddText2Table(table, pctPaid.ToString("N3"), normalFont);
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("RH_Price")).ToString("$#,##0.000"), normalFont);
                            PdfReports.AddText2Table(table, (drPay.GetDecimal(drPay.GetOrdinal("RH_Tons"))
                                - drPay.GetDecimal(drPay.GetOrdinal("RH_Tons_moved"))).ToString("N4"), normalFont);
                            if (isCumulative) {
                                ytdRHAmount += drPay.GetDecimal(drPay.GetOrdinal("RH_Gross_Pay")) - drPay.GetDecimal(drPay.GetOrdinal("RH_amt_moved"));
                            } else {
                                ytdRHAmount = drPay.GetDecimal(drPay.GetOrdinal("ncYtdRhGrossPay")) - drPay.GetDecimal(drPay.GetOrdinal("ncYtdRhAmtMoved"));
                            }
                            // YTD Amount
                            PdfReports.AddText2Table(table, ytdRHAmount.ToString("$#,##0.00"), normalFont);
                            // Current Amount
                            PdfReports.AddText2Table(table, (drPay.GetDecimal(drPay.GetOrdinal("RH_Gross_Pay")) - drPay.GetDecimal(drPay.GetOrdinal("RH_amt_moved"))).ToString("$#,##0.00"), normalFont);

                            // Reduced Early Harvest
                            PdfReports.AddText2Table(table, "Reduced Early Harvest Excess Beets  ", labelFont, "left", 4);
                            PdfReports.AddText2Table(table, " ", normalFont);
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("EH_tons_moved")).ToString("#,#.0000;(#,#.0000)"), normalFont);

                            if (isCumulative) {
                                ytdEHAmountMoved += drPay.GetDecimal(drPay.GetOrdinal("EH_amt_moved"));
                            } else {
                                ytdEHAmountMoved = drPay.GetDecimal(drPay.GetOrdinal("ncYtdEhAmtMoved"));
                            }
                            PdfReports.AddText2Table(table, ytdEHAmountMoved.ToString("$#,#.00;$(#,#.00)"), normalFont);
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("EH_amt_moved")).ToString("$#,#.00;$(#,#.00)"), normalFont);

                            // Reduced Regular Harvest
                            PdfReports.AddText2Table(table, "Reduced Regular Harvest Excess Beets", labelFont, "left", 4);
                            PdfReports.AddText2Table(table, " ", normalFont);
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("RH_tons_moved")).ToString("#,#.0000;(#,#.0000)"), normalFont);
                            if (isCumulative) {
                                ytdRHAmountMoved += drPay.GetDecimal(drPay.GetOrdinal("RH_amt_moved"));
                            } else {
                                ytdRHAmountMoved = drPay.GetDecimal(drPay.GetOrdinal("ncYtdRhAmtMoved"));
                            }
                            PdfReports.AddText2Table(table, ytdRHAmountMoved.ToString("$#,#.00;$(#,#.00)"), normalFont);
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("RH_amt_moved")).ToString("$#,#.00;$(#,#.00)"), normalFont);

                            PdfReports.AddText2Table(table, " ", normalFont, 8);

                            // Total lines
                            //		YTD Amount
                            PdfReports.AddText2Table(table, " ", normalFont, 4);
                            PdfReports.AddText2Table(table, "Total Gross Amount: ", labelFont, "right", 2);
                            PdfReports.AddText2Table(table, ((ytdEHBonus + ytdEHAmount + ytdRHAmount)
                                + ytdEHAmountMoved
                                + ytdRHAmountMoved
                                //+ drPay.GetDecimal(drPay.GetOrdinal("ncYtdEhAmtMoved"))
                                //+ drPay.GetDecimal(drPay.GetOrdinal("ncYtdRhAmtMoved"))
                                ).ToString("#,##0.00"), normalFont);

                            //		Current Amount
                            PdfReports.AddText2Table(table, (drPay.GetDecimal(drPay.GetOrdinal("EH_Bonus")) +
                                drPay.GetDecimal(drPay.GetOrdinal("EH_Gross_Pay")) +
                                drPay.GetDecimal(drPay.GetOrdinal("RH_Gross_Pay")) //+
                                //drPay.GetDecimal(drPay.GetOrdinal("EH_amt_moved")) +
                                //drPay.GetDecimal(drPay.GetOrdinal("RH_amt_moved"))
                                ).ToString("#,##0.00"), normalFont);

                            PdfReports.AddText2Table(table, " ", normalFont, 5);
                            PdfReports.AddText2Table(table, "Deduction Total: ", labelFont, "right");

                            if (isCumulative) {
                                ytdDeductions += drPay.GetDecimal(drPay.GetOrdinal("Deduct_Total"));
                            } else {
                                ytdDeductions = drPay.GetDecimal(drPay.GetOrdinal("ncYtdDeductTotal"));
                            }
                            PdfReports.AddText2Table(table, ytdDeductions.ToString("#,##0.00"), normalFont);
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("Deduct_Total")).ToString("#,##0.00"), normalFont);

                            PdfReports.AddText2Table(table, " ", normalFont, 5);
                            PdfReports.AddText2Table(table, "Net Payment: ", labelFont, "right");

                            decimal currentNet = drPay.GetDecimal(drPay.GetOrdinal("EH_Bonus"))
                                + drPay.GetDecimal(drPay.GetOrdinal("EH_Gross_Pay"))
                                + drPay.GetDecimal(drPay.GetOrdinal("RH_Gross_Pay"))
                                //drPay.GetDecimal(drPay.GetOrdinal("EH_amt_moved"))
                                //drPay.GetDecimal(drPay.GetOrdinal("RH_amt_moved"))
                                - drPay.GetDecimal(drPay.GetOrdinal("Deduct_Total"));

                            if (isCumulative) {
                                ytdNet += currentNet;
                            } else {
                                ytdNet = drPay.GetDecimal(drPay.GetOrdinal("ncYtdEhBonus"))
                                + drPay.GetDecimal(drPay.GetOrdinal("ncYtdEhGrossPay"))
                                + drPay.GetDecimal(drPay.GetOrdinal("ncYtdRhGrossPay"))
                                //drPay.GetDecimal(drPay.GetOrdinal("ncYtdEhAmtMoved"))
                                //drPay.GetDecimal(drPay.GetOrdinal("ncYtdRhAmtMoved"))
                                - drPay.GetDecimal(drPay.GetOrdinal("ncYtdDeductTotal"));
                            }

                            PdfReports.AddText2Table(table, ytdNet.ToString("#,##0.00"), normalFont);
                            PdfReports.AddText2Table(table, currentNet.ToString("#,##0.00"), normalFont);

                            PdfReports.AddText2Table(table, " ", normalFont, 8);
                            PdfReports.AddText2Table(table, " ", normalFont, 6);
                            PdfReports.AddText2Table(table, "Grower Net: ", labelFont, "right");
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("Payment_Amount")).ToString("#,##0.00"), normalFont);

                            PdfReports.AddText2Table(table, " ", normalFont, 6);
                            PdfReports.AddText2Table(table, "Landowner Net: ", labelFont, "right");
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("Split_Payment")).ToString("#,##0.00"), normalFont);

                            PdfReports.AddText2Table(table, " ", normalFont, 8);

                            PdfReports.AddTableNoSplit(document, pgEvent, table);

                            if (paymentNumber == drPay.GetInt16(drPay.GetOrdinal("Payment_Number"))) {

                                //================================================================
                                // Add Deduction information
                                //================================================================
                                table = PdfReports.CreateTable(_primaryTableLayout, 1);

                                using (SqlDataReader drDed = WSCPayment.GetTransmittalDeduction(conn,
                                          cropYear, contractNumber,
                                          drPay.GetInt16(drPay.GetOrdinal("Payment_Number")), isCumulative)) {

                                    PdfReports.AddText2Table(table, "Deduction", labelFont, 5);
                                    PdfReports.AddText2Table(table, "Payment", labelFont);
                                    PdfReports.AddText2Table(table, "Amount", labelFont);
                                    PdfReports.AddText2Table(table, " ", labelFont);

                                    while (drDed.Read()) {

                                        PdfReports.AddText2Table(table, drDed.GetString(drDed.GetOrdinal("Deduction_Desc")), normalFont, 5);
                                        PdfReports.AddText2Table(table, drDed.GetString(drDed.GetOrdinal("Payment_Description")), normalFont);
                                        PdfReports.AddText2Table(table, drDed.GetDecimal(drDed.GetOrdinal("Amount")).ToString("$#,##0.00"), normalFont);
                                        PdfReports.AddText2Table(table, " ", labelFont);
                                    }
                                    PdfReports.AddText2Table(table, " ", normalFont, 8);

                                    PdfReports.AddTableNoSplit(document, pgEvent, table);
                                }

                                //================================================================
                                // Add Delivery information
                                //================================================================
                                float[] deliveryLayout = new float[] { 110.8F, 110.8F, 55.4F, 110.8F, 55.4F, 55.4F, 55.4F };
                                table = PdfReports.CreateTable(deliveryLayout, 1);

                                List<TransmittalDeliveryItem> deliveryList = WSCPayment.GetTransmittalDelivery(cropYear, contractNumber, paymentNumber, fromDate, toDate);

                                PdfReports.AddText2Table(table, "Delivery Date", labelFont);
                                PdfReports.AddText2Table(table, "First Net Pounds", labelFont);
                                PdfReports.AddText2Table(table, "Tare %", labelFont);
                                PdfReports.AddText2Table(table, "Final Net Lbs", labelFont);
                                PdfReports.AddText2Table(table, "Sugar %", labelFont);
                                PdfReports.AddText2Table(table, "SLM", labelFont);
                                PdfReports.AddText2Table(table, "Loads", labelFont);

                                foreach (TransmittalDeliveryItem deliveryDay in deliveryList) {

                                    PdfReports.AddText2Table(table, deliveryDay.Delivery_Date.ToShortDateString(), normalFont);
                                    PdfReports.AddText2Table(table, deliveryDay.First_Net_Pounds.ToString("###,###"), normalFont);
                                    PdfReports.AddText2Table(table, deliveryDay.Tare.ToString("N2"), normalFont);
                                    PdfReports.AddText2Table(table, deliveryDay.Final_Net_Pounds.ToString("###,###"), normalFont);
                                    PdfReports.AddText2Table(table, deliveryDay.Sugar_Content.ToString("N2"), normalFont);
                                    PdfReports.AddText2Table(table, deliveryDay.SLM_Pct.ToString("N4"), normalFont);
                                    PdfReports.AddText2Table(table, deliveryDay.Loads.ToString(), normalFont);
                                }
                                PdfReports.AddText2Table(table, " ", normalFont, 6);
                                PdfReports.AddTableNoSplit(document, pgEvent, table);
                            }
                        }
                        catch (System.Exception ex) {
                            WSCIEMP.Common.CException wscEx = new WSCIEMP.Common.CException(METHOD_NAME, ex);
                            throw (wscEx);
                        }
                    }
                }

                // ======================================================
                // Close document
                // ======================================================
                if (document != null) {

                    document.Close();
                    document = null;
                }
                if (writer == null) {
                    // Warn that we have no data.
                    WSCIEMP.Common.CWarning warn = new WSCIEMP.Common.CWarning("No records matched your report criteria.");
                    throw (warn);
                }
            }
            catch (Exception ex) {
                string errMsg = "document is null: " + (document == null).ToString() + "; " +
                    "writer is null: " + (writer == null).ToString();
                WSCIEMP.Common.CException wscex = new WSCIEMP.Common.CException(METHOD_NAME + errMsg, ex);
                throw (wscex);
            }
            finally {

                if (document != null) {
                    document.Close();
                }
                if (drPay != null) {
                    if (!drPay.IsClosed) {
                        drPay.Close();
                    }
                }
                if (writer != null) {
                    writer.Close();
                }
            }
        }
Exemple #2
0
        private static void ReportBuilder(SqlDataReader drPay, int cropYear, int paymentNumber, string paymentDescription,
                                          string fromDate, string toDate, string statementDate, bool isCumulative, string logoUrl, System.IO.FileStream fs)
        {
            const string METHOD_NAME = "rptTransmittal.ReportBuilder: ";
            const int    resetFlag   = 0;

            Document  document             = null;
            PdfWriter writer               = null;
            PdfPTable table                = null;
            TransmittalReportEvent pgEvent = null;

            iTextSharp.text.Image imgLogo = null;

            int contractNumber     = 0;
            int lastContractNumber = 0;
            int payeeNumber        = 0;
            int lastPayeeNumber    = 0;

            decimal ytdEHBonus       = 0;
            decimal ytdEHAmount      = 0;
            decimal ytdRHAmount      = 0;
            decimal ytdDeductions    = 0;
            decimal ytdEHAmountMoved = 0;
            decimal ytdRHAmountMoved = 0;
            decimal ytdNet           = 0;
            decimal curSLM           = 0;
            decimal pctPaid          = 0;
            decimal actualSugar      = 0;

            string rptTitle = "Western Sugar Cooperative Payment Transmittal";

            Font headerFont = FontFactory.GetFont("HELVETICA", 8F, Font.NORMAL);
            Font normalFont = FontFactory.GetFont("HELVETICA", 8F, Font.NORMAL);
            Font labelFont  = FontFactory.GetFont("HELVETICA", 8F, Font.BOLD);

            try {
                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BeetConn"].ToString())) {
                    while (drPay.Read())
                    {
                        try {
                            contractNumber = Convert.ToInt32(drPay.GetString(drPay.GetOrdinal("Contract_Number")));
                            payeeNumber    = drPay.GetInt16(drPay.GetOrdinal("Payee_Number"));

                            if (document == null)
                            {
                                lastContractNumber = contractNumber;
                                lastPayeeNumber    = payeeNumber;

                                // IF YOU CHANGE MARGINS, CHANGE YOUR TABLE LAYOUTS !!!
                                //  ***  US LETTER: 612 X 792  ***
                                //document = new Document(iTextSharp.text.PageSize.LETTER, 36, 36, 54, 72);
                                document = new Document(PortraitPageSize.PgPageSize, PortraitPageSize.PgLeftMargin,
                                                        PortraitPageSize.PgRightMargin, PortraitPageSize.PgTopMargin, PortraitPageSize.PgBottomMargin);

                                // we create a writer that listens to the document
                                // and directs a PDF-stream to a file
                                writer = PdfWriter.GetInstance(document, fs);

                                imgLogo = PdfReports.GetImage(logoUrl, 127, 50, iTextSharp.text.Element.ALIGN_CENTER);

                                // Attach my override event handler(s)
                                pgEvent = new TransmittalReportEvent();
                                pgEvent.FillEvent(drPay, cropYear, statementDate, resetFlag, rptTitle, paymentDescription, imgLogo);
                                writer.PageEvent = pgEvent;

                                // Open the document
                                document.Open();
                            }
                            else
                            {
                                if (contractNumber != lastContractNumber || payeeNumber != lastPayeeNumber)
                                {
                                    ytdEHBonus       = 0;
                                    ytdEHAmount      = 0;
                                    ytdRHAmount      = 0;
                                    ytdDeductions    = 0;
                                    ytdNet           = 0;
                                    ytdEHAmountMoved = 0;
                                    ytdRHAmountMoved = 0;

                                    lastContractNumber = contractNumber;
                                    if (payeeNumber != lastPayeeNumber)
                                    {
                                        lastPayeeNumber = payeeNumber;
                                    }
                                    pgEvent.FillEvent(drPay, cropYear, statementDate, resetFlag, rptTitle, paymentDescription, imgLogo);
                                    document.NewPage();
                                }
                            }

                            // =======================================================
                            // Add Payment Detail
                            // =======================================================
                            table = PdfReports.CreateTable(_primaryTableLayout, 1);
                            PdfReports.AddText2Table(table, drPay.GetString(drPay.GetOrdinal("Payment_Description")) + " Payment", labelFont, 8);

                            // Header
                            PdfReports.AddText2Table(table, " ", labelFont);
                            PdfReports.AddText2Table(table, "SLM", labelFont, "center");
                            PdfReports.AddText2Table(table, "% Sugar", labelFont);
                            PdfReports.AddText2Table(table, "% Paid", labelFont);
                            PdfReports.AddText2Table(table, "Price/Ton", labelFont);
                            PdfReports.AddText2Table(table, "Tons", labelFont);
                            PdfReports.AddText2Table(table, "YTD Amount", labelFont);
                            PdfReports.AddText2Table(table, "Current Amount", labelFont);

                            // EH Premium
                            PdfReports.AddText2Table(table, "Early Harvest Premium", labelFont, "left");
                            PdfReports.AddText2Table(table, " ", labelFont);
                            PdfReports.AddText2Table(table, " ", labelFont);
                            PdfReports.AddText2Table(table, " ", labelFont);
                            PdfReports.AddText2Table(table, " ", labelFont);
                            PdfReports.AddText2Table(table, " ", labelFont);

                            if (isCumulative)
                            {
                                ytdEHBonus += drPay.GetDecimal(drPay.GetOrdinal("EH_Bonus"));
                            }
                            else
                            {
                                ytdEHBonus = drPay.GetDecimal(drPay.GetOrdinal("ncYtdEhBonus"));
                            }

                            PdfReports.AddText2Table(table, ytdEHBonus.ToString("$#,##0.00"), normalFont);
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("EH_Bonus")).ToString("$#,##0.00"), normalFont);

                            // Early Harvest
                            actualSugar = drPay.GetDecimal(drPay.GetOrdinal("EH_Sugar"));
                            curSLM      = drPay.GetDecimal(drPay.GetOrdinal("EH_SLM"));
                            pctPaid     = drPay.GetDecimal(drPay.GetOrdinal("Pct_EH_Paid"));

                            PdfReports.AddText2Table(table, "Early Harvest   ", labelFont, "left");

                            if (drPay.GetDecimal(drPay.GetOrdinal("EH_SLM")) != 0)
                            {
                                PdfReports.AddText2Table(table, curSLM.ToString("N4"), normalFont, "center");
                            }
                            else
                            {
                                PdfReports.AddText2Table(table, "------", normalFont, "center");
                            }

                            if (drPay.GetDecimal(drPay.GetOrdinal("EH_Sugar")) != 0)
                            {
                                PdfReports.AddText2Table(table, actualSugar.ToString("N2"), normalFont);
                            }
                            else
                            {
                                PdfReports.AddText2Table(table, "------", normalFont);
                            }

                            if (drPay.GetDecimal(drPay.GetOrdinal("Pct_EH_Paid")) != 0)
                            {
                                PdfReports.AddText2Table(table, pctPaid.ToString("N3"), normalFont);
                            }
                            else
                            {
                                PdfReports.AddText2Table(table, "------", normalFont);
                            }

                            if (drPay.GetDecimal(drPay.GetOrdinal("EH_Price")) != 0)
                            {
                                PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("EH_Price")).ToString("$#,##0.000"), normalFont);
                            }
                            else
                            {
                                PdfReports.AddText2Table(table, "------", normalFont);
                            }

                            if (drPay.GetDecimal(drPay.GetOrdinal("EH_Tons")) != 0 || drPay.GetDecimal(drPay.GetOrdinal("EH_tons_moved")) != 0)
                            {
                                PdfReports.AddText2Table(table, (drPay.GetDecimal(drPay.GetOrdinal("EH_Tons")) - drPay.GetDecimal(drPay.GetOrdinal("EH_tons_moved"))).ToString("N4"), normalFont);
                            }
                            else
                            {
                                PdfReports.AddText2Table(table, "------", normalFont);
                            }

                            if (isCumulative)
                            {
                                ytdEHAmount += drPay.GetDecimal(drPay.GetOrdinal("EH_Gross_Pay")) - drPay.GetDecimal(drPay.GetOrdinal("EH_amt_moved"));
                            }
                            else
                            {
                                ytdEHAmount = drPay.GetDecimal(drPay.GetOrdinal("ncYtdEhGrossPay")) - drPay.GetDecimal(drPay.GetOrdinal("ncYtdEhAmtMoved"));
                            }
                            PdfReports.AddText2Table(table, ytdEHAmount.ToString("$#,##0.00"), normalFont);
                            PdfReports.AddText2Table(table, (drPay.GetDecimal(drPay.GetOrdinal("EH_Gross_Pay")) - drPay.GetDecimal(drPay.GetOrdinal("EH_amt_moved"))).ToString("$#,##0.00"), normalFont);

                            // Regular Harvest
                            actualSugar = drPay.GetDecimal(drPay.GetOrdinal("RH_Sugar"));
                            curSLM      = drPay.GetDecimal(drPay.GetOrdinal("RH_SLM"));
                            pctPaid     = drPay.GetDecimal(drPay.GetOrdinal("Pct_RH_Paid"));

                            PdfReports.AddText2Table(table, "Regular Harvest ", labelFont, "left");
                            PdfReports.AddText2Table(table, curSLM.ToString("N4"), normalFont, "center");
                            PdfReports.AddText2Table(table, actualSugar.ToString("N2"), normalFont);
                            PdfReports.AddText2Table(table, pctPaid.ToString("N3"), normalFont);
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("RH_Price")).ToString("$#,##0.000"), normalFont);
                            PdfReports.AddText2Table(table, (drPay.GetDecimal(drPay.GetOrdinal("RH_Tons"))
                                                             - drPay.GetDecimal(drPay.GetOrdinal("RH_Tons_moved"))).ToString("N4"), normalFont);
                            if (isCumulative)
                            {
                                ytdRHAmount += drPay.GetDecimal(drPay.GetOrdinal("RH_Gross_Pay")) - drPay.GetDecimal(drPay.GetOrdinal("RH_amt_moved"));
                            }
                            else
                            {
                                ytdRHAmount = drPay.GetDecimal(drPay.GetOrdinal("ncYtdRhGrossPay")) - drPay.GetDecimal(drPay.GetOrdinal("ncYtdRhAmtMoved"));
                            }
                            // YTD Amount
                            PdfReports.AddText2Table(table, ytdRHAmount.ToString("$#,##0.00"), normalFont);
                            // Current Amount
                            PdfReports.AddText2Table(table, (drPay.GetDecimal(drPay.GetOrdinal("RH_Gross_Pay")) - drPay.GetDecimal(drPay.GetOrdinal("RH_amt_moved"))).ToString("$#,##0.00"), normalFont);

                            // Reduced Early Harvest
                            PdfReports.AddText2Table(table, "Reduced Early Harvest Excess Beets  ", labelFont, "left", 4);
                            PdfReports.AddText2Table(table, " ", normalFont);
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("EH_tons_moved")).ToString("#,#.0000;(#,#.0000)"), normalFont);

                            if (isCumulative)
                            {
                                ytdEHAmountMoved += drPay.GetDecimal(drPay.GetOrdinal("EH_amt_moved"));
                            }
                            else
                            {
                                ytdEHAmountMoved = drPay.GetDecimal(drPay.GetOrdinal("ncYtdEhAmtMoved"));
                            }
                            PdfReports.AddText2Table(table, ytdEHAmountMoved.ToString("$#,#.00;$(#,#.00)"), normalFont);
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("EH_amt_moved")).ToString("$#,#.00;$(#,#.00)"), normalFont);

                            // Reduced Regular Harvest
                            PdfReports.AddText2Table(table, "Reduced Regular Harvest Excess Beets", labelFont, "left", 4);
                            PdfReports.AddText2Table(table, " ", normalFont);
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("RH_tons_moved")).ToString("#,#.0000;(#,#.0000)"), normalFont);
                            if (isCumulative)
                            {
                                ytdRHAmountMoved += drPay.GetDecimal(drPay.GetOrdinal("RH_amt_moved"));
                            }
                            else
                            {
                                ytdRHAmountMoved = drPay.GetDecimal(drPay.GetOrdinal("ncYtdRhAmtMoved"));
                            }
                            PdfReports.AddText2Table(table, ytdRHAmountMoved.ToString("$#,#.00;$(#,#.00)"), normalFont);
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("RH_amt_moved")).ToString("$#,#.00;$(#,#.00)"), normalFont);

                            PdfReports.AddText2Table(table, " ", normalFont, 8);

                            // Total lines
                            //		YTD Amount
                            PdfReports.AddText2Table(table, " ", normalFont, 4);
                            PdfReports.AddText2Table(table, "Total Gross Amount: ", labelFont, "right", 2);
                            PdfReports.AddText2Table(table, ((ytdEHBonus + ytdEHAmount + ytdRHAmount)
                                                             + ytdEHAmountMoved
                                                             + ytdRHAmountMoved
                                                             //+ drPay.GetDecimal(drPay.GetOrdinal("ncYtdEhAmtMoved"))
                                                             //+ drPay.GetDecimal(drPay.GetOrdinal("ncYtdRhAmtMoved"))
                                                             ).ToString("#,##0.00"), normalFont);

                            //		Current Amount
                            PdfReports.AddText2Table(table, (drPay.GetDecimal(drPay.GetOrdinal("EH_Bonus")) +
                                                             drPay.GetDecimal(drPay.GetOrdinal("EH_Gross_Pay")) +
                                                             drPay.GetDecimal(drPay.GetOrdinal("RH_Gross_Pay")) //+
                                                                                                                //drPay.GetDecimal(drPay.GetOrdinal("EH_amt_moved")) +
                                                                                                                //drPay.GetDecimal(drPay.GetOrdinal("RH_amt_moved"))
                                                             ).ToString("#,##0.00"), normalFont);

                            PdfReports.AddText2Table(table, " ", normalFont, 5);
                            PdfReports.AddText2Table(table, "Deduction Total: ", labelFont, "right");

                            if (isCumulative)
                            {
                                ytdDeductions += drPay.GetDecimal(drPay.GetOrdinal("Deduct_Total"));
                            }
                            else
                            {
                                ytdDeductions = drPay.GetDecimal(drPay.GetOrdinal("ncYtdDeductTotal"));
                            }
                            PdfReports.AddText2Table(table, ytdDeductions.ToString("#,##0.00"), normalFont);
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("Deduct_Total")).ToString("#,##0.00"), normalFont);

                            PdfReports.AddText2Table(table, " ", normalFont, 5);
                            PdfReports.AddText2Table(table, "Net Payment: ", labelFont, "right");

                            decimal currentNet = drPay.GetDecimal(drPay.GetOrdinal("EH_Bonus"))
                                                 + drPay.GetDecimal(drPay.GetOrdinal("EH_Gross_Pay"))
                                                 + drPay.GetDecimal(drPay.GetOrdinal("RH_Gross_Pay"))
                                                 //drPay.GetDecimal(drPay.GetOrdinal("EH_amt_moved"))
                                                 //drPay.GetDecimal(drPay.GetOrdinal("RH_amt_moved"))
                                                 - drPay.GetDecimal(drPay.GetOrdinal("Deduct_Total"));

                            if (isCumulative)
                            {
                                ytdNet += currentNet;
                            }
                            else
                            {
                                ytdNet = drPay.GetDecimal(drPay.GetOrdinal("ncYtdEhBonus"))
                                         + drPay.GetDecimal(drPay.GetOrdinal("ncYtdEhGrossPay"))
                                         + drPay.GetDecimal(drPay.GetOrdinal("ncYtdRhGrossPay"))
                                         //drPay.GetDecimal(drPay.GetOrdinal("ncYtdEhAmtMoved"))
                                         //drPay.GetDecimal(drPay.GetOrdinal("ncYtdRhAmtMoved"))
                                         - drPay.GetDecimal(drPay.GetOrdinal("ncYtdDeductTotal"));
                            }

                            PdfReports.AddText2Table(table, ytdNet.ToString("#,##0.00"), normalFont);
                            PdfReports.AddText2Table(table, currentNet.ToString("#,##0.00"), normalFont);

                            PdfReports.AddText2Table(table, " ", normalFont, 8);
                            PdfReports.AddText2Table(table, " ", normalFont, 6);
                            PdfReports.AddText2Table(table, "Grower Net: ", labelFont, "right");
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("Payment_Amount")).ToString("#,##0.00"), normalFont);

                            PdfReports.AddText2Table(table, " ", normalFont, 6);
                            PdfReports.AddText2Table(table, "Landowner Net: ", labelFont, "right");
                            PdfReports.AddText2Table(table, drPay.GetDecimal(drPay.GetOrdinal("Split_Payment")).ToString("#,##0.00"), normalFont);

                            PdfReports.AddText2Table(table, " ", normalFont, 8);

                            PdfReports.AddTableNoSplit(document, pgEvent, table);

                            if (paymentNumber == drPay.GetInt16(drPay.GetOrdinal("Payment_Number")))
                            {
                                //================================================================
                                // Add Deduction information
                                //================================================================
                                table = PdfReports.CreateTable(_primaryTableLayout, 1);

                                using (SqlDataReader drDed = WSCPayment.GetTransmittalDeduction(conn,
                                                                                                cropYear, contractNumber,
                                                                                                drPay.GetInt16(drPay.GetOrdinal("Payment_Number")), isCumulative)) {
                                    PdfReports.AddText2Table(table, "Deduction", labelFont, 5);
                                    PdfReports.AddText2Table(table, "Payment", labelFont);
                                    PdfReports.AddText2Table(table, "Amount", labelFont);
                                    PdfReports.AddText2Table(table, " ", labelFont);

                                    while (drDed.Read())
                                    {
                                        PdfReports.AddText2Table(table, drDed.GetString(drDed.GetOrdinal("Deduction_Desc")), normalFont, 5);
                                        PdfReports.AddText2Table(table, drDed.GetString(drDed.GetOrdinal("Payment_Description")), normalFont);
                                        PdfReports.AddText2Table(table, drDed.GetDecimal(drDed.GetOrdinal("Amount")).ToString("$#,##0.00"), normalFont);
                                        PdfReports.AddText2Table(table, " ", labelFont);
                                    }
                                    PdfReports.AddText2Table(table, " ", normalFont, 8);

                                    PdfReports.AddTableNoSplit(document, pgEvent, table);
                                }

                                //================================================================
                                // Add Delivery information
                                //================================================================
                                float[] deliveryLayout = new float[] { 110.8F, 110.8F, 55.4F, 110.8F, 55.4F, 55.4F, 55.4F };
                                table = PdfReports.CreateTable(deliveryLayout, 1);

                                List <TransmittalDeliveryItem> deliveryList = WSCPayment.GetTransmittalDelivery(cropYear, contractNumber, paymentNumber, fromDate, toDate);

                                PdfReports.AddText2Table(table, "Delivery Date", labelFont);
                                PdfReports.AddText2Table(table, "First Net Pounds", labelFont);
                                PdfReports.AddText2Table(table, "Tare %", labelFont);
                                PdfReports.AddText2Table(table, "Final Net Lbs", labelFont);
                                PdfReports.AddText2Table(table, "Sugar %", labelFont);
                                PdfReports.AddText2Table(table, "SLM", labelFont);
                                PdfReports.AddText2Table(table, "Loads", labelFont);

                                foreach (TransmittalDeliveryItem deliveryDay in deliveryList)
                                {
                                    PdfReports.AddText2Table(table, deliveryDay.Delivery_Date.ToShortDateString(), normalFont);
                                    PdfReports.AddText2Table(table, deliveryDay.First_Net_Pounds.ToString("###,###"), normalFont);
                                    PdfReports.AddText2Table(table, deliveryDay.Tare.ToString("N2"), normalFont);
                                    PdfReports.AddText2Table(table, deliveryDay.Final_Net_Pounds.ToString("###,###"), normalFont);
                                    PdfReports.AddText2Table(table, deliveryDay.Sugar_Content.ToString("N2"), normalFont);
                                    PdfReports.AddText2Table(table, deliveryDay.SLM_Pct.ToString("N4"), normalFont);
                                    PdfReports.AddText2Table(table, deliveryDay.Loads.ToString(), normalFont);
                                }
                                PdfReports.AddText2Table(table, " ", normalFont, 6);
                                PdfReports.AddTableNoSplit(document, pgEvent, table);
                            }
                        }
                        catch (System.Exception ex) {
                            WSCIEMP.Common.CException wscEx = new WSCIEMP.Common.CException(METHOD_NAME, ex);
                            throw (wscEx);
                        }
                    }
                }

                // ======================================================
                // Close document
                // ======================================================
                if (document != null)
                {
                    document.Close();
                    document = null;
                }
                if (writer == null)
                {
                    // Warn that we have no data.
                    WSCIEMP.Common.CWarning warn = new WSCIEMP.Common.CWarning("No records matched your report criteria.");
                    throw (warn);
                }
            }
            catch (Exception ex) {
                string errMsg = "document is null: " + (document == null).ToString() + "; " +
                                "writer is null: " + (writer == null).ToString();
                WSCIEMP.Common.CException wscex = new WSCIEMP.Common.CException(METHOD_NAME + errMsg, ex);
                throw (wscex);
            }
            finally {
                if (document != null)
                {
                    document.Close();
                }
                if (drPay != null)
                {
                    if (!drPay.IsClosed)
                    {
                        drPay.Close();
                    }
                }
                if (writer != null)
                {
                    writer.Close();
                }
            }
        }