Olá pessoal,

Nossa 9ª edição do [Escovando Bits] vem falar de um assunto muito polêmico para os desenvolvedores, que exige bastante dedicação e a exaustiva "Escovação de Bits".

Este tema tão polêmico é o SPED (Sistema Público de Escrituração Digital).

O Sped é mais um dos arquivos da Escrituração Fiscal Digital - EFD.

EFD é um arquivo digital, que se constitui de um conjunto de escriturações de documentos fiscais e de outras informações de interesse dos fiscos das unidades federadas e da Secretaria da Receita Federal do Brasil. Este arquivo detalha a prestação de serviços e o rendimento do respectivo contribuinte. Estes arquivos deverão ser assinados digitalmente e transmitidos via Internet ao ambiente Sped.

Conheça o site do SPED: http://www1.receita.fazenda.gov.br/
A partir da base de dados, a empresa deverá gerar um arquivo digital de acordo com leiaute estabelecido em Ato COTEPE, no caso do SPED Fiscal (Ato COTEPE/ICMS 09/08), informando todos os documentos fiscais e outras informações de interesse dos fiscos federal e estadual, referentes ao período de apuração dos impostos ICMS e IPI. Este arquivo deverá ser submetido à importação e validação pelo Programa Validador e Assinador (PVA) fornecido pelo Sped.

O SPED Fiscal possui alguns registros que são possíveis extrair a partir do equipamento emissor do Cupom Fiscal (Impressora Fiscal).
Como o equipamento está interligado no Ponto de Venda, devem ser capturadas todas estas informações exigidas pelo layout do SPED e armazenadas no Banco de Dados do estabelecimento para que mensalmente sejam gerados os arquivos...

Já imaginou se estes registros de operações das Impressoras Fiscais não precisassem ser feitos? Já economizaria um bom tempo de desenvolvimento, correto?
Foi exatamente isto que nossa equipe de integração e desenvolvimento fez, através dos feedbacks de vocês parceiros que nos ajudaram a tornar nosso SPED hoje o mais correto do mercado.
É sim, pois se o SPED for gerado pela DLL do Fabricante ou a partir de uma base de dados, as software houses devem se atentar e verificar os mínimos detalhes que às vezes passam despercebidos.
Como por exemplo é o caso do desconto, acréscimo ou cancelamento parcial na quantidade dos itens, ou até mesmo cancelamento de item, desconto no final do Cupom Fiscal, que devem ser tomadas ações já prevendo este rateio de valores entre os itens do Cupom Fiscal, suas respectivas alíquotas e valores algo que dá bastante trabalho.

Pensando nisto foi que nossa equipe aperfeiçoou a DarumaFramework.dll a um ponto em que ela gera este arquivos automaticamente a você desenvolvedor, e apenas chamando uma função, para que você fique livre destas preocupações e tenha um arquivo gerado perfeitamente com os dados do bloco referente ao ECF.
E de três maneiras diferentes com a DarumaFramework.dll.
1º Recurso para Geração do SPED com a DarumaFramework.dll:

E a primeira delas, é com a função rGerarRelatorio_ECF_Daruma. A vantagem de utilizar esta função é que você pode gerar só o SPED ou o SPED + outros diversos relatórios a partir do ECF de apenas uma só vez.

Parâmetros
Tipo do relatório a ser gerado. NFP, SPED, NFP TDM, Sintegra, MF e MFD.
Tipo de Intervalo (DATA, DATAM, COO ou CRZ) *No caso do SPED apenas Intervalo de Data
Intervalo(Inicial) 000000 / dd/mm/aa ou aaaa
Intervalo(Final) 000000 / dd/mm/aa ou aaaa


Na prática:

C#:
[DllImport("DarumaFrameWork.dll")]
        public static extern int rGerarRelatorio_ECF_Daruma(string pszRelatorio, string pszTipo, string pszInicial, string pszFinal);
                       
DarumaFramework_DLL.DarumaFramework_DeclaracFramework_Declaracoes_CSharp.rGerarRelatorio_ECF_Daruma(“SPED”, “DATAM”, “010911”, “301011”);

VB6:

Public Declare Function rGerarRelatorio_ECF_Daruma Lib "DarumaFramework.dll" (ByVal pszRelatorio As String, ByVal pszTipo As String, ByVal pszInicial As String, ByVal pszFinal As String) As Integer

iRetorno = rGerarRelatorio_ECF_Daruma(“SPED”, “DATAM”, “010911”, “301011”)
                                                                                              
DELPHI:

function rGerarRelatorio_ECF_Daruma(szRelatorio:string; szTipo:string; szInicial:string; szFinal:string): Integer; StdCall; External 'DarumaFramework.dll';
 Int_Retorno:= rGerarRelatorio_ECF_Daruma(‘SPED’, ‘DATAM’, ‘010911’, ‘301011’);

//Nos trechos acima é demostrada a chamada da função rGerarRelatorio_ECF_Daruma, onde passamos o intervalo por Data e o período (01/09/11 à 30/10/11).

2º Recurso para Geração do SPED com a DarumaFramework.dll:

A segunda maneira é com uma função semelhante a rGerarRelatorio_ECF_Daruma, para geração de relatórios, porém nesta função não é necessária a passagem do tipo de relatório.
Pois esta função ela é exclusivamente para gerar apenas o SPED, e está segunda opção é pela função: rGerarSPED_ECF_Daruma.

Parâmetros
Tipo de Intervalo (DATA, DATAM, COO ou CRZ) *No caso do SPED apenas Intervalo de Data
Intervalo(Inicial) 000000 / dd/mm/aa ou aaaa
Intervalo(Final) 000000 / dd/mm/aa ou aaaa

Na prática:

C#:
[DllImport("DarumaFrameWork.dll")]
        public static extern int rGerarSPED_ECF_Daruma(string pszTipo, string pszInicial, string pszFinal);
                       
DarumaFramework_DLL.DarumaFramework_DeclaracFramework_Declaracoes_CSharp.rGerarRelatorio_ECF_Daruma(“DATAM”, “010911”, “301011”);

VB6:

Public Declare Function rGerarSPED_ECF_Daruma Lib "DarumaFramework.dll" (ByVal pszTipo As String, ByVal pszInicial As String, ByVal pszFinal As String) As Integer

iRetorno = rGerarRelatorio_ECF_Daruma(“DATAM”, “010911”, “301011”)

DELPHI:

function rGerarSPED_ECF_Daruma(szTipo:string; szInicial:string; szFinal:string): Integer; StdCall; External 'DarumaFramework.dll';

Int_Retorno:= rGeraSPED_ECF_Daruma(‘DATAM’, ‘010911’, ‘301011’);

3º Recurso para Geração do SPED com a DarumaFramework.dll:

A terceira opção para gerar o SPED é pelo GAD – Gerador de Arquivos Daruma.

Veja como utilizar o GAD em nossa 2ª edição do [Escovando Bits]:
http://www.desenvolvedoresdaruma.com.br/sddn/ddemkt/dde001_2011.html

As 3 opções acima citadas geram os registros do SPED que podem ser capturados da Impressora Fiscal.

Registros:

.0220
.C400.
.C405
.C420
.C425
.C460
.C470
.C490
.C495(apenas para Bahia)

Baixe o Programa Validador e Assinador do SPED:


http://www.receita.fazenda.gov.br/Sped/Download/SpedContabilmultiplataforma.htm

Pronto! Esta parte da extração com as informações referentes ao ECF a DarumaFramework.dll gerou e entregou o arquivo prontinho para você. Agora é só fazer os outros blocos e assim que o arquivo estiver totalmente pronto é só assinar.

E para isto você ainda tem a função de assinatura de arquivos: rAssinarRSA_ECF_Daruma.

Este método lê o arquivo informado e retorna a assinatura digital, sem a necessidade da Chave Privada estar carregada na impressora.

Parâmetros
pszPathArquivo Caminho e arquivo para gerar Assinatura(EAD).
pszChavePrivada Caminho da Chave Privada.
pszAssinaturaGerada Variável por referência p/ Retornar Assinatura Digital (EAD).







Na prática:

C#:
[DllImport("DarumaFrameWork.dll")]
        public static extern int rAssinarRSA_ECF_Daruma(string pszPathArquivo, string pszChavePrivada, [MarshalAs(UnmanagedType.VBByRefStr)] ref string pszAssinaturaGerada);
            
  DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.iRetorno = DarumaFramework_DLL.DarumaFramework_Declaracoes_CSharp.rAssinarRSA_ECF_Daruma(“C:\daruma\SPED_DRM.TXT, “C:\PDV_EXE\chaveddc.key” ,ref Str_Assinatura);
          
VB:

Public Declare Function rAssinarRSA_ECF_Daruma Lib "DarumaFramework.dll" (ByVal pszPathArquivo As String, ByVal pszChavePrivada As String, ByVal pszAssinaturaGerada As String) As Integer

iRetorno = rAssinarRSA_ECF_Daruma(“C:\daruma\SPED_DRM.TXT, “C:\PDV_EXE\chaveddc.key”, ref Str_Assinatura);

DELPHI:

function rAssinarRSA_ECF_Daruma (pszPathArquivo:string;pszChavePrivada:string;pszAssinaturaGerada:string): Integer; StdCall; External 'DarumaFramework.dll';
  
Int_Retorno := rAssinarRSA_ECF_Daruma(‘C:\daruma\SPED_DRM.TXT’, ‘C:\PDV_EXE\chaveddc.key ‘,ref Str_Assinatura)

Assista nossos vídeos sobre o SPED:


Um abraço a todos,
E-mails:
ddc.suporte@daruma.com.br
suporte.ddc@daruma.com.br
desenvolvedores.suporte@daruma.com.br
suporte.desenvolvedores@daruma.com.br
desenvolvedores.daruma@daruma.com.br
suporte@daruma.com.br
suporte.alexandre@daruma.com.br
claudenir@daruma.com.br
Skypes:
ddc_suporte_daruma
suporte_ddc_daruma
desenvolvedores_suporte_daruma
suporte_desenvolvedores_daruma
desenvolvedores_daruma
suporte_daruma
suporte_alexandre_daruma
claudenir_andrade

 

Twitter facebook Linkedln Youtube Google+