'Nome       : DiaSQL.std
'Tipo       : LST
'Data       : 2016/07/07
'Versao     : 1.2
'Descricao  : STC - Listagem de Diario controlada por SQL

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.2   ____/__/__ --------------------------------------------------
'Permitir armazens com 4 digitos
'Nao listar movimentos anulados

'- Versao : 1.1b  2008/02/08 -------------------------------------------------
'Permitir limitar conta

'- Versao : 1.1a  2003/03/?? -------------------------------------------------
'Permitir usar limites de codigos de movimento

'- Versao : 1.1   2003/03/05 -------------------------------------------------
'Criar variavel para definir tabela de movimentos

'- Versao : 1.0   1999/12/18 -------------------------------------------------
'Versao base


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


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


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

Artigos                [Cmd]=StcDoc=+
   +SELECT * FROM {Opc_TbNome} +
   +WHERE RecVal <> 255 +
   +AND Art$>= '{Opc_Art.Ini}' AND Art$ <='{Opc_Art.Fim}' +
   +AND Dtl >=  {Opc_Dtl.Ini}  AND Dtl <=  {Opc_Dtl.Fim} +
   +AND Ct$ >= '{Opc_Ct.Ini}'  AND Ct$ <= '{Opc_CT.Fim}' +
   +AND Cmv IN({Opc_Cmv}) +
   +ORDER By Tdoc$,Ndoc$,art$ 

##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SQL
Nome                       [DocNom]=DIA,Diário por Documento
Vias                       [DocVia]=Original

'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]=Doc1_Cab
Listar linhas               [FxLIN]=Doc1_Lin; Sbt1,2; Sbt2,2; Sbt3,2
Listar fim                  [FxFIM]=Doc1_Fim

'controlo de listagem SQL
Gerador de dados a listar  [SQLDat]=StcDoc
Subtotalizadores           [SQLSbt]=Tdoc$,Ndoc$

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


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

'variaveis a listar
Art      = StcCodFrm$(SqlCmp$("Art$"))                
Dtl      = FrmVal$(SqlCmp("Dtl"),42,0)
Ndoc     = FrmNdo$("06",SqlCmp$("Tdoc$"),SqlCmp$("Ndoc$"))
CmvC     = FrmNum$(-3,SqlCmp("Cmv"))
CmvD     = StcCmvDes$(SqlCmp("Cmv"))

'Ae       = FrmVal$(Stc_Mov_ArzEnt,20,3)
'As       = FrmVal$(Stc_Mov_ArzSai,20,3)

Ae       = FrmVal$(Stc_Mov_ArzEnt,20,4)
As       = FrmVal$(Stc_Mov_ArzSai,20,4)

Ct       = SqlCmp$("Ct$")
Qu       = FrmNum$(8.3,SqlCmp("Qu"))
Vu       = FrmNum$(14.2,SqlCmp("Vt")/SqlCmp("Qu"))
Vt       = FrmNum$(14.2,SqlCmp("Vt"))

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


'totais/subtotais
TotCnt   = FrmNum$( 6.0,TotCnt("Art",0))

TQu      = FrmNum$(15.3,Total(Qu))
TQu_1    = FrmNum$(15.3,Total(Qu,1))
TQu_2    = FrmNum$(15.3,Total(Qu,2))

TVu      = FrmNum$(14.2,Total(Vt)/Total(Qu))
TVu_1    = FrmNum$(14.2,Total(Vt,1)/Total(Qu,1))
TVu_2    = FrmNum$(14.2,Total(Vt,2)/Total(Qu,2))

TVt      = FrmNum$(14.2,Total(Vt))
TVt_1    = FrmNum$(14.2,Total(Vt,1))
TVt_2    = FrmNum$(14.2,Total(Vt,2))
##


'==============================================================================
#PGM - Programa/Funcoes
'==============================================================================
'---------------------------------------------------------->'Comentario (61)
'------------------------------------------------->'Comentario (52)
'------------------------------------->'Comentario (40)
SUB FxIni 'inicializacao base
cnt=0                                           'limpar contador
end sub


SUB Lst_AJT
end sub


'- Documento 1 ---------------------------------------------------------------
SUB Doc1_CabIni 'inicializar documento
end sub


SUB Doc1_Cab 'cabecalho
FxDiv LstIde,16CPI,0
print TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI","Diario de Artigos")
?Data : @DataExt                                                                                                      Folha No: @Pag#
print string$(132,"=")
?      Artigo       Dt.Lnc.   No Doc.      Cod    Descricao     AS   AE    Conta      Quantidade       V. Unitario           V. Total
print string$(132,"=")
end sub


SUB Doc1_Lin 'linha
?@Art              @Dtl      @Ndoc       @CmvC @CmvD          @As   @Ae   @Ct         @Qu          @Vu              @Vt             #
' 123456789012345 12345678901234567890 12345678901 12345678901 12345678901 
end sub


SUB Doc1_LinTit1 'titulo 1 - Tipo de documento
tmp=CntLin("MIN",5)                         'minimo de linhas
tmp=CntLin("INC",1)                         'contar linha

tdo$=SbtInf$("ACT",1)                       'tipo de documento
tmp =SqlOpcAct("Tdo",tdo$)                  'actualizar valor

ide$=TdoNome$(1,tdo$)                       'descricao do documento


print tab(5) "Tipo : " tdo$ "  " ide$       'identificar grupo
end sub


SUB Doc1_LinTit2 'titulo 2 - Numero de documento
tmp=CntLin("MIN",5)                         'minimo de linhas
tmp=CntLin("INC",1)                         'contar linha

ndo$=SbtInf$("ACT",2)                       'numero de documento
tmp =SqlOpcAct("Ndo",ndo$)                  'actualizar valor do grupo
ndo$=FrmNdo$("46","",ndo$)                  'formatar numero

print tab(5) "Numero : " ndo$               'identificar grupo
end sub


SUB Doc1_LinSbt1 'subtotal 1
tdo$=SbtInf$("ANT",1)                         'grupo

print tab(5) "Subtotal: " tdo$;
print tab(30) FrmNum$( 6.0,TotCnt("ART",1));
print tab(86) FrmNum$( 8.3,Total("Qu",1));
print tab(99) FrmNum$(14.2,Total("Vt",1)/Total("Qu",1));
print tab(116) FrmNum$(14.2,Total("Vt",1));
print                                         'terminar linha
print                                         'linha de separacao
tmp=CntLin("INC",2)                           'contar linhas
x=TotLpz(1)                                   'limpar totais
end sub


SUB Doc1_LinSbt2 'subtotal 2
ndo$=SbtInf$("ANT",2)                            'grupo
rdo =TotCnt("ART",2)                             'registos por documento 
ndo$=FrmNdo$("46","",ndo$)                       'formatar numero

if rdo>1 then
   'print tab(5) "Total Doc.: " ndo$;
   print tab(5) "Total Documento :";
   print tab(30) FrmNum$( 6.0,rdo);
   print tab(86) FrmNum$( 8.3,Total("Qu",2));
   print tab(99) FrmNum$(14.2,Total("Vt",2)/Total("Qu",2));
   print tab(116) FrmNum$(14.2,Total("Vt",2));
   print                                         'terminar linha
   tmp=CntLin("INC",1)                           'contar linha
end if
print                                            'linha de separacao
tmp=CntLin("INC",1)                              'contar linha
x=TotLpz(2)                                      'limpar totais
end sub


SUB Doc1_Fim 'totais
print string$(132,"=")
?                    Totais : @TotCnt movimentos                               @TQu                @TVu             @TVt            #
print string$(132,"=")
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub


SUB Doc1_FimAjt 'fim de pagina intermedia
print string$(132,"=")
?                 Subtotais : @TotCnt movimentos                               @TQu                @TVu             @TVt            #
print string$(132,"=")
FxDiv LstPer,SP
'Print PrtCmd$("[SP]");
end sub
##

