;** Rm_0621  *******************************************************************
;*  Emissao da Apuracao da Comissao % da Nota - Acerto                         *
;*******************************************************************************
;Autor: Visao/Vise
;Desenvolvido    : 22/09/2009 por Anivel Augusto Rodrigues
;Ultima Alteracao: 29/04/2010 por Cleber Alves            
;Motivo Alteracao: ".." VSDGGERENCIA

;*******************************************************************************
;* Rotina para Selecionar Registros                                            *
;*******************************************************************************
Proc SELECIONA()

ClearAll
;****** Vendas *******
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC")
   Then
        {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
        Moveto [Codigo do Representante] Example "crep"
        Moveto [Descricao Gerencia     ] Check
        If VSDGGERENCIA<>".."
           Then TypeIn VSDGGERENCIA
        EndIf
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter Check
        Moveto [Codigo da Empresa        ] TypeIn "~VSDGEMPRESA.."
        Moveto [Codigo do Representante  ] TypeIn "_crep, ~VSDGREPRESEN.."
        Moveto [Descricao da Destinacao  ] TypeIn "..VEND.."
        Moveto [Tipo Movimento Estoque   ] TypeIn "S"
        Moveto [Situacao                 ] TypeIn "Not C"
        Moveto [Data de Emissao          ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Do_It!
        ClearAll

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

          [Operacao                 ]="1-Vendas"
          [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                   ]=[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]
          [Valor Comissao           ]=([Valor Mercadoria Liquido ]*
                                       [Comissao do Representante])/100
          [Observacoes              ]=[Codigo]+" "+Completa(Substr([Razao Social],1,30),32," ")+
                                      [UF]+"/"+Substr([Cidade],1,20)

          Moveto "Answer"
        EndScan
        Do_It!
        ClearAll
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
        If VSDGGERENCIA<>".."
           Then TypeIn VSDGGERENCIA
        EndIf
        {Ask} TypeIn "\\Sistemas\\Estoque\\"+Dir_Trab+"NotaEC" Enter Check
        Moveto [Codigo da Empresa        ] TypeIn "~VSDGEMPRESA.."
        Moveto [Codigo do Representante  ] TypeIn "_crep, ~VSDGREPRESEN.."
        Moveto [Data de Entrada          ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Moveto [Tipo de Operacao         ] TypeIn "D"
        Do_It!
        ClearAll

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

          [Operacao                 ]="2-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  ]
          [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,20)

          Moveto "Answer"
        EndScan
        Do_It!
        ClearAll
EndIf

;****** Devolucoes ***
If IsTable("\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC")
   Then
        {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
        Moveto [Codigo do Representante] Example "crep"
        Moveto [Descricao Gerencia     ] Check
        If VSDGGERENCIA<>".."
           Then TypeIn VSDGGERENCIA
        EndIf
        {Ask} TypeIn "\\Sistemas\\Vendas\\"+Dir_Trab+"NotaC" Enter Check
        Moveto [Codigo da Empresa        ] TypeIn "~VSDGEMPRESA.."
        Moveto [Codigo do Representante  ] TypeIn "_crep, ~VSDGREPRESEN.."
        Moveto [Descricao da Destinacao  ] TypeIn "..DEVOL.."
        Moveto [Tipo Movimento Estoque   ] TypeIn "E"
        Moveto [Situacao                 ] TypeIn "Not C"
        Moveto [Data de Emissao          ] TypeIn ">=~VSDGDTINI,<=~VSDGDTFIM"
        Do_It!
        ClearAll

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

          [Operacao                 ]="2-Devolucoes"
          [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                   ]=[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]
          [Valor Comissao           ]=(([Valor Mercadoria Liquido ]*
                                        [Comissao do Representante])/100)*-1
          [Observacoes              ]=[Codigo]+" "+Completa(Substr([Razao Social],1,30),32," ")+
                                      [UF]+"/"+Substr([Cidade],1,20)

          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 "2-Devolucoes"
Moveto [Codigo da Empresa       ] Check
Moveto [Nome Fantasia Empresa   ] Check
Moveto [Codigo do Representante ] Check
Moveto [Nome Fantasia Represent ] 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                 ]="4-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  ]
  [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 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
        If VSDGGERENCIA<>".."
           Then TypeIn VSDGGERENCIA
        EndIf
        Moveto [Conta Contabil Represent] 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                 ]="4-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  ]
          [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 Comissao           ]=[Answer->Valor]*-1

          Moveto "Answer"
        EndScan
        Do_It!
        ClearAll

EndIf
EndProc     ;  (Seleciona)

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

If IsTable("\\Sistemas\\Ctarec\\"+Dir_Trab+"Duplic")
   Then
        {Ask} TypeIn "\\Sistemas\\Cadastro\\Represen" Enter
        Moveto [Codigo do Representante] Check TypeIn "~VSDGREPRESEN.."
        Moveto [Nome Fantasia Represent] Check
        Moveto [Descricao Gerencia     ] Check
        If VSDGGERENCIA<>".."
           Then TypeIn VSDGGERENCIA
        EndIf
        Moveto [Conta Contabil Represent] 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"
        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                 ]="5-A Receber"
          [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                   ]=[Answer->Codigo do Destinatario   ]
          [Razao Social             ]=[Answer->Razao Social             ]
          [Descricao da Destinacao  ]=LTrim([Answer->Descricao Plano_Conta])
          [Observacoes              ]="Vencto "+Format("D13",[Answer->Data de Vencimento])+" * "+
                                      [Answer->Observacoes              ]
          [Valor Comissao           ]=[Answer->Saldo do Documento]*-1

          Moveto "Answer"
        EndScan
        Do_It!
        ClearAll

EndIf
EndProc     ;  (Seleciona)

;*******************************************************************************
;* Rotina                                                                      *
;*******************************************************************************
Proc SD_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() 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="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"
                         If IsBlank(VSDGGERENCIA) 
                            Then VSDGGERENCIA = ".."
                         EndIf 
                    Case Campo="TG_TAXAD"   :Campo="TG_DTINI"
                    Case Campo="TG_DTINI"   :Campo="TG_DTFIM"
                    Case Campo="TG_DTFIM"   :Campo="YES"
                  EndSwitch
          EndIf
          RefreshDialog
   EndSwitch
EndIf
Switch
  Case Campo="TG_DTFIM":
     MSG_CAMPO="Informe a Data Final"
Endswitch
Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

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

If Not IsAssigned(SYS_CODIGO_CLIENTE)  Then SYS_CODIGO_CLIENTE="0222"  EndIf

LimpAguarde()
VSDGEMPRESA =""
VSDGREPRESEN=""
VSDGGERENCIA=""
VSDGTAXAD   =BlankNum()
VSDGDTINI   =BlankDate()
VSDGDTFIM   =BlankDate()

While True

  ShowDialog "Apura‡„o de Comiss„o p/ Repres.- % NF [ACERTO]" Proc "SD_Dialog"
  Trigger "OPEN","ARRIVE"
  Key "F1","ENTER","ESC","TAB",
      -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -139, -140  
   @ 05,12   Height 13 Width 56

    Label  @ 00,00 "Empresa"  For "TG_EMPRESA"
    Accept @ 01,01 Width 07 "A4"  Picture "[&,#][#*#]" Tag "TG_EMPRESA"    To VSDGEMPRESA
    Accept @ 01,09 Width 23 "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 23 "A20" Picture "!*!" Tag "TG_NOMREPR"  To VSDGNOMREPR

    Label  @ 02,35 "Gerˆncia" For "TG_GERENCIA"
    Accept @ 03,36 Width 13 "A10"  Picture "!*!" Tag "TG_GERENCIA" To VSDGGERENCIA

    Label  @ 04,00 "Taxa de Devolu‡„o"  For "TG_TAXAD"
    Accept @ 05,01 Width 17 "N" Picture "#*#.[##]"  Tag "TG_TAXAD" To VSDGTAXAD

    Label  @ 06,00 "Per¡odo Referente" For "TG_DTINI"
    Label  @ 07,00 "de" For "TG_DTINI"
    Accept @ 07,04 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTINI" To VSDGDTINI
    Label  @ 07,17 "at‚" For "TG_DTFIM"
    Accept @ 07,22 Width 13 "D"  Picture "#[#];.##;.##[##]" Tag "TG_DTFIM" To VSDGDTFIM

    Pushbutton @ 09,14 width 11 "~O~k"      OK     Default Value "Ok" Tag "YES" To BottonValue
    Pushbutton @ 09,28 width 11 "~C~ancela" CANCEL                    Tag "NO"  To BottonValue

  EndDialog
  If Not RetVal Then QuitLoop EndIf

  If VSDGDTFIM=BlankDate()
     Then Mensagem("Data Final Invalida !")
          Loop
  EndIf

  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"
    OtherWise                      : PLCONTAS="NAO FAZ NADA"
  EndSwitch

  Monta_Dir_Trab(VSDGDTINI,VSDGDTFIM)
  While Novo_Dir_Trab()
    Seleciona()
    SelecionaVales()
    SelecionaTitulos()
  EndWhile

  If IsEmpty(Tabela)
     Then MENSAGEM("N„o existem registros a processar")
          Delete Tabela
          Loop
  EndIf
  Processa()

  IMPRIREL(Tabela,"R")

  Delete Tabela

EndWhile
ClearAll
Release Vars All
Release Procs All
