Linha de Produto: | Microsiga Protheus |
Segmento: | Serviços |
Módulo: | SIGAFIS - Livros Fiscais |
País(es): | Brasil |
Banco(s) de Dados: | Todos |
Sistema(s) Operacional(is): | Todos |
Versões/Release: | P11 e P12 |
Este ponto tem como finalidade retornar um array com as informações do produto para os clientes que possuem uma forma diferente do padrão de compor o código do produto.
Neste ponto é passado como parâmetro as variáveis cAliasSFT,cRegspd e cUni:
Com isso é possível identificar o produto e retornar o array com as seguintes informações:
Obs. CEST - Exclusivo para SPEDFISCAL - Campo 13 do registro 0200.
Ao utilizar este ponto de entrada todas as posições devem ser preenchidas. |
SPEDPROD - Retorna Array de Informações ( [ cAliasSFT ], [ cRegsped ], [ cUnid ] ) --> array
Nome | Tipo | Descrição |
cAliasSFT | Caracter | Alias da tabela SFT filtrada |
cRegsped | Caracter | Nome do registro |
cUnid | Caracter | Campo Unidade de Medida do produto |
Observação
Como este ponto de entrada é chamado para diversos registros, tanto no SPED Fiscal quanto na EFD Contribuições, em algumas situações o alias passado para o parâmetro não será necessariamente o alias da tabela SFT.
Para simplificar e não ocasionar erro neste ponto de entrada, sugerimos que realizem a seguinte verificação abaixo:
Do Case //Verifica se o campo FT_PRODUTO existe no alias Case ( paramixb[1])->(FieldPos('FT_PRODUTO')) > 0 lFTProduto := .T. //Verifica se o campo B1_COD existe no alias Case ( paramixb[1])->(FieldPos('B1_COD')) > 0 lB1Cod := .T. //Verifica se o campo COD_ITEM existe no alias Case ( paramixb[1])->(FieldPos('COD_ITEM')) > 0 lCodItem := .T. //Verifica se o campo D2_COD existe no alias Case ( paramixb[1])->(FieldPos('D2_COD')) > 0 lD2Cod := .T. //Verifica se o campo CF8_ITEM existe no alias Case ( paramixb[1])->(FieldPos('CF8_ITEM')) > 0 lCF8Item := .T. EndCase |
Desta forma sabemos realmente se o campo FT_PRODUTO, ou COD_ITEM realmente existe no alias passado, e assim podemos tomar devida ação ou processamento dentro deste ponto, evitando erro.
Abaixo exemplo completo:
#include "Rwmake.ch" User Function SPEDPROD() Local cAlias := Iif(Len(paramixb) >= 1 , paramixb[1], '') Local cRegspd := Iif(Len(paramixb) >= 2 , paramixb[2], '') Local cUnid := Iif(Len(paramixb) >= 3 , paramixb[3], '') Local aProd := {} Local lFTProduto := .F. Local lB1Cod := .F. Local lCodItem := .F. Local lD2Cod := .F. Local lCF8Item := .F. Do Case //Verifica se o campo FT_PRODUTO existe no alias Case (cAlias)->(FieldPos('FT_PRODUTO')) > 0 lFTProduto := .T. //Verifica se o campo B1_COD existe no alias Case (cAlias)->(FieldPos('B1_COD')) > 0 lB1Cod := .T. //Verifica se o campo COD_ITEM existe no alias Case (cAlias)->(FieldPos('COD_ITEM')) > 0 lCodItem := .T. //Verifica se o campo D2_COD existe no alias Case (cAlias)->(FieldPos('D2_COD')) > 0 lD2Cod := .T. //Verifica se o campo CF8_ITEM existe no alias Case (cAlias)->(FieldPos('CF8_ITEM')) > 0 lCF8Item := .T. EndCase aAdd (aProd, "teste") Return(aProd) |