01. DADOS GERAIS
Linha de Produto: | Microsiga Protheus® |
---|---|
Segmento: | Serviços |
Módulo: | Livros Fiscais - SIGAFIS |
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.
Nome | Tipo | Descrição |
---|---|---|
PARAMIXB | Array | Array com dados: [1] = Alias da tabela SFT filtrada [2] = Nome do registro [3] = Campo Unidade de Medida do produto |
Nome | Tipo | Descrição |
---|---|---|
cAliasSFT | Caracter | Alias da tabela SFT filtrada |
cRegsped | Caracter | Nome do registro |
cUnid | Caracter | Campo Unidade de Medida do produto |
Nome | Tipo | Descrição |
---|---|---|
aProd | Array | Array com as informações do produto |
Ao utilizar este ponto de entrada todas as posições do array aProd devem ser preenchidas, mesmo com informações em branco. |
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, "00001") // aProd[1] - Código do Produto(campo padrão B1_COD ) aAdd(aProd, "Teste") // aProd[2] - Descrição do produto(campo padrão B1_DESC) aAdd(aProd, "") // aProd[3] - Código de barras(campo padrão B1_CODBAR) aAdd(aProd, "") // aProd[4] - Código Anterior(campo padrão B1_CODANT) aAdd(aProd, "UN") // aProd[5] - Unidade de medida(campo padrão B1_UM) aAdd(aProd, "04") // aProd[6] - Tipo do Item aAdd(aProd, "33074900") // aProd[7] - Código de NCM(campo padrão B1_POSIPI) aAdd(aProd, "") // aProd[8] - Exceção da NCM(campo padrão B1_EX_NCM) aAdd(aProd, "33") // aProd[9] - Código do gênero do item (2 primeiros caracteres do NCM obs.:(se for um item de serviço o código do genero é 00))(campo padrão B1_POSIPI) aAdd(aProd, "") // aProd[10] - Código de ISS(campo padrão B1_CODISS) aAdd(aProd, 18) // aProd[11] - Alíquota de ICMS(campo padrão B1_PICM) aAdd(aProd, "") // aProd[12] - CEST - Código Especificador da Substituição Tributária(campo padrão B1_CEST) Return (aProd) |
Não há.