Árvore de páginas

Descrição

Este Ponto de entrada permite a execução de um processo customizado, para que se possa determinar se a venda será processada pelo LjGrvBatch.

Observações

Se a venda não for processada e não sofrer nenhuma alteração, ela tentará ser processada na próxima execução do LjGrvBatch.

Exemplo 1

#INCLUDE "TOTVS.CH"

//Valida venda com saldo maior que zero para processar

User Function LJ7082()

Local lRet := .T.

//o ponteiro já está posicionado sobre o cabeçalho da venda
If SL1->L1_VLRTOT <= 0
   lRet := .F.
EndIf

Return lRet

Exemplo 2

#INCLUDE "PROTHEUS.CH"


//--------------------------------------------------------
/*/{Protheus.doc} LJ7082
Ponto de entrada para validar se produto possui estoque suficiente,
caso não tenha muda o armazem dessa venda para o armazem de ruptura 09.
@type function
@author Varejo
@since 13/03/2018
@version P12
@param
@return .T. - Retona se a venda será processada ou não.
/*/
//--------------------------------------------------------
User Function LJ7082()

Local aAreaSL2 := SL2->(GetArea()) //Guarda Area da tabela SL2
Local aAreaSB2 := SB2->(GetArea()) //Guarda Area da tabela SL2
Local aItens := {} //Guarda Itens ja validados para somar produtos iguais
Local nQuant := 0 //Quantidade total desse produto nessa venda


DbSelectArea("SL2")
SL2->( DbSetOrder(1) )//L2_FILIAL+L2_NUM
If SL2->( DbSeek( xFilial( "SL2" ) + SL1->L1_NUM ) )

While SL2->L2_FILIAL + SL2->L2_NUM == xFilial( "SL2" ) + SL1->L1_NUM

nPosProd := aScan(aItens,{|x| x[1] == AllTrim(SL2->L2_PRODUTO) })
If nPosProd > 0
nQuant := SL2->L2_QUANT + aItens[nPosProd][2]

//Soma qtd do produto pois se tiver itens repetidos o saldo
//ainda não foi baixado nesse momento e deve ser considerada a soma
aItens[nPosProd][2] += SL2->L2_QUANT
Else
nQuant := SL2->L2_QUANT
Aadd(aItens,{ AllTrim(SL2->L2_PRODUTO) , SL2->L2_QUANT })
EndIf

DbSelectArea("SB2")
SB2->( DbSetOrder(1) )//B2_FILIAL+B2_COD+B2_LOCAL
If DbSeek(xFilial("SB2")+ PadR(SL2->L2_PRODUTO,TamSX3("B2_COD")[1],Nil) + SL2->L2_LOCAL)
If SaldoSB2() < nQuant

RecLock("SL2",.F.)
SL2->L2_LOCAL := "09" //09 = ARMAZEM RUPTURA
SL2->(MsUnlock())

EndIf
Else
Conout("Produto não foi localizado na tabela de Saldos(SB2).")
EndIf

SL2->(DbSkip())
EndDo

EndIf

RestArea(aAreaSL2)
RestArea(aAreaSB2)

Return .T.


Idioma

Português(Brasil)

Versões

Microsiga_Protheus 11ou superior

Sistemas Operacionais Suportados

Todos

Compatível com as Bases de Dados

Todas

Parâmetros

Não possui.

Retorno

Retorno Lógico .T. = a venda será processada .F. = a venda não será processada

Eventos de chamada do Ponto de Entrada


Programa Fonte

LOJXFUNC.PRW




  • Sem rótulos