示例#1
0
        static void Main()
        {
            // Seleciona o certificado
            Global.Certificado = CertificadoHelper.SelecionaCertificado();

            if (Global.Certificado != null)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                var main = new Main();

                Application.Run(main);
            }
        }
示例#2
0
        public void pesquisaEstoque(string unidNeg, DateTime dataEstoque, string path, string serie)
        {
            try
            {
                string[] lines = System.IO.File.ReadAllLines(path);
                int      cont  = 1;

                DadosPaf df = new DadosPaf();
                IList <EstoqueMensagemDadosEstoqueProduto> listProd = new List <EstoqueMensagemDadosEstoqueProduto>();
                foreach (string linha in lines)
                {
                    if (cont == 1)
                    {
                        df.estabCli = linha.Trim();
                    }
                    else if (cont == 2)
                    {
                        df.iestadualCli = linha.Trim();
                    }
                    else if (cont == 3)
                    {
                        df.cnpjCli = linha.Trim();
                    }
                    else if (cont == 4)
                    {
                        df.nomeCli = linha.Trim();
                    }
                    else if (cont == 5)
                    {
                        df.numCredenCli = linha.Trim();
                    }
                    else if (cont == 6)
                    {
                        df.nomComercial = linha.Trim();
                    }
                    else if (cont == 7)
                    {
                        df.versaoPafEcf = linha.Trim();
                    }
                    else if (cont == 8)
                    {
                        df.cnpjDesenv = linha.Trim();
                    }
                    else if (cont == 9)
                    {
                        df.nomDesenv = linha.Trim();
                    }
                    else if (cont == 10)
                    {
                        df.nFabEcf = linha.Trim();
                    }
                    else if (cont == 11)
                    {
                        df.nTipoEcf = linha.Trim();
                    }
                    else if (cont == 12)
                    {
                        df.marcaEcf = linha.Trim();
                    }
                    else if (cont == 13)
                    {
                        df.modeloEcf = linha.Trim();
                    }
                    else if (cont == 14)
                    {
                        df.versaoSofwEcf = linha.Trim();
                    }
                    else if (cont == 15)
                    {
                        df.caixa = linha.Trim();
                    }
                    else if (cont == 16)
                    {
                        df.dataRedz = Convert.ToDateTime(linha.Trim());
                    }
                    else if (cont >= 17)
                    {
                        char[]   delimiterChars = { ';' };
                        string[] words          = linha.Trim().Split(delimiterChars);
                        EstoqueMensagemDadosEstoqueProduto prod = new EstoqueMensagemDadosEstoqueProduto();
                        int conta = 1;
                        foreach (string s in words)
                        {
                            if (conta == 1)
                            {
                                prod.Descricao = s.Trim();
                            }
                            else if (conta == 2)
                            {
                                prod.CodigoProprio = s.Trim();

                                //  prod.Tipo = (EstoqueMensagemDadosEstoqueProdutoCodigoTipo)Enum.Parse(typeof(EstoqueMensagemDadosEstoqueProdutoCodigoTipo), "Proprio");
                            }
                            else if (conta == 3)
                            {
                                prod.ValorUnitario = s.Trim();
                            }
                            else if (conta == 4)
                            {
                                prod.Quantidade = Convert.ToInt64(s.Trim()).ToString();
                            }
                            else if (conta == 5)
                            {
                                prod.Unidade = s.Trim();
                            }
                            else if (conta == 6)
                            {
                                prod.SituacaoTributaria = (EstoqueMensagemDadosEstoqueProdutoSituacaoTributaria)Enum.Parse(typeof(EstoqueMensagemDadosEstoqueProdutoSituacaoTributaria), s.Trim());
                            }
                            else if (conta == 7)
                            {
                                if (!(s.Trim().Equals("") || s.Trim().Equals("0000")))
                                {
                                    prod.Aliquota = s.Trim();
                                }
                                else
                                {
                                    prod.Aliquota = "";
                                }
                            }
                            else if (conta == 8)
                            {
                                prod.IsArredondado = s.Trim().Equals("T");
                            }
                            else if (conta == 10)
                            {
                                prod.SituacaoEstoque = (EstoqueMensagemDadosEstoqueProdutoSituacaoEstoque)Enum.Parse(typeof(EstoqueMensagemDadosEstoqueProdutoSituacaoEstoque), s.Trim());
                            }
                            else if (conta == 11)
                            {
                                prod.CodigoNCMSH = s.Trim();
                            }
                            else if (conta == 12)
                            {
                                prod.CodigoGTIN = s.Trim();
                            }
                            else if (conta == 13)
                            {
                                prod.CodigoCEST = s.Trim();
                            }
                            conta++;
                        }

                        prod.Ippt = (EstoqueMensagemDadosEstoqueProdutoIppt)Enum.Parse(typeof(EstoqueMensagemDadosEstoqueProdutoIppt), "Proprio");
                        listProd.Add(prod);
                    }
                    cont++;
                }

                Estoque est = new Estoque();
                est.Versao = "1.0";

                EstoqueMensagemEstabelecimento estE = new EstoqueMensagemEstabelecimento();
                //  estE.Cnpj = df.cnpjCli;
                estE.Ie = df.iestadualCli;

                //   estE.NomeEmpresarial = df.nomeCli;

                EstoqueMensagemPafEcf estP = new EstoqueMensagemPafEcf();
                //estP.CnpjDesenvolvedor = df.cnpjDesenv;
                //estP.NomeComercial = df.nomComercial;
                //estP.NomeEmpresarialDesenvolvedor = df.nomDesenv;
                //estP.Codigo= df.numCredenCli;
                //estP.Versao = df.versaoPafEcf;
                estP.NumeroCredenciamento = df.numCredenCli;

                EstoqueMensagem estM = new EstoqueMensagem();
                estM.Estabelecimento = estE;
                estM.PafEcf          = estP;

                EstoqueMensagemDadosEstoque estDad = new EstoqueMensagemDadosEstoque();
                DateTime dataIni = dataEstoque.AddMonths(-1);
                //estDad.DataReferenciaInicial = dataIni.ToString("dd/MM/yyyy");
                estDad.DataReferencia = dataEstoque;

                estDad.Produtos   = listProd.ToArray();
                estM.DadosEstoque = estDad;

                est.Mensagem = estM;
                XmlDocument xmlNFE = Serializar.Serializa <Estoque>(est);

                ConfigHelper config   = new ConfigHelper();
                string       pathfile = config.local_salvar_arquivos + unidNeg + @"\" + "estoquePaf" + @"\" + df.nFabEcf + @"\"
                                        + df.dataRedz.ToString("ddMMyyyy");

                if (!Directory.Exists(pathfile))
                {
                    Directory.CreateDirectory(pathfile);
                }
                pathfile = pathfile + @"\env_estoquePaf.xml";

                CarregaConfiguracoesGP carg = new CarregaConfiguracoesGP();
                DataTable datCert           = carg.BuscaConfig(85475, unidNeg);

                if (datCert.Rows.Count > 0)
                {
                    DataRow row          = datCert.Rows[0];
                    string  serialNumber = row["DADO_ALPHA"].ToString().Trim();

                    if (serialNumber.Contains("SERIALNUMBER="))
                    {
                        serialNumber = serialNumber.Replace("SERIALNUMBER=", string.Empty);
                    }

                    var certificado = CertificadoHelper.Consultar(StoreName.My, StoreLocation.CurrentUser, serialNumber, CertificadoHelper.TipoConsultaCertificado.PorNroSerie);
                    if (certificado == null)
                    {
                        MessageBox.Show("Certificado " + row["DADO_ALPHA"].ToString().Trim() + " não localizado na maquina, impossivel assinar.", "Erro Certificado", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        XmlElement xmlAssinatura = AssinarXML.AssinarXmlNfe(xmlNFE, "Estoque", certificado);
                        XmlNode    nodeEvento    = xmlNFE.GetElementsByTagName("Estoque")[0];
                        if (nodeEvento != null)
                        {
                            nodeEvento.AppendChild(xmlAssinatura);
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Não foi possivel assinar o arquivo, deve informar o certificado na config 85475.", "Erro Certificado", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                xmlNFE.Save(pathfile);
                GPPAFTRARQ arq = new GPPAFTRARQ();
                DataTable  dt  = arq.retornaEstoque(unidNeg, "0", serie, df.dataRedz, df.nFabEcf);

                if (dt.Rows.Count <= 0)
                {
                    arq.insereArquivo(unidNeg, "0", serie, "E", pathfile, df.dataRedz, df.nFabEcf);
                }


                estoquesPendentes(unidNeg, serie, false);
                MessageBox.Show("Arquivo gerado com sucesso mas não transmitido! \n" + pathfile, "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);

                System.Diagnostics.Process.Start(pathfile);
            }
            catch (Exception ex)
            {
                LogHelper.GravarLog("Erro Estoque Paf " + ex);
                throw ex;
            }
        }
示例#3
0
        static void Main(string[] args)
        {
            try
            {
                int operacao = 0;

                if (args.Count() > 0)
                {
                    // Creating a Global culture specific to our application.
                    System.Globalization.CultureInfo cultureInfo =
                        new System.Globalization.CultureInfo("pt-BR");
                    // Creating the DateTime Information specific to our application.
                    System.Globalization.DateTimeFormatInfo dateTimeInfo =
                        new System.Globalization.DateTimeFormatInfo();
                    // Defining various date and time formats.
                    dateTimeInfo.DateSeparator    = "/";
                    dateTimeInfo.LongDatePattern  = "dd/MM/yyyy";
                    dateTimeInfo.ShortDatePattern = "dd/MMM/yy";
                    dateTimeInfo.LongTimePattern  = "hh:mm:ss tt";
                    dateTimeInfo.ShortTimePattern = "hh:mm tt";
                    // Setting application wide date time format.
                    cultureInfo.DateTimeFormat = dateTimeInfo;
                    // Assigning our custom Culture to the application.

                    Thread.CurrentThread.CurrentCulture = cultureInfo;

                    operacao = Int32.Parse(args[0].ToString());
                    switch (operacao)
                    {
                    case 1:
                        string       path    = args[1].ToString();
                        string       serie   = args[2].ToString();
                        string       unidNeg = args[3].ToString();
                        GeraReducaoZ ger     = new GeraReducaoZ();

                        ger.gerarArquivos(serie, unidNeg, path);

                        break;

                    case 2:
                        string       path2    = args[1].ToString();
                        string       serie2   = args[2].ToString();
                        string       unidNeg2 = args[3].ToString();
                        GeraReducaoZ ger2     = new GeraReducaoZ();

                        ger2.reducoesPendentes(serie2, unidNeg2, path2);

                        break;

                    case 3:
                        string     path3    = args[1].ToString();
                        DateTime   dtGer    = Convert.ToDateTime(args[2].ToString());
                        string     unidNeg3 = args[3].ToString();
                        string     serie3   = args[4].ToString();
                        EstoquePaf est      = new EstoquePaf();
                        est.pesquisaEstoque(unidNeg3, dtGer, path3, serie3);

                        break;

                    case 4:
                        string     serie5   = args[1].ToString();
                        string     unidNeg5 = args[2].ToString();
                        EstoquePaf ger5     = new EstoquePaf();
                        ger5.estoquesPendentes(serie5, unidNeg5, true);

                        break;

                    case 5:
                        string serialNumber = args[1].ToString();

                        var certificado = CertificadoHelper.Consultar(StoreName.My, StoreLocation.LocalMachine, serialNumber, CertificadoHelper.TipoConsultaCertificado.PorNroSerie);
                        if (certificado == null)
                        {
                            LogHelper.GravarLog("Certificado nao encontrado");
                        }
                        else
                        {
                            LogHelper.GravarLog("Certificado encontrado");
                        }
                        break;

                    case 99:
                        testaConexao();

                        break;

                    default:
                        LogHelper.GravarLog("Operacao nao programada...");
                        break;
                    }
                }
                else
                {
                    LogHelper.GravarLog("Nao foi passado nenhum argumento...");
                }
            }
            catch (Exception ex)
            {
                LogHelper.GravarLog("ERRO na operacao:" + ex.Message);
            }
        }
示例#4
0
        public void gerarArquivos(string serie, string unidNeg, string caminho)
        {
            try
            {
                string[]   lines = System.IO.File.ReadAllLines(caminho);
                int        cont  = 1;
                GPPAFTRARQ gpArq = new GPPAFTRARQ();
                DadosPaf   df    = new DadosPaf();
                foreach (string linha in lines)
                {
                    if (cont == 1)
                    {
                        df.estabCli = linha.Trim();
                    }
                    else if (cont == 2)
                    {
                        df.iestadualCli = linha.Trim();
                    }
                    else if (cont == 3)
                    {
                        df.cnpjCli = linha.Trim();
                    }
                    else if (cont == 4)
                    {
                        df.nomeCli = linha.Trim();
                    }
                    else if (cont == 5)
                    {
                        df.numCredenCli = linha.Trim();
                    }
                    else if (cont == 6)
                    {
                        df.nomComercial = linha.Trim();
                    }
                    else if (cont == 7)
                    {
                        df.versaoPafEcf = linha.Trim();
                    }
                    else if (cont == 8)
                    {
                        df.cnpjDesenv = linha.Trim();
                    }
                    else if (cont == 9)
                    {
                        df.nomDesenv = linha.Trim();
                    }
                    else if (cont == 10)
                    {
                        df.nFabEcf = linha.Trim();
                    }
                    else if (cont == 11)
                    {
                        df.nTipoEcf = linha.Trim();
                    }
                    else if (cont == 12)
                    {
                        df.marcaEcf = linha.Trim();
                    }
                    else if (cont == 13)
                    {
                        df.modeloEcf = linha.Trim();
                    }
                    else if (cont == 14)
                    {
                        df.versaoSofwEcf = linha.Trim();
                    }
                    else if (cont == 15)
                    {
                        df.caixa = linha.Trim();
                    }
                    else if (cont == 16)
                    {
                        df.dataRedz = Convert.ToDateTime(linha.Trim());
                    }

                    cont++;
                }



                ReducaoZ redZ = new ReducaoZ();
                redZ.Versao = "1.0";

                ReducaoZMensagem redMensagem = new ReducaoZMensagem();


                ReducaoZMensagemEstabelecimento redMen = new ReducaoZMensagemEstabelecimento();
                redMen.Ie = df.iestadualCli;
                redMen.NomeEmpresarial = df.nomeCli;
                redMen.Cnpj            = df.cnpjCli;


                ReducaoZMensagemPafEcf redPaf = new ReducaoZMensagemPafEcf();
                redPaf.CnpjDesenvolvedor            = df.cnpjDesenv;
                redPaf.NomeComercial                = df.nomComercial;
                redPaf.NomeEmpresarialDesenvolvedor = df.nomDesenv;
                redPaf.NumeroCredenciamento         = df.numCredenCli;
                redPaf.Versao = df.versaoPafEcf;


                ReducaoZMensagemEcf redEcf = new ReducaoZMensagemEcf();
                redEcf.Marca            = df.marcaEcf;
                redEcf.Modelo           = df.modeloEcf;
                redEcf.NumeroFabricacao = df.nFabEcf;
                redEcf.Tipo             = df.nTipoEcf;
                redEcf.Versao           = df.versaoSofwEcf;


                ReducaoZMensagemEcfDadosReducaoZ redDados = buscaMensagemEcf(df.dataRedz, serie, unidNeg);


                DataTable dt = gpArq.retornaReducao(unidNeg, redDados.COO, serie);


                bool arquivoGerado = false;
                if (dt.Rows.Count > 0)
                {
                    DataRow linha = dt.Rows[0];
                    if (System.IO.File.Exists(linha["PATH_FILE"].ToString()))
                    {
                        arquivoGerado = true;
                        string situacao = linha["SITUACAO"].ToString().Equals("T") ? "Transmitido" : "Pendente de Transmissão";
                        MessageBox.Show("Arquivo de redução Z já foi gerado para esta data. \n" + "Situação: " + situacao);
                    }
                    else
                    {
                        arquivoGerado = false;
                    }
                }
                if (dt.Rows.Count <= 0 || !arquivoGerado)
                {
                    IList <ReducaoZMensagemEcfDadosReducaoZTotalizadorParcial> listTotali = retTotalizadores(serie, unidNeg, df.dataRedz, redDados.CRZ, redDados.COO);
                    redDados.TotalizadoresParciais = listTotali.ToArray();
                    redEcf.DadosReducaoZ           = redDados;

                    redMensagem.Ecf             = redEcf;
                    redMensagem.Estabelecimento = redMen;
                    redMensagem.PafEcf          = redPaf;
                    redZ.Mensagem = redMensagem;

                    XmlDocument xmlNFE = Serializar.Serializa <ReducaoZ>(redZ);



                    ConfigHelper config   = new ConfigHelper();
                    string       pathfile = config.local_salvar_arquivos + unidNeg + @"\" + "reducoesZ" + @"\" + df.nFabEcf + @"\"
                                            + df.dataRedz.ToString("ddMMyyyy");

                    if (!Directory.Exists(pathfile))
                    {
                        Directory.CreateDirectory(pathfile);
                    }
                    pathfile = pathfile + @"\reducaoZ.xml";

                    CarregaConfiguracoesGP carg = new CarregaConfiguracoesGP();
                    DataTable datCert           = carg.BuscaConfig(85475, unidNeg);

                    if (datCert.Rows.Count > 0)
                    {
                        DataRow row          = datCert.Rows[0];
                        string  serialNumber = row["DADO_ALPHA"].ToString().Trim();

                        if (serialNumber.Contains("SERIALNUMBER="))
                        {
                            serialNumber = serialNumber.Replace("SERIALNUMBER=", string.Empty);
                        }

                        var certificado = CertificadoHelper.Consultar(StoreName.My, StoreLocation.CurrentUser, serialNumber, CertificadoHelper.TipoConsultaCertificado.PorNroSerie);
                        if (certificado == null)
                        {
                            MessageBox.Show("Certificado " + row["DADO_ALPHA"].ToString().Trim() + " não localizado na maquina, impossivel assinar.", "Erro Certificado", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        else
                        {
                            XmlElement xmlAssinatura = AssinarXML.AssinarXmlNfe(xmlNFE, "ReducaoZ", certificado);
                            XmlNode    nodeEvento    = xmlNFE.GetElementsByTagName("ReducaoZ")[0];
                            if (nodeEvento != null)
                            {
                                nodeEvento.AppendChild(xmlAssinatura);
                            }
                        }
                    }
                    else
                    {
                        MessageBox.Show("Não foi possivel assinar o arquivo, deve informar o certificado na config 85475.", "Erro Certificado", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }

                    xmlNFE.Save(pathfile);

                    if (dt.Rows.Count <= 0)
                    {
                        gpArq.insereArquivo(unidNeg, redDados.COO, serie, "R", pathfile, df.dataRedz, df.nFabEcf);
                    }

                    int    qtdePend = gpArq.retornaQtdeRedPendente(unidNeg, serie, "R");
                    string mensag   = @" “HÁ (0) ARQUIVOS COM INFORMAÇÕES DA REDUÇÃO Z DO PAF-ECF PENDENTES DE TRANSMISSÃO AO FISCO. 
                                    O CONTRIBUINTE PODE TRANSMITIR OS ARQUIVOS PELO MENU FISCAL POR MEIO DO COMANDO ‘Envio ao FISCO-REDUÇÃO Z’.";
                    if (qtdePend > 0)
                    {
                        mensag = @"HÁ " + qtdePend + " ARQUIVOS COM INFORMAÇÕES DA REDUÇÃO Z DO PAF-ECF PENDENTES DE TRANSMISSÃO AO FISCO. " +
                                 "O CONTRIBUINTE PODE TRANSMITIR OS ARQUIVOS PELO MENU FISCAL POR MEIO DO COMANDO ‘Envio ao FISCO-REDUÇÃO Z’.";
                        if (qtdePend >= 5 && qtdePend <= 8)
                        {
                            mensag = mensag + "\n" + " VERIFIQUE COM O FORNECEDOR DO PROGRAMA A SOLUÇÃO DA PENDÊNCIA.";
                        }
                        else if (qtdePend == 9)
                        {
                            mensag = mensag + "\n" + @"A PARTIR DA 10ª TRANSMISSÃO PENDENTE, O SEU PROGRAMA SERÁ BLOQUEADO E 
                                            SOMENTE SERÁ LIBERADO APÓS TODAS AS TRANSMISSÕES SEREM REALIZADAS. 
                                           VERIFIQUE URGENTEMENTE COM O FORNECEDOR DO PROGRAMA A SOLUÇÃO DA PENDÊNCIA";
                        }
                        MessageBox.Show("Arquivo gerado com sucesso mas não transmitido! \n" + pathfile, "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        MessageBox.Show(mensag, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                    else
                    {
                        MessageBox.Show("Arquivo gerado com sucesso mas não transmitido! \n" + pathfile, "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    System.Diagnostics.Process.Start(pathfile);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Arquivo não pode ser gerado, favor verifique o log...", "Erro Gerar ReduçãoZ", MessageBoxButtons.OK, MessageBoxIcon.Error);
                LogHelper.GravarLog("ERRO geraçao do arquivo RedZ= \n" + ex.Message);
                LogHelper.GravarLog("ERRO geraçao do arquivo RedZ= \n" + ex);
            }
        }