private void btnMaterialManager_Click(object sender, System.EventArgs e)
        {
            if (CurrentUFFRDBase.RowState == DataRowState.Detached)
            {
                MessageBox.Show("A unidade física selecionada foi apagada por outro utilizador motivo pelo qual " + System.Environment.NewLine + "não é possível editar os Tipos de Material.", "Unidade física apagada", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            IDbConnection conn = GisaDataSetHelper.GetConnection();

            try
            {
                conn.Open();
                UFRule.Current.LoadTipoAcondicionamento(GisaDataSetHelper.GetInstance(), conn);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                throw;
            }
            finally
            {
                conn.Close();
            }
            FormMateriaisEditor formMatEditor = new FormMateriaisEditor();

            formMatEditor.LoadData(GisaDataSetHelper.GetInstance().TipoAcondicionamento.Select("NOT Designacao = '<Desconhecido>'"), "Designacao");
            formMatEditor.ShowDialog();

            GISA.Model.PersistencyHelper.ManageDescFisicasPreConcArguments args = new GISA.Model.PersistencyHelper.ManageDescFisicasPreConcArguments();
            args.frdID = CurrentUFFRDBase.ID;
            ArrayList rowList = new ArrayList();

            foreach (DataRow row in GisaDataSetHelper.GetInstance().Tables["TipoAcondicionamento"].Select("", "", DataViewRowState.Deleted))
            {
                rowList.Add(row["ID", DataRowVersion.Original]);
            }

            args.quant = rowList;

            PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save(TipoAcondicionamentoIsBeingUsedByOthers, args);
            PersistencyHelper.cleanDeletedData();

            if (args.aResult == PersistencyHelper.ManageDescFisicasPreConcArguments.ActionResult.quantidadeUsedByOthers)
            {
                MessageBox.Show("Um ou mais tipos de acondicionamento não puderam ser" + Environment.NewLine + "removidos por estarem atualmente em uso.", "Remoção de Elementos", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            if (successfulSave == PersistencyHelper.SaveResult.successful)
            {
                GISA.Search.Updater.updateUnidadeFisica(CurrentUFFRDBase.NivelRow.ID);
            }

            GISADataset.TipoAcondicionamentoRow selectedTipoAcondicionamento = (GISADataset.TipoAcondicionamentoRow)cbTipo.SelectedItem;
            cbTipo.Items.Clear();
            cbTipo.DisplayMember = "Designacao";
            cbTipo.Items.AddRange(GisaDataSetHelper.GetInstance().TipoAcondicionamento.Select("", "Designacao"));

            if (selectedTipoAcondicionamento != null)
            {
                cbTipo.SelectedItem = selectedTipoAcondicionamento;
            }
            else
            {
                cbTipo.SelectedItem = (GISADataset.TipoAcondicionamentoRow)(GisaDataSetHelper.GetInstance().TipoAcondicionamento.Select(string.Format("ID={0:d}", TipoAcondicionamento.Pasta))[0]);
            }
        }
        private void btnMaterialManager_Click(object sender, System.EventArgs e)
        {
            if (CurrentUFFRDBase.RowState == DataRowState.Detached)
            {
                MessageBox.Show("A unidade física selecionada foi apagada por outro utilizador motivo pelo qual " + System.Environment.NewLine + "não é possível editar os Tipos de Material.", "Unidade física apagada", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            IDbConnection conn = GisaDataSetHelper.GetConnection();
            try
            {
                conn.Open();
                UFRule.Current.LoadTipoAcondicionamento(GisaDataSetHelper.GetInstance(), conn);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex);
                throw;
            }
            finally
            {
                conn.Close();
            }
            FormMateriaisEditor formMatEditor = new FormMateriaisEditor();
            formMatEditor.LoadData(GisaDataSetHelper.GetInstance().TipoAcondicionamento.Select("NOT Designacao = '<Desconhecido>'"), "Designacao");
            formMatEditor.ShowDialog();

            GISA.Model.PersistencyHelper.ManageDescFisicasPreConcArguments args = new GISA.Model.PersistencyHelper.ManageDescFisicasPreConcArguments();
            args.frdID = CurrentUFFRDBase.ID;
            ArrayList rowList = new ArrayList();
            foreach (DataRow row in GisaDataSetHelper.GetInstance().Tables["TipoAcondicionamento"].Select("", "", DataViewRowState.Deleted))
                rowList.Add(row["ID", DataRowVersion.Original]);

            args.quant = rowList;

            PersistencyHelper.SaveResult successfulSave = PersistencyHelper.save(TipoAcondicionamentoIsBeingUsedByOthers, args);
            PersistencyHelper.cleanDeletedData();

            if (args.aResult == PersistencyHelper.ManageDescFisicasPreConcArguments.ActionResult.quantidadeUsedByOthers)
                MessageBox.Show("Um ou mais tipos de acondicionamento não puderam ser" + Environment.NewLine + "removidos por estarem atualmente em uso.", "Remoção de Elementos", MessageBoxButtons.OK, MessageBoxIcon.Warning);

            if (successfulSave == PersistencyHelper.SaveResult.successful)
                GISA.Search.Updater.updateUnidadeFisica(CurrentUFFRDBase.NivelRow.ID);

            GISADataset.TipoAcondicionamentoRow selectedTipoAcondicionamento = (GISADataset.TipoAcondicionamentoRow)cbTipo.SelectedItem;
            cbTipo.Items.Clear();
            cbTipo.DisplayMember = "Designacao";
            cbTipo.Items.AddRange(GisaDataSetHelper.GetInstance().TipoAcondicionamento.Select("", "Designacao"));

            if (selectedTipoAcondicionamento != null)
                cbTipo.SelectedItem = selectedTipoAcondicionamento;
            else
                cbTipo.SelectedItem = (GISADataset.TipoAcondicionamentoRow)(GisaDataSetHelper.GetInstance().TipoAcondicionamento.Select(string.Format("ID={0:d}", TipoAcondicionamento.Pasta))[0]);
        }