'Nome       : GtsChq.std
'Tipo       : LST
'Data       : 2015/03/11
'Versao     : 3.0
'Descricao  : GTS - Cheques

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 3.0   ____/__/__ --------------------------------------------------
'listagem em EXCEL

'- Versao : 2.0   2008/01/11 --------------------------------------------------
'listagem em modo grafico

'- Versao : 1.0   2007/06/18 --------------------------------------------------
'Versao base


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


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


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



'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=ChqLis
Nome                       [DocNom]=ChqLis,Lista de Cheques

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

'funcoes de listagem
Listar cabecalho            [FxCAB]=LisCab
Listar linhas               [FxLIN]=LisLin; Grp,3; Sbt,2
Listar fim                  [FxFIM]=LisFim
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=ChqLis
Nome                       [DocNom]=ChqLis_G,Lista de Cheques (Gráfico)

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


'funcoes de listagem
Listar cabecalho            [FxCAB]=LisChqG_Cab
Listar linhas               [FxLIN]=LisChqG_Lin; Grp; Sbt,0
Listar fim                  [FxFIM]=LisChqG_Fim
##


==============================================================================
#DOC - Relatorio de cobrancas (Diario)
'==============================================================================
Tipo                       [DocTip]=ChqLis
Nome                       [DocNom]=ChqLisXls,Lista de Cheques (XLS)

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

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

'funcoes de listagem
Base para documento         [FxDOC]=XlsLisChq
Listar cabecalho            [FxCAB]=XlsLisChq_Cab
Listar linhas               [FxLIN]=XlsLisChq_Lin, 0; Grp, 0; Sbt,0
Listar fim                  [FxFIM]=XlsLisChq_Fim

Matriz auxiliar            [DocMat]=GtsChq.xls
##


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

'registo de letras
'MemTxt$(20)   - tipo
'MemTxt$(21)   - nome do cliente/fornecedor

'valores numericos
'MemNum(21)    - numero da letra

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

'documento
vDocTdo  = Gts_Doc_Tdo$                         'tipo de documento
vDocNdo  = Gts_Doc_Ndo$                         'numero de documento
vDocNdv  = docNdv$                              'numero de documento formatado
vDocVer  = docVer$                              'documento
vDocDes  = Gts_Doc_Des$                         'descricao
vDocDte  = FrmDt$("", Gts_Doc_Dte)              'data de emissao
vDocDtv  = FrmDt$("", Gts_Doc_Dtv)              'data de vencimento
vDocVmn  = FrmNum$(12.2,Gts_Doc_Vmn)            'valor

'prestacao
vPreTdo  = Gts_Pre_Tdoc$                        'tipo de documento
vPreNdo  = Gts_Pre_Ndoc$                        'numero de documento
vPreIdp  = preIdp$                              'identificacao da prestacao
vIdp     = preIdp$                              'identificacao da prestacao
vPreNdv  = preNdv$                              'numero de documento formatado
vPreVer  = preVer$                              'documento
vPreDes  = Gts_Pre_Des$                         'descricao
vPreDte  = FrmDt$("", Gts_Pre_Dte)              'data de emissao
vPreDtv  = FrmDt$("", Gts_Pre_Dtv)              'data de vencimento
vPreVmn  = FrmNum$(12.2,Gts_Pre_Vmn)            'valor

'totais/subtotais
tPreCnt  = FrmNum$( 5.0,TotCnt("vPreVmn",0))    'numero de regitos - total
sPreCnt  = FrmNum$( 5.0,TotCnt("vPreVmn",1))    'numero de regitos - subtotal

tPreVmn  = FrmNum$(12.2,Total(vPreVmn,0))       'valor - total
sPreVmn  = FrmNum$(12.2,Total(vPreVmn,1))       'valor - subtotal
##


'==============================================================================
#INC - Variaveis comuns
'==============================================================================
Variaveis  comuns                 =[SIG_Dir.Div],LsComVar.std
##


'==============================================================================
#PGM - Programa/Funcoes
'==============================================================================
'- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
'- (13) --->'Comentario
'- (25) --------------->'Comentario
'- (28) ------------------>'Comentario
'- (40) ------------------------------>'Comentario
'- (43) --------------------------------->'Comentario
'- (46) ------------------------------------>'Comentario
'- (49) --------------------------------------->'Comentario
'- (52) ------------------------------------------>'Comentario
'- (55) --------------------------------------------->'Comentario
'- (58) ------------------------------------------------>'Comentario
'- (61) --------------------------------------------------->'Comentario


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


Sub FxFim 'funcao de finalizacao
'nada a executar
end sub


'==============================================================================
'- Comum ----------------------------------------------------------------------
'==============================================================================
Sub Com_Var_PrpCtu 'preparar variaveis - conta
res  = CtaContaLer(vuCtu$)                         'preparar dados da conta

'if res = 1 then                                    'conta valida ?
   vuCtuCov$ = CTA_MST_Ct$                         'codigo formatado
   vuCtuNom$ = CTA_MST_Nome$                       'nome
'else
'   vuCtuCov$ = vuCtu$                              'codigo formatado
'   vuCtuNom$ = "(Não existe)"                      'nome
'end if

vuCtuIde$ = vuCtuCov$ + " - " + vuCtuNom$          'identificacao
end sub


'------------------------------------------------------------------------------
'- [XLS] - Listar para EXCEL --------------------------------------------------
'------------------------------------------------------------------------------
Sub Com_Xls_DocIni 'inicializar documento
xlsOpcNfi$ = "RND:" + comXlsFic$                   'nome do ficheiro a gerar
xlsOpcWks$ = ""                                    'nome da woorksheet

call XlsComDoc_IniMat                              'inicializar documento por matriz

'preparacao especifica
res = XlsWks("Valores")                            'activar worksheet

'preparar cabecalho
empNum$ = Emp_Inf_Cod$                             'numero da empresa
empNom$ = Emp_Inf_Nome$                            'nome da empresa
lstTit$ = comCabTit$                               'titulo da listagem
lstTip$ = MemTxt$(2)                               'tipo da 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_Tit" , lstTit$)               'titulo da listagem
res = XlsIdeLst("Lst_Tipo", lstTip$)               'tipo da listagem
res = XlsIdeLst("Lst_Data", lstDt$)                'data

call XlsComLin_Ini                                 'iniciar linhas

'definicao das colunas
coNrg    = 3                                       'numero de registos - total
coNrs    = 3                                       'numero de registos - subtotal

coDoc    = 2                                       'documento
coPre    = 3                                       'prestacao
coDte    = 4                                       'data de emissao
coDes    = 5                                       'descricao
coVal    = 6                                       'valor

coDtv    = 7                                       'data de vencimento
coNdv    = 8                                       'dias para vencimento

coCtCod  = 9                                       'codigo
coCtNom  = 10                                      'nome

coObs    = 11                                      'observacoes
end sub


Sub Com_Xls_DocFim 'terminar documento
'res = XlsWksAct("A", 1)                            'activar worksheet
call XlsComDoc_Fim                                 'terminar/mostrar documento
end sub


Sub Com_Xls_IncLin 'incrementar linha
'call XlsComLin_Inc                                 'incrementar linha
call XlsComLin_IncRep                              'incrementar linha + repor formato normal

zon$ = XlsZon$(liUsa, coCod,liUsa, coNom)          'zona
'zon$= XlsZonNum$("L", liUsa)                      'zona da linha
res = XlsAli(zon$, "<")                            'alinhamento
end sub


Sub Com_Xls_LinSep 'linha de separacao
call Com_Xls_IncLin                                'incrementar linha
end sub


Sub Com_Xls_LstLin 'listar linha
tdo$      = Gts_Doc_Tdoc$                          'tipo de documento
ndo$      = Gts_Doc_Ndoc$                          'numero de documento
docNdv$   = FrmNdo$("46", tdo$, ndo$)              'numero do documento formatado
docVer$   = tdo$ + " " + docNdv$                   'documento a mostrar

tdo$      = Gts_Pre_Tdoc$                          'tipo de documento
ndo$      = Gts_Pre_Ndoc$                          'numero de documento
preNdv$   = FrmNdo$("46", tdo$, ndo$)              'numero do documento formatado
preVer$   = tdo$ + " " + preNdv$                   'documento a mostrar

preNpr$   = TxtCv$(Gts_Pre_PreNpr)                 'numero de prestacoes
preNum$   = TxtCv$(Gts_Pre_PreNum)                 'numero da prestacao
preIdp$   = preNpr$ + "/" + preNum$                'identificacao da prestacao

vuPreDte$ = FrmDt$("", Gts_Pre_Dte)                'data de emissao
vuPreDtv$ = FrmDt$("", Gts_Pre_Dtv)                'data de vencimento
vuPreNdi  = DataNdi(Gts_Pre_Dte, Gts_Pre_Dtv)      'numero de dias da prestacao
vuPreNdv  = DataNdi(Gts_Pre_Dte, Sig_DtHoje)       'numero de dias de vencimento

vuDes$    = Gts_Doc_Des$                           'descricao
vuVal     = Gts_Doc_Vmn                            'valor
vuCtu$    = Gts_Doc_Ct$                            'conta

vuObs$    = ""                                     'observacoes

call Com_Var_PrpCtu                                'preparar variaveis - conta

'listar
'res = XlsLst(liUsa, coDoc, preNdv$)                'documento
res = XlsLst(liUsa, coDoc, preVer$)                'documento
res = XlsLst(liUsa, coPre, preIdp$)                'prestacao
res = XlsLst(liUsa, coDte, vuPreDte$)              'data de emissao

res = XlsLst(liUsa, coDtv, vuPreDtv$)              'data de vencimento
res = XlsLst(liUsa, coNdv, vuPreNdi)               'numero de dias

res = XlsLst(liUsa, coDes, vuDes$)                 'descricao
res = XlsLst(liUsa, coVal, vuVal)                  'valor

res = XlsLst(liUsa, coCtCod, vuCtuCov$)            'conta - codigo
res = XlsLst(liUsa, coCtNom, vuCtuNom$)            'conta - nome

res = XlsLst(liUsa, coObs, vuObs$)                 'observacoes

'acumular
res = AcmExe("vPreVmn", vuVal)                     'acumular - valor
end sub


Sub Com_Xls_LstLinGrp 'listar linha - grupo
grpTip$ = VarCom$("GrpTip")                        'tipo
grpChv$ = VarCom$("GrpChv")                        'chave
grpIde$ = VarCom$("GrpIde")                        'identificacao

ide$    = grpIde$                                  'identificacao

'listar
res = XlsLst(liUsa, coNrs, ide$)                   'identificar grupo
end sub


Sub Com_Xls_LstLinSbt 'listar linha - subtotal
vNrg   = TotCnt("vPreVmn", 1)                      'numero de regitos
vVmn   = Total("vPreVmn", 1)                       'valor

'listar
res = XlsLst(liUsa, coNrg, vNrg)                   'numero de registos
res = XlsLst(liUsa, coVal, vVmn)                   'valor

'totais
x = TotLpz(1)                                      'limpar totais
end sub


Sub Com_Xls_LstTot 'listar totais
vNrg   = TotCnt("vPreVmn", 0)                      'numero de regitos
vVmn   = Total("vPreVmn", 0)                       'valor

'listar
call XlsComLin_Fim                                 'fim de linhas
liUsa = linFim                                     'linha a usar

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO

res = XlsLst(liUsa, coNrg, vNrg)                   'numero de registos
res = XlsLst(liUsa, coVal, vVmn)                   'valor
end sub


'==============================================================================
'- [TXT] - Listar em modo texto -----------------------------------------------
'==============================================================================
'------------------------------------------------------------------------------
'- [TXT] - Lista de Cheques ---------------------------------------------------
'------------------------------------------------------------------------------
Sub LisCab 'cabecalho
FxDiv LstIde,16CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",MemTxt$(1))
?Data : @DataExt                                                 Folha No : @Pag#
?================================================================================
?Documento    Prest.   Data    Descricao                      Valor    Obs.
?================================================================================
'123,346/1234 12/99 2007/01/01 Valor xxxxx               123,456,78.12 <-------->
end sub


Sub LisLinGrp 'identificacao de grupo
grpTip$ = VarCom$("GrpTip")                     'tipo
grpChv$ = VarCom$("GrpChv")                     'chave
grpIde$ = VarCom$("GrpIde")                     'identificacao

ide$    = grpIde$                               'identificacao
print string$(80,"-")                           'listar separador
print tab(5) ide$                               'identificar grupo
print string$(80,"-")                           'listar separador
end sub


Sub LisLinSbt 'substotal - fim de grupo
?          Subtotal:@sPreCnt                           @sPreVmn                 #
print                                            'separar
x=TotLpz(1)                                      'limpar sutotais
end sub


Sub LisLin 'linha de dados
tdo$     = Gts_Doc_Tdoc$                            'tipo de documento
ndo$     = Gts_Doc_Ndoc$                            'numero de documento
docNdv$  = FrmNdo$("46", tdo$, ndo$)                'numero do documento formatado
docVer$  = tdo$ + " " + docNdv$                     'documento a mostrar

tdo$     = Gts_Pre_Tdoc$                            'tipo de documento
ndo$     = Gts_Pre_Ndoc$                            'numero de documento
preNdv$  = FrmNdo$("46", tdo$, ndo$)                'numero do documento formatado
preVer$  = tdo$ + " " + preNdv$                     'documento a mostrar

preNpr$  = TxtCv$(Gts_Pre_PreNpr)                   'numero de prestacoes
preNum$  = TxtCv$(Gts_Pre_PreNum)                   'numero da prestacao
preIdp$  = preNpr$ + "/" + preNum$                  'identificacao da prestacao

'listar
?@vPreNdv     @vIdp @vPreDtv   @vPreDes                @vPreVmn      @vPreObs   #
end sub


Sub LisFim 'fim de listagem
print string$(80,"=")                              'listar separador
?          Total: @tPreCnt                             @tPreVmn                 #
print string$(80,"=")                              'listar separador

FxDiv LstPer,SP                                    'fim de pagina
'Print PrtCmd("[SP]");
end sub


'==============================================================================
'- [GRF] - Listar em modo grafico ---------------------------------------------
'==============================================================================
'------------------------------------------------------------------------------
'- [GRF] - Lista de Cheques ---------------------------------------------------
'------------------------------------------------------------------------------
Sub LisChqG_CabIni                                 'inicializar cabecalho
'nada a executar
end sub


Sub LisChqG_Cab 'cabecalho
Cmax  =190
FimDoc=272

Call SigLstCab 
Lin1 = 1.5

PrWIN AJT_B,  Margem, 26                           'posicao base
PrWIN COR_T,CorTraco                               'cor de linhas
PrWIN GR_LI, 0, 0, Cmax, 0               	   'linha
PrWIN GR_LI, 0, 6, Cmax, 6                         'linha

TCol1=   3
TCol2=  28
TCol3=  50
TCol4=  80
TCol5= 130
TCol6= 160

PrWIN COR_T,  CorTitLst                           'cor de titulo
PrWIN FON  , 8,   1                               'activar fonte

PrWIN FON, "BOLD+"
PrWIN TX_N,  TCol1, Lin1, "Documento"
PrWIN TX_N,  TCol2, Lin1, "Prest."
PrWIN TX_N,  TCol3, Lin1, "Data"
PrWIN TX_N,  TCol4, Lin1, "Descrição"
PrWIN TX_N,  TCol5, Lin1, "Valor"
PrWIN TX_N,  TCol6, Lin1, "Observações"
PrWIN FON, "BOLD-"

PrWIN COR_T,CorTraco                            'cor de linhas
PrWIN GR_LI, 0, 0, Cmax, 0                      'linha
PrWIN GR_LI, 0, 6, Cmax, 6                      'linha

PrWIN FON  ,   9,   1                           'activar fonte
PrWIN COR_T,CorLin                              'cor de linhas
InicioLinhas=30
end sub


Sub LisChqG_Lin 'linha de valores
LCol1=   1
LCol2=  30
LCol3=  45
LCol4=  70
LCol5= 115
LCol6= 150

tdo$     = Gts_Doc_Tdoc$                            'tipo de documento
ndo$     = Gts_Doc_Ndoc$                            'numero de documento
docNdv$  = FrmNdo$("46", tdo$, ndo$)                'numero do documento formatado
docVer$  = tdo$ + " " + docNdv$                     'documento a mostrar

tdo$     = Gts_Pre_Tdoc$                            'tipo de documento
ndo$     = Gts_Pre_Ndoc$                            'numero de documento
preNdv$  = FrmNdo$("46", tdo$, ndo$)                'numero do documento formatado
preVer$  = tdo$ + " " + preNdv$                     'documento a mostrar

preNpr$  = TxtCv$(Gts_Pre_PreNpr)                   'numero de prestacoes
preNum$  = TxtCv$(Gts_Pre_PreNum)                   'numero da prestacao
preIdp$  = preNpr$ + "/" + preNum$                  'identificacao da prestacao

'listar
call LisChqG_PosLin                                 'posicionar linha
PrWIN TX_NP, LCol1, 0.0,"N",@vPreNdv
PrWIN TX_N,  LCol2, 0.0,@vIdp
PrWIN TX_N,  LCol3, 0.0,@vPreDtv
PrWIN TX_N,  LCol4, 0.0,@vPreDes
PrWIN TX_NP, LCol5, 0.0,"N",@vPreVmn
'PrWIN TX_N,  LCol6, 0.0,@vPreObs
End sub


Sub LisChqG_LinGrp 'linha de grupo
InicioEscrita=29

grpTip$ = VarCom$("GrpTip")                       'tipo
grpChv$ = VarCom$("GrpChv")                       'chave
grpIde$ = VarCom$("GrpIde")                       'identificacao

PrWin FON  , "BOLD+"                              'activar bold
ide$    = grpIde$                                 'identificacao

call LisChqG_PosLin                               'posicionar linha
PrWIN COR_T,CorTraco                              'cor de linhas

dy = 0 
PrWIN GR_LI, 0, dy, Cmax, dy                      'linha
PrWIN TX_N,  LCol2 ,0.0,ide$                      'listar identificador
PrWIN GR_LI, 0,  4.0, Cmax,  4.0                  'linha
PrWin FON  , "BOLD-"                              'desactivar bold
end sub


Sub LisChqG_LinSbt 'linha de separacao
tmp=CntLin("INC",1)                               'contar linha
call LisChqG_PosLin                               'posicionar linha

PrWin FON  , "BOLD+"                              'activar bold
PrWIN TX_N,  LCol3 ,0.0,"SubTotal :"
PrWIN TX_NP, LCol4 ,0.0,"N",@sPreCnt
PrWIN TX_NP, LCol5 ,0.0,"N",@sPreVmn
PrWin FON  , "BOLD-"                              'desactivar bold

x=TotLpz(1)                                       'limpar sutotais

tmp=CntLin("INC",1)                               'contar linha
end sub


SUB LisChqG_Fim 'fim de pagina
PrWIN COR_T,CorTraco                              'cor de linhas
PrWIN AJT_B,  Margem, FimDoc-4                    'posicao base

PrWIN GR_LI, 0, 0, Cmax, 0                        'linha

PrWin FON  , "BOLD+"                              'activar bold
PrWIN TX_N,  LCol3 ,0.0,"Total :"
PrWIN TX_NP, LCol4 ,0.0,"N",@tPreCnt
PrWIN TX_NP, LCol5 ,0.0,"N",@tPreVmn
PrWin FON  , "BOLD-"                              'desactivar bold

PrWIN GR_LI, 0, 4.0, Cmax, 4.0                    'linha


Call SigLstRod
PrWin FP
end sub


Sub LisChqG_PosLin 'posicionar linha
PrWIN AJT_B,  Margem, InicioLinhas+Doc_CntLin*4.5    'posicao base
end sub


'==============================================================================
'- [XLS] - Listar para XLS ----------------------------------------------------
'==============================================================================
'------------------------------------------------------------------------------
'- [XLS] - Lista de Cheques ---------------------------------------------------
'------------------------------------------------------------------------------
Sub XlsLisChq_DocIni 'inicializar documento
comXlsFic$ = "GtsChqLis.xls"                       'nome do ficheiro
comCabTit$ = "Lista de cheques"                    'titulo

call Com_Xls_DocIni                                'inicializar documento
end sub


Sub XlsLisChq_DocFim 'terminar documento
call Com_Xls_DocFim                                'terminar documento
end sub


Sub XlsLisChq_Lin 'linha
'call Com_Var_Prp                                   'preparar variaveis
call Com_Xls_IncLin                                'incrementar linha	

'listar
call Com_Xls_LstLin                                'listar linha
end sub


Sub XlsLisChq_Fim 'terminar
call Com_Xls_LstTot                                'listar totais
end sub


Sub XlsLisChq_LinGrp 'grupo
call Com_Xls_LinSep                                'linha de separacao
call Com_Xls_LstLinGrp                             'listar
end sub


Sub XlsLisChq_LinSbt 'subtotal
call Com_Xls_LinSep                                'linha de separacao
call Com_Xls_LstLinSbt                             'listar
end sub

##


'==============================================================================
#INC - Funcoes comuns
'==============================================================================
Funcoes  comuns                        =[SIG_Dir.Div],LsComPgm.std
Funcoes comuns XLS                     =[SIG_LST_DIR.XLS],XlsCom_Pgm.inc
##

