/// <summary>
        /// Gets the credit detail deposit record (type 61).
        /// </summary>
        /// <param name="fileFormat">The file format that contains the configuration to use.</param>
        /// <param name="bundleIndex">Number of existing bundle records in the cash letter.</param>
        /// <param name="transactions">The transactions associated with this deposit.</param>
        /// <returns>A collection of records.</returns>
        protected override List <X937.Record> GetCreditDetailRecords(ImageCashLetterFileFormat fileFormat, int bundleIndex, List <FinancialTransaction> transactions)
        {
            var accountNumber = Rock.Security.Encryption.DecryptString(GetAttributeValue(fileFormat, "AccountNumber"));
            var routingNumber = Rock.Security.Encryption.DecryptString(GetAttributeValue(fileFormat, "RoutingNumber"));

            var records = new List <X937.Record>();

            var creditDetail = new X937.Records.CreditDetail
            {
                PayorRoutingNumber  = "500100015",
                CreditAccountNumber = accountNumber,
                Amount = transactions.Sum(t => t.TotalAmount),
                InstitutionItemSequenceNumber = string.Format("{0}{1}", RockDateTime.Now.ToString("yyMMddHHmmss"), bundleIndex),
                DebitCreditIndicator          = "2"
            };

            records.Add(creditDetail);

            for (int i = 0; i < 2; i++)
            {
                using (var ms = GetDepositSlipImage(fileFormat, creditDetail, i == 0))
                {
                    //
                    // Get the Image View Detail record (type 50).
                    //
                    var detail = new X937.Records.ImageViewDetail
                    {
                        ImageIndicator                 = 1,
                        ImageCreatorRoutingNumber      = routingNumber,
                        ImageCreatorDate               = DateTime.Now,
                        ImageViewFormatIndicator       = 0,
                        CompressionAlgorithmIdentifier = 0,
                        SideIndicator             = i,
                        ViewDescriptor            = 0,
                        DigitalSignatureIndicator = 0
                    };

                    //
                    // Get the Image View Data record (type 52).
                    //
                    var data = new X937.Records.ImageViewData
                    {
                        InstitutionRoutingNumber            = routingNumber,
                        BundleBusinessDate                  = DateTime.Now,
                        ClientInstitutionItemSequenceNumber = accountNumber,
                        ClippingOrigin = 0,
                        ImageData      = ms.ReadBytesToEnd()
                    };

                    records.Add(detail);
                    records.Add(data);
                }
            }

            return(records);
        }
        /// <summary>
        /// Gets the image record for a specific transaction image (type 50 and 52).
        /// </summary>
        /// <param name="fileFormat">The file format that contains the configuration to use.</param>
        /// <param name="transaction">The transaction being deposited.</param>
        /// <param name="image">The check image scanned by the scanning application.</param>
        /// <param name="isFront">if set to <c>true</c> [is front].</param>
        /// <returns>A collection of records.</returns>
        protected virtual List <X937.Record> GetImageRecords(ImageCashLetterFileFormat fileFormat, FinancialTransaction transaction, FinancialTransactionImage image, bool isFront)
        {
            var routingNumber = Rock.Security.Encryption.DecryptString(GetAttributeValue(fileFormat, "RoutingNumber"));
            var accountNumber = Rock.Security.Encryption.DecryptString(GetAttributeValue(fileFormat, "AccountNumber"));

            //
            // Get the Image View Detail record (type 50).
            //
            var detail = new X937.Records.ImageViewDetail
            {
                ImageIndicator                 = 1,
                ImageCreatorRoutingNumber      = routingNumber,
                ImageCreatorDate               = image.CreatedDateTime ?? DateTime.Now,
                ImageViewFormatIndicator       = 0,
                CompressionAlgorithmIdentifier = 0,
                SideIndicator             = isFront ? 0 : 1,
                ViewDescriptor            = 0,
                DigitalSignatureIndicator = 0
            };

            //
            // Get the Image View Data record (type 51).
            //
            var data = new X937.Records.ImageViewData
            {
                InstitutionRoutingNumber            = routingNumber,
                BundleBusinessDate                  = DateTime.Now,
                ClientInstitutionItemSequenceNumber = accountNumber,
                ClippingOrigin = 0,
                ImageData      = image.BinaryFile.ContentStream.ReadBytesToEnd()
            };

            return(new List <X937.Record> {
                detail, data
            });
        }