;** Rm_0212 *******************************************************************
;*  Sintetico III p/ Plano de Contas/Anual                                    *
;******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 29/05/2019 por Anivel Augusto Rodrigues
;Ultima Alteracao: 16/07/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao rateio                                       
;Ultima Alteracao: 14/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes TG_OPPLCONTAS, CheckTG_OPPLCONTAS[1]
;Ultima Alteracao: 15/05/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes titulo showdialog              

;*******************************************************************************
;* Rotina p/ Selecionar e Order Registros                                      *
;*******************************************************************************
Proc RealizadoB()
ClearAll

If not IsEmpty("Answer")
  then
       Edit "Answer"
       scan
         if not isblank([RT_Codigo Plano_Conta    ])
            then       
                 [Valor                 ]=[RT_Valor                 ]
                 [Codigo Plano_Conta    ]=[RT_Codigo Plano_Conta    ]     
                 [Descricao Plano_Conta ]=[RT_Descricao Plano_Conta ]
                 [Codigo CCusto         ]=[RT_Codigo CCusto         ]   
                 [Descricao CCusto      ]=[RT_Descricao CCusto      ]
                 [Valor do Juros        ]=BlankNum()     
                 [Valor do Desconto     ]=BlankNum()     
         endif
       endscan
       Do_It!
       ClearAll
       
endif
EstruturaDaTabelaNoKey("Answer","MovCont")
        
{ask} {Answer} check
Moveto [Codigo Plano_Conta    ] TypeIn PLCONTAS
Do_It!
ClearAll

endproc

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc Realizado()
private wcc

ClearAll

If IsTable("\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont")  
   then
        For wcc From 1 To 5
          {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont" Enter Check
          Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
          
          Switch
            Case wcc=1: Moveto [Tipo Movimento     ] TypeIn "E"      ;Entradas
                        Moveto [Tipo da Conta      ] TypeIn "Not C"  ;Caixa/Aplicacao
        
            Case wcc=2: Moveto [Tipo Movimento     ] TypeIn "S"      ; Saidas
                        Moveto [Tipo da Conta      ] TypeIn "Not C"  ;Caixa/Aplicacao
        
            Case wcc=3: Moveto [Tipo Movimento     ] TypeIn "E"      ; Entradas
                        Moveto [Tipo da Conta      ] TypeIn "C"      ; Conta Corrente  
        
            Case wcc=4: Moveto [Tipo Movimento     ] TypeIn "S"      ; Saidas
                        Moveto [Tipo da Conta      ] TypeIn "C"      ; Conta Corrente
                        Moveto [Tipo de Operacao   ] TypeIn "Not 05, Not 08"  ; menos cheques
        
            Case wcc=5: Moveto [Tipo Movimento     ] TypeIn "S"      ; Saidas
                        Moveto [Tipo da Conta      ] TypeIn "C"      ; Conta Corrente
                        Moveto [Tipo de Operacao   ] TypeIn "08"     ; Transferencias           
                        Moveto [Tipo do Lancamento ] TypeIn "O or P" ; menos cheques
        
          EndSwitch
          
          If VSDGOPDTEMISCOMP="1"
             Then Moveto [Data            ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
             Else Moveto [Data            ] Check
                  Moveto [Data Competencia] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM, as Data"
          EndIf   
          
          switch
            case CheckTG_OPPLCONTAS[1] :
              Moveto [Numero do Lancamento  ]       TypeIn       "_nl!"
              
              {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovRat" Enter
              Moveto [Numero do Lancamento  ]       TypeIn       "_nl, as \"RT_Numero do Lancamento\""
              Moveto [Sequencia da Baixa    ] check TypeIn            "as \"RT_Sequencia da Baixa\""
              Moveto [Sequencia do Rateio   ] check TypeIn            "as \"RT_Sequencia do Rateio\""
              Moveto [Codigo Plano_Conta    ] check TypeIn "not blank, as \"RT_Codigo Plano_Conta\""
              Moveto [Descricao Plano_Conta ] check TypeIn            "as \"RT_Descricao Plano_Conta\""
              Moveto [Codigo CCusto         ] check TypeIn            "as \"RT_Codigo CCusto\""
              Moveto [Descricao CCusto      ] check TypeIn            "as \"RT_Descricao CCusto\""
              Moveto [Porcentagem           ] check TypeIn            "as \"RT_Porcentagem\""
              Moveto [Valor                 ] check TypeIn            "as \"RT_Valor\""
              Do_It!
              ClearAll
              RealizadoB()
            
            otherwise              :
              Moveto [Codigo Plano_Conta    ] TypeIn PLCONTAS
              Do_It!
              ClearAll
            
          endswitch

          if CheckTG_OPCTATRANSF[2]
             then
                  {Ask} {Answer} TypeIn "Fast Delete"
                  Moveto [Codigo da Conta Trf    ] TypeIn "not blank"
                  Do_It!
                  ClearAll
          endif    
  
          {Ask} {Answer} TypeIn "Fast"
          Moveto [Tipo Movimento         ] TypeIn "E"
          Moveto [Codigo da Conta Trf    ] TypeIn "not blank"
          Moveto [Codigo Plano_Conta     ] TypeIn "Changeto 1.AAAAA5"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * TRANSFERENCIAS ENTRE CONTAS\""
          Do_It!
          ClearAll

          {Ask} {Answer} TypeIn "Fast"
          Moveto [Tipo Movimento         ] TypeIn "E"
          Moveto [Codigo da Conta Trf    ] TypeIn "blank"
          Moveto [Codigo Plano_Conta     ] TypeIn "Blank, Changeto 1.AAAAA9"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * ENTRADAS SEM PLANO DE CONTA\""
          Do_It!
          ClearAll
  
          {Ask} {Answer} TypeIn "Fast"
          Moveto [Tipo Movimento         ] TypeIn "S"
          Moveto [Codigo da Conta Trf    ] TypeIn "not blank"
          Moveto [Codigo Plano_Conta     ] TypeIn "Changeto 5.AAAAA5"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * TRANSFERENCIAS ENTRE CONTAS\""
          Do_It!
          ClearAll

          {Ask} {Answer} TypeIn "Fast"
          Moveto [Tipo Movimento         ] TypeIn "S"
          Moveto [Codigo da Conta Trf    ] TypeIn "blank"
          Moveto [Codigo Plano_Conta     ] TypeIn "Blank, Changeto 5.AAAAA9"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * SAIDAS SEM PLANO DE CONTA\""
          Do_It!
          ClearAll
          AdicionaDados()
          
        endfor
endif

endproc

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc ChequesEmitidos()
private wcc

ClearAll

if IsTable("\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont")  
   then 
        ;--- Cheques descontados no periodo --------------------------------------------
        For wcc From 1 To 2
          {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont" Enter Check
          Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2.."
          Moveto [Tipo da Conta         ] TypeIn "C"
          Moveto [Tipo Movimento        ] TypeIn "S"
          Switch
            Case wcc=1:  Moveto [Tipo de Operacao      ] TypeIn "05"
        
            Case wcc=2:  Moveto [Tipo de Operacao      ] TypeIn "08"
                         Moveto [Tipo do Lancamento    ] TypeIn "M or N"
          
          EndSwitch

          If VSDGOPDTEMISCOMP="1"
             Then Moveto [Data                  ] Check
                  Moveto [Data Cheque Descontado] TypeIn ">=~VSDGDTREF, <=~VSDGDTFIM, as Data"
             Else Moveto [Data                  ] Check
                  Moveto [Data Competencia      ] TypeIn ">=~VSDGDTREF, <=~VSDGDTFIM"
                  Moveto [Data Cheque Descontado] TypeIn ">=~VSDGDTREF, <=~VSDGDTFIM, as Data"
          EndIf   

          switch
            case CheckTG_OPPLCONTAS[1] :
              Moveto [Numero do Lancamento  ]       TypeIn       "_nl!"
              
              {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovRat" Enter
              Moveto [Numero do Lancamento  ]       TypeIn       "_nl, as \"RT_Numero do Lancamento\""
              Moveto [Sequencia da Baixa    ] check TypeIn            "as \"RT_Sequencia da Baixa\""
              Moveto [Sequencia do Rateio   ] check TypeIn            "as \"RT_Sequencia do Rateio\""
              Moveto [Codigo Plano_Conta    ] check TypeIn "not blank, as \"RT_Codigo Plano_Conta\""
              Moveto [Descricao Plano_Conta ] check TypeIn            "as \"RT_Descricao Plano_Conta\""
              Moveto [Codigo CCusto         ] check TypeIn            "as \"RT_Codigo CCusto\""
              Moveto [Descricao CCusto      ] check TypeIn            "as \"RT_Descricao CCusto\""
              Moveto [Porcentagem           ] check TypeIn            "as \"RT_Porcentagem\""
              Moveto [Valor                 ] check TypeIn            "as \"RT_Valor\""
              Do_It!
              ClearAll
              RealizadoB()
            
            otherwise              :
              Moveto [Codigo Plano_Conta    ] TypeIn PLCONTAS
              Do_It!
              ClearAll
            
          endswitch

          {Ask} {Answer} TypeIn "Fast"
          Moveto [Tipo Movimento         ] TypeIn "S"
          Moveto [Codigo da Conta Trf    ] TypeIn "not blank"
          Moveto [Codigo Plano_Conta     ] TypeIn "Changeto 5.AAAAA5"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * TRANSFERENCIAS ENTRE CONTAS\""
          Do_It!
          ClearAll

          {Ask} {Answer} TypeIn "Fast"
          Moveto [Codigo Plano_Conta     ] TypeIn "Blank, Changeto 5.AAAAA9"
          Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"  * SAIDAS SEM PLANO DE CONTA\""
          Do_It!
          ClearAll
          AdicionaDados()
        
        EndFor
endif   

EndProc     ;  

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc AdicionaDados()
private wi, mesano, coluna, anoant

if isempty("Answer")
   then return
endif    

anoant=blankdate()

Coedit Tabela, "Answer"
scan
  if year([Answer->Data])<>anoant
     then 
          anoant=year([Answer->Data])

          mesano=strval(year([Data]))
          
          coluna=0
          for wi from 1 to 5 
            if mesano=Array_MesAno[wi]
               then coluna=wi
                    quitloop
            endif        
          endfor
  endif

  if coluna>0
     then
          moveto tabela
          moveto [Codigo Plano_Conta]
          locate [Answer->Codigo Plano_Conta]
          if not retval
             then end
                  down
                  [Codigo da Empresa     ]=VSDGEMPRESA2
                  [Codigo Plano_Conta    ]=[Answer->Codigo Plano_Conta    ]
                  [Descricao Plano_Conta ]=[Answer->Descricao Plano_Conta ]
          endif
        
          [Tipo Movimento        ]=[Answer->Tipo Movimento        ]
          switch
            case coluna=1  : [coluna1 ]=[coluna1 ]+[Answer->Valor]  
            case coluna=2  : [coluna2 ]=[coluna2 ]+[Answer->Valor]  
            case coluna=3  : [coluna3 ]=[coluna3 ]+[Answer->Valor]  
            case coluna=4  : [coluna4 ]=[coluna4 ]+[Answer->Valor]  
            case coluna=5  : [coluna5 ]=[coluna5 ]+[Answer->Valor]  
          endswitch
                  
  endif   

  moveto "answer"

endscan
do_it!
ClearAll

endproc

;*******************************************************************************
;* Rotina p/ Processar Registros                                               *
;*******************************************************************************
Proc Processa()
private c1, c2, c3, c4, i, plok
ClearAll

Aguarde("Processando dados")

{Ask} {PlContas}
Moveto [Codigo Plano_Conta    ] Example "cpl"
Moveto [Descricao Plano_Conta ] Example "dpl"
Moveto [Tipo de Conta         ] Example "tpc"
Moveto [TipoEntradaSaida      ] Example "tpm"
{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo Plano_Conta    ] Example "cpl"
Moveto [Descricao Plano_Conta ] TypeIn "Changeto " Example "dpl"
Moveto [Tipo de Conta         ] typein "changeto " Example "tpc"
Moveto [Tipo Movimento        ] typein "changeto " Example "tpm"
Do_It!
ClearAll

{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Codigo Plano_Conta     ] TypeIn "Blank, Changeto 00"
Moveto [Descricao Plano_Conta  ] TypeIn "Changeto \"LANCAMENTOS NŽO INFORMADO PLANO DE CONTA =\""
Do_It!
ClearAll

{Ask} typeIn tabela enter check
do_it!
Clearall

CoEdit tabela, "answer"
SetHighLight Current Record 23 Field 31
moveto [Codigo PLano_Conta]
scan for search(".AA",[Codigo Plano_Conta])=0

  c1=SubStr([Answer->Codigo Plano_Conta],01,01)
  c2=SubStr([Answer->Codigo Plano_Conta],01,03)
  c3=SubStr([Answer->Codigo Plano_Conta],01,06)
  c4=SubStr([Answer->Codigo Plano_Conta],01,09)
  c5=       [Answer->Codigo Plano_Conta]         
  
  moveto tabela
  For i From 1 To 4
  
    plok=false
    Moveto [Codigo Plano_Conta]
    Switch
      Case i=1:
           If Not IsBlank(SubStr(c2,02,02))
              Then Locate c1
                   If RetVal
                      Then plok=true
                   EndIf
           EndIf
      Case i=2:
           If Not IsBlank(SubStr(c3,04,03))
              Then Locate c2
                   If RetVal
                      Then plok=true
                   EndIf
           EndIf
      Case i=3:
           If Not IsBlank(SubStr(c4,07,03))
              Then Locate c3
                   If RetVal
                      Then plok=true
                   EndIf
           EndIf
      Case i=4:
           If Not IsBlank(SubStr(c5,10,04))
              Then Locate c4
                   If RetVal
                      Then plok=true
                   EndIf
           EndIf
    EndSwitch
    
    if plok
       then
            [Coluna1  ]=[Coluna1  ]+[Answer->Coluna1  ]
            [Coluna2  ]=[Coluna2  ]+[Answer->Coluna2  ]
            [Coluna3  ]=[Coluna3  ]+[Answer->Coluna3  ]
            [Coluna4  ]=[Coluna4  ]+[Answer->Coluna4  ]
            [Coluna5  ]=[Coluna5  ]+[Answer->Coluna5  ]
  
    endif     
    
  EndFor

  moveto "answer"

Endscan
Do_It!
ClearAll

Sort Tabela On "Codigo Plano_conta"
ClearAll

CoEdit tabela
scan

  if [Codigo Plano_Conta]="0"       and [Descricao Plano_Conta]="SALDO INICIAL" then loop endif
  if [Codigo Plano_Conta]="9999999" and [Descricao Plano_Conta]="SALDO FINAL"   then loop endif

  [Total]=[coluna1 ]+[coluna2 ]+[coluna3 ]+[coluna4 ]+[coluna5 ]

endscan
Do_It!
ClearAll

If CheckTG_OPCTAANALITICA[1]
   then
        {Ask} TypeIn Tabela Enter TypeIn "Fast Delete"
        Moveto [Tipo de Conta  ] TypeIn "A" 
        Do_It!
        ClearAll
endif   

if CheckTG_OPCTATRANSF[1]
   then
        {Ask} TypeIn Tabela Enter TypeIn "Fast Delete"
        Moveto [Codigo Plano_Conta     ] TypeIn "\"1.AAAAA5\" or \"5.AAAAA5\""
        Do_It!
        ClearAll
endif    

{Ask} TypeIn Tabela Enter TypeIn "Fast"
Moveto [Coluna1                ] TypeIn "0, Changeto Blank" Down
Moveto [Coluna2                ] TypeIn "0, Changeto Blank" Down
Moveto [Coluna3                ] TypeIn "0, Changeto Blank" Down
Moveto [Coluna4                ] TypeIn "0, Changeto Blank" Down
Moveto [Coluna5                ] TypeIn "0, Changeto Blank" Down
Do_It!
ClearAll

;***** Ajusta Dados ************************************
If VSDGEMPRESA="0000"
   Then {Ask} TypeIn Tabela Enter TypeIn "Fast"
        Moveto [Codigo da Empresa      ] TypeIn "changeto 0000"
        Moveto [Nome Fantasia Empresa  ] TypeIn "changeto TOTALIZA EMPRESAS"
        Do_It!
        ClearAll
   else
        {Ask} {\\Sistemas\\Cadastro\\Empresas}
        Moveto [Codigo da Empresa     ] Example "cde"
        Moveto [Nome Fantasia Empresa ] Example "nfe"
        {Ask} TypeIn Tabela Enter TypeIn "Fast"
        Moveto [Codigo da Empresa     ] Example "cde"
        Moveto [Nome Fantasia Empresa ] TypeIn "changeto _nfe"
        Do_It!
        ClearAll
EndIf

EndProc     ;  (Processa)

;*******************************************************************************
;*                                                                             *
;*******************************************************************************
Proc MontaTabela()

{Ask} {PlContas}
Moveto [Codigo Plano_Conta    ] Example "cpl" typeIn ", ~VSDGPLCONTAS.."
Moveto [Descricao Plano_Conta ] Example "dpl"
Moveto [Tipo de Conta         ] Example "tpc"
Moveto [TipoEntradaSaida      ] Example "tpm"
Moveto [Inativo               ] TypeIn "Not S"  
{Ask} TypeIn Tabela Enter TypeIn "Fast Insert"
Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA2"
Moveto [Codigo Plano_Conta    ] Example "cpl"
Moveto [Descricao Plano_Conta ] Example "dpl"
Moveto [Tipo de Conta         ] Example "tpc"
Moveto [Tipo Movimento        ] Example "tpm"
Do_It!
ClearAll

EndProc ;MontaTabela()

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
TECLA=""
MSG_CAMPO=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESATE"     : Campo="NO"
            Case Campo="TG_PLCONTAS"      : Campo="TG_EMPRESATE"
            Case Campo="TG_OPPLCONTAS"    : Campo="TG_PLCONTAS"
            Case Campo="TG_OPDTEMISCOMP"  : Campo="TG_OPPLCONTAS"
            Case Campo="TG_ANOINI"        : Campo="TG_OPDTEMISCOMP"
            Case Campo="TG_ANOFIM"        : Campo="TG_ANOINI"
            Case Campo="TG_MESINI"        : Campo="TG_ANOFIM"
            Case Campo="TG_MESFIM"        : Campo="TG_MESINI"
            Case Campo="TG_OPCTAANALITICA": Campo="TG_MESFIM"
            case Campo="TG_OPCTATRANSF"   : Campo="TG_OPCTAANALITICA"
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESATE"
          EndSwitch
    Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_EMPRESATE"    :
                         If IsBlank(VSDGEMPRESA)
                            Then Mensagem("Informe uma Empresa !")
                            Else Campo="TG_PLCONTAS"
                         EndIf
                         
                    Case Campo="TG_PLCONTAS"     : Campo="TG_OPPLCONTAS"
                    Case Campo="TG_OPPLCONTAS"   : Campo="TG_OPDTEMISCOMP"
                    Case Campo="TG_OPDTEMISCOMP"  : Campo="TG_ANOINI"                         
                    Case Campo="TG_ANOINI"        : VSDGANOINI=ControlValue("TG_ANOINI") Campo="TG_ANOFIM"
                    Case Campo="TG_ANOFIM"        : VSDGANOFIM=ControlValue("TG_ANOFIM") Campo="TG_MESINI"
                    Case Campo="TG_MESINI"        : VSDGMESINI=ControlValue("TG_MESINI") Campo="TG_MESFIM"
                    Case Campo="TG_MESFIM"        : VSDGMESFIM=ControlValue("TG_MESFIM") Campo="TG_OPCTAANALITICA"
                    Case Campo="TG_OPCTAANALITICA": Campo="TG_OPCTATRANSF"
                    case Campo="TG_OPCTATRANSF"   : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_EMPRESATE":  MSG_CAMPO="Informe uma Empresa"
  Case Campo="TG_ANOINI"   :  MSG_CAMPO="Informe o ano inicial"
  Case Campo="TG_ANOFIM"   :  MSG_CAMPO="Informe o ano final"
  Case Campo="TG_MESINI"   :  MSG_CAMPO="Informe o mˆs inicial, exemplo: 01, 10,.."
  Case Campo="TG_MESFIM"   :  MSG_CAMPO="Informe o mˆs final  , exemplo: 01, 10,.."
  Case Campo="TG_OPCTAANALITICA" or Campo="TG_OPCTATRANSF":
     MensagemCheckBoxes()
EndSwitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

Array Array_MesAno[5]
Array Array_Tit_MesAno[5]

VSDGEMPRESA         = ""
VSDGDTINI           = BlankDate()
VSDGDTFIM           = BlankDate()
VSDGNOMPLCONTAS     = ""
VSDGOPDTEMISCOMP    = ""
VSDGNOMOPDTEMISCOMP = ""   

VSDGANOINI          = ""
VSDGANOFIM          = ""

VSDGMESINI          = ""
VSDGMESFIM          = ""

Array TG_OPCTAANALITICA[1] 
TG_OPCTAANALITICA[1]="NÆo Visualizar"

Array CheckTG_OPCTAANALITICA[ArraySize(TG_OPCTAANALITICA)]
CheckTG_OPCTAANALITICA[1]=False

Array TG_OPCTATRANSF[2] 
TG_OPCTATRANSF[1]="NÆo Visualizar"
TG_OPCTATRANSF[2]="Desprezar Valores Apurados"

Array CheckTG_OPCTATRANSF[ArraySize(TG_OPCTATRANSF)]
CheckTG_OPCTATRANSF[1]=False
CheckTG_OPCTATRANSF[2]=False

Array CheckTG_OPPLCONTAS[1] CheckTG_OPPLCONTAS[1]=False

While True
  ShowDialog "Sint‚tico III por Plano de Contas/Anual" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 16 Width 72

    Label  @ 00,00 "Empresa"  For "TG_EMPRESATE"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESATE" To VSDGEMPRESA
    Accept @ 01,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMEMP" To VSDGNOMEMP

    Label  @ 02,00 "Plano de Contas" For "TG_PLCONTAS"
    Accept @ 03,01 Width 33 "A13"  Picture "!*!" Tag "TG_PLCONTAS" To VSDGPLCONTAS
    Accept @ 04,01 Width 33 "A40" Picture "!*!" Tag "TG_NOMPLCONTAS"  To VSDGNOMPLCONTAS

    CheckBoxes @ 02,16 Height 1 Width 19 Tag "TG_OPPLCONTAS" "VerComRateios" to CheckTG_OPPLCONTAS[1]

    Label  @ 05,00 "Op‡äes de Datas" For "TG_OPDTEMISCOMP"
    Accept @ 06,04 Width 04 "A1"  Picture "1,2" Tag "TG_OPDTEMISCOMP" To VSDGOPDTEMISCOMP
    Accept @ 06,09 Width 25 "A20"  Picture "!*!" Tag "TG_NOMOPDTEMISCOMP" To VSDGNOMOPDTEMISCOMP

    Label  @ 07,00 "Per¡odo Ano de" For "TG_ANOINI"
    Accept @ 08,01 Width 7 "A4"  Picture "####" Tag "TG_ANOINI" To VSDGANOINI
    Label  @ 08,08 "at‚" For "TG_ANOFIM"
    Accept @ 08,13 Width 7 "A4"  Picture "####" Tag "TG_ANOFIM" To VSDGANOFIM
    
    @ 08,21 ?? "M ximo 5 anos"
    
    Label  @ 09,00 "Per¡odo Mˆs de" For "TG_MESINI"
    Accept @ 10,03 Width 5 "A2"  Picture "##" Tag "TG_MESINI" To VSDGMESINI
    Label  @ 10,08 "at‚" For "TG_MESFIM"
    Accept @ 10,13 Width 5 "A2"  Picture "##" Tag "TG_MESFIM" To VSDGMESFIM
    

    Label @ 00,35 "Contas An liticas" For "TG_OPCTAANALITICA"
    CheckBoxes @ 01,35 Height 1 Width 33 Tag "TG_OPCTAANALITICA"
    TG_OPCTAANALITICA[1] to CheckTG_OPCTAANALITICA[1]

    Label @ 02,35 "Transferˆncias entre Contas" For "TG_OPCTATRANSF"
    CheckBoxes @ 03,35 Height 2 Width 33 Tag "TG_OPCTATRANSF"
    TG_OPCTATRANSF[1] to CheckTG_OPCTATRANSF[1],
    TG_OPCTATRANSF[2] to CheckTG_OPCTATRANSF[2]

    Pushbutton @ 12,22 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 12,36 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  If Not Valida_ShowDialog("") Then Loop EndIf

  If IsBlank(VSDGEMPRESA)
     Then Mensagem("Informe uma Empresa !")
          Loop
  EndIf

  if IsBlank(VSDGANOINI) or IsBlank(VSDGANOFIM)
     Then Mensagem("Ano inv lido !")
          Loop
  EndIf
  if VSDGANOINI="0000" or VSDGANOFIM="0000"
     Then Mensagem("Ano inv lido !")
          Loop
  EndIf
  if VSDGANOINI>VSDGANOFIM
     Then Mensagem("Ano inv lido !")
          Loop
  EndIf

  if (Numval(VSDGANOFIM)-numval(VSDGANOINI))>4
     Then Mensagem("Per¡odo Referente m ximo de 5 anos !")
          Loop
  EndIf

  if VSDGMESINI>"12" or VSDGMESFIM>"12"
     Then Mensagem("Mˆs inv lido !")
          Loop
  EndIf
  if VSDGMESINI<"01" or VSDGMESFIM<"01"
     Then Mensagem("Mˆs inv lido !")
          Loop
  EndIf
  if VSDGMESINI>VSDGMESFIM
     Then Mensagem("Mˆs inv lido !")
          Loop
  EndIf
  
  If Len(VSDGPLCONTAS)<13
     Then PLCONTAS=VSDGPLCONTAS + ".."
     Else PLCONTAS=VSDGPLCONTAS
  EndIf

  If VSDGEMPRESA="0000"
     Then VSDGEMPRESA2=""
     Else VSDGEMPRESA2=VSDGEMPRESA
  EndIf
  
  DISPOSITIVO()
  If OK="" Then Loop EndIf

  AGUARDE("Aguarde, Gerando o Relat¢rio")
  Tabela=Cria_Temp(PrivDir())
  Copy "\\Base\\Sistemas\\Ctacor\\RM_0214" Tabela
  Empty Tabela
  
  ;------
  for wi from 1 to 5 
    Array_MesAno[wi]    =blanknum()
    Array_Tit_MesAno[wi]=""
  endfor
  
  anoini=numval(VSDGANOINI)
  for wi from 1 to 5

     Array_MesAno[wi]    =strval(anoini)
     Array_Tit_MesAno[wi]=strval(anoini)

     if anoini=numval(VSDGANOFIM)
        then quitloop
     endif
     anoini=anoini+1
  endfor
  ;------

  MontaTabela()

  tit_opcao="REALIZADO - "+rtrim(MesExt(numval(VSDGMESINI)))
  if VSDGMESFIM<>VSDGMESINI
     then tit_opcao=tit_opcao+" a "+MesExt(numval(VSDGMESFIM)) 
  endif

  for wi from 1 to 5
    if isblank(Array_MesAno[wi]) then quitloop endif

    VSDGDTINI=dateval("01."+VSDGMESINI+"."+Array_MesAno[wi])             

    VSDGDTFIM=dateval("01."+VSDGMESFIM+"."+Array_MesAno[wi])             
    VSDGDTFIM=Ultimo_Dia_Data(VSDGDTFIM)              

    Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
    While Novo_Dir_Trab()
      If IsTable("Answer")     Then Delete "Answer" EndIf
      Realizado()
      ChequesEmitidos()
    EndWhile
  endfor
  If IsEmpty(Tabela)
     Then MENSAGEM("N„o existem registros a processar")
          Delete Tabela
          Loop
  EndIf
  Processa()

  CI_FONT=chr(27)+"k10"

  IMPRIREL(Tabela,"R")

  Delete Tabela
  Delete "Answer"

EndWhile
ClearAll
Release Vars All
Release Procs All
