Page tree

Descrição

Ponto de Entrada que define a unidade de medida e quantidade do item do documento. Por padrão é assumida sempre a primeira unidade de medida e a primeira quantidade (para gerar o registro 0190 e campo 06 do registro C170). Para utilizar a segunda unidade de medida e a segunda quantidade, é preciso realizar o tratamento utilizando este ponto de entrada. 

Ponto de Entrada SPDFIS02 - Unidade de medida e quantidade do item do documento

Descrição:

Criado ponto de entrada nos arquivos magnéticos da EFD Contribuições e SPED Fiscal.

Localizações

Livros Fiscais > Miscelânea > Apurações > Apuração EFD Contribuições > Geração do Arquivo da EFD Contribuições
Livros Fiscais > Miscelânea > Arq. Magnéticos > Sped Fiscal

Eventos:

Apuração da EFD Contribuições

Programa Fonte:

SPEDFISCAL.PRW e FISA008.PRW
Sintaxe

SPDFIS02 - Unidade de medida e quantidade do item do documento ( [ AlsSD ] , [ cTpMov ] , [cRegSped] ) --> aRet

Retorno:

Nome

Tipo

Descrição

Obrigatório

cAlsSD

Caracter

Alias posicionado, podendo ser o alias da query principal (TOP), ou SD1/SD2 (DBF).

 

cTpMovCaracter

Tipo Movimento, podendo ser "E" de Entrada ou "S" de saída (FT_TIPOMOV)

 
 cRegSped Caracter Nome do Registro(1105, G140, H010, K200). 
Retorno
aRet
    (array_of_record)
  • aRet[1] => Unidade de Medida do item do documento aRet[2] => Quantidade do item do documento aRet[3] => Fator de Conversão aRet[4] => Tipo de Conversão M=Multiplicação/D=Divisão
      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.

Observações

Pode passar 3 parâmetros:
1 - Alias posicionado - Podendo ser o alias da query principal (TOP), ou SD1/SD2 (DBF).
     No caso do SpedPisCofins sempre é passado o DBF(SD1/SD2).

2 - Tipo Movimento - Que pode ser E de Entrada ou S de Saída (FT_TIPOMOV).

3 - Registro em que ocorre a alteração - A partir daí é 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 cTpMov (FT_TIPOMOV), 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. 

  

Exemplo:

#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)

   If (aAliasIT)->&(cPrefix+"_DOC")  ==  "000000813" 

      aRet[1]  :=  (aAliasIT)->&(cPrefix+"_SEGUM")  
     
aRet[2]  :=  (aAliasIT)->&(cPrefix+"_QTSEGUM")
      aRet[3]  :=  6                   //Fator
      aRet[4]  :=  "M"                //Tipo de Conversão

   Else

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

   EndIf

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

RestArea(aAreaAnt)

Return aRet