Passo a passo: | //Requisição de Serviço - Opções Requisitar (2) e Alterar (3) #include "Protheus.ch" User Function TST030REQ() Local cSQL := "" Local aParamBox := {} Local aRetParam := {} Local aCabVO4 := {} Local aAuxIteVO4 := {} Local aIteVO4 := {} Local lRetExec := .t. Local nOpcAviso Private lMSHelpAuto Private lMsErroAuto AADD(aParamBox,{1,"OS" ,"00000052" ,"@!" ,"","","",20,.T.}) // 1 AADD(aParamBox,{1,"Tipo de Tempo" ,"CS " ,"@!" ,"","","",20,.T.}) // 2 AADD(aParamBox,{1,"Grupo Servico" ,"01" ,"@!" ,"","","",40,.T.}) // 3 AADD(aParamBox,{1,"Servico" ,"10-020-018 " ,"@!" ,"","","",40,.T.}) // 4 AADD(aParamBox,{1,"Tipo de Servico" ,"SRI" ,"@!" ,"","","",20,.f.}) // 5 AADD(aParamBox,{1,"Tempo Padrao" ,0 ,"@R 999:99" ,"","","",20,.f.}) // 6 AADD(aParamBox,{1,"Secao" ,"MEC" ,"@!" ,"","","",20,.f.}) // 7 AADD(aParamBox,{1,"Valor Fixo" ,0 ,"@E 9999.99" ,"","","",20,.f.}) // 8 AADD(aParamBox,{1,"Valor Venda" ,0 ,"@E 9999.99" ,"","","",20,.f.}) // 9 aRetParam := {} If !ParamBox(aParamBox,"ExecAuto Req. Servico",@aRetParam,,,,,,,,.f.) lRetExec := .f. EndIf If lRetExec DbSelectArea("VO1") VO1->(dbSetOrder(1)) VO1->(dbSeek( xFilial("VO1") + aRetParam[1] )) cSQL := "SELECT COUNT(*) " cSQL += "FROM " + RetSQLName("VO4") + " VO4 " cSQL += "WHERE VO4.VO4_FILIAL = '" + xFilial("VO4") + "' " cSQL += "AND VO4.VO4_NUMOSV = '" + aRetParam[1] + "' " cSQL += "AND VO4.VO4_TIPTEM = '" + aRetParam[2] + "' " cSQL += "AND VO4.VO4_CODSER = '" + aRetParam[4] + "' " cSQL += "AND VO4.D_E_L_E_T_ = ' ' "
nOpcAviso := Aviso("Escolha a opção", "Selecione o que deseja fazer:", { "Requisição", "Alteração", "Fechar" }, 1) If nOpcAviso == 1 // Requisicao If FM_SQL(cSQL) > 0 // O servico esta requisitado, vamos excluir a linha e incluir uma nova AADD(aAuxIteVO4, { "LINPOS" , "VO4_TIPTEM+VO4_CODSER",aRetParam[2] , aRetParam[4] }) // Deleta a linha na aCols AADD(aAuxIteVO4, { "AUTDELETA" , "S" , NIL } ) AADD( aIteVO4 , aClone( aAuxIteVO4 ) ) EndIf aAuxIteVO4 := {} // Inclui a linha no aCols AADD(aAuxIteVO4, { "VO4_NUMOSV" , VO1->VO1_NUMOSV , nil } ) AADD(aAuxIteVO4, { "VO4_TIPTEM" , aRetParam[2] , nil } ) AADD(aAuxIteVO4, { "VO4_GRUSER" , aRetParam[3] , nil } ) AADD(aAuxIteVO4, { "VO4_CODSER" , aRetParam[4] , nil } ) AADD(aAuxIteVO4, { "VO4_TIPSER" , aRetParam[5] , nil } ) If aRetParam[6] <> 0 AADD(aAuxIteVO4, { "VO4_TEMPAD" , aRetParam[6] , nil } ) EndIf AADD(aAuxIteVO4, { "VO4_CODSEC" , aRetParam[7] , nil } ) If aRetParam[8] <> 0 AADD(aAuxIteVO4, { "VO4_VALSER" , aRetParam[8] , nil } ) EndIf If aRetParam[9] <> 0 .AND. aRetParam[5] == 'TER' AADD(aAuxIteVO4, { "VO4_VALCUS" , aRetParam[9] , nil } ) AADD(aAuxIteVO4, { "VO4_VALVEN" , aRetParam[9] , nil } ) EndIf AADD( aIteVO4 , aClone( aAuxIteVO4 ) )
lMSHelpAuto := .t. lMsErroAuto := .f.
MSExecAuto({|x,y,z| OFIOM030(,,x,y,z)},{},aIteVO4,2)
If lMsErroAuto DisarmTransaction() RollbackSx8() MsUnlockAll() MostraErro() lRetExec := .f. Endif
ElseIf nOpcAviso == 2 // Alteracao If FM_SQL(cSQL) > 0 // O servico foi localizado, vamos altera-lo
aAdd(aCabVO4 ,{"NUMOSV" , VO1->VO1_NUMOSV , Nil }) aAdd(aCabVO4 ,{"TIPTEM" , aRetParam[2] , Nil }) // Tipo de Tempo Novo //AADD(aCabVO4 , { "FATPAR" , , NIL } ) //AADD(aCabVO4 , { "LOJA " , , NIL } ) //AADD(aCabVO4 , { "DEPINT" , , NIL } ) //AADD(aCabVO4 , { "DEPGAR" , , NIL } ) AADD(aCabVO4 , { "TIPSER" , "SRT" , NIL } ) // Tipo de Servico Novo AADD(aAuxIteVO4, { "VO4_NUMOSV" , VO1->VO1_NUMOSV , nil } ) AADD(aAuxIteVO4, { "VO4_TIPTEM" , aRetParam[2] , nil } ) AADD(aAuxIteVO4, { "VO4_CODSER" , aRetParam[4] , nil } ) AADD( aIteVO4 , aClone( aAuxIteVO4 ) ) MSExecAuto({|x,y,z| OFIOM030(,,x,y,z)},aCabVO4,aIteVO4,3) If lMsErroAuto DisarmTransaction() RollbackSx8() MsUnlockAll() MostraErro() lRetExec := .f. Endif
Else // O servico nao foi localizado na OS, impossivel alterar ConOut("O servico nao foi localizado na OS, impossivel alterar") lRetExec := .f. EndIf EndIf EndIf Return lRetExec |