Perguntas M410LIOK

Mais
3 anos 7 meses atrás #33014 por diegoo_martins
M410LIOK foi criado por diegoo_martins
Pessoal, boa tarde!

Utilizamos Tes Inteligente e precisamos fazer uma validação no pedido de venda para não deixar confirmar o pedido com um TES diferente do cadastrado na SFM.

Alguém tem alguma ideia de como montar esta validação?

Hoje temos o ponto de entrada M410LIOK fazendo uma validação para deixar obrigatório o campo C6_OPER e gatilhar a SFM, mas mesmo assim ainda sim é possível ter falhas..

If Inclui .or. Altera
cCodigo := aCols[n][nPosCOD]
cTipo := Posicione("SB1",1,xFilial("SB1")+cCodigo,"B1_TIPO")
cTiPed := M->C5_TIPO
If cTipo $ ("PA/ME") .and. Empty(cOper) .and. cTiPed $ "N"
MsgBox("Para pedidos Tipo N - Normal é necessário preencher o Tipo de Operação.","M410LIOK","INFO")
lRet := .F.
EndIf
Endif

Obrigado.

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 7 meses atrás #33015 por diegoo_martins
Respondido por diegoo_martins no tópico M410LIOK
Fiz desta forma, mas não funcionou...

If Inclui .or. Altera
cCodigo := aCols[n][nPosCOD]
cTipo := Posicione("SB1",1,xFilial("SB1")+cCodigo,"B1_TIPO")
cTiPed := M->C5_TIPO
If cTipo $ ("PA/ME") .and. Empty(cOper) .and. cTiPed $ "N"
MsgBox("Para pedidos Tipo N - Normal é necessário preencher o Tipo de Operação.","M410LIOK","INFO")
lRet := .F.
EndIf

// Verifica se existe a amarração TES INTELIGENTE - SFM
cCodNCM := Posicione("SB1",1,xfilial("SB1")+cCodigo,"B1_POSIPI")
dbSelectArea("SFM") // Posiciona na tabela SFM (Tes Inteligente)
SFM->(dbSetOrder(4))//Filial + Tipo + Cliente + Loja + NCM
If SFM->(dbSeek(xFilial("SFM") + SC6->C6_OPER + SC6->C6_CLI + SC6->C6_LOJA + cCodNCM ))
IF SFM->(FM_FILIAL + FM_TIPO + FM_CLIENTE + FM_LOJACLI + FM_POSIPI ) == xFilial("SFM") + SC6->C6_OPER + SC6->C6_CLI + SC6->C6_LOJA + cCodNCM
Aviso("TES","O TES está diferente da amarração realizada no cadastro de TES Inteligente.",{"OK"},1)
lRet := .F.
EndIf
EndIf
EndIf

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 7 meses atrás #33016 por admin
Respondido por admin no tópico M410LIOK
Usa ponto de entrada m410TOK na confirmação do pedido de venda e processa o acols todo de uma vez, é melhor do que tentar validar linha a alinha.

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 7 meses atrás #33017 por admin
Respondido por admin no tópico M410LIOK
segue exemplo de execução da tes inteligente que vc irá fazer linha a linha processando o acols.


cTes := MaTesInt( 2 ,;
aCols[nI,nPosOper],;
SA1->A1_COD,;
SA1->A1_LOJA,;
"C",;
aCols[nI,nPosProd],,;
SA1->A1_TIPO)

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 7 meses atrás #33018 por admin
Respondido por admin no tópico M410LIOK
Cara ve se funfa ai, não testei.
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TOPCONN.CH"                                                                                                         
#INCLUDE "COLORS.CH"     
#INCLUDE "RWMAKE.CH"
#include "TbiConn.ch"
#include "TbiCode.ch"   

/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Programa  ³ MT410CPY Autor   ³ Luiz                 ³ Data ³ 20/08/12 ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
/*/
USER FUNCTION MT410TOK()  
Local aArea 		:= GetArea()
Local lRet 			:= .T.
Local nPosOper 		:= GDFIELDPOS("C6_OPER")
Local nPosTES 		:= GDFIELDPOS("C6_TES")
Local nPosCOD   	:= GDFIELDPOS("C6_PRODUTO")   
Local nPosITEM   	:= GDFIELDPOS("C6_ITEM")   

// Valida TES

For nx := 1 To Len(aCols)
	If !aCols[nx,Len(aHeader)+1] // se o acols náo estiver deleta processa.
		cTesAtual := aCols[nx,nPosTES]
		cProduto  := aCols[nx,nPosCod]
		cOpera    := aCols[nx,nPosOper]
		cItem     := aCols[nx,nPosITEM]
		
		cTes := MaTesInt( 2 ,;
				cOpera,;
				SA1->A1_COD,;
				SA1->A1_LOJA,;
				"C",;
				cProduto,,;
				SA1->A1_TIPO)
				
		If cTesAtual <> cTes
			MsgStop("Atenção a Tes do Item " + cItem + " Está Diferente No Programado pelo Sistema, Verifique !!!")
			Return .F.
		Endif
	Endif
Next

Return .T.

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 7 meses atrás #33019 por diegoo_martins
Respondido por diegoo_martins no tópico M410LIOK
Luiz,

Quando clico para Salvar o pedido gera a mensagem de erro, mas está deixando salvar o pedido com o TES errado. Fiz algumas alterações, mas sem sucesso...

USER FUNCTION MT410TOK()
Local aArea := GetArea()
Local lRet := .T.
Local nPosOper := GDFIELDPOS("C6_OPER")
Local nPosTES := GDFIELDPOS("C6_TES")
Local nPosCOD := GDFIELDPOS("C6_PRODUTO")
Local nPosITEM := GDFIELDPOS("C6_ITEM")
Local aAreaC9 := SC9->(GetArea())
Local aAreaC5 := SC5->(GetArea())
Local aAreaC6 := SC6->(GetArea())


If Inclui .or. Altera
// Valida TES
For nx := 1 To Len(aCols)
If !aCols[nx,Len(aHeader)+1] // se o acols náo estiver deleta processa.
cTesAtual := aCols[nx,nPosTES]
cProduto := aCols[nx,nPosCod]
cOpera := aCols[nx,nPosOper]
cItem := aCols[nx,nPosITEM]

cTes := MaTesInt( 2 ,;
cOpera,;
SA1->A1_COD,;
SA1->A1_LOJA,;
"C",;
cProduto,,;
SA1->A1_TIPO)

If cTesAtual <> cTes
MsgBox("O TES do item " +cItem+ " está diferente do cadastro de Tes Inteligente. Favor verificar com o depto Fiscal.","MT410TOK","INFO")
Return .F.
Endif
Endif

Next
EndIf
RestArea(aAreaC6)
RestArea(aAreaC5)
RestArea(aAreaC9)
RestArea(aArea)

Return (lRet)

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.093 segundos
Joomla templates by a4joomla