Пример #1
0
        public void AguardaRespostaSefazComErroDoUniNFeErr()
        {
            Gravar();
            var nfe = new Data.Faturamento.Lancamento.Movimento.NFe.NFe(GUID);

            var text = File.ReadAllText(Directory.GetCurrentDirectory() + "\\Faturamento\\Lancamento\\Movimento\\NFeTestFiles\\error.err");
            var path = OpenPOS.Settings.NFe.PastaRetorno + ChaveNFe.Create(nfe) + ".err";
            File.WriteAllText(path, text);

            Excluir();
            File.Delete(path);
        }
Пример #2
0
        public void AguardaRespostaSefazComArquivoDeLote()
        {
            Gravar();
            var nfe = new Data.Faturamento.Lancamento.Movimento.NFe.NFe(GUID);

            var text1 = File.ReadAllText(Directory.GetCurrentDirectory() + "\\Faturamento\\Lancamento\\Movimento\\NFeTestFiles\\num-lot.xml");
            var path1 = OpenPOS.Settings.NFe.PastaRetorno + ChaveNFe.Create(nfe) + "-num-lot.xml";
            File.WriteAllText(path1, text1);

            var text2 = File.ReadAllText(Directory.GetCurrentDirectory() + "\\Faturamento\\Lancamento\\Movimento\\NFeTestFiles\\rec.xml");
            var path2 = OpenPOS.Settings.NFe.PastaRetorno + "000000000000008-rec.xml";
            File.WriteAllText(path2, text2);

            Excluir();
            File.Delete(path1);
            File.Delete(path2);
        }
Пример #3
0
        /// <summary>
        /// Cria uma Nota Fiscal Eletrônica de acordo com o movimento informado
        /// </summary>
        /// <param name="movimento">Movimento que será transformado em Nota Fiscal Eletrônica</param>
        /// <returns></returns>
        public static INF Create(IMovimento movimento)
        {
            if (movimento.IsNullOrEmpty()) return null;

            INF result = new Data.Faturamento.Lancamento.Movimento.NFe.NFe();

            //Popula os dados do cabeçalho com o movimento informado
            result.DadoPessoa = movimento.DadoPessoa;
            result.DataHoraMovimento = movimento.DataHoraMovimento;
            result.DataEmissao = movimento.DataEmissao;
            result.ItensEspeciais = movimento.ItensEspeciais;
            result.TabelaPreco = movimento.TabelaPreco;
            result.CondicaoPagamento = movimento.CondicaoPagamento;
            result.Parcelas = movimento.Parcelas;

            //Popula os itens com os itens do movimento
            result.Itens = new List<Model.Faturamento.Lancamento.Movimento.Item.IItem>();

            foreach (Model.Faturamento.Lancamento.Movimento.Item.IItem item in movimento.Itens)
            {
                result.Itens.Add(new Data.Faturamento.Lancamento.Movimento.Item.NFe.Item()
                        {
                            EGUID = item.EGUID,
                            ItemMovimentado = item.ItemMovimentado,
                            DescricaoNF = item.DescricaoNF,
                            CFOP = item.CFOP,
                            Conferido = item.Conferido,
                            ItensEspeciais = item.ItensEspeciais,
                            Ordem = item.Ordem,
                            Quantidade = item.Quantidade,
                            QuantidadeConferida = item.QuantidadeConferida,
                            Unidade = item.Unidade,
                            ValorDescontoAcrescimo = item.ValorDescontoAcrescimo,
                            ValorUnitarioBruto = item.ValorUnitarioBruto,
                            Vendedor = item.Vendedor,
                            PercentualImpostoAproximadoFederal = item.PercentualImpostoAproximadoFederal,
                            PercentualImpostoAproximadoImport = item.PercentualImpostoAproximadoImport,
                            PercentualImpostoAproximadoEstadual = item.PercentualImpostoAproximadoEstadual,
                            PercentualImpostoAproximadoMunicipal = item.PercentualImpostoAproximadoMunicipal,
                            TabelaPreco = item.TabelaPreco
                        });
            }

            return result;
        }
Пример #4
0
        public void AguardaRespostaSefazNOTAEmProcessamentoComProtocolo()
        {
            Gravar();
            var nfe = new Data.Faturamento.Lancamento.Movimento.NFe.NFe(GUID);

            // Gera nota na pasta de processamento
            var pro = OpenPOS.Settings.NFe.PastaEnvio + "Processamento/" + ChaveNFe.Create(nfe) + "-nfe.xml";
            File.WriteAllText(pro, "XABLAU");

            // Gera arquivo de retorno de consulta de situação
            string text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                            "<retConsSitNFe xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"2.00\">" +
                               "<tpAmb>2</tpAmb>" +
                               "<verAplic>2.00</verAplic>" +
                               "<cStat>100</cStat>" +
                               "<xMotivo>AUTORIZADA</xMotivo>" +
                               "<cUF>31</cUF>" +
                               "<chNFe>31100371139034000100550000009999201000000005</chNFe>" +
                               "<protNFe versao=\"2.00\">" +
                                  "<infProt Id=\"ID31100371139034000100550000009999201000000005\">" +
                                     "<tpAmb>2</tpAmb>" +
                                     "<verAplic>2.00</verAplic>" +
                                     "<chNFe>31100371139034000100550000009999201000000005</chNFe>" +
                                     "<dhRecbto>2010-03-17T17:07:34</dhRecbto>" +
                                     "<nProt>131100015665325</nProt>" +
                                     "<digVal>ajBuZFhtT3JyT0VFVHIzdDJvZTc3RHhURElnPQ==</digVal>" +
                                     "<cStat>100</cStat>" +
                                     "<xMotivo>AUTORIZADA</xMotivo>" +
                                  "</infProt>" +
                               "</protNFe>" +
                            "</retConsSitNFe>";

            var path = OpenPOS.Settings.NFe.PastaRetorno + ChaveNFe.Create(nfe) + "-sit.xml";
            File.WriteAllText(path, text);

            // Limpa dados gerados
            Excluir();
            File.Delete(pro);
        }
Пример #5
0
        /// <summary>
        /// Cancela o movimento
        /// </summary>
        /// <param name="sender">Objeto que disparou o evento</param>
        /// <param name="e">Argumento do evento gerado</param>
        protected void CancelarNF_Click(object sender, EventArgs e)
        {
            INF nf = null;

            Wait.Show();

            try
            {
                var g = (from i in MainGrid.SelectedRows.Cast<DataGridViewRow>()
                         select new { Identificador = i.Cells[0].Value.ToString() });

                if(CurrentObject is INFe)
                    nf = new Data.Faturamento.Lancamento.Movimento.NFe.NFe((GUID)g.First().Identificador.ToString());
                else if(CurrentObject is Model.Faturamento.Lancamento.Movimento.NFCe.INFCe)
                    nf = new Data.Faturamento.Lancamento.Movimento.NFCe.NFCe((GUID)g.First().Identificador.ToString());

                if(nf.Eventos.Where(k => k.Tipo.Equals("110111")).Count() > 0)
                {
                    MessageBox.ShowError("A Nota Fiscal selecionada já foi cancelada!");
                    return;
                }
                else if(nf.StatusNF != NFe.Status.Autorizado)
                {
                    MessageBox.ShowError("A Nota Fiscal selecionada não foi autorizada e portanto não pode ser cancelada!");
                    return;
                }

                if(MessageBox.Show("A Nota Fiscal com os dados abaixo será cancelada. Deseja continuar?\r\nNúmero: " + nf.EGUID.ToString() + " \r\nDestinatário: " + nf.DadoPessoa.Cliente.NomeFantasia + " \r\nValor R$: " + nf.ValorTotalLiquido.ToString(), "Cancelamento", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
                {
                    Wait.Show();

                    if(nf.Cancelar("Cancelado pelo sistema"))
                    {
                        LogNFe.Save(Enuns.TipoEvento.NFeGeradoXML, "Gerado o XML da nota fiscal com sucesso", nf.Chave, nf.StatusNF);

                        OpenPOS.NFe.NFeResult result = ((OpenPOS.Data.Abstract.Faturamento.Lancamento.Movimento.NF.NFBase)nf).ProcessaResposta();

                        if(result.Success)
                        {

                            LogNFe.Save(Enuns.TipoEvento.NFeEventoCancelamentoAutorizado,
                                               "Evento de cancelamento efetuado com sucesso",
                                               nf.Chave,
                                               result.Evento.Status);

                            nf.Eventos.Add(new Evento()
                            {
                                Numero = result.Evento.NumSeqEvento,
                                Orgao = result.Evento.Orgao,
                                Status = result.Evento.Status,
                                Tipo = result.Evento.TipoEvento,
                                TipoAmbiente = result.Evento.TipoAmbiente,
                                DataHoraEvento = result.Evento.DataHoraEvento,
                            });

                            nf.Eventos.Save<IEvento, INF>(nf, () =>
                            {
                                DbContext.CreateConnection().ExecuteNonQuery("DELETE FROM fat_LanMovNFEventos WHERE GUIDLanMovNF	 = @p1", new Parameter[]{
                                new Parameter
                                 {
                                    ParameterName = "@p1",
                                    Value = GUID.ToString()
                                }});
                            });
                            MessageBox.Show("Nota Fiscal cancelada com sucesso!");
                            Toolbar.CancelButton.PerformClick();
                        }
                        else
                        {
                            string motivo = result.Motivo == null ? result.Message : result.Motivo;

                            LogNFe.Save(Enuns.TipoEvento.Erro,
                                result.Motivo = motivo == null ? "Ocorreu um erro" : motivo,
                                result.Chave = result.Chave == null ? nf.Chave : result.Chave,
                                result.Status = result.Status == null ? NFe.Status.NaoDefinido : result.Status);

                            MessageBox.ShowWarning(result.Motivo);
                        }
                    }
                }
            }
            catch(Exception ex)
            {
                LogNFe.Save(Enuns.TipoEvento.Erro,
                        ex.Message,
                        nf.Chave,
                        nf.StatusNF);
                MessageBox.ShowError(ex);
            }
            finally
            {
                MainGrid.Refresh();
                Wait.Close();
            }
        }
Пример #6
0
 /// <summary>
 /// Envia nfe 
 /// </summary>
 /// <param name="nfe">objeto nfe</param>
 protected internal void EnviaNFE(GUID guid)
 {
     OpenPOS.Data.Faturamento.Lancamento.Movimento.NFe.NFe nfe = new Data.Faturamento.Lancamento.Movimento.NFe.NFe(guid);
     EnviaNFE(nfe, true);
 }
Пример #7
0
        /// <summary>
        /// Gera o arquivo magnético do sintegra
        /// </summary>
        public void GerarArquivoMagnetico()
        {
            Connection connection = null;

            try
            {
                connection = DbContext.CreateConnection();

                #region Registro 10
                Registro10.RazaoSocial = Settings.EmpresaAtual.RazaoSocial;
                Registro10.CNPJ = Unimake.Utilities.OnlyNumbers(Settings.EmpresaAtual.Juridica.CNPJ, "/-.").ToString();
                Registro10.Inscricao = Settings.EmpresaAtual.Juridica.IE;
                Registro10.Cidade = Settings.EmpresaAtual.Enderecos.FirstOrDefault().Endereco.Cidade.Nome;
                Registro10.Estado = Settings.EmpresaAtual.Enderecos.FirstOrDefault().Endereco.Estado.UF;
                Registro10.Telefone = Settings.EmpresaAtual.CanaisComunicacao.Where(w => w.TipoCanal == Enuns.Cadastro.Pessoa.TipoCanal.Telefone).FirstOrDefault().IdentificadorCanal;
                Registro10.CodigoConvenio = Unimake.Convert.ToInt(Enuns.Arquivo.Sintegra.CodigoEstruturaArquivo.ICMS_76_03);
                Registro10.NaturezaInformacoes = Unimake.Convert.ToInt(Enuns.Arquivo.Sintegra.CodigoIdentificacaoNatureza.Totalidade);
                #endregion

                #region Registro 11
                Registro11.Endereco = Settings.EmpresaAtual.Enderecos.FirstOrDefault().Endereco.Endereco;
                Registro11.Numero = Settings.EmpresaAtual.Enderecos.FirstOrDefault().Numero.ToString();
                Registro11.Complemento = Settings.EmpresaAtual.Enderecos.FirstOrDefault().Complemento;
                Registro11.Bairro = Settings.EmpresaAtual.Enderecos.FirstOrDefault().Endereco.Bairro.Descricao;
                Registro11.Cep = Settings.EmpresaAtual.Enderecos.FirstOrDefault().Endereco.CEP;
                Registro11.Telefone = Settings.EmpresaAtual.CanaisComunicacao.Where(w => w.TipoCanal == Enuns.Cadastro.Pessoa.TipoCanal.Telefone).FirstOrDefault().IdentificadorCanal;
                Registro11.Responsavel = "Responsavel pela empresa";
                #endregion

                #region Registro 50
                IList<IMovimento> vendas = new Data.Faturamento.Lancamento.Movimento.NFe.NFe().Find<IMovimento>(
                        new Where {
                    {
                        "fat_LanMov.DataHoraMovimento BETWEEN @p1 AND @p2"
                    },
                    {
                        "fat_Lan.Tipo = @tipo"
                    }
                }, new Parameter[] {
                    new Parameter {ParameterName  = "@p1",
                        GenericDbType = GenericDbType.DateTime,
                        Value = Registro10.DataInicial
                    },
                      new Parameter {ParameterName  = "@p2",
                        GenericDbType = GenericDbType.DateTime,
                        Value = Registro10.DataFinal
                    },
                    new Parameter { ParameterName = "@tipo",
                        GenericDbType = GenericDbType.Integer,
                        Value = (int)Tipo.NotaFiscalEletronica
                    }
                });

                foreach (IMovimento venda in vendas)
                {
                    string CPFCNPJ = string.Empty;
                    string IE = string.Empty;

                    if (venda.DadoPessoa.Cliente.FisicaJuridica == Enuns.Cadastro.Pessoa.FisicaJuridica.Fisica)
                    {
                        CPFCNPJ = Unimake.Utilities.OnlyNumbers(venda.DadoPessoa.Cliente.Fisica.CPF, ".-").ToString();
                        IE = "ISENTO";
                    }
                    else
                    {
                        CPFCNPJ = Unimake.Utilities.OnlyNumbers(venda.DadoPessoa.Cliente.Juridica.CNPJ, ".-/").ToString();
                        IE = venda.DadoPessoa.Cliente.Juridica.IE == null ? "ISENTO" : venda.DadoPessoa.Cliente.Juridica.IE.ToString();
                    }

                    Registro50.Add(new ACBrFramework.Sintegra.SintegraRegistro50()
                    {
                        Aliquota = Unimake.Convert.ToDecimal(venda.Itens.FirstOrDefault().Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS ||
                                                                                          k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).FirstOrDefault().Aliquota.Valor),
                        BasedeCalculo = Unimake.Convert.ToDecimal(venda.Itens.FirstOrDefault().Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS ||
                                                                                           k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).FirstOrDefault().VlrBaseCalculo),
                        Cfop = venda.Itens.FirstOrDefault().CFOP.CFOP,
                        DataDocumento = venda.DataEmissao,
                        EmissorDocumento = venda.Emitente,
                        Icms = Unimake.Convert.ToDecimal(venda.ValorICMS),
                        Inscricao = IE,
                        Isentas = Unimake.Convert.ToSByte(venda.ValorIsentaNaoTributado),
                        Modelo = venda.Modelo,
                        Numero = venda.EGUID.ToString().Substring(3, 6),
                        Outras = Unimake.Convert.ToDecimal(venda.ValorOutra),
                        Serie = venda.Serie.Serie,
                        Situacao = venda.Situacao,
                        UF = Settings.EmpresaAtual.Enderecos.FirstOrDefault().Endereco.Estado.UF,
                        ValorContabil = Unimake.Convert.ToDecimal(venda.ValorTotalLiquido),
                        CPFCNPJ = CPFCNPJ
                    });

                    if (venda.BaseCalculoICMSST > 0)
                    {
                        Registro53.Add(new ACBrFramework.Sintegra.SintegraRegistro53
                        {
                            BaseST = (decimal)venda.BaseCalculoICMSST,
                            Cfop = venda.Itens.FirstOrDefault().CFOP.CFOP,
                            CodigoAntecipacao = ((int)venda.CodigoAntecipacao).ToString(),
                            CPFCNPJ = CPFCNPJ,
                            DataDocumento = venda.DataEmissao,
                            Despesas = (decimal)venda.ValorDespesasAcessorias,
                            Emitente = venda.Emitente,
                            Estado = venda.Empresa.Enderecos.FirstOrDefault().Endereco.Estado.UF,
                            IcmsRetido = (decimal)venda.ValorICMSRetido,
                            Inscricao = IE,
                            Modelo = venda.Modelo,
                            Numero = venda.EGUID.ToString().Substring(3, 6),
                            Serie = venda.Serie.Serie,
                            Situacao = venda.Situacao
                        });
                    }

                    foreach (Model.Faturamento.Lancamento.Movimento.Item.NFe.IItem item in venda.Itens)
                    {
                        Registro54.Add(new ACBrFramework.Sintegra.SintegraRegistro54()
                        {
                            Aliquota = Unimake.Convert.ToDecimal(item.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS ||
                                                                                          k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).FirstOrDefault().Aliquota.Valor),
                            BasedeCalculo = Unimake.Convert.ToDecimal(item.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS ||
                                                                                               k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).FirstOrDefault().VlrBaseCalculo),
                            BaseST = Unimake.Convert.ToDecimal(item.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMSST ||
                                                                                        k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).Count() == 0 ? 0 :
                                                                                        item.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMSST ||
                                                                                        k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).FirstOrDefault().VlrBaseCalculo),
                            CFOP = venda.Itens.FirstOrDefault().CFOP.CFOP,
                            Codigo = item.ItemMovimentado.EGUID,
                            CPFCNPJ = CPFCNPJ,
                            CST = item.CSTCSOSNCodigos.Where(k => k.CSTCSOSNCod.TipoTributo == TipoTributo.ICMS ||
                                                                  k.CSTCSOSNCod.TipoTributo == TipoTributo.SIMPLESNACIONAL).FirstOrDefault().CSTCSOSNCod.Codigo,
                            Descricao = item.ItemMovimentado.Descricao,
                            Modelo = venda.Modelo,
                            Numero = venda.EGUID.ToString().Substring(3, 6),
                            NumeroItem = item.Ordem,
                            Quantidade = Unimake.Convert.ToDecimal(item.Quantidade),
                            Serie = venda.Serie.Serie,
                            Valor = Unimake.Convert.ToDecimal(item.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS ||
                                                                                       k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).Sum(k => k.VlrTributo)),
                            ValorDescontoDespesa = Unimake.Convert.ToDecimal(item.ValorDescontoAcrescimo),
                            ValorIpi = Unimake.Convert.ToDecimal(item.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.IPI ||
                                                                                          k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).Sum(k => k.VlrTributo))
                        });
                    }
                }

                #endregion

                #region Registros 60
                #region 60M
                IList<ISintegraReg60M> regs60m = new SintegraReg60M().Find<ISintegraReg60M>(
                            new Where {
                                    {
                                    "DataEmissao BETWEEN @dataInicial AND @dataFinal",
                                        new [] {
                                            new Parameter{
                                                        ParameterName = "@dataInicial",
                                                        GenericDbType = GenericDbType.DateTime,
                                                        Value = Registro10.DataInicial
                                            },
                                            new Parameter {
                                                        ParameterName = "@dataFinal",
                                                        GenericDbType = GenericDbType.DateTime,
                                                        Value = Registro10.DataFinal
                                                    }
                                                }
                                    }
                                });

                foreach (ISintegraReg60M reg60 in regs60m)
                {
                    Registro60M.Add(new ACBrFramework.Sintegra.SintegraRegistro60M()
                    {
                        Emissao = reg60.DataEmissao,
                        NumSerie = reg60.NumeroSerie,
                        NumOrdem = reg60.NumeroOrdem,
                        ModeloDoc = reg60.ModeloDocumento,
                        CooInicial = reg60.COOInicial,
                        CooFinal = reg60.COOFinal,
                        CRZ = reg60.CRZ,
                        CRO = reg60.CRO,
                        VendaBruta = (decimal)reg60.ValorTotalBruto,
                        ValorGT = (decimal)reg60.ValorTotalGeral
                    });
                }
                #endregion

                #region 60A
                IList<ISintegraReg60A> regs60a = new SintegraReg60A().Find<ISintegraReg60A>(
                    new Where {
                            {
                            "arq_SintegraReg60A.DataEmissao BETWEEN @dataInicial AND @dataFinal",
                            new [] {
                                new Parameter {
                                    ParameterName = "@dataInicial",
                                    GenericDbType = GenericDbType.DateTime,
                                    Value = Registro10.DataInicial
                                },
                                new Parameter {
                                    ParameterName = "@dataFinal",
                                    GenericDbType = GenericDbType.DateTime,
                                    Value = Registro10.DataFinal
                                    }
                                }
                            }
                });

                foreach (ISintegraReg60A reg60a in regs60a)
                {
                    string aliquota = reg60a.SituacaoTributaria;

                    if (aliquota.IsNumeric())
                    {
                        aliquota = reg60a.SituacaoTributaria;
                        aliquota = aliquota.Split(',').FirstOrDefault();
                        aliquota = aliquota.Replace(",", "").PadLeft(4, '0');
                    }

                    Registro60A.Add(new ACBrFramework.Sintegra.SintegraRegistro60A()
                    {
                        Aliquota = aliquota,
                        Emissao = reg60a.DataEmissao,
                        NumSerie = reg60a.NumeroSerie,
                        Valor = Unimake.Convert.ToDecimal(reg60a.ValorTotalParcial)
                    });
                }
                #endregion

                #region 60D
                IList<ISintegraReg60D> regs60d = new SintegraReg60D().Find<ISintegraReg60D>(
                    new Where {
                            {
                                "arq_SintegraReg60D.DataEmissao BETWEEN @dataInicial AND @dataFinal",
                                new [] {
                                    new Parameter {
                                        ParameterName = "@dataInicial",
                                        GenericDbType = GenericDbType.DateTime,
                                        Value = Registro10.DataInicial
                                    },
                                    new Parameter {
                                        ParameterName = "@dataFinal",
                                        GenericDbType = GenericDbType.DateTime,
                                        Value = Registro10.DataFinal
                                    }
                                }
                            }
                        });

                foreach (ISintegraReg60D reg60d in regs60d)
                {
                    Registro60D.Add(new ACBrFramework.Sintegra.SintegraRegistro60D()
                    {
                        BaseDeCalculo = Unimake.Convert.ToDecimal(reg60d.ValorBaseCalculoICMS),
                        Codigo = reg60d.CodigoProduto,
                        Emissao = reg60d.DataEmissao,
                        NumSerie = reg60d.NumeroSerie,
                        Quantidade = Unimake.Convert.ToDecimal(reg60d.Quantidade),
                        StAliquota = reg60d.SituacaoTributaria,
                        Valor = Unimake.Convert.ToDecimal(reg60d.ValorBruto),
                        ValorIcms = Unimake.Convert.ToDecimal(reg60d.ValorICMS)
                    });
                }
                #endregion

                #region 60R
                IList<IVendaCF> vendasCF = new Data.Faturamento.Lancamento.Movimento.VendaCF.VendaCF().Find<IVendaCF>(
                     new Where {
                    {
                        "date(fat_LanMov.DataHoraMovimento) BETWEEN date(@p1) AND date(@p2)"
                    },
                    {
                        "fat_Lan.Status = @status"
                    }
                }, new Parameter[] {
                    new Parameter {
                        ParameterName  = "@p1",
                        GenericDbType = GenericDbType.DateTime,
                        Value = Registro10.DataInicial
                    },
                    new Parameter {
                        ParameterName  = "@p2",
                        GenericDbType = GenericDbType.DateTime,
                        Value = Registro10.DataFinal
                    },
                    new Parameter {
                        ParameterName = "@status",
                        GenericDbType = GenericDbType.Integer,
                        Value = (int)Status.ImpressoCupom
                    }
                });

                foreach (var r in (from x in
                                       (from cf in vendasCF
                                        from it in cf.Itens.Cast<Model.Faturamento.Lancamento.Movimento.Item.VendaCF.IItem>()
                                        select new
                                        {
                                            Aliquota = it.SituacaoTributaria,
                                            BaseDeCalculo = (decimal)it.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS ||
                                                                                            k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).Sum(k => k.VlrBaseCalculo),
                                            Codigo = it.ItemMovimentado.EGUID.ToString(),
                                            MesAno = cf.DataEmissao.ToString("MMyyyy"),
                                            Qtd = (decimal)it.Quantidade,
                                            Valor = (decimal)it.ValorTotalLiquido
                                        })
                                   group x by new { x.MesAno, x.Codigo } into g
                                   select new
                                   {
                                       Aliquota = g.FirstOrDefault().Aliquota,
                                       BaseDeCalculo = g.Sum(x => x.BaseDeCalculo),
                                       Codigo = g.Key.Codigo,
                                       MesAno = g.Key.MesAno,
                                       Qtd = g.Sum(x => x.Qtd),
                                       Valor = g.Sum(x => x.Valor)
                                   }).OrderBy(o => o.Codigo))
                {
                    string aliquota = r.Aliquota;
                    aliquota = aliquota.Replace(",", "").PadLeft(4, '0');

                    Registro60R.Add(new ACBrFramework.Sintegra.SintegraRegistro60R
                    {
                        Aliquota = aliquota,
                        BaseDeCalculo = r.BaseDeCalculo,
                        Codigo = r.Codigo,
                        MesAno = r.MesAno,
                        Qtd = r.Qtd,
                        Valor = r.Valor
                    });
                }
                #endregion

                #region 60I
                if (Settings.EmpresaAtual.Enderecos.FirstOrDefault().Endereco.Estado.UF.Sigla != UF.Parana)
                {
                    foreach (var r in (from x in
                                           (from cf in vendasCF
                                            from it in cf.Itens.Cast<Model.Faturamento.Lancamento.Movimento.Item.VendaCF.IItem>()
                                            select new
                                            {
                                                BaseDeCalculo = (decimal)it.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS ||
                                                                                                k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL)
                                                                         .Sum(k => k.VlrBaseCalculo),
                                                Codigo = it.ItemMovimentado.EGUID,
                                                Cupom = cf.COO.ToString(),
                                                Emissao = cf.DataEmissao,
                                                Ordem = it.Ordem,
                                                ModeloDoc = cf.Modelo,
                                                NumSerie = cf.NumeroSerieECF,
                                                Quantidade = (decimal)it.Quantidade,
                                                StAliquota = it.SituacaoTributaria,
                                                Valor = (decimal)it.ValorUnitarioBruto,
                                                ValorIcms = (decimal)it.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS ||
                                                                                            k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL)
                                                                     .Sum(k => k.VlrTributo)
                                            })
                                       group x by new { x.Emissao, x.Cupom, x.Codigo } into g
                                       select new
                                       {
                                           BaseDeCalculo = g.Sum(x => x.BaseDeCalculo),
                                           Codigo = g.Key.Codigo,
                                           Cupom = g.Key.Cupom,
                                           Emissao = g.Key.Emissao,
                                           Ordem = g.First().Ordem,
                                           ModeloDoc = g.First().ModeloDoc,
                                           NumSerie = g.First().NumSerie,
                                           Quantidade = g.Sum(x => x.Quantidade),
                                           StAliquota = g.First().StAliquota,
                                           Valor = g.Sum(x => x.Valor),
                                           ValorIcms = g.Sum(x => x.ValorIcms)
                                       }))
                    {
                        Registro60I.Add(new ACBrFramework.Sintegra.SintegraRegistro60I()
                        {
                            BaseDeCalculo = r.BaseDeCalculo,
                            Codigo = r.Codigo,
                            Cupom = r.Cupom,
                            Emissao = r.Emissao,
                            Item = r.Ordem,
                            ModeloDoc = r.ModeloDoc,
                            NumSerie = r.NumSerie,
                            Quantidade = r.Quantidade,
                            StAliquota = r.StAliquota,
                            Valor = r.Valor,
                            ValorIcms = r.ValorIcms,
                        });
                    }
                }
                #endregion

                #endregion

                #region Registro 61
                IList<IMovimento> vendasManuais = new Data.Faturamento.Lancamento.Movimento.NFManual.NFManual().Find<IMovimento>(
                    new Where {
                    {
                        "fat_LanMov.DataHoraMovimento BETWEEN @p1 AND @p2"
                    },
                    {
                        "fat_Lan.Tipo = @tipo"
                    }
                }, new Parameter[] {
                    new Parameter {ParameterName  = "@p1",
                        GenericDbType = GenericDbType.DateTime,
                        Value = Registro10.DataInicial
                    },
                      new Parameter {ParameterName  = "@p2",
                        GenericDbType = GenericDbType.DateTime,
                        Value = Registro10.DataFinal
                    },
                     new Parameter {ParameterName  = "@tipo",
                        GenericDbType = GenericDbType.Integer,
                        Value = (int)Tipo.NotaFiscalManual
                    }
                });

                foreach (var v in (from m in vendasManuais
                                   group m by m.DataEmissao into g
                                   select new
                                   {
                                       Emissao = g.Key,
                                       Modelo = g.First().Modelo,
                                       Serie = g.First().Serie,
                                       SubSerie = g.First().Subserie,
                                       NumOrdemInicial = Unimake.Convert.ToInt(g.Min(m => m.EGUID.ToString().Substring(0, 6))),
                                       NumOrdemFinal = Unimake.Convert.ToInt(g.Max(m => m.EGUID.ToString().Substring(0, 6))),
                                       Valor = g.Sum(m => (decimal)m.ValorTotalBruto),
                                       BaseDeCalculo = g.Sum(m => (decimal)m.ValorBaseCalculo),
                                       ValorIcms = g.Sum(m => (decimal)m.ValorICMS),
                                       Isentas = g.Sum(m => (decimal)m.ValorIsentaNaoTributado),
                                       Outras = g.Sum(m => (decimal)m.ValorOutra),
                                       Aliquota = (decimal)g.First().AliquotaICMS
                                   }))
                {
                    Registro61.Add(new ACBrFramework.Sintegra.SintegraRegistro61()
                    {
                        Emissao = v.Emissao,
                        Modelo = v.Modelo,
                        Serie = v.Serie.Serie,
                        SubSerie = v.SubSerie,
                        NumOrdemInicial = v.NumOrdemInicial,
                        NumOrdemFinal = v.NumOrdemFinal,
                        Valor = v.Valor,
                        BaseDeCalculo = v.BaseDeCalculo,
                        ValorIcms = v.ValorIcms,
                        Isentas = v.Isentas,
                        Outras = v.Outras,
                        Aliquota = v.Aliquota
                    });
                }

                foreach (var itemManual in (from x in
                                                (from m in vendasManuais
                                                 from i in m.Itens
                                                 select new
                                                 {
                                                     MesAno = m.DataEmissao.ToString("MMyyyy"),
                                                     Aliquota = (decimal)i.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS ||
                                                                                               k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).FirstOrDefault().Aliquota.Valor,
                                                     BaseDeCalculo = (decimal)i.Tributos.Where(k => k.Aliquota.Parent.TipoTributo == Enuns.Cadastro.Tributo.TipoTributo.ICMS ||
                                                                                                    k.Aliquota.Parent.TipoTributo == TipoTributo.SIMPLESNACIONAL).Sum(k => k.VlrBaseCalculo),
                                                     Codigo = i.ItemMovimentado.EGUID,
                                                     Qtd = (decimal)i.Quantidade,
                                                     Valor = (decimal)i.ValorTotalBruto
                                                 })
                                            group x by new { x.MesAno, x.Codigo } into g
                                            select new
                                            {
                                                Aliquota = g.First().Aliquota,
                                                BaseDeCalculo = (decimal)g.Sum(x => x.BaseDeCalculo),
                                                Codigo = g.Key.Codigo,
                                                MesAno = g.Key.MesAno,
                                                Qtd = (decimal)g.Sum(x => x.Qtd),
                                                Valor = (decimal)g.Sum(x => x.Valor)
                                            }))
                {
                    Registro61R.Add(new ACBrFramework.Sintegra.SintegraRegistro61R()
                    {
                        Aliquota = itemManual.Aliquota,
                        BaseDeCalculo = itemManual.Valor,
                        Codigo = itemManual.Codigo,
                        MesAno = itemManual.MesAno,
                        Qtd = itemManual.Qtd,
                        Valor = itemManual.Valor
                    });
                }
                #endregion

                #region Registro 74
                if (GerarRegistro74)
                {
                    IList<ISintegraReg74> regs74 = new SintegraReg74().Find<ISintegraReg74>();

                    foreach (ISintegraReg74 reg74 in regs74)
                    {
                        Registro74.Add(new ACBrFramework.Sintegra.SintegraRegistro74()
                        {
                            CNPJPossuidor = reg74.CNPJ,
                            Codigo = reg74.CodigoProduto,
                            CodigoPosse = reg74.CodigoPosse.ToString(),
                            Data = reg74.Data,
                            InscricaoPossuidor = reg74.InscrEstadual,
                            Quantidade = Unimake.Convert.ToDecimal(reg74.Quantidade),
                            UFPossuidor = reg74.UF,
                            ValorProduto = Unimake.Convert.ToDecimal(reg74.Valor)
                        });
                    }
                }

                #endregion

                #region Registro 75
                DataReader dataReader = connection.ExecuteReader(@"SELECT cad_Item.Eguid AS Codigo,
                                                                          cad_NCM.NCM AS NCM,
                                                                          cad_Item.Descricao AS Descricao,
                                                                          cad_Unidade.Prefixo AS Prefixo,
                                                                          CASE WHEN cad_Tributo.TipoTributo = 0 THEN cad_TributoAliquota.Valor END AS AliquotaICMS,
                                                                          CASE WHEN cad_Tributo.TipoTributo = 2 THEN cad_TributoAliquota.Valor END AS AliquotaIPI,
                                                                          0 AS RedBaseCalcICMS,
                                                                          0 AS VlrBaseCalcSubTrib
                                                                   FROM   fat_LanMovItem
                                                                  INNER JOIN cad_Item
                                                                          ON cad_Item.GUID = fat_LanMovItem.GUIDItem
                                                                  INNER JOIN cad_ItemProd
                                                                          ON cad_ItemProd.GUIDItem = cad_Item.GUID
                                                                  INNER JOIN cad_NCM
                                                                          ON cad_NCM.GUID = cad_ItemProd.GUIDNCM
                                                                  INNER JOIN cad_Unidade
                                                                          ON cad_Unidade.GUID = cad_ItemProd.GUIDUnidade
                                                                  INNER JOIN fat_LanMov
                                                                          ON fat_LanMov.GUIDLan = fat_LanMovItem.GUIDLanMov
                                                                   LEFT JOIN fat_LanMovItemTributo
                                                                          ON fat_LanMovItemTributo.GUIDLanMovItem = fat_LanMovItem.GUID
                                                                   LEFT JOIN cad_TributoAliquota
                                                                          ON cad_TributoAliquota.GUID = fat_LanMovItemTributo.GUIDAliquota
                                                                   LEFT JOIN cad_Tributo
                                                                          ON cad_Tributo.GUID = cad_TributoAliquota.GUID
                                                                  WHERE fat_LanMov.DataHoraMovimento BETWEEN @p1 AND @p2", new[]
                                                                    {
                                                                        new Parameter {
                                                                            ParameterName= "@p1",
                                                                            GenericDbType =  GenericDbType.DateTime,
                                                                            Value = Registro10.DataInicial
                                                                        },
                                                                        new Parameter {
                                                                            ParameterName= "@p2",
                                                                            GenericDbType =  GenericDbType.DateTime,
                                                                            Value = Registro10.DataFinal
                                                                        }
                                                                    });
                while (dataReader.Read())
                {
                    Registro75.Add(new ACBrFramework.Sintegra.SintegraRegistro75
                    {
                        AliquotaICMS = dataReader.GetDecimal("AliquotaICMS"),
                        AliquotaIpi = dataReader.GetDecimal("AliquotaIPI"),
                        BaseST = dataReader.GetDecimal("VlrBaseCalcSubTrib"),
                        Codigo = dataReader.GetString("Codigo"),
                        DataFinal = Registro10.DataFinal,
                        DataInicial = Registro10.DataInicial,
                        Descricao = dataReader.GetString("Descricao"),
                        NCM = dataReader.GetString("NCM"),
                        Reducao = dataReader.GetDecimal("RedBaseCalcICMS"),
                        Unidade = dataReader.GetString("Prefixo")
                    });
                }
                #endregion

                #region finalizar
                Ativo = true;
                VersaoValidador = ACBrFramework.Sintegra.VersaoValidador.V523;
                FileName = Path.Combine(Path.GetTempPath(), "ICMS.txt");
                GeraArquivo();
                #endregion
            }
            finally
            {
                connection.Close();
            }
        }
Пример #8
0
        public override void Gravar()
        {
            Data.Faturamento.Lancamento.Movimento.NFe.NFe v = new Data.Faturamento.Lancamento.Movimento.NFe.NFe();
            v.QuantidadeVolume = 3;
            v.DadoPessoa = new DadoPessoa
            {
                Cliente = Settings.ConsumidorFinal
            };

            v.Emitente = IndicadorProducao.Proprio;
            v.Situacao = SituacaoNotaFiscal.Normal;
            v.TabelaPreco = new Data.Cadastro.TabelaPreco.TabelaPreco().Find<Model.Cadastro.TabelaPreco.ITabelaPreco>(new Where { Limit = new Limit(1) })[0];
            v.StatusNF = Status.LoteEmProcessamento;
            v.Motivo = "Teste";
            v.Chave = "12345678";
            v.InfProt = "123456";
            v.Modelo = "55";
            v.Serie = new OpenPOS.Data.Faturamento.Cadastro.Serie().Find<Model.Faturamento.Cadastro.ISerie>(new Where() { { "fat_Serie.Modelo = '55'" } })[0];
            v.InformacoesAdicionais.Add(new InfAdic() { Tipo = Enuns.Faturamento.Lancamento.Movimento.NF.InfCplTipo.Contribuinte, Campo = "Teste de CRUD" });
            v.InformacoesAdicionais.Add(new InfAdic() { Tipo = Enuns.Faturamento.Lancamento.Movimento.NF.InfCplTipo.ObsContribuinte, Campo = "Teste de CRUD Obs" });

            ITabelaPreco tabela = Settings.TabelaPrecoPadrao;

            v.Itens.Add(new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.NFe.Item
            {
                Quantidade = 25,
                ValorUnitarioBruto = 15,
                DescricaoNF = "Produto de teste um",
                ItemMovimentado = tabela.Itens[0].Item,
                Conferido = true,
                TabelaPreco = tabela,
                InformacaoAdicional = "Informações adicionais dos produtos, mercadorias e serviços"
            });

            GUID = v.Save();
        }
Пример #9
0
 public override void Popular()
 {
     Data.Faturamento.Lancamento.Movimento.NFe.NFe v = new Data.Faturamento.Lancamento.Movimento.NFe.NFe(GUID);
     DumpElement(v);
 }
Пример #10
0
        public void GerarXMLTest()
        {
            Gravar();

            Data.Faturamento.Lancamento.Movimento.NFe.NFe nfe = new Data.Faturamento.Lancamento.Movimento.NFe.NFe(GUID);

            string fileName = OpenPOS.NFe.ChaveNFe.Create(nfe).ToString() + "-nfe.xml";
            string filePath = Path.Combine(Application.StartupPath, fileName);

            ((NFe.IGenerateNFe)nfe).GenerateXML().Save(filePath);

            System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
            psi.FileName = filePath;
            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo = psi;
            p.Start();
        }
Пример #11
0
 public void GeraXMLConsultaTest()
 {
     Gravar();
     var nfe = new Data.Faturamento.Lancamento.Movimento.NFe.NFe(GUID);
     NFeResult result = nfe.ConsultaSituacaoNFe();
     //  se chegou aqui sem erros é porque a consulta está correta
     Assert.AreEqual(true, true);
 }
Пример #12
0
        public void GerarEPECXMLTest()
        {
            Gravar();

            Data.Faturamento.Lancamento.Movimento.NFe.NFe nfe = new Data.Faturamento.Lancamento.Movimento.NFe.NFe(GUID);

            string fileName = Path.Combine(Settings.NFe.PastaEnvio, "epec" + nfe.Chave + "-ped-eve.xml");
            string filePath = Path.Combine(Application.StartupPath, fileName);

            ((NFe.IGenerateNFe)nfe).GenerateXMLEventoEPEC().Save(filePath);

            System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
            psi.FileName = filePath;
            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo = psi;
            p.Start();
        }
Пример #13
0
        public override void Editar()
        {
            Data.Faturamento.Lancamento.Movimento.NFe.NFe v = new Data.Faturamento.Lancamento.Movimento.NFe.NFe(GUID);
            //fazer um dump dos itens do objeto
            DumpElement(v.Itens);

            v.Save();

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

            //recarrega o objeto para conferir se salvou corretamente os itens
            v = new Data.Faturamento.Lancamento.Movimento.NFe.NFe(GUID);

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

            //adicionar 3 itens
            v.Itens.Add(new OpenPOS.Data.Faturamento.Lancamento.Movimento.Item.NFe.Item
            {
                Quantidade = 10,
                ValorUnitarioBruto = 12.5,
                DescricaoNF = "Produto de teste cinco",
                ItemMovimentado = new Acabado().Find<Model.Cadastro.Item.Produto.IAcabado>(new Where { Limit = new Limit(1) })[0],
                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.NFe.Item
            {
                Quantidade = 25,
                ValorUnitarioBruto = 15,
                DescricaoNF = "Produto de teste seis",
                ItemMovimentado = new Acabado().Find<Model.Cadastro.Item.Produto.IAcabado>(new Where { Limit = new Limit(1) })[0],
                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.NFe.Item
            {
                Quantidade = 33,
                ValorUnitarioBruto = 17.5,
                DescricaoNF = "Produto de teste sete",
                ItemMovimentado = new Acabado().Find<Model.Cadastro.Item.Produto.IAcabado>(new Where { Limit = new Limit(1) })[0],
                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 conferir se salvou corretamente os itens
            v = new Data.Faturamento.Lancamento.Movimento.NFe.NFe(GUID);
            //fazer um dump dos itens do objeto
            DumpElement(v.Itens);
        }
Пример #14
0
        public void ConsultaNFeStatusSuccessTest()
        {
            Gravar();
            var nfe = new Data.Faturamento.Lancamento.Movimento.NFe.NFe(GUID);

            string text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                            "<retConsSitNFe xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"2.00\">" +
                               "<tpAmb>2</tpAmb>" +
                               "<verAplic>2.00</verAplic>" +
                               "<cStat>100</cStat>" +
                               "<xMotivo>AUTORIZADA</xMotivo>" +
                               "<cUF>31</cUF>" +
                               "<chNFe>31100371139034000100550000009999201000000005</chNFe>" +
                               "<protNFe versao=\"2.00\">" +
                                  "<infProt Id=\"ID31100371139034000100550000009999201000000005\">" +
                                     "<tpAmb>2</tpAmb>" +
                                     "<verAplic>2.00</verAplic>" +
                                     "<chNFe>31100371139034000100550000009999201000000005</chNFe>" +
                                     "<dhRecbto>2010-03-17T17:07:34</dhRecbto>" +
                                     "<nProt>131100015665325</nProt>" +
                                     "<digVal>ajBuZFhtT3JyT0VFVHIzdDJvZTc3RHhURElnPQ==</digVal>" +
                                     "<cStat>100</cStat>" +
                                     "<xMotivo>AUTORIZADA</xMotivo>" +
                                  "</infProt>" +
                               "</protNFe>" +
                            "</retConsSitNFe>";

            var path = OpenPOS.Settings.NFe.PastaRetorno + ChaveNFe.Create(nfe) + "-sit.xml";
            File.WriteAllText(path, text);

            NFeResult result = nfe.ConsultaSituacaoNFe();
            Assert.AreEqual(result.Success, true);
            File.Delete(path);
            Excluir();
        }
Пример #15
0
        public void ConsultaNFeStatusErroRetornoUniNFeTest()
        {
            Gravar();
            var nfe = new Data.Faturamento.Lancamento.Movimento.NFe.NFe(GUID);

            var text = File.ReadAllText(Directory.GetCurrentDirectory() + "\\Faturamento\\Lancamento\\Movimento\\NFeTestFiles\\error.err");
            var path = OpenPOS.Settings.NFe.PastaRetorno + ChaveNFe.Create(nfe) + "-sit.err";
            File.WriteAllText(path, text);

            NFeResult result = nfe.ConsultaSituacaoNFe();
            Assert.AreEqual(result.Success, false);
            File.Delete(path);
            Excluir();
        }
Пример #16
0
        public void AguardaRespostaSefazNOTAEmProcessamentoSemProtocolo()
        {
            Gravar();
            var nfe = new Data.Faturamento.Lancamento.Movimento.NFe.NFe(GUID);
            var pro = OpenPOS.Settings.NFe.PastaEnvio + "Processamento/" + ChaveNFe.Create(nfe) + "-nfe.xml";
            File.WriteAllText(pro, "XABLAU");

            // Limpa dados gerados
            Excluir();
            File.Delete(pro);
        }