nfe / woo-nfe Goto Github PK
View Code? Open in Web Editor NEWIntegração do WooCommerce com a API do NFe.io.
Home Page: https://nfe.io
License: GNU General Public License v2.0
Integração do WooCommerce com a API do NFe.io.
Home Page: https://nfe.io
License: GNU General Public License v2.0
Existe uma falha ao tentar ativar o plugin WooCommerce Extra Checkout Fields for Brazil. Não sei se foi afetado nessa nova versão do WooCommerce ou se é algo antigo.
Mas como esse plugin é importante para o uso do WooCommerce NFe. Precisará ser corrigido.
Esse arquivo é irrelevante no momento e só é usado se o plugin não tiver instalado nenhuma tradução após ser ativo.
Em conversa com um cliente que usa o plugin, algo mencionado foi a opção de emissão no modo de desenvolvimento.
Atualmente, a pessoa precisa ir para o painel do NFe.io, em determinada empresa, para ativar a emissão na prefeitura.
Existe alguma API para ativar/desativar a emissão @gblmarquez? Assim, o cliente pode ativar e emitir notas no modo que escolher. A empresa selecionada é verificada na hora de ativar/desativar.
Enquanto __analista financeiro__,
Quero ser impedido de emitir uma nova nota fiscal caso o pedido já tenha uma emitida
Para evitar cobrança duplicada de impostos.
Conforme conversamos com o Gabriel, surgiu a hipótese de um chaveamento nas configurações do plugin permitindo ou não a reemissão. Atualmente, se realizarmos uma emissão de nota através do comando manual do plugin em um pedido que há tenha nota emitida, uma nova nota é emitida na prefeitura e, na visualização do woocommerce, continua constando os dados apenas da última nota emitida.
Isso prejudica o processo de conciliação do financeiro e torna bem difícil a auditoria pra identificar qual pedido teve nota fiscal duplicada.
Estava verificando se tinha informação do NFe. Quando o processo é manual, essas informações ainda não existe no sistema.
Seu plug-in inclui pastas e arquivos que não são necessários para a execução do plug-in. Alguns exemplos são:
A biblioteca inteira não será usada por seus usuários, e ter todos esses arquivos incluídos é apenas um peso extra para um plugin.
No futuro próximo, o plugin precisará emitir nota sem necessariamente ter os endereços corretos. Esse feature será opcional, e irá precisar de uma opção nas configurações do NFe.io.
Currently Nfe_ServiceInvoice
extends APIResource
to make requests to the API.
And APIResource
extends Nfe_Object
to use random utility methods.
This makes the code very hard to understand, change and maintain.
The Service Invoice is not an API caller, it should use an API caller to send requests. So it should use composition.
The first task I would start would be: Refactor APIResource to be used as composition instead of inheritance.
Some reference about composition over inheritance:
https://www.thoughtworks.com/insights/blog/composition-vs-inheritance-how-choose
https://en.wikipedia.org/wiki/Composition_over_inheritance
Remover tests da master
There some inconsistency on file names and class names.
Ex: The file admin/class-wc-admin.php use hyphen for the filename and underscore for its class name (WC_NFe_Admin
).
These other file lib/Nfe/APIChildResource use camel case for both his file name and class name (APIChildResource
).
Atualmente, as informações do NFe ficam salvas no banco de dados quando o plugin é desativado. O correto seria remover essas informações.
Uma mensagem deve ser apresentada para o usuário, para que ele entenda as consequências.
O valor testado em seu plugin não está definido para a versão atual do WordPress. Isso significa que seu plug-in não aparecerá nas pesquisas, pois exigimos que os plug-ins sejam compatíveis e documentados conforme testados até a versão mais recente do WordPress.
Atualize seu readme para mostrar que ele foi testado até a versão mais recente do WordPress. Você não pode configurá-lo além da versão atual, pois isso fará com que seu plug-in não esteja disponível nas pesquisas.
Exemplo(s) do seu plugin:
woo-nfe/README.txt:5:Testado até: 5.9.3
Muito relacionado à higienização de tudo, todas as variáveis que são ecoadas precisam ser escapadas quando são ecoadas, para que não possa sequestrar usuários ou (pior) telas de administração. Existem muitas funções esc_*() que você pode usar para certificar-se de que não mostrará às pessoas os dados errados, assim como algumas que permitirão ecoar HTML com segurança.
Neste momento, pedimos que você escape de todas as variáveis $, opções e qualquer tipo de dado gerado quando estiver sendo ecoado. Isso significa que você não deve estar escapando ao construir uma variável, mas quando você a produz no final. Chamamos isso de 'fugir tarde'.
Enquanto __analista financeiro__,
Quero encontrar um link direto para a nota no site do NFE.io na ordem do WooCommerce
Para facilitar meu trabalho na hora de ver informações adicionais ou cancelar uma nota fiscal.
O local onde o link seria útil está marcado no print abaixo.
O format do link seria algo como: https://app.nfe.io/companies/<company_id>/service-invoices/<invoice_id>
Nessa nova versão do plugin, houve várias alterações de layout no WooCommerce. Issue criado para lembrar de colocar os screenshots mais recentes.
The project is missing automated tests.
We should have at least some unit tests for all classes.
Some classes will probably need a refactoring to become testable.
It's better to do this in the beginning to avoid a big refactor in the future.
Notei agora testando o plugin em um site de um cliente que o e-mali de confirmação não está respeitando o status configurado.
Integrar https://github.com/wpsh/wpsh ao plugin.
Estamos utilizando o Composer caso o dono do site queria usá-lo para carregar o plugin. O problema é que isso pode trazer conflitos no caso do pacote client-php ter sido carregado em outro local.
Assim, para o WordPress, recomendo remover o suporte do Composer do plugin e atualizar o client-php como estamos atualizando agora, manualmente.
O módulo de nota fiscal não esta enviando o endereço de e-mail para NFE.io.
Observei que alguém está colocando um padrão de código diferente do WPCS, que é o que o WordPress usa.
A ativação do #19 vai ajudar pois posso colocar o PHPCS nele e assim, isso irá forçar outros devs a seguirem o padrão utilizado pelo WordPress.
Esse issue está relacionado a esse problema aqui: nfe/client-php#11
Depois que for resolvido lá, é necessário atualizar a class NFe_Woo no plugin WooCommerce NFe com a nova solução, seja ela namespace ou a nova classe, caso contrário, as emissões não serão realizadas.
Acontece muito do plugin não conseguir emitir a nota por falta de alguma informação no endereço, inclusive aquelas que são opcionais como bairro.
Normalmente eu tenho que completar esses campos de endereço com um "-" para que a nota possa ser emitida.
Um caso recente, o plugin acusa endereço pendente mesmo de um usuário que possui o endereço completo, sendo assim não consigo emitir a nota dela.
1- Como fazer para conseguir emitir essa nota?
2- É possível que o plugin não precise de todos os campos do endereço para evitar esse trabalho de conferência e edição?
The file admin/class-wc-admin.php
is indenting with tabs on line 28 and with spaces on line 30.
This cause problems to read the code in some places (like Github) and can introduce unnecessary git diffs resulting in harder code reviews.
The project should have a indentation conventing (like 2 spaces) documented in some place (like README) and follow it.
The plugin is throwing an error when the account has no companies.
Invalid argument supplied for foreach() in woo-nfe/includes/admin/class-settings.php on line 176
https://github.com/nfe/woo-nfe/blob/master/includes/admin/class-settings.php#L176
The expected behavior is an empty list with a notice to the user informing to create a new company in dashboard.
Estamos com um problema intermitente, em algum cenário de racing condition no momento do gatilho da emissão da nota fiscal, seja via mudança do status ou mesmo usando a ação dentro do pedido para emissão da nota fiscal, duas ou mais solicitações são enviadas para a API da NFE.io.
Na analise que fizemos notamos que em todos os casos, sempre existe a Anotação no Pedido que indica que o processo de emissão foi solicitado mais de uma vez.
Acredito que esse problema se trata dessa linha
woo-nfe/includes/admin/class-api.php
Line 92 in e7cbf51
E que para resolvermos devemos fazer uma alteração na ordem em que o código é executado, veja na linha abaixo, que só é alterado os dados do pedido depois que a chamada para API é executada
woo-nfe/includes/admin/class-api.php
Line 109 in e7cbf51
Minha sugestão para resolver seria, no momento do gatilho para emissão da nota fiscal, alterarmos algum campo no pedido indicando que ele está em processamento, depois que essa alteração no pedido tenha sucesso então podemos realizar a requisição para a API da NFE.io. Sendo assim seria necessário ainda incluir uma condição que faça a verificação se o pedido já está em processamento, para evitar esse cenário.
Quando você inclui chamadas POST/GET/REQUEST/FILE em seu plugin, é importante sanitizar, validar e escapar delas. O objetivo aqui é evitar que um usuário envie acidentalmente dados de lixo pelo sistema, além de protegê-los de possíveis problemas de segurança.
SANITIZE: Os dados inseridos (por um usuário ou automaticamente) devem ser higienizados o mais rápido possível. Isso diminui a possibilidade de vulnerabilidades XSS e ataques MITM onde os dados postados são subvertidos.
VALIDAR: Todos os dados devem ser validados, não importa o quê. Mesmo quando você higienizar, lembre-se que você não quer que alguém coloque 'cão' quando os únicos valores válidos são números.
ESCAPE: Os dados que são emitidos devem ser escapados corretamente quando são ecoados, para que não possam seqüestrar as telas de administração. Existem muitas funções esc_*() que você pode usar para garantir que não mostre às pessoas os dados errados.
Eu acho essa opção extremamente complicada para um usuário leigo.
Sem mencionar que não fica claro que é possível adicionar um valor específico dentro do produto. Nem o que exatamente esses códigos significam e onde o usuário deve pegar essa informação.
Sugiro mudar os nomes para algo mais comum, ou adicionar links para página de documentação com uma explicação mais clara, ensinando ao usuário onde ele deve pegar esse tipo de informação.
Isso vai evitar que usuários leigos não deixe o campo vázio ou adicionem informações erradas.
A emissão de nota está dando erro. Consta que não existe o código do serviço prestado, mas eu coloquei o mesmo código do CNAE.
https://metodogestalt.com.br/wp-content/uploads/2018/05/registro.png
https://metodogestalt.com.br/wp-content/uploads/2018/05/config.png
https://metodogestalt.com.br/wp-content/uploads/2018/05/erro.png
Ativar Travis nesse repositório.
de acordo com o nosso cliente, o plugin não está gerando o webhook para ser cadastrado na NFE.io.
Algo que estava debatendo com um cliente hoje. Se um pedido for cancelado por qualquer motivo e a nota já tiver sido emitida, o dono da loja precisa ir no painel do NFe.io e cancelar a nota manualmente.
Sugiro integrar isso ao plugin para que automaticamente quando ele cancelar uma pedido concluído no WordPress/WooCommerce, atualizar também o NFe.io, cancelando a nota.
Seria interessante mostrar uma messagem para o usuário no ato do cancelamento do pedido. Ele até poderia optar por não cancelar a nota antes de cancelar o pedido.
@gblmarquez Algo a se pensar para o futuro.
Estou instalando meu plugin, tenho uma conta ativa e esse erro aparece no momento da ativação do plugin.
Fatal error: Can't use function return value in write context in /home/mogco806/public_html/metodogestalt.com.br/wp-content/plugins/woo-nfe/includes/admin/class-settings.php on line 234
Melhorar log colocando erros tecnicos no painel do pedido.
White testing with the new WooCommerce version, I noticed this error:
[10-Jun-2017 22:56:29 UTC] PHP Notice: id foi chamada <strong>incorretamente</strong>. Order properties should not be accessed directly. Backtrace: WP_List_Table->display, WP_List_Table->display_rows_or_placeholder, WP_Posts_List_Table->display_rows, WP_Posts_List_Table->_display_rows, WP_Posts_List_Table->single_row, WP_List_Table->single_row_columns, WP_Posts_List_Table->column_default, do_action('manage_shop_order_posts_custom_column'), WP_Hook->do_action, WP_Hook->apply_filters, WC_NFe_Admin->order_status_column_content, WC_Abstract_Legacy_Order->__get, wc_doing_it_wrong Leia como <a href="https://codex.wordpress.org/pt-br:Depurando_uma_Rede_WordPress">Depurar o WordPress</a> para mais informações. (Esta mensagem foi adicionada na versão 3.0.) in /srv/www/b/htdocs/wp-includes/functions.php on line 4139
I'm aware of the error and I'm preparing a fix for it.
LOG DE ERRO:
Warning: curl_close(): supplied resource is not a valid cURL handle resource in /home/reciclacnh/public_html/reciclacnh/wp-content/plugins/woo-nfe/li/client-php/lib/NFe/APIRequest.php on line 158
Warning: array_merge(): Expected parameter 2 to be an array, bool given in /home/reciclacnh/public_html/reciclacnh/wp-content/plugins/woo-nfe/includes/admin/class-settings.php on line 56
Na lista de pedidos, não é mais necessário verificar o status do pedido. E sim, apenas o status da nota.
O plugin precisará ser atualizado para a versão 3.2.0 do WooCommerce devido a essa alteração: woocommerce/woocommerce#13318
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.