01. DADOS GERAIS
| Linha de Produto: | Microsiga Protheus® |
|---|---|
| Segmento: | Serviços |
| Módulo: | Livros Fiscais - SIGAFIS |
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.
| 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 |
| 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) Obs. CEST - Exclusivo para SPEDFISCAL - Campo 13 do registro 0200. |
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á.