Exemplo n.º 1
0
        async void Concluir(object sender, RoutedEventArgs e)
        {
            await Task.Delay(500);

            var produto = roteiro.Finalizar();

            var caixa = new DefinirTotalImpostos();

            if (await caixa.ShowAsync() == ContentDialogResult.Primary && caixa.ValorTotalTributos != 0)
            {
                produto.Impostos.vTotTrib = ExtensoesPrincipal.ToStr(caixa.ValorTotalTributos);
            }
            else
            {
                produto.Impostos.vTotTrib = null;
            }

            //Remove tela de manipulação do produto e de escolha dos impostos
            Frame.BackStack.RemoveAt(Frame.BackStack.Count - 1);
            Frame.BackStack.RemoveAt(Frame.BackStack.Count - 1);

            var parametro = Frame.BackStack[Frame.BackStack.Count - 1].Parameter;

            if (parametro is ViewProdutoVenda.IControleViewProdutoFiscal controle)
            {
                controle.Adicionar(produto);
            }
            else
            {
                throw new Exception();
            }

            BasicMainPage.Current.Retornar();
        }
        public async Task <DetalhesProdutos> AplicarTributacaoAutomatica(bool definirTotalImpostos = true)
        {
            var icms = Produto.Auxiliar.GetICMSArmazenados();
            var imps = Produto.Auxiliar.GetImpSimplesArmazenados();

            var padrao        = Produto.ImpostosPadrao;
            var detalhamentos = new IDetalhamentoImposto[padrao.Length];

            for (int i = 0; i < padrao.Length; i++)
            {
                var(Tipo, NomeTemplate, CST) = padrao[i];
                ImpostoArmazenado impPronto;
                if (Tipo == PrincipaisImpostos.ICMS)
                {
                    impPronto = icms.First(Analisar);
                }
                else
                {
                    impPronto = imps.First(Analisar);
                }

                bool Analisar(ImpostoArmazenado x) => x.Tipo == Tipo && x.NomeTemplate == NomeTemplate && x.CST == CST;

                detalhamentos[i] = impPronto;
            }
            var roteiro = new RoteiroAdicaoImpostos(detalhamentos, Produto.Completo);
            var produto = roteiro.Finalizar();

            if (definirTotalImpostos)
            {
                var caixa = new DefinirTotalImpostos();
                if (await caixa.ShowAsync() == ContentDialogResult.Primary &&
                    caixa.ValorTotalTributos != 0)
                {
                    produto.Impostos.vTotTrib = ExtensoesPrincipal.ToStr(caixa.ValorTotalTributos);
                }
                else
                {
                    produto.Impostos.vTotTrib = null;
                }
            }
            else
            {
                produto.Impostos.vTotTrib = null;
            }
            return(produto);
        }