;** LEDWRECB *******************************************************************
;*  Exportacao de Lancamentos Contabies p/ Ledware                             *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    :   /  /     por 
;Ultima Alteracao: 23/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Layout Filtro 
;Ultima Alteracao: 24/10/2011 por Bruno Carvalho
;Motivo Alteracao: Aguardando Ajustes "HISTOR"
;Ultima Alteracao: 18/11/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes contas de juros
;Ultima Alteracao: 10/08/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes conta debito/credito para saidas
;Ultima Alteracao: 20/08/2012 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes desprezar item notai cancalado

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

{Ask} {\\Sistemas\\Ctacor\\MovCont} Check
Moveto [Codigo da Empresa] TypeIn "~VSDGEMPRESA.."
Moveto [Tipo da Conta    ] TypeIn "X or C"
Moveto [Data             ] TypeIn ">= ~VSDGDTINI, <= ~VSDGDTFIM"
Moveto [Codigo da Conta  ] TypeIn "0012 Or 0028 Or 0026 Or 0016 Or 0237 Or 0015"
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

LANC_OK=True
NR=NRecords("Answer")                     
View "\\Sistemas\\Cadastro\\Destinat"
View "\\Sistemas\\Cadastro\\TpLanc"
View "\\Sistemas\\Ctacor\\PlContas"
View "\\Sistemas\\Ctacor\\Conta"
View "\\Sistemas\\Exporta\\LEDWRECB"
CoEdit "Answer"

CONTA   ="****"
CTATL   ="*"

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

   ;****** Localiza Conta Caixa/Banco *****
   If CONTA<>[Answer->Codigo da Conta]
      Then CONTA=[Answer->Codigo da Conta]
           Moveto "\\Sistemas\\Ctacor\\Conta"
           Moveto [Codigo da Conta]
           Locate CONTA
           If RetVal
              Then CDCXBC               = [Conta Contabil           ]
                   DEPOSITO_EFETUADO    = [CC Deposito Efetuado     ]
                   CHEQUE_TRANSITO      = [CC Cheques em Transito   ]
                   CHEQUE_CAIXA         = [CC Cheques p/ Caixa      ]
                   CHEQUES_NAPRES       = [CC Cheques Emitidos/NApre]
              Else CDCXBC               = "0000000000"
                   DEPOSITO_EFETUADO    = "0000000000"
                   CHEQUE_TRANSITO      = "0000000000"
                   CHEQUE_CAIXA         = "0000000000"
                   CHEQUES_NAPRES       = "0000000000"
                                          ;1234567890
           EndIf
   EndIf

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

   HISTOR =[Answer->Descricao do Historico]
                          
   ;****** Localiza Conta Destinatario\Emitente *****
   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 = "0000000000"
                                    ;1234567890
                           If [Answer->Sistema Gerador]<>""
                              Then HISTOR=HISTOR+" "+[Razao Social  ]
                           EndIf
                      Else If LTrim(RTrim([Conta Contabil]))<>""
                              Then CODRED = [Conta Contabil]
                           EndIf
                   EndIf
           EndIf
   EndIf

   ;; ***** CAIXA *****
   If [Answer->Tipo da Conta    ] = "X" And
      [Answer->Tipo da Conta Trf] = "C"
      Then ;****** Localiza Conta Banco *****
           Moveto "\\Sistemas\\Ctacor\\Conta"
           Moveto [Codigo da Conta]
           Locate [Answer->Codigo da Conta Trf]
           If RetVal
              Then If [Answer->Tipo de Operacao]="09"
                      Then If [Answer->Tipo do Lancamento]="O"
                              Then CODRED =[CC Cheques em Transito]
                              Else CODRED =[CC Cheques p/ Caixa   ]
                           EndIf
                   EndIf
                   If [Answer->Tipo de Operacao]="08"
                      Then CODRED =[CC Deposito Efetuado]
                   EndIf
           EndIf
   EndIf

   If [Answer->Tipo da Conta    ]="X"   And
      [Answer->Tipo da Conta Trf]="A"   And
      [Answer->Tipo de Operacao ]="01"
      Then  Moveto "\\Sistemas\\Ctacor\\Conta"
            Moveto [Codigo da Conta]
            Locate [Answer->Codigo da Conta Trf]
            If RetVal
               Then CODRED =[CC Aplicacoes Financeiras]
            EndIf
   EndIf

   ; ***** BANCO *****
   If [Answer->Tipo da Conta]="C" And
      [Answer->Tipo da Conta Trf]="C"
      Then CODRED = "1109010003"
                    ;1234567890
   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 CODRED = CHEQUE_TRANSITO
                      Else CODRED = CHEQUE_CAIXA
                   EndIf
           EndIf
           If [Answer->Tipo de Operacao]="09"
              Then CODRED = 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 CODRED = [CC Aplicacoes Financeiras]
               Else CODRED = "0000000000"
                             ;1234567890
            EndIf
   EndIf
   
   If [Answer->Tipo de Operacao]="13" ;Tarifa Bancaria
      Then Switch
             Case SYS_CODIGO_CLIENTE="0039": CODRED = "0000000000" ;Instituto
             OtherWise                     : CODRED = "0000000000"
           EndSwitch
   EndIf
                                                     
   plcontasok=False       
   If ([Answer->Tipo da Conta]="C" Or [Answer->Tipo da Conta]="X")  And
       [Answer->Tipo da Conta Trf]="" And
      ([Answer->Tipo de Operacao]="05" Or [Answer->Tipo de Operacao]="06" Or
       [Answer->Tipo de Operacao]="14" Or [Answer->Tipo de Operacao]="13")
       Then plcontasok=True
   EndIf
   If ([Answer->Tipo da Conta]="C" Or [Answer->Tipo da Conta]="X")  And
       [Answer->Tipo da Conta Trf]="" And
       [Answer->Tipo de Operacao]="07" And [Answer->Tipo do Lancamento]="L"
       Then plcontasok=True
   EndIf
   If plcontasok                            
       Then Moveto "\\Sistemas\\Ctacor\\Plcontas"
            Moveto [Codigo Plano_Conta]
            Locate [Answer->Codigo Plano_Conta]
            If RetVal
               Then If LTrim(RTrim([Conta Contabil]))<>""
                       Then CODRED = [Conta Contabil]
                    EndIf
            EndIf
   EndIf

   ;****** Gera Lancamento *****
   If [Answer->Tipo de Operacao]="05"
      Then HISTOR="CH "+[Answer->Numero do Cheque]+" "+HISTOR
   EndIf
  
   SeqLanc=SeqLanc+1 
   Grava_Registro("Lanc")

   ;********** Gera Lancamento de Descontos ***************

   If [Answer->Valor do Juros] > 0
      Then If [Answer->Tipo Movimento]="S"
              Then CODRED = "3301070006"
                   HISTOR = "PG JUROS "+[Answer->Tipo do Documento]+"-"+[Answer->Numero do Documento]
              Else CODRED = "3302020001"
                   HISTOR = "REC JUROS "+[Answer->Tipo do Documento]+"-"+[Answer->Numero do Documento]
           EndIf
           SeqLanc=SeqLanc+1
           Grava_Registro("Juros")
   EndIf

   Moveto "Answer"
EndScan

Do_It!
ClearAll
EndProc

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros Movimentos de Entrada                *
;*******************************************************************************
Proc GERA_E()
AGUARDE("Aguarde, Processando Dados Entrada de Notas")

;**** Nota de Entradas pelo Faturamento ******
SetDir "\\Sistemas\\Vendas"
View "\\Sistemas\\CtaCor\\Tmp_Parc"
View "\\Sistemas\\Vendas\\NotaI"
CoEdit "\\Sistemas\\Vendas\\NotaC"
Scan For [Situacao]<>"C" And [Tipo de Pagamento]="P" And
         [Tipo Movimento Estoque]="E"

  If [Data de Emissao]<VSDGDTINI Or
     [Data de Emissao]>VSDGDTFIM
     Then Loop
  EndIf
  If Search("COMPRA",[Descricao da Destinacao])=0
     Then Loop
  EndIf
  If Not IsBlank(VSDGEMPRESA)
     Then If [Codigo da Empresa]<>VSDGEMPRESA
             Then Loop
          EndIf
  EndIf

  VRTOT_ITENS=0
  Limpa_Array()
  Moveto "\\Sistemas\\Vendas\\NotaI"
  Moveto [Codigo da Empresa]
  Locate [NotaC->Codigo da Empresa], [NotaC->Numero do Documento], [NotaC->Serie do Documento]
  While [Codigo da Empresa  ]=[NotaC->Codigo da Empresa  ] And
        [Numero do Documento]=[NotaC->Numero do Documento] And
        [Serie do Documento ]=[NotaC->Serie do Documento ]

    If [Situacao_Item]<>"C" Then
        TIPO_ITEM=[Tipo do Item]
       ; If TIPO_ITEM="P" Or
       ;    TIPO_ITEM="M" Or
       ;    TIPO_ITEM="T" Or
       ;    TIPO_ITEM="O" Or
       ;    TIPO_ITEM=""
       ;    Then TIPO_ITEM="M"
       ; EndIf
        For q From 1 to 20
          If TpItem[q]=TIPO_ITEM Or TpItem[q]=""
             Then TpItem[q]  =TIPO_ITEM
                  VrTpItem[q]=VrTpItem[q]+(([Preco Total]+[Valor do IPI])-([Valor Desconto Total]+[Valor do INSS]))
                  QuitLoop
          EndIf
        EndFor
        VRTOT_ITENS=VRTOT_ITENS+(([Preco Total]+[Valor do IPI])-([Valor Desconto Total]+[Valor do INSS]))
    EndIf
    Skip
    If EOT() Then QuitLoop EndIf
  EndWhile

  VRDIF_NOTA      =[\Sistemas\Vendas\NotaC->Valor Nota Fiscal]-VRTOT_ITENS
  VRTOT_ITENS_NOVO=0

  Moveto "\\Sistemas\\CtaCor\\Tmp_Parc"
  For q From 1 to 20
    If TpItem[q]="" Then QuitLoop EndIf
    End
    Down
    [Codigo da Empresa  ]=[\Sistemas\Vendas\NotaC->Codigo da Empresa  ]
    [Codigo             ]=[\Sistemas\Vendas\NotaC->Codigo             ]
    [CGC                ]=[\Sistemas\Vendas\NotaC->CGC                ]
    [Tipo do Item       ]=TpItem[q]
    [Serie do Documento ]=[\Sistemas\Vendas\NotaC->Serie do Documento ]
    [Numero do Documento]=[\Sistemas\Vendas\NotaC->Numero do Documento]
    [Data de Emissao    ]=[\Sistemas\Vendas\NotaC->Data de Emissao    ]

    TAXA=VrTpItem[q]/VRTOT_ITENS
    VRACRES=NDecimal((VRDIF_NOTA*TAXA)/100,2)
    If VRDIF_NOTA<0
       Then VRACRES=VRACRES*-1
    EndIf
    [Preco Total]=VrTpItem[q]+VRACRES
    VRTOT_ITENS_NOVO=VRTOT_ITENS_NOVO+[Preco Total]
  EndFor
  If ([\Sistemas\Vendas\NotaC->Valor Nota Fiscal]-VRTOT_ITENS_NOVO)<>0
     Then [Preco Total]=[Preco Total]+([\Sistemas\Vendas\NotaC->Valor Nota Fiscal]-VRTOT_ITENS_NOVO)
  EndIf
  UnLockRecord
  Moveto "\\Sistemas\\Vendas\\NotaC"
EndScan
Do_It!
ClearAll

;**** Nota de Entradas pelo Estoque ******
SetDir "\\Sistemas\\Estoque"
View "\\Sistemas\\CtaCor\\Tmp_Parc"
View "\\Sistemas\\Estoque\\NotaEI"
CoEdit "\\Sistemas\\Estoque\\NotaEC"
Scan For ([Tipo de Operacao]="C" or [Tipo de Operacao]="A") And [Tipo de Pagamento]="P"

  If [Data de Entrada]<VSDGDTINI Or
     [Data de Entrada]>VSDGDTFIM
     Then Loop
  EndIf
  If Not IsBlank(VSDGEMPRESA)
     Then If [Codigo da Empresa]<>VSDGEMPRESA
             Then Loop
          EndIf
  EndIf

  VRTOT_ITENS=0
  Limpa_Array()
  Moveto "\\Sistemas\\Estoque\\NotaEI"
  Moveto [Numero do Lancamento]
  Locate [NotaEC->Numero do Lancamento]
  While [Numero do Lancamento]=[NotaEC->Numero do Lancamento]
    TIPO_ITEM=[Tipo do Item]
   ; If TIPO_ITEM="P" Or
   ;    TIPO_ITEM="M" Or
   ;    TIPO_ITEM="T" Or
   ;    TIPO_ITEM="O" Or
   ;    TIPO_ITEM=""
   ;    Then TIPO_ITEM="M"
   ; EndIf
    For q From 1 to 20
      If TpItem[q]=TIPO_ITEM Or TpItem[q]=""
         Then TpItem[q]  =TIPO_ITEM
              VrTpItem[q]=VrTpItem[q]+(([Preco Total]+[Valor do IPI])-[Valor Desconto Total])
              QuitLoop
      EndIf
    EndFor
    VRTOT_ITENS=VRTOT_ITENS+(([Preco Total]+[Valor do IPI])-[Valor Desconto Total])
    Skip
    If EOT() Then QuitLoop EndIf
  EndWhile

  VRDIF_NOTA      =[\Sistemas\Estoque\NotaEC->Valor Nota Fiscal]-VRTOT_ITENS
  VRTOT_ITENS_NOVO=0

  Moveto "\\Sistemas\\CtaCor\\Tmp_Parc"
  For q From 1 to 20
    If TpItem[q]="" Then QuitLoop EndIf
    End
    Down
    [Codigo da Empresa  ]=[\Sistemas\Estoque\NotaEC->Codigo da Empresa  ]
    [Codigo             ]=[\Sistemas\Estoque\NotaEC->Codigo             ]
    [CGC                ]=[\Sistemas\Estoque\NotaEC->CGC                ]
    [Tipo do Item       ]=TpItem[q]
    [Serie do Documento ]=[\Sistemas\Estoque\NotaEC->Serie do Documento ]
    [Numero do Documento]=[\Sistemas\Estoque\NotaEC->Numero do Documento]
    [Data de Emissao    ]=[\Sistemas\Estoque\NotaEC->Data de Emissao    ]

    TAXA=VrTpItem[q]/VRTOT_ITENS
    VRACRES=NDecimal((VRDIF_NOTA*TAXA)/100,2)
    If VRDIF_NOTA<0
       Then VRACRES=VRACRES*-1
    EndIf
    [Preco Total]=VrTpItem[q]+VRACRES
    VRTOT_ITENS_NOVO=VRTOT_ITENS_NOVO+[Preco Total]
  EndFor
  If ([\Sistemas\Estoque\NotaEC->Valor Nota Fiscal]-VRTOT_ITENS_NOVO)<>0
     Then [Preco Total]=[Preco Total]+([\Sistemas\Estoque\NotaEC->Valor Nota Fiscal]-VRTOT_ITENS_NOVO)
  EndIf
  UnLockRecord

  Moveto "\\Sistemas\\Estoque\\NotaEC"

EndScan
Do_It!
ClearAll

SetDir "\\Sistemas\\Exporta"
Copy "\\Sistemas\\CtaCor\\Tmp_Parc" "Answer"
If IsEmpty("Answer")
   Then Return
EndIf
Empty("\\Sistemas\\CtaCor\\Tmp_Parc")

Sort "Answer" on "Codigo da Empresa","Tipo do Item","Codigo",
                 "Serie do Documento","Numero do Documento"
ClearAll


LANC_OK=True
NR=NRecords("Answer")
View "\\Sistemas\\Cadastro\\Empresas"
View "\\Sistemas\\Cadastro\\Destinat"
View "\\Sistemas\\Estoque\\TpItem"
View "\\Sistemas\\Exporta\\LEDWRECB"
CoEdit "Answer"

SeqLanc  =8001
SeqLancPM=8000

TPITEM=[Tipo do Item      ]
CODIGO=[Codigo            ]
TpItem()
Fornecedor()
CDOC  =[Serie do Documento]
NDOCI =NumVal([Numero do Documento])
NDOCF =NumVal([Numero do Documento])-1
NDOCCB=NumVal([Numero do Documento])
HIST  =""
VALORT=0
VRLANC=0
ULTIMO_LANC_PM=False

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

  If TPITEM<>[Tipo do Item]
     Then MontaHist("E")
          ULTIMO_LANC_PM=True
          Grava_LCE()
          Grava_LDE()
          Muda_Fornecedor()
  EndIf

  If CODIGO<>[Codigo]
     Then MontaHist("E")
          Grava_LCE()
          Muda_Fornecedor()
  EndIf

  If CDOC<>[Serie do Documento]
     Then MontaHist("E")
          NDOCF =NumVal([Numero do Documento])-1
          Grava_LCE()
  EndIf

  If NumVal([Numero do Documento])<>NDOCCB
     Then If NumVal([Numero do Documento])<>(NDOCF+1)
             Then MontaHist("E")
          EndIf
  EndIf

  VRLANC=VRLANC+[Preco Total]
  VALORT=VALORT+[Preco Total]
  NDOCF =NumVal([Numero do Documento])

  NDOC  =[Numero do Documento]

EndScan
MontaHist("E")
ULTIMO_LANC_PM=True
Grava_LCE()
Grava_LDE()
Do_It!
ClearAll
EndProc

;*******************************************************************************
;* Rotina Localiza Tipo do Ittem p/ Debito da Entrada                          *
;*******************************************************************************
Proc TpItem()
Moveto "\\Sistemas\\Estoque\\TpItem"
Moveto [Tipo do Item]
Locate TPITEM
If RetVal
   Then CONTA_DB=[Conta Contabil]
   Else CONTA_DB="0000000000"
EndIf
Moveto "Answer"
EndProc

;*******************************************************************************
;* Rotina Localiza Fornecedor p/ Credito da Entrada                            *
;*******************************************************************************
Proc Fornecedor()
CONTA_CR="0000000000"
NOME_CR =""
CGC_CR  =""

Moveto "\\Sistemas\\Cadastro\\Destinat"
Moveto [Codigo]
Locate CODIGO
If RetVal
   Then If Not IsBlank([Conta Contabil])
           Then CONTA_CR=[Conta Contabil]
           Else CONTA_CR="0000000000"
        EndIf

        NOME_CR=[Nome Fantasia EmitDest]
        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_CR=WVR
                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_CR=WVR
                        EndIf
                EndIf
        EndIf
EndIf

Moveto "Answer"
EndProc

;*******************************************************************************
;* Rotina Mudanca de Fornecedor                                                *
;*******************************************************************************
Proc Muda_Fornecedor()
CODIGO=[Answer->Codigo]
NDOCF =NumVal([Answer->Numero do Documento])-1
Fornecedor()
DATALANC=VSDGDTFIM
HIST  =""
EndProc

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros Movimentos de Saida                  *
;*******************************************************************************
Proc GERA_S()
AGUARDE("Aguarde, Processando Dados Notas de Saida")

{Ask} {\\Sistemas\\Vendas\\NotaC} Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao        ] TypeIn ">= ~VSDGDTINI , <= ~VSDGDTFIM"
Moveto [Descricao da Destinacao] TypeIn "..VEND.."
Moveto [Tipo de Pagamento      ] TypeIn "P"
Moveto [Tipo Movimento Estoque ] TypeIn "S"
Moveto [Situacao               ] TypeIn "Not C"
Do_It!
ClearAll
If IsEmpty("Answer")
   Then Return
EndIf

Sort "Answer" on "Codigo da Empresa", "Serie do Documento",
                 "Data de Emissao", "Numero do Documento"
ClearAll

LANC_OK=True
NR=NRecords("Answer")
View "\\Sistemas\\Cadastro\\Empresas"
View "\\Sistemas\\Exporta\\LEDWRECB"
CoEdit "Answer"

DATALANC=[Data de Emissao  ]
NDOCI   =NumVal([Numero do Documento])
NDOCF   =NumVal([Numero do Documento])-1
CDOC    =[Serie do Documento ]
HIST    =""
VALORT  =0
VRLANC  =0
ULTIMO_LANC_PM=False

CONTA_DB="0000000000"
CONTA_CR="0000000000"
SeqLanc  =9001
SeqLancPM=9000

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

  If DATALANC<>[Data de Emissao]
     Then MontaHist("S")
          Grava_LDS()
  EndIf

  If CDOC<>[Serie do Documento]
     Then MontaHist("S")
          NDOCF =NumVal([Numero do Documento])-1
          Grava_LDS()
  EndIf

  If NumVal([Numero do Documento])<>(NDOCF+1)
     Then MontaHist("S")
  EndIf

  VRLANC=VRLANC+[Valor Nota Fiscal]
  VALORT=VALORT+[Valor Nota Fiscal]
  NDOCF =NumVal([Numero do Documento])

  NDOC  =[Numero do Documento]

EndScan
MontaHist("S")
ULTIMO_LANC_PM=True
Grava_LDS()
Grava_LCS()
Do_It!
ClearAll
EndProc

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros Titulos Emitidos                     *
;*******************************************************************************
Proc GERA_TIT()
AGUARDE("Aguarde, Processando Dados Titulos Emitidos")

{Ask} {\\Sistemas\\Ctarec\\Duplic} Check
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao        ] TypeIn ">= ~VSDGDTINI , <= ~VSDGDTFIM"
Do_It!
ClearAll
If IsEmpty("Answer")
   Then Return
EndIf

Sort "Answer" on "Codigo da Empresa", "Serie do Documento",
                 "Data de Emissao", "Numero do Documento"
ClearAll

LANC_OK=True
NR=NRecords("Answer")
View "\\Sistemas\\Cadastro\\Destinat"
View "\\Sistemas\\Exporta\\LEDWRECB"
CoEdit "Answer"

CONTA_DB=""
CONTA_CR="0000000000"
SeqLanc  =9001
SeqLancPM=0

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

 CODIGO=[Codigo do Destinatario]
 CONTA_DB="0000000000"
 NOME_DB =""
 CGC_DB  =""

 Moveto "\\Sistemas\\Cadastro\\Destinat"
 Moveto [Codigo]
 Locate CODIGO
 If RetVal
    Then If Not IsBlank([Conta Contabil])
            Then CONTA_DB=[Conta Contabil]
            Else CONTA_DB="0000000000"
         EndIf

         NOME_DB=[Nome Fantasia EmitDest]
         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_DB=WVR
                 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_DB=WVR
                         EndIf
                 EndIf
         EndIf
 EndIf
 Moveto "Answer"
 HISTOR="HONORARIO GERADO "+[Tipo do Documento]+"/"+[Numero do Documento]+" - "+NOME_DB

 ;****** Gera Lancamento *****
 Grava_Registro("TIT1")
 SeqLanc=SeqLanc+1

EndScan
Do_It!
ClearAll

AGUARDE("Aguarde, Processando Dados Titulos Baixados")

{Ask} {\\Sistemas\\Ctarec\\Duplic} Check
Moveto [Numero do Lancamento   ] Example "nlanc"
Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
Moveto [Data de Emissao        ] TypeIn ">= ~VSDGDTINI , <= ~VSDGDTFIM"
{Ask} {\\Sistemas\\Ctarec\\DupBaixa} Check
Moveto [Numero do Lancamento   ] Example "nlanc"
Moveto [Data do Pagamento      ] TypeIn ">= ~VSDGDTINI , <= ~VSDGDTFIM"
Do_It!
ClearAll
If IsEmpty("Answer")
   Then Return
EndIf

Sort "Answer" on "Codigo da Empresa", "Serie do Documento",
                 "Data do Pagamento", "Numero do Documento"
ClearAll

LANC_OK=True
NR=NRecords("Answer")
View "\\Sistemas\\Cadastro\\Destinat"
View "\\Sistemas\\Exporta\\LEDWRECB"
CoEdit "Answer"

TOT_BAIXAS=0
TOT_OUTROS=0
Scan
  Barra(NR, RecNo())
  AGUARDE("Aguarde, Exportando Dados Titulos Baixados "+BARRA_STRING)

  If [Tipo da Baixa]="NORMAL"
     Then TOT_BAIXAS=TOT_BAIXAS+([Valor do Recebimento]+[Valor do Desconto])
          Loop
  EndIF

  TOT_OUTROS=TOT_OUTROS+([Valor do Recebimento]+[Valor do Desconto])

  CODIGO=[Codigo do Destinatario]

  CONTA_DB="0000000000"
  CONTA_CR="0000000000"
  NOME_CR =""
  CGC_CR  =""

  Moveto "\\Sistemas\\Cadastro\\Destinat"
  Moveto [Codigo]
  Locate CODIGO
  If RetVal
     Then If Not IsBlank([Conta Contabil])
             Then CONTA_CR=[Conta Contabil]
             Else CONTA_CR="0000000000"
          EndIf

          NOME_CR=[Nome Fantasia EmitDest]
          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_CR=WVR
                  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_CR=WVR
                          EndIf
                  EndIf
          EndIf
  EndIf
  Moveto "Answer"
  HISTOR="HONORARIO "+[Tipo da Baixa]+" "+[Tipo do Documento]+"/"+[Numero do Documento]+" - "+NOME_DB
  VR=[Valor do Recebimento]+[Valor do Desconto]

 ;****** Gera Lancamento *****
 Grava_Registro("TIT2")
 SeqLanc=SeqLanc+1

EndScan

For wi From 1 to 1

 Switch
   Case TOT_BAIXAS>0:
     CONTA_DB="0000000000"
     CONTA_CR="0000000000"
     HISTOR="RECEBIMENTOS HONORARIO DE "+StrVal(VSDGDTINI)+" ATE"+StrVal(VSDGDTFIM)
     VR=TOT_BAIXAS
   Case TOT_OUTROS>0:
     CONTA_DB="0000000000"
     CONTA_CR="0000000000"
     HISTOR="CANCELAMENTOS/DEVOLUCOES DE HONORARIO DE "+StrVal(VSDGDTINI)+" ATE"+StrVAl(VSDGDTFIM)
     VR=TOT_OUTROS
   OtherWise: Loop
 EndSwitch

 ;****** Gera Lancamento *****
 Grava_Registro("TIT3")
 SeqLanc=SeqLanc+1
EndFor

Do_It!
ClearAll
EndProc

;*******************************************************************************
;* Rotina Gravacao do Lancamento Debito p/ Saidas                              *
;*******************************************************************************
Proc Grava_LDS()

If Search(",", HIST)>0 Or
   Search("a", HIST)>0
   Then HISTOR=AlinhM(StrVal(DATALANC),10)+" VR. NF's "+CDOC+" "+HIST
   Else HISTOR=StrVal(DATALANC)+" VR. NF "+CDOC+" "+HIST
EndIf

Grava_Registro("LDS")
SeqLanc=SeqLanc+1

Moveto "Answer"
DATALANC=[Answer->Data de Emissao ]
CDOC    =[Serie do Documento ]
NDOCF   =NumVal([Numero do Documento])-1
HIST    =""
VRLANC=0
EndProc

;*******************************************************************************
;* Rotina Gravacao do Lancamento Credito p/ Saidas e Totalizadores             *
;*******************************************************************************
Proc Grava_LCS()

HISTOR="VR VENDAS A PRAZO CF REGISTRO EM "+AlinhM(StrVal(Month(VSDGDTFIM)),2)+"/"+StrVal(Year(VSDGDTFIM))
Grava_Registro("LCS")
SeqLanc=SeqLanc+2

Moveto "Answer"
VALORT  =0

SeqLancPM=SeqLanc-1
ULTIMO_LANC_PM=False
EndProc

;*******************************************************************************
;* Rotina p/ Montar Historico                                                  *
;*******************************************************************************
Proc MontaHist(TIPO_MOVIMENTO)
Private NHIST, TIPO_MOVIMENTO
While True
  NHIST=HIST
  If NDOCI=NDOCF
     Then If NHIST=""
             Then NHIST=NHIST+StrVal(NDOCI)
             Else NHIST=NHIST+", "+StrVal(NDOCI)
          EndIf
     Else If NHIST=""
             Then If (NDOCI+1)=NDOCF
                     Then NHIST=NHIST+StrVal(NDOCI)+", "+StrVal(NDOCF)
                     Else NHIST=NHIST+StrVal(NDOCI)+" a "+StrVal(NDOCF)
                  EndIf
             Else If (NDOCI+1)=NDOCF
                     Then NHIST=NHIST+", "+StrVal(NDOCI)+", "+StrVal(NDOCF)
                     Else NHIST=NHIST+", "+StrVal(NDOCI)+" a "+StrVal(NDOCF)
                  EndIf
          EndIf
  EndIf
  If TIPO_MOVIMENTO="E"
     Then If (Len(NHIST)+Len(NOME_CR)+2)>200
             Then Grava_LCE()
             Else QuitLoop
          EndIf
     Else If Len(NHIST)>200
             Then Grava_LDS()
             Else QuitLoop
          EndIf
  EndIf

EndWhile
HIST  =NHIST
NDOCI =NumVal([Numero do Documento])
NDOCCB=NumVal([Numero do Documento])
EndProc

;*******************************************************************************
;* Rotina Gravacao do Lancamento Debito p/ Entrada e Totalizadores             *
;*******************************************************************************
Proc Grava_LDE()

HISTOR="VR NF's A PRAZO CF REGISTRO EM "+AlinhM(StrVal(Month(VSDGDTFIM)),2)+"/"+StrVal(Year(VSDGDTFIM))
Grava_Registro("LDE")

SeqLanc=SeqLanc+2

Moveto "Answer"
TPITEM  =[Tipo do Item]
DATALANC=VSDGDTFIM
VALORT  =0

TpItem()
SeqLancPM=SeqLanc-1
ULTIMO_LANC_PM=False
EndProc

;*******************************************************************************
;* Rotina Gravacao do Lancamento Credito p/ Entrada                            *
;*******************************************************************************
Proc Grava_LCE()
    
Grava_Registro("LCE")
SeqLanc=SeqLanc+1

Moveto "Answer"
CODIGO=[Codigo]
CDOC  =[Serie do Documento ]
NDOCF =NumVal([Numero do Documento])-1
HIST  =""
VRLANC=0

EndProc

;*******************************************************************************
;* ROTINA LIMPA_ARRAY                                                          *
;*******************************************************************************
Proc Limpa_Array()
For q from 1 to 20
  TpItem[q]=""
  VrTpItem[q]=BlankNum()
EndFor
EndProc

;******************************************************************************
; CONVERTE DATA DE GRAVACAO PARA STRING                                       *
;******************************************************************************
PROC DATA2STR_S2(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

;*******************************************************************************
;* Rotina para Gravar Registro em Tabela                                       *
;*******************************************************************************
Proc Grava_Registro(MODO)
Private MODO

Moveto "LEDWRECB"
End Down

Switch ; Sequencia
  Case MODO="Lanc" Or
       MODO="Juros" : [SeqLanc  ]=ALINHM(StrVal(SeqLanc),4) 
  Case MODO="LDE"  Or         
       MODO="LCS"   : [SeqLancPM]=ALINHM(StrVal(SeqLancPM),4)
  Case MODO="LCE"  Or
       MODO="LDS"  Or
       MODO="TIT1" Or
       MODO="TIT2" Or
       MODO="TIT3"  : [SeqLanc  ]=ALINHM(StrVal(SeqLanc),4)
                      [SeqLancPM]=ALINHM(StrVal(SeqLancPM),4)
Endswitch                          

Switch ; Data   
  Case MODO="Lanc" Or
       MODO="Juros" : [DATA]=[Answer->Data]               
  Case MODO="TIT1"  : [DATA]=[Data de Emissao]
  Case MODO="TIT2"  : [DATA]=[Data do Pagamento]           
  Case MODO="LDE"  Or
       MODO="LCE"  Or
       MODO="LDS"  Or
       MODO="LCS"  Or
       MODO="TIT3"  : [DATA]=VSDGDTFIM  
Endswitch

[NDOC   ]="AUTO"
[CLP    ]="    "

Switch ; CCDEBITO / CCCREDITO
  Case MODO="LDE"  Or
       MODO="LCS"   : [CCDEBITO ]=CONTA_DB
                      [CCCREDITO]="0000000000"              
  Case MODO="LCE"  Or
       MODO="LDS"  Or
       MODO="TIT1" Or 
       MODO="TIT2" Or
       MODO="TIT3"  : [CCDEBITO ]=CONTA_DB
                      [CCCREDITO]=CONTA_CR               
  Case MODO="Lanc"Or
       MODO="Juros" : If [Answer->Tipo Movimento]="S"
                         Then [CCDEBITO ]=CODRED
                              [CCCREDITO]=CDCXBC
                         Else [CCCREDITO]=CODRED
                              [CCDEBITO ]=CDCXBC
                      EndIf      
Endswitch    

Switch ; Valor
  Case MODO="Lanc"  : If [Answer->Valor do Juros]>0
                         Then [VALOR] = [Answer->Valor]-[Answer->Valor do Juros]
                         Else [VALOR] = [Answer->Valor]
                      EndIf 
  Case MODO="Juros" : [VALOR]=[Answer->Valor do Juros]
  Case MODO="LDE"  Or
       MODO="LCS"   : [VALOR]=VALORT
  Case MODO="LCE"  Or          
       MODO="LDS"   : [VALOR]=VRLANC
  Case MODO="TIT1"  : [VALOR]=[Valor do Documento]    
  Case MODO="TIT2" Or
       MODO="TIT3"  : [VALOR]=VR                     
EndSwitch
                           
[HIST    ]="000"
[COMPHIST]=HISTOR
[PARTIDA ]="S"
[CUSTO   ]="000"
[CUSTOCR ]="000" 

EndProc ; Grava_Registro()

;*******************************************************************************
;* ROTINA PRINCIPAL                                                            *
;*******************************************************************************

Empty("\\Sistemas\\CtaCor\\Tmp_Parc")

;****** Localiza Empresa *****
SeqLanc=4000

Array TpItem[20]
Array VrTpItem[20]

LANC_OK=False
GERA_C()
;GERA_E()
;If SYS_CODIGO_CLIENTE="0092"
;   Then GERA_TIT()
;   Else GERA_S()
;EndIf
Delete "Answer"
ClearAll
LimpAguarde()
Release Procs Gera_C, Gera_E, Grava_LDE, Grava_LCE, Grava_LCTE, MontaHist,Limpa_Array
