;** Fat ************************************************************************
;*  Digitacao de Documentos no Contas a Pagar                                  *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 09/07/2018 por Bruno Carvalho
;Ultima Alteracao: 24/07/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes na mensagem TECLA -> CHAVED()
;Ultima Alteracao: 03/08/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado sele‡Æo de documentos na aba [Documentos]
;Ultima Alteracao: 23/08/2018 por Bruno Carvalho
;Motivo Alteracao: Alterado a posi‡Æo do campo [serie do documento] com o [numero do documento] no DIGITAD() 
;Ultima Alteracao: 24/08/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes nas TECLAS e ao buscar documentos [F6] 
;Ultima Alteracao: 24/09/2018 por Bruno Carvalho
;Motivo Alteracao: Adicionado vari vel de controle VERIFICA_CONTFRTC e tecla F8 p/ finaliza‡Æo de lan‡amento
;Ultima Alteracao: 31/10/2018 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao finalizar o registro apenas pela tecla F8 e filtro por op‡Æo de data ao buscar documentos
;Ultima Alteracao: 26/06/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes no plano de contas "SAIDA" ou "ENTRADA" -> Fun‡Æo PlContas() p/ verificar o plano de conta informado
;Ultima Alteracao: 24/09/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes na proc Verifica_NotaEntrada() quando [Natureza do Frete] <> "0" ou "1", exibir relat¢rio de inconsistˆncias 
;Ultima Alteracao: 30/09/2019 por Bruno/An¡vel
;Motivo Alteracao: NÆo ser  verificado a [Natureza do Frete] ao procurar os CT-E na proc Verifica_NotaEntrada()
;Ultima Alteracao: 28/10/2019 por Bruno Carvalho
;Motivo Alteracao: Ajustes ao verificar o documento -> Checa_Duplicidade()  

;Somente verifica h  existˆncia de controle de frete e/ou nota de entrada se [Codigo do Documento] for igual a "CT-E"

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

While True
  Moveto "FatC"
  End
  Moveto [Numero do Lancamento]
  NLANC  = [Numero do Lancamento]
  
  If OPCAO_FORM="F"
    Then Down
    Else PgDn PgDn PgDn
  EndIf
  Moveto [Numero do Lancamento]

  SetaCorRegistro("Editar")
  While True

  MSGCAMPO=""
  TECLA=""
  AguardaTeclasPadrao()

  Switch
  Case RetVal="F3": If OPCAO_FORM="F"
                       Then OPCAO_FORM="1"
                       Else OPCAO_FORM="F"
                    EndIf
                    Del
                    CHAVEC=5
                    Return
  Case RetVal=-94 : MsgTeclasPadrao()
  Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
        While True
          If OPCAO_FORM="F"
             Then PAGINA("FatC","MR")
             Else PAGINA("FatC","MT")
          EndIf
          NLANC=[Numero do Lancamento]
          If EDITAR="S"
             Then PickForm "1"
                  Echo Normal
                  Echo Off
                  If Checa_Controle([Numero_Controle_Dia])
                     Then If ([Situacao]="FINALIZADO" And Checa_Supervisor()) Or [Situacao]="" Or [Situacao]="ABERTO" 
                             Then CHAVEC=0
                                  Controla_EdicaoC()
                          EndIF
                     Else UnLockRecord
                  EndIf
             Else If EXCLUIR="S"
                    Then If ([Situacao]="FINALIZADO" And Checa_Supervisor()) Or [Situacao]="" Or [Situacao]="ABERTO"
                            Then If QuerExcluir("")
                                    Then PickForm "1"
                                         EXCLUSAO()
                                   Else UnLockRecord
                                 EndIf
                            Else Unlockrecord
                         EndIf   
                    Else QuitLoop
                  EndIf
          EndIf
          If OPCAO_FORM="1"
             Then PickForm "1"
             Else PickForm "F"
          EndIf
          SetaPosForm()
        EndWhile
        QuitLoop
   Case Retval="ESC": 
        CHAVEC=9
        Del
        Return
   Case Retval="ENTER" :
         If Numero_Lancamento("","F")
            Then NLANC = PROXLANCTO_NLANC
                 Release Vars PROXLANCTO_NLANC  
            Else QuitLoop
         EndIf
         PickForm "1"    
         Moveto [Numero do Lancamento]
         If PROXIMO_LANCTO_REG_ACHOU
            Then CHAVEC=0
                 If Checa_Controle([Numero_Controle_Dia])
                    Then Return
                 EndIf
            Else CHAVEC=1
                 If Not Checa_Controle(SYS_CONTROLE_DIA)
                    Then OPCAO_FORM="F"
                    Else Return         
                 EndIf                  
         EndIf         
         If CHAVEC=1
            Then Del
         EndIf
         If OPCAO_FORM="F"
            Then PickForm "F"
         EndIf
         QuitLoop
    EndSwitch
  EndWhile
EndWhile

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

If Tecla_Funcao=-11
   Then Moveto [Valor Documentos]
   Else If CHAVEC=0
           Then ;Moveto [Codigo          ]
                Moveto [Valor Documentos ]
           Else Moveto [Codigo da Empresa]
        EndIf
EndIf
        
SetaCorRegistro("Editar")
While True
      MSG_CAMPO=Field()
      Switch
        Case Field() = "Codigo"                 : MSG_CAMPO = "Codigo da Pessoa"
        Case Field() = "Nome Fantasia EmitDest" : MSG_CAMPO = "Nome Fantasia"
        Case Field() = "Data Competencia"       : MSG_CAMPO = "Data de Competˆncia"
        Case Field() = "Tipo do Pagamento"      : MSG_CAMPO = "Forma de Pagamento"
        Case Field() = "Codigo Plano_Conta"     : MSG_CAMPO = "Codigo do Plano de Conta"
        Case Field() = "Codigo CCusto"          : MSG_CAMPO = "Codigo do Centro de Custo"
        Case Field() = "Valor de Juros"         : MSG_CAMPO = "Informe o Valor do Juros"
        Case Field() = "Taxa de Juros"          : MSG_CAMPO = "Informe a Taxa de Juros"          
        Case Field() = "Tipo Taxa de Juros"     : MSG_CAMPO = "Tipo de Juros: Diario/Mensal/Anual"
      EndSwitch
      
      If Field()="Codigo da Empresa"   Or
         Field()="Codigo do Documento" Or
         Field()="Codigo"              Or
         Field()="Codigo da Conta"     Or
         Field()="Tipo do Pagamento"   Or
         Field()="Codigo Plano_Conta"  Or
         Field()="Codigo CCusto"
         Then MSG_CAMPO=MSG_CAMPO+", [F1]Consultar tabela"
      EndIf
      
      If Field()="Codigo da Conta"
         Then Monta_Opcoes("Codigo da Conta","")
      EndIf  
     
      If Field()="Codigo do Documento"
         Then Monta_Opcoes("Codigo do Documento","")
      EndIf
     
      If Field()="Codigo da Empresa"      
         Then Monta_Opcoes("Empresas","")     
      EndIf   

      If Verifica_Campo()
         Then TECLA="F8=Atualizar  PgDn=Finalizar  "
              AguardaTeclasPadraoIt2()
         Else If CHAVEC=0
                 Then TECLA=" Esc=Retornar  Del=Excluir  F8=Atualizar  "
                 Else TECLA=" Esc=Retornar               F8=Atualizar  "
              EndIf
              AguardaTeclasDig()
      EndIf
 
      Switch
      Case RetVal="DOWN" Or RetVal=-145      : If Not Verifica_Campo() Then Moveto [Valor Documentos] EndIf
      Case RetVal=-116 : 
           If Verifica_Campo() Then Tecla_Funcao="F8" EndIf
           CHAVED=9
           Return
      Case RetVal=-115 :
           If Verifica_Campo() Then Tecla_Funcao="F9" EndIf
           CHAVED=9
           Return
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case RetVal="F1":
           If Field()="Codigo da Empresa"   Or
              Field()="Codigo do Documento" Or
              Field()="Codigo"              Or
              Field()="Codigo da Conta"     Or
              Field()="Tipo do Pagamento"   Or
              Field()="Codigo Plano_Conta"  Or
              Field()="Codigo CCusto"
              Then CONSULTAF1()
           EndIf
      Case Retval="F8" Or Retval=-66 :
           If Not Checa_Pagina("FINALIZA")
              Then Loop
           EndIf  
           If [Situacao]="FINALIZADO"
              Then MSG="Deseja atualizar novamente o lan‡amento "+NLANC+"?"
              Else If MSG="" ;Checa_Pagina()
                      Then MSG="Deseja atualizar o lan‡amento "+NLANC+"?"
                           Ok="N"
                      Else MSG=""
                           Ok="S"
                   EndIf        
           EndIf
           If MSG<>"" Then ConfGeral(MSG) EndIf
           If Ok="S"
              Then Finaliza_Registro("FINALIZA")
                   CHAVEC=9
                   CHAVED=9
                   DIGITAC      = False      
                   Tecla_Funcao = ""
                   Return
              Else Loop
           EndIf               
      Case Retval="PGDN" :
           If Not Checa_Pagina("")
              Then Loop
           EndIf   
           If [Situacao]="" Then [Situacao]="ABERTO" EndIf   
           CHAVEC=9
           CHAVED=9
           DIGITAC      = False      
           Tecla_Funcao = ""
           Return
      Case Retval="F3" And CHAVEC=0:
           OPCAO="1"
           Quitloop
      Case Retval="DEL":
           If CHAVEC=0
              Then If Checa_Supervisor() And QuerExcluir("")
                       Then EXCLUSAO()
                            CHAVEC=9
                            DIGITAC=False
                            Tecla_Funcao=""
                            QuitLoop
                   EndIf
           EndIf
      Case Retval="ESC": 
           Switch
             Case Field() = "Codigo da Empresa"      :  
                  If QuerDesfazer("")
                     Then If CHAVEC=0
                             Then Undo
                             Else EXCLUSAO()
                          EndIf
                          CHAVEC=9
                          DIGITAC=False
                          Tecla_Funcao=""
                          QuitLoop
                  EndIf
             Case Field() = "Codigo"        :
                  If CHAVEC=1
                     Then Moveto [Codigo da Empresa]
                     Else If QuerDesfazer("")
                             Then If [Situacao]="" Then [Situacao]="ABERTO" EndIf
                                  ;Finaliza_Registro("")
                                  CHAVEC=9
                                  DIGITAC =False
                                  Tecla_Funcao=""
                                  QuitLoop
                          EndIf
                 EndIf         
             Case Field() = "Nome Fantasia EmitDest" : Moveto [Codigo             ]
             Case Field() = "Razao Social"           : Moveto [Codigo             ]
             Case Field() = "Codigo do Documento"    : Moveto [Codigo             ]
             Case Field() = "Serie do Documento"     : Moveto [Codigo do Documento]
             Case Field() = "Numero do Documento"    : Moveto [Serie do Documento ]
             Case Field() = "Data de Emissao"        : Moveto [Numero do Documento]
             Case Field() = "Data de Entrada"        : Moveto [Data de Emissao    ]
             Case Field() = "Data Competencia"       : Moveto [Data de Entrada    ]
             Case Field() = "Valor Documentos"       : 
                  If CHAVEC=1
                     Then Moveto [Data Competencia   ]
                     Else If QuerDesfazer("")
                             Then If [Situacao]="" Then [Situacao]="ABERTO" EndIf
                                  CHAVEC=9
                                  DIGITAC =False
                                  Tecla_Funcao=""
                                  QuitLoop
                          EndIf
                 EndIf     
             Case Field() = "Valor Abatimento"       : Moveto [Valor Documentos   ]
             Case Field() = "Valor Acrescimo"        : Moveto [Valor Abatimento   ]
             Case Field() = "Valor Despesas Cobranca": Moveto [Valor Acrescimo    ]
             Case Field() = "Valor Fatura"           : Moveto [Valor Despesas Cobranca]
             Case Field() = "Codigo da Conta"        : Moveto [Valor Despesas Cobranca]
             Case Field() = "Codigo Plano_Conta"     : Moveto [Codigo da Conta    ]
             Case Field() = "Codigo CCusto"          : Moveto [Codigo Plano_Conta ]
             Case Field() = "Multa"                  : Moveto [Codigo CCusto      ]
             Case Field() = "Valor de Juros"         : Moveto [Multa              ]
             Case Field() = "Taxa de Juros"          : Moveto [Valor do Desconto  ]           
             Case Field() = "Tipo Taxa de Juros"     : Moveto [Valor de Juros     ]
             Case Field() = "Valor do Desconto"      : Moveto [Tipo Taxa de Juros ] 
             Case Field() = "Data Limite Desconto"   : Moveto [Valor do Desconto  ]
             OtherWise : Left
           EndSwitch
      Case Retval="ENTER":
           Switch
           Case Field() = "Codigo da Empresa" :
                If Not Checa_Opcoes("Empresas",[])
                   Then Mensagem("Empresa inv lida !")
                        Loop     
                   Else If Not Isblank([])
                           Then COD_EMPRESA=[]
                                Moveto [Codigo] 
                        EndIf
                EndIf
           Case Field() = "Codigo" :
                Switch
                  Case IsBlank([])  : Loop 
                  Case CHAVEC=1     : If Cliente_Inativo() Then Loop EndIf     
                EndSwitch
                If [Nome Fantasia EmitDest]="DIVERSOS"
                   Then Moveto [Razao Social   ]
                   Else Moveto [Codigo do Documento]
                EndIf
           Case Field()="Razao Social"        :
                If Not IsBlank([])
                   Then Moveto [Codigo do Documento]
                EndIf     
           Case Field() = "Codigo do Documento" : 
                If Not Checa_Opcoes("Codigo do Documento",[])
                   Then [Tipo do Documento  ]=""
                        [Serie do Documento ]=""
                        [Numero do Documento]=""
                        Mensagem("Codigo do Documento Inv lido !")
                        Loop
                EndIf       
                If Not IsBlank([])
                   Then Moveto [Serie do Documento]
                EndIf
           Case Field() = "Serie do Documento"  : Moveto [Numero do Documento]     
           Case Field() = "Numero do Documento" : CAMPO="Data de Emissao"
                If Not IsBlank([])
    							 Then If CHAVEC=1 
                           Then If Checa_Duplicidade("Cabeca")
                                   Then CAMPO="Numero do Documento"
                                EndIf
                        EndIf
     		                Moveto Field CAMPO
                EndIf
           Case Field() = "Data de Emissao" : 
                If Not IsBlank([])
                   Then Moveto [Data de Entrada]
                EndIf
           Case Field() = "Data de Entrada" : 
                If Not IsBlank([])
                   Then Moveto [Data Competencia]
                EndIf
           Case Field() = "Data Competencia"   :
                If IsBlank([Data Competencia])
                   Then [Data Competencia]=[Data de Emissao]
                EndIf   
                Moveto [Valor Documentos]                
                
           Case Field() = "Valor Documentos" : 
                If Not IsBlank([])
                   Then Total_Fatura()
                        Moveto [Valor Abatimento]
                EndIf
           Case Field() = "Valor Abatimento"        : If Not IsBlank([]) Then Total_Fatura() EndIf
                                                      Moveto [Valor Acrescimo]
           Case Field() = "Valor Acrescimo"         : If Not IsBlank([]) Then Total_Fatura() EndIf  
                                                      Moveto [Valor Despesas Cobranca]
           Case Field() = "Valor Despesas Cobranca" : If Not IsBlank([]) Then Total_Fatura() EndIf
                                                      Moveto [Codigo da Conta]
           Case Field() = "Codigo da Conta"   : 
                If Not Checa_Opcoes("Codigo da Conta",[])
                       Then Mensagem("Conta inv lida !")
                            Loop     
                       Else If Not IsBlank([])
                               Then Moveto [Codigo Plano_Conta]
                            EndIf
                EndIf                   
           Case Field() = "Codigo Plano_Conta" :
                CodPlacon  = [Codigo Plano_Conta]
                DescPlacon = ""
                If Not IsBlank(CodPlacon)
                   Then If PlContas(CodPlacon,"S")
                           Then DescPlacon = LTrim(REG_PLCONTAS["Descricao Plano_Conta"])
                           Else Loop
                        Endif
                Endif
                [Descricao Plano_Conta]= DescPlacon
                Moveto [Codigo CCusto]
           Case Field() = "Codigo CCusto"      : 
                CodCCusto = [Codigo CCusto]
                If Not IsBlank(CodCCusto)
                   Then Ativa_Lookup()
                        Moveto [Codigo CCusto]
                        Locate CodCCusto
                        If RetVal
                           Then If [Tipo de Conta] <> "A"
                                   Then Msg = "Tipo de Conta deve ser Analitica ! // //"
                                        Msg = Msg + "Uma Conta pode ser Analitica ou Sintetica.//"
                                        Msg = Msg + "    Um lancamento pode ser efetuado somente em uma conta //"
                                        Msg = Msg + "Analitica. Verifique no Cadastro Centros de Custos a classificacao //"
                                        Msg = Msg + "do Tipo de Conta."
                                        Mensagem(Msg)
                                        KeyPress "Esc"
                                        DescCCusto = ""
                                        Loop
                                   Else DescCCusto = LTrim([Descricao CCusto])
                                        KeyPress "Esc"
                                Endif
                           Else Mensagem("Centro de Custo n„o Cadastrado !")
                                KeyPress "Esc"
                                Loop
                        EndIf
                   Else DescCCusto = ""
                EndIf
                [Descricao CCusto] = DescCCusto        
                KeyPress "Esc"
                Moveto [Multa]             
           Case Field() = "Multa"              : Moveto [Valor de Juros]
           Case Field() = "Valor de Juros"     : 
                If []<=0
                   Then []=BlankNum()
                        Moveto [Taxa de Juros]
                   Else [Taxa de Juros]=BlankNum()
                        Moveto [Tipo Taxa de Juros]
                EndIf
           Case Field()="Tipo Taxa de Juros" :
                If []<>"D" and []<>"M" and []<>"A" and []<>""
                   Then Loop
                EndIf
                Switch
                  Case []=""  : [NDias Taxa de Juros]=0
                  Case []="D" : [NDias Taxa de Juros]=1
                  Case []="M" : [NDias Taxa de Juros]=30
                  Case []="A" : [NDias Taxa de Juros]=365
                EndSwitch
                Moveto [Valor do Desconto ]
           Case Field()="Valor do Desconto":
                If Not IsBlank([])
                   Then If [] < 0 Then Loop EndIf
                EndIf
                Right
           Case Field()="Data Limite Desconto":
                If IsBlank([]) And [Valor do Desconto]>0
                   Then Loop
                EndIf
                If IsBlank([])=False
                   Then If [Valor do Desconto]=0 or
                           [Valor do Desconto]=""
                           Then Loop
                   EndIf
                EndIf
                Tecla_Funcao="F8"
                SetaCorRegistro("Padrao")
                QuitLoop
           OtherWise : Right
           EndSwitch
      EndSwitch   
EndWhile

EndProc ;DIGITAC()

;*******************************************************************************
;* Rotina para Localizar Item                                                  *
;*******************************************************************************
Proc CHAVED()
Private ANT_CODDOC

Moveto "FatD"
While True
  ANT_CODDOC = ""
  Somatoria("Documentos")
  Moveto "FatD"
  Moveto [Sequencia]
  End
  If [Codigo do Documento]<>"" Then ANT_CODDOC = [Codigo do Documento] Endif  
  SEQIT = [Sequencia]
  Down
  [Numero do Lancamento]=NLANC
  Moveto [Sequencia]

  Seta_Sequencia(SEQIT,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  Opcao_Ver=False
  SetaCorRegistro("Editar")
  While True
    MSG_CAMPO=""
    TECLA="Esc=Retornar  PgDn=Finalizar  "
    
    AguardaTeclasPadraoIt2()
    If RetVal=-33
       Then Echo Normal
            Echo Off
            ShowPopup " Fun‡”es " CENTERED
              "F6 ~S~ele‡Æo de CT-E  " : " Selecionar conhecimento de transporte" : "F6",
              Separator,
              "~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=-116 :
         Del
         Tecla_Funcao="F9"
         CHAVED=9
         Return
    Case RetVal=-115 : 
         Del 
         Tecla_Funcao=-11
         CHAVED=9
         Return
    Case Retval="PGDN":
         Del
         Moveto [Sequencia]
         If RecordStatus("New")=True
            Then MENSAGEM("A Fatura deve ter pelo menos 1(um) documento!")
                 QuitLoop
         EndIf       
         Moveto "FatC"
         If Not Checa_Pagina("")
            Then Moveto "FatD"
                 Moveto [Sequencia]
                 QuitLoop
         EndIf 
         If [Situacao]="" Then [Situacao]="ABERTO" EndIf   
         CHAVEC=9
         CHAVED=9
         DIGITAC      = False      
         Tecla_Funcao = ""
         Return
    Case RetVal="ESC" Or Retval="PGUP":
         Del
         SetaCorRegistro("Padrao")
         CHAVED=9
         Tecla_Funcao=-10
         Return
    Case RetVal="F6" :
         Del
         Seleciona_Documentos()
         QuitLoop
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           PAGINA("FatD","MR")
           SEQIT=[Sequencia]
           If EDITAR="S"
              Then CHAVED=0
                   DIGITAD()
                   QuitLoop
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then If CHAVEC=0
                                      Then Grava_LogEx("ExclFatD,Excluiu Doc Faturamento NL: "+[FatC->Numero do Lancamento]+
                                           " Doc: "+[FatD->Codigo do Documento] +" " +[FatD->Tipo do Documento] + " " + 
                                           [FatD->Serie do Documento] + " " + [FatD->Numero do Documento])
                                   EndIf
                                   Ajusta_CT_PAGO()
                                   CHAVED=8                       
                                   Del
                              Else UnLockRecord
                           EndIf        
                      Else QuitLoop
                   EndIf
           EndIf           
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ENTER":  
         If Not Seta_Sequencia(SEQIT,True)
            Then Del
                 QuitLoop
         EndIf
         SEQIT=[]
         Del

         If NumVal(SEQIT)>900
            Then Mensagem("N£mero m ximo de documentos permitidos ‚ 900 !")
                 QuitLoop
         EndIf

         Locate NLANC,SEQIT
         If Retval
            Then CHAVED=0
                 SEQIT=[]
            Else CHAVED=1
                 End
                 Down
                 [Numero do Lancamento] = NLANC
                 [Sequencia           ] = SEQIT
                 [Codigo do Documento ] = ANT_CODDOC
                 UnLockRecord
                 Locate NLANC,SEQIT
         EndIf
         Return
    EndSwitch
  EndWhile
EndWhile

EndProc ;CHAVED()

;*******************************************************************************
;* Rotina para Digitacao de Documentos                                         *
;*******************************************************************************
Proc DIGITAD()

If CHAVED=0
    Then Moveto [Valor do Documento ]
    Else If [Codigo do Documento]<>""
            Then Moveto [Numero do Documento]
            Else Moveto [Codigo do Documento] 
         EndIf 
EndIf

SetaCorRegistro("Editar")
While True
      MSG_CAMPO=Field()
      If Field()="Codigo do Documento"
         Then MSG_CAMPO=MSG_CAMPO+", [F1]Consultar tabela"
      EndIf
      If CHAVED=0
         Then TECLA="Esc=Retornar  Del=Excluir  "
         Else TECLA="Esc=Retornar  PgDn=Finalizar"
      EndIf  
      If Field()="Codigo do Documento"
         Then Monta_Opcoes("Codigo do Documento","")
      EndIf
      AguardaTeclasPadraoIt2()

      Switch
      Case RetVal=-116 : 
           Del 
           Tecla_Funcao="F9"
           CHAVED=9
           Return
      Case RetVal=-115 :
           Del
           Tecla_Funcao=-11
           CHAVED=9
           Return      
      Case RetVal="F1":
           If Field()="Codigo do Documento"
              Then CONSULTAF1()
           EndIf          
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL": 
           If CHAVED=0
              Then If QuerExcluir("") 
                      Then Del
                           QuitLoop
                   EndIf
           EndIf           
      Case Retval="ESC":
           Switch
           Case Field()="Codigo do Documento":
                If QuerDesfazer("")
                   Then If CHAVED=1
                           Then Del
                           Else Undo
                        EndIf
                        QuitLoop
                EndIf
           Case Field()="Numero do Documento" : Moveto [Codigo do Documento]
           Case Field()="Serie do Documento"  : Moveto [Numero do Documento]
           Case Field()="Data de Emissao"     : Moveto [Serie do Documento ]     
           OtherWise:
                Left
           EndSwitch
      Case Retval="ENTER":
           Switch
             Case Field()="Codigo do Documento" : 
                  If Not Checa_Opcoes("Codigo do Documento",[])
                     Then [Tipo do Documento  ]=""
                          [Serie do Documento ]=""
                          [Numero do Documento]=""
                          Mensagem("Codigo do Documento Inv lido !")
                          Loop
                  EndIf       
                  If Not IsBlank([])
                     Then Moveto [Numero do Documento]
                  EndIf
             Case Field()="Numero do Documento" : CAMPO="Serie do Documento"
                  If IsBlank([])
      							 Then CAMPO="Numero do Documento"
                  EndIf
                  Moveto Field CAMPO
             Case Field()="Serie do Documento"  : CAMPO = "Data de Emissao"
                  If Checa_Duplicidade("Documentos")
                     Then CAMPO="Serie do Documento"
                  EndIf
       		        Moveto Field CAMPO
             Case Field()="Data de Emissao"     : 
                  If Not IsBlank([])
                     Then Moveto [Valor do Documento]
                  EndIf         
             Case Field()="Valor do Documento"  :
                  If Not IsBlank([])
                     Then If [Codigo do Documento]="CT-E"
                             Then Verifica_Fatura("Verifica") 
                                  QuitLoop
                             Else QuitLoop
                          EndIf            
                  EndIf                  
             OtherWise                          : Right
           EndSwitch
      EndSwitch
EndWhile

EndProc

;*******************************************************************************
;* Rotina para Localizar Item                                                  *
;*******************************************************************************
Proc CHAVEV()

Moveto "FatV"
While True
  Somatoria("Vencimentos")
  Moveto "FatV"
  Moveto [Sequencia]
  End
  SEQIT = [Sequencia]
  Down
  [Numero do Lancamento]=NLANC
  Moveto [Sequencia]

  Seta_Sequencia(SEQIT,False)
  If IsLockRecord()
     Then Del
          Loop
  EndIf

  Opcao_Ver=False
  SetaCorRegistro("Editar")
  While True
    MSG_CAMPO=""
    TECLA= " F7=Paginar  PgUp  PgDn"
    
    AguardaTeclasPadraoIt2()

    Switch
    Case RetVal=-116 : 
         Del 
         Tecla_Funcao=-11                        
         CHAVEV=9
         Return
    Case RetVal=-115 : 
         Del 
         Tecla_Funcao="F8"
         CHAVEV=9
         Return
    Case Retval="PGDN":
         Del
         Moveto "FatC"
         If Not Checa_Pagina("")
            Then Moveto "FatV"
                 Moveto [Sequencia]
                 QuitLoop
         EndIf  
         If [Situacao]="" Then [Situacao]="ABERTO" EndIf   
         CHAVEC=9
         CHAVED=9
         CHAVEV=9
         DIGITAC      = False      
         Tecla_Funcao = ""
         Return
    Case RetVal="ESC" : 
         Del
         SetaCorRegistro("Padrao")
         CHAVEV=9
         Return
    Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
         Del
         While True
           PAGINA("FatV","MR")
           SEQIT=[Sequencia]
           If EDITAR="S"
              Then CHAVEV=0
                   DIGITAV()
                   QuitLoop
              Else If EXCLUIR="S"
                      Then If QuerExcluir("")
                              Then debug
                                   If CHAVEC=0
                                      Then Grava_LogEx("ExclFatV,Excluiu Venc Faturamento: Lanc. "+[FatC->Numero do Lancamento]+
                                           " Vencimento: Seq "+Strval([Sequencia])+"  Data "+StrVal([Data])+"  Valor "+StrVal([Valor]))
                                   EndIf
                                   CHAVEV=8
                                   Del
                              Else UnLockRecord
                           EndIf        
                      Else QuitLoop
                   EndIf
           EndIf           
           SetaPosForm()
         EndWhile
         QuitLoop
    Case Retval="ENTER":  
         If Not Seta_Sequencia(SEQIT,True)
            Then Del
                 QuitLoop
         EndIf
         SEQIT=[]
         Del

         If NumVal(SEQIT)>900
            Then Mensagem("N£mero m ximo de documentos permitidos ‚ 900 !")
                 QuitLoop
         EndIf

         Locate NLANC,SEQIT
         If Retval
            Then CHAVEV=0
                 SEQIT=[]
            Else CHAVEV=1
                 End
                 Down
                 [Numero do Lancamento] = NLANC
                 [Sequencia           ] = SEQIT
                 UnLockRecord
                 Locate NLANC,SEQIT
         EndIf
         Return
    EndSwitch
  EndWhile
EndWhile

EndProc ;CHAVEV()

;*******************************************************************************
;* Rotina para Digitacao de Documentos                                         *
;*******************************************************************************
Proc DIGITAV()

If CHAVEV=1
   Then Moveto [Numero de Dias]
   Else Moveto [Data          ]
EndIf

FPAGTO=[Forma de Pagamento]

SetaCorRegistro("Editar")
While True
      If CHAVEV=0
         Then TECLA="Esc=Retornar  Del=Excluir  "
         Else TECLA="Esc=Retornar  "  
      EndIf  
      
      fpold=[Forma de Pagamento]
      
      MSG_CAMPO=Field()
      If Field()="Forma de Pagamento"
         Then MSGCAMPO=MSGCAMPO+", [F1]Consultar tabela"
      EndIf     
      
      AguardaTeclasPadraoIt2()
      
      Switch
      Case RetVal="F1" : If Field()="Forma de Pagamento"
                            Then CONSULTAF1()
                         EndIf
      Case RetVal=-116 : 
           Del 
           Tecla_Funcao=-11
           CHAVEV=9
           Return
      Case RetVal=-115 :
           Del 
           Tecla_Funcao="F8"
           CHAVEV=9
           Return         
      Case Retval="FIELDVIEW" or Retval="F35":
           EDITFIELD()
      Case Retval="DEL":
           If CHAVEV=0
              Then If QuerExcluir("") 
                      Then Del
                           QuitLoop
                   EndIf
           EndIf           
      Case Retval="ESC":
           Switch
           Case Field()="Numero de Dias":
                If QuerDesfazer("")
                   Then If CHAVEV=1
                           Then Del
                           Else Undo
                        EndIf
                        QuitLoop
                EndIf     
           OtherWise:
                Left
           EndSwitch
      Case Retval="ENTER":
           Switch
             Case Field()="Numero de Dias":
                  If Not IsBlank([]) Or []>0
                     Then ND=[]
                          Right
                          []=[FatC->Data de Emissao]+ND
                     Else Right
                  EndIf
             Case Field()="Data":
                     If IsFieldNull([]) Then Loop EndIf
                     Right
             Case Field()="Valor":
                     If IsFieldNull([]) Then Loop EndIf
                     Right
             Case Field()="Forma de Pagamento":
                  If IsFieldNull([]) Then Loop EndIf
                  
                  If []<>FPAGTO And Not IsBlank(FPAGTO)
                     Then Mensagem("Para mudar forma de Pagto exclua e inclua novamente este Vencimento Ok !")
                          []=FPAGTO
                          Loop
                   EndIf   
                   FPAGTO=[]
                   QuitLoop
             OtherWise                          : Right
           EndSwitch
      EndSwitch
EndWhile

EndProc

;*******************************************************************************
;* Rotina para Digitacao de Documentos                                         *
;*******************************************************************************
Proc DIGITACD()

Moveto [Composicao de Dias]

SetaCorRegistro("Editar")
While True
      TECLA="Esc=Retornar  PgDn=Finalizar  "
      
      MSG_CAMPO=Field()
      
      AguardaTeclasPadraoIt2()

      If RetVal=-33
         Then Echo Normal
              Echo Off
              ShowPopup " Fun‡”es " CENTERED
                "F4  ~C~alcular Vencimentos ": " Calcular Vencimentos             " : "F4",
                "F8  ~V~encimentos          ": " Vencimentos                      " : "F8",
                Separator,
                "~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=-116 : 
           Tecla_Funcao=-11
           If Field()<>"Composicao de Dias" And Field()<>"Tipo do Pagamento" Then Del EndIf
           TAB_ANT = Table()
           Moveto "FatC"
           SetaCorRegistro("Padrao")
           Moveto TAB_ANT
           
           CHAVEV=9
           Return
      Case RetVal=-115 :
           Tecla_Funcao="F8"
           If Field()<>"Composicao de Dias" And Field()<>"Tipo do Pagamento" Then Del EndIf
           TAB_ANT = Table()
           Moveto "FatC"
           SetaCorRegistro("Padrao")
           Moveto TAB_ANT
           
           CHAVEV=9
           Return      
      Case RetVal="F1":
           If Field()="Forma de Pagamento"
              Then CONSULTAF1()
           EndIf           
      Case RetVal="F4" :       
           If Isblank([Tipo do Pagamento])
              Then Mensagem("Informe a forma de pagamento!") 
                   Loop
           EndIf
           If Not Checa_CompDias([Composicao de Dias])
              Then Loop
           EndIf
           Calcular_Vencimentos()
      Case RetVal="F8" :     
           Moveto "FatV"
           While True
             CHAVEV()
             If CHAVEV=9
                Then QuitLoop
             EndIf
             Controla_EdicaoV()
           EndWhile
           QuitLoop
           
      Case Retval="PGDN"  :
           Moveto "FatC"
           If Not Checa_Pagina("")
              Then QuitLoop
           EndIf  
           If [Situacao]="" Then [Situacao]="ABERTO" EndIf   
           CHAVEC=9
           CHAVED=9
           CHAVEV=9
           DIGITAC      = False      
           Tecla_Funcao = ""
           Return
            
      Case Retval="ESC"  : 
           Switch
             Case Field()="Composicao de Dias" : CHAVED=9
                                                 CHAVEV=9
                                                 Tecla_Funcao=-10
                                                 Moveto "FatD"
                                                 SetaCorRegistro("Padrao")
                                                 Moveto "FatC"
                                                 Return
             Case Field()="Tipo do Pagamento"  : Moveto [Composicao de Dias]
           EndSwitch
           
      Case Retval="ENTER" : 
           Switch
             Case Field()="Composicao de Dias" : Moveto [Tipo do Pagamento]
             Case Field()="Tipo do Pagamento"  : CHAVED=9
                                                 CHAVEV=9
                                                 Tecla_Funcao=-11
                                                 Moveto "FatD"
                                                 SetaCorRegistro("Padrao")
                                                 Moveto "FatC"
                                                 Return     
           EndSwitch                 
      EndSwitch
EndWhile

EndProc ;DIGITACD()

;*******************************************************************************
;* Exclusao de Baixas e Lancamento                                             *
;*******************************************************************************
Proc EXCLUSAO()
Private MSG_ERRO,ANT_FIE,ANT_TAB

ANT_TAB = Table()
ANT_FIE = Field()

Moveto "FatC"
UnLockRecord
FormKey
   
Estorno_CP_Ok = True
OP_MOVDP="ESTORNAR"
Play "FT_GTIT"

If Not Estorno_CP_Ok
   Then Moveto "FatC"
        Moveto [Numero do Lancamento]
        Locate NLANC
        UnLockRecord
        FormKey
        LockRecord
        Mensagem("N„o foi poss¡vel excluir este lan‡amento!")
        Return     
EndIf

;Moveto "FatC"
;UnLockRecord
;FormKey

Atualiza_Controle_Frete("Verifica_Exclusao") 
Atualiza_Controle_Frete("Exclusao") 
 
;;;NAO ser  travado a exclusÆo caso ocorra algum inconsistˆncia
;If Atualiza_Controle_Frete("Verifica_Exclusao")
;   Then Atualiza_Controle_Frete("Exclusao")
;        MSG_ERRO = ""
;   Else MSG_ERRO =            Completa("N„o foi possivel excluir o lancamento "+NLANC,55," ")+"////"
;        MSG_ERRO = MSG_ERRO + Completa("Verificar as inconsistˆncias encontradas, resolvˆ-las",55," ")+"//"
;        MSG_ERRO = MSG_ERRO + Completa("e assim prosseguir com a exclusÆo deste lan‡amento!",55," ")
;EndIf   

Moveto "FatC"
Moveto [Numero do Lancamento]
Locate NLANC
UnLockRecord
FormKey
LockRecord

;If MSG_ERRO<>""
;   Then ;;;NAO ser  travado a exclusÆo caso ocorra algum inconsistˆncia
;        Moveto ANT_TAB
;        Moveto Field ANT_FIE 
;        Mensagem(MSG_ERRO)
;        Return
;EndIf        

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

Moveto "FatD"
While RecordStatus("New")=False
  Del 
EndWhile
           
Moveto "FatC"
Grava_LogEx("ExclFat,Excluiu Faturamento (A PAGAR) NL: "+NLANC+" Pessoa: "+[Codigo]+" Doc: "+[FatC->Codigo do Documento] +" " + 
            [FatC->Tipo do Documento] + " "+ [FatC->Serie do Documento] + " " + [FatC->Numero do Documento])

UnLockRecord
FormKey
LockRecord

Del

EndProc ;Exclusao()

;*******************************************************************************
;* Rotina para Validar Campo                                                   *
;*******************************************************************************
Proc Checa_Pagina(PARAM)
Private ANT_TAB,ANT_FIE,TEMP,PARAM

MSG=""
Total_Fatura()
Switch
  Case [Codigo da Empresa]=""                                 : MSG = "Informe a empresa!"
  Case [Codigo da Conta]=""                                   : MSG = "Informe a conta!"
  Case [Codigo]=""                                            : MSG = "Informe a pessoa!"
  Case [Nome Fantasia EmitDest]="" And [Razao Social]=""      : MSG = "Informe corretamente o nome da pessoa!"
  Case [Codigo do Documento] = "" Or [Numero do Documento]="" : MSG = "Informe o documento!"
  Case [Data de Emissao]=BlankDate()                          : MSG = "Informe a data de emissao!"
  Case IsBlank([Valor Documentos])                            : MSG = "Informe o valor total dos documentos!"
  Case IsBlank([Valor Fatura])                                : MSG = "Informe o valor total da fatura!"
  Case [Codigo do Documento]<>"" And 
       [Numero do Documento]<>"" And
       [Codigo             ]<>"" And
       [Codigo da Empresa  ]<>""                              : If Checa_Duplicidade("Cabeca")
                                                                   Then MSG="DUPLICIDADE"
                                                                EndIf
EndSwitch
If MSG<>""
   Then If MSG<>"DUPLICIDADE" Then Mensagem(MSG) EndIf
        TEMP = False
   Else ANT_TAB = Table()
        ANT_FIE = Field()
        Moveto "FatD"
        Somatoria("Documentos")
        Moveto "FatV"
        Somatoria("Vencimentos")
        Moveto ANT_TAB
        Moveto Field ANT_FIE
        MSG = ""
        Switch
          Case Not VCVENC>0            : MSG = "NÆo foi adicionado nenhum vencimento a este lan‡amento!"
          Case Not VCDOCS>0            : MSG = "NÆo foi adicionado nenhum documento a este lan‡amento!"
          Case Not VCVRDOCS>0          : MSG = "NÆo foi atribuido valor ao(s) documento(s) deste lan‡amento!"
          Case Not VCVRVENC>0          : MSG = "NÆo foi atribuido valor ao(s) vencimento(s) deste lan‡amento!"
          Case NumVal(VCVRDOCS)<>NumVal([Fatc->Valor Documentos]) : 
               MSG = "O valor total do(s) documento(s) adicionado(s) difere do valor//informado neste lan‡amento."
          Case NumVal(VCVRVENC)<>NumVal([Fatc->Valor Fatura])     : 
               MSG = "O valor total do(s) vencimento(s) difere do valor da fatura deste lan‡amento."
        EndSwitch   
        
        ;---- Esta sendo feito a partir de 30/10/18 no processo de finaliza‡Æo ---------
        If PARAM="FINALIZA"
           Then If VCDOCS=0 Or VCVENC=0
                   Then MSG = "" 
                EndIf   
        EndIf    
        
        If MSG<>""
           Then If PARAM<>""
                   Then MSG = MSG + "//" + "Deseja atualizar esta rotina?"
                   Else MSG = MSG + "//" + "Deseja sair desta rotina?"
                EndIf    
                If Not ConfGeral(MSG)
                   Then TEMP = False
                   Else TEMP = True
                EndIf
           Else TEMP = True
        EndIf    
EndIf

Return TEMP

EndProc ;Checa_Pagina()
 
;*******************************************************************************
;* Rotina de Controle p/ ShowDialog                                            *
;*******************************************************************************
Proc Verifica_Campo()
 
If Field() = "Valor Documentos"        Or
   Field() = "Valor Abatimento"        Or
   Field() = "Valor Acrescimo"         Or
   Field() = "Valor Despesas Cobranca" Or
   Field() = "Valor Fatura"            Or
   Field() = "Codigo da Conta"         Or
   Field() = "Codigo Plano_Conta"      Or
   Field() = "Codigo CCusto"           Or 
   Field() = "Multa"                   Or
   Field() = "Valor de Juros"          Or
   Field() = "Taxa de Juros"           Or      
   Field() = "Tipo Taxa de Juros"      Or 
   Field() = "Valor do Desconto"       Or  
   Field() = "Data Limite Desconto" 
   Then Return True
   Else Return False
EndIf    
     
EndProc ;Verifica_Campo()
             
;*******************************************************************************
;* Somatoria de valores dos itens para variaveis do FORM Fatura                *
;*******************************************************************************
Proc Somatoria(PARAM)
Private PARAM

Switch
  Case PARAM = "Documentos"  : 
       VCVRDOCS= 0
       VCDOCS  = 0
       Scan
         If Not IsBlank([Codigo do Documento])
            Then VCVRDOCS= VCVRDOCS + [Valor do Documento]
                 VCDOCS  = VCDOCS  + 1
         EndIf        
       EndScan
  Case PARAM = "Vencimentos" :
       VCVRVENC = 0
       VCVENC   = 0
       Scan
         If Not IsBlank([Data])
            Then VCVRVENC = VCVRVENC +  [Valor]
                 VCVENC   = VCVENC  + 1
         EndIf        
       EndScan
EndSwitch

EndProc ;Somatoria()

;*******************************************************************************
;* Cabe‡alho                                                                   *
;*******************************************************************************
Proc Cabecalho()

Print File ARQIMP CI_15CPP
Print File ARQIMP "\n\n\n"
Print File ARQIMP Spaces(2)+Fill("-",135) + "\n"
Print File ARQIMP Spaces(2)+Format("W135,AC","Inconsistˆncias de Erros")+ "\n"
Print File ARQIMP Spaces(2)+Fill("-",135)+ "\n"
Print File ARQIMP "\n"

NLINHA = 7

EndProc ;Cabecalho()

;*******************************************************************************
;* Atualiza Controle de Frete                                                  *
;*******************************************************************************
Proc Ajusta_CT_PAGO()

ANT_SEQ = [FatD->Sequencia]
ANT_TAB = Table()
ANT_FIE = Field()

Moveto "FatC"
UnLockRecord
FormKey

Moveto "\\Sistemas\\Vendas\\Contfrtc"
Moveto [Fatura_Lancamento]
Locate IndexOrder by "Ind_003" [FatC->Numero do Lancamento]
If RetVal
   Then While [Fatura_Lancamento] = [FatC->Numero do Lancamento]
          If [CT_Numero do Documento]=[FatD->Numero do Documento]
             Then [CT_PAGO                ] = "N"
                  [Fatura_Numero da Fatura] = ""
                  [Fatura_Data de Emissao ] = BlankDate()
                  [Fatura_Sistema Gerador ] = ""
                  [Fatura_Lancamento      ] = ""
                  UnLockRecord
                  QuitLoop
          EndIf        
          Skip
          If Eot() Then QuitLoop EndIf
          Locate Next IndexOrder by "Ind_003" [FatC->Numero do Lancamento]
          If Not RetVal Then QuitLoop EndIf
        EndWhile     
EndIf         

Moveto "FatC"
Moveto [Numero do Lancamento]
Locate NLANC
UnLockRecord
FormKey
LockRecord
     
Moveto "FatD"
Moveto [Sequencia]
Locate ANT_SEQ

Moveto ANT_TAB                      
Moveto Field ANT_FIE

EndProc ;Ajusta_CT_PAGO()

;*******************************************************************************
;* Atualiza Controle de Frete                                                  *
;*******************************************************************************
Proc Atualiza_Controle_Frete(PARAM)  
Private TEMP
TEMP=True

If Not IsAssigned(SAIR) Then SAIR=False EndIf 

Moveto "Fatc"
Moveto [Numero do Lancamento]
Locate NLANC

If PARAM="Limpa_Campo_CTPAGO"                                
   Then Moveto "\\Sistemas\\Vendas\\Contfrtc"
        Moveto [Fatura_Lancamento]
        Locate IndexOrder by "Ind_003" [FatC->Numero do Lancamento]
        If RetVal
           Then While [Fatura_Lancamento] = [FatC->Numero do Lancamento]
                  [CT_PAGO                ] = "N"
                  [Fatura_Numero da Fatura] = ""
                  [Fatura_Data de Emissao ] = BlankDate()
                  [Fatura_Sistema Gerador ] = ""
                  [Fatura_Lancamento      ] = ""
                  Skip
                  If Eot() Then QuitLoop EndIf
                EndWhile     
        EndIf         
        Return TEMP
EndIf

Moveto "FatD"
Moveto [Numero do Lancamento]
Locate NLANC
If Not RetVal
   Then Return TEMP
   Else While [Numero do Lancamento] = NLANC  
          If [Codigo do Documento]="CT-E"
             Then VERIFICA_CONTFRTC=False
                  Verifica_NotaEntrada()
                  If VERIFICA_CONTFRTC
                     Then VERIFICA_DOCTO_FATURA="0"
                          Verifica_Fatura(PARAM)
                  EndIf
          EndIf
          Moveto "FatD"
          Skip
          If Eot() Then QuitLoop EndIf
        EndWhile         
EndIf

If DynArraySize(MSG_ERRO)=1 And Search("Fatura",MSG_ERRO[1])>0 And Search("Pessoa",MSG_ERRO[1])>0 And Search("Emissao",MSG_ERRO[1])>0
   Then
   Else If DynArraySize(MSG_ERRO)>2 And PARAM<>"Verifica_Exclusao" And PARAM<>"Exclusao" And Not SAIR
           Then DISPOSITIVO_OPCAO = "V"
                PDFZEBRA = False
                CI_15CPP = "\15"
                ARQIMP   = PrivDir()+"FAT_CPAG.Txt"
                If IsFile(ARQIMP)
                   Then Deleta_Arquivo(ARQIMP)
                EndIf      
           
                Cabecalho()
                For ii From 1 To DynArraySize(MSG_ERRO)
                  NLINHA = NLINHA + 1
                  Print File ARQIMP Spaces(2) + MSG_ERRO[ii] + "\n"
                  If NLINHA >= 66
                    Then Print File ARQIMP "\f"
                         Cabecalho()
                  EndIf
                EndFor
                
                MSG =       Completa("Foi localizado inconsistˆncia(s) de dado(s).",60," ")+"//"
                MSG = MSG + Completa("Um relat¢rio ser  exibido mostrando essa(s) inconsistˆncia(s)!",60," ")
                Mensagem(MSG)
                If IsFile(ARQIMP)
                   Then ImpriArq(ARQIMP)
                        Deleta_Arquivo(ARQIMP)
                EndIf
                
                TEMP=False
        EndIf
EndIf
Release Vars Conta_Erro,MSG_ERRO,ii,NLINHA,ARQIMP,DISPOSITIVO_OPCAO,PDFZEBRA,CI_15CPP,MSG,IMPRIME_CABECALHO

Return TEMP

EndProc ;Atualiza_Controle_Frete()

;*******************************************************************************
;* Documento da Fatura                                                         *
;*******************************************************************************
Proc Documento_Fatura(PARAM)
Private PARAM            

GetRecord "FatC" PARAM To REG_FATC 
If Not ReTval
   Then Return False
EndIf
DOC_FATURA = REG_FATC["Codigo do Documento"]+" "+
             REG_FATC["Tipo do Documento"]+" "+
             REG_FATC["Serie do Documento"]+" "+
             REG_FATC["Numero do Documento"]
             
Return True
             
EndProc       

;*******************************************************************************
;* Verifica a existencia da Fatura no Contas a Pagar                           *
;*******************************************************************************
Proc Verifica_Fatura(PARAM)
Private ANT_TAB,ANT_FIE,ACHOU_FATURA,PARAM,ANT_SEQ,DOC,ACHOU_PESSOA,ACHOU_DOCUMENTO

If Not IsAssigned(Conta_Erro)        Then Conta_Erro=0            EndIf
If Not IsAssigned(MSG_ERRO)          Then DynArray MSG_ERRO[]     EndIf
If Not IsAssigned(IMPRIME_CABECALHO) Then IMPRIME_CABECALHO=False EndIf
ACHOU_FATURA = False

DOC = [FatD->Codigo do Documento] + " " + [FatD->Tipo do Documento] + " "+ [FatD->Serie do Documento] + " " + [FatD->Numero do Documento]

If Not IMPRIME_CABECALHO And PARAM<>"Verifica" And IsAssigned(VERIFICA_DOCTO_FATURA) And VERIFICA_DOCTO_FATURA="0"
   Then IMPRIME_CABECALHO=true
        VERIFICA_DOCTO_FATURA="1"
        Documento_Fatura([FatC->Numero do Lancamento])
           
        Conta_Erro = Conta_Erro + 1
        MSG_ERRO[Conta_Erro] = "Fatura: "+DOC_FATURA+"   "+
                               "Pessoa: "+REG_FATC["Codigo"]+" "+REG_FATC["Razao Social"]+"   "+
                               "Emissao: "+StrVal(REG_FATC["Data de Emissao"])
        Conta_Erro = Conta_Erro + 1
        MSG_ERRO[Conta_Erro] = ""
EndIf

If PARAM = "Verifica" 
   Then MSG     = ""
        ANT_TAB = Table()
        ANT_FIE = Field()
        ANT_SEQ = [FatD->Sequencia]
        
        Moveto "FatC"
        UnLockRecord
        FormKey         
EndIf

CONS_CGC        = ""
ACHOU_PESSOA    = False
ACHOU_DOCUMENTO = False

Moveto "\\Sistemas\\Vendas\\Contfrtc"
Moveto [Transportadora_Pessoa]
Locate IndexOrder by "Ind_002" [FatC->Codigo],[FatD->Codigo do Documento],
                               [FatD->Tipo do Documento],[FatD->Serie do Documento],
                               [FatD->Numero do Documento]
If RetVal 
   Then ACHOU_PESSOA = True
        While True  
          If [FatD->Data de Emissao   ]=[Data do Documento ] And
             [FatD->Valor do Documento]=[Valor do Documento]
             Then GetRecord "\\Sistemas\\Cadastro\\Destinat" [Transportadora_Pessoa] To REG_PESSOA
                  If RetVal Then CONS_CGC = REG_PESSOA["CGC"] EnDIf
                  ACHOU_DOCUMENTO = True
                  QuitLoop 
          EndIf  
          Skip
          If Eot() Then QuitLoop EndIf
          Locate Next IndexOrder by "Ind_002" [FatC->Codigo],[FatD->Codigo do Documento],
                                    [FatD->Tipo do Documento],[FatD->Serie do Documento],
                                    [FatD->Numero do Documento]
          If Not RetVal Then QuitLoop EndIf                                   
        EndWhile
        
        If Not ACHOU_DOCUMENTO
           Then Switch
                  Case PARAM = "Verifica_Exclusao" Or 
                       PARAM = "Atualiza"          :
                       Conta_Erro = Conta_Erro + 1
                       MSG_ERRO[Conta_Erro] = Format("W22",DOC)+"Controle de Frete "+[Numero do Lancamento]+": Data de emissao "+
                                              "e/ou valor do documento difere do documento da fatura"
                  Case PARAM="Exclusao"             :
                  OtherWise                         :
                       MSG =       Completa("O controle de frete "+[Numero do Lancamento]+" foi localizado.",61," ")+"//"
                       Switch
                         Case [FatD->Data de Emissao   ]<>[Data do Documento ] And  
                              [FatD->Valor do Documento]<>[Valor do Documento] :
                              MSG = MSG + Completa("No entanto a data de emissao e o valor do documento difere do",61," ")+"//"
                              MSG = MSG + Completa("documento da fatura.",61," ")
                         Case [FatD->Data de Emissao   ]<>[Data do Documento ] :
                              MSG = MSG + Completa("No entanto a data de emissao difere do documento da fatura.",65," ")
                         Case [FatD->Valor do Documento]<>[Valor do Documento] :
                              MSG = MSG + Completa("No entanto o valor do documento difere do documento da fatura.",65," ")
                       EndSwitch
                 EndSwitch   
        EndIf                
EndIf
   
If Not ACHOU_PESSOA
   Then ;Verifica Transportadora pelo CNPJ/GRUPO
        
        Moveto "\\Sistemas\\Vendas\\Contfrtc"
        Moveto [Codigo da Empresa]
        Locate IndexOrder by "Ind_004" [FatC->Codigo da Empresa],[FatD->Codigo do Documento],[FatD->Tipo do Documento ],
                                       [FatD->Serie do Documento],[FatD->Numero do Documento]
        If RetVal 
           Then While True
                  If [Data do Documento ] = [FatD->Data de Emissao   ] And
                     [Valor do Documento] = [FatD->Valor do Documento]
                     Then ACHOU_DOCUMENTO = True
                          QuitLoop
                  EndIf
                  Skip
                  If Eot() Then QuitLoop EndIf
                  Locate Next IndexOrder by "Ind_004" [FatC->Codigo da Empresa],[FatD->Codigo do Documento],[FatD->Tipo do Documento ],
                                                      [FatD->Serie do Documento],[FatD->Numero do Documento]
                  If Not RetVal Then QuitLoop EndIf
                EndWhile   
        EndIf

        If ACHOU_DOCUMENTO
          Then ;Verifica pelos caracteres finais do CNPJ
               TRANSPORTADOR = [Codigo da Transportadora]
               GetRecord "\\Sistemas\\Vendas\\Transpor" TRANSPORTADOR To REG_TRANSPORTADOR
               If RetVal
                  Then If REG_TRANSPORTADOR["Codigo_Pessoa"]<>""
                          Then GetRecord "\\Sistemas\\Cadastro\\Destinat" REG_TRANSPORTADOR["Codigo_Pessoa"] To REG_PESSOA
                               If RetVal
                                  Then PROCURAR_CGC = REG_PESSOA["CGC"]
                                       GetRecord "\\Sistemas\\Cadastro\\Destinat" [FatC->Codigo] To REG_PESSOA
                                       If RetVal
                                          THen If SubStr(REG_PESSOA["CGC"],1,10) = Substr(PROCURAR_CGC,1,10)
                                                  Then CONS_CGC     = PROCURAR_CGC
                                                       ACHOU_PESSOA = True
                                               EndIf   
                                       EndIf 
                               EndIf
                       EndIf          
               EndIf
               If Not ACHOU_PESSOA
                  Then ;Verifica em um grupo de pessoas vinculadas
                       Moveto "\\Sistemas\\Cadastro\\GpessoaI"
                       Moveto [Codigo]
                       Locate IndexOrder by "Ind_001" [\Sistemas\Vendas\Contfrtc->Transportadora_Pessoa]
                       If RetVal
                          Then GRUPO = [CodigoGrupoPessoa]
                               Home
                               Moveto [CodigoGrupoPessoa]
                               Locate GRUPO 
                               While GRUPO = [CodigoGrupoPessoa]
                                 If [Codigo] = [FatC->Codigo]
                                    Then GetRecord "\\Sistemas\\Cadastro\\Destinat" [Codigo] To REG_PESSOA
                                         If RetVal
                                            Then CONS_CGC = REG_PESSOA["CGC"]
                                            Else CONS_CGC = ""
                                         EndIf    
                                         ACHOU_PESSOA = True
                                         QuitLoop
                                 EndIf
                                 Skip
                                 If Eot() Then QuitLoop EndIf
                               EndWhile
                       EndIf        
               EndIf
               Moveto "\\Sistemas\\Vendas\\Contfrtc"
               If Not ACHOU_PESSOA
                  Then Conta_Erro = Conta_Erro + 1
                       MSG_ERRO[Conta_Erro] = Format("W22",DOC)+"N„o foi localizado nos grupos/CNPJ a pessoa "+
                                              [\Sistemas\Vendas\Contfrtc->Transportadora_Pessoa]
               EndIf
        EndIf 
EndIf

If ACHOU_PESSOA
   Then If PARAM = "Verifica" And NLANC <> [FatC->Numero do Lancamento]
           Then If Documento_Fatura([FatC->Numero do Lancamento])
                   Then  MSG =                   Completa(" Fatura: "+DOC_FATURA,65," ") + "//"             
                         MSG = MSG + Completa(" Pessoa: "+REG_FATC["Codigo"]+" "+REG_FATC["Razao Social"],65," ") + "//"
                         MSG = MSG + Completa("Emissao: "+StrVal(REG_FATC["Data de Emissao"]),65," ") + "////"
                         MSG = MSG + Completa("Documento: "+DOC,65," ") + "////"
                         MSG = MSG + Completa("Documento j  esta lan‡ado no sistema!",65," ") +"//"
                         MSG = MSG + Completa("Numero do Lancamento: "+[Numero do Lancamento],65," ")
           
                         Conta_Erro = Conta_Erro + 1
                         MSG_ERRO[Conta_Erro] = Format("W22",DOC)+"Documento lan‡ado na fatura "+DOC_FATURA+
                                                    " referente ao lan‡amento "+[Numero do Lancamento]
                EndIf       
           Else If PARAM<>"Verifica_Exclusao"
                   Then If [Fatura_Lancamento]="" Or [Fatura_Lancamento]=[FatC->Numero do Lancamento]
                           Then ACHOU_FATURA = True
                                Switch
                                  Case PARAM="Atualiza" : 
                                       [CT_PAGO                ] = "S"
                                       [Fatura_Numero da Fatura] = [FatC->Numero do Documento ]
                                       [Fatura_Data de Emissao ] = [FatC->Data de Emissao     ]
                                       [Fatura_Sistema Gerador ] = "FF"
                                       [Fatura_Lancamento      ] = [FatC->Numero do Lancamento]
                                       UnLockRecord
                                  Case PARAM="Exclusao" :
                                       [CT_PAGO                ] = "N"
                                       [Fatura_Numero da Fatura] = ""
                                       [Fatura_Data de Emissao ] = BlankDate()
                                       [Fatura_Sistema Gerador ] = ""
                                       [Fatura_Lancamento      ] = ""
                                Endswitch
                           Else If PARAM <> "Verifica" 
                                   Then Conta_Erro = Conta_Erro + 1
                                        MSG_ERRO[Conta_Erro] = Format("W22",DOC)+"Controle de Frete "+[Numero do Lancamento]+
                                                               ": NÆo foi possivel atualizar o Controle de Frete"
                                        Conta_Erro = Conta_Erro + 1
                                        MSG_ERRO[Conta_Erro] = Format("W22",DOC)+"Controle de Frete "+[Numero do Lancamento]+
                                                               ": Lan‡amento Gerador "+
                                                               [Fatura_Lancamento]+" difere da fatura "+[FatC->Numero do Lancamento]                       
                                EndIf
                        EndIf
                EndIf   
        EndIf     
        UnLockRecord
   Else Switch
        Case PARAM = "Verifica_Exclusao" Or 
             PARAM = "Atualiza"           :
             Conta_Erro = Conta_Erro + 1
             MSG_ERRO[Conta_Erro] = Format("W22",DOC)+"N„o foi localizado o controle de Frete"
        Case PARAM = "Exclusao"           :          
        OtherWise                         : 
        MSG =       Completa("N„o foi localizado no controle de frete o documento: ",65," ")+"////"
        MSG = MSG + Completa([FatD->Codigo do Documento]+" "+[FatD->Tipo do Documento]+" "+[FatD->Serie do Documento]+" "+[FatD->Numero do Documento],65," ")+"////"
        MSG = MSG + Completa("Com data de emissÆo em "+StrVal([FatD->Data de Emissao])+" no valor de R$ "+StrVal([FatD->Valor do Documento]),65," ")+"//"
        MSG = MSG + Completa("referente … pessoa "+[FatC->Codigo]+" "+[FatC->razao Social],65," ")
        ;If PARAM="Exclusao"
        ;   Then MSG = MSG + "////"
        ;        MSG = MSG + Completa("Impossibilitando a exclusao deste registro.",65," ")  
        ;EndIf
        EndSwitch
EndIf

If PARAM = "Verifica" 
   Then Moveto "FatC"
        Moveto [Numero do Lancamento]
        Locate NLANC
        
        UnLockRecord
        FormKey
        LockRecord
        
        Moveto "FatD"
        Moveto [Sequencia]
        Locate ANT_SEQ
        [CNPJ] = CONS_CGC
        
        Moveto ANT_TAB                      
        Moveto Field ANT_FIE

        If Not ACHOU_FATURA And MSG<>""
           Then Mensagem(MSG)
        EndIf
EndIf
   
Return ACHOU_FATURA

EndProc ;Verifica_Fatura()

;*******************************************************************************
;* Total da Fatura                                                             *
;*******************************************************************************
Proc Total_Fatura()
Private VR_FATURA

VR_FATURA = [Valor Documentos]-[Valor Abatimento]+[Valor Acrescimo]+[Valor Despesas Cobranca]
[Valor Fatura] = VR_FATURA

EndProc ;Total_Fatura()

;*******************************************************************************
;* Verifica a existencia da Fatura no Contas a Pagar                           *
;*******************************************************************************
Proc Verifica_NotaEntrada()
Private ANT_TAB,ANT_FIE,ACHOU_NOTAENTRADA,ANT_SEQ,DOC

If Not IsAssigned(MSG_ERRO)
   Then Conta_Erro = 0
        DynArray MSG_ERRO[]
EndIf

;NATUREZA_FRETE    = ""
ACHOU_NOTAENTRADA = 0
DOC = [FatD->Codigo do Documento] + " " + [FatD->Tipo do Documento] + " "+ [FatD->Serie do Documento] + " " + [FatD->Numero do Documento]         

Moveto "\\Sistemas\\Estoque\\NotaEC"
Moveto [Codigo]
Locate IndexOrder by "Notaec01" [FatC->Codigo],[FatD->Numero do Documento],[FatD->Serie do Documento]  ;Aproveitando Indice Existente  
If RetVal
   Then While [Codigo             ] = [FatC->Codigo             ] And
              [Numero do Documento] = [FatD->Numero do Documento] And 
              [Serie do Documento ] = [FatD->Serie do Documento ]
              
              If [Codigo do Documento] = [FatD->Codigo do Documento] And
                 [Tipo do Documento  ] = [FatD->Tipo do Documento  ]
                 Then ACHOU_NOTAENTRADA = 2                               ;ACHOU
                      If [Data de Emissao] <> [FatD->Data de Emissao]
                         Then ACHOU_NOTAENTRADA = 1                       ;DIVERGENCIA
                      EndIf
                      If ACHOU_NOTAENTRADA=2 ;And [Natureza do Frete]="0" Or [Natureza do Frete]="1" 
                         Then VERIFICA_CONTFRTC = True
                        ;Else NATUREZA_FRETE    = [Natureza do Frete] 
                      EndIf
                      QuitLoop
              EndIf
              Skip
              If Eot() Then QuitLoop EndIf
              Locate Next IndexOrder by "Notaec01" [FatC->Codigo],[FatD->Numero do Documento],[FatD->Serie do Documento]
              If Not RetVal Then QuitLoop EndIf                         
        EndWhile      
EndIf

If ACHOU_NOTAENTRADA=0 Or ACHOU_NOTAENTRADA=1 
   Then ACHOU_DOCUMENTO = False
        Moveto "\\Sistemas\\Estoque\\NotaEC"
        Moveto [Codigo da Empresa]
        Locate IndexOrder by "Notaec03" [FatC->Codigo da Empresa],[FatD->Codigo do Documento],
                                        [FatD->Tipo do Documento],[FatD->Serie do Documento],[FatD->Numero do Documento]  
        If RetVal 
           Then While True
                 If [Data de Emissao] = [FatD->Data de Emissao]
                     Then ACHOU_NOTAENTRADA = 2
                          ;If [Natureza do Frete]="0" Or [Natureza do Frete]="1" 
                          ;   Then VERIFICA_CONTFRTC = True
                          ;EndIf
                          VERIFICA_CONTFRTC = True
                          ACHOU_DOCUMENTO=True
                          QuitLoop
                  EndIf
                  Skip
                  If Eot() Then QuitLoop EndIf
                  Locate Next IndexOrder by "Notaec03" [FatC->Codigo da Empresa],[FatD->Codigo do Documento],
                              [FatD->Tipo do Documento],[FatD->Serie do Documento],[FatD->Numero do Documento]  
                  If Not RetVal Then QuitLoop EndIf
                EndWhile   
        EndIf
        
        If ACHOU_DOCUMENTO
          Then ;Verifica pelos caracteres finais do CNPJ
               ACHOU_PESSOA  = False
               TRANSPORTADOR = [Codigo]
               GetRecord "\\Sistemas\\Vendas\\Transpor" TRANSPORTADOR To REG_TRANSPORTADOR
               If RetVal
                  Then If REG_TRANSPORTADOR["Codigo_Pessoa"]<>""
                          Then GetRecord "\\Sistemas\\Cadastro\\Destinat" REG_TRANSPORTADOR["Codigo_Pessoa"] To REG_PESSOA
                               If RetVal
                                  Then PROCURAR_CGC = REG_PESSOA["CGC"]
                                       GetRecord "\\Sistemas\\Cadastro\\Destinat" [FatC->Codigo] To REG_PESSOA
                                       If RetVal
                                          THen If SubStr(REG_PESSOA["CGC"],1,10) = Substr(PROCURAR_CGC,1,10)
                                                  Then ACHOU_PESSOA = True
                                               EndIf   
                                       EndIf 
                               EndIf
                       EndIf          
               EndIf
               
               If Not ACHOU_PESSOA
                  Then ;Verifica em um grupo de pessoas vinculadas
                       Moveto "\\Sistemas\\Cadastro\\GpessoaI"
                       Moveto [Codigo]
                       Locate IndexOrder by "Ind_001" [\Sistemas\Estoque\NotaeC->Codigo]
                       If RetVal
                          Then GRUPO = [CodigoGrupoPessoa]
                               Home
                               Moveto [CodigoGrupoPessoa]
                               Locate GRUPO 
                               While GRUPO = [CodigoGrupoPessoa]
                                  If [Codigo] = [FatC->Codigo]
                                     Then ACHOU_PESSOA = True
                                          QuitLoop
                                  EndIf
                                 Skip
                                 If Eot() Then QuitLoop EndIf
                               EndWhile
                       EndIf
               EndIf        
        EndIf 
EndIf

Switch
 ;Case NATUREZA_FRETE<>""    :
 ;     Conta_Erro = Conta_Erro + 1
 ;     MSG_ERRO[Conta_Erro] = Format("W22",DOC)+"Natureza do Frete: "+NATUREZA_FRETE
  Case ACHOU_NOTAENTRADA=0   :  
       Conta_Erro = Conta_Erro + 1
       MSG_ERRO[Conta_Erro] = Format("W22",DOC)+"N„o foi localizado a nota de entrada"
  Case ACHOU_NOTAENTRADA=1   :  
       Conta_Erro = Conta_Erro + 1
       MSG_ERRO[Conta_Erro] = Format("W22",DOC)+"A data de emissao da nota de entrada referente a este documento difere do documento da fatura"
EndSwitch 

EndProc ;Verifica_NotaEntrada()

;*******************************************************************************
;* Rotina de Controle p/ ShowDialog                                            *
;*******************************************************************************
Proc Vencto_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
INICIO_DIALOG=True

If Not IsAssigned(OP_SHOWD) Then OP_SHOWD="" EndIf
If OP_SHOWD<>"Cheque" Then OP_SHOWD="DTBASE" EndIf

If INICIO_DIALOG
   Then INICIO_DIALOG=False
EndIf          

If Disparo="EVENT" And DynArraySize(Evento)>0 And Evento["Type"]="KEY" Then
   Switch
      Case Evento["KeyCode"] = 9:
           Temp=False
      Case Evento["KeyCode"] = 27:
           Switch
             Case Campo="Data_Base"      : CancelDialog
             Case Campo="I_VrEntrada"    : Campo="Data_Base"
           EndSwitch 
      Case Evento["KeyCode"] = 13:
           Switch
             Case Campo="Data_Base": Campo="I_VrEntrada"
                  VSD_Data_Base=ControlValue("Data_Base")
             Case Campo="I_VrEntrada":
                  VSD_VrEntrada=ControlValue("I_VrEntrada")     
                  AcceptDialog
           EndSwitch
   EndSwitch
EndIf

SelectControl Campo
TECLA=""

Switch
  Case Campo="Data_Base"   : MSGCAMPO="Data Base p/ Calculo"      MSG_CAMPO="Data Base p/ Calculo"
  Case Campo="I_VrEntrada" : MSGCAMPO="Valor de Entrada"          MSG_CAMPO="Valor de Entrada" 
EndSwitch

@ 24,0 ?? TECLA+Spaces(80-Len(TECLA))
PaintCanvas Attribute 31 24,0,24,79
Message(MSGCAMPO)
Mouse Hide
RefreshDialog
Return TEMP

EndProc ;Vencto_Dialog()

;*******************************************************************************
;* Rotina para Calcular de Vencimentos                                         *
;*******************************************************************************
Proc Calcular_Vencimentos()
 
If Not IsAssigned(INICIO_DIALOG) Then INICIO_DIALOG=False EndIf
If Not IsAssigned(OP_SHOWD)      Then OP_SHOWD=""         EndIf 

VSD_Data_Base = [FatC->Data de Emissao]
VSD_VrEntrada = BlankNum()

Echo Normal
Echo Off
While True
  Showdialog "Calculo do Vencimento" Proc "Vencto_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "TAB","ReverseTab","ENTER","ESC","ClearArea"
  @ 09,19 height 08 width 56
  
  Label  @ 1,03 "   Informe a Data Base p/ Calculo: " for "Data_Base"
  Accept @ 1,39  Width 13 "D" picture "#[#].##.##[##]" Tag "Data_Base" to VSD_Data_Base
  
  Label  @ 2,01 "Informe o Valor Referente a Entrada: " for "I_VrEntrada"
  Accept @ 2,39  Width 13 "$" picture "#*#.[##]" Tag "I_VrEntrada" to VSD_VrEntrada
         @ 04,02 ?? "** O Vr em Branco = Todas as parcelas ser„o iguais"
  Enddialog
  If Not RetVal Then QuitLoop EndIf
  If IsBlank(VSD_Data_Base)
     Then FastMsg("Data n„o foi informada!")
          Loop
  EndIf
  QuitLoop
EndWhile
Mouse Show
DTBASE=VSD_Data_Base

Aguarde("Calculando Vencimentos")

Moveto "FatV"
While RecordStatus("New")=False
   If CHAVEC=0
      Then Grava_LogEx("ExclFatV,Excluiu Venc Faturamento NL: "+[FatC->Numero do Lancamento]+
                        " Vencimento: Seq "+Strval([Sequencia])+"  Data "+StrVal([Data])+"  Valor "+StrVal([Valor]))
   EndIf
   Del
EndWhile

vrbaseoperacao = [FatC->Valor Fatura]
VR_NF          = vrbaseoperacao
tementrada     = True
VRENTRADA      = VSD_VrEntrada
NPC            = 1                      
i              = 1                                  
If Not IsBlank([FatC->Composicao de Dias])
   Then While True
          pos_s=SearchFrom("/",[FatC->Composicao de Dias],i)
          If pos_s=0
             Then QuitLoop
             Else NPC=NPC+1
                  i=pos_s+1
          EndIf
        EndWhile
   Else NPC=1
EndIf
NP=NPC

if NP=1 and tementrada Then tementrada=False endIf
If IsBlank(VRENTRADA)  Then tementrada=False endIf 
if not tementrada      Then VRENTRADA =0     endif   

If tementrada
   Then VR_NF = VR_NF-VRENTRADA
EndIf

if VR_NF<=0 
   then Moveto "FatC"
        Moveto [Composicao de Dias]
        return
endif

;-- Calcula valor da parcela e diferen‡a ---------------------------------------
AUX_NP=NP
If tementrada
   Then AUX_NP=NP-1
EndIf

VRVENCTO = NDecimal(((VR_NF)/AUX_NP),2)
VRDIFERE = VR_NF-(VRVENCTO*AUX_NP)

VRORIGVENCTO   = VRVENCTO
VRORIGDIFERE   = VRDIFERE

;-- Gerar parcelas -------------------------------------------------------------
j=1
i=1
While i<=NP
  pos_s=SearchFrom("/",[FatC->Composicao de Dias],j)
  If pos_s=0
     Then If i>1
             Then NDIAS=NumVal(SubStr([FatC->Composicao de Dias],j,(Len([FatC->Composicao de Dias])-(j-1))))
             Else If Not IsBlank([FatC->Composicao de Dias])
                     Then NDIAS=NumVal(SubStr([FatC->Composicao de Dias],j,Len([FatC->Composicao de Dias])))
                     Else NDIAS=0
                  EndIf
          EndIf
     Else NDIAS=NumVal(SubStr([FatC->Composicao de Dias],j,pos_s-j))
          j=pos_s+1
  EndIf
  Release Vars DIAS_NDIAS
  DTVENCTO=DTBASE
  
  Moveto "FatV"
  While True
    Moveto [Sequencia]
    End
    SEQ = [Sequencia]
    Down
    [Numero do Lancamento]=NLANC

    Moveto [Sequencia]
    Seta_Sequencia(SEQ,False)
    If not IsLockRecord()
       then quitloop
       else Del
    EndIf
  EndWhile

  ;-- calcula ndias e data vencto ----------------------------------------------
  If pos_s=0 And NPC=1 And NP>1
     Then [Numero de Dias   ]=BlankNum()
          If NDIAS=0 
             Then CONT_NDIAS=i-1
             Else CONT_NDIAS=i
          EnDIf  
          If Not IsAssigned(DIAS_NDIAS) Then DIAS_NDIAS=NDIAS EndIf
          [Numero de Dias   ]=DIAS_NDIAS*CONT_NDIAS
          [Data             ]=DTVENCTO+(DIAS_NDIAS*CONT_NDIAS)
          
          If NDIAS=0 
             Then DIAS_NDIAS=30  
          EndIf
     Else [Numero de Dias   ]=NDIAS
          [Data             ]=DTVENCTO+NDIAS
  EndIf  

  ;-- verifica forma de pagamento ----------------------------------------------
  If i=1 And NP>1 And NDIAS=0
     Then [Forma de Pagamento]="DN" 
     Else [Forma de Pagamento]=[FatC->Tipo do Pagamento]
  EndIf   

  Switch
    Case i=1 And tementrada  : [Valor            ]=VRENTRADA                 
    Case i<>NP               : [Valor            ]=VRVENCTO
    Case i=NP                : [Valor            ]=VRVENCTO+VRDIFERE
  EndSwitch
  UnLockRecord
  i=i+1
EndWhile

Moveto "FatV"
Somatoria("Vencimentos")

Moveto "FatC"
Sleep 500

LimpAguarde()

EndProc

;*******************************************************************************
;* Rotina para Digitacao da Cabeca                                             *
;*******************************************************************************
Proc Cliente_Inativo()

If Isblank([Codigo])
   Then Return False
EndIf   

GetRecord "\\Sistemas\\Cadastro\\Destinat" [Codigo] To CLIE_INATIVO 
If RetVal
   Then If CLIE_INATIVO["Inativo"]="S"
           Then Switch
                  Case CLIE_INATIVO["Tipo"]="F" : Mensagem("Fornecedor Inativo!") 
                  Case CLIE_INATIVO["Tipo"]="C" : Mensagem("Cliente Inativo!")
                  OtherWise                     : Mensagem("Cadasro Inativo!")            
                EndSwitch
                Return True     
        EndIf  
EndIf

Return False

EndProc ;Cliente_Inativo()

;*******************************************************************************
;* SD_DIALOG                                                                   *
;*******************************************************************************
Proc SD_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: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_OPDT"          : Campo="NO"
            Case Campo="TG_DTINI"         : Campo="TG_OPDT"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="YES" Or Campo="NO": Campo="TG_OPDT"
          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_OPDT"  : Campo="TG_DTINI"
                         VSDGOPDT=ControlValue("TG_OPDT")
                         Switch
                           Case VSDGOPDT="2" : VSDGDESCOPDT="DATA DE EMISSAO"
                           OtherWise         : VSDGOPDT="1"
                                               VSDGDESCOPDT="DATA DE ENTRADA"  
                         EndSwitch
                    Case Campo="TG_DTINI" : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM" : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf

Switch
  Case Campo="TG_DTFIM":
     MSG_CAMPO="Informe a Data Final"
  Case Campo="TG_OPDT":
     MSG_CAMPO="Op‡„o: 1=Entrada  2=Emissao"
Endswitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp

EndProc

;*******************************************************************************
;* Seleciona Documentos                                                        *
;*******************************************************************************        
Proc Seleciona_Documentos()
Private VSDGDTINI,VSDGDTFIM,PESSOA,Tabela,SEQ,ANT_FIE,ANT_TAB,NR,EXCLUI_DOCTO_RELACAO,TEMP,MSG
 
; Ver a alteracao por data de Entrada
 
VSDGDTINI = BlankDate()
VSDGDTFIM = BlankDate() 
 
While True
  ShowDialog "Filtrar Conhecimento de Transporte" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 06,12   Height 10 Width 56

    Label  @ 01,00 "Op‡äes de Datas" For "TG_OPDT"
    Accept @ 02,04 Width 04 "A1"  Picture "1,2" Tag "TG_OPDT" To VSDGOPDT
    Accept @ 02,09 Width 25 "A20"  Picture "!*!" Tag "TG_DESCOPDT" To VSDGDESCOPDT

    Label  @ 03,00 "Per¡odo Referente" For "TG_DTINI"
    Label  @ 04,00 "de" For "TG_DTINI"
    Accept @ 04,04 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI 
    Label  @ 04,17 "at‚" For "TG_DTFIM"
    Accept @ 04,22 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM        

    Pushbutton @ 06,14 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 06,28 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal 
     Then Return 
  EndIf
  
  If VSDGDTINI = BlankDate() And VSDGDTFIM = BlankDate()
     Then FastMsg("Informe o per¡odo!")
          Loop
  EndIf    
  QuitLoop
EndWhile

MSG       = ""
TEMP      = True
PESSOA    = [FatC->Codigo              ] 
SEQ       = [Sequencia                 ]
CONS_EMP  = [FatC->Codigo da Empresa   ]

GetRecord "\\Sistemas\\Cadastro\\Destinat" PESSOA To REG_PESSOA
If RetVal
  Then PROCURAR_CGC = SubStr(REG_PESSOA["CGC"],1,10)+".."
  Else PROCURAR_CGC = ".."
EndIf 

ANT_TAB   = Table()
ANT_FIE   = Field()

Moveto "FatC"
UnLockRecord
FormKey
Do_it!

{Ask} {\\Sistemas\\Estoque\\NotaEC}   
Moveto [Codigo da Empresa   ] Check TypeIn "~CONS_EMP"
Moveto [Codigo              ] Check ;TypeIn "~PESSOA"
Moveto [CGC                 ] Check TypeIn PROCURAR_CGC
Moveto [Codigo do Documento ] Check TypeIn "CT-E"
Moveto [Tipo do Documento   ] Check
Moveto [Numero do Documento ] Check
Moveto [Serie do Documento  ] Check
If VSDGOPDT="1"
   Then Moveto [Data de Emissao]       TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Data de Emissao] Check 
   Else Moveto [Data de Emissao] Check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
EndIf   
Moveto [Valor Nota Fiscal   ] Check
Do_it!
Moveto "Answer" ClearImage
Moveto "\\Sistemas\\Estoque\\NotaEC" ClearImage

Tabela = Cria_Temp(PrivDir())
Copy "Answer" Tabela 

{Ask} {\\Sistemas\\Cadastro\\GpessoaI}
Moveto [CodigoGrupoPessoa   ] Check 
Moveto [Codigo              ]       TypeIn "~PESSOA"
Do_it!

Moveto "Answer" ClearImage
Moveto "\\Sistemas\\Cadastro\\GpessoaI" ClearImage

If Not IsEmpty("Answer")
   Then {Ask} {\\Sistemas\\Cadastro\\GpessoaI}
        Moveto [CodigoGrupoPessoa   ]       TypeIn "_grp"
        Moveto [Codigo              ]       TypeIn "_Cod" 
        {Ask} {Answer}
        Moveto [CodigoGrupoPessoa   ]       TypeIn "_grp"
        {Ask} {\\Sistemas\\Estoque\\NotaEC}
        Moveto [Codigo da Empresa   ] Check TypeIn "~CONS_EMP"
        Moveto [Codigo              ] Check TypeIn "_Cod" 
        Moveto [CGC                 ] Check 
        Moveto [Codigo do Documento ] Check TypeIn "CT-E"
        Moveto [Tipo do Documento   ] Check
        Moveto [Numero do Documento ] Check
        Moveto [Serie do Documento  ] Check
        If VSDGOPDT="1"
           Then Moveto [Data de Emissao]       TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
                Moveto [Data de Emissao] Check 
           Else Moveto [Data de Emissao] Check TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        EndIf
        Moveto [Valor Nota Fiscal   ] Check
        Do_it!

        Moveto "Answer"                         ClearImage
        Moveto "\\Sistemas\\Cadastro\\GpessoaI" ClearImage
        Moveto "\\Sistemas\\Estoque\\NotaEC"    ClearImage

        {Ask} {Answer} TypeIn "Fast Delete" Enter
        Moveto [Codigo              ]       TypeIn PESSOA 
        Do_it!
        
        If Not IsEmpty("Answer") 
           Then Add "Answer" Tabela 
                Moveto Tabela ClearImage
        EndIf         
EndIf

If Not IsEmpty(Tabela)
   Then NR = NRecords(Tabela)
        Moveto "FatD"
        View "\\Sistemas\\Cadastro\\GpessoaI"
        View "\\Sistemas\\Vendas\\Contfrtc"
        CoEdit Tabela
        While True 
          Aguarde("Aguarde, verificando documentos")
  
          ACHOU_DOCUMENTO = False
           
          CONS_EMP    = CONS_EMP
          CONS_PESSOA = PESSOA
          CONS_CDOC   = [Codigo do Documento    ]
          CONS_TDOC   = [Tipo do Documento      ]
          CONS_SDOC   = [Serie do Documento     ]
          CONS_NDOC   = [Numero do Documento    ]
          CONS_DTE    = [Data de Emissao        ]
          VR_NF       = [Valor Nota Fiscal      ]
          
          Moveto "FatD"
          Home 
          Moveto [Codigo do Documento]
          Locate IndexOrder by "Ind01" CONS_CDOC,CONS_NDOC
          If RetVal
             Then While CONS_CDOC=[Codigo do Documento] And CONS_NDOC=[Numero do Documento]
                    If Documento_Fatura([FatC->Numero do Lancamento])
                       Then If CONS_EMP    = REG_FATC["Codigo da Empresa"] And
                               CONS_PESSOA = REG_FATC["Codigo"           ]
                               Then ACHOU_DOCUMENTO = True
                                    QuitLoop
                               Else If CONS_EMP = REG_FATC["Codigo da Empresa"] 
                                       Then ;Verifica em um grupo de pessoas vinculadas
                                            Moveto "\\Sistemas\\Cadastro\\GpessoaI"
                                            Moveto [Codigo]
                                            Locate REG_FATC["Codigo"]
                                            If RetVal
                                               Then GRUPO = [CodigoGrupoPessoa]
                                                    Home
                                                    Moveto [CodigoGrupoPessoa]
                                                    Locate GRUPO 
                                                    While GRUPO = [CodigoGrupoPessoa]
                                                       If [Codigo] = REG_FATC["Codigo"]
                                                         Then ACHOU_DOCUMENTO = True
                                                              QuitLoop
                                                       EndIf
                                                       Skip
                                                       If Eot() Then QuitLoop EndIf
                                                    EndWhile
                                            EndIf
                                            UnLockRecord
                                            Moveto "FatD"
                                    EndIf  
                            EndIf
                    EndIf
                    Skip
                    If Eot() Then QuitLoop EndIf
                    Locate Next IndexOrder by "Ind01" CONS_CDOC,CONS_NDOC 
                    If Not RetVal Then QuitLoop EndIf   
                  EndWhile
                  EndIf
                   
                  If ACHOU_DOCUMENTO
                     Then Moveto Tabela
                          Del
                          If NR=1 
                             Then QuitLoop
                          EndIf
                     Else ACHOU_PESSOA = False
                                    
                          Moveto "\\Sistemas\\Vendas\\Contfrtc"
                          Moveto [Codigo da Empresa]
                          Locate IndexOrder by "Ind_004" CONS_EMP,CONS_CDOC,CONS_TDOC,CONS_SDOC,CONS_NDOC
                          If RetVal 
                             Then While True
                                    If [Data do Documento] = CONS_DTE And [Valor do Documento]=VR_NF
                                       Then ;CONS_CGC = ""
                                            ;GetRecord "\\Sistemas\\Cadastro\\Destinat\\" [Transportadora_Pessoa] To REG_PESSOA
                                            ;If RetVal Then CONS_CGC = REG_PESSOA["CGC"] EnDIf
                                            ACHOU_DOCUMENTO=True
                                            QuitLoop
                                    EndIf
                                    Skip
                                    If Eot() Then QuitLoop EndIf
                                    Locate Next IndexOrder by "Ind_004" CONS_EMP,CONS_CDOC,CONS_TDOC,CONS_SDOC,CONS_NDOC
                                    If Not RetVal Then QuitLoop EndIf
                                  EndWhile  
                          EndIf
                          If ACHOU_DOCUMENTO And [CT_PAGO]="S"
                             Then Moveto Tabela 
                                  Del
                                  If NR=1  
                                     Then QuitLoop
                                  EndIf
                             Else Moveto Tabela
                                  Skip       
                          EndIf        
                  EndIf          
                  If [Codigo do Documento]="" Then QuitLoop EndIf
                  If Eot() Then QuitLoop EnDIf  
                EndWhile
        Do_it!
        
        If Not IsEmpty(Tabela)
           Then Moveto "FatD"
                Moveto [Numero do Lancamento]
                Locate NLANC
                If RetVal
                   Then While [Numero do Lancamento] =NLANC
                          SEQ = [Sequencia]  
                          Skip
                          If Eot() Then QuitLoop EndIf
                        EndWhile
                   Else SEQ = 0
                EndIf
                
                {Ask} TypeIn Tabela Enter TypeIn "Fast Delete" JanelaTabela=GetWindow()
                Moveto [Codigo do Documento ] TypeIn "_CodD" 
                Moveto [Tipo do Documento   ] TypeIn "_TipD" 
                Moveto [Serie do Documento  ] TypeIn "_SerD"
                Moveto [Numero do Documento ] TypeIn "_NumD"
                Moveto [Data de Emissao     ] TypeIn "_DatE"
                Moveto [Valor Nota Fiscal   ] TypeIn "_VrD"
                {Ask} {FatD} JanelaFatD=GetWindow()
                Moveto [Codigo do Documento ] TypeIn "_CodD" 
                Moveto [Tipo do Documento   ] TypeIn "_TipD" 
                Moveto [Serie do Documento  ] TypeIn "_SerD"
                Moveto [Numero do Documento ] TypeIn "_NumD"
                Moveto [Data de Emissao     ] TypeIn "_DatE"
                Moveto [Valor do Documento  ] TypeIn "_VrD"
                Do_it!
                Window Select JanelaTabela ClearImage
                Window Select JanelaFatD   ClearImage
                
                If IsEmpty(Tabela)
                   Then MSG = "NÆo foi localizado conhecimento de transporte!" 
                        TEMP = False     
                   Else Coedit Tabela
                        Scan
                          CONS_EMP    = CONS_EMP
                          CONS_PESSOA = PESSOA
                          CONS_CDOC   = [Codigo do Documento    ]
                          CONS_TDOC   = [Tipo do Documento      ]
                          CONS_SDOC   = [Serie do Documento     ]
                          CONS_NDOC   = [Numero do Documento    ]
                          CONS_DTE    = [Data de Emissao        ]
                          VR_NF       = [Valor Nota Fiscal      ]
                          CONS_CGC    = [CGC                    ]
                          
                          SEQ = SEQ + 1
                          Moveto "FatD"
                          End Down
                          [Numero do Lancamento] = NLANC
                          [Sequencia           ] = SEQ
                          [Codigo do Documento ] = CONS_CDOC
                          [Tipo do Documento   ] = CONS_TDOC
                          [Serie do Documento  ] = CONS_SDOC
                          [Numero do Documento ] = CONS_NDOC
                          [Data de Emissao     ] = CONS_DTE
                          [Valor do Documento  ] = VR_NF
                          [CNPJ                ] = CONS_CGC
                          UnLockRecord 
                          
                          Moveto Tabela
                        EndScan
                        Do_it!
                EndIf                
           Else MSG = "NÆo foi localizado conhecimento de transporte!" 
                TEMP = False     
        EndIf   
        Moveto Tabela ClearImage 
        Moveto "\\Sistemas\\Cadastro\\GpessoaI" ClearImage
        Moveto "\\Sistemas\\Vendas\\Contfrtc" ClearImage
   Else MSG = "NÆo foi localizado conhecimento de transporte!" 
        TEMP = False
EndIf

Moveto "FatC"
FormKey
CoEditKey
      
Moveto [Numero do Lancamento]
Locate NLANC
For ii From 1 To 10
  If Not IsLockRecord() Then quitloop EndIf
EndFor 
Moveto ANT_TAB
Moveto Field ANT_FIE

If MSG<>"" Then Mensagem(MSG)EndIf

Return TEMP

EndProc ;Seleciona_Documentos()

;*******************************************************************************
;* Rotina para checar digita‡Æo de duplicidade de notas                        *
;*******************************************************************************
Proc Checa_Duplicidade(PARAM)
Private CONS_NDOC, CONS_CDOC, CONS_TDOC, CONS_SDOC, NAO_FAZ, PARAM, ANT_TAB, ANT_FIE, SEQ

SEQ     = BlankNum()
ANT_TAB = Table()
ANT_FIE = Field()
NAO_FAZ = False

Switch
  Case PARAM="Cabeca" :
       UnLockRecord
       FormKey
       
       CONS_EMP    = [Codigo da Empresa  ]
       CONS_PESSOA = [Codigo             ]
       CONS_CDOC   = [Codigo do Documento]
       CONS_NDOC   = [Numero do Documento]

       Moveto "FatC"
       Home 
       Moveto [Codigo da Empresa]
       Locate IndexOrder by "Ind01" CONS_EMP,CONS_PESSOA,CONS_CDOC,CONS_NDOC 
       If RetVal
          Then MSG_DUPLICIDADE=""
               While CONS_EMP    = [Codigo da Empresa  ] And
                     CONS_PESSOA = [Codigo             ] And
                     CONS_CDOC   = [Codigo do Documento] And
                     CONS_NDOC   = [Numero do Documento]
                     If [Numero do Lancamento]<>NLANC
                       Then MSG_DUPLICIDADE="Documento "+CONS_CDOC+" "+CONS_NDOC+" j  esta lan‡ado no sistema !//"+
                                            "Numero do Lancamento: "+[Numero do Lancamento]
                            Mensagem(MSG_DUPLICIDADE)
                            NAO_FAZ=True
                            QuitLoop
                     EndIf
                     Skip
                     If Eot() Then QuitLoop EndIf
                     Locate Next IndexOrder by "Ind01" CONS_EMP,CONS_PESSOA,CONS_CDOC,CONS_NDOC 
                     If Not RetVal Then QuitLoop EndIf
               EndWhile
       EndIf
       
  Case PARAM="Documentos" :
       CONS_EMP    = [FatC->Codigo da Empresa]
       CONS_PESSOA = [FatC->Codigo           ]
       CONS_CDOC   = [Codigo do Documento    ]
       CONS_TDOC   = [Tipo do Documento      ]
       CONS_SDOC   = [Serie do Documento     ]
       CONS_NDOC   = [Numero do Documento    ]
       CONS_DTE    = [Data de Emissao        ]
       
       PESSOA      = [Fatc->Codigo]+" "+[FatC->Razao Social]
       SEQ         = [Sequencia              ]
       
       Moveto "FatD"
       Scan
         If CONS_CDOC=[Codigo do Documento] And
            CONS_TDOC=[Tipo do Documento  ] And
            CONS_SDOC=[Serie do Documento ] And
            CONS_NDOC=[Numero do Documento] And
            SEQ <> [Sequencia]
            Then MSG_DUPLICIDADE="Documento "+CONS_CDOC+" "+CONS_NDOC+" j  esta lan‡ado nesta rela‡Æo!//"+
                                 "Sequencia: "+StrVal([Sequencia])
                 Mensagem(MSG_DUPLICIDADE)
                 Moveto [Sequencia]
                 Locate SEQ
                 Return True
         EndIf
       EndScan
       UnLockRecord
       
       Moveto "FatC"
       UnLockRecord
       FormKey
       
       Moveto "FatD"       
       Home 
       Moveto [Codigo do Documento]
       Locate IndexOrder by "Ind01" CONS_CDOC,CONS_NDOC 
       If RetVal
          Then MSG_DUPLICIDADE=""
               While CONS_CDOC=[Codigo do Documento] And
                     CONS_NDOC=[Numero do Documento]
                     If [Numero do Lancamento]<>NLANC
                        Then If Documento_Fatura([Numero do Lancamento])
                                Then If CONS_EMP    = REG_FATC["Codigo da Empresa"] And
                                        CONS_PESSOA = REG_FATC["Codigo"           ]
                                        Then DOC = CONS_CDOC+" "+CONS_TDOC+" "+CONS_SDOC+" "+CONS_NDOC                                                            
           
           MSG_DUPLICIDADE =                   Completa(" Fatura: "+DOC_FATURA,65," ") + "//"
           MSG_DUPLICIDADE = MSG_DUPLICIDADE + Completa(" Pessoa: "+PESSOA,65," ") + "//"
           MSG_DUPLICIDADE = MSG_DUPLICIDADE + Completa("Emissao: "+StrVal(REG_FATC["Data de Emissao"]),65," ") + "////"
           MSG_DUPLICIDADE = MSG_DUPLICIDADE + Completa("Documento: "+DOC,65," ") + "////"
           MSG_DUPLICIDADE = MSG_DUPLICIDADE + Completa("Documento j  esta lan‡ado no sistema!",65," ") +"//"
           MSG_DUPLICIDADE = MSG_DUPLICIDADE + Completa("Numero do Lancamento: "+[Numero do Lancamento],65," ")
           
                                             Mensagem(MSG_DUPLICIDADE)
                                             NAO_FAZ=True
                                             QuitLoop
                                     EndIf        
                             EndIf                 
                     EndIf
                     Skip
                     If Eot() Then QuitLoop EndIf
                     Locate Next IndexOrder by "Ind01" CONS_CDOC,CONS_NDOC 
                     If Not RetVal Then QuitLoop EndIf   
               EndWhile
       EndIf
       Moveto "FatC"  
EndSwitch

Moveto [Numero do Lancamento]
Locate NLANC

UnLockRecord
FormKey
LockRecord

Moveto ANT_TAB
Moveto Field ANT_FIE
If Not IsBlank(SEQ) Then Moveto [Sequencia] Locate SEQ EndIf 

If NAO_FAZ
   Then Return True
   Else Return False
EndIf    

EndProc ;Checa_Duplicidade()

;*******************************************************************************
;* Rotina para Finalozar Registro                                              *
;*******************************************************************************
Proc Finaliza_Registro(PARAM)
Private PARAM,DOC_VENC,MSG,ABORTA_PROCESSO              

ABORTA_PROCESSO = False 
DOC_VENC        = 0
                                  
Moveto "FatD"
Moveto [Sequencia]
If RecordStatus("New")=True
   Then DOC_VENC=DOC_VENC+1
EndIf

Moveto "FatV"
Moveto [Sequencia]
If RecordStatus("New")=True
   Then DOC_VENC=DOC_VENC+2
EndIf        

Switch
  Case DOC_VENC=3 : MSG = "N„o foi poss¡vel finalizar este lan‡amento.//N„o foi localizado documento(s) e/ou vencimento(s) nesta fatura."
                    ABORTA_PROCESSO=True
  Case DOC_VENC=2 : MSG = "N„o foi localizado vencimento(s) lan‡ado(s) nesta fatura.//Deseja finalizar este lan‡amento?"
  Case DOC_VENC=1 : MSG = "N„o foi localizado documento(s) lan‡ado(s) nesta fatura.//Deseja finalizar este lan‡amento?"  
EndSwitch   

If DOC_VENC=1 Or DOC_VENC=2
   Then ConfGeral(MSG) 
        If Ok<>"S"
           Then ABORTA_PROCESSO=True
        EndIf
        MSG=""
EndIf

Moveto "FatC"
Moveto [Numero do Lancamento]
Locate NLANC

If ABORTA_PROCESSO
   Then If MSG<>"" Then Mensagem(MSG) EndIf
        Return 
EndIf

UnLockRecord
FormKey
           
Estorno_CP_Ok = True
OP_MOVDP="ESTORNAR"
Play "FT_GTIT"

If Estorno_CP_Ok
  Then OP_MOVDP = "ATUALIZAR"
       Play "FT_GTIT"
EndIf      

If PARAM=""
   Then SAIR = True
   Else SAIR = False 
EndIf   

Atualiza_Controle_Frete("Limpa_Campo_CTPAGO") 
Atualiza_Controle_Frete("Atualiza") 

Moveto "FatC"
Moveto [Numero do Lancamento]
Locate NLANC

If PARAM<>""
   Then [Situacao]="FINALIZADO"
EndIf

UnLockRecord
FormKey
LockRecord
           
EndProc ;Finaliza_Registro()

;*******************************************************************************
;* Rotina para Controlar Edicao do Registro                                    *
;*******************************************************************************
Proc Controla_EdicaoD()
DIGITAD()
Moveto "FatD"
If RecordStatus("Locked") Then UnLockRecord EndIf
SaveTables         
EndProc

;*******************************************************************************
;* Rotina para Controlar Edicao do Registro                                    *
;*******************************************************************************
Proc Controla_EdicaoV()
DIGITAV()
Moveto "FatV"
If RecordStatus("Locked") Then UnLockRecord EndIf         
EndProc

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

While DIGITAC
   Moveto "FatC"
   Tecla_Funcao=-10
   If CHAVEC=1
      Then Controle_Dia()
   EndIf
   
   While Not IsBlank(Tecla_Funcao)
    Switch
      Case Tecla_Funcao=-116:
           Switch
             Case Table()="Fatc"  : Tecla_Funcao="F8"       ;F8  => Documentos
						 Case Table()="Fatd"  : Tecla_Funcao="F9"       ;F9  => Vencimentos
             Case Table()="Fatv"  : Tecla_Funcao=-11      
             OtherWise            : Tecla_Funcao=""
           EndSwitch     
      Case Tecla_Funcao=-115:
           Switch
             Case Table()="Fatc"  : Tecla_Funcao="F9" 
						 Case Table()="Fatd"  : Tecla_Funcao=-11
             Case Table()="Fatv"  : Tecla_Funcao="F8"
             OtherWise            : Tecla_Funcao=""
           EndSwitch
    EndSwitch   
    Switch
      Case Tecla_Funcao=-10  : Moveto "FatC"
                               DIGITAC()
      Case Tecla_Funcao=-11  : Moveto "FatC"
                               DIGITAC()                         
      Case Tecla_Funcao="F8" :
           CHAVEC=0
           Moveto "FatC"
           Moveto [Flag]
           SetaCorRegistro("Padrao")
           Moveto "FatD"
           While True
             CHAVED()
             If CHAVED=9
                Then QuitLoop
             EndIf
             Controla_EdicaoD()
           EndWhile
      Case Tecla_Funcao="F9" :
           CHAVEC=0
           Moveto "FatV"
           Somatoria("Vencimentos")
           SetaCorRegistro("Padrao")
           Moveto "FatC"
           DIGITACD()
    EndSwitch
  EndWhile
EndWhile

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

Release Vars FICHA_FINANCEIRA

EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,"+
        "\\Sistemas\\Cadastro\\Bib_Show,"+
        "\\Sistemas\\Vendas\\Bib_Vend,"+
        "\\Sistemas\\Cadastro\\Bib_Parm"

SYS_VALOR()
If Not IsAssigned(SYS_EMPRESA_DEFAULT) Then SYS_EMPRESA_DEFAULT="" 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

Release Vars Conta_Erro,MSG_ERRO

View NOWINDOW "\\Sistemas\\Cadastro\\Destinat"
View NOWINDOW "\\Sistemas\\Cadastro\\Feriados"
View NOWINDOW "\\Sistemas\\Cadastro\\GpessoaC"
View NOWINDOW "\\Sistemas\\Cadastro\\GpessoaI"
View NOWINDOW "\\Sistemas\\CtaPag\\TitBaixa"
View NOWINDOW "\\Sistemas\\CtaPag\\Titulos"
View NOWINDOW "\\Sistemas\\CtaCor\\PlContas"      ;NÆo ‚ utilizado, no entanto, se nÆo abrir fica saindo da rotina
View NOWINDOW "\\Sistemas\\Estoque\\NotaEc"
View NOWINDOW "\\Sistemas\\Vendas\\Contfrtc"
View NOWINDOW "FatD"
View NOWINDOW "FatV"
 
CoEdit "FatC"
PickForm "F"
If NRecords("FatC")>1
   Then Home
        If IsBlank([Numero do Lancamento])
           Then Echo Normal
                Echo Off
                MSG="Existe registro com Erro !// //"
                MSG=MSG+"Verificar numero lan‡amento em branco !// //"
                MSG=MSG+"Excluir o lan‡amento e verificar a origem do mesmo !"
                Mensagem(MSG)
        EndIf
EndIf

CONTA=""
NLANC=""

OPCAO_FORM="F"

While True
  CHAVEC()
  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
