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); }
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); }