Ficha de Conteúdo de Importação - Primo do SPED

Fórum sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (NFe, NFCe, NFSe, SPEED, Projeto ACBr, TEF, ECD, EFD, etc.)

Moderador: Moderadores

Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Ficha de Conteúdo de Importação - Primo do SPED

Mensagem por rochinha »

Amiguinhos,

Resolução do Senado Federal 13/2012
Atualizada em: 05/02/2013

Em 26 de abril de 2012, foi publicada a Resolução no 13 do Senado Federal, que reduz para 4%, a partir de 01/01/2013, a alíquota do ICMS incidente nas operações interestaduais com produtos importados.

De acordo com a Resolução, será de 4% a alíquota do ICMS nas operações interestaduais com bens e mercadorias importados do exterior que, após seu desembaraço aduaneiro, não tenham sido submetidos a processo de industrialização ou, ainda que submetidos a qualquer processo de industrialização, resultem em mercadorias ou bens com Conteúdo de Importação superior a 40%.

Nos termos da Resolução SF no 13/2012, mantém-se as atuais alíquotas interestaduais de 7% ou 12%, conforme o caso, aos bens e mercadorias importados do exterior que não tenham similar nacional (Resolução Camex n.º 79/2012); aos bens produzidos em conformidade com os processos produtivos básicos - Decreto-Lei 288/67- ZFM, Lei 8.248/91 – Informática e Automação e Lei 11.484/2007 – PADIS/PATVD e respectivas atualizações; e às operações que destinem gás natural importado do exterior a outros Estados.


Manual do Usuario

Validador FCI
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Ficha de Conteúdo de Importação - Primo do SPED

Mensagem por rochinha »

Amiguinhos,

Seguindo a linha de SPED PIS COFINS sem mistério dou seguimento adicionando material para reforço do tema que entra em voga real logo mais.

PASSO 1Coloco o conjunto de funções que geram as tabelas conforme informações dos campos de cada registro do layout FCI.

Código: Selecionar todos

FUNCTION FISCOTabelaR0000()
   // *** Estrutura do Registro R0000 ***
   LOCAL Estru := {}
   AADD( Estru, { 'CAMPO01'     , 'C', 0004, 00 } ) // 01 - Identifica o tipo de registro ?0000
   AADD( Estru, { 'CAMPO02'     , 'C', 0014, 00 } ) // 02 - CNPJ do estabelecimento
   AADD( Estru, { 'CAMPO03'     , 'C', 0255, 00 } ) // 03 - Nome (Fantasia) ou RazãoSocial do C
   AADD( Estru, { 'CAMPO04'     , 'C', 0004, 00 } ) // 04 - Versão de leiaute do arquivo
   AADD( Estru, { 'CAMPO05'     , 'C', 0047, 00 } ) // 05 - Hash Code do arquivo
   AADD( Estru, { 'CAMPO06'     , 'C', 0020, 00 } ) // 06 - Data em que o arquivo foi aceito
   AADD( Estru, { 'CAMPO07'     , 'C', 0036, 00 } ) // 07 - Código de recepção do
   AADD( Estru, { 'CAMPO08'     , 'C', 0020, 00 } ) // 08 - Data que o arquivo foi validado
   AADD( Estru, { 'CAMPO09'     , 'C', 0020, 00 } ) // 09 - Indicador de validação do arquivo
   dbCreate( 'R0000.DBF', Estru )
   RETURN NIL

FUNCTION FISCOTabelaR0001()
   // *** Estrutura do Registro R0001 ***
   LOCAL Estru := {}
   AADD( Estru, { 'CAMPO01'     , 'C', 0004, 00 } ) // 01 - Identifica o tipo de registro ?0001
   AADD( Estru, { 'CAMPO02'     , 'C', 0150, 00 } ) // 02 - Texto padrão em caracteres UTF-
   dbCreate( 'R0001.DBF', Estru )
   RETURN NIL

FUNCTION FISCOTabelaR0010()
   // *** Estrutura do Registro R0010 ***
   LOCAL Estru := {}
   AADD( Estru, { 'CAMPO01'     , 'C', 0004, 00 } ) // 01 - Identifica o tipo de registro ?0010
   AADD( Estru, { 'CAMPO02'     , 'C', 0014, 00 } ) // 02 - CNPJ do contribuinte
   AADD( Estru, { 'CAMPO03'     , 'C', 0255, 00 } ) // 03 - Razão Social do contribuinte
   AADD( Estru, { 'CAMPO04'     , 'C', 0020, 00 } ) // 04 - Inscrição Estadual
   AADD( Estru, { 'CAMPO05'     , 'C', 0255, 00 } ) // 05 - Endereço do estabelecimento
   AADD( Estru, { 'CAMPO06'     , 'C', 0008, 00 } ) // 06 - CEP do Estabelecimento
   AADD( Estru, { 'CAMPO07'     , 'C', 0255, 00 } ) // 07 - Município do estabelecimento
   AADD( Estru, { 'CAMPO08'     , 'C', 0002, 00 } ) // 08 - Unidade da Federação
   dbCreate( 'R0010.DBF', Estru )
   RETURN NIL

FUNCTION FISCOTabelaR0990()
   // *** Estrutura do Registro R0990 ***
   LOCAL Estru := {}
   AADD( Estru, { 'CAMPO01'     , 'C', 0004, 00 } ) // 01 - Carrega campo ?0990?
   AADD( Estru, { 'CAMPO02'     , 'C', 0002, 00 } ) // 02 - Quantidades
   dbCreate( 'R0990.DBF', Estru )
   RETURN NIL

FUNCTION FISCOTabelaR5001()
   // *** Estrutura do Registro R5001 ***
   LOCAL Estru := {}
   AADD( Estru, { 'CAMPO01'     , 'C', 0004, 00 } ) // 01 - Campo fixo "5001"
   dbCreate( 'R5001.DBF', Estru )
   RETURN NIL

FUNCTION FISCOTabelaR5020()
   // *** Estrutura do Registro R5020 ***
   LOCAL Estru := {}
   AADD( Estru, { 'CAMPO01'     , 'C', 0004, 00 } ) // 01 - Registro  5020:
   AADD( Estru, { 'CAMPO02'     , 'C', 0255, 00 } ) // 02 - Descrição da mercadoria
   AADD( Estru, { 'CAMPO03'     , 'C', 0008, 00 } ) // 03 - Código Comum do MERCOSUL
   AADD( Estru, { 'CAMPO04'     , 'C', 0050, 00 } ) // 04 - Código do produto no estabeleciment
   AADD( Estru, { 'CAMPO05'     , 'C', 0014, 00 } ) // 05 - Código
   AADD( Estru, { 'CAMPO06'     , 'C', 0006, 00 } ) // 06 - Unidade a que se refere
   AADD( Estru, { 'CAMPO07'     , 'C', 0015, 02 } ) // 07 - Valor
   AADD( Estru, { 'CAMPO08'     , 'C', 0015, 02 } ) // 08 - Valor
   AADD( Estru, { 'CAMPO09'     , 'C', 0006, 02 } ) // 09 - do
   AADD( Estru, { 'CAMPO10'     , 'C', 0036, 00 } ) // 10 - Código
   AADD( Estru, { 'CAMPO11'     , 'C', 0020, 00 } ) // 11 - Indicador
   dbCreate( 'R5020.DBF', Estru )
   RETURN NIL

FUNCTION FISCOTabelaR5990()
   // *** Estrutura do Registro R5990 ***
   LOCAL Estru := {}
   AADD( Estru, { 'CAMPO01'     , 'C', 0004, 00 } ) // 01 - Campo fixo ?5990?
   AADD( Estru, { 'CAMPO02'     , 'C', 0006, 00 } ) // 02 - Quantidades de linha do bloco 5
   dbCreate( 'R5990.DBF', Estru )
   RETURN NIL

FUNCTION FISCOTabelaR9001()
   // *** Estrutura do Registro R9001 ***
   LOCAL Estru := {}
   AADD( Estru, { 'CAMPO01'     , 'C', 0004, 00 } ) // 01 - Texto fixo contendo ?9001?
   dbCreate( 'R9001.DBF', Estru )
   RETURN NIL

FUNCTION FISCOTabelaR9900()
   // *** Estrutura do Registro R9900 ***
   LOCAL Estru := {}
   AADD( Estru, { 'CAMPO01'     , 'C', 0004, 00 } ) // 01 - Texto fixo
   AADD( Estru, { 'CAMPO02'     , 'C', 0004, 00 } ) // 02 - Tipo do registro
   AADD( Estru, { 'CAMPO03'     , 'C', 0008, 00 } ) // 03 - registros
   dbCreate( 'R9900.DBF', Estru )
   RETURN NIL

FUNCTION FISCOTabelaR9990()
   // *** Estrutura do Registro R9990 ***
   LOCAL Estru := {}
   AADD( Estru, { 'CAMPO01'     , 'C', 0004, 00 } ) // 01 - Texto fixo contendo ?9990?
   AADD( Estru, { 'CAMPO02'     , 'C', 0002, 00 } ) // 02 - Quantidade total de linhas
   dbCreate( 'R9990.DBF', Estru )
   RETURN NIL

FUNCTION FISCOTabelaR9999()
   // *** Estrutura do Registro R9999 ***
   LOCAL Estru := {}
   AADD( Estru, { 'CAMPO01'     , 'C', 0004, 00 } ) // 01 - Texto fixo contendo ?9999?
   AADD( Estru, { 'CAMPO02'     , 'C', 0008, 00 } ) // 02 - Quantidade total de linhas
   dbCreate( 'R9999.DBF', Estru )
   RETURN NIL
Rotina de uso:

Código: Selecionar todos

FUNCTION GeraFISCOTabelas()
   FISCOTabelaR0000()
   FISCOTabelaR0001()
   FISCOTabelaR0010()
   FISCOTabelaR0990()
   FISCOTabelaR5001()
   FISCOTabelaR5020()
   FISCOTabelaR5990()
   FISCOTabelaR9001()
   FISCOTabelaR9900()
   FISCOTabelaR9990()
   FISCOTabelaR9999()
   RETURN NIL
PASSO 2Conjunto de funções que salva os registros nas tabelas, conforme a sua rotina, laço de leitura, etc:

Código: Selecionar todos

FUNCTION FISCOSalvaR0000()
   // *** Estrutura do Registro R0000 ***
   R0000->( dbAppend() )
   R0000->CAMPO01      := '0000' // 01 - Identifica o tipo de registro ?0000
   R0000->CAMPO02      := M->CNPJ_CONTRIBUINTE    // 02 - CNPJ do estabelecimento
   R0000->CAMPO03      := M->NOME_CONTRIBUINTE    // 03 - Nome (Fantasia) ou RazãoSocial do C
   R0000->CAMPO04      := M->VERSAO_LEIAUTE       // 04 - Versão de leiaute do arquivo
   R0000->CAMPO05      := M->HASH_HASH CODE       // 05 - Hash Code do arquivo
   R0000->CAMPO06      := M->DT_RECEPCAO_ARQUIVO  // 06 - Data em que o arquivo foi aceito
   R0000->CAMPO07      := M->COD_RECEPCAO_ARQUIVO // 07 - Código de recepção do
   R0000->CAMPO08      := M->DT_VALIDACAO_ARQUIVO // 08 - Data que o arquivo foi validado
   R0000->CAMPO09      := M->IN_VALIDACAO_ARQUIVO // 09 - Indicador de validação do arquivo
   R0000->( dbCommit() )
   //
   M->AREA0000 := Select()
   M->QTD_LIN_0 := '1'
   M->QTD_LIN_9 := '1'
   M->QTD_REG_BLC := '1'
   dbSelectArea('R0990')
   FISCOSalvaR0990()
   M->REG_BLC := '0000'
   dbSelectArea('R9900')
   FISCOSalvaR9900()
   dbSelectArea(M->AREA0000)
   RETURN nil

FUNCTION FISCOSalvaR0001()
   // *** Estrutura do Registro R0001 ***
   R0001->( dbAppend() )
   R0001->CAMPO01      := '0001' // 01 - Identifica o tipo de registro ?0001
   R0001->CAMPO02      := M->TEXTO_PADRAO_UTF8    // 02 - Texto padrão em caracteres UTF-
   R0001->( dbCommit() )
   //
   M->AREA0001 := Select()
   M->QTD_LIN_0 := '1'
   M->QTD_LIN_9 := '1'
   M->QTD_REG_BLC := '1'
   dbSelectArea('R0990')
   FISCOSalvaR0990()
   M->REG_BLC := '0001'
   dbSelectArea('R9900')
   FISCOSalvaR9900()
   dbSelectArea(M->AREA0001)
   RETURN nil

FUNCTION FISCOSalvaR0010()
   // *** Estrutura do Registro R0010 ***
   R0010->( dbAppend() )
   R0010->CAMPO01      := '0010' // 01 - Identifica o tipo de registro ?0010
   R0010->CAMPO02      := M->CNPJ_CONTRIBUINTE    // 02 - CNPJ do contribuinte
   R0010->CAMPO03      := M->NOME_RAZAO_SOCIAL    // 03 - Razão Social do contribuinte
   R0010->CAMPO04      := M->INSCRI€ÇO_ESTADUAL   // 04 - Inscrição Estadual
   R0010->CAMPO05      := M->ENDERE€O_ESTABELECIMENTO // 05 - Endereço do estabelecimento
   R0010->CAMPO06      := M->CEP                  // 06 - CEP do Estabelecimento
   R0010->CAMPO07      := M->MUNICÖPIO            // 07 - Município do estabelecimento
   R0010->CAMPO08      := M->UF                   // 08 - Unidade da Federação
   R0010->( dbCommit() )
   //
   M->AREA0010 := Select()
   M->QTD_LIN_0 := '1'
   M->QTD_LIN_9 := '1'
   M->QTD_REG_BLC := '1'
   dbSelectArea('R0990')
   FISCOSalvaR0990()
   M->REG_BLC := '0010'
   dbSelectArea('R9900')
   FISCOSalvaR9900()
   dbSelectArea(M->AREA0010)
   RETURN nil

FUNCTION FISCOSalvaR0990()
   // *** Estrutura do Registro R0990 ***
   if recco() = 0
      M->QTD_LIN_0 := '1'
      R0990->( dbAppend() )
   else
      M->QTD_LIN_0 := alltrim(str(val(R0990->CAMPO02) + 1,6))
      R0990->( dbRLock() )
   endif
   R0990->CAMPO01      := '0990' // 01 - Carrega campo ?0990?
   R0990->CAMPO02      := M->QUANTIDADE_LINHAS    // 02 - Quantidades
   R0990->( dbCommit() )
   //
   M->AREA0990 := Select()
   M->QTD_LIN_0 := '1'
   M->QTD_LIN_9 := '1'
   M->QTD_REG_BLC := '1'
   M->REG_BLC := '0990'
   dbSelectArea('R9900')
   FISCOSalvaR9900()
   dbSelectArea(M->AREA0990)
   RETURN nil

FUNCTION FISCOSalvaR5001()
   // *** Estrutura do Registro R5001 ***
   R5001->( dbAppend() )
   R5001->CAMPO01      := '5001' // 01 - Campo fixo "5001"
   R5001->( dbCommit() )
   //
   M->AREA5001 := Select()
   M->QTD_LIN_5 := '1'
   M->QTD_LIN_9 := '1'
   M->QTD_REG_BLC := '1'
   dbSelectArea('R5990')
   FISCOSalvaR5990()
   M->REG_BLC := '5001'
   dbSelectArea('R9900')
   FISCOSalvaR9900()
   dbSelectArea(M->AREA5001)
   RETURN nil

FUNCTION FISCOSalvaR5020()
   // *** Estrutura do Registro R5020 ***
   R5020->( dbAppend() )
   R5020->CAMPO01      := '5020' // 01 - Registro  5020:
   R5020->CAMPO02      := M->NOME_MERCADORIA      // 02 - Descrição da mercadoria
   R5020->CAMPO03      := M->CODIGO_NCM           // 03 - Código Comum do MERCOSUL
   R5020->CAMPO04      := M->CODIGO_MERCADORIA    // 04 - Código do produto no estabeleciment
   R5020->CAMPO05      := M->CODIGO_GTIN          // 05 - Código
   R5020->CAMPO06      := M->UNIDADE_MERCADORIA   // 06 - Unidade a que se refere
   R5020->CAMPO07      := M->VALOR_SAIDA_MERCADORIA_INTERESTADU // 07 - Valor
   R5020->CAMPO08      := M->VALOR_PARCELA_IMPORTADA_EXTERIOR // 08 - Valor
   R5020->CAMPO09      := M->CONTEUDO_IMPORTACAO_CI // 09 - do
   R5020->CAMPO10      := M->CODIGO_FCI           // 10 - Código
   R5020->CAMPO11      := M->IN_VALIDACAO_FICHA   // 11 - Indicador
   R5020->( dbCommit() )
   //
   M->AREA5020 := Select()
   M->QTD_LIN_5 := '1'
   M->QTD_LIN_9 := '1'
   M->QTD_REG_BLC := '1'
   dbSelectArea('R5990')
   FISCOSalvaR5990()
   M->REG_BLC := '5020'
   dbSelectArea('R9900')
   FISCOSalvaR9900()
   dbSelectArea(M->AREA5020)
   RETURN nil

FUNCTION FISCOSalvaR5990()
   // *** Estrutura do Registro R5990 ***
   if recco() = 0
      M->QTD_LIN_5 := '1'
      R5990->( dbAppend() )
   else
      M->QTD_LIN_5 := alltrim(str(val(R5990->CAMPO02) + 1,6))
      R5990->( dbRLock() )
   endif
   R5990->CAMPO01      := '5990' // 01 - Campo fixo ?5990?
   R5990->CAMPO02      := M->QUANTIDADE_LINHAS    // 02 - Quantidades de linha do bloco 5
   R5990->( dbCommit() )
   //
   M->AREA5990 := Select()
   M->QTD_LIN_5 := '1'
   M->QTD_LIN_9 := '1'
   M->QTD_REG_BLC := '1'
   M->REG_BLC := '5990'
   dbSelectArea('R9900')
   FISCOSalvaR9900()
   dbSelectArea(M->AREA5990)
   RETURN nil
Rotina de uso, exemplificando somente a primeira função:

Código: Selecionar todos

FUNCTION GeraFISCOSalva()
   // *** Estrutura do Registro R0000 ***
   // Preencher as variaveis com dados antes de repassar
   M->REG := '0000' // 01 - Identifica o tipo de registro ?0000
   M->CNPJ_CONTRIBUINTE    := '' // 02 - CNPJ do estabelecimento
   M->NOME_CONTRIBUINTE    := '' // 03 - Nome (Fantasia) ou RazãoSocial do C
   M->VERSAO_LEIAUTE       := '' // 04 - Versão de leiaute do arquivo
   M->HASH_HASH CODE       := '' // 05 - Hash Code do arquivo
   M->DT_RECEPCAO_ARQUIVO  := '' // 06 - Data em que o arquivo foi aceito
   M->COD_RECEPCAO_ARQUIVO := '' // 07 - Código de recepção do
   M->DT_VALIDACAO_ARQUIVO := '' // 08 - Data que o arquivo foi validado
   M->IN_VALIDACAO_ARQUIVO := '' // 09 - Indicador de validação do arquivo
   FISCOSalvaR0000()
   ...
   FISCOSalvaR0001()
   ...
   FISCOSalvaR0010()
   ...
   FISCOSalvaR0990()
   ...
   FISCOSalvaR5001()
   ...
   do while ...
       FISCOSalvaR5020()
       ...
       FISCOSalvaR5990()
   enddo
   ...
   FISCOSalvaR9001()
   ...
   FISCOSalvaR9900()
   ...
   FISCOSalvaR9990()
   RETURN NIL
PASSO 3Conjunto de funções que pegam os dados dos registros contidos em cada tabela, concatenado o resultado:

Código: Selecionar todos

FUNCTION FISCORegistroR0000()
   // *** Estrutura do Registro R0000 ***
   LOCAL cCRLF := chr(13)+chr(10), cSeparator := '|'
   cTrailler := cSeparator
   cTrailler := cTrailler + StrFill( R0000->CAMPO01     , 0004, ' ', 'R' ) + cSeparator // 01 - Identifica o tipo de registro ?0000
   cTrailler := cTrailler + StrFill( R0000->CAMPO02     , 0014, ' ', 'R' ) + cSeparator // 02 - CNPJ do estabelecimento
   cTrailler := cTrailler + StrFill( R0000->CAMPO03     , 0255, ' ', 'R' ) + cSeparator // 03 - Nome (Fantasia) ou RazãoSocial do C
   cTrailler := cTrailler + StrFill( R0000->CAMPO04     , 0004, ' ', 'R' ) + cSeparator // 04 - Versão de leiaute do arquivo
   cTrailler := cTrailler + StrFill( R0000->CAMPO05     , 0047, ' ', 'R' ) + cSeparator // 05 - Hash Code do arquivo
   cTrailler := cTrailler + StrFill( R0000->CAMPO06     , 0020, ' ', 'R' ) + cSeparator // 06 - Data em que o arquivo foi aceito
   cTrailler := cTrailler + StrFill( R0000->CAMPO07     , 0036, ' ', 'R' ) + cSeparator // 07 - Código de recepção do
   cTrailler := cTrailler + StrFill( R0000->CAMPO08     , 0020, ' ', 'R' ) + cSeparator // 08 - Data que o arquivo foi validado
   cTrailler := cTrailler + StrFill( R0000->CAMPO09     , 0020, ' ', 'R' ) + cSeparator // 09 - Indicador de validação do arquivo
   cTrailler := cTrailler + cCRLF
   RETURN cTrailler

FUNCTION FISCORegistroR0001()
   // *** Estrutura do Registro R0001 ***
   LOCAL cCRLF := chr(13)+chr(10), cSeparator := '|'
   cTrailler := cSeparator
   cTrailler := cTrailler + StrFill( R0001->CAMPO01     , 0004, ' ', 'R' ) + cSeparator // 01 - Identifica o tipo de registro ?0001
   cTrailler := cTrailler + StrFill( R0001->CAMPO02     , 0150, ' ', 'R' ) + cSeparator // 02 - Texto padrão em caracteres UTF-
   cTrailler := cTrailler + cCRLF
   RETURN cTrailler

FUNCTION FISCORegistroR0010()
   // *** Estrutura do Registro R0010 ***
   LOCAL cCRLF := chr(13)+chr(10), cSeparator := '|'
   cTrailler := cSeparator
   cTrailler := cTrailler + StrFill( R0010->CAMPO01     , 0004, ' ', 'R' ) + cSeparator // 01 - Identifica o tipo de registro ?0010
   cTrailler := cTrailler + StrFill( R0010->CAMPO02     , 0014, ' ', 'R' ) + cSeparator // 02 - CNPJ do contribuinte
   cTrailler := cTrailler + StrFill( R0010->CAMPO03     , 0255, ' ', 'R' ) + cSeparator // 03 - Razão Social do contribuinte
   cTrailler := cTrailler + StrFill( R0010->CAMPO04     , 0020, ' ', 'R' ) + cSeparator // 04 - Inscrição Estadual
   cTrailler := cTrailler + StrFill( R0010->CAMPO05     , 0255, ' ', 'R' ) + cSeparator // 05 - Endereço do estabelecimento
   cTrailler := cTrailler + StrFill( R0010->CAMPO06     , 0008, '0', 'L' ) + cSeparator // 06 - CEP do Estabelecimento
   cTrailler := cTrailler + StrFill( R0010->CAMPO07     , 0255, ' ', 'R' ) + cSeparator // 07 - Município do estabelecimento
   cTrailler := cTrailler + StrFill( R0010->CAMPO08     , 0002, ' ', 'R' ) + cSeparator // 08 - Unidade da Federação
   cTrailler := cTrailler + cCRLF
   RETURN cTrailler

FUNCTION FISCORegistroR0990()
   // *** Estrutura do Registro R0990 ***
   LOCAL cCRLF := chr(13)+chr(10), cSeparator := '|'
   cTrailler := cSeparator
   cTrailler := cTrailler + StrFill( R0990->CAMPO01     , 0004, ' ', 'R' ) + cSeparator // 01 - Carrega campo ?0990?
   cTrailler := cTrailler + StrFill( R0990->CAMPO02     , 0002, '0', 'L' ) + cSeparator // 02 - Quantidades
   cTrailler := cTrailler + cCRLF
   RETURN cTrailler

FUNCTION FISCORegistroR5001()
   // *** Estrutura do Registro R5001 ***
   LOCAL cCRLF := chr(13)+chr(10), cSeparator := '|'
   cTrailler := cSeparator
   cTrailler := cTrailler + StrFill( R5001->CAMPO01     , 0004, ' ', 'R' ) + cSeparator // 01 - Campo fixo "5001"
   cTrailler := cTrailler + cCRLF
   RETURN cTrailler

FUNCTION FISCORegistroR5020()
   // *** Estrutura do Registro R5020 ***
   LOCAL cCRLF := chr(13)+chr(10), cSeparator := '|'
   cTrailler := cSeparator
   cTrailler := cTrailler + StrFill( R5020->CAMPO01     , 0004, ' ', 'R' ) + cSeparator // 01 - Registro  5020:
   cTrailler := cTrailler + StrFill( R5020->CAMPO02     , 0255, ' ', 'R' ) + cSeparator // 02 - Descrição da mercadoria
   cTrailler := cTrailler + StrFill( R5020->CAMPO03     , 0008, '0', 'L' ) + cSeparator // 03 - Código Comum do MERCOSUL
   cTrailler := cTrailler + StrFill( R5020->CAMPO04     , 0050, ' ', 'R' ) + cSeparator // 04 - Código do produto no estabeleciment
   cTrailler := cTrailler + StrFill( R5020->CAMPO05     , 0014, '0', 'L' ) + cSeparator // 05 - Código
   cTrailler := cTrailler + StrFill( R5020->CAMPO06     , 0006, ' ', 'R' ) + cSeparator // 06 - Unidade a que se refere
   cTrailler := cTrailler + StrFill( R5020->CAMPO07     , 0015, '0', 'L' ) + cSeparator // 07 - Valor
   cTrailler := cTrailler + StrFill( R5020->CAMPO08     , 0015, '0', 'L' ) + cSeparator // 08 - Valor
   cTrailler := cTrailler + StrFill( R5020->CAMPO09     , 0006, '0', 'L' ) + cSeparator // 09 - do
   cTrailler := cTrailler + StrFill( R5020->CAMPO10     , 0036, ' ', 'R' ) + cSeparator // 10 - Código
   cTrailler := cTrailler + StrFill( R5020->CAMPO11     , 0020, ' ', 'R' ) + cSeparator // 11 - Indicador
   cTrailler := cTrailler + cCRLF
   RETURN cTrailler

FUNCTION FISCORegistroR5990()
   // *** Estrutura do Registro R5990 ***
   LOCAL cCRLF := chr(13)+chr(10), cSeparator := '|'
   cTrailler := cSeparator
   cTrailler := cTrailler + StrFill( R5990->CAMPO01     , 0004, ' ', 'R' ) + cSeparator // 01 - Campo fixo ?5990?
   cTrailler := cTrailler + StrFill( R5990->CAMPO02     , 0006, '0', 'L' ) + cSeparator // 02 - Quantidades de linha do bloco 5
   cTrailler := cTrailler + cCRLF
   RETURN cTrailler

FUNCTION FISCORegistroR9001()
   // *** Estrutura do Registro R9001 ***
   LOCAL cCRLF := chr(13)+chr(10), cSeparator := '|'
   cTrailler := cSeparator
   cTrailler := cTrailler + StrFill( R9001->CAMPO01     , 0004, ' ', 'R' ) + cSeparator // 01 - Texto fixo contendo ?9001?
   cTrailler := cTrailler + cCRLF
   RETURN cTrailler

FUNCTION FISCORegistroR9900()
   // *** Estrutura do Registro R9900 ***
   LOCAL cCRLF := chr(13)+chr(10), cSeparator := '|'
   cTrailler := cSeparator
   cTrailler := cTrailler + StrFill( R9900->CAMPO01     , 0004, ' ', 'R' ) + cSeparator // 01 - Texto fixo
   cTrailler := cTrailler + StrFill( R9900->CAMPO02     , 0004, ' ', 'R' ) + cSeparator // 02 - Tipo do registro
   cTrailler := cTrailler + StrFill( R9900->CAMPO03     , 0008, '0', 'L' ) + cSeparator // 03 - registros
   cTrailler := cTrailler + cCRLF
   RETURN cTrailler

FUNCTION FISCORegistroR9990()
   // *** Estrutura do Registro R9990 ***
   LOCAL cCRLF := chr(13)+chr(10), cSeparator := '|'
   cTrailler := cSeparator
   cTrailler := cTrailler + StrFill( R9990->CAMPO01     , 0004, ' ', 'R' ) + cSeparator // 01 - Texto fixo contendo ?9990?
   cTrailler := cTrailler + StrFill( R9990->CAMPO02     , 0002, '0', 'L' ) + cSeparator // 02 - Quantidade total de linhas
   cTrailler := cTrailler + cCRLF
   RETURN cTrailler

FUNCTION FISCORegistroR9999()
   // *** Estrutura do Registro R9999 ***
   LOCAL cCRLF := chr(13)+chr(10), cSeparator := '|'
   cTrailler := cSeparator
   cTrailler := cTrailler + StrFill( R9999->CAMPO01     , 0004, ' ', 'R' ) + cSeparator // 01 - Texto fixo contendo ?9999?
   cTrailler := cTrailler + StrFill( R9999->CAMPO02     , 0008, '0', 'L' ) + cSeparator // 02 - Quantidade total de linhas
   cTrailler := cTrailler + cCRLF
   RETURN cTrailler
Rotina de uso:

Código: Selecionar todos

FUNCTION GeraFISCORegistros(SPEDhandle)
   dbSelectArea('R0000'); dbGotop(); do while .not. eof(); cFISCORegistro := alltrim( FISCORegistroR0000() ); fWrite( SPEDhandle, cFISCORegistro, len( cFISCORegistro ) ); dbSkip(); enddo
   dbSelectArea('R0001'); dbGotop(); do while .not. eof(); cFISCORegistro := alltrim( FISCORegistroR0001() ); fWrite( SPEDhandle, cFISCORegistro, len( cFISCORegistro ) ); dbSkip(); enddo
   dbSelectArea('R0010'); dbGotop(); do while .not. eof(); cFISCORegistro := alltrim( FISCORegistroR0010() ); fWrite( SPEDhandle, cFISCORegistro, len( cFISCORegistro ) ); dbSkip(); enddo
   dbSelectArea('R0990'); dbGotop(); do while .not. eof(); cFISCORegistro := alltrim( FISCORegistroR0990() ); fWrite( SPEDhandle, cFISCORegistro, len( cFISCORegistro ) ); dbSkip(); enddo
   dbSelectArea('R5001'); dbGotop(); do while .not. eof(); cFISCORegistro := alltrim( FISCORegistroR5001() ); fWrite( SPEDhandle, cFISCORegistro, len( cFISCORegistro ) ); dbSkip(); enddo
   dbSelectArea('R5020'); dbGotop(); do while .not. eof(); cFISCORegistro := alltrim( FISCORegistroR5020() ); fWrite( SPEDhandle, cFISCORegistro, len( cFISCORegistro ) ); dbSkip(); enddo
   dbSelectArea('R5990'); dbGotop(); do while .not. eof(); cFISCORegistro := alltrim( FISCORegistroR5990() ); fWrite( SPEDhandle, cFISCORegistro, len( cFISCORegistro ) ); dbSkip(); enddo
   dbSelectArea('R9001'); dbGotop(); do while .not. eof(); cFISCORegistro := alltrim( FISCORegistroR9001() ); fWrite( SPEDhandle, cFISCORegistro, len( cFISCORegistro ) ); dbSkip(); enddo
   dbSelectArea('R9900'); dbGotop(); do while .not. eof(); cFISCORegistro := alltrim( FISCORegistroR9900() ); fWrite( SPEDhandle, cFISCORegistro, len( cFISCORegistro ) ); dbSkip(); enddo
   dbSelectArea('R9990'); dbGotop(); do while .not. eof(); cFISCORegistro := alltrim( FISCORegistroR9990() ); fWrite( SPEDhandle, cFISCORegistro, len( cFISCORegistro ) ); dbSkip(); enddo
   dbSelectArea('R9999'); dbGotop(); do while .not. eof(); cFISCORegistro := alltrim( FISCORegistroR9999() ); fWrite( SPEDhandle, cFISCORegistro, len( cFISCORegistro ) ); dbSkip(); enddo
   RETURN NIL
Com os trechos acima já é possivel gerar os registros que irão compor o arquivo digital FCI que deve ser validado, assinado e enviado a sistema da receita.

Alguma literatura relevante:
Como calcular o conteúdo de importação...

Algumas tabelas relevantes:
TIPI 2012, outra tabela
NCM
Lista de Bens Sem Similar Nacional

Glossário:
TEC - Tarifa Externa Comum
NCM - Nomenclatura Comum do Mercosul
LETEC - Lista de Exceções à Tarifa Externa Comum
LEBIT - Lista de Exceções de Bens de Informática e de Telecomunicações
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
jenivan
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 22 Mar 2013 08:43
Localização: Araras/SP

Ficha de Conteúdo de Importação - Primo do SPED

Mensagem por jenivan »

Bom dia,

Estou preenchendo o registro 0001 campo 02 com o conteudo:

0001|Texto em caracteres UTF-8: (dígrafo BR)'ção',(dígrafo espanhol-enhe)'ñ',(trema)'Ü',(ordinais)'ªº',(ligamento s+z alemão)'ß'.

Conforme descrito no manual da FCI.

Na versão anterior o validador apresentava erro porém permitia gerar o arquivo para posterior transmissão.

A nova versão apresenta erro e não permite gerar o arquivo para transmissão, conforme segue:

2|Erro|0001|Existem caracteres que não obedecem ao conjunto “pt-BR” do padrão UTF-8, no arquivo 022013.txt especificamente na(s) linha(s) 2. Deve obedecer ao preenchimento da seguinte forma para o campo TEXTO_PADRAO_UTF8 com formato: Texto; obrigatório: Sim; tamanho máximo de/até: 150.|TEXTO_PADRAO_UTF8|Texto padrão em caracteres UTF-8.

Por favor me informe como preencheu este registro.

Obrigado,
jenivan
Usuário Nível 1
Usuário Nível 1
Mensagens: 2
Registrado em: 22 Mar 2013 08:43
Localização: Araras/SP

Ficha de Conteúdo de Importação - Primo do SPED

Mensagem por jenivan »

Resolvido, era necessário utilizar função para Converter a string de origem em CP1252 ( Windows 1252 code-page ) para a codificação UTF-8 ( 8-bit Unicode Transformation Format ).

Obrigado,
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Ficha de Conteúdo de Importação - Primo do SPED

Mensagem por marcos.gurupi »

Amigos, qual eh a finalidade da ficha de conteudo de importacao ? Quando serah usada ?
Marcos Roberto
NetService Software
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Ficha de Conteúdo de Importação - Primo do SPED

Mensagem por rochinha »

Amiguinho,

Quando o seu cliente efetuar uma transação comercial com outro estado na qual ele esteja comercializando/revendendo item que tenha uma composição de 41% à 100% de parte importada.

- Neste caso a aliquota da transação será de 4%.
- Deverá ser preenchida a FCI com informações de valores, percentuais, etc relativo ao item com conteúdo importado.

Cada FCI conterá um numero de controle, mas ainda não foi definido pelo fisco como obteremos tal numero.

Cada item na NF-e que possuir teor de importação terá sua respectiva FCI.

Até que seja regulamentada a forma de colocar estas informações no corpo do XML da NF-e, as informações deverão ser inclusas na tag infAdProd de cada tag det.

Se uma nota possuir 10 itens e destes 3 tenham teor importado, estes 3 itens deverão ter os dados da FCI calculados e imputados nas respectivas tags infAdProd.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
cris_esm
Usuário Nível 1
Usuário Nível 1
Mensagens: 1
Registrado em: 19 Abr 2013 14:19
Localização: Criciúma/SC

Ficha de Conteúdo de Importação - Primo do SPED

Mensagem por cris_esm »

jenivan escreveu:Resolvido, era necessário utilizar função para Converter a string de origem em CP1252 ( Windows 1252 code-page ) para a codificação UTF-8 ( 8-bit Unicode Transformation Format ).

Obrigado,

Estou com o mesmo problema e gostaria de saber qual foi essa função utilizada. Se for possível com algum exemplo.
Grata,
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Ficha de Conteúdo de Importação - Primo do SPED

Mensagem por marcos.gurupi »

Eh isso passa a ser obrigatorio quando?
Marcos Roberto
NetService Software
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Ficha de Conteúdo de Importação - Primo do SPED

Mensagem por rochinha »

Amiguinho,

No inicio do post diz desde quando.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Ficha de Conteúdo de Importação - Primo do SPED

Mensagem por Kapiaba »

Bom dia Rochinha, por gentileza, você já tem isto em FiveWin?

http://fivewin.com.br/index.php?/topic/ ... tacao-fci/

Obg, abs.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Ficha de Conteúdo de Importação - Primo do SPED

Mensagem por rochinha »

Amiguinhos,

Com base no codigo fonte que disponibilizo é possivel gerar os .PRGs das funções de geração da FCI.

O FCI.DBF contém os registros do manual e o executável irá usá-lo para gerar os .PRGs com funções que agregadas ao seu sistema farão a geração do arquivo no layout.

Caso ocorram alterações no layout bastará acrescentar os campos novos, ou faltantes ao FCI.DBF e re-gerar os fontes.

Façam download do validador atualizado e do manual do usuário

FCI significa Ficha de Conteúdo de Importação e portanto só é necessária aos clientes que revendem ou produzem produtos que contenham material importado em seu conteúdo.

Uma Mão-na-Roda.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Ficha de Conteúdo de Importação - Primo do SPED

Mensagem por Kapiaba »

Valeu Rochinha, muito orbigado pelo código.

Abs,
Responder