'Nome       : M10-horas
'Tipo       : LST
'Data       : 2009/01/14
'Versao     : 1.1
'Descricao  : Modelo 10 - Relação de horas

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.1a 2010/01/14 ---------------------------------------------------
'Apresentar Categoria rendimento do trabalhador

'- Versao : 1.1  2009/04/14 ---------------------------------------------------
'Aumentar mascara de impressao dos totais 

'- Versao : 1.0  2008/06/20 ---------------------------------------------------
'Versao base


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


'==============================================================================
#ESP - Campos especificos
'==============================================================================
'Zoom para preview             [PrvZoom]=1.5
'Opcoes para impressora WIN   [PrWinOpc]=[ORI=P]
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=ERD2
Nome                       [DocNom]=ERD,Horas trabalhadas 

'formato
Saida/Impressora           [DocSai]=1
Linhas por pagina          [DocLpg]=50
Colunas por linha          [DocCol]=132
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0
Codigos de movimento a     [DocEsp]=LimCmv=110:110
Listar quantidade          [DocEsp]=LstQu=1
Listar valor               [DocEsp]=LstVl=0

'funcoes de listagem
Listar cabecalho            [FxCAB]=Lst_Cab
Listar linhas               [FxLIN]=Lst_; Trb ; Lin ; St ; Sec
Listar fim                  [FxFIM]=Lst_Fim
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=ERD2
Nome                       [DocNom]=ERD_G,horas trabalhadas

'formato
Saida/Impressora           [DocPrt]=PAG_W
Linhas por pagina          [DocLpg]=53
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0
Codigos de movimento a     [DocEsp]=LimCmv=110:110
Listar quantidade          [DocEsp]=LstQu=1
Listar valor               [DocEsp]=LstVl=0

'funcoes de listagem
Listar cabecalho            [FxCAB]=Lst_CabG
Listar linhas               [FxLIN]=LstG_; Trb ; Lin,0 ; St,0 ; Sec,0
Listar fim                  [FxFIM]=LstG_Fim
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=IRS
Nome                       [DocNom]=CNF_M10,Conferencia de valores 

'formato
Saida/Impressora           [DocSai]=1
Linhas por pagina          [DocLpg]=50
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=48L
Ajustar pagina             [DocApg]=-1
Listar continuo            [DocEsp]=LstCnt=1
Tipo de rendimento         [DocEsp]=TipRnd=



'funcoes de listagem
Listar cabecalho            [FxCAB]=Branco_Cab
Listar linhas               [FxLIN]=Branco_Lin 
Listar fim                  [FxFIM]=Branco_Fim
##

'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=IRS
Nome                       [DocNom]=CMF_M10_G,Conferencia de valores

'formato
Saida/Impressora           [DocPrt]=PAG_W
Linhas por pagina          [DocLpg]=57
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=48L
Ajustar pagina             [DocApg]=0
Listar continuo            [DocEsp]=LstCnt=1
Tipo de rendimento         [DocEsp]=TipRnd=



'funcoes de listagem
Listar cabecalho            [FxCAB]=Branco_CabG
Listar linhas               [FxLIN]=Branco_LinG 
Listar fim                  [FxFIM]=Branco_FimG
##




'==============================================================================
#VAR - Variaveis
'==============================================================================
DatDia     = FrmDt$("EXT",Sig_DtHoje)
Pag        = Doc_CntPag
Tit        = MemTxt$(1)
PerSon     = LstIde$("PERSON")
TrbLin     = Gpe_Mst_Trb$+"      "+Gpe_Mst_Nome$

Ano         = FrmDt$("A4",Sig_DtHoje)
EmpContrib  = left$(TxCarEli$(0,Emp_Inf_Contrib$," "),3)+" "+mid$(TxCarEli$(0,Emp_Inf_Contrib$," "),4,3)+" "+mid$(TxCarEli$(0,Emp_Inf_Contrib$," "),7,3)


Valor1     = Valor1$
Valor2     = Valor2$
Valor3     = Valor3$
Valor4     = Valor4$

Tacm1      = Tacm1$
Tacm2    = Tacm2$
Tacm3    = Tacm3$
Tacm4    = Tacm4$


'linha
Contrib     = left$(TxCarEli$(0,Gpe_Mst_Ctrb$," "),3)+" "+mid$(TxCarEli$(0,Gpe_Mst_Ctrb$," "),4,3)+" "+mid$(TxCarEli$(0,Gpe_Mst_Ctrb$," "),7,3)
Nome        = Gpe_Mst_Nome$
T           = Gpe_Mst_TipRnd$
A           = FrmDt$("A4",Sig_DtHoje)
Rend        = GpeFrmMoe$("",10,GpeAcmLst("V","IRS","VI"))
Ret         = GpeFrmMoe$("",10,GpeAcmLst("V","IRS","RT"))
tsu         = GpeFrmMoe$("",10,TsuValor)
snd         = GpeFrmMoe$("",10,sndValor)


'fim
TotRend     = GpeFrmMoe$("",10,Total(Rend))
TotRet      = GpeFrmMoe$("",10,Total(Ret))
Tottsu      = GpeFrmMoe$("",10,Total(tsu))
TotSnd      = GpeFrmMoe$("",10,Total(snd))



TotRendG    = GpeFrmMoe$("",14,Total(Rend))
TotRetG     = GpeFrmMoe$("",14,Total(Ret))
TottsuG     = GpeFrmMoe$("",14,Total(tsu))
TotSndG     = GpeFrmMoe$("",14,Total(snd))



##


'==============================================================================
#INC - Variaveis comuns
'==============================================================================
Variaveis comuns                 =[SIG_Dir.Div],LsComVar.Std
##


'==============================================================================
#PGM - Formato do documento
'==============================================================================
sub Calculo_valores
tsuValor=GpeAcmLerPer("V","",710,0,0,0,"TRB")
sndValor=GpeAcmLerPer("V","",790,0,0,0,"TRB")
end sub


Sub Lst_Cab
FxDiv LstIde,16CPI,1
Print PrtCmd$("[10CPILN]");
?                          Mapa Horas de trabalho                       #
?Data: @DatDia                                                       Pagina   @Pag
?=================================================================================
?  codigo                   Nome                           HORAS EFECTUADAS 
?                                                     trabalho    faltas    total
?=================================================================================
end sub


Sub Lst_Trb               'Lista Empregado
call Horas_Calc
if Horas>0  then          'tem valores 
 Call MostraValores
else                      'nao listou, anular linha no contador linhas
 cnt=doc_CntLin                       
 cnt=cnt-1
 Fx=CntLin("FRC",cnt)     'acertar contador
end if
End Sub


Sub MostraValores
? @TrbLin                                           @Valor1   @Valor2    @valor3 #
end sub


Sub Lst_FimAjt
?=================================================================================
?  ( Listagem a continuar )      #
?=================================================================================
Print PrtCmd$("[SP]");
end sub


Sub Lst_Fim
?=================================================================================
?                     Totais                       @tacm1    @tacm2     @tacm3   #
?=================================================================================
x=TotLpz(0)                       'azerar totalizador 
FxDiv LstPer,SP
call TotaisAzr
end sub

'-(Modo Grafico)-----------------------------------------------------------------
'-(Modo Texto)----------------------------------------------------------------
Sub Branco_Cab
FxDiv LstIde,16CPI,1
Print PrtCmd$("[16CPILN]")
?                                            Valores para modelo 10             #
?Data: @DatDia                                                                                Pagina   @Pag #
?---------------------------------------------------------------------------------------------------------------
?     NIF     |                 Nome                      |Cat|Rendimentos |Retido IRS  |TSU        |Sindicato  
?---------------------------------------------------------------------------------------------------------------
End Sub


Sub Branco_Lin
call calculo_valores
? @Contrib    | @Nome                                     | @T|@Rend       |@Ret        |@tsu       |@snd     #
End Sub

Sub Branco_FimAjt
?---------------------------------------------------------------------------------------------------------------
?            Continua        #
Print PrtCmd$("[SP]");
End Sub



Sub Branco_Fim
?---------------------------------------------------------------------------------------------------------------
?            Total Geral                                      |@TotRend   | @TotRet   | @TotTsu   |@TotSnd    #
Print PrtCmd$("[10CPILN]");
Print PrtCmd$("[SP]");
x=TotLpz(0)
End Sub


'-(Modo Grafico)----------------------------------------------------------------
SUB FxIni 'funcao de inicializacao
Call SigLstIni
margem=5                                        'forcar margem
End sub

Sub Branco_CabG
SigCabNorOpcTit=2 		            'alterar origem do titulo
Titulo$="Valores para modelo 10 "
Call SigLstCab

esp=22                                      'espaco para valor
Lin1=1



'posicao das colunas
Col1=0                            'numero
Col2=22                      'nome
Col3=104                                    'valor1
Col4=Col3+esp                               'valor 2
Col5=col4+esp                               'valor 3
Col6=col5+esp                               'valor 4
Col7=col6+esp                               'valor 4
ColMax=col7                                 'coluna maxima

call SigLstCab

PrWIN COR_T,  CorTitLst                     'cor de titulo
PrWIN FON  ,   10 ,  1                      'activar fonte
PrWIN AJT_B,  Margem, 26                    'posicao base

'listar titulos
PrWIN TX_CTR,  Col1,Lin1,Col2,Lin1,"NIF"
PrWIN TX_CTR,  Col2,Lin1,Col3,Lin1,"Nome"
PrWIN TX_N,    Col3-10,Lin1,"Cat"
PrWIN TX_CTR,  Col3,Lin1,Col4,Lin1,"Rendimentos"
PrWIN TX_CTR,  Col4,Lin1,Col5,Lin1,"Retido IRS"
PrWIN TX_CTR,  Col5,Lin1,Col6,Lin1,"TSU"
PrWIN TX_CTR,  Col6,Lin1,Col7,Lin1,"Sindicato"

PrWIN COR_T,CorTraco                            'cor de linhas
PrWIN GR_LI, 0, 0, colmax, 0               	'linha
PrWIN GR_LI, 0, 5, colmax, 5               	'linha

PrWIN FON  ,   10,   1                           'activar fonte
PrWIN COR_T,CorLin                              'cor de linhas
InicioEscrita=28
End Sub


Sub Branco_LinG
call calculo_valores

PrWIN AJT_B,  Margem, InicioEscrita+Doc_CntLin*4          	'posicao base
PrWIN TX_NP,   Col1,0,"N",@Contrib
PrWIN TX_N,    Col2,0,@Nome
PrWIN TX_NP,   Col3-10,0,"T",@T
PrWIN TX_NP,   Col3,0,"N",@Rend
PrWIN TX_NP,   Col4,0,"N",@Ret
PrWIN TX_NP,   Col5,0,"N",@tsu
PrWIN TX_NP,   Col6,0,"N",@Snd
End Sub


Sub Branco_FimGAjt
PrWIN COR_T,  CorTotGer                            'cor de titulo
PrWIN AJT_B,  Margem, LinPer-8          	'posicao base
PrWIN GR_LI, 0, 0, ColMax, 0               	'linha
PrWIN TX_N,    Col2,0,"Continua ..."
Call SigLstRod
PrWin FP
End Sub


Sub Branco_FimG
PrWIN COR_T,  CorTotGer                            'cor de titulo
PrWIN AJT_B,  Margem, LinPer-8          	'posicao base
PrWIN GR_LI, 0, 0, ColMax, 0               	'linha
PrWIN TX_NP,    Col3,0,"N",@TotRend
PrWIN TX_NP,    Col4,0,"N",@TotRet
PrWIN TX_NP,    Col5,0,"N",@TotTsu
PrWIN TX_NP,    Col6,0,"N",@TotSnd
call SigLstRod
PrWin FP
X=totLpz(0)
End Sub


'---------------------------------------------

Sub Lst_CabG
SigCabNorOpcTit=2 		            'alterar origem do titulo
Titulo$="Mapa horas de Trabalho"
Call SigLstCab

esp=18                                      'espaco para valor
Lin1=0
Lin2=5


'posicao das colunas
Col1=10                         	    'numero
Col2=30					    'nome
Col3=130                                    'valor1
Col4=Col3+esp                               'valor 2
Col5=col4+esp                               'valor 3
Col6=col5+esp                               'coluna maxima
colmax=col6

call SigLstCab

PrWIN COR_T,  CorTitLst                     'cor de titulo
PrWIN FON  ,   11 ,  1                      'activar fonte
PrWIN AJT_B,  Margem, 30                    'posicao base

'listar titulos
ajt=5
PrWIN TX_CTR,  Col1,Lin2,Col2,Lin2,"Código"
PrWIN TX_CTR,  Col2,Lin2,Col3,Lin2,"Nome
PrWIN TX_CTR,  Col3+20,Lin1,Col5,Lin1,"Horas efectuadas"
PrWIN TX_CTR,  Col3+ajt,Lin2,Col4,Lin2,"trabalho"
PrWIN TX_CTR,  Col4+ajt,Lin2,Col5,Lin2,"faltas"
PrWIN TX_CTR,  Col5+ajt,Lin2,Col6,Lin2,"total"

PrWIN COR_T,CorTraco                            'cor de linhas
PrWIN GR_LI, 0, 0, colmax,0               	'linha
PrWIN GR_LI, 0, 10, colmax,10               	'linha

'PrWIN FON  ,   10,   1                         'activar fonte
PrWIN COR_T,CorLin                              'cor de linhas

end Sub


Sub LstG_Trb             'Lista Trabalhadores
call Horas_Calc
if Horas>0  then        			 'tem valores 
   PrWIN AJT_B,  Margem, 35+Doc_CntLin*4        'posicao base
   PrWin Tx_N ,Col1,0,    Gpe_Mst_Trb$
   PrWin Tx_N ,Col2,0,    Gpe_Mst_Nome$
   PrWin Tx_NP,Col3,0,"N",@Valor1
   PrWin Tx_NP,Col4,0,"N",@Valor2
   PrWin Tx_NP,Col5,0,"N",@Valor3
else                      'nao listou, anular linha no contador linhas
  cnt=doc_CntLin                       
  cnt=cnt-1
  Fx=CntLin("FRC",cnt)        'acertar contador
end if
end Sub


Sub LstG_FimAjt
PrWIN COR_T,CorTraco                            'cor de linhas
PrWIN AJT_B,Margem,263                 		'posicao base
PrWIN GR_LI,     0,  0, 188, 0            	'linha
PrWIN AJT_B,Margem,265                 		'posicao base
PrWIN COR_T,     CorTotGer                      'cor para totais
PrWIN FON,      10,  1                          'activar fonte
PrWIN TX_N, Col3-90,  0,"( Listagem a continuar )     Total de Página ..."

PrWin FP
End sub


Sub LstG_Fim
PrWIN COR_T,CorTraco                            'cor de linhas
PrWIN AJT_B,Margem,263                 		'posicao base
PrWIN GR_LI,     0,  0, 188, 0            	'linha
PrWIN AJT_B,Margem,265                 		'posicao base
PrWIN COR_T,     CorTotGer                      'cor para totais
PrWIN FON,      10,  1                          'activar fonte
PrWin Tx_NP,Col3,0,"N",@tacm1
PrWin Tx_NP,Col4,0,"N",@tacm2
PrWin Tx_NP,Col5,0,"N",@tacm3

x=TotLpz(0)                       'azerar totalizador 
call SigLstRod
PrWin FP
call TotaisAzr
End sub



'-------------------------------------------------
Sub Horas_Calc
'-------------------------------------------------

trb$=Gpe_Mst_Trb$

vbase= GpeAcmLerPer("H",trb$,"110")
faltas= GpeAcmLerPer("H",trb$,"410,415,420,425")
ferias= GpeAcmLerPer("H",trb$,"175")

if ferias=30 then                           'mes completo, converte para horas
  FERIAS=GPEHRCNV("SM",Gpe_mst_horas)
end if


Horas=vbase-faltas-ferias

if horas>0 then
  vv=vbase-ferias
  Valor1$ = FrmVal$(vv,21,5.2)
  acm1    = acm1+vv
  tacm1$  = FrmVal$(acm1,21,6.2)

  Valor2$ = FrmVal$(faltas,21,5.2)
  acm2    = acm2+faltas
  tacm2$  = FrmVal$(acm2,21,6.2)

  Valor3$ = FrmVal$(horas,21,5.2)
  acm3    = acm3+horas
  tacm3$  = FrmVal$(acm3,21,6.2)
end if

end Sub

sub TotaisAzr
acm1=0
acm2=0
acm3=0
acm4=0
acm5=0
end sub


##


'==============================================================================
#INC - Funcoes comuns
'==============================================================================
Funcoes comuns                 =[SIG_Dir.Div],LsComPgm.Std
##

