'Nome       : EncResZpa.sql
'Tipo       : SQL
'Data       : 2014/02/22
'Versao     : 1.0
'Descricao  : ENC - Resumo por pais

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


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


'==============================================================================
#ESP - Campos especificos
'==============================================================================
##


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


'------------------------------------------------------------------------------
'- Resumo - Paises ------------------------------------------------------------
'------------------------------------------------------------------------------
Gerar registos      [Cmd]=Res_ZPA=+
   +SELECT DISTINCT MST.Pais AS ZPA +
   +FROM  EncMst MST +
   +WHERE MST.RecVal <> 255 +
   +AND   MST.Dtl    BETWEEN  {Opc_Dtl.Ini}    AND  {Opc_Dtl.Fim} +
   +AND   MST.Pais   > 1 +
   +AND   1 > 0 +
   +ORDER BY MST.Pais


'------------------------------------------------------------------------------
'- Resumo de Vendas - Tipo de documento ---------------------------------------
'------------------------------------------------------------------------------
Resumo - Debito        [Cmd]=Res_Deb=+
   +SELECT Count(*) AS NUM, +
   +Sum(ValTot) AS VTO +
   +FROM  EncMst AS MST +
   +WHERE MST.RecVal <> 255 +
   +AND   {TDO.DEB} +
   +AND   MST.Pais = '{OPC.ZPA}' +
   +AND   MST.Dtl    BETWEEN  {Opc_Dtl.Ini}    AND  {Opc_Dtl.Fim} +
   +AND   1 > 0


Resumo - Credito       [Cmd]=Res_Cre=+
   +SELECT Count(*) AS NUM, +
   +Sum(ValTot) AS VTO +
   +FROM  EncMst AS MST +
   +WHERE MST.RecVal <> 255 +
   +AND   {TDO.CRE} +
   +AND   MST.Pais = '{OPC.ZPA}' +
   +AND   MST.Dtl    BETWEEN  {Opc_Dtl.Ini}    AND  {Opc_Dtl.Fim} +
   +AND   1 > 0

##


'==============================================================================
#DOC_x - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=ResVnd_TX,Resumo de Vendas

'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]=ResVnd
Listar cabecalho            [FxCAB]=ResVnd_Cab
Listar linhas               [FxLIN]=ResVnd_Lin
Listar fim                  [FxFIM]=ResVnd_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=Res_ART
Subtotalizadores           [SQLSbt]=
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=ResVnd,Resumo de Vendas (XLS)

'formato
Saida/Impressora           [DocPrt]=NULA
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]=XlsResVnd
Listar cabecalho            [FxCAB]=XlsResVnd_Cab
Listar linhas               [FxLIN]=XlsResVnd_Lin
Listar fim                  [FxFIM]=XlsResVnd_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=Res_ZPA
Subtotalizadores           [SQLSbt]=

Matriz auxiliar            [DocMat]=EncResZpa.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 -------------------------------------------------------------
vaEntCod = entCod$                              'entidade - codigo
vaEntCov = entCov$                              'entidade - codigo formatado
vaEntIde = entIde$                              'entidade - identificacao

vaObs    = usaObs$                              'observacaoes

'resumo
vaBasNum = FrmNum$(05.0,vuBasNum)               'base - numero
vaBasVal = FrmNum$(12.2,vuBasVal)               'base - valor

vaDesNum = FrmNum$(05.0,vuDesNum)               'desconto - numero
vaDesVal = FrmNum$(12.2,vuDesVal)               'desconto - valor

vaLiqNum = FrmNum$(05.0,vuLiqNum)               'liquido - numero
vaLiqVal = FrmNum$(12.2,vuLiqVal)               'liquido - valor

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

'resumo
'- base -
toBasNum = FrmNum$(05.0,Total("vaBasNum",0))    'base/numero - total
s1BasNum = FrmNum$(05.0,Total("vaBasNum",1))    'base/numero - subtotal 1
s2BasNum = FrmNum$(05.0,Total("vaBasNum",2))    'base/numero - subtotal 2

toBasVal = FrmNum$(12.2,Total("vaBasVal",0))    'base/valor - total
s1BasVal = FrmNum$(12.2,Total("vaBasVal",1))    'base/valor - subtotal 1
s2BasVal = FrmNum$(12.2,Total("vaBasVal",2))    'base/valor - subtotal 2

'- desconto -
toDesNum = FrmNum$(05.0,Total("vaDesNum",0))    'desconto/numero - total
s1DesNum = FrmNum$(05.0,Total("vaDesNum",1))    'desconto/numero - subtotal 1
s2DesNum = FrmNum$(05.0,Total("vaDesNum",2))    'desconto/numero - subtotal 2

toDesVal = FrmNum$(12.2,Total("vaDesVal",0))    'desconto/valor - total
s1DesVal = FrmNum$(12.2,Total("vaDesVal",1))    'desconto/valor - subtotal 1
s2DesVal = FrmNum$(12.2,Total("vaDesVal",2))    'desconto/valor - subtotal 2

'- liquido -
toLiqNum = FrmNum$(05.0,Total("vaLiqNum",0))    'liquido/numero - total
s1LiqNum = FrmNum$(05.0,Total("vaLiqNum",1))    'liquido/numero - subtotal 1
s2LiqNum = FrmNum$(05.0,Total("vaLiqNum",2))    'liquido/numero - subtotal 2

toLiqVal = FrmNum$(12.2,Total("vaLiqVal",0))    'liquido/valor - total
s1LiqVal = FrmNum$(12.2,Total("vaLiqVal",1))    'liquido/valor - subtotal 1
s2LiqVal = FrmNum$(12.2,Total("vaLiqVal",2))    'liquido/valor - subtotal 2
##


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


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 ---------------------------------------------------------------------
'=============================================================================
'-----------------------------------------------------------------------------
'- [OPC] - Opcoes ------------------------------------------------------------
'-----------------------------------------------------------------------------
Sub Com_Opc_TdoVnd 'documentos de venda
'- (52) ------------------------------------------>'Comentario
chvDeb$ = "ENC_OPC_TDO.VND.DEB"                    'documentos - debito
chvCre$ = "ENC_OPC_TDO.VND.CRE"                    'documentos - credito

call Com_Opc_TdoPrp                                'preparar documentos a usar
end sub


Sub Com_Opc_TdoCmp 'documentos de compra
'- (52) ------------------------------------------>'Comentario
chvDeb$ = "ENC_OPC_TDO.CMP.DEB"                    'documentos - debito
chvCre$ = "ENC_OPC_TDO.CMP.CRE"                    'documentos - credito

call Com_Opc_TdoPrp                                'preparar documentos a usar
end sub


Sub Com_Opc_TdoPrp 'preparar documentos a usar
'consultar
vTdoDeb$ = SigCfg$("V", chvDeb$)                   'documentos - debito
vTdoCre$ = SigCfg$("V", chvCre$)                   'documentos - credito
vTdoUsa$ = vTdoDeb$ + "," + vTdoCre$               'documentos - todos

'limite em SQL
vTdo$    = "MST.Tdoc$"                             'variavel para tipo de documento
vSqlTdo$ = SqlLim$("T", vTdo$, "IN", vTdoUsa$)     'todos
vSqlDeb$ = SqlLim$("T", vTdo$, "IN", vTdoDeb$)     'debito
vSqlCre$ = SqlLim$("T", vTdo$, "IN", vTdoCre$)     'credito

'guardar opcoes
res = SqlOpcAct("TDO.USA", vSqlTdo$)               'documentos
res = SqlOpcAct("TDO.DEB", vSqlDeb$)               'documentos a debito
res = SqlOpcAct("TDO.CRE", vSqlCre$)               'documentos a credito
end sub


'-----------------------------------------------------------------------------
'- [VAR] - Variaveis ---------------------------------------------------------
'-----------------------------------------------------------------------------
Sub Com_Var_Con 'consultar variaveis
vuZpa    = SqlCmp("ZPA")                            'pais

'msgbox "", "Pais",vuZpa
end sub


Sub Com_Var_Prp 'preparar variaveis
usaObs$ = ""                                       'anular observacoes
call Com_Var_Con                                   'consultar variaveis

'preparar valores
call Com_Var_PrpZpa                                'preparar variaveis - pais
call Com_Var_PrpRes                                'preparar variaveis - resumo
end sub


Sub Com_Var_PrpZpa 'preparar variaveis - pais
usaZpaNom$ = EmpTabCon$("PAIS", vuZpa, "NOME")     'nome do pais

vuZpaCov$ = str$(vuZpa)                            'codigo formatado
vuZpaNom$ = usaZpaNom$                             'nome
vuZpaIde$ = vuZpaCov$ + " - " + vuZpaNom$          'identificacao

'msgbox "", "Pais",vuZpaIde$
end sub


Sub Com_Var_PrpRes 'preparar variaveis - resumo
res = SqlOpcAct("OPC.ZPA", vuZpa)                  'pais

call Com_Var_PrpDeb                                'preparar variaveis - debito
call Com_Var_PrpCre                                'preparar variaveis - credito
call Com_Var_PrpLiq                                'preparar variaveis - liquido
end sub


Sub Com_Var_PrpDeb 'preparar variaveis - debito
res      = SqlCalc(comSqlDeb$)                     'preparar valores
vuDebNrg = SqlOpcCon("NUM")                        'numero de registos
vuDebRes = SqlOpcCon("VTO")                        'valor
end sub


Sub Com_Var_PrpCre 'preparar variaveis - credito
res      = SqlCalc(comSqlCre$)                     'preparar valores
vuCreNrg = SqlOpcCon("NUM")                        'numero de registos
vuCreRes = SqlOpcCon("VTO")                        'valor
end sub


Sub Com_Var_PrpLiq 'preparar variaveis - liquido
if comUsaTip$ = "CMP" then                         'compras ?
   vuBasNum = vuCreNrg                             'base - numero
   vuBasVal = vuCreRes                             'base - valor

   vuDesNum = vuDebNrg                             'desconto - numero
   vuDesVal = vuDebRes                             'desconto - valor
else
   vuBasNum = vuDebNrg                             'base - numero
   vuBasVal = vuDebRes                             'base - valor

   vuDesNum = vuCreNrg                             'desconto - numero
   vuDesVal = vuCreRes                             'desconto - valor
end if

vuLiqNum = vuBasNum + vuDesNum                     'liquido - registos
vuLiqVal = vuBasVal - vuDesVal                     'liquido - valor
end sub


'-----------------------------------------------------------------------------
'- [TXT] - Listar em modo texto ----------------------------------------------
'-----------------------------------------------------------------------------
Sub Com_Txt_Cab 'cabecalho - texto
'cabTit$ = "Titulo"
FxDiv LstIde,10CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",comCabTit$)
?Data: @DataExt                                                   Folha No: @Pag#
?================================================================================
?  Codigo         Nome                              Quantidade           Valor  #
'123456789.12345  123456789.123456789.123456789.12  12,345.123   -123,456,789.12#
?================================================================================
end sub


Sub Com_Txt_LinExe 'executar linha
?@vEntCov        @vEntIde                           @vaResQu     @vaResVt       #
end sub


Sub Com_Txt_Fim 'terminar
?================================================================================
?   Totais: @toNrg                                  @toResQu     @toResVt       #
?================================================================================
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
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_Nom",  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    = 2                                       'numero de registos - total
'coNrs    = 3                                       'numero de registos - subtotal

coCod    = 2                                       'codigo
coNom    = 3                                       'nome

coBasNum = 4                                       'base - numero
coBasVal = 5                                       'base - valor

coDesNum = 6                                       'desconto - numero
coDesVal = 7                                       'desconto - valor

coLiqNum = 8                                       'liquido - numero
coLiqVal = 9                                       'liquido - valor

coObs    = 10                                      '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$ = XlsZon$(liUsa, coNom,liUsa, coNom)          'zona
'zon$= XlsZonNum$("L", liUsa)                      'zona da linha
res = XlsAli(zon$, "<")                            'alinhamento
end sub


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


Sub Com_Xls_LstLinIde 'listar linha - identificacao (codigo e nome)
res = XlsLst(liUsa, coCod, vaCod$)                 'codigo
res = XlsLst(liUsa, coNom, vaNom$)                 'nome

'msgbox "", coCod,vaZpaCod$
end sub


Sub Com_Xls_LstLinRes 'listar linha - resumo
res = XlsLst(liUsa, coBasNum, vuBasNum)            'base - numero
res = XlsLst(liUsa, coBasVal, vuBasVal)            'base - valor
'- (52) ------------------------------------------>'Comentario

res = XlsLst(liUsa, coDesNum, vuDesNum)            'desconto - numero
res = XlsLst(liUsa, coDesVal, vuDesVal)            'desconto - valor

res = XlsLst(liUsa, coLiqNum, vuLiqNum)            'liquido - numero
res = XlsLst(liUsa, coLiqVal, vuLiqVal)            'liquido - valor

'acumular
res = AcmExe("vaBasNum", vuBasNum)                 'base - numero
res = AcmExe("vaBasVal", vuBasVal)                 'base - valor

res = AcmExe("vaDesNum", vuDesNum)                 'desconto - numero
res = AcmExe("vaDesVal", vuDesVal)                 'desconto - valor

res = AcmExe("vaLiqNum", vuLiqNum)                 'liquido - numero
res = AcmExe("vaLiqVal", vuLiqVal)                 'liquido - valor
end sub


Sub Com_Xls_LstTot 'listar totais
call XlsComLin_Fim                                 'fim de linhas

vuBasNum = Total("vaBasNum", 0)                    'base - numero
vuBasVal = Total("vaBasVal", 0)                    'base - valor

vuDesNum = Total("vaDesNum", 0)                    'desconto - numero
vuDesVal = Total("vaDesVal", 0)                    'desconto - valor

vuLiqNum = vuBasNum + vuDesNum                     'liquido - registos
vuLiqVal = vuBasVal - vuDesVal                     'liquido - valor


'listar
liUsa = linFim                                     'linha a usar

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO

res = XlsLst(liUsa, coBasNum, vuBasNum)            'base - numero
res = XlsLst(liUsa, coBasVal, vuBasVal)            'base - valor

res = XlsLst(liUsa, coDesNum, vuDesNum)            'desconto - numero
res = XlsLst(liUsa, coDesVal, vuDesVal)            'desconto - valor

res = XlsLst(liUsa, coLiqNum, vuLiqNum)            'liquido - numero
res = XlsLst(liUsa, coLiqVal, vuLiqVal)            'liquido - valor
end sub


'==============================================================================
'- [TXT] - Listar em modo texto -----------------------------------------------
'==============================================================================
'------------------------------------------------------------------------------
'- [TXT] - Resumo de Vendas ---------------------------------------------------
'------------------------------------------------------------------------------
Sub ResVnd_Cab 'cabecalho
comUsaTip$ = "VND"                                 'tipo
comCabTit$ = "Resumo de Vendas"                    'titulo

call Com_Txt_Cab                                   'listar
end sub


Sub ResVnd_Lin 'linha
call Com_Var_Prp                                   'preparar variaveis

entCod$ = ctuCod$                                  'entidade - codigo
entCov$ = ctuCov$                                  'entidade - codigo formatado
entIde$ = ctuNom$                                  'entidade - identificacao

call Com_Txt_LinExe                                'executar linha
end sub


Sub ResVnd_Fim 'terminar
call Com_Txt_Fim                                   'listar
end sub


'------------------------------------------------------------------------------
'- [TXT] - Resumo de compras --------------------------------------------------
'------------------------------------------------------------------------------
Sub ResCmp_Cab 'cabecalho
comUsaTip$ = "CMP"                                 'tipo
comCabTit$ = "Resumo de Compras"                   'titulo

call Com_Txt_Cab                                   'listar
end sub


Sub ResCmp_Lin 'linha
call Com_Var_Prp                                   'preparar variaveis

entCod$ = artCod$                                  'entidade - codigo
entCov$ = artCov$                                  'entidade - codigo formatado
entIde$ = artNom$                                  'entidade - identificacao

call Com_Txt_LinExe                                'executar linha
end sub


Sub ResCmp_Fim 'terminar
call Com_Txt_Fim                                   'listar
end sub


'==============================================================================
'- [XLS] - Listar para XLS ----------------------------------------------------
'==============================================================================
'------------------------------------------------------------------------------
'- [XLS] - Resumo de Vendas ---------------------------------------------------
'------------------------------------------------------------------------------
Sub XlsResVnd_DocIni 'inicializar documento
comXlsFic$ = "EncResZpa.xls"                       'nome do ficheiro
comCabTit$ = "Resumo de Vendas - Exportação"       'titulo
comUsaTip$ = "VND"                                 'tipo

comSqlDeb$ = "Res_Deb"                             'SQL para debito
comSqlCre$ = "Res_Cre"                             'SQL para credito

call Com_Xls_DocIni                                'inicializar documento
call Com_Opc_TdoVnd                                'documentos de venda
end sub


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


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

vaCod$  = vuZpaCov$                                'entidade - codigo formatado
vaNom$  = vuZpaNom$                                'entidade - identificacao

'listar
call Com_Xls_LstLinIde                             'listar identificacao (codigo e nome)
call Com_Xls_LstLinRes                             'listar resumo
end sub


Sub XlsResVnd_Fim 'terminar
call Com_Xls_LstTot                                'listar totais
end sub


'------------------------------------------------------------------------------
'- [XLS] - Resumo de Compras --------------------------------------------------
'------------------------------------------------------------------------------
Sub XlsResCmp_DocIni 'inicializar documento
comXlsFic$ = "EncResZpa.xls"                       'nome do ficheiro
comCabTit$ = "Resumo de Compras - Importação"      'titulo
comUsaTip$ = "CMP"                                 'tipo

comSqlDeb$ = "Res_Deb"                             'SQL para debito
comSqlCre$ = "Res_Cre"                             'SQL para credito

call Com_Xls_DocIni                                'inicializar documento
call Com_Opc_TdoCmp                                'documentos de compra
end sub


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


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

vaCod$  = vuZpaCov$                                'entidade - codigo formatado
vaNom$  = vuZpaNom$                                'entidade - identificacao

'listar
call Com_Xls_LstLinIde                             'listar identificacao (codigo e nome)
call Com_Xls_LstLinRes                             'listar resumo
end sub


Sub XlsResCmp_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
##
