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: |
| |||||||||||||||
Retorno: |
|
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