'Nome       : BncMovLig.std
'Tipo       : LST
'Data       : 2016/06/05
'Versao     : 1.0
'Descricao  : BNC - Ligacao de movimentos

'=============================================================================
'#VER - Historia de modificacoes
'=============================================================================
'- Versao : 1.0   ____/__/__ -------------------------------------------------
'Versao base


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


'==============================================================================
#ESP - Campos especificos
'==============================================================================
'Tipo de armazens                    [TARZ]=?
'Numero de armazens                  [NARZ]=?
##


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


'------------------------------------------------------------------------------
'- generico -------------------------------------------------------------------
'------------------------------------------------------------------------------
Nome do artigo [Cmd]=ArtNom=+
   +SELECT Nome1$ as [NOME$] +
   +FROM {TB_StcMst} +
   +WHERE Art$ = '{ART.COD}'


Nome do armazem [Cmd]=ArzNom=+
   +SELECT IdeNor$ as [NOM$] +
   +FROM StcArzIde +
   +WHERE Arz = {ARZ.COD}


'------------------------------------------------------------------------------
'- Movimentos -----------------------------------------------------------------
'------------------------------------------------------------------------------
Gerar registos      [Cmd]=BncMov=+
   +SELECT * +
   +FROM {TB_BncMov} AS MOV +
   +WHERE MOV.RecVal <> 255 +
   +AND   MOV.Ext > 0 +
   +AND   MOV.Ct$  BETWEEN '{Opc_Ctu.Ini}'   AND '{Opc_Ctu.Fim}' +
   +AND   MOV.Dtl  BETWEEN  {Opc_Dtl.Ini}    AND  {Opc_Dtl.Fim}  +
   +AND   MOV.Dtv  BETWEEN  {Opc_Dtv.Ini}    AND  {Opc_Dtv.Fim}  +
   +AND   MOV.Vmn  BETWEEN  {Opc_Vmn.Ini}    AND  {Opc_Vmn.Fim}  +
   +ORDER BY MOV.Ct$, MOV.Dtl, MOV.RecIde

##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=XlsLigUsa,Ligacões Usadas (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]=

'funcoes de listagem
Base para documento         [FxDOC]=XlsLigUsa
Listar cabecalho            [FxCAB]=XlsLigUsa_Cab
Listar linhas               [FxLIN]=XlsLigUsa_Lin,0
Listar fim                  [FxFIM]=XlsLigUsa_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=BncMov
Subtotalizadores           [SQLSbt]=Ctu$

Matriz auxiliar            [DocMat]=BncMovLig.xls
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=XlsLigInv,Movimentos com ligação invalida (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]=

'funcoes de listagem
Base para documento         [FxDOC]=XlsLigInv
Listar cabecalho            [FxCAB]=XlsLigInv_Cab
Listar linhas               [FxLIN]=XlsLigInv_Lin,0
Listar fim                  [FxFIM]=XlsLigInv_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=BncMov
Subtotalizadores           [SQLSbt]=Ctu$

Matriz auxiliar            [DocMat]=BncMovLig.xls
##


'==============================================================================
#VAR - Variaveis
'==============================================================================
Tipo     = MemTxt$(1)
Pag      = Doc_CntPag
Tit080   = TxTit$("TT=10CPI, LD, PT=40C",Memtxt$(1))
Tit132   = TxTit$("TT=16CPI, LD, PT=66C",Memtxt$(1))
DataExt  = FrmVal$(Sig_DtHoje,45,0)

'- dados a listar -------------------------------------------------------------
vaMovDia = FrmDt$("",vuMovDia$)                    'data do dia
vaObs    = usaObs$                                 'observacaoes
vaSbtIde = ideSbt$                                 'identificacao de subtotal


'------------------------------------------------------------------------------
'- Valores --------------------------------------------------------------------
'------------------------------------------------------------------------------
vaIdeSbt  = ideSbt$                             'identificacao de subtotal

'artigo
vaCtu    = vuCtuCod$                            'codigo
vaCtuCov = vuCtuCov$                            'codigo formatado
vaDes    = vuDes$                               'nome da conta

vaDtl    = vuDtl                                'data de lancamento
vaDtv    = vuDtv                                'data de vencimento
vaDes    = vuDes                                'descricao

vaVal    = vuVal                                'valor
vaTpv    = vuTpv$                               'tipo de valor

vaLig    = vuLig                                'ligacoes

vaObs    = vuObs$                               'observacoes

'contagem
toNrg    = FrmNum$(9.0,TotCnt("vaArtCov",0))    'numero de registos - total
s1Nrg    = FrmNum$(9.0,TotCnt("vaArtCov",1))    'numero de registos - subtotal 1
s2Nrg    = FrmNum$(9.0,TotCnt("vaArtCov",2))    'numero de registos - subtotal 2

'valor
vaValVt  = FrmNum$(12.2,vuValVt)                'valor
toValVt  = FrmNum$(12.2,Total("vaValVt",0))     'valor - total
s1ValVt  = FrmNum$(12.2,Total("vaValVt",1))     'valor - subtotal 1
s2ValVt  = FrmNum$(12.2,Total("vaValVt",2))     'valor - subtotal 2

##


'==============================================================================
#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
'- (64) ------------------------------------------------------>'Comentario
'- (67) --------------------------------------------------------->'Comentario
'- (70) ------------------------------------------------------------>'Comentario
'- (70) ------------------------------------------------------------>'Comentario


Sub FxIni 'funcao de inicializacao
'nada a excutar
end sub


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


Sub Lst_AJT 'ajuste
'nada a excutar
end sub


'==============================================================================
'- Comum ----------------------------------------------------------------------
'==============================================================================
'------------------------------------------------------------------------------
'- [REG] - Variaveis do registos ----------------------------------------------
'------------------------------------------------------------------------------
Sub Com_Var_Con 'consultar variaveis
'- (52) ------------------------------------------>'Comentario
'campos
vuIdr        = SqlCmp("MOV.RecIde")                'IDR
vuOpc$       = SqlCmp$("MOV.Opc$")                 'campos opcionais

vuCtuCod$    = SqlCmp$("MOV.Ct$")                  'conta - codigo

vuDtl        = SqlCmp("MOV.Dtl")                   'data de lancamento
vuDtv        = SqlCmp("MOV.Dtv")                   'data de vencimento
vuDes$       = SqlCmp$("MOV.DesCta$")              'descricao
vuDesAdi$    = SqlCmp$("MOV.DesAdi$")              'descricao adicional

vuVal        = SqlCmp("MOV.VMN")                    'valor - moeda nacional
vuVme        = SqlCmp("MOV.VME")                   'valor - moeda estrangeira
vuTpv$       = SqlCmp$("MOV.Tv$")                  'tipo de valor

'vuLig        = SqlCmp("Lig")                       'ligacoes

vuExtNum     = SqlCmp("MOV.Ext")                    'extracto - numero
vuExtSeq     = SqlCmp("MOV.ExtSeq")                 'extracto - sequencia

'vaObs        = vuObs$                               'observacoes

'valores calculados
vuLigGrp$    = TxIde$(vuOpc$, "BNC.GRP")           'grupo de movimentos
'vuLigNum     = BncMovLigNum("GRP", vuLigGrp$)      'numero de ligacoes

vuLigPrp     = BncMovLigPrp("GRP", vuLigGrp$)      'preparar ligacoes
vuLigNrg     = BncMovLigCon("NRG")                 'ligacoes - numero de registos
vuLigRes     = BncMovLigCon("RES")                 'ligacoes - resultado
vuLigBncNrg  = BncMovLigCon("BNC.NRG")             'ligacoes - BNC/numero de registos
vuLigBncAcm  = BncMovLigCon("BNC.ACM")             'ligacoes - BNC/acumulado
vuLigCtaNrg  = BncMovLigCon("CTA.NRG")             'ligacoes - CTA/numero de registos
vuLigCtaAcm  = BncMovLigCon("CTA.ACM")             'ligacoes - CTA/acumulado

xuDtl$ = FrmDt$("", vuDtl)                          'data de lancamento
xuDtv$ = FrmDt$("", vuDtv)                          'data de vencimento

'grupos de variaveis
call Com_Var_PrpCtu                                'preparar variaveis - conta

'valores adicionais
vuObs$  = vuIdr                                    'observacoes
usaObs$ = ""                                       'anular observacoes
end sub


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

vuCtuCov$ = CTA_MST_Ct$                            'codigo formatado
vuCtuNom$ = CTA_MST_Nome$                          'nome
vuCtuIde$ = vuCtuCov$ + " - " + vuCtuNom$          'identificacao
end sub


'------------------------------------------------------------------------------
'- [ACM] - Acumuladores -------------------------------------------------------
'------------------------------------------------------------------------------
Sub Com_Acm_Exe 'acumular valores
res = AcmExe("vaArtCov", 1)                        'acumular - contagem

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


Sub Com_Acm_Con 'consultar acumuladores
'- (52) ------------------------------------------>'Comentario
vNrg     = TotCnt("vaArtCov", acmNiv)              'numero de registos

acVal    = Total("vaVal", acmNiv)                  'valor
end sub


'##############################################################################
'- [XLS] - Listar para XLS ----------------------------------------------------
'##############################################################################
'==============================================================================
'- [XLS] - COM - Funcoes comuns -----------------------------------------------
'==============================================================================
Sub Com_Xls_DocIni 'inicializar documento
xlsOpcNfi$ = "RND:" + comXlsFic$                   'nome do ficheiro a gerar
xlsOpcWks$ = ""                                    'nome da worksheet

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

'res = XlsIdeLst("LIM_CTU", "")                     'limite de contas

call XlsComLin_Ini                                 'iniciar linhas

'definicao das colunas
coCtu    =  2                                      'conta
coNom    =  3                                      'nome

coDtl    =  4                                      'data de lancamento
coDtv    =  5                                      'data de vencimento
coDes    =  6                                      'descricao
coAdi    =  7                                      'descricao adicional

coVal    =  8                                      'valor
coTpv    =  9                                      'tipo de valor

coExtNum = 10                                      'extracto - numero
coExtSeq = 11                                      'extracto - sequencia

coLigBnc = 12                                      'ligacaoes - valor BNC
coLigCta = 13                                      'ligacaoes - valor CTA
coLigVdi = 14                                      'ligacaoes - diferenca
coLigAdi = 15                                      'ligacaoes - adicional

coObs    = 16                                      'observacoes

'diversos
coIds    = coCtu                                   'posicao - identificar subtotal
coNrg    = coNom                                   'posicao - numero de registos
end sub


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


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

zon$ = XlsZon$(liUsa, coNom, liUsa, coNom)         'zona
res = XlsAli(zon$, "<")                            'alinhamento
end sub


Sub Com_Xls_LinSep 'linha de separacao
call XlsVnd_IncLin                                 'incrementar linha

'zon$ = XlsZon$(liUsa, coArt, liUsa, coArt)         'zona
'res = XlsAli(zon$, "<")                            'alinhamento
end sub


Sub Com_Xls_LstLin 'listar linha
'zon$ = XlsZon$(liUsa, coNom, liUsa, coNom)         'zona
'res = XlsAli(zon$, "<")                            'alinhamento

vxDtl$ = "'" + xuDtl$                              'data de lancamento
vxDtv$ = "'" + xuDtv$                              'data de vencimento

'listar
res = XlsLst(liUsa, coCtu, vuCtuCod$)              'conta - codigo
res = XlsLst(liUsa, coNom, vuCtuNom$)              'conta - nome

res = XlsLst(liUsa, coDtl, vxDtl$)                 'data de lancamento
res = XlsLst(liUsa, coDtv, vxDtv$)                 'data de vencimento
res = XlsLst(liUsa, coDes, vuDes$)                 'descricao

res = XlsLst(liUsa, coVal, vuVal)                  'valor
res = XlsLst(liUsa, coTpv, vuTpv$)                 'tipo de valor

res = XlsLst(liUsa, coExtNum, vuExtNum)            'extracto - numero
res = XlsLst(liUsa, coExtSeq, vuExtSeq)            'extracto - sequencia

'res = XlsLst(liUsa, coLigNum, vuLigNum)            'ligacoes - numero
res = XlsLst(liUsa, coLigBnc, vuLigBncAcm)         'ligacaoes - valor BNC
res = XlsLst(liUsa, coLigCta, vuLigCtaAcm)         'ligacaoes - valor CTA
res = XlsLst(liUsa, coLigVdi, vuLigRes)            'ligacaoes - diferenca
res = XlsLst(liUsa, coLigAdi, vuLigGrp$)           'ligacoes - adicional

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

'- (52) ------------------------------------------>'Comentario

'diversos
call Com_Acm_Exe                                   'acumular valores
end sub


Sub Com_Xls_LstLinObs 'listar linha - observacoes
'preparar valores
vtxObs$ = ""                                       'observacoes
vtxObs$ = vuObs$                                   'observacoes

'listar
res = XlsLst(liUsa, coObs, vtxObs$)                'observacoes
end sub


Sub Com_Xls_LstAcm 'listar - acumuladores
res = XlsLst(liUsa, coNrg, vNrg)                   'numero de registos

res = XlsLst(liUsa, coExiQu, acExiQu)              'existencia - quantidade
res = XlsLst(liUsa, coExiVt, acExiVt)              'existencia - valor total

res = XlsLst(liUsa, coEntQu, acEntQu)              'entradas - quantidade
res = XlsLst(liUsa, coEntVt, acEntVt)              'entradas - valor total

res = XlsLst(liUsa, coSaiQu, acSaiQu)              'saidas - quantidade
res = XlsLst(liUsa, coSaiVt, acSaiVt)              'saidas - valor total
end sub


'------------------------------------------------------------------------------
'- Total ----------------------------------------------------------------------
'------------------------------------------------------------------------------
Sub Com_Xls_LstTot 'listar totais
call XlsComLin_Fim                                 'fim de linhas

acmNiv = 0                                         'nivel do acumulador
call Com_Acm_Con                                   'consultar acumuladores

'listar
liUsa = linFim                                     'linha a usar

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO
call Com_Xls_LstAcm                                'listar - acumuladores
end sub


'------------------------------------------------------------------------------
'- grupo 1 --------------------------------------------------------------------
'------------------------------------------------------------------------------
Sub Com_Xls_LinTit1 'titulo 1
if titIde$ <> "" then                              'ha titulo ?
   call Com_Xls_IncLin                             'incrementar linha	
   call XlsComLin_ActB                             'activar linha em BOLD

   res = XlsLst(liUsa, coNom, titIde$)             'listar identificacao
end if

titIde$ = ""                                       'anular titulo
end sub


Sub Com_Xls_LinSbt1 'subtotal 1
acmNiv = 1                                         'nivel do acumulador
call Com_Acm_Con                                   'consultar acumuladores

if vNrg > 1 then                                   'listar numero ?
   call Com_Xls_IncLin                             'incrementar linha	
   call XlsComLin_ActBI                            'activar linha em BOLD+ITALICO

   res = XlsLst(liUsa, coIds, ideSbt$)             'identificar subtotal

   'zon$ = XlsZon$(liUsa, coNrg)                    'zona
   zon$ = XlsZon$(liUsa, coIds, liUsa, coNrg)      'zona
   res = XlsAli(zon$, "|")                         'alinhamento

   call Com_Xls_LstAcm                             'listar - acumuladores
end if

call Com_Xls_IncLin                                'incrementar linha	

x = TotLpz(1)                                      'limpar totais
ideSbt$ = ""                                       'limpar identificador de subtotal
end sub


'==============================================================================
'- [XLS] - LigUsa - Ligacoes usadas -------------------------------------------
'==============================================================================
Sub XlsLigUsa_DocIni 'inicializar documento
comXlsFic$ = "BncMovLig.xls"                       'nome do ficheiro
comCabTit$ = "Ligações usadas"                     'titulo

call Com_Xls_DocIni                                'inicializar documento
end sub


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


Sub XlsLigUsa_Lin 'linha
call Com_Var_Con                                   'consultar variaveis
call Com_Xls_IncLin                                'incrementar linha	

'listar
call Com_Xls_LstLin                                'listar linha
end sub


Sub XlsLigUsa_Fim 'terminar
call Com_Xls_LstTot                                'listar totais
end sub


'==============================================================================
'- [XLS] - LigInv - Ligacoes invalidas ----------------------------------------
'==============================================================================
Sub XlsLigInv_DocIni 'inicializar documento
comXlsFic$ = "BncMovLig.xls"                       'nome do ficheiro
comCabTit$ = "Ligações inválidas"                  'titulo

call Com_Xls_DocIni                                'inicializar documento
end sub


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


Sub XlsLigInv_Lin 'linha
call Com_Var_Con                                   'consultar variaveis

if vuLigRes <> 0 then                              'ligacao invalida ?
   call Com_Xls_IncLin                             'incrementar linha	
   call Com_Xls_LstLin                             'listar linha
end if
end sub


Sub XlsLigInv_Fim 'terminar
call Com_Xls_LstTot                                'listar totais
end sub

##


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

