public override ReducaoZ UltimaReducaoZ()
 {
     try
     {
         var reducaoBema = Impressora.Informacao.DadosUltimaReducao;
         var reducao     = new ReducaoZ()
         {
             AcrescimoIcms    = reducaoBema.AcrescimoICMS,
             AcrescimoIss     = reducaoBema.AcrescimoISSQN,
             AcressimosNf     = reducaoBema.AcrescimosNaoFiscais,
             CancelamentoIcms = reducaoBema.CancelamentoICMS,
             CancelamentoIss  = reducaoBema.CancelamentoISSQN,
             CancelamentosNf  = reducaoBema.CancelamentosNaoFiscais,
             Ccf = reducaoBema.CupomFinal,
             Cfc = reducaoBema.NumeroCupomReducao
         };
         return(reducao);
     }
     catch (Exception)
     {
     }
     return(null);
 }
Exemple #2
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);
            }
        }
        public override sealed ReducaoZ UltimaReducaoZ()
        {
            try
            {
                var buf = new StringBuilder();
                TrataRetorno(Declaracoes.rRetornarDadosReducaoZ_ECF_Daruma(buf));
                var split   = buf.ToString().Split(';');
                var reducao = new ReducaoZ()
                {
                    Data               = ToDate(split[0]),
                    GrandeTotal        = int.Parse(split[1]),
                    GrandeTotalInicial = int.Parse(split[2]),
                    DescontoIcms       = decimal.Parse(split[3]),
                    DescontoIss        = decimal.Parse(split[4]),
                    CancelamentoIcms   = decimal.Parse(split[5]),
                    CancelamentoIss    = decimal.Parse(split[6]),
                    AcrescimoIcms      = decimal.Parse(split[7]),
                    AcrescimoIss       = decimal.Parse(split[8]),
                    TributadosIcmsIss  = split[9],
                    F1Icms             = decimal.Parse(split[10]),
                    F2Icms             = decimal.Parse(split[11]),
                    I1Icms             = decimal.Parse(split[12]),
                    I2Icms             = decimal.Parse(split[13]),
                    N1Icms             = decimal.Parse(split[14]),
                    N2Icms             = decimal.Parse(split[15]),
                    F1Iss              = decimal.Parse(split[16]),
                    F2Iss              = decimal.Parse(split[17]),
                    I1Iss              = decimal.Parse(split[18]),
                    I2Iss              = decimal.Parse(split[19]),
                    N1Iss              = decimal.Parse(split[20]),
                    N2Iss              = decimal.Parse(split[21]),
                    TotalizadoresNf    = split[22],
                    DescontosNf        = decimal.Parse(split[23]),
                    CancelamentosNf    = decimal.Parse(split[24]),
                    AcressimosNf       = decimal.Parse(split[25]),
                    Aliquotas          = split[26],
                    Cro         = int.Parse(split[27]),
                    Crz         = int.Parse(split[28]),
                    CrzRestante = int.Parse(split[29]),
                    Coo         = int.Parse(split[30]),
                    Gnf         = int.Parse(split[31]),
                    Ccf         = int.Parse(split[32]),
                    Cvc         = int.Parse(split[33]),
                    Grg         = int.Parse(split[35]),
                    Cfd         = int.Parse(split[36]),
                    Cbp         = int.Parse(split[37]),
                    Nfc         = int.Parse(split[38]),
                    Cmv         = int.Parse(split[39]),
                    Cfc         = int.Parse(split[40]),
                    Cnc         = int.Parse(split[41]),
                    Cbc         = int.Parse(split[42]),
                    Ncn         = int.Parse(split[43]),
                    Cdc         = int.Parse(split[44]),
                    Con         = int.Parse(split[45]),
                    Cer         = int.Parse(split[46])
                };

                return(reducao);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro ao buscar ultima redução Z.\n" + ex.Message);
                throw;
            }
            return(null);
        }