;** ExpBB   ********************************************************************
;*  Exportacao de Titulos Cobranca BB                                          *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 17/12/2002 por Anivel Augusto Rodrigues
;Ultima Alteracao: 07/07/2004 por Karen Lauar Nery
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 13/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Deleta_Arquivo
;Ultima Alteracao: 07/05/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Indice Inddup1/Duplic
;Ultima Alteracao: 02/09/2009 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Territorio            
;Ultima Alteracao: 03/02/2010 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Usar endereco de cobranca
;Ultima Alteracao: 07/12/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Lupus conta 0006
;Ultima Alteracao: 24/03/2021 por Bruno Carvalho
;Motivo Alteracao: Alterado mensagem de confirma‡Ćo ao gerar o arquivo p/ MensagemMP()

;******************************************************************************
; CONVERTE DATA DE GRAVACAO PARA STRING                                       *
;******************************************************************************
PROC DATA2STR_S(DATA)
DTGRAV=AlinhM(LTrim(Format("D13",DATA)),10)
DTGRAV=SUBSTR(DTGRAV,1,2)+SUBSTR(DTGRAV,4,2)+SUBSTR(DTGRAV,7,4)
RETURN DTGRAV
ENDPROC                                       

;********************************************************************************
;* CONVERTE VALOR PARA STRING                                                  *
;********************************************************************************
PROC VALOR2STR_S(VALOR,TAM)
VRTIT=STRVAL(VALOR)
PART1=LEN(VRTIT)-3
PART2=LEN(VRTIT)-1
VRTIT=SUBSTR(VRTIT,1,PART1)+SUBSTR(VRTIT,PART2,2)
VRTIT=FILL("0",TAM-LEN(VRTIT))+VRTIT
RETURN VRTIT
ENDPROC

;********************************************************************************
;* TIRA FORMAT do CGC/CPF                                                      *
;********************************************************************************
PROC PEGA_CGCCPF(VALOR)

CGCCPF=""
TIPOP =""
If SubStr(VALOR,03,1)="." and
   SubStr(VALOR,07,1)="." and
   SubStr(VALOR,11,1)="/" and
   SubStr(VALOR,16,1)="-"
   Then TIPOP  ="J"
        CGCCPF=SubStr(VALOR,01,2)+
               SubStr(VALOR,04,3)+
               SubStr(VALOR,08,3)+
               SubStr(VALOR,12,4)+
               SubStr(VALOR,17,2)
   Else If SubStr(VALOR,04,1)="." and
           SubStr(VALOR,08,1)="." and
           SubStr(VALOR,12,1)="-"
           Then TIPOP  ="F"
                CGCCPF=SubStr(VALOR,01,3)+
                       SubStr(VALOR,05,3)+
                       SubStr(VALOR,09,3)+
                       SubStr(VALOR,13,2)
        EndIf
EndIf
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Aguarde("Aguarde, Gerando exporta‡„o")
ExpOk=True
While True

  {Ask} {Duplic} Check
  Moveto [Numero do Lancamento] Example "nlanc"
  If TABEXP="CART" Then {Ask} {AltCartI} EndIf
  If TABEXP="CONT" Then {Ask} {AltContI} EndIf
  If TABEXP="TITU" Then {Ask} {AltTitI}  EndIf

  Moveto [Numero do Lote      ] TypeIn NLote
  Moveto [Numero do Lancamento] Example "nlanc"
  Do_It!
  ClearAll

  If IsEmpty("Answer")
     Then Mensagem("N„o existem registros a processar !")
          ExpOk=False
          QuitLoop
  EndIf

  View "\\Sistemas\\Cadastro\\Destinat"
  View "\\Sistemas\\Cadastro\\End_cob"
  View "\\Sistemas\\Cadastro\\Empresas"
  View "\\Sistemas\\Ctacor\\Conta"
  View "ExpBco"
  If TABEXP="CART" Then View "AltCartC" EndIf
  If TABEXP="CONT" Then View "AltContC" EndIf
  If TABEXP="TITU" Then View "AltTitC"  EndIf
  View "Answer"

  If TABEXP="CART" Then Moveto "AltCartC" EndIf
  If TABEXP="CONT" Then Moveto "AltContC" EndIf
  If TABEXP="TITU" Then Moveto "AltTitC"  EndIf
  Moveto [Numero do Lote]
  Locate NLote
  If Not RetVal
     Then Mensagem("Lote "+NLOTE+" n„o Encontrado, Erro !")
          ExpOk=False
          QuitLoop
  EndIf

  Moveto "\\Sistemas\\Ctacor\\Conta"
  Moveto [Codigo da Conta]
  Locate [Answer->Codigo da Conta]
  If Not RetVal
     Then Mensagem("Conta "+[Answer->Codigo da Conta]+" n„o Encontrada, Erro !")
          ExpOk=False
          QuitLoop
  EndIf

  Moveto "\\Sistemas\\Cadastro\\Empresas"
  Moveto [Codigo da Empresa]
  Locate [Answer->Codigo da Empresa]
  If Not RetVal
     Then Mensagem("Empresa "+[Answer->Codigo da Empresa]+" n„o Encontrada, Erro !")
          ExpOk=False
          QuitLoop
  EndIf

  Moveto "ExpBco"
  Moveto [Codigo da Conta]
  If TABEXP="CART" Then Locate [Answer->Codigo da Conta],[AltCartC->Tipo do Lancamento] EndIf
  If TABEXP="CONT" Then Locate [Answer->Codigo da Conta],[AltContC->Tipo do Lancamento] EndIf
  If TABEXP="TITU" Then Locate [Answer->Codigo da Conta],[AltTitC->Tipo do Lancamento]  EndIf
  If Not RetVal
     Then Mensagem("Conta/Parametros "+[Answer->Codigo da Conta]+" n„o Encontrado, Erro !")
          ExpOk=False
          QuitLoop
  EndIf

  NREG=1
  ARQ="\\Sistemas\\Exporta\\Dados\\REM"+AlinhM(StrVal(Month(Today())),2)+"_"+AlinhM(StrVal(Day(Today())),2)+".BB"
  Deleta_Arquivo(ARQ)

  ;*** Header ***
  PEGA_CGCCPF([\Sistemas\Cadastro\Empresas->CGC Empresa])
  RAZAO_EMP=[\Sistemas\Cadastro\Empresas->Razao Social Empresa]

  Switch
    Case SYS_CODIGO_CLIENTE="0185" And [Answer->Codigo da Conta]="0003":
         CGCCPF   ="87703599620"
         RAZAO_EMP="REGINALDO SERGIO PEREIRA"
         TIPOP    ="F"
    Case SYS_CODIGO_CLIENTE="0222" And
         Upper(SubStr(Directory(),1,2))="X:" And 
         [Answer->Codigo da Conta]="0006":
         CGCCPF_EMP="14156552000106"
         RAZAO_EMP ="UBERALDO PEREIRA FLORA"
         TIPOP_EMP ="J"
  EndSwitch

  NREG=1
  Open Printer
  Print File ARQ "00"
  If TIPOP="J"
     Then Print File ARQ "02"
     Else Print File ARQ "01"
  EndIf
  Print File ARQ Completa(CGCCPF,014," ")
  Print File ARQ Completa(RAZAO_EMP,030," ")
  Print File ARQ Completa("" ,052,"0")
  Print File ARQ Completa("" ,200,"0")
  Print File ARQ Completa("" ,200,"0")
  Print File ARQ "\n"

  ;*** Detalhe ***
  NR=NRecords("Answer")
  Moveto "Answer"
  Scan
    Barra(NR, RecNo())
    Aguarde("Aguarde, Exportando "+BARRA_STRING)

    Moveto "\\Sistemas\\Cadastro\\Destinat"
    Moveto [Codigo]
    Locate [Answer->Codigo do Destinatario]
    If Not RetVal
       Then Mensagem("Cliente "+[Answer->Codigo do Destinatario]+" n„o Encontrado, Erro !")
            Moveto "Answer"
            Loop
    EndIf
    PEGA_CGCCPF([\Sistemas\Cadastro\Destinat->CGC])

    END_COB=[Endereco]
    CEP_COB=Tira_CharNum([CEP])
    CID_COB=[Cidade  ]
     UF_COB=[UF      ]
    

    Moveto "\\Sistemas\\Cadastro\\End_Cob"
    Moveto [Codigo]
    Locate [Answer->Codigo do Destinatario]
    If RetVal
       Then If Not IsBlank([Endereco de Cobranca]) And
               [Endereco de Cobranca]<>"O MESMO"
               Then END_COB=[Endereco de Cobranca]
                    CEP_COB=Tira_CharNum([CEP de Cobranca])
                    CID_COB=[Cidade de Cobranca  ]
                     UF_COB=[UF de Cobranca      ]
            EndIf
    EndIf   

    Moveto "Answer"
    Print File ARQ "01"

    If Len([ExpBco->Convenio])<=6
       Then Print File ARQ ALINHM([ExpBco->Convenio],6)                 ; Convenio
       Else Print File ARQ "000000"                                     ; Convenio
    EndIf
    Print File ARQ ALINHM(SubStr([ExpBco->Carteira],1,2),2)     ; Carteira
    Print File ARQ ALINHM(SubStr([ExpBco->Carteira],4,3),3)     ; Variacao
    Print File ARQ Completa([Numero do Documento],010," ")
    Print File ARQ Completa("",020,"0")
    Print File ARQ Completa([Codigo da Empresa]+"-"+Completa([Codigo do Documento],7," ")+"-"+[Numero do Documento],025," ")
    Print File ARQ Completa([ExpBco->Sigla da Especie],005," ")
    Print File ARQ DATA2STR_S([Data de Emissao])
    Print File ARQ DATA2STR_S([Data de Vencimento])
    Print File ARQ VALOR2STR_S([Valor do Documento],13)
    Print File ARQ "09   "
    Print File ARQ Completa("",013,"0")
    Print File ARQ Completa([ExpBco->Aceite],1,"N")

    If Not IsBlank([Taxa de Juros])
       Then VRBASE= ([Valor do Documento]*[Taxa de Juros])/100
       Else VRBASE= [Valor de Juros]
    EndIf

    Switch
       Case [Tipo Taxa de Juros]="M": VJUROSDIA=Round((VRBASE/30),2)
       Case [Tipo Taxa de Juros]="A": VJUROSDIA=Round((VRBASE/365),2)
       Case [Tipo Taxa de Juros]="D": VJUROSDIA=Round((VRBASE),2)
       OtherWise                    : VJUROSDIA= 0
    EndSwitch

    Print File ARQ VALOR2STR_S(VJUROSDIA,13)
    Print File ARQ "00000000"
    Print File ARQ VALOR2STR_S(0,13)
    Print File ARQ VALOR2STR_S(0,13)
    Print File ARQ AlinhM(StrVal([ExpBco->NDias Protestar]),2)
    Print File ARQ Completa([ExpBco->Mensagem],040," ")
    If Len([ExpBco->Convenio])>6
       Then Print File ARQ ALINHM([ExpBco->Convenio],9)                 ; Convenio
            Print File ARQ Completa("",031," ")
       Else Print File ARQ Completa("",040," ")
    EndIf
    Print File ARQ "  "
    Print File ARQ Completa("",014," ")
    Print File ARQ Completa("",037," ")
    Print File ARQ Completa([ExpBco->Impressao pelo Banco],1,"N")
    If TIPOP="J"
       Then Print File ARQ "02"
       Else Print File ARQ "01"
    EndIf
    Print File ARQ Completa(CGCCPF,014," ")
    Print File ARQ Completa([\Sistemas\Cadastro\Destinat->Razao Social],037," ")

    Print File ARQ Completa(END_COB,037," ")
    Print File ARQ AlinhM(CEP_COB,8)
    Print File ARQ Completa(CID_COB,015," ")
    Print File ARQ Completa( UF_COB,002," ")

    Print File ARQ Completa("",061,"0")
    Print File ARQ AlinhM([ExpBco->Modalidade],2)   ;01 Simples e 04 Descontada
    Print File ARQ Completa("",018,"0")
    Print File ARQ "\n"

    NREG=NREG+1
  EndScan

  ;*** Trailer ***
  Print File ARQ "99"
  Print File ARQ ALINHM(StrVal(NREG),6)
  Print File ARQ Completa("" ,092,"0")
  Print File ARQ Completa("" ,200,"0")
  Print File ARQ Completa("" ,200,"0")
  FileWrite Append ARQ From "\n"

  LimpAguarde()
  QuitLoop
EndWhile
If Not ExpOk
   Then Mensagem("Exporta‡„o n„o executada !")
   Else MSG="Fim do processo! // //Arquivo gerado em: // //"+SubStr(Directory(),1,2)+ARQ
        MensagemMP(MSG,SubStr(Directory(),1,2)+ARQ)
EndIf

ClearAll
Release Vars NREG, TIPOP, CGCCPF, ExpOk
Release Procs DATA2STR_S, VALOR2STR_S, PEGA_CGCCPF
