;** MovBanco *******************************************************************
;*  Movimento de Bancos                                                        *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 05/12/95 por Anivel Augusto Rodrigues
;Ultima Alteracao: 16/11/2000 por Anivel Augusto Rodrigues
;Motivo Alteracao: ShowDialog Novas Variaveis
;Ultima Alteracao: 15/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Run

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc GERA_B()
AGUARDE("Aguarde, Processando Dados Banco")

{Ask} {\\Sistemas\\Ctacor\\MovCont} Check
Moveto [Codigo da Empresa] TypeIn "~VSDGEMPRESA.."
Moveto [Tipo da Conta    ] TypeIn "C"
Moveto [Data             ] TypeIn ">= ~VSDGDTINI , <= ~VSDGDTFIM"

Do_It!
ClearAll
If IsEmpty("Answer")
   Then Return
EndIf

Sort "Answer" on "Codigo da Empresa","Codigo da Conta",
                 "Data","Numero do Cheque","Codigo do EmitDest"
ClearAll

NR=NRecords("Answer")

Empty "\\Sistemas\\Ctacor\\MovBanco"

View "\\Sistemas\\Cadastro\\Empresas"
View "\\Sistemas\\Cadastro\\Destinat"
View "\\Sistemas\\Cadastro\\TpLanc"
View "\\Sistemas\\Ctacor\\Conta"
View "\\Sistemas\\Ctacor\\MovBanco"
CoEdit "Answer"

EMPRESA   =[Codigo da Empresa]
CHEQUE    =[Numero do Cheque]
DTCHDESCTO=[Data Cheque Descontado]
VRCHEQUE  =0
C =1
CC=0

CTABCO  =""
CTATL   =""

REDBCO_MB = ""
CODRED_PC = ""
CODGER_MB = ""
NOME_MB   = ""

Scan
   Barra(NR, RecNo())
   AGUARDE("Aguarde, Exportando Dados Banco "+BARRA_STRING)

   If EMPRESA<>[Codigo da Empresa]
      Then GravaCab_B()
           Grava_B()
   EndIf

   If (CHEQUE<>[Numero do Cheque] Or
      IsBlank([Numero do Cheque])) And CC>0
      Then GravaCab_B()
   EndIf

   ;****** Localiza Conta Banco *****
   If [Answer->Codigo da Conta]<>CTABCO
      Then Moveto "\\Sistemas\\Ctacor\\Conta"
           Moveto [Codigo da Conta]
           Locate [Answer->Codigo da Conta]
           If RetVal
              Then REDBCO_MB         = [Conta Contabil]
                   NOME_DO_BANCO     = [Nome do Banco]
                   DEPOSITO_EFETUADO = [CC Deposito Efetuado]
                   CHEQUE_TRANSITO   = [CC Cheques em Transito]
                   CHEQUE_CAIXA      = [CC Cheques p/ Caixa]
                   CHEQUES_NAPRES_RED_PC=""
                   CHEQUES_NAPRES_GER_MB=""
                   If Not IsBlank([CC Cheques Emitidos/NApre])
                      Then pos_s=SearchFrom("S_",[CC Cheques Emitidos/NApre],1)
                           pos_p=SearchFrom("P_",[CC Cheques Emitidos/NApre],1)
                           If pos_s=0 And pos_p=0
                              Then CHEQUES_NAPRES_RED_PC = SubStr([CC Cheques Emitidos/NApre],1,4)
                              Else If SubStr([CC Cheques Emitidos/NApre],pos_s,2)="S_"
                                      Then CHEQUES_NAPRES_RED_PC = SubStr([CC Cheques Emitidos/NApre],pos_s+2,4)
                                   EndIf
                                   If SubStr([CC Cheques Emitidos/NApre],pos_p,2)="P_"
                                      Then CHEQUES_NAPRES_GER_MB = SubStr([CC Cheques Emitidos/NApre],pos_p+2,4)
                                   EndIf
                           EndIf
                      Else CHEQUES_NAPRES_RED_PC=""
                           CHEQUES_NAPRES_GER_MB=""
                   EndIf
              Else REDBCO_MB         = ""
                   NOME_DO_BANCO     = ""
                   DEPOSITO_EFETUADO = ""
                   CHEQUE_TRANSITO   = ""
                   CHEQUE_CAIXA      = ""
                   CHEQUES_NAPRES_RED_PC=""
                   CHEQUES_NAPRES_GER_MB=""
           EndIf
           CTABCO=[Answer->Codigo da Conta]
           Moveto "Answer"
   EndIf

   CC=CC+1

   HISTORICO=[Answer->Descricao do Historico]

   ;****** Localiza Conta Tipo Lancamento *****
   If [Answer->Tipo do Lancamento]<>CTATL
      Then Moveto "\\Sistemas\\Cadastro\\TpLanc"
           Moveto [Tipo de Lancamento]
           Locate [Answer->Tipo do Lancamento]
           If RetVal
              Then CODRED_PC = [Conta Contabil]
              Else CODRED_PC = ""
           EndIf
           CTATL=[Answer->Tipo do Lancamento]
   EndIf

   ;****** Localiza Conta Destinatario\Emitente *****
   PESSOA_CD=""
   CGC_CD=""
   CODGER_MB = ""
   NOME_MB   = [Answer->Nome Fantasia EmitDest]
   If [Answer->Tipo da Conta Trf]=""
      Then Moveto "\\Sistemas\\Cadastro\\Destinat"
           Moveto [Codigo]
           Locate [Answer->Codigo do EmitDest]
           If RetVal
              Then If [Answer->Tipo do Lancamento]="A"
                      Then CODRED_PC = "0761"
                           If [Answer->Sistema Gerador]<>""
                              Then HISTORICO=HISTORICO+" "+[Razao Social  ]
                           EndIf
                      Else If Not IsBlank([Conta Contabil])
                              Then pos_s=SearchFrom("S_",[Conta Contabil],1)
                                   pos_p=SearchFrom("P_",[Conta Contabil],1)
                                   If pos_s=0 And pos_p=0
                                      Then CODRED_PC = SubStr([Conta Contabil],1,4)
                                           If CODRED_PC="0882"
                                              Then HISTORICO=HISTORICO+" "+[Razao Social  ]
                                           EndIf
                                      Else If SubStr([Conta Contabil],pos_s,2)="S_"
                                              Then CODRED_PC = SubStr([Conta Contabil],pos_s+2,4)
                                           EndIf
                                           If SubStr([Conta Contabil],pos_p,2)="P_"
                                              Then CODGER_MB = SubStr([Conta Contabil],pos_p+2,4)
                                           EndIf
                                   EndIf
                           EndIf
                         ;;If [Tipo]="C" or [Tipo]="F"
                           If [Tipo]="F"
                              Then NOME_MB=[Razao Social  ]

                                   If SubStr([CGC],03,1)="." and
                                      SubStr([CGC],07,1)="." and
                                      SubStr([CGC],11,1)="/" and
                                      SubStr([CGC],16,1)="-"
                                      Then WVR=""               ;CGC
                                           WVR=SubStr([CGC],01,2)+
                                               SubStr([CGC],04,3)+
                                               SubStr([CGC],08,3)+
                                               SubStr([CGC],12,4)+
                                               SubStr([CGC],17,2)
                                           CHECACGC(WVR)
                                           If WB=0
                                              Then CGC_CD=WVR
                                                   PESSOA_CD="J"
                                           EndIf
                                      Else If SubStr([CGC],04,1)="." and
                                              SubStr([CGC],08,1)="." and
                                              SubStr([CGC],12,1)="-"
                                              Then WVR=""               ;CPF
                                                   WVR=SubStr([CGC],01,3)+
                                                       SubStr([CGC],05,3)+
                                                       SubStr([CGC],09,3)+
                                                       SubStr([CGC],13,2)
                                                   CHECACPF(WVR)
                                                   If WB=0
                                                      Then CGC_CD=WVR
                                                           PESSOA_CD="F"
                                                   EndIf
                                           EndIf
                                   EndIf

                           EndIf
                   EndIf
           EndIf
   EndIf
   If [Answer->Tipo da Conta]="C" And
      [Answer->Tipo da Conta Trf]="C"
      Then CODRED_PC = "0567"
           NOME_MB   = "TRANSFERENCIAS BANCARIAS"
   EndIf

   If [Answer->Tipo da Conta]="C" And
      [Answer->Tipo da Conta Trf]="X"
      Then If [Answer->Tipo de Operacao]="08"
              Then If [Answer->Tipo do Lancamento]="O"
                      Then NOME_MB   = "CHQS.EM TRANSITO "+NOME_DO_BANCO
                           CODRED_PC = CHEQUE_TRANSITO
                      Else NOME_MB   = "CHEQUES P/ CAIXA "+NOME_DO_BANCO
                           CODRED_PC = CHEQUE_CAIXA
                   EndIf
           EndIf
           If [Answer->Tipo de Operacao]="09"
              Then NOME_MB   = "DEPOSITO EFETUADO "+NOME_DO_BANCO
                   CODRED_PC = DEPOSITO_EFETUADO
           EndIf
   EndIf

   If [Answer->Tipo da Conta]="C" And
      [Answer->Tipo da Conta Trf]="A" And
      ([Answer->Tipo de Operacao]="01" Or
       [Answer->Tipo de Operacao]="02")
      Then  Moveto "\\Sistemas\\Ctacor\\Conta"
            Moveto [Codigo da Conta]
            Locate [Answer->Codigo da Conta Trf]
            If RetVal
               Then NOME_MB   = [Nome do Banco]
                    CODRED_PC=[CC Aplicacoes Financeiras]
                    If Not IsBlank([CC Aplicacoes Financeiras])
                       Then pos_s=SearchFrom("S_",[CC Aplicacoes Financeiras],1)
                            pos_p=SearchFrom("P_",[CC Aplicacoes Financeiras],1)
                            If pos_s=0 And pos_p=0
                               Then CODRED_PC = SubStr([CC Aplicacoes Financeiras],1,4)
                               Else If SubStr([CC Aplicacoes Financeiras],pos_s,2)="S_"
                                       Then CODRED_PC = SubStr([CC Aplicacoes Financeiras],pos_s+2,4)
                                    EndIf
                                    If SubStr([CC Aplicacoes Financeiras],pos_p,2)="P_"
                                       Then CODGER_MB = SubStr([CC Aplicacoes Financeiras],pos_p+2,4)
                                    EndIf
                            EndIf
                    EndIf
               Else NOME_MB   = ""
                    CODRED_PC = ""
            EndIf
            Moveto "Answer"
   EndIf

   If [Answer->Tipo de Operacao]="13"
      Then CODRED_PC = "0342"
           NOME_MB   = "ENCARGOS FINANCEIROS"
   EndIf

   ;****** Gera Lancamento *****
   Moveto "\\Sistemas\\Ctacor\\MovBanco"
   End
   Down
   [REDBCO_MB ] = REDBCO_MB
   [LANC_MB   ] = ALINHM(StrVal(C),4)+ALINHM(StrVal(CC),2)
   [DATA_MB   ] = [Answer->Data]
   If IsBlank(CHEQUE)
      Then [VRCHQ_MB  ] = [Answer->Valor]
      Else [VRCHQ_MB  ] = BlankNum()
   EndIf
   [NRCHQ_MB  ] = CHEQUE
   [CODRED_PC ] = CODRED_PC
   [DOC_MB    ] = SubStr(HISTORICO,1,20)
   [DOC2_MB   ] = SubStr(HISTORICO,21,20)
   If [Answer->Valor do Juros]>0
      Then [VRCOMP_MB ] = [Answer->Valor]-[Answer->Valor do Juros]
      Else [VRCOMP_MB ] = [Answer->Valor]
   EndIf
   If CODRED_PC="0104"
      Then [VRDESC_MB ] = [Answer->Valor do Desconto]
      Else [VRDESC_MB ] = 0
   EndIf
   [CODGER_MB ] = CODGER_MB
   [NOME_MB   ] = NOME_MB

   If CODRED_PC="0607"
      Then [Answer->Tipo do Lancamento] = "L"
   EndIf

   Switch
   Case [Answer->Tipo do Lancamento]="G":
        [COLCAB_MB]="01"
   Case [Answer->Tipo do Lancamento]="C":
        [COLCAB_MB]="02"
   Case [Answer->Tipo do Lancamento]="A":
        [COLCAB_MB]="03"
   Case [Answer->Tipo do Lancamento]="D":
        [COLCAB_MB]="04"
   Case [Answer->Tipo do Lancamento]="B":
        [COLCAB_MB]="05"
   Case [Answer->Tipo do Lancamento]="E" Or
        [Answer->Tipo do Lancamento]="N":
        [COLCAB_MB]="06"
   Case [Answer->Tipo do Lancamento]="F"   Or
        [Answer->Tipo do Lancamento]="I"   Or
        [Answer->Tipo do Lancamento]="J"   Or
        [Answer->Tipo do Lancamento]="L":
        [COLCAB_MB]="07"
   Case [Answer->Tipo do Lancamento]="H"   Or
        [Answer->Tipo do Lancamento]="M"   Or
        [Answer->Tipo do Lancamento]="O":
        [COLCAB_MB]="08"
   OtherWise:
        [COLCAB_MB]="00"
   EndSwitch
   [PESSOA_CD ] = PESSOA_CD
   [CGC_CD    ] = CGC_CD

   ;********** Gera Lancamento de Juros ***************
   If [Answer->Valor do Juros] > 0
      Then CC = CC + 1
         ;;@ 09,25 ?? StrVal(C) + " -- " + StrVal(CC)+Spaces(10)
           End
           Down
           [REDBCO_MB ] = REDBCO_MB
           [LANC_MB   ] = ALINHM(StrVal(C),4)+ALINHM(StrVal(CC),2)
           [DATA_MB   ] = [Answer->Data]
           [VRCHQ_MB  ] = BlankNum()
           [NRCHQ_MB  ] = CHEQUE
           If [Answer->Tipo Movimento]="S"
              Then [CODRED_PC ] = "0326"
                   [DOC_MB    ] = "PG JUROS "+[Answer->Tipo do Documento]+"-"+[Answer->Numero do Documento]
              Else [CODRED_PC ] = "0381"
                   [DOC_MB    ] = "REC JUROS "+[Answer->Tipo do Documento]+"-"+[Answer->Numero do Documento]
           EndIf
           [DOC2_MB   ] = ""
           [VRCOMP_MB ] = [Answer->Valor do Juros]
           [CODGER_MB ] = ""
           [NOME_MB   ] = "JUROS E DESCONTOS"
           If [Answer->Tipo Movimento]="S"
              Then [COLCAB_MB ] = "05"
              Else [COLCAB_MB ] = "07"
           EndIf
   EndIf

   Moveto "Answer"
   VRCHEQUE = VRCHEQUE + [Valor]
   DATALANC = [Data]

EndScan

GravaCab_B()
Grava_B()
Do_It!
ClearAll
EndProc

;*******************************************************************************
;* Rotina Gravacao do Registro Cabeca                                          *
;*******************************************************************************
Proc GravaCab_B()
Moveto "\\Sistemas\\Ctacor\\MovBanco"
End
Down
[REDBCO_MB ] = REDBCO_MB
[LANC_MB   ] = ALINHM(StrVal(C),4)+"00"
[DATA_MB   ] = DATALANC
[VRCHQ_MB  ] = VRCHEQUE
[NRCHQ_MB  ] = CHEQUE

If Not IsBlank(CHEQUE) And
   (IsBlank(DTCHDESCTO) Or (Year(DTCHDESCTO)>=Year(DATALANC) And Month(DTCHDESCTO)>Month(DATALANC)))
   Then
        DTCHDESCTO=DATALANC
        MES_DTCHDESCTO=Month(DTCHDESCTO)
        For dc From 1 To 31
           DTCHDESCTO=DTCHDESCTO+1
           If Month(DTCHDESCTO)<>MES_DTCHDESCTO
              Then DTCHDESCTO=DTCHDESCTO-1
                   QuitLoop
           EndIf
        EndFor

        C=C+1
        End
        Down
        [REDBCO_MB ] = REDBCO_MB
        [LANC_MB   ] = ALINHM(StrVal(C),4)+"00"
        [DATA_MB   ] = DTCHDESCTO
        [NRCHQ_MB  ] = CHEQUE
        [VRCHQ_MB  ] = VRCHEQUE

        End
        Down
        [REDBCO_MB ] = REDBCO_MB
        [LANC_MB   ] = ALINHM(StrVal(C),4)+"01"
        [DATA_MB   ] = DTCHDESCTO
        [CODRED_PC ] = CHEQUES_NAPRES_RED_PC
        HISTORICO = "VR C.E.N.A "+NOME_DO_BANCO+" "+CHEQUE
        [DOC_MB    ] = SubStr(HISTORICO,1,20)
        [DOC2_MB   ] = SubStr(HISTORICO,21,20)
        [VRCOMP_MB ] = VRCHEQUE
        [CODGER_MB ] = CHEQUES_NAPRES_GER_MB
        [NOME_MB   ] = NOME_DO_BANCO
        [COLCAB_MB ]="07"
        [PESSOA_CD ] = ""
        [CGC_CD    ] = ""
EndIf

CHEQUE    =[Answer->Numero do Cheque]
DTCHDESCTO=[Answer->Data Cheque Descontado]
VRCHEQUE  =0

C =C+1
CC=0
EndProc

;*******************************************************************************
;* Rotina Geracao do Arquivo de Transacao                                      *
;*******************************************************************************
Proc Grava_B()
Do_It!
Moveto "\\Sistemas\\Cadastro\\Empresas"
Moveto [Codigo da Empresa]
Locate EMPRESA
If RetVal
   Then PREFIXO=Substr([Conta Contabil Empresa],1,3)
   Else PREFIXO="***"
EndIf

CARQ="\\Sistemas\\Exporta\\"
NARQ="MBC"+PREFIXO+AlinhM(StrVal(Month(VSDGDTINI)),2)
Deleta_Arquivo(CARQ+NARQ+".DBF")

Sort "\\Sistemas\\Ctacor\\MovBanco" on "LANC_MB"

{Tools} {ExportImport} {Export} {dBASE}
{2) dBASE III} {\\Sistemas\\Ctacor\\MovBanco}
TypeIn CARQ+NARQ Enter

Copia_Arquivo(CARQ+NARQ+".DBF "+CARQ+"Dados\\"+NARQ+".DBF")
Deleta_Arquivo(CARQ+NARQ+".DBF")

Empty ("\\Sistemas\\Ctacor\\MovBanco")

Moveto "Answer"
EditKey
EMPRESA   =[Codigo da Empresa]
CHEQUE    =[Numero do Cheque]
DTCHDESCTO=[Answer->Data Cheque Descontado]
VRCHEQUE  =0
C =1
CC=0
EndProc

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************
GERA_B()
If IsEmpty("Answer")
   Then MENSAGEM("N„o Existem Registros a Processar Banco !")
       Return
EndIf
Delete "Answer"
ClearAll
LimpAguarde()
Release Procs GravaCab_B,Gera_B,Grava_B
