'Nome       : ResVCA.sql
'Tipo       : SQL
'Data       : 2006/10/20
'Versao     : 1.0
'Descricao  : Resumo de vendas por vendedor/cliente/artigo

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


'==============================================================================
'#INF - Informacao
'==============================================================================
'------------------------------------------------------------------------------
' codigos de movimento
'------------------------------------------------------------------------------
'Cod  Descricao            Tipo Notas
'---  -------------------- ---- -----------------------------------------------
' 1 - Compra               Ent
' 2 - Dev.Cliente          Ent
' 3 - Dev.Fornec           Sai
' 4 - Quebra               Sai
' 5 - Transferencia        Ent
' 6 - Custos               Ent So deve ser considerado o valor
' 7 - E.Diversas           Ent
' 8 - S.Diversas           Ent
' 9 - Venda                Sai
'10 - Enc.Forn.            --- Nao actualiza existencias
'11 - Act.Inv.Saida        Sai
'12 - Act.Inv.Entr.        Ent
'13 - R.Encom.Forn.        Ent Semelhante a compra
'14 - Saida Taras          --- Nao usado
'15 - Entrada Taras        --- Nao usado
'16 - N.Credito            Sai Semelhante a venda
'17 - Trf.Armazem          --- Apenas movimenta armazens
'18 - Inc.Custos           Ent So deve ser considerado o valor


'==============================================================================
#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","Stc,Stc.mdb")


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


'------------------------------------------------------------------------------
'- por Vendedor/Conta/Artigo --------------------------------------------------
'------------------------------------------------------------------------------
Vendas por VCA a somar [Cmd]=ResSomVCA=+
   +SELECT StcMov{ANO}.Vend AS VND, StcMov{ANO}.Ct$ AS CT, StcMov{ANO}.Art$ AS ART, +
   +SUM(StcMov{ANO}.Qu) AS RQU, SUM(StcMov{ANO}.Vt) AS RVT +
   +FROM CtaMst INNER JOIN +
   +CtaAng ON CtaMst.Ct$ = CtaAng.Ct$ INNER JOIN +
   +StcMst INNER JOIN +
   +StcMov{ANO} ON StcMst.Art$ = StcMov{ANO}.Art$ ON CtaMst.Ct$ = StcMov{ANO}.Ct$ +
   +WHERE (StcMov{ANO}.RecVal <> 255) +
   +AND (StcMov{ANO}.Cmv IN (9, -9)) +
   +AND (CtaMst.Ct$ BETWEEN '{Opc_Ct.Ini}' AND '{Opc_Ct.Fim}') +
   +AND (StcMst.Art$ BETWEEN '{Opc_Art.Ini}' AND '{Opc_Art.Fim}') +
   +AND (StcMov{ANO}.Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim}) +
   +AND (StcMov{ANO}.Vend BETWEEN {Opc_Vnd.Ini} AND {Opc_Vnd.Fim}) +
   +GROUP BY StcMov{ANO}.Vend, StcMov{ANO}.Ct$, StcMov{ANO}.Art$ +
   +ORDER BY StcMov{ANO}.Vend, StcMov{ANO}.Ct$, StcMov{ANO}.Art$


Vendas por VCA a subtrair [Cmd]=ResSubVCA=+
   +SELECT StcMov{ANO}.Vend AS VND, StcMov{ANO}.Ct$ AS CT, StcMov{ANO}.Art$ AS ART, +
   +SUM(StcMov{ANO}.Qu) AS RQU, SUM(StcMov{ANO}.Vt) AS RVT +
   +FROM CtaMst INNER JOIN +
   +CtaAng ON CtaMst.Ct$ = CtaAng.Ct$ INNER JOIN +
   +StcMst INNER JOIN +
   +StcMov{ANO} ON StcMst.Art$ = StcMov{ANO}.Art$ ON CtaMst.Ct$ = StcMov{ANO}.Ct$ +
   +WHERE (StcMov{ANO}.RecVal <> 255) +
   +AND (StcMov{ANO}.Cmv IN (2, -2, 16, -16)) +
   +AND (CtaMst.Ct$ BETWEEN '{Opc_Ct.Ini}' AND '{Opc_Ct.Fim}') +
   +AND (StcMst.Art$ BETWEEN '{Opc_Art.Ini}' AND '{Opc_Art.Fim}') +
   +AND (StcMov{ANO}.Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim}) +
   +AND (StcMov{ANO}.Vend BETWEEN {Opc_Vnd.Ini} AND {Opc_Vnd.Fim}) +
   +GROUP BY StcMov{ANO}.Vend, StcMov{ANO}.Ct$, StcMov{ANO}.Art$ +
   +ORDER BY StcMov{ANO}.Vend, StcMov{ANO}.Ct$, StcMov{ANO}.Art$


Vendas por VCA por codigo de movimento [Cmd]=ResCmvVCA=+
   +SELECT StcMov{ANO}.Vend AS VND, StcMov{ANO}.Ct$ AS CT, +
   +StcMov{ANO}.Art$ AS ART, StcMov{ANO}.Cmv AS CMV1, +
   +SUM(StcMov{ANO}.Qu) AS RQU, SUM(StcMov{ANO}.Vt) AS RVT +
   +FROM CtaMst INNER JOIN +
   +CtaAng ON CtaMst.Ct$ = CtaAng.Ct$ INNER JOIN +
   +StcMst INNER JOIN +
   +StcMov{ANO} ON StcMst.Art$ = StcMov{ANO}.Art$ ON CtaMst.Ct$ = StcMov{ANO}.Ct$ +
   +WHERE (StcMov{ANO}.RecVal <> 255) +
   +AND (StcMov{ANO}.Cmv IN (9, -9, 2, -2, 16, -16)) +
   +AND (CtaMst.Ct$ BETWEEN '{Opc_Ct.Ini}' AND '{Opc_Ct.Fim}') +
   +AND (StcMst.Art$ BETWEEN '{Opc_Art.Ini}' AND '{Opc_Art.Fim}') +
   +AND (StcMov{ANO}.Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim}) +
   +AND (StcMov{ANO}.Vend BETWEEN {Opc_Vnd.Ini} AND {Opc_Vnd.Fim}) +
   +GROUP BY StcMov{ANO}.Vend, StcMov{ANO}.Ct$, StcMov{ANO}.Art$, StcMov{ANO}.Cmv +
   +ORDER BY StcMov{ANO}.Vend, StcMov{ANO}.Ct$, StcMov{ANO}.Art$, StcMov{ANO}.Cmv


'------------------------------------------------------------------------------
'- por Vendedor/Artigo --------------------------------------------------------
'------------------------------------------------------------------------------
Vendas por VA a somar [Cmd]=ResSomVA=+
   +SELECT StcMov{ANO}.Vend AS VND, StcMov{ANO}.Art$ AS ART, +
   +SUM(StcMov{ANO}.Qu) AS RQU, SUM(StcMov{ANO}.Vt) AS RVT +
   +FROM CtaMst INNER JOIN +
   +CtaAng ON CtaMst.Ct$ = CtaAng.Ct$ INNER JOIN +
   +StcMst INNER JOIN +
   +StcMov{ANO} ON StcMst.Art$ = StcMov{ANO}.Art$ ON CtaMst.Ct$ = StcMov{ANO}.Ct$ +
   +WHERE (StcMov{ANO}.RecVal <> 255) +
   +AND (StcMov{ANO}.Cmv IN (9, -9)) +
   +AND (CtaMst.Ct$ BETWEEN '{Opc_Ct.Ini}' AND '{Opc_Ct.Fim}') +
   +AND (StcMst.Art$ BETWEEN '{Opc_Art.Ini}' AND '{Opc_Art.Fim}') +
   +AND (StcMov{ANO}.Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim}) +
   +AND (StcMov{ANO}.Vend BETWEEN {Opc_Vnd.Ini} AND {Opc_Vnd.Fim}) +
   +GROUP BY StcMov{ANO}.Vend, StcMov{ANO}.Art$ +
   +ORDER BY StcMov{ANO}.Vend, StcMov{ANO}.Art$


Vendas por VA a subtrair [Cmd]=ResSubVA=+
   +SELECT StcMov{ANO}.Vend AS VND, StcMov{ANO}.Art$ AS ART, +
   +SUM(StcMov{ANO}.Qu) AS RQU, SUM(StcMov{ANO}.Vt) AS RVT +
   +FROM CtaMst INNER JOIN +
   +CtaAng ON CtaMst.Ct$ = CtaAng.Ct$ INNER JOIN +
   +StcMst INNER JOIN +
   +StcMov{ANO} ON StcMst.Art$ = StcMov{ANO}.Art$ ON CtaMst.Ct$ = StcMov{ANO}.Ct$ +
   +WHERE (StcMov{ANO}.RecVal <> 255) +
   +AND (StcMov{ANO}.Cmv IN (2, -2, 16, -16)) +
   +AND (CtaMst.Ct$ BETWEEN '{Opc_Ct.Ini}' AND '{Opc_Ct.Fim}') +
   +AND (StcMst.Art$ BETWEEN '{Opc_Art.Ini}' AND '{Opc_Art.Fim}') +
   +AND (StcMov{ANO}.Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim}) +
   +AND (StcMov{ANO}.Vend BETWEEN {Opc_Vnd.Ini} AND {Opc_Vnd.Fim}) +
   +GROUP BY StcMov{ANO}.Vend, StcMov{ANO}.Art$ +
   +ORDER BY StcMov{ANO}.Vend, StcMov{ANO}.Art$


Vendas por VA por codigo de movimento [Cmd]=ResCmvVA=+
   +SELECT StcMov{ANO}.Vend AS VND, +
   +StcMov{ANO}.Art$ AS ART, StcMov{ANO}.Cmv AS CMV1, +
   +SUM(StcMov{ANO}.Qu) AS RQU, SUM(StcMov{ANO}.Vt) AS RVT +
   +FROM CtaMst INNER JOIN +
   +CtaAng ON CtaMst.Ct$ = CtaAng.Ct$ INNER JOIN +
   +StcMst INNER JOIN +
   +StcMov{ANO} ON StcMst.Art$ = StcMov{ANO}.Art$ ON CtaMst.Ct$ = StcMov{ANO}.Ct$ +
   +WHERE (StcMov{ANO}.RecVal <> 255) +
   +AND (StcMov{ANO}.Cmv IN (9, -9, 2, -2, 16, -16)) +
   +AND (CtaMst.Ct$ BETWEEN '{Opc_Ct.Ini}' AND '{Opc_Ct.Fim}') +
   +AND (StcMst.Art$ BETWEEN '{Opc_Art.Ini}' AND '{Opc_Art.Fim}') +
   +AND (StcMov{ANO}.Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim}) +
   +AND (StcMov{ANO}.Vend BETWEEN {Opc_Vnd.Ini} AND {Opc_Vnd.Fim}) +
   +GROUP BY StcMov{ANO}.Vend, StcMov{ANO}.Art$, StcMov{ANO}.Cmv +
   +ORDER BY StcMov{ANO}.Vend, StcMov{ANO}.Art$, StcMov{ANO}.Cmv


'------------------------------------------------------------------------------
'- por Vendedor/Conta ---------------------------------------------------------
'------------------------------------------------------------------------------
Vendas por VC a somar [Cmd]=ResSomVC=+
   +SELECT StcMov{ANO}.Vend AS VND, StcMov{ANO}.Ct$ AS CT, +
   +SUM(StcMov{ANO}.Qu) AS RQU, SUM(StcMov{ANO}.Vt) AS RVT +
   +FROM CtaMst INNER JOIN +
   +CtaAng ON CtaMst.Ct$ = CtaAng.Ct$ INNER JOIN +
   +StcMst INNER JOIN +
   +StcMov{ANO} ON StcMst.Art$ = StcMov{ANO}.Art$ ON CtaMst.Ct$ = StcMov{ANO}.Ct$ +
   +WHERE (StcMov{ANO}.RecVal <> 255) +
   +AND (StcMov{ANO}.Cmv IN (9, -9)) +
   +AND (CtaMst.Ct$ BETWEEN '{Opc_Ct.Ini}' AND '{Opc_Ct.Fim}') +
   +AND (StcMst.Art$ BETWEEN '{Opc_Art.Ini}' AND '{Opc_Art.Fim}') +
   +AND (StcMov{ANO}.Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim}) +
   +AND (StcMov{ANO}.Vend BETWEEN {Opc_Vnd.Ini} AND {Opc_Vnd.Fim}) +
   +GROUP BY StcMov{ANO}.Vend, StcMov{ANO}.Ct$ +
   +ORDER BY StcMov{ANO}.Vend, StcMov{ANO}.Ct$


Vendas por VC a subtrair [Cmd]=ResSubVC=+
   +SELECT StcMov{ANO}.Vend AS VND, StcMov{ANO}.Ct$ AS CT, +
   +SUM(StcMov{ANO}.Qu) AS RQU, SUM(StcMov{ANO}.Vt) AS RVT +
   +FROM CtaMst INNER JOIN +
   +CtaAng ON CtaMst.Ct$ = CtaAng.Ct$ INNER JOIN +
   +StcMst INNER JOIN +
   +StcMov{ANO} ON StcMst.Art$ = StcMov{ANO}.Art$ ON CtaMst.Ct$ = StcMov{ANO}.Ct$ +
   +WHERE (StcMov{ANO}.RecVal <> 255) +
   +AND (StcMov{ANO}.Cmv IN (2, -2, 16, -16)) +
   +AND (CtaMst.Ct$ BETWEEN '{Opc_Ct.Ini}' AND '{Opc_Ct.Fim}') +
   +AND (StcMst.Art$ BETWEEN '{Opc_Art.Ini}' AND '{Opc_Art.Fim}') +
   +AND (StcMov{ANO}.Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim}) +
   +AND (StcMov{ANO}.Vend BETWEEN {Opc_Vnd.Ini} AND {Opc_Vnd.Fim}) +
   +GROUP BY StcMov{ANO}.Vend, StcMov{ANO}.Ct$ +
   +ORDER BY StcMov{ANO}.Vend, StcMov{ANO}.Ct$


Vendas por VC por codigo de movimento [Cmd]=ResCmvVC=+
   +SELECT StcMov{ANO}.Vend AS VND, StcMov{ANO}.Ct$ AS CT, +
   +StcMov{ANO}.Cmv AS CMV1, +
   +SUM(StcMov{ANO}.Qu) AS RQU, SUM(StcMov{ANO}.Vt) AS RVT +
   +FROM CtaMst INNER JOIN +
   +CtaAng ON CtaMst.Ct$ = CtaAng.Ct$ INNER JOIN +
   +StcMst INNER JOIN +
   +StcMov{ANO} ON StcMst.Art$ = StcMov{ANO}.Art$ ON CtaMst.Ct$ = StcMov{ANO}.Ct$ +
   +WHERE (StcMov{ANO}.RecVal <> 255) +
   +AND (StcMov{ANO}.Cmv IN (9, -9, 2, -2, 16, -16)) +
   +AND (CtaMst.Ct$ BETWEEN '{Opc_Ct.Ini}' AND '{Opc_Ct.Fim}') +
   +AND (StcMst.Art$ BETWEEN '{Opc_Art.Ini}' AND '{Opc_Art.Fim}') +
   +AND (StcMov{ANO}.Dtl BETWEEN {Opc_Dtl.Ini} AND {Opc_Dtl.Fim}) +
   +AND (StcMov{ANO}.Vend BETWEEN {Opc_Vnd.Ini} AND {Opc_Vnd.Fim}) +
   +GROUP BY StcMov{ANO}.Vend, StcMov{ANO}.Ct$, StcMov{ANO}.Cmv +
   +ORDER BY StcMov{ANO}.Vend, StcMov{ANO}.Ct$, StcMov{ANO}.Cmv

##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=ResVCA,Vendas Por Vendedor (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
Listar cabecalho            [FxCAB]=Vnd_Cab
Listar linhas               [FxLIN]=Vnd_Lin
Listar fim                  [FxFIM]=Vnd_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=ResSomVCA
Subtotalizadores           [SQLSbt]=VND,CT
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=ResVCA_XLS,Vendas Por Vendedor (Vendas/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]=XlsVnd
Listar cabecalho            [FxCAB]=XlsVnd_Cab
Listar linhas               [FxLIN]=XlsVnd_Lin
Listar fim                  [FxFIM]=XlsVnd_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=ResSomVCA
Subtotalizadores           [SQLSbt]=VND,CT

Matriz auxiliar            [DocMat]=StcResVCA.xls
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=ResVCAc,Vendas Por Vendedor (Credito)

'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
Listar cabecalho            [FxCAB]=Vnd_Cab
Listar linhas               [FxLIN]=Vnd_Lin
Listar fim                  [FxFIM]=Vnd_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=ResSubVCA
Subtotalizadores           [SQLSbt]=VND,CT
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=ResVCAc_XLS,Vendas Por Vendedor (Crédito/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]=XlsVnd
Listar cabecalho            [FxCAB]=XlsVnd_Cab
Listar linhas               [FxLIN]=XlsVnd_Lin
Listar fim                  [FxFIM]=XlsVnd_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=ResSubVCA
Subtotalizadores           [SQLSbt]=VND,CT

Matriz auxiliar            [DocMat]=StcResVCA.xls
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=ResCmvVCA,Vendas Por Vendedor (Liquido)

'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
Listar cabecalho            [FxCAB]=Liq_Cab
Listar linhas               [FxLIN]=Liq_Lin,0
Listar fim                  [FxFIM]=Liq_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=ResCmvVCA
Subtotalizadores           [SQLSbt]=VND,CT,ART
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=ResCmvVCA_XLS,Vendas Por Vendedor (Líquido/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]=XlsVndLiq
Listar cabecalho            [FxCAB]=XlsVndLiq_Cab
Listar linhas               [FxLIN]=XlsVndLiq_Lin
Listar fim                  [FxFIM]=XlsVndLiq_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=ResCmvVCA
Subtotalizadores           [SQLSbt]=VND,CT,ART

Matriz auxiliar            [DocMat]=StcResVCA.xls
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=ResCmvVA,Vendas Por Vendedor/Artigo (Liquido)

'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
Listar cabecalho            [FxCAB]=LiqVa_Cab
Listar linhas               [FxLIN]=LiqVa_Lin,0
Listar fim                  [FxFIM]=LiqVa_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=ResCmvVA
Subtotalizadores           [SQLSbt]=VND,ART
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=ResCmvVA_XLS,Vendas Por Vendedor/Artigo (Líquido/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]=XlsLiqVA
Listar cabecalho            [FxCAB]=XlsLiqVA_Cab
Listar linhas               [FxLIN]=XlsLiqVA_Lin
Listar fim                  [FxFIM]=XlsLiqVA_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=ResCmvVA
Subtotalizadores           [SQLSbt]=VND,ART

Matriz auxiliar            [DocMat]=StcResVCA.xls
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=ResCmvVC,Vendas Por Vendedor/Conta (Liquido)

'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
Listar cabecalho            [FxCAB]=LiqVc_Cab
Listar linhas               [FxLIN]=LiqVc_Lin,0
Listar fim                  [FxFIM]=LiqVc_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=ResCmvVC
Subtotalizadores           [SQLSbt]=VND,CT
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=ResCmvVC_XLS,Vendas Por Vendedor/Conta (Líquido/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]=XlsLiqVC
Listar cabecalho            [FxCAB]=XlsLiqVC_Cab
Listar linhas               [FxLIN]=XlsLiqVC_Lin
Listar fim                  [FxFIM]=XlsLiqVC_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=ResCmvVC
Subtotalizadores           [SQLSbt]=VND,CT

Matriz auxiliar            [DocMat]=StcResVCA.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)

'artigo
artCod   = SqlCmp$("ART")
artCov   = StcCodFrm$(SqlCmp$("ART"))
artNom   = SqlOpcCon$("NOME$")

'artigo do resumo
resArtCod = resArtCod$                             'codigo do artigo
resArtCov = StcCodFrm$(resArtCod$)                 'codigo do artigo formatado
resArtNom = resArtNom$                             'nome do artigo

'conta
ctCod    = CTA_MST_Ct$                             'codigo da conta
ctNom    = CTA_MST_Nome$                           'nomem

'valores
vVndQu   = FrmNum$(09.3,artQu)
vVndVt   = FrmNum$(14.2,artVt)
vVndCmv  = artCmv

'totais
tVndN    = FrmNum$(05.0,TotCnt("vVndQu",0))
tVndQu   = FrmNum$(09.3,total(vVndQu,0))
tVndVt   = FrmNum$(14.2,total(vVndVt,0))

'totais por vendedor
sVndN    = FrmNum$(05.0,TotCnt("vVndQu",1))
sVndQu   = FrmNum$(09.3,total(vVndQu,1))
sVndVt   = FrmNum$(14.2,total(vVndVt,1))

'totais por conta
cVndN    = FrmNum$(05.0,TotCnt("vVndQu",2))
cVndQu   = FrmNum$(09.3,total(vVndQu,2))
cVndVt   = FrmNum$(14.2,total(vVndVt,2))
##



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

Sub FxIni 'funcao de inicializacao
end sub


Sub FxFim 'funcao de finalizacao
end sub


Sub Lst_AJT 'ajuste
end sub


'==============================================================================
'- [TXT] - Vendas por Vendedor (Vendas) ---------------------------------------
'==============================================================================
'- Vendas por Vendedor --------------------------------------------------------
Sub Vnd_Cab 'cabecalho
cabTit$="Vendas por Vendedor"
FxDiv LstIde,10CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",cabTit$)
?Data: @DataExt                                                   Folha No: @Pag#
?================================================================================
?  Artigo        Nome                                Quantidade          Valor  #
?================================================================================
end sub


'-------------------------------------------------------- LINHA TITULO 1 --------
Sub Vnd_LinTit1 'titulo 1 - vendedor
tmp=CntLin("MIN",5)                                'minimo de linhas
tmp=CntLin("INC",1)                                'contar linha

chv$ = SbtInf$("ACT",1)                            'chave
nom$ = EmpTabCon$("VEND",chv$,"NOME")              'nome do vendedor
idg$ = chv$ + " - " + nom$                         'identificacao do grupo

print tab(5) "Vendedor: " idg$                     'identificar grupo
end sub


'-------------------------------------------------------- LINHA TITULO 2 --------
Sub Vnd_LinTit2 'titulo 2 - Conta
tmp=CntLin("MIN",5)                                'minimo de linhas
tmp=CntLin("INC",1)                                'contar linha

chv$ = SbtInf$("ACT",2)                            'chave
res  = CtaContaLer(chv$)                           'preparar dados da conta
idg$ = chv$ + " - " + CTA_MST_Nome$                'identificacao do grupo

print tab(5) "Conta: " idg$                        'identificar grupo
end sub


'------------------------------------------------------- LINHA ------------------
Sub Vnd_Lin 'linha
art$ = SqlCmp$("ART")                              'artigo
res = SqlOpcAct("Art.Cod",art$)                    'registar artigo
res = SqlCalc("ARTNOM")                            'preparar nome do artigo

artCmv  = SqlOpcCon("CMV1")                        'codigo de movimento
artQu   = SqlOpcCon("RQU")                         'quantidade
artVt   = SqlOpcCon("RVT")                         'valor

?@ArtCov         @ArtNom                           @vVndQu      @vVndVt         #
end sub


'------------------------------------------------------- LINHA SUB-TOTAL 1 ------
Sub Vnd_LinSbt1 'subtotal 1
?            Total do Vendedor: @sVndN             @sVndQu      @sVndVt         #
print

tmp=CntLin("INC",1)                                'contar linhas
x=TotLpz(1)                                        'limpar totais
end sub


'------------------------------------------------------- LINHA SUB-TOTAL 2 ------
Sub Vnd_LinSbt2 'subtotal 2
?            Total da conta: @cVndN                @cVndQu      @cVndVt         #
print

tmp=CntLin("INC",1)                                'contar linhas
x=TotLpz(2)                                        'limpar totais
end sub


'------------------------------------------------------- FIM --------------------
Sub Vnd_Fim
?================================================================================
?                      Totais: @tVndN              @tVndQu      @tVndVt         #
?================================================================================
FxDiv LstPer,SP
end sub


'=============================================================================
'- [XLS] - Vendas por Vendedor (Vendas)
'=============================================================================
Sub XlsVnd_DocIni 'inicializar documento
xlsOpcNfi$ = "RND:StcRvca.xls"                     '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$ ="Vendas por Vendedor"                     '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
coArt = 2                                          'codigo do artigo
coNom = 3                                          'nome do artigo
coQua = 4                                          'quantidade
coVto = 5                                          'valor total
end sub


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


'------------------------------------------------------- LINHA INCREMENTO -------
Sub XlsVnd_IncLin 'incrementar linha
'call XlsComLin_Inc                                 'incrementar linha
call XlsComLin_IncRep                              'incrementar linha + repor formato normal

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


'------------------------------------------------------- LINHA SEPARACAO --------
Sub XlsVnd_LinSep 'linha de separacao
call XlsVnd_IncLin                                 'incrementar linha
end sub


'------------------------------------------------------- LINHA ------------------
Sub XlsVnd_Lin 'linha de valores
call XlsVnd_IncLin                                 'incrementar linha	

'valores a listar
art$ = SqlCmp$("ART")                              'artigo
res  = SqlOpcAct("Art.Cod",art$)                   'registar artigo
res  = SqlCalc("ARTNOM")                           'preparar nome do artigo

artCmv  = SqlOpcCon("CMV1")                        'codigo de movimento
artQu   = SqlOpcCon("RQU")                         'quantidade
artVt   = SqlOpcCon("RVT")                         'valor
artNom$ = SqlOpcCon$("NOME$")                      'nome

'listar
res = XlsLst(liUsa, coArt, art$)                   'codigo artigo
res = XlsLst(liUsa, coNom, artNom$)                'nome
res = XlsLst(liUsa, coQua, artQu)                  'quantidade
res = XlsLst(liUsa, coVto, artVt)                  'valor total

res = AcmExe("vVndQu",artQu)                       'acumular valores - quantidades
res = AcmExe("vVndVt",artVt)                       'acumular valores - valores
end sub


'-------------------------------------------------------- LINHA TITULO 1 --------
Sub XlsVnd_LinTit1 'titulo 1 - vendedor
tmp=CntLin("MIN",5)                                'minimo de linhas
call XlsVnd_IncLin                                 'incrementar linha	

chv$ = SbtInf$("ACT",1)                            'chave
nom$ = EmpTabCon$("VEND",chv$,"NOME")              'nome do vendedor
idg$ = chv$ + " - " + nom$                         'identificacao do grupo

res = XlsLst(liUsa, coNom, idg$)                   'nome vendedor
call XlsComLin_ActB                                'activar linha em BOLD
end sub


'-------------------------------------------------------- LINHA TITULO 2 --------
Sub XlsVnd_LinTit2 'titulo 2 - conta
tmp=CntLin("MIN",5)                                'minimo de linhas
call XlsVnd_IncLin                                 'incrementar linha	

chv$ = SbtInf$("ACT",2)                            'chave
res  = CtaContaLer(chv$)                           'preparar dados da conta
idg$ = chv$ + " - " + CTA_MST_Nome$                'identificacao do grupo

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO
res = XlsLst(liUsa, coNom, idg$)                   'nome conta
end sub


'----------------------------------------------------- LINHA SUB-TOTAL 1 --------
Sub XlsVnd_LinSbt1 'subtotal 1
call XlsVnd_IncLin                                 'incrementar linha	

tit$     ="Total do Vendedor : "                   'titulo
vVndN    = TotCnt("vVndQu",1)
TVndQu   = Total("vVndQu",1)
TVndVt   = Total("vVndVt",1)

res = XlsLst(liUsa, coArt, tit$)                   'titulo
res = XlsLst(liUsa, coNom, vVndN)                  'total linhas
res = XlsLst(liUsa, coQua, TVndQu)                 'total quantidades
res = XlsLst(liUsa, coVto, TVndVt)                 'total valores

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO
zon$ = XlsZon$(liUsa, coArt)
res = XlsAli(zon$, "5")

zon$ = XlsZon$(liUsa, coNom)
res = XlsAli(zon$, "5")

'separacao
call XlsVnd_IncLin                                 'incrementar linha	
x=TotLpz(1)                                        'limpar totais
end sub


'---------------------------------------------------- LINHA SUB-TOTAL 2 --------
Sub XlsVnd_LinSbt2 'subtotal 2
call XlsVnd_IncLin                                 'incrementar linha	

tit$     ="Total da Conta : "                      'titulo
cVndN    = TotCnt("vVndQu",2)
cVndQu   = Total("vVndQu",2)
cVndVt   = Total("vVndVt",2)

res = XlsLst(liUsa, coArt, tit$)                   'titulo
res = XlsLst(liUsa, coNom, cVndN)                  'linhas
res = XlsLst(liUsa, coQua, cVndQu)                 'total quantidades
res = XlsLst(liUsa, coVto, cVndVt)                 'total valores

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO
zon$ = XlsZon$(liUsa, coArt)
res = XlsAli(zon$, "5")

zon$ = XlsZon$(liUsa, coNom)
res = XlsAli(zon$, "5")

'separacao
call XlsVnd_IncLin                                 'incrementar linha	
x=TotLpz(2)                                        'limpar totais
end sub


'--------------------------------------------------- LINHA SUB-TOTAL 3 --------
Sub XlsVnd_LinSbt3 'subtotal 3
call XlsVnd_IncLin                                 'incrementar linha	

tit$ ="Total do Artigo : "                         'titulo
TotQuL = TotCnt("CVndQu",1)                        'total linhas
TotQuA = Total("CVndQu",1)                         'quantidades totais
TotVlA = Total("CVndVt",1)                         'valor total

res = XlsLst(liUsa, coArt, tit$)                   'titulo
res = XlsLst(liUsa, coNom, TotQuL)                 'total linhas
res = XlsLst(liUsa, coQua, TotQuA)                 'total quantidades
res = XlsLst(liUsa, coVto, TotVlA)                 'total valores

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO
zon$ = XlsZon$(liUsa, coArt)
res = XlsAli(zon$, "5")

zon$ = XlsZon$(liUsa, coNom)
res = XlsAli(zon$, "5")

'separacao
call XlsVnd_IncLin                                 'incrementar linha	
x=TotLpz(3)                                        'limpar totais
end sub


'------------------------------------------------------------------ FIM -------
Sub XlsVnd_Fim 'terminar
call XlsComLin_Fim                                 'fim de linhas

TotLin = TotCnt("vVndQu",0)                        'quantidades linhas
TotQuT = Total("vVndQu",0)                         'quantidades totais finais
TotVlT = Total("vVndVt",0)                         'valor total final

'listar
liUsa = linFim                                     'linha a usar

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO
res = XlsLst(liUsa, coNom, TotLin)                 'total quantidades
res = XlsLst(liUsa, coQua, TotQuT)                 'total quantidades
res = XlsLst(liUsa, coVto, TotVlT)                 'total valor
end sub


'==============================================================================
'- [TXT] - Liquido de vendas --------------------------------------------------
'==============================================================================
Sub Liq_Cab 'cabecalho
cabTit$="Vendas por Vendedor (Liquido)"
FxDiv LstIde,10CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",cabTit$)
?Data: @DataExt                                                   Folha No: @Pag#
?================================================================================
?  Artigo        Nome                                Quantidade          Valor  #
?================================================================================

'diversos
ntoArt = 3                                         'nivel de totalizador de artigo
end sub


'------------------------------------------------------ LINHA TITULO 1 --------
Sub Liq_LinTit1 'titulo 1 - vendedor
tmp=CntLin("MIN",5)                                'minimo de linhas
tmp=CntLin("INC",1)                                'contar linha

chv$ = SbtInf$("ACT",1)                            'chave
nom$ = EmpTabCon$("VEND",chv$,"NOME")              'nome do vendedor
idg$ = chv$ + " - " + nom$                         'identificacao do grupo

print tab(5) "Vendedor: " idg$                     'identificar grupo
end sub


'------------------------------------------------------ LINHA TITULO 2 --------
Sub Liq_LinTit2 'titulo 2 - Conta
tmp=CntLin("MIN",5)                                'minimo de linhas
tmp=CntLin("INC",1)                                'contar linha

chv$ = SbtInf$("ACT",2)                            'chave
res  = CtaContaLer(chv$)                           'preparar dados da conta
idg$ = chv$ + " - " + CTA_MST_Nome$                'identificacao do grupo

print tab(5) "Conta: " idg$                        'identificar grupo
end sub


'------------------------------------------------------ LINHA TITULO 3 --------
Sub Liq_LinTit3 'titulo 3 - artigo - so limpa totalizadores
call vLiqArtIni 'linha                             'limpar totalizadores
end sub


'------------------------------------------------------ LINHA  ----------------
Sub Liq_Lin 'linha - so acumula
call vLiqArtAcm                                    'acumular movimento do artigo
end sub


'----------------------------------------------------- LINHA SUB-TOTAL 1 ------
Sub Liq_LinSbt1 'subtotal 1
?            Total do Vendedor: @sVndN             @sVndQu      @sVndVt         #
print

tmp=CntLin("INC",1)                                'contar linhas
x=TotLpz(1)                                        'limpar totais
end sub


'----------------------------------------------------- LINHA SUB-TOTAL 2 ------
Sub Liq_LinSbt2 'subtotal 2
?            Total da conta: @cVndN                @cVndQu      @cVndVt         #
print

tmp=CntLin("INC",1)                                'contar linhas
x=TotLpz(2)                                        'limpar totais
end sub


'----------------------------------------------------- LINHA SUB-TOTAL 3 ------
Sub Liq_LinSbt3 'subtotal 3 - simula linha do artigo
call PrpResArt                                     'preparar valor resumo do artigo
tmp=CntLin("INC",1)                                'contar linhas

?@resArtCov       @resArtNom                       @vVndQu      @vVndVt         #
end sub


'----------------------------------------------------- FIM --------------------
Sub Liq_Fim
?================================================================================
?                      Totais: @tVndN              @tVndQu      @tVndVt         #
?================================================================================
FxDiv LstPer,SP
end sub


'=============================================================================
'- [XLS] - Liquido de Vendas -------------------------------------------------
'=============================================================================
Sub XlsVndLiq_DocIni 'inicializar documento
xlsOpcNfi$ = "RND:StcRvca.xls"                     '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$ ="Vendas por Vendedor (Líquido)"           '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
coArt = 2                                          'codigo do artigo
coNom = 3                                          'nome do artigo
coQua = 4                                          'quantidade
coVto = 5                                          'valor total

'diversos
ntoArt = 3                                         'nivel de totalizador de artigo
end sub


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


'----------------------------------------------------- LINHA INCREMENTO -------
Sub XlsVndLiq_IncLin 'incrementar linha
call XlsComLin_IncRep                              'incrementar linha + repor formato normal

zon$ = XlsZon$(liUsa, coArt,liUsa, coNom)
res = XlsAli(zon$, "<")
end sub


'----------------------------------------------------- LINHA SEPARACAO --------
Sub XlsVndLiq_LinSep 'linha de separacao
call XlsVndLiq_IncLin                              'incrementar linha
end sub


'----------------------------------------------------- LINHA ------------------
Sub XlsVndLiq_Lin 'linha de valores
call vLiqArtAcm                                  'acumular movimento do artigo
end sub


'------------------------------------------------------ LINHA TITULO 1 --------
Sub XlsVndLiq_LinTit1 'titulo 1 - vendedor
tmp=CntLin("MIN",5)                                 'minimo de linhas
call XlsVndLiq_IncLin                               'incrementar linha	

chv$ = SbtInf$("ACT",1)                             'chave
nom$ = EmpTabCon$("VEND",chv$,"NOME")               'nome do vendedor
idg$ = chv$ + " - " + nom$                          'identificacao do grupo

res = XlsLst(liUsa, coNom, idg$)                    'nome vendedor
call XlsComLin_ActB                                 'activar linha em BOLD
end sub


'------------------------------------------------------ LINHA TITULO 2 --------
Sub XlsVndLiq_LinTit2 'titulo 2 - conta
tmp=CntLin("MIN",5)                                 'minimo de linhas
call XlsVndLiq_IncLin                               'incrementar linha	

chv$ = SbtInf$("ACT",2)                             'chave
res  = CtaContaLer(chv$)                            'preparar dados da conta
idg$ = chv$ + " - " + CTA_MST_Nome$                 'identificacao do grupo

call XlsComLin_ActBI                                'activar linha em BOLD+ITALICO
res = XlsLst(liUsa, coNom, idg$)                    'nome conta
end sub


'------------------------------------------------------ LINHA TITULO 3 --------
Sub XlsVndLiq_LinTit3 'titulo 3 - artigo
call vLiqArtIni                                    'limpar totalizadores
end sub


'--------------------------------------------------- LINHA SUB-TOTAL 1 --------
Sub XlsVndLiq_LinSbt1 'subtotal 1
call XlsVndLiq_IncLin                              'incrementar linha	

tit$     = "Total do Vendedor : "                  'titulo
vVndN    = TotCnt("vVndQu",1)
TVndQu   = Total("vVndQu",1)
TVndVt   = Total("vVndVt",1)

res = XlsLst(liUsa, coArt, tit$)                   'titulo
res = XlsLst(liUsa, coNom, vVndN)                  'total linhas
res = XlsLst(liUsa, coQua, TVndQu)                 'total quantidades
res = XlsLst(liUsa, coVto, TVndVt)                 'total valores

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO
zon$ = XlsZon$(liUsa, coArt)
res = XlsAli(zon$, "5")

zon$ = XlsZon$(liUsa, coNom)
res = XlsAli(zon$, "5")

'separacao
call XlsVndLiq_IncLin                              'incrementar linha	
x=TotLpz(1)                                        'limpar totais
end sub


'---------------------------------------------------- LINHA SUB-TOTAL 2 --------
Sub XlsVndLiq_LinSbt2 'subtotal 2
call XlsVndLiq_IncLin                              'incrementar linha	

tit$     ="Total da Conta : "                      'titulo
cVndN    = TotCnt("vVndQu",2)
cVndQu   = Total("vVndQu",2)
cVndVt   = Total("vVndVt",2)

res = XlsLst(liUsa, coArt, tit$)                   'titulo
res = XlsLst(liUsa, coNom, cVndN)                  'linhas
res = XlsLst(liUsa, coQua, cVndQu)                 'total quantidades
res = XlsLst(liUsa, coVto, cVndVt)                 'total valores

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO
zon$ = XlsZon$(liUsa, coArt)
res = XlsAli(zon$, "5")

zon$ = XlsZon$(liUsa, coNom)
res = XlsAli(zon$, "5")

'separacao
call XlsVndLiq_IncLin                              'incrementar linha	
x=TotLpz(2)                                        'limpar totais
end sub


'---------------------------------------------------- LINHA SUB-TOTAL 3 --------
Sub XlsVndLiq_LinSbt3 'subtotal 3
call PrpResArt                                       'preparar valor resumo do artigo
call XlsVndLiq_IncLin                                'incrementar linha	

'listar
res = XlsLst(liUsa, coArt, resArtCov$)               'codigo artigo
res = XlsLst(liUsa, coNom, resArtNom$)               'nome
res = XlsLst(liUsa, coQua, artQu)                    'quantidade
res = XlsLst(liUsa, coVto, artVt)                    'valor total

'acumular para totais gerais
res = AcmExe("vVndQu",artQu)                         'acumular valores - quantidades
res = AcmExe("vVndVt",artVt)                         'acumular valores - valores
end sub


'------------------------------------------------------------------- FIM -------
Sub XlsVndLiq_Fim 'terminar
call XlsComLin_Fim                                   'fim de linhas

TotLin = TotCnt("vVndQu",0)                          'quantidades linhas
TotQuT = Total("vVndQu",0)                           'quantidades totais finais
TotVlT = Total("vVndVt",0)                           'valor total final

'listar
liUsa = linFim                                       'linha a usar

call XlsComLin_ActBI                                 'activar linha em BOLD+ITALICO
res = XlsLst(liUsa, coNom, TotLin)                   'total quantidades
res = XlsLst(liUsa, coQua, TotQuT)                   'total quantidades
res = XlsLst(liUsa, coVto, TotVlT)                   'total valor
end sub


'==============================================================================
'- [TXT] - Vendedor/Artigo - liquido de vendas --------------------------------
'==============================================================================
Sub LiqVa_Cab 'cabecalho
cabTit$="Vendas por Vendedor/Artigo (Liquido)"
FxDiv LstIde,10CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",cabTit$)
?Data: @DataExt                                                   Folha No: @Pag#
?================================================================================
?  Artigo        Nome                                Quantidade          Valor  #
?================================================================================

'diversos
ntoArt = 2                                         'nivel de totalizador de artigo
end sub


'-------------------------------------------------------- LINHA TITULO 1 --------
Sub LiqVa_LinTit1 'titulo 1 - vendedor
tmp=CntLin("MIN",5)                                'minimo de linhas
tmp=CntLin("INC",1)                                'contar linha

chv$ = SbtInf$("ACT",1)                            'chave
nom$ = EmpTabCon$("VEND",chv$,"NOME")              'nome do vendedor
idg$ = chv$ + " - " + nom$                         'identificacao do grupo

print tab(5) "Vendedor: " idg$                     'identificar grupo
end sub


'-------------------------------------------------------- LINHA TITULO 2 --------
Sub LiqVa_LinTit2 'titulo 2 - artigo - so limpa totalizadores
call vLiqArtIni 'linha                             'limpar totalizadores
end sub


'-------------------------------------------------------- LINHA  ----------------
Sub LiqVa_Lin 'linha - so acumula
call vLiqArtAcm                                    'acumular movimento do artigo
end sub


'------------------------------------------------------- LINHA SUB-TOTAL 1 ------
Sub LiqVa_LinSbt1 'subtotal 1
?            Total do Vendedor: @sVndN             @sVndQu      @sVndVt         #
print

tmp=CntLin("INC",1)                                'contar linhas
x=TotLpz(1)                                        'limpar totais
end sub


'------------------------------------------------------- LINHA SUB-TOTAL 2 ------
Sub LiqVa_LinSbt2 'subtotal 2 - simula linha do artigo
call PrpResArt                                     'preparar valor resumo do artigo
tmp=CntLin("INC",1)                                'contar linhas

?@resArtCov      @resArtNom                        @vVndQu      @vVndVt         #
end sub


'------------------------------------------------------- FIM --------------------
Sub LiqVa_Fim 'terminar
?================================================================================
?                      Totais: @tVndN              @tVndQu      @tVndVt         #
?================================================================================
FxDiv LstPer,SP
end sub


'=============================================================================
'- [XLS] - Vendedor/Artigo - liquido de vendas -------------------------------
'=============================================================================
Sub XlsLiqVA_DocIni 'inicializar documento
xlsOpcNfi$ = "RND:StcRvca.xls"                     '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$ ="Vendas por Vendedor/Artigo (Líquido)"    '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
coArt = 2                                          'codigo do artigo
coNom = 3                                          'nome do artigo
coQua = 4                                          'quantidade
coVto = 5                                          'valor total

'diversos
ntoArt=2                                           'totalizador
end sub


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


'--------------------------------------------------- LINHA INCREMENTO -------
Sub XlsLiqVA_IncLin 'incrementar linha
call XlsComLin_IncRep                              'incrementar linha + repor formato normal

zon$ = XlsZon$(liUsa, coArt,liUsa, coNom)
res = XlsAli(zon$, "<")
end sub


'--------------------------------------------------- LINHA SEPARACAO --------
Sub XlsLiqVA_LinSep 'linha de separacao
call XlsLiqVA_IncLin                               'incrementar linha
end sub


'--------------------------------------------------- LINHA ------------------
Sub XlsLiqVA_Lin 'linha de valores
call vLiqArtAcm                                    'acumular movimento do artigo
end sub


'---------------------------------------------------- LINHA TITULO 1 --------
Sub XlsLiqVA_LinTit1 'titulo 1 - vendedor
tmp=CntLin("MIN",5)                                'minimo de linhas
call XlsLiqVA_IncLin                               'incrementar linha	

chv$ = SbtInf$("ACT",1)                            'chave
nom$ = EmpTabCon$("VEND",chv$,"NOME")              'nome do vendedor
idg$ = chv$ + " - " + nom$                         'identificacao do grupo

res = XlsLst(liUsa, coNom, idg$)                   'nome vendedor
call XlsComLin_ActB                                'activar linha em BOLD
end sub


'---------------------------------------------------- LINHA TITULO 2 --------
Sub XlsLiqVA_LinTit2 'titulo 2 - conta
call vLiqArtIni                                    'limpar totalizadores
end sub


'------------------------------------------------- LINHA SUB-TOTAL 1 --------
Sub XlsLiqVA_LinSbt1 'subtotal 1
call XlsLiqVA_IncLin                               'incrementar linha	

tit$     = "Total do Vendedor : "                  'titulo
vVndN    = TotCnt("vVndQu",1)
TVndQu   = Total("vVndQu",1)
TVndVt   = Total("vVndVt",1)

res = XlsLst(liUsa, coArt, tit$)                   'titulo
res = XlsLst(liUsa, coNom, vVndN)                  'total linhas
res = XlsLst(liUsa, coQua, TVndQu)                 'total quantidades
res = XlsLst(liUsa, coVto, TVndVt)                 'total valores

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO
zon$ = XlsZon$(liUsa, coArt)
res = XlsAli(zon$, "5")

zon$ = XlsZon$(liUsa, coNom)
res = XlsAli(zon$, "5")

'separacao
call XlsLiqVA_IncLin                               'incrementar linha	
x=TotLpz(1)                                        'limpar totais
end sub


'-------------------------------------------------- LINHA SUB-TOTAL 2 --------
Sub XlsLiqVA_LinSbt2 'subtotal 2
call PrpResArt                                     'preparar valor resumo do artigo
call XlsLiqVA_IncLin                               'incrementar linha	

'listar
res = XlsLst(liUsa, coArt, resArtCov$)             'codigo artigo
res = XlsLst(liUsa, coNom, resartNom$)             'nome
res = XlsLst(liUsa, coQua, artQu)                  'quantidade
res = XlsLst(liUsa, coVto, artVt)                  'valor total

res = AcmExe("vVndQu",artQu)                       'acumular valores - quantidades
res = AcmExe("vVndVt",artVt)                       'acumular valores - valores
end sub


'----------------------------------------------------------------- FIM -------
Sub XlsLiqVA_Fim 'terminar
call XlsComLin_Fim                                 'fim de linhas

TotLin = TotCnt("vVndQu",0)                        'quantidades linhas
TotQuT = Total("vVndQu",0)                         'quantidades totais finais
TotVlT = Total("vVndVt",0)                         'valor total final

'listar
liUsa = linFim                                     'linha a usar

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO
res = XlsLst(liUsa, coNom, TotLin)                 'total quantidades
res = XlsLst(liUsa, coQua, TotQuT)                 'total quantidades
res = XlsLst(liUsa, coVto, TotVlT)                 'total valor
end sub


'==============================================================================
'- [TXT] - Vendedor/Conta - liquido de vendas ---------------------------------
'==============================================================================
Sub LiqVc_Cab 'cabecalho
cabTit$="Vendas por Vendedor/Conta (Liquido)"
FxDiv LstIde,10CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",cabTit$)
?Data: @DataExt                                                   Folha No: @Pag#
?================================================================================
?  Artigo        Nome                                Quantidade          Valor  #
?================================================================================
end sub


'-------------------------------------------------------- LINHA TITULO 1 --------
Sub LiqVc_LinTit1 'titulo 1 - vendedor
tmp=CntLin("MIN",5)                                'minimo de linhas
tmp=CntLin("INC",1)                                'contar linha

chv$ = SbtInf$("ACT",1)                            'chave
nom$ = EmpTabCon$("VEND",chv$,"NOME")              'nome do vendedor
idg$ = chv$ + " - " + nom$                         'identificacao do grupo

print tab(5) "Vendedor: " idg$                     'identificar grupo
end sub


'-------------------------------------------------------- LINHA TITULO 2 --------
Sub LiqVc_LinTit2 'titulo 2 - conta - so limpa totalizadores
call vLiqArtIni                                    'limpar totalizadores
call PrpResCt                                      'preparar valor resumo da conta
end sub


'-------------------------------------------------------- LINHA  ----------------
Sub LiqVc_Lin 'linha - so acumula
call vLiqArtAcm                                    'acumular movimento do artigo
end sub


'------------------------------------------------------- LINHA SUB-TOTAL 1 ------
Sub LiqVc_LinSbt1 'subtotal 1
?            Total do Vendedor: @sVndN             @sVndQu      @sVndVt         #
print

tmp=CntLin("INC",1)                                'contar linhas
x=TotLpz(1)                                        'limpar totais
end sub


'------------------------------------------------------- LINHA SUB-TOTAL 2 ------
Sub LiqVc_LinSbt2 'subtotal 2 - simula linha da conta
tmp=CntLin("INC",1)                                'contar linhas

?@CtCod          @CtNom                            @vVndQu      @vVndVt         #
end sub


'------------------------------------------------------- FIM --------------------
Sub LiqVc_Fim 'terminar
?================================================================================
?                      Totais: @tVndN              @tVndQu      @tVndVt         #
?================================================================================
FxDiv LstPer,SP
end sub


'=============================================================================
'- [XLS] - Vendedor/Conta - liquido de vendas --------------------------------
'=============================================================================
Sub XlsLiqVC_DocIni 'inicializar documento
xlsOpcNfi$ = "RND:StcRvca.xls"                     '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$ ="Vendas por Vendedor/Conta (Líquido)"     '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
coArt = 2                                          'codigo do artigo
coNom = 3                                          'nome do artigo
coQua = 4                                          'quantidade
coVto = 5                                          'valor total
end sub


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


'-------------------------------------------------- LINHA INCREMENTO -------
Sub XlsLiqVC_IncLin 'incrementar linha
call XlsComLin_IncRep                              'incrementar linha + repor formato normal

zon$ = XlsZon$(liUsa, coArt,liUsa, coNom)
res = XlsAli(zon$, "<")
end sub


'-------------------------------------------------- LINHA SEPARACAO --------
Sub XlsLiqVC_LinSep 'linha de separacao
call XlsLiqVC_IncLin                              'incrementar linha
end sub


'-------------------------------------------------- LINHA ------------------
Sub XlsLiqVC_Lin 'linha de valores
call vLiqArtAcm                                   'acumular movimento do artigo
end sub


'--------------------------------------------------- LINHA TITULO 1 --------
Sub XlsLiqVC_LinTit1 'titulo 1 - vendedor
tmp=CntLin("MIN",5)                                'minimo de linhas
call XlsLiqVC_IncLin                               'incrementar linha	

chv$ = SbtInf$("ACT",1)                            'chave
nom$ = EmpTabCon$("VEND",chv$,"NOME")              'nome do vendedor
idg$ = chv$ + " - " + nom$                         'identificacao do grupo

res = XlsLst(liUsa, coNom, idg$)                   'nome vendedor
call XlsComLin_ActB                                'activar linha em BOLD
end sub


'--------------------------------------------------- LINHA TITULO 2 --------
Sub XlsLiqVC_LinTit2 'titulo 2 - conta
call vLiqArtIni                                    'limpar totalizadores
call PrpResCt                                      'preparar valor resumo da conta
end sub


'------------------------------------------------ LINHA SUB-TOTAL 1 --------
Sub XlsLiqVC_LinSbt1 'subtotal 1
call XlsLiqVC_IncLin                               'incrementar linha	

tit$     ="Total do Vendedor : "                   'titulo
vVndN    = TotCnt("vVndQu",1)
TVndQu   = Total("vVndQu",1)
TVndVt   = Total("vVndVt",1)

res = XlsLst(liUsa, coArt, tit$)                   'titulo
res = XlsLst(liUsa, coNom, vVndN)                  'total linhas
res = XlsLst(liUsa, coQua, TVndQu)                 'total quantidades
res = XlsLst(liUsa, coVto, TVndVt)                 'total valores

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO
zon$ = XlsZon$(liUsa, coArt)
res = XlsAli(zon$, "5")

zon$ = XlsZon$(liUsa, coNom)
res = XlsAli(zon$, "5")

'separacao
call XlsLiqVA_IncLin                               'incrementar linha	
x=TotLpz(1)                                        'limpar totais
end sub


'------------------------------------------------- LINHA SUB-TOTAL 2 --------
Sub XlsLiqVC_LinSbt2 'subtotal 2
codCt$ = CTA_MST_Ct$                               'codigo da conta
CodNm$ = CTA_MST_Nome$                             'nome

call XlsLiqVC_IncLin                               'incrementar linha	

'listar
res = XlsLst(liUsa, coArt, codCt$)                 'codigo conta
res = XlsLst(liUsa, coNom, CodNm$)                 'nome
res = XlsLst(liUsa, coQua, artQu)                  'quantidade
res = XlsLst(liUsa, coVto, artVt)                  'valor total

res = AcmExe("vVndQu",artQu)                       'acumular valores - quantidades
res = AcmExe("vVndVt",artVt)                       'acumular valores - valores
end sub


'---------------------------------------------------------------- FIM -------
Sub XlsLiqVC_Fim 'terminar
call XlsComLin_Fim                                 'fim de linhas

TotLin = TotCnt("vVndQu",0)                        'quantidades linhas
TotQuT = Total("vVndQu",0)                         'quantidades totais finais
TotVlT = Total("vVndVt",0)                         'valor total final

'listar
liUsa = linFim                                     'linha a usar

call XlsComLin_ActBI                               'activar linha em BOLD+ITALICO
res = XlsLst(liUsa, coNom, TotLin)                 'total quantidades
res = XlsLst(liUsa, coQua, TotQuT)                 'total quantidades
res = XlsLst(liUsa, coVto, TotVlT)                 'total valor
end sub


'==============================================================================
'- Valores Liquidos - funcoes comuns ------------------------------------------
'==============================================================================
Sub vLiqArtIni 'linha
artQu = 0                                          'acumular quantidade
artVt = 0                                          'acumular valor

chv$    = SbtInf$("ACT",ntoArt)                    'chave
chvArt$ = chv$                                     'guardar chave do artigo
end sub


Sub vLiqArtAcm 'acumular movimento do artigo
artCmv  = SqlCmp("CMV1")                           'codigo de movimento
linQu   = SqlCmp("RQU")                            'quantidade
linVt   = SqlCmp("RVT")                            'valor

cmv = abs(artCmv)                                  'codigo a verificar
if cmv = 2 then                        'devolucao ?
   linQu   = 0 - linQu                             'quantidade
   linVt   = 0 - linVt                             'valor
end if

if cmv = 16 then                       'credito ?
   linQu   = 0 - linQu                             'quantidade
   linVt   = 0 - linVt                             'valor
end if

artQu = artQu + linQu                              'acumular quantidade
artVt = artVt + linVt                              'acumular valor
end sub


Sub PrpResArt 'preparar valor resumo do artigo
res     = SqlOpcAct("Art.Cod",chvArt$)             'registar artigo
res     = SqlCalc("ARTNOM")                        'preparar nome do artigo

resArtCod$ = chvArt$                               'codigo do artigo
resArtCov$ = StcCodFrm$(resArtCod$)                'codigo do artigo formatado
resArtNom$ = SqlOpcCon$("NOME$")                   'nome do artigo
end sub


Sub PrpResCt 'preparar valor resumo da conta
chv$ = SbtInf$("ACT",2)                            'chave
res  = CtaContaLer(chv$)                           'preparar dados da conta
end sub

##


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

