private void PrintPFIMailers(PFIMailerOption pfiMailerOption)
        {
            //Create output variables
            string errorCode;
            string errorText;

            var businessRulesProcedures = new BusinessRulesProcedures(GlobalDataAccessor.Instance.DesktopSession);
            var pfiMailerAdjustmentDays = businessRulesProcedures.GetNumberOfDaysToAddForPFIMailer(GlobalDataAccessor.Instance.CurrentSiteId);

            var pfiMailerList = new List <ReportObject.PFIMailer>();
            var pfiMailerFilesToDeleteList = new List <String>();

            var retVal = false;

            switch (pfiMailerOption)
            {
            case PFIMailerOption.PrintPFIMailers:
                retVal = PawnProcedures.ExecuteGetPFIMailerData(GlobalDataAccessor.Instance.OracleDA,
                                                                pfiMailerOption,
                                                                out pfiMailerList,
                                                                out errorCode,
                                                                out errorText,
                                                                pfiMailerAdjustmentDays,
                                                                pfiDate: ShopDateTime.Instance.ShopDate);
                break;

            case PFIMailerOption.ReprintMailbook:
                retVal = PawnProcedures.ExecuteGetPFIMailerData(GlobalDataAccessor.Instance.OracleDA,
                                                                pfiMailerOption,
                                                                out pfiMailerList,
                                                                out errorCode,
                                                                out errorText,
                                                                pfiDate: Utilities.GetDateTimeValue(this.dateReprintMailbook.SelectedDate));
                break;

            case PFIMailerOption.ReprintPFIMailersByDate:
                retVal = PawnProcedures.ExecuteGetPFIMailerData(GlobalDataAccessor.Instance.OracleDA,
                                                                pfiMailerOption,
                                                                out pfiMailerList,
                                                                out errorCode,
                                                                out errorText,
                                                                pfiDate: Utilities.GetDateTimeValue(this.dateReprintMailers.SelectedDate));
                break;

            case PFIMailerOption.ReprintPFIMailersByTicket:
                retVal = PawnProcedures.ExecuteGetPFIMailerData(GlobalDataAccessor.Instance.OracleDA,
                                                                pfiMailerOption,
                                                                out pfiMailerList,
                                                                out errorCode,
                                                                out errorText,
                                                                startTicketNumber: Utilities.GetIntegerValue(this.txtBeginTicket.Text),
                                                                endTicketNumber: Utilities.GetIntegerValue(this.txtEndTicket.Text),
                                                                pfiDate: Utilities.GetDateTimeValue(this.dateTicketRange.SelectedDate));
                break;

            case PFIMailerOption.GetTodaysPrintedPFIMailerTickets:
                retVal = PawnProcedures.ExecuteGetPFIMailerData(
                    GlobalDataAccessor.Instance.OracleDA,
                    pfiMailerOption,
                    out pfiMailerList,
                    out errorCode,
                    out errorText,
                    pfiDate: Utilities.GetDateTimeValue(this.dateTicketRange.SelectedDate));
                break;

            default:
                System.Diagnostics.Debug.Assert(false, "Unexpected Default case. Forget to add handler?");
                break;
            }

            if (retVal)
            {
                if (pfiMailerOption == PFIMailerOption.GetTodaysPrintedPFIMailerTickets)
                {
                    if (pfiMailerList.Count > 0)
                    {
                        txtBeginTicket.Text = pfiMailerList[0].ticketNumber.ToString();
                        txtEndTicket.Text   = pfiMailerList[pfiMailerList.Count - 1].ticketNumber.ToString();
                    }
                }
                else if (pfiMailerOption == PFIMailerOption.ReprintMailbook)
                {
                    PrintMailingBook(pfiMailerFilesToDeleteList, pfiMailerList);
                    MessageBox.Show(@"PFI Mailbook Printing Complete");
                }
                else
                {
                    if (DisplayPrintPFIMailersConfirmationBox(pfiMailerList.Count, PFIMailerOption.ReprintPFIMailersByTicket == pfiMailerOption))
                    {
                        if (pfiMailerList.Count > 0)
                        {
                            var mailFee = businessRulesProcedures.GetPFIMailerFee(GlobalDataAccessor.Instance.CurrentSiteId);

                            var ticketNumberList    = new List <int>();
                            var originalPFINoteList = new List <DateTime>();
                            var pfiEligibleDateList = new List <DateTime>();

                            var pfiMailerFileNamesToMerge = new List <String>();
                            var recordCount = 1;
                            foreach (var pfiMailer in pfiMailerList)
                            {
                                var pfiMailerLocal = pfiMailer;

                                if (pfiMailerOption == PFIMailerOption.PrintPFIMailers)
                                // Spec Change
                                //pfiMailerOption == PFIMailerOption.ReprintPFIMailersByTicket ||
                                //pfiMailerOption == PFIMailerOption.ReprintPFIMailersByDate)
                                {
                                    //
                                    pfiMailerLocal.pfiEligibleDate = GetPFIEligibleDate();

                                    //process pfi eligible date adjustment
                                    if (ShopDateTime.Instance.ShopDate > pfiMailerLocal.originalPFINote)
                                    {
                                        // Special Rule PWN_BR-33 Adjustment
                                        pfiMailerLocal.pfiEligibleDate = GetPFIDateAdjustmentRule33(pfiMailerLocal.pfiEligibleDate);
                                    }

                                    //PawnProcedures.ExecuteUpdatePFIMailerData(
                                    //    GlobalDataAccessor.Instance.OracleDA,
                                    //    out errorCode,
                                    //    out errorText,
                                    //    pfiMailerLocal.storeNumber,
                                    //    pfiMailerLocal.ticketNumber,
                                    //    mailFee,
                                    //    pfiMailerLocal.originalPFINote,
                                    //    "Y",
                                    //    pfiEligibleDate);

                                    ticketNumberList.Add(pfiMailerLocal.ticketNumber);
                                    originalPFINoteList.Add(pfiMailerLocal.originalPFINote);
                                    pfiEligibleDateList.Add(pfiMailerLocal.pfiEligibleDate);
                                }

                                var pfiMailerDocument = new PFIMailerDocument(PdfLauncher.Instance);
                                var pfiMailerFileName = "PFIMailer" + recordCount + ".pdf";

                                var reportObject = new ReportObject
                                {
                                    ReportTempFileFullName =
                                        Path.Combine(
                                            SecurityAccessor.Instance.EncryptConfig.ClientConfig.GlobalConfiguration.BaseLogPath,
                                            pfiMailerFileName)
                                };

                                pfiMailerDocument.ReportObject = reportObject;

                                pfiMailerDocument.CreateReport(pfiMailerLocal);

                                if (FileLogger.Instance.IsLogInfo)
                                {
                                    FileLogger.Instance.logMessage(
                                        LogLevel.INFO, "PFI_Mailers", "Creating PFI Mailer {0}, Ticket Number {1}",
                                        pfiMailerFileName, pfiMailer.ticketNumber);
                                }

                                //var strReturnMessage =
                                //    PrintingUtilities.printDocument(
                                //        reportObject.ReportTempFileFullName,
                                //        GlobalDataAccessor.Instance.DesktopSession.LaserPrinter.IPAddress,
                                //        GlobalDataAccessor.Instance.DesktopSession.LaserPrinter.Port, 1);
                                //
                                //if (!strReturnMessage.Contains("SUCCESS"))
                                //{
                                //    FileLogger.Instance.logMessage(LogLevel.ERROR, this, "PFI Mailer : " + strReturnMessage);
                                //}

                                pfiMailerFileNamesToMerge.Add(Path.Combine(SecurityAccessor.Instance.EncryptConfig.ClientConfig.GlobalConfiguration.BaseLogPath, pfiMailerFileName));
                                recordCount++;
                            } // foreach (var pfiMailer in pfiMailerList)

                            // Merge PFIMailerX.pdf doc's
                            var mergedOutputFile      = Path.Combine(SecurityAccessor.Instance.EncryptConfig.ClientConfig.GlobalConfiguration.BaseLogPath, "PFIMailer.pdf");
                            var wasPDFMergeSuccessful = PDFITextSharpUtilities.MergePDFFiles(mergedOutputFile, pfiMailerFileNamesToMerge.ToArray());

                            if (wasPDFMergeSuccessful)
                            {
                                var strReturnMessage =
                                    PrintingUtilities.printDocument(
                                        mergedOutputFile,
                                        GlobalDataAccessor.Instance.DesktopSession.LaserPrinter.IPAddress,
                                        GlobalDataAccessor.Instance.DesktopSession.LaserPrinter.Port, 1);

                                if (FileLogger.Instance.IsLogInfo)
                                {
                                    FileLogger.Instance.logMessage(
                                        LogLevel.INFO, "PFI_Mailers", "Printing PFI Mailer {0}",
                                        mergedOutputFile);
                                }

                                if (!strReturnMessage.Contains("SUCCESS"))
                                {
                                    FileLogger.Instance.logMessage(LogLevel.ERROR, this, "PFI Mailer : " + strReturnMessage);
                                }
                            }

                            if (pfiMailerOption == PFIMailerOption.PrintPFIMailers)
                            {
                                PawnProcedures.ExecuteAddPFIMailerDataArray(
                                    GlobalDataAccessor.Instance.OracleDA,
                                    out errorCode,
                                    out errorText,
                                    int.Parse(GlobalDataAccessor.Instance.DesktopSession.CurrentSiteId.StoreNumber),
                                    ticketNumberList,
                                    originalPFINoteList,
                                    pfiEligibleDateList,
                                    mailFee);
                            }

                            // Spec Change
                            //else if (pfiMailerOption == PFIMailerOption.ReprintPFIMailersByDate ||
                            //         pfiMailerOption == PFIMailerOption.ReprintPFIMailersByTicket)
                            //{
                            //    PawnProcedures.ExecuteAddPFIMailerDataArray(
                            //        GlobalDataAccessor.Instance.OracleDA,
                            //        out errorCode,
                            //        out errorText,
                            //        int.Parse(GlobalDataAccessor.Instance.DesktopSession.CurrentSiteId.StoreNumber),
                            //        ticketNumberList,
                            //        originalPFINoteList,
                            //        pfiEligibleDateList,
                            //        mailFee);
                            //}

                            // Spec Change
                            //if (pfiMailerOption != PFIMailerOption.ReprintPFIMailersByTicket)
                            {
                                PrintMailingBook(pfiMailerFilesToDeleteList, pfiMailerList);
                            }
                        }
                    }
                }
            }
            else
            {
                if (pfiMailerOption == PFIMailerOption.ReprintMailbook)
                {
                    MessageBox.Show(@"There is no Mail Book for this date.");
                }
                //else if (pfiMailerOption == PFIMailerOption.GetTodaysPrintedPFIMailerTickets)
                //{
                //    MessageBox.Show(@"There are no PFI Mailers to be printed for this ticket range.");
                //}
                else
                {
                    MessageBox.Show(@"There are no PFI Mailers to be printed for this date.");
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Retrieves PFI Mailer data based on selected PFI Mailer option and parameters
        /// </summary>
        /// <param name="dataAccessor"></param>
        /// <param name="pfiMailerOption"></param>
        /// <param name="pfiMailerObjects"></param>
        /// <param name="errorCode"></param>
        /// <param name="errorText"></param>
        /// <param name="pfiMailerAdjustmentDays"></param>
        /// <param name="startTicketNumber"></param>
        /// <param name="endTicketNumber"></param>
        /// <param name="pfiDate"></param>
        /// <returns></returns>
        public static bool ExecuteGetPFIMailerData(
            OracleDataAccessor dataAccessor,
            PFIMailerOption pfiMailerOption,
            out List <ReportObject.PFIMailer> pfiMailerObjects,
            out string errorCode,
            out string errorText,
            int pfiMailerAdjustmentDays = 0,
            int startTicketNumber       = 0,
            int endTicketNumber         = 0,
            DateTime pfiDate            = new DateTime()
            )
        {
            // initialize error output variables
            pfiMailerObjects = new List <ReportObject.PFIMailer>();
            errorCode        = String.Empty;
            errorText        = String.Empty;

            // Ensure the data accessor is valid
            if (dataAccessor == null || !dataAccessor.Initialized)
            {
                BasicExceptionHandler.Instance.AddException("ExecuteGetPFIMailerData Failed",
                                                            new ApplicationException("ExecuteGetPFIMailerData Failed: Data accessor instance is invalid"));
                return(false);
            }

            // Set up input variables
            var inParams = new List <OracleProcParam>
            {
                new OracleProcParam("p_pfi_date", pfiDate.ToShortDateString()),
                new OracleProcParam("p_store_number", GlobalDataAccessor.Instance.DesktopSession.CurrentSiteId.StoreNumber),
                new OracleProcParam("p_pfi_mailer_adjustment_days", pfiMailerAdjustmentDays),
                new OracleProcParam("p_startTicketNumber", startTicketNumber),
                new OracleProcParam("p_endTicketNumber", endTicketNumber),
                new OracleProcParam("p_pfiMailerOption", (int)pfiMailerOption)
            };


            // Set up output
            DataSet outputDataSet;
            var     retVal     = false;
            var     refCursArr = new List <PairType <string, string> >
            {
                new PairType <string, string>("pfi_mailer_info", "o_pfi_mailer_info")
            };

            try
            {
                retVal = dataAccessor.issueSqlStoredProcCommand(
                    "ccsowner", "pawn_mdse_procs",
                    "get_pfi_mailer_data", inParams,
                    refCursArr, "o_return_code",
                    "o_return_text",
                    out outputDataSet);

                errorCode = dataAccessor.ErrorCode;
                errorText = dataAccessor.ErrorDescription;
            }
            catch (OracleException oEx)
            {
                BasicExceptionHandler.Instance.AddException("ExecuteGetPFIMailerData Failed", oEx);
                errorCode = " --- ExecuteGetPFIMailerData";
                errorText = " --- OracleException thrown: " + oEx.Message;
                return(false);
            }

            if (retVal == false)
            {
                BasicExceptionHandler.Instance.AddException("ExecuteGetPFIMailerData Failed: return value is false", new ApplicationException());
                errorCode = dataAccessor.ErrorCode + " -- ExecuteGetPFIMailerData";
                errorText = dataAccessor.ErrorDescription + " -- Return value is false";
                return(false);
            }

            if (outputDataSet == null || !outputDataSet.IsInitialized ||
                (outputDataSet.Tables.Count <= 0))
            {
                return(false);
            }

            pfiMailerObjects = new List <ReportObject.PFIMailer>();

            ReportObject.PFIMailer pfiMailerObject;

            foreach (DataRow pfiMailerDataRow in outputDataSet.Tables[0].Rows)
            {
                var pfiMailerFee = new BusinessRulesProcedures(GlobalDataAccessor.Instance.DesktopSession).GetPFIMailerFee(GlobalDataAccessor.Instance.CurrentSiteId);

                pfiMailerObject = new ReportObject.PFIMailer();

                pfiMailerObject.ticketNumber    = Utilities.GetIntegerValue(pfiMailerDataRow["ticket_number"]);
                pfiMailerObject.customerNumber  = Utilities.GetIntegerValue(pfiMailerDataRow["customer_number"]);
                pfiMailerObject.originalPFINote = Utilities.GetDateTimeValue(pfiMailerDataRow["PFI_NOTE"]);
                pfiMailerObject.printNotice     = pfiMailerDataRow["PRINT_NOTICE"].ToString();
                pfiMailerObject.customerName    = pfiMailerDataRow["customer_name"].ToString();
                pfiMailerObject.customerId      = pfiMailerDataRow["customer_id"].ToString();
                pfiMailerObject.customerAddress = pfiMailerDataRow["customer_address"].ToString();
                pfiMailerObject.customerCity    = pfiMailerDataRow["customer_city"].ToString();
                pfiMailerObject.customerState   = pfiMailerDataRow["customer_state"].ToString();
                pfiMailerObject.customerZipCode = pfiMailerDataRow["customer_zipCode"].ToString();
                pfiMailerObject.pfiEligibleDate = Utilities.GetDateTimeValue(pfiMailerDataRow["pfi_eligible_date"]);
                pfiMailerObject.storeName       = pfiMailerDataRow["store_name"].ToString();
                pfiMailerObject.storeNumber     = Utilities.GetIntegerValue(pfiMailerDataRow["store_number"]);
                pfiMailerObject.storeAddress    = pfiMailerDataRow["store_address"].ToString();
                pfiMailerObject.storeCity       = pfiMailerDataRow["store_city"].ToString();
                pfiMailerObject.storeState      = pfiMailerDataRow["store_state"].ToString();
                pfiMailerObject.storeZipCode    = pfiMailerDataRow["store_zipCode"].ToString();
                pfiMailerObject.storePhone      = pfiMailerDataRow["store_phone"].ToString();
                pfiMailerObject.pfiMailerFee    = pfiMailerFee;

                pfiMailerObjects.Add(pfiMailerObject);
            }

            // method completed successfully
            return(true);
        }