01. DADOS GERAIS
Linha de Produto: | Microsiga Protheus® |
---|---|
Segmento: | Serviços |
Módulo: | Livros Fiscais - SIGAFIS |
02. DESCRIÇÃO
Este ponto de entrada 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.
03. ESPECIFICAÇÃO
Parâmetros do ponto de entrada:
Nome | Tipo | Descrição |
---|---|---|
PARAMIXB | Array | Array com dados: [1] = cAliasSFT [2] = cRegsped [3] = cUnid |
Nome | Tipo | Descrição |
---|---|---|
cAliasSFT | Caracter | Alias da tabela SFT filtrada onde são lidas as informações do documento fiscal |
cRegsped | Caracter | Nome do registro |
cUnid | Caracter | Campo Unidade de Medida do produto |
Retorno:
Nome | Tipo | Descrição |
---|---|---|
aProd | Array | Array com as informações do produto: aProd[1] - Código do Produto (campo padrão B1_COD) aProd[2] - Descrição do produto (campo padrão B1_DESC) aProd[3] - Código de barras (campo padrão B1_CODBAR) aProd[4] - Código Anterior (campo padrão B1_CODANT) aProd[5] - Unidade de medida (campo padrão B1_UM) aProd[6] - Tipo do Item aProd[7] - Código de NCM (campo padrão B1_POSIPI) aProd[8] - Exceção da NCM (campo padrão B1_EX_NCM) 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 gênero é 00)) (campo padrão B1_POSIPI) aProd[10] - Código de ISS (campo padrão B1_CODISS) aProd[11] - Alíquota de ICMS (campo padrão B1_PICM) aProd[12] - CEST - Código Especificador da Substituição Tributária (campo padrão B1_CEST) Observação.: CEST - Exclusivo para SPEDFISCAL - Campo 13 do registro 0200. Importante Ao utilizar o ponto de entrada é necessário que para o preenchimento da posição aProd[6], seja retornado conforme correspondência aos códigos abaixo, que são relacionados ao tipo do Item. Maiores informações podem ser obtidas no Guia Prático. Registro 0200: Tabela de Identificação do Item (Produtos e Serviços) |
Importante
Ao utilizar este ponto de entrada, todas as posições do array aProd devem ser preenchidas, mesmo com informações em branco. Para os casos em que exista relacionamento com outras tabelas, é imprescindível que o conteúdo exista também na tabela relacionada (Ex. Unidade de Medida deve existir na tabela SAH).
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.
04. EXEMPLO DE UTILIZAÇÃ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:
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)
05. DEMAIS INFORMAÇÕES
Não há.