'Nome       : EncCmv.std
'Tipo       : LST
'Data       : 2013/07/03
'Versao     : 3.0
'Descricao  : Listagem de Comissoes de Vendedor

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 3.0    ____/__/__ --------------------------------------------------
'Actualizacao
'Correccao de listagem de totais no formato XLS resumido

'- Versao : 2.2   2008/10/23 --------------------------------------------------
'Listagens a partir do EMD

'- Versao : 2.1   2006/03/24 --------------------------------------------------
'Listagem para EXCEL

'- Versao : 2.0   2005/11/11 --------------------------------------------------
'Listagem para tabela de comissoes
'Mapa de comissoes usa SQL definido no documento

'- Versao : 1.0   2001/05/23 --------------------------------------------------
'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")

Conferencia de comissoes  [Cmd]=CmvCnf=+
   +SELECT Vnd,[Tdoc$],[Ndoc$],DocPag,ComDoc,Dt,[ComTip$] FROM EncCmvDoc +
   +WHERE [Tdoc$]  =  '{Opc_Tdoc}' +
   +AND   [Ndoc$]  >= '{Opc_Ndoc.Ini}' AND [Ndoc$]  <= '{Opc_Ndoc.Fim}' +
   +AND   [Dt]     >=  {Opc_Dtl.Ini}   AND [Dt]     <=  {Opc_Dtl.Fim} +
   +AND    Vnd     >=  {Opc_Vnd.Ini}   AND  Vnd     <=  {Opc_Vnd.Fim} +
   +AND   [CtEnt$] >= '{Opc_Ct.Ini}'   AND [CtEnt$] <= '{Opc_Ct.Fim}' +
   +ORDER By Vnd,[Tdoc$],[Ndoc$] 

Mapa de comissoes EMD [Cmd]=MapCom_EMD=+
   +SELECT Vnd,EncCmvDoc.[Tdoc$],EncCmvDoc.[Ndoc$],DocTot,DocPag,+
   +ComTot,ComDoc,Dt,[ComTip$],+
   +EmdDoc.[Ct$], EmdDoc.Dtl, EmdDoc.Dtv, EmdDoc.[Descr$],+
   +EmdDoc.[Tv$],EmdDoc.Vl,EmdDoc.[Info$] +
   +FROM EncCmvDoc INNER JOIN EmdDoc +
   +ON (EncCmvDoc.[Ndoc$] = EmdDoc.[Ndoc$]) AND (EncCmvDoc.[Tdoc$] = EmdDoc.[Tdoc$]) +
   +WHERE {Opc_DOC} +
   +AND   [Dt]     >=  {Opc_Dtl.Ini}   AND [Dt]     <=  {Opc_Dtl.Fim} +
   +AND    Vnd     >=  {Opc_Vnd.Ini}   AND  Vnd     <=  {Opc_Vnd.Fim} +
   +AND   EmdDoc.[Ct$] >= '{Opc_Ct.Ini}'   AND EmdDoc.[Ct$] <= '{Opc_Ct.Fim}' +
   +ORDER By Vnd,EncCmvDoc.[Tdoc$],EncCmvDoc.[Ndoc$]

Mapa de comissoes  [Cmd]=MapCom=+
   +SELECT Vnd,[Tdoc$],[Ndoc$],DocTot,DocPag,ComTot,ComDoc,Dt,[ComTip$] +
   +FROM EncCmvDoc +
   +WHERE {Opc_DOC} +
   +AND   [Dt]     >=  {Opc_Dtl.Ini}   AND [Dt]     <=  {Opc_Dtl.Fim} +
   +AND    Vnd     >=  {Opc_Vnd.Ini}   AND  Vnd     <=  {Opc_Vnd.Fim} +
   +ORDER By Vnd,dt,[Tdoc$],[Ndoc$]


Resumo de comissoes  [Cmd]=CmvRes=+
   +SELECT Vnd,[Tdoc$],[Ndoc$],DocPag,ComDoc,Dt,[ComTip$] +
   +FROM EncCmvDoc +
   +WHERE {Opc_DOC} +
   +AND   [Dt]     >=  {Opc_Dtl.Ini}   AND [Dt]     <=  {Opc_Dtl.Fim} +
   +AND    Vnd     >=  {Opc_Vnd.Ini}   AND  Vnd     <=  {Opc_Vnd.Fim} +
   +ORDER By Vnd,[Tdoc$],[Ndoc$] 


Premio de objectivos  [Cmd]=PreObj=+
   +SELECT Vnd,[Tdoc$],[Ndoc$],DocTot,DocPag,ComTot,ComDoc,Dt,[ComTip$] +
   +FROM EncCmvDoc +
   +WHERE {Opc_DOC} +
   +AND   [Dt]     >=  {Opc_Dtl.Ini}   AND [Dt]     <=  {Opc_Dtl.Fim} +
   +AND    Vnd     >=  {Opc_Vnd.Ini}   AND  Vnd     <=  {Opc_Vnd.Fim} +
   +ORDER By Vnd,[Tdoc$],[Ndoc$]


Resumo de comissoes/documento  [Cmd]=CmvRes_EMD=+
   +SELECT Vnd, EncCmvDoc.[Tdoc$], EncCmvDoc.[Ndoc$], DocPag, ComDoc, Dt, [ComTip$] +
   +FROM EncCmvDoc INNER JOIN EmdDoc DOC +
   +ON (EncCmvDoc.[Ndoc$] = DOC.[Ndoc$]) AND (EncCmvDoc.[Tdoc$] = DOC.[Tdoc$]) +
   +WHERE {Opc_DOC} +
   +AND   EncCmvDoc.[Dt] >=  {Opc_Dtl.Ini}   AND EncCmvDoc.[Dt] <=  {Opc_Dtl.Fim} +
   +AND   EncCmvDoc.Vnd  >=  {Opc_Vnd.Ini}   AND EncCmvDoc.Vnd  <=  {Opc_Vnd.Fim} +
   +AND   DOC.[Ct$]      >= '{Opc_Ct.Ini}'   AND DOC.[Ct$]      <= '{Opc_Ct.Fim}' +
   +ORDER By EncCmvDoc.Vnd, EncCmvDoc.[Tdoc$], EncCmvDoc.[Ndoc$] 

##

   +AND   [CtEnt$] >= '{Opc_Ct.Ini}'   AND [CtEnt$] <= '{Opc_Ct.Fim}' +


SELECT Vnd,EncCmvDoc.[Tdoc$],EncCmvDoc.[Ndoc$],DocPag,ComDoc,Dt,[ComTip$] 
FROM EncCmvDoc INNER JOIN EmdDoc DOC 
ON (EncCmvDoc.[Ndoc$] = DOC.[Ndoc$]) AND (EncCmvDoc.[Tdoc$] = DOC.[Tdoc$]) 
WHERE EncCmvDoc.[Tdoc$] IN('REC') 
AND EncCmvDoc.[Ndoc$] BETWEEN '201300000001' AND '201300000010' 
AND   EncCmvDoc.[Dt]      >=  0   AND EncCmvDoc.[Dt]     <=  999999999999999
AND   EncCmvDoc.Vnd       >=  1   AND EncCmvDoc.Vnd      <=  9E+20
AND   DOC.[Ct$]     >= '2111040907'   AND DOC.[Ct$]    <= '2111040907z' 
ORDER By EncCmvDoc.Vnd, EncCmvDoc.[Tdoc$],EncCmvDoc.[Ndoc$]



'==============================================================================
#DOC - Tabela de comissoes
'==============================================================================
Tipo                       [DocTip]=TabCom
Nome                       [DocNom]=TabCom,Tabela de Comissões

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

'funcoes de listagem
Listar cabecalho            [FxCAB]=Tab_Cab
Listar linhas               [FxLIN]=Tab_Lin; Tip,4; Ide,5; Sep
Listar fim                  [FxFIM]=Tab_Fim

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


'diversos
'parametros especificos
'Dados a listar            [DocEsp]=
##


'==============================================================================
#DOC - Resumo de Comissoes
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=CmvRes,Resumo de Comissões

'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
Listar cabecalho            [FxCAB]=Res_Cab
Listar linhas               [FxLIN]=Res_Lin; Sbt01,2; Sbt02,2; Sbt03,2
Listar fim                  [FxFIM]=Res_Fim

'controlo de listagem SQL
'Gerador de dados a listar  [SQLDat]=CmvRes
Gerador de dados a listar  [SQLDat]=CmvRes_EMD
Subtotalizadores           [SQLSbt]=Vnd


'diversos
'parametros especificos
'Dados a listar            [DocEsp]=
##


'==============================================================================
#DOC - Mapa de comissoes
'==============================================================================
Tipo                       [DocTip]=MapCom
Nome                       [DocNom]=MapCom,Mapa de Comissões

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

'funcoes de listagem
Listar cabecalho            [FxCAB]=Mco_Cab
Listar linhas               [FxLIN]=Mco_Lin; Sbt01,2; Sbt02,2; Sbt03,2;+
                                   +DisDoc,0; DisDocIni,0; DisDocFim,0
Listar fim                  [FxFIM]=Mco_Fim


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

'diversos
'parametros especificos
Discriminar                 [DocEsp]=CmvDis=DOC
##


'==============================================================================
#DOC - Mapa de comissoes em EXCEL (Resumido)
'==============================================================================
Tipo                       [DocTip]=MapCom
Nome                       [DocNom]=McoXls,Mapa de Comissões EXCEL

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

'funcoes de listagem
Base para documento         [FxDOC]=McoXlsRes
Listar cabecalho            [FxCAB]=McoXlsRes_Cab
Listar linhas               [FxLIN]=McoXlsRes_Lin,0; Sbt01,0; Sbt02,0; Sbt03,0;+
                                   +DisDoc,0; DisDocIni,0; DisDocFim,0
Listar fim                  [FxFIM]=McoXlsRes_Fim

Matriz auxiliar            [DocMat]=EncCmv.xls


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

'diversos
parametros especificos
Discriminar                 [DocEsp]=CmvDis=DOC,ART
##


'==============================================================================
#DOC - Mapa de comissoes - discriminado
'==============================================================================
Tipo                       [DocTip]=MapCom
Nome                       [DocNom]=MpcDis,Mapa de Comissões (DIS)

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

'funcoes de listagem
Listar cabecalho            [FxCAB]=McoDis_Cab
Listar linhas               [FxLIN]=McoDis_Lin,3; Sbt01,2; Sbt02,2; Sbt03,2;+
                                   +DisDoc; DisDocIni,0; DisDocFim;+
                                   +DisArt; DisArtIni,0; DisArtFim
Listar fim                  [FxFIM]=McoDis_Fim


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

'diversos
parametros especificos
Discriminar                 [DocEsp]=CmvDis=DOC,ART
##


'==============================================================================
#DOC - Mapa de comissoes em EXCEL (discriminado)
'==============================================================================
Tipo                       [DocTip]=MapCom
Nome                       [DocNom]=McoXlsDis,Mapa de Comissões (DIS) EXCEL

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

'funcoes de listagem
Base para documento         [FxDOC]=McoXlsDis
Listar cabecalho            [FxCAB]=McoXlsDis_Cab
Listar linhas               [FxLIN]=McoXlsDis_Lin,0; Sbt01,0; Sbt02,0; Sbt03,0;+
                                   +DisDoc,0; DisDocIni,0; DisDocFim,0;+
                                   +DisArt,0; DisArtIni,0; DisArtFim,0
Listar fim                  [FxFIM]=McoXlsDis_Fim

Matriz auxiliar            [DocMat]=EncCmv.xls


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

'diversos
parametros especificos
Discriminar                 [DocEsp]=CmvDis=DOC,ART
##


'==============================================================================
#DOC - Premio de Objectivos
'==============================================================================
Tipo                       [DocTip]=PreObj
Nome                       [DocNom]=PreObjDis,Premio de Objectivos

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

'funcoes de listagem
Listar cabecalho            [FxCAB]=PreObjDis_Cab
Listar linhas               [FxLIN]=PreObjDis_Lin,3; Sbt01,2; Sbt02,2; Sbt03,2;+
                                   +DisDoc; DisDocIni,0; DisDocFim;+
                                   +DisArt; DisArtIni,0; DisArtFim
Listar fim                  [FxFIM]=PreObjDis_Fim

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


'==============================================================================
#VAR - Variaveis
'==============================================================================
'MemTxt$(1)    - titulo

'MemTxt$(11)   - numero do vendedor
'MemTxt$(12)   - nome do vendedor

'MemTxt$(21)   - tipo de comissao

'MemTxt$(31)   - tipo de documento
'MemTxt$(32)   - numero de documento
'MemTxt$(33)   - numero de documento formatado

'documento incluido
'MemTxt$(51)   - tipo de documento
'MemTxt$(52)   - numero de documento
'MemTxt$(53)   - numero de documento formatado
'MemTxt$(54)   - 
'MemTxt$(55)   - 
'MemTxt$(56)   - 
'MemTxt$(57)   - situacao de pagamento (T/P)

'artigo
'MemTxt$(61)   - codigo do artigo
'MemTxt$(62)   - nome do artigo
'MemTxt$(63)   - desconto

'comissao
'MemTxt$(71)   - tipo de valor
'MemTxt$(72)   - tabela


'documento
'MemNum(11)    - vendedor
'MemNum(12)    - data do documento

'MemNum(20)    - numero de ordem
'MemNum(21)    - total do documento
'MemNum(22)    - valor pago
'MemNum(23)    - total da comissao
'MemNum(24)    - comissao do documento

'MemNum(40)    - numero de documentos
'MemNum(41)    - comissao dos documentos
'MemNum(42)    - premio de recebimento
'MemNum(43)    - comissao total

'documento incluido
'MemNum(50)    - contador de documentos
'MemNum(51)    - data do documento
'MemNum(52)    - valor do documento
'MemNum(53)    - Numero de dias
'MemNum(54)    - factor de pagamento/comissao
'MemNum(55)    - comissao total
'MemNum(56)    - comissao do documento
'MemNum(57)    - valor pendente

'artigo
'MemNum(60)    - contador de artigos
'MemNum(61)    - quantidade
'MemNum(62)    - preco
'MemNum(63)    - valor
'MemNum(64)    - factor de comissao
'MemNum(65)    - comissao total
'MemNum(66)    - comissao do documento

'comissao
'MemNum(71)    - valor


'campos a listar
Pag      = Doc_CntPag
DataExt  = FrmVal$(Sig_DtHoje,45,0)

CntL     = FrmNum$( 3.0,CntLin("CON"))


'cliente
cliCt    = Cta_Mst_Ct$
cliNom   = Cta_Mst_Nome$


'resumo de comissoes
Tdo      = SqlCmp$("Tdoc$")
Ndo      = SqlCmp$("Ndoc$")
Doc      = FrmNdo$("46",SqlCmp$("Tdoc$"),SqlCmp$("Ndoc$"))
dtDoc    = FrmDt$("",SqlCmp("Dt"))
tip      = SqlCmp$("ComTip$")

vDoc     = FrmNum$(12.2,SqlCmp("DocPag"))
vCom     = FrmNum$(12.2,SqlCmp("ComDoc"))
nDoc     = FrmNum$( 5.0,TotCnt("vDoc",1)+1)

vDoc_T0  = FrmNum$(12.2,Total(vDoc,0))
vDoc_T1  = FrmNum$(12.2,Total(vDoc,1))
vDoc_T2  = FrmNum$(12.2,Total(vDoc,2))

nDoc_T0  = FrmNum$( 5.0,TotCnt("vDoc",0))
nDoc_T1  = FrmNum$( 5.0,TotCnt("vDoc",1))
nDoc_T2  = FrmNum$( 5.0,TotCnt("vDoc",2))

vCom_T0  = FrmNum$(12.2,Total(vCom,0))
vCom_T1  = FrmNum$(12.2,Total(vCom,1))
vCom_T2  = FrmNum$(12.2,Total(vCom,2))


'mapa de comissoes
mcVnd    = MemNum(11)
mcVndNum = MemTxt$(11)
mcVndNom = MemTxt$(12)
mcVndIde = MemTxt$(11)+" - "+MemTxt$(12)
mcDt     = FrmDt$("",MemNum(12))
mcTdo    = MemTxt$(31)
mcNdo    = MemTxt$(32)
mcDoc    = FrmNdo$("46",MemTxt$(31),MemTxt$(32))
mcTip    = MemTxt$(21)
mcT      = MemTxt$(21)

diTdo    = MemTxt$(51)
diNdo    = MemTxt$(52)
diDoc    = FrmNdo$("46",MemTxt$(51),MemTxt$(52))
diDtd    = FrmDt$("",MemNum(51))
diVld    = FrmNum$(12.2,MemNum(52))
diNdi    = FrmNum$( 4.0,MemNum(53))
diComP   = FrmNum$( 3.2,MemNum(54)*100)
diComT   = FrmNum$(12.2,MemNum(55))
diComD   = FrmNum$(12.2,MemNum(56))
diComFp  = txComFp$

aCod     = MemTxt$(61)
aCof     = StcCodFrm$(MemTxt$(61))
aNom     = left$(MemTxt$(62),25)
aDes     = MemTxt$(63)
aQu      = FrmNum$(-4.3,MemNum(61))
aPr      = FrmNum$(12.2,MemNum(62))
aVl      = FrmNum$(12.2,MemNum(63))
aComP    = FrmNum$( 3.2,MemNum(64)*100)
aComT    = FrmNum$(12.2,MemNum(65))
aComD    = FrmNum$(12.2,MemNum(66))
aIco     = txIdeCom$

mcNDoc   = FrmNum$( 5.0,MemNum(20))
mcDocT   = FrmNum$(12.2,MemNum(21))
mcDocP   = FrmNum$(12.2,MemNum(22))
mcComT   = FrmNum$(12.2,MemNum(23))
mcComD   = FrmNum$(12.2,MemNum(24))

mcComDoc = FrmNum$(12.2,MemNum(41))
mcComPrm = FrmNum$(12.2,MemNum(42))
mcComTot = FrmNum$(12.2,MemNum(43))

'percentagens
iCmP     = FrmNum$( 3.1,MemNum(54)*100)
aCmP     = FrmNum$( 3.1,MemNum(64)*100)


tcNDoc   = FrmNum$( 5.0,MemNum(40))
tcDocT   = FrmNum$(12.2,total(mcDocT)
tcDocP   = FrmNum$(12.2,total(mcDocP))
tcComT   = FrmNum$(12.2,total(mcComT))
tcComD   = FrmNum$(12.2,total(mcComD))

'tcComDoc = FrmNum$(12.2,total(mcComDoc))
'tcComPrm = FrmNum$(12.2,total(mcComPrm))
'tcComTot = FrmNum$(12.2,total(mcComTot))


'tabela de comissoes
tabComTip = VarCom$("comTip$")
tabComIde = VarCom$("comIde$")


'pagamentos pendentes
gpTot    = FrmNum$(12.2,PenGerTot)     'pendente geral - total
gpNum    = FrmNum$( 5.0,PenGerNum)     'pendente geral - numero

vpNum    = FrmNum$( 5.0,PenVenNum)     'pendente do vendedor - numero
vpTot    = FrmNum$(12.2,PenVenTot)     'pendente do vendedor - total


'- premios por objectivos -----------------------------------------------------
'vendedor
pobVndCod = VarCom$("VndCod$")          'vendedor - codigo
pobVndNom = VarCom$("VndNom$")          'vendedor - nome
pobVndIde = VarCom$("VndCod$")+" - "+VarCom$("VndNom$")    'vendedor - identificacao

'documento
pobCnt    = FrmNum$( 5.0,VarCom("cntDoc"))        'contador de dcumentos
pobTdo    = VarCom$("DocTdo$")                    'tipo de documento
pobNdo    = FrmNdo$("46","",VarCom$("DocNdo$"))   'numero de documento
pobDt     = FrmDt$("",VarCom("DocDt"))            'data do documento
pobDocVdo = FrmNum$(12.2,VarCom("DocVdo"))        'valor do documento

'documento incluido
poiCnt    = FrmNum$( 4.0,VarCom("IncCnt"))         'contador de documentos
poiTdo    = VarCom$("IncTdo$")                     'tipo de documento
poiNdo    = FrmNdo$("46","",VarCom$("IncNdo$"))    'numero de documento
poiDtd    = FrmDt$("",VarCom("IncDt"))             'data do documento
poiVto    = FrmNum$(12.2,VarCom("IncVdo"))         'valor do documento
poiVpe    = FrmNum$(12.2,VarCom("IncVpe"))         'valor pendente
poiSpg    = VarCom$("IncSpg$")                     'situacao de pagamento
poiSpgInf = txPoiSpg$                              'informacao para situacao de pagamento

'artigo
poaCod   = Stc_Mst_Art$                            'codigo
poaCov   = StcCodFrm$(Stc_Mst_Art$)                'codigo para visualizar
poaNom   = left$(VarCom$("ArtNom$"),35)            'nome
poaVto   = FrmNum$(12.2,VarCom("ArtVto"))          'valor total
poaObj   = FrmNum$(12.2,VarCom("ArtObj"))          'valor para objectivos
poaPre   = FrmNum$(12.2,VarCom("ArtPre"))          'valor para premios

tPoaVto  = FrmNum$(12.2,total(poaVto))             'total de valor
tPoaObj  = FrmNum$(12.2,total(poaObj))             'total para objectivos
tPoaPre  = FrmNum$(12.2,total(poaPre))             'total para premios

'premio
tObjPre  = FrmNum$(12.2,VarCom("VndObj"))          'objectivos previstos
tObjRea  = FrmNum$(12.2,VarCom("VndRea"))          'objectivos realizados
tPreVnd  = FrmNum$(12.2,VarCom("VndPre"))          'premio do vendedor
##


'==============================================================================
#PGM - Programa/Funcoes
'==============================================================================
'==============================================================================
Sub FX_ADI 'funcao para dados adicionais
'==============================================================================
'- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
'==============================================================================
'------------------------------------------------------------------------------

'- (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
end sub


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


Sub Lst_AJT 'ajuste
end sub


'------------------------------------------------------------------------------
'- Tabela de Comissoes --------------------------------------------------------
'------------------------------------------------------------------------------
Sub Tab_CabIni 'inicializar documento
ncoMax  = 14                           'maximo de colunas
pTabBas =  5                           'posicao de tabulacao base
pTabIni = 19                           'posicao de tabulacao inicial
pTabInc =  8                           'incremento de tabulacao
end sub


Sub Tab_Cab 'cabecalho
FxDiv LstIde,16CPI,0
print TxTit$("TT=16CPI, LD, PT=66C, TL=16CPI",MemTxt$(1))
?Data : @DataExt                                                                                                      Folha No: @Pag#
?====================================================================================================================================
end sub


Sub Tab_Lin 'linha
tmpCod$ = VarCom$("comGrpCod$")        'codigo
tmpIde$ = VarCom$("comGrpIde$")        'identificacao
ideCom$ = tmpCod$ + " - " + tmpIde$    'identificacao a listar

nco     = GrpDim("EscVal")             'numero de colunas
if nco > ncoMax then                   'acima do maximo ?
   ncoUsa = ncoMax                     'usar maximo
   adi$   = " +"                       'assinalar que ha mais colunas
else
   ncoUsa = nco                        'usar colunas indicadas
   adi$ = ""                           'sem colunas adicionais
end if

'print ;

ncoUsa=ncoMax
adi$ = " +"

'valor de activacao
pTab = pTabBas                         'tabulacao inicial
vAct = GrpCon("EscVal", 0)             '% de comissao
vtx$ = frmNum$(10.2, vAct)             'formatar valor de activacao
print tab(pTab) vtx$;                  'listar

'escaloes
pTab = pTabIni                         'tabulacao inicial
for i = 1 to ncoUsa
pco = GrpCon("EscVal", i)              '% de comissao
if pco = 0 then                        'valor nulo ?
   vtx$ = "    .   "                   'valor para marcar posicao
else
   vtx$ = frmNum$(4.3, pco)            'formatar % de comissao
end if

print tab(pTab) vtx$;                  'listar
pTab = pTab + pTabInc                  'incrementar posicao
next
print adi$                             'terminar linha
end sub


Sub Tab_LinTip 'tipo de comissao
tmpTip$ = VarCom$("comTip$")           'tipo de comissao
tmpIde$ = VarCom$("comTipIde$")        'identificacao
ideTip$ = tmpTip$ + " - " + tmpIde$    'identificacao a listar


sep$ = "="                             'caractere para separador
print                                  'linha de separacao
print string$(132, sep$)               'listar separacao
print tab(5) ideTip$                   'listar identificacao
print string$(132, sep$)               'listar separacao
end sub


Sub Tab_LinIde 'identificacao
tmpCod$ = VarCom$("comGrpCod$")        'codigo
tmpIde$ = VarCom$("comGrpIde$")        'identificacao
ideCom$ = tmpCod$ + " - " + tmpIde$    'identificacao a listar

nco     = GrpDim("EscCab")
if nco > ncoMax then                   'acima do maximo ?
   ncoUsa = ncoMax                     'usar maximo
   adi$   = " +"                       'assinalar que ha mais colunas
else
   ncoUsa = nco                        'usar colunas indicadas
   adi$ = ""                           'sem colunas adicionais
end if

print                                  'linha de separacao
print tab(5) ideCom$                   'listar identificacao
print tab(5) string$(128,"-")          'listar separacao

pTab = pTabIni                         'tabulacao inicial
for i = 1 to ncoUsa
tmp$ = GrpCon$("EscCab", i)            'valor a listar
vtx$ = left$(tmp$, 7)                  'limitar tamanho

vtx$ = txtAli$("|", 7, vtx$)           'centrar texto

print tab(pTab) vtx$;                  'listar
pTab = pTab + pTabInc                  'incrementar posicao
next
print adi$                             'terminar linha

print tab(5) string$(128,"-")          'listar separacao
end sub


Sub Tab_LinSep 'separacao
print "Sep"
end sub


Sub Tab_Fim 'terminar
?====================================================================================================================================
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub


'------------------------------------------------------------------------------
'- Resumo de comissoes --------------------------------------------------------
'------------------------------------------------------------------------------
Sub Cnf_CabIni 'inicializar documento
call vPenIni                           'inicializar valores pendentes
end sub


Sub Res_Cab 'cabecalho
FxDiv LstIde,16CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI","Resumo de Comissões")
?Data : @DataExt                                                  Folha No: @Pag#
?================================================================================
?         Documento                 Data             Valor       Comissão   Tipo#
?================================================================================
end sub


Sub Res_Lin 'linha
?@nDoc    @Tdo    @Doc           @DtDoc       @vDoc          @vCom           @tip
end sub


Sub Res_LinTit1 'titulo 1 (vendedor)
tmp=CntLin("MIN",5)                               'minimo de linhas
tmp=CntLin("INC",1)                               'contar linha
vnd$=SbtInf$("ACT",1)                             'vendedor
print tab(5) "Vendedor: " vnd$;                   'identificar grupo
print " - " EmpTabCon$("VEND",vnd$,"NOME")        'nome do vendedor
end sub


Sub Res_LinSbt1 'sobtotal 1 (vendedor)
print tab(10) "Total do Vendedor: " SbtInf$("ANT",1);    'identificar subtotal
print tab(46) FrmNum$(12.2,Total("vDoc",1));
print tab(61) FrmNum$(12.2,Total("vCom",1))
print
tmp=CntLin("INC",2)          'contar linhas
x=TotLpz(1)                  'limpar totais
end sub


Sub Res_Fim 'totais
?================================================================================
?         Totais Gerais: @nDoc_T0             @vDoc_T0       @vCom_T0           #
?================================================================================
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub


Sub Res_FimAjt 'fim de pagina intermedia
?================================================================================
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub


'------------------------------------------------------------------------------
'- Mapa de Comissoes ----------------------------------------------------------
'------------------------------------------------------------------------------
Sub Mco_CabIni 'inicializar documento
call vPenIni                           'inicializar valores pendentes
call Com_CntDoc_Ini                    'inicializar contador de documentos
end sub


Sub Mco_Cab 'cabecalho
FxDiv LstIde,16CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",MemTxt$(1))
'?Vendedor: @mcVndN@mcVndIde                                                    #
?Vendedor: @mcVndIde                                                            #
?Data : @DataExt                                                  Folha No: @Pag#
?================================================================================
?         Documento                 Data             Valor       Comissão   Tipo#
?================================================================================
end sub


Sub Mco_Lin 'linha
?@mcNDoc  @mcTdo  @mcDoc         @mcDt        @mcDocP        @mcComD         @mcT
end sub


Sub Mco_Fim 'totais
?================================================================================
?         Totais Gerais: @tcNDoc              @tcDocP        @tcComD            #
?  Pagamentos pendentes: @gpNum               @gpTot                            #
?--------------------------------------------------------------------------------
?         Comissao de Documentos:                            @mcComDoc          #
?         Premios:                                           @mcComPrm          #
?         Comissão total:                                    @mcComTot          #
?================================================================================

x=TotLpz(0)                            'limpar totais
call vPenLpz                           'limpar valores pendentes do vendedor

FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub


Sub Mco_FimAjt 'fim de pagina intermedia
?================================================================================
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub


Sub Mco_LinDisDocIni 'inicio de discriminar documentos
'tmp=CntLin("INC",1)                               'contar linha
'print "Inicio de Documento"
end sub


Sub Mco_LinDisDoc 'discriminar documentos
call vPenAcm                           'acumular valores pendentes

'?@diNDoc  @diTdo  @diDoc         @diDtd       @diVld         @diComD        @iCmP
end sub


Sub Mco_LinDisDocFim 'fim de discriminar documentos
'?
end sub


Sub Mco_LinDisArtIni 'inicio de discriminar artigos
'tmp=CntLin("INC",1)                               'contar linha
'print "Inicio de Artigos"
end sub


Sub Mco_LinDisArt 'discriminar artigos
'?         @aCof        @aNom                  @aVl           @aComD         @aCmP
end sub


Sub Mco_LinDisArtFim 'fim de discriminar artigos
?
end sub


'------------------------------------------------------------------------------
'- Mapa de Comissoes - discriminado -------------------------------------------
'------------------------------------------------------------------------------
Sub McoDis_CabIni 'inicializar documento
call vPenIni                           'inicializar valores pendentes
call Com_CntDoc_Ini                    'inicializar contador de documentos
end sub


Sub McoDis_Cab 'cabecalho
FxDiv LstIde,16CPI,0
print TxTit$("TT=16CPI, LD, PT=66C, TL=16CPI",MemTxt$(1))
'?Vendedor: @mcVndN@mcVndIde                                                    #
?Vendedor: @mcVndIde                                                            #
?Data : @DataExt                                                                                                      Folha No: @Pag#
?====================================================================================================================================
?             Documento             Data                        Quant                Valor        Comissão   Dias/Desc           Tipo 
?====================================================================================================================================
end sub


Sub McoDis_Lin 'linha
?@mcNDoc  @mcTdo  @mcDoc         @mcDt                                       @mcDocP        @mcComD                               @mcT
?         @CliCt                 @CliNom                                #
?
end sub


Sub McoDis_Fim 'totais
?====================================================================================================================================
?                                Totais Gerais: @tcNDoc                      @tcDocP        @tcComD            #
?                         Pagamentos pendentes: @gpNum                                      @gpTot             #
?====================================================================================================================================

x=TotLpz(0)                  'limpar totais
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub


Sub McoDis_FimAjt 'fim de pagina intermedia
?====================================================================================================================================
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub


Sub McoDis_LinDisDocIni 'inicio de discriminar documentos
'tmp=CntLin("INC",1)                               'contar linha
'print "Inicio de Documento"
end sub


Sub McoDis_LinDisDoc 'discriminar documentos
call vPenAcm                                                'acumular valores pendentes

txComFp$ = "(Pag=" + spgFco$ + "% " + spgSit$ + ")"         'texto para factor de pagamento/comissao

?@diNDoc  @diTdo  @diDoc         @diDtd      @diComFp                        @diVld         @diComD          @diNdi            @iCmP#
end sub


Sub McoDis_LinDisDocFim 'fim de discriminar documentos
?
end sub


Sub McoDis_LinDisArtIni 'inicio de discriminar artigos
'tmp=CntLin("INC",1)                               'contar linha
'print "Inicio de Artigos"
end sub


Sub McoDis_LinDisArt 'discriminar artigos
call vIdeCom                                       'valor de identificacao de comissao

?         @aCof        @aNom                                     @aQu        @aVl           @aComD           @aDes          @aIco   #
'?====================================================================================================================================
end sub


Sub McoDis_LinDisArtFim 'fim de discriminar artigos
?
end sub


'------------------------------------------------------------------------------
'- Premio de Objectivos - discriminado ----------------------------------------
'------------------------------------------------------------------------------
Sub PreObjDis_CabIni 'inicializar documento
call vPenIni                           'inicializar valores pendentes
end sub


Sub PreObjDis_Cab 'cabecalho
FxDiv LstIde,16CPI,0
print TxTit$("TT=16CPI, LD, PT=66C, TL=16CPI",MemTxt$(1))
?Vendedor: @pobVndIde                                                            #
?Data : @DataExt                                                                                                      Folha No: @Pag#
?====================================================================================================================================
?             Documento             Data                                 Valor     Objectivos         Premio    Notas               #
?====================================================================================================================================
'print string$(80,"=")
end sub


Sub PreObjDis_Lin 'linha
?@pobCnt  @pobTdo @pobNdo        @pobDt                          @pobDocVdo                                             #
?         @CliCt                 @CliNom                                #
?
end sub


Sub PreObjDis_Fim 'totais
?====================================================================================================================================
?                                Totais Gerais: @pobCnt          @tPoaVto       @tPoaObj       @tPoaPre                             #
?                         Pagamentos pendentes: @gpNum           @gpTot                                                             #
?                        -------------------------------------------------------------------------------------
?                         Objectivos previstos:                  @tObjPre                                                           #
?                        Objectivos realizados:                  @tObjRea                                                           #
?                           Premio do vendedor:                  @tPreVnd                                                           #
?====================================================================================================================================

x=TotLpz(0)                  'limpar totais
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub


Sub PreObjDis_FimAjt 'fim de pagina intermedia
?====================================================================================================================================
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub


Sub PreObjDis_LinDisDocIni 'inicio de discriminar documentos
'tmp=CntLin("INC",1)                               'contar linha
end sub


Sub PreObjDis_LinDisDoc 'discriminar documentos
call vPenAcmPob                                              'acumular valores pendentes

'txPoiSpg$ = "(Pen=" + spgFco$ + "% " + spgSit$ + ")"         'texto para factor de pagamento/comissao
'txPoiSpg$ = "(Pen=" + spgSit$ + ")"                           'texto para situacao de pagamento/comissao
'txPoiSpg$ = "(Pen=" + spgPpe$ + "% " + spgSit$ + ")"         'texto para factor de pagamento/comissao
txPoiSpg$ = "(Pag=" + spgPpg$ + "% " + spgSit$ + ")"         'texto para factor de pagamento/comissao

?         @poiTdo @poiNdo        @poiDtd                         @poiVto           @poiSpgInf                                       #
'====================================================================================================================================
end sub


Sub PreObjDis_LinDisDocFim 'fim de discriminar documentos
?
end sub


Sub PreObjDis_LinDisArtIni 'inicio de discriminar artigos
'tmp=CntLin("INC",1)                               'contar linha
end sub


Sub PreObjDis_LinDisArt 'discriminar artigos
?         @poaCov      @poaNom                                   @poaVto        @poaObj        @poaPre                              #
'====================================================================================================================================
'         @poaCov      <23456789.123456789.123456789.>           <23456789.1234><23456789.1234><23456789.1234>
end sub


Sub PreObjDis_LinDisArtFim 'fim de discriminar artigos
?
end sub


'------------------------------------------------------------------------------
'- EXCEL ----------------------------------------------------------------------
'------------------------------------------------------------------------------
'-----------------------------------------------------------------------------
' XLS - Funcoes comuns
'-----------------------------------------------------------------------------
Sub Xls_DocIni 'inicializar documento
dfi$ = FicEmp$("EMP","Enc","dExcel",cmo$)          'directorio de documentos EXCEL
nfi$ = "RND:EncCmv.xls"                            'nome do ficheiro
cmo$ = SigCmoCur$("MIX")                           'modulo corrente
ficDoc$ = FicTmp$(dfi$, nfi$)                      'ficheiro para documento
res = DirCri("D", dfi$)                            'criar directorio para documento

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

res = FicCop(xlsMat$, ficDoc$)                     'criar ficheiro (copia de matriz)

res = XlsPrp(0)                                    'preparar EXCEL
res = XlsDocLer(ficDoc$)                           'ler ficheiro

'res = XlsDocCri("")                                'criar documento
end sub


Sub Xls_DocFim 'terminar documento
res = XlsLinEli(xlsLin, 1)                         'eliminar linha - ultima
res = XlsLinEli(xlsLba, 1)                         'eliminar linha - primeira

'res = XlsWks(1)                                    'activar worksheet

res = XlsDocDir$("A", dfi$)                        'activar directorio
res = XlsDocGrv(ficDoc$)                           'gravar ficheiro

'res = XlsPrt(1)                                    'listar worksheet
res = XlsVer(0)                                    'mostrar EXCEL - normal
'res = XlsVer(1)                                    'mostrar EXCEL - maximizado
res = XlsLib(0)                                    'libertar EXCEL
end sub


Sub Xls_LinInc 'incrementar linha
xlsLsa = xlsLin                                    'linha de saida
res = XlsLinIns(xlsLin, 1)                         'juntar linha

'seguinte
xlsLin = xlsLin + 1                                'contar linha
end sub


'-----------------------------------------------------------------------------
'McoXlsCom - Comissoes - XLS - Funcoes comuns
'-----------------------------------------------------------------------------
Sub McoXls_Prep 'preparar para listar
res = XlsWks("Valores")                            'activar worksheet

res = XlsIdePsq("PO_BAS")                          'pesquisar posicao base
linBav = XlsIdePsqRes("L")                         'linha da posicao base

xlsLba = linBav                                    'linha base
xlsLin = linBav + 1                                'contador de linhas usadas
'xlsLsa = linBav                                    'linha de saida
'xlsLsa = xlsLin                                    'linha de saida

'msgbox "LB", xlsLba

'colunas a usar
coCnt = 2                                          'contagem
coTdo = 3                                          'tipo de documento
coNdo = 4                                          'numero de documento
coDtd = 5                                          'data do documento
coInf = 6                                          'informacao
coQua = 7                                          'quantidade
coVal = 8                                          'valor
coCom = 9                                          'comissao
coNdi = 10                                         'dias/desconto
coTip = 11                                         'tipo
coObs = 12                                         'observacoes

cntPag = 0                                         'contador de paginas
call McoXls_CabCom                                 'cabecalho comum
end sub


Sub McoXls_CabCom 'cabecalho comum
empNum$ = Emp_Inf_Cod$                             'numero da empresa
empNom$ = Emp_Inf_Nome$                            'nome da empresa
lstTit$ = MemTxt$(1)                               'titulo da listagem
lstTip$ = MemTxt$(2)                               'tipo da listagem
lstDt$  = FrmDt$("EXT", Sig_DtHoje)                'data para listagem
dtDia$ = FrmDt$("", Sig_DtHoje)                    'data do dia

res = XlsIdeLst("Emp_Num", empNum$)                'numero da empresa
res = XlsIdeLst("Emp_Nome", empNom$)               'nome da empresa

res = XlsIdeLst("Lst_Tit",  lstTit$)               'tipo da listagem
res = XlsIdeLst("Lst_Tipo", lstTip$)               'tipo da listagem
res = XlsIdeLst("Lst_Data", lstDt$)                'data
res = XlsIdeLst("DT_DIA", dtDia$)                  'data do dia

call Com_CntDoc_Ini                                'inicializar contador de documentos
call McoXls_AcmLpzTot                              'limpar acumuladores totais
end sub


Sub McoXls_AcmLpzTot 'limpar acumuladores totais
call vPenIni                                       'inicializar valores pendentes
call McoXls_AcmVndLpz                              'limpar acumuladores do vendedor

'total
vtoPag = 0                                         'total pago
vtoCom = 0                                         'total de comissao
end sub


Sub McoXls_AcmVndLpz 'limpar acumuladores do vendedor
'vendedor
vtvPag = 0                                         'total pago
vtvCom = 0                                         'total de comissao
call vPenLpz                                       'limpar valores pendentes do vendedor
end sub


Sub McoXls_AcmDocExe 'acumular documento
vdoPag = MemNum(22)                                 'valor pago
'vdoCom = MemNum(23)                                 'comissao total
vdoCom = MemNum(24)                                 'comissao do documento

'acumular para vendedor
vtvPag = vtvPag + vdoPag                            'valor pago
vtvCom = vtvCom + vdoCom                            'comissao do comissao

'acumular para total
vtoPag = vtoPag + vdoPag                            'valor pago
vtoCom = vtoCom + vdoCom                            'comissao do comissao

call vAcmDocRec                                     'acumular documentos - recibos
end sub


Sub McoXls_VndIde 'identificar vendedor
vndNum$ = MemTxt$(11)
vndNom$ = MemTxt$(12)
vndIde$ = MemTxt$(11) + " - " + MemTxt$(12)

call Xls_LinInc                                    'incrementar linha
res = XlsLst(xlsLsa, coInf, vndIde$)               'identificar vendedor
call McoXls_AcmVndLpz                              'limpar acumuladores do vendedor
call Com_CntDoc_Ini                                'inicializar contador de documentos
end sub


Sub McoXls_VndTot 'totais do vendedor
'call Xls_LinInc                                    'separar

'linha 1 - total
call Xls_LinInc                                    'incrementar linha
res = XlsLst(xlsLsa, coInf, "Total do vendedor")   'numero de documentos
res = XlsLst(xlsLsa, coQua, MemNum(40))            'numero de documentos
res = XlsLst(xlsLsa, coVal, vtvPag)                'valor pago
res = XlsLst(xlsLsa, coCom, vtvCom)                'comissao

'linha 2 - receber
call Xls_LinInc                                    'incrementar linha
res = XlsLst(xlsLsa, coInf, "Valor a Receber")     'identificacao
res = XlsLst(xlsLsa, coQua, RecVenNum)             'numero de documentos
res = XlsLst(xlsLsa, coVal, RecVenTdo)             'valor
res = XlsLst(xlsLsa, coCom, RecVenTco)             'comissao

'linha 3 - pendente
call Xls_LinInc                                    'incrementar linha
res = XlsLst(xlsLsa, coInf, "Valor Pendente")      'identificacao
res = XlsLst(xlsLsa, coQua, PenVenNum)             'numero de documentos
res = XlsLst(xlsLsa, coVal, PenVenTdo)             'valor
res = XlsLst(xlsLsa, coCom, PenVenTco)             'comissao

'separar
call Xls_LinInc                                    'incrementar linha
call Xls_LinInc                                    'incrementar linha
call McoXls_AcmVndLpz                              'limpar acumuladores do vendedor
end sub


'-----------------------------------------------------------------------------
'McoXlsDis - Comissoes - XLS - Discriminado
'-----------------------------------------------------------------------------
Sub McoXlsDis_CabCom 'cabecalho comum
call McoXls_CabCom                                 'cabecalho comum
end sub


Sub McoXlsDis_DocIni 'inicializar documento
call Xls_DocIni                                    'inicializar documento
call McoXls_Prep                                   'preparar
call McoXlsDis_Cab                                 'cabecalho
end sub


Sub McoXlsDis_DocFim 'terminar documento
linIni = linBav                                    'linha inicial
linFim = linCnt                                    'linha final

'mostrar
call Xls_DocFim                                    'terminar/mostrar documento
end sub


Sub McoXlsDis_Cab 'cabecalho
cntPag = cntPag + 1                                'contar pagina
if cntPag > 1 then                                 'listar ?
   'if cntPag > 2 then                              'terminar vendedor anterior ?
   '   call McoXls_VndTot                           'totais do vendedor
   'end if

   call McoXls_VndIde                              'identificar vendedor
end if
end sub


Sub McoXlsDis_Lin 'linha de valores
call McoXls_AcmDocExe                              'acumular documento

'linha 1
call Xls_LinInc                                    'incrementar linha

vTdo$ = MemTxt$(31)                                'tipo de documento
vNdo$ = MemTxt$(32)                                'numero de documento

verNdo$ = FrmNdo$("46",vTdo$,vNdo$)                'formatar numero de documento
dtDoc$  = FrmDt$("", MemNum(12))                   'data do documento

'res = XlsLst(xlsLsa, coCnt, MemNum(20))            'contagem de documentos
call Com_CntDoc_LstXls                             'listar contador de documentos

res = XlsLst(xlsLsa, coTdo, vTdo$)                 'tipo do documento
res = XlsLst(xlsLsa, coNdo, verNdo$)               'numero do documento
res = XlsLst(xlsLsa, coDtd, dtDoc$)                'data do documento
res = XlsLst(xlsLsa, coVal, vdoPag)                'valor pago
res = XlsLst(xlsLsa, coCom, vdoCom)                'comissao do documento
res = XlsLst(xlsLsa, coTip, MemTxt$(21))           'tipo de comissao

'linha 2
call Xls_LinInc                                    'incrementar linha

res = XlsLst(xlsLsa, coDtd, Cta_Mst_Ct$)           'conta
res = XlsLst(xlsLsa, coInf, Cta_Mst_Nome$)         'nome da conta
end sub


Sub McoXlsDis_Fim 'totais
'msgbox "","DIS","FIM"

call McoXls_VndTot                                 'totais do vendedor
call McoXlsDis_Vto                                 'valores totais
end sub


Sub McoXlsDis_Vto 'valores totais
'totais
xlsLt1 = xlsLin + 2                                'linha 1 de totais - gerais
xlsLt2 = xlsLt1 + 1                                'linha 2 de totais - receber
xlsLt3 = xlsLt2 + 1                                'linha 3 de totais - pendente

'linha 1 - totais
res = XlsLst(xlsLt1, coQua, MemNum(40))            'numero de documentos
res = XlsLst(xlsLt1, coVal, vtoPag)                'valor pago
res = XlsLst(xlsLt1, coCom, vtoCom)                'comissao

'linha 2 - receber
res = XlsLst(xlsLt2, coQua, RecGerNum)             'numero de documentos
res = XlsLst(xlsLt2, coVal, RecGerTdo)             'valor
res = XlsLst(xlsLt2, coCom, RecGerTco)             'comissao

'linha 3 - pendente
res = XlsLst(xlsLt3, coQua, PenGerNum)             'numero de documentos
res = XlsLst(xlsLt3, coVal, PenGerTdo)             'valor
res = XlsLst(xlsLt3, coCom, PenGerTco)             'comissao
end sub


Sub McoXlsDis_LinDisDocIni 'inicio de discriminar documentos
'print "Inicio de Documento"

'call Xls_LinInc                                    'incrementar linha
end sub


Sub McoXlsDis_LinDisDoc 'discriminar documentos
call Xls_LinInc                                    'incrementar linha

call vPenAcm                                          'acumular valores pendentes
txComFp$ = "(Pag=" + spgFco$ + "% " + spgSit$ + ")"   'texto para factor de pagamento/comissao

vTdo$ = MemTxt$(51)                                'tipo de documento
vNdo$ = MemTxt$(52)                                'numero de documento

verNdo$ = FrmNdo$("46",vTdo$,vNdo$)                'formatar numero de documento
dtDoc$  = FrmDt$("", MemNum(51))                   'data do documento

vVdo    = MemNum(52)                               'valor do documento
vCom    = MemNum(55)                               'comissao total
'vCom   = MemNum(56)                               'comissao do documento
vNdi    = MemNum(53)                               'numero de dias
vPer    = MemNum(54) * 100                         'percentagem

res = XlsLst(xlsLsa, coTdo, vTdo$)                 'tipo do documento
res = XlsLst(xlsLsa, coNdo, verNdo$)               'numero do documento
res = XlsLst(xlsLsa, coDtd, dtDoc$)                'data do documento
res = XlsLst(xlsLsa, coInf, txComFp$)              'informacao de pagamento
res = XlsLst(xlsLsa, coVal, vVdo)                  'valor do documento
res = XlsLst(xlsLsa, coCom, vCom)                  'comissao do documento
res = XlsLst(xlsLsa, coNdi, vNdi)                  'numero de dias
res = XlsLst(xlsLsa, coTip, vPer)                  'percentagem
end sub


Sub McoXlsDis_LinDisDocFim 'fim de discriminar documentos
call Xls_LinInc                                    'incrementar linha
end sub


Sub McoXlsDis_LinDisArtIni 'inicio de discriminar artigos
'print "Inicio de Artigos"

'call Xls_LinInc                                    'incrementar linha
end sub


Sub McoXlsDis_LinDisArt 'discriminar artigos
call vIdeCom                                       'valor de identificacao de comissao

If MemTxt$(61) <> "#TXL" then                      'artigo valido ?
call Xls_LinInc                                    'incrementar linha
vaCof$   = StcCodFrm$(MemTxt$(61))                 'codigo do artigo
vaNom$   = MemTxt$(62)                             'nome do artigo
vaQua$   = FrmNum$(-4.3, MemNum(61))               'quantidade
vaVla$   = FrmNum$(12.2, MemNum(63))               'valor
vaCom$   = FrmNum$(12.2, MemNum(65))               'comissao total
'vaCom$   = FrmNum$(12.2, MemNum(66))               'comissao do documento
vaDes$   = MemTxt$(63)                             'desconto
vaIco$   = txIdeCom$                               'observacoes

res = XlsLst(xlsLsa, coDtd, vaCof$)                'artigo
res = XlsLst(xlsLsa, coInf, vaNom$)                'nome do artigo
res = XlsLst(xlsLsa, coQua, vaQua$)                'quantidade
res = XlsLst(xlsLsa, coVal, vaVla$)                'valor do artigo
res = XlsLst(xlsLsa, coCom, vaCom$)                'comissao
res = XlsLst(xlsLsa, coNdi, vaDes$)                'desconto
res = XlsLst(xlsLsa, coObs, vaObs$)                'observacoes
End If
end sub


Sub McoXlsDis_LinDisArtFim 'fim de discriminar artigos
call Xls_LinInc                                    'incrementar linha
end sub


'-----------------------------------------------------------------------------
'McoXlsRes - Comissoes - XLS - Resumido
'-----------------------------------------------------------------------------
Sub McoXlsRes_DocIni 'inicializar documento
'msgbox "","RES","INI"
call Xls_DocIni                                    'inicializar documento
call McoXls_Prep                                   'preparar
call McoXlsRes_Cab                                 'cabecalho
end sub


Sub McoXlsRes_DocFim 'terminar documento
linIni = linBav                                    'linha inicial
linFim = linCnt                                    'linha final

'mostrar
call Xls_DocFim                                    'terminar/mostrar documento
end sub


Sub McoXlsRes_Cab 'cabecalho
cntPag = cntPag + 1                                'contar pagina
if cntPag > 1 then                                 'listar ?
   'if cntPag > 2 then                              'terminar vendedor anterior ?
   '   call McoXls_VndTot                           'totais do vendedor
   'end if

   call McoXls_VndIde                              'identificar vendedor
end if
end sub


Sub McoXlsRes_Lin 'linha de valores
call McoXlsDis_Lin                                 'linha de valores
end sub


Sub McoXlsRes_Fim 'totais
'msgbox "","RES","FIM"
call McoXlsDis_Fim                                 'totais
end sub


Sub McoXlsRes_LinDisDocIni 'inicio de discriminar documentos
'print "Inicio de Documento"

'call Xls_LinInc                                    'incrementar linha
end sub


Sub McoXlsRes_LinDisDoc 'discriminar documentos
call McoXlsDis_LinDisDoc                           'discriminar documentos
end sub


Sub McoXlsRes_LinDisDocFim 'fim de discriminar documentos
call Xls_LinInc                                    'incrementar linha
end sub


'------------------------------------------------------------------------------
'- Funcoes comuns -------------------------------------------------------------
'------------------------------------------------------------------------------
Sub vPenIni 'inicializar valores pendentes
PenGerNum = 0                          'pendente geral - numero
PenGerTdo = 0                          'pendente geral - total de documentos
PenGerTco = 0                          'pendente geral - total de comissao

RecGerNum = 0                          'receber geral - numero
RecGerTdo = 0                          'receber geral - total de documentos
RecGerTco = 0                          'receber geral - total de comissao

call vPenLpz                           'limpar valores pendentes do vendedor
end sub


Sub vPenLpz 'limpar valores pendentes do vendedor
PenVenNum = 0                          'pendente do vendedor - numero
PenVenTdo = 0                          'pendente do vendedor - total de documentos
PenVenTco = 0                          'pendente do vendedor - total de comissao

RecVenNum = 0                          'receber do vendedor - numero
RecVenTdo = 0                          'receber do vendedor - total de documents
RecVenTco = 0                          'receber do vendedor - total de comissao
end sub


Sub vPenAcm 'acumular valores pendentes
pagSit$ = MemTxt$(57)                  'situacao de pagamento (T/P)
pagPen  = MemNum(57)                   'valor pendente
pagFco  = MemNum(54) * 100             'factor de pagamento/comissao

spgFco$ = FrmNum$( 3.2, pagFco)        'formatar factor de pagamento/comissao

if pagSit$ = "P" then                  'e valor pendente ?
   spgVpe$   = FrmNum$(12.2, pagPen)   'formatar valor pendete
   spgSit$   = pagSit$ + "=" + spgVpe$ 'situacao de pagamento
else
   spgSit$   = pagSit$                 'situacao de pagamento
end if

if usaInc = 1 then                     'acumular documentos incluidos ?
   call vAcmDocInc                     'acumular documentos - incluidos
end if
end sub


Sub vAcmDocRec 'acumular documentos - recibos
tpc$    = MemTxt$(21)                  'tipo de comissao
if tpc$ = "M" then                     'comissao manual ?
   usaInc = 0                          'nao usar documentos incluidos
   vdoTot  = MemNum(21)                'total do documento
   vdoCom  = MemNum(24)                'comissao do documento

   RecGerNum = RecGerNum + 1           'receber geral - numero
   RecGerTdo = RecGerTdo + vdoTot      'receber geral - valor dos documentos
   RecGerTco = RecGerTco + vdoCom      'receber geral - comissao

   RecVenNum = RecVenNum + 1           'receber do vendedor - numero
   RecVenTdo = RecVenTdo + vdoTot      'receber geral - valor dos documentos
   RecVenTco = RecVenTco + vdoCom      'receber do vendedor - comissao
else
   usaInc = 1                          'usar documentos incluidos
end if
end sub


Sub vAcmDocInc 'acumular documentos - incluidos
pagSit$ = MemTxt$(57)                  'situacao de pagamento (T/P)
pagPen  = MemNum(57)                   'valor pendente

tpc$    = MemTxt$(21)                  'tipo de comissao
if tpc$ = "M" then                     'comissao manual ?
   pagCom  = MemNum(56)                'comissao do documento
else
   pagCom  = MemNum(55)                'comissao total
end if

pagFco  = MemNum(54) * 100             'factor de pagamento/comissao

'MemNum(21)    - total do documento
'MemNum(22)    - valor pago
'MemNum(52)    - valor do documento
vdoUsa  = MemNum(52)                   'valor do documento

if pagSit$ = "P" then                  'e valor pendente ?
   PenGerNum = PenGerNum + 1           'pendente geral - numero
   'PenGerTdo = PenGerTdo + pagPen      'pendente geral - total
   PenGerTdo = PenGerTdo + vdoUsa      'pendente geral - valor dos documentos
   PenGerTco = PenGerTco + pagCom      'pendente geral - comissao

   PenVenNum = PenVenNum + 1           'pendente do vendedor - numero
   'PenVenTdo = PenVenTdo + pagPen      'pendente do vendedor - total
   PenVenTdo = PenVenTdo + vdoUsa      'pendente geral - valor dos documentos
   PenVenTco = PenVenTco + pagCom      'pendente do vendedor - comissao
else
   RecGerNum = RecGerNum + 1           'receber geral - numero
   'RecGerTdo = RecGerTdo + pagPen      'receber geral - total
   RecGerTdo = RecGerTdo + vdoUsa      'receber geral - valor dos documentos
   RecGerTco = RecGerTco + pagCom      'receber geral - comissao

   RecVenNum = RecVenNum + 1           'receber do vendedor - numero
   'RecVenTdo = RecVenTdo + pagPen      'receber do vendedor - total
   RecVenTdo = RecVenTdo + vdoUsa      'receber geral - valor dos documentos
   RecVenTco = RecVenTco + pagCom      'receber do vendedor - comissao
end if
end sub


Sub vPenAcmPob 'acumular valores pendentes para premio por objectivos
pagSit$ = VarCom$("IncSpg$")           'situacao de pagamento (T/P)
pagPen  = VarCom("IncVpe")             'valor pendente

pagPpe  = VarCom("IncPpe")             '% de pendente
spgPpe$ = FrmNum$( 3.2, pagPpe)        'formatar % de pendente

pagPpg  = VarCom("IncPpg")             '% de pago
spgPpg$ = FrmNum$( 3.2, pagPpg)        'formatar % de pago


if pagSit$ = "P" then                  'e valor pendente ?
   PenGerNum = PenGerNum + 1           'pendente geral - numero
   PenGerTdo = PenGerTdo + pagPen      'pendente geral - total

   PenVenNum = PenVenNum + 1           'pendente do vendedor - numero
   PenVenTdo = PenVenTdo + pagPen      'pendente do vendedor - total

   spgVpe$   = FrmNum$(12.2, pagPen)   'formatar valor pendete
   spgSit$   = pagSit$ + "=" + spgVpe$ 'situacao de pagamento
else
   spgSit$   = pagSit$                 'situacao de pagamento
end if
end sub


Sub vIdeCom 'valor de identificacao de comissao
tco$ = MemTxt$(71)                     'tipo de comissao
tbc$ = MemTxt$(72)                     'tabela de comissao

vco  = MemNum(71)                      'valor da comissao

if tco$ = "V" then                     'comissao em valor ?
   xVco$ = FrmNum$(6.2,vco)            'formatar
else
   xVco$ = FrmNum$(2.2,vco)            'formatar
end if

txIdeCom$ = "(" + xVco$ + tco$ + ")"   'informacao de comissao 
end sub


'------------------------------------------------------------------------------
'- Contagem de documentos -----------------------------------------------------
'------------------------------------------------------------------------------
Sub Com_CntDoc_Ini 'inicializar contador de documentos
cntDocUsa = 0                                      'contador de documentos - usar
cntDocAnt = cntDocUsa                              'contador de documentos - anterior/actualizar
end sub


Sub Com_CntDoc_LstXls 'listar contador de documentos - EXCEL
'res = XlsLst(xlsLsa, coCnt, MemNum(20))            'contagem de documentos
cntDocUsa = MemNum(20)                             'contador de documentos - usar

if cntDocUsa <> cntDocAnt then                     'novo documento ?
   res = XlsLst(xlsLsa, coCnt, cntDocUsa)          'listar contagem de documentos
end if

cntDocAnt = cntDocUsa                              'contador de documentos - anterior/actualizar
end sub

##

