API to send NFe using Focus NFe service

If you understand portuguese, look here. This post is intended for non-English speakers, it shows how to integrate your software with Focus NFe. If you don’t know what is NFe take a look here. To test our API one can use the cURL tool, not needing to write a single line of code, that’s how we will show how our API works. Authentication We will use an access token to give access to test and production environments. For each environment will be provided a different token. Reference (id) You will have to provide an unique id for Each NFe that will be issued. This reference can be any string, most commonly it is used the primary key in the application’s. It is not recommended that you use the NFe numeration, for it is our system that will assign the numbers for the NFes. Sending a NFe The following URLs are used to send NFes to our software. The first one is used to send NFes to the test (homologação) environment and the second is to send NFes to the production (produção) environment: POST http://homologacao.acrasnfe.acras.com.br/nfe2/autorizar?token=TOKEN&ref=REFERENCE POST http://producao.acrasnfe.acras.com.br/nfe2/autorizar?token=TOKEN&ref=REFERENCE TOKEN and REFERENCE must be changed by yout access token (provided by our support team) and the internal reference of the NFe in your software. The content of the POST must be the communication file, wich is a YAML file built under this specification (portuguese only): http://www.focusnfe.com.br/nfe/lang/NotaFiscalXML.html. The following example shows a communication file:

---
natureza_operacao: Remessa
forma_pagamento: 0
data_emissao: 2013-04-15
data_entrada_saida: 2013-04-15
tipo_documento: 1
finalidade_emissao: 1
cnpj_emitente: SEU_CNPJ
nome_emitente: Sua Razão Social Ltda
nome_fantasia_emitente: Fantasia do Emitente
logradouro_emitente: Rua Quinze de Abril
numero_emitente: 999
bairro_emitente: Jd Paulistano
municipio_emitente: São Paulo
uf_emitente: SP
cep_emitente: 01454-600
inscricao_estadual_emitente: SUA_INSCRICAO_ESTADUAL
nome_destinatario: NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL
cpf_destinatario: 03055054911
inscricao_estadual_destinatario:
telefone_destinatario: 1196185555
logradouro_destinatario: Rua São Januário
numero_destinatario: 99
bairro_destinatario: Crespo
municipio_destinatario: Manaus
uf_destinatario: AM
pais_destinatario: Brasil
cep_destinatario: 69073178
icms_base_calculo: 0
icms_valor_total: 0
icms_base_calculo_st: 0
icms_valor_total_st: 0
valor_frete: 0.0000
valor_seguro: 0
valor_total: 47.23
valor_produtos: 47.23
valor_ipi: 0
modalidade_frete: 0
items:
- numero_item: 1
  codigo_produto: 1232
  descricao: Cartões de Visita
  cfop: 5923
  unidade_comercial: un
  quantidade_comercial: 100
  valor_unitario_comercial: 0.4723
  valor_unitario_tributavel: 0.4723
  unidade_tributavel: un
  codigo_ncm: 49111090
  quantidade_tributavel: 100
  valor_bruto: 47.23
  icms_situacao_tributaria: 41
  icms_origem: 0
  pis_situacao_tributaria: 07
  cofins_situacao_tributaria: 07

In test environment it is mandatory to use the following name to the adressee (destinatario) of the NFe: NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO – SEM VALOR FISCAL. Given your communication file name is remessa.yml, the curl command will be:

curl -T remessa.yml 'http://homologacao.acrasnfe.acras.com.br/fe2/autorizar?token=TOKEN&ref=1'

After sending the NFe, Focus NFe will process the information asynchronously, meaning you must come back and query the result after a while. Querying NFe The URLs to query the status of a NFe are:

GET http://homologacao.acrasnfe.acras.com.br/nfe2/consultar?token=TOKEN&ref=REFERENCE
GET http://producao.acrasnfe.acras.com.br/nfe2/consultar?token=TOKEN&ref=REFERENCE

Possible Results

mensagem_sefaz: "Rejeição: Data de Emissão muito atrasada"
status_sefaz: "228"
status: erro_autorizacao

Meaning the NFe was not authorized with the resulting message (only in portuguese)

status: processando_autorizacao

Meaning the NFe is still being processed.

serie: "1"
chave_nfe: NFe35130413555994000154550010000000021150496225
numero: "2"
mensagem_sefaz: Autorizado o uso da NF-e
status_sefaz: "100"
caminho_xml_nota_fiscal: /arquivos_development/SEU_CNPJ/201304/XMLs/35130413555994000154550010000000021150496225-nfe.xml
caminho_danfe: /arquivos_development/SEU_CNPJ/201304/DANFEs/35130413555994000154550010000000021150496225.pdf
status: autorizado

caminho_danfe is the relative path to the DANFe PDF file. caminho_xml is the relative path to the XML file Cancellation After authorized, the NFe can be cancelled within 24 ours. The service URLs to do that are. POST http://homologacao.acrasnfe.acras.com.br/nfe2/cancelar?token=TOKEN&ref=REFERENCE

POST http://producao.acrasnfe.acras.com.br/nfe2/cancelar?token=TOKEN&ref=REFERENCE

Other than the main parameters, the only one to be filled is “justificativa” wich is the reason that the NFe is being cancelled. curl -F ‘justificativa=CNPJ do destinatario incorreto’ ‘http://homologacao.acrasnfe.acras.com.br/nfe2/cancelar?token=TOKEN&ref=2’ Then you can query the NFe again. If the cancellation is succeeded you will get this status file:

chave_nfe: NFe35130413555994000154550010000000021150496225
status_sefaz: "135"
status: cancelado
caminho_xml_cancelamento: /arquivos_development/SEU_CNPJ/201304/XMLs/35130413555994000154550010000000021150496225-can.xml
mensagem_sefaz: Evento registrado e vinculado a NF-e
caminho_xml_nota_fiscal: /arquivos_development/SEU_CNPJ/201304/XMLs/35130413555994000154550010000000021150496225-nfe.xml

Software para emissão de Nota Fiscal Eletrônica

Se a receita do estado de São Paulo criou um software gratuito para emissão de NFe, por que utilizar um sistema pago?

A pergunta parece não ter resposta, pois quem em sã consciência iria escolher pagar por algo que pode ter de graça?

Ocorre que o sistema gratuito de São Paulo pode ser muito mais caro do que um sistema pago. Veja por quê.

Cadastros: Com o Focus NFe seus cadastros são mantidos de forma segura. Clientes, fornecedores e produtos podem ser cadastrados e mantidos em um sistema central que pode ser acessado de qualquer lugar. Nada precisa ser repetido quando emitir uma nota fiscal.

Calculo de impostos automatizado: Este talvez seja o maior ponto. A NFe envolve um sem número de informações fiscais que devem ser enviadas para a receita. Quando utiliza o sistema gratuito o contribuinte é obrigado a informar cada uma destas informações manualmente. Com o Focus NFe todo o cálculo de impostos é totalmente automático.

Facilidade de emissão: A facilidade de se emitir uma NFe com o Focus NFe é incontestável, basta assistir a este vídeo para conferir: http://focusnfe.com.br/nfe/video_aula_inicial/video_aula_inicial.html

Suporte especializado: O Focus NFe possui um suporte técnico especializado e sempre disponível ao passo que com o sistema gratuito o contribuinte não tem a quem recorrer caso ocorra algum problema no uso do sistema.

Guarda dos arquivos: Nós fazemos a guarda legal de todo documento fiscal emitido pelos nossos clientes por tempo indeterminado. Os arquivos podem ser recuperados a qualquer momento pelo contribuinte ou seu contador.

Sistema financeiro integrado: A partir de 65 notas emitidas por mês o sistema é acompanhado por um sistema financeiro completo integrado com Contas a Pagar e Receber, controle de contas bancárias, emissão de boleto bancário e muito mais. (Para clientes que emitem menos de 65 notas mensais o sistema pode ser ativado por R$30,00 mensais).

Com tantas facilidades, muito tempo é economizado no trato dos documentos fiscais da empresa. Este tempo custa dinheiro, sem dúvida muito mais dinheiro do que o investido em um sistema de qualidade. Saiba quanto custa para ter um sistema de qualidade, é bem menos do que você imagine: Preços.

API v3 para emissão de Nota Fiscal de Serviço Eletrônica (NFSe)

Infelizmente as prefeituras não adotam um padrão único para emissão de Notas Fiscais de Serviço (NFSe), apesar de existir uma recomendação da ABRASF, cada cidade é livre para decidir o padrão que achar melhor, tornando difícil o trabalho de quem precisa fazer a integração de seu cidade com múltiplas cidades. Para contornar este problema, estamos desenvolvendo a versão 3 de nossa API para emissão de NFSe, que tentará ser o mais homogênea possível, atendendo ao maior número de cidades com um mínimo de mudanças. Abaixo descrevemos o formato de comunicação desta API. A API irá utilizar o padrão REST de comunicação via HTTP, as 3 chamadas possíveis da API são exemplificadas abaixo:

  • POST /nfse?ref=REFERENCIA&token=TOKEN – Submete uma nova NFSe para autorização
  • GET /nfse/REFERENCIA?token=TOKEN – Recupera informações sobre a NFSe
  • DELETE /nfse/REFERENCIA?token=TOKEN  – Cancela uma NFSe

Onde REFERENCIA é a referência do objeto do sistema original (por exemplo, o identificador do banco de dados) e TOKEN é o token de acesso fornecido na contratação do sistema. O token é utilizado para identificar a empresa prestadora do serviço.

Submissão de NFSe

A submissão de uma NFSe irá conter no seu corpo um arquivo YAML descrevendo os dados da nota. Todos os campos são descritos abaixo e as diferenças entre as cidades comentadas. Os campos denotados com (*) são obrigatórios.

  • data_emissao (*): Data/hora de emissão da NFSe. Alguns municípios como São Paulo não utilizam hora e ela será descartada caso seja fornecida.
  • status: Status da NFS-e, informar 1 – Normal ou 2 – Cancelado. (Valor padrão: 1).
  • natureza_operacao: Natureza da operação. Informar um dos códigos abaixo. Campo ignorado para o município de São Paulo. 1 – Tributação no município 2 – Tributação fora do município 3 – Isenção 4 – Imune 5 – Exigibilidade suspensa por decisão judicial 6 – Exigibilidade suspensa por procedimento administrativo (Valor padrão: 1)
  • regime_especial_tributacao: Informar o código de identificação do regime especial de tributação conforme abaixo. Campo ignorado para o município de São Paulo. 1 – Microempresa municipal 2 – Estimativa 3 – Sociedade de profissionais 4 – Cooperativa 5 – MEI – Simples Nacional 6 – ME EPP – Simples Nacional
  • optante_simples_nacional(*): Informar verdadeiro ou falso se a empresa for optante pelo Simples Nacional. Campo ignorado pelo município de São Paulo.
  • incentivador_cultural: Informe verdadeiro ou falso. Valor padrão: falso. Campo ignorado para o município de São Paulo.
  • tributacao_rps: Usado apenas pelo município de São Paulo. Informe o tipo de tributação: T – Operação normal (tributação conforme documento emitido); I – Operação isenta ou não tributável, executadas no Município de São Paulo; F – Operação isenta ou não tributável pelo Município de São Paulo, executada em outro Município; J – ISS Suspenso por Decisão Judicial (neste caso, informar no campo Discriminação dos Serviços, o número do processo judicial na 1a. instância). (Valor padrão “T”)
  • servico:
    • valor_servicos(*): Valor dos serviços.
    • valor_deducoes: Valor das deduções.
    • valor_pis: Valor do PIS.
    • valor_cofins: Valor do COFINS.
    • valor_inss: Valor do INSS.
    • valor_ir: Valor do IS.
    • valor_csll: Valor do CSLL
    • iss_retido(*): Informar verdadeiro ou falso se o ISS foi retido.
    • valor_iss: Valor do ISS. Campo ignorado pelo município de São Paulo.
    • valor_iss_retido: Valor do ISS Retido. Campo ignorado pelo município de São Paulo.
    • outras_retencoes: Valor de outras retenções.  Campo ignorado pelo município de São Paulo.
    • base_calculo: Base de cálculo do ISS, valor padrão igual ao valor_servicos. Campo ignorado pelo município de São Paulo.
    • aliquota: Aliquota do ISS.
    • desconto_incondicionado: Valor do desconto incondicionado. Campo ignorado pelo município de São Paulo.
    • desconto_condicionado: Valor do desconto incondicionado. Campo ignorado pelo município de São Paulo.
    • item_lista_servico(*): informar o código da lista de serviços, de acordo com a Lei Complementar 116/2003. Utilize outra tabela para o município de São Paulo.
    • codigo_cnae: Informar o código CNAE. Campo ignorado pelo município de São Paulo.
    • codigo_tributario_municipio: Informar o código tributário de acordo com a tabela de cada município (não há um padrão). Campo ignorado pelo município de São Paulo.
    • discriminacao(*): Discriminação dos serviços.
    • codigo_municipio(*): Informar o código IBGE do município de prestação do serviço.
  • prestador:
    • cnpj(*): CNPJ do prestador de serviços.
    • codigo_municipio(*): Código IBGE do município do prestador (consulte lista aqui)
    • inscricao_municipal: Inscrição municipal do prestador de serviços.
  • tomador:
    • cpf(*): CPF do tomador, se aplicável.
    • cnpj(*): CNPJ do tomador, se aplicável.
    • inscricao_municipal: Inscrição municipal do tomador
    • razao_social: Razão social ou nome do tomador
    • endereco:
      • logradouro: Nome do logradouro.
      • tipo_logradouro: Tipo do logradouro. Usado apenas para o município de São Paulo. Valor padrão: os 3 primeiros caracteres do logradouro.
      • numero: Número do endereço.
      • complemento: Complemento do endereço.
      • bairro: Bairro
      • codigo_municipio: código IBGE do município.
      • uf: UF do endereço.
      • cep: CEP do endereço.
    • telefone: Telefone do tomador. Campo ignorado para o município de São Paulo.
    • email: Email do tomador.
  • intermediario (esta seção é ignorada pelo município de São Paulo)
    • razao_social: Razão social do intermediário do serviço.
    • cpf: CPF  do intermediário do serviço, se aplicável.
    • cnpj: CNPJ  do intermediário do serviço, se aplicável.
    • inscricao_municipal: Inscrição municipal  do intermediário do serviço, se aplicável.
  • codigo_obra: Código da obra quando construção civil. Este campo é ignorado pelo município de São Paulo.
  • art: Código ART quando construção civil. Este campo é ignorado pelo município de São Paulo.

Exemplo de um arquivo YAML:

data_emissao: 2013-05-31T12:00:00-03:00
incentivador_cultural: false
natureza_operacao: "1"
optante_simples_nacional: false
prestador: 
 cnpj: 06901848000133
 inscricao_municipal: 080204613599
 codigo_municipio: 4106902
servico: 
 aliquota: 0.05
 base_calculo: 200.0
 discriminacao: "Servico de hospedagem de sites"
 iss_retido: "2"
 item_lista_servico: "801"
 valor_iss: 10.0
 valor_liquido: 200.0
 valor_servicos: 200.0
status: "1"
tomador: 
 cpf: 03055054912
 endereco: 
   bairro: Centro
   cep: "80000000"
   codigo_municipio: "4106902"
   logradouro: "Rua Emiliano Perneta"
   numero: "845"
   uf: PR
 razao_social: "Egon Hilgenstieler"

Consulte o suporte técnico para possíveis exceções no seu município.

Consulta

Após a emissão, a consulta da situação do processamento poderá ser feita em um segundo momento para obter as informações da NFSe gerada ou dos erros de processamento. O retorno é também em formato YAML. Parâmetros:

  • token: O token secreto de sua empresa
  • ref: Número da referência

Exemplo de chamada e retorno:

GET /nfse/<REFERECIA>?token=<seu_token>

uri: https://nfe.prefeitura.sp.gov.br/contribuinte/notaprint.aspx?inscricao=112312&nf=14&verificacao=P2UJ4QGT
codigo_verificacao: P2UJ4QGT
data_emissao: 2012-08-12 03:00:00 Z
numero: "14"
status: autorizado

Retorno: HTTP status 200 (Ok) ou HTTP status 404 (Not Found) se não encontrada NFSe associada a referência Campos de retorno:

  • uri: Endereço disponibilizado pela prefeitura para visualização da NFSe
  • codigo_verificacao: Código de verificação da NFSe
  • data_emissao: Data de emissão
  • numero: Número da NFSe
  • status: “autorizado” se a NFSe foi emitida com sucesso ou “erro_autorizacao” caso contrário
  • erros: Array de mensagens de erro caso a nota fiscal não tenha sido emitida com sucesso.

Daruma Não Fiscal integrada ao Focus Lojas

A partir da versão 4.8.230 do Focus lojas o PDV está integrado às impressoras não fiscais da marca Urmet Daruma.

Para habilitar a sua impressora basta seguir o menu Configurações -> Sistema no PDV e na aba Impressora de Recibo (Não Fiscal) habilitar a opção Daruma, informando a porta em que a impressora está instalada. Caso tenha dúvidas solicite auxílio de nosso suporte técnico.

A integração nativa com as impressoras (de recibo e etiquetas) faz parte da estratégia de produto do Focus Lojas. Este tipo de integração gera uma qualidade superior em impressos gerados pelo sistema.

NFe – Brazilian Electronic Invoice System

Lately we have seen lots of foreign developers facing the challenge of developing NFe solutions for brazilian companies. As we now have some customers in this situation we will release content in english to make it easy for these developers to accomplish this challenge.

 

What is the NFe (Nota Fiscal Eletrônica or Electronic Invoice)

Until 2008 invoices in Brazil were issued in paper. Any company could get the authorization to print a certain number of unfilled invoices so they could fill it and send to their customers.
Since 2008 Brazilian government has adopted an electornic invoice system, making it mandatory to any brazilian company that sells products.
The electronic version of invoices are issued one by one and pre-filled by the company. Meaning that each and every sale (or importing) transaction is informed to the government that authorizes one by one. Obviously this is made in an automated way, called NFe.
The process of issuing a NFe

First of all one should fill a XML file containing, information about the issuer, the receiver, the products, the taxes (wich are very, very complicated in Brazil), the way it will be transported, how it will be paid and so on.

The second step will be to digitally sign this XML document using a digital certificate compliant with ICP-Brasil standards.

Third step is to communicate with the government servers, using SOAP technology. Government receives the transaction and “tells” you the estimated time it will have an answer (rarely being more than 5 seconds).

After that time we query the server to see if it have an answer. If the invoice is authorized then we are able to generate the DANFe (short for Auxiliar Document of the NFe). By law we have to inform the receiver via email that the NFe is successfully issued.

By law the issuer must keep the XML file for at least 5 years.

 

Focus NFe service

As it turns out, the XML file is very complicated, it has many fields and rules according to the type of the company and the kind of taxes it pays. Furthermore the communication with government computers may be tricky as each state has it’s own servers and there are redundancy servers with little communication specificities.

The Focus NFe service has a simple text file for communication and a very simple return file as well. All the details and communication with each server in the country is handled by our service. The generation of DANFe is handled by Focus NFe. The service also sends the NFe to the receiver and keeps the XML file safe for as long as the service contract is active.

Brazilian fiscal law is complicated and is constantly changing. We keep our service compliant to the law at all times, and every time it is possible, we do not change the communication files layout. (It is important to say that the API do not calculate taxes, so changes in taxes must be handled by the programmer).

Recebimentos no PDV

A partir da versão 4.8 do Focus Lojas é possível efetuar recebimentos de crediário dos clientes em qualquer loja da rede.

Quando um cliente faz uma compra em carnê, o sistema deixa contas a receber daquele cliente e ele deverá retornar para pagá-las em algum momento. A partir desta versão o PDV é capaz de fazer este recebimento, seja na loja de origem da compra, seja em qualquer loja da rede.

O sistema também possui uma inteligência e caso o recebimento não seja exato ele irá desmembrar as contas a receber de acordo com o valor efetivamente recebido. Por exemplo, se o cliente possui 3 parcelas a pagar no valor de R$100,00 cada e fizer um pagamento de R$150,00, o sistema irá quitar a primeira, dividir a segunda em duas de R$50,00 (uma paga e outra em aberto).

 

Passo 1

Para receber um valor de seu cliente, primeiramente siga o menu Financeiro -> Recebimento de Cliente. Uma tela de busca de cliente irá se abrir.

Passo 2

Feita a busca e selecionado o cliente, o sistema irá mostrar todas as parcelas em aberto, totalizando as atrasadas, as do dia e as futuras. Um campo pode ser preenchido com o valor a ser recebido.

Passo 3

Informado o valor a ser recebido, basta clicar em receber e o sistema irá abrir a mesma tela de recebimento de valores disponível na finalização de Venda. Mais de uma forma de pagamento pode ser realizada, portanto se o cliente estiver pagando em várias formas não é necessário abrir vários recebimentos de cliente.

Finalização

Ao finalizar os recebimentos o sistema irá registrar em caixa as entradas e enviar ao retaguarda este recebimento, que dará baixa das contas a receber daquele cliente.

Organizando a sua loja – A importância dos cadastros básicos

Neste artigo vou descrever algumas classificações

 

Seções

As seções podem ser entendidas como as grandes divisões de uma loja. Aquela divisão que realmente separa áreas bem definidas. Alguns exemplos clássicos de seções são: Masculino, Feminino, Adulto, Infantil, Vestuário, Presentes, e assim adiante.

A importância desta classificação é que seremos capazes de extrair relatórios específicos de uma seção e ver claramente se ela vale a pena. Existem casos em que uma loja possui resultados medianos se analisados de forma global, mas uma seção gera resultado excelente ao passo que outra seção gera perdas. Nestes casos pode ser interessante abrir mão da seção que gera perdas ou executar ações para recuperá-la. De qualquer forma a informação segmentada ajuda nas decisões estratégicas da loja.

 

Tipos de Produtos

A separação dos tipos de produto possui um caráter mais prático, principalmente na orientação das compras. Se o estoque da loja estiver com um cadastro com informações precisas de tipos de produtos, o lojista será capaz de extrair relatórios que o carreguem de informações preciosas para a próxima compra.

Exemplos típicos são: Calça, Blusa, Saia, Camiseta, Gravata, etc.

 

Coleção

Este cadastro ajuda a diferenciar produtos da coleção atual de produtos de coleções anteriores. Se você possui o saudável costume de não manter estoque parado provavelmente não terá várias coleções ativas. De qualquer forma esta classificação é importantíssima para montar promoções e liquidar produtos de coleções antigas.

 

Grades

Em muitos casos um mesmo produto pode assumir variações. Exemplos clássicos são Tamanho e Cor. Um cadastro de grades bem afinado pode ajudar ao lojista em sua próxima compra. Associado ao tipo de produto, o lojista poderá ter informações tão precisas quanto este exemplo: Calças número 36 representam 40% das vendas, 38 representam 30%, outros números representam os outros 30%. Quanto vale esta informação para nortear as compras da próxima estação?

 

Artigos relacionados

 

Entendendo o sistema de retaguarda e seus cadastros

Cadastro de grades

 

Otimização de estoque – Por que não deixar mercadorias paradas

Armazenar sobras de estoque é um erro muito comum entre os lojistas e que pode ser resolvido com promoções agressivas, que podem inclusive conter produtos que são vendidos abaixo do seu valor de custo. O lojista pode acreditar estar tendo prejuízo nesta situação mas nem sempre é assim. Neste artigo vou tentar convence-los de que muitas vezes vender produtos abaixo de seu custo pode representar lucro, então vamos lá. Primeiro algumas definições.

Estoque ideal

Primeiramente quero falar um pouco do que seria o estoque ideal, ou seja, aquele que geraria o maior lucro possível.

Idealmente teríamos em nossa loja um estoque exato, todos os produtos seriam vendidos com mark-up “cheio”, absolutamente nenhum produto ficaria parado na loja e, principalmente, nenhuma venda seria perdida por falta de produto. Resumidamente, temos em nossa loja exatamente o que irá vender, nem um produto a mais, nem um produto a menos. Esta é a situação perfeita. Tão perfeita quanto impossível de ocorrer.

O estoque real e o preço

Não temos como saber a priori tudo o que irá vender, por isso o lojista compra sempre a mais. Mais cores, mais modelos, mais tamanhos do que efetivamente será vendido.

São vários os fatores que determinam quais produtos terão saída. Aquela blusa muito parecida com a que a atriz da capa daquela revista famosa está usando. O inverno pode não estar tão frio assim. Ou então aquela estampa pode ter caído no gosto das mulheres inesperadamente.

Independente do fator que determina o que vende a mais ou a menos, existe um segundo fator que vai determinar as vendas de todos os produtos: o preço. Depois de termos comprado o nosso estoque, esta será a única variável que vamos poder operar.

O grande engano

Quando a estação se encaminha ao fim, começa a ficar claro quais produtos ficarão parados no estoque.

Muitos lojistas fazem promoções tímidas (20, 30, 40%) e acabam armazenando parte das sobras do estoque acreditando que aquele produto vende sempre, e no próximo inverno vai poder colocá-lo em exposição novamente. Isto pode até ser verdade, mas considere os seguintes fatores:

  • E se o produto não vender novamente no próximo ano? Terá ficado um ano inteiro parado em estoque apenas para ver que ficará mais um ano.
  • O valor de custo do produto estará parado. Isto equivale a pegar dinheiro vivo e deixar no cofre. Muitas vezes isto ocorre ao mesmo tempo em que se paga juros para adiantar recebimentos em cartão ou cheque, além de empréstimos e juros de cheque especial. Faz sentido? Sem contar que com este dinheiro em mãos poderia-se comprar a próxima coleção a vista, ganhando um desconto do fornecedor, ou então poderia ser usado em propaganda turbinando as vendas desta coleção.
  • Ano que vem, com o mesmo valor ou até menos, você poderá comprar novamente as peças que precisar, então pra quê guardar o estoque e deixar o dinheiro parado por todo o ano?

A análise do lucro por coleção

Façamos um exercício simples de matemática. Vou simular com valores e quantidades pequenos para efeito de exemplo, mas não é difícil extrapolar para todo o estoque de sua loja.

Vamos imaginar que nesta coleção compramos 5 produtos a R$10,00 cada e colocamos o preço de venda em R$15,00.

Agora vamos imaginar que a estação está chegando ao final e vendemos apenas 3 produtos, faturando R$45,00. Se optarmos por deixar os 2 produtos restantes parados em estoque para vender no próximo ano, vamos carregar por longos meses este prejuízo de R$5,00 (-10%).

Agora, se fizermos uma super promoção e conseguirmos vender os produtos restantes por R$3,00 cada (80% de desconto!!!) teremos um lucro de R$1,00 (+2%). O que é melhor? Os dois produtos da promoção aparentemente foram vendidos com prejuízo, mas se verificarmos toda a coleção, o lucro está justamente nestes produtos. Eles salvaram a estação!

Conclusão

Várias medidas podem ser tomadas para otimizar o estoque, aqui abordamos apenas a questão das mercadorias paradas, um erro muito comum entre lojistas e que se compreendido e evitado (utilizando promoções) pode representar aquele lucro que estava faltando em sua loja.

API para envio de NFe

Para integrar as operações de autorização, consulta e cancelamento de NFe à sua aplicação você pode utilizar nossa API web. Caso você esteja desenvolvendo uma aplicação desktop em ambiente Windows, o comunicador por arquivo pode ser uma solução mais natural. Em outros casos a API descrita neste post poderá ser utilizada.

Para testar todas as operações envolvendo a NFe, não é necessário implementar nenhuma linha de código, todos os testes podem ser efetuados com o programa cURL que pode ser baixado em plataformas Linux, Windows ou MacOS. O comando cURL serve para efetuar chamadas HTTP GET ou POST, necessários para esta API. Neste post demonstraremos o uso da API com este comando.

Autenticação

A autenticação para os comandos da API será feita através de um token, que será fornecido pelo nosso suporte. Esse token deverá ser enviado em todas as solicitações da API. Será utilizado um token diferente para o ambiente de homologação e de produção.

Referência

Para identificar uma NFe no sistema, deverá ser fornecida uma referência única que irá representar a NFe no seu sistema. Esta referência pode ser qualquer cadeia de caracteres, como por exemplo o identificador da chave primária de seu banco de dados. Não recomendamos que você utilize a numeração da NFe, pois isto nosso sistema irá controlar automaticamente.

Operação Envio de NFe

Para enviar uma NFe, você deverá utilizar as seguintes URLs, para os ambientes de homologação e produção, respectivamente:

POST http://homologacao.acrasnfe.acras.com.br/nfe2/autorizar?token=TOKEN&ref=REFERENCIA

POST http://producao.acrasnfe.acras.com.br/nfe2/autorizar?token=TOKEN&ref=REFERENCIA

Onde REFERENCIA e TOKEN devem ser substituídos pelo identificador único da NFe e pelo seu token de acesso. Como conteúdo do POST deve ser enviado um texto contendo uma representação da NFe a ser autorizada no formato YAML que tem suporte a diversas linguagens de programação.

Consulte a documentação do arquivo de envio de NFe para referência dos campos da NFe. Talvez seja necessário um auxílio do departamento contábil de sua empresa para que você determine a natureza de operação, CFOP e cálculos de impostos de acordo com as operações usuais de sua empresa. Se o seu sistema já estava integrado com o emissor de NFe do SEFAZ de SP, você poderá aproveitar e usar o mesmo formato.

Abaixo mostramos um exemplo de arquivo, em uma operação remessa:

---
natureza_operacao: Remessa
forma_pagamento: 0
data_emissao: 2013-04-15
data_entrada_saida: 2013-04-15
tipo_documento: 1
finalidade_emissao: 1
cnpj_emitente: SEU_CNPJ
nome_emitente: Sua Razão Social Ltda
nome_fantasia_emitente: Fantasia do Emitente
logradouro_emitente: Rua Quinze de Abril
numero_emitente: 999
bairro_emitente: Jd Paulistano
municipio_emitente: São Paulo
uf_emitente: SP
cep_emitente: 01454-600
inscricao_estadual_emitente: SUA_INSCRICAO_ESTADUAL
nome_destinatario: NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL
cpf_destinatario: 03055054911
inscricao_estadual_destinatario:
telefone_destinatario: 1196185555
logradouro_destinatario: Rua São Januário
numero_destinatario: 99
bairro_destinatario: Crespo
municipio_destinatario: Manaus
uf_destinatario: AM
pais_destinatario: Brasil
cep_destinatario: 69073178
icms_base_calculo: 0
icms_valor_total: 0
icms_base_calculo_st: 0
icms_valor_total_st: 0
valor_frete: 0.0000
valor_seguro: 0
valor_total: 47.23
valor_produtos: 47.23
valor_ipi: 0
modalidade_frete: 0
items:
- numero_item: 1
  codigo_produto: 1232
  descricao: Cartões de Visita
  cfop: 5923
  unidade_comercial: un
  quantidade_comercial: 100
  valor_unitario_comercial: 0.4723
  valor_unitario_tributavel: 0.4723
  unidade_tributavel: un
  codigo_ncm: 49111090
  quantidade_tributavel: 100
  valor_bruto: 47.23
  icms_situacao_tributaria: 41
  icms_origem: 0
  pis_situacao_tributaria: 07
  cofins_situacao_tributaria: 07

Em ambiente de homologação, o campo nome_destinatario deve ser obrigatoriamente NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO – SEM VALOR FISCAL. Caso contrário a nota será rejeitada pelo SEFAZ.

Para testar a autorização da NFe, você pode salvar o arquivo de exemplo com o nome remessa.yml e executar o seguinte comando em seu computador:

curl -T remessa.yml 'http://homologacao.acrasnfe.acras.com.br/fe2/autorizar?token=TOKEN&ref=1'

Substituindo o campo TOKEN e lembrando de incrementar a referência caso deseje fazer mais de um teste. Caso o comando seja executado com sucesso, o comando curl não irá gerar nenhuma saída.

Após o envio da NFe, ela irá ser processada de forma assíncrona, ou seja, as requisições serão aceitas imediatamente e enfileiradas para processamento. A NFe poderá ser autorizada em poucos segundos, dependendo da quantidade de requisições.

Operação de Consulta

Após o envio, você poderá consultar o status do processamento, que poderá informar algum erro de validação ou as informações referente a autorização da NFe. As URLs dos ambientes de homologação e produção são:

GET http://homologacao.acrasnfe.acras.com.br/nfe2/consultar?token=TOKEN&ref=REFERENCIA
GET http://producao.acrasnfe.acras.com.br/nfe2/consultar?token=TOKEN&ref=REFERENCIA

Por exemplo, se substituirmos no arquivo remessa.yml o campo “data_emissao” para o ano de 2012, podemos testar uma rejeição de NFe usando o comando abaixo, supondo que a referência tenha sido enviada anteriormente como ‘1’:

curl 'http://producao.acrasnfe.acras.com.br/nfe2/consultar?token=TOKEN&ref=1'

O resultado de uma chamada desta URL também virá no formato YAML, conforme abaixo:

---
mensagem_sefaz: "Rejeição: Data de Emissão muito atrasada"
status_sefaz: "228"
status: erro_autorizacao

Para testar uma autorização de NFe, devemos alterar o campo data_emissao e data_entrada_saida para o dia atual e em seguida enviar a NFe:

curl -T remessa.yml 'http://homologacao.acrasnfe.acras.com.br/fe2/autorizar?token=TOKEN&ref=2'

Se consultarmos o status imediatamente depois do envio:

curl 'http://producao.acrasnfe.acras.com.br/nfe2/consultar?token=TOKEN&ref=2'

Podemos obter o resultado:

---
status: processando_autorizacao

Que significa que a nota ainda não foi processada completamente. Após a autorização receberemos uma saída conforme o exemplo abaixo:

---
serie: "1"
chave_nfe: NFe35130413555994000154550010000000021150496225
numero: "2"
mensagem_sefaz: Autorizado o uso da NF-e
status_sefaz: "100"
caminho_xml_nota_fiscal: /arquivos_development/SEU_CNPJ/201304/XMLs/35130413555994000154550010000000021150496225-nfe.xml
caminho_danfe: /arquivos_development/SEU_CNPJ/201304/DANFEs/35130413555994000154550010000000021150496225.pdf
status: autorizado

O caminho do XML e da DANFE são relativos a partir do endereço do servidor utilizado. No exemplo acima a DANFE poderá ser acessada no endereço:

http://homologacao.acrasnfe.acras.com.br/arquivos_development/SEU_CNPJ/201304/DANFEs/35130413555994000154550010000000021150496225.pdf

Operação de Cancelamento

A NFe poderá ser cancelada até 24 horas depois da emissão. Alguns estados permitem um prazo maior para o cancelamento, verifique os detalhes junto com o SEFAZ do seu estado. Para cancelar uma NFe, utilize os seguintes endereços de homologação e produção:

POST http://homologacao.acrasnfe.acras.com.br/nfe2/cancelar?token=TOKEN&ref=REFERENCIA
POST http://producao.acrasnfe.acras.com.br/nfe2/cancelar?token=TOKEN&ref=REFERENCIA

Sendo necessário informar a justificativa do cancelamento no campo “justificativa” do POST. Para testar o cancelamento da referência “2” do exemplo anterior podemos executar:

curl -F 'justificativa=CNPJ do destinatario incorreto' 'http://homologacao.acrasnfe.acras.com.br/nfe2/cancelar?token=TOKEN&ref=2'

Este comando irá colocar o cancelamento na fila de processamento, após alguns segundos você poderá consultar se o cancelamento foi efetuado corretamente com a mesma operação “Consultar”:

curl 'http://producao.acrasnfe.acras.com.br/nfe2/consultar?token=TOKEN&ref=2'

Que fornecerá um resultado como abaixo:

---
chave_nfe: NFe35130413555994000154550010000000021150496225
status_sefaz: "135"
status: cancelado
caminho_xml_cancelamento: /arquivos_development/SEU_CNPJ/201304/XMLs/35130413555994000154550010000000021150496225-can.xml
mensagem_sefaz: Evento registrado e vinculado a NF-e
caminho_xml_nota_fiscal: /arquivos_development/SEU_CNPJ/201304/XMLs/35130413555994000154550010000000021150496225-nfe.xml

Note que após o cancelamento a DANFE deixa de existir e não poderá mais ser salva.

Operação de Envio e Consula de Carta de Correção eletrônica

Uma Carta de Correção eletrônica (CCe) pode ser utilizada para corrigir eventuais erros na NFe. As seguintes informações não podem ser corrigidas:

  1. As variáveis que determinam o valor do imposto tais como: base de cálculo, aliquota, diferença de preço, quantidade, valor da operação ou da prestação;
  2. A correção de dados cadastrais que implique mudança do remetente ou do destinatário;
  3. A data de emissão ou de saída.

Não existe prazo especificado para emissão de cartas de correção. É possível enviar até 20 correções diferentes, sendo que será válido sempre a última correção enviada. Os endereços são:

Envio:

POST http://homologacao.acrasnfe.acras.com.br/nfe2/emitir_cce?token=TOKEN&ref=REFERENCIA
POST http://producao.acrasnfe.acras.com.br/nfe2/emitir_cce?token=TOKEN&ref=REFERENCIA

Sendo necessário informar a correção da NFe no campo “correcao” do POST. A correção é um texto livre, sem quebras de linha. Exemplo:

curl -F 'correcao=O CEP correto do destinatario é 80210200' 'http://homologacao.acrasnfe.acras.com.br/nfe2/emitir_cce?token=TOKEN&ref=1'

Para consultar o resultado do processamento, utilizamos outras URLs:

GET http://homologacao.acrasnfe.acras.com.br/nfe2/consultar_cce?token=TOKEN&ref=REFERENCIA
GET http://producao.acrasnfe.acras.com.br/nfe2/consultar_cce?token=TOKEN&ref=REFERENCIA

Exemplo:

curl 'http://homologacao.acrasnfe.acras.com.br/nfe2/consultar_cce?token=TOKEN&ref=1'

Cujo resultado será algo como:

---
chave_nfe: NFe35130413555994000154550010000000011319749231
status: autorizado
caminho_xml: /arquivos_development/SEU_CNPJ/201304/XMLs/35130413555994000154550010000000011319749231-cce-01.xml
caminho_pdf: /notas_fiscais/NFe35130413555994000154550010000000011319749231/cartas_correcao/1.pdf
numero_sequencial_evento: 1

Operação de Envio e Consula de Inutilização de Numeração

Em uma situação normal você não precisará informar ao SEFAZ a inutilização de um número da NFe pois a API controla automaticamente a numeração das notas. Porém, se por alguma situação específica for necessário a inutilização de alguma faixa de números você poderá chamar as seguintes operações:

Envio de inutilização de faixa de numeração:

POST http://homologacao.acrasnfe.acras.com.br/nfe2/inutilizar_numeracao?token=TOKEN
POST http://producao.acrasnfe.acras.com.br/nfe2/inutilizar_numeracao?token=TOKEN

A inutilização precisa dos seguintes parâmetros obrigatórios:

  • cnpj – CNPJ da empresa emitente
  • serie –  Série da numeração da NFe que terá uma faixa de numeração inutilizada
  • numero_inicial – Número inicial a ser inutilizado
  • numero_final – Número final a ser inutilizado
  • justificativa – Justificativa da inutilização (mínimo 15 caracteres)

Exemplo:

curl -F 'justificativa=Erro no envio para o SEFAZ' -F cnpj=SEU_CNPJ -F serie=1 -F numero_inicial=231 -F numero_final=231 'http://homologacao.acrasnfe.acras.com.br/nfe2/emitir_cce?token=TOKEN&ref=1'

Para consultar o resultado do processamento, utilizamos outras URLs:

GET http://homologacao.acrasnfe.acras.com.br/nfe2/consultar_inutilizacao_numeracao?token=TOKEN
GET http://producao.acrasnfe.acras.com.br/nfe2/consultar_inutilizacao_numeracao?token=TOKEN&ref=REFERENCIA

A consulta precisa dos mesmos parâmetros utilizados para inutilização, com exceção do campo ‘justificativa’.

Exemplo:

curl -F cnpj=SEU_CNPJ -F serie=1 -F numero_inicial=231 -F numero_final=231 'http://homologacao.acrasnfe.acras.com.br/nfe2/consultar_inutilizacao_numeracao?token=TOKEN'

Cujo resultado será algo como:

--- 
serie: "1"
numero_inicial: "231"
status: autorizado
caminho_xml: /arquivos_development/SEU_CNPJ/201404/XMLs/147762335300017255001000000901000000902-inu.xml
numero_final: "902"

Com isso finalizamos uma visão geral de todas as operações envolvendo a NFe, caso tenha alguma dúvida, não hesite em contatar nosso suporte no e-mail suporte@acras.com.br

 

Contagem de Estoque

O controle de estoque de uma loja de confecções não é nada simples. Existem perdas, produtos infelizmente são roubados, desviados e o erro humano é inevitável, dando baixa do produto errado por exemplo. Desta forma é muito comum que o estoque físico (aquele efetivamente presente na loja e nos armazéns) se distancie do estoque lógico (aquele que o sistema indica).

Para isso existe a contagem de estoque, procedimento onde todas as mercadorias presentes fisicamente na loja são lidas e então o sistema confronta as informações, indicando as diferenças e ajustando o que for necessário.

Para efetuar a contagem vá em Utilitários-> Contagem de estoque, uma tela se abrirá com as instruções e especificações das funções, leia atentamente e clique em Iniciar.

Uma nova tela se abrirá, nessa tela deve-se inserir os produtos, lendo o código de barras ou informando a referência e quantidade, essa é a coleta de referências.

<a href="http://acras.com.br/wp-content/uploads/2013/02/CE2.jpg"><img class="alignnone size-full wp-image-647" title="CE2" src="http://acras.com.br/wp-content/uploads/2013/02/CE2.jpg" alt="" width="630" height="394" /></a>

 

Depois de inseridos os produtos que deverão ser contados, clique em ‘ok’. Neste momento o sistema irá calcular as diferenças e apresentar em tela. Nessa tela você poderá escolher entre Ignorar os ajustes das diferenças de contagem de estoque ou Aplicar Ajuste para que as quantidades sejam alinhadas entre o sistema a contagem real de estoque.

 

 

Após finalizar, no caso de ignorar o ajuste, nada será mudado, caso haja discrepância de estoque (contagem manual x produtos existentes no sistema), e você aplique o Ajuste, o mesmo aparecerá no relatório de Balanço de Estoque, é saudável gerar esse relatório e verificar se os ajustes estão corretos.

Você pode encontrar o relatório no Retaguarda, na aba Relatórios-> Produtos-> Balanço de Estoque. Selecione o período e clique em emitir balanço.

 

Nota sobre consignações

Quando há consignações em aberto, a contagem considerará que as mesmas ainda constam no estoque da loja, somente não estão fisicamente na mesma. Isto por que estas mercadorias ainda não foram vendidas. Portanto na hora de ajustar elas serão contadas como parte do estoque e já aparecerão automaticamente na tela de contagem de estoque.

 

<a href="http://acras.com.br/wp-content/uploads/2013/02/CE6.jpg"><img class="alignnone size-full wp-image-651" title="CE6" src="http://acras.com.br/wp-content/uploads/2013/02/CE6.jpg" alt="" width="626" height="390" /></a>