'Nome       : GpeDri.std
'Tipo       : SPI
'Data       : 2016/02/26
'Versao     : 2.8a
'Descricao  : Declaracao de Remuneracoes para Suporte informatico

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.0   2001/09/14 --------------------------------------------------
'Versao base

'- Versao : 1.1   2002/01/15 --------------------------------------------------
'Impressao no impresso oficial (apenas impressao grafica)
'Impressao de carta acompanhante (apenas impressao grafica)

'- Versao : 1.2   2002/02/06 --------------------------------------------------
'Ajustes nas fontes

'- Versao : 1.3   2002/03/06 --------------------------------------------------
'Ajustes tamanho da folha

'- Versao : 1.4   2002/07/19 --------------------------------------------------
'Permitir listar valores a zero (codigos tipo P)

'- Versao : 1.5   2002/09/18 --------------------------------------------------
'Apenas listar registos R1 e R3 se listar registos R2

'- Versao : 1.6   2003/01/13 --------------------------------------------------
'Permitir listar os movimentos de acerto

'- Versao : 1.7   2003/01/15 --------------------------------------------------
'Ao listar movimentos de acerto, validar se lista registo R1

'- Versao : 1.8   2003/06/02 --------------------------------------------------
'Caso valor de remuneracoes fosse 0 era colocado sinal negativo

'- Versao : 1.9   2003/07/15 --------------------------------------------------
'Listagem conferencia suporte informatico em formato grafico
'apenas permitir impressao em formato EURO

'- Versao : 2.0   2003/08/07 --------------------------------------------------
'Impressao no novo formato RC4008 (versao Agosto 2003)

'- Versao : 2.0a  2003/09/11 --------------------------------------------------
'Ajuste nos totais das folha formato oficial

'- Versao : 2.1   2004/05/26 --------------------------------------------------
'Na listagem de conferencia apresentar o contribuinte da empresa (registo R1)
'Impressao mapa oficial, apresentar codigo estabelecimento

'- Versao : 2.2   2004/07/13 --------------------------------------------------
'Ao acumular codigos tipo 2, assumir quantidade em dias

'- Versao : 2.3   2005/09/09 --------------------------------------------------
'Estava a considerar valores negativos, originando linhas a zero

'- Versao : 2.4   2006/07/14 --------------------------------------------------
'Prever valores residuais nas linhas tipo P, estava a originar linhas a zero

'- Versao : 2.5   2010/09/20 --------------------------------------------------
'Na carta acompanhante, formatar o nib e apresentar tipo de representacao iss

'- Versao : 2.6   2011/03/07 --------------------------------------------------
'Novos codigos 

'- Versao : 2.7   2011/09/12 --------------------------------------------------
'Apresentar tempo do acumulador tipo 2 em dias

'- Versao : 2.7a  2011/10/06 --------------------------------------------------
'Na carta resumo colocar NISS inves de contribuinte 

'- Versao : 2.8   2015/12/10 --------------------------------------------------
'Ajustar tempo de trabalho para fracoes de meio-dia

'- Versao : 2.8a  2015/03/07 --------------------------------------------------
'Apresentar IBAN
'Diminuir fonte para apresentar nome completo de trabalhador


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


'-----------------------------------------------------------------------------
#ESP - Campos especificos
'-----------------------------------------------------------------------------
Zoom para preview             [PrvZoom]=1.05
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=DRI
Nome                       [DocNom]=DRI,Segurança Social Sup. Informatico

'formato
Saida/Impressora           [DocSai]=
Linhas por pagina          [DocLpg]=
Colunas por linha          [DocCol]=
Formato do papel           [DocPap]=
Ajustar pagina             [DocApg]=0
Processamento a listar     [DocEsp]=PROC=0

'funcoes de listagem
Listar cabecalho            [FxCAB]=DriIdc
Listar linhas               [FxLIN]=DriTrb
Listar fim                  [FxFIM]=DriTot
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=DRI
Nome                       [DocNom]=CNF,Conferência de Suporte Informatico

'formato
Saida/Impressora           [DocSai]=
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]=CnfCab
Listar linhas               [FxLIN]=CnfLin; R0; R1; R2; R3,2
Listar fim                  [FxFIM]=CnfFim
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=DRI
Nome                       [DocNom]=CNF_G,Conferência de Suporte Informatico (grafico)

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

'funcoes de listagem
Listar cabecalho            [FxCAB]=CnfCabG
Listar linhas               [FxLIN]=CnfLinG; R0; R1; R2; R3
Listar fim                  [FxFIM]=CnfFimG
##

'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=DRI
Nome                       [DocNom]=OFI_G,Formato Oficial grafico

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

'funcoes de listagem
Listar cabecalho            [FxCAB]=OfiCab
Listar linhas               [FxLIN]=OfiLin
Listar fim                  [FxFIM]=OfiFim

##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=DRI
Nome                       [DocNom]=CARTA_G,Carta acompanhante grafica

'formato
Saida/Impressora           [DocPrt]=PAG_W
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]=CartaG_Cab
Listar linhas               [FxLIN]=CartaG_Lin
Listar fim                  [FxFIM]=Cartag_Fim
##

'==============================================================================
#VAR - Variaveis
'==============================================================================
'------------------------------------------------------------------------------
'Lista de variaveis especificas
'------------------------------------------------------------------------------
'valores texto
'MemTxt$(01)   - Titulo da listagem
'MemNum(01)    - Permitir valores a zero

'MemTxt$(11)   - ?

'MemTxt$(31)   - Campo 1
'...
'MemTxt$(39)   - Campo 9
'MemTxt$(40)   - Campo 10
'...
'MemTxt$(49)   - Campo 19


'Carta acompanhante
'MemTxt$(90)   - Nome de ficheiro
'MemTxt$(91)   - Texto para carta - linha 1
'MemTxt$(92)   - Texto para carta - linha 2
'MemTxt$(93)   - Texto para carta - linha 3
'MemTxt$(94)   - Texto para carta - linha 4
'MemTxt$(95)   - Texto para carta - linha 5

'MemNum(99)    - tipo de representacao 
'MemTxt$(99)   - campo informativo auxiliar


'valores numericos
'MemNum(1)     - Valor para ajuste vertical
'MemNum(2)     - Valor para ajuste horizontal
'MemNum(3)     - Tipo de fim de pagina
'MemNum(30)    - numero de campos


'------------------------------------------------------------------------------
'Formatacao de valores
'------------------------------------------------------------------------------
Pag       = Doc_CntPag
Cnt       = FrmVal$(CntAux(1),21,4)
Tit080    = TxTit$("TT=10CPI, LD, PT=40C, TL=10CPI",Memtxt$(1))
Tit132    = TxTit$("TT=16CPI, LD, PT=66C",Memtxt$(1))

DataExt   = FrmDt$("EXT",Sig_DtHoje)

DriBen$  = ""                          'dados do beneficiario
DriRem$  = ""                          'dados das remuneracoes (linha)
DriDia$  = ""                          'dados dos dias
DriTrm$  = ""                          'dados das remuneracoes (totais)
DriReg$  = ""                          'total dos registos R2
##

#INC
Variaveis  comuns                 =[SIG_Dir.Div],LsComVar.std
##



'==============================================================================
#PGM - Formato do documento (Cabecalho, Linhas e Fim)
'==============================================================================
'---------------------------------------------------------->'Comentario (61)
'------------------------------------------------->'Comentario (52)
'------------------------------------->'Comentario (40)


'------------------------------------------------------------------------------
' Funcoes para inicializacao
'------------------------------------------------------------------------------
'MsgBox "","Texto",mdu$

SUB SpiIni 'funcao de inicializacao
'MsgBox "","Ini",mdu$
cnt=0                                              'limpar contador
cntReg=0                                           'limpar contador
grpIni=0                                           'inicio de grupo

fic$=MemTxt$(11)                                   'ficheiro a usar
ValoresZero=MemNum(2)                              'permitir valores a zero
x=FicPrp(1, "O:118", fic$)                         'preparar ficheiro
x=FicAbr(1)                                        'abrir ficheiro
call DriIdcIni                                     'preparar 
call Dri_R0
end sub


SUB SpiFim 'funcao de finalizacao
call DriIdcFim                                     'funcoes finais
'MsgBox "","Fim",mdu$
cnt=0                                              'limpar contador
x=FicFec(1)                                        'fechar ficheiro
end sub


Sub DriPrpEsc 'preparar listagem para escudos
kR2vrem=1                                          'factor para ValRem (R2)
kR3tcon=10                                         'factor para TotCon (R3)
kR3cnfTcon=10                                      'factor para TotCon (R3) - conferencia
end sub


Sub DriPrpEur 'preparar listagem para Euro
kR2vrem=100                                        'factor para ValRem (R2)
kR3tcon=1                                        'factor para TotCon (R3)
kR3cnfTcon=100                                     'factor para TotCon (R3) - conferencia
end sub


'------------------------------------------------------------------------------
' Listagem
'------------------------------------------------------------------------------
SUB DriIdcIni 'inicializar listagem
CfxTotAcm=0
Call DriPrpEur                                  'preparar Euro
DriTpv$="EUR"                                   'tipo de valores 
end sub


SUB DriIdcFim 'terminar listagem
'nada a executar
end sub


SUB DriIdc 'identificacao de contribuinte
call Dri_R1                            'registo de identificacao
DriTot=0                               'azerar totais
DriTotR=0                              'azerar totais
CntReg=0                               'azerar contador de registos
end sub


SUB DriTrb 'trabalhador
call DriTrbAcmA                        'acumulador A
call DriTrbAcmB                        'acumulador B
call DriTrbAcmC                        'acumulador C (comissoes)
call DriTrbAcmD
call DriTrbAcmF                        'acumulador F (ferias)
call DriTrbAcmH
call DriTrbAcmM
call DriTrbAcmN                        'acumulador N (natal)
call DriTrbAcmO
call DriTrbAcmP                        'acumulador P (remuneracoes permanentes)
call DriTrbAcmR
call DriTrbAcmS
call DriTrbAcmT
call DriTrbAcmX                        'acumulador X (outros subsidios)
'call DriTrbAcm0                        'acumulador 0 (forças armadas)
'call DriTrbAcm1                        'acumulador 1 (remuneracoes variaveis)
call DriTrbAcm2                        'acumulador 2 (referente a ferias pagas)
call DriTrbAcm6                        'acumulador 6 (diferencas de vencimento)
call DriTrbAcmI               
'call DriTrbAcm8                        'acumulador 8 (exercicio temporario ...)
'call DriTrbAcm9                        'acumulador 9 (promocoes)
call DriTrbAct                         'acertos
end sub


SUB DriTot 'totais
call Dri_R3                            'registo de totais
end Sub


SUB DriTrbAcmA 'trabalhador - acumulador A
tpa$="A"                               'tipo de acumulador
dias =0                                'dias
vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
call Dri_R2                           'registar
End sub

SUB DriTrbAcmB 'trabalhador - acumulador B
tpa$="B"                               'tipo de acumulador
dias =0                                'dias
vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
call Dri_R2                         'registar
End sub


SUB DriTrbAcmC 'trabalhador - acumulador C (comissoes)
tpa$="C"                               'tipo de acumulador
dias =0                                'dias
vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
call Dri_R2                         'registar
End sub

SUB DriTrbAcmD 'trabalhador - acumulador D
tpa$="D"                               'tipo de acumulador
dias =0                                'dias
vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
call Dri_R2                         'registar
End sub


SUB DriTrbAcmF 'trabalhador - acumulador F (ferias)
tpa$="F"                               'tipo de acumulador
dias =0                                'dias
vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
call Dri_R2                         'registar
End sub

SUB DriTrbAcmH 'trabalhador - acumulador H
tpa$="H"                               'tipo de acumulador
dias =0                                'dias
vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
call Dri_R2                         'registar
End sub

SUB DriTrbAcmM 'trabalhador - acumulador M
tpa$="M"                               'tipo de acumulador
dias =0                                'dias
vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
call Dri_R2                         'registar
End sub

SUB DriTrbAcmN 'trabalhador - acumulador N (natal)
tpa$="N"                               'tipo de acumulador
dias =0                                'dias
vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
call Dri_R2                         'registar
End sub

SUB DriTrbAcmO 'trabalhador - acumulador O
tpa$="O"                               'tipo de acumulador
dias =0                                'dias
vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
call Dri_R2                         'registar
End sub


SUB DriTrbAcmP 'trabalhador - acumulador P (remuneracoes permanentes)
tpa$="P"                               'tipo de acumulador
dias=GpeDriDias(gpe_mst_trb$,tpa$,GpeAcmLst("H","DRI",tpa$) )    'dias
vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
Call Dri_R2                         'registar
end sub

SUB DriTrbAcmR 'trabalhador - acumulador R
tpa$="R"                               'tipo de acumulador
dias =0                                'dias
vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
call Dri_R2                         'registar
End sub

SUB DriTrbAcmS 'trabalhador - acumulador S
tpa$="S"                               'tipo de acumulador
dias =0                                'dias
vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
call Dri_R2                         'registar
End sub

SUB DriTrbAcmT 'trabalhador - acumulador T
tpa$="T"                               'tipo de acumulador
dias =0                                'dias
vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
call Dri_R2                         'registar
End sub


SUB DriTrbAcmX 'trabalhador - acumulador X (outros subsidios)
tpa$="X"                               'tipo de acumulador
dias =0                                'dias
vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
call Dri_R2                         'registar
end sub


'SUB DriTrbAcm0 'trabalhador - acumulador 0 (forcas armadas)
'tpa$="0"                               'tipo de acumulador
'dias=GpeAcmLst("D","DRI",tpa$)         'dias
'vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
'call Dri_R2                         'registar
'end sub


'SUB DriTrbAcm1 'trabalhador - acumulador 1 (remuneracoes variaveis)
'tpa$="1"                               'tipo de acumulador
'dias =0                                'dias
'vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
'call Dri_R2                         'registar
'end sub


SUB DriTrbAcm2 'trabalhador - acumulador 2 (referente a ferias pagas)
tpa$="2"                               'tipo de acumulador

'dias=GpeAcmLst(" ","DRI",tpa$)         
dias=GpeAcmLst("D","DRI",tpa$)         'horas?
dias=GpeDriDias(gpe_mst_trb$,tpa$,GpeAcmLst("H","DRI",tpa$) )    'dias


vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
call Dri_R2                         'registar
end sub


SUB DriTrbAcm6 'trabalhador - acumulador 6 (diferencas de vencimento)
tpa$="6"                               'tipo de acumulador
dias =0                                'dias
call DriTrbRet                         'retroactivos
end sub


'SUB DriTrbAcm8 'trabalhador - acumulador 8 (exercicio temporario...)
'tpa$="8"                               'tipo de acumulador
'dias =0                                'dias
'vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
'call Dri_R2                         'registar
'end sub


'SUB DriTrbAcm9 'trabalhador - acumulador 9 (promocoes)
'tpa$="9"                               'tipo de acumulador
'dias =0                                'dias
'vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
'call Dri_R2                         'registar
'End sub

SUB DriTrbAcmI 'trabalhador - acumulador I
tpa$="I"                               'tipo de acumulador
dias=GpeAcmLst("D","DRI",tpa$)         'dias
vReg2=GpeAcmVhMes("V","DRI",tpa$)      'ler acumulador/valor
call Dri_R2                         'registar
End sub



SUB DriTrbRet 'retroactivos
tpa$="6"                               'tipo de acumulador
dias =0                                'dias

nret=MemNum(40)                        'numero de retroactivos
for i=1 to nret
dtRef=MemNum(40+i)                     'mes referencia
vReg2=MemNum(60+i)                     'valor
call Dri_R2exe                         'executar registo tipo R2
next
end sub


SUB DriTrbAct 'Acertos
nact=MemNum(39)                        'numero de acertos
for cnt=1 to nact
  fx=GpeDriAcerto(cnt)                 'transferir valores
  tpa$=memtxt$(91)                     'tipo acerto
  dtref=memnum(92)                     'data ref
  dias=memnum(93)                      'dias
  vreg2=memnum(94)                     'valor
  call Dri_R2exe                       'executar registo tipo R2
next
end sub


SUB DriDiasAjt 'ajustar dados dos dias
if dias>30 then                        'mais de 30 dias ?
   dias=30                             'limitar dias a 30
end if
ndi =int(dias*10)                      'ajustar 1 decimal
txd$=NumTxt$(ndi,3)                    'ajustar para texto

if Dias<0 then                         'negativo ?
   Sinal$="-"                          'numero dias negativo
else
   Sinal$="0"                          'numero dias positivo
end if

if Dias=0 Then                         'sinal dias negativo ...
   If vre<0 Then                       '... para dias = 0 e valor ...
      Sinal$="-"                       '... remuneração negativo
   End If
End If

DriDia$=txd$+Sinal$                    'dias+sinal 
end sub


'------------------------------------------------------------------------------
'Funcoes para tipos de registo R0
'------------------------------------------------------------------------------
SUB Dri_R0 'registo tipo R0
trg$="R0"                                                   'tipo de registo			
modf$="RC4008"+space$(2)                                    'modelo do ficheiro
verf$="01"                                                  'versao ficheiro

txr$=trg$+modf$+verf$                                       'dados a gravar
x=FicLinGrv(1, txr$)                                        'registar
end sub


'------------------------------------------------------------------------------
'Funcoes para tipos de registo R1
'------------------------------------------------------------------------------
SUB Dri_R1 'registo tipo R1

trg$="R1"                                                         'tipo de registo			
nct$=NumSpi$(GpeTabCon$("CSS",Gpe_Mst_Crss,"CTRB"),11)            'numero de contribuinte+taxa
ent$=NumSpi$(GpeTabCon$("CSS",Gpe_Mst_Crss,"ENTID"),4)            'entidade
nif$=NumSpi$(emp_inf_contrib$,9)                                  'NIF
rsc$=TxTamAjt$(Emp_Inf_Nome$,66)                                  'razao social 
dtr$=FrmDt$("AM",Sig_DtHoje)                                      'data de referencia das remuneracoes
zer$="                    "                                       'zeros

'memorizar valores necessarios
cssNct$=nct$+ent$                                  'guardar numero de contribuinte+entidade
CrssCur=Gpe_Mst_Crss                               'memorizar Crss


txr$=trg$+nct$+ent$+nif$+rsc$+dtr$+zer$            'dados a gravar
x=FicLinGrv(1, txr$)                               'registar
end sub


'------------------------------------------------------------------------------
'Funcoes para tipos de registo R2
'------------------------------------------------------------------------------
SUB Dri_R2 'registo tipo R2
dtRef=Sig_DtHoje                                            'data de referencia das remuneracoes

vajt=int(vreg2*100)     'ajustar valor (prever exponencial 0)
if vajt=0 then          'valor zero
   vreg2=0              'azerar valor a registar
end if

listar=1
if vreg2<=0 then 
  listar=0 
end if 

if vreg2=0 then                                   'valor a zero
  if tpa$="P" then                                'remuneracao permanente
     listar=ValoresZero                           'lista valores a zero?
  end if
end if

if listar=1 then 
  call Dri_R2exe                                   'executar registo tipo R2
'14:50 07-03-201114:50 07-03-2011  fx= msgboxinf(tpa$,vreg2)
end if
end sub


SUB Dri_R2exe 'executar registo tipo R2

If ListouR1=0 then                               'ja listou linha R1?
   call  DriIdc                                  'identificacao de contribuinte (R1)
   ListouR1=1                                    'marcar como listado
end if


trg$="R2"                                        'tipo de registo			
nct$=cssNct$                                     'numero de contribuinte+entidade (memorizado no R1)
tnb$=numspi$(Gpe_Mst_CrssNb$,11)                 'numero de beneficiario
nob$=TxTamAjt$(Gpe_Mst_Nome$,60)                            'nome do beneficiario
dnb$=NumSpi$(FrmDt$("AMD",Gpe_Mst_DtNasc),8)                'data de nascimento do beneficiario
dtr$=NumSpi$(FrmDt$("AM",dtRef),6)                          'data de referencia das remuneracoes

nrem$=right$("  "+tpa$,2)                                   'natureza da remuneracoes

vre=int(vReg2*kR2vrem+0.005)                                'valor a registar (arredondado)
vrem$=NumTxt$(vre,9)                                        'valor da remuneracao

if vReg2>=0 then
   srem$="0"                                                'sinal da remuneracao (positivo)
else
   srem$="-"                                                'sinal da remuneracao (negativo)
end if

call DriDiasAjt                                             'ajustar dados dos dias
DriTot=DriTot+vre                                           'totais

txr$=trg$+nct$+tnb$+nob$+dnb$+dtr$+DriDia$+nrem$+vrem$+srem$ 'dados a gravar
cntReg=cntReg+1                                              'incrementar contador
x=FicLinGrv(1, txr$)                                         'registar
end sub


'------------------------------------------------------------------------------
'Funcoes para tipos de registo R3
'------------------------------------------------------------------------------
SUB Dri_R3 'registo tipo R3
trg$="R3"                              'tipo de registo			
nct$=cssNct$                           'numero de contribuinte(memorizado no registo R1)
xxx$="99999999999"                     'campo de noves
call GpeDriTotRem                      'dados de total das remuneracoes

txr$=trg$+nct$+xxx$+DriTrm$            'dados a gravar
if listouR1=1 then                     'listou linha R1
   x=FicLinGrv(1, txr$)                'registar
   ListouR1=0                          'azerar opcao
end if
end sub


'------------------------------------------------------------------------------
'Funcoes auxiliares
'------------------------------------------------------------------------------
SUB GpeDriBenef 'dados do beneficiario
if Gpe_Mst_CrssNb$=" " then
   tnb$="02"+space$(9)                          'tipo+numero de beneficiario
else
   tnb$="01"+Gpe_Mst_CrssNb$                    'tipo+numero de beneficiario
end if

nob$=Gpe_Mst_Nome$+space$(20)                   'nome do beneficiario
dnb$=FrmVal$(Gpe_Mst_DtNasc,42,0)               'data de nascimento do beneficiario

DriBen$=tnb$+nob$+dnb$                          'dados a gravar
end sub


SUB GpeDriRemun 'dados das remuneracoes
call DriTipDias                                 'dias de trabalho
nrem$=ca$                                       'natureza da remuneracoes
vrem$=NumTxt$(vn#,9)                            'valor da remuneracao
if vn#>=0 then
   srem$="0"                                    'sinal da remuneracao (positivo)
else
   srem$="-"                                    'sinal da remuneracao (negativo)
end if
DriRem$=DriDia$+nrem$+vrem$+srem$               'texto a gravar
end sub



SUB GpeDriTotRem 'dados de total das remuneracoes
txEmp=GpeTabCon("CSS",CrssCur,"DES_P")          'taxa para empresa
txTrb=GpeTabCon("CSS",CrssCur,"DES_E")          'taxa para trabalhador

'remuneracoes
tre=int(DriTot+0.005)                           'valor a registar (arredondado)

DriTot$=NumTxt$(tre,14)                         'valor da remuneracao

if tre<0 then                                   'valor negativo ?
   snt$="-"                                     'sinal negativo
else
   snt$="0"                                     'sinal positivo
end if

'taxa
txu=txEmp+txTrb                                 'taxa total a usar
vlt=int(txu*100+0.005)                          'ajustar/arredondar
ctx$=NumTxt$(vlt,4)                             'taxa contributiva em texto

'contribuicoes
tco=tre*txu/100                                 'total das contribuicoes
if tco<0 then                                   'valor negativo ?
   snc$="-"                                     'sinal negativo
else
   snc$="0"                                     'sinal positivo
end if

'vln=int(tco*kR3TCon+0.5)                       'ajustar/arredondar
vln=int(tco+0.5)*kR3Tcon                        'ajustar/arredondar


txc$=NumTxt$(vln,12)                            'total das contribuicoes (texto)

treg=CntReg                                     'total de registos
totreg$=NumTxt$(treg,6)                         'converter em texto

DriTrm$=DriTot$+snt$+txc$+snc$+ctx$+totreg$     'total das remuneracoes
end sub


'------------------------------------------------------------------------------
'Listagem conferencia
'------------------------------------------------------------------------------
Sub CnfCabIni 'inicializar conferencia
totCtb=0                               'total das contribuicoes
totRem=0                               'total das remuneracoes
end sub


Sub CnfCab 'cabecalho
FxDiv LstIde,16CPI,0
?@Tit132                                                                                                                            #
?Data: @DataExt                                                                                                       Folha No: @Pag#
?====================================================================================================================================
'?   Contribuinte     Benific.                Nome                                 Nascim.       Ref.     Dias      Remuneracoes     #
?   NISSEE           NIFEE/Benific.          Nome                                 Nascim.       Ref.     Dias       Remuneracoes    #
?====================================================================================================================================
end sub


Sub CnfLin 'linha
tpr$=MemTxt$(31)                      'tipo do registo
print tpr$;                           'tipo do registo
print tab(004) "Invalido  ";          'assinalar erro

cmp=MemNum(30)                        'numero de campos
for i=32 to 30+cmp
print MemTxt$(i) ".";                 'listar campo
next
print                                 'terminar linha
end sub


Sub CnfLinR1Prp 'preparar linha para registo tipo R1
'dados do ficheiro
ctb$=MemTxt$(32)                       'contribuinte 
ctbTx$ =MemTxt$(32)+"/"+memTxt$(33)    'contribuinte + estabelecimento
taxa$ =MemTxt$(33)                     'estabelecimento
nif$ =MemTxt$(34)                      'nif
rzs$ =MemTxt$(35)                      'razao social (empresa)
dtr$ =MemTxt$(36)                      'data de referencia das remuneracoes (ano+mes)

'dados a listar
ano$ =left$(dtr$,4)                    'data de referencia das remuneracoes (ano)
mes$ =mid$(dtr$,5,2)                   'data de referencia das remuneracoes (mes)
dtrL$=ano$+"/"+mes$                    'data de referencia a listar

'diversos
TotVre=0                               'limpar totais
End sub


Sub CnfLinR1 'Listar linha R1
call CnfLinR1Prp                       'preparar linha R1
print "R1";                            'tipo do registo
print tab(004) ctbtx$;                 'contribuinte nissee
print tab(023) nif$;                   'contribuinte nif ee
print tab(037) left$(rzs$,45);         'razao social 
print tab(094) dtrL$;                  'data de referencia das remuneracoes
print                                  'terminar linha
end sub


Sub CnfLinR2Prp 'preparar linha para registo tipo R2
'dados do ficheiro
ctb$ =MemTxt$(32)                      'contribuinte
taxa$=MemTxt$(33)                      'taxa
nub$ =MemTxt$(34)                      'numero do beneficiario
nob$ =MemTxt$(35)                      'nome do beneficiario
dnb$ =MemTxt$(36)                      'data de nascimento do beneficiario
dtr$ =MemTxt$(37)                      'data de referencia das remuneracoes (ano+mes)
ndi$ =MemTxt$(38)                      'dias de remuneracao (dias*10)
sdi$ =MemTxt$(39)                      'dias de remuneracao (sinal)
nrem$=MemTxt$(40)                      'natureza da remuneracoes
vrem$=MemTxt$(41)                      'valor da remuneracao
srem$=MemTxt$(42)                      'sinal da remuneracao

'dados a listar
tnb$=""                                'tipo benefeciario (azerar)
dnbL$=FrmDt$("",dnb$)                  'data de nascimento do beneficiario
ano$ =left$(dtr$,4)                    'data de referencia das remuneracoes (ano)
mes$ =mid$(dtr$,5,2)                   'data de referencia das remuneracoes (mes)
dtrL$=ano$+"/"+mes$                    'data de referencia
dias =val(sdi$+ndi$)/10                'dias+sinal 
ndiL$=FrmNum$(3.1,dias)                'dias+sinal (formatado)
vre  =val(srem$+vrem$)/kr2Vrem         'valor da remuneracao (numero)
vreL$=FrmNum$(14.2,vre)                'valor da remuneracao (formatado)

'diversos
TotVre=TotVre+vre                      'acumular totais
end sub


Sub CnfLinR2 'linha para registo tipo R2
call CnfLinR2Prp                       'preparar registo

print "R2";                            'tipo do registo
print tab(004) ctb$;                   'contribuinte
print tab(020) nub$;                   'beneficiario (numero)
print tab(032) tnb$;                   'beneficiario (tipo)
print tab(037) left$(nob$,40);         'beneficiario (nome)
print tab(080) dnbL$;                  'data de nascimento
print tab(094) dtrL$;                  'data de referencia das remuneracoes
print tab(104) ndiL$;                  'dias
print tab(111) vreL$;                  'valor das remuneracoes
print tab(130) nrem$;                  'natureza das remuneracoes
print                                  'terminar linha
end sub


Sub CnfLinR3Prp 'preparar linha para registo tipo R3
'dados do ficheiro
ctb$ =MemTxt$(32)                      'contribuinte
taxa$ =MemTxt$(33)                     'taxa
nov$ =MemTxt$(34)                      'noves
trem$=MemTxt$(35)                      'total da remuneracao
snt$ =MemTxt$(36)                      'sinal (remuneracao)
tcon$=MemTxt$(37)                      'total das contribuicoes
snc$ =MemTxt$(38)                      'sinal (contribuicoes)
txc$ =MemTxt$(39)                      'taxa contributiva
treg$=MemTxt$(40)                      'total de registos

'dados a listar
tre  =val(snt$+trem$)/kr2Vrem          'total da remuneracao (numero)
treL$=FrmNum$(14.2,tre)                'total da remuneracao (formatado)

tco  =val(snc$+tcon$)/kr3CnfTcon       'total da contribuicoes (numero)
tcoL$=FrmNum$(14.2,tco)                'total da contribuicoes (formatado)

txcv =val(txc$)/100                    'taxa contributiva (numero)
txcL$=FrmNum$(3.2,txcv)                'taxa contributiva (formatado)
nrg  =val(treg$)                       'numero de registos (numero)
nrgL$=FrmNum$(5,nrg)                   'numero de registos (formatado)

'diversos
totCtb=totCtb+tco                      'acumular total das contribuicoes
totRem=totRem+tre                      'acumular total das remuneracoes
end sub


Sub CnfLinR3 'linha para registo tipo R3
call CnfLinR3Prp                       'preparar linha R3

'listar
print "R3";                            'tipo do registo
print tab(004) ctb$;                   'contribuinte
print tab(020) "Registos:"+nrgL$;      'total de registos
print tab(060) "Taxa:"+txcL$;          'taxa contribuitva
print tab(080) "Contribuição:"+tcoL$;  'total das contribuicoes
print tab(111) treL$;                  'total de remuneracoes
print                                  'terminar linha

print                                  'separar grupo
end sub


Sub CnfFim 'fim de listagem
?====================================================================================================================================
tCtb$=FrmNum$(14.2,totCtb)             'total das contribuicoes (formatado)
tRem$=FrmNum$(14.2,totRem)             'total das remuneracoes  (formatado)

print tab(020) "Totais:";              'identificacao
print tab(080) "Contribuição:"+tCtb$;  'total das contribuicoes
print tab(111) tRem$;                  'total de remuneracoes
print                                  'terminar linha
?====================================================================================================================================
FxDiv LstPer,SP
end sub


'==============================================================================
' Impressao grafica
'==============================================================================
Sub FxIni
PrWIN AJT_F, 56.7,  56.7                           'ajuste para milimetros
PrWIN ET,  2                                       'espessura de traco
PrWIN COR_F, 15                                    'cor de fundo

AjtEspaco=0.65
ListouParteComum=0
iniciou=0

Call SigLstIni
End sub

end sub


SUB FxFim 'funcao de finalizacao
PrWIN FON, "REG"                                   'limpar registo de fontes
end sub


'------------------------------------------------------------------------------
' Impressao no impresso oficial
'------------------------------------------------------------------------------
Sub OfiCabIni
fx=PrtOri("L")

Margem=MemNum(1)                       'ajuste horizontal
Altura=MemNum(2)                       'ajuste vertical

FonteNormal=12
FonteNome=10
end sub


Sub OfiCab 'cabecalho
PrWIN COR_F, 15                        'cor de fundo (forca limpeza de preview)

call CnfLinR1Prp                       'preparar registo

PrWin FON,10
PrWin FON,12

PrWIN AJT_B,  75+Margem,33+Altura     'posicao base
PrWin FON, 9
PrWin TX_N,  0,0,rzs$                 'nome
PrWin FON,12
EspLin=12.5
PrWin TX_SP,  0,EspLin,AjtEspaco, ctb$                   'num crss

PrWin TX_SP, 92,EspLin,AjtEspaco, dtr$                   'data referencia

PrWin TX_SP, 0,EspLin*2,AjtEspaco, nif$      'contribuinte
PrWin TX_SP, 55,EspLin*2,AjtEspaco, taxa$                  'codigo taxa (entidade)

PrWin TX_SP, 102,EspLin*2,AjtEspaco, Doc_CntPag          'numero pagina

ListouTotal=0
TotalDePagina=0
End sub


Sub OfiLin
ctb$ =MemTxt$(32)                      'contribuinte
tnb$ =MemTxt$(33)                      'tipo de beneficiario
nub$ =MemTxt$(34)                      'numero do beneficiario
nob$ =MemTxt$(35)                      'nome do beneficiario
dnb$ =MemTxt$(36)                      'data de nascimento do beneficiario
dtr$ =MemTxt$(37)                      'data de referencia das remuneracoes (ano+mes)
ndi$ =MemTxt$(38)                      'dias de remuneracao (dias*10)
sdi$ =MemTxt$(39)                      'dias de remuneracao (sinal)
nrem$=MemTxt$(40)                      'natureza da remuneracoes
vrem$=MemTxt$(41)                      'valor da remuneracao
srem$=MemTxt$(42)                      'sinal da remuneracao


Base=69

PrWIN AJT_B, 17+Margem, 66.5+Altura+Doc_CntLin*8.5          'posicao base


PrWin TX_SP,   0, 0,AjtEspaco,MemTxt$(54)           'numero beneficiario
'PrWin TX_SP, 42, 0,AjtEspaco,MemTxt$(53)           'tipo de beneficiario
PrWin FON,10
PrWin  TX_N,  55, 0,TxtNomeAjt$(MemTxt$(55),2,1)    'nome
PrWin FON,12

PrWin TX_SP, 118, 0,AjtEspaco,MemTxt$(56)           'data nascimento
PrWin TX_SP, 160, 0,AjtEspaco,MemTxt$(57)           'data das remuneracoes
PrWin TX_SP, 192, 0,AjtEspaco,MemTxt$(58)           'dias de trabalho
SinalOfi$=MemTxt$(62)                               'Sinal da Remuneração
If SinalOfi$="0" Then
   SinalOfi$=" "
End If
PrWin TX_SP, 210, 0,AjtEspaco,SinalOfi$             'sinal para dias de trabalho MemTxt$(59)
PrWin TX_SP, 219, 0,AjtEspaco,right$(MemTxt$(61),7) 'valor da remuneracao
PrWin TX_SP, 253, 0,"T",MemTxt$(60)                 'natureza da remuneracao

If SinalOfi$="-" Then
   CoefiSoma=0-1
   Else
   CoefiSoma=1
End If
TotalDePagina=TotalDePagina+val(MemTxt$(61))*CoefiSoma
End sub


Sub Total_Folha 'Listar Total de folha
Sinal$="0"                                               'assume valor positivo
if TotaldePagina<0 then                                  'valor negativo
   Sinal$="-"                                            'sinal de valor
End if    

PrWIN AJT_B,  222+Margem,156+Altura                      'posicao base
SinalOfi$=Sinal$
If Sinal$="0" Then
   SinalOfi$=" "
End If
PrWin  TX_N, 0, 0, SinalOfi$                             'mostra sinal

TotalDePaginaT$=NumTxt$(TotaldePagina,8)

PrWin TX_SP,10, 0, AjtEspaco,TotaldePaginaT$             'mostra total
TotaldePagina=0                                          'azerar total
End sub

Sub OfiFim 'fim de listagem
'ctb$ =MemTxt$(32)                      'contribuinte
'nov$ =MemTxt$(33)                      'noves
'trem$=MemTxt$(34)                      'total da remuneracao
'snt$ =MemTxt$(35)                      'sinal (remuneracao)
'tcon$=MemTxt$(36)                      'total das contribuicoes
'snc$ =MemTxt$(37)                      'sinal (contribuicoes)
'txc$ =MemTxt$(38)                      'taxa contributiva
'treg$=MemTxt$(39)                      'total de registos

'ctb$ =MemTxt$(32)                      'contribuinte
'taxa$ =MemTxt$(33)                     'taxa
'nov$ =MemTxt$(34)                      'noves
'trem$=MemTxt$(35)                      'total da remuneracao
'snt$ =MemTxt$(36)                      'sinal (remuneracao)
'tcon$=MemTxt$(37)                      'total das contribuicoes
'snc$ =MemTxt$(38)                      'sinal (contribuicoes)
'txc$ =MemTxt$(39)                      'taxa contributiva
'treg$=MemTxt$(40)                      'total de registos


Call Total_Folha

SinalOfi$=MemTxt$(76)
If SinalOfi$="0" Then 
   SinalOfi$=" "
End If
PrWIN AJT_B,  91+Margem,173+Altura     'posicao base
PrWin  TX_N,  0, 0,SinalOfi$                              'sinal das remuneracoes MemTxt$(75)
PrWin TX_SP,  9, 0,AjtEspaco, right$(MemTxt$(75),8)       'total das remuneracoes
PrWin TX_SP, 55, 0,AjtEspaco,MemTxt$(79)                  'taxa contributiva
PrWin  TX_N, 83, 0,SinalOfi$                              'sinal de contribuicoes MemTxt$(77)
PrWin TX_SP, 92, 0,AjtEspaco,right$(MemTxt$(77),8)        'total de contribuicoes
PrWin FP
end sub


Sub OfiFimAjt 'fim intermedio
Call Total_Folha
PrWin FP
End sub



'==============================================================================
' Carta Acompanhante - Grafico
'==============================================================================
Sub CartaG_CabINI
Fx=PrtOri("P")
nxxx=0
end sub


Sub CartaG_Cab

PrWin FON,12

Margem=15
MargemD=170
Azul=1
Preto=0

Zona1= 48
Zona2= Zona1+40
ZonaPag=Zona2+42
Zona3=Zonapag+25




Titulo=11
Texto2=10
Texto=11

LinTot=0

call CnfLinR1Prp                       'preparar registo
DataValor=val(dtr$+0000000001)
DataGerada$= FrmDt$("MES",datavalor)+"  de  "+frmdt$("A",DataValor)           'data referencia

PrWIN AJT_B,  0,2                'posicao base
EspLin=4.5
PrWin FON, 13
PrWin COR_T,Preto
PrWin "BOLD+"
PrWin TX_N, 40,10       ,"Declaração de Remunerações  - Resumo de Suporte Informático"
PrWin "BOLD-"


Cl=80
PrWin COR_T,Preto
PrWin  TX_N, Cl,EspLin*8,"Valores Referentes a : 
PrWin   FON,"BOLD+"
PrWin Cor_T, Azul
PrWin  TX_N, Cl+55,EspLin*8,DataGerada$      'data referencia
PrWin   FON,"BOLD-"


PrWIN AJT_B,  Margem,Zona1                'posicao base
PrWin FON, Titulo
PrWin FON,"BOLD+"
PrWin COR_T ,Preto
PrWin TX_N,  0,0,"Identificação do Contribuinte"
PrWin FON,"BOLD-"
PrWIN GR_LI, 0, Esplin*2, MargemD, EspLin*2               	'linha
PrWin FON, Texto
PrWin COR_T,Preto
Cl2=39
Cl3=120
Cl4=Cl3+25

PrWin COR_T,Azul

PrWin TX_N,    0,EspLin*3,rzs$                   'nome
PrWin TX_N,    0,EspLin*4,Emp_Inf_Morada$        'morada
PrWin TX_N,    0,EspLin*5,Emp_Inf_Local$         'localidade
PrWin TX_N,    0,EspLin*6,Emp_Inf_CPost$         'localidade
PrWin TX_N,  Cl2+13,EspLin*7,Emp_Inf_Contrib$       'contribuinte

PrWin TX_N,  Cl4,EspLin*3, ctb$                  'num crss
PrWin TX_N,  Cl4,EspLin*4,Emp_Inf_Telef$         'telefone
PrWin TX_N,  Cl4,EspLin*5,Emp_Inf_Fax$           'fax


PrWin COR_T,Preto
PrWin TX_N,    Cl3,EspLin*3,"N.I.S.S.:"       
PrWin TX_N,    Cl3,EspLin*4,"Telefone:"        
PrWin TX_N,    Cl3,EspLin*5,"Fax:"          
  
PrWin TX_N,    0,EspLin*7,"Numero Identificação Fiscal:"       



'Informacoes complementares
PrWIN AJT_B,  Margem,Zona2                'posicao base
PrWin FON, Titulo
PrWin FON,"BOLD+"
PrWin TX_N,  0,0,"Informações Complementares"
PrWin FON,"BOLD-"


PrWIN GR_LI, 0, Esplin*2, MargemD, EspLin*2               	'linha

PrWin COR_T,Azul


info$=MemTxT$(99)
tipor=MemNum(99)
'FX=MSGBOXINF("",MEMNUM(99TIPOR,INFO$)
tipo$=GpeTipRepDriTxt$(tipor)+" "+info$


if tipor>0 then
  PrWin FON  ,Texto
  PrWin COR_T,Preto
  PrWin TX_N,    Cl1   ,EspLin*3, "Tipo de representação :"
  PrWin COR_T,Azul
  PrWin TX_N,    Cl1+42   ,EspLin*3, tipo$
end if



PrWin FON  ,Texto
PrWin COR_T,Azul

PrWin TX_N,  10,EspLin*4,MemTxt$(91)
PrWin TX_N,  10,EspLin*5,MemTxt$(92)
PrWin TX_N,  10,EspLin*6,MemTxt$(93)
PrWin TX_N,  10,EspLin*7,MemTxt$(94)
PrWin TX_N,  10,EspLin*8,MemTxt$(95)



bnc$=memtxt$(89)
if bnc$<>"" then

'Informacoes complementares
PrWIN AJT_B,  Margem,Zonapag               'posicao base
PrWin FON, Titulo
PrWin COR_T ,Preto
PrWin FON,"BOLD+"
PrWin TX_N,  0,0,"Instruções para pagamento"
PrWin FON,"BOLD-"

PrWIN GR_LI, 0, Esplin*2, MargemD, EspLin*2               	'linha

PrWin FON  ,Texto



PrWin COR_T,Preto
PrWin TX_N,  10   ,EspLin*3,"Denominação da Entidade :"
PrWin TX_N,  10+21,EspLin*4,"respetivo IBAN :"

PrWin COR_T,Azul


bncnome$=GpeTabCon$("BNC",bnc$,"NOME")           
txnib$=GpeTabCon$("BNC",bnc$,"IBAN")   

bncnib$=left$(txnib$,4)+"."+mid$(txnib$,5,4)+"."+mid$(txnib$,9,4)+"."+mid$(txnib$,13,11)+"."+mid$(txnib$,24,2)        
        


PrWin TX_N,  60,EspLin*3,bncnome$
PrWin TX_N,  60,EspLin*4,bncnib$


else
zona3=zona3-(zona3-zonapag)
end if



PrWIN AJT_B,  Margem,Zona3                 'posicao base
PrWin FON, Titulo
PrWin FON,"BOLD+"
PrWin COR_T,Preto
PrWin TX_N,  0,0,"Total das remunerações - Cálculo das contribuições"
PrWin FON,"BOLD-"
PrWIN GR_LI, 0, Esplin*2, MargemD, EspLin*2               	'linha

Base=15
Col0=base
Col1=Base+15
Col2=Base+70
Col3=Base+100

Lin=EspLin*3
PrWin TX_N,   Col0+5,   Lin ,"NISS"
PrWin TX_N,   Col1+14,Lin ,"Remunerações"
PrWin TX_N,   Col2,   Lin ,"Taxa "
PrWin TX_N,   Col3+08,Lin ,"Contribuição"

InicioValores=Zona3+EspLin*4                              'posicao base - inicio valores
TotalContrib=0
end sub


Sub CartaG_Lin   'linha

LinTot=LinTot+1                                           'linha do total
PrWIN AJT_B,  Margem,InicioValores+(LinTot*EspLin)        'posicao base

PrWin FON, Texto
PrWin COR_T,Azul
Base=40

'registo r3
ctb$ =MemTxt$(base+32)                      'contribuinte
taxa$ =MemTxt$(base+33)                     'taxa
nov$ =MemTxt$(base+34)                      'noves
trem$=MemTxt$(base+35)                      'total da remuneracao
snt$ =MemTxt$(base+36)                      'sinal (remuneracao)
tcon$=MemTxt$(base+37)                      'total das contribuicoes
snc$ =MemTxt$(base+38)                      'sinal (contribuicoes)
txc$ =MemTxt$(base+39)                      'taxa contributiva
treg$=MemTxt$(base+40)                      'total de registos


SinalRSI$=snt$                              'Sinal da Remuneração Resumo SPI
If SinalRSI$="-" Then
   CoefiSoma=0-1
   Else
   CoefiSoma=1
End If

PrWin TX_NP,   Col0, 0,"N",ctb$                                                     'contribuinte
PrWin TX_NP,   Col1, 0,"N",FrmNum$(13.2,Val(trem$)/100*CoefiSoma)+Space$(5)+"x"     'total das remuneracoes
PrWin TX_NP,   Col2, 0,"N",FrmNum$(2.2,Val(txc$)/100)+Space$(5)+"="                 'taxa contributiva
PrWin TX_NP,   Col3, 0,"N",FrmNum$(10.2,Val(tcon$)/100*CoefiSoma)                   'total de contribuicoes
TotalContrib=TotalContrib+Val(tcon$)*CoefiSoma)                                     'acumular totais

End sub


Sub CartaG_Fim
LinTot=LinTot+1
PrWIN AJT_B,  Margem,InicioValores+(LinTot*EspLin)                   'posicao base

PrWin COR_T,Preto
PrWIN GR_LI, Col0, EspLin, MargemD-25, EspLin                        'linha
Lin=EspLin*2
PrWin TX_N,   Col1+20,Lin,"Total de Contribuições"
PrWin TX_NP,      Col3,Lin,"N",FrmNum$(10.2,Val(TotalContrib/100))   'total geral

PrWIN AJT_B,  Margem+115, 255                                        'posicao base
PrWIN GR_LI, 0, 0, 50, 0                                             'linha
PrWIN FON  ,   8,   1                                                'activar fonte
PrWin TX_N,    0,   3,"(Assinatura e carimbo do Contribuinte)" 

PrWIN AJT_B,  Margem, 268                          'posicao base
PrWIN COR_T, Preto
PrWIN GR_LI, 0, 0, MargemD, 0                      'linha
PrWIN FON  ,   8,   1                              'activar fonte
PrWin TX_N,    5,   2,SigLstInf$("PERSON")         'personalizacao

PrWin FP
End Sub




'------------------------------------------------------------------------------
'Listagem conferencia - grafica
'------------------------------------------------------------------------------
Sub CnfCabGIni 'inicializar conferencia
totCtb=0                               'total das contribuicoes
totRem=0                               'total das remuneracoes
end sub


Sub CnfCabG 'cabecalho
Col1=0                    'niss
Col2=Col1+22            'nife
Col3=col2+20      '45         'nome
Col4=col3+75  '110             'nascimento
Col5=col4+23   '135            'ref
Col6=col5+15   '150        'dias
Col7=col6+8    '160        'remuneracoes 
Col8=col7+20   '180
Col9=col8+5     '185



'Col1=0                    'niss
'Col2=Col1+25            'nife
'Col3=col2+20'45         'nome
'Col4=col3+65  '110             'nascimento
'Col5=col4+25   '135            'ref
'Col6=col5+15   '150        'dias
'Col7=col6+10    '160        'remuneracoes 
'Col8=col7+20   '180
'Col9=col8+5     '185


SigCabNorOpcTit=0
titulo$="Conferencia listagem DRI"

Call SigLstCab
base=25
PrWIN AJT_B, Margem, Base                 		'posicao base
PrWIN AJT_B,Margem,Base+5                 		'posicao base

PrWin FON,9
PrWIN COR_T,CorTit                             'cor 
PrWIN TX_N, Col1, 0,"NISSEE"
PrWIN TX_N, Col2, 0,"NIFEE/Beneficiario"
PrWIN TX_N, Col3+10, 0,"Nome"
PrWIN TX_N, Col4, 0,"Nascimento"
PrWIN TX_N, Col5+3, 0,"Ref"
PrWIN TX_N, Col6, 0,"Dias"
PrWIN TX_N, Col7, 0,"Remunerações"
PrWIN COR_T,CorTraco                            'cor 
PrWIN GR_LI,     0,  4, Col9, 4                 'linha
PrWIN GR_LI,     0,  0, Col9, 0                 'linha


PrWIN COR_T,CorLin                            'cor 

InicioEscrita=32
end sub


Sub CnfLinGR1 'linha para registo tipo R1
call CnfLinR1Prp

PrWIN AJT_B,  Margem, InicioEscrita+Doc_CntLin*4       'posicao base
'PrWIN TX_N,Col1-3,   0, "R1"
PrWIN TX_N,  Col1,    0, ctbtx$
PrWIN TX_N,  Col3-14, 0, nif$
PrWIN TX_N,  Col3+5,  0, left$(rzs$,45)
PrWIN TX_N,  Col5,    0, dtrl$
end sub


Sub CnfLinGR2 'linha para registo tipo R2
Call CnfLinR2Prp                                 'preparar impressao

'listar
PrWIN AJT_B,  Margem, InicioEscrita+Doc_CntLin*4 'posicao base
PrWIN TX_N,  Col1, 0, ctb$                       'contribuinte
PrWIN TX_N,  Col2, 0, nub$                       'beneficiario (numero)
PrWIN TX_N,  Col3, 0, tnb$                       'beneficiario (tipo)
PrWin FON,8
'PrWIN TX_DMX,  Col3+3, 0, Col4-Col3, left$(nob$,40)           'beneficiario (nome)
PrWIN TX_DMX,  Col3+3, 0, Col4-Col3, nob$           'beneficiario (nome)

PrWin FON,9
PrWIN TX_N,  Col4+3, 0, dnbL$                    'data de nascimento
PrWIN TX_N,  Col5, 0, dtrL$                      'data de referencia das remuneracoes
PrWIN TX_N,  Col6, 0, ndiL$                      'dias
PrWIN TX_N,  Col7, 0, vreL$                      'valor das remuneracoes
PrWIN TX_N,  Col8, 0, nrem$                      'natureza das remuneracoes
End sub



Sub CnfLinGR3 'linha para registo tipo R3
call CnfLinR3Prp                       'preparar linha R3

'listar
Prwin Cor, CorTot
PrWIN AJT_B,  Margem, InicioEscrita+Doc_CntLin*4       'posicao base
PrWIN TX_N, Col1,    0, ctb$                   'contribuinte
PrWIN TX_N, Col2,    0, "Registos:"+nrgL$      'total de registos
PrWIN TX_N, Col3,    0, "Taxa:"          'taxa contribuitva
PrWIN TX_N, Col3+10, 0, txcL$          'taxa contribuitva
PrWIN TX_N, Col4,    0, "Contribuição:"        'total das contribuicoes
PrWIN TX_N, Col6-10, 0, tcoL$                  'total das contribuicoes
PrWIN TX_N, Col7,    0, treL$                  'total de remuneracoes
tmp=CntLin("INC",1)                            'acrescentar uma linha
end sub


Sub CnfFimGAjt 'fim de listagem
PrWIN AJT_B,  Margem, InicioEscrita+Doc_CntLin*4  'posicao base
PrWIN COR_T,CorTraco                            'cor 
PrWIN GR_LI,     0,  3, Col8, 3                 'linha

PrWIN COR_T,CorTotais                            'cor 
PrWIN TX_N, Col4, 3, "Continua ... "
Prwin FP
end sub


Sub CnfFimG 'fim de listagem
tCtb$=FrmNum$(14.2,totCtb)             'total das contribuicoes (formatado)
tRem$=FrmNum$(14.2,totRem)             'total das remuneracoes  (formatado)

PrWIN AJT_B,  Margem, InicioEscrita+Doc_CntLin*4  'posicao base
PrWIN COR_T,CorTraco                            'cor 
PrWIN GR_LI,     0,  0, Col9, 0                 'linha
PrWIN GR_LI,     0,  5, Col9, 5                 'linha

PrWIN COR_T,CorTotais                            'cor 


PrWIN TX_N, Col2,    0, "Totais"                     'identificacao
PrWIN TX_N, Col4,    0, "Contribuição: "             'total das contribuicoes
PrWIN TX_N, Col6-10, 0, tctb$                      'total das contribuicoes
PrWIN TX_N, Col7,    0, tRem$                       'total de remuneracoes
call SigLstFim
end sub


##


#INC
Funcoes comuns                    =[SIG_Dir.Div],LsComPgm.std
##
