Árvore de páginas

Ponto-de-Entrada: VX012VAL - Validação na Seleção do Veículo no Atendimento Modelo 2
Abrangências: Microsiga Protheus 10 , Microsiga Protheus 11
Versões: Microsiga Protheus 10 , Microsiga Protheus 11
Compatível Países: Todos
Sistemas Operacionais: Todos
Compatível às Bases de Dados: Todos
Idiomas: Português (Brasil)
Descrição:
Este Ponto de Entrada permite a validação na seleção do veículo da consulta de veículos F7 do atendimento modelo 2.
Eventos
User Function VX012VAL()
Local cFilVVA := ParamIXB[1] // Filial do Atendimento
Local cNumAte := ParamIXB[2] // Nro do Atendimento
Local cChassi := ParamIXB[3] // Chassi do Veiculo
Local lRet    := .t.
lRet := U_ZZVALVVA(cFilVVA,cNumAte,cChassi) // Validar se existe outro Atendimento Aberto (janela aberta) para o mesmo veiculo
Return lRet

////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Funcao de USUARIO para validar se existe outro Atendimento Aberto (janela aberta) para o mesmo veiculo //
////////////////////////////////////////////////////////////////////////////////////////////////////////////
User Function ZZVALVVA(cFilVVA,cNumAte,cChassi)
Local cQuery  := ""
Local cQAlAux := "SQLAUXILIAR"
Local lRet    := .t.
Local cFilVV1 := xFilial("VV1")
Local cFilVV2 := xFilial("VV2")
If VVA->(FieldPos("VVA_ZZABER")) > 0
    cQuery := "SELECT VV9.VV9_FILIAL , VV9.VV9_NUMATE , VV0.VV0_CODVEN , VV1.VV1_CODMAR , VV2.VV2_DESMOD FROM "+RetSqlName("VVA")+" VVA "
    cQuery += "JOIN "+ RetSqlName("VV9")+" VV9 ON ( VV9.VV9_FILIAL=VVA.VVA_FILIAL AND VV9.VV9_NUMATE=VVA.VVA_NUMTRA AND VV9.D_E_L_E_T_=' ') "
    cQuery += "JOIN "+ RetSqlName("VV0")+" VV0 ON ( VV0.VV0_FILIAL=VVA.VVA_FILIAL AND VV0.VV0_NUMTRA=VVA.VVA_NUMTRA AND VV0.D_E_L_E_T_=' ') "
    If Empty(cFilVV1)
        cQuery += "JOIN "+ RetSqlName("VV1")+" VV1 ON ( VV1.VV1_FILIAL='"+cFilVV1+"' AND VV1.VV1_CHASSI=VVA.VVA_CHASSI AND VV1.D_E_L_E_T_=' ') "
    Else
        cQuery += "JOIN "+ RetSqlName("VV1")+" VV1 ON ( VV1.VV1_FILIAL=VVA.VVA_FILIAL AND VV1.VV1_CHASSI=VVA.VVA_CHASSI AND VV1.D_E_L_E_T_=' ') "
    EndIf
    If Empty(cFilVV2)
        cQuery += "JOIN "+ RetSqlName("VV2")+" VV2 ON ( VV2.VV2_FILIAL='"+cFilVV2+"' AND VV2.VV2_CODMAR=VV1.VV1_CODMAR AND VV2.VV2_MODVEI=VV1.VV1_MODVEI AND VV2.D_E_L_E_T_=' ') "
    Else
        cQuery += "JOIN "+ RetSqlName("VV2")+" VV2 ON ( VV2.VV2_FILIAL=VVA.VVA_FILIAL AND VV2.VV2_CODMAR=VV1.VV1_CODMAR AND VV2.VV2_MODVEI=VV1.VV1_MODVEI AND VV2.D_E_L_E_T_=' ') "
    EndIf
    cQuery += "WHERE ( VVA.VVA_FILIAL<>'"+cFilVVA+"' OR VVA.VVA_NUMTRA<>'"+cNumAte+"' ) AND VVA.VVA_CHASSI='"+cChassi+"' AND VVA.VVA_ZZABER='1' AND VVA.D_E_L_E_T_=' '"
    dbUseArea( .T., "TOPCONN", TcGenQry( ,, cQuery ), cQAlAux, .F., .T. )
    If !( cQAlAux )->( Eof() )
        MsgStop("Veiculo: "+( cQAlAux )->( VV1_CODMAR )+" "+( cQAlAux )->( VV2_DESMOD )+CHR(13)+CHR(10)+;
                "Chassi: "+cChassi+CHR(13)+CHR(10)+CHR(13)+CHR(10)+;
                "Este veiculo já se encontra com outro Atendimento em Andamento."+CHR(13)+CHR(10)+CHR(13)+CHR(10)+;
                "Filial: "+( cQAlAux )->( VV9_FILIAL )+CHR(13)+CHR(10)+;
                "Numero: "+( cQAlAux )->( VV9_NUMATE )+CHR(13)+CHR(10)+;
                "Vendedor: "+( cQAlAux )->( VV0_CODVEN )+" - "+FM_SQL("SELECT VAI.VAI_NOMTEC FROM "+RetSqlName("VAI")+" VAI WHERE VAI.VAI_FILIAL='"+xFilial("VAI")+"' AND VAI.VAI_CODVEN='"+( cQAlAux )->( VV0_CODVEN )+"' AND VAI.D_E_L_E_T_=' ' "),"Atencao")
        lRet := .f.
        ( cQAlAux )->( DbSkip() )
    EndIf
    ( cQAlAux )->( DbCloseArea() )
EndIf
dbSelectArea("VV9")
Return lRet
Programa Fonte
VEIXX012
Sintaxe

VX012VAL - Validação na Seleção do Veículo no Atendimento Modelo 2 ( < xFilial("VVA")> , < cNumAte> , < VV1->VV1_CHASSI> ) --> lRet

Parâmetros:
Nome Tipo Descrição Default Obrigatório Referência
xFilial("VVA") Caracter Filial do Atendimento X
cNumAte Caracter Nro do Atendimento X
VV1->VV1_CHASSI Caracter Chassi do Veiculo X
Retorno
    lRet(logico)
  • Retorna se o veiculo pode ser selecionado na Consulta de Veiculos F7 do Atendimento Modelo 2.
Observações

Exemplos
Function VEIXX012(nTp,cFilVei,cChaInt,cCodTes,cNumAte,lFatDir)Local lRet    := .t.Local cMsg    := ""Local cLocVei := ""Local lReserv := .f.Local dDatRes := ctod("")Local cHorTmp := ""Local cQuery  := ""Local cQAlAux := "SQLAUX"Local cGruVei := left(GetMv("MV_GRUVEI")+space(10),len(SB1->B1_GRUPO))Local cBloqStat := GetNewPar("MV_BLQSTAV","LO") // Nao mostrar veiculos que estao em Atendimentos com os STATUS informados neste ParametroDefault nTp     := 1Default cFilVei := xFilial("VV1")Default cChaInt := VV1->VV1_CHAINTDefault cCodTes := ""Default lFatDir := .f.dbSelectArea("VV1")dbSetOrder(1) //Filial+ChaIntdbSeek(cFilVei+cChaInt)// Se for Finalizacao, verifica se existe VV1, // pois pode se tratar de Progresso ou venda futura If nTp == 1 // Selecao do Veiculo	If ExistBlock("VX012VAL")		lRet := ExecBlock("VX012VAL",.f.,.f.,{xFilial("VVA"),cNumAte,VV1->VV1_CHASSI})		If !lRet 			dbSelectArea("VV1")			Return(.f.)				EndIf			EndIfElseIf nTp == 2 // Validacao na Finalizacao	If !VV1->(Found())		cMsg := STR0001 // Veiculo nao cadastrado na tabela VV1!		lRet := .f.	EndIfEndIf
Variáveis
Nome Tipo Escopo Pode Alterar descrição
Array of Record Global Não