01. DADOS GERAIS
Linha de Produto: | Microsiga Protheus® |
---|---|
Segmento: | Serviços |
Módulo: | Fiscal |
02. DESCRIÇÃO
Inclusão do ponto de entrada FSA231UND na rotina FISA230 - Apuração do Ressarcimento, da Restituição e da Complementação do ICMS-ST para o Estado de Santa Catarina, a DRCST.
Esse ponto de entrada tem por finalidade permitir que, para cada documento fiscal processado, seja informada a unidade que constou no documento fiscal e a respectiva quantidade nesta unidade. Por padrão, quantidades e unidades consideradas são as de controle do estoque (primeira unidade de medida da tabela SB1).
O ponto de entrada é acionado durante a apuração do ressarcimento, para cada documento fiscal, e a tabela F1M, ao fim do processamento, deverá armazenar os valores retornados pelo ponto nos campos F1M_QTDMOV, F1M_UNIDAD, F1M_FATCON. O campo F1M_QTDCON será resultado da multiplicação dos campos F1M_QTDMOV e F1M_FATCON. Tais valores serão posteriormente utilizados na geração do arquivo a ser transmitido.
03. Especificação
Programa | FISA231.PRW FISA230A.PRW |
---|---|
Sintaxe | FSA231UND- Unidade de medida e quantidade do item informadas no documento fiscal ( [cAlias] ) --> aRet |
Parâmetros do ponto de entrada:
Nome | Tipo | Descrição |
---|---|---|
PARAMIXB[1] | Caracter | Alias posicionado (será o alias da query utilizada no processamento do movimento). |
Retorno:
O ponto de entrada deverá retornar um array de 4 posições:
Nome | Tipo | Descrição |
---|---|---|
aRet[1] | Caracter | Unidade de medida informada no documento fiscal. |
aRet[2] | Número | Quantidade na unidade de medida informada no documento fiscal. |
aRet[3] | Número | Fator de Conversão da unidade informada no documento fiscal para a unidade de controle do estoque, informada no registro 0200. |
aRet[4] | Caracter | Tipo de Conversão, podendo ser: M (Multiplicação) ou D (Divisão). |
Importante
- O retorno do ponto de entrada deverá obrigatoriamente ser um array de 4 posições, nos tipos especificados acima. Caso essa condição não seja satisfeita, a rotina não levará em consideração seu retorno, utilizando, para o movimento posicionado, as unidades de medida e quantidades padrões do movimento.
- Para movimentos onde a informação de outra unidade não se faça necessária, basta retornar um array vazio (Ex: aRet := {} ).
- Segundo disposições da Portaria SEF N° 378/2018, o fator de conversão informado será sempre multiplicado pela quantidade presente no documento fiscal. Caso o array retornado pelo ponto de entrada, na posição 4, seja preenchido com 'D' (Divisão), o fator informado na posição 3 será convertido automaticamente pela rotina por um fator de multiplicação.
Importante
Segundo disposições da Portaria SEF N° 378/2018, o campos FAT_CONV dos Registros 2112, 2113 e 2130 devem possuir 6 casas decimais. Na rotina FISA230, tais campos são representados pelos campos F1K_FATCON e F1M_FATCON, que originalmente possuem apenas 2 decimais. Neste caso, quando o retorno do ponto de entrada indicar um fator de conversão com mais decimais, é recomendada a alteração dos decimais dos campos campos F1K_FATCON e F1M_FATCON conforme abaixo, via Configurador:
Campo | F1K_FATCON |
Tipo | Numérico |
Tamanho | 9 |
Decimal | 6 |
Formato | @E 99.999999 |
Título | Fator Conver |
Descrição | Fator Convers. p/ Un 0200 |
Usado | Sim |
Obrigatório | Não |
Browse | Sim |
Contexto | Real |
Propriedade | Alterar |
Ordem | 07 |
Campo | F1M_FATCON |
Tipo | Numérico |
Tamanho | 9 |
Decimal | 6 |
Formato | @E 99.999999 |
Título | Fator Conver |
Descrição | Fator Convers. p/ Un 0200 |
Usado | Sim |
Obrigatório | Sim |
Browse | Sim |
Contexto | Real |
Propriedade | Alterar |
Ordem | 21 |
04. EXEMPLO DE UTILIZAÇÃO
O exemplo abaixo considera a utilização da segunda unidade de medida da tabela SB1:
#INCLUDE "PROTHEUS.CH" #INCLUDE "RWMAKE.CH" User Function FSA231UND() Local cAlsMov := PARAMIXB[1] //---Alias posicionado---// Local aRetorno := {} Local aAreaAnt := GetArea() If (cAlsMov)->FT_TIPOMOV == 'E' DbSelectArea('SD1') SD1->(DbSetOrder(1)) //---D1_FILIAL+D1_DOC+D1_SERIE+D1_FORNECE+D1_LOJA+D1_COD+D1_ITEM---// If SD1->(DbSeek(xFilial("SD1") + (cAlsMov)->(FT_NFISCAL+FT_SERIE+FT_CLIEFOR+FT_LOJA+FT_PRODUTO+FT_ITEM))) If !Empty(SD1->D1_QTSEGUM) .And. !Empty(SD1->D1_SEGUM) Aadd(aRetorno, SD1->D1_SEGUM) //---Unidade de medida do item no Documento Fiscal---// Aadd(aRetorno, SD1->D1_QTSEGUM) //---Quantidade do item no Documento Fiscal---// Aadd(aRetorno, (1/(cAlsMov)->B1_CONV)) //---Fator de Conversão para a unidade de medida constante no Registro 0200---// Aadd(aRetorno, (cAlsMov)->B1_TIPCONV) //---Tipo de Conversão: M-Multiplicação / D-Divisão---// EndIf EndIf EndIf RestArea(aAreaAnt) Return aRetorno
05. DEMAIS INFORMAÇÕES
Não há.
06. ASSUNTOS RELACIONADOS
- FISA230 - Apuração do Ressarcimento, da Restituição e da Complementação do ICMS-ST para o Estado de Santa Catarina - DRCST
- Portaria SEF N° 378/2018