/// <summary>
        /// Are all relevant columns in this row blank?
        /// </summary>
        /// <param name="dr"></param>
        /// <returns></returns>
        public static bool RowIsBlank(DataRow dr)
        {
            var columnsToCheck  = FbmsInvoiceStageImports.FbmsInvoice_GetInvoiceColumnLetterToColumnNameDictionary().Keys.ToList();
            var allColumnsBlank = columnsToCheck.All(col => String.IsNullOrWhiteSpace(dr[(string)col].ToString()));

            return(allColumnsBlank);
        }
        public FbmsInvoiceStageImport(KeyValuePair <int, DataRow> keyValuePair)
        {
            var rowIndex = keyValuePair.Key;
            var dr       = keyValuePair.Value;
            var columnNameToLetterDict = FbmsInvoiceStageImports.FbmsInvoice_GetInvoiceColumnNameToColumnLetterDictionary();

            // Column - PO Number - Key
            PONumberKey = ExcelColumnHelper.GetStringDataValueForColumnName(dr, rowIndex, columnNameToLetterDict,
                                                                            FbmsInvoiceStageImports.PurchaseOrderNumberKey);

            // Column - Purch Ord Line Itm - Key
            PurchOrdLineItmKey = ExcelColumnHelper.GetStringDataValueForColumnName(dr, rowIndex, columnNameToLetterDict,
                                                                                   FbmsInvoiceStageImports.PurchaseOrderLineItemKey);

            // Column - Reference - Key
            ReferenceKey = ExcelColumnHelper.GetStringDataValueForColumnName(dr, rowIndex, columnNameToLetterDict,
                                                                             FbmsInvoiceStageImports.ReferenceKey);

            // Column - Vendor - Key
            VendorKey = ExcelColumnHelper.GetStringDataValueForColumnName(dr, rowIndex, columnNameToLetterDict,
                                                                          FbmsInvoiceStageImports.VendorKey);

            // Column - Vendor - Text
            VendorText = ExcelColumnHelper.GetStringDataValueForColumnName(dr, rowIndex, columnNameToLetterDict,
                                                                           FbmsInvoiceStageImports.VendorText);

            // Column - Fund - Key
            FundKey = ExcelColumnHelper.GetStringDataValueForColumnName(dr, rowIndex, columnNameToLetterDict,
                                                                        FbmsInvoiceStageImports.FundKey);

            // Column - Funded Program - Key
            FundedProgramKey = ExcelColumnHelper.GetStringDataValueForColumnName(dr, rowIndex, columnNameToLetterDict,
                                                                                 FbmsInvoiceStageImports.FundedProgramKey);

            // Column - Wbs Element - Key
            WbsElementKey = ExcelColumnHelper.GetStringDataValueForColumnName(dr, rowIndex, columnNameToLetterDict,
                                                                              FbmsInvoiceStageImports.WbsElementKey);

            // Column - Wbs Element - Text
            WbsElementText = ExcelColumnHelper.GetStringDataValueForColumnName(dr, rowIndex, columnNameToLetterDict,
                                                                               FbmsInvoiceStageImports.WbsElementText);

            // Column - Budget Object Class - Key
            BudgetObjectClassKey = ExcelColumnHelper.GetStringDataValueForColumnName(dr, rowIndex, columnNameToLetterDict,
                                                                                     FbmsInvoiceStageImports.BudgetObjectClassKey);

            // Column - DebitAmount
            DebitAmount = ExcelColumnHelper.GetDoubleDataValueForColumnName(dr, rowIndex, columnNameToLetterDict,
                                                                            FbmsInvoiceStageImports.DebitAmount);

            // Column - CreditAmount
            CreditAmount = ExcelColumnHelper.GetDoubleDataValueForColumnName(dr, rowIndex, columnNameToLetterDict,
                                                                             FbmsInvoiceStageImports.CreditAmount);

            // Column - DebitCreditTotal
            DebitCreditTotal = ExcelColumnHelper.GetDoubleDataValueForColumnName(dr, rowIndex, columnNameToLetterDict,
                                                                                 FbmsInvoiceStageImports.DebitCreditTotal);

            // Column - Created On - Key
            CreatedOnKey = ExcelColumnHelper.GetDateTimeDataValueForColumnName(dr, rowIndex, columnNameToLetterDict,
                                                                               FbmsInvoiceStageImports.CreatedOnKey, ExcelColumnHelper.ExcelDateTimeCellType.StringWithDateTime);

            // Column - Posting Date Key
            PostingDateKey = ExcelColumnHelper.GetDateTimeDataValueForColumnName(dr, rowIndex, columnNameToLetterDict,
                                                                                 FbmsInvoiceStageImports.PostingDateKey, ExcelColumnHelper.ExcelDateTimeCellType.StringWithDateTime);
        }