protected WBDocument CaptureAsDocument(SPListItem sourceDocAsItem, WBRecordsType documentRecordsType)
        {
            WBDocument document = new WBDocument(WorkBox, sourceDocAsItem);

            // Which of the metadata fields are being used by the active records type?
            showReferenceID   = documentRecordsType.DocumentReferenceIDRequirement != WBRecordsType.METADATA_REQUIREMENT__HIDDEN;
            showReferenceDate = documentRecordsType.DocumentReferenceDateRequirement != WBRecordsType.METADATA_REQUIREMENT__HIDDEN;
            showSubjectTags   = true; // documentRecordsType.DocumentSubjectTagsRequirement != WBRecordsType.METADATA_REQUIREMENT__HIDDEN;
            showSeriesTag     = documentRecordsType.DocumentSeriesTagRequirement != WBRecordsType.METADATA_REQUIREMENT__HIDDEN;
            showScanDate      = documentRecordsType.DocumentScanDateRequirement != WBRecordsType.METADATA_REQUIREMENT__HIDDEN;


            //document.Name =

            //                if (!generatingFilename)
            //              {
            //                sourceDocAsItem["Name"] = NameField.Text;
            //          }



            document.Title = TitleField.Text;
            //sourceDocAsItem["Title"] = TitleField.Text;

            if (documentRecordsType.IsFunctionalAreaEditable)
            {
                document[WBColumn.FunctionalArea] = FunctionalAreaField.Text;
                sourceDocAsItem.WBxSetMultiTermColumn(WorkBox.COLUMN_NAME__FUNCTIONAL_AREA, FunctionalAreaField.Text);
            }

            //document.FunctionalArea = sourceDocAsItem.WBxGetMultiTermColumn<WBTerm>(functionalAreasTaxonomy, WBColumn.FunctionalArea.DisplayName);


            String protectiveZone = ProtectiveZone.SelectedValue;

            document.ProtectiveZone = protectiveZone;
            //sourceDocAsItem.WBxSetColumnAsString(WorkBox.COLUMN_NAME__PROTECTIVE_ZONE, protectiveZone);

            // Now to save the current value of the Records Type field:
            document[WBColumn.RecordsType] = RecordsTypeUIControlValue.Value;
            //sourceDocAsItem.WBxSetSingleTermColumn(WorkBox.COLUMN_NAME__RECORDS_TYPE, RecordsTypeUIControlValue.Value);

            if (showSubjectTags)
            {
                WBLogging.Debug("Setting subject tags to be: " + SubjectTagsField.Text);
                document[WBColumn.SubjectTags] = SubjectTagsField.Text;
            }
            else
            {
                WBLogging.Debug("NOT !!! Setting subject tags to be: " + SubjectTagsField.Text);
            }


            if (showReferenceID)
            {
                document.ReferenceID = ReferenceID.Text;
                //sourceDocAsItem.WBxSetColumnAsString(WorkBox.COLUMN_NAME__REFERENCE_ID, ReferenceID.Text);
            }

            if (showReferenceDate)
            {
                document.ReferenceDate = ReferenceDate.SelectedDate;
                // sourceDocAsItem[WorkBox.COLUMN_NAME__REFERENCE_DATE] = ReferenceDate.SelectedDate;
            }

            if (showSeriesTag)
            {
                document[WBColumn.SeriesTag] = SeriesTagDropDownList.SelectedValue;
                //sourceDocAsItem.WBxSetSingleTermColumn(WorkBox.COLUMN_NAME__SERIES_TAG, SeriesTagDropDownList.SelectedValue);
            }

            if (showScanDate)
            {
                document.ScanDate = ScanDate.SelectedDate;
                //sourceDocAsItem[WorkBox.COLUMN_NAME__SCAN_DATE] = ScanDate.SelectedDate;
            }


            //sourceDocAsItem.WBxSetSingleTermColumn(WorkBox.COLUMN_NAME__OWNING_TEAM, OwningTeamField.Text);
            //sourceDocAsItem.WBxSetMultiTermColumn(WorkBox.COLUMN_NAME__INVOLVED_TEAMS, InvolvedTeamsField.Text);

            document[WBColumn.OwningTeam]    = OwningTeamField.Text;
            document[WBColumn.InvolvedTeams] = InvolvedTeamsField.Text;
            document.CheckOwningTeamIsAlsoInvolved();

            if (String.IsNullOrEmpty(document.OriginalFilename))
            {
                document.OriginalFilename = sourceDocAsItem.Name;
            }

            WorkBox.GenerateFilename(documentRecordsType, sourceDocAsItem);

            /*
             * if (WorkBox.RecordsType.GeneratePublishOutFilenames)
             * {
             *  WorkBox.GenerateFilename(documentRecordsType, sourceDocAsItem);
             * }
             *
             * sourceDocAsItem.Update();
             */

            return(document);
        }