| 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:
| Nome | Tipo | Descrição | ||
|---|---|---|---|---|
| PARAMIXB | Array 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;
|
| Nome | Tipo | Descrição | |
|---|---|---|---|
| Array of Record | Retorna Array com conversão da unidade de medida. 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. |
#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 |
Foram disponibilizados exemplos de utilização deste ponto de entrada na pagina de suporte ao cliente em RDMAKES de livros fiscais. |