;** Rm_0622  *******************************************************************
;*  Emissao da Apuracao da Comissao % da Nota - Acerto                         *
;*******************************************************************************
;Autor: Visao/Vise
;Desenvolvido    : 07/12/2010 por Anivel Augusto Rodrigues
;Ultima Alteracao: 15/02/2011 por Anivel Augusto Rodrigues                        
;Motivo Alteracao: Ajustes               
;Ultima Alteracao: 16/05/2011 por Anivel Augusto Rodrigues                        
;Motivo Alteracao: Ajustes Debito/Credito
;Ultima Alteracao: 18/05/2011 por Anivel Augusto Rodrigues                        
;Motivo Alteracao: Ajustes Debito/Credito Data Pg Sabado/Domingo
;Ultima Alteracao: 27/05/2011 por Anivel Augusto Rodrigues                        
;Motivo Alteracao: Ajustes Creditos/Pagamentos duplicados        
;Ultima Alteracao: 16/06/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Debitos Cheques
;Ultima Alteracao: 08/07/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Creditos c/ Cancelamentos
;Ultima Alteracao: 13/07/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes data pagamento para Creditos
;Ultima Alteracao: 12/08/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes data pagamento para Debitos ultimo dia mes
;Ultima Alteracao: 09/09/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes ultimo dia mes-1 e creditos sem cheques e s¢ cheques dt de entrada
;Ultima Alteracao: 28/02/2013 por Nikolas
;Motivo Alteracao: Ajustes incluir sys cod 227 para emissao apartir de 01/03/2013
;Ultima Alteracao: 15/04/2013 por Bruno Carvalho
;Motivo Alteracao: Ajustes Seleciona() Organiza‡Æo SYS_CODIGO_CLIENTE "0227" 
;Ultima Alteracao: 22/07/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SYS_CODIGO_CLIENTE="0231" : PLCONTAS="2.1.01.14"
;Ultima Alteracao: 27/07/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes periodo sele‡Æo
;Ultima Alteracao: 10/02/2014 por Andrey Fillipe
;Motivo Alteracao: Adicionado bloqueio de relatorio usuario/representante
;Ultima Alteracao: 28/03/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes p/ Inclusao de Rateio de Comissao de Representante
;Ultima Alteracao: 08/04/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes para otimiza‡Æo em Seleciona() 
;Ultima Alteracao: 05/06/2014 por Andrey Fillipe
;Motivo Alteracao: Ajustes (Check na Descricao da Destinacao) 
;Ultima Alteracao: 09/06/2014 por Andrey Fillipe
;Motivo Alteracao: Ajustes SYS_CODIGO_CLIENTE="0222" : PLCONTAS2="2.4.01.01.002" e PLCONTAS3="2.4.01.01.004"
;Ultima Alteracao: 10/06/2014 por Bruno Carvalho
;Motivo Alteracao: Adicionado op‡Æo para filtrar por rateio de comissao de representante
;Ultima Alteracao: 10/06/2014 por Bruno Carvalho
;Motivo Alteracao: Omitido a op‡Æo de Filtrar por rateio de comissao de representante
;Ultima Alteracao: 16/06/2014 por Luis Gustavo
;Motivo Alteracao: Ajustes no filtro Gerencia
;Ultima Alteracao: 09/07/2014 por Bruno Carvalho
;Motivo Alteracao: Ajustes SELECIONA() onde nÆo estava passando para a tabela a gerencia
;Ultima Alteracao: 06/09/2014 por Andrey Fillipe
;Motivo Alteracao: Habilitado novamente a op‡Æo de Filtrar por rateio de comissao de representante
;Ultima Alteracao: 03/05/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes [Conta Contabil Represent]->[Codigo_Pessoa] relacionamento
;Ultima Alteracao: 12/05/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao titulos a Pagar
;Ultima Alteracao: 08/06/2016 por Bruno Carvalho
;Motivo Alteracao: Na proc SelecionaTitulos() nÆo estava movendo para o campo [Codigo da Gerencia] 
;Ultima Alteracao: 13/09/2016 por Kamila
;Motivo Alteracao: Na proc SelecionaTitulos() o campo [Codigo da Gerencia] tinha dois Check
;Ultima Alteracao: 12/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes showdialog                   
;Ultima Alteracao: 15/12/2016 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes quantidade total nota        
;Ultima Alteracao: 08/06/2017 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novo modelo por representante/empresa
;Ultima Alteracao: 03/08/2018 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes 0227 ignorar credito comissao baixa pgto advogado 
;Ultima Alteracao: 01/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes detalahamento da regra showdialog                  
;Ultima Alteracao: 13/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes plano contas #0359                                 
;Ultima Alteracao: 28/02/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes gerar comissao 
;Ultima Alteracao: 19/03/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes  #0425 numero do pedido              
;Ultima Alteracao: 30/04/2019 por Anivel Augusto Rodrigues                           
;Motivo Alteracao: Ajustes GeraComissao #0427
;Ultima Alteracao: 06/06/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes GeraComissao()
;Ultima Alteracao: 19/08/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes novo modelo 02B
;Ultima Alteracao: 12/12/2019 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes desfazer ask com representante nÆo cadastrado
;Ultima Alteracao: 12/02/2020 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes SelecionaDuplic() #0232

;*******************************************************************************
;* Rotina para Selecionar Registros                                            *
;*******************************************************************************
Proc SELECIONA()
Private wi, wi2

ClearAll
;****** Vendas/Devolu‡äes *******
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC")                       
   Then If Not IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaIC")
           Then FIM_RATEIO = 1
        EndIf  
        
        For wi2 From 1 To 2 
          For wi From INICIO_RATEIO To FIM_RATEIO 
           {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
            Moveto [Codigo do Representante] Example "crep"
            Moveto [Descricao Gerencia     ] Check
            Moveto [Codigo da Gerencia     ] Check 
            If Not IsBlank(VSDGGERENCIA)
               Then TypeIn "~VSDGGERENCIA"
            EndIf
       
            If wi = 2
               Then {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaIC" Enter
                    Moveto [Codigo da Empresa        ] Example "a"
                    Moveto [Numero do Documento      ] Example "b"
                    Moveto [Serie do Documento       ] Example "c"
                    Moveto [Item do Documento        ] TypeIn "0"
                    Moveto [Codigo do Representante  ] Check TypeIn "_crep, ~VSDGREPRESEN.."
                    Moveto [Nome Fantasia Represent  ] Check
                    Moveto [Comissao do Representante] Check
            EndIf
            
            {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter
            Moveto [Codigo da Empresa        ] Check Example "a , ~VSDGEMPRESA.."
            Moveto [Numero do Documento      ] Check Example "b"
            Moveto [Serie do Documento       ] Check Example "c"
            Moveto [Nome Fantasia Empresa    ] Check 
            Moveto [Data de Emissao          ] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM" 
            Moveto [Tipo do Documento        ] Check 
            Moveto [Codigo                   ] Check 
            Moveto [Razao Social             ] Check 
            Moveto [Cidade                   ] Check 
            Moveto [UF                       ] Check 
            Moveto [Valor Mercadoria Liquido ] Check 
            Moveto [Situacao                 ] TypeIn "Not C"

           Switch
              Case wi2 = 1 : Moveto [Descricao da Destinacao  ] Check TypeIn "..VEND.." 
                             Moveto [Tipo Movimento Estoque   ] TypeIn "S"
              Case wi2 = 2:  Moveto [Descricao da Destinacao  ] Check TypeIn "..DEVOL.."
                             Moveto [Tipo Movimento Estoque   ] TypeIn "E"
            EndSwitch  

            If wi = 1
               Then Moveto [Codigo do Representante  ] Check TypeIn "_crep, ~VSDGREPRESEN.."
                    Moveto [Nome Fantasia Represent  ] Check
                    Moveto [Comissao do Representante] Check
            EndIf
            Moveto [Numero do Pedido         ] Check 

            {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaI" Enter
            Moveto [Codigo da Empresa        ] Example "a"
            Moveto [Numero do Documento      ] Example "b"
            Moveto [Serie do Documento       ] Example "c"
            Moveto [Quantidade               ] typein "Calc sum as Quantidade"
            Do_It!
            ClearAll     
  
            Coedit Tabela,"Answer"
            Scan For Not IsBlank([Codigo da Empresa])
              Moveto Tabela
              End
              Down
              [Codigo da Empresa        ]=[Answer->Codigo da Empresa        ]
              [Nome Fantasia Empresa    ]=[Answer->Nome Fantasia Empresa    ]
              [Data de Emissao          ]=[Answer->Data de Emissao          ]
              [Tipo do Documento        ]=[Answer->Tipo do Documento        ]
              [Numero do Documento      ]=[Answer->Numero do Documento      ]
              [Codigo do Representante  ]=[Answer->Codigo do Representante  ]
              [Codigo da Gerencia       ]=[Answer->Codigo da Gerencia       ]
              [Descricao Gerencia       ]=[Answer->Descricao Gerencia       ]
              [Nome Fantasia Represent  ]=[Answer->Nome Fantasia Represent  ]
              [Codigo                   ]=[Answer->Codigo                   ]
              [Razao Social             ]=[Answer->Razao Social             ]
              [Cidade                   ]=[Answer->Cidade                   ]
              [UF                       ]=[Answer->UF                       ]
              [Descricao da Destinacao  ]=[Answer->Descricao da Destinacao  ]
              [Valor Mercadoria Liquido ]=[Answer->Valor Mercadoria Liquido ]
              [Comissao do Representante]=[Answer->Comissao do Representante]
              [Numero do Pedido         ]=[Answer->Numero do Pedido]
              Switch
                Case wi2 = 1 : [Operacao         ]="01-Vendas"
                               [Valor Comissao   ]=([Valor Mercadoria Liquido ]*[Comissao do Representante])/100
                Case wi2 = 2 : [Operacao         ]="02-Devolucoes"
                               [Valor Comissao   ]=(([Valor Mercadoria Liquido ]*[Comissao do Representante])/100)*-1
              EndSwitch                            
              [Observacoes]=[Codigo]+" "+Completa(Substr([Razao Social],1,30),32," ")+[UF]+"/"+Substr([Cidade],1,17)
              switch
                case wi2=1 and sys_codigo_Cliente="0425" : [Observacoes]=[Observacoes]+" PED "+[Answer->Numero do Pedido]
              endswitch

              [Quantidade               ]=[Answer->Quantidade               ]
              Moveto "Answer"
            EndScan
            Do_It!
            ClearAll 
          EndFor
        EndFor

EndIf

;****** Devolucoes *******
If IsTable("\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC")
   Then {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
        Moveto [Codigo do Representante] Example "crep"
        Moveto [Descricao Gerencia     ] Check
        Moveto [Codigo da Gerencia     ] Check
        If Not IsBlank(VSDGGERENCIA)
           Then TypeIn "~VSDGGERENCIA"
        EndIf
        
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC" Enter
        Moveto [Numero do Lancamento     ] Check typein "_nl"                   
        Moveto [Codigo da Empresa        ] Check "~VSDGEMPRESA.."
        Moveto [Nome Fantasia Empresa    ] Check 
        Moveto [Data de Entrada          ] Check TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Tipo do Documento        ] Check 
        Moveto [Numero do Documento      ] Check 
        Moveto [Codigo do Representante  ] Check TypeIn "_crep, ~VSDGREPRESEN.."
        Moveto [Nome Fantasia Represent  ] Check 
        Moveto [Codigo                   ] Check 
        Moveto [Razao Social             ] Check 
        Moveto [Cidade                   ] Check 
        Moveto [UF                       ] Check 
        Moveto [Valor Mercadoria Liquido ] Check 
        Moveto [Comissao do Representante] Check 
        Moveto [Tipo de Operacao         ] TypeIn "D"
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEI" Enter
        Moveto [Numero do Lancamento     ] typein "_nl"                   
        Moveto [Quantidade               ] typein "Calc sum as Quantidade"
        Do_It!
        ClearAll

        Coedit Tabela,"Answer"
        Scan For Not IsBlank([Codigo da Empresa])
          Moveto Tabela
          End
          Down

          [Operacao                 ]="02-Devolucoes"
          [Codigo da Empresa        ]=[Answer->Codigo da Empresa        ]
          [Nome Fantasia Empresa    ]=[Answer->Nome Fantasia Empresa    ]
          [Data de Emissao          ]=[Answer->Data de Entrada          ]
          [Tipo do Documento        ]=[Answer->Tipo do Documento        ]
          [Numero do Documento      ]=[Answer->Numero do Documento      ]
          [Codigo do Representante  ]=[Answer->Codigo do Representante  ]
          [Nome Fantasia Represent  ]=[Answer->Nome Fantasia Represent  ]
          [Codigo da Gerencia       ]=[Answer->Codigo da Gerencia       ]
          [Descricao Gerencia       ]=[Answer->Descricao Gerencia       ]
          [Codigo                   ]=[Answer->Codigo                   ]
          [Razao Social             ]=[Answer->Razao Social             ]
          [Cidade                   ]=[Answer->Cidade                   ]
          [UF                       ]=[Answer->UF                       ]
          [Descricao da Destinacao  ]="DEVOL NF TERC"
          [Valor Mercadoria Liquido ]=[Answer->Valor Mercadoria Liquido ]
          [Comissao do Representante]=[Answer->Comissao do Representante]
          [Valor Comissao           ]=(([Valor Mercadoria Liquido ]*
                                        [Comissao do Representante])/100)*-1
          [Observacoes              ]=[Codigo]+" "+Completa(Substr([Razao Social],1,30),32," ")+
                                      [UF]+"/"+Substr([Cidade],1,17)
          [Quantidade               ]=[Answer->Quantidade               ]
          Moveto "Answer"
        EndScan
        Do_It!
        ClearAll
EndIf

EndProc  ;(Seleciona)

;*******************************************************************************
;* Rotina para processar Db temporaria                                         *
;*******************************************************************************
Proc Processa()
;****** Taxa Administrativa sobre Devolucoes *******
If Not VSDGTAXAD>0
   Then Return
EndIf                                               

{Ask} TypeIn Tabela Enter
Moveto [Operacao                ] Check TypeIn "02-Devolucoes"
Moveto [Codigo da Empresa       ] Check
Moveto [Nome Fantasia Empresa   ] Check
Moveto [Codigo do Representante ] Check
Moveto [Nome Fantasia Represent ] Check
Moveto [Codigo da Gerencia      ] Check
Moveto [Descricao Gerencia      ] Check
Moveto [Valor Mercadoria Liquido] TypeIn "Calc Sum as Valor Mercadoria Liquido"
Do_It!
ClearAll

Coedit Tabela,"Answer"
Scan For Not IsBlank([Codigo da Empresa])
  Moveto Tabela
  End
  Down

  [Operacao                 ]="03-Tx Adm Devolucoes"
  [Codigo da Empresa        ]=[Answer->Codigo da Empresa        ]
  [Nome Fantasia Empresa    ]=[Answer->Nome Fantasia Empresa    ]
  [Data de Emissao          ]=VSDGDTFIM
  [Codigo do Representante  ]=[Answer->Codigo do Representante  ]
  [Nome Fantasia Represent  ]=[Answer->Nome Fantasia Represent  ]
  [Codigo da Gerencia       ]=[Answer->Codigo da Gerencia       ]
  [Descricao Gerencia       ]=[Answer->Descricao Gerencia       ]
  [Comissao do Representante]=VSDGTAXAD
  [Valor Mercadoria Liquido ]=[Answer->Valor Mercadoria Liquido ]
  [Valor Comissao           ]=(([Valor Mercadoria Liquido ]*
                                VSDGTAXAD)/100)*-1
  [Observacoes              ]="TAXA ADMINISTRATIVA SOBRE DEVOLUCOES"

  Moveto "Answer"
EndScan
Do_It!
ClearAll
EndProc   ;  (Processa)

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

If IsTable("\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic")
   Then 
        ;--- Debito de Comissao sem cheques ------------------------------------------------
        {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
        Moveto [Codigo do Representante ] Check Example "cr" TypeIn ", ~VSDGREPRESEN.."
        Moveto [Nome Fantasia Represent ] Check
        Moveto [Codigo_Pessoa           ] TypeIn "Not _codemit"
        Moveto [Descricao Gerencia      ] Check
        Moveto [Codigo da Gerencia      ] Check
        If Not IsBlank(VSDGGERENCIA)
           Then TypeIn "~VSDGGERENCIA"
        EndIf
        {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic" Enter Check
        Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
        Moveto [Codigo do Destinatario ] Example "codemit"
        Moveto [Codigo do Representante] Example "cr"
        Moveto [Codigo do Documento    ] TypeIn "Not CH, Not CP, Not DCC"
        Switch
          Case SYS_CODIGO_CLIENTE="0222":
             Moveto [Data de Emissao       ] TypeIn ">=01.01.2011"
             Moveto [Data de Vencimento    ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
          Case SYS_CODIGO_CLIENTE="0227":
             Moveto [Data de Emissao       ] TypeIn ">=01.03.2013"
             Moveto [Data de Vencimento    ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
          OtherWise :   
             Moveto [Data de Vencimento    ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        EndSwitch
        Do_It!
        ClearAll

        Coedit Tabela,"\\Sistemas\\Ctarec\\DupBaixa","Answer"
        Scan For Not IsBlank([Codigo da Empresa])

          vrtit=[Answer->Valor do Documento]
          vrcom=[Answer->valor da Comissao ]
          msgsaldo=""

          Moveto "\\Sistemas\\Ctarec\\DupBaixa"
          Moveto [Numero do Lancamento]
          Locate [Answer->Numero do Lancamento]
          If RetVal
             Then While [Numero do Lancamento]=[Answer->Numero do Lancamento]
                    dtrefpg    =[Data do Pagamento]
                    dtrefvencto=[Answer->Data de Vencimento]

                    dtfimmes=Ultimo_Dia(AlinhM(StrVal(Month([Answer->Data de Vencimento])),2)+ 
                                        AlinhM(StrVal( Year([Answer->Data de Vencimento])),4))

                    If dtrefpg>VSDGDTFIM
                       Then If (dtrefvencto=dtfimmes)    Or
                               (dtrefvencto=(dtfimmes-1))
                               Then Switch
                                      Case DiaExt(dtrefvencto)="Sabado" : dtrefpg=[Data do Pagamento]-2
                                      Case DiaExt(dtrefvencto)="Domingo": dtrefpg=[Data do Pagamento]-2
                                    EndSwitch
                            EndIf
                    EndIf

                    If dtrefpg<=VSDGDTFIM
                       Then vrtit=vrtit-(([Valor do Recebimento]-[Valor do Juros])+[Valor do Desconto])
                            vrcom=vrcom-[Valor da Comissao]
                            msgsaldo=" Pagto "+Format("D10",[Data do Pagamento])+" Saldo"
                    EndIf
                    Skip
                    If EOT() Then QuitLoop EndIf
                  EndWhile
          EndIf
        
          If vrtit<=0.01
             Then Moveto "Answer"
                  Loop
          EndIf

          Moveto Tabela
          End
          Down
          [Operacao                 ]="06-Debito/Cliente"
          [Codigo da Empresa        ]=[Answer->Codigo da Empresa        ]
          [Nome Fantasia Empresa    ]=[Answer->Nome Fantasia Empresa    ]
          [Data de Emissao          ]=[Answer->Data de Vencimento       ]
          [Tipo do Documento        ]=[Answer->Tipo do Documento        ]
          [Numero do Documento      ]=[Answer->Numero do Documento      ]
          [Codigo do Representante  ]=[Answer->Codigo do Representante  ]
          [Nome Fantasia Represent  ]=[Answer->Nome Fantasia Represent  ]
          [Codigo da Gerencia       ]=[Answer->Codigo da Gerencia       ]
          [Descricao Gerencia       ]=[Answer->Descricao Gerencia       ]
          [Codigo                   ]=[Answer->Codigo do Destinatario   ]
          [Razao Social             ]=[Answer->Razao Social             ]
          [Descricao da Destinacao  ]=LTrim([Answer->Descricao Plano_Conta])
          [Valor Mercadoria Liquido ]=vrtit                              
          [Valor Comissao           ]=vrcom*-1 
          [Observacoes              ]=[Codigo]+" "+Completa(Substr([Razao Social],1,25),27," ")+
                                      "* Emissao: "+Format("D10",[Answer->Data de Emissao])+msgsaldo+" "+
                                      [Answer->Observacoes ]

          Moveto "Answer"
        EndScan
        Do_It!
        ClearAll

       ;--- Debito de Comissao so cheques ------------------------------------------------
        {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
        Moveto [Codigo do Representante ] Check Example "cr" TypeIn ", ~VSDGREPRESEN.."
        Moveto [Nome Fantasia Represent ] Check
        Moveto [Codigo_Pessoa           ] TypeIn "Not _codemit"
        Moveto [Descricao Gerencia      ] Check
        Moveto [Codigo da Gerencia      ] Check 
        If Not IsBlank(VSDGGERENCIA)
           Then TypeIn "~VSDGGERENCIA"
        EndIf
        {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic" Enter Check
        Moveto [Codigo da Empresa      ] TypeIn "~VSDGEMPRESA.."
        Moveto [Codigo do Destinatario ] Example "codemit"
        Moveto [Codigo do Representante] Example "cr"
        Moveto [Codigo do Documento    ] TypeIn "CH Or CP"
        Switch
          Case SYS_CODIGO_CLIENTE="0222":
             Moveto [Data de Emissao       ] TypeIn ">=01.01.2011"
             Moveto [Data de Entrada       ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
          Case SYS_CODIGO_CLIENTE="0227":
             Moveto [Data de Emissao       ] TypeIn ">=01.03.2013"
             Moveto [Data de Entrada       ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
          OtherWise:   
             Moveto [Data de Entrada       ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        EndSwitch
        Do_It!
        ClearAll

        Coedit Tabela,"\\Sistemas\\Ctarec\\DupBaixa","Answer"
        Scan For Not IsBlank([Codigo da Empresa])

          vrtit=[Answer->Valor do Documento]
          vrcom=[Answer->valor da Comissao ]
          msgsaldo=""

          Moveto "\\Sistemas\\Ctarec\\DupBaixa"
          Moveto [Numero do Lancamento]
          Locate [Answer->Numero do Lancamento]
          If RetVal
             Then While [Numero do Lancamento]=[Answer->Numero do Lancamento]
                    dtrefpg    =[Data do Pagamento]
                    dtrefvencto=[Answer->Data de Vencimento]

                    dtfimmes=Ultimo_Dia(AlinhM(StrVal(Month([Answer->Data de Vencimento])),2)+ 
                                        AlinhM(StrVal( Year([Answer->Data de Vencimento])),4))

                    If dtrefpg>VSDGDTFIM
                       Then If (dtrefvencto=dtfimmes)   Or
                               (dtrefvencto=(dtfimmes-1)) 
                               Then Switch
                                      Case DiaExt(dtrefvencto)="Sabado" : dtrefpg=[Data do Pagamento]-2
                                      Case DiaExt(dtrefvencto)="Domingo": dtrefpg=[Data do Pagamento]-2
                                    EndSwitch
                            EndIf
                    EndIf

                    If dtrefpg<=VSDGDTFIM
                       Then vrtit=vrtit-(([Valor do Recebimento]-[Valor do Juros])+[Valor do Desconto])
                            vrcom=vrcom-[Valor da Comissao]
                            msgsaldo=" Pagto "+Format("D10",[Data do Pagamento])+" Saldo"
                    EndIf
                    Skip
                    If EOT() Then QuitLoop EndIf
                  EndWhile
          EndIf
        
          If vrtit<=0.01
             Then Moveto "Answer"
                  Loop
          EndIf

          Moveto Tabela
          End
          Down
          [Operacao                 ]="06-Debito/Cliente"
          [Codigo da Empresa        ]=[Answer->Codigo da Empresa        ]
          [Nome Fantasia Empresa    ]=[Answer->Nome Fantasia Empresa    ]
          [Data de Emissao          ]=[Answer->Data de Vencimento       ]
          [Tipo do Documento        ]=[Answer->Tipo do Documento        ]
          [Numero do Documento      ]=[Answer->Numero do Documento      ]
          [Codigo do Representante  ]=[Answer->Codigo do Representante  ]
          [Nome Fantasia Represent  ]=[Answer->Nome Fantasia Represent  ]
          [Codigo da Gerencia       ]=[Answer->Codigo da Gerencia       ]
          [Descricao Gerencia       ]=[Answer->Descricao Gerencia       ]
          [Codigo                   ]=[Answer->Codigo do Destinatario   ]
          [Razao Social             ]=[Answer->Razao Social             ]
          [Descricao da Destinacao  ]=LTrim([Answer->Descricao Plano_Conta])
          [Valor Mercadoria Liquido ]=vrtit                              
          [Valor Comissao           ]=vrcom*-1 
          [Observacoes              ]=[Codigo]+" "+Completa(Substr([Razao Social],1,25),27," ")+
                                      "* Inclusao: "+Format("D10",[Answer->Data de Entrada])+msgsaldo+" "+
                                      [Answer->Observacoes ]

          Moveto "Answer"
        EndScan
        Do_It!
        ClearAll

        ;--- Credito de Comissao sem Cheques -----------------------------------------------
        {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
        Moveto [Codigo do Representante ] Check Example "cr" TypeIn ", ~VSDGREPRESEN.."
        Moveto [Nome Fantasia Represent ] Check
        Moveto [Codigo_Pessoa           ] TypeIn "Not _codemit"
        Moveto [Descricao Gerencia      ] Check
        Moveto [Codigo da Gerencia      ] Check 
        If Not IsBlank(VSDGGERENCIA)
           Then TypeIn "~VSDGGERENCIA"
        EndIf
        {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic" Enter Check
        Moveto [Numero do Lancamento  ] Example "nl"
        Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA.."
        Moveto [Codigo do Destinatario] Example "codemit"
        Moveto [Codigo do Representante] Example "cr"
        Moveto [Codigo do Documento    ] TypeIn "Not CH, Not CP, Not DCC"
        Switch
          Case SYS_CODIGO_CLIENTE="0222":
             Moveto [Data de Emissao       ] TypeIn ">=01.01.2011"
             Moveto [Data de Vencimento    ] TypeIn "<=~VSDGDTFIM"
          Case SYS_CODIGO_CLIENTE="0227":
             Moveto [Data de Emissao       ] TypeIn ">=01.03.2013"
             Moveto [Data de Vencimento    ] TypeIn "<=~VSDGDTFIM"
          OtherWise:   
             Moveto [Data de Vencimento    ] TypeIn "<=~VSDGDTFIM"
        EndSwitch
        {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"DupBaixa" Enter Check
        Moveto [Numero do Lancamento  ] Example "nl"
        Moveto [Data do Pagamento     ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Tipo da Baixa         ] TypeIn "NORMAL Or CANCELADO"
        Do_It!
        ClearAll

        nlancto="**"
        Coedit Tabela,"\\Sistemas\\Ctarec\\DupBaixa","Answer"
        Scan For Not IsBlank([Codigo da Empresa])
          If nlancto<>[Numero do Lancamento]
             Then nlancto=[Numero do Lancamento]
                  Moveto "\\Sistemas\\Ctarec\\DupBaixa"
                  Moveto [Numero do Lancamento]
                  Locate [Answer->Numero do Lancamento]
                  If RetVal
                     Then While [Numero do Lancamento]=[Answer->Numero do Lancamento]
                            dtrefpg    =[Data do Pagamento]
                            dtrefvencto=[Answer->Data de Vencimento]
        
                            titok=False
                            Switch
                              Case [Answer->Data de Vencimento]<VSDGDTINI:

                                   dtfimmes=Ultimo_Dia(AlinhM(StrVal(Month([Answer->Data de Vencimento])),2)+ 
                                                       AlinhM(StrVal( Year([Answer->Data de Vencimento])),4))
                                                     
                                   If ( ([Answer->Data de Vencimento]=dtfimmes)  Or
                                        ([Answer->Data de Vencimento]=(dtfimmes-1)) ) And      
                                      dtrefpg>=VSDGDTINI 
                                      Then Switch
                                             Case DiaExt(dtrefvencto)="Sabado" : dtrefpg=[Data do Pagamento]-2
                                             Case DiaExt(dtrefvencto)="Domingo": dtrefpg=[Data do Pagamento]-2
                                           EndSwitch
                                   EndIf

                                   If dtrefpg>=VSDGDTINI And
                                      [Data do Pagamento]<=VSDGDTFIM
                                      Then titok=True
                                   EndIf   
                            EndSwitch

                            if sys_codigo_cliente="0227"
                               then
                                    if [Answer->Tipo do Lancamento]="V" ; Advogado
                                       then titok=False
                                    endif   
                            endif    

                            If Not titok
                               Then Moveto "\\Sistemas\\Ctarec\\DupBaixa"
                                    Skip
                                    If EOT()
                                       Then QuitLoop
                                       Else Loop
                                    EndIf
                            EndIf
                            dtrefpg=[Data do Pagamento]
                            vrtit  =(([Valor do Recebimento]-[Valor do Juros])+[Valor do Desconto])
                            vrcom  =[Valor da Comissao]
        
                            Moveto Tabela
                            End
                            Down
        
                            [Operacao                 ]="07-Credito/Cliente"
                            [Codigo da Empresa        ]=[Answer->Codigo da Empresa        ]
                            [Nome Fantasia Empresa    ]=[Answer->Nome Fantasia Empresa    ]
                            [Data de Emissao          ]=dtrefpg
                            [Tipo do Documento        ]=[Answer->Tipo do Documento        ]
                            [Numero do Documento      ]=[Answer->Numero do Documento      ]
                            [Codigo do Representante  ]=[Answer->Codigo do Representante  ]
                            [Nome Fantasia Represent  ]=[Answer->Nome Fantasia Represent  ]
                            [Codigo da Gerencia       ]=[Answer->Codigo da Gerencia       ]
                            [Descricao Gerencia       ]=[Answer->Descricao Gerencia       ]
                            [Codigo                   ]=[Answer->Codigo do Destinatario   ]
                            [Razao Social             ]=[Answer->Razao Social             ]
                            [Descricao da Destinacao  ]=LTrim([Answer->Descricao Plano_Conta])
                            [Valor Mercadoria Liquido ]=vrtit
                            [Valor Comissao           ]=vrcom
                            [Observacoes              ]=[Codigo]+" "+Completa(Substr([Razao Social],1,25),27," ")+
                                                        "* Vencto: "+Format("D10",[Answer->Data de Vencimento])+" "+
                                                        [Answer->Observacoes ]
        
                            Moveto "\\Sistemas\\Ctarec\\DupBaixa"
                            Skip
                            If EOT() Then QuitLoop EndIf
                          EndWhile
                  EndIf
          EndIf
          Moveto "Answer"
        EndScan
        Do_It!
        ClearAll

        ;--- Credito de Comissao s¢ Cheques -----------------------------------------------
        {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
        Moveto [Codigo do Representante ] Check Example "cr" TypeIn ", ~VSDGREPRESEN.."
        Moveto [Nome Fantasia Represent ] Check
        Moveto [Codigo_Pessoa           ] TypeIn "Not _codemit"
        Moveto [Descricao Gerencia      ] Check
        Moveto [Codigo da Gerencia      ] Check 
        If Not IsBlank(VSDGGERENCIA)
           Then TypeIn "~VSDGGERENCIA"
        EndIf
        {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic" Enter Check
        Moveto [Numero do Lancamento  ] Example "nl"
        Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA.."
        Moveto [Codigo do Destinatario] Example "codemit"
        Moveto [Codigo do Representante] Example "cr"
        Moveto [Codigo do Documento    ] TypeIn "CH Or CP"
        Switch
          Case SYS_CODIGO_CLIENTE="0222":
             Moveto [Data de Emissao       ] TypeIn ">=01.01.2011"
             Moveto [Data de Entrada       ] TypeIn "<=~VSDGDTFIM"
          Case SYS_CODIGO_CLIENTE="0227":
             Moveto [Data de Emissao       ] TypeIn ">=01.03.2013"
             Moveto [Data de Entrada       ] TypeIn "<=~VSDGDTFIM"
          OtherWise:   
             Moveto [Data de Entrada       ] TypeIn "<=~VSDGDTFIM"
        EndSwitch


        {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"DupBaixa" Enter Check
        Moveto [Numero do Lancamento  ] Example "nl"
        Moveto [Data do Pagamento     ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Tipo da Baixa         ] TypeIn "NORMAL Or CANCELADO"
        Do_It!
        ClearAll

        nlancto="**"
        Coedit Tabela,"\\Sistemas\\Ctarec\\DupBaixa","Answer"
        Scan For Not IsBlank([Codigo da Empresa])
          If nlancto<>[Numero do Lancamento]
             Then nlancto=[Numero do Lancamento]
                  Moveto "\\Sistemas\\Ctarec\\DupBaixa"
                  Moveto [Numero do Lancamento]
                  Locate [Answer->Numero do Lancamento]
                  If RetVal
                     Then While [Numero do Lancamento]=[Answer->Numero do Lancamento]
                            dtrefpg    =[Data do Pagamento]
                            dtrefvencto=[Answer->Data de Entrada]
        
                            titok=False
                            Switch
                              Case [Answer->Data de Entrada]<VSDGDTINI:

                                   dtfimmes=Ultimo_Dia(AlinhM(StrVal(Month([Answer->Data de Entrada])),2)+ 
                                                       AlinhM(StrVal( Year([Answer->Data de Entrada])),4))
                                                     
                                   If ( ([Answer->Data de Entrada]=dtfimmes)  Or
                                        ([Answer->Data de Entrada]=(dtfimmes-1)) ) And      
                                      dtrefpg>=VSDGDTINI 
                                      Then Switch
                                             Case DiaExt(dtrefvencto)="Sabado" : dtrefpg=[Data do Pagamento]-2
                                             Case DiaExt(dtrefvencto)="Domingo": dtrefpg=[Data do Pagamento]-2
                                           EndSwitch
                                   EndIf

                                   If dtrefpg>=VSDGDTINI And
                                      [Data do Pagamento]<=VSDGDTFIM
                                      Then titok=True
                                   EndIf   
                            EndSwitch

                            if sys_codigo_cliente="0227"
                               then
                                    if [Answer->Tipo do Lancamento]="V" ; Advogado
                                       then titok=False
                                    endif   
                            endif    

                            If Not titok
                               Then Moveto "\\Sistemas\\Ctarec\\DupBaixa"
                                    Skip
                                    If EOT()
                                       Then QuitLoop
                                       Else Loop
                                    EndIf
                            EndIf
                            dtrefpg=[Data do Pagamento]
                            vrtit  =(([Valor do Recebimento]-[Valor do Juros])+[Valor do Desconto])
                            vrcom  =[Valor da Comissao]
        
                            Moveto Tabela
                            End
                            Down
        
                            [Operacao                 ]="07-Credito/Cliente"
                            [Codigo da Empresa        ]=[Answer->Codigo da Empresa        ]
                            [Nome Fantasia Empresa    ]=[Answer->Nome Fantasia Empresa    ]
                            [Data de Emissao          ]=dtrefpg
                            [Tipo do Documento        ]=[Answer->Tipo do Documento        ]
                            [Numero do Documento      ]=[Answer->Numero do Documento      ]
                            [Codigo do Representante  ]=[Answer->Codigo do Representante  ]
                            [Nome Fantasia Represent  ]=[Answer->Nome Fantasia Represent  ]
                            [Codigo da Gerencia       ]=[Answer->Codigo da Gerencia       ]
                            [Descricao Gerencia       ]=[Answer->Descricao Gerencia       ]
                            [Codigo                   ]=[Answer->Codigo do Destinatario   ]
                            [Razao Social             ]=[Answer->Razao Social             ]
                            [Descricao da Destinacao  ]=LTrim([Answer->Descricao Plano_Conta])
                            [Valor Mercadoria Liquido ]=vrtit
                            [Valor Comissao           ]=vrcom
                            [Observacoes              ]=[Codigo]+" "+Completa(Substr([Razao Social],1,25),27," ")+
                                                        "* Vencto: "+Format("D10",[Answer->Data de Entrada])+" "+
                                                        [Answer->Observacoes ]
        
                            Moveto "\\Sistemas\\Ctarec\\DupBaixa"
                            Skip
                            If EOT() Then QuitLoop EndIf
                          EndWhile
                  EndIf
          EndIf
          Moveto "Answer"
        EndScan
        Do_It!
        ClearAll

EndIf
EndProc     ;  (Seleciona)

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

If IsTable("\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont")
  Then
        {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
        Moveto [Codigo do Representante] Check TypeIn "~VSDGREPRESEN.."
        Moveto [Nome Fantasia Represent] Check
        Moveto [Descricao Gerencia     ] Check
        Moveto [Codigo da Gerencia     ] Check
        If Not IsBlank(VSDGGERENCIA)
           Then TypeIn "~VSDGGERENCIA"
        EndIf
        Moveto [Codigo_Pessoa         ] Example "codemit"
        {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont" Enter Check
        Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA.."
        Moveto [Tipo de Operacao      ] TypeIn "05 or 06 or 07 or 13 or 14"
        Moveto [Data                  ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Codigo do EmitDest    ] Example "codemit"
        Moveto [Codigo Plano_Conta    ] TypeIn PLCONTAS
        Do_It!
        ClearAll

        Coedit Tabela,"Answer"
        Scan For Not IsBlank([Codigo da Empresa])
          Moveto Tabela
          End
          Down

          [Operacao                 ]="04-Vales"
          [Codigo da Empresa        ]=[Answer->Codigo da Empresa        ]
          [Nome Fantasia Empresa    ]=[Answer->Nome Fantasia Empresa    ]
          [Data de Emissao          ]=[Answer->Data                     ]
          [Tipo do Documento        ]=[Answer->Tipo do Documento        ]
          [Numero do Documento      ]=[Answer->Numero do Documento      ]
          [Codigo do Representante  ]=[Answer->Codigo do Representante  ]
          [Nome Fantasia Represent  ]=[Answer->Nome Fantasia Represent  ]
          [Codigo da Gerencia       ]=[Answer->Codigo da Gerencia       ]
          [Descricao Gerencia       ]=[Answer->Descricao Gerencia       ]
          [Codigo                   ]=[Answer->Codigo do EmitDest       ]
          [Razao Social             ]=[Answer->Razao Social             ]
          [Descricao da Destinacao  ]=LTrim([Answer->Descricao Plano_Conta])
          [Observacoes              ]=[Answer->Descricao do Historico   ]
          [Valor Mercadoria Liquido ]=[Answer->Valor                    ]
          [Valor Comissao           ]=[Answer->Valor]*-1

          Moveto "Answer"
        EndScan
        Do_It!
        ClearAll

EndIf
EndProc     ;  (Seleciona)

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

If IsTable("\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont")
  Then
        {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
        Moveto [Codigo do Representante ] Check TypeIn "~VSDGREPRESEN.."
        Moveto [Nome Fantasia Represent ] Check
        Moveto [Codigo_Pessoa           ] Example "codemit"
        Moveto [Descricao Gerencia      ] Check
        Moveto [Codigo da Gerencia      ] Check 
        If Not IsBlank(VSDGGERENCIA)
           Then TypeIn "~VSDGGERENCIA"
        EndIf
        {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont" Enter Check
        Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA.."
        Moveto [Tipo de Operacao      ] TypeIn "05 or 06 or 07 or 13 or 14"
        Moveto [Data                  ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Codigo do EmitDest    ] Example "codemit"
        Moveto [Codigo Plano_Conta    ] TypeIn PLCONTAS2
        Do_It!
        ClearAll

        Coedit Tabela,"Answer"
        Scan For Not IsBlank([Codigo da Empresa])
          Moveto Tabela
          End
          Down

          [Operacao                 ]="08-Adiantamentos"
          [Codigo da Empresa        ]=[Answer->Codigo da Empresa        ]
          [Nome Fantasia Empresa    ]=[Answer->Nome Fantasia Empresa    ]
          [Data de Emissao          ]=[Answer->Data                     ]
          [Tipo do Documento        ]=[Answer->Tipo do Documento        ]
          [Numero do Documento      ]=[Answer->Numero do Documento      ]
          [Codigo do Representante  ]=[Answer->Codigo do Representante  ]
          [Nome Fantasia Represent  ]=[Answer->Nome Fantasia Represent  ]
          [Codigo da Gerencia       ]=[Answer->Codigo da Gerencia       ]
          [Descricao Gerencia       ]=[Answer->Descricao Gerencia       ]
          [Codigo                   ]=[Answer->Codigo do EmitDest       ]
          [Razao Social             ]=[Answer->Razao Social             ]
          [Descricao da Destinacao  ]=LTrim([Answer->Descricao Plano_Conta])
          [Observacoes              ]=[Answer->Descricao do Historico   ]
          [Valor Mercadoria Liquido ]=[Answer->Valor                    ]
          [Valor Comissao           ]=[Answer->Valor]*-1

          Moveto "Answer"
        EndScan
        Do_It!
        ClearAll

EndIf
EndProc     ;  (Seleciona)

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

If IsTable("\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont")
  Then
        {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
        Moveto [Codigo do Representante ] Check TypeIn "~VSDGREPRESEN.."
        Moveto [Nome Fantasia Represent ] Check
        Moveto [Codigo_Pessoa           ] Example "codemit"
        Moveto [Descricao Gerencia      ] Check
        Moveto [Codigo da Gerencia      ] Check
        If Not IsBlank(VSDGGERENCIA)
           Then TypeIn "~VSDGGERENCIA"
        EndIf
        {Ask} TypeIn "\\Sistemas\\Ctacor\\"+Dir_Trab+"MovCont" Enter Check
        Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA.."
        Moveto [Tipo de Operacao      ] TypeIn "05 or 06 or 07 or 13 or 14"
        Moveto [Data                  ] TypeIn ">=~VSDGDTINI, <=~VSDGDTFIM"
        Moveto [Codigo do EmitDest    ] Example "codemit"
        Moveto [Codigo Plano_Conta    ] TypeIn PLCONTAS3
        Do_It!
        ClearAll

        Coedit Tabela,"Answer"
        Scan For Not IsBlank([Codigo da Empresa])
          Moveto Tabela
          End
          Down

          [Operacao                 ]="09-Outros Creditos"
          [Codigo da Empresa        ]=[Answer->Codigo da Empresa        ]
          [Nome Fantasia Empresa    ]=[Answer->Nome Fantasia Empresa    ]
          [Data de Emissao          ]=[Answer->Data                     ]
          [Tipo do Documento        ]=[Answer->Tipo do Documento        ]
          [Numero do Documento      ]=[Answer->Numero do Documento      ]
          [Codigo do Representante  ]=[Answer->Codigo do Representante  ]
          [Nome Fantasia Represent  ]=[Answer->Nome Fantasia Represent  ]
          [Codigo da Gerencia       ]=[Answer->Codigo da Gerencia       ]
          [Descricao Gerencia       ]=[Answer->Descricao Gerencia       ]
          [Codigo                   ]=[Answer->Codigo do EmitDest       ]
          [Razao Social             ]=[Answer->Razao Social             ]
          [Descricao da Destinacao  ]=LTrim([Answer->Descricao Plano_Conta])
          [Observacoes              ]=[Answer->Descricao do Historico   ]
          [Valor Mercadoria Liquido ]=[Answer->Valor                    ]
          [Valor Comissao           ]=[Answer->Valor                    ]

          Moveto "Answer"
        EndScan
        Do_It!
        ClearAll

EndIf
EndProc     ;  (Seleciona)

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

if VSDGCODMODELO="02B"
   then return 
endif   

If IsTable("\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic")
   Then 
        ;--- A Receber Representante -------------------------------------------
        {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
        Moveto [Codigo do Representante ] Check TypeIn "~VSDGREPRESEN.."
        Moveto [Nome Fantasia Represent ] Check
        Moveto [Descricao Gerencia      ] Check
        Moveto [Codigo da Gerencia      ] Check 
        If Not IsBlank(VSDGGERENCIA)
           Then TypeIn "~VSDGGERENCIA"
        EndIf       
        Moveto [Codigo_Pessoa           ] Example "codemit"
        
        {Ask} TypeIn "\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic" Enter Check
        Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA.."
        Moveto [Codigo do Destinatario] Example "codemit"
        Moveto [Data de Vencimento    ] TypeIn "<=~VSDGDTFIM"
        switch
          case sys_codigo_cliente="0232": Moveto [Saldo do Documento] TypeIn ">0.01"         
        endswitch
        Do_It!
        ClearAll

        Coedit Tabela,"\\Sistemas\\Ctarec\\DupBaixa","Answer"
        Scan For Not IsBlank([Codigo da Empresa])
          switch
            case sys_codigo_cliente="0232": ; processo diferente
              vrtit=[Answer->Saldo do Documento]
              vrcom=vrtit
              msgsaldo=""
            
            otherwise                     :
              vrtit=[Answer->Valor do Documento]
              vrcom=vrtit
              msgsaldo=""
  
              Moveto "\\Sistemas\\Ctarec\\DupBaixa"
              Moveto [Numero do Lancamento]
              Locate [Answer->Numero do Lancamento]
              If RetVal
                 Then While [Numero do Lancamento]=[Answer->Numero do Lancamento]
                        If [Data do Pagamento]<=VSDGDTFIM
                           Then vrtit=vrtit-(([Valor do Recebimento]-[Valor do Juros])+[Valor do Desconto])
                                vrcom=vrtit
                                msgsaldo="* Pagto "+Format("D10",[Data do Pagamento])+" Saldo"
                        EndIf
                        Skip
                        If EOT() Then QuitLoop EndIf
                      EndWhile
              EndIf    
            
              If vrtit<=0.01
                 Then Moveto "Answer"
                      Loop
              EndIf
          endswitch

          Moveto Tabela
          End
          Down
          [Operacao                 ]="05-A Receber/Representante"
          [Codigo da Empresa        ]=[Answer->Codigo da Empresa        ]
          [Nome Fantasia Empresa    ]=[Answer->Nome Fantasia Empresa    ]
          [Data de Emissao          ]=[Answer->Data de Vencimento       ]
          [Tipo do Documento        ]=[Answer->Tipo do Documento        ]
          [Numero do Documento      ]=[Answer->Numero do Documento      ]
          [Codigo do Representante  ]=[Answer->Codigo do Representante  ]
          [Nome Fantasia Represent  ]=[Answer->Nome Fantasia Represent  ]
          [Codigo da Gerencia       ]=[Answer->Codigo da Gerencia       ]
          [Descricao Gerencia       ]=[Answer->Descricao Gerencia       ]
          [Codigo                   ]=[Answer->Codigo do Destinatario   ]
          [Razao Social             ]=[Answer->Razao Social             ]
          [Descricao da Destinacao  ]=LTrim([Answer->Descricao Plano_Conta])
          [Observacoes              ]="Emissao "+Format("D10",[Answer->Data de Emissao])+" * "+
                                      [Answer->Observacoes ]+" "+msgsaldo
          [Valor Mercadoria Liquido ]=vrtit
          [Valor Comissao           ]=vrtit*-1
          Moveto "Answer"
        EndScan
        Do_It!
        ClearAll
endif   
EndProc     ;  (Seleciona)


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

if VSDGCODMODELO="02B"
   then return 
endif   

If IsTable("\\Sistemas\\Ctapag\\"+Dir_Trab+"Titulos")
   Then
        {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
        Moveto [Codigo do Representante] Check TypeIn "~VSDGREPRESEN.."
        Moveto [Nome Fantasia Represent] Check
        Moveto [Descricao Gerencia     ] Check
        Moveto [Codigo_Pessoa          ] Example "codemit"
        Moveto [Codigo da Gerencia     ] Check
        If Not IsBlank(VSDGGERENCIA)
           Then TypeIn "~VSDGGERENCIA"
        EndIf
        {Ask} TypeIn "\\Sistemas\\Ctapag\\"+Dir_Trab+"Titulos" Enter Check
        Moveto [Codigo da Empresa     ] TypeIn "~VSDGEMPRESA.."
        Moveto [Codigo do Emitente    ] Example "codemit"
        Moveto [Data de Vencimento    ] TypeIn "<=~VSDGDTFIM"
        Moveto [Saldo do Documento    ] TypeIn ">0.01"
        Do_It!
        ClearAll

        Coedit Tabela,"Answer"
        Scan For Not IsBlank([Codigo da Empresa])
          Moveto Tabela
          End
          Down

          [Operacao                 ]="10-A Pagar/Representante"
          [Codigo da Empresa        ]=[Answer->Codigo da Empresa        ]
          [Nome Fantasia Empresa    ]=[Answer->Nome Fantasia Empresa    ]
          [Data de Emissao          ]=[Answer->Data de Emissao          ]
          [Tipo do Documento        ]=[Answer->Tipo do Documento        ]
          [Numero do Documento      ]=[Answer->Numero do Documento      ]
          [Codigo do Representante  ]=[Answer->Codigo do Representante  ]
          [Nome Fantasia Represent  ]=[Answer->Nome Fantasia Represent  ]
          [Descricao Gerencia       ]=[Answer->Descricao Gerencia       ]
          [Codigo da Gerencia       ]=[Answer->Codigo da Gerencia       ]
          [Codigo                   ]=[Answer->Codigo do Emitente       ]
          [Razao Social             ]=[Answer->Razao Social             ]                                         
          [Descricao da Destinacao  ]=LTrim([Answer->Descricao Plano_Conta])
          [Observacoes              ]="Vencto "+Format("D13",[Answer->Data de Vencimento])+" * "+
                                      [Answer->Observacoes              ]
          [Valor Mercadoria Liquido ]=[Answer->Saldo do Documento]
          [Valor Comissao           ]=[Answer->Saldo do Documento]

          Moveto "Answer"
        EndScan
        Do_It!
        ClearAll

EndIf
EndProc     ;  (Seleciona)

;*******************************************************************************
;* Rotina p/                                                                   *
;*******************************************************************************
Proc GeraComissao()
ClearAll

{Ask} typein Tabela Enter
moveto [Codigo da Empresa      ] check
moveto [Codigo do Representante] check
moveto [Operacao               ]       typein "\"01-Vendas\" or \"02-Devolucoes\""
moveto [Valor Comissao         ]       typein "Calc Sum As ValorComissao"
Do_IT!
PC_0000_TabelaComissaoBruta=Adiciona_Indice_Temp("Codigo da Empresa,Codigo do Representante")
ClearAll

{Ask} typein Tabela Enter
moveto [Codigo da Empresa      ] check
moveto [Codigo do Representante] check
moveto [Valor Comissao         ]       typein "Calc Sum As ValorComissao"
Do_IT!
PC_0000_TabelaComissaoLiquida=Adiciona_Indice_Temp("Codigo da Empresa,Codigo do Representante")
ClearAll

;-------------

PC_0000_AquivoDeParametrosGeraComissao="PC_0622" ; informar o Rm_XXXX como PC_XXXX nÆo esquecer 
Play "PC_0000"

;-------------

EndProc     

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  
   Then AoCriarShowDialog()
        TiraSombraShowDialog()
EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] = 9: Temp=False
     Case Evento["KeyCode"] = -59: Dialog_F1()
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_EMPRESA"       : Campo="NO"
            Case Campo="TG_REPRESEN"      : Campo="TG_EMPRESA"
            Case Campo="TG_GERENCIA"      : Campo="TG_REPRESEN"
            Case Campo="TG_TAXAD"         : Campo="TG_GERENCIA"
            Case Campo="TG_DTINI"         : Campo="TG_TAXAD"
            Case Campo="TG_DTFIM"         : Campo="TG_DTINI"
            Case Campo="TG_OPCAO"         : Campo="TG_DTFIM"
            Case Campo="TG_COMISSAO"      : Campo="TG_OPCAO" 
            Case Campo="TG_CODMODELO"     : Campo="TG_COMISSAO"
            Case Campo="YES" Or Campo="NO": Campo="TG_EMPRESA"
          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_EMPRESA"  : Campo="TG_REPRESEN"
                    Case Campo="TG_REPRESEN" : Campo="TG_GERENCIA"
                    Case Campo="TG_GERENCIA" : Campo="TG_TAXAD"
                    Case Campo="TG_TAXAD"    : Campo="TG_DTINI"
                    Case Campo="TG_DTINI"    : Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"    : Campo="TG_OPCAO"
                    Case Campo="TG_OPCAO"    : 
                         VSDGOPCAO = ControlValue("TG_OPCAO")
                         If IsBlank(VSDGOPCAO) Then VSDGOPCAO = "1" EndIf
                         Switch
                           Case VSDGOPCAO = "1" : VSDGNOMOPCAO = "SEM RATEIO"
                           Case VSDGOPCAO = "2" : VSDGNOMOPCAO = "COM RATEIO"
                           Case VSDGOPCAO = "3" : VSDGNOMOPCAO = "APENAS RATEIO"
                         EndSwitch   
                        Campo="TG_COMISSAO"    
                    Case Campo="TG_COMISSAO" : Campo="TG_CODMODELO" 
                    Case Campo="TG_CODMODELO" : Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_OPCAO":
     MSG_CAMPO="1=SEM RATEIO  2=COM RATEIO  3=APENAS RATEIO"
  Case Campo="TG_DTFIM"  :
     MSG_CAMPO="Informe a Data Final"
  Case Campo="TG_COMISSAO":
       MSG_CAMPO="Defina a op‡„o"
       TECLA="Barra de Espa‡o=Marca/Desmarca  "
     
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;************************************
;* ROTINA PARA Ler/Gravacao Opcao   *
;************************************
Proc ModeloRelatoriosCarregaLista()

VSDGCODMODELO     = ""
VSDGMODELO        = ""

;ModeloRelatoriosAdd("XXX XX maximo 70 XX")

ModeloRelatoriosAdd("Criar") ; linha obrigatoria inicial
ModeloRelatoriosAdd("01  Empresa/Representante")
ModeloRelatoriosAdd("02  Representante/Empresa")
ModeloRelatoriosAdd("02B Representante/Empresa sem a Receber/a Pagar ao Representante")
ModeloRelatoriosAdd("Fim")
                           
EndProc ;ModeloRelatoriosCarregaLista


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

sys_valor()

VSDGEMPRESA  = ""
VSDGREPRESEN = ""
VSDGGERENCIA = ""
VSDGDESCGERENCIA = ""
VSDGOPCAO    = ""
VSDGNOMOPCAO = ""
VSDGTAXAD   = BlankNum()
VSDGDTINI   = BlankDate()
VSDGDTFIM   = BlankDate()
DTINI       = BlankDate()
DTFIM       = BlankDate()

Array TG_COMISSAO[1]
TG_COMISSAO[1]="Gera comiss„o Contas a Pagar"

Array CheckTG_COMISSAO[ArraySize(TG_COMISSAO)]
CheckTG_COMISSAO[1]=False

ModeloRelatoriosCarregaLista()

While True

  ShowDialog "Apura‡„o de Comiss„o - % NF [ACERTO III]" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
    @ 01,00 Height 22 Width 80

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

		Label  @ 02,00 "Representante"  For "TG_REPRESEN"
    Accept @ 03,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_REPRESEN" To VSDGREPRESEN
    Accept @ 03,09 Width 25 "A20" Picture "!*!" Tag "TG_NOMREPR"  To VSDGNOMREPR

    Label  @ 04,00 "Gerˆncia " For "TG_GERENCIA"
    Accept @ 05,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_GERENCIA" To VSDGGERENCIA
    Accept @ 05,09 Width 25 "A10"  Picture "!*!" Tag "TG_DESCGERENCIA" To VSDGDESCGERENCIA
    
    Label  @ 06,08 "% Devoluc„o"  For "TG_TAXAD"
    Accept @ 07,09 Width 12 "N" Tag "TG_TAXAD" To VSDGTAXAD

    Label  @ 08,00 "Per¡odo Referente de" For "TG_DTINI"
    Accept @ 09,03 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 09,16 "at‚" For "TG_DTFIM"
    Accept @ 09,21 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Label  @ 00,35 "Rateio de Comiss„o" For "TG_OPCAO"
    Accept @ 01,39 Width 04 "A1"  Picture "1,2,3" Tag "TG_OPCAO" To VSDGOPCAO
    Accept @ 01,44 Width 25 "A30" Picture "!*!" Tag "TG_NOMOPCAO" To VSDGNOMOPCAO

    CheckBoxes @ 03,35 Height 1 Width 35 Tag "TG_COMISSAO"
    TG_COMISSAO[1] to CheckTG_COMISSAO[1]        

    @ 14,01 ?? "Regra: Vendas, Devolu‡äes, %Adm/Devolu‡äes, Vales, A Receber/Pagar,"
    @ 15,01 ?? "       D‚bito/Cr‚dito ComissÆo"

    Label  @ 17,00  "Modelo de ~R~elat¢rio"  For "TG_CODMODELO"
    Accept @ 18,01  Width 06 "A3"  Picture "!*!" Tag "TG_CODMODELO" To VSDGCODMODELO
    Accept @ 18,06  Width 47 "A60"  Picture "!*!" Tag "TG_MODELO" To VSDGMODELO        

    Pushbutton @ 18,54 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 18,66 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf
  If Not Valida_ShowDialog("") Then Loop EndIf
  if not ValidarModelosRelatorios() then loop endif         
  
  If VSDGDTFIM=BlankDate()
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf

  ;---- Processo Omitido -----------------------------------
  ;VSDGOPCAO = "1"

  Switch
    Case VSDGOPCAO = "1" : INICIO_RATEIO = 1
                           FIM_RATEIO    = 1 
    Case VSDGOPCAO = "2" : INICIO_RATEIO = 1
                           FIM_RATEIO    = 2
    Case VSDGOPCAO = "3" : INICIO_RATEIO = 2
                           FIM_RATEIO    = 2
  EndSwitch
  ;---------------------------------------------------------  

  DISPOSITIVO()
  If OK="" Then Loop EndIf

  AGUARDE("Aguarde, Gerando o Relat¢rio")
  Tabela=Cria_Temp(PrivDir())
  Empty "\\Base\\Sistemas\\Vendas\\Rm_0621"
  Copy "\\Base\\Sistemas\\Vendas\\Rm_0621"  Tabela
  
  Switch
    Case SYS_CODIGO_CLIENTE="0051" : PLCONTAS="2.1.01.05.009"
    Case SYS_CODIGO_CLIENTE="0222" : 
         PLCONTAS ="2.1.09.02"
         PLCONTAS2="2.4.01.01.002"
         PLCONTAS3="2.4.01.01.004"
    Case SYS_CODIGO_CLIENTE="0231" : PLCONTAS="2.1.01.14"
    Case SYS_CODIGO_CLIENTE="0359" : PLCONTAS="2.1.01.14.001"
    OtherWise                      : PLCONTAS="NAO FAZ NADA"
  EndSwitch

  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    Seleciona()
    SelecionaVales()
    SelecionaDebitoCredito()
    SelecionaDuplic()
    SelecionaTitulos()
    If SYS_CODIGO_CLIENTE="0222" 
       Then SelecionaAdiantamentos()
            ;SelecionaOutrosCreditos()
    EndIf   
  EndWhile
  
  If IsEmpty(Tabela)
     Then MENSAGEM("N„o existem registros a processar")
          Delete Tabela
          Loop
  EndIf
  Processa()

  if CheckTG_COMISSAO[1]
     then
          GeraComissao()
     else
          Switch
            case VSDGCODMODELO="01" : IMPRIREL(Tabela,"R")
            case VSDGCODMODELO="02" : IMPRIREL(Tabela,"2")
            case VSDGCODMODELO="02B": IMPRIREL(Tabela,"3")
          EndSwitch
  endif        

  Delete Tabela

EndWhile
ClearAll
Release Vars All
Release Procs All
