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