Árvore de páginas

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_QTDMOVF1M_FATCON. Tais valores serão posteriormente utilizados na geração do arquivo a ser transmitido.

03. Especificação

Programa

FISA231.PRW

FISA230A.PRW

SintaxeFSA231UND- Unidade de medida e quantidade do item informadas no documento fiscal ( [cAlias] ) --> aRet

Parâmetros do ponto de entrada:

NomeTipoDescriçã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:

NomeTipoDescrição
aRet[1]CaracterUnidade de medida informada no documento fiscal.
aRet[2]NúmeroQuantidade na unidade de medida informada no documento fiscal.
aRet[3]NúmeroFator de Conversão da unidade informada no documento fiscal para a unidade de controle do estoque, informada no registro 0200.
aRet[4]CaracterTipo de Conversão, podendo ser: (Multiplicação) ou (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:


FSA231UND
#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