'Nome       : TICKET_BNC.STD
'Tipo       : LST
'Data       : 2016/04/21
'Versao     : 1.3
'Descricao  : Carregamento de cartoes de refeicao

'==============================================================================
'#VER - Historia de modificacoes
'==============================================================================
'- Versao : 1.3  2016/04/05 ---------------------------------------------------
'Consultar na ficha do banco o codigo para transferencia
'Formato TXT ( caixa geral depositos )

'- Versao : 1.2  2016/03/10 ---------------------------------------------------
'Formato SEPA

'- Versao : 1.1  2015/01/06 ---------------------------------------------------
'Nao fazia o salto de pagina corretamente

'- Versao : 1.0  2013/05/02 ---------------------------------------------------
'Versao base



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


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


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=PS2
Nome                       [DocNom]=TrfBnc,Suporte informático - Ps2
'formato
Saida/Impressora           [DocPrt]=NULA
Linhas por pagina          [DocLpg]=500
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0
Listar continuo            [DocEsp]=LstCnt=1
Directorio ficheiros       [DocEsp]=Spidir=Spi\tk
Nome de ficheiro           [DocEsp]=SpiFic=[DT4][MES].tk
tipo suporte informatico   [DocEsp]=SpiTip=banco:tk
Identificador de listagem  [DocEsp]=LstId=BNCSPITK
listagem conferencia       [DocEsp]=Spicnf=


'funcoes de listagem
Listar cabecalho            [FxCAB]=
Listar linhas               [FxLIN]=Spi_ ; T1; T2 ; T9
Listar fim                  [FxFIM]=
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=PS2
Nome                       [DocNom]=TrfBncCnf_G,Transferência Bancária ps2(conferência)

'formato
Saida/Impressora           [DocPrt]=PAG_W
Linhas por pagina          [DocLpg]=59
Ajustar pagina             [DocApg]=0
Listar continuo            [DocEsp]=LstCnt=1
Directorio ficheiros       [DocEsp]=Spidir=Spi\tk
Nome de ficheiro           [DocEsp]=SpiFic=[DT4][MES].tk
Nao Apresentar no menu     [DocEsp]=MnuInv=0

'funcoes de listagem
Listar cabecalho            [FxCAB]=TrfCabCnf
Listar linhas               [FxLIN]=TrfLinCnf
Listar fim                  [FxFIM]=TrfFimCnf
##



'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=SEPA:TIK
Nome                       [DocNom]=tiksepa,Suporte informático - SEPA
'formato
Saida/Impressora           [DocPrt]=NULA
Linhas por pagina          [DocLpg]=500
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0
Listar continuo            [DocEsp]=LstCnt=1
Directorio ficheiros       [DocEsp]=Spidir=Spi\tk
Nome de ficheiro           [DocEsp]=SpiFic=[EMPCOD]_[BANCOABRV]_[DT4][MES].ticket.sepa.xml
tipo suporte informatico   [DocEsp]=SpiTip=sepa:tk
Identificador de listagem  [DocEsp]=LstId=SEPATK
listagem conferencia       [DocEsp]=Spicnf=0



'funcoes de listagem
Listar cabecalho            [FxCAB]=TrfSepa_Cab
Listar linhas               [FxLIN]=TrfSepa_Lin
Listar fim                  [FxFIM]=TrfSepa_Fim
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=PS2
Nome                       [DocNom]=tiktxt,Suporte informático - TXT
'formato
Saida/Impressora           [DocPrt]=NULA
Linhas por pagina          [DocLpg]=500
Colunas por linha          [DocCol]=80
Formato do papel           [DocPap]=72L
Ajustar pagina             [DocApg]=0
Listar continuo            [DocEsp]=LstCnt=1
Directorio ficheiros       [DocEsp]=Spidir=Spi\tk
Nome de ficheiro           [DocEsp]=SpiFic=[EMPCOD]_[BANCOABRV]_[DT4][MES].ticket.txt
tipo suporte informatico   [DocEsp]=SpiTip=banco:tk
Identificador de listagem  [DocEsp]=LstId=BNCSPITK-TXT
listagem conferencia       [DocEsp]=Spicnf=

'funcoes de listagem
Listar cabecalho            [FxCAB]=
Listar linhas               [FxLIN]=Spi_ ; T1; T2 ; T9
Listar fim                  [FxFIM]=
##


'==============================================================================
#DOC - Configuracao do documento
'==============================================================================
Tipo                       [DocTip]=PS2
Nome                       [DocNom]=tiktxtCnf_G,Suporte informático - TXT conferencia

'formato
Saida/Impressora           [DocPrt]=PAG_W
Linhas por pagina          [DocLpg]=59
Ajustar pagina             [DocApg]=0
Listar continuo            [DocEsp]=LstCnt=1
Directorio ficheiros       [DocEsp]=Spidir=Spi\tk
Nome de ficheiro           [DocEsp]=SpiFic=[EMPCOD]_[BANCOABRV]_[DT4][MES].ticket.txt
tipo suporte informatico   [DocEsp]=SpiTip=banco:tk
Identificador de listagem  [DocEsp]=LstId=BNCSPITK-TXT
Nao Apresentar no menu     [DocEsp]=MnuInv=1


'funcoes de listagem
Listar cabecalho            [FxCAB]=TxtCabCnf
Listar linhas               [FxLIN]=TxtLinCnf
Listar fim                  [FxFIM]=TxtFimCnf
##




'==============================================================================
#VAR - Variaveis
'==============================================================================
'nao tem
##


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


'==============================================================================
#PGM - Programa/Funcoes
'==============================================================================
SUB Lst_AJT
end sub


'-----------------------------------------------------------------------------
' Formato do documento
'-----------------------------------------------------------------------------

'------------------------------------------------------------------------------
SUB SpiIni 'funcao de inicializacao
'------------------------------------------------------------------------------
id$=GpeOplCon$("LSTID")
if id$="BNCSPITK-TXT" then
  fx=GpePs2Fx$("MODO","TIK-TXT")                    'modo de uso
  fic$=GpePs2Fx$("FIC","LOC")                        'ficheiro a usar
  rSize$=GpePs2Fx$("FIC","ROWSIZE")                  'tamanho de registo
  fx=FicPrp(1, rSize$, fic$)                         'preparar ficheiro
  fx=FicAbr(1)                                       'abrir ficheiro
end if


if id$="BNCSPITK" then
  fic$=GpePs2Fx$("FIC","LOC")                        'ficheiro a usar
  rSize$=GpePs2Fx$("FIC","ROWSIZE")                  'tamanho de registo
  fx=FicPrp(1, rSize$, fic$)                         'preparar ficheiro
  fx=FicAbr(1)                                       'abrir ficheiro
  fx=GpePs2Fx$("MODO","TIK")       'modo de uso
end if


if id$="SEPATK" then
  fic$=GpeSepaFx$("FIC","LOC")                        'ficheiro a usar
  rSize$=GpeSepaFx$("FIC","ROWSIZE")                  'tamanho de registo
  fx=FicPrp(1, rSize$, fic$)                          'preparar ficheiro
  fx=FicAbr(1)                                        'abrir ficheiro
end if


end sub


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


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


id$=GpeOplCon$("LSTID")
if id$="BNCSPITK-TXT" then
  fx=SpiRegTpl("","CSV:TAB")
  fx=SpiRegCmp(1,"nib")
  fx=SpiRegCmp(1,"valor",21,"NUMFRM:5.2")
  fx=SpiRegCmp(1,"NIFE")
end if


if id$="BNCSPITK" then
  'cabecalho
  fx=SpiRegTpl("PS21","Tipo de Registo")
  fx=SpiRegCmp(4,"Tipo de Registo")
  fx=SpiRegCmp(5,"ignorar")
  fx=SpiRegCmp(21,"NIB da Empresa")
  fx=SpiRegCmp(3,"Moeda")
  fx=SpiRegCmp(8,"Data")
  fx=SpiRegCmp(20,"ignorar")
  fx=SpiRegCmp(19,"ignorar")

  'linhas
  fx=SpiRegTpl("PS22","Tipo de Registo")
  fx=SpiRegCmp(4,"Tipo Registo")
  fx=SpiRegCmp(5,"ignorar")
  fx=SpiRegCmp(21,"NIB do Trabalhador")
  fx=SpiRegCmp(13,"Valor",21,"-11.2")
  fx=SpiRegCmp(20,"Trabalhador")
  fx=SpiRegCmp(15,"ignorar")
  fx=SpiRegCmp(2,"ignorar")

  'totais
  fx=SpiRegTpl("PS29","Tipo de Registo")
  fx=SpiRegCmp(4,"Tipo Registo")
  fx=SpiRegCmp(5,"ignorar")
  fx=SpiRegCmp(6,"ignorar")
  fx=SpiRegCmp(14,"Registos")
  fx=SpiRegCmp(13,"Valor total",21,"-11.2")
  fx=SpiRegCmp(38,"ignorar")
end if

end sub


'------------------------------------------------------------------------------
SUB Spi_T1 'registo tipo R1
'------------------------------------------------------------------------------
txr$=GpePs2Fx$("LIN","T1")                                  'dados a gravar
if txr$<>"" then
  x=FicLinGrv(1, txr$)                                      'registar
end if
end sub

'------------------------------------------------------------------------------
SUB Spi_T2 'registo tipo R2
'------------------------------------------------------------------------------
txr$=GpePs2Fx$("LIN","T2")                                  'dados a gravar
if txr$<>"" then
  x=FicLinGrv(1, txr$)                                      'registar
end if
end sub

'------------------------------------------------------------------------------
SUB Spi_T9 'registo tipo R9
'------------------------------------------------------------------------------
txr$=GpePs2Fx$("LIN","T9")                                  'dados a gravar
if txr$<>"" then
  fx=FicLinGrv(1, txr$)                                     'registar
end if
end sub




'-----------------------------------------------------------------------------------
'Listagem Conferencia grafica
'-----------------------------------------------------------------------------------
SUB FxIni 'funcao de inicializacao
Call SigLstIni
End sub


'-----------------------------------------------------------------------------------
Sub TxtCabCnf
PrWIN COR_F, 15                                 'cor de fundo

titulo$="Conferencia ficheiro TXT - Cartões de refeição"

SigCabNorOpcTit=2      'usar titulo indicado
Call SigCabNor
PrWIN AJT_B,  Margem, 30                      'posicao base

Col1=0
Col2=col1+150
Col3=Col2+50

colMax=185

PrWIN AJT_B,  Margem, 30                     'posicao base
PrWIN COR_T,CorTraco                            'cor de linhas




PrWIN GR_LI, 0, 0, colMax  ,0              'linha
PrWIN GR_LI, 0, 5, colMax  ,5              'linha

PrWIN COR_T,CorTitLst                            'cor de linhas

PrWIN FON  ,   11,   1                         'activar fonte
PrWIN TX_N,     Col1, 0,"Conta cartão"
PrWIN TX_N,    Col2, 0,"Valor"


PrWIN FON  ,   11,   1                         'activar fonte
InicioEscrita=31
linMem$=""
End sub


'-----------------------------------------------------------------------------------
Sub TxtLinCnf
Linha=InicioEscrita+Doc_cntLin*4
PrWIN AJT_B,  Margem, linha                        'posicao base
PrWin COR_T ,  CorLin

PrWIN TX_N,     Col1, 0,MemTxt$(1)
PrWIN TX_NP,    Col2, 0,"N",MemTxt$(2)

TotalTk=TotalTk+MemNum(2)
CntReg=CntReg+1
end sub


'-----------------------------------------------------------------------------------
Sub TxtFimCnfAjt
PrWIN COR_T,CorTraco                            'cor de linhas
PrWIN AJT_B,Margem,LinPer-5             'posicao base
PrWIN GR_LI,    0,  0, ColMax, 0                'linha
PrWIN TX_N, 25, 3, "Continua ... "
Prwin FP
end sub



Sub TxtFimCnf
PrWIN COR_T,CorTraco                            'cor de linhas
PrWIN AJT_B,Margem,LinPer-10                    'posicao base
PrWIN GR_LI,    0,  0, ColMax, 0                'linha

base=80
PrWIN TX_N,    base   , 0,"Registos:"
PrWIN TX_N,    base+20, 0,CntReg

base=base+40
PrWIN TX_N,    base   , 0,"Total da transferência:"
PrWIN TX_N,    base+40, 0,TotalTk


call SigLstFim
TotalTk=0
CntReg=0
end sub



'-----------------------------------------------------------------------------------
Sub TrfCabCnf
PrWIN COR_F, 15                                 'cor de fundo

titulo$=GpePs2Fx$("TIT:CNF")

SigCabNorOpcTit=2      'usar titulo indicado
Call SigCabNor
PrWIN AJT_B,  Margem, 30                      'posicao base

Col1=0
Col2=70
Col21=col2+10
Col3=Col2+85

colMax=185

PrWIN AJT_B,  Margem, 30                     'posicao base
PrWIN COR_T,CorTraco                            'cor de linhas
PrWIN GR_LI, 0, 0, colMax  ,0              'linha

PrWIN FON  ,   11,   1                         'activar fonte
InicioEscrita=27
End sub


'-----------------------------------------------------------------------------------
Sub TrfLinCnf
Linha=InicioEscrita+Doc_cntLin*4
PrWIN AJT_B,  Margem, linha                        'posicao base
PrWin COR_T ,  CorLin

if MemTxt$(1)="PS21" then   'banco
PrWIN COR_T,    CorTitLst                         'cor de titulo
PrWIN TX_N,     Col2-45,0,"Banco para transferencia"
PrWIN TX_N,     Col2,   0,"NIB:"
PrWIN TX_N,     Col21,  0,MemTxt$(3)
end if

If MemTxt$(1)="PS22" then   'transferencias
PrWIN TX_N,     Col1, 0,MemTxt$(5)
PrWIN TX_N,     Col2, 0,"NIB:"
PrWIN TX_N,     Col21,0,MemTxt$(3)
PrWIN TX_NP,    col3, 0,"N",MemTxt$(4)
end if

If MemTxt$(1)="PS29" then   'totais
lin=2
PrWIN GR_LI,   Col1,   lin, 190  ,lin
PrWin TX_N,    Col2-35,lin,"Total de Registos:"
PrWin TX_N,    Col2,   lin,MemTxt$(4)
PrWin TX_N,    Col3-35,lin,"Total Transferencia:"
PrWin TX_NP,   Col3,   lin,"N",MemTxt$(5)
end if
end sub


'-----------------------------------------------------------------------------------
Sub TrfFimCnfAjt
PrWIN COR_T,CorTraco                            'cor de linhas
PrWIN AJT_B,Margem,LinPer-5             'posicao base
PrWIN GR_LI,    0,  0, ColMax, 0                'linha
PrWIN TX_N, 25, 3, "Continua ... "
Prwin FP
end sub



Sub TrfFimCnf
PrWIN COR_T,CorTraco                            'cor de linhas
PrWIN AJT_B,Margem,LinPer-5             'posicao base
PrWIN GR_LI,    0,  0, ColMax, 0                'linha
call SigLstFim
end sub




'==============================================================================
'#SEPA
'==============================================================================
'-----------------------------------------------------------------------------------
Sub TrfSepa_Cab    'listar cabecalho Suporte informatico
'-----------------------------------------------------------------------------------
fx=FicLinGrv(1,"<?xml version="+chr$(34)+"1.0"+chr$(34)+" encoding="+chr$(34)+"UTF-8"+chr$(34)+" ?>")

fx=FicLinGrv(1,"<Document xmlns="+chr$(34)+"urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"+chr$(34)+" xmlns:xsi="+chr$(34)+"http://www.w3.og/2001/XMLSCHEMA-Instance"+chr$(34) + " >")
fx=FicLinGrv(1,"  <CstmrCdtTrfInitn>")
                   
'consultar variaveis
msgId$         = GpeSepaFx$("TRF","MSGID")
data$          = GpeSepaFx$("TRF","DTTM")
TxsMax$        = GpeSepaFx$("TRF","MAX")
TxsTotal$      = GpeSepaFx$("TRF","TOT")
EmpNome$       = GpeSepaFx$("TRF","NOMEEMP")
EmpNif$        = GpeSepaFx$("TRF","EMPNIF")



fx=FicLinGrv(1,"<GrpHdr>");
fx=FicLinGrv(1,"  <MsgId>"+msgId$+"</MsgId>");
fx=FicLinGrv(1,"  <CreDtTm>"+data$+"</CreDtTm>");
fx=FicLinGrv(1,"  <NbOfTxs>"+TxsMax$+"</NbOfTxs>");
fx=FicLinGrv(1,"  <CtrlSum>"+TxsToTal$+"</CtrlSum>");
fx=FicLinGrv(1,"  <InitgPty>");
fx=FicLinGrv(1,"    <Nm>"+EmpNome$+"</Nm>");

fx=FicLinGrv(1,"    <Id>");
fx=FicLinGrv(1,"      <PrvtId>");
fx=FicLinGrv(1,"        <Othr>");
fx=FicLinGrv(1,"          <Id>"+EmpNif$+"</Id>");
fx=FicLinGrv(1,"        </Othr>");
fx=FicLinGrv(1,"      </PrvtId>");
fx=FicLinGrv(1,"    </Id>");

fx=FicLinGrv(1,"  </InitgPty>");
fx=FicLinGrv(1,"</GrpHdr>");
End Sub


'-----------------------------------------------------------------------------------
Sub TrfSepa_Lin     'listar linha
'-----------------------------------------------------------------------------------
TxsRef$      = GpeSepaFx$("PMTINF","INFID")
TxsExDt$     = GpeSepaFx$("PMTINF","EXCTDT")
PmtTip$      = GpeSepaFx$("PMTINF","TIP")


EmpIban$    = GpeSepaFx$("BNC","IBAN")
EmpBic$     = GpeSepaFx$("BNC","BIC")

fx=FicLinGrv(1,"<PmtInf>")
fx=FicLinGrv(1,"  <PmtInfId>"+TxsRef$+"</PmtInfId>")
fx=FicLinGrv(1,"  <PmtMtd>TRF</PmtMtd>")
fx=FicLinGrv(1,"  <NbOfTxs>"+TxsMax$+"</NbOfTxs>")
fx=FicLinGrv(1,"  <CtrlSum>"+TxsTotal$+"</CtrlSum>")
fx=FicLinGrv(1,"  <PmtTpInf>")
fx=FicLinGrv(1,"    <CtgyPurp>")
fx=FicLinGrv(1,"      <Cd>"+PmtTip$+"</Cd>")
fx=FicLinGrv(1,"    </CtgyPurp>")
fx=FicLinGrv(1,"  </PmtTpInf>")
fx=FicLinGrv(1,"  <ReqdExctnDt>"+TxsExDt$+"</ReqdExctnDt>")

fx=FicLinGrv(1,"  <Dbtr>")
fx=FicLinGrv(1,"    <Nm>"+EmpNome$+"</Nm>")
fx=FicLinGrv(1,"  </Dbtr>")

fx=FicLinGrv(1,"  <DbtrAcct>")
fx=FicLinGrv(1,"    <Id>")
fx=FicLinGrv(1,"     <IBAN>"+EmpIban$+"</IBAN>")
fx=FicLinGrv(1,"    </Id>")
fx=FicLinGrv(1,"  </DbtrAcct>")


fx=FicLinGrv(1,"  <DbtrAgt>")
fx=FicLinGrv(1,"    <FinInstnId>")
fx=FicLinGrv(1,"      <BIC>"+EmpBic$+"</BIC>")
fx=FicLinGrv(1,"    </FinInstnId>")
fx=FicLinGrv(1,"  </DbtrAgt>")

TrfMax        = GpeSepaFx("TRF","MAX")

for cnt=1 to TrfMax

  TrbValor$        = GpeSepaFx$("LIN",cnt,"VL")
  trbBic$          = GpeSepaFx$("LIN",cnt,"BIC")
  trbNome$         = GpeSepaFx$("LIN",cnt,"NOME")
  trbIban$         = GpeSepaFx$("LIN",cnt,"IBAN")
  trbEtEId$        = GpeSepaFx$("LIN",cnt,"ETEID")


  fx=FicLinGrv(1,"  <CdtTrfTxInf>")
  fx=FicLinGrv(1,"    <PmtId>")
  fx=FicLinGrv(1,"      <EndToEndId>"+trbEteId$+"</EndToEndId>")
  fx=FicLinGrv(1,"    </PmtId>")

  fx=FicLinGrv(1,"    <Amt>")
  fx=FicLinGrv(1,"      <InstdAmt Ccy="EUR">"+trbValor$+"</InstdAmt>")
  fx=FicLinGrv(1,"    </Amt>")

  fx=FicLinGrv(1,"    <CdtrAgt>")
  fx=FicLinGrv(1,"      <FinInstnId>")
  fx=FicLinGrv(1,"        <BIC>"+trbBic$+"</BIC>")
  fx=FicLinGrv(1,"     </FinInstnId>")
  fx=FicLinGrv(1,"    </CdtrAgt>")

  fx=FicLinGrv(1,"    <Cdtr>")
  fx=FicLinGrv(1,"      <Nm>"+trbNome$+"</Nm>")
  fx=FicLinGrv(1,"    </Cdtr>")

  fx=FicLinGrv(1,"    <CdtrAcct>")
  fx=FicLinGrv(1,"      <Id>")
  fx=FicLinGrv(1,"        <IBAN>"+trbIban$+"</IBAN>")
  fx=FicLinGrv(1,"     </Id>")
  fx=FicLinGrv(1,"    </CdtrAcct>")

  fx=FicLinGrv(1,"    <Purp>")
  fx=FicLinGrv(1,"      <Cd>"+PmtTip$+"</Cd>")
  fx=FicLinGrv(1,"    </Purp>")
  fx=FicLinGrv(1,"  </CdtTrfTxInf>")

Next
fx=FicLinGrv(1,"</PmtInf>")
End Sub


'-----------------------------------------------------------------------------------
Sub TrfSepa_Fim      'listar final
'-----------------------------------------------------------------------------------
fx=FicLinGrv(1,"  </CstmrCdtTrfInitn>")
fx=FicLinGrv(1,"</Document>")
End Sub



##

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