Jump to content

Assista click.png tectoy.png

C6 chamada_c6.png botao.png

AcbrLib Boleto com Asp.Net MVC


Rogerio Valadao
Go to solution Solved by Rafael Dias,
  • Este tópico foi criado há 703 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Consultores
1 hora atrás, Rogerio Valadao disse:

Bom dia pessoal, gostaria muito de integrar o ACBrLIB Boleto com meu sistema Asp.Net MVC 5, a questão é que não estou conseguindo importar a DLL para um projeto MVC, alguem poderia me ajudar com este problema!!!

Bom dia Rogerio.

Que tipo de problema está tendo?

Poderia mencionar as mensagens de erro ou dificuldades?

Descreva também um passo a passo do que está tentando e o objetivo.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

  • Membros Pro
2 minutos atrás, EMBarbosa disse:

Bom dia Rogerio.

Que tipo de problema está tendo?

Poderia mencionar as mensagens de erro ou dificuldades?

Descreva também um passo a passo do que está tentando e o objetivo.

quando tento adicionar a dll na referencia do mvc me da esta msg (could not be added.please make sure that the file is accessible and that it is a valid assembly)

Link to comment
Share on other sites

  • Consultores
8 minutos atrás, Rogerio Valadao disse:

quando tento adicionar a dll na referencia do mvc me da esta msg (could not be added.please make sure that the file is accessible and that it is a valid assembly)

Eu não tenho experiência com Asp Net, mas encontrei essa resposta: https://stackoverflow.com/a/7080555/460775

Em parte ela diz que uma dll nativa não pode ser usada diretamente pelo ASP .Net, mas você pode usar o DLLImport para ter acesso.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link to comment
Share on other sites

  • Membros Pro
2 horas atrás, EMBarbosa disse:

Eu não tenho experiência com Asp Net, mas encontrei essa resposta: https://stackoverflow.com/a/7080555/460775

Em parte ela diz que uma dll nativa não pode ser usada diretamente pelo ASP .Net, mas você pode usar o DLLImport para ter acesso.

opa vou pesquisar então obrigado amigo achando a solução posto aqui !!!!

  • Like 1
Link to comment
Share on other sites

  • Solution

Baixe o demo no SVN nele vai tem um classe que ajuda você a consumir a dll em C#, com a classe você pode usar ela em asp.net.

http://svn.code.sf.net/p/acbr/code/trunk2/Projetos/ACBrLib/Demos/C%23/

Obs.: Baixe toda a pasta pois tem arquivos compartilhados entre todos os demos, use o svn para o mesmo.

Consultor SAC ACBr Rafael Dias
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Desenvolvedor ACBrLib.

 

Link to comment
Share on other sites

  • Membros Pro
2 horas atrás, Rafael Dias disse:

Baixe o demo no SVN nele vai tem um classe que ajuda você a consumir a dll em C#, com a classe você pode usar ela em asp.net.

http://svn.code.sf.net/p/acbr/code/trunk2/Projetos/ACBrLib/Demos/C%23/

Obs.: Baixe toda a pasta pois tem arquivos compartilhados entre todos os demos, use o svn para o mesmo.

ola amigo então fiz isto agora ele achou a biblioteca porem na hora de inicializar ele me da o seguinte erro (Unable to create file "C:\Program Files (x86)\IIS Express\ACBrLib.ini)

Link to comment
Share on other sites

sim este erro ai é que infelizmente a dll criar o arquivo de configuração fisico, e como tu não especificou o caminho tenta criar na pasta do IIS, você pode corrigir isso usando a função Server.MapPath("/")

var nfe = new ACBrBoleto(Server.MapPath("/") + "ACBrLib.ini", "");

 

  • Like 1
Consultor SAC ACBr Rafael Dias
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Desenvolvedor ACBrLib.

 

Link to comment
Share on other sites

  • Membros Pro
34 minutos atrás, Rafael Dias disse:

sim este erro ai é que infelizmente a dll criar o arquivo de configuração fisico, e como tu não especificou o caminho tenta criar na pasta do IIS, você pode corrigir isso usando a função Server.MapPath("/")

var nfe = new ACBrBoleto(Server.MapPath("/") + "ACBrLib.ini", "");

 

Ola amigo deu certo sim muito obrigado, só mais uma pergunta como trabalho com asp.net tenho a mesma aplicação copilada para vários clientes e separo eles por banco de dados, então não sei bem como eu usaria este arquivo dinamicamente ex:
se eu tiver 30 clientes diferentes usando a mesma aplicação separando por url e por banco de dados, cada um com um cnpj diferente, e todos emitindo boletos ao mesmo tempo como eu deixaria isto dinâmico ele criaria uma arquivo para cada cliente mesmo sendo na mesma aplicação web ? ou eu não estou entendendo a finalidade do arquivo !!!

Link to comment
Share on other sites

recomendo criar um arquivo de configuração por cliente, lembrando que se tratando de asp .net vc vai ter que usar lock para isolar cada chamada das api pois no momento elas não funcionam em multi thread, já estamos trabalhando em uma maneira de resolver isso e deve sair ainda este mês se tudo der certo.

Use a classe de forma statica e antes de cada chamadas faça um lock carregue a configuração do cliente e emita o boleto, lembrando que hoje em dia os boletos tem que serem registrado para poder se possivel pagar os mesmo.

Consultor SAC ACBr Rafael Dias
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Desenvolvedor ACBrLib.

 

Link to comment
Share on other sites

  • Membros Pro
12 horas atrás, Rafael Dias disse:

recomendo criar um arquivo de configuração por cliente, lembrando que se tratando de asp .net vc vai ter que usar lock para isolar cada chamada das api pois no momento elas não funcionam em multi thread, já estamos trabalhando em uma maneira de resolver isso e deve sair ainda este mês se tudo der certo.

Use a classe de forma statica e antes de cada chamadas faça um lock carregue a configuração do cliente e emita o boleto, lembrando que hoje em dia os boletos tem que serem registrado para poder se possivel pagar os mesmo.

amigo sem querer abusar, uso muito consumo de API, então confesso estar em uma ambiente um pouco desconhecido, você teria, algum exemplo de como fazer esta separação de criação e de consumo do arquivo, ou existiria uma forma de consumir estes arquivos dinamicamente por exemplo direto do meu banco de dados!!!

Link to comment
Share on other sites

Então vamos por partes.

  1. Instancie a classe da ACBrLib como Singlethorn, com isso ela cria uma config padrão na pasta informada.
  2. Altere este ini de acordo com o seu cliente, e use o metodo ConfigGravar ou copie para gravar ele com o nome/cnpj do seu cliente, aqui se quiser pode salvar no db.
  3. Na função que trata o boleto você precisa o usar o instrução lock para garantir que não seja executada de forma simultanea, dentro da função você carrega as config previamente salva usando o metodo ConfigLer, lembrando que este metodo so carregar o arquivo então se salvo no banco precisa extrair a config e salvar no disco antes de passar para o metodo.
  4. Faças as operações normalmente.
  • Like 1
Consultor SAC ACBr Rafael Dias
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Desenvolvedor ACBrLib.

 

Link to comment
Share on other sites

  • Membros Pro
18 horas atrás, Rafael Dias disse:

Então vamos por partes.

  1. Instancie a classe da ACBrLib como Singlethorn, com isso ela cria uma config padrão na pasta informada.
  2. Altere este ini de acordo com o seu cliente, e use o metodo ConfigGravar ou copie para gravar ele com o nome/cnpj do seu cliente, aqui se quiser pode salvar no db.
  3. Na função que trata o boleto você precisa o usar o instrução lock para garantir que não seja executada de forma simultanea, dentro da função você carrega as config previamente salva usando o metodo ConfigLer, lembrando que este metodo so carregar o arquivo então se salvo no banco precisa extrair a config e salvar no disco antes de passar para o metodo.
  4. Faças as operações normalmente.

então como uso o padrão Singleton na ACBrLib!!!

 public class ThreadSafeSingleton 
        {
            private static ThreadSafeSingleton _instance;
            private static readonly object _padlock = new object();

            private ThreadSafeSingleton()
            {

            }

            public static ThreadSafeSingleton Instance
            {
                get
                {
                    if (_instance == null)
                    {
                        lock (_padlock)
                        {
                            if (_instance == null)
                            {
                                _instance = new ThreadSafeSingleton();
                            }
                        }       
                    }
                    return _instance;
                }
            }
        }

 

Link to comment
Share on other sites

Singlethorn é simples, mas depende de como você usa o seu software tu usa algum container IOC ? Se usa basta registrar como singlethorn.

public static class ACBr
{
   #region Fields
   
   private static readonly Lazy<ACBrBoleto> boleto = new Lazy<ACBrBoleto>(() => new ACBrBoleto());

   #endregion Fields

   #region Properties

   public static ACBrBoleto Boleto => boleto.Value;

   #endregion Properties
}

Agora na hora de usar seria algo assim

public class EmissaoBoleto
{
   private static readonly object padlock = new object();

   public void EmitirBoleto()
   {
     lock (padlock)
     {
       //Pega a instancia do boleto
       var boleto = ACBr.Boleto;

       //Carrega a configuração
       boleto.ConfigLer(Server.MapPath("/") + "cliente.ini");

       // Opcional
       // Configura dados do emitente, se os dados estão salvo nas config não precisa.
       // A vantagem deste metodo é que você pode passar a configuração como string, em vez de passar como arquivo fisico
       // https://acbr.sourceforge.io/ACBrLib/ModeloCedenteINI.html
       boleto.ConfigurarDados("");

       // Agora adicona os boletos e faças as operações
       boleto.IncluirTitulos("Ini do boleto");
       boleto.EnviarEmail("", "", "", "");
       boleto.GerarPDF();
     }
   }
}



 

 

Consultor SAC ACBr Rafael Dias
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Desenvolvedor ACBrLib.

 

Link to comment
Share on other sites

  • Membros Pro
1 hora atrás, Rafael Dias disse:

Singlethorn é simples, mas depende de como você usa o seu software tu usa algum container IOC ? Se usa basta registrar como singlethorn.

public static class ACBr
{
   #region Fields
   
   private static readonly Lazy<ACBrBoleto> boleto = new Lazy<ACBrBoleto>(() => new ACBrBoleto());

   #endregion Fields

   #region Properties

   public static ACBrBoleto Boleto => boleto.Value;

   #endregion Properties
}

Agora na hora de usar seria algo assim

public class EmissaoBoleto
{
   private static readonly object padlock = new object();

   public void EmitirBoleto()
   {
     lock (padlock)
     {
       //Pega a instancia do boleto
       var boleto = ACBr.Boleto;

       //Carrega a configuração
       boleto.ConfigLer(Server.MapPath("/") + "cliente.ini");

       // Opcional
       // Configura dados do emitente, se os dados estão salvo nas config não precisa.
       // A vantagem deste metodo é que você pode passar a configuração como string, em vez de passar como arquivo fisico
       // https://acbr.sourceforge.io/ACBrLib/ModeloCedenteINI.html
       boleto.ConfigurarDados("");

       // Agora adicona os boletos e faças as operações
       boleto.IncluirTitulos("Ini do boleto");
       boleto.EnviarEmail("", "", "", "");
       boleto.GerarPDF();
     }
   }
}



 

 

então na parte do:

public static ACBrBoleto Boleto => boleto.Value;

caio naquele problema inicial:

System.ApplicationException: 'Unable to create file "C:\Program Files (x86)\IIS Express\ACBrLib.ini"'

 

Link to comment
Share on other sites

  • Consultores

Uma dúvida. já programa a tempos em asp.net C#? somente trabalhou com essa linguagem?

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

  • Consultores

A principio pra entender o contexto e poder ajudar ao rafael lhe passar maiores orientações de como usar na linguagem o ACBrLib. Baseado no exemplo que tem no svn do mesmo. Mas creio que basta tu seguir certinho o que ele escreveu que vai funcionar.

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

  • Membros Pro
1 minuto atrás, Juliomar Marchetti disse:

A principio pra entender o contexto e poder ajudar ao rafael lhe passar maiores orientações de como usar na linguagem o ACBrLib. Baseado no exemplo que tem no svn do mesmo. Mas creio que basta tu seguir certinho o que ele escreveu que vai funcionar.

obrigado amigo!!!, toda ajuda é bem vinda vai dar certo quero contratar o SAC anual de vocês, o atendimento de vocês aqui no fórum é muito bom parabéns!!!

  • Like 1
Link to comment
Share on other sites

  • Membros Pro
1 hora atrás, Rafael Dias disse:

Isso é um exemplo apenas, adeque ao seu ambiente. no caso do MVC você precisa passar o parâmetro relativo ao path de criação do arquivo ini, isso precisa ser feito de acordo com seu ambiente.

        private static string caminho = "";
        private static readonly object padlock = new object();

        public static class ACBr
        {
            private static readonly Lazy<ACBrBoleto> boleto = new Lazy<ACBrBoleto>(() => new ACBrBoleto(caminho));

            public static ACBrBoleto Boleto => boleto.Value;
        }

        [HttpGet]
        public JsonResult ProjetoAcbr(string libConfig)
        {
            lock (padlock)
            {
                //forma o caminho
                caminho = Server.MapPath("~/ACBrConfigBoleto/") + libConfig;

                //Pega a instancia do boleto
                var boleto = ACBr.Boleto;

                //Carrega a configuração
                boleto.ConfigLer(Server.MapPath("~/ACBrConfigBoleto/") + libConfig);

                string cedenteIni = PreparaIniCedenteBoleto();
                string titulosIni = PreparaIniTituloBoleto();

                var ResultCedente = boleto.ConfigurarDados(cedenteIni);
                var Resultitulo = boleto.IncluirTitulos(titulosIni);

                boleto.Imprimir();
            }

            return Json(new { msg = "OK!!!" }, JsonRequestBehavior.AllowGet);
        }

Obrigado amigo assim funcionou perfeitamente!!!

Link to comment
Share on other sites

  • Administradores

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultora SAC ACBr

Juliana Tamizou
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link to comment
Share on other sites

  • Este tópico foi criado há 703 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.