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). | | cTpMov | Caracter | 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). |
| |
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