'Nome       : QPS.Std
'Tipo       : LST
'Data       : 2010/06/28
'Versao     : 1.1
'Descricao  : Listagem de quadros de pessoal 

'------------------------------------------------------------------------------
'#VER - Historia de modificacoes
'------------------------------------------------------------------------------
'- Versao : 1.2  2010/06/28 ---------------------------------------------------
'colocar vencimento pago a 0.0 quando nao existe
'Forcar horas normais a zero quando vencimento pago e zero

'- Versao : 1.1  2010/06/23 ---------------------------------------------------
'listar estabelecimentos mesmo sem trabalhadores
'ajustar codigo irct para empregadores e similares
'estava a assumir estabelecimento sede em todos os estabelecimentos

'- Versao : 1.0  2010/05/11 ---------------------------------------------------
'Versao base



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


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


'-----------------------------------------------------------------------------
' Configuracao do documento
'-----------------------------------------------------------------------------
#DOC
Tipo                       [DocTip]=RU_SPI
Nome                       [DocNom]=RU2009,Suporte informatico

'formato
Saida/Impressora           [DocPrt]=NULA
Linhas por pagina          [DocLpg]=50
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0
Directorio ficheiros       [DocEsp]=Spidir=Spi\RU
Listar valores a 0         [DocEsp]=LstZer=1
tipo suporte informatico   [DocEsp]=SpiTip=RU
Validar sup.informatico    [DocEsp]=SpiVal=0
nome para ficheiro         [DocEsp]=SpiFic=[EMPCTRB]_[DT4].xml


'funcoes de listagem
Listar cabecalho            [FxCAB]=RuCab
Listar linhas               [FxLIN]=RuLinTrb
Listar fim                  [FxFIM]=RuFim
##





'-----------------------------------------------------------------------------
' Variaveis
'-----------------------------------------------------------------------------
#VAR
DataExt   = FrmDt$("EXT",Sig_DtHoje)
Pag      = Doc_CntPag
##

'-----------------------------------------------------------------------------
' Formato do documento
'-----------------------------------------------------------------------------
#PGM
'===================================================================================
'  Suporte Informatico
'===================================================================================
Sub SpiIni'prepara suporte informatico
fic$=MemTxt$(11)                                   'ficheiro a usar
x=FicPrp(1, "O:0", fic$)                           'preparar ficheiro
x=FicAbr(1)                                        'abrir ficheiro
end sub


SUB SpiFim 'funcao de finalizacao
x=FicFec(1)                                        'fechar ficheiro
end sub


'-----------------------------------------------------------------------------------
Sub SpiCmpDef  'definicao de campos 
'-----------------------------------------------------------------------------------
'fx=SpiRegIni("80")        'preparar registo

'registo de contacto
'fx=SpiRegTpl("00","Registo de contacto")
end sub



'-----------------------------------------------------------------------------------
Sub RuLinTrb
'-----------------------------------------------------------------------------------
RelAno$=GpeRelUniFx$("PAR","ANO_LST")



call relatorio_ini
   call entity_data_ini
      call Active_estabs

'      call entity_config_ini
'         call strikes
'      call entity_config_fim


      call entity_ini         'dados da empresa
        call estabs_ini
         call estab           'estabelecimentos
        call estabs_fim
      call entity_fim
   call entity_data_fim


   call anexos_ini
      call anexo_fest         'entrada e saida trabalhadores
'      call anexo_grv         
      call anexo_qp          'quadro pessoal
'      call anexo_sst         
      call anexo_zero      
  
  call anexos_fim
call relatorio_fim
end sub


'-----------------------------------------------------------------------------------
sub linha
'-----------------------------------------------------------------------------------
'fx=FicLinGrv(1,"")
end sub

'-----------------------------------------------------------------------------------
sub relatorio_ini
'-----------------------------------------------------------------------------------
'fx=FicLinGrv(1,"<?xml version="+chr$(34)+"1.0"+chr$(34)+" encoding="+chr$(34)+"UTF-8"+chr$(34)+"?>")
fx=FicLinGrv(1,"<?xml version="+chr$(34)+"1.0"+chr$(34)+" encoding="+chr$(34)+"ISO-8859-1"+chr$(34)+" ?>") 
fx=FicLinGrv(1,"<relatorio_unico xmlns="+chr$(34)+"http://www.gep.mtss.gov.pt/sguri/ru"+chr$(34)+" xmlns:xsi="+chr$(34)+"http://www.w3.org/2001/XMLSchema-instance"+chr$(34)+" XML_DATA="+chr$(34)+"1.0.0"+chr$(34)+">")
end sub


'-----------------------------------------------------------------------------------
sub entity_data_ini
'-----------------------------------------------------------------------------------
fx=FicLinGrv(1,"  <entity_data>")
call linha
end sub


'-----------------------------------------------------------------------------------
sub Active_estabs
'-----------------------------------------------------------------------------------

txv$=gpe_esp_versao$
fx=FicLinGrv(1,"   <versao-lst>F</versao-lst>")
fx=FicLinGrv(1,"   <versao-prg>"+txv$+"</versao-prg>")
fx=FicLinGrv(1,"   <active_estabs year_ref="+chr$(34)+Relano$+chr$(34)+">")

EstMax=GpeRelUniFx("EST_ACTIVO","CNT")


fx=FicLinGrv(1,"     <estabs annex="+chr$(34)+"FEST"+chr$(34)+">")
  for cnt=1 to EstMax
   est$=GpeRelUniFx$("EST_ACTIVO","COD",cnt)
   EstId$ = GpeTabCon$("EST",est$,"RU-ID")
   fx=FicLinGrv(1,"       <estab hq="+chr$(34)+"true"+chr$(34)+" id="+chr$(34)+estId$+chr$(34)+"/>")
  next
fx=FicLinGrv(1,"     </estabs>")


'fx=FicLinGrv(1,"     <estabs annex="+chr$(34)+"GRV"+chr$(34)+">")
'  for cnt=1 to EstMax
'    est$=GpeRelUniFx$("EST","COD",cnt)
'    EstId$ = GpeTabCon$("EST",est$,"RU-ID")
'    fx=FicLinGrv(1,"       <estab hq="+chr$(34)+"true"+chr$(34)+" id="+chr$(34)+estId$+chr$(34)+"/>")
'  next
'fx=FicLinGrv(1,"     </estabs>")


fx=FicLinGrv(1,"     <estabs annex="+chr$(34)+"QP"+chr$(34)+">")
  for cnt=1 to EstMax
    est$=GpeRelUniFx$("EST_ACTIVO","COD",cnt)
    EstId$ = GpeTabCon$("EST",est$,"RU-ID")
    num = val(GpeTabCon$("EST",est$,"RU-NUM"))
    if num=0 then
      css$= GpeTabCon$("EST",est$,"CSS")
      EmpNiss$= GpeTabCon$("CSS",css$,"CTRB")
   '   fx=msgbox(est$,empniss$)
      fx=FicLinGrv(1,"       <estab hq="+chr$(34)+"true"+chr$(34)+" id="+chr$(34)+estId$+chr$(34)+"/>")
    end if
    if num<>0 then
       fx=FicLinGrv(1,"       <estab hq="+chr$(34)+"false"+chr$(34)+" id="+chr$(34)+estId$+chr$(34)+"/>")
    end if
  next
fx=FicLinGrv(1,"     </estabs>")


'fx=FicLinGrv(1,"     <estabs annex="+chr$(34)+"SST"+chr$(34)+">")
'  for cnt=1 to EstMax
'    est$=GpeRelUniFx$("EST","COD",cnt)
'    EstId$ = GpeTabCon$("EST",est$,"RU-ID")
'    fx=FicLinGrv(1,"       <estab hq="+chr$(34)+"true"+chr$(34)+" id="+chr$(34)+estId$+chr$(34)+"/>")
'  next
'fx=FicLinGrv(1,"     </estabs>")


fx=FicLinGrv(1,"     <estabs annex="+chr$(34)+"ZRO"+chr$(34)+">")
  for cnt=1 to EstMax
    est$=GpeRelUniFx$("EST_ACTIVO","COD",cnt)
    EstId$ = GpeTabCon$("EST",est$,"RU-ID")
    fx=FicLinGrv(1,"       <estab hq="+chr$(34)+"true"+chr$(34)+" id="+chr$(34)+estId$+chr$(34)+"/>")
  next
fx=FicLinGrv(1,"     </estabs>")


fx=FicLinGrv(1,"   </active_estabs>")
fx=FicLinGrv(1,"")

end sub


'-----------------------------------------------------------------------------------
sub entity_config_ini
'-----------------------------------------------------------------------------------
fx=FicLinGrv(1,"   <entity_config>")
end sub

'-----------------------------------------------------------------------------------
sub strikes
'-----------------------------------------------------------------------------------
fx=FicLinGrv(1,"      <strikes>")
fx=FicLinGrv(1,"      </strikes>")
end sub

'-----------------------------------------------------------------------------------
sub entity_config_fim
'-----------------------------------------------------------------------------------
fx=FicLinGrv(1,"   </entity_config>")
call Linha
call Linha
end sub


'-----------------------------------------------------------------------------------
Sub entity_ini
'-----------------------------------------------------------------------------------


Empnif$        = Emp_Inf_Contrib$
EmpNome$       = TxtXml$(Emp_Inf_Nome$)
EmpMorada$     = Emp_Inf_Morada$
EmpLocalidade$ = Emp_Inf_Local$
EmpCpostal1$   = left$(trim$(Emp_Inf_CPost$),4)+Mid$(Emp_Inf_CPost$,6,3)
EmpCpostal2$   = Mid$(Emp_Inf_CPost$,10)


EmpTelefone$  = Emp_Inf_Telef$
EmpFax$       = Emp_Inf_Fax$
Empemail$     = Emp_Inf_Email$
EmpCDF$       = Emp_Inf_CodDist$
EMPPtr$       = TxIde$(Emp_Inf_Opc$,"ASSPTRCOD")
EmpCae$       = Emp_Inf_Cae$
EMPNJur$      = TxIde$(Emp_Inf_Opc$,"NATJURCOD")
EMPFormGes$   = Emp_Inf_FormGes$
EmpAnoCon$    = FrmDt$("A4",Emp_Inf_DtConst)
EmpNumP$      = Emp_Inf_NumPes

EmpCapv$      = NumXml$(Emp_Inf_CapSoc)
EmpCapP1$     = NumXml$(Emp_Inf_CapSocNac,1)
EmpCapP2$     = NumXml$(Emp_Inf_CapSocEst,1)
EmpCapP3$     = NumXml$(Emp_Inf_CapsocPub,1)

if EmpCapp2$="" then
 EmpCapp2$="0"
end if

if EmpCapp3$="" then
 EmpCapp3$="0"
end if


EmpVnd$       = NumXml$(Emp_Inf_VolVend)

EmpRuId$            = TxIde$(Emp_Inf_Opc$,"RU-ID")
EmpPaisAbrv$        = EmpTabCon$("PAIS",Emp_inf_Pais,"ABRV")
EmpPaisDescription$ = EmpTabCon$("PAIS",Emp_Inf_Pais,"NOME")


fx=FicLinGrv(1,"   <entity xmlns="+chr$(34)+"http://www.gep.mtss.gov.pt/sguri/sul"+chr$(34)+">")
fx=FicLinGrv(1,"     <entity_id>"+EmpRuId$+"</entity_id>")
fx=FicLinGrv(1,"     <nif>"+EmpNif$+"</nif>")
fx=FicLinGrv(1,"     <niss>"+EmpNiss$+"</niss>")
fx=FicLinGrv(1,"     <name>"+EmpNome$+"</name>")
fx=FicLinGrv(1,"     <address>")
fx=FicLinGrv(1,"       <address>"+EmpMorada$+"</address>")
fx=FicLinGrv(1,"       <location>"+EmpLocalidade$+"</location>")
fx=FicLinGrv(1,"       <zipcode>"+EmpCpostal1$+"</zipcode>")
fx=FicLinGrv(1,"       <zipcode_description/>")
fx=FicLinGrv(1,"     </address>")
fx=FicLinGrv(1,"     <dcf tbl="+chr$(34)+"RU_DCF"+chr$(34)+">"+EmpCDF$+"</dcf>")
fx=FicLinGrv(1,"     <dcf_description>"+EmpDCFDescription$+"</dcf_description>")
fx=FicLinGrv(1,"     <cae tbl="+chr$(34)+"RU_CAE_5DIG"+chr$(34)+">"+EmpCae$+"</cae>")
fx=FicLinGrv(1,"     <cae_description>"+EmpCAEDescription$+"</cae_description>")
fx=FicLinGrv(1,"     <ln tbl="+chr$(34)+"RU_NATJUR"+chr$(34)+">"+EMPNJur$+"</ln>")
fx=FicLinGrv(1,"     <ln_description>"+EmpFormGes$+"</ln_description>")
fx=FicLinGrv(1,"     <phone>"+EmpTelefone$+"</phone>")
fx=FicLinGrv(1,"     <email>"+EmpEmail$+"</email>")
fx=FicLinGrv(1,"     <country tbl="+chr$(34)+"RU_CODPAIS"+chr$(34)+">"+EmpPaisAbrv$+"</country>")
fx=FicLinGrv(1,"     <country_description>"+EmpPaisDescription$+"</country_description>")
call Linha
End sub

'-----------------------------------------------------------------------------------
sub estabs_ini
'-----------------------------------------------------------------------------------
fx=FicLinGrv(1,"     <estabs>")
call Linha
end sub


'-----------------------------------------------------------------------------------
sub estab
'-----------------------------------------------------------------------------------

EstMax=GpeRelUniFx("EST_ACTIVO","CNT")
for cnt=1 to EstMax
  est$=GpeRelUniFx$("EST_ACTIVO","COD",cnt)

  EstId$ = GpeTabCon$("EST",est$,"RU-ID")
  EstRuNum = val(GpeTabCon$("EST",est$,"RU-NUM"))
  EstDCF$ = GpeTabCon$("EST",est$,"CODDIST")
  EstTelef$ = GpeTabCon$("EST",est$,"TELEF")
  EstMorada$ = GpeTabCon$("EST",est$,"MORADA")
  EstLocalidade$ = GpeTabCon$("EST",est$,"LOC")
  EstDCFDescription$=""

  fx=FicLinGrv(1,"       <estab>")
  fx=FicLinGrv(1,"         <estab_id>"+EstId$+"</estab_id>")

  if EstRuNum=0 then
    fx=FicLinGrv(1,"         <hq>true</hq>")
  end if
  if num<>0 then
    fx=FicLinGrv(1,"         <hq>false</hq>")
  end if

  fx=FicLinGrv(1,"         <num>"+EstRuNum+"</num>")
  fx=FicLinGrv(1,"         <nif>"+EmpNif$+"</nif>")
  fx=FicLinGrv(1,"         <name>"+EmpNome$+"</name>")
  fx=FicLinGrv(1,"         <address>")
  fx=FicLinGrv(1,"           <address>"+EstMorada$+"</address>")
  fx=FicLinGrv(1,"           <location>"+EstLocalidade$+"</location>")
  fx=FicLinGrv(1,"           <zipcode>"+EmpCpostal1$+"</zipcode>")
  fx=FicLinGrv(1,"           <zipcode_description/>")
  fx=FicLinGrv(1,"         </address>")
  fx=FicLinGrv(1,"         <dcf tbl="+chr$(34)+"RU_DCF"+chr$(34)+">"+EstDCF$+"</dcf>")
  fx=FicLinGrv(1,"         <dcf_description>"+EstDCFDescription$+"</dcf_description>")
  fx=FicLinGrv(1,"         <cae tbl="+chr$(34)+"RU_CAE_5DIG"+chr$(34)+">"+EmpCae$+"</cae>")
  fx=FicLinGrv(1,"         <cae_description/>")
  fx=FicLinGrv(1,"         <country tbl="+chr$(34)+"RU_CODPAIS"+chr$(34)+">"+EmpPaisAbrv$+"</country>")
  fx=FicLinGrv(1,"         <country_description>"+EmpPaisDescription$+"</country_description>")
  fx=FicLinGrv(1,"         <phone>"+EstTelef$+"</phone>")
  fx=FicLinGrv(1,"         <email>"+EmpEmail$+"</email>")
  fx=FicLinGrv(1,"       </estab>")
next


end sub


'-----------------------------------------------------------------------------------
sub estabs_fim
'-----------------------------------------------------------------------------------
fx=FicLinGrv(1,"     </estabs>")
call Linha
end sub


'-----------------------------------------------------------------------------------
sub entity_fim
'-----------------------------------------------------------------------------------
fx=FicLinGrv(1,"   </entity>")
call Linha
end sub


'-----------------------------------------------------------------------------------
sub entity_Data_fim
'-----------------------------------------------------------------------------------
fx=FicLinGrv(1," </entity_data>")
call Linha
end sub


'-----------------------------------------------------------------------------------
sub anexos_ini
'-----------------------------------------------------------------------------------
fx=FicLinGrv(1," <anexos>")
call Linha
end sub


'-----------------------------------------------------------------------------------
sub anexo_fest
'-----------------------------------------------------------------------------------
TrbMax=GpeRelUniFx$("ENTSAITRB","CNT")

fx=FicLinGrv(1,"   <anexo_fest xmlns="+chr$(34)+"http://www.gep.mtss.gov.pt/sguri/ru/anexo_fest"+chr$(34)+" XML_DATA="+chr$(34)+"1.0.0"+chr$(34)+" ano="+chr$(34)+RelAno$+chr$(34)+" entidade="+chr$(34)+EmpRuId$+chr$(34)+">")

if TrbMax>0 then
  fx=FicLinGrv(1,"     <exist_entradas_saidas>S</exist_entradas_saidas>")
end if

if TrbMax=0 then
  fx=FicLinGrv(1,"     <exist_entradas_saidas>N</exist_entradas_saidas>")
end if


fx=FicLinGrv(1,"      <dados_fest>")
fx=FicLinGrv(1,"        <cae_31Dez tbl="RU_CAE_5DIG">"+EmpCae$+"</cae_31Dez>")
fx=FicLinGrv(1,"        <trabalhadores>")


for cnt=1 to TrbMax
  trb$=GpeRelUniFx$("ENTSAITRB","TRB_COD",cnt)
  fx=GpeTrbLer(trb$)
  call valoresTrb

  fx=FicLinGrv(1,"          <trabalhador>")
  fx=FicLinGrv(1,"            <ident_reg_apli tbl="+chr$(34)+"RU_REREAP"+chr$(34)+">"+RegRfm$+"</ident_reg_apli>")
  fx=FicLinGrv(1,"            <niss>"+regRfmCod$+"</niss>")
  fx=FicLinGrv(1,"            <nome>"+nome$+"</nome>")

  if SitProf$="3" then
    fx=FicLinGrv(1,"            <tipo_contrato tbl="+chr$(34)+"RU_TIPCON"+chr$(34)+">"+TipCtr$+"</tipo_contrato>")
  end if
  
  fx=FicLinGrv(1,"            <entrada>")
  fx=FicLinGrv(1,"              <data>"+dtAd$+"</data>")
  fx=FicLinGrv(1,"              <motivo tbl="+chr$(34)+"RU_MEEE"+chr$(34)+">"+AdmiMotivo$+"</motivo>")
  fx=FicLinGrv(1,"            </entrada>")
  

  if dtSaiVl>0 then
    fx=FicLinGrv(1,"            <saida>")
    fx=FicLinGrv(1,"              <data>"+DtSai$+"</data>")
    fx=FicLinGrv(1,"              <motivo tbl="+chr$(34)+"RU_MSEE"+chr$(34)+">"+saiMotivo$+"</motivo>")
    fx=FicLinGrv(1,"            </saida>")
  end if

  fx=FicLinGrv(1,"            <sexo tbl="+chr$(34)+"RU_SX"+chr$(34)+">"+sex$+"</sexo>")
  fx=FicLinGrv(1,"            <data_nasc>"+DtNa$+"</data_nasc>")
  fx=FicLinGrv(1,"            <nacionalidade tbl="+chr$(34)+"RU_CODPAIS"+chr$(34)+">"+Pais$+"</nacionalidade>")
  fx=FicLinGrv(1,"            <habil_lit tbl="+chr$(34)+"RU_HABLIT"+chr$(34)+">"+hab$+"</habil_lit>")
  fx=FicLinGrv(1,"            <sit_prof tbl="+chr$(34)+"RU_SITPROF"+chr$(34)+">"+SitProf$+"</sit_prof>")
  fx=FicLinGrv(1,"            <prof tbl="+chr$(34)+"RU_CNP"+chr$(34)+">"+Prof$+"</prof>")
  fx=FicLinGrv(1,"            <h_1art227>"+hx1$+"</h_1art227>")
  fx=FicLinGrv(1,"            <h_2art227>"+Hx2$+"</h_2art227>")
  fx=FicLinGrv(1,"          </trabalhador>")
next

fx=FicLinGrv(1,"        </trabalhadores>")
fx=FicLinGrv(1,"      </dados_fest>")
fx=FicLinGrv(1,"    </anexo_fest>")


call Linha
end sub


'-----------------------------------------------------------------------------------
sub anexo_grv
'-----------------------------------------------------------------------------------
fx=FicLinGrv(1,"   <anexo_grv xmlns="+chr$(34)+"http://www.gep.mtss.gov.pt/sguri/ru/anexo_grv"+chr$(34)+" XML_DATA="+chr$(34)+"1.0.0"+chr$(34)+" ano="+chr$(34)+RelAno$+chr$(34)+" entidade="+chr$(34)+EmpRuId$+chr$(34)+"></anexo_grv>")
call Linha
call Linha
end sub


'-----------------------------------------------------------------------------------
sub anexo_qp
'-----------------------------------------------------------------------------------
EmpNumTrb$=Emp_Inf_NumPes



fx=FicLinGrv(1,"   <anexo_qp xmlns="+chr$(34)+"http://www.gep.mtss.gov.pt/sguri/ru/anexo_qp"+chr$(34)+" XML_DATA="+chr$(34)+"1.0.0"+chr$(34)+" ano="+chr$(34)+RelAno$+chr$(34)+" entidade="+chr$(34)+EmpRuId$+chr$(34)+">")
fx=FicLinGrv(1,"     <total_pess_servico_31Out>"+EmpNumTrb$+"</total_pess_servico_31Out>")
fx=FicLinGrv(1,"     <cae_31Out tbl="+chr$(34)+"RU_CAE_5DIG"+chr$(34)+">"+EmpCae$+"</cae_31Out>")
fx=FicLinGrv(1,"     <natJur_31Out tbl="+chr$(34)+"RU_NATJUR"+chr$(34)+">"+EmpNjur$+"</natJur_31Out>")
fx=FicLinGrv(1,"     <estabs>")

EstMax=GpeRelUniFx("EST_COM_TRB","EST_CNT")

for EstIdx=1 to EstMax

  est$=GpeRelUniFx$("EST_COM_TRB","EST_COD",EstIdx)

  EstId$ = GpeTabCon$("EST",est$,"RU-ID")
  EstNumTrb$ = val(GpeTabCon$("EST",est$,"NPESS"))
  EstRuNum = val(GpeTabCon$("EST",est$,"RU-NUM"))
  EstIrct$ = val(GpeTabCon$("EST",est$,"IRTCOD"))

  if EstRuNum=0 then
    fx=FicLinGrv(1,"       <estab id="+chr$(34)+EstId$+chr$(34)+" sede="+chr$(34)+"S"+chr$(34)+">")
  end if
  if EstRuNum<>0 then
    fx=FicLinGrv(1,"       <estab id="+chr$(34)+EstId$+chr$(34)+" sede="+chr$(34)+"N"+chr$(34)+">")
  end if

  fx=FicLinGrv(1,"         <pess_servico_31Out>"+EstNumTrb$+"</pess_servico_31Out>")
  fx=FicLinGrv(1,"         <cae_31Out tbl="+chr$(34)+"RU_CAE_5DIG"+chr$(34)+">"+EmpCae$+"</cae_31Out>")

if EstNumTrb$<>"0" then

  fx=FicLinGrv(1,"         <trabalhadores>")




  EstMaxTrb=GpeRelUniFx("EST_COM_TRB","TRB_CNT",EstIdx)
    for TrbIdx=1 to EstMaxTrb
      trb$=GpeRelUniFx$("EST_COM_TRB","TRB_COD",EstIdx,TrbIdx)
      fx=GpeTrbLer(trb$)
      call valoresTrb


  fx=FicLinGrv(1,"             <trabalhador>")
  fx=FicLinGrv(1,"               <nome>"+nome$+"</nome>")
  fx=FicLinGrv(1,"               <ident_reg_apli tbl="RU_REREAP">"+regRfm$+"</ident_reg_apli>")
  fx=FicLinGrv(1,"               <niss>"+regRfmCod$+"</niss>")

  fx=FicLinGrv(1,"               <sexo tbl="RU_SX">"+sex$+"</sexo>")
  fx=FicLinGrv(1,"               <data_nasc>"+DtNa$+"</data_nasc>")
  fx=FicLinGrv(1,"               <data_entr_emp>"+DtAd$+"</data_entr_emp>")
  fx=FicLinGrv(1,"               <data_ult_prom>"+DtPr$+"</data_ult_prom>")

  if SitProf$="3" then
    fx=FicLinGrv(1,"               <tipo_contr tbl="+chr$(34)+"RU_TIPCON"+chr$(34)+">"+TipCtr$+"</tipo_contr>")
  end if

  fx=FicLinGrv(1,"               <nacionalidade tbl="+chr$(34)+"RU_CODPAIS"+chr$(34)+">"+pais$+"</nacionalidade>")
  fx=FicLinGrv(1,"               <habil_lit tbl="+chr$(34)+"RU_HABLIT"+chr$(34)+">"+hab$+"</habil_lit>")
  fx=FicLinGrv(1,"               <sit_prof tbl="+chr$(34)+"RU_SITPROF"+chr$(34)+">"+SitProf$+"</sit_prof>")
  fx=FicLinGrv(1,"               <profissao tbl="+chr$(34)+"RU_CNP"+chr$(34)+">"+prof$+"</profissao>")


'os gerentes tem irct diferente, assim nao obriga a criar estabelecimento para eles

  trbirct$=EstIrct$
 
  if categ$="99000" then 
    trbirct$="90000"
  end if
  if categ$="99100" then 
    trbirct$="91000"
  end if
  if categ$="99200" then 
    trbirct$="92000"
  end if
  if categ$="99300" then 
    trbirct$="93000"
  end if
  if categ$="99400" then 
    trbirct$="94000"
  end if
  if categ$="99600" then 
    trbirct$="96000"
  end if
  if categ$="99700" then 
    trbirct$="97000"
  end if


  fx=FicLinGrv(1,"               <irct tbl="+chr$(34)+"RU_IRCT"+chr$(34)+">"+TrbIrct$+"</irct>")

  fx=FicLinGrv(1,"               <cat_prof tbl="+chr$(34)+"RU_CATPROF"+chr$(34)+">"+categ$+"</cat_prof>")
  fx=FicLinGrv(1,"               <rdt tbl="+chr$(34)+"RU_RG_DU_TRB"+chr$(34)+">"+RegDurTrb$+"</rdt>")
  fx=FicLinGrv(1,"               <pnt>"+Pnt$+"</pnt>")
  
  if SitProf$="3" then
    fx=FicLinGrv(1,"               <dur_temp_trab tbl="+chr$(34)+"RU_DU_TMP_TRB"+chr$(34)+">"+TempoTrabDur$+"</dur_temp_trab>")
    fx=FicLinGrv(1,"               <org_temp_trab tbl="+chr$(34)+"RU_ORG_TMP_TRB"+chr$(34)+">"+TempoTrabOrg$+"</org_temp_trab>")
  end if


  fx=FicLinGrv(1,"               <rem_devida_Out>"+vbaseN$+"</rem_devida_Out>")
  fx=FicLinGrv(1,"               <rem_paga_Out>"+vbaseP$+"</rem_paga_Out>")  
  

  if lstFaltas=1 then
  fx=FicLinGrv(1,"               <mot_rem_inf_Out>")
    FltMax=GpeRelUniFx$("FALTAS","CNT",trb$)
    for FltIdx=1 to FltMax
      Mot$=GpeRelUniFx$("FALTAS","FLT_COD",FltIdx)
      fx=FicLinGrv(1,"                 <motivo tbl="+chr$(34)+"RU_MOT_H_NREM"+chr$(34)+">"+mot$+"</motivo>")
    next
    fx=FicLinGrv(1,"               </mot_rem_inf_Out>")
  end if

  fx=FicLinGrv(1,"               <horas_remun_Out>"+hrn$+"</horas_remun_Out>")
  fx=FicLinGrv(1,"               <sub_ref_Out>"+alim$+"</sub_ref_Out>")

  if turno$<>"" then
    fx=FicLinGrv(1,"               <sub_turn_Out>"+turno$+"</sub_turn_Out>")
  end if
  if oPremSReg$<>"" then
    fx=FicLinGrv(1,"               <out_sub_Out>"+OpremSreg$+"</out_sub_Out>")
  end if
  fx=FicLinGrv(1,"               <prest_ir_Out>"+pi$+"</prest_ir_Out>")
  if hxTotRem$<>"" then
    fx=FicLinGrv(1,"               <r_supl_Out>"+hxTotRem$+"</r_supl_Out>")
    fx=FicLinGrv(1,"               <horas_supl_Out>"+hxTot$+"</horas_supl_Out>")
    fx=FicLinGrv(1,"               <t_horas_1art227>"+hx1$+"</t_horas_1art227>")
    fx=FicLinGrv(1,"               <t_horas_2art227>"+hx2$+"</t_horas_2art227>")
  end if
  fx=FicLinGrv(1,"             </trabalhador>")
  next

  fx=FicLinGrv(1,"         </trabalhadores>")
end if

  Fx=FicLinGrv(1,"       </estab>")
next

fx=FicLinGrv(1,"     </estabs>")


fx=FicLinGrv(1,"   </anexo_qp>")
call Linha
end sub





'-----------------------------------------------------------------------------------
sub anexo_zero
'-----------------------------------------------------------------------------------
fx=FicLinGrv(1,"   <anexo_zero xmlns="+chr$(34)+"http://www.gep.mtss.gov.pt/sguri/ru/anexo_zero"+chr$(34)+" XML_DATA="+chr$(34)+"1.0.0"+chr$(34)+" ano="+chr$(34)+RelAno$+chr$(34)+" entidade="+chr$(34)+EmpRuId$+chr$(34)+">")
fx=FicLinGrv(1,"     <pessoas_servico_31Dez>"+EmpNumP$+"</pessoas_servico_31Dez>")
fx=FicLinGrv(1,"     <pessoas_servico_medio>"+EmpNumP$+"</pessoas_servico_medio>")
fx=FicLinGrv(1,"     <trab_conta_outrem_31Dez>"+EmpNumP$+"</trab_conta_outrem_31Dez>")
fx=FicLinGrv(1,"     <trab_conta_outrem_medio>"+EmpNumP$+"</trab_conta_outrem_medio>")
fx=FicLinGrv(1,"     <associacoes inscrita="+chr$(34)+chr$(34)+"/>")
fx=FicLinGrv(1,"     <trab_suplementar horas_realizadas="+chr$(34)+chr$(34)+"/>")
fx=FicLinGrv(1,"     <capital_social>"+EmpCapV$+"</capital_social>")
fx=FicLinGrv(1,"     <cap_social_priv_nac>"+EmpCapP1$+"</cap_social_priv_nac>")
fx=FicLinGrv(1,"     <cap_social_estrang>"+EmpCapP2$+"</cap_social_estrang>")
fx=FicLinGrv(1,"     <cap_social_pub_nac>"+EmpCapP3$+"</cap_social_pub_nac>")

fx=FicLinGrv(1,"     <vol_negocios ano="+chr$(34)+RelAno$+chr$(34)+">"+EmpVnd$+"</vol_negocios>")
fx=FicLinGrv(1,"   </anexo_zero>")
call Linha
end sub


'-----------------------------------------------------------------------------------
sub anexos_fim
'-----------------------------------------------------------------------------------
fx=FicLinGrv(1," </anexos>")
call Linha
end sub


'-----------------------------------------------------------------------------------
sub relatorio_fim
'-----------------------------------------------------------------------------------
fx=FicLinGrv(1,"</relatorio_unico>")
end sub


'===================================================================================
'-----------------------------------------------------------------------------------
sub ValoresTrb
'-----------------------------------------------------------------------------------

fx=GpeAcmMovTrb(trb$,-1)   'acumular movimentos trabalhador

VbaseN$     = NumXml$(GpeAcmLst("V","RU","VB"),2)
VbaseP$     = NumXml$(GpeAcmLst("V","RU","VBP"),2)

Pi$         = NumXml$(GpeAcmLst("V","RU","PI"),2)

if pi$="" then
  pi$="0.00"
end if

Alim$       = NumXml$(GpeAcmLst("V","RU","ALIM"),2)
OPremSreg$  = NumXml$(GpeAcmLst("V","RU","OPREM")+ GpeAcmLst("V","RU","SREG"),2)


Turno$      = NumXml$(GpeAcmLst("H","RU","TURNO"),2)
Hx1$        = NumXml$(GpeAcmLst("H","RU","HX1"),2)
Hx2$        = NumXml$(GpeAcmLst("H","RU","HX2"),2)
HxTot$      = NumXml$(GpeAcmLst("H","RU","HX1")+GpeAcmLst("H","RU","HX2"),2)
HxTotRem$   = NumXml$(GpeAcmLst("V","RU","HX1")+GpeAcmLst("V","RU","HX2"),2)
Hrn$        = NumXml$(GpeAcmLst("H","RU","HN"))

if vBasep$="" then
  vBasep$="0.00"
  Hrn$="0"
end if


'fx=msgbox(vbasep$,trb$)

Pnt$        = NumSpi$(Gpe_Mst_horas,3,1)


lstFaltas=0
if vbaseN$<>vbaseP$ then
  lstFaltas=1
end if


Nome$      = Gpe_Mst_Nome$
DtNa$      = FrmDt$("A",Gpe_Mst_DtNasc)+"-"+FrmDt$("M",Gpe_Mst_DtNasc)
DtAd$      = FrmDt$("A",Gpe_Mst_DtAdmi)+"-"+FrmDt$("M",Gpe_Mst_DtAdmi)
DtPr$      = FrmDt$("A",Gpe_Mst_DtProm)+"-"+FrmDt$("M",Gpe_Mst_DtProm)


if Gpe_Mst_DtAdmi=0 then 
  DtAd$=""
end if

if Gpe_Mst_DtProm=0 then 
  DtPr$=""
end if


Categ$     = NumSpi$(GpeTabCon$("CAT",Gpe_Mst_Categ,"IRCT"),5)
Prof$      = NumSpi$(GpeTabCon$("PROF",Gpe_Mst_Prof$,"CNP"),6)
Hab$       = NumSpi$(Gpe_Mst_Habil$,3)
Pais$      = Gpe_Ru_Pais$

Dl2098$    = NumSpi$(Gpe_Mst_2098$,1)
SitProf$   = NumSpi$(Gpe_Mst_SitProf$,1)
TipCtr$    = Gpe_Mst_TipContr$
Sex$       = NumSpi$(GpeFrmCodSit$("SEXO_N",Gpe_Mst_Sexo$),1)
CrssNb$    = NumSpi$(Gpe_Mst_CrssNb$,11)

' ======  NOVOS

regRfm$    =Gpe_Ru_RegRfm
regRfmCod$ =Gpe_Ru_RegRfmCod


dtSaiVl     = Gpe_Ru_DtSaida
DtSai$      = FrmDt$("A",Gpe_Ru_DtSaida)+"-"+FrmDt$("M",Gpe_Ru_DtSaida)
SaiMotivo$  = Gpe_Ru_SaidaMot

RegDurTrb$    = Gpe_Mst_DurTrb$
TempoTrabOrg$ = Gpe_Ru_TempoTrabOrg
TempoTrabDur$ = Gpe_Ru_TempoTrabDur




AdmiMotivo$ = NumSpi$(Gpe_Ru_AdmiMot,2)



'if SitProf$<>"3" then       'nao e trabalhador conta outrem
'  tipCtr$="0"               'tipo contrato
'end if





end sub



'-----------------------------------------------------------------------------------
Sub ControleRem  'controlo remuneracao base
'-----------------------------------------------------------------------------------
'TotRMbase  = GpeAcmLst("V","RU","VB")+GpeAcmLst("V","QPS","PI")
'VbaseN     = GpeAcmLst("V","RU","VB")
'PreRN      = GpeAcmLst("V","QPS","PR")+GpeAcmLst("V","QPS","DIA")
'TSupN      = GpeAcmLst("V","QPS","HX")



'HeN        = GpeAcmLst("H","QPS","HX")
'TotHr      = GpeAcmLst("H","QPS","HN")+GpeAcmLst("H","QPS","HX")

VbaseN     = Gpe_Mst_vbase
VbaseP     = GpeAcmLst("V","RU","VB")
Pi         = GpeAcmLst("V","RU","PI")
Hx1        = GpeAcmLst("H","RU","HX1")
Hx2        = GpeAcmLst("H","RU","HX2")
Hrn         = GpeAcmLst("H","RU","HN")
HrMst       = GpeHrCnv("SM",Gpe_Mst_Horas)
Alim       = GpeAcmLst("V","RU","ALIM")
Turno      = GpeAcmLst("V","RU","TURNO")
'Prem       = GpeAcmLst("V","RU","OPREM")
'OSReg      = GpeAcmLst("V","RU","SREG")





'if HnN=MstHr then      'valor normal
'  ctl$="0"
'end if

'if MstHr<>HnN then     'teve faltas
'  ctl$="1"
'end if

'if TotRmBase=0 then            'nao tem recebimento
'   if TotHr=0 then             'nao tem horas
'      ctl$="2"
'   end if
'end if

'if VbaseN=0 then               'nao tem recebimento
'   if HnN=0 then               'nao tem horas
'     if TotRmBase>0 then
'        ctl$="3"               'campo controlo
'     end if
'   end if
'end if

end sub




##





