'Nome       : QPS.Std
'Tipo       : LST
'Data       : 2005/11/23
'Versao     : 1.6
'Descricao  : Listagem de quadros de pessoal 

'------------------------------------------------------------------------------
'#VER - Historia de modificacoes
'------------------------------------------------------------------------------
'- Versao : 1.0  1999/03/19 ---------------------------------------------------
'Versao base

'- Versao : 1.0a 2000/06/29 ---------------------------------------------------
'Formatar valores consoante moeda da empresa

'- Versao : 1.0b 2000/09/07 ---------------------------------------------------
'Permitir indicar a situação dos trabalhadores a listar

'- Versao : 1.0c 2000/11/03 ---------------------------------------------------
'Novos impressos para quadro pessoal

'- Versao : 1.0d 2000/11/14 ---------------------------------------------------
'Correccao na apresentacao de valores no quadro pessoal da empresa

'- Versao : 1.0e 2000/11/20 ---------------------------------------------------
'Apenas permitia vencimentos até 99 contos
'Reajuste de posicoes

'- Versao : 1.0f 2000/11/29 ---------------------------------------------------
'Reajuste de posicoes

'- Versao : 1.0g 2001/11/21 ---------------------------------------------------
'Nao Imprimia correctamente o nome e contribuinte do Crss do Establecimento
'Nao apresentava o valor das horas extra

'- Versao : 1.1  2002/11/18 ---------------------------------------------------
'Suporte informatico
'Ajustes na impressao modo texto (valores decimais)

'- Versao : 1.2  2002/11/19 ---------------------------------------------------
'Ajuste no contribuinte da seguranca social na folha do estabelecimento

'- Versao : 1.3  2002/11/22 ---------------------------------------------------
'Impresao de folha oficial
' - Mostrar valor horas extra
' - Mostrar data no formato AAAAMM

'- Versao : 1.4  2002/11/25 ---------------------------------------------------
'Suporte informatico
' - Ajuste no campo de controlo de remuneracao
'Impresao de folha oficial
' - Ajustes de linha

'- Versao : 1.4a 2003/07/29 ---------------------------------------------------
'correcao ortografica palavra : contracto

'- Versao : 1.5c 2003/11/07 ---------------------------------------------------
'Suporte informatico ver 1.4 2003

'- Versao : 1.5d 2003/11/11 ---------------------------------------------------
'suporte informatico - Azerar contador de linhas no inicio da listagem

'- Versao : 1.6  2004/11/04 ---------------------------------------------------
'suporte informatico - Formato para 2004

'- Versao : 1.6  2004/11/?? ---------------------------------------------------
'suporte informatico - correccao na contagem dos funcionarios para o IRCT

'- Versao : 1.6c 2005/??/?? ---------------------------------------------------
'Ajustes na impressao em papel


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


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


'-----------------------------------------------------------------------------
' Configuracao do documento
'-----------------------------------------------------------------------------
#DOC
Tipo                       [DocTip]=QPS
Nome                       [DocNom]=QPS_Emp,Empresa  (Modelo Oficial)

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

'funcoes de listagem
Listar cabecalho            [FxCAB]=Emp_Cab
Listar linhas               [FxLIN]=Emp_Lin
Listar fim                  [FxFIM]=Emp_Fim
##


#DOC
Tipo                       [DocTip]=ORDGER
Nome                       [DocNom]=QPS_TRB,Trabalhadores (Modelo Oficial)

'formato
Saida/Impressora           [DocSai]=1
Linhas por pagina          [DocLpg]=13
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=1
Ordenacao                  [DocEsp]=ORD=QPS
Listar valores a 0         [DocEsp]=LstZer=1

'funcoes de listagem
Listar cabecalho            [FxCAB]=Trb_Cab
Listar linhas               [FxLIN]=Trb_Lin;Nor,3;Ajt,3
Listar fim                  [FxFIM]=Trb_Fim
##


#DOC
Tipo                       [DocTip]=QPS_SPI
Nome                       [DocNom]=QPS2003,Suporte informatico

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



'funcoes de listagem
Listar cabecalho            [FxCAB]=QpsCab
Listar linhas               [FxLIN]=QpsLinTrb
Listar fim                  [FxFIM]=QpsFim
##


#DOC
Tipo                       [DocTip]=QPS_SPI
Nome                       [DocNom]=QPS2003Cnf,conf de Disquete

'formato
Saida/Impressora           [DocPrt]=1
Linhas por pagina          [DocLpg]=40
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0
Nao Apresentar no menu     [DocEsp]=MnuInv=0

'funcoes de listagem
Listar cabecalho            [FxCAB]=QpsCabCnf
Listar linhas               [FxLIN]=QpsLinCnf,0
Listar fim                  [FxFIM]=QpsFimCnf
##


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



'cabecalho
Folha        = FrmVal$(Doc_CntPag,21,3.0)
DatAno       = left$(FrmVal$(Sig_DtHoje,44,0),4)
DatDia       = right$(FrmVal$(Sig_DtHoje,44,0),2)
DatMes       = FrmVal$(Sig_DtHoje,46,0)

'empresa
EmpCont      = Emp_Inf_Contrib$
EmpNome      = Emp_Inf_Nome$
EmpMorada    = Emp_Inf_Morada$
EmpLocal     = Emp_Inf_Local$
EmpCPost     = Emp_Inf_CPost$
EmpDistrito  = Emp_Inf_Dist$
EmpConcelho  = Emp_Inf_Conc$
EmpFreguesia = Emp_Inf_Freg$
EmpTelef     = Emp_Inf_Telef$
EmpFax       = Emp_Inf_Fax$

EmpAssocPtr  = Emp_Inf_AssPtr$
EmpActiv     = Emp_Inf_Activ$
EmpNatJur    = Emp_Inf_NatJur$
EmpFormGes   = Emp_Inf_FormGes$
EpNumPes     = Emp_Inf_NumPes
EpACon       = FrmDt$("A4",Emp_Inf_DtConst)

EmpCapSoc    = FrmVal$(Emp_Inf_CapSoc,21,10.2)
EpCpScN      = FrmVal$(Emp_Inf_CapSocNac,21,3.1)
EpCpScE      = FrmVal$(Emp_Inf_CapSocEst,21,3.1)
EpCpScP      = FrmVal$(Emp_Inf_CapsocPub,21,3.1)
EmpVendas    = FrmMoe$("",12,Emp_Inf_VolVend)

'dados do estabelecimento para empresa
EstNome      = GpeTabCon$("EST",MemTxt$(10),"NOME")
EstMorada    = GpeTabCon$("EST",MemTxt$(10),"MORADA")
EstLocal     = GpeTabCon$("EST",MemTxt$(10),"LOC")
EstCPost     = GpeTabCon$("EST",MemTxt$(10),"CPOST")
EstDistrito  = GpeTabCon$("EST",MemTxt$(10),"DIST")
EstConcelho  = GpeTabCon$("EST",MemTxt$(10),"CONC")
EstFreguesia = GpeTabCon$("EST",MemTxt$(10),"FREG")
EstTelef     = GpeTabCon$("EST",MemTxt$(10),"TELEF")
EstFax       = GpeTabCon$("EST",MemTxt$(10),"FAX")
EstActiv     = GpeTabCon$("EST",MemTxt$(10),"ACTV")
EstNumPes    = GpeTabCon$("EST",MemTxt$(10),"NPESS")
EstIrt       = GpeTabCon$("EST",MemTxt$(10),"IRTDES")
EstUltTabSal = FrmDt$("A",GpeTabCon$("EST",MemTxt$(10),"IRTDTULTTB"))+" "+FrmDt$("M",GpeTabCon$("EST",MemTxt$(10),"IRTDTULTTB"))

EstBolTE     = trim$(GpeTabCon$("EST",MemTxt$(10),"IRTBLT"))+ "   "+ FrmDt$("A",GpeTabCon$("EST",MemTxt$(10),"IRTDTPUB"))+" "+FrmDt$("M",GpeTabCon$("EST",MemTxt$(10),"IRTDTPUB"))+" "+FrmDt$("D",GpeTabCon$("EST",MemTxt$(10),"IRTDTPUB"))
EstBolTE1    = trim$(GpeTabCon$("EST",MemTxt$(10),"IRTBLT"))+ "  "+ FrmDt$("A",GpeTabCon$("EST",MemTxt$(10),"IRTDTPUB"))+" "+FrmDt$("M",GpeTabCon$("EST",MemTxt$(10),"IRTDTPUB"))+" "+FrmDt$("D",GpeTabCon$("EST",MemTxt$(10),"IRTDTPUB"))


EstCssNome   = GpeTabCon$("CSS",GpeTabCon$("EST",MemTxt$(10),"CSS"),"NOME")
'EstCssCont   = left$(GpeTabCon$("CSS",GpeTabCon$("EST",MemTxt$(10),"CSS"),"CTRB"),9)
EstCssCont   = GpeTabCon$("CSS",GpeTabCon$("EST",MemTxt$(10),"CSS"),"CTRB")

'dados do estabelecimento para o trabalhador
EstTrbNome      = GpeTabCon$("EST",Gpe_Mst_Est$,"NOME")
EstTrbMorada    = GpeTabCon$("EST",Gpe_Mst_Est$,"MORADA")
EstTrbLocal     = GpeTabCon$("EST",Gpe_Mst_Est$,"LOC")
EstTrbCPost     = GpeTabCon$("EST",Gpe_Mst_Est$,"CPOST")              
EstTrbIrt       = GpeTabCon$("EST",Gpe_Mst_Est$,"IRTDES")                                                                      
                                                              
EstTrbBolTE     = GpeTabCon$("EST",Gpe_Mst_Est$,"IRTBLT") +"  "FrmDt$("A",GpeTabCon$("EST",Gpe_Mst_Est$,"IRTDTPUB"))+" "+FrmDt$("M",GpeTabCon$("EST",Gpe_Mst_Est$,"IRTDTPUB"))+FrmDt$("D",GpeTabCon$("EST",Gpe_Mst_Est$,"IRTDTPUB"))
EstTrbUltTabSal = GpeTabCon$("EST",Gpe_Mst_Est$,"IRTDTULTTB")

'linha 1
L               = CntL
Nome            = Gpe_Mst_Nome$
DtNa            = FrmDt$("AM",Gpe_Mst_DtNasc)
DtAd            = FrmDt$("AM",Gpe_Mst_DtAdmi)
DtPr            = FrmDt$("AM",Gpe_Mst_DtProm)

Vbase           = FrmVal$(GpeAcmLst("V","QPS","VB"),21,6.2)
PreR            = FrmVal$(GpeAcmLst("V","QPS","PR")+GpeAcmLst("V","QPS","DIA"),21,6.2)
PreI            = FrmVal$(GpeAcmLst("V","QPS","PI"),21,6.2)
HeV             = FrmVal$(GpeAcmLst("V","QPS","HX"),21,6.2)

Hn              = FrmVal$(GpeAcmLst("H","QPS","HN"),21,3)
He              = FrmVal$(GpeAcmLst("H","QPS","HX"),21,3)
Hs              = FrmVal$(Gpe_Mst_Horas,21,3)

'linha 2
Categ           = Left$(GpeTabCon$("CAT",Gpe_Mst_Categ,"DESC"),30)
Prof            = Left$(GpeTabCon$("PROF",Gpe_Mst_Prof$,"DESC"),30)
Hab             = Left$(GpeTabCon$("HAB",Gpe_Mst_Habil$,"DESC"),28)



CodDiv          = Gpe_Mst_Pais+" "+Gpe_Mst_2098$+" "+Gpe_Mst_SitProf$+" "+Gpe_Mst_TipContr$+" "+Gpe_Mst_DurTrb$+" "+GpeFrmCodSit$("SEXO_N",Gpe_Mst_Sexo$)
CodDiv0         =             Gpe_Mst_2098$+" "+Gpe_Mst_SitProf$+" "+Gpe_Mst_TipContr$+" "+Gpe_Mst_DurTrb$+" "+GpeFrmCodSit$("SEXO_N",Gpe_Mst_Sexo$)

CrssNb          = Gpe_Mst_CrssNb$



'variveis para listagem de conferencia
Cnfv0     = MemTxt$(0)
Cnfv1     = MemTxt$(1)
Cnfv2     = MemTxt$(2)
Cnfv3     = MemTxt$(3)
Cnfv4     = MemTxt$(4)
Cnfv5     = MemTxt$(5)
Cnfv6     = MemTxt$(6)
Cnfv7     = MemTxt$(7)
Cnfv8     = MemTxt$(8)
Cnfv9     = MemTxt$(9)
Cnfv10    = MemTxt$(10)
Cnfv11    = MemTxt$(11)
Cnfv12    = MemTxt$(12)
Cnfv13    = MemTxt$(13)
Cnfv14    = MemTxt$(14)
Cnfv15    = MemTxt$(15)
Cnfv16    = MemTxt$(16)
Cnfv17    = MemTxt$(17)
Cnfv18    = MemTxt$(18)
Cnfv19    = MemTxt$(19)
Cnfv20    = MemTxt$(20)
Cnfv21    = MemTxt$(21)
Cnfv22    = MemTxt$(22)
Cnfv23    = MemTxt$(23)
Cnfv24    = MemTxt$(24)
Cnfv25    = MemTxt$(25)
Cnfv26    = MemTxt$(26)
Cnfv27    = MemTxt$(27)
Cnfv28    = MemTxt$(28)
Cnfv29    = MemTxt$(29)
Cnfv30    = MemTxt$(30)
##

'-----------------------------------------------------------------------------
' Formato do documento
'-----------------------------------------------------------------------------
#PGM
'------Valores da empresa ----------------------------------------------------
Sub Emp_Cab
Print PrtCmd$("[10CPI]")
?
?
?         #
?                                                                                                                                 @DatAno #
?                   @EmpNome                                                                                                       #
?
?                         @EmpMorada                                                                                                   #
?
?               @EmpLocal                            @EmpTelef       @EmpFax                                                            #
?
?                @EmpCPost                                    @EmpMail                                                                  #
?
?                         @EmpDistrito                @EmpConcelho                @EmpFreguesia                                        #
?
?                                  @EmpAssocPtr                                                                                        #
?
?
?
?                           @EmpActiv                                                                                                 #
?
?                   @EmpNatJur                                                                                                @EpACon  #
?
?                                                    @EmpCont                                                                  @EpNumPes
? 
?                                                                                                                            @EpCpScN #
?
?                                             @EmpCapSoc                                                                     @EpCpScE #
?  
?                                                                                                                            @EpCpScP #
?  
?                                                                                                                     @EmpVendas       #
?
?
?
?                         @EstNome                                                                                                     #
?
?                         @EstMorada                                                                                                   #
?
?                @EstLocal                           @EstTelef       @EstFax                                                           #
?
?                @EstCPost                                      @EstMail                                                          #
?
?                          @EstDistrito                @EstConcelho                @EstFreguesia                                    #
?  
?                           @EstCssNome                                @EstCssCont                                                 #
?
?                                 @EstActiv                                                                                         #
?
?                                                                          @EstNumPes                                                  #
? 
?                                       @EstIrt                                                                                        #
?
?                                                               @EstBolTE                                                              #
? 
?                                                                                         @EstUltTabSal                                #
End Sub


Sub Emp_Lin
?
End Sub


Sub Emp_Fim
?
?
?
?
?
?
?  @EmpLocal              @DatDia     @DatMes          @DatAno
?
?
Print PrtCmd$("[10PCILN]");
Print PrtCmd$("[SP]");
End Sub






'------Valores dos trabalhadores----------------------------------------------------
Sub Trb_Cab
Print PrtCmd$("[10CPILN]");
?
?
?
?                                                                                                                               @DatAno#
?                    @EstNome                                                                  @EmpCont           #
?
?         @EstMorada                                        @EstLocal                   @EstCPost                   #
?
?                                    @EstIrt                                                                         #
?
?                                                         @EstBolTE1                                 @EstUltTabSal  #
?
?
?
?
?
?
?
?
?
?
?
?
CntL=0
End Sub


Sub Trb_Lin
CntL=Cntl+1
?@L @Nome                                     @DtNa  @DtAd  @DtPr @Vbase    @PreR    @Hev     @PreI    @Hn @He @Hs #

If Gpe_Mst_Pais=0 then
?@Categ                         @Prof                          @Hab                             @CodDiv0  @CrssNb    #
else
?@Categ                         @Prof                          @Hab                         @CodDiv       @CrssNb    #
end if
?
End Sub


Sub Trb_LinAjt
?
?
?
End Sub


Sub Trb_Fim
?
?  @EmpLocal              @DatDia     @DatMes          @DatAno
?
Print PrtCmd$("[10PCILN]");
Print PrtCmd$("[SP]");
end sub





'««««««««««««««««««««««««««
'««««««««««««««««««««««««««««««««


'===================================================================================
'  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")
fx=SpiRegCmp(  2,"Tipo registo")
fx=SpiRegCmp(100,"Contacto")
fx=SpiRegCmp(  9,"Telefone")
fx=SpiRegCmp(  9,"Telefone")
fx=SpiRegCmp(  9,"FAX")
fx=SpiRegCmp( 60,"EMAIL")
fx=SpiRegCmp( 60,"Empresa produtora")
fx=SpiRegCmp( 40,"Aplicação")
fx=SpiRegCmp( 20,"Versão")

'registo de empresa
fx=SpiRegTpl("10","Registo de empresa")
fx=SpiRegCmp(  2,"Tipo de Registo")
fx=SpiRegCmp( 9,"Contribuinte")
fx=SpiRegCmp( 4,"Ano")
fx=SpiRegCmp(60,"Nome da empresa")
fx=SpiRegCmp(40,"Morada")
fx=SpiRegCmp(20,"Localidade")
fx=SpiRegCmp( 7,"Código Postal")
fx=SpiRegCmp(20,"Código Postal")
fx=SpiRegCmp( 9,"Telefone")
fx=SpiRegCmp( 9,"Fax$")
fx=SpiRegCmp(60,"Email")
fx=SpiRegCmp( 6,"Cod. Distrito")
fx=SpiRegCmp( 3,"Cod.Ass.Patronal")
fx=SpiRegCmp( 3,"Cod.Ass.Patronal2")
fx=SpiRegCmp( 3,"Cod.Ass.Patronal3")
fx=SpiRegCmp( 5,"CAE")
fx=SpiRegCmp( 2,"Natureza Juridica")
fx=SpiRegCmp( 4,"Ano Constituicao")
fx=SpiRegCmp( 5,"Numero Pessoas")
fx=SpiRegCmp(12,"Capital Social",21,13.2)
fx=SpiRegCmp( 4,"% Nacional",21,3.1)
fx=SpiRegCmp( 4,"% Estrangeiro",21,3.1)
fx=SpiRegCmp( 4,"% Publico",21,3.1)
fx=SpiRegCmp(12,"Volume Vendas",21,10.2)


'registo de estabelecimento
fx=SpiRegTpl("20","Registo de Estabelecimento")
fx=SpiRegCmp( 2,"Tipo de registo")
fx=SpiRegCmp( 4,"Estabelecimento")
fx=SpiRegCmp(60,"Nome")
fx=SpiRegCmp(40,"Morada")
fx=SpiRegCmp(20,"Localidade")
fx=SpiRegCmp( 7,"Cód.Postal")
fx=SpiRegCmp(20,"Cód.Postal")
fx=SpiRegCmp( 9,"Telefone")
fx=SpiRegCmp( 9,"Fax")
fx=SpiRegCmp(60,"Email")
fx=SpiRegCmp( 6,"Cod. Dist.Conc.Freg.")
fx=SpiRegCmp(11,"Contrib. Seg.Social")
fx=SpiRegCmp( 5,"CAE")
fx=SpiRegCmp( 5,"Numero pessoas")


'registo dos IRCT
fx=SpiRegTpl("30","Registo de IRCT")
fx=SpiRegCmp( 2,"Tipo de Registo")
fx=SpiRegCmp( 4,"Estabelecimento")
fx=SpiRegCmp( 5,"Código IRCT")
fx=SpiRegCmp( 2,"Num.Boletim")
fx=SpiRegCmp( 8,"Data Boletim")
fx=SpiRegCmp( 6,"Data da tabela")
fx=SpiRegCmp( 5,"Trabalhadores")


'registo de trabalhador
fx=SpiRegTpl("40","Registo de trabalhador")
fx=SpiRegCmp( 2,"Tipo registo")
fx=SpiRegCmp( 4,"Estabelecimento")
fx=SpiRegCmp( 5,"Código IRCT")
fx=SpiRegCmp( 2,"Linha")
fx=SpiRegCmp(40,"Nome Trabalhador")
fx=SpiRegCmp( 6,"Data Nascimento",21,4.2)
fx=SpiRegCmp( 6,"Admissão na empresa",21,4.2)
fx=SpiRegCmp( 6,"Ultima Promoção",21,4.2)
fx=SpiRegCmp( 8,"Remuneração base",21,8.2)
fx=SpiRegCmp( 8,"Premio Subs.Regulares",21,8.2)
fx=SpiRegCmp( 8,"Trabalho suplementar",21,8.2)
fx=SpiRegCmp( 8,"Prestações Iregulares",21,8.2)
fx=SpiRegCmp( 3,"Horas Normais")
fx=SpiRegCmp( 3,"Horas Suplementares")
fx=SpiRegCmp( 3,"Período Normal Trablho")
fx=SpiRegCmp( 1,"Controle Remun.Base")
fx=SpiRegCmp( 5,"Código Categoria Profissional")
fx=SpiRegCmp( 6,"Código Profissão")
fx=SpiRegCmp( 3,"Código Habilitação")
fx=SpiRegCmp( 3,"Código Nacionalidade")
fx=SpiRegCmp( 1,"Dec.Lei 20/98")
fx=SpiRegCmp( 1,"Situação na Profissão")
fx=SpiRegCmp( 1,"Tipo Contrato")
fx=SpiRegCmp( 1,"Regime Duração Trabalho")
fx=SpiRegCmp( 1,"Sexo")
fx=SpiRegCmp(11,"Num. Seguranca Social")
end sub


'-----------------------------------------------------------------------------------
Sub QpsLinCont  'listar linha de contacto
'-----------------------------------------------------------------------------------
r$         = "00"
Nom$       = TxTamAjt$(Emp_Inf_Nome$,100)
Tel1$      = NumSpi$(Emp_Inf_Telef$,9)
Tel2$      = NumSpi$("",9)
Fax$       = NumSpi$(Emp_Inf_Fax$,9)
email$     = TxTamAjt$(Emp_Inf_Email$,60)
sh$        = TxTamAjt$("Olisoft, Soluções informáticas - Leiria",60)
app$       = TxTamAjt$("Gestão Pessoal",40)
ver$       = TxTamAjt$(Gpe_Esp_Versao$,20)

txr$=r$+Nom$+Tel1$+Tel2$+Fax$+email$+sh$+app$+ver$
txg$=TxTamAjt$(txr$,309)                                       'ajustar
x=FicLinGrv(1, txg$)                                           'registar
end sub


'-----------------------------------------------------------------------------------
Sub QpsLinEmp  'empresa (suporte informatico)
'-----------------------------------------------------------------------------------
r$         = "10"
Ctr$       = NumSpi$(Emp_Inf_Contrib$,9)
Ano$       = NumSpi$(FrmDt$("A4",Sig_DtHoje),4)
Nom$       = TxTamAjt$(Emp_Inf_Nome$,60)
Mor$       = TxTamAjt$(Emp_Inf_Morada$,40)
Loc$       = TxTamAjt$(Emp_Inf_Local$,20)
CP1$       = NumSpi$(left$(trim$(Emp_Inf_CPost$),4)+Mid$(Emp_Inf_CPost$,6,3),7)
CP2$       = TxTamAjt$(Mid$(Emp_Inf_CPost$,10),20)
Tel$       = NumSpi$(Emp_Inf_Telef$,9)
Fax$       = NumSpi$(Emp_Inf_Fax$,9)
email$     = TxTamAjt$(Emp_Inf_Email$,60)
cDistr$    = NumSpi$(Emp_Inf_CodDist$,6)
Ptr1$      = NumSpi$(TxIde$(Emp_Inf_Opc$,"ASSPTRCOD"),3)
Ptr2$      = "000"  
Ptr3$      = "000"
Cae$       = NumSpi$(Emp_Inf_Cae$,5)
NJur$      = NumSpi$(TxIde$(Emp_Inf_Opc$,"NATJURCOD"),2)
AnoCon$    = NumSpi$(FrmDt$("A4",Emp_Inf_DtConst),4)
NumP$      = NumSpi$(Emp_Inf_NumPes,5)
Capv$      = NumSpi$(Emp_Inf_CapSoc,12,2)
CapP1$     = NumSpi$(Emp_Inf_CapSocNac,4,1)
CapP2$     = NumSpi$(Emp_Inf_CapSocEst,4,1)
CapP3$     = NumSpi$(Emp_Inf_CapsocPub,4,1)
Cap$=Capv$+CapP1$+CapP2$+CapP3$
Vnd$       = NumSpi$(Emp_Inf_VolVend,12,2)

txr$=r$+Ctr$+Ano$+Nom$+Mor$+Loc$+CP1$+CP2$+Tel$+Fax$+email$+cDistr$+Ptr1$+Ptr2$+Ptr3$+Cae$+NJur$+AnoCon$+NumP$+Cap$+Vnd$
txg$=TxTamAjt$(txr$,307)                                     'ajustar
x=FicLinGrv(1, txg$)                                         'registar
CntLin=0                                                     'azerar contador linhas
End Sub


'-----------------------------------------------------------------------------------
Sub QpsLinEst  'estabelecimento (suporte informatico)
'-----------------------------------------------------------------------------------
r$         = "20"
Num$       = NumSpi$(GpeTabCon$("EST",MemTxt$(10),"QPSCOD"),4)
Nome$      = TxTamAjt$(GpeTabCon$("EST",MemTxt$(10),"NOME"),60)
Morada$    = TxTamAjt$(GpeTabCon$("EST",MemTxt$(10),"MORADA"),40)
Local$     = TxTamAjt$(GpeTabCon$("EST",MemTxt$(10),"LOC"),20)
CP1$       = NumSpi$(left$(GpeTabCon$("EST",MemTxt$(10),"CPOST"),4)+Mid$(GpeTabCon$("EST",MemTxt$(10),"CPOST"),6,3),7)
CP2$       = TxTamAjt$(Mid$(GpeTabCon$("EST",MemTxt$(10),"CPOST"),10),20)
Telef$     = TxSpi$(" ",GpeTabCon$("EST",MemTxt$(10),"TELEF"),9)
Fax$       = TxSpi$(" ",GpeTabCon$("EST",MemTxt$(10),"FAX"),9)
Mail$      = TxTamAjt$(Emp_Inf_Email$,60)
Distrito$  = NumSpi$(GpeTabCon$("EST",MemTxt$(10),"CODDIST"),6)
CssCtrb$   = NumSpi$(GpeTabCon$("CSS",GpeTabCon$("EST",MemTxt$(10),"CSS"),"CTRB"),11)
Cae$       = NumSpi$(Emp_Inf_Cae$,5)
NumPes$    = NumSpi$(GpeTabCon$("EST",MemTxt$(10),"NPESS"),5)

txr$=r$+Num$+Nome$+Morada$+Local$+CP1$+CP2$+Telef$+Fax$+Mail$+Distrito$+CssCtrb$+Cae$+NumPes$
txg$=TxTamAjt$(txr$,258)                                       'ajustar
x=FicLinGrv(1, txg$)                                           'registar
End Sub


'-----------------------------------------------------------------------------------
Sub QpsLinIrct  'codigos irct (suporte informatico)
'-----------------------------------------------------------------------------------
r$         = "30"
Num$       = NumSpi$(GpeTabCon$("EST",MemTxt$(10),"QPSCOD"),4)
IrCod$     = NumSpi$(GpeTabCon$("EST",MemTxt$(10),"IRTCOD"),5)
IrBlt$     = NumSpi$(GpeTabCon$("EST",MemTxt$(10),"IRTBLT"),2)
IrDt$      = NumSpi$(FrmDt$("AMD",GpeTabCon$("EST",MemTxt$(10),"IRTDTPUB")),8)
IrIni$     = NumSpi$(FrmDt$("AM",GpeTabCon$("EST",MemTxt$(10),"IRTDTULTTB")),6)
NumPes$    = NumSpi$(MemTxt$(12),5)

txr$=r$+Num$+IrCod$+IrBlt$+IrDt$+IrIni$+NumPes$
txg$=TxTamAjt$(txr$,32)                                      'ajustar
x=FicLinGrv(1, txg$)                                         'registar
end sub


'-----------------------------------------------------------------------------------
Sub QpsLinTrb 'trabalhadores (suporte informatico)
'-----------------------------------------------------------------------------------
if CntLin=0 then           'valor inicial
  CntLin=1                 'acertar contador
end if          

r$         = "40"
Num$       = NumSpi$(GpeTabCon$("EST",Gpe_Mst_Est$,"QPSCOD"),4)
IrCod$     = NumSpi$(GpeTabCon$("EST",Gpe_Mst_Est$,"IRTCOD"),5)

'««««««««««««««««««««««««««««««««««««««
if EstMem$ <> Gpe_Mst_Est$ then        'mudou estabelecimento
   CntLin=1                            'acertar contador
end if

if IrtMem$ <> NumSpi$(GpeTabCon$("EST",Gpe_Mst_Est$,"IRTCOD"),5) then        'mudou codigo irc
   CntLin=1                           'acertar contador
end if

'««««««««««««««««««««««««««««««««««««««
Ln$        = NumSpi$(CntLin,2)
Nome$      = TxTamAjt$(Gpe_Mst_Nome$,40)
DtNa$      = NumSpi$(FrmDt$("AM",Gpe_Mst_DtNasc),6)
DtAd$      = NumSpi$(FrmDt$("AM",Gpe_Mst_DtAdmi),6)
DtPr$      = NumSpi$(FrmDt$("AM",Gpe_Mst_DtProm),6)
Vbase$     = NumSpi$(GpeAcmLst("V","QPS","VB"),8,2)
PreR$      = NumSpi$(GpeAcmLst("V","QPS","PR")+GpeAcmLst("V","QPS","DIA"),8,2)
TSup$      = NumSpi$(GpeAcmLst("V","QPS","HX"),8,2)
PreI$      = NumSpi$(GpeAcmLst("V","QPS","PI"),8,2)
Hn$        = NumSpi$(GpeAcmLst("H","QPS","HN"),3)
He$        = NumSpi$(GpeAcmLst("H","QPS","HX"),3)
Pnt$       = NumSpi$(Gpe_Mst_Horas,3,1)
call ControleRem

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$      = NumSpi$(Gpe_Mst_Pais,3)
Dl2098$    = NumSpi$(Gpe_Mst_2098$,1)
SitProf$   = NumSpi$(Gpe_Mst_SitProf$,1)
TipCtr$    = NumSpi$(Gpe_Mst_TipContr$,1)
DurTrb$    = NumSpi$(Gpe_Mst_DurTrb$,1)
Sex$       = NumSpi$(GpeFrmCodSit$("SEXO_N",Gpe_Mst_Sexo$),1)
CrssNb$    = NumSpi$(Gpe_Mst_CrssNb$,11)


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

if SitProf$="1" then        'situacao para gerentes
  TipCtr$="0"               'nao especificar tipo contracto
  DurTrb$="0"               'nao tem duracao de trabalho
  Pnt$="000"                'nao tem periodo de trabalho
end if


tx1$=r$+Num$+IrCod$+Ln$+Nome$+DtNa$+DtAd$+DtPr$+Vbase$+PreR$+TSup$+PreI$+Hn$+He$+Pnt$
Tx2$=Ctl$+Categ$+Prof$+Hab$+Pais$+Dl2098$+SitProf$+TipCtr$+DurTrb$+Sex$+CrssNb$

txr$=tx1$+tx2$                                               'juntar registo
txg$=TxTamAjt$(txr$,146)                                     'ajustar
x=FicLinGrv(1, txg$)                                         'registar

'«««««««««««««««««««««««««««««««
EstMem$=Gpe_Mst_Est$                                         'memoriza estabelecimento
IrtMem$=NumSpi$(GpeTabCon$("EST",Gpe_Mst_Est$,"IRTCOD"),5)   'memorizar codigfo Irt
CntLin=CntLin+1                                              'contar
if CntLin=100 then                                           'iniciar contador?
   CntLin=1 
end if                           
End Sub

'-----------------------------------------------------------------------------------
Sub ControleRem  'controlo remuneracao base
'-----------------------------------------------------------------------------------
TotRMbase  = GpeAcmLst("V","QPS","VB")+GpeAcmLst("V","QPS","PR")+GpeAcmLst("V","QPS","DIA")+GpeAcmLst("V","QPS","PI")
VbaseN     = GpeAcmLst("V","QPS","VB")
PreRN      = GpeAcmLst("V","QPS","PR")+GpeAcmLst("V","QPS","DIA")
TSupN      = GpeAcmLst("V","QPS","HX")
PreIN      = GpeAcmLst("V","QPS","PI")
HnN        = GpeAcmLst("H","QPS","HN")
HeN        = GpeAcmLst("H","QPS","HX")
TotHr      = GpeAcmLst("H","QPS","HN")+GpeAcmLst("H","QPS","HX")

MstHr      = GpeHrCnv("SM",Gpe_Mst_Horas)

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

'fx=msgbox(str$(MstHr)+" |"+str$(HnN),str$(TotRmBase)+" | "+str$(VbaseN)+" | "+ctl$)
end sub




'=================================================================================
'  Listagem conferencia
'=================================================================================
Sub QpsCabCnf
FxDiv LstIde,16CPI,1
Print PrtCmd$("[10CPILN]");
?
?Data: @DataExt                                                    Folha No: @Pag#
end sub


Sub QpsLinCnf

if MemTxt$(1)="00" then      'Folha de contacto
   Call QpsLinCnfCont                'impressao
end if


if MemTxt$(1)="10" then      'Dados da Empresa
   Call QpsLinCnfEmp                 'linha da empresa
   Call SpiFimPagina                 'forcar fim de pagina
   CntLinEst=0                       'iniciar contador de estabelecimentos
?-------------------------------------------------------------------------------
?                         Relacao de Estabelecimentos
end if


if MemTxt$(1)="20" then      'Estabelecimento
   if CntLinEst=4 then               'nao cabe na folha
      Call SpiFimPagina              'forcar fim de pagina

?-------------------------------------------------------------------------------
?                         Relacao de Estabelecimentos

      CntLinEst=0                    'inicializar contador
   end if

   CntLinEst=CntLinEst+1             'contar
   Call QpsLinCnfEst                 'impressao estabelecimento
   TituloIrct=0                      'forcar titulo irct
end if


if MemTxt$(1)="30" then      'Codigos IRCT
   if TituloIRCT=0 then              'ainda nao listou titulo
      TituloIRCT=1                   'titulo ja listado
      Call SpiFimPagina              'forcar fim de pagina
      CntLinIRCT=0                   'inicializar contador

?-------------------------------------------------------------------------------
?               Relacao de Codigos IRCT dos estabelecimentos

   end if

   if CntLinIRCT=8 then               'nao cabe na folha
      Call SpiFimPagina               'forcar fim de pagina        
      CntLinIRCT=0                    'inicializar contador
   end if

   CntLinIRCT=CntLinIRCT+1            'contar
   Call QpsLinCnfIRCT                 'listar IRCT
   TituloTrb=0                        'forcar listar titulo de trabalhador
end if


if MemTxt$(1)="40" then     'Listar trabalhadores
    if TituloTrb=0 then
       Call SpiFimPagina
?-------------------------------------------------------------------------------
?                          Relacao de Trabalhadores
       TituloTrb=1                    'listar titulo
       CntLinTrb=0                    'acertar contador
   end if

   If CntLinTrb=12 then               'nao cabe na folha
      TituloTrb=0                     'forcar titulo/fim pagina
   end if
   Call QpsLinCnfTrb                  'listar trabalhador
end if
end sub



Sub SpiFimPagina
?-------------------------------------------------------------------------------
FxDiv LstPer,SP                    'fim de folha
call QpsCabCnf                     'cabecalho de folha
end sub

Sub QpsFimCnf
end sub


'-----------------------------------------------------------------------------------
Sub QpsLinCnfCont 'conferencia de contactos
'-----------------------------------------------------------------------------------
?-------------------------------------------------------------------------------
? Contactos
?===============================================================================
?
?     Nome: @CnfV2                                                              #
? Telefone: @CnfV3            Telefone: @CnfV4            FAX: @CnfV5           #
?    Email: @CnfV6                                                              #
?
?--------------------------------------------------------------------------------
?
?  Nome do aplicacional: @CnfV8                                                 #
?Versão do Aplicacional: @CnfV9                                                 #
?     Empresa Produtora: @CnfV7                                                 #
?
?
end sub

'-------------------------------------------------------------------------------
Sub QpsLinCnfEmp 'conferencia de empresa
'-------------------------------------------------------------------------------
?-------------------------------------------------------------------------------
? Dados da Empresa
?===============================================================================
?
?        Nome : @CnfV4                                                       #
?      Morada : @CnfV5                                                       #                          
?  Localidade : @CnfV6                                                       #     
? Cod. Postal : @CnfV7                           (Descrição): @CnfV8         #
?
?-------------------------------------------------------------------------------
?
?    Telefone : @CnfV9                            Fax      : @CnfV10          #
?    Email    : @CnfV11                                                       #   
?
?-------------------------------------------------------------------------------
?
? Codigo de Dist.Conc.Freg.   : @CnfV12                      CAE      : @CnfV16#
? Codigo Associacao Patronal  : @CnfV13   Código Natureza Juridica    : @CnfV17#
? Ano Constituicao da empresa : @CnfV18   Numero pessoas ao servico   : @CnfV19#
?
?-------------------------------------------------------------------------------
?
?    Volume negocios ano anterior : @CnfV24                 #
?
?   |  Capital social | % Privado Nacional | % Estrangeiro |   % Publico     |
?   --------------------------------------------------------------------------
?   |@CnfV20          |      @CnfV21 %     |    @CnfV22 %  |    @CnfV23 %    |
?   --------------------------------------------------------------------------
?
?
end sub


'--------------------------------------------------------------------------------
Sub QpsLinCnfEst  'conferencia de estabelecimentos
'--------------------------------------------------------------------------------
?===============================================================================
?   Codigo    | Nome
?   @CnfV2    | @CnfV3                                                         #
?-------------------------------------------------------------------------------
?      Morada : @CnfV4                                                         #                          
?  Localidade : @CnfV5                                                         #     
? Cod. Postal : @CnfV6                           (Descrição): @CnfV7           #
?    Email    : @CnfV10                                                        #   
?    Telefone : @CnfV8                             Fax      : @CnfV9           #
?-------------------------------------------------------------------------------
? Codigo Distrito Concelho : @CnfV11     Contrib.Seguranca Social: @CnfV12     #
? Codigo Activ. Economica  : @CnfV13      Numero de funcionarios : @CnfV14     #
?
end sub


'--------------------------------------------------------------------------------
Sub QpsLinCnfIRCT  'conferencia de IRCT de estabelecimento
'--------------------------------------------------------------------------------
Print PrtCmd$("[10CPILN]");
?===============================================================================
?  Codigo IRCT : @CnfV3                                              #
?-------------------------------------------------------------------------------
?  Estabelecimento:  @CnfV2                   Data Publicacao : @CnfV5        #    
?  Boletim IRCT : @CnfV4                      Data de Inicio  : @CnfV6        #
?                                      Numero de funcionarios : @CnfV7        #
end sub


'--------------------------------------------------------------------------------
Sub QpsLincnfTrb  'conferencia de trabalhadores
'-----------------------------------------------------------------------------------
Print PrtCmd$("[16CPILN]");
?=================================================================================================================================
? Nome : @CnfV5                                     Sexo (1 Masc, 2 Femn):@CnfV25      Nacionalidade: @Cnfv20 #
? Estabelecimento: @CnfV2                                        Num. Seguranca Social: @CnfV26              #
? Data Nascimento: @CnfV6           Admissão Empresa: @CnfV7           Ultima Promocao: @CnfV8           #
?----------------------------------------------------------------------------------------------------------------------------------
? Remuneracao Base: @CnfV9      Prémios+Subs.Regulares: @CnfV10      Trab. Suplementar: @CnfV11      Prest. Iregulares: @CnfV12    #
?----------------------------------------------------------------------------------------------------------------------------------
? Período Normal Trabalho:@CnfV15 Horas Normais: @CnfV13    Horas Suplementares: @CnfV14   Controlo Remun.Base: @CnfV16
?----------------------------------------------------------------------------------------------------------------------------------
? Categoria Profissional: @CnfV17       Codigo Profissao: @CnfV18     Situacao na Profissao: @CnfV22 Habilitacoes: @CnfV19  #
?          Dec.Lei 20/98: @CnfV21          Tipo Contrato: @CnfV23   Regime Duracao Trabalho: @CnfV24
?
end sub






##





