'Nome       : FREMUND.SQL
'Tipo       : LST
'Data       : 2009/11/20
'Versao     : 1.1
'Descricao  : Folha de remuneracoes para Excel discriminada

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.2  2009/05/20 ---------------------------------------------------
'na funcao LstCmvProc, assumir descontos caso codigo > 400

'- Versao : 1.1  2009/05/20 ---------------------------------------------------
'Permitir definir o processamento a listar

'- Versao : 1.0  2007/03/29 ---------------------------------------------------
'Versao base


'-----------------------------------------------------------------------------
' Definicao global do documento
'-----------------------------------------------------------------------------
#DEF
Caracteres invalidos             [CarInv]=#
##


'-----------------------------------------------------------------------------
' Campos especificos
'-----------------------------------------------------------------------------
#ESP
##


'==============================================================================
#SQL - Comandos SQL
'==============================================================================
Base de dados           [BD]=EmpFic$("EMP","Cemp,Emp_Dat.mdb")

'- generico -------------------------------------------------------------------
Listar empregados [Cmd]=GerLst=SELECT * FROM GpeMst

##


'-----------------------------------------------------------------------------
' Configuracao do documento
'-----------------------------------------------------------------------------
#DOC
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=Fremun-ger,Todos os processamentos

'formato
'Saida/Impressora           [DocSai]=1
Impressora                 [DocPrt]=NULA
Linhas por pagina          [DocLpg]=500
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0

'funcoes de listagem
Base para documento         [FxDOC]=XlsFrm
Listar cabecalho            [FxCAB]=XlsFrm_CabGer
Listar linhas               [FxLIN]=XlsFrm_Lin
Listar fim                  [FxFIM]=XlsFrm_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=GerLst
Subtotalizadores           [SQLSbt]=

Matriz auxiliar            [DocMat]=FremunD.xls
##

'-----------------------------------------------------------------------------
' Configuracao do documento
'-----------------------------------------------------------------------------
#DOC
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=Fremun-uni,Processamento indicado

'formato
'Saida/Impressora           [DocSai]=1
Impressora                 [DocPrt]=NULA
Linhas por pagina          [DocLpg]=500
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0

'funcoes de listagem
Base para documento         [FxDOC]=XlsFrm
Listar cabecalho            [FxCAB]=XlsFrm_Cab
Listar linhas               [FxLIN]=XlsFrm_Lin
Listar fim                  [FxFIM]=XlsFrm_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=GerLst
Subtotalizadores           [SQLSbt]=

Matriz auxiliar            [DocMat]=FremunD.xls
##

'-----------------------------------------------------------------------------
' Variaveis
'-----------------------------------------------------------------------------
#VAR
Pag         = Doc_CntPag
Data        = FrmVal$(Sig_DtHoje,45,0)

Est         = GpeCodFrm$("EST",Gpe_Mst_Est$)
EstNome     = GpeTabCon$("EST",Gpe_Mst_Est$,"NOME")

Sec         = GpeCodFrm$("SEC",Gpe_Mst_sec$)
SecNome     = GpeTabCon$("SEC",Gpe_Mst_sec$,"DESCR")

Trb         = Gpe_Mst_Trb$
Nome        = Gpe_Mst_Nome$

Vbase       = GpeFrmMoe$("",10,GpeAcmLst("V","REM","VB"))
Vpago       = GpeFrmMoe$("",10,GpeAcmLst("V","REM","VP"))
OutAbo      = GpeFrmMoe$("",10,GpeAcmLst("V","REM","OABN"))
Tsu         = GpeFrmMoe$("",8,GpeAcmLst("V","REM","TSU"))
Irs         = GpeFrmMoe$("",8,GpeAcmLst("V","REM","IRS"))
OutDes      = GpeFrmMoe$("",8,GpeAcmLst("V","REM","ODSC"))
Liq         = GpeFrmMoe$("",10,GpeAcmSal("SAL"))

TVbase      = GpeFrmMoe$("",11,Total(Vbase))
TVpago      = GpeFrmMoe$("",11,Total(Vpago))
TOutAbo     = GpeFrmMoe$("",11,Total(OutAbo))
TTsu        = GpeFrmMoe$("",9,Total(Tsu))
TIrs        = GpeFrmMoe$("",9,Total(Irs))
TOutDes     = GpeFrmMoe$("",9,Total(OutDes))
TLiq        = GpeFrmMoe$("",11,Total(Liq))

'- Resumo ------------
CmvC        = Gpe_Cmv_Cod$
CmvN        = Gpe_Cmv_Descr$
CmvQ        = FrmVal$(GpeLstCmvTot("Q",Gpe_Cmv_Cod$),20,8.2)
CmvV        = GpeFrmMoe$("",11,GpeLstCmvTot("V",Gpe_Cmv_Cod$))

CmvVTA      = GpeFrmMoe$("",11,GpeLstCmvTot("TA"))
CmvVTD      = GpeFrmMoe$("",11,GpeLstCmvTot("TD"))
CmvVTF      = GpeFrmMoe$("",11,GpeLstCmvTot("TF"))
CmvVL       = GpeFrmMoe$("",11,GpeLstCmvTot("TL"))
CmvVT       = GpeFrmMoe$("",11,GpeLstCmvTot("TG"))
CmvTsu      = GpeFrmMoe$("",11,GpeLstCmvTot("V",51))
CmvTsuTrb   = GpeFrmMoe$("",11,GpeLstCmvTot("V",710))

TotVbB      = GpeFrmMoe$("",11,GpeLstCmvTot("V",110)+GpeLstCmvTot("V",230))
TotVbP      = GpeFrmMoe$("",11,GpeLstCmvTot("V",110)+GpeLstCmvTot("V",230)-GpeLstCmvTot("TF"))
TotOA       = GpeFrmMoe$("",11,GpeLstCmvTot("TA")-GpeLstCmvTot("V",110)-GpeLstCmvTot("V",230))
##

'-----------------------------------------------------------------------------
' Programa/Funcoes
'-----------------------------------------------------------------------------
#PGM
SUB FxIni 'funcao de inicializacao
'msgbox "","FxIni",""
NrG$ = ""
Tot  = 0
Fl = 0
end sub


SUB FxFim 'funcao de finalizacao
res = XlsFim(0)                                 'terminar EXCEL
'msgbox "","FxFim",""
end sub

SUB Lst_AJT
end sub


'-----------------------------------------------------------------------------
' XLS - Funcoes comuns
'-----------------------------------------------------------------------------
'-------------------------------------------------------
Sub Xls_DocIni 'inicializar documento
'-------------------------------------------------------
dfi$ = FicEmp$("EMP","Ext","dExcel",cmo$)          'directorio de documentos EXCEL
nfi$ = "RND:FremunD.xls"                            'nome do ficheiro
cmo$ = SigCmoCur$("MIX")                           'modulo corrente
ficDoc$ = FicTmp$(dfi$, nfi$)                      'ficheiro para documento
res = DirCri("D", dfi$)                            'criar directorio para documento

xlsMatNom$ = DocOpc$("DocMat")                     'nome do ficheiro matriz
xlsMat$    = DocOpc$("DocMat+SBT")                 'endereco do ficheiro matriz

res = FicCop(xlsMat$, ficDoc$)                     'criar ficheiro (copia de matriz)

res = XlsPrp(0)                                    'preparar EXCEL
res = XlsDocLer(ficDoc$)                           'ler ficheiro
end sub


'-------------------------------------------------------
Sub Xls_DocFim 'terminar documento
'-------------------------------------------------------
'res = XlsLinEli(xlsLin, 1)                         'eliminar linha - ultima
'res = XlsLinEli(xlsLba, 1)                         'eliminar linha - primeira

'res = XlsWks(1)                                    'activar worksheet

res = XlsDocDir$("A", dfi$)                        'activar directorio
res = XlsDocGrv(ficDoc$)                           'gravar ficheiro

'res = XlsPrt(1)                                    'listar worksheet
res = XlsVer(0)                                    'mostrar EXCEL - normal
'res = XlsVer(1)                                    'mostrar EXCEL - maximizado
res = XlsLib(0)                                    'libertar EXCEL
end sub


'-----------------------------------------------------------------------------
' XLS - Resumo de vendas
'-----------------------------------------------------------------------------
'-------------------------------------------------------
Sub XlsFrm_DocIni 'inicializar documento
'-------------------------------------------------------
'msgbox "","","XlsFrm_DocIni"
call Xls_DocIni                                    'inicializar documento
call XlsFrm_Prep                                   'preparar
end sub

'-------------------------------------------------------
Sub XlsFrm_DocFim 'terminar documento
'-------------------------------------------------------
'res = MsgUtz("","Doc Fim","")

'mostrar
call Xls_DocFim                                    'terminar/mostrar documento
end sub


'-------------------------------------------------------
Sub XlsFrm_Cab 'linha de valores
'-------------------------------------------------------
'msgbox "","","cab"

tx$=gpeoplcon("PROC")
procLim$= " and [PROC]="+tx$+" "
proctit$=" processamento a listar : "+tx$
'fx=msgbox(proclim$)
end sub


'-------------------------------------------------------
Sub XlsFrm_CabGer 'linha de valores
'-------------------------------------------------------
'msgbox "","","cab"
'fx=msgbox("cab geral")
procLim$= ""
proctit$=" processamento a listar : Todos"
end sub


'-------------------------------------------------------
Sub XlsFrm_Fim 'terminar
'-------------------------------------------------------
call AcertoGraficoFinal
'res = XlsWksAct("A", "Grafico")                    'activar worksheet
res = XlsWksAct("A", 1)                            'activar worksheet
call Xls_DocFim                                    'terminar/mostrar documento
'fx=msgbox("FIM","")
end sub


'-------------------------------------------------------
Sub XlsFrm_Prep 'inicializar EXCEL
'-------------------------------------------------------
'msgbox "","","XlsFrm_Prep"
res = XlsWks("Valores")                            'activar worksheet
empNum$ = Emp_Inf_Cod$                             'numero da empresa
empNom$ = Emp_Inf_Nome$                            'nome da empresa
lstDt$  = FrmDt$("EXT", Sig_DtHoje)                'data para listagem
res = XlsIdeLst("Emp_Num", empNum$)                'numero da empresa
res = XlsIdeLst("Emp_Nome", empNom$)               'nome da empresa
res = XlsIdeLst("Lst_Data", lstDt$)                'data
res = XlsIdeLst("Lst_Proc", proctit$)             'limites processamento

fx=SqlDbPrp("")                                  'prepara acesso base dados

call CodigosNoProcessamento
xlsLin = 9                                        'contador de linhas usadas 
end sub


'-------------------------------------------------------
Sub XlsFrm_Lin 'linha de trabalhador
'-------------------------------------------------------
trb$   = SqlCmp$("Trb$")

fx = XlsLinIns(xlsLin, 1)                         'juntar linha
call Lista_Nome_Emp                                'Pesquisa o nome do Empregado
tot=0

sql$    = "SELECT * from GpeMov"+MesAno$+" WHERE cmv$ > '099' "+proclim$+"and trb$='"+trb$+"' ORDER BY Cmv$"
res = SqlQryGer("",sql$)   'gerar recordset
if res = 1
   call LstCmvProc      'listar codigos de processamento
end if

xlsLin = xlsLin + 1                           'contar linha
End sub


'-------------------------------------------------------
Sub LstCmvProc   'listar codigos do processamento 
'-------------------------------------------------------

Cnt = TxtSepMul(CodigosUsados$, ";")                        'Separar pelo caracter ';'
For idx=1 to cnt
  TTT$ = ConTx$(idx)      'codigo+coluna
  Cmv$ = left$(TTT$,3)      'codigo
  Col$ = right$(TTT$,2)     'coluna

  sql$ = "SELECT * from GpeMov"+MesAno$+" WHERE cmv$ = '"+cmv$+"' and trb$='"+trb$+"'"+proclim$
  res = SqlQryGer("",sql$)   'gerar recordset

  if res=1
     Vl    = SqlQryCmp(idq$,"VCalc")
     txVl$  = FrmVal$(vl,21,8.2)

    If Cmv$ > "400"   then
      Tot = Tot - vl
    else
      Tot = Tot + vl
    end if
    TxTot$   = FrmVal$(Tot,21,8.2)

    fx = XlsLst(xlsLin, col$, vl)                      'valor do codigo
    fx = XlsLst(xlsLin, lastcol, tot)                   'total
  end if
next  
end sub


'-------------------------------------------------------
Sub CodigosNoProcessamento  ' codigos existente no processamento (titulos - codigo)
'-------------------------------------------------------
lin1    = 6
Lin2    = 7
Col     = 5




MesAno$ = left$(FrmVal$(Sig_DtHoje,43,0),6)
sql$    = "SELECT Cmv$ from GpeMov"+MesAno$+" WHERE cmv$ > '099' "+proclim$+"GrOUP BY Cmv$ ORDER BY cmv$"


res = SqlQryGer("",sql$)   'gerar recordset
while res = 1
   fx=XlsColIns(col,1)

   Cmv$ = SqlQryCmp(idq$,"Cmv$")           
   fx = XlsLst(Lin1, Col, Cmv$)              'Código Movimento
   cl$  = NumTxT$(Col,5) 
   CodigosUsados$=CodigosUsados$+cmv$+right$(Cl$,2)+";"

   Col = col + 1
   res = SqlQryRgs(idq$)         'registo seguinte
Wend

LastCol = Col
'zon$ = XlsZon$(lin2, Col)
fx=XlsColIns(LastCol,1)
fx = XlsLst(Lin1,LastCol, "Total")           'Liquido
fx = XlsLst(Lin2,LastCol, "Liquido")           'Liquido
call Lista_Nome_Cmv
end sub


'-------------------------------------------------------
Sub Lista_Nome_Cmv  'escrever nome do cod.movimento no titulo
'-------------------------------------------------------
cnt = TxtSepMul(CodigosUsados$, ";")                        'Separar pelo caracter ';'
For idx=1 to cnt
   TTT$ = ConTx$(idx)      'codigo
   Cmv$ = left$(TTT$,3)
   Col$ = right$(TTT$,2)
   sql$="Select descr$ from gpecmv_grp where cod$='"+cmv$+"'"
   Res = SqlQryGer("",sql$)                                     'gerar recordset
   Nom$ = SqlQryCmp$(idq$,"Descr$")           
   fx = XlsLst(7,Col$, nom$)                   
next
end sub


'-------------------------------------------------------
Sub Lista_Nome_Emp 'Pesquisa o nome do Empregado
'-------------------------------------------------------
sql$="Select Nome$ from GPEMST where Trb$='"+trb$+"'"
Res = SqlQryGer("",sql$)                                     'gerar recordset
Nom$ = SqlQryCmp$(idq$,"Nome$")           

fx = XlsLst(xlsLin, 2, trb$)                      'Numero
fx = XlsLst(xlsLin, 3, Nom$)                      'Nome

end sub

'-------------------------------------------------------
sub AcertoGraficoFinal  'ajustes graficos finais da listagem
'-------------------------------------------------------
fx = XlsLinEli(8, 1)                         'eliminar linha
fx = XlsColEli(4, 1)                         'eliminar coluna
CodigosUsados$=""

XlsLin=xlsLin-1

'colocar formula totais
letras$="abcdefghijklmnopqrst"

for cl=4 to lastCol-1
  txc$=mid$(letras$,cl,1)              'letra da coluna
  t$=xlslin-1                          'ultima linha com valor
  txf$="=sum("+txc$+"8:"+txc$+t$+")"   'gerar formula
  fx=XLSFORM(XlsLin,cl,txf$)           'registar formula
next

end sub
##

