Saiba oque mudou na Emissão de Notas de Serviço com a atualização no DF:

No dia 1º de janeiro de 2023, empresas prestadoras de serviços que emitem Nota Fiscal Conjugada (modelos 55 e 65) como documento fiscal para registrar prestação de serviços, no Distrito Federal, devem se adequar a mudança emitida pela Secretaria de Estado de Economia do Distrito Federal.

Essa mudança consiste na adequação ao modelo do Sistema de Gerenciamento do Imposto Sobre Serviços, o ISS. (Padrão ABRASF), ou seja, passam a emitir NFS-e. 

Atenção!!!

Para Emitir Notas de Serviço no Shop é necessário que possua o sistema ISSEasy (Emissor de Notas de Serviço) integrado. 

Caso tenha dúvidas quanto a adesão ou instalação do ISS-easy consulte nosso setor comercial ou de suporte.

Só pode ser inserido UM Serviço por NFSe.

Mudanças nos Sistemas:

Wshop

Para realizar a geração do XML da Nota Fiscal de Serviços Eletrônica (NFS-e) é necessário que, no documento tenha somente um serviço por nota. 

A emissão do Recibo Provisório de Serviços (RPS) ou geração do XML apenas será possível quando o documento:

  • Possuir apenas serviços de um mesmo tipo, com mesmo código de Tributação no Município e com mesma alíquota de ISS.
    (Neste caso para gerar XML contendo apenas serviços).
  • For documento de venda ou saída.

Se necessário poderá imprimir o Recibo Provisório de Serviços. 

Saiba AQUI como gerar RPS.


ISSeasy

No ISS as configurações são as configurações Padrões.

Nessa parte você deve adicionar os dados da empresa do cliente, como razão social,CNPJ, Inscrição Municipal, endereço.
Também vai inserir o arquivo da logo que sairá na NFS-e (no campo Layout NFS-e), e apontar o certificado digital que pode ser local ou em nuvem → CLIQUE AQUI PARA VER A IMAGEM!!

 Na aba seguinte, em Integração, teremos o ambiente de emissão, dados do provedor e demais configurações (que podem ser vistas detalhadamente no manual ISS-easy). → CLIQUE AQUI PARA VER A IMAGEM!!


 Na tela de configurações encontramos opções como modo de operação que pode ser serviço ou aplicativo, o diretório dos XMLs, configurações do RPS e de smtp. → CLIQUE AQUI PARA VER A IMAGEM!!


 Lembrando que o ISS-easy não sofreu alterações,  o mesmo já atendia a esse provedor (ISSnet), mas precisou ser ajustado para atender as alterações que o provedor fez pra atender Brasília, especificamente.

Dentro do cadastro de empresa do ISS-easy é necessário cadastrar todas as empresas associadas a principal para que ele possa enviar o xml para a prefeitura, caso contrário o xml da NFS-e irá ficar na 

pasta pendente do ISS-easy.

Para colocarmos todos os dados corretos para a emissão de nota, vamos precisar pegar as informações dele no site - https://df.issnetonline.com.br/online/Login/Login.aspx
Pode logar com o usuário e senha que foi cadastrado quando habilitaram pra usar nfse ou conectar com o Certificado Digital.
Passo a Passo:

  1. No site, será aberto um Menu e na tela de busca
  2. Deve ser digitado: Ficha cadastral e clicar sobre a opção. 

Vai abrir uma tela com todos os cadastros do cliente no provedor. Lá tem o CNAE cadastrado, os códigos de tributação, Regime tributário, etc.
Se houver qualquer informação diferente do que consta nesse, a nota será rejeitada.

No caso do NFeasy Emissor se a mesma pessoa fez o cadastro de várias empresas no mesmo CPF, vai abrir uma tela com todas elas. Se o cliente tem por exemplo 3 empresas vai ter que fazer isso pra cada uma das empresas.

Caso esteja com alguma Rejeição, temos algumas dicas AQUI!

Informações Importantes:

Provedor: ISSNet (Versão 2.04)

DLL: AltNFSEISSNet204.dll

  • URLs para configuração do ISSEasy

Homologação: https://www.issnetonline.com.br/homologaabrasf/webservicenfse204/nfse.asmx

Produção: https://df.issnetonline.com.br/webservicenfse204/nfse.asmx

  • Série de NFSe: 3


Para saber sobre a questão no NFEasy Emissor, clique aqui!

 

Autor do artigo:Rayana.sup.shop

(Não remova esse quadro)

Descreva o passo a passo para o cliente seguindo os padrões de escrita de artigos, como:

  1. Escreva na voz ativa,
  2. Numere o passo a passo,
  3. Evite utilização de imagens,
  4. Escreva no tempo presente, na primeira pessoa e no imperativo (em passo a passos).


Essas informações não se tornam parte do conteúdo em sua nova página, elas ficam ocultas e só aparecem para usuário logado e se o artigo/dica estiver em modo de edição!




(Não remova esse quadro)
Essas informações não se tonam parte do conteúdo em sua nova página, elas ficam ocultas e só aprecem para usuário logado e se o artigo/dica estiver em modo de edição!
<div id="text-end"></div>




<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-193974933-1"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag2(){dataLayer.push(arguments);}
  gtag2('js', new Date());

  gtag2('config', 'UA-193974933-1');


  function gtagevents (action,category) {
     console.log(category + ':' + action);
     gtag2('event',action,{event_category:category,event_label: document.title});
  };

</script>

<script src="https://player.vimeo.com/api/player.js"></script>
<script>
    (function(){
        // RASTREIO DE USO DO VÍDEO
        function gtagvideo(action){
           gtagevents(action,'Video')
        }

        var iframe = document.querySelector('iframe');
        var player = new Vimeo.Player(iframe);

        var seeking = false;
        var priorTime = 0;
        var currentTime = 0;
        var reportouFinalDoConteudo = false;

        // se pausar o play é acionado também.
        player.on('play', function(data) {
            if(data.seconds == 0){ 
              gtagvideo('video-iniciado');
            }
            priorTime = data.seconds;             
        });

        player.on('ended', function() {
            gtagvideo('video-finalizado');
        });

        //seeking e timeupdate são disparados juntos, logo o tempo dos 2 é atualizado também. Preciso garantir que a variavel starttime seja atualizada ordenadamente (sempre antes ou após o seeking).
        // pra isso preciso setar uma variavel no timeupdate e ler no seeking para garantir a ordem. Se ela estiver false será alterada na próxima iteração.
        player.on('seeking', function(data) {               
            seeking = true;
        });


        player.on('pause',function(data){
            gtagvideo('video-pausado');    
        });

        player.on('timeupdate', function(data) {
            if(seeking){
                if(currentTime < priorTime){
                    gtagvideo('video-voltando');    
                }
                if(currentTime > priorTime){
                    gtagvideo('video-avancando')
                }
                seeking = false;
            }
            priorTime = currentTime;
            currentTime = data.seconds;


           var finalDoConteudo = (data.duration - data.seconds) < 5;
           if(finalDoConteudo && !reportouFinalDoConteudo){
            gtagvideo('conteudo-finalizado')
            reportouFinalDoConteudo = true;
           }
        });

        player.on('fullscreenchange', function() {
            gtagvideo('video-fullscreen');
        });
    })();
</script>

<script>
 // RASTREIO DO USO DE AUDIO
 (function(){
    function gtagaudio(action){
           gtagevents(action,'Audio')
    }            

    var audio = document.querySelector("audio");

    var seeking = false;
    var priorTime = 0;
    var currentTime = 0;

    audio.addEventListener('play',function(){
        if(audio.currentTime == 0){
          gtagaudio('audio-iniciado');
        }
        priorTime = audio.currentTime;        
    });

    audio.addEventListener('ended',function(){
        gtagaudio('audio-finalizado');
    });

    audio.addEventListener('pause',function(){
        gtagaudio('audio-pausado');
    });

    audio.addEventListener('seeking', function(data) {               
        seeking = true;
    });

    audio.addEventListener('timeupdate', function(data) {               
        if(seeking){
                if(currentTime < priorTime){
                    gtagaudio('audio-voltando');    
                }
                if(currentTime > priorTime){
                    gtagaudio('audio-avancando')
                }
                seeking = false;
            }
            priorTime = currentTime;
            currentTime = audio.currentTime;
    });    
 })();
 </script>

<script>
    (function(){
        var terminou = false;
        //RASTREIO DE LEITURA ATÉ O FINAL DA PÁGINA
        document.addEventListener('scroll',() => {
            if(document.getElementById('text-end').getBoundingClientRect().top < window.innerHeight){
                if(!terminou){
                    terminou = true;
                    gtagevents('artigo-lido','Pagina')
                }
            }else{
                terminou = false;
            }
                
        });
    })();
 </script>







<div id="text-end"></div>


<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-19PXZY9EEV"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag3(){dataLayer.push(arguments);}
  gtag3('js', new Date());

  gtag3('config', 'G-19PXZY9EEV');


  function gtagevents (action,category) {
     console.log(category + ':' + action);
     gtag3('event',action,{event_category:category,event_label: document.title});
  };

</script>
<script src="https://player.vimeo.com/api/player.js"></script>
<script>
    (function(){
        // RASTREIO DE USO DO VÍDEO
        function gtagvideo(action){
           gtagevents(action,'Video')
        }

        var iframe = document.querySelector('iframe');
        var player = new Vimeo.Player(iframe);

        var seeking = false;
        var priorTime = 0;
        var currentTime = 0;
        var reportouFinalDoConteudo = false;
        var reportouMetadeAssistido = false;

        // se pausar o play é acionado também.
        player.on('play', function(data) {
            if(data.seconds == 0){ 
              gtagvideo('video-iniciado');
            }
            priorTime = data.seconds;             
        });

        player.on('ended', function() {
            gtagvideo('video-finalizado');
        });

        //seeking e timeupdate são disparados juntos, logo o tempo dos 2 é atualizado também. Preciso garantir que a variavel starttime seja atualizada ordenadamente (sempre antes ou após o seeking).
        // pra isso preciso setar uma variavel no timeupdate e ler no seeking para garantir a ordem. Se ela estiver false será alterada na próxima iteração.
        player.on('seeking', function(data) {               
            seeking = true;
        });

        player.on('pause',function(data){
            gtagvideo('video-pausado');    
        });

        player.on('timeupdate', function(data) {
            if(seeking){
                if(currentTime < priorTime){
                    gtagvideo('video-voltando');    
                }
                if(currentTime > priorTime){
                    gtagvideo('video-avancando')
                }
                seeking = false;
            }
            priorTime = currentTime;
            currentTime = data.seconds;


           var finalDoConteudo = (data.duration - data.seconds) < 5;
           if(finalDoConteudo && !reportouFinalDoConteudo){
            gtagvideo('video-conteudo-finalizado')
            reportouFinalDoConteudo = true;
           }


           var metadeAssistido = data.seconds > (data.duration/2);
           if(metadeAssistido && !reportouMetadeAssistido){
              gtagvideo('video-metade-assistido')
              reportouMetadeAssistido = true;
           }
        });

        player.on('fullscreenchange', function() {
            gtagvideo('video-fullscreen');
        });
    })();
</script>

<script>
 // RASTREIO DO USO DE AUDIO
 (function(){
    function gtagaudio(action){
           gtagevents(action,'Audio')
    }            

    var audio = document.querySelector("audio");

    var seeking = false;
    var priorTime = 0;
    var currentTime = 0;

    audio.addEventListener('play',function(){
        if(audio.currentTime == 0){
          gtagaudio('audio-iniciado');
        }
        priorTime = audio.currentTime;        
    });

    audio.addEventListener('ended',function(){
        gtagaudio('audio-finalizado');
    });

    audio.addEventListener('pause',function(){
        gtagaudio('audio-pausado');
    });

    audio.addEventListener('seeking', function(data) {               
        seeking = true;
    });

    audio.addEventListener('timeupdate', function(data) {               
        if(seeking){
                if(currentTime < priorTime){
                    gtagaudio('audio-voltando');    
                }
                if(currentTime > priorTime){
                    gtagaudio('audio-avancando')
                }
                seeking = false;
            }
            priorTime = currentTime;
            currentTime = audio.currentTime;
    });    
 })();
 </script>

<script>
    (function(){
        const tamanhoDaTela = window.innerHeight;
        let terminou = false;
        let chegouNaMetade = false;
        // se não remover o tamanho da tela do meio da página, o evento só será disparado quando o meio da página estiver acima da área visível. 
        //  fazendo dessa forma assim que o meio da página estiver visível na base da janela o evento será disparado.
        const meioDoTexto = (document.getElementById('text-end').getBoundingClientRect().top / 2) - tamanhoDaTela;
        //RASTREIO DE LEITURA ATÉ O FINAL DA PÁGINA
        document.addEventListener('scroll',() => {            
            if(document.getElementById('text-end').getBoundingClientRect().top < tamanhoDaTela){
                if(!terminou){
                    terminou = true;
                    gtagevents('artigo-lido','Pagina')
                }
            }else{                
                terminou = false;
            } 

            //RASTREIO DE LEITURA ATÉ O MEIO DA PÁGINA
            if(meioDoTexto < window.scrollY) {
                if(!chegouNaMetade){
                  gtagevents('artigo-lido-ate-metade','Pagina');
                  chegouNaMetade = true;
                }
            } else {
               chegouNaMetade = false;
            }
        });
    })();
 </script>