'Nome       : GtsPte.std
'Tipo       : LST
'Data       : 2003/11/23
'Versao     : 1.0
'Descricao  : Previsao de Tesouraria

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


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


'==============================================================================
#ESP - Campos especificos
'==============================================================================
Zoom para preview             [PrvZoom]=1
Opcoes para impressora WIN   [PrWinOpc]=[ORI=P]
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=GtsPte
Nome                       [DocNom]=LmDosPte,Previsão de Tesouraria

'formato
Saida/Impressora           [DocPrt]=
Linhas por pagina          [DocLpg]=50
Colunas por linha          [DocCol]=132
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0
Especifico do documento    [DocEsp]=XXX=Xyz

'funcoes de listagem
Listar cabecalho            [FxCAB]=LmDos_Cab
Listar linhas               [FxLIN]=LmDos_Lin; Ant; Per; RubIni; RubFim; Doc; Inf; PteMov
Listar fim                  [FxFIM]=LmDos_Fim
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=GtsPte
Nome                       [DocNom]=PteXls,Previsão de Tesouraria EXCEL

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

'funcoes de listagem
Base para documento         [FxDOC]=PteXls
Listar cabecalho            [FxCAB]=PteXls_Cab
Listar linhas               [FxLIN]=PteXls_Lin,0; Ant,0; Per,0; RubIni,0; RubFim,0; Doc,0; Inf,0; PteMov,0
Listar fim                  [FxFIM]=PteXls_Fim

Matriz auxiliar            [DocMat]=GtsPte.xls
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=GtsPte
Nome                       [DocNom]=PteMsw,Previsão de Tesouraria WORD
Vias                       [DocVia]=
Personalizacao             [DocPer]=

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

'funcoes de listagem
Base para documento         [FxDOC]=PteMsw
Listar cabecalho            [FxCAB]=PteMsw_Cab
Listar linhas               [FxLIN]=PteMsw_Lin,0; Ant,0; Per,0; RubIni,0; RubFim,0; Doc,0; Inf,0; PteMov,0
Listar fim                  [FxFIM]=PteMsw_Fim
##


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

'periodo da listagem
'MemTxt$(20)   - Periodo
'MemTxt$(21)   - Data inicial
'MemTxt$(22)   - Data final
'MemTxt$(23)   - Numero de dias
'MemTxt$(24)   - Identificacao de dias
'MemTxt$(25)   - Identificacao de periodo

'diversos
'MemTxt$(50)   - Observacoes

'dados do documento
'MemTxt$(60)   - Tipo
'MemTxt$(61)   - Documento
'MemTxt$(62)   - Descricao
'MemTxt$(63)   - Receber/Pagar
'MemTxt$(64)   - Entidade
'MemTxt$(69)   - Observacoes


'dados do dia
'MemTxt$(70)   - observacoes do dia
'MemNum$(76)   - dia
'MemNum$(77)   - dia da semana
'MemNum$(78)   - data a mostrar (dia+dia da semana)

'acumulados ao dia
'MemTxt$(90)   - observacoes

'valores numericos
'MemNum(05)    - separar semanas
'MemNum(06)    - discriminar rubricas
'MemNum(07)    - discriminar documentos

'valores do dia
'MemNum(11)    - receber - anterior
'MemNum(12)    - pagar   - anterior
'MemNum(13)    - receber - do dia
'MemNum(14)    - pagar   - do dia
'MemNum(15)    - receber - acumulado
'MemNum(16)    - pagar   - acumulado

'MemNum(51)    - valor a receber
'MemNum(52)    - valor a pagar
'MemNum(53)    - saldo

'dados do documento
'MemNum(60)    - data
'MemNum(61)    - valor
'MemNum(62)    - valor a usar

'dados do dia
'MemNum(70)    - numero do dia
'MemNum(71)    - receber
'MemNum(72)    - pagar
'MemNum(73)    - saldo
'MemNum(76)    - dia
'MemNum(77)    - dia da semana
'MemNum(78)    - data (dia+dia da semana)

'acumulados ao dia
'MemNum(91)    - receber
'MemNum(92)    - pagar
'MemNum(93)    - saldo


'------------------------------------------------------------------------------
'Formatacao de valores
'------------------------------------------------------------------------------
Tipo     =MemTxt$(1)
Pag      =Doc_CntPag
DataExt  =FrmVal$(Sig_DtHoje,45,0)

'opcoes
'MemNum(5)    - Separar semanas
'MemNum(6)    - Discriminar rubricas
'MemNum(7)    - Discriminar documentos

'dados diversos/rubrica/documento
ObsTip   = MemTxt$(10)

'RubCod   = MemTxt$(11)
'RubNom   = MemTxt$(12)
'RubIde   = MemTxt$(13)

RubCod   = Gts_Rub_Cod$
RubNom   = Gts_Rub_Nome$
RubDiaRec= MemNum(11)
RubDiaPag= MemNum(12)


'dados do documento
DocDia   = FrmDt$("",Gts_Pte_Dia)
DocRub   = Gts_Pte_Rub$
DocTpr   = Gts_Pte_Tpr$
DocEnt   = Gts_Pte_Ent$
DocTdo   = Gts_Pte_Tdoc$
DocNdo   = GtsFrmNdo$("46",Gts_Pte_Ndoc$,Gts_Pte_Ndoc$)
DocDes   = Gts_Pte_Des$
DocRP    = Gts_Pte_RP$
DocVlb   = FrmNum$(14.2,Gts_Pte_Vlb)
DocVlu   = FrmNum$(14.2,Gts_Pte_Vlu)
DocPvu   = FrmNum$( 4.2,Gts_Pte_Pvu)


'movimento PTE
mPteTip   = MemTxt$(60)
mPteDoc   = MemTxt$(61)
'mPteDescr = MemTxt$(62)
mPteDescr = Gts_Pte_Des$
mPteRP    = MemTxt$(63)
mPteEnt   = MemTxt$(64)
mPteObs   = MemTxt$(69)
mPteDt    = FrmDt$("",MemNum(60))
'mPteVl    = FrmNum$(14.2,MemNum(61))
mPteVu    = FrmNum$(14.2,MemNum(61))
'mPteVl    = FrmNum$(14.2,Gts_Pte_Vlu+7)
mPteVl    = FrmNum$(14.2,1234)


'dados do periodo anterior
AntObs   = MemTxt$(50)
AntRec   = FrmNum$(14.2,MemNum(51))
AntPag   = FrmNum$(14.2,MemNum(52))
AntVsl   = FrmNum$(14.2,MemNum(53))

'dados do dia
DiaObs   = MemTxt$(70)+"     "+MemTxt$(90)
DiaCnt   = FrmNum$(5,MemNum(70))
DiaRec   = FrmNum$(14.2,MemNum(71))
DiaPag   = FrmNum$(14.2,MemNum(72))
DiaVsl   = FrmNum$(14.2,MemNum(73))
DiaDt    = MemTxt$(78))

'acumulados ao dia
AcmObs   = MemTxt$(91)
AcmRec   = FrmNum$(14.2,MemNum(91))
AcmPag   = FrmNum$(14.2,MemNum(92))
AcmVsl   = FrmNum$(14.2,MemNum(93))
##


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

'-----------------------------------------------------------------------------
' Funcoes para inicializacao
'-----------------------------------------------------------------------------
Sub FxIni 'funcao de inicializacao
end sub


Sub FxFim 'funcao de finalizacao
end sub


'------------------------------------------------------------------------------
' Listagem em modo TEXTO/DOS
'------------------------------------------------------------------------------
Sub LmDos_Cab
FxDiv LstIde,16CPI,0
'print TxTit$("TT=10CPI, LD, PT=40C, TL=16CPI","Previsão de Tesouraria")
print TxTit$("TT=10CPI, LD, PT=66C, TL=16CPI","Previsão de Tesouraria")
?Data : @DataExt                                                                                                     Folha No : @Pag#
?====================================================================================================================================
?            Data            Valor a receber        Valor a Pagar              Saldo           Observacoes                          #
?====================================================================================================================================
end sub


Sub LmDos_LinAnt 'situacao anterior
?           Anterior        @AntRec               @AntPag               @AntVsl                @AntObs                              #
end sub


Sub LmDos_LinPer 'dados do periodo
?@DiaCnt  @DiaDt            @DiaRec               @DiaPag               @AcmVsl                @DiaObs                              #
end sub


Sub LmDos_LinRubIni 'inicio de rubrica
RubAntRec = MemNum(11)
RubAntPag = MemNum(12)
RubDiaRec = MemNum(13)
RubDiaPag = MemNum(14)
RubAcmRec = MemNum(15)
RubAcmPag = MemNum(16)
RubAntPte = RubAntRec-RubAntPag              'saldo anterior
RubDiaPte = RubDiaRec-RubDiaPag              'saldo do dia
RubAcmPte = RubAcmRec-RubAcmPag              'saldo acumulado

print tab(10) Gts_Rub_Cod$;
if MemNum(7) = 1 then                        'discrimina documentos ?
   'print tab(28) FrmNum$(14.2,RubAntRec);
   'print tab(50) FrmNum$(14.2,RubAntPag);
   'print tab(72) FrmNum$(14.2,RubAntPte);

   print tab(28) FrmNum$(14.2,RubDiaRec);
   print tab(50) FrmNum$(14.2,RubDiaPag);
   print tab(72) FrmNum$(14.2,RubDiaPte);

else
'   print tab(28) FrmNum$(14.2,RubAcmRec);
'   print tab(50) FrmNum$(14.2,RubAcmPag);
'   print tab(72) FrmNum$(14.2,RubAcmPte);

   print tab(28) FrmNum$(14.2,RubDiaRec);
   print tab(50) FrmNum$(14.2,RubDiaPag);
'   print tab(72) FrmNum$(14.2,RubDiaPte);
   print tab(72) FrmNum$(14.2,RubAcmPte);
end if

print tab(95) Gts_Rub_Nome$;
print                              'terminar linha
end sub


Sub LmDos_LinRubFim 'fim de rubrica
print tab(15) "Subtotal : ";
print tab(28) FrmNum$(14.2,RubAcmRec);
print tab(50) FrmNum$(14.2,RubAcmPag);
print tab(72) FrmNum$(14.2,RubAcmPte);
print                              'terminar linha
end sub


Sub LmDos_LinDoc 'documento
?            @DocTdo @DocNdo        @DocDes                             @DocVlu           @DocRP                                                           #
end sub


Sub LmDos_LinPteMov 'movimento PTE
?            @mPteDoc               @mPteDescr                          @mPteVl           @mPteRP  @mPteTip @mPteEnt       @mPteObs                        #
end sub


Sub LmDos_LinInf 'informacao
if MemTxt$(10) = "SEPSEM" then      'separar semanas
   print string$(132,"-")
end if

if MemTxt$(10) = "SEPDIA" then      'separar dias
   print
end if
end sub


Sub LmDos_Fim 'fim de listagem
print string$(132,"=")
FxDiv LstPer,SP
'Print PrtCmd("[SP]");
end sub


'-----------------------------------------------------------------------------
' XLS - Funcoes comuns
'-----------------------------------------------------------------------------
Sub Xls_DocIni 'inicializar documento
dfi$ = FicEmp$("EMP","Ext","dExcel",cmo$)          'directorio de documentos EXCEL
nfi$ = "RND:GtsPte.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

'res = XlsDocCri("")                                'criar documento
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


'-----------------------------------------------------------------------------
' PteXLS - Listar para EXCEL
'-----------------------------------------------------------------------------
Sub PteXls_DocIni 'inicializar documento
'res = MsgUtz("","Doc Ini","")

call Xls_DocIni                                    'inicializar documento
call PteXls_Prep                                   'preparar
end sub


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

linIni = linBav                                    'linha inicial
linFim = linCnt                                    'linha final

'mostrar
call Xls_DocFim                                    'terminar/mostrar documento
end sub


Sub PteXls_Prep 'inicializar EXCEL
res = XlsWks("Valores")                            'activar worksheet

empNum$ = Emp_Inf_Cod$                             'numero da empresa
empNom$ = Emp_Inf_Nome$                            'nome da empresa

lstPer$ = MemTxt$(25)                              'periodo da listagem
'lstDt$  = FrmDt$("", Sig_DtHoje)                   'data para listagem
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_Per", lstPer$)                'periodo da listagem
res = XlsIdeLst("Lst_Data", lstDt$)                'data

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
end sub


Sub PteXls_Lin 'linha de valores
'nada a executar
end sub


Sub PteXls_LinAnt 'situacao anterior
diaDt$ = "Anterior" 
diaRec = MemNum(51)                               'valor a receber
diaPag = MemNum(52)                               'valor a pagar
diaSal = MemNum(53)                               'valor de saldo

acmSal = MemNum(93)                               'valor de saldo acumulado

call PteXls_Lst                                   'listar de valores
end sub


Sub PteXls_LinPer 'dados do periodo
'diaDt$ = MemTxt$(76)                              'data do dia
diaDt$ = MemTxt$(78)                              'data do dia+dia da semana
diaRec = MemNum(71)                               'valor a receber
diaPag = MemNum(72)                               'valor a pagar
diaSal = MemNum(73)                               'valor de saldo

acmSal = MemNum(93)                               'valor de saldo acumulado

call PteXls_Lst                                   'listar de valores
end sub


Sub PteXls_Lst 'listar de valores
res = XlsLinIns(xlsLin, 1)                         'juntar linha

res = XlsLst(xlsLin, 2, diaDt$)                    'data
res = XlsLst(xlsLin, 3, diaRec)                    'valor a receber
res = XlsLst(xlsLin, 4, diaPag)                    'valor a pagar
res = XlsLst(xlsLin, 5, acmSal)                    'valor de saldo
res = XlsLst(xlsLin, 6, diaSal)                    'valor de saldo

'seguinte
xlsLin = xlsLin + 1                                'numero de linhas
End sub


Sub PteXls_Fim 'terminar
'res = XlsWksAct("A", "Grafico")                    'activar worksheet
res = XlsWksAct("A", 1)                            'activar worksheet
end sub


'-----------------------------------------------------------------------------
' WORD - Funcoes comuns
'-----------------------------------------------------------------------------
Sub Msw_DocIni 'inicializar documento
dfi$ = FicEmp$("EMP","Ext","dWord",cmo$)           'directorio de documentos WORD
nfi$ = "RND:GtsPte.doc"                            'nome do ficheiro
cmo$ = SigCmoCur$("MIX")                           'modulo corrente
ficDoc$ = FicTmp$(dfi$, nfi$)                      'ficheiro para documento
res = DirCri("D", dfi$)                            'criar directorio para documento

res = WordPrp(0)                                   'preparar WORD
res = WordDocCri("")                               'criar documento
end sub


Sub Msw_DocFim 'terminar documento
res = WordDocGrv(ficDoc$)                          'gravar ficheiro
'res = WordDocGrv("")                               'gravar ficheiro

res = WordVer(0)                                   'mostrar WORD - normal
'res = WordVer(1)                                   'mostrar WORD - maximizado

'res = WordFim(0)                                   'terminar WORD
res = WordLib(0)                                   'libertar WORD
end sub


'-----------------------------------------------------------------------------
' PteMSW - Listar para WORD
'-----------------------------------------------------------------------------
Sub PteMsw_DocIni 'inicializar documento
call Msw_DocIni                                    'inicializar documento
call PteMsw_Prep                                   'preparar
end sub


Sub PteMsw_DocFim 'terminar documento
'mostrar
call Msw_DocFim                                    'terminar/mostrar documento
end sub


Sub PteMsw_Prep 'preparar para listar
empNum$ = Emp_Inf_Cod$                             'numero da empresa
empNom$ = Emp_Inf_Nome$                            'nome da empresa

lstPer$ = MemTxt$(25)                              'periodo da listagem
'lstDt$  = FrmDt$("", Sig_DtHoje)                   'data para listagem
lstDt$  = FrmDt$("EXT", Sig_DtHoje)                'data para listagem

'grelha de titulos
res = WordTabCri("IDE", 6, 3)                      'criar tabela
res = WordTabColDx(1, 1.1)                         'largura da coluna
res = WordTabColDx(2, 4.1)                         'largura da coluna
res = WordTabColDx(3, 1.0)                         'largura da coluna

res = WordTabTit(1, "Previsão de Tesouraria")      'listar titulo
res = WordTabCelFon(1, 1, ",20,B+")                'ajustar titulo


'empresa
li = 3                                             'linha
txi$ = empNum$ + " - " + empNom$                   'informacao
res = WordTabCelTxt(li, 1, "Empresa:")             'identificacao
res = WordTabCelTxt(li, 2, txi$)                   'valor
res = WordTabCelAli(li, 2, "<")                    'alinhamento

'data
li = li + 1                                        'linha
txi$ = FrmDt$("", Sig_DtHoje)                      'informacao
res = WordTabCelTxt(li, 1, "Data:")                'identificacao
res = WordTabCelTxt(li, 2, txi$)                   'valor
res = WordTabCelAli(li, 2, "<")                    'alinhamento

'periodo da listagem
li = li + 1                                        'linha
txi$ = lstPer$                                     'informacao
res = WordTabCelTxt(li, 1, "Periodo:")             'identificacao
res = WordTabCelTxt(li, 2, txi$)                   'valor
res = WordTabCelAli(li, 2, "<")                    'alinhamento


fon$ = ",,B+"                                      'fonte bold
for li = 2 to 6
res = WordTabCelFon(li, 1, fon$)                   'activar fonte
next

'grelha de dados
res = WordInsLin(2)                                'linhas de separcao das tabelas

'titulos de colunas
res = WordTabCri("LIN", 2, 4)                      'criar tabela
res = WordTabColDx(1, 1.7)                         'largura da coluna
res = WordTabColDx(2, 1.5)                         'largura da coluna
res = WordTabColDx(3, 1.5)                         'largura da coluna
res = WordTabColDx(4, 1.5)                         'largura da coluna

linTit = 1                                         'linha para titulos
res = WordTabTcoPrp(",14,B+", "20%")               'aspecto de titulo e colunas

res = WordTabTco(linTit, 1, "Dia")                 'descricao
res = WordTabTco(linTit, 2, "Receber")             'descricao
res = WordTabTco(linTit, 3, "Pagar")               'descricao
res = WordTabTco(linTit, 4, "Saldo")               'descricao

'diversos
mswLin = 1                                         'contador de linhas usadas
end sub


Sub PteMsw_Lin 'linha de valores
'nada a executar
end sub


Sub PteMsw_LinAnt 'situacao anterior
diaDt$ = "Anterior" 
diaRec = MemNum(51)                               'valor a receber
diaPag = MemNum(52)                               'valor a pagar
diaSal = MemNum(53)                               'valor de saldo

acmSal = MemNum(93)                               'valor de saldo acumulado

call PteMsw_Lst                                   'listar de valores
end sub


Sub PteMsw_LinPer 'dados do periodo
'diaDt$ = MemTxt$(76)                              'data do dia
diaDt$ = MemTxt$(78)                              'data do dia+dia da semana
diaRec = MemNum(71)                               'valor a receber
diaPag = MemNum(72)                               'valor a pagar
diaSal = MemNum(73)                               'valor de saldo

acmSal = MemNum(93)                               'valor de saldo acumulado

call PteMsw_Lst                                   'listar de valores
end sub


Sub PteMsw_LinInf 'informacao
if MemTxt$(10) = "SEPSEM" then      'separar semanas
   mswLin = mswLin + 1                             'numero de linhas
   res = WordTabInsLin(1)                          'criar linha
end if

if MemTxt$(10) = "SEPDIA" then      'separar dias
end if
end sub


Sub PteMsw_Lst 'listar de valores
mswLin = mswLin + 1                                'numero de linhas
res = WordTabInsLin(1)                             'criar linha

xDiaRec$ = FrmNum$(14.2, diaRec)                   'formatar
xDiaPag$ = FrmNum$(14.2, diaPag)                   'formatar
xDiaSal$ = FrmNum$(14.2, diaSal)                   'formatar
xAcmSal$ = FrmNum$(14.2, acmSal)                   'formatar

res = WordTabCelTxt(mswLin, 1, diaDt$)             'data 
res = WordTabCelTxt(mswLin, 2, xDiaRec$)           'valor a receber
res = WordTabCelTxt(mswLin, 3, xDiaPag$)           'valor a pagar
'res = WordTabCelTxt(mswLin, 4, xDiaSal$)           'valor de saldo
res = WordTabCelTxt(mswLin, 4, xAcmSal$)           'valor de saldo

'alinhamento
res = WordTabCelAli(mswLin, 1, "|")                'data
for co = 2 to 4 
res = WordTabCelAli(mswLin, co, ">")               'valores
next
end sub

##

