|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
PE para Impostos em Pedido de Vendas |
|
Versão: |
12.1.25 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
|
|
|
Mensagem do
GT_MATOS
em 06/05/2021, 17:08 h
Local: SP Registro: 27/04/2016 Postagens: 1 |
GT_MATOS
Olá!
Criei um campo de nome C6_XIMPOSTOS para calcular os impostos no pedido de vendas com o ponto de entrada M410LIOK e a uma User Function, de acordo com os respectivos fontes abaixo;
Porém está travando o serviço do Protheus;
Alguém poderia verificar e auxiliar em que eu possa ter errado na função?
Fonte para o ponto de entrada:
/*P.E.: M410LIOK
Descr.: Validação da linha do Pedido de Venda*/
#include ‘protheus.ch‘
User Function M410LIOK()
Local lRet := .T.
//Atualiza o Item
M->C6_XIMPOST := u_TribItemPv(M->C6_NUM,2)
GetDRefresh()
Return lRet
//- User Function
/*/{Protheus.doc} TribItemPv
Função que retorna o valor dos tributos do item do Pedido de Vendas
/*/
//Bibliotecas
#include ‘protheus.ch‘
#include ‘topConn.ch‘
User Function TribItemPv(cNumPed)
Local nDesconto := 0
Local cNumPed := SC6->C6_NUM
MaFisIni(SC5->C5_CLIENTE,; //1-Codigo Cliente/Fornecedor
SC5->C5_LOJACLI,; //2-Loja do Cliente/Fornecedor
"C",; //3-C:Cliente , F:Fornecedor
SC5->C5_TIPO,; //4-Tipo da NF
SC5->C5_TIPOCLI,; //5-Tipo do Cliente/Fornecedor
MaFisRelImp("MTR700",{"SC5","SC6"}),; //6-Relação de Impostos que suportam no arquivo
,; //7-Tipo de complemento
,; //8-Permite incluir impostos no Rodapé .T./.F.
"SB1",; //9-Alias do cadastro de produtos
"MATA461") //10-Nome da rotina que está utilizando a função
nItem := 0
nValIcmSt := 0
DbSelectArea("SC6")
DbGoTop()
DbSetOrder(1)
DbSeek(xFilial("SC6")+cNumPed)
While !Eof() .AND. SC6->C6_FILIAL = xFilial("SC6") .AND. SC6->C6_NUM == cNumPed
DbSelectArea("SC6")
EndDo
|
|
|
Mensagem do
DON.JUNIOR
em 06/05/2021, 19:09 h
Local: RJ Registro: 24/01/2016 Postagens: 152 |
Você precisa do campo C6_XIMPOST preenchido no momento da digitação ? se sim ok, mas outra possibilidade seria um gatilho, (mesmo que chamando um .prw); do contrário faz no final (tudok da vida), assim você não compromete o processo padrão... só uma dica.
Lembre-se que cada ponto de entrada tem uma função específica, esse por exemplo é para validação, tanto que o retorno é booleano. Não que seja proibido fazer assim, mas é uma boa prática.
Como não colocou detalhes do erro, e você está usando algumas funções internas (MaFisRelImp,MaFisIni, etc) e não tem GetArea() RestArea() na sua rotina, pode está desposicionando algum registro ou tabela e consequentemente travando.
Se feito no final como falei, não correria esse risco.
Resposta longa e genérica, mas acredito ter ajudado minimamente.
Att.
Don Junior |
|
|
Mensagem do
MDENILSON
em 10/05/2021, 08:52 h
Local: SP Registro: 19/02/2021 Postagens: 3 |
Falta o
dbskip() |
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|