Extract from "KassePayPos.fgl"


1. InfoHotel+

1.1 Request

FUNCTION PayPos.hotplusRequest

BEGIN
LET rh = PayPosRecHeadRef
let blank16 = ' '
let betrag = Amount * 100
if betrag < 0
begin
let Vorzeichen = '-'
let betrag = 0 - Amount * 100
end
else
begin
let Vorzeichen = '+'
end
let request = '0309' + strformat(rh.TerminalNo, '0000') +
'9999' + '0008' + strformat(RecordNo1, '000000') +
strformat(betrag, '0000000') + Vorzeichen +
blank16
return request
END

1.2 Booking

FUNCTION PayPos.hotplusBooking

BEGIN
LET rh = PayPosRecHeadRef
let blank16 = ' '
let betrag = Amount * 100
if betrag < 0
begin
let Vorzeichen = '-'
let betrag = 0 - Amount * 100
end
else
begin
let Vorzeichen = '+'
end
let request = '0309' + strformat(rh.TerminalNo, '0000') +
'9999' + '0009' + strformat(RecordNo1, '000000') +
strformat(betrag, '0000000') + Vorzeichen +
HotCredText
return request
END

1.3 Answer

FUNCTION PayPos.hotplusAnswer

BEGIN
let returntext = 'NAK'
if strlen(HotCredText) < 40
begin
return 'NAKLaengenfehler'
end
let name = substr(HotCredText, 30, 16)
let answercode = substr(HotCredText, 14, 2)
if answercode = '00'
let returntext = 'OK' + name
else if answercode = '05'
let returntext = 'OK' + name
else if answercode = '03'
let returntext = 'NK' + 'HCRoomEmpty'
else if answercode = '13'
let returntext = 'NK' + 'HCMultiGuests'
else
let returntext = 'NK' + 'HotelCredNegativ'
return returntext
END


2. Felix

2.1 Request

FUNCTION PayPos.felixRequest

BEGIN
LET rh = PayPosRecHeadRef
let blank16 = ' '
let betrag = Amount * 100
if betrag < 0
begin
let Vorzeichen = '-'
let betrag = 0 - Amount * 100
end
else
begin
let Vorzeichen = '+'
end
let request = '0309' + strformat(rh.TerminalNo, '0000') +
'9999' + '0008' + strformat(RecordNo1, '000000') +
strformat(betrag, '0000000') + Vorzeichen +
'0000000+' +
'0000000+' +
'0000000+' +
'0000000+' +
blank16
return request
END

2.2 Booking

FUNCTION PayPos.felixBooking

BEGIN
LET rh = PayPosRecHeadRef
let blank16 = ' '
let betrag = Amount * 100
if betrag < 0
begin
let Vorzeichen = '-'
let betrag = 0 - Amount * 100
end
else
begin
let Vorzeichen = '+'
end
let request = '0309' + strformat(rh.TerminalNo, '0000') +
'9999' + '0009' + strformat(RecordNo1, '000000') +
strformat(betrag, '0000000') + Vorzeichen +
'0000000+' +
'0000000+' +
'0000000+' +
'0000000+' +
HotCredText
return request
END

2.3 Answer

FUNCTION PayPos.felixAnswer

BEGIN
let returntext = 'NAK'
if strlen(HotCredText) < 66
begin
return 'NAKLaengenfehler'
end
let name = substr(HotCredText, 62, 16)
let answercode = substr(HotCredText, 14, 2)
if answercode = '00'
let returntext = 'OK' + name
else if answercode = '05'
let returntext = 'OK' + name
else if answercode = '03'
let returntext = 'NK' + 'HCRoomEmpty'
else if answercode = '13'
let returntext = 'NK' + 'HCMultiGuests'
else
let returntext = 'NK' + 'HotelCredNegativ'
return returntext
END


3. Fidelio

3.1 Request

FUNCTION PayPos.fidelioRequest

BEGIN
LET rh = PayPosRecHeadRef
LET blank16 = ''
LET betrag = Amount * 100
IF betrag < 0
BEGIN
LET vorzeichen = '-'
LET betrag = 0 - Amount * 100
END
ELSE
BEGIN
LET vorzeichen = '+'
END
LET request = '0309' + strformat(rh.TerminalNo, '0000') +
'9999' + '0008' + strformat(RecordNo1, '000000') +
strformat(betrag, '0000000') + vorzeichen + blank16 +
'0000000+' + '0' + '0000000+'
return request
END

3.2 Booking

FUNCTION PayPos.fidelioBooking

BEGIN
LET rh = PayPosRecHeadRef
LET blank16 = ''
# get VAT positions
LET vatpos = rh.VatPositions
LET last = vatpos.length()
LET mwst = ''
FOR i = 1 TO 5
BEGIN
IF i > last
BEGIN
LET mwst = mwst + '0000000+'
END
ELSE
BEGIN
LET vp = vatpos[i]
IF vp.VatAmount < 0
BEGIN
LET vorzeichen = '-'
LET betrag = 0 - vp.VatAmount * 100
END
ELSE
BEGIN
LET vorzeichen = '+'
LET betrag = vp.VatAmount * 100
END
LET mwst = mwst + strformat(betrag, '0000000') + vorzeichen
END
END

LET betrag = Amount * 100
IF betrag < 0
BEGIN
LET vorzeichen = '-'
LET betrag = 0 - Amount * 100
END
ELSE
BEGIN
LET vorzeichen = '+'
LET betrag = Amount * 100
END
LET request = '0309' + strformat(rh.TerminalNo, '0000') +
'9999' + '0009' + strformat(RecordNo1, '000000') +
strformat(betrag, '0000000') + vorzeichen +
mwst + '000'
return request
END

3.3 Answer

FUNCTION PayPos.fidelioAnswer

BEGIN
LET returntext = 'NAK'
IF strlen(HotCredText) < 46
BEGIN
RETURN 'NAKLaengenfehler'
END
LET name = substr(HotCredText, 30, 16)
LET answercode = substr(HotCredText, 14, 2)
IF answercode = '00'
LET returntext = 'OK' + name
ELSE if answercode = '05'
LET returntext = 'OK' + name
ELSE if answercode = '03'
LET returntext = 'NK' + 'HCRoomEmpty'
ELSE if answercode = '13'
LET returntext = 'NK' + 'HCMultiGuests'
ELSE
LET returntext = 'NK' + 'HotelCredNegativ'
RETURN returntext
END


MICROS Retail Deutschland GmbH
Salzufer 8
D-10587 Berlin
Germany