;** IMP_CIEL *******************************************************************
;*  Importacao Retorno Cielo cartoes                                           *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/10/2017 por Anivel Augusto Rodrigues
;Ultima Alteracao: 21/11/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 23/11/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 07/12/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes descompactar arquivos e bkp
;Ultima Alteracao: 11/12/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes vendas nÆo conciliadas form 
;Ultima Alteracao: 26/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Coedit e ignorar baixas                 
;Ultima Alteracao: 26/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes mensagem, excluir arquivo da lista
;Ultima Alteracao: 27/03/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Tipo carteira "G"
;Ultima Alteracao: 09/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes gerar lote de baixas
;Ultima Alteracao: 12/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novo gerar lote de baixas, novos reports e sem concilia‡Æo nos pagamentos
;Ultima Alteracao: 13/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ordem de exibi‡Æo dos reports
;Ultima Alteracao: 14/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes deletar *.zip
;Ultima Alteracao: 16/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes deletar *.zip e GeraBaixasReceber() 
;Ultima Alteracao: 20/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes corre‡Æo conciliar 1
;Ultima Alteracao: 20/04/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes corre‡Æo conciliar 2
;Ultima Alteracao: 23/06/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes indice arquivo lista
;Ultima Alteracao: 29/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes report
;Ultima Alteracao: 14/03/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes Numero_Lancamento("Interno","Locked_Down")
;Ultima Alteracao: 28/03/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes valor da parcela, multiplas parcelas                            
;Ultima Alteracao: 17/04/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes valor das proximas parcelas                                     
;Ultima Alteracao: 17/05/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes CarregarLista com parametros
;Ultima Alteracao: 12/08/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes NOME DOS ARQUIVO IMPORTADOS  
;Ultima Alteracao: 20/05/2020 por Bruno Carvalho
;Motivo Alteracao: Ajustes para o Base no CopyReport do "Concctr" para "\\Base\\Sistemas\\CtaRec\\Concctr"
;Ultima Alteracao: 18/01/2020 por Bruno Carvalho                           
;Motivo Alteracao: Ajustes ao chamar o script, play a partir do script "IMP_RET"

;*******************************************************************************
;* ROTINA                                                                      *
;*******************************************************************************
Proc GeraBaixasReceber()
private nr,CHV_EMPRESA,CHV_TPDOCTO,CHV_NUMERO,CHV_SERIE,CHV_SEQ, regduplic, titok, vrtit,
        empant,contaant,dtpgant,bandant,prodant,NLOTE,seq, nlotesc

Aguarde("Aguarde, criando lote de baixas")

Sort "Concctr" On "Empresa","Conta","DataPagamento","Bandeira","CodigoProduto","DataVenda","Numero do Documento","Serie do Documento"
clearall

NR=nrecords("Concctr")

empant  ="??"
contaant="??"
dtpgant =blankdate()
bandant ="??"
prodant ="??"
nlotesc =0

View "bxautc"
View "bxauti"
View "duplic"
CoEdit "Concctr"
scan

  Barra(NR, RecNo())
  Aguarde("Aguarde, criando lote de baixas 2/2"+BARRA_STRING)

  if [Ocorrencia1]<>"2-PARAMETROS OK"
     then loop
  endif   
  if [Ocorrencia2]<>"PAGAMENTO CONCILIADO"
     then loop
  endif

  copytoarray regconcctr

  CHV_EMPRESA =regconcctr["Codigo da Empresa"  ]
  CHV_CDDOCTO =regconcctr["Codigo do Documento"]
  CHV_NUMERO  =regconcctr["Numero do Documento"]
  CHV_SERIE   =regconcctr["Serie do Documento" ]
  CHV_SEQ     =regconcctr["Sequencia"          ]

  titok=true
  Moveto "\\Sistemas\\Ctarec\\Duplic"
  Moveto [Codigo da Empresa]
  Locate IndexOrder by "Inddup30" CHV_EMPRESA,CHV_CDDOCTO,CHV_NUMERO,CHV_SEQ
  If not RetVal
     then
          titok=false

          sm=   "Contas a Receber, lan‡amento ?????? - "
          sm=sm+"Docto "+Format("W04,AL",CHV_EMPRESA)+"/"+
                         Format("W04,AL",CHV_CDDOCTO)+"/"+
                         Format("W10,AL",CHV_NUMERO) +", "

          Grava_Erro(sm+"documento de venda nÆo encontrado !")
      
     else 
          copytoarray regduplic

          NLANC=regduplic["Numero do Lancamento"]

          sm=   "Contas a Receber, lan‡amento "+NLANC+ " - "
          sm=sm+"Docto "+Format("W04,AL",[Codigo da Empresa  ])+"/"+
                         Format("W04,AL",[Codigo do Documento])+"/"+
                         Format("W10,AL",[Numero do Documento])+", "

          if [Codigo do Destinatario ]<>regconcctr["PessoaCartao"          ]   
             Then titok=false
                  Grava_Erro(sm+"titulo pessoa concilia‡Æo divergente ! "+[Codigo do Destinatario]+"<>"+regconcctr["PessoaCartao"])
          EndIf
          if [Tipo do Pagamento      ]<>regconcctr["FormadePagamento"      ] 
             Then titok=false
                  Grava_Erro(sm+"titulo forma pagto concilia‡Æo divergente ! "+[Tipo do Pagamento]+"<>"+regconcctr["FormadePagamento"])
          EndIf
          if [Data de Vencimento     ]<>regconcctr["DataVencimento"        ] 
             Then titok=false
                  Grava_Erro(sm+"titulo vencimento concilia‡Æo divergente ! "+format("D13",[Data de Vencimento])+"<>"+format("D13",regconcctr["DataVencimento"]))
          EndIf
          vrtit=regconcctr["ValorVenda"]-Ndecimal(((regconcctr["ValorVenda"]*regconcctr["TaxaDeComissao"])/100),2)
          if format("W12.2,EIC",[Valor do Documento])<>format("W12.2,EIC",vrtit)
             Then titok=false
                  Grava_Erro(sm+"titulo valor concilia‡Æo divergente ! "+ltrim(format("W12.2,EIC",[Valor do Documento]))+"<>"+ltrim(format("W12.2,EIC",vrtit)))
          EndIf
          if [Saldo do Documento     ]<[Valor do Documento]
             Then titok=false 
                  Grava_Erro(sm+"titulo j  baixado !")
          EndIf
  endif

  moveto "Concctr"
  if not titok
     Then loop
  EndIf

  if regconcctr["Empresa"      ]<>empant   or
     regconcctr["Conta"        ]<>contaant or
     regconcctr["DataPagamento"]<>dtpgant  or
     regconcctr["Bandeira"     ]<>bandant  or
     regconcctr["CodigoProduto"]<>prodant  
     then

          if empant<>"??"
             then
                  moveto "bxautc"
                  unlockrecord
          endif   

          empant   =regconcctr["Empresa"      ]
          contaant =regconcctr["Conta"        ]
          dtpgant  =regconcctr["DataPagamento"]
          bandant  =regconcctr["Bandeira"     ]
          prodant  =regconcctr["CodigoProduto"]  
          vrtotar  =0
          seq      =0
     
          moveto "bxautc"
          While True
            End
            Moveto [Numero do Lote]
            If Numero_Lancamento("Interno","Locked_Down")
               Then NLOTE = PROXLANCTO_NLANC
                    Release Vars PROXLANCTO_NLANC
                    quitloop
            EndIf    
          EndWhile
          
         ;end down
         ;while true
         ;  Moveto [Numero do Lote]
         ;  End
         ;  If Numero_Lancamento("Interno","")
         ;     Then NLOTE = PROXLANCTO_NLANC
         ;          Release Vars PROXLANCTO_NLANC
         ;  EndIf
         ;  Locate NLOTE
         ;  If Not Retval
         ;     Then End Down
         ;          [Numero do Lote       ]=NLOTE
         ;          If Not IsLockRecord()
         ;             Then QuitLoop
         ;             Else Del
         ;          EndIf
         ;  EndIf
         ;endwhile
         
          [Data da Baixa        ]=regconcctr["DataPagamento"]
          [Data Base            ]=regconcctr["DataPagamento"]
          [Codigo da Conta      ]=regconcctr["Conta"]
          [Situacao             ]="EM ABERTO"
          Controle_Dia()
          
          nlotesc=nlotesc+1
  endif

  seq=seq+1
  
  moveto "bxauti"
  end
  down
  [Numero do Lote         ]=NLOTE
  [Sequencia              ]=seq  

  [Numero do Lancamento   ]=[\Sistemas\Ctarec\Duplic->Numero do Lancamento  ]
  [Codigo da Empresa      ]=[\Sistemas\Ctarec\Duplic->Codigo da Empresa     ]
  [Codigo do Documento    ]=[\Sistemas\Ctarec\Duplic->Codigo do Documento   ]
  [Tipo do Documento      ]=[\Sistemas\Ctarec\Duplic->Tipo do Documento     ]
  [Serie do Documento     ]=[\Sistemas\Ctarec\Duplic->Serie do Documento    ]
  [Numero do Documento    ]=[\Sistemas\Ctarec\Duplic->Numero do Documento   ]
  [Tipo                   ]=[\Sistemas\Ctarec\Duplic->Tipo                  ]
  [Codigo do Destinatario ]=[\Sistemas\Ctarec\Duplic->Codigo do Destinatario]
  [Nome Fantasia EmitDest ]=[\Sistemas\Ctarec\Duplic->Nome Fantasia EmitDest]
  [Razao Social           ]=[\Sistemas\Ctarec\Duplic->Razao Social          ]
  [Data de Emissao        ]=[\Sistemas\Ctarec\Duplic->Data de Emissao       ]
  [Data de Vencimento     ]=[\Sistemas\Ctarec\Duplic->Data de Vencimento    ]
  [Valor do Documento     ]=[\Sistemas\Ctarec\Duplic->Valor do Documento    ]
  [Saldo do Documento     ]=[\Sistemas\Ctarec\Duplic->Saldo do Documento    ]
  [Tipo do Pagamento      ]=[\Sistemas\Ctarec\Duplic->Tipo do Pagamento     ]
  [Descricao Tipo Pagamento]=[\Sistemas\Ctarec\Duplic->Descricao Tipo Pagamento]
  [Tipo do Lancamento     ]=[\Sistemas\Ctarec\Duplic->Tipo do Lancamento    ]
  [Descricao do Lancamento]=[\Sistemas\Ctarec\Duplic->Descricao do Lancamento]

  [Valor do Desconto      ]=blanknum()
  [Data Limite Desconto   ]=blankdate()
  [Multa                  ]=blanknum()
  [Taxa de Juros          ]=blanknum()
  [Tipo Taxa de Juros     ]="D"
  [NDias Taxa de Juros    ]=1
  [Valor de Juros         ]=blanknum()

  [Bx Tipo da Baixa       ]="NORMAL"
  [Bx NDias               ]=[NDias Taxa de Juros   ]
  [Bx Valor do Recebimento]=[Saldo do Documento    ]
  [Bx Valor do Juros      ]=blanknum()
  [Bx Valor do Desconto   ]=blanknum()
  [Bx Valor Juros_Desconto]=blanknum()
  [Bx Forma da Baixa      ]="TOTAL"
  unlockrecord

  moveto "Concctr"
endscan

moveto "bxautc"
unlockrecord

do_it!
ClearAll

if nlotesc>0
   then Mensagem(strval(nlotesc)+" lotes de baixas foram criados, verificar !")
   Else Mensagem("NÆo teve cria‡Æo de lote de baixas !// //Titulos nÆo encontados !")
endif

EndProc

;*******************************************************************************
;* ROTINA                                                                      *
;*******************************************************************************
Proc GeraBaixasReceberOld()
private TabelaPG, nr,CHV_EMPRESA,CHV_TPDOCTO,CHV_NUMERO,CHV_SERIE,CHV_SEQ, regduplic, titok, vrtit,
        empant,contaant,dtpgant,bandant,prodant,vrtotar,NLOTE,seq, nlotesc

Aguarde("Aguarde, criando lote de baixas")

Sort "Concctr" On "Empresa","Conta","DataPagamento","Bandeira","CodigoProduto","DataVenda","Numero do Documento","Serie do Documento"
clearall

NR=nrecords("Concctr")

empant  ="??"
contaant="??"
dtpgant =blankdate()
bandant ="??"
prodant ="??"
nlotesc =0

View "\\sistemas\\ctacor\\bxautc"
View "\\sistemas\\ctacor\\bxautir"
View "\\sistemas\\ctarec\\duplic"
CoEdit "Concctr"
scan

  Barra(NR, RecNo())
  Aguarde("Aguarde, criando lote de baixas 2/2"+BARRA_STRING)

  if [Ocorrencia1]<>"2-PARAMETROS OK"
     then loop
  endif   
  if [Ocorrencia2]<>"PAGAMENTO CONCILIADO"
     then loop
  endif

  copytoarray regconcctr

  CHV_EMPRESA =regconcctr["Codigo da Empresa"  ]
  CHV_CDDOCTO =regconcctr["Codigo do Documento"]
  CHV_NUMERO  =regconcctr["Numero do Documento"]
  CHV_SERIE   =regconcctr["Serie do Documento" ]
  CHV_SEQ     =regconcctr["Sequencia"          ]

  titok=true
  Moveto "\\Sistemas\\Ctarec\\Duplic"
  Moveto [Codigo da Empresa]
  Locate IndexOrder by "Inddup30" CHV_EMPRESA,CHV_CDDOCTO,CHV_NUMERO,CHV_SEQ
  If not RetVal
     then
          titok=false

          sm=   "Contas a Receber, lan‡amento ?????? - "
          sm=sm+"Docto "+Format("W04,AL",CHV_EMPRESA)+"/"+
                         Format("W04,AL",CHV_CDDOCTO)+"/"+
                         Format("W10,AL",CHV_NUMERO) +", "

          Grava_Erro(sm+"documento de venda nÆo encontrado !")
      
     else 
          copytoarray regduplic

          NLANC=regduplic["Numero do Lancamento"]

          sm=   "Contas a Receber, lan‡amento "+NLANC+ " - "
          sm=sm+"Docto "+Format("W04,AL",[Codigo da Empresa  ])+"/"+
                         Format("W04,AL",[Codigo do Documento])+"/"+
                         Format("W10,AL",[Numero do Documento])+", "

          if [Codigo do Destinatario ]<>regconcctr["PessoaCartao"          ]   
             Then titok=false
                  Grava_Erro(sm+"titulo pessoa concilia‡Æo divergente ! "+[Codigo do Destinatario]+"<>"+regconcctr["PessoaCartao"])
          EndIf
          if [Tipo do Pagamento      ]<>regconcctr["FormadePagamento"      ] 
             Then titok=false
                  Grava_Erro(sm+"titulo forma pagto concilia‡Æo divergente ! "+[Tipo do Pagamento]+"<>"+regconcctr["FormadePagamento"])
          EndIf
          if [Data de Vencimento     ]<>regconcctr["DataVencimento"        ] 
             Then titok=false
                  Grava_Erro(sm+"titulo vencimento concilia‡Æo divergente ! "+format("D13",[Data de Vencimento])+"<>"+format("D13",regconcctr["DataVencimento"]))
          EndIf
          vrtit=regconcctr["ValorVenda"]-Ndecimal(((regconcctr["ValorVenda"]*regconcctr["TaxaDeComissao"])/100),2)
          if format("W12.2,EIC",[Valor do Documento])<>format("W12.2,EIC",vrtit)
             Then titok=false
                  Grava_Erro(sm+"titulo valor concilia‡Æo divergente ! "+ltrim(format("W12.2,EIC",[Valor do Documento]))+"<>"+ltrim(format("W12.2,EIC",vrtit)))
          EndIf
          if [Saldo do Documento     ]<[Valor do Documento]
             Then titok=false 
                  Grava_Erro(sm+"titulo j  baixado !")
          EndIf
  endif

  moveto "Concctr"
  if not titok
     Then loop
  EndIf

  if regconcctr["Empresa"      ]<>empant   or
     regconcctr["Conta"        ]<>contaant or
     regconcctr["DataPagamento"]<>dtpgant  or
     regconcctr["Bandeira"     ]<>bandant  or
     regconcctr["CodigoProduto"]<>prodant  
     then

          if empant<>"??"
             then
                  moveto "\\sistemas\\ctacor\\bxautc"
                  [Total_Receber]=vrtotar
                  unlockrecord
          endif   

          empant   =regconcctr["Empresa"      ]
          contaant =regconcctr["Conta"        ]
          dtpgant  =regconcctr["DataPagamento"]
          bandant  =regconcctr["Bandeira"     ]
          prodant  =regconcctr["CodigoProduto"]  
          vrtotar  =0
          seq      =0
     
          moveto "\\sistemas\\ctacor\\bxautc"
          While True
            End
            Moveto [Numero do Lote]
            If Numero_Lancamento("Interno","Locked_Down")
               Then NLOTE = PROXLANCTO_NLANC
                    Release Vars PROXLANCTO_NLANC
                    quitloop
            EndIf    
          EndWhile
          
         ;end down
         ;while true
         ;  Moveto [Numero do Lote]
         ;  End
         ;  If Numero_Lancamento("Interno","")
         ;     Then NLOTE = PROXLANCTO_NLANC
         ;          Release Vars PROXLANCTO_NLANC
         ;  EndIf
         ;  Locate NLOTE
         ;  If Not Retval
         ;     Then End Down
         ;          [Numero do Lote       ]=NLOTE
         ;          If Not IsLockRecord()
         ;             Then QuitLoop
         ;             Else Del
         ;          EndIf
         ;  EndIf
         ;endwhile
         
          [Data da Baixa        ]=regconcctr["DataPagamento"]
          [Data Base            ]=regconcctr["DataPagamento"]
          [Codigo da Conta      ]=regconcctr["Conta"]
          [Codigo               ]=regconcctr["PessoaCartao"]
          [Codigo do Cobrador   ]="" 
          [Descricao do Cobrador]="" 
          [TipoAplicacaoDeJuros ]="I"
          [Taxa de Juros        ]=0
          [Tipo Taxa de Juros   ]=""
          [NDias Taxa de Juros  ]=1
          [Situacao             ]="EM ABERTO"
          [Observacoes          ]="Lote de Baixas por Concilia‡Æo Cartäes D‚bito/Cr‚dito"
          Controle_Dia()
          
          nlotesc=nlotesc+1
  endif

  seq=seq+1
  
  moveto "\\sistemas\\ctacor\\bxautir"
  end
  down
  [Numero do Lote         ]=NLOTE
  [Sequencia              ]=seq  

  [Numero do Lancamento   ]=[\Sistemas\Ctarec\Duplic->Numero do Lancamento  ]
  [Codigo da Empresa      ]=[\Sistemas\Ctarec\Duplic->Codigo da Empresa     ]
  [Codigo do Documento    ]=[\Sistemas\Ctarec\Duplic->Codigo do Documento   ]
  [Tipo do Documento      ]=[\Sistemas\Ctarec\Duplic->Tipo do Documento     ]
  [Numero do Documento    ]=[\Sistemas\Ctarec\Duplic->Numero do Documento   ]
  [Data de Emissao        ]=[\Sistemas\Ctarec\Duplic->Data de Emissao       ]
  [Data de Vencimento     ]=[\Sistemas\Ctarec\Duplic->Data de Vencimento    ]
  [Codigo                 ]=[\Sistemas\Ctarec\Duplic->Codigo                ]
  [Razao Social           ]=[\Sistemas\Ctarec\Duplic->Razao Social          ]
  [Tipo do Pagamento      ]=[\Sistemas\Ctarec\Duplic->Tipo do Pagamento     ]
  [Valor do Documento     ]=[\Sistemas\Ctarec\Duplic->Valor do Documento    ]
  [Saldo do Documento     ]=[\Sistemas\Ctarec\Duplic->Saldo do Documento    ]

  [Data Limite Desconto   ]=blankdate()
  [Valor do Desconto      ]=blanknum()
  [Multa                  ]=blanknum()
  [Taxa de Juros          ]=[\sistemas\ctacor\bxautc->Taxa de Juros         ]
  [Tipo Taxa de Juros     ]=[\sistemas\ctacor\bxautc->Tipo Taxa de Juros    ]
  [NDias Taxa de Juros    ]=[\sistemas\ctacor\bxautc->NDias Taxa de Juros   ]
  [Valor de Juros         ]=blanknum()
  
  [Bx Tipo da Baixa       ]="NORMAL"
  [Bx NDias               ]=[NDias Taxa de Juros   ]
  [Bx Valor do Recebimento]=[Saldo do Documento    ]
  [Bx Valor do Juros      ]=blanknum()
  [Bx Valor do Desconto   ]=blanknum()
  [Bx Valor Juros_Desconto]=blanknum()
  [Bx Forma da Baixa      ]="TOTAL"
  unlockrecord

  vrtotar  =vrtotar+[Saldo do Documento    ]

  moveto "Concctr"
endscan

moveto "\\sistemas\\ctacor\\bxautc"
[Total_Receber]=vrtotar
unlockrecord

do_it!
ClearAll

if nlotesc>0
   then Mensagem(strval(nlotesc)+" lotes de baixas foram criados, verificar !")
   Else Mensagem("NÆo teve cria‡Æo de lote de baixas !// //Titulos nÆo encontados !")
endif

EndProc

;*******************************************************************************
;* Rotina grava erros                                                          *
;*******************************************************************************
Proc Grava_Erro(erro)
Private erro

If Not ENCONTRADO_INCONSISTENCIA
   Then FileWrite        ARQ_ERRO From  "\027x0\015"+
                                        "** Relatorio Concilia‡Æo CartÆo/Atualiza‡Æo/Baixas, arquivo: "+
                                        ARQRETORNO+" **\n\n"
EndIf   
FileWrite Append ARQ_ERRO From  erro+"\n"

ENCONTRADO_INCONSISTENCIA=True
EndProc

;*******************************************************************************
;* ROTINA                                                                      *
;*******************************************************************************
Proc AtualizaVendas()
private regconcctr, nr,CHV_EMPRESA,CHV_TPDOCTO,CHV_NUMERO,CHV_SERIE,CHV_SEQ, regduplic, regnotav

NR=nrecords("Concctr")

View "\\sistemas\\cadastro\\empresas" Imagerights ReadOnly
View "\\sistemas\\Cadastro\\Destinat" Imagerights ReadOnly
View "\\sistemas\\Cadastro\\Represen" Imagerights ReadOnly
View "\\sistemas\\Cadastro\\Cobrador" Imagerights ReadOnly

View "\\sistemas\\Ctacor\\Conta"      Imagerights ReadOnly
View "\\sistemas\\Ctacor\\PlContas"   Imagerights ReadOnly
View "\\sistemas\\Ctacor\\CCusto"     Imagerights ReadOnly

View "\\sistemas\\vendas\\notav"
View "\\sistemas\\ctarec\\duplic"
CoEdit "Concctr"
scan

  Barra(NR, RecNo())
  Aguarde("Aguarde, atualizando vendas "+BARRA_STRING)

  if [Ocorrencia1]<>"2-PARAMETROS OK"
     then loop
  endif   
  if [Ocorrencia2]<>"VENDA CONCILIADA"
     then loop
  endif

  copytoarray regconcctr

  CHV_EMPRESA =regconcctr["Codigo da Empresa"  ]
  CHV_CDDOCTO =regconcctr["Codigo do Documento"]
  CHV_NUMERO  =regconcctr["Numero do Documento"]
  CHV_SERIE   =regconcctr["Serie do Documento" ]
  CHV_SEQ     =regconcctr["Sequencia"          ]

  Moveto "\\Sistemas\\Ctarec\\Duplic"
  Moveto [Codigo da Empresa]
  Locate IndexOrder by "Inddup30" CHV_EMPRESA,CHV_CDDOCTO,CHV_NUMERO,CHV_SEQ
  If RetVal
     Then While [Codigo da Empresa   ]=CHV_EMPRESA and
                [Tipo Docto Gerador  ]=CHV_CDDOCTO and
                [Numero Docto Gerador]=CHV_NUMERO  and
                [Sequencia Gerador   ]=CHV_SEQ                   

            If Format("W11.2,EIC",[Saldo do Documento])<>Format("W11.2,EIC",[Valor do Documento])
               Then 
                    quitloop
            EndIf

            copytoarray regduplic
            
            [Codigo da Conta        ]=regconcctr["Conta"                 ]
            [Codigo da Empresa      ]=regconcctr["Empresa"               ]
            [Codigo do Destinatario ]=regconcctr["PessoaCartao"          ]
            [Tipo do Pagamento      ]=regconcctr["FormadePagamento"      ]
            [Data de Vencimento     ]=regconcctr["DataVencimento"        ]
            [Valor do Documento     ]=regconcctr["ValorVenda"]-Ndecimal(((regconcctr["ValorVenda"]*regconcctr["TaxaDeComissao"])/100),2)
            [Saldo do Documento     ]=[Valor do Documento]

            [Codigo do Representante]=regduplic["Codigo do Representante"]
            [Codigo do Cobrador     ]=regduplic["Codigo do Cobrador"     ]
            [Codigo Plano_Conta     ]=regduplic["Codigo Plano_Conta"     ]
            [Tipo do Lancamento     ]="G"
            
            unlockrecord      
            quitloop
         endwhile
  endif

  Moveto "\\Sistemas\\Vendas\\Notav"
  Moveto [Codigo da Empresa]
  Locate CHV_EMPRESA,CHV_NUMERO,CHV_SERIE,CHV_SEQ
  If RetVal
     Then While [Codigo da Empresa   ]=CHV_EMPRESA and
                [Numero do Documento ]=CHV_NUMERO  and
                [Serie do Documento  ]=CHV_SERIE   and
                [Sequencia           ]=CHV_SEQ                   
     
            [Forma de Pagamento     ]=regconcctr["FormadePagamento"      ]
            [Data                   ]=regconcctr["DataVencimento"        ]
            [Valor                  ]=regconcctr["ValorVenda"            ]
            [Nome do Cartao         ]=regconcctr["NomedoCartao"          ]

            unlockrecord      
            quitloop
         endwhile
  endif

  moveto "Concctr"
endscan
do_it!
ClearAll

EndProc

;*******************************************************************************
;* ROTINA                                                                      *
;*******************************************************************************
Proc GravaDadosRetorno(tipo)
private tipo, regconcctr, nr

NR=nrecords("Concctr")

View "Concct"
CoEdit "Concctr"
scan

  Barra(NR, RecNo())
  Aguarde("Aguarde, atualizando concilia‡Æo "+BARRA_STRING)

  if [Ocorrencia1]<>"2-PARAMETROS OK"
     then loop
  endif   
  if [Ocorrencia2]<>"VENDA CONCILIADA" and
     [Ocorrencia2]<>"PAGAMENTO CONCILIADO"
     then loop
  endif

  copytoarray regconcctr

  moveto "Concct"
  moveto [Operadora]
  locate regconcctr["Operadora"],regconcctr["Bandeira"],regconcctr["CodigoProduto"],
         regconcctr["CodigoAutorizacao"],regconcctr["NumeroUnico RO"],regconcctr["Parcela"]
  if not retval
     then end
          down 
          [Operadora            ]=regconcctr["Operadora"          ]
          [Bandeira             ]=regconcctr["Bandeira"           ]
          [CodigoProduto        ]=regconcctr["CodigoProduto"      ]
          [CodigoAutorizacao    ]=regconcctr["CodigoAutorizacao"  ]
          [NumeroUnico RO       ]=regconcctr["NumeroUnico RO"     ]
          [Parcela              ]=regconcctr["Parcela"            ]
  endif   
  
  [BandeiraNome         ]=regconcctr["BandeiraNome"       ]
  [CodigoProdutoNome    ]=regconcctr["CodigoProdutoNome"  ]

  [Estabelecimento      ]=regconcctr["Estabelecimento"    ]
  [Banco                ]=regconcctr["Banco"              ]
  [Agencia              ]=regconcctr["Agencia"            ]
  [ContaCorrente        ]=regconcctr["ContaCorrente"      ]

  [DataVenda            ]=regconcctr["DataVenda"          ]
  [ValorVenda           ]=regconcctr["ValorVenda"         ]
  [DataApresentacao     ]=regconcctr["DataApresentacao"   ]
  [DataVencimento       ]=regconcctr["DataVencimento"     ]
  [TaxaDeComissao       ]=regconcctr["TaxaDeComissao"     ]

  [FormadePagamento     ]=regconcctr["FormadePagamento"   ]
  [NomedoCartao         ]=regconcctr["NomedoCartao"       ]
  [PessoaCartao         ]=regconcctr["PessoaCartao"       ]

  if isblank([DataConciliacao])
     then
          [DataConciliacao      ]=today()
          [ConciliacaoData      ]=today()
          [ConciliacaoHora      ]=time()
          [ConciliacaoUsuario   ]=sys_chapa_usuario
          [ConciliacaoNomeArquivo]=regconcctr["NomeArquivoProcessado"]
  endif

  [Codigo da Empresa    ]=regconcctr["Codigo da Empresa"  ]
  [Numero do Documento  ]=regconcctr["Numero do Documento"]
  [Serie do Documento   ]=regconcctr["Serie do Documento" ]
  [Codigo do Documento  ]=regconcctr["Codigo do Documento"]
  [Tipo do Documento    ]=regconcctr["Tipo do Documento"  ]
  [Data de Emissao      ]=regconcctr["Data de Emissao"    ]
  [Razao Social         ]=regconcctr["Razao Social"       ]
  [Valor Nota Fiscal    ]=regconcctr["Valor Nota Fiscal"  ]
  [Sequencia            ]=regconcctr["Sequencia"          ]
  [Data                 ]=regconcctr["Data"               ]
  [Valor                ]=regconcctr["Valor"              ]

  if tipo="04-PAGAMENTOS"
     then
          if isblank([DataPagamento])
             then
                  [DataPagamento       ]=regconcctr["DataPagamento"      ]
                  [PagamentoData       ]=today()
                  [PagamentoHora       ]=time()
                  [PagamentoUsuario    ]=sys_chapa_usuario
                  [PagamentoNomeArquivo]=regconcctr["NomeArquivoProcessado"]
          endif
  endif
  unlockrecord

  moveto "Concctr"
endscan
do_it!
ClearAll

if tipo="03-VENDAS" 
   then AtualizaVendas()
endif

if tipo="04-PAGAMENTOS"
   then 
        MSG=" //"
        MSG=MSG+"Arquivo [ "+ARQRETORNO+" ] "+tipoextrato+" //"
        MSG=MSG+"Deseja gerar lote de baixas no Conta a Receber  referente  aos  pagamentos  conciliados ?"
        if Confgeral(MSG)
           then GeraBaixasReceber()

                 if ENCONTRADO_INCONSISTENCIA
                    then
                         MSG=" //"
                         MSG=MSG+"Relat¢rio de ocorrˆncia nas baixas da concilia‡Æo !// //"
                         MSG=MSG+"Verificar o relat¢rio se houve inconsistˆncias !"
                         mensagem(MSG)
                 
                         DISPOSITIVO_OPCAO="V"
                         PDFZEBRA = False
                         
                         ImpriArq(ARQ_ERRO)
                 endif
        endif   
endif        

endproc

;*******************************************************************************
;* ROTINA                                                                      *
;*******************************************************************************
Proc selecionav()

If IsTable("\\Sistemas\\vendas\\"+Dir_Trab+"Notac") and
   IsTable("\\Sistemas\\vendas\\"+Dir_Trab+"Notav")
   Then 
        {Ask} typeIn TabelaDT Enter
        moveto [DataVenda] example "dt"

        {Ask} TypeIn "\\Sistemas\\vendas\\"+Dir_Trab+"NotaC" enter 
        moveto [Codigo da Empresa      ] Check example "cemp" 
        moveto [Numero do Documento    ] Check example "ndoc"
        moveto [Serie do Documento     ] Check example "sdoc"
        moveto [Nome Fantasia Empresa  ] check 
        moveto [Codigo do Documento    ] check 
        moveto [Tipo do Documento      ] check 
        moveto [Data de Emissao        ] check example "dt"
        moveto [Razao Social           ] check 
        moveto [Valor Nota Fiscal      ] check 
        moveto [Tipo Movimento Estoque ] typeIn "S"
        moveto [Descricao da Destinacao] typeIn "..VEND.."
        moveto [Situacao               ] typeIn "not C"
        {Ask} TypeIn "\\Sistemas\\vendas\\"+Dir_Trab+"NotaV" enter
        moveto [Codigo da Empresa      ] example "cemp" 
        moveto [Numero do Documento    ] example "ndoc"
        moveto [Serie do Documento     ] example "sdoc"
        moveto [Sequencia              ] Check
        moveto [Data                   ] Check
        moveto [Valor                  ] Check
        moveto [Forma de Pagamento     ] Check typeIn "CT or CD or CL"
        switch
          case tipoextrato="03-VENDAS"     : moveto [Numero do Cartao       ] Check typein "as CodigoAutorizacao" 
          case tipoextrato="04-PAGAMENTOS" : moveto [Numero do Cartao       ] Check typein "not blank, as CodigoAutorizacao"
        endswitch
        moveto [Nome do Cartao         ] Check 
        do_it!
        ClearAll
endif

endproc

;*******************************************************************************
;* ROTINA                                                                      *
;*******************************************************************************
Proc conciliarvendas()
private processar, regconcctr, regconcct

NR=nrecords("Concctr")

View "Concct"
Coedit "Concctr"
scan

  Barra(NR, RecNo())
  Aguarde("Aguarde, conciliando vendas 1/2 "+BARRA_STRING)

  copytoarray regconcctr

  moveto "Concct"
  moveto [Operadora]
  locate regconcctr["Operadora"],regconcctr["Bandeira"],regconcctr["CodigoProduto"],
         regconcctr["CodigoAutorizacao"],regconcctr["NumeroUnico RO"],regconcctr["Parcela"]
  if retval
     then
          copytoarray regconcct

          moveto "Concctr"
          if tipoextrato="03-VENDAS"
             then 
                  if not isblank(regconcct["DataConciliacao"])
                     then [Ocorrencia2        ]="VENDAS CONCILIADA/ATUALIZADA"
                          [DataConciliacao    ]=regconcct["DataConciliacao"    ]
                  endif
          endif   
          if tipoextrato="04-PAGAMENTOS"
             then
                  if not isblank(regconcct["DataConciliacao"])
                     then [Ocorrencia2        ]="VENDAS CONCILIADA/ATUALIZADA"
                          [DataConciliacao    ]=regconcct["DataConciliacao"    ]
                  endif

                  if not isblank(regconcct["DataPagamento"])
                     then [Ocorrencia2        ]="PAGTOS CONCILIADO/ATUALIZADO"
                          [DataPagamento      ]=regconcct["DataPagamento"    ]
                  endif
          endif   
          [Codigo da Empresa  ]=regconcct["Codigo da Empresa"  ]
          [Numero do Documento]=regconcct["Numero do Documento"]
          [Serie do Documento ]=regconcct["Serie do Documento" ]
          [Codigo do Documento]=regconcct["Codigo do Documento"]
          [Tipo do Documento  ]=regconcct["Tipo do Documento"  ]
          [Data de Emissao    ]=regconcct["Data de Emissao"    ]
          [Razao Social       ]=regconcct["Razao Social"       ]
          [Valor Nota Fiscal  ]=regconcct["Valor Nota Fiscal"  ]
          [Sequencia          ]=regconcct["Sequencia"          ]
          [Data               ]=regconcct["Data"               ]
          [Valor              ]=regconcct["Valor"              ]
          [Forma de Pagamento ]=regconcct["FormadePagamento"   ]
          [Nome do Cartao     ]=regconcct["NomedoCartao"       ]
  endif

  moveto "Concctr"
endscan
do_it!
ClearAll

LimpAguarde()

;-------------------------------------------------------------------------------

{Ask} {Concctr}
moveto [DataVenda] check
do_it!
clearAll

TabelaDT=Adiciona_Indice_Temp("DataVenda")

view TabelaDT
moveto [DataVenda]
VSDGDTINI=[DataVenda]
end
VSDGDTFIM=[DataVenda]
clearall

AGUARDE("Aguarde, Processando Dados")
TabelaNotas=Cria_Temp(PrivDir())

Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
While Novo_Dir_Trab()
  If IsTable("Answer")     Then Delete "Answer" EndIf
  Selecionav()
  If Not IsTable("Answer") Then Loop EndIf
  If IsTable(TabelaNotas)
     Then    Add "Answer" TabelaNotas
     Else Rename "Answer" TabelaNotas
  EndIf
EndWhile

delete tabeladt

Adiciona_Indice(TabelaNotas,"CodigoAutorizacao,Codigo da Empresa,Numero do Documento,Serie do Documento,Sequencia")

NR=nrecords(TabelaNotas)

View "Concct"
View "Concctr"
CoEdit TabelaNotas
scan
  copytoarray regnotas

  Barra(NR, RecNo())
  Aguarde("Aguarde, conciliando vendas 2/2 "+BARRA_STRING)

  processar=true
  notaok   =false
  if not isblank(regnotas["CodigoAutorizacao"])
     then 
          moveto "Concctr"
          moveto [CodigoAutorizacao]
          locate regnotas["CodigoAutorizacao"]
          if not retval 
             then 
                  if tipoextrato="04-PAGAMENTOS"
                     then processar=false
                  endif   
             else  
                  while true
                    moveto "Concctr"

                    switch
                      case tipoextrato="03-VENDAS"     : 

                        if not isblank([DataConciliacao])
                           then
                                processar=false
                                quitloop
                        endif

                        if [Ocorrencia2]="CARTAO SEM VENDA" and [TipoTransacao]="01-VENDA"
                           then 
                                switch
                                  case [PessoaCartao    ]=""                              : [Ocorrencia2]="PARAMETRO PESSOA CARTAO"
    
                                  otherwise                                               : [Ocorrencia2]="VENDA CONCILIADA"
                                    switch
                                      case [NomedoCartao    ]<>regnotas["Nome do Cartao"    ]                : [Ocorrencia3]="CARTAO" 
                                      case [FormadePagamento]<>regnotas["Forma de Pagamento"]                : [Ocorrencia3]="FPAGTO" 
                                      case format("W10,2",[ValorVenda])<>format("W10,2",regnotas["Valor"])   : [Ocorrencia3]="VALOR"  
                                    endswitch
    
                                endswitch 
                                notaok=true
                                quitloop
                        endif
                    
                      case tipoextrato="04-PAGAMENTOS" :
                      
                        if not isblank([DataConciliacao])
                           then
                                processar=false
                                quitloop
                           else 
                                switch
                                  case [PessoaCartao    ]=""                              : [Ocorrencia2]="PARAMETRO PESSOA CARTAO"
    
                                  otherwise                                               : [Ocorrencia2]="VENDA CONCILIADA"
                                    switch
                                      case [NomedoCartao    ]<>regnotas["Nome do Cartao"    ]                : [Ocorrencia3]="CARTAO" 
                                      case [FormadePagamento]<>regnotas["Forma de Pagamento"]                : [Ocorrencia3]="FPAGTO" 
                                      case format("W10,2",[ValorVenda])<>format("W10,2",regnotas["Valor"])   : [Ocorrencia3]="VALOR"  
                                    endswitch
    
                                endswitch 
                                notaok=true
                                quitloop
                        endif
                      
                    endswitch
                    
                    moveto "Concctr"
                    skip
                    if eot() then quitloop endif
                    locate next regnotas["CodigoAutorizacao"]
                    if not retval then quitloop endif
                  endwhile
          endif   
     else
          if tipoextrato="04-PAGAMENTOS"
             then processar=false
          endif   
  endif   

  if not processar
     then moveto TabelaNotas
          loop
  endif   
  
  moveto "Concctr"
  if not notaok
     then   
          end 
          down
          [Empresa              ]=regnotas["Codigo da Empresa"    ]
          [Nome Fantasia Empresa]=regnotas["Nome Fantasia Empresa"]
          [CodigoAutorizacao    ]=regnotas["CodigoAutorizacao"    ]
          [BandeiraNome         ]=regnotas["Nome do Cartao"       ]
          [Ocorrencia1          ]="0-VENDAS EFETUADAS"
          [Ocorrencia2          ]="VENDAS NAO CONCILIADAS"
  endif        
        
  [Codigo da Empresa  ]=regnotas["Codigo da Empresa"  ]
  [Numero do Documento]=regnotas["Numero do Documento"]
  [Serie do Documento ]=regnotas["Serie do Documento" ]
  [Codigo do Documento]=regnotas["Codigo do Documento"]
  [Tipo do Documento  ]=regnotas["Tipo do Documento"  ]
  [Data de Emissao    ]=regnotas["Data de Emissao"    ]
  [Razao Social       ]=regnotas["Razao Social"       ]
  [Valor Nota Fiscal  ]=regnotas["Valor Nota Fiscal"  ]
  [Sequencia          ]=regnotas["Sequencia"          ]
  [Data               ]=regnotas["Data"               ]
  [Valor              ]=regnotas["Valor"              ]
  [Forma de Pagamento ]=regnotas["Forma de Pagamento" ]
  [Nome do Cartao     ]=regnotas["Nome do Cartao"     ]
  
  moveto TabelaNotas
endscan
do_it!
ClearAll

delete TabelaNotas

LimpAguarde()

EndProc

;*******************************************************************************
;* ROTINA                                                                      *
;*******************************************************************************
Proc conciliarpagtos()
private regconcctr, regconcct

NR=nrecords("Concctr")

View "Concct"
Coedit "Concctr"
scan

  Barra(NR, RecNo())
  Aguarde("Aguarde, conciliando pagamentos "+BARRA_STRING)

  if [StatusPagamento]<>"01"
     then loop
  endif    

  copytoarray regconcctr

  moveto "Concct"
  moveto [Operadora]
  locate regconcctr["Operadora"],regconcctr["Bandeira"],regconcctr["CodigoProduto"],
         regconcctr["CodigoAutorizacao"],regconcctr["NumeroUnico RO"],regconcctr["Parcela"]
  if retval
     then
          copytoarray regconcct

          moveto "Concctr"
          if not isblank(regconcct["DataPagamento"])
             then 
                  [Ocorrencia2  ]="PAGTOS CONCILIADO/ATUALIZADO"
                  [DataPagamento]=regconcct["DataPagamento"  ]
             else  
                  [Ocorrencia2  ]="PAGAMENTO CONCILIADO"
          endif
          [DataConciliacao    ]=regconcct["DataConciliacao"    ]

          [Codigo da Empresa  ]=regconcct["Codigo da Empresa"  ]
          [Numero do Documento]=regconcct["Numero do Documento"]
          [Serie do Documento ]=regconcct["Serie do Documento" ]
          [Codigo do Documento]=regconcct["Codigo do Documento"]
          [Tipo do Documento  ]=regconcct["Tipo do Documento"  ]
          [Data de Emissao    ]=regconcct["Data de Emissao"    ]
          [Razao Social       ]=regconcct["Razao Social"       ]
          [Valor Nota Fiscal  ]=regconcct["Valor Nota Fiscal"  ]
          [Sequencia          ]=regconcct["Sequencia"          ]
          [Data               ]=regconcct["Data"               ]
          [Valor              ]=regconcct["Valor"              ]
          [Forma de Pagamento ]=regconcct["FormadePagamento"   ]
          [Nome do Cartao     ]=regconcct["NomedoCartao"       ]
  endif

  moveto "Concctr"
endscan
do_it!
ClearAll

LimpAguarde()

EndProc


;*******************************************************************************
;* ROTINA                                                                      *
;*******************************************************************************
Proc AlterarDocumentos()
private ntentativas,NR,finalizaedicao

CopyForm "Concctr" "F" "Answer" "F"

Edit "Answer"
SetHighLight Current Record 23 Field 31
{Image} {KeepSet}
Do_It!

View "\\Sistemas\\Vendas\\NotaV"
CoEdit "Answer"
PickForm "F"

finalizaedicao=false

Home
Moveto [CodigoAutorizacao]

While True

  Moveto [CodigoAutorizacao]
  End
  Down

  SetaCorRegistro("Editar")

  While True

    MSGCAMPO=""
    TECLA=" F3=Retornar  F8=Atualizar "
    AguardaTeclasPadrao()
  
    Switch
        Case RetVal=-33 : SemFuncoes()
        Case RetVal=-94 : MsgTeclasPadrao()
        Case RetVal="F7" Or RetVal="UP" Or RetVal="PGUP" Or RetVal="HOME":
             Del
             While True
               PAGINA("Answer","MR")
               
               Switch
                 Case EDITAR="S":
                   EditarAutorizacao()
                 Case EXCLUIR="S":
                   fastmsg("Fun‡Æo inativa !") 
                 OtherWise: QuitLoop
               EndSwitch
               PickForm "F"
               
               SetaPosForm()
             EndWhile
             QuitLoop
        Case RetVal="F3":
             Del
             finalizaedicao=true
             quitloop
        Case RetVal="F8":
             if not Confgeral("Confirma atualizar novos dados ?")
                then loop
             endif   
             Del

             LimpaRodape(0)

             FormKey
             NR = NRecords("Answer")
             moveto "Answer"     
             scan

               Barra(NR, RecNo())
               Aguarde("Aguarde, atualizando autoriza‡äes "+BARRA_STRING)

               if not isblank([Answer->CodigoAutorizacao])
                  then                 
                       moveto "\\sistemas\\vendas\\notav"
                       moveto [Codigo da Empresa]
                       locate [Answer->Codigo da Empresa],[Answer->Numero do Documento],[Answer->Serie do Documento],[Answer->Sequencia]
                       if retval
                          then 
                               while true
                                 if not islockrecord()
                                    then [Numero do Cartao]=[Answer->CodigoAutorizacao]
                                         unlockrecord
                                         quitloop
                                 endif   
                               endwhile
                       endif
                       
                       moveto "Answer"
               endif     
             endscan
             LimpaRodape(0)
        
             finalizaedicao=true
             quitloop

        Case Retval="ESC":
             fastmsg("Para sair use tecla F3!")
        Case Retval="ENTER":
             fastmsg("InclusÆo inativa !")
        EndSwitch
  EndWhile

  if finalizaedicao
     then quitloop
  endif   

endwhile
Do_it!
ClearAll

echo Normal
echo Off

LimpaRodape(0)

EndProc

;*******************************************************************************
;* ROTINA                                                                      *
;*******************************************************************************
Proc EditarAutorizacao()

Moveto [CodigoAutorizacao]

While True

  TECLA=" Esc=Retornar  "

  MSGCAMPO=Field()
                                     
  Prompt TECLA

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

  Switch
  Case Retval="FIELDVIEW" or Retval="F35":
    EDITFIELD()
  Case Retval="ESC":
    Switch
    Case Field()="CodigoAutorizacao":
      If QuerDesfazer("")
         Then Undo
              QuitLoop
      EndIf
    EndSwitch
  Case Retval="ENTER":
    Switch
    Case Field()="CodigoAutorizacao":
     Quitloop
        
    EndSwitch
  EndSwitch
EndWhile

EndProc

;*******************************************************************************
;* ROTINA                                                                      *
;*******************************************************************************
Proc checavendas()

if tipoextrato="03-VENDAS" 
   then  
        {Ask} {Concctr} Check
        moveto [Ocorrencia1      ] typein "\"0-VENDAS EFETUADAS\""   
        moveto [Ocorrencia2      ] typein "\"VENDAS NAO CONCILIADAS\""   
        do_it!
        ClearAll
        If Not IsEmpty("Answer")
           then
                MSG=" //"
                MSG=MSG+"Arquivo [ "+ARQRETORNO+" ] "+tipoextrato+" // //"
                MSG=MSG+"Existem "+ltrim(format("W5,EIC",nrecords("Answer")))+" transa‡äes VENDAS NAO CONCILIADAS !// //"
                MSG=MSG+"Altere a atualize a venda para nova concilia‡Æo !// //"
                MSG=MSG+"Somente vendas em aberto serÆo corrigidas !"
                Mensagem(MSG)

                AlterarDocumentos()
                ;return false
        endif
endif

{Ask} {Concctr}
moveto [CodigoAutorizacao] check   
moveto [Ocorrencia1      ] check typein "\"2-PARAMETROS OK\""   
moveto [Ocorrencia2      ] check typein "\"VENDA CONCILIADA\""   
do_it!
ClearAll
If Not IsEmpty("Answer")
   then
        MSG=" //"
        MSG=MSG+"Arquivo [ "+ARQRETORNO+" ] "+tipoextrato+" // //"
        MSG=MSG+"Existem "+ltrim(format("W5,EIC",nrecords("Answer")))+" transa‡äes VENDA CONCILIADA !// //"
        MSG=MSG+"Deseja atualizar o sistema com estas concilia‡äes ?"
        if Confgeral(MSG)
           then 
                gravadadosretorno("03-VENDAS")

                if tipoextrato="04-PAGAMENTOS" 
                   then return true
                endif

                MSG=" //"
                MSG=MSG+"Arquivo [ "+ARQRETORNO+" ] "+tipoextrato+" // //"
                MSG=MSG+"Deseja efetivar este arquivo analisado como sem pendˆncias de concilia‡Æo ?"
                if Confgeral(MSG)
                   then
                        FileWrite        PrivDir()+"funcao1.txt"  From  "COP|"+VSDGPASTA+ARQRETORNO+"|"+VSDGPASTA+"CONCILIADO\\"+ARQRETORNO+"\n"
                        FileWrite Append PrivDir()+"funcao1.txt"  From  "DELT|"+VSDGPASTA+ARQRETORNO+"\n"
                        ExecVise(PrivDir()+"funcao1.txt")
                        
                        ExcluirArquivoLista()
                        return true
                endif
        endif
        
        return false
endif

if tipoextrato="04-PAGAMENTOS" 
   then return true
endif

{Ask} {Concctr}
moveto [CodigoAutorizacao] check   
moveto [Ocorrencia1      ] check typein "\"2-PARAMETROS OK\""   
moveto [Ocorrencia2      ] check typein "\"VENDAS CONCILIADA/ATUALIZADA\""   
do_it!
ClearAll
If Not IsEmpty("Answer")
   then
        MSG=" //"
        MSG=MSG+"Arquivo [ "+ARQRETORNO+" ] "+tipoextrato+" // //"
        MSG=MSG+"Existem "+ltrim(format("W5,EIC",nrecords("Answer")))+" transa‡äes VENDAS CONCILIADA/ATUALIZADA !// //"
        MSG=MSG+"Deseja efetivar este arquivo analisado como sem pendˆncias de concilia‡Æo ?"
        if Confgeral(MSG)
           then
                gravadadosretorno("03-VENDAS")
                   
                FileWrite        PrivDir()+"funcao1.txt"  From  "COP|"+VSDGPASTA+ARQRETORNO+"|"+VSDGPASTA+"CONCILIADO\\"+ARQRETORNO+"\n"
                FileWrite Append PrivDir()+"funcao1.txt"  From  "DELT|"+VSDGPASTA+ARQRETORNO+"\n"
                ExecVise(PrivDir()+"funcao1.txt")

                ExcluirArquivoLista()
        endif
endif

return true
endproc

;*******************************************************************************
;* ROTINA                                                                      *
;*******************************************************************************
Proc checapagtos()

{Ask} {Concctr}
moveto [CodigoAutorizacao] check   
moveto [Ocorrencia1      ] check typein "\"2-PARAMETROS OK\""   
moveto [Ocorrencia2      ] check typein "\"PAGAMENTO CONCILIADO\""   
do_it!
ClearAll
If Not IsEmpty("Answer")
   then
        MSG=" //"
        MSG=MSG+"Arquivo [ "+ARQRETORNO+" ] "+tipoextrato+" // //"
        MSG=MSG+"Existem "+ltrim(format("W5,EIC",nrecords("Answer")))+" transa‡äes PAGAMENTO CONCILIADO !// //"
        MSG=MSG+"Deseja atualizar o sistema com estas concilia‡äes ?"
        if Confgeral(MSG)
           then 
                gravadadosretorno(tipoextrato)

                MSG=" //"
                MSG=MSG+"Arquivo [ "+ARQRETORNO+" ] "+tipoextrato+" // //"
                MSG=MSG+"Deseja efetivar este arquivo analisado como sem pendˆncias de concilia‡Æo ?"
                if Confgeral(MSG)
                   then
                        FileWrite        PrivDir()+"funcao1.txt"  From  "COP|"+VSDGPASTA+ARQRETORNO+"|"+VSDGPASTA+"CONCILIADO\\"+ARQRETORNO+"\n"
                        FileWrite Append PrivDir()+"funcao1.txt"  From  "DELT|"+VSDGPASTA+ARQRETORNO+"\n"
                        ExecVise(PrivDir()+"funcao1.txt")

                        ExcluirArquivoLista()
                endif
        endif
endif

{Ask} {Concctr}
moveto [CodigoAutorizacao] check   
moveto [Ocorrencia1      ] check typein "\"2-PARAMETROS OK\""   
moveto [Ocorrencia2      ] check typein "\"PAGTOS CONCILIADO/ATUALIZADO\""   
do_it!
ClearAll
If Not IsEmpty("Answer")
   then
        MSG=" //"
        MSG=MSG+"Arquivo [ "+ARQRETORNO+" ] "+tipoextrato+" // //"
        MSG=MSG+"Existem "+ltrim(format("W5,EIC",nrecords("Answer")))+" transa‡äes PAGTOS CONCILIADO/ATUALIZADO !// //"
        MSG=MSG+"Deseja efetivar este arquivo analisado como sem pendˆncias de concilia‡Æo ?"
        if Confgeral(MSG)
           then
                FileWrite        PrivDir()+"funcao1.txt"  From  "COP|"+VSDGPASTA+ARQRETORNO+"|"+VSDGPASTA+"CONCILIADO\\"+ARQRETORNO+"\n"
                FileWrite Append PrivDir()+"funcao1.txt"  From  "DELT|"+VSDGPASTA+ARQRETORNO+"\n"
                ExecVise(PrivDir()+"funcao1.txt")

                ExcluirArquivoLista()
        endif
endif

endproc

;*******************************************************************************
;* Exporta p/ DBF                                                              *
;*******************************************************************************
Proc Converte()
Private CNV_OK,cc,wi,numtotparc

Aguardes("Aguarde, Preparando retorno")

If IsTable("Retorno")
   Then Delete "Retorno"
EndIf

ARQTEMP=Privdir()+"TEMP.TXT"
Deleta_Arquivo(ARQTEMP)
Sleep 1500

FileWrite PrivDir()+"funcop.txt" From "COP|"+VSDGPASTA+ARQRETORNO+"|"+ARQTEMP+"\n" 
ExecVisecf(PrivDir()+"funcop.txt","")
Sleep 1000

If Not IsFile(ARQTEMP)
  Then MSG="N„o foi pos¡vel criar arquivo tempor rio para a tarefa" 
       Mensagem(MSG)
       Return False
EndIf

Copy "Retorno2" "Retorno" Empty("Retorno")
Empty("Concctr")


FileRead ARQTEMP to varinner
Edit "Retorno"
pos=1
While True
  posf=searchFrom("\n",varinner,pos)
  if posf=0 then quitLoop endif
  [Field-1]=substr(varinner,pos,(posf-pos))
  Down
  pos=posf+1
EndWhile
Do_It!
ClearAll
If IsAssigned(varinner) Then release vars varinner  EndIf

NR=nrecords("Retorno")

tipoextrato=""
nuro_ant   ="***"
param_ant  ="***"
       cc  =0

CNV_OK=False
View "\\sistemas\\cadastro\\empresas" Imagerights ReadOnly
View "\\sistemas\\ctacor\\conta"      Imagerights ReadOnly
View "\\sistemas\\vendas\\P_cartao"   Imagerights ReadOnly
View "P_Conc"                         
View "Concctr"
CoEdit "Retorno"
Scan

  Barra(NR, RecNo())
  Aguarde("Aguarde, gerando retorno "+tipoextrato+" "+BARRA_STRING)

  if recno()=1
     then
          If (SubStr([Field-1],01,01)="0" And SubStr([Field-1],43,05)="CIELO" And SubStr([Field-1],48,02)="03") Or
             (SubStr([Field-1],01,01)="0" And SubStr([Field-1],43,05)="CIELO" And SubStr([Field-1],48,02)="04")   
             Then 
                  CNV_OK=True
                  
                  operadora  =rtrim(SubStr([Field-1],43,05))
                  tipoextrato=SubStr([Field-1],48,02)
                  switch
                    case tipoextrato="03" : tipoextrato=tipoextrato+"-VENDAS"
                    case tipoextrato="04" : tipoextrato=tipoextrato+"-PAGAMENTOS"
                    case tipoextrato="06" : tipoextrato=tipoextrato+"-ANTECIPACAO DE RECEBIVEIS"
                    case tipoextrato="07" : tipoextrato=tipoextrato+"-CESSAO DE RECEBIVEIS"
                    case tipoextrato="08" : tipoextrato=tipoextrato+"-PARCELAS PENDENTES"
                    case tipoextrato="09" : tipoextrato=tipoextrato+"-SALDO EM ABERTO"
                  endswitch
                  dataprocessamento=DateVal(SubStr([Field-1],018,002)+"."+SubStr([Field-1],016,002)+"."+SubStr([Field-1],012,004))
                  periodoinicial   =DateVal(SubStr([Field-1],026,002)+"."+SubStr([Field-1],024,002)+"."+SubStr([Field-1],020,004))
                  periodofinal     =DateVal(SubStr([Field-1],034,002)+"."+SubStr([Field-1],032,002)+"."+SubStr([Field-1],028,004))
                  
             else QuitLoop
          EndIf
  endif   

  switch
    case SubStr([Field-1],01,01)="1":
      nuro=SubStr([Field-1],188,015)

      if nuro<>nuro_ant
         then
              nuro_ant     =nuro

              tipotransacao  =SubStr([Field-1],024,002)
              switch
                case tipotransacao="01" : tipotransacao=tipotransacao+"-VENDA" 
                case tipotransacao="02" : tipotransacao=tipotransacao+"-AJUSTE A CREDITO" 
                case tipotransacao="03" : tipotransacao=tipotransacao+"-AJUSTE A DEBITO" 
                case tipotransacao="04" : tipotransacao=tipotransacao+"-PLANO CIELO" 
                case tipotransacao="05" : tipotransacao=tipotransacao+"-REAGENDAMENTO" 
              endswitch

              codigoproduto=SubStr([Field-1],233,003)
              switch
                case codigoproduto="040" : codigoprodutonome=codigoproduto+"-VISA CREDITO A VISTA" 
                case codigoproduto="041" : codigoprodutonome=codigoproduto+"-VISA ELETRON DEBITO A VISTA" 
                case codigoproduto="043" : codigoprodutonome=codigoproduto+"-VISA PARCELADO LOJA"

                case codigoproduto="010" : codigoprodutonome=codigoproduto+"-MASTERCARD CREDITO A VISTA"
                case codigoproduto="011" : codigoprodutonome=codigoproduto+"-MAESTRO"
                case codigoproduto="012" : codigoprodutonome=codigoproduto+"-MASTERCARD PARCELADO LOJA"
                
                case codigoproduto="071" : codigoprodutonome=codigoproduto+"-ELO DEBITO A VISTA"
                case codigoproduto="072" : codigoprodutonome=codigoproduto+"-ELO PARCELADO LOJA"
                case codigoproduto="098" : codigoprodutonome=codigoproduto+"-CABAL PARCELADO LOJA"
                 
                otherwise                : codigoprodutonome=codigoproduto+"-" 
              endswitch

              bandeira     =SubStr([Field-1],185,003)
              switch
                case bandeira="001" : bandeiranome=bandeira+"-VISA" 
                case bandeira="002" : bandeiranome=bandeira+"-MASTERCARD" 
                case bandeira="006" : bandeiranome=bandeira+"-SOROCRED" 
                case bandeira="007" : bandeiranome=bandeira+"-ELO"
                case bandeira="009" : bandeiranome=bandeira+"-DINERS"
                case bandeira="011" : bandeiranome=bandeira+"-AGIPLAN"
                case bandeira="015" : bandeiranome=bandeira+"-BANESCARD" 
                case bandeira="023" : bandeiranome=bandeira+"-CABAL" 
                case bandeira="029" : bandeiranome=bandeira+"-CREDSYSTEM" 
                case bandeira="035" : bandeiranome=bandeira+"-ESPLANADA" 
                case bandeira="064" : bandeiranome=bandeira+"-CREDZ" 
                otherwise           : bandeiranome=bandeira+"-" 
              endswitch

              estabelecimento=SubStr([Field-1],002,010)
              banco          =SubStr([Field-1],100,004)
              agencia        =rtrim(SubStr([Field-1],104,004))
              ctacorrente    =rtrim(SubStr([Field-1],109,014))
              param          =operadora+estabelecimento+banco+agencia+ctacorrente+bandeira+codigoproduto  

              if param<>param_ant
                 then 
                      param_ant=param
                      paramok  =false
                      
                      moveto "p_conc"
                      moveto [Operadora]
                      locate operadora,estabelecimento,banco,agencia,ctacorrente,bandeira,codigoproduto
                      if retval
                         then   
                              switch
                                case isblank([Codigo da Empresa])   : paramok=false   
                                case isblank([Codigo da Conta  ])   : paramok=false   
                                case isblank([NomedoCartao     ])   : paramok=false   
                                case isblank([FormadePagamento ])   : paramok=false   

                                otherwise                           : paramok=true
                              endswitch
                         else
                              moveto "p_conc"
                              end
                              if not isblank([Operadora]) then down endif
                              [Operadora        ]=operadora             
                              [Estabelecimento  ]=estabelecimento 
                              [Banco            ]=banco           
                              [Agencia          ]=agencia         
                              [ContaCorrente    ]=ctacorrente     
                              [Bandeira         ]=bandeira      
                              [CodigoProduto    ]=codigoproduto
                      endif        
                      if not paramok
                         then 
                              cdempresa   =""  nfempresa=""
                              cdconta     =""  dsconta  =""
                              nomedocartao=""
                              formapagto  =""
                              pessoacartao="" 
                              ocorrencia1 ="1-SEM PARAMETROS CADASTRADO"
                         else 
                              cdempresa   =[Codigo da Empresa ]
                              cdconta     =[Codigo da Conta   ]
                              nomedocartao=[NomedoCartao      ]
                              formapagto  =[FormadePagamento  ] 
                              pessoacartao="" 
                              ocorrencia1="2-PARAMETROS OK"

                              getrecord "\\sistemas\\cadastro\\empresas" cdempresa to regempresas
                              if retval
                                 then nfempresa=regempresas["Nome Fantasia Empresa"]
                                 else nfempresa=""
                              endif   
                              getrecord "\\sistemas\\ctacor\\conta" cdconta to regconta   
                              if retval
                                 then dsconta  =regconta["Descricao da Conta"]
                                 else dsconta  =""
                              endif
                              
                              getrecord "\\sistemas\\vendas\\p_Cartao" cdempresa,nomedocartao to regp_cartao
                              if retval
                                 then pessoacartao=regp_cartao["Codigo Destinat"]
                              endif   
                      endif   
              endif   

              moveto "Retorno"
              switch
                case SubStr([Field-1],019,002)="   " : nparc=1 
                                                       tparc=1
                                                       
                otherwise                            : nparc=numval(SubStr([Field-1],019,002))
                                                       tparc=numval(SubStr([Field-1],022,002))
                                                       
              endswitch

              taxadecomissao =NumVal(SubStr([Field-1],210,004))/100
              statuspagamento=SubStr([Field-1],123,002)

              dataapresentacao =DateVal(SubStr([Field-1],030,002)+"."+SubStr([Field-1],028,002)+".20"+SubStr([Field-1],026,002))
              datavencimento   =DateVal(SubStr([Field-1],036,002)+"."+SubStr([Field-1],034,002)+".20"+SubStr([Field-1],032,002))
              if statuspagamento="01"
                 then datapagamento  =DateVal(SubStr([Field-1],036,002)+"."+SubStr([Field-1],034,002)+".20"+SubStr([Field-1],032,002))
                 else datapagamento  =blankdate()
              endif     

              qtdcvs      =numval(SubStr([Field-1],125,006))
              
         else atualizaparcelas()
      endif  
      
    case SubStr([Field-1],01,01)="2":
      cc=cc+1

      nuro=SubStr([Field-1],189,015)

      vrvend     =NumVal(SubStr([Retorno->Field-1],047,013))/100 ; valor da primeira parcela
      vrrproxparc=NumVal(SubStr([Retorno->Field-1],127,013))/100 ; valor das proximas parcelas

      nparc2=numval(SubStr([Retorno->Field-1],060,002))
      tparc2=numval(SubStr([Retorno->Field-1],062,002))
      if nparc2=0
         then nparc2=1 
              tparc2=1
              vrtot =vrvend
         else vrtot =NumVal(SubStr([Retorno->Field-1],114,013))/100     
      endif    

      numtotparc=tparc2
      if tipoextrato="04-PAGAMENTOS"
         then numtotparc=nparc2
      endif   

      for wi from nparc2 to numtotparc
        moveto "Concctr"
        end 
        if not isblank([NumeroUnico RO   ])
           then down
        endif   
        [NomeArquivoProcessado   ]=ARQRETORNO
        [Operadora               ]=Operadora
        [DataProcessamento       ]=dataprocessamento
        [PeriodoInicial          ]=periodoinicial
        [PeriodoFinal            ]=periodofinal
        [TipoExtrato             ]=tipoextrato

        [Estabelecimento         ]=estabelecimento
        [Banco                   ]=banco
        [Agencia                 ]=agencia
        [ContaCorrente           ]=ctacorrente
        [Bandeira                ]=bandeira
        [BandeiraNome            ]=bandeiranome
        [CodigoProduto           ]=codigoproduto
        [CodigoProdutoNome       ]=codigoprodutonome
        [NomedoCartao            ]=nomedocartao
        [FormadePagamento        ]=formapagto 
        [PessoaCartao            ]=pessoacartao

        [Empresa                 ]=cdempresa
        [Nome Fantasia Empresa   ]=nfempresa
        [Conta                   ]=cdconta
        [Descricao da Conta      ]=dsconta

        [NumeroUnico RO          ]=nuro
        [CodigoAutorizacao       ]=SubStr([Retorno->Field-1],067,006)
        [Parcela                 ]=wi
        [TotalParcela            ]=tparc2
        [DataVenda               ]=DateVal(SubStr([Retorno->Field-1],044,002)+"."+SubStr([Retorno->Field-1],042,002)+"."+SubStr([Retorno->Field-1],038,004))

        if wi>1 and vrrproxparc>0
           then [ValorVenda              ]=vrrproxparc
           else [ValorVenda              ]=vrvend
        endif

        [DataApresentacao        ]=dataapresentacao
        [DataVencimento          ]=datavencimento
        [DataPagamento           ]=datapagamento
        [TaxaDeComissao          ]=taxadecomissao
        [ValorTotal              ]=vrtot
        [TipoTransacao           ]=tipotransacao
        [StatusPagamento         ]=statuspagamento

        [Ocorrencia1             ]=ocorrencia1
        [Ocorrencia2             ]="CARTAO SEM VENDA"


        switch
          case tipoextrato="03-VENDAS"     : 
            if wi=1 then [NumeroVendas]=1 endif
           
          case tipoextrato="04-PAGAMENTOS" : 
            [NumeroVendas]=1
          
        endswitch

      endfor

  endswitch

  moveto "retorno"
EndScan
Do_It!
ClearAll

limpaguarde()
If Not CNV_OK or cc=0
   Then MSG=" //"
        MSG=MSG+"Arquivo [ "+ARQRETORNO+" ] // //"
        MSG=MSG+"N„o contem retorno para conciliar/baixar de t¡tulos !"
        Mensagem(MSG)

        FileWrite        PrivDir()+"funcao1.txt"  From  "DELT|"+VSDGPASTA+ARQRETORNO+"\n"
        ExecVise(PrivDir()+"funcao1.txt")

        ExcluirArquivoLista()
        
        CNV_OK=False
EndIf

Return CNV_OK
EndProc

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc atualizaparcelas()
private np,dtv,dtp,ntab

ntab=table()

np=numval(SubStr([Field-1],019,002))

   dtv =DateVal(SubStr([Field-1],036,002)+"."+SubStr([Field-1],034,002)+".20"+SubStr([Field-1],032,002))

if statuspagamento="01"
   then dtp   =DateVal(SubStr([Field-1],036,002)+"."+SubStr([Field-1],034,002)+".20"+SubStr([Field-1],032,002))
   else dtp   =blankdate()
endif     

moveto "Concctr"
moveto [NumeroUnico RO]
locate nuro
if retval
   then while true
   
          if [Parcela]=np
             then [DataVencimento]=dtv
                  [DataPagamento ]=dtp
          endif        
   
          skip 
          if eot() then quitloop endif
          locate next nuro
          if not retval then quitloop endif
   
        endwhile
endif

moveto ntab

endproc


;*******************************************************************************
;* ROTINA                                                                      *
;*******************************************************************************
Proc ResumoVendas()

{Ask} {Concctr} Check
moveto [CodigoAutorizacao       ] typein "not blank"
do_it!
ClearAll

if not isempty("Answer")
   then 
        Impressao_Orientacao="Paisagem"
        copyreport "\\Base\\Sistemas\\CtaRec\\Concctr" "1" "Answer" "R" 
        IMPRIREL("Answer","R")
endif        

endproc

;*******************************************************************************
;* ROTINA                                                                      *
;*******************************************************************************
Proc ResumoPagamentos()

{Ask} {Concctr} Check
moveto [CodigoAutorizacao       ] typein "not blank"
moveto [StatusPagamento         ] typein"01"
do_it!
ClearAll

if not isempty("Answer")
   then
        Impressao_Orientacao="Paisagem"
        copyreport "\\Base\\Sistemas\\CtaRec\\Concctr" "2" "Answer" "R" 
        IMPRIREL("Answer","R")

        Impressao_Orientacao="Paisagem"
        copyreport "\\Base\\Sistemas\\CtaRec\\Concctr" "3" "Answer" "R"
        IMPRIREL("Answer","R")
endif        

endproc


;*******************************************************************************
;* ROTINA Importa                                                              *
;*******************************************************************************
Proc Importa()

If not Converte()
   Then Return
EndIf

switch
  case tipoextrato="03-VENDAS"     :
    conciliarvendas()
    
    If Not IsEmpty("Concctr")
     Then 
          MSG=" //"
          MSG=MSG+"Arquivo [ "+ARQRETORNO+" ] "+tipoextrato+" // //"
          MSG=MSG+"Relat¢rio de ocorrˆncias do retorno !// //"
          MSG=MSG+"Verifique para conferˆncia !//"
          Mensagem(MSG)
          DISPOSITIVO()
          If OK<>""
             Then titnumdoctos="Vendas"

                  ResumoVendas()
                  
                  Impressao_Orientacao="Paisagem" 
                  IMPRIREL("Concctr","R")
    
                  checavendas()
          EndIf
    EndIf

  case tipoextrato="04-PAGAMENTOS" : 
    conciliarpagtos()

    If Not IsEmpty("Concctr")
     Then 
          MSG=" //"
          MSG=MSG+"Arquivo [ "+ARQRETORNO+" ] "+tipoextrato+" // //"
          MSG=MSG+"Relat¢rio de ocorrˆncias do retorno !// //"
          MSG=MSG+"Verifique para conferˆncia !//"
          Mensagem(MSG)
          DISPOSITIVO()
          If OK<>""
             Then titnumdoctos="Parcelas"
                  
                  ResumoPagamentos()
    
                  if checavendas()
                     then checapagtos()
                  endif
          EndIf
    EndIf

endswitch

EndProc

;************************************
;* ROTINA PARA Ler/Gravacao Opcao   *
;************************************
Proc ConfOpcoes(Opcao)
Private Opcao

Switch
  Case Opcao="Ler":
       If IsFile("IR_CIEL.SC")
           Then Play "IR_CIEL"
       EndIf
       If Not IsAssigned(VSDGPASTA)    Then VSDGPASTA="C:\\bancob~1\\"    EndIf
  Case Opcao="Gravar":
       FileWrite        "IR_CIEL.sc" From ";****** Variaveis de Configura‡„o Caminho Vise Informatica"+"\n"
       FileWrite Append "IR_CIEL.sc" From "VSDGPASTA="+Chr(34)+AjustaPasta(VSDGPASTA)+Chr(34)+"\n"
EndSwitch
EndProc ;

;*******************************************************************************
;* Carregar Lista                                                              *
;*******************************************************************************
Proc PegaNomeArquivo(indice)
Private indice

Return  RTrim(SubStr(Array_Registro[Indice],25,100))
EndProc

;*******************************************************************************
;* Carregar Lista                                                              *
;*******************************************************************************
Proc AjustaPasta(s)
Private s,ns,i

ns=""
For i From 1 to Len(s)
 If SubStr(s,i,1)=Chr(92)
    Then ns=ns+Chr(92)
 EndIf
 ns=ns+SubStr(s,i,1)
EndFor
Return ns
EndProc

;*******************************************************************************
;* Excluir arquivo da Lista                                                    *
;*******************************************************************************
Proc ExcluirArquivoLista()
private i, c, Array_RegistroI

FileWrite        PrivDir()+"funcao1.txt"  From  "DELT|"+VSDGPASTA+ARQRETORNO+"\n"
ExecVise(PrivDir()+"funcao1.txt")

Array_Registro[nlinha]=""

DynArray Array_RegistroI[]
c=0
For i From 1 To DynArraySize(Array_Registro)
  If IsBlank(Array_Registro[i]) Then Loop EndIf
  c=c+1
  Array_RegistroI[c]=Array_Registro[i]
EndFor

Release Vars Array_Registro
DynArray Array_Registro[]

For i From 1 To DynArraySize(Array_RegistroI)
  Array_Registro[i]=Array_RegistroI[i]
EndFor
Release Vars Array_RegistroI

if nlinha>DynArraySize(Array_Registro)
   then ArrayElement=DynArraySize(Array_Registro)
   else ArrayElement=nlinha
endif   

EndProc


;*******************************************************************************
;* Rotina ShowDialog para Imprimir em arquivo                                  *
;*******************************************************************************
Proc SD_Arquivo(Disparo,Campo,Evento,Elemento)
Private Disparo,Campo,Evento,Elemento

Temp=True
TECLA    =""
MSG_CAMPO=""

If Disparo="OPEN"
   Then AoCriarShowDialog()
        Campo="TG_ARQUIVOS"
        
        ArrayElement=nlinha
EndIf

If Disparo="UPDATE"
   Then Switch
          Case Campo="TG_CONFIG" : Play "SETPASTA"
                                   CarregarLista("EXTVISA*.TXT")          
                                   Campo="TG_ARQUIVOS"
          OtherWise              : Return Temp
        EndSwitch  
EndIf

If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Temp=False
   Switch
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_ARQUIVOS"           : Campo="NO"
            Case Campo="TG_CONFIG"             : Campo="TG_ARQUIVOS"
            Case Campo="YES" Or Campo="ARQ_NO" : Campo="TG_ARQUIVOS"
          EndSwitch
     Case Evento["KeyCode"] = -83 And Campo="TG_ARQUIVOS":
              nlinha=ControlValue("TG_ARQUIVOS")
          ARQRETORNO=PegaNomeArquivo(nlinha)

          ConfGeral("Confirma a exclus„o do arquivo "+ARQRETORNO+" ?")
          If Ok="S"
             Then
                  ExcluirArquivoLista()
          EndIf
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_ARQUIVOS"    : Campo="YES"
                         ARQRETORNO=ControlValue("TG_ARQUIVOS")
                    Case Campo="TG_CONFIG"      : 
                         Play "SETPASTA"
                         CarregarLista("EXTVISA*.TXT")                         
                         Campo="TG_ARQUIVOS"
                  EndSwitch
          EndIf
   EndSwitch
EndIf
Switch
  Case Campo="TG_ARQUIVOS":
       MSG_CAMPO="Selecione o arquivo se desejado !"
       TECLA=""+"=Selecionar  Del=Excluir  "
EndSwitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Carregar Lista                                                              *
;*******************************************************************************
Proc CarregarLista(arquivo)
private arquivo

ARQRETORNO  =""
DynArray Array_Registro[]

Wcs=0
Lista_DiretorioD(VSDGPASTA,arquivo,"C")

For i from 1 to 7
  If Not IsFile(PrivDir()+"Dir.Txt")
     Then Sleep(1000)
          Loop
     Else Editor Open PrivDir()+"Dir.Txt"
          If ErrorCode()=27
             Then Sleep 1000
                  Loop
          EndIf
          
          While True
            Extrair_Linha()
            If IsBlank(ELinha) Then QuitLoop EndIf
            wcs=wcs+1
            Array_Registro[wcs]=SubStr(ELINHA,1,Len(ELINHA)-1)
          EndWhile
          CancelEdit

          QuitLoop
  EndIf
EndFor
ArrayElement=1
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"

sys_valor()

LimpAguarde()
If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE=""  EndIf
If Not IsAssigned(SYS_CHAPA_USUARIO)   Then SYS_CHAPA_USUARIO=""   EndIf
If Not IsAssigned(SYS_CONTROLE_DIA)    Then SYS_CONTROLE_DIA=""    EndIf

ConfOpcoes("Ler")

;-- tratando arquivo zip -------------------------------------------------------

;ExibeRodape(1,"Aguarde, descompactando pacote(s) de retorno .zip..")
;cmd="c:\\progra~1\\7-zip\\7z.exe e -y "+VSDGPASTA+"TIVIT_*.zip -o"+VSDGPASTA+" >nul"
;Run NoRefresh cmd
;Sleep 2000
;
;ExibeRodape(1,"Aguarde, copiando pacote(s) .zip ->Conciliado..")
;cmd=VSDGPASTA+"TIVIT_*.zip "+VSDGPASTA+"Conciliado"
;XCopia_Arquivo(cmd)
;Sleep 2000
;
;CarregarLista("TIVIT_*.zip")
;if DynArraySize(Array_Registro)>0
;   then
;        ExibeRodape(1,"Aguarde, deletando pacote(s) de retorno .zip..")
;        For i From 1 To DynArraySize(Array_Registro)
;          ARQRETORNO=PegaNomeArquivo(i)
;          if i=1
;             then FileWrite        PrivDir()+"funcao1.txt"  From  "DELT|"+VSDGPASTA+ARQRETORNO+"\n"
;             else FileWrite append PrivDir()+"funcao1.txt"  From  "DELT|"+VSDGPASTA+ARQRETORNO+"\n"
;          endif 
;        EndFor
;        ExecVise(PrivDir()+"funcao1.txt")
;        Sleep 2000
;endif
;Release Vars Array_Registro

;-------------------------------------------------------------------------------

;-- tratando arquivo txt -------------------------------------------------------

ARQRETORNO  =""
Tipo_Ext =".TXT"

nlinha=1

limparodape(0)
ExibeRodape(1,"Aguarde, carregando arquivo(s) de retorno .txt")
CarregarLista("*_CIELO*.TXT")

;-------------------------------------------------------------------------------

limparodape(0)
While True

 ShowDialog "Conciliar/Atualizar retorno Cielo-Cartäes" Proc "SD_Arquivo"
   Trigger "OPEN","ARRIVE","UPDATE","SELECT"
    Key "ENTER","ESC",-152,-31,-32,-25,-20,-49,-83,
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140    
     @ 03,12   Height 20 Width 78

    @ 01,01 ?? "Caminho padrÆo para arquivos de retorno:"
    @ 02,02 ?? VSDGPASTA
    PaintCanvas Attribute 121 02,01,02,73

    Label  @ 04,00 "~L~ista de arquivos"  For "TG_ARQUIVOS"
    PickDynArray @05,01 Height 10 width 73
     Columns 1
      Array_Registro
       Tag "TG_ARQUIVOS"
        To ArrayElement

    Pushbutton @ 16,25 width 11 "~O~k"         OK     Default Value "Ok" Tag "YES"        To BottonValue
    Pushbutton @ 16,38 width 11 "~C~ancela"    CANCEL                    Tag "NO"         To BottonValue
    Pushbutton @ 16,61 width 14 "Con~f~igurar"                           Tag "TG_CONFIG"  To BottonValue

 EndDialog
 If Not Retval
    Then QuitLoop
 EndIf

 If DynArraySize(Array_Registro)=0
    Then Mensagem("NÆo existe arquivo selecionado !")
         Loop
 EndIf

 ARQRETORNO=PegaNomeArquivo(ArrayElement)
 nlinha    =ArrayElement
 
 If IsBlank(ARQRETORNO)
    Then Mensagem("Nome do arquivo a ler inv lido !")
         Loop
 EndIf

 If SYS_CONTROLE_DIA="??????"
    Then MSG=    "N„o existe um controle ativo no momento !// //"
         MSG=MSG+"Verificar situa‡„o de controles !"
         Mensagem(MSG)
         Loop
 EndIf

 ENCONTRADO_INCONSISTENCIA=false
 ARQ_ERRO= Privdir()+"CONCILIA.ERR"
 Deleta_Arquivo(ARQ_ERRO)

 LimpAguarde()
 LimpAguardes()

 Importa()

 LimpAguarde()
 LimpAguardes()

EndWhile
ClearAll
Release Vars All
Release Procs GeraBaixasReceber, GeraBaixasReceberOld, Grava_Erro, AtualizaVendas, 
              GravaDadosRetorno, selecionav, conciliarvendas, conciliarpagtos, 
              AlterarDocumentos, EditarAutorizacao, checavendas, checapagtos, 
              Converte, atualizaparcelas, ResumoVendas, ResumoPagamentos, Importa, 
              ConfOpcoes, PegaNomeArquivo, AjustaPasta, ExcluirArquivoLista, 
              SD_Arquivo, CarregarLista