'Nome       : CobOrc_XLS.par
'Tipo       : LST
'Data       : 2013/05/24
'Versao     : 1.0
'Descricao  : COB - Orcamento em XLS

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


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


'==============================================================================
#DOC - Documento
'==============================================================================
Tipo                       [DocTip]=VBS_ESP
Nome                       [DocNom]=CobOrc,Orcamento

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

'funcoes de listagem
Funcao VBS                  [FxVbs]=DocCri
Listar cabecalho            [FxCAB]=
Listar linhas               [FxLIN]=
Listar fim                  [FxFIM]=

Matriz auxiliar            [DocMat]=CobOrc_QUT.xls

'parametros especificos
Grupo de documentos        [DocEsp]=DocGrp=CON
Saida - Directorio         [DocEsp]=SaiDir=[EMP_EXT]\dExcel\Cob
'Saida - Directorio         [DocEsp]=SaiDir=Cob
Saida - Nome               [DocEsp]=SaiNom=[NUM:6]_[SER]_Orc.xls
##


'==============================================================================
#DOC - Documento
'==============================================================================
Tipo                       [DocTip]=VBS_ESP
Nome                       [DocNom]=CobOrc2,Orcamento 2

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

'funcoes de listagem
Funcao VBS                  [FxVbs]=DocCri
Listar cabecalho            [FxCAB]=
Listar linhas               [FxLIN]=
Listar fim                  [FxFIM]=

Matriz auxiliar            [DocMat]=CobOrc_QUT.xls

'parametros especificos
Grupo de documentos        [DocEsp]=DocGrp=CON
Saida - Directorio         [DocEsp]=SaiDir=[EMP_EXT]\dExcel\Cob
Saida - Nome               [DocEsp]=SaiNom=[SER]_[NUM:6]_Orc.xls
##


'==============================================================================
#DOC - Documento
'==============================================================================
Tipo                       [DocTip]=VBS_ESP
Nome                       [DocNom]=CobCon3,Orcamento 3

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

'funcoes de listagem
Funcao VBS                  [FxVbs]=DocCri
Listar cabecalho            [FxCAB]=
Listar linhas               [FxLIN]=
Listar fim                  [FxFIM]=

Matriz auxiliar            [DocMat]=CobOrc_QUT.xls

'parametros especificos
Grupo de documentos        [DocEsp]=DocGrp=CON
Saida - Directorio         [DocEsp]=SaiDir=[EMP_EXT]\dExcel\Cob
Saida - Nome               [DocEsp]=SaiNom=Orc[SER]_[NUM:6].xls
##


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


'==============================================================================
#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


Sub FxIni 'inicializacao base
cnt=0                                  'limpar contador
end sub


'=============================================================================
'- Comum ---------------------------------------------------------------------
'=============================================================================
'------------------------------------------------------------------------------
'- [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
call Com_Xls_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
coIds    = 3                                       'identificacao de subtotal
coNrg    = 4                                       'numero de registos

coRubIde = 2                                       'rubrica
coRubDes = 3                                       'descricao

coRubQua = 4                                       'quantidade
coRubUni = 5                                       'unidade
coRubVun = 6                                       'valor unitario
coRubVto = 7                                       'valor total

coRubObs = 8                                       'observacoes
end sub


Sub Com_Xls_IniMat 'inicializar documento por matriz
'xlsUsaDfi$ = FicEmp$("EMP","Ext","dExcel",cmo$)    'directorio de documentos EXCEL
'nfi$       = XlsOpcNfi$                            'nome do ficheiro
'cmo$       = SigCmoCur$("MIX")                     'modulo corrente
'xlsUsaDoc$ = FicTmp$(xlsUsaDfi$, nfi$)             'ficheiro para documento
'res        = DirCri("D", xlsUsaDfi$)               'criar directorio para documento

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

'res = FicCop(xlsMat$, xlsUsaDoc$)                  'criar ficheiro (copia de matriz)
'res = XlsPrp(0)                                    'preparar EXCEL
'res = XlsDocLer(xlsUsaDoc$)                        'ler ficheiro

xlsMat$  = comXlsMat$                              'matriz
vUsaDoc$ = comXlsFic$                              'ficheiro a criar

res = FicCop(xlsMat$, vUsaDoc$)                    'criar ficheiro (copia de matriz)
res = XlsPrp(0)                                    'preparar EXCEL
res = XlsDocLer(vUsaDoc$)                          'ler ficheiro

if xlsOpcWks$ <> "" then                           'activar woorksheet ?
    res = XlsWks(xlsOpcWks$)                       'activar worksheet
end if

call XlsComEmp_Ide                                 'identificar empresa
call XlsComLin_Ini                                 'inicializar linhas
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_IncRep                              'incrementar linha + repor formato normal

'zon$ = XlsZon$(liUsa, coCod,liUsa, coNom)          'zona
'zon$= XlsZonNum$("L", liUsa)                      'zona da linha

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


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


Sub Com_Xls_LstRub 'listar linha - rubrica
call Com_Xls_IncLin 'incrementar linha

'preparar valores
'vtxDtl$ = FrmDt$("", docDtl)                       'data
vtxObs$ = ""                                       'observacoes

'listar
res = XlsLst(liUsa, coRubIde, rubChv$)             'rubrica
'res = XlsLst(liUsa, coRubDes, rubDes$)             'descricao
res = XlsLst(liUsa, coRubDes, rubIde$)             'identificacao

res = XlsLst(liUsa, coRubUni, rubUni$)             'unidade

if rubQua > 0 then                                 'ha quantidade ?
   res = XlsLst(liUsa, coRubQua, rubQua)           'quantidade
   res = XlsLst(liUsa, coRubVun, rubVun)           'valor unitario
end if

res = XlsLst(liUsa, coRubVto, rubVto)              'valor total

res = XlsLst(liUsa, coMovObs, vtxObs$)             'observacoes
'- (52) ------------------------------------------>'Comentario
end sub


Sub Com_Xls_LstDes 'listar linha - descricao
call Com_Xls_IncLin 'incrementar linha

'listar
res = XlsLst(liUsa, coRubDes, rubDes$)             'descricao
end sub


Sub Com_Xls_LstTot 'listar totais
call XlsComLin_Fim                                 'fim de linhas

'vNrg    = TotCnt("vaMovQu", 0)                     'numero de registos
'vAcmQua = Total("vaMovQu", 0)                      'quantidade
'vAcmVto = Total("vaMovVt", 0)                      'valor

exi = CobLstRubPrpIdx(0)                           'preparar rubrica (totais)
vAcmQua = acmQua                                   'acumulado de quantidades
vAcmVto = Cob_OrcRub_CliVto                        'valor do orcamento

'listar
liUsa = linFim                                     'linha a usar

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO
res = XlsLst(liUsa, coNrg, vNrg)                   'numero de registos
res = XlsLst(liUsa, coRubQua, vAcmQua)             'total quantidade
res = XlsLst(liUsa, coRubVto, vAcmVto)             'total valor
end sub


'------------------------------------------------------------------------------
'- Orcamento ------------------------------------------------------------------
'------------------------------------------------------------------------------
Sub OrcDocCri 'criar documento
mat$ = DocFicMat$("AUT")               'endereco do ficheiro matriz
doc$ = VBS_DocFicCri$("")              'documento a criar

'comXlsFic$ = "Orc_xxx.xls"                     'guardar dados
comXlsMat$ = mat$                      'guardar matriz
comXlsFic$ = doc$                      'guardar ficheiro a criar

'msgbox "",mat$,doc$

call Com_Xls_DocIni                                'inicializar documento

call OrcDocIde                                     'identificar documento
call LstRub                            'listar rubricas

call Com_Xls_LstTot                    'listar totais
call Com_Xls_DocFim                                'terminar documento
end sub


Sub OrcDocIde 'identificar documento
'dados do cliente
res = XlsIdeLst("CLI_COD", Cta_Mst_Ct$)            'codigo
res = XlsIdeLst("CLI_NOM", Cta_Mst_Nome$)          'nome
res = XlsIdeLst("CLI_MOR", Cta_Ang_Morada$)        'morada
res = XlsIdeLst("CLI_LOC", Cta_Ang_Local$)         'localidade
res = XlsIdeLst("CLI_CPO", Cta_Ang_Cpost$)         'codigo postal

'dados do orcamento
'orcDtr$ = COB_Orc_Dt$                              'data
orcDtr$ = FrmDt$("",COB_OrcDoc_Dtl)                'formatar data

res = XlsIdeLst("ORC_DTR", orcDtr$)                'data
res = XlsIdeLst("ORC_NUM", COB_Orc_Ndv$)           'numero
res = XlsIdeLst("ORC_OBR.IDE", COB_Orc_Ide$)       'obra - identificacao
res = XlsIdeLst("ORC_OBR.LOC", COB_Orc_Loc$)       'obra - localizacao
end sub


Sub LstRub 'listar rubricas
acmQua = 0                                         'azerar valor total

'usaLinDes = 1                                      'usar linha de descricao
usaLinDes = 0                                      'nao usar linha de descricao

num = CobLstRubPrp("")                             'numero de rubricas
vNrg = num                                         'numero de registos

'msgbox "","Rubricas", num

'linhas de dados
for i = 1 to num
exi = CobLstRubPrpIdx(i)                           'preparar rubrica

if exi = 1 then                                    'existe ?
   'msgbox "","Rubrica:", i

   rubNiv  = Cob_OrcRub_Niv                        'nivel da rubrica
   rubChv$ = Cob_OrcRub_Rub$                       'rubrica
   rubIde$ = CobLstRubIde$(i)                      'identificacao da rubrica
   rubDes$ = Cob_OrcRub_Des$                       'descricao
   rubUni$ = Cob_OrcRub_Uni$                       'unidade
   rubQua  = Cob_OrcRub_OrcMaQu                    'quantidade
   rubVun  = Cob_OrcRub_CliMaVu                    'valor unitario
   rubVto  = Cob_OrcRub_CliMaVt                    'valor total

   acmQua = acmQua + rubQua                        'acumular quantidades
   acmQua = acmQua + rubQua                        'acumular quantidades

   'listar
   call Com_Xls_LstRub                             'listar linha - rubrica

   if usaLinDes = 1 then                           'linha de descricao ?
      call Com_Xls_LstDes                          'listar linha - descricao
   end if
end if
next
end sub

##


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


'==============================================================================
#VBS - VbScript
'==============================================================================
'------------------------------------------------------------------------------
'FXDOC - Funcoes para documento
'------------------------------------------------------------------------------
Sub FxIni 'inicializar
msgbox "FxIni >?<"
end sub


Sub FxFim 'terminar
'msgbox "FxFim >?<"
end sub


Sub DocCri 'criar documento
with CobDoc
.VbsDocFic fic                         'ficheiro do documento
end with

'msgbox "DocCri >" & fic & "<"

with FxPre
.FxDoc "OrcDocCri"                     'criar documento
end with
end sub


Function DocFicCri(arg) 'ficheiro para documento a criar
'arg        - argumento (nao usado)

with CobDoc
.VbsDocFic fic                         'ficheiro do documento
end with

DocFicCri = fic                        'devolver resultado
end function

##


