Árvore de páginas

Ponto de Entrada

Descrição:

Este Ponto de Entrada será executado na rotina Fechamento OS Mod2 (OFIXA100) ao ser executada a funcionalidade Fechar (OS). A mesma permite na gridbox "Negociar Peças" de incluir campos customizáveis da tabela VO3 (1ª Chamada) e retornar dados da tabela SB1 (2ª Chamada).

Localização:

Atualizações \ Mov Oficina \ Fechamento OS Mod2 (OFIXA100)

Eventos:

1ª Chamada - Criação


// Monta Variaveis para a GetDados de Pecas

// TT

cVO3RMostra := "VO3_TIPTEM/VO3_GRUITE/VO3_DESGRU/VO3_VALBRU/VO3_PERDES/VO3_VALDES/VO3_VALTOT"

cVO3RnEdit := "VO3_TIPTEM/VO3_GRUITE/VO3_DESGRU/VO3_VALBRU"


// Itens/Peças

cVO3DMostra := "VO3_TIPTEM/VO3_GRUITE/VO3_CODITE/VO3_DESITE/VO3_QTDREQ/VO3_VALPEC/VO3_OPER/VO3_CODTES/VO3_VALBRU/VO3_PERDES/VO3_VALDES/VO3_VALTOT/VO3_PEDXML/VO3_ITEXML/VO3_MARLUC"

cVO3DMostra += "/VO3_CENCUS/VO3_CONTA/VO3_ITEMCT/VO3_CLVL /" + IIf( lCtrlLote , "VO3_LOTECT/VO3_NUMLOT/" , "")

cVO3DnEdit := "VO3_TIPTEM/VO3_GRUITE/VO3_DESGRU/VO3_CODITE/VO3_DESITE/VO3_QTDREQ/VO3_VALPEC/VO3_VALBRU/VO3_MARLUC/VO3_LOTECT/VO3_NUMLOT"


If cUsaAcres == 'S' // Se trabalha com acréscimo

// cVO3RnEdit += "/VO3_PERDES/VO3_VALDES/VO3_ACRESC" // nao e permitido alterar os descontos e acresc. no grid de TT

cVO3RnEdit += "/VO3_ACRESC" // adiciona campo acrescimo do grid de TT

cVO3RMostra += "/VO3_ACRESC" // adiciona campo acrescimo do grid de TT

cVO3DMostra += "/VO3_ACRESC" // adiciona campo acrescimo do grid de TT

EndIf


// Ponto de entrada para:

// 0 - Criação (X)

// 1 - Ret. Dados ( )

// de campos customizáveis da gridbox de Peças

If lVO3Pec

aVO3CPec := ExecBlock("OX100PEC", .f., .f., {"0", "", ""})


If !Empty(aVO3CPec)

For nCntFor := 1 To Len(aVO3CPec[nCntFor])

cVO3DMostra += "/" + aVO3CPec[1, nCntFor]

Next

EndIf

EndIf


dbSelectArea("SX3")

dbSetOrder(1)

dbSeek("VO3")

While !SX3->(Eof()) .And. (SX3->X3_ARQUIVO == "VO3")


&("M->"+AllTrim(SX3->X3_CAMPO)) := CriaVar(SX3->X3_CAMPO,.f.)


If X3USO(SX3->X3_USADO) .And. cNivel>=SX3->X3_NIVEL


// aHeader da GetDados de Pecas - RESUMO

If (AllTrim(SX3->X3_CAMPO) $ cVO3RMostra)

Aadd(aHVO3Res, {AllTrim(X3Titulo()), SX3->X3_CAMPO, SX3->X3_PICTURE, SX3->X3_TAMANHO,;

SX3->X3_DECIMAL, SX3->X3_VALID, SX3->X3_USADO, SX3->X3_TIPO,;

SX3->X3_F3, SX3->X3_CONTEXT, X3CBOX(), SX3->X3_RELACAO })


IF SX3->X3_VISUAL <> "V" .and. !(AllTrim(SX3->X3_CAMPO) $ cVO3RnEdit)

Aadd(aHVO3RAlt,SX3->X3_CAMPO)

ENDIF

Endif


// aHeader da GetDados de Pecas - Detalhado

If (AllTrim(SX3->X3_CAMPO) $ cVO3DMostra)

Aadd(aHVO3Det, {AllTrim(X3Titulo()), SX3->X3_CAMPO, SX3->X3_PICTURE, SX3->X3_TAMANHO,;

SX3->X3_DECIMAL, SX3->X3_VALID, SX3->X3_USADO, SX3->X3_TIPO,;

SX3->X3_F3, SX3->X3_CONTEXT, X3CBOX(), SX3->X3_RELACAO })


IF SX3->X3_VISUAL <> "V" .and. !(AllTrim(SX3->X3_CAMPO) $ cVO3DnEdit)

Aadd(aHVO3DAlt,SX3->X3_CAMPO)

ENDIF

Endif

Endif

SX3->(dbSkip())

End

SX3->(dbSetOrder(2))

SX3->(dbSeek("VO3_CODITE"))

Aadd(aHVO3Det, {"Seq. Int", "SEQFEC", "999", 3,;

0, "", SX3->X3_USADO, "N",;

"", SX3->X3_CONTEXT, "", "" })


------------------------------------------------------------------------------------

2ª Chamada - Ret. Dados


aAuxVO3[nPosAux, AP_MOV ] := aAuxValPec[nCntFor,PECA_MOV] // 18 - Matriz com movimentacoes das pecas ...

aAuxVO3[nPosAux, AP_VALCUS ] := SB2->B2_CM1 // 19 - Valor do Custo da Peca

aAuxVO3[nPosAux, AP_ITFISCAL ] := {} // 20 - Matriz com campos fiscais das pecas rateado

aAuxVO3[nPosAux, AP_ITTES ] := aAuxValPec[nCntFor,PECA_TES] // 21 - TES da Peca

aAuxVO3[nPosAux, AP_ACRESC ] := aAuxValPec[nCntFor,PECA_ACRESC] // 22 - Valor do Acrescimo

aAuxVO3[nPosAux, AP_LOTECT ] := IIf( lCtrlLote , aAuxValPec[nCntFor,PECA_LOTECT] , "" ) // 23 - Lote

aAuxVO3[nPosAux, AP_NUMLOT ] := IIf( lCtrlLote , aAuxValPec[nCntFor,PECA_NUMLOT] , "" ) // 24 - Sub-Lote

aAuxVO3[nPosAux, AP_SEQFEC ] := oGetDetVO3:aCols[nPos,DSEQFEC]// 25 - Sequencia do Fechamento


aAuxVO3[nPosAux, AP_RECVO3 ] := {} // 26 - Recno do VO3

for nRecPecMov := 1 to Len(aAuxValPec[nCntFor,PECA_MOV])

aadd( aAuxVO3[nPosAux, AP_RECVO3], { aAuxValPec[nCntFor,PECA_MOV,nRecPecMov,PECA_MOV_RECVO3] })

Next


// Ponto de entrada para:

// 0 - Criação ( )

// 1 - Ret. Dados (X)

// de campos customizáveis da gridbox de Peças

If lVO3Pec .And. !Empty(aVO3CPec)

aVO3DPec := ExecBlock("OX100PEC", .f., .f., {"1", aAuxValPec[nCntFor, 01], aAuxValPec[nCntFor, 02]}) // VO3_GRUITE / VO3_CODITE


If !Empty(aVO3DPec)

For nCntAux := 1 To Len(aVO3DPec[nCntAux])

If FG_POSVAR(aVO3CPec[1, nCntAux], "aHVO3Det") > 0

oGetDetVO3:aCols[nCntFor, FG_POSVAR(aVO3CPec[1, nCntAux], "aHVO3Det")] := aVO3DPec[1, nCntAux]

EndIf

Next

EndIf

EndIf


//

If lAtuVal

nTotalPeca += Round(aAuxValPec[nCntFor,PECA_VALOR] * aAuxValPec[nCntFor,PECA_QTDREQ],2)

EndIf


// Monta array para gerar VSG

OX100BOQ(aAuxValPec[nCntFor,PECA_MOV])

//

Programa Fonte:

OFIXA100.PRW

Função:

OX100EXEC() / OX100PECA()

Parâmetros:
NomeTipo Descrição

cTipo

Caracter

Tipo (0 - Criação / 1 - Ret. Dados - Único informado)

cTipo

Caracter

Tipo (0 - Criação / 1 - Ret. Dados)

cGruIte

Caracter

Grupo da Peça

cCodIte

Caracter

Código da Peça

Retorno:
NomeTipoDescrição

aRet

Vetor

Retorno dos campos customizáveis virtuais (VO3)

aRetVetor

Retorno dos dados da tabela SB1 (para os campos customizáveis da 1ª Chamada)

Exemplo:

Include totvs.ch

/*

===============================================================================================

###############################################################################################

##+----------+------------+-------+---------------------------------------+------+----------+##

##|Função | OX100PEC | Autor | MIL | Data | 18/03/2020 |##

##+----------+------------+-------+---------------------------------------+------+----------+##

##|Descrição | Ponto de entrada OX100PEC localizado na rotina Fechamento OS Mod2 (OFIXA100)|##

##| | que retornará campos customizáveis da VO3 e dados necessários da SB1 |##

##+----------+------------------------------------------------------------------------------+##

###############################################################################################

===============================================================================================

*/

User Function OX100PEC()

cTipo := ParamIxb[1]

cGruIte := ParamIxb[2]

cCodIte := ParamIxb[3]

aRet := {}


If cTipo == "0"

// Criação (campos virtuais - exemplo)

Aadd(aRet, {"VO3_GRTRIB", "VO3_FABRIC"})

Else

// Ret. Dados

SB1->(DbSetOrder(7))

SB1->(DbSeek(xFilial("SB1") + cGruIte + cCodIte))


Aadd(aRet, {SB1->B1_GRTRIB, SB1->B1_FABRIC})

EndIf


MsgInfo("Ponto de entrada OX100PEC executado com sucesso!", "")

Return aRet