示例#1
0
        public void Gerar_Dados_NFe(IList <int> ilNotas_Fiscais)
        {
            CompSoft.Tools.frmWait f = new CompSoft.Tools.frmWait("Aguarde, carregado dados para exportação.");

            //-- Adicionar todos as NF selecionados em clausula IN do SQL
            sNotasFiscais = this.Criar_IN_NF(ilNotas_Fiscais);

            //-- Encontra as empresas que estão na NF.
            this.Empresas_NF();

            //-- Buscar todas as NF´s
            this.Gera_Dados_Capa_NFPaulista();

            //-- Buscar todos os Itens das NF´s
            this.Gera_Dados_Itens_NFPaulista();

            f.Close();
            f.Dispose();

            //-- Cria NF-Paulista
            if (nfp.Criar_NFPaulista())
            {
                MsgBox.Show("Nota Fiscal Paulista gerada e enviada com sucesso."
                            , "Envio com sucesso"
                            , System.Windows.Forms.MessageBoxButtons.OK
                            , System.Windows.Forms.MessageBoxIcon.Information);
            }
            else
            {
                MsgBox.Show("Erro ao gerar ou enviar Nota Fiscal Paulista, consulte o log de envio para verificar os possiveis problemas."
                            , "Atenção"
                            , System.Windows.Forms.MessageBoxButtons.OK
                            , System.Windows.Forms.MessageBoxIcon.Error);
            }
        }
示例#2
0
        /// <summary>
        /// Envia nota fiscal atravéz do WebService
        /// </summary>
        /// <param name="ilNotas_Fiscais">IList<Dados_Arquivos_NFe> com todas as notas para exportação.</param>
        /// <param name="sFolder">string com a Path completa para envio da NF-e.</param>
        public void Enviar_NFe(IList <CompSoft.NFe.Dados_Arquivo_NFe> ilNotas_Fiscais, string sFolder)
        {
            CompSoft.Tools.frmWait f = new CompSoft.Tools.frmWait("Aguarde, buscando informações no banco de dados.");
            f.Show();

            //-- Busca dados para geração da NF-e
            ERP.NFe.GerarDadosNFe dados_NFe = new ERP.NFe.GerarDadosNFe();
            dados_NFe.Gerar_Dados_NFe(ilNotas_Fiscais);

            f.Mensagem = "Aguarde, gerando arquivos XML da NF-e.";

            //-- Gera NF-e em uma pasta especifica para envio ao cliente.
            ERP.NFe.XML_NFe nfe = new ERP.NFe.XML_NFe(sFolder, dados_NFe.DataSet_NFe, ilNotas_Fiscais);
            nfe.Gerar_XML_NFe();

            f.Progresso        = true;
            f.Maximo_Progresso = ilNotas_Fiscais.Count;
            f.Mensagem         = "Aguarde, o sistema está assinando, transfêrindo e imprimindo o DANFE das notas fiscais autorizadas.";

            //-- Instancia classe de tratamento do WebService NF-e
            //-- Verifica se o WebService está ativo.
            NFeWebService wb_Nfe = new NFeWebService();

            if (wb_Nfe.Status_WebService(ilNotas_Fiscais[0]))
            {
                //-- Assina o XML.
                foreach (Dados_Arquivo_NFe daNFe in ilNotas_Fiscais)
                {
                    //-- Assina NF-e
                    CompSoft.NFe.AssinaXML assinar = new CompSoft.NFe.AssinaXML();
                    assinar.AssinarArquivoXML(daNFe.Arquivo_XML, "infNFe", this.Retorna_SerialNumber(daNFe.Empresa));

                    //-- Envia o Lote da NF-e.
                    this.SalvaXML_DB(daNFe, false);
                    XmlDocument doc       = wb_Nfe.Enviar_LoteNFe(daNFe);
                    int         iAguardar = this.Trata_Arquivo_Retorno_NFe(doc, daNFe); //-- Faz o tratamento dos dados e envia para o banco de dados.

                    //-- Aguarda 3 vezes o tempo necessário para garentir a recepção do retorno dos dados.
                    System.Threading.Thread.Sleep(5000);

                    //-- Captura o resultado de processamento.
                    this.Resultado_Processamento_NFe(daNFe);

                    //-- avança um na barra de progresso.
                    f.Atual_Progresso++;
                }
            }
            else
            {
                MsgBox.Show("O WebService está fora do ar, tente novamente mais tarde."
                            , "Atenção"
                            , System.Windows.Forms.MessageBoxButtons.OK
                            , System.Windows.Forms.MessageBoxIcon.Error);
            }

            f.Close();
            f.Dispose();
        }
示例#3
0
        private void f0047_FormClosing(object sender, FormClosingEventArgs e)
        {
            CompSoft.Tools.frmWait f = new CompSoft.Tools.frmWait("Aguarde, atualizando ambiente.");
            Funcoes func;

            func.AlimentaPropriedades_Sist();
            f.Close();
            f.Dispose();
        }
示例#4
0
        public void Cancelar_NFe(IList <Dados_Arquivo_NFe> ilNotas)
        {
            CompSoft.Tools.frmWait f = new CompSoft.Tools.frmWait("Aguarde, cancelando NF-e no SEFAZ.", true, ilNotas.Count);

            foreach (Dados_Arquivo_NFe daNFe in ilNotas)
            {
                //-- Busca informações no WebService
                CompSoft.NFe.TrataWebService.NFeWebService wb_NFe = new CompSoft.NFe.TrataWebService.NFeWebService();
                XmlDocument doc = wb_NFe.Cancelar_NFe(daNFe);

                StringBuilder sb = new StringBuilder(300);

                //-- Verifica se a mensagem é de confirmação do cancelamento da NF-e
                if (Convert.ToInt32(doc.GetElementsByTagName("cStat")[0].InnerText) == 101)
                {
                    sb.Append("update notas_fiscais_lotes set ");
                    sb.AppendFormat("     codigo_mensagem_retorno_nfe = {0}", doc.GetElementsByTagName("cStat")[0].InnerText);
                    sb.AppendFormat("   , protocolo_cancelamento_nfe = '{0}'", doc.GetElementsByTagName("nProt")[0].InnerText);
                    sb.AppendFormat("   , data_cancelamento_Nfe = '{0}'", doc.GetElementsByTagName("dhRecbto")[0].InnerText.Replace("T", " ").Replace("-", "").Substring(0, 17));
                    sb.AppendFormat("   where nota_fiscal_lote = {0}", daNFe.Cod_Nota_Fiscal_Lote);
                    SQL.ExecuteNonQuery(sb.ToString());

                    sb.Clear();
                    sb.AppendFormat("update notas_fiscais set cancelada = 1 where nota_fiscal = {0}", daNFe.Nota_Fiscal);
                    SQL.ExecuteNonQuery(sb.ToString());

                    ERP.NFe.Enviar_XML_Email envMail_Nfe;
                    envMail_Nfe.Cancelar_NF(daNFe, doc.GetElementsByTagName("nProt")[0].InnerText);
                }
                else
                {
                    int iStatusExiste = Convert.ToInt32(SQL.ExecuteScalar(string.Format("SELECT COUNT(*) FROM MENSAGENS_RETORNO_NFE WHERE CODIGO_MENSAGEM_RETORNO = {0}", doc.GetElementsByTagName("cStat")[1].InnerText)));

                    if (iStatusExiste == 0)
                    {
                        string sQuery = string.Format(@"insert MENSAGENS_RETORNO_NFE values({0}, '{1}')"
                                                      , doc.GetElementsByTagName("cStat")[1].InnerText
                                                      , doc.GetElementsByTagName("xMotivo")[1].InnerText.Replace("'", " "));

                        SQL.ExecuteNonQuery(sQuery);
                    }

                    sb.Append("update notas_fiscais_lotes set ");
                    sb.AppendFormat("     codigo_mensagem_retorno_nfe = {0}", doc.GetElementsByTagName("cStat")[1].InnerText);
                    sb.AppendFormat("   where nota_fiscal_lote = {0}", daNFe.Cod_Nota_Fiscal_Lote);
                    SQL.ExecuteNonQuery(sb.ToString());
                }

                f.Atual_Progresso++;
            }

            f.Close();
            f.Dispose();
        }
示例#5
0
        private void Localizar_Registros()
        {
            CompSoft.Tools.frmWait f = new CompSoft.Tools.frmWait("Aguarde, pesquisando dados...");

            StringBuilder sb = new StringBuilder();

            sb.AppendLine("select ");
            sb.AppendLine("  0 as 'sel'");
            sb.AppendLine("  , case pe.gera_nf");
            sb.AppendLine("   when 1 then 'Nota Fiscal'");
            sb.AppendLine("   else 'Cupom'");
            sb.AppendLine("    end as 'Tipo_Documento'");
            sb.AppendLine("  , e.Razao_Social as 'Razao_Social_Cendente'");
            sb.AppendLine("  , cl.Razao_Social as 'Razao_Social_Cliente'");
            sb.AppendLine("  , nf.Numero_Nota");
            sb.AppendLine("  , nf.Data_Emissao");
            sb.AppendLine("  , nfd.Numero_Parcela");
            sb.AppendLine("  , nfd.Valor_Duplicata");
            sb.AppendLine("  , nfd.Data_Vencimento");
            sb.AppendLine("  , nfd.Nota_Fiscal_Duplicata");
            sb.AppendLine("  , coalesce(b.Boleto_Impresso, 0) as 'Boleto_Impresso'");
            sb.AppendLine("  , coalesce(b.ArquivoRemessao_Enviado, 0) as 'ArquivoRemessao_Enviado'");
            sb.AppendLine(" from notas_fiscais nf");
            sb.AppendLine("  inner join notas_fiscais_duplicatas nfd on nf.nota_fiscal = nfd.nota_fiscal");
            sb.AppendLine("  inner join clientes cl on cl.cliente = nf.cliente");
            sb.AppendLine("  inner join empresas e on e.empresa = nf.empresa");
            sb.AppendLine("  inner join pedidos pe on pe.pedido = nf.pedido");
            sb.AppendLine("  inner join contas_correntes cc on cc.empresa = e.empresa");
            sb.AppendLine("  left outer join Boletos_gerados b on b.Nota_Fiscal_Duplicata = nfd.Nota_Fiscal_Duplicata");
            sb.AppendLine(" where nf.Cancelada = 0 and (coalesce(b.Boleto_Impresso, 0) = 0 or coalesce(b.ArquivoRemessao_Enviado, 0) = 0)");
            if (this.chkAtivarEmpresa.Checked && this.cboEmpresa.SelectedIndex >= 0)
            {
                sb.AppendFormat("     AND e.empresa = {0}\r\n", this.cboEmpresa.SelectedValue);
            }

            if (this.chkAtivarDataEmissao.Checked)
            {
                sb.AppendFormat("       AND nfd.data_vencimento between '{0}' and '{1}'\r\n"
                                , this.prdDataEmissao.Data_Inicial_SQL
                                , this.prdDataEmissao.Data_Termino_SQL);
            }

            if (!string.IsNullOrEmpty(this.txtNumeroNF.Text))
            {
                sb.AppendFormat("     AND nf.numero_nota = {0}\r\n", this.txtNumeroNF.Text);
            }

            if (!string.IsNullOrEmpty(this.txtNumeroPedido.Text))
            {
                sb.AppendFormat("     AND pe.pedido = {0}\r\n", this.txtNumeroPedido.Text);
            }

            DataTable dt = SQL.Select(sb.ToString(), "x", false);

            dt.Columns["sel"].ReadOnly = false;

            if (this.grdNotasFiscais.DataSource != null)
            {
                this.grdNotasFiscais.BindingSource.DataSource = dt;
            }
            else
            {
                BindingSource bs = new BindingSource(dt, null);
                this.grdNotasFiscais.DataSource = bs;
            }

            f.Close();
            f.Dispose();
        }