Esempio n. 1
0
		protected override ListViewItem ConstruirListView(ISaquinho saquinhoASerAdicionado)
		{
			SaquinhoEtiqueta saquinho = (SaquinhoEtiqueta) saquinhoASerAdicionado;
			ListViewItem item;
			
			item = base.ConstruirListView(saquinho);	//Adiciona o essencial: Ref e Qtd
			
			item.SubItems[colFormato.Index].Text 
				= saquinho.Etiqueta.ToString();

			if (saquinho.Impresso)
			{
				item.ForeColor = Color.Red;
				item.Font = new Font(item.Font, FontStyle.Strikeout);
				item.UseItemStyleForSubItems = true;
				btnRemoverImpressos.Enabled = true;
			}

			return item;
		}
Esempio n. 2
0
		/// <summary>
		/// Ocorre ao selecionar um ou mais itens na ListView
		/// Sempre que é selecionado e ocorre a desseleção de outro,
		/// o evento é disparado com parâmetro null. 
		/// </summary>
		private void lista_SelectedIndexChanged(object sender, System.EventArgs e)
		{
			int nISaquinhos;

            UseWaitCursor = true;
			nISaquinhos = lista.SelectedItems.Count;

			if (nISaquinhos == 0)
			{
				// Como não tem ISaquinho selecionado, o parametro null é passado.
				if (SeleçãoMudou != null)
					SeleçãoMudou(this, null);

				if (SaquinhosSelecionados != null)
					SaquinhosSelecionados(this, new ISaquinho[0]);
			}
			if (nISaquinhos == 1 && SeleçãoMudou != null)
			{
                SeleçãoMudou(this, hashListViewItemSaquinho[lista.SelectedItems[0]]);
			}
			else if (nISaquinhos > 1 && SaquinhosSelecionados != null)
			{
				ISaquinho [] ISaquinhos = new ISaquinho[nISaquinhos];

				for (int i = 0; i < nISaquinhos; i++)
                    ISaquinhos[i] = hashListViewItemSaquinho[lista.SelectedItems[i]];

				SaquinhosSelecionados(this, ISaquinhos);
			}

			AtualizarEnabledBotõesBarraFerramentas();
            MarcarStatusDesatualizado();

            UseWaitCursor = false;
        }
Esempio n. 3
0
		private void RemoverInterno(ISaquinho s)
		{
            double quantidadeRemanescente = 0;
            ListViewItem itemListView;

            if (!saquinhos.Contains(s))
            {
                ISaquinho saquinhoAlternativo = null;

                // Tentativa de obter algum ISaquinho parecido para remoção
                hashAgrupamento.TryGetValue(s.IdentificaçãoAgrupável(), out saquinhoAlternativo);

                if ((saquinhoAlternativo == null) || (quantidadeRemanescente < 0))
                    throw new Exception("Tentativa de remover um saquinho que não existia na bandeja");
                else
                {
                    quantidadeRemanescente = saquinhoAlternativo.Quantidade - s.Quantidade;
                    s = saquinhoAlternativo;
                }
            }

            itemListView = hashSaquinhoListViewItem[s];

			// Atualiza hash items
			hashAgrupamento.Remove(s.IdentificaçãoAgrupável());
            hashListViewItemSaquinho.Remove(itemListView);
            hashSaquinhoListViewItem.Remove(s);

            #if DEBUG
                if (SuspendeLeiaute)
                    throw new Exception("Tentativa de remover um item de listView com o leiatue suspenso. Devido à bug do VS isto causa um dead lock. Bug verificado tambem no VS2005");
            #endif

            itemListView.Remove();
			
			/* Podem existir vários sáquinhos agrupáveis
			 * Vários outros agrupaveis a este talvés não foram adicionados na hash
			 * uma vez que este já estava referenciado nela.
			 * Portanto, deve-se procurar por outro agrupável para ser referenciado.
             */

            saquinhos.Remove(s);

            string identificação = s.IdentificaçãoAgrupável();

			foreach (ISaquinho saquinho in saquinhos)
			{
				if (saquinho.IdentificaçãoAgrupável() == identificação)
				{
					hashAgrupamento.Add(identificação, (Saquinho) saquinho);
					break;
				}
			}

            // Atualiza dados da barra de status.
			totalMercadorias -= s.Quantidade;
			totalPeso        -= s.Quantidade * s.Peso;
            totalÍndice      -= s.Quantidade * s.Mercadoria.ÍndiceArredondado;

            if (s.Mercadoria.DePeso)
                totalÍndicePeso -= s.Quantidade * s.Mercadoria.ÍndiceArredondado;
            else
                totalÍndicePeça -= s.Quantidade * s.Mercadoria.ÍndiceArredondado;


            if (cotação != null)
                totalPreço -= CalcularValor(s);

            if (quantidadeRemanescente > 0)
            {
                ISaquinho novoSaquinho = s.Clone(quantidadeRemanescente);

                Adicionar(novoSaquinho);
            }

            AtualizarEnabledBotõesBarraFerramentas();
		}
Esempio n. 4
0
        /// <summary>
		/// Remove um saquinho da bandeja.
        /// O Saquinho pode ou não estar na bandeja. Caso não esteja, um agrupável é parcialmente removido.
		/// </summary>
        public void Remover(ISaquinho s)
        {
            RemoverInterno(s);

            if (SaquinhoExcluído != null)
                SaquinhoExcluído(this, s);
        }
Esempio n. 5
0
        private void AtualizaContagemStatus(ISaquinho sOuNovo)
        {
            totalMercadorias += sOuNovo.Quantidade;
            totalPeso += sOuNovo.Quantidade * sOuNovo.Peso;
            totalÍndice += sOuNovo.Quantidade * sOuNovo.Mercadoria.ÍndiceArredondado;
            if (sOuNovo.Mercadoria.DePeso)
                totalÍndicePeso += sOuNovo.Quantidade * sOuNovo.Mercadoria.ÍndiceArredondado;
            else
                totalÍndicePeça += sOuNovo.Quantidade * sOuNovo.Mercadoria.ÍndiceArredondado;

            if (cotação != null)
                totalPreço += CalcularValor(sOuNovo);
        }
        private void quadroMercadoria_EventoAlterou(ISaquinho saquinhoOriginal, double novaQtd, double novoPeso)
        {
            if (baseInferior.ConferirTravamento())
            {
                MessageBox.Show(ParentForm,
                    "ATENÇÃO\n\nEste documento foi travado e não pode ser alterado.",
                    "Documento travado",
                    MessageBoxButtons.OK, MessageBoxIcon.Warning);

                return;
            }

            try
            {
                bandejaAgrupada.Remover(saquinhoOriginal);
            } catch (OperationCanceledException)
            {
                return;
            }

            ISaquinho novoSaquinho = saquinhoOriginal.Clone(novaQtd);
            novoSaquinho.Mercadoria.EsquecerCoeficientePersonalizado();

            if (novoSaquinho.Mercadoria.DePeso)
                novoSaquinho.Mercadoria.Peso = novoPeso;

            bandejaAgrupada.Adicionar(novoSaquinho);

            DateTime agora = Entidades.Configuração.DadosGlobais.Instância.HoraDataAtual;

            try
            {
                bandejaHistórico.Adicionar(new SaquinhoHistóricoRelacionado(coleção.Relacionar(novoSaquinho.Mercadoria, novaQtd, novoSaquinho.Mercadoria.ÍndiceArredondado)));
            }
            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();
            }
        }
 private void bandejaAcerto_SeleçãoMudou(Apresentação.Mercadoria.Bandeja.Bandeja bandeja, ISaquinho saquinho)
 {
     quadroRastro.Visible = saquinho != null;
 }
Esempio n. 8
0
        private void bandeja_SeleçãoMudou(Apresentação.Mercadoria.Bandeja.Bandeja bandeja, ISaquinho saquinho)
        {
            if (saquinho != null)
            {
                SaquinhoEtiqueta saquinhoCofre;

                /* Garantir que nenhum OnLeave ser executado
                 * depois de alterar os dados.
                 */
                Application.DoEvents();

                saquinhoCofre = (SaquinhoEtiqueta)saquinho;

                txtReferência.Referência = saquinho.Mercadoria.Referência;
                txtPeso.Double = saquinho.Peso;
                txtQuantidade.Int = Convert.ToInt32(saquinho.Quantidade);
                cmbFormato.SelectedItem = saquinhoCofre.Etiqueta;

                cmdNovo.Text = "&Alterar";
                cmdNovo.Enabled = true;
                cmdNovo.Tag = saquinhoCofre;

                PrepararMercadoria(saquinho.Mercadoria);
            }
            else if (cmdNovo.Tag != null)
            {
                cmdNovo.Text = "&Adicionar";
                cmdNovo.Tag = null;
            }
  
        }
		/// <summary>
		/// Deve ser chamado quando o usuário seleciona uma mercadoria na bandeja para alteração de seus dados.
		/// Os dados no quadro são descatardos, e substituídos pelo saquinho passado em parâmetro.
		/// O botão deve mudar para "Alterar", e ficar não enabled até que usuário faça alguma mudança.
		/// </summary>
		/// <param name="saquinho">A ser alterado</param>
		public void AlternarParaAlteração(ISaquinho saquinho)
		{
            saquinhoAntesAlteração = saquinho.Clone(saquinho.Quantidade);
            
           
            botão.Text = "&Alterar";

            /* A mudança do txtReferência irá gerar um evento
             * de que a referencia foi alterada. 
             * Então é necessário marcar que o controle acabou de ir para o modo alternaddo,
             * evitando que o quadro volte para o adicionar.
             */
            inícioAlteração = true;

            /* Alterar os dados requer que o modo de digitação
             * rápida seja desligado durante a alteração.
             * -- Júlio, 17/03/2006
             */
            ModoRápido = false;
            chkModoRápido.Enabled = false;

            txtReferência.Txt.Text = saquinho.Mercadoria.Referência;
            txtPeso.Text = saquinho.Peso.ToString();
            txtQuantidade.Text = saquinho.Quantidade.ToString();

            lblPeso.Enabled = txtPeso.Enabled = saquinho.Mercadoria.DePeso;
            ValidarDados();

            ação = AçãoEnum.Alterar;

            inícioAlteração = false;
		}
Esempio n. 10
0
        private void bandejaAgrupada_AlteraçãoÍndiceSolicitada(Bandeja bandeja, ISaquinho saquinho)
        {
            if (!baseInferior.ConferirTravamento())
            {
                ISaquinho saquinhoParaReAdicionar = saquinho.Clone(saquinho.Quantidade);
                try
                {
                    EscolherÍndice(saquinhoParaReAdicionar.Mercadoria, ModoJanelaÍndice.MostrarSempre);
                    bandejaAgrupada.Remover(saquinho);
                }
                catch
                {
                    return;
                }

                Adicionar(saquinhoParaReAdicionar.Mercadoria, saquinhoParaReAdicionar.Quantidade, ModoJanelaÍndice.NuncaMostrarNãoAlterandoÍndice);
            }
        }
Esempio n. 11
0
 private void bandeja_SaquinhoExcluído(Apresentação.Mercadoria.Bandeja.Bandeja bandeja, ISaquinho saquinho)
 {
     opçãoImprimir.Enabled = bandeja.Count > 0;
 }
Esempio n. 12
0
        private void bandejaHistórico_SeleçãoMudou(Bandeja bandeja, ISaquinho saquinho)
        {
            // Assim que usuário clica no item do histórico, a bandeja agrupada já encontra o item para facilitar modificação
            if (saquinho != null)
            {
                if (saquinho.Mercadoria.Peso != saquinho.Peso)
                    throw new Exception("Esperava-se que o peso da mercadoria fosse o peso do saquinho.");

                if (bandejaAgrupada.Contém(saquinho.Mercadoria))
                    bandejaAgrupada.Selecionar(saquinho.Mercadoria);
            }
        }
Esempio n. 13
0
        private void bandejaAgrupada_SeleçãoMudou(Bandeja bandeja, ISaquinho saquinho)
        {
            if (saquinho != null)
            {
                quadroFoto.MostrarFoto(saquinho.Mercadoria);

                if (tipoExibiçãoAtual == TipoExibição.TipoAgrupado)
                    quadroMercadoria.AlternarParaAlteração(saquinho);
            }
            else
            {
                // Des-selecionou
                quadroMercadoria.AlternarParaAdicionar();
            }
        }
Esempio n. 14
0
 private void bandejaAgrupada_SaquinhoExcluído(Bandeja bandeja, ISaquinho saquinho)
 {
     if (!baseInferior.ConferirTravamento())
     {
         try
         {
             HistóricoRelacionamentoItem item = coleção.Relacionar(saquinho.Mercadoria, saquinho.Quantidade * -1, saquinho.Mercadoria.ÍndiceArredondado);
             bandejaHistórico.Adicionar(new SaquinhoHistóricoRelacionado(item));
         }
         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();
             throw new OperationCanceledException();
         }
     }
 }
Esempio n. 15
0
 private double CalcularValor(ISaquinho s)
 {
     return Math.Round(s.Mercadoria.CalcularPreço(cotação) * s.Quantidade, 2);
 }
Esempio n. 16
0
        /// <summary>
        /// Remove vários saquinhos semelhantes ao do parametro e adiciona um que substitui todos.
        /// </summary>
        /// <remarks> O saquinhoAtual já deve estar na bandeja </remarks>
        /// <param name="saquinhoAtual"></param>
        /// <returns>Saquinhos agrupáveis ao atual, incluíndo o do parametro</returns>
        private List<Saquinho> AgruparItem(ISaquinho saquinhoAtual)
        {
            List<Saquinho> agrupáveisAoSaquinhoAtual;
            agrupáveisAoSaquinhoAtual = ObterAgrupáveis(saquinhoAtual);

            // Se for um, tem apenas ele mesmo.
            if (agrupáveisAoSaquinhoAtual.Count > 1)
            {
                double totalQtd = 0;

                // Retira os saquinhos que serão eliminados da cópia
                foreach (Entidades.ISaquinho s in agrupáveisAoSaquinhoAtual)
                {
                    totalQtd += s.Quantidade;
                    RemoverInterno(s);
                }

                // Adiciona novo saquinho que é equivalente ao grupo
                ISaquinho novoSaquinho = saquinhoAtual.Clone(totalQtd);
                Adicionar(novoSaquinho, false);
            }

            return agrupáveisAoSaquinhoAtual;
        }
Esempio n. 17
0
		/// <summary>
		/// Atualiza elementos na ListView
		/// </summary>
		/// <param name="ISaquinho">Entidades.ISaquinho.ISaquinho a ser atualizado</param>
		/// <param name="item">Item da ListView</param>
		protected virtual void AtualizaElementoListView(ISaquinho saquinho, ListViewItem item)
		{
            if (colReferência.Index == -1)
                return;

			item.SubItems[colReferência.Index].Text = saquinho.Mercadoria.Referência;
            item.SubItems[colReferência.Index].Name = colReferência.Text;
			item.SubItems[colQuantidade.Index].Text = saquinho.Quantidade.ToString();
            item.SubItems[colQuantidade.Index].Name = colQuantidade.Text;
            item.SubItems[colPeso.Index].Text = saquinho.Peso.ToString("0.00");
            item.SubItems[colPeso.Index].Name = colPeso.Text;
            item.SubItems[colÍndice.Index].Text = Entidades.Mercadoria.Mercadoria.FormatarÍndice(saquinho.Mercadoria.ÍndiceArredondado);
            item.SubItems[colÍndice.Index].Name = colÍndice.Text;
			item.SubItems[colGrupo.Index].Text = saquinho.Mercadoria.Grupo.ToString();
            item.SubItems[colGrupo.Index].Name = colGrupo.Text;
			item.SubItems[colFaixa.Index].Text = (saquinho.Mercadoria.Faixa != null ? saquinho.Mercadoria.Faixa.ToString() : "");
            item.SubItems[colFaixa.Index].Name = colFaixa.Text;

            System.Globalization.CultureInfo cultura = DadosGlobais.Instância.Cultura;

            if (MostrarPreço)
            {
                double valorTotal = CalcularValor(saquinho);
                item.SubItems[colPreçoTot.Index].Text = valorTotal.ToString("C", cultura);
                item.SubItems[colPreçoUn.Index].Text = saquinho.Mercadoria.CalcularPreço(cotação);
            }
        }
Esempio n. 18
0
        /// <summary>
        /// Sinaliza adição ou remoção na bandeja, mostrando
        /// controle SinalizaçãoCarga com a mudança.
        /// Caso o ícone não esteja pronto, ele é carregado
        /// em segundo plano.
        /// </summary>
        private void SinalizarSaquinho(ISaquinho saquinho)
        {
            if (saquinho.Mercadoria.Ícone != null)
                SinalizaçãoCarga.Sinalizar(lista, saquinho.Mercadoria.Referência,
                    (saquinho.Mercadoria.DePeso
                    ? String.Format("{0} {1} unidade(s) com peso {2}.", (saquinho.Quantidade > 0 ? "Adicionada(s)" : "Removida(s)"), Math.Abs(saquinho.Quantidade), saquinho.Peso)
                    : String.Format("{0} {1} unidade(s).", (saquinho.Quantidade > 0 ? "Adicionada(s)" : "Removida(s)"), Math.Abs(saquinho.Quantidade))),
                    saquinho.Mercadoria.Ícone ?? new Bitmap(1, 1)).IniciarTemporizador(tempoSinalização);
            else
            {
                AsyncSinalizarSaquinhoTardiamente método = new AsyncSinalizarSaquinhoTardiamente(SinalizarSaquinhoTardiamente);
                SinalizaçãoCarga sinalização = SinalizaçãoCarga.Sinalizar(lista, saquinho.Mercadoria.Referência,
                    (saquinho.Mercadoria.DePeso
                    ? String.Format("{0} {1} unidade(s) com peso {2}.", (saquinho.Quantidade > 0 ? "Adicionada(s)" : "Removida(s)"), Math.Abs(saquinho.Quantidade), saquinho.Peso)
                    : String.Format("{0} {1} unidade(s).", (saquinho.Quantidade > 0 ? "Adicionada(s)" : "Removida(s)"), Math.Abs(saquinho.Quantidade))));

                sinalização.IniciarTemporizador(tempoSinalização);

                método.BeginInvoke(sinalização, saquinho.Mercadoria, new AsyncCallback(CallbackSinalizarSaquinhoTardiamente), método);
            }
        }
 private void bandejaAcerto_DuploClique(Apresentação.Mercadoria.Bandeja.Bandeja bandeja, ISaquinho saquinho)
 {
     AbrirRastro();
 }
Esempio n. 20
0
        private ISaquinho SubstituirSaquinho(ISaquinho s, ISaquinho sOuNovo, string chave, ISaquinho agrupável)
        {
            hashAgrupamento.Remove(chave);
            sOuNovo = s.Clone(s.Quantidade + agrupável.Quantidade);
            hashAgrupamento[chave] = sOuNovo;

            RemoverInterno(agrupável);
            return sOuNovo;
        }
        protected override ListViewItem ConstruirListView(ISaquinho saquinho)
        {
            ListViewItem item;
            SaquinhoHistóricoRelacionado saquinhoRelacionado;

            saquinhoRelacionado =
                (saquinho as SaquinhoHistóricoRelacionado);

            if (saquinhoRelacionado == null)
            {
                Exception erro;

                if (saquinho == null)
                    erro = new NullReferenceException("O saquinho não pode ser nulo");
                else
                    erro = new InvalidCastException("O saquinho não é do tipo saquinhoRelacionado");

                throw erro;
            }

            item = base.ConstruirListView(saquinho);

            item.SubItems[colData.Index].Text = saquinhoRelacionado.Data.ToString();

            if (saquinhoRelacionado.Funcionário != null)
                item.SubItems[colFuncionário.Index].Text = saquinhoRelacionado.Funcionário.Nome;

            item.SubItems[colAção.Index].Text = saquinhoRelacionado.Tipo == SaquinhoHistóricoRelacionado.TipoEnum.Removeu ? "Excluíu" : "Relacionou";

            if (saquinhoRelacionado.Tipo == SaquinhoHistóricoRelacionado.TipoEnum.Removeu)
            {
                item.ForeColor = Color.White;
                item.BackColor = Color.Red;
                item.UseItemStyleForSubItems = true;
            }

            return item;
        }
Esempio n. 22
0
 private void quadroMercadoriaExemplo_EventoAlterou(ISaquinho saquinhoOriginal, double novaQtd, double novoPeso)
 {
     bandejaExemplo.Remover(saquinhoOriginal);
     saquinhoOriginal.Mercadoria.Peso = novoPeso;
     bandejaExemplo.Adicionar(new Saquinho(saquinhoOriginal.Mercadoria, novaQtd));
 }