Árvore de páginas

01. DADOS GERAIS

Linha de Produto:Microsiga Protheus®
Segmento:Serviços
Módulo:Fiscal


02. DESCRIÇÃO

Este ponto de entrada permite alternar a unidade de medida e respetiva quantidade do item no documento.

Por padrão é assumida sempre a primeira unidade de medida e a primeira quantidade (cadastradas na tabela SB1). No entanto, alguns registros do SPED FISCAL permitem a apresentação utilizando uma unidade de medida diferente daquela definida como unidade de estoque. Para utilizar a segunda unidade de medida e a segunda quantidade, é preciso realizar o tratamento utilizando este ponto de entrada.

Os seguintes registros/campos possuem suporte para a utilização do ponto de entrada SPDFIS02:

  • 0190
  • 0220
  • C170
  • C425
  • G140
  • H010
  • K200

03. ESPECIFICAÇÃO

Parâmetros do ponto de entrada:


NomeTipoDescrição
PARAMIXBArray of Record


Array com dados de processamento com 3 elementos

[1] = Alias da tabela;

[2] = Tipo Movimento - Que pode ser E de Entrada ou S de Saída;

[3] = Registro em que ocorre a alteração;


Observação

É possível fazer um tratamento específico ao posicionar o produto, ou simplesmente retornar a segunda unidade de medida e a segunda quantidade deste documento (D1_SEGUM ou D2_SEGUM). 

Importante

Na chamada do SPDFIS02 para alguns registros K200, H010(SPED Fiscal) não ocorrerá tratamento para o Tipo Movimento, pois estes registros não são gerados com base na movimentação das notas do período e sim com base na produção(K200) e no inventário(H010) do período respectivamente. 

Retorno:

NomeTipoDescrição

Array of Record

Retorna Array com conversão da unidade de medida.

Importante:


  • aRet[1] => Unidade de Medida do item do documento (string)
  • aRet[2] => Quantidade do item do documento (numérico)
  • aRet[3] => Fator de Conversão (numérico)
  • aRet[4] => Tipo de Conversão M=Multiplicação/D=Divisão (string)
  • aRet[5] => Código de Barras (numérico)


A terceira posição do array é o Fator de Conversão, essa posição do array é opcional.
A quarta posição do array é o Tipo de Conversão , essa posição do array é opcional.
A quinta posição do array é o Código de Barras, essa posição do array é opcional.


Importante

O retorno em formato array, deve ser realizado conforme o tipo de dado em sua posição.
A personalização dos P.E., devem ser adequadas a regra de negócio de cada cliente, sendo de sua responsabilidade a utilização.

Importante

Caso o cliente possua o parâmetro MV_CSDXML (vínculo com o XML do fornecedor) ativado (.T.), algumas informações do ponto de entrada não serão considerados, priorizando os dados do XML de entrada.

Entradas e Saídas esperadas por registro:


  • 0190
    • Não temos parâmetros e retorno para este registro, ele será um reflexo da unidade de medida informada para os demais.


  • 0220
    • Na chamada deste registo serão passados os parâmetros abaixo:

      NomeTipoDescrição
      PARAMIXBArray of Record

      Array com dados de processamento com 3 elementos

      [1] = SB1;

      [2] = " ";

      [3] = "0220";

    • O retorno abaixo esperado:

      NomeTipoDescrição

      Array of Record

      Neste registro é utilizado somente a 5 posição do array, caso exista e esteja preenchido será utilizado.

      Exemplificação:

      • aRet[1] => ""
      • aRet[2] => ""
      • aRet[3] => ""
      • aRet[4] => ""
      • aRet[5] => Código de Barras (string)



  • C170
    • Na chamada deste registo serão passados os parâmetros abaixo:

      NomeTipoDescrição
      PARAMIXBArray of Record

      Array com dados de processamento com 3 elementos

      [1] = cAliasSFT; (Alias da query principal posicionada na SFT e demais tabelas envolvidas na geração do arquivo)

      [2] = "E" ou "S";

      [3] = "C170";

    • O retorno abaixo esperado:

      NomeTipoDescrição
      Opção 1Array of Record

      Neste registro é esperado um array com 4 posições.

      Exemplificação:

      • aRet[1] => Unidade de Medida do item do documento (string)
      • aRet[2] => Quantidade do item do documento (numérico)
      • aRet[3] => Fator de Conversão (numérico)
      • aRet[4] => Tipo de Conversão M=Multiplicação/D=Divisão (string)
      Opção 2String
      • cRet => Unidade de Medida do item do documento (string)

      Observação

      Este registro verifica se é um array para utilizar as 4 posições ou se é uma string para utilizar somente a unidade de medida.

  • C425
    • Na chamada deste registo serão passados os parâmetros abaixo:

      NomeTipoDescrição
      PARAMIXBArray of Record

      Array com dados de processamento com 2 elementos

      [1] = cQryAlias; (Query posicionado nas tabelas, SFT, SD2, SB1, SLG, SFI)

      [2] = "S";

    • O retorno abaixo esperado:

      NomeTipoDescrição
      Opção 1Array of Record

      Neste registro é esperado um array com 2 posições.

      Exemplificação:

      • aRet[1] => Unidade de Medida do item do documento (string)
      • aRet[2] => Quantidade do item do documento (numérico)
      Opção 2String
      • cRet => Unidade de Medida do item do documento (string)

      Observação

      Este registro verifica se é um array para utilizar as 2 posições ou se é uma string para utilizar somente a unidade de medida.

  • G140
    • Na chamada deste registo serão passados os parâmetros abaixo:

      NomeTipoDescrição
      PARAMIXBArray of Record

      Array com dados de processamento com 3 elementos

      [1] = SFT;

      [2] = "E" ou "S";

      [3] = "G140";

    • O retorno abaixo esperado:

      NomeTipoDescrição
      Opção 1Array of Record

      Neste registro é esperado um array com 2 posições.

      Exemplificação:

      • aRet[1] => Unidade de Medida do item do documento (string)
      • aRet[2] => Quantidade do item do documento (numérico)
      Opção 2String
      • cRet => Unidade de Medida do item do documento (string)

      Observação

      Este registro verifica se é um array para utilizar as 2 posições ou se é uma string para utilizar somente a unidade de medida.

  • H010
    • Na chamada deste registo serão passados os parâmetros abaixo:

      NomeTipoDescrição
      PARAMIXBArray of Record

      Array com dados de processamento com 3 elementos

      [1] = cAliBLH; (Tabela temporária, dependendo do motivo do inventário trará dados baseados nas tabelas CIL, F0M, SB1, SBZ)

      [2] = Nil;

      [3] = "H010";

    • O retorno abaixo esperado:

      NomeTipoDescrição
      Opção 1Array of Record

      Neste registro é esperado um array com 2 posições.

      Exemplificação:

      • aRet[1] => Unidade de Medida do item do documento (string)
      • aRet[2] => Quantidade do item do documento (numérico)
      • aRet[3] => Fator de Conversão (numérico)
      • aRet[4] => Tipo de Conversão M=Multiplicação/D=Divisão (string)
      Opção 2String
      • cRet => Unidade de Medida do item do documento (string)

      Observação

      Este registro verifica se é um array para utilizar as 4 posições ou se é uma string para utilizar somente a unidade de medida.

  • K200
    • Na chamada deste registo serão passados os parâmetros abaixo:

      NomeTipoDescrição
      PARAMIXBArray of Record

      Array com dados de processamento com 3 elementos

      [1] = cAliK200; (Tabela temporária baseada em dados da SB9, D3E)

      [2] = Nil;

      [3] = "K200";

    • O retorno abaixo esperado:

      NomeTipoDescrição
      Opção 1Array of Record

      Neste registro é esperado um array com 2 posições.

      Exemplificação:

      • aRet[1] => Unidade de Medida do item do documento (string)
      • aRet[2] => Quantidade do item do documento (numérico)
      • aRet[3] => Fator de Conversão (numérico)
      • aRet[4] => Tipo de Conversão M=Multiplicação/D=Divisão (string)
      Opção 2String
      • cRet => Unidade de Medida do item do documento (string)

      Observação

      Este registro verifica se é um array para utilizar as 4 posições ou se é uma string para utilizar somente a unidade de medida.


Importante

Ao utilizar este ponto de entrada é importante se atentar para o tipo de dado retornado. Como este PE permite a utilização de tipos de retornos diferentes, array ou string, é aconselhável que utilizem este ponto de entrada com cautela pois ele é chamado em diversos registros.


Também é fundamental que seja informado uma Unidade de Medida válida existente na tabela SAH, pois caso a mesma seja inexistente ou não informada, pode impactar na geração dos registros, especialmente para os casos em que é utilizada a opção 2 de retorno em formato string.

04. EXEMPLO DE UTILIZAÇÃO


SPED1300
#include "rwmake.ch"
#include "Topconn.ch"
#include "protheus.ch"
 
User Function SPDFIS02()

Local aAliasIT  := ParamIXB[1]													// Recebe o Alias principal
Local cTipoMov  := ParamIXB[2]													// Recebe o tipo de movimento - E = ENTRADA / S = SAIDA, para registros gerados a partir de notas fiscais. Para registros não originados de notas esta posição terá conteúdo Nil.
Local cRegSped  := Iif  (Len(ParamIXB)  >  2,ParamIXB[3],"")					// Recebe o  nome do registro, quando passado(1105, G140, H010, K200).
Local aRet  	:= Array(4)														// Array para armazenar dados do retorno da função
Local cPrefix	:= Iif (ValType(cTipoMov)=='C',Iif (cTipoMov$"E","D1","D2"),"")	// Prefixo da tabela - D1_ / D2_
Local aAreaAnt  := GetArea() 

If !Empty(cPrefix)

    aRet[1]  := "MM"  
    aRet[2]  :=  0
    aRet[3]  :=  4     //Fator
    aRet[4]  := "M"    //Tipo de Conversão

Else
   If cRegSped  ==  "K200"

      If ("SB1")->(dbSeek(xFilial("SB1")+(aAliasIT)->COD_ITEM))

         aRet[1]  :=  ("SB1")->B1_SEGUM  
         aRet[2]  :=  (aAliasIT)->&("QTD")
         aRet[3]  :=  ("SB1")->B1_CONV           //Fator
         aRet[4]  :=  ("SB1")->B1_TIPCONV        //Tipo de Conversão

      Else

         aRet[1]  :=  "MM"  
         aRet[2]  :=  0
         aRet[3]  :=  4     //Fator
         aRet[4]  :=  "M"   //Tipo de Conversão

      Endif

   Endif

Endif
	
If cRegSped == "0220"
   Aadd(aRet,"8888888888888")  // Posição 05 código de barras
EndIf

RestArea(aAreaAnt)

Return aRet 


05. DEMAIS INFORMAÇÕES

Dica

Foram disponibilizados exemplos de utilização deste ponto de entrada na pagina de suporte ao cliente em RDMAKES de livros fiscais.