;** ContFret *******************************************************************
;*  Rela‡Æo de Notas por Transportador x Conhecimento - Script                 *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 11/04/2013 por Bruno Carvalho
;Ultima Alteracao: 12/04/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes 
;Ultima Alteracao: 07/06/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes de controle
;Ultima Alteracao: 13/06/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Novo Nome ContFrtC e novos dados
;Ultima Alteracao: 18/06/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Observacoes()
;Ultima Alteracao: 19/06/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes                         
;Ultima Alteracao: 20/06/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes                         
;Ultima Alteracao: 29/08/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes calculo dias para coleta e entrega prevista
;Ultima Alteracao: 18/09/2015 por Andrey Fillipe
;Motivo Alteracao: Ajustes Correcao de erros da rotina
;Ultima Alteracao: 21/12/2016 por Rafael Matos
;Motivo Alteracao: InclusÆo das Fun‡äes Importar Notas, Importar CTR e Ordenar por N£mero do Lan‡amento e N£mero do Documento
;Ultima Alteracao: 12/01/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro transportadora  
;Ultima Alteracao: 16/03/2017 por Rafael Matos
;Motivo Alteracao: Ajustes Importa_CTR_Contfret()                         
;Ultima Alteracao: 20/03/2017 por Bruno/Rafael
;Motivo Alteracao: Ajustes ao alinhar o campo [CT_Numero do Documento], de 6 para 7 d¡gitos
;Ultima Alteracao: 04/04/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes filtro frete por conta 
;Ultima Alteracao: 06/04/2017 por Rafael Matos
;Motivo Alteracao: Ajustes para nÆo pegar notas Canceladas/Inutilizadas/Denegadas ao importar as notas
;Ultima Alteracao: 27/04/2017 por Rafael Matos
;Motivo Alteracao: Incluso informa‡äes Representante
;Ultima Alteracao: 10/05/2017 por Kamila Gomes
;Motivo Alteracao: Ajustes para permitir alterar Transportadora
;Ultima Alteracao: 10/05/2017 por Kamila Gomes
;Motivo Alteracao: Ajustes F7 importa‡Æo do CT-e
;Ultima Alteracao: 15/05/2017 por Bruno Carvalho
;Motivo Alteracao: Adicionado no processo manual e ao pressionar F4 p/ pegar o vr do [Valor Frete Cotado] do "NotaC" 
;Ultima Alteracao: 04/12/2017 por Bruno Carvalho
;Motivo Alteracao: Adicioando [Numero_Cotacao]
;Ultima Alteracao: 04/12/2017 por Bruno Carvalho
;Motivo Alteracao: Ajustes [Numero_Cotacao] 
;Ultima Alteracao: 22/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes mesnagens, filtro CT..
;Ultima Alteracao: 30/07/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado campo p/ documento referenciado: Romaneio/NF  
;Ultima Alteracao: 08/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes form 2, nova visualiza‡Æo e Verifica_Duplicidade()
;Ultima Alteracao: 23/08/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado Importa_CTR_Contfret_DoctoRef() -> Ao pressionar "F5" a busca tamb‚m ‚ feita pelo documento referenciado
;Ultima Alteracao: 05/11/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes com UnLockRecord -> Verifica_Pessoa_Transportador()
;Ultima Alteracao: 18/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes lockrecord e unlockrecord Importa_CTR_Contfret(), Importa_CTR_Contfret_DoctoRef()
;Ultima Alteracao: 13/04/2021 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Chaven()
;Ultima Alteracao: 29/04/2021 por Bruno Carvalho
;Motivo Alteracao: Ajustes no filtro ao buscar a empresa -> Monta_Opcoes("Empresas","")
 
;*******************************************************************************
;* Rotina para Localizar Registro                                              *
;*******************************************************************************
Proc CHAVE()                                                
private AUX                                     

While True

  Switch
    Case ORDENARPOR="DOCTO" :
      Moveto [Codigo da Empresa]
      Menu {Image} {OrderTable} Enter {Ind_001}  
    OtherWise              :
      Moveto [Numero do Lancamento]
      Menu {Image} {OrderTable} Enter {Numero do Lancamento}  
  EndSwitch

  End
  NUM_LAN=[Numero do Lancamento]

  If OPCAO_FORM=OPCAO_FORMRelacao
    Then Down
    Else CtrlPgDn
  EndIf

  Moveto [Codigo da Empresa] 
  [Codigo da Empresa  ]=SYS_EMPRESA_DEFAULT
  [Codigo do Documento]=CDOCTO_ANT
  SetaCorRegistro("Editar") 

  If Field()="Codigo da Empresa" Or
     Field()="Codigo do Documento"    
     Then TECLA="F1=Tabelas  "
     Else TECLA=""
  EndIf  
  
  While True
  If Field()="Codigo da Empresa"
     Then Monta_Opcoes("Empresas","")
  EndIf
  
  AguardaTeclasPadrao()

  COD_EMP=[Codigo da Empresa]
  
  If RetVal=-33
     Then Echo Normal
          Echo Off
          ShowPopup " Fun‡äes " CENTERED
            "Visualizao ~1"               : " Visualiza‡Æo rela‡Æo 1"                   :"VIS1",
            "Visualizao ~2"               : " Visualiza‡Æo rela‡Æo 2"                   :"VIS2",
            Separator,
            "Ordena Numero do Documento " : " Ordena Registros por Numero do Documento" :"ORD_NDOC",
            "Ordena Numero do Lancamento " : " Ordena Registros por Numero do Lancamento" :"ORD_LANCTO",
            Separator,
            "F4 ~I~mportar Notas " : " Importa‡Æo de Notas para CT" :"F4",
            "F5 ~I~mportar CTR " : " Importa‡Æo de Conhecimentos de Transporte" :"F5",
            "F6 ~R~elat¢rio " : " Rela‡„o de notas por transportador, NF x CT" :"F6",
            "~C~ancelar     " : " Cancelar a Opera‡Æo                        " : "CANCELAR"
          EndMenu
          To MenuVar
          Echo Off

         If MenuVar="CANCELAR" or MenuVar="Esc"
             Then Loop
         EndIf
         
         Switch  
            Case MenuVar="ORD_NDOC"      :      ORDENARPOR="DOCTO"
                                                Ordena_Registros()
                                                QuitLoop
            Case MenuVar="ORD_LANCTO"    :      ORDENARPOR="LANCTO"
                                                Ordena_Registros()
                                                QuitLoop

            Case MenuVar="VIS1"          :      OPCAO_FORM       ="F"
                                                OPCAO_FORMRelacao="F"
                                                del
                                                CHAVE=5
                                                Return

            Case MenuVar="VIS2"          :      OPCAO_FORM       ="2"
                                                OPCAO_FORMRelacao="2"
                                                del
                                                CHAVE=5
                                                Return

         EndSwitch                                       
                                                  
         RetVal=MenuVar
  EndIf

  Switch
  Case RetVal="F3": 
       If OPCAO_FORM=OPCAO_FORMRelacao
          Then OPCAO_FORM="1"
          Else OPCAO_FORM=OPCAO_FORMRelacao
       EndIf
       Del
       CHAVE=5
       Return
  Case RetVal=-94 : MsgTeclasPadrao()
  Case RetVal="F1":
       Switch
         Case Field()="Codigo do Documento" :   
              CONSULTAF1()
         Case Field()="Codigo da Empresa"   :         
              Seleciona_Opcoes("Empresas","CR")
       EndSwitch
  Case RetVal="F4": 
       Del
       Importa_Notas_Contfret()  
       
       Carrega_Tabelas()
       QuitLoop
       
  Case Retval="F5":
       ConfGeral("Rotina para Importar/Relacionar Conhecimentos de Transporte das notas j  lan‡adas!//Deseja confirmar a opera‡Æo?")
       If Ok<>"S"
          Then  del
                QuitLoop
       EndIf
       Del
       
       TOTALIZADOR = 0
       MSG_ERRO    = 0
       
       Importa_CTR_Contfret()
       Importa_CTR_Contfret_DoctoRef()
       
       ;MSG_ERRO=1 e MSG_ERRO=2 -> N„o existem NENHUMA notas registradas sem CTR
       ;MSG_ERRO=3 e MSG_ERRO=4 -> N„o existem NENHUM conhecimento lan‡ado
       
       Switch
         Case MSG_ERRO=2 : FastMsg("N„o existem notas registradas sem CTR !") 
         Case MSG_ERRO=4 : FastMsg("N„o existem conhecimentos lan‡ados para estes registros !")  
         Case MSG_ERRO=0 : 
              If TOTALIZADOR=0
                 Then Mensagem("Conhecimentos encontrados j  foram registrados !")
                 Else Mensagem(Format("W6,EIC",TOTALIZADOR)+" novos conhecimentos registrados // //Fim do Processo !")
              EndIf          
       EndSwitch
       Release Vars MSG_ERRO,TOTALIZADOR

       Carrega_Tabelas()
       QuitLoop     
  Case RetVal="F6":  
       Del
       
       Do_It!
       ClearAll
       Play "RM_4204"
       ClearAll
       Carrega_Tabelas()
       QuitLoop

  Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
       Del

       Moveto [Codigo da Empresa]
       ;Menu {Image} {OrderTable} Enter {Ind_001}  

       While True
          If OPCAO_FORM=OPCAO_FORMRelacao
             Then PAGINA("ContFrtC","MR")
             Else PAGINA("ContFrtC","MT")
          EndIf
          NLANC=[Numero do Lancamento]
          If EDITAR="S"
             Then PickForm "1"
                  CHAVE=0
                  Controla_EdicaoC()
             Else If EXCLUIR="S"
                    Then If Checa_Supervisor()
                            Then If ConfGeral("Confirma a exclusao deste registro ?")
                                    Then PickForm "1"
                                         EXCLUSAO()
                                    Else UnLockRecord
                                 EndIf
                            Else Unlockrecord
                         EndIf
                         If OPCAO_FORM="1"
                            Then PickForm "1"
                            Else PickForm OPCAO_FORMRelacao
                         EndIf
                    Else QuitLoop
                  EndIf
          EndIf
          SetaPosForm()
        EndWhile
        QuitLoop
   Case Retval="ESC":
        Switch
          Case Field()="Codigo da Empresa" :  
               DIGITAC=False
               Tecla_Funcao=""
               CHAVE=9
               Del
               Return
          Case Field()="Codigo do Documento" : 
               Moveto [Codigo da Empresa]
          Case Field()="Numero do Documento" :     
               Moveto [Codigo do Documento]
        EndSwitch       
   Case Retval="ENTER":        
        Switch
          Case Field()="Codigo da Empresa" : 
               If Not Checa_Opcoes("Empresas",[])
                  Then Mensagem("Empresa inv lida !")
                       Loop
               EndIf
               NLANC =[Numero do Lancamento]
               COD_EMP=[Codigo da Empresa]  
               CopyToArray REG_CHAVE
               Del
               Moveto [Numero do Lancamento]
               Menu {Image} {OrderTable} Enter {Numero do Lancamento}  
               Moveto [Numero do Lancamento]
               End
               If [Numero do Lancamento]=""
                  Then NLANC="000001"
                  Else NLANC=AlinhM(StrVAl(NumVal([Numero do Lancamento])+1),6)
               EndIf             
        
               If IsBlank(NLANC)
                  Then QuitLoop  
               EndIf
               
               Moveto [Numero do Lancamento]
               Locate NLANC
               If Retval
                  Then CHAVE=0
                  Else CHAVE=1

                       If OPCAO_FORM=OPCAO_FORMRelacao
                          Then Down
                          Else CtrlPgDn
                       EndIf

                       CopyFromArray REG_CHAVE
                       [Numero do Lancamento]=NLANC
                       Moveto [Codigo do Documento]
               EndIf
                                            
               If IsLockRecord()
               
                  Then If CHAVE=1
                          Then Del                     
                       EndIf
                       
                       If OPCAO_FORM=OPCAO_FORMRelacao
                          Then PickForm OPCAO_FORMRelacao
                       EndIf
                       
                       QuitLoop  
               EndIf      
               
          Case Field()="Codigo do Documento" : 
               If IsBlank([]) Then Loop EndIf
               CDOCTO_ANT=[Codigo do Documento]
               Moveto [Numero do Documento]
          Case Field()="Numero do Documento" :      
               If IsBlank([]) Then Loop EndIf
               []=AlinhM([],6)
               
               COD_EMP=[Codigo da Empresa   ]
               NUM_LAN=[Numero do Lancamento]
               COD_DOC=[Codigo do Documento ]
               NUM_DOC=[Numero do Documento ]
               SER_DOC=[Serie do Documento  ]
               TIP_DOC=[Tipo do Documento   ]
               CopyToArray REG_CHAVE

               If CHAVE=1
                  Then DUPLICIDADE_ACEITA=True
                       ACHOU_NOTA        ="0"
                       Verifica_Duplicidade()
                       If Not DUPLICIDADE_ACEITA Or ACHOU_NOTA<>"0"
                          Then 
                               Moveto [Numero do Lancamento]
                               Locate NLANC
                               Moveto [Numero do Documento]
                               If Not DUPLICIDADE_ACEITA Then Loop EndIf
                               Switch
                                 Case ACHOU_NOTA="1"         :MSG="Documento "+[Codigo do Documento]+" "+[Numero do Documento]+" "+
                                                                  [Serie do Documento]+" n„o localizado no sistema !"
                                 Case ACHOU_NOTA="2"         :MSG="Frete por Conta ‚ diferente de EMITENTE !////Verificar o tipo do frete no documento "+
                                                                  [Codigo do Documento]+" "+[Numero do Documento]+" "+[Serie do Documento]+" !"
                               EndSwitch
                               Mensagem(MSG)
                               Loop
                       EndIf   
               EndIf

               PickForm 1

               Moveto [Numero do Lancamento]
               Locate NLANC
               Return

        EndSwitch       
    EndSwitch
  EndWhile   
EndWhile

EndProc   ; CHAVE()

;*******************************************************************************
;* Rotina para Digitacao das Informacoes                                       *
;*******************************************************************************
Proc DIGITA()
Private CAMPONEXT, CAMPOBACK

Moveto [REF_Codigo do Documento]
CopyToArray REG

While True
      Tecla = " Esc=Retornar  "
      If Field()="Codigo da Empresa"        Or
         Field()="Codigo do Documento"      Or
         Field()="Codigo da Transportadora" Or
         Field()="Codigo"                   Or
         Field()="Cidade"                   Or
         Field()="UF"                       Or
         Field()="CT_Codigo do Documento"   Or
         Field()="Frete por Conta"
         Then Tecla=Tecla+"F1=Tabelas  "
         Else Tecla=Tecla+"            "
      EndIf
      If CHAVE=0
         Then Tecla=Tecla+"F5=Obs  F9=Notas  Del=Excluir  PgDn=Finalizar  "
         Else Tecla=Tecla+"F5=Obs "
      EndIf

      MSGCAMPO=""
      Switch 
        Case Field()="Codigo da Empresa"        : MSGCAMPO="Codigo da Empresa"
        Case Field()="Codigo do Documento"      : MSGCAMPO="Codigo do Documento"
        Case Field()="Numero do Documento"      : MSGCAMPO="Numero do Documento"
        
        Case Field()="Codigo"                   : MSGCAMPO="Codigo do Cliente"
        Case Field()="CGC"                      : MSGCAMPO="CPF/CNPPJ do Cliente"
        Case Field()="Cidade"                   : MSGCAMPO="Cidade"
        Case Field()="UF"                       : MSGCAMPO="Estado"
        
        Case Field()="Redespacho"               : MSGCAMPO="Conhecimento de Transporte ‚ do respacho Sim/NÆo ?" 
        Case Field()="Codigo da Transportadora" : MSGCAMPO="Codigo da Transportadora do Redespacho" 
                                              
        Case Field()="Data de Emissao"          : MSGCAMPO="Data de Emissao"
        Case Field()="Data de Saida"            : MSGCAMPO="Data de Saida"
        Case Field()="Data Acerto"              : MSGCAMPO="Data de Acerto"
        
        Case Field()="Frete por Conta"          : MSGCAMPO="Frete por Conta"
        Case Field()="Valor Frete Cotado"       : MSGCAMPO="Valor do frete cotado"
        Case Field()="Valor Outra NF no Frete"  : MSGCAMPO="Soma dos valores de outras notas incluida no mesmo frete"
        
        Case Field()="CT_Codigo do Documento"   : MSGCAMPO="Codigo do Documento de Conhecimento de Transporte"
        Case Field()="CT_Serie do Documento"    : MSGCAMPO="Serie do Documento de Conhecimento de Transporte"
        Case Field()="CT_Numero do Documento"   : MSGCAMPO="Numero do Documento de Conhecimento de Transporte"
        
        Case Field()="Data do Documento"        : MSGCAMPO="Data do Documento de Conhecimento de Transporte"
        Case Field()="Valor do Documento"       : MSGCAMPO="Valor do Documento de Conhecimento de Transporte"
        Case Field()="NDias_Coleta"             : MSGCAMPO="Numero de Dias para Coleta"
        Case Field()="NDias_Entrega"            : MSGCAMPO="Numero de Dias para Entrega"
        Case Field()="Data_Entrega_Efetiva"     : MSGCAMPO="Data de Entrega do Produto ao Cliente"
        Case Field()="CT_Pago"                  : MSGCAMPO="O frete foi pago Sim/NÆo ?"
        Case Field()="Numero_Cotacao"           : MSGCAMPO="N§ da Cota‡Æo"
        Case Field()="REF_Codigo do Documento"  : MSGCAMPO = "Documento referente: Nota Fiscal/Romaneio"
        Case Field()="REF_Tipo do Documento"    : MSGCAMPO = "Documento referente: Tipo do Documento"
        Case Field()="REF_Numero do Documento"  : MSGCAMPO = "Documento referente: Numero do Documento" 
        Case Field()="REF_Serie do Documento"   : MSGCAMPO = "Documento referente: Serie do Documento"
      EndSwitch

      Prompt Tecla
      Wait Field
        Until "F1","ESC","ENTER","DEL","FIELDVIEW","F35","DOWN","PGDN",-33,"F5","F9",-115,-116

      Switch
      Case RetVal=-116 Or RetVal=-115 : 
           Tecla_Funcao="F9"
           Return    
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case RetVal="F1": 
           If Field()="Codigo da Transportadora" Or
              Field()="CT_Codigo do Documento"   Or
              Field()="REF_Codigo do Documento"  
              Then Switch
                      Case Field()="REF_Codigo do Documento"  :
                           If CONSULTAF1()
                              Then [REF_Tipo do Documento  ]=Reg_ConsultaF1["Tipo do Documento"]
                                   [REF_Serie do Documento ]=Reg_ConsultaF1["Serie do Documento"]
                           EndIf   
                      Case Field()="Codigo da Transportadora" : 
                           If CONSULTAF1()
                              Then [Codigo da Transportadora]=Reg_ConsultaF1["Codigo da Transportadora"] 
                                   [Nome Fantasia Transport ]=Reg_ConsultaF1["Nome Fantasia Transport" ]
                                   [Transportadora_Pessoa   ]=Reg_ConsultaF1["Codigo_Pessoa"           ]
                           EndIf    
                      Case Field()="CT_Codigo do Documento" : 
                           If CONSULTAF1()
                              Then [CT_Codigo do Documento]=Reg_ConsultaF1["Codigo do Documento"] 
                                   [CT_Tipo do Documento  ]=Reg_ConsultaF1["Tipo do Documento"  ]
                           EndIf    
                   EndSwitch                  
                EndIf    
      Case Retval="PGDN" :
           If Not Checa_Dados()
              Then Loop
           EndIf  
           DIGITAC=False 
           Tecla_Funcao=""
           CHAVE=9
           QuitLoop
      Case Retval="DOWN" And CHAVE=0:
           QuitLoop
      Case Retval="F9" And CHAVE=0:
           Tecla_Funcao="F9"
           Return    
           QuitLoop
      Case RetVal="F5":  
           Edita_Memo("Observacoes",08,01,15,76,"Observa‡”es")
      Case Retval="ESC":
           Switch
           Case Field()="REF_Codigo do Documento"  :
                If QuerDesfazer("")
                   Then If CHAVE=1
                           Then EXCLUSAO()
                           Else UnLockRecord
                        EndIf
                        DIGITAC=False
                        Tecla_Funcao=""
                        CHAVE=9
                        QuitLoop       
                EndIf
           Case Field()="REF_Tipo do Documento"    : Moveto [REF_Codigo do Documento]
           Case Field()="REF_Serie do Documento"   : Moveto [REF_Tipo do Documento  ]
           Case Field()="REF_Numero do Documento"  : Moveto [REF_Serie do Documento ]
           Case Field()="Codigo da Transportadora" : Moveto [REF_Codigo do Documento]
           Case Field()="Redespacho"               : Moveto[Codigo da Transportadora]
           Case Field()="Valor Outra NF no Frete"  : Moveto[Redespacho              ]
           Case Field()="Valor Frete Cotado"       : Moveto[Valor Outra NF no Frete ]
           Case Field()="Numero_Cotacao"           : Moveto[Valor Frete Cotado      ] 
           Case Field()="CT_Codigo do Documento"   : Moveto[Numero_Cotacao          ]
           Case Field()="CT_Numero do Documento"   : Moveto[CT_Codigo do Documento  ]
           Case Field()="CT_Serie do Documento"    : Moveto[CT_Numero do Documento  ]
           Case Field()="Data do Documento"        : Moveto[CT_Serie do Documento   ]
           Case Field()="Valor do Documento"       : Moveto[Data do Documento       ]
           Case Field()="NDias_Coleta"             : Moveto[CT_Codigo do Documento  ] 
           Case Field()="NDias_Entrega"            : Moveto[NDias_Coleta            ] 
           Case Field()="Data_Entrega_Efetiva"     : Moveto[NDias_Entrega           ]
           OtherWise:
                Left
           EndSwitch
      Case Retval="ENTER": 
           Switch
           Case Field()="REF_Codigo do Documento"  :
                If Not IsBlank([])
                   Then Moveto [REF_Tipo do Documento]
                   Else [REF_Tipo do Documento  ]=""
                        [REF_Serie do Documento ]=""
                        [REF_Numero do Documento]=""            
                        Moveto [Codigo da Transportadora]
                EndIf
           Case Field()="REF_Tipo do Documento"    : Moveto [REF_Serie do Documento  ]
           Case Field()="REF_Serie do Documento"   : Moveto [REF_Numero do Documento ] 
           Case Field()="REF_Numero do Documento"  : 
                If Not IsBlank([REF_Numero do Documento])
                   Then [REF_Numero do Documento]=AlinhM([REF_Numero do Documento],6)
                EndIf
                Moveto [Codigo da Transportadora]
           Case Field()="Codigo da Transportadora" : 
                If Not IsBlank([])
                   Then If Verifica_Pessoa_Transportador()
                           Then Moveto [Redespacho]        
                        EndIf  
                EndIf
           Case Field()="Redespacho"     :
                If IsBlank([])
                   Then []="N"
                EndIf
                Moveto[Valor Outra NF no Frete]
           Case Field()="Valor Outra NF no Frete"  :
                Moveto [Valor Frete Cotado]
           Case Field()="Valor Frete Cotado"       : Moveto [Numero_Cotacao]
           Case Field()="Numero_Cotacao"           : Moveto [CT_Codigo do Documento]
           Case Field()="CT_Codigo do Documento"   :
                If Not IsBlank([])
                   Then If Busca_Lookup("Codigo do Documento",[CT_Codigo do Documento],"SM")
                           Then [CT_Tipo do Documento]=REG_BUSCA_LOOKUP["Tipo do Documento"]
                        EndIf
                        If SubStr([],1,2)<>"CT"
                           Then Mensagem("O C¢digo do Documento deve ser de Conhecimento de Transporte !")
                                Loop
                        EndIf   
                        Moveto [CT_Numero do Documento]
                   Else 
                        ;removido em 06/12 … pedido de 0051 
                        ;[CT_Tipo do Documento  ] = ""
                        ;[CT_Numero do Documento] = ""
                        ;[CT_Serie do Documento ] = ""
                        ;[Data do Documento     ] = BlankDate()
                        ;[Valor do Documento    ] = BlankNum()
                        ;Moveto [CT_Codigo do Documento]
                        
                        Moveto [Data do Documento]
                EndIf   
           Case Field()="CT_Numero do Documento"   :
                If Not IsBlank([])
                   Then AlinhM([],7)
                        Moveto [CT_Serie do Documento]
                EndIf   
           Case Field()="CT_Serie do Documento"    : Moveto [Data do Documento]                   
           Case Field()="Data do Documento"        : Moveto [Valor do Documento]
                ;If Not Isblank([])
                ;   Then 
                ;EndIf   
           Case Field()="Valor do Documento"       : Moveto [NDias_Coleta]
                ;If Not Isblank([])
                ;   Then Moveto [NDias_Coleta]
                ;EndIf     
           Case Field()="NDias_Coleta"             :
                [Data_Coleta]=[Data de Saida]
                If [NDias_Coleta]>0
                   Then [Data_Coleta]=DiaUtil([Data_Coleta])
                        For ii From 1 to [NDias_Coleta]
                          [Data_Coleta]=DiaUtil([Data_Coleta]+1)
                        EndFor                
                EndIf
                Moveto[NDias_Entrega] 
           Case Field()="NDias_Entrega"            :
                [Data_Entrega_Prevista]=[Data_Coleta]
                If [NDias_Entrega]>0
                   Then [Data_Entrega_Prevista]=DiaUtil([Data_Entrega_Prevista])
                        For ii From 1 to [NDias_Entrega]
                          [Data_Entrega_Prevista]=DiaUtil([Data_Entrega_Prevista]+1)
                        EndFor
                EndIf
                Moveto[Data_Entrega_Efetiva] 
           Case Field()="CT_Pago"                     :  
                If IsBlank([])
                   Then []="N"
                EndIf   
                If CHAVE=1
                   Then UnLockRecord
                EndIf
                Quitloop                                 
           OtherWise                               : Right
         EndSwitch
      Case Retval="DEL":
           If CHAVE=0
              Then If Checa_Supervisor()
                      Then If ConfGeral("Confirma a exclusao deste registro ?")
                              Then EXCLUSAO()
                                   Tecla_Funcao=""
                                   CHAVE=9
                                   QuitLoop
                           EndIf
                   EndIf
           EndIf
      EndSwitch
EndWhile

EndProc   ; (Digita)

;*******************************************************************************
;* Rotina para notas/agendamento                                               *
;*******************************************************************************
Proc ChaveN()

CHAVEN=0
Moveto "ContFrtN"    
                               
While True
  Moveto [Sequencia da Anotacao]
  End
  NITEMNOT=[Sequencia da Anotacao]
  Down

  If NITEMNOT=BlankNum()
     Then NITEMNOT=1
     Else NITEMNOT=NITEMNOT+1
  EndIf   
                  
  Moveto [Sequencia da Anotacao]
  [Sequencia da Anotacao]=NITEMNOT
                       
  Seta_Sequencia(NITEMNOT,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  SetaCorRegistro("Editar")
  While True
    MSGCAMPO=""
    Tecla=""
    AguardaTeclasPadraoIt2()

    Switch
    Case RetVal=-116 Or RetVal=-115 :
         Del 
         CHAVEN=9
         Tecla_Funcao=-10
         Return    
    Case RetVal=-94 : MsgTeclasPadraoIt2()
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           PAGINA("ContFrtN","MR")
           NLANC   =[Numero do Lancamento ]
           NITEMNOT=[Sequencia da Anotacao]
           Switch
             Case EDITAR="S"  : CHAVEN=1
                                If Checa_Supervisor()
                                   Then DIGITA_NOTAS()
                                   Else UnLockRecord
                                EndIf
                                Loop
             Case EXCLUIR="S" : If Checa_Supervisor()
                                   Then If QuerExcluir("")
                                           Then DEL
                                           Else UnLockRecord
                                        EndIf
                                   Else UnLockRecord
                                EndIf
             OtherWise: QuitLoop
           EndSwitch
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ESC":
         SetaCorRegistro("Padrao")
         CHAVEN=9
         Del
         Return
    Case Retval="PGDN":
         DIGITAC=False 
         Tecla_Funcao=""
         CHAVE=9

         CHAVEN=9
         Del
         Return   
    Case Retval="ENTER":
         If Not Seta_Sequencia(NITEMNOT,True)
            Then Del
                 QuitLoop
         EndIf
         NITEMNOT=[]
         Del
         Locate NLANC,NITEMNOT
         If Retval
            Then CHAVEN=0
            Else CHAVEN=1
                 End Down
                 [Numero do Lancamento ]=NLANC
                 [Sequencia da Anotacao]=NITEMNOT
                 UnLockRecord
                 Locate NLANC,NITEMNOT
         EndIf
         If Not IsLockRecord()
            Then Return
         EndIf
         If CHAVEN=1
            Then Del
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile

EndProc

;*******************************************************************************
;* Rotina para Digita‡Æo de Notas                                              *
;*******************************************************************************
Proc DIGITA_NOTAS()
Private Alterou_Situacao

Moveto "ContFrtN" 

If CHAVEN=1
   Then Alterou_Situacao=False 
        If [Situacao da Anotacao]="AGENDAM"
           Then  ShowPopup " Status " @ 14,18
                   "Agendamento           " : " Agendamento           "   : "AGENDAM",
                   "Agendamento Realizado " : " Agendamento Realizado "   : "AGE/REAL"
                 EndMenu
                 To MenuVar
                 If MenuVar="Esc"  
                    Then Moveto [Situacao da Anotacao]
                    Else Alterou_Situacao=[Situacao da Anotacao]
                         [Situacao da Anotacao]=MenuVar
                 EndIf

        EndIf
        Edita_Memo("Historico da Anotacao",15,00,07,80,"Descritivo")
        Return
EndIf

Moveto [Data da Anotacao]
                                                
While True
  Switch  
    Case Field()="Data da Anotacao"      : MSGCAMPO="Informe a Data do Agendamento/Anota‡„o    Em Branco = Hoje"
    Case Field()="Hora da Anotacao"      : MSGCAMPO="Informe o Hor rio do Agendamento/Anota‡„o   Em Branco = Hora Atual"
    Case Field()="Situacao da Anotacao"  : MSGCAMPO="Informe a Situa‡„o: AGENDAMENTO ou ANOTA€ŽO   Em Branco = Menu"
    OtherWise                            : MSGCAMPO=""
  EndSwitch

  Tecla=""
  AguardaTeclasPadraoIt2()
    
  Switch                                     
  Case Retval="F1":
       If Field()="Situacao da Anotacao"
          Then ShowPopup " Status " @ 14,18
                   "Agendamento" : " Agendamento   "   : "AGENDAM",
                   "Anota‡„o   " : " Anota‡„o      "   : "ANOTA€ŽO"
               EndMenu
               To MenuVar
               If MenuVar="Esc"
                  Then Loop              
                  Else [Situacao da Anotacao]=MenuVar
               EndIf
               Edita_Memo("Historico da Anotacao",15,00,07,80,"Descritivo")
               If [Historico da Anotacao]=""
                  Then Moveto [Situacao da Anotacao] 
                  Else Return
               EndIf
       EndIf        
  Case Retval="ESC":
       Switch
         Case Field()="Data da Anotacao"     : CHAVEN=9
                                               Del
                                               Return
         Case Field()="Hora da Anotacao"     : Moveto [Data da Anotacao    ]
         Case Field()="Situacao da Anotacao" : Moveto [Hora da Anotacao    ]                   
         Case Field()="Historico da Anotacao": Moveto [Situacao da Anotacao]
       EndSwitch
  Case Retval="ENTER":
       Switch     
         Case Field()="Data da Anotacao"       : 
              If IsBlank([])
                 Then []                 = Today()
                      [Hora da Anotacao] = Time()
              EndIf 
              Moveto [Hora da Anotacao]
         Case Field()="Hora da Anotacao"       : 
              If IsBlank([])
                 Then []=Time()
              EndIf
              Moveto [Situacao da Anotacao]    
         Case Field()="Situacao da Anotacao"   :
              If IsBlank([])
                 Then ShowPopup " Status " @ 14,18
                          "Agendamento" : " Agendamento   "   : "AGENDAM",
                          "Anota‡„o   " : " Anota‡„o      "   : "ANOTA€ŽO"
                      EndMenu
                      To MenuVar
                         If MenuVar="Esc"
                            Then Loop              
                            Else [Situacao da Anotacao]=MenuVar
                         EndIf
              EndIf           
              Edita_Memo("Historico da Anotacao",15,00,07,80,"Descritivo")
              If [Historico da Anotacao]=""
                 Then Moveto [Situacao da Anotacao] 
                 Else Return
              EndIf
       EndSwitch
  EndSwitch

 EndWhile

EndProc ; (DIGNOTAS)

;*******************************************************************************
;* Rotina para Carregar Tabelas                                                *
;*******************************************************************************
Proc Carrega_Tabelas()

View   NoWindow "NotaC"
CoEdit NoWindow "ContFrtC"
PickForm "F"

EndProc

;*******************************************************************************
;* Rotina para Ordenar Registros                                               *
;*******************************************************************************
Proc Ordena_Registros()

LINHA = GravaExpressao("ORDENARPOR","S",ORDENARPOR)
       FileWrite PrivDir()+"orddocto.ejf" From LINHA
       
end
del
Switch
Case ORDENARPOR="DOCTO" :
     Moveto [Codigo da Empresa]
     Menu {Image} {OrderTable} Enter {Ind_001}  
OtherWise              :
     Moveto [Numero do Lancamento]
     Menu {Image} {OrderTable} Enter {Numero do Lancamento}  
EndSwitch

Do_It!
ClearAll

Carrega_Tabelas() 

EndProc
;*******************************************************************************
;* Rotina para Verificar Duplicidade de Registro                               *
;*******************************************************************************                  
Proc Verifica_Duplicidade()
private regnotac

;ACHOU_NOTA="0" => Nota encontrada !
;ACHOU_NOTA="1" => Nota nÆo encontrada !
;ACHOU_NOTA="2" => Frete por Conta <> Emitente !

DUPLICIDADE=False

Del
Moveto [Codigo da Empresa]
Locate IndexOrder By "Ind_001" REG_CHAVE["Codigo da Empresa"  ], REG_CHAVE["Codigo do Documento"], 
                               REG_CHAVE["Numero do Documento"], REG_CHAVE["Serie do Documento" ]
if retval                      
 Then DUPLICIDADE=True
      OCORRENCIA=[Numero do Lancamento]
EndIf
          
End
If OPCAO_FORM=OPCAO_FORMRelacao
  Then Down
  Else CtrlPgDn
EndIf

CopyFromArray REG_CHAVE          
           
If DUPLICIDADE
   Then If Not ConfGeral("Documento "+NUM_DOC+" ja foi registrado no Lancamento "+OCORRENCIA+" !////"+
                         "Deseja registra-lo assim mesmo ?")
           Then NUM_DOC=REG_CHAVE["Numero do Documento"]
                Moveto [Numero do Documento]
                DUPLICIDADE_ACEITA=False
                Return
           Else DUPLICIDADE="S"
       EndIf 
   Else DUPLICIDADE=""       
EndIf

[Duplicidade]=DUPLICIDADE                

; **** Verificando Processo Automa tico ****************************************
getrecord "\\sistemas\\vendas\\notac" COD_EMP,NUM_DOC,SER_DOC to regnotac
If RetVal
   Then;If [NotaC->Frete por Conta]<>"1"
       ;   Then FormKey
       ;        ACHOU_NOTA="2"
       ;   Else 
           [Codigo                  ]=regnotac["Codigo"                  ] 
           [Codigo da Transportadora]=regnotac["Codigo da Transportadora"] 
           [Nome Fantasia Transport ]=regnotac["Nome Fantasia Transport" ] 
           [Data de Emissao         ]=regnotac["Data de Emissao"         ] 
           [Data de Saida           ]=regnotac["Data de Saida"           ] 
           [Frete por Conta         ]=regnotac["Frete por Conta"         ] 
           [Frete Incluso na Nota   ]=regnotac["Frete Incluso na Nota"   ] 
           [Valor do Frete          ]=regnotac["Valor do Frete"          ]
           [Valor Nota Fiscal       ]=regnotac["Valor Nota Fiscal"       ]
           [Codigo do Representante ]=regnotac["Codigo do Representante" ]
           [Nome Fantasia Represent ]=regnotac["Nome Fantasia Represent" ]
           [Valor Frete Cotado      ]=regnotac["Valor Frete Cotado"      ]
           [Numero_Cotacao          ]=regnotac["Numero Frete Cotacao"    ]
           UnLockRecord
           ACHOU_NOTA="0"     
       ;EndIf       
   Else 
        ACHOU_NOTA="1"
EndIf
                       
Return

EndProc ; Verifica_Duplicidade()

;*******************************************************************************
;* Rotina dia util da semana                                                   *
;*******************************************************************************
Proc DiaUtil(Dt)
Private ndias 

Switch
  Case Dow(dt)="Sat" : dt=dt+2 
  Case Dow(dt)="Sun" : dt=dt+1
EndSwitch

Return Dt 
EndProc 

;*******************************************************************************
;* Rotina Checa Dados                                                          *
;*******************************************************************************
Proc Checa_Dados()
Private Ok

Ok=True
Switch
  Case IsBlank([CGC])                      : ok=False Mensagem("CPF ou CNPJ invalido! ")
  Case IsBlank([Transportadora_Pessoa])    : If Not Verifica_Pessoa_Transportador() 
                                                Then ok=False
                                             EndIf
  Case Not Checa_CGC_CPF_Formatado([CGC])  : ok=False 
EndSwitch
If Not Ok
   Then Return False
EndIf

[Nome Fantasia EmitDest]=LTrim([Nome Fantasia EmitDest])

Return Ok
EndProc ;Checa_Dados()

;*******************************************************************************
;* Verifica a Pessoa do Transportador                                          *
;*******************************************************************************
Proc Verifica_Pessoa_Transportador()
Private MSG

If [Codigo da Transportadora]<>""
   Then GetRecord "\\Sistemas\\Vendas\\Transpor" [Codigo da Transportadora] To REG_TRANSP
        If Not ReTval
           Then MSG = "N„o foi localizado o transportador "+[Codigo da Transportadora]+" no cadastro das transportadoras."
                Mensagem(MSG)
               ;[Nome Fantasia Transport] = ""
                [Transportadora_Pessoa  ] = "" 
                [Transportadora_Razao   ] = "" 
                [Transportadora_CGC     ] = ""
                UnLockRecord  
                Return False 
           Else [Transportadora_Pessoa] = REG_TRANSP["Codigo_Pessoa"]
        EndIf
EndIf

If IsBlank([Transportadora_Pessoa])
   Then MSG =       Completa("N„o foi localizado a pessoa vinculada ao transportador.",64," ")+"//"
        MSG = MSG + Completa("Para prosseguir ser  necess rio a inclusÆo da pessoa no cadastro",64," ")+"//"
        MSG = MSG + Completa("da Transportadora: ",64," ")+"////"
        MSG = MSG + Completa("MENU > CADASTRO > 08. TRANSPORTADORAS",64," ")
        Mensagem(MSG)
       ;[Nome Fantasia Transport] = ""
        [Transportadora_Pessoa  ] = "" 
        [Transportadora_Razao   ] = "" 
        [Transportadora_CGC     ] = ""
        UnLockRecord
        Return False  
   Else GetRecord "\\Sistemas\\Cadastro\\Destinat" [Transportadora_Pessoa] To REG_PESSOA_TRANSP
        If Not RetVal   
           Then 
    
   MSG =       Completa("N„o foi localizado no cadastro de clientes a pessoa "+[Transportadora_Pessoa]+" que",64," ")+"//"
   MSG = MSG + Completa("est  vinculada neste transportador "+[Codigo da Transportadora]+" "+[Nome Fantasia Transport]+".",64," ")+"////"
   MSG = MSG + Completa("Verificar esta ocorrˆncia de erro para prosseguir.",64," ")
   Mensagem(MSG)
    
                UnLockRecord
                Return False 
           Else [Transportadora_Pessoa   ]=REG_PESSOA_TRANSP["Codigo"]
                [Transportadora_Razao    ]=REG_PESSOA_TRANSP["Razao Social"]
                [Transportadora_CGC      ]=REG_PESSOA_TRANSP["CGC"]
                UnLockRecord
                Return True
        EndIf
EndIf        

Return false

EndProc ;Verifica_Pessoa_Transportador()

;*******************************************************************************
;* Exclusao de Registros                                                       *
;*******************************************************************************
Proc EXCLUSAO()

Moveto "ContFrtN"
While RecordStatus("New")=False
  Del
EndWhile

Moveto "ContFrtC"
Del

EndProc  ;(Exclusao)

;*******************************************************************************
;* Rotina para Importar Notas                                                  *
;*******************************************************************************
Proc Importa_Notas_Contfret()
private NR

Do_It!
ClearAll
LimpAguarde()

AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"
LimpAguarde()

VSDGEMPRESA    = BlankNum()
VSDGNOMEMP     = ""
VSDGDTINI      = BlankDate()
VSDGDTFIM      = BlankDate()
VSDGTPDOCTO    = BlankNum()
VSDGNOMTPDOCTO = "" 
VSDGTRANSP     = ""
VSDGFRETEPC    = ""

While True

  ShowDialog "Importa Notas Para Controle NFxCTR" Proc "SD_IMPORTANOTAS"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,05 Height 15 Width 72

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA"    To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMPRESA" To VSDGNOMEMP

    Label  @ 02,00 "Tipo do Documento"  For "TG_TPDOCTO"
    Accept @ 03,01 Width 07 "A4"  Picture "!*!" Tag "TG_TPDOCTO" To VSDGTPDOCTO
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMTPDOCTO"  To VSDGNOMTPDOCTO
    
    Label  @ 04,00 "Frete por Conta" For "TG_FRETE_PC"
    Accept @ 05,04 Width 04 "A1"  Picture "#" Tag "TG_FRETE_PC" To VSDGFRETEPC
    Accept @ 05,09 Width 25 "A25" Picture "!*!" Tag "TG_NOMFRETE_PC" To VSDGNOMFRETEPC    
    
    Label  @ 06,00 "Transportadora"  For "TG_TRANSP"
    Accept @ 07,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_TRANSP"    To VSDGTRANSP
    Accept @ 07,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMTRANSP" To VSDGNOMTRANSP
                        
    Label  @ 08,00 "Per¡odo de emissÆo de" For "TG_DTINI"
    Accept @ 09,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 09,16 "at‚" For "TG_DTFIM"
    Accept @ 09,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM
    
    Pushbutton @ 11,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 11,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
  
  Aguarde("Aguarde, importando notas")
      
  {Ask} {\\Sistemas\\Vendas\\Notac} Check
  Moveto [Codigo da Empresa       ] TypeIn "~VSDGEMPRESA.."
  Moveto [Tipo do Documento       ] TypeIn "~VSDGTPDOCTO.." 
  Moveto [Data de Emissao         ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
  Moveto [Frete por Conta         ] TypeIn " ~VSDGFRETEPC.."        
  Moveto [Codigo da Transportadora] TypeIn "~VSDGTRANSP.."
  Moveto [Situacao                ] TypeIn "Not C"
  Do_It!
  ClearAll
  
  If IsEmpty("Answer")
   Then MENSAGEM("N„o existem registros a processar !")
        Loop
  EndIf

  NR = NRecords("Answer")
  
  View "ContFrtC"
  Coedit "Answer"
  cont=0
  Scan
    Barra(NR, RecNo())
    Aguarde("Aguarde, processando notas "+BARRA_STRING)

    Moveto "ContFrtC"
    Moveto [Codigo da Empresa]
    Locate IndexOrder By "Ind_001" [Answer->Codigo da Empresa], [Answer->Codigo do Documento], 
                                   [Answer->Numero do Documento], [Answer->Serie do Documento]
    If Retval
       Then Moveto "Answer"
            Loop
       Else End
            NLANC =[Numero do Lancamento] 
            If [Numero do Lancamento]=""
               Then NLANC="000001"
               Else NLANC=AlinhM(StrVAl(NumVal([Numero do Lancamento])+1),6)
            EndIf             
            
            Down
            
            [Numero do Lancamento    ] = NLANC           
            [Codigo da Empresa       ] = [Answer->Codigo da Empresa       ] 
            [Numero do Documento     ] = [Answer->Numero do Documento     ]
            [Serie do Documento      ] = [Answer->Serie do Documento      ]
            [Tipo do Documento       ] = [Answer->Tipo do Documento       ]
            [Codigo do Documento     ] = [Answer->Codigo do Documento     ]
            [Codigo                  ] = [Answer->Codigo                  ]
            [Codigo da Transportadora] = [Answer->Codigo da Transportadora] 
            [Nome Fantasia Transport ] = [Answer->Nome Fantasia Transport ] 
            [Data de Emissao         ] = [Answer->Data de Emissao         ]
            [Data de Saida           ] = [Answer->Data de Saida           ]
            [Frete por Conta         ] = [Answer->Frete por Conta         ] 
            [Frete Incluso na Nota   ] = [Answer->Frete Incluso na Nota   ]
            [Valor do Frete          ] = [Answer->Valor do Frete          ]
            [Valor Nota Fiscal       ] = [Answer->Valor Nota Fiscal       ]
            [Codigo do Representante ] = [Answer->Codigo do Representante ]
            [Nome Fantasia Represent ] = [Answer->Nome Fantasia Represent ]     
            [Valor Frete Cotado      ] = [Answer->Valor Frete Cotado      ]
            [Numero_Cotacao          ] = [Answer->Numero Frete Cotacao    ]
            cont = cont + 1 
    EndIf
    
    Moveto "Answer"   
  EndScan
  
  Do_It!
  ClearAll
  
  If cont=0
     Then Mensagem("As notas encontradas j  foram registradas !")
     Else Mensagem(Format("W6,EIC",cont)+" Novas notas registradas // //Fim do Processo !")
  EndIf
     
  QuitLoop
EndWhile

limparodape(0)
EndProc

;*******************************************************************************
;* Rotina para importar CTR do NotaEC                                          *
;*******************************************************************************
Proc Importa_CTR_Contfret()
private NR

Do_It!
ClearAll

LimpAguarde()

{Ask} {\\Sistemas\\Vendas\\Contfrtc} 
Moveto [Codigo da Empresa       ] Check
Moveto [Numero do Documento     ] Check
Moveto [Serie do Documento      ] Check
Moveto [Codigo do Documento     ] Check
Moveto [CT_Codigo do Documento  ] TypeIn "Blank" 
Do_It!  
ClearAll

If IsEmpty("Answer")
 Then MSG_ERRO = 1
      Return
EndIf

TabelaTFRTC=Adiciona_Indice_Temp("Codigo da Empresa,Numero do Documento,Serie do Documento")

{Ask} TypeIn TabelaTFRTC enter Check
Moveto [Codigo da Empresa       ] Example TypeIn "cemp"
Moveto [Numero do Documento     ] Example TypeIn "ndoc"
Moveto [Serie do Documento      ] Example TypeIn "sdoc"

{Ask} {\\Sistemas\\Vendas\\NotaC}
Moveto [Codigo da Empresa       ] Example TypeIn "cemp"
Moveto [Numero do Documento     ] Example TypeIn "ndoc"
Moveto [Serie do Documento      ] Example TypeIn "sdoc"
Moveto [Chave_Acesso_NFe        ] Check   TypeIn "not Blank"
Do_It!
ClearAll

If IsEmpty("Answer")
 Then MSG_ERRO = 1
      
      delete TabelaTFRTC
      Return
EndIf

TabelaTCHV=Adiciona_Indice_Temp("Chave_Acesso_NFe")   

{Ask} TypeIn TabelaTCHV enter Check
Moveto [Chave_Acesso_NFe        ] Example TypeIn "chv"

{Ask} {\\Sistemas\\Estoque\\NotaER}
Moveto [Chave_Acesso            ] Example TypeIn "chv"
Moveto [Numero do Lancamento    ] Example TypeIn "nlanc"
Moveto [Data_Entrega_Prevista   ] Check 
Moveto [IND_EMIT                ] typeIn "0"

{Ask} {\\Sistemas\\Estoque\\NotaEC}
Moveto [Numero do Lancamento    ] Example TypeIn "nlanc"
Moveto [Codigo do Documento     ] Check TypeIn "As CT Codigo do Documento"
Moveto [Tipo do Documento       ] Check TypeIn "CT.., As CT Tipo do Documento"
Moveto [Serie do Documento      ] Check TypeIn "As CT Serie do Documento" 
Moveto [Numero do Documento     ] Check TypeIn "As CT Numero do Documento"
Moveto [Data de Emissao         ] Check TypeIn "As CT Data de Emissao"
Moveto [Valor Nota Fiscal       ] Check TypeIn "As CT Valor do Documento"
Do_It!
ClearAll

If IsEmpty("Answer")
 Then MSG_ERRO=3
 
      delete TabelaTFRTC
      delete TabelaTCHV
      
      Return
EndIf

NR = NRecords("Answer")

View "ContFrtC"
Coedit "Answer"
cont=0
Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, processando conhecimentos "+BARRA_STRING)

  Moveto "ContFrtC"
  Moveto [Codigo da Empresa]
  Locate IndexOrder By "Ind_001" [Answer->Codigo da Empresa  ], [Answer->Codigo do Documento], 
                                 [Answer->Numero do Documento], [Answer->Serie do Documento ]
  If Retval
     Then while islockrecord() endwhile
     
          [CT_Codigo do Documento] = [Answer->CT Codigo do Documento  ]
          [CT_Tipo do Documento  ] = [Answer->CT Tipo do Documento    ]
          [CT_Numero do Documento] = [Answer->CT Numero do Documento  ]
          [CT_Serie do Documento ] = [Answer->CT Serie do Documento   ]
          [Data do Documento     ] = [Answer->CT Data de Emissao      ]
          [Valor do Documento    ] = [Answer->CT Valor do Documento   ]
          [Data_Entrega_Prevista ] = [Answer->Data_Entrega_Prevista   ]
          unlockrecord
          cont = cont + 1 
  EndIf
  Moveto "Answer"
EndScan                                       

Do_It!
ClearAll

TOTALIZADOR = cont  

delete TabelaTFRTC
delete TabelaTCHV
delete "Answer"
  
limparodape(0)
EndProc

;*******************************************************************************
;* Rotina para importar CTR do NotaEC                                          *
;*******************************************************************************
Proc Importa_CTR_Contfret_DoctoRef()
private NR,ii

Do_It!
ClearAll

LimpAguarde()

{Ask} {\\Sistemas\\Vendas\\Contfrtc} 
Moveto [Codigo da Empresa       ] Check
Moveto [REF_Numero do Documento ] Check TypeIn "as Numero do Documento"
Moveto [REF_Serie do Documento  ] Check TypeIn "as Serie do Documento"
Moveto [REF_Codigo do Documento ] Check TypeIn "as Codigo do Documento"         
Moveto [CT_Codigo do Documento  ] TypeIn "Blank"
Do_It!
ClearAll
  
If IsEmpty("Answer")
 Then MSG_ERRO = 2
      Return
EndIf

TabelaTFRTC=Adiciona_Indice_Temp("Codigo da Empresa,Numero do Documento,Serie do Documento")

{Ask} TypeIn TabelaTFRTC enter Check
Moveto [Codigo da Empresa       ] Example TypeIn "cemp"
Moveto [Numero do Documento     ] Example TypeIn "ndoc"
Moveto [Serie do Documento      ] Example TypeIn "sdoc"
  
{Ask} {\\Sistemas\\Vendas\\NotaC}
Moveto [Codigo da Empresa       ] Example TypeIn "cemp"
Moveto [Numero do Documento     ] Example TypeIn "ndoc"
Moveto [Serie do Documento      ] Example TypeIn "sdoc"
Moveto [Chave_Acesso_NFe        ] Check   TypeIn "not Blank"
Do_It!
ClearAll

If IsEmpty("Answer")
 Then MSG_ERRO = 2

      delete TabelaTFRTC

      Return
EndIf
  
TabelaTCHV=Adiciona_Indice_Temp("Chave_Acesso_NFe")   

{Ask} TypeIn TabelaTCHV enter Check
Moveto [Chave_Acesso_NFe        ] Example TypeIn "chv"
  
{Ask} {\\Sistemas\\Estoque\\NotaER}
Moveto [Chave_Acesso            ] Example TypeIn "chv"
Moveto [Numero do Lancamento    ] Example TypeIn "nlanc"
Moveto [Data_Entrega_Prevista   ] Check 
Moveto [IND_EMIT                ] typeIn "0"
  
{Ask} {\\Sistemas\\Estoque\\NotaEC}
Moveto [Numero do Lancamento    ] Example TypeIn "nlanc"
Moveto [Codigo do Documento     ] Check TypeIn "As CT Codigo do Documento"
Moveto [Tipo do Documento       ] Check TypeIn "CT.., As CT Tipo do Documento"
Moveto [Serie do Documento      ] Check TypeIn "As CT Serie do Documento" 
Moveto [Numero do Documento     ] Check TypeIn "As CT Numero do Documento"
Moveto [Data de Emissao         ] Check TypeIn "As CT Data de Emissao"
Moveto [Valor Nota Fiscal       ] Check TypeIn "As CT Valor do Documento"
Do_It!
ClearAll
  
If IsEmpty("Answer")
 Then MSG_ERRO=4

      delete TabelaTFRTC
      delete TabelaTCHV

      Return
EndIf

NR = NRecords("Answer")
  
View "ContFrtC"
Coedit "Answer"
cont=0
Scan
  Barra(NR, RecNo())
  Aguarde("Aguarde, processando conhecimentos "+BARRA_STRING)

  Moveto "ContFrtC"
  Moveto [Codigo da Empresa]
  Locate IndexOrder By "Ind_005" [Answer->Codigo da Empresa  ], [Answer->Codigo do Documento], 
                                 [Answer->Numero do Documento], [Answer->Serie do Documento ]
  If Retval
       Then while islockrecord() endwhile

          [CT_Codigo do Documento] = [Answer->CT Codigo do Documento  ]
          [CT_Tipo do Documento  ] = [Answer->CT Tipo do Documento    ]
          [CT_Numero do Documento] = [Answer->CT Numero do Documento  ]
          [CT_Serie do Documento ] = [Answer->CT Serie do Documento   ]
          [Data do Documento     ] = [Answer->CT Data de Emissao      ]
          [Valor do Documento    ] = [Answer->CT Valor do Documento   ]
          [Data_Entrega_Prevista ] = [Answer->Data_Entrega_Prevista   ]
          unlockrecord
          cont = cont + 1 
  EndIf
  Moveto "Answer"
EndScan                                       
  
Do_It!
ClearAll

delete TabelaTFRTC
delete TabelaTCHV
delete "Answer"

TOTALIZADOR = TOTALIZADOR + cont        

limparodape(0)
EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_IMPORTANOTAS(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: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"        : Campo="NO"
            Case Campo="TG_TPDOCTO"        : Campo="TG_EMPRESA"
            Case Campo="TG_FRETE_PC"       : Campo="TG_TPDOCTO"
            Case Campo="TG_TRANSP"         : Campo="TG_FRETE_PC"      
            Case Campo="TG_DTINI"          : Campo="TG_TRANSP"
            Case Campo="TG_DTFIM"          : Campo="TG_DTINI"
            Case Campo="YES" Or Campo="NO" : Campo="TG_EMPRESA"
          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
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESA"       : Campo="TG_TPDOCTO"
                    Case Campo="TG_TPDOCTO"       : Campo="TG_FRETE_PC"
                    Case Campo="TG_FRETE_PC"      : Campo="TG_TRANSP"
                    Case Campo="TG_TRANSP"        : Campo="TG_DTINI"      
                    Case Campo="TG_DTINI"         : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"         : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

If RecordStatus("New")
   Then CHAVEN=1 
   Else CHAVEN=0
EndIf                             

If CHAVEN=0 Then Controle_Dia() EndIf

VSDGU_USUARIO = [Codigo_Usuario     ]
VSDGU_DATA    = [Data_Inclusao      ]
VSDGU_HORA    = [Hora_Inclusao      ]
VSDGU_CONTROLE= [Numero_Controle_Dia]

DIGITA_NOTAS()
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

;*******************************************************************************
;* Rotina para controlar Edicao do registro                                    *
;*******************************************************************************
Proc Controla_EdicaoN()
Moveto "ContFrtN"
While True                                      
  ChaveN()
  If CHAVEN=9
     Then QuitLoop
  EndIf
  Controla_EdicaoD()
EndWhile

Moveto "ContFrtC"
Endproc

;*******************************************************************************
;* Rotina para Controlar Edicao do Registro                                    *
;*******************************************************************************
Proc Controla_EdicaoC()
COD_EMPRESA=[Codigo da Empresa]
DIGITAC=True

While DIGITAC
   Moveto "Contfrtc"
   Tecla_Funcao=-10

   While Not IsBlank(Tecla_Funcao)
    Switch
      Case Tecla_Funcao=-10  : Moveto "Contfrtc"
                               SetaCorRegistro("Editar")
                               DIGITA()                     
      Case Tecla_Funcao="F9" :
           Moveto "Contfrtc"
           Moveto [Flag]
           SetaCorRegistro("Padrao")
           Controla_EdicaoN()
           SetaCorRegistro("Padrao")
           If CHAVEN=9
              Then Quitloop
           EndIf
    EndSwitch
  EndWhile
EndWhile

If RecordStatus("Locked") Then UnLockRecord EndIf         
If OPCAO_FORM=OPCAO_FORMRelacao
   Then PickForm OPCAO_FORMRelacao
EndIf

Release Vars FICHA_FINANCEIRA

EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO=""   EndIf
If Not IsAssigned(SYS_NOME_USUARIO)    Then SYS_NOME_USUARIO=""    EndIf
If Not IsAssigned(SYS_NIVEL_USUARIO)   Then SYS_NIVEL_USUARIO="S"  EndIf
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf
If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" EndIf


CDOCTO_ANT=""

If IsFile(PrivDir()+"orddocto.ejf")
   Then LeiaINI(PrivDir()+"orddocto.ejf","ORDENARPOR.S.null")
   Else ORDENARPOR="DOCTO"
EndIf

View   NoWindow "NotaC" 
CoEdit NoWindow "ContFrtC" 

PickForm "1"
Moveto "ContFrtN"
SetaCorRegistro("Padrao")

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