'Nome       : CobRpoMes.std
'Tipo       : LST
'Data       : 2006/07/20
'Versao     : 1.0
'Descricao  : Registo de ponto Mensal

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.0   2006/??/?? --------------------------------------------------
'Versao base


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


'==============================================================================
#ESP - Campos especificos
'==============================================================================
'Especifico 1                      [EspOp1]=Opcao 1
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=RpoMes
Nome                       [DocNom]=RpoMes,Ponto Mensal

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

'especifico do documento
Opcao especifica           [DocEsp]=OpcEsp=???


'funcoes de listagem
Listar cabecalho            [FxCAB]=RpoMes_Cab
Listar linhas               [FxLIN]=RpoMes_Lin; Sbt
Listar fim                  [FxFIM]=RpoMes_Fim
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=RpoMes
Nome                       [DocNom]=RpmXls,Ponto Mensal (XLS)

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

'especifico do documento
Opcao especifica           [DocEsp]=OpcEsp=???


'funcoes de listagem
Base para documento         [FxDOC]=RpmXls
Listar cabecalho            [FxCAB]=RpmXls_Cab
Listar linhas               [FxLIN]=RpmXls_Lin, 0; Sbt, 0
Listar fim                  [FxFIM]=RpmXls_Fim

Matriz auxiliar            [DocMat]=CobRpoMes.xls
##


'==============================================================================
#VAR - Variaveis
'==============================================================================
'------------------------------------------------------------------------------
'Lista de variaveis especificas
'------------------------------------------------------------------------------
'valores texto
'MemTxt$(01)   - Titulo da listagem
'MemTxt$(11)   - ?


'------------------------------------------------------------------------------
'Formatacao de valores
'------------------------------------------------------------------------------
Pag       = Doc_CntPag
Cnt       = FrmVal$(CntAux(1),21,4)
Tit080    = TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",Memtxt$(1))
Tit132    = TxTit$("TT=16CPI, LD, PT=66C",Memtxt$(1))

DataExt   = FrmDt$("EXT",Sig_DtHoje)
'DataExt   = FrmDt$("EXT",Doc_DtHoje)


'obra
'---------------------------------------------------------->'Comentario (61)
ObrTdo    = Cob_OrcDoc_Tdoc$                                'tipo de documento
ObrNdo    = Cob_OrcDoc_Ndoc$                                'numero de documento
ObrDoc    = FrmNdo$("",Cob_OrcDoc_Tdoc$,Cob_OrcDoc_Ndoc$)   'documento
ObrDes    = left$(Cob_OrcDoc_Res$,30)                       'descricao resumida
ObrLoc    = left$(Cob_OrcDoc_Loc$,30)                       'local
ObrVto    = FrmNum$(12.2,VarCom("ObrVcuVto"))               'valor total

'conta
CliCod    = Cta_Mst_Ct$                                     'conta
CliNom    = Cta_Mst_Nome$                                   'nome da conta
CliIde    = Cta_Mst_Ct$+" - "+Cta_Mst_Nome$                 'identificacao da conta

'acumulador
AcmCod    = VarCom$("AcmCod")                               'codigo
AcmTip    = VarCom$("AcmTip")                               'tipo
AcmGrp    = VarCom$("AcmGrp")                               'grupo
AcmIde    = VarCom$("AcmIde")                               'identificacao
AcmIdm    = CobLstMatIde$(VarCom$("AcmCod"))                'identificacao de material

AcmCnt    = FrmNum$(12.2,VarCom("AcmCnt"))                  'contagem
AcmQur    = FrmNum$(12.2,VarCom("AcmQur"))                  'quantidade
AcmVto    = FrmNum$(12.2,VarCom("AcmVto"))                  'valor

##


'==============================================================================
#PGM - Programa/Funcoes
'==============================================================================
'---------------------------------------------------------->'Comentario (61)
'------------------------------------------------------->'Comentario (58)
'---------------------------------------------------->'Comentario (55)
'------------------------------------------------->'Comentario (52)
'------------------------------------->'Comentario (40)

Sub Lst_AJT
end sub


'------------------------------------------------------------------------------
' Ponto Mensal
'------------------------------------------------------------------------------
Sub RpoMes_Cab 'cabecalho
FxDiv LstIde,16CPI,0
?@Tit080                                                                        #
?Data : @DataExt                                                  Folha No: @Pag#
?================================================================================
?    Obra         Descricao                                  Tipo        Horas  #
'      1/2006     Obra da Autoestrada A500                  990101     <23456789>
'123456789.12345  123456789.123456789.123456789.123456789.  123456789. 123,456.00
'123456789.123456789.123456789.123456789.123456789.123456789.123456789.123456789.
?================================================================================
end sub


Sub RpoMes_Lin 'linha de valores
docTip$ = VarCom$("DocTip")                        'documento - tipo
docNdv$ = VarCom$("DocNdv")                        'documento - numero
docIde$ = Cob_OrcDoc_Res$                          'identificacao do documento
horTip$ = VarCom$("RpmCh4")                        'horas - tipo

'listar
print Tab(01) docNdv$;                             'documento - numero
print Tab(18) docIde$;                             'identificacao
print Tab(60) horTip$;                             'tipo de horas
print Tab(71);                                     'posicionar para horas

call RpoMes_Acm                                    'listar acumulados
end sub


Sub RpoMes_LinSbt 'linha de subtotais
sbtNiv  = VarCom("SbtNiv")                         'subtotal - nivel
sbtTip$ = VarCom$("SbtTip")                        'subtotal - tipo
sbtChv$ = VarCom$("SbtChv")                        'subtotal - chave
sbtIde$ = VarCom$("SbtIde")                        'subtotal - identificacao

'listar
ids$= "Subtotal (" + SbtIde$ + ")"                 'identificacao do subtotal
print Tab(18) ids$;                                'identificacao
print Tab(60) sbtChv$;                             'chave
print Tab(71);                                     'posicionar para horas

call RpoMes_Acm                                    'listar acumulados

if sbtNiv = 2 then                                 'total do cliente ?
   tmp=CntLin("INC",-1)                            'contar linha
   call RpmXls_IncLin                              'incrementar linha
   print                                           'linha de separacao
end if
end sub


Sub RpoMes_Fim
?================================================================================
print tab(18) "Totais:";
print tab(71);

call RpoMes_Acm                                    'listar acumulados
?================================================================================
FxDiv LstPer,SP
end sub


Sub RpoMes_Acm 'listar acumulados
'for i = 0 to 31
for i = 0 to 0
ntx$ = NumTxt$(i, 2)                               'numero em texto
chv$ = "Acm" + ntx$                                'chave para valor
acm  = VarCom(chv$)                                'valor acumulado

if acm = 0 then                                    'sem valor ?
   vtx$ = space$(10)                               'valor a listar
   'vtx$="<        >"
else
   vtx$ = FrmNum$(7.2, acm)                        'valor a listar
end if

print vtx$;                                        'listar
next
print
end sub


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

'dfi$ = VarCom$("DocDir")                           'directorio de documentos EXCEL
'nfi$ = "RND:" + VarCom$("DocNom") + ".xls"         'nome do ficheiro

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_LinFim 'fim de linhas
res = XlsLinEli(xlsLin, 1)                         'eliminar linha - ultima
res = XlsLinEli(xlsLba, 1)                         'eliminar linha - primeira

res = XlsIdePsq("PO_FIM")                          'pesquisar posicao final
linFim = XlsIdePsqRes("L")                         'linha da posicao final
end sub


Sub Xls_DocFim 'terminar documento
ver = 1                                            'modo ver
res = XlsDocDir$("A", dfi$)                        'activar directorio
res = XlsDocGrv(ficDoc$)                           'gravar ficheiro

if ver = 1 then                                    'mostrar ?
   res = XlsVer(0)                                 'mostrar EXCEL - normal
   'res = XlsVer(1)                                 'mostrar EXCEL - maximizado
end if

res = XlsLib(0)                                    'libertar EXCEL

'msgbox "","DocFim " + ficDoc$
end sub


Sub Xls_LinInc 'incrementar linha
xlsLsa = xlsLin                                    'linha de saida
res = XlsLinIns(xlsLin, 1)                         'juntar linha

'seguinte
xlsLin = xlsLin + 1                                'contar linha
end sub


'==============================================================================
'= Listagem para EXCEL ========================================================
'==============================================================================
'---------------------------------------------------------->'Comentario (61)
'------------------------------------------------->'Comentario (52)
'------------------------------------->'Comentario (40)

Sub RpmXls_DocIni 'inicializar documento
'msgbox "","DocIni"

'call Xls_DocIni                                    'inicializar documento
'call RcuXls_Prep                                   'preparar
'call RcuXls_Cab                                    'cabecalho
end sub


Sub RpmXls_PrpLst 'preparar listagem do documento
'msgbox "","PrpLst"

call Xls_DocIni                                    'inicializar documento
call RpmXls_Prep                                   'preparar
call RpmXls_Cab                                    'cabecalho
end sub


Sub RpmXls_DocFim 'terminar documento
'msgbox "","DocFim"
linIni = linBav                                    'linha inicial
linFim = linCnt                                    'linha final

'mostrar
call Xls_DocFim                                    'terminar/mostrar documento
end sub


Sub RpmXls_Prep 'preparar para listar
res = XlsWks("Valores")                            'activar worksheet

res = XlsIdePsq("PO_BAS")                          'pesquisar posicao base
linBav = XlsIdePsqRes("L")                         'linha da posicao base

xlsLba = linBav                                    'linha base
xlsLin = linBav + 1                                'contador de linhas usadas

'colunas a usar
coObrDoc = 2                                       'obra - documento
coObrIde = 3                                       'obra - identificacao

coHorTip = 4                                       'tipo de horas
coHorTot = 5                                       'total de hora
coHorBas = 5                                       'base para horas

coObrObs = coHorBas + 32                           'observacoes
end sub


Sub RpmXls_IncLin 'incrementar linha
call Xls_LinInc                                    'incrementar linha
liUsa =  xlsLsa                                    'linha a usar
end sub


Sub RpmXls_Acm 'listar acumulados
for i = 0 to 31
ntx$ = NumTxt$(i, 2)                               'numero em texto
chv$ = "Acm" + ntx$                                'chave para valor
acm  = VarCom(chv$)                                'valor acumulado

coAcm = coHorBas + i                               'coluna
if acm = 0 then                                    'sem valor ?
   res = XlsLst(liUsa, coAcm, "")                  'limpar valor
else
   res = XlsLst(liUsa, coAcm, acm)                 'listar valor
end if
next
end sub


Sub RpmXls_Adi 'listar adicional
for i = 1 to 31
ntx$ = NumTxt$(i, 2)                               'numero em texto
chv$ = "Adi" + ntx$                                'chave para valor
adi$ = "'" + VarCom$(chv$)                         'valor adicional

coAdi = coHorBas + i                               'coluna
res = XlsLst(liUsa, coAdi, adi$)                   'listar valor
next

res = XlsLst(liUsa, coObrIde, COB_OrcDocEx_Adi$)   'listar valor
end sub


Sub RpmXls_Cab 'cabecalho
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_Nom", empNom$)                'nome da empresa

res = XlsIdeLst("Lst_Data", lstDt$)                'data
end sub


Sub RpmXls_Lin 'linha de valores
call RpmXls_IncLin                                 'incrementar linha
liUsa =  xlsLsa                                    'linha a usar

docTip$ = VarCom$("DocTip")                        'documento - tipo
docNdv$ = VarCom$("DocNdv")                        'documento - numero
docIde$ = Cob_OrcDoc_Res$                          'identificacao do documento
horTip$ = VarCom$("RpmCh4")                        'horas - tipo

'listar
res = XlsLst(liUsa, coObrDoc, docNdv$)             'documento - numero
res = XlsLst(liUsa, coObrIde, docIde$)             'identificacao
res = XlsLst(liUsa, coHorTip, horTip$)             'tipo de horas

call RpmXls_Acm                                    'listar acumulados

call RpmXls_IncLin                                 'incrementar linha
liUsa =  xlsLsa                                    'linha a usar
call RpmXls_Adi                                    'listar adicional

'separar
call RpmXls_IncLin                                 'incrementar linha
liUsa =  xlsLsa                                    'linha a usar
end sub


Sub RpmXls_LinSbt 'linha de subtotais
call RpmXls_IncLin                                 'incrementar linha
liUsa =  xlsLsa                                    'linha a usar

sbtNiv  = VarCom("SbtNiv")                         'subtotal - nivel
sbtTip$ = VarCom$("SbtTip")                        'subtotal - tipo
sbtChv$ = VarCom$("SbtChv")                        'subtotal - chave
sbtIde$ = VarCom$("SbtIde")                        'subtotal - identificacao

'listar
ids$= "Subtotal (" + SbtIde$ + ")"                 'identificacao do subtotal
res = XlsLst(liUsa, coObrIde, ids$)                'identificacao
res = XlsLst(liUsa, coHorTip, sbtChv$)             'chave

call RpmXls_Acm                                    'listar acumulados

if sbtNiv = 2 then                                 'total do cliente ?
   call RpmXls_IncLin                              'incrementar linha
end if
end sub


'- Terminar/Totais ------------------------------------------------------------
Sub RpmXls_Fim 'terminar
call Xls_LinFim                                    'fim de linhas
call RpmXls_CorDia                                 'activar cor para dia

ltoUsa = LinFim                                    'linha para totais
liUsa  = ltoUsa                                    'linha a usar

call RpmXls_Acm                                    'listar acumulados

'terminar/mostrar
res = XlsWksAct("A", 1)                            'activar worksheet
end sub


Sub RpmXls_CorDia 'activar cor para dia
l1 = linBav - 2                                    'linha 1
l2 = LinFim - 0                                    'linha 2

ano$ = FrmDt$("A",Sig_DtHoje)                      'ano da data
mes$ = FrmDt$("M",Sig_DtHoje)                      'mes da data

for i = 1 to 31
c1 = coHorBas + i                                  'coluna 1
c2 = c1                                            'coluna 2
zon$ = XlsZon$(l1, c1, l2, c2)                     'zona

dse = DataDseAmd(ano$, mes$, i)                    'dia da semana

if dse = 1 then                                    'domingo ?
   cor$ = "255, 0, 0"                              'cor a usar 
   res = XlsCorBg(zon$, cor$)                      'activar cor de fundo
end if

if dse = 7 then                                    'sabado ?
   cor$ = "14"                                     'cor a usar 
   res = XlsCorBg(zon$, cor$)                      'activar cor de fundo
end if


next
end sub

##

