SpedFiscalPisCofinsAdicionaRegistro0150

Tipo de Retorno

Boolean

Pacote

A função SpedFiscalPisCofinsAdicionaRegistro0150 está defiinida no pacote SpedFiscalPisCofinsAdicionaRegistro0150.pkg.

Para que serve

A função SpedFiscalPisCofinsAdicionaRegistro0150 é usada para fazer a adição de um registro 0150 no vetor de registros 0150. Ela irá verificar se já existe um registro 0150 com o mesmo valor de campo COD_PART. Se não houver, irá acrescentar o novo registro no array. Se já existir, o que será feito em seguida depende dos parâmetros informados. Veja a explicação da sintaxe abaixo.

Sintaxe

Move (SpedFiscalPisCofinsAdicionaRegistro0150({vtRegistro0150Adicionar}, ;
(&{vtRegistros0150}, {dAlteracao}, {bPISCOFINS}, {bExibeErro}, ;
(&{sMsgErro}), (&{sCOD_PARTs}))) to {bRetorno}

Onde:

  • {vtRegistro0150Adicionar} é uma variável do tipo tSpedFiscalPisCofinsRegistro0150 com o novo registro que será adicionado em vtRegistros0150.
  • &{vtRegistros0150} é uma variável do tipo tSpedFiscalPisCofinsRegistro0150 [] que precisa ser passada via referência. Esta variável do tipo array contém todos os registros 0150 já acrescentados na estrutura do arquivo que está sendo gerado.
  • {dAlteracao} é a data que será usado para geração do registro 0175 filho, se for detectada a alteração de algum campo.
  • {bPISCOFINS} é usado para indicar para a função qual é o tipo de arquivo que deve ser gerado:
    • True: será gerado o arquivo do EFD-Contribuições.
    • False: será gerado o arquivo do Sped Fiscal.

Se este parâmetro for True, quando já existe um registro com o mesmo valor de COD_PART do registro que está sendo adicionado, a função não fará mais nada, pois o Sped Fiscal-PIS/COFINS não prevê a geração dos registros 0175 de alterações do participante. Portanto, mesmo que você esteja gerando o Sped Fiscal, se você não quiser gerar os registros 0175, então informe True para este parâmetro.

Se este parâmetro for False, quando já existe um registro com o mesmo valor de COD_PART do registro que está sendo adicionado, a função irá verificar se há alteração em algum dos campos que devem ser apresentados no registro 0175. Se houver, será gerado um registro filho 0175 com o valor de dAlteracao no campo DT_ALT.

  • {bExibeErro} é usado para indicar se a função deve exibir ou não os erros que ocorrerem na execução.
  • &{sMsgErro} é uma variável do tipo String que precisa ser passada via referência. No caso de ocorrer algum erro durante a execução a função devolverá nesta variável a mensagem do erro ocorrido.
  • &{sCOD_PARTs} é uma variável do tipo String[] que precisa ser passada por referência. Este parâmetro é opcional, mas sua utilização é extremamente recomendada, pois irá melhorar em muito a performance desta função. A primeira vez que a função for chamada, esta variável estará "limpa". A cada chamada, a função irá adicionar o valor do COD_PART dos registros que forem adicionados. Desta forma, internamente, a função irá verificar se um participante já está ou não no array de registros 0150 consultando somente esta variável. A consulta desta variável é muito mais rápida do que consultar o array. Portanto, você deve manter o valor desta variável inalterado do início da geração até o final da geração do arquivo. No caso do EFD-Contribuilções, a variável deve ter apenas os registros terá de ser reinicializada sempre que mudar o registro 0140, que é pai dos registros 0150.
  • {bRetorno} indica se a função foi executada com sucesso (True) ou não (False).

Exemplo

Use SpedFiscalLibrary_PacotesSpedFiscalPisCofinsAdicionaRegistro0150.pkg
:
:
tSpedFiscalPisCofinsRegistro0150 vtRegistro0150
:
String sMsgErro
tSpedFiscalPisCofinsRegistro0150 vtRegistro0150
tSpedFiscalPisCofinsRegistro0150 vtRegistro0150Dummy
String[] sCOD_PARTs
:
// Gerando registros 0150
Clear SpedPart
Move iEmpresa to SpedPart.iCdEmpresa
Move dFinal to SpedPart.dEmissao
Move "ZZZZZZZZZZZZZZ" to SpedPart.sCNPJ_CPF
Move 99999999 to SpedPart.iIdSpedPart
Find lt SpedPart by 3
While (dInicial <= SpedPart.dEmissao and SpedPart.dEmissao <= dFinal ;
and iEmpresa = SpedPart.iCdEmpresa and Found)
Move vtRegistro0150Dummy to vtRegistro0150

Move SpedPart.sCNPJ_CPF to vtRegistro0150.sCOD_PART
// O CNPJ será o COD_PART se for nacional. Se for internacional
// será EX{Codigo}
Move SpedPart.sNOME to vtRegistro0150.sNOME
Move SpedPart.iCOD_PAIS to vtRegistro0150.iCOD_PAIS

If (SpedPart.iCOD_PAIS = 1058 or SpedPart.iCOD_PAIS = 0) Begin
Move SpedPart.sCNPJ_CPF to vtRegistro0150.sCNPJ_CPF
If (SpedPart.iCOD_PAIS = 0) ;
Move 1058 to vtRegistro0150.iCOD_PAIS
End

Move SpedPart.sIE to vtRegistro0150.sIE
Move SpedPart.iCOD_MUN to vtRegistro0150.iCOD_MUN
Move SpedPart.sSUFRAMA to vtRegistro0150.sSUFRAMA
Move SpedPart.sENDE to vtRegistro0150.sEndereco
Move SpedPart.sNUM to vtRegistro0150.sNUM
Move SpedPart.sCOMPL to vtRegistro0150.sCOMPL
Move SpedPart.sBAIRRO to vtRegistro0150.sBAIRRO

// A data de alteração será um dia após a data de emissão,
// por isso somamos 1
If (not(SpedFiscalPisCofinsAdicionaRegistro0150(vtRegistro0150, ;
(&vtArquivo.vtBloco0.vtRegistros0150),(SpedPart.dEmissao + 1), ;
False,True,(&sMsgErro),(&sCOD_PARTs)))) Procedure_Return

Find lt SpedPart by 3
Loop

O exemplo acima contém particularidades específicas do sistema onde foi implementado para chegar à informação desejada. O objetivo do exemplo é mostrar o preenchimento da estrutura vtRegistro0150 e a chamada da função.

Observações

  • Para que esta função funcione, todos os registros 0150 devem ser adicionados através de sua utilização.
  • Veja mais detalhes sobre o processo completo de geração do arquivo em "Gerando o arquivo".