;** Manifesto ******************************************************************
;* Digitacao de Ordem de Manifesto                                             *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 08/04/2014 por Andrey Fillipe
;Ultima Alteracao: 21/05/2014 por Andrey Fillipe          
;Motivo Alteracao: Ajustes para deixar alterar a data de emissao
;Ultima Alteracao: 23/05/2014 por Andrey Fillipe          
;Motivo Alteracao: Ajustes opcao de Encerramento 
;Ultima Alteracao: 26/06/2014 por Kamila Gomes          
;Motivo Alteracao: Ajustes para buscar as informa‡Æo no BD ao inves do .ini   
;Ultima Alteracao: 08/07/2014 por Kamila Gomes          
;Motivo Alteracao: Ajustes Campo Codigo_da_Transportadora 
;Ultima Alteracao: 09/07/2014 por Andrey Fillipe          
;Motivo Alteracao: Ajustes consulta "F3" e "F7"  
;Ultima Alteracao: 17/09/2014 por Andrey Fillipe          
;Motivo Alteracao: Adicionado Proc BUSCA_NOTAS(), Seleciona_Notas(), F4 Selecionar e F5 Limpar
;Ultima Alteracao: 02/10/2014 por Andrey Fillipe          
;Motivo Alteracao: Ajustes de Verifica‡ao de notas fiscais ja lancadas em outro MDFE
;Ultima Alteracao: 21/10/2014 por Andrey Fillipe          
;Motivo Alteracao: Ajustes para deixar pegar notas fiscais lancadas em MDFE cancelados
;Ultima Alteracao: 13/04/2016 por Kamila Gomes          
;Motivo Alteracao: Ajustes Dialog Seleciona Notas (F4)
;Ultima Alteracao: 09/07/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes procedimentos padrÆo, NF-e livre, pre-visualiza‡Æo
;Ultima Alteracao: 17/07/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes valor nota fiscal NF-e livre, desabilitar pre-visualiza‡Æo
;Ultima Alteracao: 03/08/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes totalizador de documento e modelo de documento
;Ultima Alteracao: 16/03/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtrar carregamento busca notas    
;Ultima Alteracao: 15/05/2017 por Kamila Gomes
;Motivo Alteracao: Ajustes MDFE 3.0               
;Ultima Alteracao: 27/09/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes validar uf de carregamento/descarregamento
;Ultima Alteracao: 07/06/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado/ajustado Grava_LogEx() p/ gravar log de erros ao excluir registros
;Ultima Alteracao: 02/10/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes lancamento sequencial e dados usuario  
;Ultima Alteracao: 09/08/2019 por Kamila Gomes
;Motivo Alteracao: Ajustes Consulta status e documento no EDOC
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Alterado Monta_Lista_Array() p/ Monta_Lista_Array_MDFE()
;                           MLA_SD_Dialog() p/ MLA_SD_Dialog_MDFE()        
;                           MLA_Add_Rem_Registro() p/ MLA_Add_Rem_Registro_MDFE()
;                           MLA_Monta_Tela() p/ MLA_Monta_Tela_MDFE() 
;Ultima Alteracao: 24/12/2019 por Bruno Carvalho
;Motivo Alteracao: Adicionado Bib_Proc

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE_C()

INICIO_PAGINA=True
While True
  Moveto [Numero da OM]
  End
  COD=[Numero da OM]
  Moveto [Numero da OM]
  If OPCAO_FORM="F"
     Then Down
     Else CtrlPgDn
  EndIf
  Moveto [Numero da OM]
  
  SetaCorRegistro("Editar")
  While true

    TECLA=""
    MSGCAMPO=""
    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
           CHAVEC=5
           Return
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME": 
           INICIO_PAGINA=True
           While True
             If OPCAO_FORM="F"
                Then PAGINA("Mdfe_C","MR")
                Else PAGINA("Mdfe_C","MT")
             EndIf
             If EDITAR="S"
                Then INICIO_PAGINA=True 
                     COD=[Numero da OM]
                     CHAVEC=0
                     PickForm "1"
                     Controla_EdicaoC()
                Else If EXCLUIR="S"
                        Then If Not IsBlank([Numero do Documento])
                                Then Mensagem("Esta Ordem de Manifesto n„o pode ser excluida !// J  Gerou Manifesto N§ "+[Numero do Documento])
                                     UnLockRecord
                                Else If QuerExcluir("")
                                        Then GRAVA_LOG=True
                                             EXCLUSAO()
                                        Else UnLockRecord
                                     EndIf
                                     If OPCAO_FORM="F"
                                        Then PickForm "F"
                                     EndIf
                             EndIf        
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case Retval="ESC":
           CHAVEC=9
           Del
           Return
      Case RetVal="ENTER":  
         If Numero_Lancamento("","F")
            Then COD = PROXLANCTO_NLANC
                 Release Vars PROXLANCTO_NLANC  
            Else QuitLoop
         EndIf
         PickForm "1"    
         Moveto [Numero da OM]
         If PROXIMO_LANCTO_REG_ACHOU
            Then CHAVEC=0
                 If Checa_Controle([Numero_Controle_Dia])
                    Then Return
                 EndIf
            Else CHAVEC=1
                 If Checa_Controle(SYS_CONTROLE_DIA)
                    Then Controle_Dia()
                         Return         
                 EndIf                  
         EndIf         
         If CHAVEC=1
            Then Del
         EndIf
         If OPCAO_FORM="F"
            Then PickForm "F"
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile

EndProc  ; (CHAVE_C)

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

Moveto "Mdfe_C"
[Sequencia do Documento]=blanknum()

REEMITIR = False
If INICIO_PAGINA
   Then
        If Not IsBlank(SYS_EMPRESA_DEFAULT) And CHAVEC=1
           Then [Codigo da Empresa]=SYS_EMPRESA_DEFAULT
        EndIf
        If Not IsBlank([Codigo da Empresa])
           Then If Not Carrega_Parametros()
                   Then If CHAVEC=1
                           Then Del
                        EndIf
                        CHAVEC=9
                        Return
                EndIf
                If CHAVEC=1
                   Then [Codigo da Empresa       ]=PARAM_EMPRESA
                EndIf
        EndIf

        If Not IsBlank([Numero do Documento])
           Then
                Switch 
                  ;-- Tratando MDFe ----------------------------------------------------------
                  Case SubStr([Mdfe_C->Situacao],1,1)="n" Or  
                       SubStr([Mdfe_C->Situacao],1,1)="s" :
                       
                       MDFEFISC =[Numero do Documento]
                       CODFISC  =[Docto Manifesto    ]
                       SERIEFISC=[Serie do Documento ]
                          
                       If [Mdfe_C->Situacao]="n!" Or ; MDFe j  emitido, autorizado e encerrado
                          [Mdfe_C->Situacao]="s!" 
                          Then 
                               Echo Normal
                               Echo Off
                               OpcaoC="Cancelar"
        
                               ShowPopup " Op‡”es " CENTERED
                                   "~C~ancelar" : " Cancelar MDFe "+[Mdfe_C->Numero do Documento]  :"Cancelar",
                                   "~E~ncerrar" : " Encerrar MDFe "+[Mdfe_C->Numero do Documento]  :"Encerrar",
                                   Separator,
                                   "~S~air"     : " Ignorar op‡äes"                                  :"Cancela"
                               EndMenu
                               To OpcaoC
        
                               echo off
                                   
                               If Not Retval Or Opcaoc="Cancela" Or Opcaoc="Esc"
                                  Then CHAVEC=9
                                       Return
                               EndIf
                          
                               Switch
                                  Case OpcaoC = "Cancelar" :
                                  
                                       MSG="MDFe "+MDFEFISC+" j„ foi enviado e autorizado no SEFAZ !"
                                       MSG=MSG+"// //Deseja CANCELAR o Manifesto?"
                                       If Not ConfGeral_N(MSG)
                                         Then CHAVEC=9
                                              Return
                                       EndIf        
        
                                       COR_MENSAGEM="ALERTA" 
                                       MSG="Deseja realmente CANCELAR esse Manifesto?"
                                       If Not ConfGeral_N(MSG)
                                          Then CHAVEC=9
                                               Return
                                       EndIf        
                                       Release Vars COR_MENSAGEM
        
                                       If PARAM_BLOQUEIA_CANCEL<>"N" 
                                          Then If Not CHECA_SUPERVISOR()
                                                  Then Mensagem("BLOQUEADO, Cancelamento nÆo permitido !")
                                                       CHAVEC=9
                                                       Return
                                               EndIf
                                       EndIf      
                                       
                                       OpcaoC="MDFe"
                                       CANC = True
                                       If mdfeAutorizada("Consulta") 
                                          Then
                                               If Not cancelada
                                                  Then Mensagem("Manifesto AUTORIZADO no SEFAZ. // Primeiro, efetue o Cancelamento no MANAGER EDOC !")
                                                  Else TIPO="CANCELAR"
                                                       Play "MDF_DESF"
                                               EndIf
                                      EndIf        
                                      CHAVEC=9
                                      Return
                                  
                                  Case OpcaoC = "Encerrar" :
                                       
                                       MSG="MDFe "+MDFEFISC+" j„ foi enviado e autorizado no SEFAZ !"
                                       MSG=MSG+"// //Deseja ENCERRAR o Manifesto?"
                                       If Not ConfGeral_N(MSG)
                                         Then CHAVEC=9
                                              Return
                                       EndIf
                                       
                                       If PARAM_BLOQUEIA_CANCEL<>"N" 
                                          Then If Not CHECA_SUPERVISOR()
                                                  Then Mensagem("BLOQUEADO, Encerramento nÆo permitido !")
                                                       CHAVEC=9
                                                       Return
                                               EndIf
                                       EndIf      
                                       ENCE = True
                                       If mdfeAutorizada("Consulta") 
                                          Then
                                               If Not encerrada
                                                  Then Mensagem("Manifesto AUTORIZADO no SEFAZ. // Primeiro, efetue o Encerramento no MANAGER EDOC !")
                                                  Else [Mdfe_C->Situacao]="E"
                                                       CHAVEC=9
                                                       Return
                                               EndIf
                                      EndIf        
                                      CHAVEC=9
                                      Return
                                       
                               EndSwitch   
                          
                       EndIf
                       
                       If [Mdfe_C->Situacao]="E"  ; MDFe j  autorizado e encerrado
                          Then 
                               MSG="MDFe "+MDFEFISC+" j„ foi autorizado e encerrado no SEFAZ !"
                               CHAVEC=9
                               Return
                       EndIf
                       
                       If mdfeAutorizada("Consulta")
                          Then CHAVEC=9
                               Return
                          Else
                               Echo Normal
                               Echo Off
                               OpcaoC="Reenviar"
        
                               ShowPopup " Op‡”es " CENTERED
                                   "~R~eenviar" : " Reenviar MDFe "+[Mdfe_C->Numero do Documento]          :"Reenviar",
                                   "~A~lterar"  : " Alterar/Reenviar MDFe "+[Mdfe_C->Numero do Documento]  :"Alterar",
                                   "~D~esfazer" : " Desfazer MDFe "+[Mdfe_C->Numero do Documento]+" gerada, para gerar outro numero/modo":"Desfazer",
                                     Separator,
                                     "~S~air"   : " Ignorar op‡äes"                                        :"Cancela"
        
                               EndMenu
                               To Opcaoc
        
                               echo off
                                   
                               If Not Retval Or Opcaoc="Cancela" or Opcaoc="Esc"
                                  Then CHAVEC=9
                                       Return
                               EndIf
        
                                If Opcaoc="Desfazer"
                                   Then 
                                        MSG="Para desfazer este MDFe "+MDFEFISC+" gerada em modo "
                                        Switch
                                          Case SubStr([Mdfe_C->Situacao],1,1)="n" : MSG=MSG+"NORMAL"
                                          Case SubStr([Mdfe_C->Situacao],1,1)="s" : MSG=MSG+"CONTINGENCIA"
                                        EndSwitch
                                        MSG=MSG+",// voce deve primeiramente:// //"
                                        MSG=MSG+"- RESOLVER a situa‡„o do MDFe no manager;          //"
                                        MSG=MSG+"- Se poss¡vel DESFAZER o MDFe no manager;          // //"
                                        MSG=MSG+"- Desfazer o MDFe gerada neste Sistema;            //"
                                        MSG=MSG+"- Verificar/Corrigir o n£mero da pr¢xima MDFe a ser//"
                                        MSG=MSG+"  gerada, no modo NORMAL/CONTINGENCIA conforme necess rio. // //"
                                        If ConfGeral_N(MSG+"Deseja realmente desfazer ?")
                                          Then COR_MENSAGEM="ALERTA" 
                                               MSG="Deseja realmente DESFAZER esse MDFe ?"
                                               If ConfGeral_N(MSG)
                                                  Then TIPO="DESFAZER"
                                                       Play "MDF_DESF"     
                                               EndIf
                                        EndIf               
                                        CHAVEC=9
                                        Return
                                EndIf   
        
                                If ModoMDFe="NORMAL" And [Mdfe_C->Situacao]="s"
                                   Then Mensagem("Reenvio em modo NORMAL do MDFe "+MDFEFISC+" n„o ‚ poss¡vel !// //O mesmo J  foi enviado em modo CONTINGENCIA !") 
                                        CHAVEC=9
                                        Return
                                EndIf    
                         
                                If ModoMDFe="CONTINGENCIA" And [Mdfe_C->Situacao]="n"
                                   Then Mensagem("Reenvio em modo CONTINGENCIA do MDFe "+MDFEFISC+" n„o ‚ poss¡vel !// //O mesmo J  foi enviado em modo NORMAL !") 
                                        CHAVEC=9
                                        Return
                                EndIf    
                          
                                If Opcaoc="Reenviar"
                                   Then Moveto "Mdfe_C"
                                        REEMITIR=True
                                        CONFIMPRIME()
                                        Return
                                EndIf
                                
                       EndIf
                  OtherWise:                           
                    ;-- Tratando outros documentos ----------------------------------------------------------
                    DoctoGerado=[Docto Manifesto]+"/"+[Numero do Documento]+"-"+[Serie do Documento]
                    
                    Switch
                      Case SubStr([Mdfe_C->Situacao],1,1)="C" :
                           MSG="Esta ordem de manifesto gerou o documento:// //"
                           MSG=MSG+DoctoGerado+"// //"
                           MSG=MSG+"Documento com situa‡Æo: CANCELADO !"
                           Mensagem(MSG)
                           CHAVEC=9
                           Return
                      Case SubStr([Mdfe_C->Situacao],1,1)="E" :
                           MSG="Esta ordem de manifesto gerou o documento:// //"
                           MSG=MSG+DoctoGerado+"// //"
                           MSG=MSG+"Documento com situa‡Æo: ENCERRADA !"
                           Mensagem(MSG)
                           CHAVEC=9
                           Return
                    EndSwitch
                EndSwitch
        EndIf
EndIf

If CHAVEC=0 Or Not INICIO_PAGINA
   Then Switch
           Case IsBlank([Numero do Documento]): Moveto [Codigo da Empresa]
           OtherWise                          : Moveto [Data de Emissao  ]
        EndSwitch
   Else [Data de Emissao         ] = Today()
        [Hora de Emissao         ] = Time()
        [Modalidade de Transporte] = "1" 
        [Descricao Modalidade    ]="RODOVIARIO"
        Moveto [Codigo da Empresa]
EndIf

INICIO_PAGINA=False
UF_ANT = [UF Descarregamento]
SetaCorRegistro("Editar")   
While True
      TECLA=" Esc=Retornar  "
      If Field()="UF Carregamento" Or  
         Field()="UF Descarregamento"  
         Then TECLA=TECLA+"Alt+F=Fun‡äes                                     PgDn  "
         Else TECLA=TECLA+"                                                  PgDn  "
      EndIf
      
      PROMPT TECLA
  
      MSGCAMPO=Field()
      Switch
        Case Field()="Data de Emissao"          : MSGCAMPO="Data de EmissÆo"      
        Case Field()="Hora de Emissao"          : MSGCAMPO="Hora de EmissÆo"
        Case Field()="Modalidade de Transporte" : MSGCAMPO="1-Rodovi rio "
        Case Field()="UF Carregamento"          : MSGCAMPO="UF de Carregamento"
        Case Field()="UF Descarregamento"       : MSGCAMPO="UF de Descarregamento"
      EndSwitch                                     

      If Field()="Codigo da Empresa" Or 
         Field()="UF Carregamento" Or  
         Field()="Modalidade de Transporte"Or
         Field()="UF Descarregamento" 
         Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
      EndIf

      Wait Field
           Until "F1","F3","F4","F6","F7","F9","ESC","ENTER","DEL","FIELDVIEW","F35","PGDN",-33

      If RetVal=-33  
         Then 
              If Field()="UF Carregamento" Or 
                 Field()="UF Descarregamento" 
                 Then MSGCAMPO=""
                 
                      ShowPopup " Fun‡”es " CENTERED
                      "F3  UF's de Percursos"       : " UF's de Percursos"       : "F3",
                      "F4  Ve¡culos Tra‡Æo/Reboque" : " Ve¡culos Tra‡Æo/Reboque" : "F4",
                      "F6  Condutores"              : " Condutores"              : "F6",
                      "F7  Vale Ped gio"            : " Vale Ped gio"            : "F7",
                      "~C~ancelar"                  : " Cancelar a Opera‡Æo"     : "CANCELAR"
                      EndMenu
                      To MenuVar
                      echo off
         
                      If MenuVar="CANCELAR" or MenuVar="Esc"
                         Then Loop
                      EndIf
                      RetVal=MenuVar
              EndIf     
      EndIf     
      
      Switch
        Case Retval="F1":
             If Field()="Codigo da Empresa" Or 
                Field()="UF Carregamento" Or
                Field()="UF Descarregamento" 
                Then ConsultaF1()
             EndIf
             If Field()="Modalidade de Transporte"
                Then MSGCAMPO=""
                     
                     ShowPopup " Modalidade " CENTERED
                     "~1~-Rodovi rio" : " Rodovi rio    " : "1",
                     "~S~air        " : " Ignorar op‡äes" : "CANCELAR"
                     EndMenu
                     To MenuVar
                     If MenuVar<>"CANCELAR" And MenuVar<>"Esc"
                         Then []=MenuVar
                     EndIf                                                    
                     Switch
                       Case [Modalidade de Transporte] = "1" : [Descricao Modalidade]="RODOVIARIO"  
                     EndSwitch
             EndIf
        Case RetVal="F3":        
             If Field()="UF Carregamento" Or Field()="UF Descarregamento"
                Then DIGITA_ARRAY("UF")
                     Loop
             EndIf
        Case RetVal="F4" Or RetVal="F6" Or RetVal="F7":         
             If Field()="Codigo da Empresa" Or  
  	            Field()="Data de Emissao"   Or
          	    Field()="Hora de Emissao"   Or
                Field()="Modalidade de Transporte"
                Then Loop
                Else If IsBlank([UF Carregamento]) Or
                        IsBlank([UF Descarregamento]) 
                        Then Loop
                        Else Controla_Pagina1(RetVal)
                     EndIf
             EndIf
        Case Retval="PGDN":         
             If Field()="Codigo da Empresa" Or  
  	            Field()="Data de Emissao"   Or
          	    Field()="Hora de Emissao"   Or
                Field()="Modalidade de Transporte"
                Then Loop
                Else If IsBlank([UF Carregamento]) Or
                        IsBlank([UF Descarregamento]) 
                        Then Loop
                        Else PickForm "1"
                             Moveto "Mdfe_rvr"
                             If RecordStatus("New")=True   
                                Then Mensagem("Ve¡culo de Tra‡Æo nÆo Cadastrado !") 
                                     Moveto "Mdfe_c"
                                     Loop
                                Else Moveto "Mdfe_rvc"
                                     If RecordStatus("New")=True
                                        Then Mensagem("Condutor nÆo Cadastrado !") 
                                  	         Moveto "Mdfe_c"
                                             Loop
                                        Else CHAVEC=3                                                                                 
                                             Moveto "Mdfe_c"
                                             QuitLoop
                                     EndIf
                             EndIf
                     EndIf
             EndIf
        Case Retval="FIELDVIEW" or Retval="F35":
             EDITFIELD()
        Case RetVal="DEL" :
             If CHAVEC=0
                Then If Not IsBlank([Numero do Documento])
                        Then Mensagem("Esta Ordem de Manifesto n„o pode ser excluida !// J  Gerou Manifesto N§ "+[Numero do Documento])
                        Else If QuerExcluir("")
                                Then Del
                                     QuitLoop
                             EndIf
                     EndIf
             EndIf
        Case Retval="ESC":        
             Switch
                Case Field()="Codigo da Empresa" :   
                     If QuerDesfazer("")
                        Then If CHAVEC=1
                                Then Del
                                Else If RecordStatus("Modified")
                                        Then Undo
                                     EndIf
                             EndIf
                             CHAVEC=9
                             QuitLoop
                     EndIf
                Case Field()="Data de Emissao"          :  
                     If IsBlank([Numero do Documento])
                        Then Moveto [Codigo da Empresa]
                        Else If QuerDesfazer("")
                                Then If CHAVEC=1
                                        Then Del
                                        Else If RecordStatus("Modified")
                                                Then Undo
                                             EndIf
                                     EndIf
                                     CHAVEC=9
                                     QuitLoop
                             EndIf
                     EndIf 
                Case Field()="Hora de Emissao"          : Moveto [Data de Emissao]
                Case Field()="Modalidade de Transporte" : Moveto [Hora de Emissao] 
                     If IsBlank([Modalidade de Transporte])
                        Then [Descricao Modalidade    ]=""
                     EndIf 
                Case Field()="UF Carregamento"          : Moveto [Data de Emissao]
                Case Field()="UF Descarregamento"       : Moveto [UF Carregamento]
                OtherWise                               : Left
             EndSwitch
        Case Retval="ENTER":
             If IsBlank([])
                Then If Field()="Codigo da Empresa" Or
                        Field()="UF Carregamento" Or
                        Field()="UF Descarregamento" 
                        Then Loop
                     EndIf
             EndIf
             Switch
                Case Field()="Codigo da Empresa"        : 
                     If Not Carrega_Parametros()
                        Then Loop
                     EndIf
                     Moveto [Data de Emissao]
                Case Field()="Data de Emissao"          : Moveto [Hora de Emissao] 
                     If IsBlank([Data de Emissao])
                        Then [Data de Emissao]=Today()
                     EndIf 
                Case Field()="Hora de Emissao"          : Moveto [Modalidade de Transporte] 
                     If IsBlank([Hora de Emissao])
                        Then [Hora de Emissao]=Time()
                     EndIf 
                Case Field()="Modalidade de Transporte" : 
                     If IsBlank([Modalidade de Transporte])
                        Then [Modalidade de Transporte]= "1"
                             [Descricao Modalidade    ]="RODOVIARIO"
                     EndIf
                     Switch
                        Case [Modalidade de Transporte]="1": [Descricao Modalidade]="RODOVIARIO"
                        OtherWise                          : Loop
                     EndSwitch
                     Moveto [UF Carregamento]
                Case Field()="UF Carregamento"          : Moveto [UF Descarregamento]
                Case Field()="UF Descarregamento"       : 
                     If [UF Descarregamento]<>UF_ANT And UF_ANT<>""
                        Then UF_ATU = [UF Descarregamento]
                             [UF Descarregamento] = UF_ANT
                             Moveto "Mdfe_Mdd"
                             Moveto [Sequencia da OM]
                             TEMNOTA = RecordStatus("New")= False
                             Moveto "MDFE_C" 
                             Moveto [UF Descarregamento]
                             If TEMNOTA
                               Then Mensagem("A UF de Descarregamento n„o pode ser alterada !// J  existe notas fiscais lan‡adas com esta UF. ")
                                    Loop
                               Else [UF Descarregamento] = UF_ATU
                             EndIf
                     EndIf
                     UF_ANT=[UF Descarregamento]
                     Controla_Pagina1("F4") 
                OtherWise                               : Right
             EndSwitch
      EndSwitch
EndWhile

EndProc

;*******************************************************************************
;* Adiciona/Remove Registro                                                    *
;*******************************************************************************
Proc MLA_Add_Rem_Registro_MDFE(vr,ac)
Private vr,ac,i,CONT,IND

Switch
  Case MLA_Campo="Estado"   :
       If Not IsBlank(vr)
          Then If Not Checa_Estado(vr) 
                  Then Campo="TG_REG" 
                       Return
               EndIf 
       EndIf          
  Case MLA_Campo="CNPJ/CPF" :
       If Not IsBlank(vr)
          Then If Not Checa_CGC_CPF_Formatado(vr) 
                  Then Campo="TG_REG" 
                       Return
               EndIf
       EndIf
EndSwitch
Switch 
   Case ac="Incluir" :
        For i From 1 To DynArraySize(MLA_Array_Lista1)
          If MLA_Array_Lista1[i]=vr
             Then Mensagem("Registro j  Selecionado !")
                  Return
          EndIf
        EndFor  
        i=1+DynArraySize(MLA_Array_Lista1)
        MLA_Array_Lista1[i]=vr
   Case ac="Deletar" :
        IND=NumVal(ControlValue("TG_ARRAY"))
        CONT=1
        
        If IsAssigned(MLA_Array_Lista2)
           Then Release Vars MLA_Array_Lista2
        EndIf
        
        DynArray MLA_Array_Lista2[]
        
        For i From 1 To DynArraySize(MLA_Array_Lista1)
           If MLA_Array_Lista1[i]<>MLA_Array_Lista1[IND]
              Then MLA_Array_Lista2[CONT]=MLA_Array_Lista1[i]
                   CONT=CONT+1
           EndIf
        EndFor
        
        Release Vars MLA_Array_Lista1
        DynArray MLA_Array_Lista1[]
        
        For i From 1 To DynArraySize(MLA_Array_Lista2)
           MLA_Array_Lista1[i]=MLA_Array_Lista2[i]
        EndFor
EndSwitch   
   
Release Vars MLA_Array_Lista2,vr,ac,i,CONT,IND   

EndProc ;MLA_Add_Rem_Registro_MDFE(()

;*******************************************************************************
;* MLA_SD_Dialog                                                               *
;*******************************************************************************
Proc MLA_SD_Dialog_MDFE(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento

MSG_CAMPO=""                              
TECLA=""
Temp=True
                 
If Disparo="UPDATE"
   Then Switch
          Case Campo="TG_OK" :
               AcceptDialog
          OtherWise          : Return Temp
        EndSwitch
EndIf

If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -83: 
          If Checa_TAG()
             Then Switch 
                    Case Campo="TG_ARRAY" :    
                         MLA_Add_Rem_Registro_MDFE("","Deletar")
                  EndSwitch
          EndIf
          RefreshDialog
     Case Evento["KeyCode"] =  27:
          Switch
            Case Campo="TG_REG"   : CancelDialog
            Case Campo="TG_ARRAY" : Campo="TG_REG"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13: 
          If Checa_TAG()
             Then Switch 
                    Case Campo="TG_REG" :    
                         MLA_VSDGREG=ControlValue("TG_REG")
                         If MLA_VSDGREG="" 
                            Then Campo="TG_ARRAY"
                            Else MLA_Add_Rem_Registro_MDFE(MLA_VSDGREG,"Incluir")
                                 MLA_VSDGREG="" 
                         EndIf
                    Case Campo="TG_ARRAY"     : AcceptDialog
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_REG"    : 
     MSG_CAMPO=MLA_TITULO2
     TECLA=TECLA+" Em Branco=Rela‡Æo"
  Case Campo="TG_ARRAY"    : 
     TECLA=TECLA+" Del=Excluir"
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)

RefreshDialog
Return Temp

EndProc ;MLA_SD_Dialog_MDFE()

;*******************************************************************************
;* Rotina p/ Montagem Mensagem ou ConfGeral                                    *
;*******************************************************************************
Proc MLA_Monta_Tela_MDFE()

Release Vars MLA_Tela 
Array MLA_Tela[3]
MLA_Tela[1]=Len(MLA_TITULO1)  MLA_Tela[2]=Len(MLA_TITULO2)  MLA_Tela[3]=3+NumVal(SubStr(MLA_TAM,2,3))

MLA_JAN=MLA_Tela[1]
For i From 1 To 3
  If MLA_Tela[i]>MLA_JAN
     Then MLA_JAN=MLA_Tela[i]
  EndIf
EndFor

If MLA_Tela[1]=MLA_JAN
   Then MLA_JAN=MLA_JAN+10
   Else MLA_JAN=MLA_JAN+5
EndIf   

TAM=MLA_JAN-6

If MLA_JAN>78
   Then MLA_JAN=74
        TAM=68
   Else If MLA_JAN < 30
           Then MLA_JAN=30
                TAM=24
        EndIf
EndIf
CIM=INT((80-MLA_JAN)/2)+1

Release Vars MLA_Tela 

Endproc ;MLA_Monta_Tela_MDFE()

;*******************************************************************************
;* Monta Lista Array                                                           *
;*******************************************************************************
Proc Monta_Lista_Array_MDFE(s,cs,Tipo)
Private s, cs, r, i, pos, MLA_Array_Lista1, TAM  
MLA_Campo=Tipo
If IsAssigned(MLA_Array_Lista1)
   Then Release Vars MLA_Array_Lista1
EndIf

DynArray MLA_Array_Lista1[]
If Not IsBlank(s)
   Then i   =0
        While Not IsBlank(s)
          pos =SearchFrom(cs,s,1)
          If pos=0 
             Then pos=len(s)+1 
          EndIf
          i=i+1
          MLA_Array_Lista1[i]=SubStr(s,1,pos-1)
          s=SubStr(s,pos+1,len(s)-pos)
        EndWhile
EndIf

MLA_Monta_Tela_MDFE()
           
MSGCAMPO=""

ShowDialog MLA_TITULO1 Proc "MLA_SD_Dialog_MDFE"
   Trigger "OPEN","ARRIVE","UPDATE","CLOSE","SELECT"
    Key "F1","ENTER","ESC","DEL",
     -75, -77, -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140, -147  
   @ Int((25-15)/2),CIM Height 15 width MLA_JAN
    
    Label  @ 00,01 MLA_TITULO2 For "TG_REG"
    Accept @ 01,02 Width TAM MLA_TAM picture MLA_TIPO Tag "TG_REG" to MLA_VSDGREG
    
    Pushbutton @ 11,Int((MLA_JAN-11)/2)  width 11 "~O~K"   Tag "TG_OK"  To BottonValue
    
    Label  @ 03,01 "Rela‡Æo" For "TG_ARRAY"
    PickDynArray @04,02 Height 6 width TAM 
    Columns 1
     MLA_Array_Lista1
      Tag "TG_ARRAY"
       To ArrayElement

EndDialog
Mouse Show

r=""
For i From 1 To DynArraySize(MLA_Array_Lista1)
 r=r+MLA_Array_Lista1[i]
 If i<DynArraySize(MLA_Array_Lista1)
    Then r=r+cs
 EndIf
EndFor      

Release Vars MLA_TITULO1, MLA_TITULO2, MLA_TAM, MLA_TIPO, i, s, cs, MLA_Array_Lista1,
             CIM, MLA_JAN, TAM, MLA_VSDGREG 

Return r

EndProc

;*******************************************************************************
;* Rotina para Digitacao Item                                                  *
;*******************************************************************************
Proc DIGITA_ARRAY(TELA)
Private TELA, Perc

Switch
   Case TELA="UF"     :   
        MLA_TITULO1="UF's do Percurso"
        MLA_TITULO2="Digite a UF do Percurso"
        MLA_TAM ="A2"
        MLA_TIPO="&*&"
        Perc=Monta_Lista_Array_MDFE([UF Percursos],",","Estado")
        [UF Percursos]=""
        While Not IsBlank(Perc)
          If [UF Carregamento]<>SubStr(Perc,1,2) And [UF Descarregamento]<>SubStr(Perc,1,2)
             Then [UF Percursos]=[UF Percursos]+SubStr(Perc,1,2)
                  Perc=SubStr(Perc,4,Len(Perc)-3)
                  If Not IsBlank(Perc)
                     Then [UF Percursos]=[UF Percursos]+","
                  EndIf
             Else Perc=SubStr(Perc,4,Len(Perc)-3)     
          EndIf
        EndWhile
   Case TELA="LACRES" :
        MLA_TITULO1="Lacres"
        MLA_TITULO2="Digite o N£mero do Lacre"
        MLA_TAM ="A20"
        MLA_TIPO="#*#"
        [Numero do Lacre]=Monta_Lista_Array_MDFE([Numero do Lacre],",","")
   Case TELA="XML"    :
        MLA_TITULO1="Autorizados para Download do XML"
        MLA_TITULO2="Digite o CNPJ/CPF do Autorizado"
        MLA_TAM ="A18"
        MLA_TIPO="###.###.###-##,##.###.###/####-##"
        [Arquivos XML   ]=Monta_Lista_Array_MDFE([Arquivos XML   ],",","CNPJ/CPF")
EndSwitch        

EndProc  ;  (Digita_Array)

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE_RVR()

Moveto "Mdfe_rvr"
While True
  Moveto [Sequencia da OM]
  End
  SEQ=[Sequencia da OM]
  Down
  
  Opcao_Ver=False
      
  SetaCorRegistro("Editar")
  While true

  TECLA="F6=Condutores  F7=Vales  "
  MSGCAMPO=""
  AguardaTeclasPadraoIt()

  If RetVal=-33  
     Then MSGCAMPO=""
          
          ShowPopup " Fun‡”es " CENTERED
          "F6  Condutores"              : " Condutores"              : "F6",
          "F7  Vale Ped gio"            : " Vale Ped gio"            : "F7",
          "~C~ancelar"                  : " Cancelar a Opera‡Æo"     : "CANCELAR"
          EndMenu
          To MenuVar
          echo off
 
          If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Loop
          EndIf
          
          RetVal=MenuVar
    EndIf
    
    Switch
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F3":   
           Del
           Moveto [Sequencia da OM]
           If RecordStatus("New")
              Then MENSAGEM("Nenhum Ve¡culo Cadastrado !")
                   QuitLoop
           EndIf
           Opcao_Ver=True
           CHAVERVR=0
           Home
           SEQRVR=[Sequencia da OM]
           Inicia_Registro()
           DIGITA_RVR()
           QuitLoop
      Case RetVal="F6" Or RetVal="F7":
           Del 
           ChaveP=RetVal
           CHAVERVR=9                                                                                                   
           Return
      Case Retval="ESC":       
           Del
           ChaveP="Fim"
           CHAVERVR=9                                                                                                   
           Return  
      Case RetVal="UP" Or RetVal="HOME":    
           While True
             If OPCAO_FORM="F"
                Then PAGINA("Mdfe_rvr","MR")
                Else PAGINA("Mdfe_rvr","MT")
             EndIf
             If EDITAR="S"
                Then CHAVERVR=0
                     Controla_EdicaoRVR()
                Else If EXCLUIR="S"  
                        Then If [Sequencia da OM]=1
                                Then Moveto [Sequencia da OM]
                                     Scan
                                       SE=[Sequencia da OM]
                                     EndScan
                                     Home
                                     If IsBlank(SE) Or SE<>1  
                                        Then Mensagem("Ve¡culo de Tra‡Æo nÆo pode ser exclu¡do !")
                                        Else If QuerExcluir("")
                                                Then del
                                                Else UnLockRecord
                                             EndIf
                                     EndIf
                                Else If QuerExcluir("")
                                             Then del
                                             Else UnLockRecord
                                          EndIf
                             EndIf           
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case RetVal="ENTER":              
           SV=[Sequencia da OM]
           Del           
           If RecordStatus("New")=True  
              Then [Sequencia da OM]=1
              Else End 
                   If Not IsBlank([Sequencia da OM])
                      Then Down
                   EndIf
                   [Sequencia da OM]=SV
           EndIf
           
           If IsBlank([Sequencia da OM])
              Then [Sequencia da OM]=NumVal(SEQ)+1
           EndIf
           
           SEQ=[Sequencia da OM]
           Del
           Moveto [Sequencia da OM]
           SE=0
           Scan
             SE=SE+1
           EndScan
           If SE>=4  
              Then Mensagem("N£mero m ximo de Ve¡culo permitidos ‚ 4 !")
                   QuitLoop
           EndIf
           Locate SEQ
           If Retval
              Then CHAVERVR=0
              Else CHAVERVR=1
                   End 
                   If Not IsBlank([Sequencia da OM])
                      Then Down
                   EndIf
                   [Sequencia da OM]=SEQ
           EndIf
           If IsLockRecord()
              Then If OPCAO_FORM="F"
                      Then PickForm "F"
                           QuitLoop
                   EndIf
           EndIf
           Return
    EndSwitch
  EndWhile
EndWhile

EndProc  ; (CHAVE_RVR)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Veiculo_Dialog(Disparo,Campo,Evento,Elemento)

TECLA     = ""
MSG_CAMPO = "PgDn=Finalizar  "
Temp      = True

If INICIA_DIALOG
   Then INICIA_DIALOG = False
        If Opcao_ver
           Then Campo = "TG_SEQV"
           Else Campo = "TG_VEICULO"
        EndIf   
EndIf


CODV_ANT = VSDGVEICULO
CODT_ANT = VSDGTRANSP

If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59:  
          If Campo="TG_VEICULO" Or 
             Campo="TG_TRANSP" Or 
             Campo="TG_UFVEICULO" Or
             Campo="TG_UFTRANSP" 
             Then Dynarray WinArray5[]
                  Window Handle Dialog to JANELA
                  Window GetAttributes JANELA To WinArray5
                  WinArray5["FLOATING"]=False
                  Window SetAttributes JANELA From WinArray5
          
                  If Campo="TG_VEICULO" Then Moveto [Codigo do Veiculo       ] EndIf
                  If Campo="TG_TRANSP"     Then Moveto [Codigo da Transportadora] EndIf
                  If Campo="TG_UFVEICULO"  Then Moveto [UF Veiculo              ] EndIf
                  If Campo="TG_UFTRANSP"   Then Moveto [UF Transport            ] EndIf
                    
                  If ConsultaF1()
                     Then Switch
                             Case Campo="TG_VEICULO" :
                                  VSDGVEICULO = Reg_ConsultaF1["Codigo do Veiculo"]
                             Case Campo="TG_TRANSP" :
                                  VSDGTRANSP   = Reg_ConsultaF1["Codigo da Transportadora"]
                             Case Campo="TG_UFVEICULO" :
                                  VSDGUFVEICULO = Reg_ConsultaF1["UF"]
                             Case Campo="TG_UFTRANSP" :
                                  VSDGUFTRANSP = Reg_ConsultaF1["UF"]
                          EndSwitch
                  EndIf
                  
                  Window Select JANELA
                  WinArray5["FLOATING"]=True
                  Window SetAttributes JANELA From WinArray5

                  echo Normal
                  echo off

                  Switch
                     Case Campo="TG_VEICULO"  :
                          If VSDGSEQV<>1 And [Tipo de Rodado Veiculo  ]<>"06"
                             Then Mensagem("Selecione apenas Ve¡culo de Reboque")
                                  VSDGVEICULO       =""
                                  VSDGPLACAVEICULO  =""
                                  VSDGUFVEICULO     =""
                                  VSDGRNTRCVEICULO  =""
                                  VSDGCIOTVEICULO   =""
                                  VSDGTPCARROC      =""
                                  VSDGNOMTPCARROC   =""
                                  VSDGTPRODADO      =""
                                  VSDGNOMTPRODADO   =""
                                  VSDGTARA          =""
                                  VSDGCAPACIDADEKG  =""
                                  VSDGCAPACIDADEM3  =""
                                  VSDGCGCCIOTVEICULO=""
                             Else VSDGVEICULO       =[Codigo do Veiculo       ]
                                  VSDGPLACAVEICULO  =[Placa do Veiculo        ]
                                  VSDGUFVEICULO     =[UF Veiculo              ]
                                  VSDGRNTRCVEICULO  =[RNTC Veiculo            ]
                                  VSDGCIOTVEICULO   =[CIOT Veiculo            ]
                                  VSDGTPCARROC      =[Tipo Carroceria Veiculo ]
                                  VSDGNOMTPCARROC   =[Descricao_Carroc_Veiculo]
                                  VSDGTPRODADO      =[Tipo de Rodado Veiculo  ]
                                  VSDGNOMTPRODADO   =[Descricao_Rodado_Veiculo]
                                  VSDGTARA          =[Tara em KG Veiculo      ]
                                  VSDGCAPACIDADEKG  =[Capacidade em KG Veiculo] 
                                  VSDGCAPACIDADEM3  =[Capacidade em M3 Veiculo]
                                  VSDGCGCCIOTVEICULO=[CGC_CIOT Veiculo        ]
                          EndIf
                          Campo="TG_VEICULO"        
                     Case Campo="TG_TRANSP"   :
                          GetRecord "\\Sistemas\\Vendas\\Transpor" [Codigo da Transportadora] To NOME 
                          If Retval 
                             Then VSDGTRANSP      = NOME["Codigo da Transportadora"]
                                  VSDGNOMTRANSP   = NOME["Nome Fantasia Transport" ]
                                  VSDGUFTRANSP    = NOME["UF Transport"            ]
                                  VSDGCGCTRANSP   = NOME["CGC Transport"           ]
                                  VSDGIETRANSP    = NOME["IE Transport"            ]
                                  VSDGTPTRANSP    = NOME["Tipo Proprietario"       ]
                                  VSDGNOMTPTRANSP = NOME["Descricao_TpProprietario"]
                                  VSDGRNTRCTRANSP = NOME["RNTC Transport"          ]
                          EndIf
                          Campo="TG_TRANSP"
                  EndSwitch
                  RefreshDialog
          EndIf
          If Campo="TG_TPRODADO"
             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 VSDGTPRODADO=MenuVar
                  EndIf                                                    
                  Switch 
                     Case VSDGTPRODADO="01" : VSDGNOMTPRODADO="TRUCK"
                     Case VSDGTPRODADO="02" : VSDGNOMTPRODADO="TOCO"
                     Case VSDGTPRODADO="03" : VSDGNOMTPRODADO="CAVALO MECANICO"
                     Case VSDGTPRODADO="04" : VSDGNOMTPRODADO="VAN"
                     Case VSDGTPRODADO="05" : VSDGNOMTPRODADO="UTILITARIO"
                     Case VSDGTPRODADO="06" : VSDGNOMTPRODADO="OUTROS" 
                  EndSwitch   
          EndIf
          If Campo="TG_TPCARROC"
             Then 
                  ShowPopup "Tipo de Carroceria" 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 VSDGTPCARROC=MenuVar
                  EndIf                                                    
                  Switch 
                     Case VSDGTPCARROC="00" : VSDGNOMTPCARROC="NAO APLICAVEL"
                     Case VSDGTPCARROC="01" : VSDGNOMTPCARROC="ABERTA"
                     Case VSDGTPCARROC="02" : VSDGNOMTPCARROC="FECHADA/BAU"
                     Case VSDGTPCARROC="03" : VSDGNOMTPCARROC="GRANELERA"
                     Case VSDGTPCARROC="04" : VSDGNOMTPCARROC="PORTA CONTAINER"
                     Case VSDGTPCARROC="05" : VSDGNOMTPCARROC="SIDER" 
                  EndSwitch   
          EndIf
          If Campo="TG_TPTRANSP"
             Then ShowPopup "Tipo de Carroceria" CENTERED
                  "~0~ - TAC Agregado    " : "TAC Agregado    " : "0",
                  "~1~ - TAC Independente" : "TAC Independente" : "1",
                  "~2~ - Outros          " : "Outros          " : "2",
                  "~S~air                " : "Ignorar op‡äes " : "CANCELAR"
                   
                  EndMenu
                  To MenuVar
                   
                  If MenuVar<>"CANCELAR" And MenuVar<>"Esc"
                     Then VSDGTPTRANSP=MenuVar
                  EndIf                                                    
                  Switch 
                     Case VSDGTPTRANSP="0" : VSDGNOMTPTRANSP="TAC AGREGADO"
                     Case VSDGTPTRANSP="1" : VSDGNOMTPTRANSP="TAC INDEPENDENTE"
                     Case VSDGTPTRANSP="2" : VSDGNOMTPTRANSP="OUTROS"
                  EndSwitch   
          EndIf
          Temp=False
     Case Opcao_Ver=True:    
          Temp=False   
          Switch
            Case Evento["KeyCode"] =  27:
                 CancelDialog
            OtherWise:
              Mover_Reg=True
              Switch               
                Case Evento["KeyCode"] = -71:
                     If AtFirst()
                        Then Mover_Reg=False Beep
                        Else Home
                             SEQRVR = [Sequencia da OM]
                     EndIf
                Case Evento["KeyCode"] = -79:
                     If AtLast()
                        Then Mover_Reg=False Beep
                        Else End
                             SEQRVR = [Sequencia da OM]
                     EndIf
                Case Evento["KeyCode"] = -73:
                     If AtFirst()
                        Then Mover_Reg=False Beep
                        Else Up
                             SEQRVR = [Sequencia da OM]
                     EndIf
                     If CHAVERVR=0
                        Then Moveto [Codigo do Veiculo]
                             Ativa_Lookup()
                             Locate [Mdfe_rvr->Codigo do Veiculo]
                             KeyPress "ESC"
                     EndIf
                              
                Case Evento["KeyCode"] = -81:
                     If AtLast()
                        Then Mover_Reg=False Beep
                        Else Down
                             SEQRVR = [Sequencia da OM]
                     EndIf
                     If CHAVERVR=0
                        Then Moveto [Codigo do Veiculo]
                             Ativa_Lookup()
                             Locate [Mdfe_rvr->Codigo do Veiculo]
                             KeyPress "ESC"
                     EndIf
                                           
              EndSwitch
              If Mover_Reg=True
                 Then SEQRVR=[Sequencia da OM]
                      Inicia_Registro()
              EndIf
          EndSwitch 
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_VEICULO"        :    
                 If QuerDesfazer("")
                    Then If CHAVERVR=1
                            Then Del
                            Else If RecordStatus("Modified")
                                    Then Undo
                                 EndIf
                         EndIf
                         CHAVERVR=9
                         CancelDialog 
                 EndIf
            Case Campo="TG_PLACAVEICULO"  : Campo="TG_VEICULO"
            Case Campo="TG_UFVEICULO"     : Campo="TG_PLACAVEICULO"
            Case Campo="TG_RNTRCVEICULO"  : Campo="TG_UFVEICULO"
            Case Campo="TG_CIOTVEICULO"   : Campo="TG_RNTRCVEICULO"
            Case Campo="TG_TPRODADO"      : Campo="TG_CIOTVEICULO"
            Case Campo="TG_TPCARROC"      : 
                 If VSDGSEQV=1
                    Then Campo="TG_TPRODADO"
                    Else Campo="TG_CIOTVEICULO"
                 EndIf
            Case Campo="TG_CGCCIOTVEICULO": Campo="TG_TPCARROC" 
            Case Campo="TG_TARA"          : Campo="TG_CGCCIOTVEICULO"
            Case Campo="TG_CAPACIDADEKG"  : Campo="TG_TARA"
            Case Campo="TG_CAPACIDADEM3"  : Campo="TG_CAPACIDADEKG"
            Case Campo="TG_TRANSP"        : 
                 If IsBlank(VSDGVEICULO)
                    Then Campo="TG_CAPACIDADEM3"
                    Else Campo="TG_VEICULO"
                 EndIf   
            Case Campo="TG_NOMTRANSP"     : Campo="TG_TRANSP"
            Case Campo="TG_UFTRANSP"      : Campo="TG_NOMTRANSP"
            Case Campo="TG_CGCTRANSP"     : Campo="TG_UFTRANSP"
            Case Campo="TG_IETRANSP"      : Campo="TG_CGCTRANSP"
            Case Campo="TG_TPTRANSP"      : Campo="TG_IETRANSP"
            Case Campo="TG_RNTRCTRANSP"   : Campo="TG_TPTRANSP"
          EndSwitch
          Temp=False
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = -81:  
          If Not IsBlank(VSDGPLACAVEICULO) And
             Not IsBlank(VSDGUFVEICULO)    And
             Not IsBlank(VSDGTPRODADO)     And
             Not IsBlank(VSDGTPCARROC)     And
             Not IsBlank(VSDGTARA)         
             Then Switch
                     Case IsBlank(VSDGNOMTRANSP) And IsBlank(VSDGTRANSP) :
                          VSDGTRANSP      = ""
                          VSDGNOMTRANSP   = ""
                          VSDGUFTRANSP    = ""
                          VSDGCGCTRANSP   = ""
                          VSDGIETRANSP    = ""
                          VSDGTPTRANSP    = ""
                          VSDGNOMTPTRANSP = ""
                          VSDGRNTRCTRANSP = ""
                          AcceptDialog
                     Case Not IsBlank(VSDGTRANSP) :
                          AcceptDialog
                     Case Not IsBlank(VSDGNOMTRANSP)   And
                          Not IsBlank(VSDGUFTRANSP)    And
                          Not IsBlank(VSDGCGCTRANSP)   And
                          Not IsBlank(VSDGIETRANSP)    And
                          Not IsBlank(VSDGTPTRANSP)    And
                          Not IsBlank(VSDGNOMTPTRANSP) And
                          Not IsBlank(VSDGRNTRCTRANSP) :
                          AcceptDialog
                  EndSwitch
          EndIf
          If CHAVERVR=1
             Then Busca_Condutor(VSDGVEICULO)
          EndIf           
     Case Evento["KeyCode"] = 13:
          Switch
            Case Campo="TG_VEICULO"      :     
                 VSDGVEICULO=ControlValue("TG_VEICULO")
                 If VSDGVEICULO<>CODV_ANT
                   then If Not IsBlank(VSDGVEICULO)
                           Then VSDGVEICULO=AlinhM(VSDGVEICULO,3)
                                GetRecord "\\Sistemas\\Vendas\\Veiculos" VSDGVEICULO To NOME 
                                If Retval 
                                   Then If VSDGSEQV<>1 And NOME["Tipo de Rodado Veiculo"]<>"06"
                                           Then Mensagem("Selecione apenas Ve¡culo de Reboque")
                                                VSDGVEICULO       =""
                                                VSDGPLACAVEICULO  =""
                                                VSDGUFVEICULO     =""
                                                VSDGRNTRCVEICULO  =""
                                                VSDGCIOTVEICULO   =""
                                                VSDGTPCARROC      =""
                                                VSDGNOMTPCARROC   =""
                                                VSDGTPRODADO      =""
                                                VSDGNOMTPRODADO   =""
                                                VSDGTARA          =""
                                                VSDGCAPACIDADEKG  =""
                                                VSDGCAPACIDADEM3  =""
                                                VSDGCGCCIOTVEICULO=""
                                                Campo="TG_VEICULO"
                                           Else VSDGVEICULO       = NOME["Codigo do Veiculo"       ]
                                                VSDGPLACAVEICULO  = NOME["Placa do Veiculo"        ]
                                                VSDGUFVEICULO     = NOME["UF Veiculo"              ]
                                                VSDGRNTRCVEICULO  = NOME["RNTC Veiculo"            ]
                                                VSDGCIOTVEICULO   = NOME["CIOT Veiculo"            ]
                                                VSDGTPCARROC      = NOME["Tipo Carroceria Veiculo" ]
                                                VSDGNOMTPCARROC   = NOME["Descricao_Carroc_Veiculo"]
                                                VSDGTPRODADO      = NOME["Tipo de Rodado Veiculo"  ]
                                                VSDGNOMTPRODADO   = NOME["Descricao_Rodado_Veiculo"]
                                                VSDGTARA          = NOME["Tara em KG Veiculo"      ]
                                                VSDGCAPACIDADEKG  = NOME["Capacidade em KG Veiculo"]
                                                VSDGCAPACIDADEM3  = NOME["Capacidade em M3 Veiculo"]
                                                VSDGCGCCIOTVEICULO= NOME["CGC_CIOT Veiculo"        ]
                                                If CHAVERVR=1
                                                   Then VSDGTRANSP = NOME["Codigo_da_Transportadora"]
                                                        If Not IsBlank(VSDGTRANSP) 
                                                           Then GetRecord "\\Sistemas\\Vendas\\Transpor" VSDGTRANSP To NOME 
                                                                If Retval 
                                                                   Then VSDGNOMTRANSP   = NOME["Nome Fantasia Transport" ]
                                                                        VSDGUFTRANSP    = NOME["UF Transport"            ]
                                                                        VSDGCGCTRANSP   = NOME["CGC Transport"           ]
                                                                        VSDGIETRANSP    = NOME["IE Transport"            ]
                                                                        VSDGTPTRANSP    = NOME["Tipo Proprietario"       ]
                                                                        VSDGNOMTPTRANSP = NOME["Descricao_TpProprietario"]
                                                                        VSDGRNTRCTRANSP = NOME["RNTC Transport"          ]
                                                                   Else Mensagem("Propriet rio do Ve¡culo nÆo cadastrado !")
                                                                EndIf
                                                        EndIf
                                                                       
                                                EndIf
                                                Campo="TG_TRANSP"
                                        EndIf        
                                   Else MENSAGEM("Ve¡culo n„o Cadastrada !")
                                        VSDGVEICULO=""
                                        Campo="TG_VEICULO"
                                EndIf
                           Else If Not IsBlank(CODV_ANT)
                                   Then VSDGVEICULO       = ""
                                        VSDGPLACAVEICULO  = ""
                                        VSDGUFVEICULO     = ""
                                        VSDGRNTRCVEICULO  = ""
                                        VSDGCIOTVEICULO   = ""
                                        VSDGTPCARROC      = ""
                                        VSDGNOMTPCARROC   = ""
                                        VSDGTPRODADO      = ""
                                        VSDGNOMTPRODADO   = ""
                                        VSDGTARA          = ""
                                        VSDGCAPACIDADEKG  = ""
                                        VSDGCAPACIDADEM3  = ""
                                        VSDGCGCCIOTVEICULO= ""
                                EndIf
                                CODV_ANT=VSDGVEICULO       
                                Campo="TG_PLACAVEICULO" 
                         EndIf
                   Else Campo="TG_TRANSP"
                 EndIf
                 
            Case Campo="TG_PLACAVEICULO"      : 
                 VSDGPLACAVEICULO=ControlValue("TG_PLACAVEICULO")
                 If IsBlank(VSDGPLACAVEICULO) Or Len(VSDGPLACAVEICULO)<>8
                      Then Mensagem("Placa inv lida")
                           Campo="TG_PLACAVEICULO"
                      Else Campo="TG_UFVEICULO"
                 EndIf   
            Case Campo="TG_UFVEICULO"    :    
                 VSDGUFVEICULO=ControlValue("TG_UFVEICULO")
                 If Not IsBlank(VSDGUFVEICULO)
                    Then If Checa_Estado(VSDGUFVEICULO)
                            Then Campo="TG_RNTRCVEICULO"
                            Else VSDGUFVEICULO=""
                                 Campo="TG_UFVEICULO"
                         EndIf        
                 EndIf   
            Case Campo="TG_RNTRCVEICULO" : 
                 VSDGRNTRCVEICULO=ControlValue("TG_RNTRCVEICULO")
                 If Len(VSDGRNTRCVEICULO)<>8 And VSDGRNTRCVEICULO<>""
                    Then Mensagem("O RNTRC do Ve¡culo tem que conter 8 n£meros")
                         Campo="TG_RNTRCVEICULO"
                    Else Campo="TG_CIOTVEICULO"
                 EndIf
            Case Campo="TG_CIOTVEICULO"  : 
                 VSDGCIOTVEICULO=ControlValue("TG_CIOTVEICULO")
                 If Len(VSDGCIOTVEICULO)<>12 And VSDGCIOTVEICULO<>""
                    Then Mensagem("O CIOT do Ve¡culo tem que conter 12 n£meros")
                         Campo="TG_CIOTVEICULO"
                    Else If VSDGSEQV=1
                            Then Campo="TG_TPRODADO"
                            Else VSDGTPRODADO="06" 
                                 VSDGNOMTPRODADO="OUTROS" 
                                 Campo="TG_TPCARROC"
                         EndIf   
                 EndIf
            Case Campo="TG_TPRODADO"        : Campo="TG_TPCARROC"
                 VSDGTPRODADO=ControlValue("TG_TPRODADO")
                 Switch 
                     Case VSDGTPRODADO="01" : VSDGNOMTPRODADO="TRUCK"
                     Case VSDGTPRODADO="02" : VSDGNOMTPRODADO="TOCO"
                     Case VSDGTPRODADO="03" : VSDGNOMTPRODADO="CAVALO MECANICO"
                     Case VSDGTPRODADO="04" : VSDGNOMTPRODADO="VAN"
                     Case VSDGTPRODADO="05" : VSDGNOMTPRODADO="UTILITARIO"
                     Case VSDGTPRODADO="06" : VSDGNOMTPRODADO="OUTROS" 
                     OtherWise              : 
                          VSDGNOMTPRODADO="" 
                          Campo="TG_TPRODADO"
                 EndSwitch
            Case Campo="TG_TPCARROC"     : 
                 If VSDGCIOTVEICULO<>""
                    Then Campo="TG_CGCCIOTVEICULO"
                    Else Campo="TG_TARA"
                 EndIf 
                 VSDGTPCARROC=ControlValue("TG_TPCARROC")
                 Switch 
                     Case VSDGTPCARROC="00" : VSDGNOMTPCARROC="NAO APLICAVEL"
                     Case VSDGTPCARROC="01" : VSDGNOMTPCARROC="ABERTA"
                     Case VSDGTPCARROC="02" : VSDGNOMTPCARROC="FECHADA/BAU"
                     Case VSDGTPCARROC="03" : VSDGNOMTPCARROC="GRANELERA"
                     Case VSDGTPCARROC="04" : VSDGNOMTPCARROC="PORTA CONTAINER"
                     Case VSDGTPCARROC="05" : VSDGNOMTPCARROC="SIDER" 
                     OtherWise              : 
                          VSDGNOMTPCARROC=""
                          Campo="TG_TPCARROC"
                 EndSwitch 
            Case Campo="TG_CGCCIOTVEICULO": Campo="TG_TARA"
                 VSDGCGCCIOTVEICULO=ControlValue("TG_CGCCIOTVEICULO")
                 If Not IsBlank(VSDGCGCCIOTVEICULO)
                    Then CNPJ=VSDGCGCCIOTVEICULO
                         If Not Checa_CGC_CPF_Formatado(CNPJ) Then Campo="TG_CGCCIOTVEICULO" EndIf
                    Else Campo="TG_CGCCIOTVEICULO"
                 EndIf
            Case Campo="TG_TARA"         : Campo="TG_CAPACIDADEKG"
                 VSDGTARA=ControlValue("TG_TARA")
                 If IsBlank(VSDGTARA)
                    Then Campo="TG_TARA"
                 EndIf
            Case Campo="TG_CAPACIDADEKG" : Campo="TG_CAPACIDADEM3"
                 VSDGCAPACIDADEKG=ControlValue("TG_CAPACIDADEKG")
            Case Campo="TG_CAPACIDADEM3" : Campo="TG_TRANSP"
                 VSDGCAPACIDADEM3=ControlValue("TG_CAPACIDADEM3")
            Case Campo="TG_TRANSP"       :  
                 VSDGTRANSP=ControlValue("TG_TRANSP")
                 If Not IsBlank(VSDGTRANSP)
                   Then VSDGTRANSP=AlinhE(VSDGTRANSP)
                        GetRecord "\\Sistemas\\Vendas\\Transpor" VSDGTRANSP To NOME 
                        If Retval 
                           Then VSDGTRANSP      = NOME["Codigo da Transportadora"]
                                VSDGNOMTRANSP   = NOME["Nome Fantasia Transport" ]
                                VSDGUFTRANSP    = NOME["UF Transport"            ]
                                VSDGCGCTRANSP   = NOME["CGC Transport"           ]
                                VSDGIETRANSP    = NOME["IE Transport"            ]
                                VSDGTPTRANSP    = NOME["Tipo Proprietario"       ]
                                VSDGNOMTPTRANSP = NOME["Descricao_TpProprietario" ]
                                VSDGRNTRCTRANSP = NOME["RNTC Transport"          ]
                                Campo="TG_VEICULO"    
                           Else MENSAGEM("Propriet rio n„o Cadastrado !")
                                VSDGTRANSP      = ""
                                VSDGNOMTRANSP   = ""
                                VSDGUFTRANSP    = ""
                                VSDGCGCTRANSP   = ""
                                VSDGIETRANSP    = ""
                                VSDGTPTRANSP    = ""
                                VSDGNOMTPTRANSP = ""
                                VSDGRNTRCTRANSP = ""
                                Campo="TG_TRANSP"
                        EndIf
                   Else If Not IsBlank(CODT_ANT)
                           Then VSDGTRANSP      = ""
                                VSDGNOMTRANSP   = ""
                                VSDGUFTRANSP    = ""
                                VSDGCGCTRANSP   = ""
                                VSDGIETRANSP    = ""
                                VSDGTPTRANSP    = ""
                                VSDGNOMTPTRANSP = ""
                                VSDGRNTRCTRANSP = ""
                        EndIf
                        CODT_ANT=VSDGTRANSP       
                        Campo="TG_NOMTRANSP"
                 EndIf
            Case Campo="TG_NOMTRANSP"    : 
                 VSDGNOMTRANSP=ControlValue("TG_NOMTRANSP")
                 If IsBlank(VSDGNOMTRANSP) And IsBlank(VSDGTRANSP) 
                    Then VSDGTRANSP      = ""
                         VSDGNOMTRANSP   = ""
                         VSDGUFTRANSP    = ""
                         VSDGCGCTRANSP   = ""
                         VSDGIETRANSP    = ""
                         VSDGTPTRANSP    = ""
                         VSDGNOMTPTRANSP = ""
                         VSDGRNTRCTRANSP = ""
                         Campo="TG_VEICULO"
                    Else If IsBlank(VSDGNOMTRANSP)
                            Then Campo="TG_NOMTRANSP" 
                            Else Campo="TG_UFTRANSP" 
                         EndIf
                 EndIf
            Case Campo="TG_UFTRANSP"     : 
                 VSDGUFTRANSP=ControlValue("TG_UFTRANSP")
                 If Not IsBlank(VSDGUFTRANSP)
                    Then If Checa_Estado(VSDGUFTRANSP)
                            Then Campo="TG_CGCTRANSP"
                            Else VSDGUFTRANSP=""
                                 Campo="TG_UFTRANSP"
                         EndIf        
                 EndIf 
            Case Campo="TG_CGCTRANSP"    : Campo="TG_IETRANSP"
                 VSDGCGCTRANSP=ControlValue("TG_CGCTRANSP")
                 If Not IsBlank(VSDGCGCTRANSP)
                    Then CNPJ=VSDGCGCTRANSP
                         If Not Checa_CGC_CPF_Formatado(CNPJ) Then Campo="TG_CGCTRANSP" EndIf
                    Else Campo="TG_CGCTRANSP"
                 EndIf
            Case Campo="TG_IETRANSP"     : Campo="TG_TPTRANSP"
                 VSDGIETRANSP=ControlValue("TG_IETRANSP")
                 If Not IsBlank(VSDGIETRANSP)  
                    Then If VSDGUFTRANSP<>""
                            Then Aguarde("Validando IE")
                                 If Not Valida_IE(VSDGIETRANSP,VSDGUFTRANSP) Then 
                                    Campo="TG_IETRANSP" 
                                    LimpAguarde()
                                 EndIf
                            Else Mensagem("Informe o Estado primeiro !")
                                 Campo="TG_IETRANSP" 
                         EndIf             
                    Else Campo="TG_IETRANSP"
                 EndIf
            Case Campo="TG_TPTRANSP"     : Campo="TG_RNTRCTRANSP"
                 VSDGTPTRANSP=ControlValue("TG_TPTRANSP")
                 Switch 
                    Case VSDGTPTRANSP="0" : VSDGNOMTPTRANSP="TAC AGREGADO"
                    Case VSDGTPTRANSP="1" : VSDGNOMTPTRANSP="TAC INDEPENDENTE"
                    Case VSDGTPTRANSP="2" : VSDGNOMTPTRANSP="OUTROS"
                    OtherWise             : Campo="TG_TPTRANSP"
                 EndSwitch
                 MSG_CAMPO = " "
            Case Campo="TG_RNTRCTRANSP"  : 
                 VSDGRNTRCTRANSP=ControlValue("TG_RNTRCTRANSP")
                 If Not IsBlank(VSDGRNTRCTRANSP) And Len(VSDGRNTRCTRANSP)=8
                    Then If CHAVERVR=1
                            Then Busca_Condutor(VSDGVEICULO)
                         EndIf  
                         AcceptDialog
                    Else Mensagem("O RNTRC do Propriet rio tem que conter 8 n£meros")
                         Campo="TG_RNTRCTRANSP"
                         MSG_CAMPO = " "
                 EndIf        
          EndSwitch
          Temp=False
          RefreshDialog
   EndSwitch
EndIf

SelectControl Campo
TECLA=""

If Opcao_Ver=True
   Then TECLA=" Esc=Retornar  Home/End/PgDn/PgUp=Paginar  "
EndIf

Monta_Prompt(MSG_CAMPO,TECLA)
          
@ 24,0 ?? TECLA+Spaces(80-Len(TECLA))
PaintCanvas Attribute 31 24,0,24,79

Mouse Hide
RefreshDialog
Return TEMP

EndProc

;*******************************************************************************
;* Rotina para Digitacao Item                                                  *
;*******************************************************************************
Proc DIGITA_RVR()

If [Sequencia da OM]=1
   Then VTR="Ve¡culo de Tra‡Æo"
   Else VTR="Ve¡culo de Reboque"
EndIf   

VSDGSEQV=[Sequencia da OM]
INICIA_DIALOG = True
MSGCAMPO=""
VSDGCGCCIOTVEICULO=""

Showdialog VTR+" [      ]" Proc "Veiculo_Dialog"
   Trigger "OPEN"
    Key "F1","TAB","ReverseTab","ENTER","ESC","ClearArea","HOME","END","PGDN","PGUP"
     @ 02,0 height 16 width 80

   Accept @ -01,45 Width 6 "S" Tag "TG_SEQV" To VSDGSEQV

   @ 00,00 ?? "Dados do Ve¡culo"
    
   Label  @ 01,00 "Codigo" For "TG_VEICULO"
   Accept @ 02,01 Width 07 "A03" picture "#*#" Tag "TG_VEICULO" to VSDGVEICULO
   
   Label  @ 01,08 "Placa" For "TG_PLACAVEICULO"
   Accept @ 02,09 Width 13 "A10" picture "[&&&]-[####]" Tag "TG_PLACAVEICULO" to VSDGPLACAVEICULO
   
   Label  @ 01,22 "UF " For "TG_UFVEICULO"
   Accept @ 02,23 Width 05 "A2" picture "&*&" Tag "TG_UFVEICULO" to VSDGUFVEICULO  
   
   Label  @ 01,28 "RNTRC" For "TG_RNTRCVEICULO"
   Accept @ 02,29 Width 23 "A20" picture "#*#" Tag "TG_RNTRCVEICULO" to VSDGRNTRCVEICULO
   
   Label  @ 01,52 "CIOT" For "TG_CIOTVEICULO"
   Accept @ 02,53 Width 15 "A12" picture "#*#" Tag "TG_CIOTVEICULO" to VSDGCIOTVEICULO
   
   Label  @ 03,00 "Tipo de Rodado" For "TG_TPRODADO"
   Accept @ 04,01 Width 05 "A2" picture "#*#" Tag "TG_TPRODADO" to VSDGTPRODADO
   Accept @ 04,07 Width 19 "A16" picture "!*!" Tag "TG_NOMTPRODADO" to VSDGNOMTPRODADO
   
   Label  @ 03,26 "Tipo de Carroceria" For "TG_TPCARROC"
   Accept @ 04,27 Width 05 "A2" picture "#*#" Tag "TG_TPCARROC" to VSDGTPCARROC
   Accept @ 04,33 Width 19 "A16" picture "!*!" Tag "TG_NOMTPCARROC" to VSDGNOMTPCARROC
   
   Label  @ 03,52 "CNPJ/CPF CIOT" For "TG_CGCCIOTVEICULO"
   Accept @ 04,53 Width 21 "A18" picture "###.###.###-##,##.###.###/####-##" Tag "TG_CGCCIOTVEICULO" to VSDGCGCCIOTVEICULO
   
   Label  @ 05,00 "Tara(KG)" For "TG_TARA"
   Accept @ 06,01 Width 09 "A6" picture "#*#" Tag "TG_TARA" to VSDGTARA

   Label  @ 05,10 "Capacidade(KG)" For "TG_CAPACIDADEKG"
   Accept @ 06,11 Width 09 "A06" picture "#*#" Tag "TG_CAPACIDADEKG" to VSDGCAPACIDADEKG 

   Label  @ 05,25 "Capacidade(M3)" For "TG_CAPACIDADEM3"
   Accept @ 06,26 Width 06 "A03" picture "#*#" Tag "TG_CAPACIDADEM3" to VSDGCAPACIDADEM3

   @ 08,00 ?? "Propriet rio"
   
   Label  @ 09,00 "Codigo" For "TG_TRANSP"
   Accept @ 10,01 Width 07 "A4" picture "#*#" Tag "TG_TRANSP" to VSDGTRANSP
   
   Label  @ 09,08 "Nome do Propriet rio" For "TG_NOMTRANSP"
   Accept @ 10,09 Width 22 "A20" picture "!*!" Tag "TG_NOMTRANSP" to VSDGNOMTRANSP
   
   Label  @ 09,31 "UF" For "TG_UFTRANSP"
   Accept @ 10,32 Width 05 "A2" picture "&*&" Tag "TG_UFTRANSP" to VSDGUFTRANSP
   
   Label  @ 09,37 "CNPJ/CPF" For "TG_CGCTRANSP"
   Accept @ 10,38 Width 21 "A18" picture "###.###.###-##,##.###.###/####-##" Tag "TG_CGCTRANSP" to VSDGCGCTRANSP
   
   Label  @ 09,59 "Inscri‡Æo Estadual" For "TG_IETRANSP"
   Accept @ 10,60 Width 18 "A15" picture "ISENTO,#*#" Tag "TG_IETRANSP" to VSDGIETRANSP
   
   Label  @ 11,00 "Tipo de Propriet rio" For "TG_TPTRANSP"
   Accept @ 12,01 Width 04 "A1" picture "#*#" Tag "TG_TPTRANSP" to VSDGTPTRANSP
   Accept @ 12,06 Width 19 "A16" picture "!*!" Tag "TG_NOMTPTRANSP" to VSDGNOMTPTRANSP
   
   Label  @ 11,25 "RNTRC" For "TG_RNTRCTRANSP"
   Accept @ 12,26 Width 23 "A20" picture "#*#" Tag "TG_RNTRCTRANSP" to VSDGRNTRCTRANSP
   
EndDialog
Mouse Show

If RetVal
   Then Registro_Veiculo("Gravar")
EndIf
EndProc  ;  (Digita_Rvr)

;*******************************************************************************
;* Rotina para Buscar Condutor PadrÆo                                          *
;*******************************************************************************
Proc Busca_Condutor(COND)
Private COND, Condutor, Sequencia, S   

GetRecord "\\Sistemas\\Vendas\\Veiculos" COND To Condutor
If RetVal
   Then Condutor = Condutor["Codigo do Condutor"]
   Else Return
EndIf
If IsBlank(Condutor) 
   Then Return 
EndIf

Moveto "Mdfe_rvc"

S=0
Scan
  S=S+1
EndScan
If S < 10  
   Then Moveto [Codigo do Condutor]
        Locate Condutor
        If Not Retval
           Then End 
                Sequencia = [Sequencia da OM]
                Down
                If IsBlank(Sequencia)
                   Then [Sequencia da OM]=1
                   Else [Sequencia da OM]=NumVal(Sequencia)+1
                EndIf
                [Codigo do Condutor] = Condutor 
        EndIf
EndIf        
End Down Del

Moveto "Mdfe_rvr"

EndProc
;*******************************************************************************
;* Rotina para Gravacao/Leitura do Item                                        *
;*******************************************************************************
Proc Registro_Veiculo(Funcao_Registro)
Private Funcao_Registro

Switch
  Case Funcao_Registro="Gravar":
       [Sequencia da OM         ]=VSDGSEQV
       If VSDGSEQV=1
          Then [Tipo do Veiculo ]="TRACAO"
          Else [Tipo do Veiculo ]="REBOQUE"
       EndIf
       [Codigo do Veiculo       ]=VSDGVEICULO
       [Placa do Veiculo        ]=VSDGPLACAVEICULO
       [UF Veiculo              ]=VSDGUFVEICULO
       [RNTC Veiculo            ]=VSDGRNTRCVEICULO
       [CIOT Veiculo            ]=VSDGCIOTVEICULO
       [Tara em KG Veiculo      ]=VSDGTARA
       [Capacidade em KG Veiculo]=VSDGCAPACIDADEKG
       [Capacidade em M3 Veiculo]=VSDGCAPACIDADEM3
       [Tipo de Rodado Veiculo  ]=VSDGTPRODADO
       [Descricao_Rodado_Veiculo]=VSDGNOMTPRODADO
       [Tipo Carroceria Veiculo ]=VSDGTPCARROC
       [Descricao_Carroc_Veiculo]=VSDGNOMTPCARROC
       [Codigo da Transportadora]=VSDGTRANSP
       [Nome Fantasia Transport ]=VSDGNOMTRANSP
       [Tipo Proprietario       ]=VSDGTPTRANSP
       [Descricao_TpProprietario]=VSDGNOMTPTRANSP
       [CGC Transport           ]=VSDGCGCTRANSP
       [RNTC Transport          ]=VSDGRNTRCTRANSP
       [IE Transport            ]=VSDGIETRANSP
       [UF Transport            ]=VSDGUFTRANSP
       [CGC_CIOT Veiculo        ]=VSDGCGCCIOTVEICULO
       
       UnLockRecord
       SaveTables

  Case Funcao_Registro="Ler":
       VSDGSEQV          =[Sequencia da OM         ]
       VSDGVEICULO       =[Codigo do Veiculo       ]
       VSDGPLACAVEICULO  =[Placa do Veiculo        ]
       VSDGUFVEICULO     =[UF Veiculo              ]
       VSDGRNTRCVEICULO  =[RNTC Veiculo            ]
       VSDGCIOTVEICULO   =[CIOT Veiculo            ]
       VSDGTARA          =[Tara em KG Veiculo      ]
       VSDGCAPACIDADEKG  =[Capacidade em KG Veiculo]
       VSDGCAPACIDADEM3  =[Capacidade em M3 Veiculo]
       VSDGTPRODADO      =[Tipo de Rodado Veiculo  ]
       VSDGNOMTPRODADO   =[Descricao_Rodado_Veiculo]
       VSDGTPCARROC      =[Tipo Carroceria Veiculo ]
       VSDGNOMTPCARROC   =[Descricao_Carroc_Veiculo]
       VSDGTRANSP        =[Codigo da Transportadora]
       VSDGNOMTRANSP     =[Nome Fantasia Transport ]
       VSDGTPTRANSP      =[Tipo Proprietario       ]
       VSDGNOMTPTRANSP   =[Descricao_TpProprietario]
       VSDGCGCTRANSP     =[CGC Transport           ]
       VSDGRNTRCTRANSP   =[RNTC Transport          ]
       VSDGIETRANSP      =[IE Transport            ]
       VSDGUFTRANSP      =[UF Transport            ]
       VSDGCGCCIOTVEICULO=[CGC_CIOT Veiculo        ]

EndSwitch
EndProc   ;  (Registro_Veiculo)

;*******************************************************************************
;* Rotina para Iniciar Registro                                                *
;*******************************************************************************
Proc Inicia_Registro()

Home
While True
  If [Sequencia da OM]=SEQRVR
     Then QuitLoop
  EndIf   
  Skip
  If Eot() Then QuitLoop EndIf
EndWhile  
  
Registro_Veiculo("Ler")

EndProc ; (Inicia_Registro)

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE_RVC()

Moveto "Mdfe_rvc"
While True
  Moveto [Sequencia da OM]
  End
  SEQ=[Sequencia da OM]
  Down
  
  Moveto [Codigo do Condutor]
     
  SetaCorRegistro("Editar")
  While true

  TECLA="F4=Ve¡culos  F7=Vales  "
  MSGCAMPO=""  

  If Field()="Codigo do Condutor"  
     Then MSGCAMPO=field()
          MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
  EndIf
  
  AguardaTeclasPadraoIt()

  If RetVal=-33  
     Then MSGCAMPO=""
          
          ShowPopup " Fun‡”es " CENTERED
          "F4  Ve¡culos Tra‡Æo/Reboque" : " Ve¡culos Tra‡Æo/Reboque" : "F4",
          "F7  Vale Ped gio"            : " Vale Ped gio"            : "F7",
          "~C~ancelar"                  : " Cancelar a Opera‡Æo"     : "CANCELAR"
          EndMenu
          To MenuVar
          echo off
         
          If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Loop
          EndIf
          RetVal=MenuVar
  EndIf
    Switch
      Case RetVal=-94 : MsgTeclasPadrao()
      Case Retval="F1":   
         If Field()="Codigo do Condutor" 
            Then ConsultaF1()
         EndIf
      Case RetVal="F4" Or RetVal="F7":
           Del 
           ChaveP=RetVal
           CHAVERVC=9
           Return
      Case Retval="ESC":       
           Del
           ChaveP="Fim"
           CHAVERVC=9
           Return
      Case RetVal="UP" Or RetVal="HOME":    
           While True
             PAGINA("Mdfe_rvc","MR")
             If EDITAR="S"
                Then CHAVERVC=0
                     Controla_EdicaoRVC()
                Else If EXCLUIR="S"
                        Then If QuerExcluir("")
                                Then del
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case RetVal="ENTER":       
           If IsBlank([Sequencia da OM])
              Then If IsBlank(SEQ)
                      Then [Sequencia da OM]=1
                      Else [Sequencia da OM]=NumVal(SEQ)+1
                   EndIf
           EndIf
           SEQ=[Sequencia da OM]
           CODCON=[Codigo do Condutor]
           SE=0
           Scan
             SE=SE+1
           EndScan
           If SE>10  
              Then Mensagem("N£mero m ximo de Condutores permitidos ‚ 10 !")
                   Del
                   QuitLoop
           EndIf
           If Not IsBlank([Codigo do Condutor])
              Then Del
                   Moveto [Codigo do Condutor]
                   Locate CODCON
                   If Retval
                      Then CHAVERVC=0
                      Else CHAVERVC=1
                           End 
                           If Not IsBlank([Sequencia da OM])
                              Then Down
                           EndIf
                           [Sequencia da OM]=SEQ
                           [Codigo do Condutor]=CODCON
                   EndIf
              Else CHAVERVC=1
           EndIf        
           If IsLockRecord()
            Then If CHAVERVC=1 Then Del EndIf
                 QuitLoop
           EndIf
           Return
    EndSwitch
  EndWhile
EndWhile

EndProc  ; (CHAVE_RVC)

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

Moveto [Nome do Condutor] 
While True
  
  TECLA=" Esc=Retornar  "
  If CHAVERVC=0
     Then TECLA=TECLA+"Del=Excluir  "
     Else TECLA=TECLA+"             "
  EndIf
  MSGCAMPO=field()
  
  Prompt TECLA
  SetaCorRegistro("Editando")
  
  Wait Field
       Until "ESC","ENTER","DEL","FIELDVIEW","F35","F1"

  Switch
    Case Retval="F1":   
         If Field()="Codigo do Condutor" 
            Then ConsultaF1()
         EndIf
    Case Retval="ESC":
         If Field()="Nome do Condutor"
            Then If QuerDesfazer("")
                    Then If CHAVERVC=1
                            Then Del
                            Else If RecordStatus("Modified")
                                    Then Undo
                                 EndIf
                         EndIf
                         CHAVERVC=9
                         QuitLoop
                 EndIf
            Else Left
         EndIf
    Case Retval="ENTER":   
         If IsBlank([]) 
            Then Loop
         EndIf
         If Field()="CPF do Condutor"
            Then CPF=[]
                 If Not Checa_CGC_CPF_Formatado(CPF) Then Loop EndIf
         EndIf
         If Field()="CPF do Condutor"
            Then QuitLoop
            Else Right
         Endif
    Case Retval="FIELDVIEW" or Retval="F35":
         EDITFIELD()
    Case Retval="DEL":
         If CHAVERVC=0
            Then If QuerExcluir("")
                    Then DEL
                         QuitLoop
                 EndIf
         EndIf
  EndSwitch
EndWhile
EndProc  ; (Digita_Rvc)

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE_RVP()

Moveto "Mdfe_rvp"
While True
  Moveto [Sequencia da OM]
  End
  SEQ=[Sequencia da OM]
  Down
  
  Moveto [Sequencia da OM]
     
  SetaCorRegistro("Editar")
  While true

  TECLA="F4=Ve¡culos  F6=Condutores  "
  MSGCAMPO=""
  AguardaTeclasPadraoIt()

  If RetVal=-33  
     Then MSGCAMPO=""
          
          ShowPopup " Fun‡”es " CENTERED
          "F4  Ve¡culos Tra‡Æo/Reboque" : " Ve¡culos Tra‡Æo/Reboque" : "F4",
          "F6  Condutores"              : " Condutores"              : "F6",
          "~C~ancelar"                  : " Cancelar a Opera‡Æo"     : "CANCELAR"
          EndMenu
          To MenuVar
          echo off
 
          If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Loop
          EndIf
          RetVal=MenuVar
    EndIf
    Switch
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F4" Or RetVal="F6":
           Del 
           ChaveP=RetVal
           CHAVERVP=9
           Return
      Case Retval="ESC":       
           Del
           ChaveP="Fim"
           CHAVERVP=9
           Return
      Case RetVal="UP" Or RetVal="HOME":    
           While True
             PAGINA("Mdfe_rvp","MR")
             If EDITAR="S"
                Then CHAVERVP=0
                     Controla_EdicaoRVP()
                Else If EXCLUIR="S"
                        Then If QuerExcluir("")
                                Then del
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case RetVal="ENTER":  
           If IsBlank([Sequencia da OM])
              Then If IsBlank(SEQ)
                      Then [Sequencia da OM]=1
                      Else [Sequencia da OM]=NumVal(SEQ)+1
                   EndIf
           EndIf
           SEQ=[Sequencia da OM]
           Del
           Moveto [Sequencia da OM]
           Locate SEQ
           If Retval
              Then CHAVERVP=0
              Else CHAVERVP=1
                   End 
                   If Not IsBlank([Sequencia da OM])
                      Then Down
                   EndIf
                   [Sequencia da OM]=SEQ
           EndIf
           If IsLockRecord()
            Then If CHAVERVP=1 Then Del EndIf
                 QuitLoop
           EndIf
           Return
    EndSwitch
  EndWhile
EndWhile

EndProc  ; (CHAVE_RVP)

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

Moveto [CNPJ Fornecedora]
While True
  
  TECLA=" Esc=Retornar  "

  If CHAVERVP=0
     Then TECLA=TECLA+"Del=Excluir  "
  EndIf
  MSGCAMPO=""

  Prompt TECLA
  SetaCorRegistro("Editando")
  
  Wait Field
       Until "ESC","ENTER","DEL","FIELDVIEW","F35"

  Switch
  Case Retval="ESC":
       If Field()="CNPJ Fornecedora"
          Then If QuerDesfazer("")
                  Then If CHAVERVP=1
                          Then Del
                          Else If RecordStatus("Modified")
                                  Then Undo
                               EndIf
                       EndIf
                       CHAVERVP=9
                       QuitLoop
               EndIf
          Else Left
       EndIf
  Case Retval="ENTER":   
       If IsBlank([]) And Field()<>"CNPJ Responsavel"
          Then Loop
       EndIf
       If Not IsBlank([])
          Then If Field()="CNPJ Fornecedora" Or Field()="CNPJ Responsavel"
                  Then CNPJ=[]
                       If Not Checa_CGC_CPF_Formatado(CNPJ) Then Loop EndIf
               EndIf
       EndIf
       If Field()="Valor do Vale_Pedagio"
          Then QuitLoop
          Else Right
       Endif
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVERVP=0
          Then If QuerExcluir("")
                  Then DEL
                       QuitLoop
               EndIf
       EndIf
  EndSwitch
EndWhile
EndProc  ; (Digita_Rvp)
     
;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE_MDD()

Moveto "Mdfe_mdd"
While True
  Moveto [Sequencia da OM]
  End
  SEQ=[Sequencia da OM]

  Down
  Down
  Moveto [Sequencia da OM]
  
  Seta_Sequencia(SEQ,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf
  Atualiza()
  Moveto [Sequencia da OM]
     
  SetaCorRegistro("Editar")
  While true
  
    TECLA="F2=NF-e Livre PgUp/PgDn"
    MSGCAMPO=""
    AguardaTeclasPadraoIt()
    
    If RetVal=-33 and Field()="Sequencia da OM"  
       Then
            ShowPopup " Fun‡”es " CENTERED
            "F4  ~S~elecionar Notas Fiscais" : " Selecionar Notas Fiscais" : "F4",
            "F5  ~L~impar Notas Fiscais"     : " Limpar Notas Fiscais"     : "F5",
            "~C~ancelar"                     : " Cancelar a Opera‡Æo"      : "CANCELAR"
            EndMenu
            To MenuVar
            echo off
     
            If MenuVar="CANCELAR" or MenuVar="Esc"
               Then Loop
            EndIf
            RetVal=MenuVar
    EndIf
             
    switch
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="F2":
           CHAVEMDD=1
           if CHAVE_LIVRE()
              then Atualiza()
                   Return
           endif
           quitloop
           
      Case RetVal="F4":   
           Del
           BUSCA_NOTAS()
           QuitLoop
      Case RetVal="F5":   
           del
           If QuerExcluir("")
              Then While RecordStatus("New")=False
                         Atualiza()
                         EXCLUSAOMDD()
                   EndWhile
           EndIf                 
           QuitLoop     
      Case Retval="PGDN":     
           Del
           If RecordStatus("New")=True   
              Then Mensagem("Notas Fiscais nÆo Cadastradas !")
                   quitLoop
              Else CHAVEMDD=3
                   Return
           EndIf
      Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
           del
           If RetVal="PGUP"
              Then CHAVEMDD=9
                   Return
           EndIf
           
           While True
             PAGINA2("Mdfe_mdd","MR")
             If EDITAR="S"
                Then SEQ=[Sequencia da OM] 
                     CHAVEMDD=0
                     Atualiza()
                     
                     if not isblank([Numero do Documento])
                        then Controla_Pagina2("F3")
                        else if CHAVE_LIVRE()
                                then Controla_Pagina2("F3")
                             endif   
                     endif   
                Else If EXCLUIR="S"
                        Then If QuerExcluir("")
                                Then Atualiza()
                                     EXCLUSAOMDD()
                                Else UnLockRecord
                             EndIf
                        else quitloop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
  
        Case Retval="ESC":
           CHAVEMDD=9
           Del
           Return
             
        Case RetVal="ENTER":
           If IsBlank([Sequencia da OM])
              Then If IsBlank(SEQ)
                      Then [Sequencia da OM]=1
                      Else [Sequencia da OM]=NumVal(SEQ)+1
                   EndIf
           EndIf
           SEQ=[Sequencia da OM]
           Del
           Moveto [Sequencia da OM]
           Locate SEQ
           If Retval
              Then CHAVEMDD=0
                   SetaCorRegistro("Paginar")
                   Atualiza() 
                   Return
              Else CHAVEMDD=1
                   End 
                   If Not IsBlank([Sequencia da OM])
                      Then Down
                           Down
                   EndIf
                   [Sequencia da OM    ]=SEQ
                   [Codigo do Documento]="NFE1" 
           EndIf
           If IsLockRecord()
              Then If CHAVEMDD=1 Then Del EndIf
              else if DIGITA_MDD()
                      then 
                           SetaCorRegistro("Paginar")
                           Atualiza()
                           return
                   endif   
           EndIf
           quitloop
    EndSwitch
  endwhile
EndWhile

EndProc  ; (CHAVE_MDD)


;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc CHAVE_LIVRE()
        
[Numero do Documento]=""
[Codigo do Documento]=""
[Serie do Documento ]=""

Moveto [Chave_Acesso_NFe]  
           
While true

  TECLA=" Esc=Retornar  "
  MSGCAMPO=Field()
  
  If Field()="Cidade" or
     Field()="UF"
     Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
  EndIf
  
  prompt tecla

  Wait Field
       Until "ESC","ENTER","FIELDVIEW","F35","F1"
  
  Switch
    Case RetVal="F1":   
         If Field()="Cidade" Or
            Field()="UF" 
            Then if ConsultaF1() and Field()="Cidade"
                    then [UF]=Reg_ConsultaF1["UF"]
                 endif   
         EndIf
          
    Case Retval="ESC":
      Switch
         Case Field()="Chave_Acesso_NFe":
           if CHAVEMDD=1         
              then Del
           endif   
           return false  
           
         Case Field()="Valor Nota Fiscal":
           Moveto [Chave_Acesso_NFe]
           
        OtherWise: Left
      EndSwitch
         
    Case RetVal="ENTER":
      Switch

        Case Field()="Chave_Acesso_NFe":
          if isblank([])  then fastmsg("Valor inv lido !") loop endif
          if len([])<44   then fastmsg("Chave inv lida !") loop endif
          [Modelo do Documento]="55"

          moveto [Valor Nota Fiscal]

        Case Field()="Valor Nota Fiscal":
          if isblank([]) or []=0 then fastmsg("Valor inv lido !") loop endif
          moveto [Cidade]

        Case Field()="Cidade":
          if isblank([]) then fastmsg("Valor inv lido !") loop endif
          moveto [UF]
          
        Case Field()="UF":
          if isblank([]) then fastmsg("Valor inv lido !") loop endif
          
          GetRecord "\\Sistemas\\Cadastro\\Cidades" [Cidade],[UF] to reg_cidades
          if not retval
             then fastmsg("Cidade inv lida !") loop 
          endif
          [Cidade_Codigo]=reg_cidades["Codigo_Cidade"]
          [Cidade_UF    ]=reg_cidades["Codigo_UF"]
          unlockrecord
          
          release vars reg_Cidades
          
          return true      

         OtherWise: Right
      EndSwitch
  EndSwitch
EndWhile

EndProc  ; (CHAVE_LIVRE)

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc DIGITA_MDD()

moveto [Numero do Documento]

While true

  If Field()="Codigo do Documento"
     Then Monta_Opcoes("Codigo do Documento","MDF")
  EndIf

  TECLA=" Esc=Retornar  "
  MSGCAMPO=Field()

  If Field()="Codigo do Documento"
     Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
  EndIf
  
  prompt tecla

  Wait Field
       Until "ESC","ENTER","FIELDVIEW","F35","F1"
  
  Switch
    Case RetVal="F1":   
         If Field()="Codigo do Documento"
            Then Seleciona_Opcoes("Codigo do Documento","CR")
         EndIf
          
    Case Retval="ESC":
      Switch
         Case Field()="Numero do Documento":
           Del
           return false
        OtherWise: Left
      EndSwitch
         
    Case RetVal="ENTER":
      Switch

        Case Field()="Numero do Documento":
             [Numero do Documento]=AlinhM([Numero do Documento],6)
             Moveto [Codigo do Documento]
        Case Field()="Codigo do Documento":    
             NUMERO = [Numero do Documento]
             MODELO = [Codigo do Documento] 
             SERIE  = [Serie do Documento ]
             del
             Ok =True
             
             Do_It!
             FormKey
              
             Moveto "Mdfe_mdd"
             Moveto [Numero do Documento]
             OrderTable {Ind01}
             Locate IndexOrder by "Ind01" NUMERO, MODELO, SERIE
             If RetVal
                Then GetRecord "\\Sistemas\\MDFE\\Mdfe_C" [Mdfe_Mdd->Numero da OM] To NFEC
                     If RetVal
                        Then NFEC = NFEC["Situacao"]
                        Else NFEC = ""
                     EndIf   
                     If NFEC<>"C"
                        Then Ok = False
                     EndIf   
             EndIf  
               
             Moveto "MDFE_C"
             FormKey
             CoEditKey
              
             Moveto "Mdfe_mdd"
             
             End
             Down
             Down
             [Sequencia da OM    ]=SEQ
             [Numero do Documento]=NUMERO
             [Codigo do Documento]=MODELO
             Moveto [Numero do Documento]
             If Not Ok 
                Then MENSAGEM("Esta Nota Fiscal j  foi Selecionada,//Ou est  lan‡ada em outro MDFE !")
                     Loop 
             EndIf
             GetRecord "\\Sistemas\\Vendas\\NOTAC" [MDFE_C->Codigo da Empresa], [Numero do Documento], [Serie do Documento] To NOTA 
             If Not Retval Or NOTA["Situacao"]="C"
                Then Mensagem("Nota Fiscal nÆo existente no Sistema ou est  Cancelada !") 
                     Loop
                Else GetRecord "\\Sistemas\\Cadastro\\Tpdoctos" NOTA["Codigo do Documento"] To TPDOC
                     If RetVal 
                        Then If TPDOC["Modelo do Documento"] = "55" 
                                Then 
                                     ufok=true
                                     msg =""
                                     switch
                                       case NOTA["Tipo Movimento Estoque"]="S" and NOTA["UF"]<>[Mdfe_C->UF Descarregamento]: 
                                         ufok=false
                                         msg ="Nota Fiscal nÆo pertence a UF de Descarregamento !"

                                       case NOTA["Tipo Movimento Estoque"]="E" and NOTA["UF"]<>[Mdfe_C->UF Carregamento]   :
                                         ufok=false
                                         msg ="Nota Fiscal nÆo pertence a UF de Carregamento !"

                                     endswitch
                                     
                                     if ufok
                                        Then 
                                             [Data de Emissao    ]= NOTA["Data de Emissao"    ]
                                             [Hora de Saida      ]= NOTA["Hora de Saida"      ]
                                             [Valor Nota Fiscal  ]= NOTA["Valor Nota Fiscal"  ]
                                             [ISUFRAMA           ]= NOTA["ISUFRAMA"           ]
                                             [UF                 ]= NOTA["UF"                 ]
                                             [Chave_Acesso_Nfe   ]= NOTA["Chave_Acesso_Nfe"   ]
                                             [CGC                ]= NOTA["CGC"                ]
                                             [Cidade             ]= NOTA["Cidade"             ]
                                             [Codigo do Documento]= NOTA["Codigo do Documento"]
                                             [Peso Bruto         ]= NOTA["Peso Bruto"         ]
                                             VSDSEQD            =[Sequencia da OM]
                                             GetRecord "\\Sistemas\\Cadastro\\Cidades" [Cidade], [UF] To CID 
                                             If Retval 
                                                Then [Cidade_Codigo]=CID["Codigo_Cidade"]
                                                     [Cidade_UF    ]=CID["Codigo_UF"    ]
                                             EndIf
                                             Return true  
                                        Else 
                                             Mensagem(msg)
                                             Loop
                                     EndIf  
                                Else Mensagem("Nota Fiscal inv lida // Selecione apenas Nota Fiscal Eletr“nica !")
                                     Loop
                             EndIf        
                     EndIf              
             EndIf
         OtherWise: Right
      EndSwitch
  EndSwitch
EndWhile

EndProc  ; (DIGITA_MDD)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc Busca_Notas_Dialog(Disparo,Campo,Evento,Elemento)

Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] = -59: 
          If Campo="TG_REPRESEN"  Or
             Campo="TG_NCARREG"     
             Then 
                  Dynarray WinArray5[]
                  Window Handle Dialog to JANELA
                  Window GetAttributes JANELA To WinArray5
                  WinArray5["FLOATING"]=False
                  Window SetAttributes JANELA From WinArray5
          
                  If Campo="TG_REPRESEN"    Then Moveto [Codigo do Representante] EndIf
                  If Campo="TG_NCARREG"     Then Moveto [Numero_Carregamento    ] EndIf
                    
                  If ConsultaF1()
                     Then 
                          Switch
                             Case Campo="TG_REPRESEN" : VSDGREPRESEN = Reg_ConsultaF1["Codigo do Representante"]
                                                        VSDGNOMREPR  = Reg_ConsultaF1["Nome Fantasia Represent"]

                             Case Campo="TG_NCARREG"  : VSDGNCARREG   =Reg_ConsultaF1["Numero_Carregamento"    ]
                                                        VSDGNOMNCARREG=Reg_ConsultaF1["Tipo_Carregamento"      ]
                             
                             
                          EndSwitch
                  EndIf
                  
                  Window Select JANELA
                  WinArray5["FLOATING"]=True
                  Window SetAttributes JANELA From WinArray5
          
                  echo Normal
                  echo off
          
                  if isblank([Numero do Documento])
                     then del
                     else unlockrecord
                  endif   
                  
             Else Dialog_F1()
          EndIf
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_NCARREG"        : Campo="NO"
            Case Campo="TG_REPRESEN"       : Campo="TG_NCARREG"
            Case Campo="TG_DTINI"          : Campo="TG_REPRESEN"
            Case Campo="TG_DTFIM"          : Campo="TG_DTINI"
            Case Campo="YES" Or Campo="NO" : Campo="TG_NCARREG"
          EndSwitch
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or 
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13: 
          Temp=False
          Switch
            Case Campo="TG_NCARREG"     :
                 VSDGNCARREG=ControlValue("TG_NCARREG")
                 If Not IsBlank(VSDGNCARREG)
                   Then VSDGNCARREG=AlinhNL(VSDGNCARREG,6)
                        getrecord "\\Sistemas\\Vendas\\AcCarrgC"  VSDGNCARREG to regaccarrgc
                        If Not RetVal
                           Then FastMsg("Carregamento n„o localizado !")
                           Else VSDGNOMNCARREG=regaccarrgc["Tipo_Carregamento"]

                                Campo="YES"
                                VSDGREPRESEN=""
                                VSDGNOMREPR =""
                                VSDGDTINI   =BlankDate()
                                VSDGDTFIM   =Today()    

                        EndIf
                   Else VSDGNOMNCARREG="Todos"
                        Campo="TG_REPRESEN"
                 EndIf
    
            Case Campo="TG_REPRESEN"      : 
                 VSDGREPRESEN=ControlValue("TG_REPRESEN")
                 If Not IsBlank(VSDGREPRESEN)
                    Then VSDGREPRESEN=AlinhM(VSDGREPRESEN,4)
                         GetRecord "\\Sistemas\\Cadastro\\Represen" VSDGREPRESEN To NOME 
                         If Retval 
                            Then VSDGREPRESEN = NOME["Codigo do Representante"]
                                 VSDGNOMREPR  = NOME["Nome Fantasia Represent"]
                                 Campo="TG_DTINI"
                            Else fastmsg("Representante n„o Cadastrado !")
                                 VSDGNOMREPR = ""
                         EndIf
                    Else VSDGNOMREPR = "Todos"
                         Campo="TG_DTINI"
                 EndIf
            OtherWise :
                 If Checa_TAG()
                    Then Switch
                           Case Campo="TG_DTINI"         : 
                                If Not IsBlank(VSDGDTINI)
                                   Then Campo="TG_DTFIM"
                                EndIf                               
                           Case Campo="TG_DTFIM"         : Campo="YES"
                         EndSwitch
                 EndIf
          EndSwitch               
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_DTFIM":
     MSG_CAMPO="Informe a Data Final"
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc

;*******************************************************************************
;* Rotina para Buscar Notas                                                    *
;*******************************************************************************
Proc BUSCA_NOTAS()

VSDGDTINI     = BlankDate()
VSDGDTFIM     = BlankDate()
VSDGNCARREG   = ""
VSDGNOMNCARREG= ""
VSDGREPRESEN  = ""
VSDGNOMREPR   = ""

While True

  Showdialog "Buscar Notas Fiscais Emitidas" Proc "Busca_Notas_Dialog"
     Trigger "OPEN","ARRIVE"
     Key "F1","ENTER","ESC","TAB",
        -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
     @ 09,12 Height 11 Width 72
     
    Label  @ 00,00 "Carregamento" For "TG_NCARREG"
    Accept @ 01,01 Width 9  "A6"  Picture "[&,#][#*#]" Tag "TG_NCARREG"    To VSDGNCARREG
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMNCARREG" To VSDGNOMNCARREG

    Label  @ 02,00 "Representante"  For "TG_REPRESEN"
    Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN"  To VSDGREPRESEN
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMREPR" To VSDGNOMREPR
      
    Label  @ 04,00 "Per¡odo EmissÆo de" For "TG_DTINI"
    Accept @ 05,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 05,16 "at‚" For "TG_DTFIM"
    Accept @ 05,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM
      
    Pushbutton @ 07,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 07,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue
     
  EndDialog
  
  If Not RetVal Then QuitLoop EndIf
  
  If IsBlank(VSDGDTFIM) 
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf
  
  If Not Seleciona_Notas()
     Then MENSAGEM("N„o existem notas neste per¡odo !")
          Loop
  EndIf
  If MSGNOTAS
     Then MENSAGEM("Existem Notas Fiscais j  Selecionadas Ou lan‡adas em outro MDFE //"+
                   "Portanto, n„o ser„o inclu¡das neste lan‡amento !")
  EndIf   
  QuitLoop
  
EndWhile

EndProc  ;  (Digita_Rvr)

;*******************************************************************************
;* Rotina para Selecionar Registros                                            *
;*******************************************************************************
Proc Seleciona_Notas()
Private VSDGEMPRESA, UF, CONT, NAO_INSERIR, NUMOM, NDOC, CDOC, SDOC

Temp        = True
NUMOM       = [MDFE_C->Numero da OM      ]
VSDGEMPRESA = [MDFE_C->Codigo da Empresa ]
UF          = [MDFE_C->UF Descarregamento]
CONT        = [Sequencia da OM           ]
MSGNOTAS    = False
Do_It!

FormKey

{Ask} TypeIn "\\Sistemas\\Vendas\\NotaC" Enter
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Numero do Documento    ] Check
Moveto [Serie do Documento     ] Check 
Moveto [Codigo do Representante] TypeIn "~VSDGREPRESEN.."
Moveto [Situacao               ] TypeIn "Not C"
Moveto [Codigo do Documento    ] Check Example "CodDoc"
Moveto [Cidade                 ] Check Example "Cid"
Moveto [UF                     ] Check Example "Uf" TypeIn ", ~UF.."
Moveto [Data de Emissao        ] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
Moveto [Hora de Saida          ] Check
Moveto [Valor Nota Fiscal      ] Check
Moveto [ISUFRAMA               ] Check
Moveto [Chave_Acesso_Nfe       ] Check
Moveto [CGC                    ] Check
Moveto [Peso Bruto             ] Check
Moveto [Numero_Carregamento    ] TypeIn "~VSDGNCARREG.."


{Ask} TypeIn "\\Sistemas\\Cadastro\\Tpdoctos" Enter
Moveto [Codigo do Documento    ] Example "CodDoc"
Moveto [Modelo do Documento    ] Check TypeIn "55" 

{Ask} TypeIn "\\Sistemas\\Cadastro\\Cidades" Enter
Moveto [Cidade                 ] Example "Cid"
Moveto [UF                     ] Example "Uf"
Moveto [Codigo_Cidade          ] Check
Moveto [Codigo_UF              ] Check
Do_It!

Moveto "\\Sistemas\\Cadastro\\Cidades"  ClearImage
Moveto "\\Sistemas\\Cadastro\\Tpdoctos" ClearImage
Moveto "\\Sistemas\\Vendas\\NotaC"      ClearImage
       
If IsEmpty("Answer")
   Then Temp = False
   Else CoEdit "Answer"
        Scan
          NDOC = [Answer->Numero do Documento]
          CDOC = [Answer->Codigo do Documento] 
          SDOC = [Answer->Serie do Documento ]
          NAO_INSERIR = False
                
          Moveto "Mdfe_mdd"
          Moveto [Numero do Documento]
          OrderTable {Ind01}
          Locate IndexOrder by "Ind01" NDOC, CDOC, SDOC
          If RetVal
             Then GetRecord "\\Sistemas\\MDFE\\Mdfe_C" [Mdfe_Mdd->Numero da OM] To NFEC
                  If RetVal
                     Then NFEC = NFEC["Situacao"]
                     Else NFEC = ""
                  EndIf   
                  If NFEC<>"C"
                     Then NAO_INSERIR = True
                          MSGNOTAS    = True
                  EndIf   
          EndIf
          If Not NAO_INSERIR
             Then End
                  Down
                  CONT = CONT + 1
                  [Numero da OM           ] = NUMOM
                  [Sequencia da OM        ] = CONT
                  [Numero do Documento    ] = [Answer->Numero do Documento    ]
                  [Codigo do Documento    ] = [Answer->Codigo do Documento    ]
                  [Serie do Documento     ] = [Answer->Serie do Documento     ]
                  [Modelo do Documento    ] = [Answer->Modelo do Documento    ]
                  [Chave_Acesso_NFe       ] = [Answer->Chave_Acesso_NFe       ]
                  [Data de Emissao        ] = [Answer->Data de Emissao        ]
                  [Hora de Saida          ] = [Answer->Hora de Saida          ]
                  [Valor Nota Fiscal      ] = [Answer->Valor Nota Fiscal      ] 
                  [ISUFRAMA               ] = [Answer->ISUFRAMA               ]
                  [UF                     ] = [Answer->UF                     ]
                  [CGC                    ] = [Answer->CGC                    ]
                  [Cidade                 ] = [Answer->Cidade                 ]
                  [Cidade_Codigo          ] = [Answer->Codigo_Cidade          ]
                  [Cidade_UF              ] = [Answer->Codigo_UF              ]
                  [Peso Bruto             ] = [Answer->Peso Bruto             ]
                  unlockrecord
          EndIf
          
          Moveto "Answer"    
        EndScan
EndIf
Do_It!
Moveto "Answer"                         ClearImage
  
Moveto "MDFE_C"
FormKey
CoEditKey

Moveto "Mdfe_mdd"

Return Temp

EndProc   ;  (Seleciona)
     
;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE_UT()

Moveto "Mdfe_ut"
While True
  Moveto [Sequencia da UnidTransp]
  End
  SEQ=[Sequencia da UnidTransp]
  Down
  
  Moveto [Sequencia da UnidTransp]
     
  SetaCorRegistro("Editar")
  While true

  TECLA="F3=Undidade Cargas  "
  MSGCAMPO=""
  AguardaTeclasPadraoIt()

    Switch
      Case RetVal=-33 : SemFuncoes()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="UP" Or RetVal="HOME":    
           While True
             PAGINA("Mdfe_ut","MR")
             If EDITAR="S"
                Then CHAVEUT=0
                     Controla_EdicaoUT()
                Else If EXCLUIR="S"
                        Then If QuerExcluir("")
                                Then del
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case RetVal="F3" :
           Del 
           ChaveP=3
           CHAVEUT=9
           Return
      Case Retval="ESC":       
           Del
           ChaveP="Fim"
           CHAVEUT=9
           Return
      Case RetVal="ENTER":        
           If IsBlank([Sequencia da UnidTransp])
              Then If IsBlank(SEQ)
                      Then [Sequencia da UnidTransp]=1
                      Else [Sequencia da UnidTransp]=NumVal(SEQ)+1
                   EndIf
           EndIf
           SEQ =[Sequencia da UnidTransp]
           Del
           Moveto [Sequencia da UnidTransp]
           Locate SEQ
           If Retval
              Then CHAVEUT=0
              Else CHAVEUT=1
                   End 
                   If Not IsBlank([Sequencia da UnidTransp])
                      Then Down
                   EndIf
                   [Numero da OM           ]=[mdfe_c->Numero da OM          ]
                   [Sequencia do Documento ]=[mdfe_c->Sequencia do Documento]
                   [Sequencia da UnidTransp]=SEQ
           EndIf
           If IsLockRecord()
            Then If CHAVEUT=1 Then Del EndIf
                 QuitLoop
           EndIf
           Return
    EndSwitch
  EndWhile
EndWhile

EndProc  ; (CHAVE_UT)

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

Moveto [Tipo Unidade Transporte]
While True
  
  TECLA=" Esc=Retornar  "
  If CHAVEUT=0
     Then TECLA=TECLA+"Del=Excluir  "
     else TECLA=TECLA+"             "
  EndIf
  MSGCAMPO=""
  
  MSGCAMPO=Field()
  Switch
    Case Field()="Quantidade Rateada"       : MSGCAMPO="Digite a Quantidade no m ximo 999.99"
  EndSwitch
  
  If Field()="Tipo Unidade Transporte"  
     Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
  EndIf
  
  PROMPT TECLA
  SetaCorRegistro("Editando")

  Wait Field
       Until "ESC","ENTER","DEL","FIELDVIEW","F35","F1"

  Switch
  Case Retval="F1":
       If Field()="Tipo Unidade Transporte"
          Then MSGCAMPO=""
          
               ShowPopup "Unidade de Transporte" CENTERED
               "~1~-Rodovi rio Tra‡Æo " : " Tra‡Æo        " : "1",
               "~2~-Rodovi rio Reboque" : " Reboque       " : "2",
               "~7~-Outros            " : " Outros        " : "7",
               "~S~air                " : " Ignorar op‡äes" : "CANCELAR"
               EndMenu
               To MenuVar
               If MenuVar<>"CANCELAR" And MenuVar<>"Esc"
                   Then []=MenuVar
               EndIf                                                    
               Switch
                 Case [Tipo Unidade Transporte] = "1" : [Descricao Un_Transporte]="RODOVIARIO TRACAO"
                 Case [Tipo Unidade Transporte] = "2" : [Descricao Un_Transporte]="RODOVIARIO REBOQUE"  
                 Case [Tipo Unidade Transporte] = "7" : [Descricao Un_Transporte]="OUTROS"
               EndSwitch
       EndIf
  Case Retval="ESC":
       If Field()="Identificacao Unidade"
          Then Left 
       EndIf
       If Field()="Tipo Unidade Transporte"
          Then If QuerDesfazer("")
                  Then If CHAVEUT=1
                          Then Del
                          Else If RecordStatus("Modified")
                                  Then Undo
                               EndIf
                       EndIf
                       CHAVEUT=9
                       QuitLoop
               EndIf
          Else Left
       EndIf
  Case Retval="ENTER":   
       If IsBlank([]) And Field()<>"Quantidade Rateada"
          Then Loop
       EndIf
       If Field()="Tipo Unidade Transporte"
          Then Switch
                  Case [Tipo Unidade Transporte] = "1" : [Descricao Un_Transporte]="RODOVIARIO TRACAO"
                  Case [Tipo Unidade Transporte] = "2" : [Descricao Un_Transporte]="RODOVIARIO REBOQUE"  
                  Case [Tipo Unidade Transporte] = "7" : [Descricao Un_Transporte]="OUTROS"
                  OtherWise                            : Loop
               EndSwitch
               Right
       EndIf        
       If Field()="Quantidade Rateada"
          Then DIGITA_ARRAY("LACRES")
               QuitLoop
       EndIf   
       If Field()<>"Quantidade Rateada"
          Then Right
       Endif
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEUT=0
          Then If QuerExcluir("")
                  Then DEL
                       QuitLoop
               EndIf
       EndIf
  EndSwitch
EndWhile
EndProc  ; (Digita_Ut)

;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE_UC()

Moveto "Mdfe_uc"
While True
  Moveto [Sequencia da UnidCarga]
  End
  SEQ=[Sequencia da UnidCarga]
  Down
  
  Moveto [Sequencia da UnidCarga]
     
  SetaCorRegistro("Editar")
  While true

  TECLA="F3=Undidade Transporte  "
  MSGCAMPO=""
  AguardaTeclasPadraoIt()

    Switch
      Case RetVal=-33 : SemFuncoes()
      Case RetVal=-94 : MsgTeclasPadrao()
      Case RetVal="UP" Or RetVal="HOME":    
           While True
             PAGINA("Mdfe_uc","MR")
             If EDITAR="S"
                Then CHAVEUC=0
                     Controla_EdicaoUC()
                Else If EXCLUIR="S"
                        Then If QuerExcluir("")
                                Then del
                                Else UnLockRecord
                             EndIf
                        Else QuitLoop
                     EndIf
             EndIf
             SetaPosForm()
           EndWhile
           QuitLoop
      Case RetVal="F3" :
           Del 
           ChaveP=RetVal
           CHAVEUC=9
           Return
      Case Retval="ESC":       
           Del
           ChaveP="Fim"
           CHAVEUC=9
           Return
      Case RetVal="ENTER":  
           If IsBlank([Sequencia da UnidCarga])
              Then If IsBlank(SEQ)
                      Then [Sequencia da UnidCarga]=1
                      Else [Sequencia da UnidCarga]=NumVal(SEQ)+1
                   EndIf
           EndIf
           SEQ =[Sequencia da UnidCarga]
           Del
           Moveto [Sequencia da UnidCarga]
           Locate SEQ
           If Retval
              Then CHAVEUC=0
              Else CHAVEUC=1
                   End 
                   If Not IsBlank([Sequencia da UnidCarga])
                      Then Down
                   EndIf
                   [Numero da OM           ]=[mdfe_c->Numero da OM          ]
                   [Sequencia do Documento ]=[mdfe_c->Sequencia do Documento]
                   [Sequencia da UnidCarga ]=SEQ
           EndIf
           If IsLockRecord()
            Then If CHAVEUC=1 Then Del EndIf
                 QuitLoop
           EndIf
           Return
    EndSwitch
  EndWhile
EndWhile

EndProc  ; (CHAVE_UC)

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

Moveto [Tipo Unidade Carga]
While True
  
  TECLA=" Esc=Retornar  "
  If CHAVEUC=0
     Then TECLA=TECLA+"Del=Excluir  "
     else TECLA=TECLA+"             "
  EndIf
  MSGCAMPO=""
  
  MSGCAMPO=Field()
  Switch
    Case Field()="Quantidade Rateada"       : MSGCAMPO="Digite a Quantidade no m ximo 999.99"
  EndSwitch
  
  If Field()="Tipo Unidade Carga"  
     Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
  EndIf
  
  PROMPT TECLA
  SetaCorRegistro("Editando")
  
  Wait Field
       Until "ESC","ENTER","DEL","FIELDVIEW","F35","F1"
  
  Switch
  Case Retval="F1":
       If Field()="Tipo Unidade Carga"
          Then MSGCAMPO=""
          
               ShowPopup "Unidade de Carga" CENTERED
               "~1~-Container " : " Container     " : "1",
               "~2~-ULD       " : " ULD           " : "2",
               "~3~-Pallet    " : " Pallet        " : "3",
               "~4~-Outros    " : " Outros        " : "4",
               "~S~air        " : " Ignorar op‡äes" : "CANCELAR"
               EndMenu
               To MenuVar
               If MenuVar<>"CANCELAR" And MenuVar<>"Esc"
                   Then []=MenuVar
               EndIf                                                    
               Switch
                 Case [Tipo Unidade Carga] = "1" : [Descricao Un_Carga]="CONTAINER"
                 Case [Tipo Unidade Carga] = "2" : [Descricao Un_Carga]="ULD"  
                 Case [Tipo Unidade Carga] = "3" : [Descricao Un_Carga]="PALLET"
                 Case [Tipo Unidade Carga] = "4" : [Descricao Un_Carga]="OUTROS"
                 OtherWise                       : Loop
               EndSwitch
       EndIf
  Case Retval="ESC":
       If Field()="Identificacao Unidade"
          Then Left 
       EndIf
       If Field()="Tipo Unidade Carga"
          Then If QuerDesfazer("")
                  Then If CHAVEUC=1
                          Then Del
                          Else If RecordStatus("Modified")
                                  Then Undo
                               EndIf
                       EndIf
                       CHAVEUC=9
                       QuitLoop
               EndIf
          Else Left
       EndIf
  Case Retval="ENTER":   
       If IsBlank([]) And Field()<>"Quantidade Rateada"
          Then Loop
       EndIf
       If Field()="Tipo Unidade Carga"
          Then Switch
                  Case [Tipo Unidade Carga] = "1" : [Descricao Un_Carga]="CONTAINER"
                  Case [Tipo Unidade Carga] = "2" : [Descricao Un_Carga]="ULD"  
                  Case [Tipo Unidade Carga] = "3" : [Descricao Un_Carga]="PALLET"
                  Case [Tipo Unidade Carga] = "4" : [Descricao Un_Carga]="OUTROS"
                  OtherWise                       : Loop
                        EndSwitch 
               Right               
       EndIf
       If Field()="Quantidade Rateada"
          Then DIGITA_ARRAY("LACRES")
               QuitLoop
       EndIf   
       If Field()<>"Quantidade Rateada"
          Then Right
       Endif
  Case Retval="FIELDVIEW" or Retval="F35":
       EDITFIELD()
  Case Retval="DEL":
       If CHAVEUC=0
          Then If QuerExcluir("")
                  Then DEL
                       QuitLoop
               EndIf
       EndIf
  EndSwitch
EndWhile
EndProc  ; (Digita_Uc)

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

Moveto "Mdfe_mdd"
Moveto [Codigo do Documento]
QUANTCTE =0
QUANTCT  =0
QUANTNFE =0
QUANTNF  =0
Scan
 Switch
    Case [Codigo do Documento]="CT-E" :
         QUANTCTE=QUANTCTE+1
    Case [Codigo do Documento]="CTRC" :
         QUANTCT=QUANTCT+1
    Case [Modelo do Documento]="55" :
         QUANTNFE=QUANTNFE+1          
    Case SubStr([Codigo do Documento],1,3)="NF1" :
         QUANTNF=QUANTNF+1          
 EndSwitch   
EndScan
Moveto [Valor Nota Fiscal]
VALORTOTAL =0
Scan
  VALORTOTAL = VALORTOTAL+[Valor Nota Fiscal]  
EndScan
Moveto [Peso Bruto]
PESOBRUTO =0
Scan
  PESOBRUTO = PESOBRUTO+[Peso Bruto]  
EndScan
Moveto "Mdfe_C"
Moveto [Flag]
[Qdt_Total_CT-e           ]=QUANTCTE
[Qdt_Total_CT             ]=QUANTCT
[Qdt_Total_NF-e           ]=QUANTNFE
[Qdt_Total_NF             ]=QUANTNF
[Valor_Total_Merc_Carga   ]=VALORTOTAL
[Codigo_UN_Medida_Carga   ]="01"
[Descricao_UN_Medida_Carga]="KG"
[Peso_Total_Merc_Carga    ]=PESOBRUTO

SetaCorRegistro("Editar")  
While True
      TECLA=" Esc=Retornar  Alt+F=Fun‡äes                                PgUp/PgDn=Finalizar  "
      MSGCAMPO=""
      
      PROMPT TECLA
  
      MSGCAMPO=Field()
      Switch
        Case Field()="Valor_Total_Merc_Carga"   : MSGCAMPO="Digite o Valor Total da Mercadoria"
        Case Field()="Codigo_UN_Medida_Carga"   : MSGCAMPO="01-KG  02-TON"
        Case Field()="Peso_Total_Merc_Carga"    : MSGCAMPO="Digite o Peso Total da Mercadoria"
        Case Field()="Numero do Lacre"          : MSGCAMPO="Digite os N£meros do Lacres"      
        Case Field()="Arquivos XML"             : MSGCAMPO="Ex.: XX.XXX.XXX/XXXX-XX, XX.XXX.XXX/XXXX-XX"
        Case Field()="Observacao_Fisco"         : MSGCAMPO="Observa‡Æo do Fisco"
        Case Field()="Observacao_Contribuinte"  : MSGCAMPO="Observa‡Æo do Contribuinte"
        Case Field()="Flag"                     : MSGCAMPO="em pausa"
      EndSwitch                                     

      
      Wait Field
           Until "F1","F3","F4","F5","F8","ESC","ENTER","DEL","FIELDVIEW","F35","PGDN","PGUP",-33

      If Retval=-33   
         Then If Field()="Valor_Total_Merc_Carga" Or 
                 Field()="Codigo_UN_Medida_Carga" Or
                 Field()="Peso_Total_Merc_Carga"  Or
                 Field()="Flag"
                 Then MSGCAMPO=""
                      
                      ShowPopup " Fun‡”es " CENTERED
                      "F3  N£mero dos ~L~acres"                : " N£mero dos Lacres"                : "F3",
                      "F4  ~A~utorizados para Download do XML" : " Autorizados para Download do XML" : "F4",
                      "F5  Observa‡Æo do ~F~isco"              : " Observa‡Æo do Fisco"              : "F5",
                      "F8  Observa‡Æo do C~o~ntribuinte"       : " Observa‡Æo do Contribuinte"       : "F8",
                      "~C~ancelar"                             : " Cancelar a Opera‡Æo"              : "CANCELAR"
                      EndMenu
                      To MenuVar
                      echo off
            
                      If MenuVar="CANCELAR" or MenuVar="Esc"
                         Then Loop
                      EndIf
                      RetVal=MenuVar
               EndIf
      EndIf
      Switch
          Case RetVal=-94 : MsgTeclasPadrao()
          Case Retval="F1":
               If Field()="Codigo_UN_Medida_Carga"
                  Then MSGCAMPO=""
                       
                       ShowPopup "Codigo UN Medida Carga" CENTERED
                       "~01~-KG " : " KG            " : "01",
                       "~02~-TON" : " TON           " : "02",
                       "~S~air " : " Ignorar op‡äes" : "CANCELAR"
                       EndMenu
                       To MenuVar
                       If MenuVar<>"CANCELAR" And MenuVar<>"Esc"
                           Then []=MenuVar
                       EndIf                                                    
                       Switch
                         Case [Codigo_UN_Medida_Carga] = "01" : [Descricao_UN_Medida_Carga]="KG"
                         Case [Codigo_UN_Medida_Carga] = "02" : [Descricao_UN_Medida_Carga]="TON"  
                         OtherWise                       : Loop
                       EndSwitch
               EndIf
          Case RetVal="F3":  
               If Field()="Valor_Total_Merc_Carga" Or 
                  Field()="Codigo_UN_Medida_Carga" Or
                  Field()="Peso_Total_Merc_Carga"  Or
                  Field()="Flag"
                  Then DIGITA_ARRAY("LACRES")
                       Loop
               EndIf
          Case RetVal="F4":        
               If Field()="Valor_Total_Merc_Carga" Or 
                  Field()="Codigo_UN_Medida_Carga" Or
                  Field()="Peso_Total_Merc_Carga"  Or
                  Field()="Flag"
                  Then DIGITA_ARRAY("XML")
                       Loop
               EndIf
          Case Retval="F5":
               CampoAnterior=Field()
               Edita_Memo("Observacao_Fisco",10,01,13,76,"Observa‡Æo do Fisco")
               Moveto Field CampoAnterior
          Case Retval="F8":
               CampoAnterior=Field()
               Edita_Memo("Observacao_Contribuinte",10,01,13,76,"Observa‡Æo do Contribuinte")
               Moveto Field CampoAnterior
          Case Retval="FIELDVIEW" or Retval="F35":
               EDITFIELD()
          Case RetVal="PGUP":    
               If IsBlank([Valor_Total_Merc_Carga]) Or
                  IsBlank([Codigo_UN_Medida_Carga]) Or
                  IsBlank([Peso_Total_Merc_Carga])
                  Then Loop
                  Else [Flag]=""
                       CHAVEV=9
                       Return
               EndIf        
          Case Retval="PGDN":  
               If IsBlank([Valor_Total_Merc_Carga]) Or
                  IsBlank([Codigo_UN_Medida_Carga]) Or
                  IsBlank([Peso_Total_Merc_Carga])
                  Then Loop
                  Else [Flag]=""
                       CHAVEV=3                                                                                 
                       Carrega_Parametros()
                       CONFIMPRIME()
                       QuitLoop 
               EndIf                               
          Case Retval="ESC":  
               Switch
                  Case Field()="Flag"  : 
                       CHAVEV=9 
                       QuitLoop                        
               EndSwitch
          Case Retval="ENTER":
               Switch
                  Case Field()="Flag"   :  
                       [Flag]=""
                       Loop
                  OtherWise                              : Right
               EndSwitch
      EndSwitch
EndWhile
EndProc ; (Digita_V)
     
;*******************************************************************************
;* Exclusao de Itens                                                           *
;*******************************************************************************
Proc EXCLUSAO()
If Not Isassigned(GRAVA_LOG) Then GRAVA_LOG=False EndIf

PickForm "1"
Moveto "Mdfe_rvr"
While RecordStatus("New")=False   
      Del
EndWhile
Moveto "Mdfe_rvc"
While RecordStatus("New")=False
      Del 
EndWhile
Moveto "Mdfe_rvp"
While RecordStatus("New")=False
      Del
EndWhile
Moveto "Mdfe_mdd"
While RecordStatus("New")=False
      Atualiza()
      EXCLUSAOMDD()
EndWhile
Moveto "Mdfe_c"
If GRAVA_LOG Then Grava_LogEx("MDFE") EndIf
Del

EndProc  ; (Exclusao)
     
;*******************************************************************************
;* Exclusao de Itens                                                           *
;*******************************************************************************
Proc EXCLUSAOMDD()
 
Moveto "Mdfe_ut"
While RecordStatus("New")=False
      Del
EndWhile
Moveto "Mdfe_uc"
While RecordStatus("New")=False
      Del
EndWhile
Moveto "Mdfe_mdd"
Del

EndProc  ; (Exclusao)
          
;*******************************************************************************
;*  ROTINA PARA PAGINACAO DE TABELA EM FORM                                    *
;*******************************************************************************
Proc Pagina2(TabIda,Tipo)
Private TABIDA,TIPO

SEMREGISTRO=False

Mouse Show
If RecordStatus("New")=True
   Then Del
EndIf

tpform =TIPO
EDITAR ="N"
EXCLUIR="N"
If RecordStatus("New")
   Then If SubStr(TIPO,1,2)="MT"
           Then MENSAGEM("Tabela sem Registros !")
        EndIf   
        Return
EndIf

Moveto TABIDA
If SubStr(TIPO,1,2)="MR"
   Then Switch
          Case RetVal="F7" or RetVal="HOME":
               Home
          Case RetVal="PGUP":
               PgUp
        EndSwitch
   Else Switch
          Case RetVal="F7" or RetVal="HOME":
               Home
        EndSwitch
EndIf
TABIDA=Table()

If Not IsAssigned(UltimaTabela_Pagina) Then UltimaTabela_Pagina="" EndIf
If Not IsAssigned(UltimoCampo_Pagina)  Then UltimaCampo_Pagina=""  EndIf

If UltimaTabela_Pagina=TABIDA 
   Then Moveto Field UltimoCampo_Pagina
   Else TEXTO_LOCATE=""
EndIf

FIELD_LOCATE=Field()

;;Atualiza()

ImageRights ReadOnly
SetaCorRegistro("Paginar")

msgcampo =""
prompt TEXTO_LOCATE

Switch
  Case IsAssigned(MODOFILTRAR) And MODOFILTRAR:

    SpeedBar "["+Chr(17)+"]"     :"ESC",
             "~Alterar~"         :"F9",
             "~Excluir~"         :"DEL",
             "~A->Z~"            :-145,
             "~Localizar~"       :"ZOOM",
             "~Loc~|"+Chr(16)    :"ZOOMNEXT",
             "~?~"               :-94,
             "|"+Chr(17)         :"HOME",
             Chr(17)             :"PGUP",
             Chr(16)             :"PGDN",
             Chr(16)+"|"         :"END"

  OtherWise:

    SpeedBar "["+Chr(17)+"]"     :"ESC",
             "~Alterar~"         :"F9",
             "~Excluir~"         :"DEL",
             "~Localizar~"       :"ZOOM",
             "~Loc~|"+Chr(16)    :"ZOOMNEXT",
             "~?~"               :-94,
             "|"+Chr(17)         :"HOME",
             Chr(17)             :"PGUP",
             Chr(16)             :"PGDN",
             Chr(16)+"|"         :"END"
    
EndSwitch

wait workspace
  proc "wait_pagina2"
  trigger "ALL"
  Message "ALL"
  Key "ALL"
endwait
  
ClearSpeedBar

If Table()<>TABIDA
   Then Moveto TABIDA
EndIf   
If EDITAR="S" Or EXCLUIR="S"
   Then UltimaTabela_Pagina=TABIDA 
        UltimoCampo_Pagina =Field()
        PegaPosForm()
   Else UltimaTabela_Pagina=""
        UltimoCampo_Pagina =""
EndIf
SetaCorRegistro("Editar")
ImageRights

EndProc

;*******************************************************************************
;* Rotina Wait p/ Pagina()                                                     *
;*******************************************************************************
proc wait_pagina2(triggertype,event,cyclenumber)
private ncampo,nrec

If triggertype="TOUCHRECORD" And Event["TYPE"]="MOUSE"
   Then If SubStr(tpform,1,2)="MR"
           Then If Not IsLockRecord()
                   Then EDITAR="S"
                        Return 2
                EndIf
        EndIf
        Return 1
EndIf

if triggertype="ARRIVEROW" or triggertype="OPEN"
   then Atualiza()
endif        

If Event["TYPE"]="KEY" And triggertype="EVENT"
   Then Switch
          Case event["KEYCODE"]=-145 And IsAssigned(MODOFILTRAR) And MODOFILTRAR:
               OrdenaCampo(Field())          
               Return 1

          Case event["KEYCODE"]=-94:

               MSG=    "      Esc= Voltar                                                //"
               MSG=MSG+" Enter/F9= Seleciona registro p/ alterar   [Lista/Ficha]         //"
               MSG=MSG+"      Del= Seleciona registro p/ excluir                         //"

               If IsAssigned(MODOFILTRAR) And MODOFILTRAR
                  Then MSG=MSG+"Ctrl+Down= Ordenar campo   [A->Z]                                //"
                  Else MSG=MSG+"                                                                 //"
               EndIf   

               MSG=MSG+"   Ctrl+Z= Localizar registro                                    //"
               MSG=MSG+"    Alt+Z= Localizar pr¢ximo registro                            // //"

               MSG=MSG+"     Home= primeiro registro     Up"+Chr(25)+"= registro anterior          //"
               MSG=MSG+"      End= £ltimo registro     Down"+Chr(24)+"= Pr¢ximo registro           //"
               MSG=MSG+"  Page Up= P gina anterior     * Ctrl+Page Up                    //"
               MSG=MSG+"Page Down= Pr¢xima p gina      * Ctrl+Page Down                  // //"
               
               MSG=MSG+"* Para localizar r pido bastar teclar no campo desejado! //"
               MSG=MSG+"       BackSpace= Limpa um caracter/localiza r pido      //"
               MSG=MSG+"  Ctrl+BackSpace= Limpar/localiza r pido                 // //"
               MSG=MSG+"  Ctrl+F1= Ajuda/Teclas [?]                                       "
               MsgHelp("Teclas/Fun‡”es",MSG)
               return 1
          Case event["KEYCODE"]=Asc("F35") Or
               event["KEYCODE"]=Asc("F1")  Or
               event["KEYCODE"]=Asc("F3")  Or
               event["KEYCODE"]=Asc("F4")  Or
               event["KEYCODE"]=Asc("F5")  Or
               event["KEYCODE"]=Asc("F6")  Or
               event["KEYCODE"]=Asc("F7")  Or
               event["KEYCODE"]=Asc("F8")  Or
               event["KEYCODE"]=Asc("F10") Or
               event["KEYCODE"]=Asc("F11") Or
               event["KEYCODE"]=Asc("F12") Or
               event["KEYCODE"]=-31        Or
               event["KEYCODE"]=-45        Or        
               event["KEYCODE"]=6 :        
               return 1
          Case Event["KEYCODE"]=Asc("ZOOM"):
               PESQUISA()
               Atualiza()
               prompt TEXTO_LOCATE
               return 1
          Case Event["KEYCODE"]=Asc("ZOOMNEXT"):
               PESQUISACON()
               Atualiza()
               return 1
          Case Event["KEYCODE"]=Asc("ESC"):
               Return 2
          Case Event["KEYCODE"]=Asc("DEL"):
               If Not IsLockRecord()
                  Then EXCLUIR="S"
                       Return 2
               EndIf
               Return 1
          Case Event["KEYCODE"]=Asc("F9") Or
               Event["KEYCODE"]=Asc("F2") Or
               Event["KEYCODE"]=Asc("ENTER") Or
               ISFIELDVIEW():
               If (Event["KEYCODE"]=Asc("ENTER") Or ISFIELDVIEW()) And tpform="MT"
                  Then Return 1
               EndIf
               If Not IsLockRecord()
                  Then EDITAR="S"
                       Return 2
               EndIf
               Return 1
          Case Event["KEYCODE"]=Asc("PGUP") Or
               Event["KEYCODE"]=Asc("PGDN"):
               If npages()=1
                  Then ncampo=Field()
                       KeyPress Event["KEYCODE"]
                       moveto field ncampo
                  Else KeyPress Event["KEYCODE"]
               EndIf  
               Atualiza()
               return 1
          Case Event["KEYCODE"]=Asc("UP"):
               If SubStr(tpform,1,2)="MR"
                  Then nrec=recno() 
                       ncampo=Field()
                       Up
                       If recno()=nrec
                          Then Up
                       EndIf   
                       moveto field ncampo
                       Atualiza()
                  Else Left
               EndIf
               Return 1

          Case Event["KEYCODE"]=Asc("DOWN"):
               If SubStr(tpform,1,2)="MR"
                  Then If Not AtLast()
                          Then nrec=recno() 
                               ncampo=Field()
                               Down
                               If recno()=nrec
                                  Then Down
                               EndIf   
                               moveto field ncampo
                               
                               Atualiza()
                               Return 1
                          Else If tpform="MR"
                                  Then Return 2
                                  Else Return 1
                               EndIf
                       EndIf
                  Else Right
               EndIf
               Return 1
               
          Case Event["KEYCODE"]=Asc("CTRLBACKSPACE"):
               TEXTO_LOCATE=""
               prompt TEXTO_LOCATE
               
               Return 1
          Case Event["KEYCODE"]=Asc("BACKSPACE"):
               If Field()<>FIELD_LOCATE
                  Then FIELD_LOCATE=Field()
                       TEXTO_LOCATE=""
                       prompt TEXTO_LOCATE
               Endif        

               TEXTO_LOCATE=SubStr(TEXTO_LOCATE,1,Len(TEXTO_LOCATE)-1)
               prompt TEXTO_LOCATE
               
               If Not IsBlank(TEXTO_LOCATE)
                  Then Zoom Select TEXTO_LOCATE+".."
                       Atualiza()
               EndIf   
               
               Return 1
          Case (Event["KEYCODE"]>=32 And Event["KEYCODE"]<=125):
               If Field()<>FIELD_LOCATE
                  Then FIELD_LOCATE=Field()
                       TEXTO_LOCATE=""
                       prompt TEXTO_LOCATE
               Endif        

               TEXTO_LOCATE=TEXTO_LOCATE+UPPER(Chr(Event["KEYCODE"]))
               prompt TEXTO_LOCATE
               Zoom Select TEXTO_LOCATE+".."

               Atualiza()
               Return 1
          OtherWise:
              ;KeyPress Event["KEYCODE"]
              ;return 1
      EndSwitch
endif

return 0

endProc
 
;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc Atualiza()
Private vrcampo

If Table()="Mdfe_mdd"
   Then vrcampo=[Mdfe_mdd->Sequencia da OM]
        Moveto "Mdfe_c"
        [Sequencia do Documento]=vrcampo
        resynckey
        
        Moveto "Mdfe_mdd"
EndIf
EndProc
   
;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()

Moveto "Mdfe_c"

FACA_DIGITAC   = True
While FACA_DIGITAC
  DIGITAC()
  SetaCorRegistro("Padrao")
  If CHAVEC = 9 Or REEMITIR Then QuitLoop EndIf

  FACA_CHAVE_MDD = True
  FACA_CHAVE_V   = True
  While FACA_CHAVE_MDD
    While True
      CHAVE_MDD()
      If CHAVEMDD = 9 
         Then FACA_CHAVE_MDD = False
              FACA_CHAVE_V   = False
              QuitLoop
      EndIf
      If CHAVEMDD = 3
         Then Moveto "Mdfe_mdd"
              If RecordStatus("Locked") Then UnLockRecord EndIf
      QuitLoop
      EndIf
      
      Controla_Pagina2("F3")
    EndWhile
    
    While FACA_CHAVE_V
      DIGITA_V()
      SetaCorRegistro("Padrao")
      If CHAVEV = 9 
         Then QuitLoop 
      EndIf
      FACA_CHAVE_MDD = False
      FACA_DIGITAC   = False
      QuitLoop        
    EndWhile  
  EndWhile
EndWhile
Moveto "Mdfe_c"
If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM="F"
   Then PickForm "F"
EndIf

SaveTables
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_Pagina1(ChaveP)
Private Campomdfec

PickForm "1"

Campomdfec=Field()
SetaCorRegistro("Padrao")
While ChaveP<>"Fim"
  
  Switch
    Case ChaveP="F4":
     While True
       CHAVE_RVR()
       If CHAVERVR=9                     
          Then QuitLoop
       EndIf
       Controla_EdicaoRVR() 
     EndWhile
    
    Case ChaveP="F6": 
     While True
       CHAVE_RVC()
       If CHAVERVC=9                   
          Then QuitLoop
       EndIf
       Controla_EdicaoRVC() 
     EndWhile
     
    Case ChaveP="F7": 
     While True
       CHAVE_RVP()
       If CHAVERVP=9
          Then QuitLoop
       EndIf
       Controla_EdicaoRVP() 
     EndWhile
  EndSwitch

  SetaCorRegistro("Padrao")
EndWhile

Moveto "Mdfe_C"
Moveto Field Campomdfec
SetaCorRegistro("Editar")
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_Pagina2(ChaveP)

While ChaveP<>"Fim"
  
  Switch
    Case ChaveP="F3": 
     While True
       CHAVE_UT()
       If CHAVEUT=9                     
          Then QuitLoop
       EndIf
       Controla_EdicaoUT() 
     EndWhile
     
    Case ChaveP=3:
     While True
       CHAVE_UC()
       If CHAVEUC=9                     
          Then QuitLoop
       EndIf
       Controla_EdicaoUC() 
     EndWhile
    
    
  EndSwitch

  SetaCorRegistro("Padrao")
EndWhile

Moveto "Mdfe_mdd"

EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoRVR()

Registro_Veiculo("Ler")
DIGITA_RVR()
Moveto "Mdfe_rvr"
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc
     
;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoRVC()
DIGITA_RVC()
Moveto "Mdfe_rvc"
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc
     
;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoRVP()
DIGITA_RVP()
Moveto "Mdfe_rvp"
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoUT()
DIGITA_UT()
Moveto "Mdfe_ut"
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoUC()
DIGITA_UC()
Moveto "Mdfe_uc"
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* ROTINA PARA CONFIRMACAO DE TESTE DE IMPRESSAO                               *
;*******************************************************************************
Proc CONFIMPRIME()
Private OPCAOC,NUM_MANIFESTO,EMP_MANIFESTO,OM_FATURADA, TIPO_SAIDA

PARAM_VISUALIZAR_DANFE=False
MSGCAMPO=""

UnLockRecord
Do_It!
SaveTables

CoEditKey                            
FormKey

TIPO_SAIDA=""
While TIPO_SAIDA=""
  ModoMDFe=""

  Switch
    Case REEMITIR And Not IsBlank(PARAM_DOC_MDFEN) And Not IsBlank([Numero do Documento]) : 
                      
      Opcaoc="MDFe"                
                      
    OtherWise:

      Echo Normal
      Echo Off
    
      ShowPopup " Op‡äes " CENTERED
          "~S~uspende                         " : " N„o Imprime no momento                 " : "Suspende",
        ;;"~P~r‚ Visualiza‡„o MDFE            " : " Pr‚ Visualizar Mafinesto Eletr“nico    " : "Visualizar",
          "Manifesto Doct. Fiscal/~E~letr“nico" : " Gera Manifesto Doct. Fiscal/Eletr“nico " : "MDFe" 
      EndMenu To Opcaoc
      echo off
    
      If Opcaoc="Esc" Or Not Retval Or Opcaoc="Suspende" or Opcaoc="Visualizar"
         Then If Opcaoc="Visualizar" Then Play "VIS_DANF" EndIf 
              QuitLoop
      EndIf
       
  EndSwitch

  ;***** Obtendo o Numero do Manifesto *******
  MDFEFISC ="000000"
  
  Switch
    Case SubStr(Opcaoc,1,4)="MDFe":
         If SubStr(PARAM_DOC_MDFEN,1,4)<>"MDF1" 
            Then Mensagem("Configura‡„o inv lida MDFe, ver parƒmetros !")
                 QuitLoop
         EndIf
         If Not MDFeautorizada("Status")
            Then QuitLoop
         Endif   
         
         opcaoc="MDFe em modo ["+ModoMDFe+"]"
         Switch
            Case ModoMDFe="NORMAL" : 
                 [Forma Emissao Manifesto]="1"
                 [Descricao Forma Emissao]="NORMAL"
            Case ModoMDFe="CONTINGENCIA" :
                 [Forma Emissao Manifesto]="2"
                 [Descricao Forma Emissao]="CONTINGENCIA"
         EndSwitch
         CODFISC  =PARAM_DOC_MDFEN
         SERIEFISC=PARAM_SER_MDFEN
         
  EndSwitch

  If IsBlank([Mdfe_C->Numero do Documento])
		 Then         
          Moveto "\\Sistemas\\Vendas\\NumeroNF"                               
          Moveto [Codigo da Empresa]
          Locate [Mdfe_C->Codigo da Empresa],CODFISC
          If RetVal
             Then While True
                    MDFEFISC = [Proximo Numero]
                    MDFEFISC = ALVAR(StrVal(MDFEFISC),6,"0")

                    LockRecord
                    If RetVal
                       Then QuitLoop
                    EndIf
                    MSG="O usu rio "+Upper(ErrorUser())+", esta gerando:// //"
                    MSG=MSG+Opcaoc+" N§ "+MDFEFISC+" !// //"
                    MSG=MSG+"Efetuar uma nova tentativa para//"
                    MSG=MSG+"libera‡„o do pr¢ximo n£mero para "+Opcaoc+" ?"
                    ConfGeral(MSG)
                    If OK<>"S"
                       Then Moveto "Mdfe_C"
                            UnLockRecord
                            FormKey
                            Return
                    EndIf
                  EndWhile
                  If [Mdfe_C->Data de Emissao]<[Data Ultima Emissao]
                     Then UnLockRecord
                          MSG=Opcaoc+",//com Data de Emiss„o inferior a data da ultima emiss„o!// //"
                          MSG=MSG+"Verificar no controle de numera‡„o !"
                          Mensagem(MSG)
                          QuitLoop
                  EndIf
             Else Mensagem("Empresa Sem Controle de Numera‡„o de "+Opcaoc+" !")
                  QuitLoop
          EndIf

     Else MDFEFISC=[Mdfe_C->Numero do Documento]
  EndIf

  If IsBlank([Mdfe_C->Numero do Documento])
     Then Moveto "Mdfe_C"
          NUM_MANIFESTO=[Numero da OM     ]
          EMP_MANIFESTO=[Codigo da Empresa]

          Moveto [Numero do Documento]
          Locate MDFEFISC
          If RetVal
             Then OM_FATURADA=False
                  While True
                    If [Codigo da Empresa ]=EMP_MANIFESTO And
                       [Docto Manifesto   ]=CODFISC       And
                       [Serie do Documento]=SERIEFISC
                       Then OM_FATURADA=True
                            QuitLoop
                    EndIf   
                    Skip
                    If EOT() Then Quitloop EndIf
                    Locate Next MDFEFISC
                    If Not RetVal
                       Then QuitLoop
                    EndIf
                  EndWhile
                  If OM_FATURADA
                     Then Moveto "\\Sistemas\\Vendas\\NumeroNF"
                          UnLockRecord

                          MSG=    "O pr¢ximo n§ "+Opcaoc+" "+MDFEFISC+" j  foi gerado pela //"
                          MSG=MSG+"Ordem de Manifesto n§ "+[Mdfe_C->Numero da OM]+"// //"
                          MSG=MSG+"Verificar no controle da numera‡„o se //"
                          MSG=MSG+"a ordem esta correta ou//"
                          MSG=MSG+"no registro dos manifestos a atual situa‡„o do mesmo. !// //"
                          MSG=MSG+"Emiss„o n„o permitida !"
                          Mensagem(MSG)
                          QuitLoop
                  EndIf
          EndIf


          Moveto [Numero da OM]
          Locate NUM_MANIFESTO
          If Not RetVal
             Then Moveto "\\Sistemas\\Vendas\\NumeroNF"
                  UnLockRecord

                  Mensagem("Erro ao localizar Ordem de Manifesto: "+NUM_MANIFESTO)
                  QuitLoop
             Else While True
                    If Not IsLockRecord()
                       Then QuitLoop
                    EndIf
                  EndWhile
          EndIf
  EndIf

  Moveto "Mdfe_C"
  ConfGeral("Confirma Emiss„o "+Opcaoc+" N§ "+MDFEFISC+" ?")
  If OK="N"
     Then TIPO_SAIDA = "LIBERA_NUMOM"
          QuitLoop
  EndIf

  Switch
    Case SubStr(Opcaoc,1,4)="MDFe":
         
         If Not MDFeautorizada("")
            Then GRAVA_CONTINGENCIA=True
                 If Not GRAVA_CONTINGENCIA
                    Then TIPO_SAIDA = "LIBERA_NUMOM"
                         QuitLoop
                 EndIf
                 
                 Play "MDFE_TX2"
                 If IsBlank([Numero do Documento])
                    Then [Modelo do Documento   ] = "58"
                         [Numero do Documento   ] = MDFEFISC
                         [Serie do Documento    ] = SERIEFISC
                         [Docto Manifesto       ] = CODFISC
                         [Chave Acesso Manifesto] = Id_3
                         Moveto "\\Sistemas\\Vendas\\NumeroNF"
                         Moveto [Codigo da Empresa]
                         Locate [Mdfe_C->Codigo da Empresa],CODFISC
                         If RetVal
                            Then [Proximo Numero        ] = [Proximo Numero] + 1
                                 [Data Ultima Emissao   ] = [Mdfe_C->Data de Emissao]
                                 UnLockRecord
                         EndIf
                         Moveto "Mdfe_C"
                 EndIf
                 QuitLoop
                  
            Else TIPO_SAIDA = "LIBERA_NUMOM"
                 QuitLoop
         EndIf
  EndSwitch

EndWhile

Switch
  Case TIPO_SAIDA = "LIBERA_NUMOM" : 
       If IsBlank([Mdfe_C->Numero do Documento])
          Then Moveto "\\Sistemas\\Vendas\\NumeroNF"
               UnLockRecord
       EndIf
EndSwitch

Moveto "Mdfe_C"
UnLockRecord
FormKey

SaveTables
EndProc   ; (ConfImprime)

;*******************************************************************************
;* Rotina para Impressao Geral (MDFE)                                          *
;*******************************************************************************
Proc MDFeautorizada(Tipo)
Private mdfeok, c, pos, pos2, mdfeserie, s, i

PastaMDFeManager =RTrim(PARAM_CAMINHO_MANAGER)
GrupoeDoc        =RTrim(PARAM_GRUPO_EDOC)
CNPJ_Manager     =Tira_CharNum(CNPJMDFe)                                                                
cancelada        =False
encerrada        =False  

If Not IsAssigned(ENCE) Then ENCE = False EndIf  
If Not IsAssigned(CANC) Then CANC = False EndIf

Switch
  Case GrupoeDoc<>"": ;*** EDOC ***
    PastaMDFeManagerMonitorar=PastaMDFeManager+"Monitorar\\"+GrupoeDoc+"\\MDFe\\"+CNPJ_Manager+"\\"
  OtherWise : PastaMDFeManagerMonitorar = ""
EndSwitch

mdfeok=False
While True

  If Tipo="Status" Or Tipo="Consulta" Then
    
    ;--- Carregando paramentros ----------------------------------------------------
    
    AmbienteMDFe   =""
    ModoMDFe       =""
    VersaoMDFe     =""
    
    Switch
      Case GrupoeDoc<>"": ;*** EDOC ***  
    
        ;--- Carregando paramentros .ini do Manger Edoc --------------------------------
        Aguarde("Verificando configura‡”es/Status do Manager eDoc !")
        
        conteudodoarquivo="" 
         
        Deleta_Arquivo(PrivDir()+"manager2.ini")
    
        FileWrite        PrivDir()+"funcao1.txt"  From  "EDOCS|"+PrivDir()+"|"+PastaMDFeManagerMonitorar+"|"+"Status.txt"+"\n"
        ExecVise(PrivDir()+"funcao1.txt")
        
        ;--- Carregando paramentros .ini por CNPJ --------------------------------------
        
        Aguarde("Verificando configura‡”es/Status do Manager eDoc CNPJ "+CNPJ_Manager+" !")
        conteudodoarquivo="" 
        mdfeok=true
      
        If Not LerConteudodoArquivo8(PrivDir()+"manager2.ini") Or
           conteudodoarquivo="" 
           Then MSG="Configura‡äes do Manager eDoc p/ verificar !// //"
            	  MSG=MSG+".ini do CNPJ "+CNPJ_Manager+", nÆo encontrado//" 
             	  MSG=MSG+"// Verifique com suporte vise !"
             		Mensagem(MSG)
            		QuitLoop
        EndIf   
      
        Pos=SearchFrom("[MDFE]",conteudodoarquivo,1)
        Pos2=SearchFrom("Ambiente=",conteudodoarquivo,pos)
        AmbienteMDFe=SubStr(conteudodoarquivo,pos2+9,1)
        
        Pos=SearchFrom("[MDFE]",conteudodoarquivo,1)
        Pos2=SearchFrom("VersaoManual=",conteudodoarquivo,pos)
        VersaoMDFe=SubStr(conteudodoarquivo,pos2+13,4)
        
        Pos=SearchFrom("[MDFE]",conteudodoarquivo,1)
        Pos2=SearchFrom("FusoHorario=",conteudodoarquivo,pos)
        Fuso_Horario=SubStr(conteudodoarquivo,pos2+12,6)
        
        Pos=SearchFrom("[MDFE]",conteudodoarquivo,1)
        Pos2=SearchFrom("ModoOperacao=",conteudodoarquivo,pos)
        S=Rtrim(SubStr(conteudodoarquivo,pos2+13,1))
        Switch
           Case S="N" : ModoMDFe="NORMAL"
           Case S="C" : ModoMDFe="CONTINGENCIA"
        EndSwitch   
           
        If IsBlank(ModoMDFe)
           Then MSG="Configura‡äes do Manager eDoc p/ verificar !// //"
            	  MSG=MSG+".ini do CNPJ "+CNPJ_Manager+", gravar configura‡äes.//" 
             	  MSG=MSG+"// Verificar tempo de resposta do computador muito lento !"
             	  MSG=MSG+"// Tente desativar antiv¡rus e outros programas !"
             		Mensagem(MSG)
                QuitLoop
        Endif   
    EndSwitch                                                         
  
  EndIf
  If Tipo="Status"
     Then QuitLoop
  EndIf   

  ;--- Verificando situa‡Æo do MDFe --------------------------------------------

  mdfeok=False
  
  If Not IsBlank([Numero do Documento]) And MDFEFISC<>"" And Not ENCE 
     Then If ([Mdfe_C->Situacao]="n!" Or
             [Mdfe_C->Situacao]="s!") And
             CANC = False
             Then Mensagem("MDFe "+MDFEFISC+" j„ foi enviado e autorizado no SEFAZ !")
                  mdfeok=true
                  QuitLoop
          EndIf        
  EndIf        
  ArqMDFE           ="mdfe"+StrVal(MDFEFISC)+".TX2"
  ArqMDFE_Consulta  =PastaMDFeManagerMonitorar+"Consulta\\"+ArqMDFE
  ArqMDFE_ConsultaR =PastaMDFeManagerMonitorar+"Consulta\\Retorno\\"+ArqMDFE
  ArqMDFE_Envia     =PastaMDFeManagerMonitorar+"Envia\\"+ArqMDFE

  Switch
    Case GrupoeDoc<>"": ;*** EDOC ***
      Aguarde("Consultando o MDFe "+MDFEFISC+" no Manager eDoc, aguarde at‚ 30 segundos !")
  EndSwitch

  s=""
  mdfeserie=SERIEFISC
  FileWrite PrivDir()+"managcon.txt" From "Campos=numero,serie,situacao\n"+
                                          "filtro=serie='"+mdfeserie+"' AND "+
                                          "numero="+StrVal(NumVal(MDFEFISC))+"\n"
  
  Deleta_Arquivo(PrivDir()+"managcon.ret")
  FileWrite        PrivDir()+"funcao2.txt" From "EDOCC|"+PrivDir()+"|"+PastaMDFeManagerMonitorar+"|"+ArqMDFE+"\n"
  ExecVisecf(PrivDir()+"funcao2.txt","")

  If ExisteArquivo(PrivDir()+"managcon.ret",0)
     Then s="1"
  EndIf
  
  If s=""
     Then Mensagem("Manager/eDoc da Empresa ["+NOMEMDFe+"],// n„o esta carregado/ocupado/inativo !// // Verifique o manager ou tente novamente !")
          mdfeok=true
     Else FileRead PrivDir()+"managcon.ret" to conteudodoarquivo
          cancelada = False
          Switch
            Case Search("AUTORIZADA",conteudodoarquivo)>0 And IsBlank([Numero do Documento]) And MDFEFISC<>"": 
                 MSG=    "MDFe "+MDFEFISC+" J  foi confirmada sua autoriza‡„o no SEFAZ !// //"
                 MSG=MSG+"Consulta o MDFe no Manager/eDoc !//"
                 MSG=MSG+"Verifique o controle de numera‡„o da nota se esta correta !"
                 Mensagem(MSG)
                 mdfeok=true
            Case Search("AUTORIZADA",conteudodoarquivo)>0:
                 Mensagem("MDFe "+MDFEFISC+" foi confirmada sua autoriza‡„o no SEFAZ !")
                 mdfeok=true
            Case Search("CANCELADA",conteudodoarquivo)>0:
                 Mensagem("MDFe "+MDFEFISC+" J  foi cancelado no SEFAZ !// //Confirme cancelamento no Sistema !")
                 mdfeok=true
                 cancelada = True
                 CANC= false
            Case Search("ENCERRADA",conteudodoarquivo)>0:
                 Mensagem("MDFe "+MDFEFISC+" J  foi autorizado e encerrado no SEFAZ !// //Confirme encerramento no Sistema !")
                 mdfeok=true
                 encerrada = True
           EndSwitch

           Switch
             Case IsBlank([Numero do Documento]) And MDFEFISC<>"":
    
               If not mdfeok and Search(",",conteudodoarquivo)>0
                  Then MSG=    "MDFe "+SubStr(conteudodoarquivo,1,65)+"!// // Consulte a situa‡„o da MDFe no Manager/eDoc !// //"
                       MSG=MSG+"Deseja reenviar este MDFe ?"
                       If ConfGeral(MSG)
                          Then mdfeok=False
                          Else mdfeok=true
                       EndIf   
               EndIf   
    
             Case Not IsBlank([Numero do Documento]) And MDFEFISC<>"":
                  
                  If mdfeok And (Search("AUTORIZADA",conteudodoarquivo)>0 Or Search("CANCELADA",conteudodoarquivo)>0 Or Search("ENCERRADA",conteudodoarquivo)>0)
                     Then
                          Switch 
                            Case Search("AUTORIZADA",conteudodoarquivo)>0 :                          
                                 Switch
                                   Case [Mdfe_C->Situacao]="n" : [Mdfe_C->Situacao]="n!" 
                                   Case [Mdfe_C->Situacao]="s" : [Mdfe_C->Situacao]="s!" 
                                 EndSwitch
                            Case Search("CANCELADA",conteudodoarquivo)>0  :    
                                 If [Mdfe_C->Situacao]="n" Or [Mdfe_C->Situacao]="s" 
                                    Then [Mdfe_C->Situacao]="C" 
                                 EndIf
                            Case Search("ENCERRADA",conteudodoarquivo)>0  :    
                                 If [Mdfe_C->Situacao]="n" Or [Mdfe_C->Situacao]="s" 
                                    Then [Mdfe_C->Situacao]="E" 
                                 EndIf      
                          EndSwitch        
                                                                                                       
                          UnLockRecord
       
                          If IsFormView()
                             Then FormKey
                          EndIf   
                  EndIf
                  
                  If not mdfeok and Search(",",conteudodoarquivo)>0
                     Then Mensagem("MDFe "+SubStr(conteudodoarquivo,1,65)+"!// // Consulte a situa‡„o do MDFe no Manager/eDoc !// //")
                  EndIf   
    
           EndSwitch
  EndIf

  If IsAssigned(conteudodoarquivo) Then release vars conteudodoarquivo  EndIf

  QuitLoop  
EndWhile

If AmbienteMDFe="2"
   Then Mensagem("Utilizando MDFe em ambiente de [ HOMOLOGA€ŽO ] !")
EndIf   

LimpAguarde()
Return mdfeok
Endproc

;*******************************************************************************
;* Rotina para Carregar Parametros                                             *
;*******************************************************************************
Proc Carrega_Parametros()
Private ParamF, EMP

If IsEmpty("P_Mdfe")
   Then Mensagem("N„o esta Configurado os Parametros para Digita‡„o [Saida/MDFe]!")
        Return False
EndIf

ParamF=False

GetRecord "\\Sistemas\\Mdfe\\P_Mdfe" [Mdfe_c->Codigo da Empresa] To EMP 
If Retval 
   Then ParamF=True
        
        PARAM_EMPRESA            = EMP["Codigo_Empresa"         ]
        PARAM_DOC_MDFEN          = EMP["MDFEN_Codigo do Docto"  ]  
        PARAM_TIP_MDFEN          = EMP["MDFEN_Tipo do Docto"    ]  
        PARAM_SER_MDFEN          = EMP["MDFEN_Serie do Docto"   ] 
        PARAM_GRUPO_EDOC         = EMP["Grupo_eDoc"             ]
        PARAM_CAMINHO_MANAGER    = EMP["Caminho_MdfeManager"    ]
        PARAM_BLOQUEIA_CANCEL    = EMP["Bloqueia Cancelamento"  ]
        GetRecord "\\Sistemas\\Cadastro\\Empresas" [Mdfe_c->Codigo da Empresa] To EMP 
        If Retval 
           Then CNPJMDFe = EMP["CGC Empresa"          ]
                NOMEMDFe = EMP["Nome Fantasia Empresa"]
           Else CNPJMDFe = ""
        EndIf
   Else Mensagem("Parametros n„o Cadastrado para esta Empresa [Saida/MDFe] !")
EndIf

Return ParamF

EndProc ; (Carrega_Parametros)
 
;*******************************************************************************
;* Rotina para Carregar Tabelas                                                *
;*******************************************************************************
Proc Closed Carrega_Tabelas()
UseVars Autolib, ErrorProc, PARAM_CONSIGNACAO, PARAM_RELAT_NF

View NOWINDOW "\\Sistemas\\Mdfe\\Mdfe_mdd"
View NOWINDOW "\\Sistemas\\Mdfe\\Mdfe_rvc"
View NOWINDOW "\\Sistemas\\Mdfe\\Mdfe_rvp"
View NOWINDOW "\\Sistemas\\Mdfe\\Mdfe_rvr"
View NOWINDOW "\\Sistemas\\Mdfe\\Mdfe_uc"
View NOWINDOW "\\Sistemas\\Mdfe\\Mdfe_ut"
View NOWINDOW "\\Sistemas\\Mdfe\\P_Mdfe"
View NOWINDOW "\\Sistemas\\Vendas\\NumeroNF"
View NOWINDOW "\\Sistemas\\Cadastro\\Empresas"
View NOWINDOW "\\Sistemas\\Cadastro\\Destinat"
View NOWINDOW "\\Sistemas\\Cadastro\\Cidades"    
 
;************** Rotina para tratar o erro de tabela locada ********************
If ErrorCode()=4
   Then Do_It!
        return False
EndIf

Return True
EndProc   ; (Carrega_Tabelas)
 
;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bib_Proc,\\Sistemas\\Cadastro\\Bib_Bloq"

If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf
If Not IsAssigned(SYS_CONTROLE_DIA)    Then SYS_CONTROLE_DIA  =""  EndIf
If Not IsAssigned(SYS_NIVEL_USUARIO)   Then SYS_NIVEL_USUARIO ="S" EndIf
If Not IsAssigned(SYS_NOME_USUARIO)    Then SYS_NOME_USUARIO  ="S" EndIf
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO =""  EndIf

;***** Verificar se o Cliente tem acesso a esta rotina *****
If Bloqueia_Rotina("MANIFESTO")
   Then Return
EndIf   
;***********************************************************

Carrega_Tabelas()
CoEdit NoWindow "Mdfe_C"
PickForm "1"
Moveto "Mdfe_rvr" SetaCorRegistro("Padrao")
Moveto "Mdfe_rvc" SetaCorRegistro("Padrao")
Moveto "Mdfe_rvp" SetaCorRegistro("Padrao")
Moveto "Mdfe_mdd" SetaCorRegistro("Padrao")
Moveto "Mdfe_ut"  SetaCorRegistro("Padrao")
Moveto "Mdfe_uc"  SetaCorRegistro("Padrao")

Moveto "mdfe_c"
PickForm "F"
OPCAO_FORM="F"
While True
  CHAVE_C()
  If CHAVEC=9 Then QuitLoop EndIf
  If CHAVEC=5
     Then If OPCAO_FORM="F"
             Then PickForm "F"
             Else PickForm "1"
          EndIf
          Loop
  EndIf
  Controla_EdicaoC()
EndWhile
Do_It!
ClearAll
Release Vars All
Release Procs All
