コード例 #1
0
ファイル: rptTransmittal.cs プロジェクト: jwebb-vtg/WSCIEMP
        public static string ReportPackager(
            int cropYear, int paymentNumber, string paymentDescription,
            string fromDate, string toDate, string statementDate,
            string factoryList, string stationList, string contractList,
            bool isCumulative, string fileName, string logoUrl, string pdfTempfolder)
        {
            const string  METHOD_NAME = "rptTransmittal.ReportPackager: ";
            DirectoryInfo pdfDir      = null;

            FileInfo[] pdfFiles = null;
            string     filePath = "";

            try {
                pdfDir = new DirectoryInfo(pdfTempfolder);

                // Build the output file name by getting a list of all PDF files
                // that begin with this session ID: use this as a name incrementer.
                pdfFiles  = pdfDir.GetFiles(fileName + "*.pdf");
                fileName += "_" + Convert.ToString(pdfFiles.Length + 1) + ".pdf";

                filePath = pdfDir.FullName + @"\" + fileName;

                try {
                    using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BeetConn"].ToString())) {
                        using (SqlDataReader dr = WSCPayment.GetTransmittalPayment(conn,
                                                                                   cropYear, paymentNumber, factoryList, stationList, contractList, isCumulative)) {
                            using (System.IO.FileStream fs = new FileStream(filePath, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.Read)) {
                                ReportBuilder(dr, cropYear, paymentNumber, paymentDescription, fromDate, toDate, statementDate, isCumulative, logoUrl, fs);
                            }
                        }
                    }
                }
                catch (System.Exception ex) {
                    string errMsg = "cropYear: " + cropYear.ToString();

                    WSCIEMP.Common.CException wscEx = new WSCIEMP.Common.CException(METHOD_NAME + errMsg, ex);
                    throw (wscEx);
                }

                return(filePath);
            }
            catch (System.Exception ex) {
                string errMsg = "cropYear: " + cropYear.ToString() + "; " +
                                "Payment Number: " + paymentNumber.ToString();

                WSCIEMP.Common.CException wscEx = new WSCIEMP.Common.CException(METHOD_NAME + errMsg, ex);
                throw (wscEx);
            }
        }
コード例 #2
0
        public static void ReportBuilder(int cropYear, string factoryList, string stationList, string contractList, int paymentNumber,
                                         string paymentDescription, string fromDate, string toDate, string statementDate, bool isCumulative, string logoUrl, System.IO.FileStream fs)
        {
            const string METHOD_NAME = "rptGroTransmittal.ReportBuilder: ";
            const int    resetFlag   = 0;

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

            iTextSharp.text.Image imgLogo = null;
            GroTransmittalEvent   pgEvent = 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";

            try {
                List <TransmittalPaymentItem> stateList = WSCPayment.GetTransmittalPayment(cropYear, paymentNumber,
                                                                                           factoryList, stationList, contractList, isCumulative);

                int minContractNumber = stateList.Min(c => Convert.ToInt32(c.Contract_Number));
                int maxContractNumber = stateList.Max(c => Convert.ToInt32(c.Contract_Number));

                List <TransDeductionListItem> deductionList = WSCPayment.GetTransmittalDeduction2(ConfigurationManager.ConnectionStrings["BeetConn"].ToString(),
                                                                                                  cropYear, 0, paymentNumber, minContractNumber, maxContractNumber, isCumulative);

                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BeetConn"].ToString())) {
                    foreach (TransmittalPaymentItem item in stateList)
                    {
                        try {
                            contractNumber = Convert.ToInt32(item.Contract_Number);
                            payeeNumber    = item.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);

                                if (statementDate == null)
                                {
                                    statementDate = WSCPayment.GetPaymentTransmittalDate(paymentNumber, cropYear);
                                }

                                // Attach my override event handler(s)
                                pgEvent = new GroTransmittalEvent();
                                pgEvent.FillEvent(item, 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(item, cropYear, statementDate, resetFlag, rptTitle, paymentDescription, imgLogo);
                                    document.NewPage();
                                }
                            }

                            // =======================================================
                            // Add Payment Detail
                            // =======================================================
                            table = PdfReports.CreateTable(_primaryTableLayout, 1);
                            PdfReports.AddText2Table(table, item.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 += item.EH_Bonus;
                            }
                            else
                            {
                                ytdEHBonus = item.YtdEhBonus;
                            }

                            PdfReports.AddText2Table(table, ytdEHBonus.ToString("$#,##0.00"), _normalFont);
                            PdfReports.AddText2Table(table, item.EH_Bonus.ToString("$#,##0.00"), _normalFont);

                            // Early Harvest
                            actualSugar = item.EH_Sugar;
                            curSLM      = item.EH_SLM;
                            pctPaid     = item.Pct_EH_Paid;
                            PdfReports.AddText2Table(table, "Early Harvest", _labelFont, "left");

                            if (item.EH_SLM != 0)
                            {
                                PdfReports.AddText2Table(table, curSLM.ToString("N4"), _normalFont, "center");
                            }
                            else
                            {
                                PdfReports.AddText2Table(table, "------", _normalFont, "center");
                            }

                            if (item.EH_Sugar != 0)
                            {
                                PdfReports.AddText2Table(table, actualSugar.ToString("N2"), _normalFont);
                            }
                            else
                            {
                                PdfReports.AddText2Table(table, "------", _normalFont);
                            }

                            if (item.EH_Sugar != 0)
                            {
                                PdfReports.AddText2Table(table, pctPaid.ToString("N3"), _normalFont);
                            }
                            else
                            {
                                PdfReports.AddText2Table(table, "------", _normalFont);
                            }

                            if (item.EH_Price != 0)
                            {
                                PdfReports.AddText2Table(table, item.EH_Price.ToString("$#,##0.000"), _normalFont);
                            }
                            else
                            {
                                PdfReports.AddText2Table(table, "------", _normalFont);
                            }

                            if (item.EH_Tons != 0 || item.EH_Tons_Moved != 0)
                            {
                                PdfReports.AddText2Table(table, (item.EH_Tons - item.EH_Tons_Moved).ToString("N4"), _normalFont);
                            }
                            else
                            {
                                PdfReports.AddText2Table(table, "------", _normalFont);
                            }

                            if (isCumulative)
                            {
                                ytdEHAmount += item.EH_Gross_Pay - item.EH_Amt_Moved;
                            }
                            else
                            {
                                ytdEHAmount = item.YtdEhGrossPay - item.YtdEhAmtMoved;
                            }
                            PdfReports.AddText2Table(table, ytdEHAmount.ToString("$#,##0.00"), _normalFont);
                            PdfReports.AddText2Table(table, (item.EH_Gross_Pay - item.EH_Amt_Moved).ToString("$#,##0.00"), _normalFont);

                            // Regular Harvest
                            actualSugar = item.RH_Sugar;
                            curSLM      = item.RH_SLM;
                            pctPaid     = item.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, item.RH_Price.ToString("$#,##0.000"), _normalFont);
                            PdfReports.AddText2Table(table, (item.RH_Tons - item.RH_Tons_Moved).ToString("N4"), _normalFont);
                            if (isCumulative)
                            {
                                ytdRHAmount += item.RH_Gross_Pay - item.RH_Amt_Moved;
                            }
                            else
                            {
                                ytdRHAmount = item.YtdRhGrossPay - item.YtdRhAmtMoved;
                            }
                            PdfReports.AddText2Table(table, ytdRHAmount.ToString("$#,##0.00"), _normalFont);
                            PdfReports.AddText2Table(table, (item.RH_Gross_Pay - item.RH_Amt_Moved).ToString("$#,##0.00"), _normalFont);

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

                            // Reduced Early Harvest
                            PdfReports.AddText2Table(table, "Reduced Early Harvest Excess Beets", _labelFont, "left", 4);
                            PdfReports.AddText2Table(table, " ", _normalFont);
                            PdfReports.AddText2Table(table, item.EH_Tons_Moved.ToString("#,#.0000;(#,#.0000)"), _normalFont);
                            if (isCumulative)
                            {
                                ytdEHAmountMoved += item.EH_Amt_Moved;
                            }
                            else
                            {
                                ytdEHAmountMoved = item.YtdEhAmtMoved;
                            }
                            PdfReports.AddText2Table(table, ytdEHAmountMoved.ToString("$#,#.00;$(#,#.00)"), _normalFont);
                            PdfReports.AddText2Table(table, item.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, item.RH_Tons_Moved.ToString("#,#.0000;(#,#.0000)"), _normalFont);
                            if (isCumulative)
                            {
                                ytdRHAmountMoved += item.RH_Amt_Moved;
                            }
                            else
                            {
                                ytdRHAmountMoved = item.YtdRhAmtMoved;
                            }
                            PdfReports.AddText2Table(table, ytdRHAmountMoved.ToString("$#,#.00;$(#,#.00)"), _normalFont);
                            PdfReports.AddText2Table(table, item.RH_Amt_Moved.ToString("$#,#.00;$(#,#.00)"), _normalFont);

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

                            // Total lines
                            PdfReports.AddText2Table(table, " ", _normalFont, 4);
                            PdfReports.AddText2Table(table, "Total Gross Amount: ", _labelFont, "right", 2);
                            PdfReports.AddText2Table(table, (ytdEHBonus
                                                             + ytdEHAmount
                                                             + ytdRHAmount
                                                             + ytdEHAmountMoved
                                                             + ytdRHAmountMoved).ToString("#,##0.00"), _normalFont);
                            PdfReports.AddText2Table(table, (item.EH_Bonus
                                                             + item.EH_Gross_Pay
                                                             + item.RH_Gross_Pay
                                                             //+ item.EH_Amt_Moved
                                                             //+ item.RH_Amt_Moved
                                                             ).ToString("#,##0.00"), _normalFont);

                            PdfReports.AddText2Table(table, " ", _normalFont, 5);
                            PdfReports.AddText2Table(table, "Deduction Total: ", _labelFont, "right");

                            if (isCumulative)
                            {
                                ytdDeductions += item.Deduct_Total;
                            }
                            else
                            {
                                ytdDeductions = item.YtdDeductTotal;
                            }
                            PdfReports.AddText2Table(table, ytdDeductions.ToString("#,##0.00"), _normalFont);
                            PdfReports.AddText2Table(table, item.Deduct_Total.ToString("#,##0.00"), _normalFont);

                            PdfReports.AddText2Table(table, " ", _normalFont, 5);
                            PdfReports.AddText2Table(table, "Net Payment: ", _labelFont, "right");

                            decimal currentNet = item.EH_Bonus + item.EH_Gross_Pay + item.RH_Gross_Pay - item.Deduct_Total;

                            if (isCumulative)
                            {
                                ytdNet += currentNet;
                            }
                            else
                            {
                                ytdNet = item.YtdEhBonus + item.YtdEhGrossPay + item.YtdRhGrossPay - item.YtdDeductTotal;
                            }

                            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, item.Payment_Amount.ToString("#,##0.00"), _normalFont);

                            PdfReports.AddText2Table(table, " ", _normalFont, 6);
                            PdfReports.AddText2Table(table, "Landowner Net: ", _labelFont, "right");
                            PdfReports.AddText2Table(table, item.Split_Payment.ToString("#,##0.00"), _normalFont);

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

                            PdfReports.AddTableNoSplit(document, pgEvent, table);

                            if (paymentNumber == item.Payment_Number)
                            {
                                //================================================================
                                // Add Deduction information
                                //================================================================
                                table = PdfReports.CreateTable(_primaryTableLayout, 1);

                                //using (SqlDataReader drDed = WSCPayment.GetTransmittalDeduction(conn,
                                //          cropYear, contractNumber, item.Payment_Number, isCumulative)) {

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

                                var contractDeductions = from deduction in deductionList
                                                         where deduction.Contract_Number.ToString() == item.Contract_Number &&
                                                         deduction.Payment_Number <= item.Payment_Number
                                                         orderby deduction.Payment_Number, deduction.Deduction_Number
                                select deduction;

                                foreach (TransDeductionListItem dedItem in contractDeductions)
                                {
                                    if (dedItem.Amount != 0)
                                    {
                                        PdfReports.AddText2Table(table, dedItem.Deduction_Desc, _normalFont, 5);
                                        PdfReports.AddText2Table(table, dedItem.Payment_Description, _normalFont);
                                        PdfReports.AddText2Table(table, dedItem.Amount.ToString("$#,##0.00"), _normalFont);
                                        PdfReports.AddText2Table(table, " ", _labelFont);
                                    }
                                }


                                // OLD CODE - replace by For loop above
                                //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, null, null);

                                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)
                {
                    pgEvent.IsDocumentClosing = true;
                    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)
                {
                    pgEvent.IsDocumentClosing = true;
                    document.Close();
                }
                if (writer != null)
                {
                    writer.Close();
                }
            }
        }