public override void Editar()
        {
            PreVenda pv = new PreVenda(GUID);
            //fazer um dump dos itens do objeto
            DumpElement(pv.Itens);
            DumpElement(pv.ItensEspeciais);

            //excluir 2 itens e salvar
            pv.Itens.RemoveAt(0);
            pv.Itens.RemoveAt(0);
            pv.ItensEspeciais.RemoveAt(0);
            pv.Save();

            //recarrega o objeto para conferir se salvou corretamente os itens
            pv = new PreVenda(GUID);

            //fazer um dump dos itens do objeto
            DumpElement(pv.Itens);
            DumpElement(pv.ItensEspeciais);

            ProdutoAcabadoTest acabadoTest = new ProdutoAcabadoTest();
            acabadoTest.Gravar();

            //adicionar 3 itens
            pv.Itens.Add(new Item
            {
                Quantidade = 10,
                ValorUnitarioBruto = 12.5,
                DescricaoNF = "Produto de teste cinco",
                Status = 0,
                ItemMovimentado = new Acabado(acabadoTest.GUID)
            });

            pv.Itens.Add(new Item
            {
                Quantidade = 25,
                ValorUnitarioBruto = 15,
                DescricaoNF = "Produto de teste seis",
                Status = 0,
                ItemMovimentado = new Acabado(acabadoTest.GUID)
            });

            pv.Itens.Add(new Item
            {
                Quantidade = 33,
                ValorUnitarioBruto = 17.5,
                DescricaoNF = "Produto de teste sete",
                Status = 0,
                ItemMovimentado = new Acabado(acabadoTest.GUID)
            });

            pv.Save();

            //recarrega o objeto para conferir se salvou corretamente os itens
            pv = new PreVenda(GUID);
            //fazer um dump dos itens do objeto
            DumpElement(pv.Itens);
        }
示例#2
0
        public override void Editar()
        {
            NFManual v = new NFManual(GUID);
            //fazer um dump dos itens do objeto
            DumpElement(v.Itens);

            v.Save();

            ProdutoAcabadoTest acabado = new ProdutoAcabadoTest();
            acabado.Gravar();

            //excluir 2 itens e salvar
            v.Itens.RemoveAt(0);
            v.Itens.RemoveAt(0);
            GUID = v.Save();

            //recarrega o objeto para coNFManualrir se salvou corretamente os itens
            v = new NFManual(GUID);

            //fazer um dump dos itens do objeto
            DumpElement(v.Itens);

            //adicionar 3 itens
            v.Itens.Add(new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.NFManual.Item
            {
                Quantidade = 10,
                ValorUnitarioBruto = 12.5,
                ItemMovimentado = new Acabado(acabado.GUID),
                DescricaoNF = "Produto de teste cinco",
                TabelaPreco = new Data.Cadastro.TabelaPreco.TabelaPreco().Find<Model.Cadastro.TabelaPreco.ITabelaPreco>(new Where { Limit = new Limit(1) })[0]
            });

            v.Itens.Add(new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.NFManual.Item
            {
                Quantidade = 25,
                ValorUnitarioBruto = 15,
                ItemMovimentado = new Acabado(acabado.GUID),
                DescricaoNF = "Produto de teste seis",
                TabelaPreco = new Data.Cadastro.TabelaPreco.TabelaPreco().Find<Model.Cadastro.TabelaPreco.ITabelaPreco>(new Where { Limit = new Limit(1) })[0]
            });

            v.Itens.Add(new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.NFManual.Item
            {
                Quantidade = 33,
                ValorUnitarioBruto = 17.5,
                ItemMovimentado = new Acabado(acabado.GUID),
                DescricaoNF = "Produto de teste sete",
                TabelaPreco = new Data.Cadastro.TabelaPreco.TabelaPreco().Find<Model.Cadastro.TabelaPreco.ITabelaPreco>(new Where { Limit = new Limit(1) })[0]
            });

            GUID = v.Save();

            //recarrega o objeto para coNFManualrir se salvou corretamente os itens
            v = new NFManual(GUID);
            //fazer um dump dos itens do objeto
            DumpElement(v.Itens);
        }
示例#3
0
        public override void Editar()
        {
            OpenPOS.Model.Regra.BaseCalculo.IRegra regra = new OpenPOS.Data.Regra.BaseCalculo.Regra(GUID);
            regra.Descricao = "Regra da base de cálculo com filtros";

            #region Itens do filtro
            #region Produto acabado
            ProdutoAcabadoTest produtoAcabadoTest = new ProdutoAcabadoTest();
            produtoAcabadoTest.Gravar();

            IAcabado produtoAcabado = new Acabado(produtoAcabadoTest.GUID);
            #endregion

            #region Grupo de item
            GrupoItemTest grupoItemTest = new Cadastro.Item.GrupoItemTest();
            grupoItemTest.Gravar();

            IGrupoItem grupoItem = new GrupoItem(grupoItemTest.GUID);
            #endregion

            #region NCM
            IList<INCM> ncms = new NCM().Find<INCM>();
            #endregion

            #region Regra de CFOP
            CFOPRegraTest cfopRegraTest = new CFOPRegraTest();
            cfopRegraTest.Gravar();

            ICFOPRegra cfopRegra = new CFOPRegra(cfopRegraTest.GUID);
            #endregion

            #region Regra de CSTCSOSN
            CSTCSOSNRegraTest cstcsosnRegraTest = new CSTCSOSNRegraTest();
            cstcsosnRegraTest.Gravar();

            ICSTCSOSNRegra cstcsosnRegra = new CSTCSOSNRegra(cstcsosnRegraTest.GUID);
            #endregion
            #endregion

            #region Filtro da regra de base de cálculo
            IRegraFiltro filtro = new RegraFiltro();
            filtro.Item = produtoAcabado;
            filtro.GrupoItem = grupoItem;
            filtro.NCM = ncms[0];
            filtro.CFOPRegra = cfopRegra;
            filtro.CSTCSONRegra = cstcsosnRegra;
            #endregion

            regra.Filtros.Add(filtro);
            regra.Save();
        }
示例#4
0
        public void SalvarSaldo()
        {
            VendaCFTest cupom = new VendaCFTest();
            ProdutoAcabadoTest acabadoTest = new ProdutoAcabadoTest();
            acabadoTest.Gravar();

            //-------------------------------------------------------------------------
            // Gravar 10 cupons
            //-------------------------------------------------------------------------
            for(int i = 0; i < 10; i++)
            {
                cupom.Gravar();
            }

            //-------------------------------------------------------------------------
            // Recuperar o saldo
            //-------------------------------------------------------------------------
            SaldoItem result = SaldoItem.Create(cupom.Acabado, DateTime.Today);

            DumpElement(result.Diarios);
            DumpElement(result.Mensais);
            DumpElement(result.Anuais);

            result = SaldoItem.Create(cupom.Acabado, DateTime.Today.AddYears(-1), DateTime.Today);
            DumpElement(result.Diarios);
            DumpElement(result.Mensais);
            DumpElement(result.Anuais);

            result = SaldoItem.Create(DateTime.Today);
            DumpElement(result.Diarios);
            DumpElement(result.Mensais);
            DumpElement(result.Anuais);

            result = SaldoItem.Create(DateTime.Today.AddYears(-1), DateTime.Today);
            DumpElement(result.Diarios);
            DumpElement(result.Mensais);
            DumpElement(result.Anuais);
        }
示例#5
0
        public override void Gravar()
        {
            PreVenda pv = new PreVenda();

            #region Vendedor
            Continente t = new Continente();
            t.Nome = "Europa";
            GUID guidContinente = t.Save();
            Pais p = new Pais();
            p.Nome = "Brasil";
            p.Abreviatura = "BR";
            p.CodBACEN = "1234";
            p.Continente = t;
            GUID guidPais = p.Save();
            Estado e = new Estado();
            e.Nome = "Europa";
            e.CodigoIBGE = "41256";
            e.UF = "PR";
            e.Pais = p;
            GUID guidEstado = e.Save();
            Municipio m = new Municipio();
            m.Abreviatura = "PVI";
            m.CodigoIBGE = "123546";
            m.Estado = e;
            m.Nome = "Paranavaí";
            GUID guidMunicipio = m.Save();
            Cidade c = new Cidade();
            c.Abreviatura = "GR";
            c.Municipio = m;
            c.Nome = "Graciosa";
            GUID = c.Save();

            Logradouro l = new Logradouro();
            l.Descricao = "Avenida";
            l.Abreviatura = "Av";
            GUID guidLogradouro = l.Save();

            Bairro b = new Bairro();
            b.Cidade = c;
            b.Descricao = "Centro";
            GUID guidBairro = b.Save();

            OpenPOS.Data.Cadastro.Endereco.Endereco end = new OpenPOS.Data.Cadastro.Endereco.Endereco();
            end.Logradouro = l;
            end.CEP = "87704020";
            end.Endereco = "Joaquim da Silva";
            end.Bairro = b;
            string guidEndereco = end.Save();

            OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica fisica = new OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica();
            fisica.CPF = "05210438910";
            fisica.DataNascimento = new DateTime(1985, 07, 27);
            fisica.EstadoCivil = Enuns.Cadastro.Pessoa.EstadoCivil.Casado;
            fisica.MaeNome = "Teste";
            fisica.PaiNome = "Teste";
            fisica.RG = "90702343";
            fisica.RGEmissao = new DateTime(1995, 12, 12);
            Estado estado = new Estado(guidEstado);
            fisica.RGEstado = estado;
            fisica.RGOrgao = "SSPPR";
            fisica.RGTipoVisto = "";
            fisica.Sexo = Enuns.Cadastro.Pessoa.Sexo.Masculino;

            OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica juridica = new OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica();
            juridica.CNPJ = "75480764000120";
            juridica.DataAbertura = new DateTime(1999, 10, 10);
            juridica.IM = "1205";
            juridica.ISuf = "";
            juridica.RamoAtividade = new RamoAtividade().Find<IRamoAtividade>()[0];

            OpenPOS.Data.Cadastro.Pessoa.Endereco endereco = new OpenPOS.Data.Cadastro.Pessoa.Endereco();
            endereco.CaixaPostal = "123";
            endereco.Cobranca = true;
            endereco.Complemento = "teste";
            endereco.Correspondencia = true;
            endereco.Endereco = end;
            endereco.Entrega = true;
            endereco.Faturamento = true;
            endereco.Numero = "1234";
            endereco.Principal = true;
            endereco.Proximidade = "Estadio";
            endereco.Retirada = true;
            endereco.TipoEndereco = Enuns.Cadastro.Endereco.TipoEndereco.Principal;

            IVendedor vendedor = new Vendedor().Find<IVendedor>(new Where { Limit = new Limit(1, 1) })[0];
            #endregion

            #region DadoPessoa

            Model.Faturamento.Lancamento.Movimento.IDadoPessoa dadoPessoa =
                new Data.Faturamento.Lancamento.Movimento.DadoPessoa.DadoPessoa();

            ICliente cliente = CriarCliente();
            dadoPessoa.Cliente = cliente;
            #endregion

            pv.TabelaPreco = new Data.Cadastro.TabelaPreco.TabelaPreco().Find<Model.Cadastro.TabelaPreco.ITabelaPreco>(new Where { Limit = new Limit(1) })[0];
            pv.DadoPessoa = dadoPessoa;
            pv.COO = 123457;

            #region Frete
            Frete frete = new Frete();
            frete.Descricao = "Frete";
            frete.Save();
            #endregion

            #region Desconto
            Desconto desconto = new Desconto();
            desconto.Descricao = "Desconto";
            desconto.Save();
            #endregion

            #region Encargos
            EncargoFinanceiro encargoFinanceiro = new EncargoFinanceiro();
            encargoFinanceiro.Descricao = "Encargo Financeiro";
            encargoFinanceiro.Save();
            #endregion

            #region CFOP
            ICFOP cfop = new CFOP().Find<ICFOP>(new Where { Limit = new Limit(1, 1) })[0];
            #endregion

            #region items
            ProdutoAcabadoTest acabadoTest = new ProdutoAcabadoTest();

            for(int i = 0; i < 7; i++)
            {
                acabadoTest.Gravar();
                pv.Itens.Add(new Item
                {
                    Vendedor = vendedor,
                    Quantidade = new Random().NextDouble(7, 21),
                    ValorUnitarioBruto = new Random().NextDouble(7, 42),
                    DescricaoNF = "Produto de teste um",
                    Status = 0,
                    ItemMovimentado = new Acabado(acabadoTest.GUID),
                    CFOP = cfop,
                    ItensEspeciais = new List<IEspecial> {
                    new Especial{
                        Ordem = 0,
                        ItemEspecial  = frete,
                        Valor = new Random().NextDouble(21, 77)
                    },
                    new Especial{
                        Ordem = 1,
                        ItemEspecial = desconto,
                        Valor = new Random().NextDouble(21, 77)
                    },
                    new Especial{
                        Ordem = 2,
                        ItemEspecial = encargoFinanceiro,
                        Valor = new Random().NextDouble(21, 77)
                    },
                }
                });
            }
            #endregion

            #region Parcelas
            //-------------------------------------------------------------------------
            // Conta Corrente
            //-------------------------------------------------------------------------
            IContaCorrente contaCorrente = new ContaCorrente();
            contaCorrente.Descricao = new Random().NextString();
            contaCorrente.Save();

            //-------------------------------------------------------------------------
            // Criar uma condição de pagamento
            //-------------------------------------------------------------------------
            ICondicaoPagamento condicaoPagamento = new CondicaoPagamento();
            condicaoPagamento.Descricao = "30/60";
            condicaoPagamento.PrazoMedio = 1;
            condicaoPagamento.FormaCalculoVencimento = Enuns.Cadastro.Financeiro.FormaCalculoVencimento.Mensal;
            condicaoPagamento.VencimentoFeriado = Enuns.Cadastro.Financeiro.VencimentoFeriado.Manter;
            condicaoPagamento.MesmoDiaMes = false;

            #region Período de vencimento
            IPeriodo periodo = new OpenPOS.Data.Cadastro.Periodo.Periodo();
            periodo.Tipo = TipoVencimento.ManualMes;
            periodo.Descricao = "Período mensal";
            periodo.Save();
            #endregion

            IParcela parcelaUm = new Parcela();
            parcelaUm.APartirDataEmissao = 30;
            parcelaUm.APartirDataVencimentoAnterior = 30;
            parcelaUm.Percentual = 35;
            parcelaUm.PeriodoVencimento = periodo;
            parcelaUm.PeriodoVencimento = periodo;
            condicaoPagamento.Parcelas.Add(parcelaUm);

            IParcela parcelaDois = new Parcela();
            parcelaDois.APartirDataEmissao = 30;
            parcelaDois.APartirDataVencimentoAnterior = 60;
            parcelaDois.Percentual = 65;
            parcelaDois.PeriodoVencimento = periodo;
            parcelaDois.PeriodoVencimento = periodo;
            condicaoPagamento.Parcelas.Add(parcelaDois);
            condicaoPagamento.Save();

            pv.CondicaoPagamento = condicaoPagamento;

            #endregion

            GUID = pv.Save();
        }
示例#6
0
        public override void Gravar()
        {
            NFManual v = new NFManual();
            v.QuantidadeVolume = 3;
            v.Modelo = "01";

            ProdutoAcabadoTest acabado = new ProdutoAcabadoTest();
            acabado.Gravar();

            v.DadoPessoa = new DadoPessoa
            {
                Cliente = Settings.ConsumidorFinal
            };
            v.TabelaPreco = new Data.Cadastro.TabelaPreco.TabelaPreco().Find<Model.Cadastro.TabelaPreco.ITabelaPreco>(new Where { Limit = new Limit(1) })[0];

            v.Itens.Add(new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.NFManual.Item
            {
                Quantidade = 25,
                ValorUnitarioBruto = 15,
                DescricaoNF = "Produto de teste um",
                ItemMovimentado = new Acabado(acabado.GUID),
                Conferido = true,
                ValorImpostoAproximadoEstadual = 1.01,
                ValorImpostoAproximadoImportado = 1.02,
                ValorImpostoAproximadoMunicipio = 1.03,
                ChaveIBPT = "teste",
                TabelaPreco = new Data.Cadastro.TabelaPreco.TabelaPreco().Find<Model.Cadastro.TabelaPreco.ITabelaPreco>(new Where { Limit = new Limit(1) })[0]
            });
            v.Itens.Add(new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.NFManual.Item
            {
                Quantidade = 25,
                ValorUnitarioBruto = 15,
                DescricaoNF = "Produto de teste dois",
                ItemMovimentado = new Acabado(acabado.GUID),
                Conferido = true,
                TabelaPreco = new Data.Cadastro.TabelaPreco.TabelaPreco().Find<Model.Cadastro.TabelaPreco.ITabelaPreco>(new Where { Limit = new Limit(1) })[0]
            });
            v.Itens.Add(new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.NFManual.Item
            {
                Quantidade = 25,
                ValorUnitarioBruto = 15,
                DescricaoNF = "Produto de teste tres",
                ItemMovimentado = new Acabado(acabado.GUID),
                Conferido = true,
                TabelaPreco = new Data.Cadastro.TabelaPreco.TabelaPreco().Find<Model.Cadastro.TabelaPreco.ITabelaPreco>(new Where { Limit = new Limit(1) })[0]
            });

            GUID = v.Save();
        }
        public override void Gravar()
        {
            PreVenda pv = new PreVenda();

            #region Vendedor
            Model.Cadastro.Endereco.IEndereco end = new Data.Cadastro.Endereco.Endereco().Find<Model.Cadastro.Endereco.IEndereco>(new Where { Limit = 1 })[0];

            OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica fisica = new OpenPOS.Data.Cadastro.Pessoa.Fisica.Fisica();
            fisica.CPF = "05210438910";
            fisica.DataNascimento = new DateTime(1985, 07, 27);
            fisica.EstadoCivil = Enuns.Cadastro.Pessoa.EstadoCivil.Casado;
            fisica.MaeNome = "Teste";
            fisica.PaiNome = "Teste";
            fisica.RG = "90702343";
            fisica.RGEmissao = new DateTime(1995, 12, 12);
            fisica.RGEstado = end.Estado;
            fisica.RGOrgao = "SSPPR";
            fisica.RGTipoVisto = "";
            fisica.Sexo = Enuns.Cadastro.Pessoa.Sexo.Masculino;

            OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica juridica = new OpenPOS.Data.Cadastro.Pessoa.Juridica.Juridica();
            juridica.CNPJ = "75480764000120";
            juridica.DataAbertura = new DateTime(1999, 10, 10);
            juridica.IM = "1205";
            juridica.ISuf = "";
            juridica.RamoAtividade = new RamoAtividade().Find<IRamoAtividade>()[0];

            OpenPOS.Data.Cadastro.Pessoa.Endereco endereco = new OpenPOS.Data.Cadastro.Pessoa.Endereco();
            endereco.CaixaPostal = "123";
            endereco.Cobranca = true;
            endereco.Complemento = "teste";
            endereco.Correspondencia = true;
            endereco.Endereco = end;
            endereco.Entrega = true;
            endereco.Faturamento = true;
            endereco.Numero = "1234";
            endereco.Principal = true;
            endereco.Proximidade = "Estadio";
            endereco.Retirada = true;
            endereco.TipoEndereco = Enuns.Cadastro.Endereco.TipoEndereco.Principal;

            IVendedor vendedor = new Vendedor().Find<IVendedor>(new Where { Limit = new Limit(1, 1) })[0];
            #endregion

            #region DadoPessoa

            Model.Faturamento.Lancamento.Movimento.IDadoPessoa dadoPessoa =
                new Data.Faturamento.Lancamento.Movimento.DadoPessoa.DadoPessoa();

            ICliente cliente = new Cliente().Find<ICliente>(new Where { Limit = new Limit(1, 1) })[0];
            dadoPessoa.Cliente = cliente;
            #endregion

            pv.TabelaPreco = new Data.Cadastro.TabelaPreco.TabelaPreco().Find<Model.Cadastro.TabelaPreco.ITabelaPreco>(new Where { Limit = new Limit(1) })[0];
            pv.DadoPessoa = dadoPessoa;
            pv.COO = 123457;

            #region Frete
            Frete frete = new Frete();
            frete.Descricao = "Frete";
            frete.Save();
            #endregion

            #region Desconto
            Desconto desconto = new Desconto();
            desconto.Descricao = "Desconto";
            desconto.Save();
            #endregion

            #region Encargos
            EncargoFinanceiro encargoFinanceiro = new EncargoFinanceiro();
            encargoFinanceiro.Descricao = "Encargo Financeiro";
            encargoFinanceiro.Save();
            #endregion

            #region CFOP
            ICFOP cfop = new CFOP().Find<ICFOP>(new Where { Limit = new Limit(1, 1) })[0];
            #endregion

            #region items
            ProdutoAcabadoTest acabadoTest = new ProdutoAcabadoTest();

            for(int i = 0; i < 3; i++)
            {
                acabadoTest.Gravar();
                pv.Itens.Add(new Item
                {
                    Quantidade = new Random().NextDouble(7, 21),
                    ValorUnitarioBruto = new Random().NextDouble(7, 42),
                    DescricaoNF = "Produto de teste um",
                    Status = 0,
                    ItemMovimentado = new Acabado(acabadoTest.GUID),
                    CFOP = cfop,
                    Vendedor = vendedor,
                    ItensEspeciais = new List<IEspecial> {
                    new Especial{
                        Ordem = 0,
                        ItemEspecial  = frete,
                        Valor = 10
                    },
                    new Especial{
                        Ordem = 1,
                        ItemEspecial = desconto,
                        Valor = 10
                    },
                    new Especial{
                        Ordem = 2,
                        ItemEspecial = encargoFinanceiro,
                        Valor = 10
                    },
                }
                });
            }
            #endregion

            #region itens especiais
            pv.ItensEspeciais = new List<IEspecial> {
                    new Especial{
                        Ordem = 0,
                        ItemEspecial  = frete,
                        Valor = 12
                    },
                    new Especial{
                        Ordem = 1,
                        ItemEspecial = desconto,
                        Valor = 12
                    },
                    new Especial{
                        Ordem = 2,
                        ItemEspecial = desconto,
                        Valor = 12
                    },
                    new Especial{
                        Ordem = 3,
                        ItemEspecial = encargoFinanceiro,
                        Valor = 12
                    }};
            #endregion

            GUID = pv.Save();
        }
示例#8
0
        public void RegraTributoCalculoTest()
        {
            #region Cadastrar uma regra de CFOP
            ICFOPRegra cfop = new CFOPRegra();
            cfop.Descricao = "Regra CFOP -  Venda Consumidor Final";
            cfop.CFOP = new CFOP().Find<ICFOP>(new Where() { Limit = 1 })[0];
            cfop.Filtros.Add(new CFOPRegraFiltro() { TipoLancamento = Enuns.Faturamento.Lancamento.Tipo.CupomFiscal });
            cfop.Save();
            #endregion

            #region Cadastrar uma regra de CST
            ICSTCSOSN cstCodigo = new CSTCSOSN();
            cstCodigo.Codigo = "00";
            cstCodigo.Descricao = "Tributado Integralmente";
            cstCodigo.Save();

            ICSTCSOSNRegra cst = new CSTCSOSNRegra();
            cst.Descricao = "Teste Regra";
            cst.CSTCSOSNCodigos.Add(new CSTCSOSNRegraCodigo() { CSTCSOSNCodigo = new CSTCSOSN().Find<ICSTCSOSN>()[0] });
            cst.Filtros.Add(new CSTCSOSNRegraFiltro() { CFOPRegra = cfop });
            cst.Save();
            #endregion

            #region Regra Tributo

            ITributoRegra t = new TributoRegra();
            t.Descricao = "Regra - Venda Consumidor Final";

            ITributo tributo = new Tributo();
            tributo.TipoTributo = Enuns.Cadastro.Tributo.TipoTributo.ICMS;
            tributo.Descricao = "ICMS";
            tributo.Aliquotas = new List<IAliquotaTributo>
            {
                new DCT.AliquotaTributo{Valor = 18.00}
            };
            t.Aliquotas.Add(new TributoRegraAliquota() { Aliquota = tributo.Aliquotas[0] });
            t.Filtros.Add(new TributoRegraFiltro() { CFOPRegra = cfop });
            tributo.Save();

            t.Save();
            #endregion

            #region Filtro da regra de base de cálculo
            IRegraFiltro filtro = new RegraFiltro();
            filtro.TipoTributo = Enuns.Cadastro.Tributo.TipoTributo.ICMS;
            #endregion

            #region Regra da base de cálculo
            OpenPOS.Model.Regra.BaseCalculo.IRegra regraBC = new OpenPOS.Data.Regra.BaseCalculo.Regra();
            regraBC.Descricao = "Regra de base de cálculo";
            regraBC.Formula = "";
            regraBC.Filtros.Add(filtro);
            regraBC.Save();
            #endregion

            //-------------------------------------------------------------------------
            // Como teste pode recuperar qualquer ECF
            //-------------------------------------------------------------------------
            IUnidade un = new Unidade().Find()[0] as IUnidade;
            IVendedor vendedor = new Vendedor().Find<IVendedor>(new Where { Limit = 1 })[0];
            VendaCF v = new VendaCF();
            ProdutoAcabadoTest acabadoTest = new ProdutoAcabadoTest();
            acabadoTest.Gravar();
            v.TabelaPreco = new TabelaPreco().Find<Model.Cadastro.TabelaPreco.ITabelaPreco>(new Where { Limit = new Limit(1) })[0];

            v.DadoPessoa = new DadoPessoa
            {
                Cliente = new OpenPOS.Data.Cadastro.Pessoa.Cliente().Find<ICliente>(new Where() { Limit = 1 })[0]
            };

            v.EmissorCupom = new OpenPOS.Data.Cadastro.Pessoa.Usuario().Find<IUsuario>(new Where() { Limit = 1 })[0];

            // TODO: Voltar ao normal
            if (new AbreCaixa().Find<IAbreCaixa>(new Where() { { "cxa_AbreFechaCaixa.Status", 0 } }).Count > 0)
                v.AbreFechaCaixa = new AbreCaixa().Find<IAbreCaixa>(new Where() { { "cxa_AbreFechaCaixa.Status", 0 } })[0];
            else
            {
                v.AbreFechaCaixa = new AbreCaixa().PermiteAbrir(Environment.MachineName, DateTime.Now);
            }

            v.Itens.Add(new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.VendaCF.Item
            {
                Quantidade = new Random().NextDouble(15, 50),
                ValorUnitarioBruto = new Random().NextDouble(15, 50),
                DescricaoNF = "Produto de teste um",
                SituacaoTributaria = SituacaoTributaria.ISSQN,
                ItemMovimentado = new Acabado(acabadoTest.GUID),
                Unidade = un,
                Vendedor = vendedor,
                Parent = v
            });
            v.Itens.Add(new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.VendaCF.Item
            {
                Quantidade = new Random().NextDouble(15, 50),
                ValorUnitarioBruto = new Random().NextDouble(15, 50),
                DescricaoNF = "Produto de teste dois",
                SituacaoTributaria = SituacaoTributaria.Cancelamento,
                ItemMovimentado = new Acabado(acabadoTest.GUID),
                Unidade = un,
                Vendedor = vendedor,
                Parent = v

            });
            v.Itens.Add(new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.VendaCF.Item
            {
                Quantidade = new Random().NextDouble(15, 50),
                ValorUnitarioBruto = new Random().NextDouble(15, 50),
                DescricaoNF = "Produto de teste tres",
                SituacaoTributaria = "18,00",
                ItemMovimentado = new Acabado(acabadoTest.GUID),
                Unidade = un,
                Vendedor = vendedor,
                Parent = v
            });
            v.NumeroOrdemECF = 123;
            v.NumeroSerieECF = "212lklk1kl";
            v.COO = 123458;
            GUID = v.SaveTemp();

            v = new VendaCF(GUID);
            #region Regra Tributo

            Model.Faturamento.Lancamento.Movimento.Item.IItem item = v.Itens[0];
            RegraCFOPResult resultCFOP = new RetornaCFOP(item).ExecutarRegra(new RegraCFOPFilter() { Tipo = v.Tipo });
            RegraCSTCSOSNResult resultCST = new RetornaCSTCSOSN(item).ExecutarRegra(new RegraCSTCSOSNFilter() { CFOPRegra = resultCFOP.Regra });
            RegraTributoResult resultTributo = new CalcularTributo(item).ExecutarRegra(new RegraTributoFilter() { CFOPRegra = resultCFOP.Regra, CSTCSOSNRegra = resultCST.Regra });
            #endregion
        }