private void Adicionar(Entidades.Mercadoria.Mercadoria mercadoria, double quantidade, ModoJanelaÍndice modoJanelaÍndice, bool conferirTravamento) { double índice; if (conferirTravamento && ConferirTravamento()) return; try { EscolherÍndice(mercadoria, modoJanelaÍndice); índice = mercadoria.ÍndiceArredondado; } catch (Exception) { MessageBox.Show( Parent, "A operação foi cancelada pelo sistema, pois não foi possível obter o índice da mercadoria.", "Relacionamento de mercadoria", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } // Altera o valor do indice dentro da mercadoria: HistóricoRelacionamentoItem itemAdicionado; try { itemAdicionado = coleção.Relacionar(mercadoria, quantidade, índice); } catch (OperaçãoCancelada) { MessageBox.Show( ParentForm, "A operação foi cancelada pelo sistema. Nenhuma alteração foi realizada no banco de dados.", "Relacionamento de mercadoria", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } catch (InvalidAsynchronousStateException) { RecarregarDocumentoInconsistente(); return; } try { bandejaHistórico.Adicionar(new SaquinhoHistóricoRelacionado(itemAdicionado)); bandejaAgrupada.Adicionar(new Saquinho(mercadoria, quantidade)); } catch (Exception e) { MessageBox.Show(ParentForm, "Ocorreu um erro enquanto tentava-se atualizar a interface gráfica, porém a mercadoria foi registrada no banco de dados.\n\nPor favor, abra de novo o documento com o qual você está trabalhando.", "Relacionamento de mercadoria", MessageBoxButtons.OK, MessageBoxIcon.Stop); Acesso.Comum.Usuários.UsuárioAtual.RegistrarErro(e); bandejaAgrupada.Visible = false; bandejaHistórico.Visible = false; quadroMercadoria.Visible = false; quadroHistórico.Visible = false; quadroAgrupado.Visible = false; quadroFoto.Visible = false; } #if !DEBUG try { #endif if (AoAdicionar != null) AoAdicionar(this, mercadoria, quantidade); #if !DEBUG } catch (Exception e) { MessageBox.Show(ParentForm, "Ocorreu um erro disparando evento de adição de mercadoria. De qualquer maneira, a mercadoria foi registrada no banco de dados.", "Relacionamento de mercadoria", MessageBoxButtons.OK, MessageBoxIcon.Warning); Acesso.Comum.Usuários.UsuárioAtual.RegistrarErro(e); } #endif }
/// <summary> /// Caso o modo seja "NuncaMostrarNãoAlterandoÍndice", /// o índice deve ser obtido da mercadoria no parâmetro. /// </summary> protected virtual void EscolherÍndice(Entidades.Mercadoria.Mercadoria mercadoria, ModoJanelaÍndice modoJanela) { if (verificador != null) { List<double> listaÍndicesCompletos = verificador.ObterListaÍndices(mercadoria); // Cria uma lista com os índices arredondados List<double> listaÍndicesArredondados = new List<double>(); foreach (double d in listaÍndicesCompletos) { double arredondado = Math.Round(d, 2); if (!listaÍndicesArredondados.Contains(arredondado)) listaÍndicesArredondados.Add(arredondado); } if (!listaÍndicesArredondados.Contains(mercadoria.ÍndiceArredondado)) listaÍndicesArredondados.Add(mercadoria.ÍndiceArredondado); // Neste ponto a listaÍndices tem um ou mais elementos. if ((modoJanela == ModoJanelaÍndice.MostrarSempre || listaÍndicesArredondados.Count > 1) && (modoJanela != ModoJanelaÍndice.NuncaMostrarNãoAlterandoÍndice)) { JanelaEscolhaÍndice j = new JanelaEscolhaÍndice(); j.CarregarÍndices(listaÍndicesArredondados, mercadoria.ÍndiceArredondado, mercadoria, entidade as RelacionamentoAcerto); if (j.ShowDialog() == DialogResult.OK) { // Altera o indice na mercadoria mercadoria.Índice = j.ObterValorEscolhido(); } else { throw new Exception("Cancelado pelo usuário"); } mercadoria.Índice = j.ObterValorEscolhido(); } else if (modoJanela != ModoJanelaÍndice.NuncaMostrarNãoAlterandoÍndice) mercadoria.Índice = listaÍndicesArredondados[0]; } }
private void Adicionar(Entidades.Mercadoria.Mercadoria mercadoria, double quantidade, ModoJanelaÍndice modoJanelaÍndice) { Adicionar(mercadoria, quantidade, modoJanelaÍndice, true); }