× Linguagem de Programação ADVPL

Perguntas Ponto de entrada - MTA410

Mais
3 anos 7 meses atrás #33032 por diegoo_martins
Pessoal, bom dia!

Fiz o ponto de entrada na validação do Pedido de Vendas com o objetivo de validar, se o TES atual está diferente do código cadastrado no TES Inteligente. Está funcionando,  porém surgiu uma necessidade de validar somente os itens que não foram faturados.
Pode me dar uma ajudar para inserir esta validação?

User Function MTA410()

Local nPosOper := GDFIELDPOS("C6_OPER")
Local nPosTES := GDFIELDPOS("C6_TES")
Local nPosCOD := GDFIELDPOS("C6_PRODUTO")
Local nPosITEM := GDFIELDPOS("C6_ITEM")
Local cTiPed
// Valida TES do pedido x Cadastro de Tes Inteligente

dbSelectArea("SFM")
SFM->(dbSetorder(4)) //FM_FILIAL+FM_TIPO+FM_CLIENTE+FM_LOJACLI+FM_POSIPI

cPOSIPI:= Posicione("SB1",1,xfilial("SB1")+SC6->C6_PRODUTO,"B1_POSIPI")
cTiPed := M->C5_TIPO

IF INCLUI .or. ALTERA // MA410RESID
If SFM->(dbSeek(xFilial("SFM")+SC6->C6_OPER+SC6->C6_CLI+SC6->C6_LOJA+cPOSIPI))
If cTiPed $ "N" //.and. EMPTY(SC6->C6_NOTA)
For nx := 1 To Len(aCols)
If !aCols[nx,Len(aHeader)+1]
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("O Tes do item " + cItem + " está diferente do cadastro de TES Inteligente. Favor verifique com o depto Fiscal.")
Return .F.
Endif
Endif
Next

Endif
EndIf
Endif
Return(.T.)

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 7 meses atrás #33033 por admin
Respondido por admin no tópico Ponto de entrada - MTA410
Fala diego blz, mas pra saber se os itens forma ou não faturados, só iria funcionar na alteração correto, você pode dar um seek na sc6 e ver o campo C6_QTDENT se está maior que zero, então foi faturado.

Coloquei uma regra ai, se for alteração verifica se a quantidade entregue já está maior que zero então valida a tes, e na inclusão valida sempre.
User Function MTA410()

Local nPosOper := GDFIELDPOS("C6_OPER")
Local nPosTES := GDFIELDPOS("C6_TES")
Local nPosCOD := GDFIELDPOS("C6_PRODUTO")
Local nPosITEM := GDFIELDPOS("C6_ITEM")
Local cTiPed
// Valida TES do pedido x Cadastro de Tes Inteligente

dbSelectArea("SFM")
SFM->(dbSetorder(4)) //FM_FILIAL+FM_TIPO+FM_CLIENTE+FM_LOJACLI+FM_POSIPI

cPOSIPI:= Posicione("SB1",1,xfilial("SB1")+SC6->C6_PRODUTO,"B1_POSIPI")
cTiPed := M->C5_TIPO

IF INCLUI .or. ALTERA // MA410RESID
	If SFM->(dbSeek(xFilial("SFM")+SC6->C6_OPER+SC6->C6_CLI+SC6->C6_LOJA+cPOSIPI))
		If cTiPed $ "N" //.and. EMPTY(SC6->C6_NOTA)
			For nx := 1 To Len(aCols)
				If !aCols[nx,Len(aHeader)+1]
					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 ALTERA .And. SC6->(dbSetOrder(1), dbSeek(xFilial("SC6")+M->C5_PRODUTO+cItem)) .And. SC6->C6_QTDENT > 0
						If cTesAtual <> cTes
							MsgStop("O Tes do item " + cItem + " está diferente do cadastro de TES Inteligente. Favor verifique com o depto Fiscal.")
							Return .F.
						Endif
					Else
						If cTesAtual <> cTes
							MsgStop("O Tes do item " + cItem + " está diferente do cadastro de TES Inteligente. Favor verifique com o depto Fiscal.")
							Return .F.
						Endif
					Endif
				Endif
			Next
		Endif
	EndIf
Endif
Return(.T.)

Por favor Acessar ou Registrar para participar da conversa.

Mais
3 anos 7 meses atrás #33053 por diegoo_martins
Respondido por diegoo_martins no tópico Ponto de entrada - MTA410
Boa noite Luis.

Só alterei esta linha para pegar na alteração.
IF INCLUI .or. ALTERA => IF ALTERA

Muito obrigado.

Por favor Acessar ou Registrar para participar da conversa.

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