;** ExpBradP *******************************************************************
;*  Exportacao de Titulos Cobranca BRADESCO/Plus                               *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 03/05/2011 por Anivel Augusto Rodrigues
;Ultima Alteracao:   /  /     por 
;Motivo Alteracao: 

;******************************************************************************
; CONVERTE DATA DE GRAVACAO PARA STRING                                       *
;******************************************************************************
PROC DATA2STR_S(DATA)
DTGRAV=AlinhM(StrVal(Year(DATA)),4)+AlinhM(StrVal(Month(DATA)),2)+AlinhM(StrVal(Day(DATA)),2)
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

;********************************************************************************
;* CONVERTE VALOR PARA STRING                                                  *
;********************************************************************************
PROC VALOR3STR_S(VALOR,TAM)
VRTIT=Format("W7.3",VALOR)
VRTIT=Tira_CharNum(VRTIT)
VRTIT=AlinhM(VRTIT,6)


;;VRTIT=STRVAL(VALOR)
;;PART1=LEN(VRTIT)-3
;;PART2=LEN(VRTIT)-1
;;VRTIT=SUBSTR(VRTIT,1,PART1)+SUBSTR(VRTIT,PART2,3)
;;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

;********************************************************************************
;* CALCULA O DIGITO VERIFICADOR DA BOLETA                                      *
;********************************************************************************
Proc CALCULAR_DIGITO(Valor)
     v1=NumVal(SubStr(Valor,1,1))
     v2=NumVal(SubStr(Valor,2,1))
     v3=NumVal(SubStr(Valor,3,1))
     v4=NumVal(SubStr(Valor,4,1))
     v5=NumVal(SubStr(Valor,5,1))
     v6=NumVal(SubStr(Valor,6,1))
     v7=NumVal(SubStr(Valor,7,1))
     v8=NumVal(SubStr(Valor,8,1))
     v9=NumVal(SubStr(Valor,9,1))
     v10=NumVal(SubStr(Valor,10,1))
     v1=v1*3
     v2=v2*2
     v3=v3*9
     v4=v4*8
     v5=v5*7
     v6=v6*6
     v7=v7*5
     v8=v8*4
     v9=v9*3
     v10=v10*2
     V=v1+v2+v3+v4+v5+v6+v7+v8+v9+v10
     Dgt=11-(MOD(V,11))
     If Dgt>9
        Then Dgt=0
     EndIf

     Return Dgt
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
Aguardes("Aguarde, Gerando exporta‡„o")

DRIVE=SubStr(Directory(),1,2)

PASTA="\\SISTEMAS\\EXPORTA\\BANCOS"
If DirExists(PASTA)=0
   Then Cria_Pasta(PASTA)
        Sleep 2000
EndIf
PASTA="\\SISTEMAS\\EXPORTA\\BANCOS\\BRADESCO"
If DirExists(PASTA)=0
   Then Cria_Pasta(PASTA)
        Sleep 2000
EndIf

ARQ =PASTA+"\\T.TXT"
ARQS=PASTA+"\\S.TXT"
Deleta_Arquivo(ARQ)
Deleta_Arquivo(ARQS)

ExpOk=True
While True

  {Ask} {Duplic} Check
  Moveto [Numero do Lancamento] Example "nlanc"
  {Ask} {AltTitI}
  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\\Empresas"
  View "\\Sistemas\\Ctacor\\Conta"
  View "ExpBco"
  View "AltTitC"
  View "Answer"

  Moveto "AltTitC"
  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]
  Locate [Answer->Codigo da Conta],[AltTitC->Tipo do Lancamento ]
  If Not RetVal
     Then Mensagem("Conta/Parametros "+[Answer->Codigo da Conta]+" n„o Encontrado, Erro !")
          ExpOk=False
          QuitLoop
  EndIf

  ;*** Titulos ***
  Open Printer
  NR=NRecords("Answer")
  Moveto "Answer"
  Scan
    Barra(NR, RecNo())
    Aguarde("Aguarde, Exportando Titulos "+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
    Moveto "Answer"

    If [Tipo Taxa de Juros]<>"M"
       Then Mensagem("Bradesco PLUS s¢ utiliza taxa de juros mensal, verifique o Bordˆro !")
            ExpOk=False
            QuitLoop
    EndIf

    ;***** AVALISTA **************************
    CGCCPF_AV=""
    TIPOP_AV =""
    RAZAO_AV =""
    If TABEXP="TITU"                      And 
       [AltTitC->Tipo do Lancamento ]="A" And 
       Not IsBlank([AltTitC->Codigo_Empresa_Avalista]) And
       ([AltTitC->Codigo da Empresa]<>[AltTitC->Codigo_Empresa_Avalista])
       Then
            Moveto "\\Sistemas\\Cadastro\\Empresas"
            Moveto [Codigo da Empresa]
            Locate [AltTitC->Codigo_Empresa_Avalista]
            If Not RetVal
               Then Mensagem("Empresa Avalista "+[AltTitC->Codigo_Empresa_Avalista]+" n„o Encontrada, Erro !")
                    ExpOk=False
                    QuitLoop
            EndIf
            PEGA_CGCCPF([\Sistemas\Cadastro\Empresas->CGC Empresa])
            CGCCPF_AV=CGCCPF
            TIPOP_AV =TIPOP
            RAZAO_AV =[\Sistemas\Cadastro\Empresas->Razao Social Empresa]
    EndIf

    Moveto "Answer"
    PEGA_CGCCPF([\Sistemas\Cadastro\Destinat->CGC])


;;;;Print File ARQ SubStr([Tipo do Documento],1,2)
    Print File ARQ Completa(RTrim(SubStr([Numero do Documento],1,10)),10," ")
    If Not IsBlank([Documento no Banco])
       Then Print File ARQ SubStr([Documento no Banco],4,11)
       Else Print File ARQ "00000000000"
    EndIf
    Print File ARQ Format("W15,AL",[Answer->Codigo do Destinatario])
    Print File ARQ Format("W15,AL",CGCCPF_AV)
    If Not IsBlank([Documento no Banco])
       Then Print File ARQ "E"
       Else If [ExpBco->Impressao pelo Banco]="3"
               Then Print File ARQ "B"
               Else Print File ARQ "E"
            EndIf
    EndIf
    Print File ARQ AlinhM([ExpBco->Sigla da Especie],2)
    Print File ARQ Completa([ExpBco->Aceite],1,"S")
    Print File ARQ AlinhM(StrVal([ExpBco->NDias Protestar]),3)
    Print File ARQ Spaces(25)     
    Print File ARQ Completa([ExpBco->Mensagem ],080," ")
    Print File ARQ Completa([ExpBco->Mensagem2],080," ")
    Print File ARQ Completa([ExpBco->Mensagem3],080," ")
    Print File ARQ Completa([ExpBco->Mensagem4],080," ")
    Print File ARQ DATA2STR_S([Data de Vencimento])
    Print File ARQ "00000000" ; Dt Desconto
    Print File ARQ DATA2STR_S([Data de Emissao])
    Print File ARQ "00000000" ; Dt Processamento
    Print File ARQ VALOR2STR_S([Valor do Documento],17)
    Print File ARQ VALOR2STR_S(0,17) ; Vr Abatimento
    Print File ARQ "000000" ; % Bonifica‡Æo
    Print File ARQ "000000" ; % Desconto
    Print File ARQ "000000" ; % IOF
    Print File ARQ VALOR3STR_S([Taxa de Juros],6)
    Print File ARQ VALOR3STR_S([Multa        ],6)
    Print File ARQ Completa([\Sistemas\Cadastro\Destinat->Razao Social],040," ")
    Print File ARQ Completa(RAZAO_AV                                   ,045," ")
    FileWrite Append ARQ From "\n"
  EndScan


  ;*** Sacados ***
  ARQS="\\Sistemas\\Exporta\\Dados\\BRADSAC.txt"
  Deleta_Arquivo(ARQS)

  {Ask} {Answer}
  Moveto [Codigo do Destinatario] Check
  Do_It!
  ClearAll

  Open Printer
  NR=NRecords("Answer")
  View "\\Sistemas\\Cadastro\\Destinat"
  View "\\Sistemas\\Cadastro\\End_Cob"
  View "Answer"
  Scan
    Barra(NR, RecNo())
    Aguarde("Aguarde, Exportando Sacados "+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]
    BAI_COB=[Bairro  ]
    CEP_COB=Tira_CharNum([CEP])
    CID_COB=[Cidade  ]
     UF_COB=[UF      ]
    EMAIL  =[Endereco_Eletronico]
    IE     =[IE      ]
    If IE<>"ISENTO" And IE<>""
       Then IE=Tira_CharNum(IE)
    EndIf    

    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]
                    BAI_COB=[Bairro 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 ARQS Completa([Answer->Codigo do Destinatario],15," ")
    If [\Sistemas\Cadastro\Destinat->Tipo Pessoa]="JURIDICA"
       Then Print File ARQS "J"
       Else Print File ARQS "F"
    EndIf
    Print File ARQS Completa(CGCCPF,014," ")
    Print File ARQS Completa([\Sistemas\Cadastro\Destinat->Razao Social],040," ")
    Print File ARQS "0"  ; Enviar boleto por e-mail 0-NÆo 1 -Sim
    Print File ARQS Completa(EMAIL  ,050," ")
    Print File ARQS "0"  ; Opcoes de e-mail 0-PDF 1-HTML
    Print File ARQS Completa(END_COB,040," ")
    Print File ARQS Spaces(8)
    Print File ARQS Spaces(15)
    Print File ARQS Completa(BAI_COB,030," ")
    Print File ARQS Completa(CID_COB,030," ")
    Print File ARQS Completa( UF_COB,002," ")
    Print File ARQS AlinhM(SubStr(CEP_COB,1,5),5)
    Print File ARQS AlinhM(SubStr(CEP_COB,6,3),3)
    Print File ARQS AlinhM("",03)
    Print File ARQS AlinhM("",05)
    Print File ARQS AlinhM("",01)
    Print File ARQS AlinhM("",12)
    Print File ARQS AlinhM("",01)
    Print File ARQS AlinhM("",05)
    Print File ARQS AlinhM("",01)
    Print File ARQS " "
    FileWrite Append ARQS From "\n"
  EndScan

  QuitLoop
EndWhile
If Not ExpOk
   Then Mensagem("Exporta‡„o n„o executada !")
        Deleta_Arquivo(ARQ)
        Deleta_Arquivo(ARQS)
   Else 
        DIA =AlinhM(StrVal(Day(Today())),2)+AlinhM(StrVal(Month(Today())),2)+SubStr(StrVal(Year(Today())),3,2)
        HORA=Substr(Time(),1,2)+Substr(Time(),4,2)
        ARQ2=PASTA+"\\TIT."+DIA+"."+HORA+".TXT"
        Deleta_Arquivo(ARQ2)
     
        cmd="C:\\Execvise Renomeia "+ARQ+" \""+ARQ2+"\""
        Executa_Programa(cmd)
        Deleta_Arquivo(ARQ)
            
        ARQ3=PASTA+"\\SAC."+DIA+"."+HORA+".TXT"
        Deleta_Arquivo(ARQ3)
     
        cmd="C:\\Execvise Renomeia "+ARQS+" \""+ARQ3+"\""
        Executa_Programa(cmd)
        Deleta_Arquivo(ARQS)
            
        Mensagem("Fim do processo! // //Arquivos gerados em: // //"+DRIVE+ARQ2+"//"+DRIVE+ARQ3)

EndIf

LimpAguardes()
LimpAguarde()

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