;** Veiculos *******************************************************************
;*  Manutencao Cadastro de Veiculos                                            *
;*******************************************************************************
;Autor: Visao/Vise
;Desenvolvido    : 05/12/1995 por Anivel Augusto Rodrigues
;Ultima Alteracao: 16/02/2005 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes CHAVE()
;Ultima Alteracao: 23/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Controla_Edicao
;Ultima Alteracao: 17/07/2010 por Bruno Carvalho
;Motivo Alteracao:ADD Campo RNTC Veiculo 
;Ultima Alteracao: 29/12/2010 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas
;Ultima Alteracao: 01/01/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SetaCorRegistro("Editando") 
;Ultima Alteracao: 22/07/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustado "Codigo do Veiculo" para permitir mais de 999 c¢digos 
;Ultima Alteracao: 20/02/2014 por Andrey Fillipe
;Motivo Alteracao: Criado outro Form e acrescentado mais campos
;Ultima Alteracao: 01/04/2014 por Andrey Fillipe
;Motivo Alteracao: Adicionado Campos (Descricao_Rodado_Veiculo e Descricao_Carroc_Veiculo)
;Ultima Alteracao: 15/04/2014 por Andrey Fillipe
;Motivo Alteracao: Ajustes para aceitar Letras no codigo do veiculo
;Ultima Alteracao: 08/07/2014 por Kamila Gomes          
;Motivo Alteracao: Ajustes Campo Codigo_da_Transportadora 
;Ultima Alteracao: 14/03/2016 por Bruno Carvalho          
;Motivo Alteracao: Cliente #0121# -> Ajustes na PLACA DO VEICULO E RNTC
;                                    ** Removido a PICTURE do campo da PLACA na tabela VEICULOS >> APENAS << deste Cliente.        
;Ultima Alteracao: 15/05/2017 por Kamila Gomes          
;Motivo Alteracao: Adicionado campo [CGC_CIOT Veiculo]  para MDFE 3.0   
;Ultima Alteracao: 06/10/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Placa campo livre de digita‡Æo sem valida‡Æo

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()
While True
  Moveto [Codigo do Veiculo]
  End
  COD=[Codigo do Veiculo]
  If OPCAO_FORM="F"
     Then Down
     Else PgDn
  EndIf
  Moveto [Codigo do Veiculo]

  SetaCorRegistro("Editar")
  While true

  TECLA=""
  AguardaTeclasPadrao()

    Switch
      Case RetVal=-33 : SemFuncoes()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F3": 
           If OPCAO_FORM="F"
              Then OPCAO_FORM="1"
              Else OPCAO_FORM="F"
           EndIf
           Del
           CHAVE=5
           Return
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           While True
             If OPCAO_FORM="F"
                Then PAGINA("Veiculos","MR")
                Else PAGINA("Veiculos","MT")
             EndIf
             If EDITAR="S"
                Then COD=[Codigo do Veiculo]
                     CHAVE=0
                     PickForm "1"
                     Controla_EdicaoC()
                Else If EXCLUIR="S"
                        Then If QuerExcluir("")
                                Then PickForm "1"
                                     del
                                Else UnLockRecord
                             EndIf
                             If OPCAO_FORM="F"
                                Then PickForm "F"
                                Else PickForm "1"
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case Retval="ESC":
           CHAVE=9
           Del
           Return
      Case RetVal="ENTER":  
           If Not IsBlank([]) Then COD=[] EndIf
           COD=Checa_Codigo(COD)
           If COD="" Then QuitLoop EndIf
           []=COD
           Del
           PickForm "1"
           Locate COD
           If Retval
              Then CHAVE=0
              Else CHAVE=1
                   End PgDn
                   [Codigo do Veiculo]=COD
           
           EndIf
           If IsLockRecord()
              Then If OPCAO_FORM="F"
                      Then PickForm "F"
                           QuitLoop
                   EndIf
           EndIf
           Return
      EndSwitch
  EndWhile
EndWhile

EndProc  ; (CHAVE)

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITA()

Moveto [Placa do Veiculo]
While True

      TECLA=" Esc=Retornar  "
      If Field()="UF Veiculo" Or Field()="Codigo_da_Transportadora" Or Field()="Codigo do Condutor"  
         Then TECLA=TECLA+"F1=Tabelas  "
      EndIf

      If CHAVE=0
         Then TECLA=TECLA+"Del=Excluir  PgDn=Finalizar  "
         Else TECLA=TECLA+"PgDn=Finalizar  "
      EndIf

      Prompt TECLA

      MSGCAMPO=""
      Switch
        Case Field()="RNTC Veiculo"            : MSGCAMPO="Registro Nacional de Transportadores Rodovi rios de Carga"      
        Case Field()="CIOT Veiculo"            : MSGCAMPO="C¢digo Identificador da Opera‡Æo de Transporte"
        Case Field()="CGC_CIOT Veiculo"        : MSGCAMPO="CNPJ/CPF respons vel pela gera‡Æo do CIOT"
        Case Field()="Tipo de Rodado Veiculo"  : MSGCAMPO="01-Truck  02-Toco  03-Cavalo Mecƒnico  04-Van  05-Utilit rio  06-Outros(Ve¡culo de Reboque)"
        Case Field()="Tipo Carroceria Veiculo" : MSGCAMPO="00-NÆo Aplic vel  01-Aberta  02-Fechada/Ba£ 03-Granelera  04-Porta Container  05-Sider"
      EndSwitch                                     

      Wait Field
           MESSAGE MSGCAMPO
           Until "ESC","ENTER","DEL","FIELDVIEW","F35","F1","PGDN"

      Switch
      Case Retval="F1":   
           If Field()="UF Veiculo" Or Field()="Codigo_da_Transportadora" Or Field()="Codigo do Condutor" 
              Then If ConsultaF1()
                      Then If Field()="Codigo_da_Transportadora"
                              Then [Nome_Fantasia_Transport]=Reg_ConsultaF1["Nome Fantasia Transport"]
                           EndIf
                   EndIf
           EndIf
           If Field()="Tipo de Rodado Veiculo"
              Then ShowPopup " Tipo de Rodado " CENTERED
                   "~01~ - Truck          " : "Truck          " : "01",
                   "~02~ - Toco           " : "Toco           " : "02",
                   "~03~ - Cavalo Mecƒnico" : "Cavalo Mecƒnico" : "03",
                   "~04~ - VAN            " : "VAN            " : "04",
                   "~05~ - Utilit rio     " : "Utilit rio     " : "05",
                   "~06~ - Outros         " : "Outros         " : "06",
                   "~S~air                " : "Ignorar op‡äes " : "CANCELAR"
                   EndMenu
                   To MenuVar
                   If MenuVar<>"CANCELAR" And MenuVar<>"Esc"
                       Then []=MenuVar
                   EndIf                                                    
                   Switch
                     Case [Tipo de Rodado Veiculo] = "01" : [Descricao_Rodado_Veiculo]="TRUCK" 
                     Case [Tipo de Rodado Veiculo] = "02" : [Descricao_Rodado_Veiculo]="TOCO"
                     Case [Tipo de Rodado Veiculo] = "03" : [Descricao_Rodado_Veiculo]="CAVALO MECANICO"
                     Case [Tipo de Rodado Veiculo] = "04" : [Descricao_Rodado_Veiculo]="VAN"
                     Case [Tipo de Rodado Veiculo] = "05" : [Descricao_Rodado_Veiculo]="UTILITARIO"
                     Case [Tipo de Rodado Veiculo] = "06" : [Descricao_Rodado_Veiculo]="OUTROS"
                   EndSwitch
           EndIf
           If Field()="Tipo Carroceria Veiculo"
              Then ShowPopup " Tipo Carroceria Veiculo " CENTERED
                   "~00~ - NÆo Aplic vel  " : "NÆo Aplic vel  " : "00",
                   "~01~ - Aberta         " : "Aberta         " : "01",
                   "~02~ - Fechada/Ba£    " : "Fechada/Ba£    " : "02",
                   "~03~ - Granelera      " : "Granelera      " : "03",
                   "~04~ - Porta Container" : "Porta Container" : "04",
                   "~05~ - Sider          " : "Sider          " : "05",
                   "~S~air                " : "Ignorar op‡äes " : "CANCELAR"
                   EndMenu
                   To MenuVar
                   If MenuVar<>"CANCELAR" And MenuVar<>"Esc"
                       Then []=MenuVar
                   EndIf                                                    
                   Switch
                     Case [Tipo Carroceria Veiculo] = "00" : [Descricao_Carroc_Veiculo]="NAO APLICAVEL" 
                     Case [Tipo Carroceria Veiculo] = "01" : [Descricao_Carroc_Veiculo]="ABERTA"
                     Case [Tipo Carroceria Veiculo] = "02" : [Descricao_Carroc_Veiculo]="FECHADA/BAU"
                     Case [Tipo Carroceria Veiculo] = "03" : [Descricao_Carroc_Veiculo]="GRANELERA"
                     Case [Tipo Carroceria Veiculo] = "04" : [Descricao_Carroc_Veiculo]="PORTA CONTAINER"
                     Case [Tipo Carroceria Veiculo] = "05" : [Descricao_Carroc_Veiculo]="SIDER"
                   EndSwitch
           EndIf
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case RetVal="DEL" :
           If CHAVE=0
              Then If QuerExcluir("")
                      Then del
                           QuitLoop
                   EndIf
           EndIf
      Case Retval="PGDN":
           If IsBlank([Placa do Veiculo]) Or
              IsBlank([UF Veiculo]) Or
              IsBlank([Tara em KG Veiculo]) Or
              IsBlank([Tipo de Rodado Veiculo]) Or
              IsBlank([Tipo Carroceria Veiculo])
              Then Loop
              Else CHAVE=9
                   QuitLoop
           EndIf        
      Case Retval="ESC":
           Switch
              Case Field()="Placa do Veiculo"         :   
                   If QuerDesfazer("")
                      Then If CHAVE=1
                              Then Del
                              Else If RecordStatus("Modified")
                                      Then Undo
                                   EndIf
                           EndIf
                           CHAVE=9
                           QuitLoop
                   EndIf
              Case Field()="UF Veiculo"               : Moveto [Placa do Veiculo] 
              Case Field()="RNTC Veiculo"             : Moveto [UF Veiculo]
              Case Field()="CIOT Veiculo"             : Moveto [RNTC Veiculo] 
              Case Field()="CGC_CIOT Veiculo"         : Moveto [CIOT Veiculo]
              Case Field()="Tara em KG Veiculo"       : Moveto [CGC_CIOT Veiculo]
              Case Field()="Capacidade em KG Veiculo" : Moveto [Tara em KG Veiculo]
              Case Field()="Capacidade em M3 Veiculo" : Moveto [Capacidade em KG Veiculo]
              Case Field()="Tipo de Rodado Veiculo"   : Moveto [Capacidade em M3 Veiculo]
              Case Field()="Tipo Carroceria Veiculo"  : Moveto [Tipo de Rodado Veiculo]
              Case Field()="Codigo_da_Transportadora" : Moveto [Tipo Carroceria Veiculo]
              Case Field()="Codigo do Condutor"       : Moveto [Codigo_da_Transportadora]
              OtherWise                               : Left
           EndSwitch
      Case Retval="ENTER":
           Switch
              Case Field()="Placa do Veiculo"         :  
                   If IsBlank([Placa do Veiculo])
                      Then Loop
                      Else Moveto [UF Veiculo]
                   EndIf
              Case Field()="UF Veiculo"               : 
                   If IsBlank([UF Veiculo])
                      Then Loop
                      Else Moveto [RNTC Veiculo]
                   EndIf 
              Case Field()="RNTC Veiculo"             : 
                   If SYS_CODIGO_CLIENTE = "0121"
                      Then Moveto [CIOT Veiculo]
                      Else If IsBlank([RNTC Veiculo]) Or Len([RNTC Veiculo])=8
                              Then Moveto [CIOT Veiculo]
                              Else Mensagem("O RNTRC do Ve¡culo tem que conter 8 n£meros")
                           EndIf
                   EndIf
              Case Field()="CIOT Veiculo"             : 
                   If IsBlank([CIOT Veiculo]) 
                      Then Moveto [Tara em KG Veiculo]
                      Else If Len([CIOT Veiculo])=12
                              Then Moveto [CGC_CIOT Veiculo] 
                              Else Mensagem("O CIOT do Ve¡culo tem que conter 12 n£meros")
                           EndIf 
                   EndIf
              Case Field()="CGC_CIOT Veiculo"             : 
                   If IsBlank([CGC_CIOT Veiculo]) 
                      Then Mensagem("O CNPJ/CPF respons vel pelo CIOT deve ser informado !")
                      Else If Checa_CGC_CPF_Formatado([CGC_CIOT Veiculo]) 
                              Then Moveto [Tara em KG Veiculo] 
                           EndIf
                   EndIf
              Case Field()="Tara em KG Veiculo"       : 
                   If IsBlank([Tara em KG Veiculo])
                      Then Loop
                      Else Moveto [Capacidade em KG Veiculo]
                   EndIf
              Case Field()="Capacidade em KG Veiculo" : Moveto [Capacidade em M3 Veiculo]
              Case Field()="Capacidade em M3 Veiculo" : Moveto [Tipo de Rodado Veiculo]
              Case Field()="Tipo de Rodado Veiculo"   : 
                   Switch
                      Case [Tipo de Rodado Veiculo] = "01" : [Descricao_Rodado_Veiculo]="TRUCK" 
                      Case [Tipo de Rodado Veiculo] = "02" : [Descricao_Rodado_Veiculo]="TOCO"
                      Case [Tipo de Rodado Veiculo] = "03" : [Descricao_Rodado_Veiculo]="CAVALO MECANICO"
                      Case [Tipo de Rodado Veiculo] = "04" : [Descricao_Rodado_Veiculo]="VAN"
                      Case [Tipo de Rodado Veiculo] = "05" : [Descricao_Rodado_Veiculo]="UTILITARIO"
                      Case [Tipo de Rodado Veiculo] = "06" : [Descricao_Rodado_Veiculo]="OUTROS"
                      OtherWise                            :
                           [Tipo de Rodado Veiculo  ]= ""
                           [Descricao_Rodado_Veiculo]=""
                           Loop
                   EndSwitch
                   Moveto [Tipo Carroceria Veiculo]
              Case Field()="Tipo Carroceria Veiculo"  : 
                   Switch
                      Case [Tipo Carroceria Veiculo] = "00" : [Descricao_Carroc_Veiculo]="NAO APLICAVEL" 
                      Case [Tipo Carroceria Veiculo] = "01" : [Descricao_Carroc_Veiculo]="ABERTA"
                      Case [Tipo Carroceria Veiculo] = "02" : [Descricao_Carroc_Veiculo]="FECHADA/BAU"
                      Case [Tipo Carroceria Veiculo] = "03" : [Descricao_Carroc_Veiculo]="GRANELERA"
                      Case [Tipo Carroceria Veiculo] = "04" : [Descricao_Carroc_Veiculo]="PORTA CONTAINER"
                      Case [Tipo Carroceria Veiculo] = "05" : [Descricao_Carroc_Veiculo]="SIDER"
                      OtherWise                             :
                           [Tipo Carroceria Veiculo ]= ""
                           [Descricao_Carroc_Veiculo]=""
                           Loop
                   EndSwitch
                   Moveto [Codigo_da_Transportadora]
              Case Field()="Codigo_da_Transportadora" : 
                   If Not IsBlank([Codigo_da_Transportadora])
                      Then GetRecord "\\Sistemas\\Vendas\\Transpor" [Codigo_da_Transportadora] To NOME 
                           If Retval 
                              Then [Nome_Fantasia_Transport] = NOME["Nome Fantasia Transport"]
                              Else [Nome_Fantasia_Transport]=""
                           EndIf 
                      Else [Nome_Fantasia_Transport]=""
                   EndIf
                   Moveto [Codigo do Condutor]
              Case Field()="Codigo do Condutor"       : 
                   If IsBlank([Codigo do Condutor])
                      Then [Nome do Condutor]=""
                   EndIf   
                   Moveto [Placa do Veiculo]  
              OtherWise                               : Right
           EndSwitch
      EndSwitch
EndWhile
EndProc

;*******************************************************************************
;* Rotina para Checagem do C¢digo                                              *
;*******************************************************************************
Proc Checa_Codigo(COD)
Private COD

If Not IsBlank(Cod)
   Then Cod=AlinhO(Cod)
   Else COD="0" 
EndIf  

If []="" Or COD="0"
   Then COD=Novo_Codigo(AlinhM(COD,3))
EndIf   

Return COD

EndProc ;Checa_Codigo 

;******************************************************************************
;** Rotina Alinhamento Especial Codigo Destinat Letras e Numeros            ***
;******************************************************************************
proc AlinhO(Vr)
Private Vr

If Len(vr)<3 And SubStr(vr,1,1)>"9"
   Then vr=SubStr(vr,1,1)+AlinhM(SubStr(vr,2,2),2)     
   Else vr=AlinhM(vr,3)			   
EndIf	  
Return Vr

EndProc ;AlinhO()

;*******************************************************************************
;* Rotina para Criar Novo C¢digo                                               *
;*******************************************************************************
Proc Novo_Codigo(COD)
Private COD

Vr=SubStr(COD,1,1)
If vr>"9" or COD="999"
   Then If SubStr(COD,2,2)="99"
	         Then Switch
					        Case vr="9" : COD="A00"
					        Case vr="Z" : Mensagem("Fim de codigo disponivel !")
                                COD=""
					        OtherWise   : COD=Chr(asc(vr)+1)+"00"
					      EndSwitch
					 Else cod=vr+AlinhM(StrVal(NumVal(SubStr(cod,2,2))+1),2)     
				EndIf	      
   Else cod=AlinhM(StrVal(NumVal(cod)+1),3)
EndIf

Return COD 

EndProc;Checa_Codigo()

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
DIGITA()
Moveto "Veiculos"
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM="F"
   Then PickForm "F"
EndIf
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
SYS_VALOR()
CoEdit "Veiculos"
PickForm "F"
OPCAO_FORM="F"
While True
  CHAVE()
  If CHAVE=9
     Then QuitLoop
  EndIf
  If CHAVE=5
     Then If OPCAO_FORM="1"
             Then PickForm "1"
             Else PickForm "F"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
