01. DADOS GERAIS

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


02. 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.

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;


É 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). 

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
  • 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.


04. EXEMPLO DE UTILIZAÇÃO


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

   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


05. DEMAIS INFORMAÇÕES

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