Dúvida
Quando carregamos os saldos dos produtos através da opção "Carregar saldos iniciais" na rotina FISA190, alguns produtos não são gravados na tabela F2V. Por quais motivos estes produtos não são carregados?
Ambiente
Protheus - Livros Fiscais - A partir da versão 12.1.17
Solução
Existem diversos motivos pelo qual um produto não é carregado através da opção "Carregar saldos iniciais". Abaixo listamos algumas delas.
1. O campo B1_CRICMS está com conteúdo diferente de 1: Só são considerados na CAT 42, os produtos que estão com o campo B1_CRICMS = 1. Este campo fica na aba Outros no cadastro de produtos:
2. O tamanho do campo F2V_DESPRO é diferente do tamanho B1_DESC: O campo F2V_DESPRO vem como padrão tamanho 30 (mesmo tamanho padrão do campo B1_DESC).
Se o conteúdo do campo B1_DESC estiver com tamanho maior que o tamanho do campo F2V_DESPRO o produto não será gravado na tabela F2V. Para solução deste erro, altere o tamanho do campo F2V_DESPRO para que fique igual ao tamanho do campo B1_DESC.
3. O arquivo gerado pelo P7 não trouxe os valores do produto: Neste cenário, ao gerar o arquivo do P7, o produto não foi carregado na tabela H_aaaammddeeff, onde:
aaaammdd = ano/mes/dia de geração do P7
eeff=codigo da empresa + codigo da filial no Protheus.
Certifique-se de que o produto está nesta tabela do P7 e caso não esteja, será necessário executar o relatório MATR460 para que os saldos sejam carregados.
Mais informações sobre o processo de geração do P7, consulte nossa documentação: https://centraldeatendimento.totvs.com/hc/pt-br/articles/360019765272-MP-FIS-SPED-FISCAL-Como-gerar-o-Bloco-H-do-Sped-Fiscal
4. A quantidade apresentada no arquivo do P7 é menor que a quantidade de compras escrituradas na SFT.
Nesta situação, o arquivo não é gerado se a quantidade apresentada na tabela do P7 (o nome da tabela está descrito no item 3) é maior que o resultado da query abaixo:
SELECT Sum(SFT.ft_quant) QUANT
FROM sftt10 SFT
INNER JOIN f2wt10 F2W
ON ( F2W.f2w_filial = 'M SP 01 ' -> Substitua pelo código da sua filial
AND F2W.f2w_cfop = SFT.ft_cfop
AND F2W.d_e_l_e_t_ = ' ' )
INNER JOIN f3mt10 F3M
ON ( F3M.f3m_filial = 'M SP 01 ' -> Substitua pelo código da sua filial
AND F3M.f3m_idf2w = F2W.f2w_idtab
AND F3M.f3m_csticm = RIGHT(SFT.ft_clasfis, 2)
AND F3M.d_e_l_e_t_ = ' ' )
WHERE SFT.ft_filial = 'M SP 01 ' -> Substitua pelo código da sua filial
AND SFT.ft_produto = 'CAT42 ' -> Substitua pelo código de seu produto
AND SFT.ft_tipo NOT IN ( 'D', 'B', 'S' )
AND SFT.ft_tipomov = 'E'
AND SFT.ft_dtcanc = ' '
AND SFT.ft_entrada <= '20181231' -> Substitua pela data de fechamento que foi informado na rotina "Carregar Saldos Iniciais"
AND SFT.d_e_l_e_t_ = ' '
Caso a quantidade retornada nesta consulta seja menor que o valor apresentado no P7, a rotina não irá retornar dados. Certifique-se de que há notas suficientes na SFT respeitando os filtros acima para que a quantidade das notas fiscais seja maior ou igual o apresentado no P7 para que seja possível buscar as notas fiscais suficientes para compor o saldo que será alimentado na F2V.
5. A query que busca os documentos de entrada com os valores de ICMS próprio, retido e recolhido anteriormente não trouxe informações
A query abaixo é executada para trazer os valores de ICMS dos produtos. Caso não encontre documentos, os valores de ICMS não será calculado e consequentemente não será gravado a tabela F2V:
SELECT SFT.FT_CLASFIS,
SFT.FT_ENTRADA,
SFT.FT_NFISCAL,
SFT.FT_SERIE,
SFT.FT_CLIEFOR,
SFT.FT_LOJA,
SFT.FT_ITEM,
SFT.FT_PRODUTO,
SFT.FT_CFOP,
CASE
WHEN SFT.FT_VALICM = 0
AND (SFT.FT_BASEICM + SFT.FT_OUTRICM) > 0 THEN SD1.D1_VALICM
ELSE SFT.FT_VALICM
END AS VALORICMS,
SFT.FT_ICMSRET + SFT.FT_VALANTI AS VALORST,
CASE
WHEN RIGHT(SFT.FT_CLASFIS, 2) = '60'
AND (SFT.FT_ICMSRET + SFT.FT_VALANTI) = 0 THEN SFT.FT_ICMNDES
ELSE 0
END AS VALORANT,
SFT.FT_TOTAL + SFT.FT_FRETE + SFT.FT_SEGURO + SFT.FT_DESPESA - SFT.FT_DESCONT AS BASE,
SFT.FT_QUANT AS QUANT,
SD1.D1_VALICM,
SD1.D1_BASEICM,
SD1.D1_ICMSRET,
SD1.D1_ICMNDES,
SD1.D1_ICMSCOM,
SB1.B1_PICMENT,
SD1.D1_ALIQSOL,
SD1.D1_PICM
FROM SFT030 (NOLOCK) AS SFT
INNER JOIN SD1030 (NOLOCK) AS SD1 ON SD1.D1_FILIAL = '01' -> Substitua pelo código da sua filial
AND SD1.D1_DOC = SFT.FT_NFISCAL
AND SD1.D1_SERIE = SFT.FT_SERIE
AND SD1.D1_FORNECE = SFT.FT_CLIEFOR
AND SD1.D1_LOJA = SFT.FT_LOJA
AND SD1.D1_COD = SFT.FT_PRODUTO -> Substitua pelo código de seu produto
AND SD1.D1_ITEM = SFT.FT_ITEM
AND SD1.D_E_L_E_T_ = ' '
INNER JOIN F2W030 (NOLOCK) AS F2W ON F2W.F2W_FILIAL = '01' -> Substitua pelo código da sua filial
AND F2W.F2W_CFOP = SFT.FT_CFOP
AND F2W.D_E_L_E_T_ = ' '
INNER JOIN F3M030 (NOLOCK) AS F3M ON F3M.F3M_FILIAL = '01' -> Substitua pelo código da sua filial
AND F3M.F3M_IDF2W = F2W.F2W_IDTAB
AND F3M.F3M_CSTICM = RIGHT(SFT.FT_CLASFIS, 2)
AND F3M.D_E_L_E_T_ = ' '
INNER JOIN SB1030 (NOLOCK) AS SB1 ON SB1.B1_FILIAL = '01' -> Substitua pelo código da sua filial
AND SB1.B1_COD = SFT.FT_PRODUTO -> Substitua pelo código de seu produto
AND SB1.D_E_L_E_T_ = ' '
WHERE (SFT.FT_FILIAL = '01') -> Substitua pelo código da sua filial
AND (SFT.FT_PRODUTO = '010002') -> Substitua pelo código de seu produto
AND (SFT.FT_TIPO NOT IN ('D','B','S','P','I', 'C'))
AND (SFT.FT_TIPOMOV = 'E')
AND (SFT.FT_DTCANC = '')
AND (SFT.FT_ENTRADA >= '20181201') -> mes que ouve a entrada do documento fiscal
AND (SFT.FT_ENTRADA <= '20181230') -> mes que ouve a entrada do documento fiscal
AND (SFT.FT_NFORI = ' ')
AND (SFT.FT_SERORI = ' ')
AND (SFT.FT_ITEMORI = ' ')
AND (SFT.FT_FORMUL <> 'S')
AND (SFT.D_E_L_E_T_ = ' ')
AND FT_CLASFIS LIKE '%60'
ORDER BY SFT.FT_ENTRADA DESC,
SD1.D1_NUMSEQ DESC
Atenção: A query irá buscar as notas fiscais em ordem decrescente do mês do fechamento de estoque para trás, caso não encontre notas ou o saldo não seja suficiente para compor a quantidade apresentada no estoque, o sistema irá executar a mesma query, porém filtrando o mês anterior. Iremos repetir a query até encontrar notas fiscais suficientes para compor a quantidade em estoque. Exemplo:
Quantidade em estoque 12/2018 = 40
Compras no mês 12/2018 = 5
Compras no mês 11/2018 = 20
Compras no mês 07/2017 = 15
O sistema irá executar a query acima todos os meses até o mês de julho de 2017 para compor a quantidade suficiente do que está em estoque.
A rotina soma o valor dos campos SFT.FT_VALICM + SFT.FT_ICMSRET + SFT.FT_VALANTI + SFT.FT_ICMNDES e realiza a média dos valores até chegar na quantidade que está no saldo de estoque e registro de inventário. Exemplo:
Quantidade em estoque = 30
FT_QUANT = 40
FT_VALICM = R$ 446,90
FT_ICMSRET = R$ 156,42
ICMS + ICMSRET = R$ 603,32
603,32 / 40 (FT_QUANT) = 15,08
Com base no exemplo acima, será gravado estes valores na F2V:
F2V_QTDSLD = 30
F2V_VUNSLD = 15,08
F2V_VTOSLD = 452,4
0 Comentários