Histórico da Página
01. CN121PED - Tratamento especifico antes da geração do Pedido de Compra ou de Venda
Produto: |
| ||||||||
---|---|---|---|---|---|---|---|---|---|
Linha de Produto: |
| ||||||||
Segmento: |
| ||||||||
Módulo: | Gestão de Contratos | ||||||||
Função: | CNTA121 - Medições | ||||||||
Ponto de Entrada: | CN121PED |
Ponto de Entrada
Descrição:
O ponto de entrada poderá ser utilizado para tratamentos específicos antes da geração do pedido de compra ou de venda, podendo manipular o cabeçalho, itens e rateio se necessário.
Este ponto de entrada irá substituir os PE's CN120IT7, CN120ITM, CN120PED e CN120AEP da rotina de medições nas versões anteriores ao Protheus 12.1.16
Eventos:
Na função da rotina CNTA121
Programa Fonte:
CNTA121.prw
Função:
CN121GerDoc()
Retorno:
Nome | Tipo |
aRet (aCab,aItem) | Array |
02. DETALHES
Descrição: | Possibilita ao desenvolvedor realizar tratamentos específicos antes da geração do pedido de compra ou de venda, podendo manipular o cabeçalho e itens se necessário. | |||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Eventos: | Executado uma vez por pedido gerado pela medição | |||||||||||||||||||||||||||||||||
Programa Fonte: | CNTA121.PRW | |||||||||||||||||||||||||||||||||
Função: | CN121GerDoc | |||||||||||||||||||||||||||||||||
Parâmetros: |
| |||||||||||||||||||||||||||||||||
Retorno: |
|
|
Informações | ||
---|---|---|
| ||
Este ponto de entrada irá substituir os PE's CN120IT7, CN120ITM, CN120PED e CN120AEP da antiga rotina de medições(CNTA120) |
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
#include "PROTHEUS.CH" #INCLUDE "FWMVCDEF.CH" #INCLUDE "RWMAKE.CH" #INCLUDE "TBICONN.CH" User Function CN121PED() Local aCab := PARAMIXB[1] Local aItens := PARAMIXB[2] Local aResult := Array(2) Local oModel := Nil Local lVenda := .F. Local lCompra := .F. If !(Empty(aCab) .Or. Empty(aItens)) oModel := FwModelActive()//Modelo do CNTA121 /*Para obter dados do modelo, usar oModel:GetValue(cModelId, cCampo). Exemplo: oModel:GetValue("CNDMASTER", "CND_CONTRA") */ lVenda := Cn121RetSt( "VENDA" , 0, /*cPlan*/, /*cContra*/, .T., oModel ) lCompra := Cn121RetSt( "COMPRA" , 0, /*cPlan*/, /*cContra*/, .T., oModel ) /*Realizar a operação desejada aqui...*/ EndIf aResult[1] := aCab aResult[2] := aItens Return aResult |
Bloco de código | ||||||
---|---|---|---|---|---|---|
|
Exemplo:
#Include 'Protheus.ch'
User Function CN121PED()
Local aCab := PARAMIXB[1]
Local aItem := PARAMIXB[2]
//Validações do usuario
Return {aCab,aItem}#include "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
User Function CN121PED()
Local aCab := PARAMIXB[1]
Local aItens := PARAMIXB[2]
Local aResult := Array(2)
Local oModel := Nil
Local lVenda := .F.
Local aUmItem := {}
Local nIndex := 0
Local nX := 0
Local aTemp := {}
If !(Empty(aCab) .Or. Empty(aItens))
oModel := FwModelActive()
lVenda := Cn121RetSt( "VENDA",0, /*cPlan*/, /*cContra*/, .T., oModel )
If lVenda
for nX := 1 to Len(aItens)
aUmItem := aItens[nX]
nIndex := aScan(aUmItem, {|x| AllTrim(x[1]) == "C6_QTDVEN"})
if nIndex > 0
aTemp := aClone(aUmItem[nIndex])
aTemp[1]:= "C6_QTDLIB"
aAdd(aUmItem, aTemp) //Equaliza a quantidade liberada com a quantidade, dessa forma o pedido é automaticamente liberado.
/*É importante frisar que com essa liberação, ao tentar estornar a medição, será apresentado o alerta A410LIBER */
endif
next nX
EndIf
EndIf
aResult[1] := aCab
aResult[2] := aItens
Return aResult |