;** AC_FAT *********************************************************************
;*  Acerto de Controle de Frete -> CTAPAG 07.Lan‡amento de Faturas             *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 23/09/2019 por Bruno Carvalho
;Ultima Alteracao:   /  /     por 
;Motivo Alteracao:

;*******************************************************************************
;* Rotina para Finalozar Registro                                              *
;*******************************************************************************
Proc Verifica_CTE()
Private iy

For iy From 1 To 2
  If iy=1
     Then {Ask} {\\Sistemas\\Estoque\\NotaEc}  
          Moveto [Numero do Lancamento  ] Check
          Moveto [Codigo do Documento   ]      TypeIn "CT-E"
          Moveto [Sistema Gerador       ]      TypeIn "IX"
          Do_it!
          ClearAll
  
          If IsEmpty("Answer")
             Then Return False
          EndIf
  
          NotaCTE = Adiciona_Indice_Temp("Numero do Lancamento")
  
          {Ask} TypeIn NotaCTE Enter
          Moveto [Numero do Lancamento   ]       TypeIn "_Lanc"
          {Ask} {\\Sistemas\\Estoque\\NotaEr}
          Moveto [Numero do Lancamento   ] Check TypeIn "_Lanc"
          Moveto [Sequencia do Lancamento] Check 
          Moveto [Modelo_Documento       ]       TypeIn "55"  
          Moveto [Chave_Acesso           ] Check
          Do_it!
          ClearAll      
          
          If IsEmpty("Answer")
             Then Return False
          EndIf                      
                         
          NotaEr = Adiciona_Indice_Temp("Numero do Lancamento,Sequencia do Lancamento")
  EndIf
          
  If iy=1 ;Ajustar a Natura do Frete nos CT-E a partir das Notas de Entrada
     Then {Ask} TypeIn NotaEr Enter
          Moveto [Numero do Lancamento  ] Check
          Moveto [Chave_Acesso          ]       TypeIn "_Chv"                                    
          {Ask} {\\Sistemas\\Estoque\\NotaEc} 
          Moveto [Tipo de Operacao      ] Check TypeIn "C or A"
          Moveto [Chave_Acesso_NFe      ]       TypeIn "_Chv"
          Do_it!
          ClearAll
          
          If IsEmpty("Answer")
             Then Loop
          EndIf
          
          Temp_NotaEr = Adiciona_Indice_Temp("Numero do Lancamento")

          View "\\Sistemas\\Estoque\\NotaEc"
          CoEdit Temp_NotaEr
          Scan
            Barra(NRecords(Temp_NotaEr), RecNo())
            Aguarde("Aguarde, ajustando dados "+BARRA_STRING)
            
            LANCTO = [Numero do Lancamento]
            TIPO_OPERACAO = [Tipo de Operacao]
            
            Moveto "\\Sistemas\\Estoque\\NotaEc" 
            Moveto [Numero do Lancamento]
            Locate LANCTO 
            If RetVal
               Then While IsLockRecord() EndWhile 
                    Switch
                      Case TIPO_OPERACAO="C" : [Natureza do Frete] = "2" 
                      Case TIPO_OPERACAO="A" : [Natureza do Frete] = "3"   
                    EndSwitch
                    UnLockRecord
            EndIf
            Moveto Temp_NotaEr
          EndScan         
          Do_it!
          ClearAll
                   
     Else {Ask} TypeIn NotaEr Enter
          Moveto [Numero do Lancamento   ] Check
          Moveto [Chave_Acesso           ]       TypeIn "_Chv"                                    
          {Ask} {\\Sistemas\\Vendas\\NotaC}
          Moveto [Chave_Acesso_NFe       ]       TypeIn "_Chv"
          Moveto [Tipo Movimento Estoque ]       TypeIn "S"
          Moveto [Descricao da Destinacao]       TypeIn "..VENDA.."
          Moveto [Valor do Frete         ] Check 
          Do_it!
          ClearAll
          
           If IsEmpty("Answer")
             Then Loop
          EndIf

          Temp_Notac = Adiciona_Indice_Temp("Numero do Lancamento")
          
          View "\\Sistemas\\Estoque\\NotaEc"
          CoEdit Temp_Notac
          Scan
            Barra(NRecords(Temp_Notac), RecNo())
            Aguarde("Aguarde, ajustando dados "+BARRA_STRING)
            
            LANCTO = [Numero do Lancamento]
            VALOR_FRETE = [Valor do Frete]
            
            Moveto "\\Sistemas\\Estoque\\NotaEc" 
            Moveto [Numero do Lancamento]
            Locate LANCTO 
            If RetVal
               Then While IsLockRecord() EndWhile 
                    Switch
                      Case IsBlank(VALOR_FRETE) Or VALOR_FRETE=0 : [Natureza do Frete] = "0" 
                      Case VALOR_FRETE>0                         : [Natureza do Frete] = "1"   
                    EndSwitch
                    UnLockRecord
            EndIf
            Moveto Temp_Notac
          EndScan       
          Do_it!
          ClearAll       
  EndIf  
EndFor

Return True

EndProc ;Verifica_CTE()
                          
;*******************************************************************************
;* Rotina para Finalozar Registro                                              *
;*******************************************************************************
Proc Verifica_CTE_Antigo()
Private oi

For oi From 1 To 2
  {Ask} {\\Sistemas\\Estoque\\NotaEc}
  Moveto [Numero do Lancamento  ] Check
  Moveto [Codigo da Empresa     ] Check
  Moveto [Numero do Documento   ] Check
  Moveto [Codigo do Documento   ] Check TypeIn "CT-E"
  Moveto [Tipo do Documento     ] Check
  Moveto [Serie do Documento    ] Check
  Moveto [Codigo                ] Check
  Moveto [Nome Fantasia EmitDest] Check
  Moveto [Tipo de Operacao      ] Check
  Moveto [Data de Emissao       ] Check ;TypeIn ">=~DATA_PARAM" 
  If oi=1
     Then Moveto [Natureza do Frete] Check TypeIn "Not 0,  Not 1"
     Else ;Corre‡Æo para demais CT-E de Terceiros
  EndIf   
  Moveto [Sistema Gerador       ] Check
  Do_it!
  ClearAll
  
  If IsEmpty("Answer")
     Then Return False
  EndIf
  
  NotaEc = Adiciona_Indice_Temp("Numero do Lancamento")
  
  {Ask} TypeIn NotaEc Enter
  Moveto [Numero do Lancamento   ]       TypeIn "_Lanc"
  {Ask} {\\Sistemas\\Estoque\\NotaEr}
  Moveto [Numero do Lancamento   ] Check TypeIn "_Lanc"
  Moveto [Sequencia do Lancamento] Check
  Moveto [Modelo_Documento       ] Check
  Moveto [Data_Documento         ] Check
  Moveto [Numero_Documento       ] Check
  Moveto [Serie_Documento        ] Check
  Moveto [SubSerie_Documento     ] Check
  Moveto [Codigo_Participante    ] Check
  If oi = 1
    Then Moveto [IND_EMIT        ] Check TypeIn "0"  ;Pr¢rpio
    Else Moveto [IND_EMIT        ] Check TypeIn "1"  ;Terceiro
  EndIf     
  Moveto [Chave_Acesso           ] Check
  Do_it!
  ClearAll
  
  If IsEmpty("Answer")
     Then Return False
  EndIf
  
  NotaEr = Adiciona_Indice_Temp("Numero do Lancamento,Sequencia do Lancamento")
    
  {Ask} TypeIn NotaEc Enter Check
  Moveto [Numero do Lancamento  ] TypeIn "_Lanc"
  {Ask} TypeIn NotaEr Enter  
  Moveto [Numero do Lancamento  ] TypeIn "_Lanc"
  Do_it!
  ClearAll
  
  Delete NotaEc
  NotaEc = Adiciona_Indice_Temp("Numero do Lancamento")
  
  Adiciona_Campo(NotaEc,"Achou_Nota(A1)")
  
  If IsEmpty(NotaEc)
     Then Return False
  EndIf
  
  CoEdit NotaEr
  Scan
    Barra(NRecords(NotaEr), RecNo())
    Aguarde("Aguarde, ajustando dados "+BARRA_STRING)
    
    [Numero_Documento] = AlinhM(Strval(NumVal([Numero_Documento])),6)
  EndScan
  Do_it!
  ClearAll
  
  {Ask} TypeIn NotaEr Enter
  Moveto [Numero do Lancamento   ] Check TypeIn "_Lanc, as NotaEc Lancto"
  Moveto [Sequencia do Lancamento] Check TypeIn "as NotaEc Seq"
  Moveto [Chave_Acesso           ]       TypeIn "_Chv"
  {Ask} TypeIn NotaEc Enter
  Moveto [Numero do Lancamento   ]       TypeIn "_Lanc"
  Moveto [Numero do Documento    ] Check TypeIn "as NotaEc Docto"
  Moveto [Codigo da Empresa      ] Check TypeIn "as NotaEc Empresa"
  Moveto [Codigo do Documento    ] Check TypeIn "as NotaEc CodDocto"
  Moveto [Tipo do Documento      ] Check TypeIn "as NotaEc TipoDocto"
  Moveto [Serie do Documento     ] Check TypeIn "as NotaEc SerieDocto"
  Moveto [Data de Emissao        ] Check TypeIn "as NotaEc DtEmissao"
  Moveto [Codigo                 ] Check TypeIn "as NotaEc CliCodigo"
  Moveto [Nome Fantasia EmitDest ] Check TypeIn "as NotaEc CliNome"
  {Ask} {\\Sistemas\\Vendas\\NotaC}
  Moveto [Codigo da Empresa      ] Check
  Moveto [Numero do Documento    ] Check TypeIn "_NumD"
  Moveto [Serie do Documento     ] Check
  Moveto [Codigo do Documento    ] Check
  Moveto [Tipo do Documento      ] Check
  Moveto [Data de Emissao        ] Check 
  Moveto [Chave_Acesso_NFe       ] Check TypeIn "_Chv" 
  Do_it!
  ClearAll
  
  If IsEmpty("Answer")
     Then Return False
  EndIf
  
  TabWork = Adiciona_Indice_Temp("NotaEc Lancto,NotaEc Seq")
  
  {Ask} TypeIn TabWork Enter
  Moveto [NotaEc Lancto       ] TypeIn "_Lanc"
  {Ask} TypeIn NotaEc Enter
  Moveto [Numero do Lancamento] TypeIn "_Lanc"
  Moveto [Natureza do Frete   ] TypeIn "Changeto 0"
  Moveto [Achou_Nota          ] TypeIn "Changeto S"
  Do_it!
  ClearAll                        
  
  Adiciona_Indice_Secundario(TabWork,"Notaec01","NotaEc CliCodigo,NotaEc Docto,NotaEc SerieDocto")
  ClearAll
  
  Adiciona_Indice_Secundario(TabWork,"Notaec03","NotaEc Empresa,NotaEc CodDocto,NotaEc TipoDocto,NotaEc SerieDocto,NotaEc Docto")
  ClearAll  

EndFor

Return True

EndProc ;Verifica_CTE()

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

DOC_VENC        = 0
                                  
Moveto "FatD"
Moveto [Numero do Lancamento]
Locate NLANC
If Not RetVal
   Then DOC_VENC=DOC_VENC+1
EndIf

Moveto "FatV"
Moveto [Numero do Lancamento]
Locate NLANC
If Not RetVal
   Then DOC_VENC=DOC_VENC+2
EndIf      

If DOC_VENC<>0
   Then Return False
EndIf      
           
If Atualiza_Controle_Frete("Verifica_Campo_CTPAGO") 
   Then Atualiza_Controle_Frete("Atualiza")
EndIf    

Moveto "FatC"
Moveto [Numero do Lancamento]
Locate NLANC
           
EndProc ;Finaliza_Registro() 

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

Moveto "Fatc"
Moveto [Numero do Lancamento]
Locate NLANC
If PARAM="Verifica_Campo_CTPAGO"                                
   Then Moveto "\\Sistemas\\Vendas\\Contfrtc"
        Moveto [Fatura_Lancamento]
        Locate IndexOrder by "Ind_003" [FatC->Numero do Lancamento]
        If RetVal
           Then If [CT_PAGO] = "S"
                  Then TEMP = False
                EndIf        
        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 TEMP=False
        EndIf
EndIf
Release Vars Conta_Erro,MSG_ERRO,oi,NLINHA,ARQIMP,DISPOSITIVO_OPCAO,PDFZEBRA,CI_15CPP,MSG,IMPRIME_CABECALHO

Return TEMP

EndProc ;Atualiza_Controle_Frete()

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

GetRecord "FatC" [FatC->Numero do Lancamento] 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

ACHOU_FATURA = False

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

If PARAM<>"Verifica" And IsAssigned(VERIFICA_DOCTO_FATURA) And VERIFICA_DOCTO_FATURA="0"
   Then VERIFICA_DOCTO_FATURA="1"
        Documento_Fatura()
EndIf

If PARAM = "Verifica" 
   Then MSG     = ""
        ANT_TAB = Table()
        ANT_FIE = Field()
        ANT_SEQ = [FatD->Sequencia]
        
        Moveto "FatC"         
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             
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"
        EndIf 
EndIf

If ACHOU_PESSOA
   Then If PARAM = "Verifica" And NLANC <> [FatC->Numero do Lancamento]
           Then Documento_Fatura()       
           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
                        EndIf
                EndIf   
        EndIf     
        UnLockRecord
EndIf

If PARAM = "Verifica" 
   Then Moveto "FatC"
        Moveto [Numero do Lancamento]
        Locate NLANC
        
        Moveto "FatD"
        Moveto [Sequencia]
        Locate ANT_SEQ
        [CNPJ] = CONS_CGC
EndIf
   
Return ACHOU_FATURA

EndProc ;Verifica_Fatura()

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

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]    
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 
                         Then VERIFICA_CONTFRTC = True 
                      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 PESSOA=[Codigo]  
                          ACHOU_NOTAENTRADA = 2
                          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 = PESSOA
               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" PESSOA
                       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

EndProc ;Verifica_NotaEntrada()

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,"+
        "\\Sistemas\\Cadastro\\Bib_Show,"+
        "\\Sistemas\\Vendas\\Bib_Vend,"+
        "\\Sistemas\\Cadastro\\Bib_Parm"
SYS_VALOR()
                                                             
For qw from 1 To 2
  Switch
    Case qw = 1 : PARAM_PROCESSO = "VERIFICA_CTE_NATUREZA_OPERACAO"     
    Case qw = 2 : PARAM_PROCESSO = "AJUSTA_CTE"
  EndSwitch
   
  Switch 
     Case PARAM_PROCESSO = "AJUSTA_CTE"                     :
          
         ;Teste em  28/09/2019 p/ empresa ##
         ;Lan‡amentos "000296","000304","000305", sendo ainda que no "000304" 
         ;h  um documento que ‚ mostru rio e nÆo pode atualizar controle de frete
          
         ;DATA_PARAM = DateVal("01.07.2019")
         ;If Not ConfGeral("Rotina para corrigir Lan‡amento de Fatura no Controle de Frete a partir da data "+
         ;                 Strval(DATA_PARAM)+"//Deseja continuar com este processo, a partir desta data?")
         ;   Then Loop 
         ;EndIf       
         
          If Not ConfGeral("Rotina para corrigir Lan‡amento de Fatura no Controle de Frete!"+
                          "//Deseja continuar com este processo, a partir desta data?")
             Then Loop      
          EndIf
          
          View "\\Sistemas\\Cadastro\\GpessoaI"
          View "\\Sistemas\\Estoque\\NotaER"        
          View "\\Sistemas\\Estoque\\NotaEC"
          View "\\Sistemas\\Vendas\\Contfrtc"
          View "FatV"
          View "FatD" 
          CoEdit "FatC"
          Scan ;For [Data de Emissao]>=DATA_PARAM  
            Barra(NRecords("FatC"), RecNo())
            Aguarde("Aguarde, ajustando dados: Lancto "+[Numero do Lancamento]+" "+BARRA_STRING)
            
            NLANC  = [Numero do Lancamento]
            Finaliza_Registro("FINALIZA")
            
            Moveto "FatC"
            Moveto [Numero do Lancamento] 
            Locate NLANC                   
          EndScan                  
          Do_It!
          ClearAll       
     Case PARAM_PROCESSO = "VERIFICA_CTE_NATUREZA_OPERACAO" : 
          If Not ConfGeral("Rotina para corrigir [Natureza do Frete] nos documentos CT-E importados por lotes no sistema!"+
                           "//Deseja continuar com este process?")
             Then Loop 
          EndIf  
          
         ;DATA_PARAM = DateVal("01.07.2019")
          If Not Verifica_CTE() 
             Then Mensagem("NÆo h  registros a processar!") 
                  QuitLoop
          EndIf
  EndSwitch
Endfor      

If IsAssigned(Temp_Notac)  And IsTable(Temp_Notac)   Then Delete Temp_Notac   EndIf                     
If IsAssigned(Temp_NotaEr) And IsTable(Temp_NotaEr)  Then Delete Temp_NotaEr  EndIf
If IsAssigned(NotaCTE)     And IsTable(NotaCTE)      Then Delete NotaCTE      EndIf                     
If IsAssigned(NotaEc)      And IsTable(NotaEc)       Then Delete NotaEc       EndIf
If IsAssigned(NotaEr)      And IsTable(NotaEr)       Then Delete NotaEr       EndIf   
If IsAssigned(TabWork)     And IsTable(TabWork)      Then Delete TabWork      EndIf      
   
Mensagem("Processo Concluido!")   
   
Release Vars All
Release Procs All