Development
Feature Flags
Feature Flag | Description |
---|
enable-ticket-restaurant-credit-card-paycomet | This flag will be responsible for activating ticket restaurant payment method using the online payment |
enable-ticket-restaurant-voucher-paycomet | This flag will be responsible for activating ticket restaurant payment method using the voucher in person |
Code Changes
PaymentMethodBrand
ENUM | VALUE |
---|
TICKET_RESTAURANT | TICKET_RESTAURANT |
TICKET_RESTAURANT_VOUCHER | TICKET_RESTAURANT_VOUCHER |
Frontend
Note |
---|
Not all unit tests that will be performed have been added, but it is implicit that it should cover as many tests as possible for this feature |
PaymentMethodBrand
The essential part of this feature is the addition of new values for ticket restaurant to the paymentMethodBrand property, which will be responsible for identifying the payment method made and passing it on to all systems listed below, since the system used behind the scenes is payment via credit card.
ENUM | VALUE |
---|
TICKET_RESTAURANT_CARD | TICKET_RESTAURANT_CARD |
TICKET_RESTAURANT_VOUCHER | TICKET_RESTAURANT_VOUCHER |
Frontend
Development
Expand |
---|
title | payment-method/index.tsx |
---|
|
Code Block |
---|
const SelectedTicketRestaurantOptionItem = (
<PaymentMethodAddNewItemOption
text={formatMessage({ id: ticketRestaurantLabel(isGuestOrder) })}
Icon={styledCardIcon(PaymentMethodBrandType.TICKET_RESTAURANT_CARD)}
onClick={getSelectedMethodClickHandler()}
selected
/>
); |
|
Expand |
---|
title | payment-method/styled.tsx |
---|
|
Code Block |
---|
import IconSodexo from 'components/icons/sodexo';
....
export const paymentsMethodIcon: Record<string, IconSVGElement> = {
[PaymentMethodBrandType.SODEXO]: IconSodexo,
[PaymentMethodBrandType.CHEQUE_GOURMET]: IconChequeGourmet,
[PaymentMethodBrandType.TICKET_RESTAURANT_CARD]: IconTicketRestaurant,
}; |
|
Expand |
---|
title | payment-method/types.ts |
---|
|
Code Block |
---|
export enum PaymentMethodBrandType {
SODEXO = 'SODEXO',
SODEXO_VOUCHER = 'SODEXO_VOUCHER',
TICKET_RESTAURANT_CARD = 'TICKET_RESTAURANT_CARD',
TICKET_RESTAURANT_VOUCHER = 'TICKET_RESTAURANT_VOUCHER',
} |
|
Expand |
---|
title | payment-method-options/payment-method-options.tsx |
---|
|
Code Block |
---|
{method?.ticket_restaurant && method?.transient && (
<StyledOption>
<PaymentMethodOptionItemDivider />
<PaymentMethodAddNewItemOption
data-testid="add-ticket-restaurant-card-payment"
text={formatMessage({ id: ticketRestaurantLabel(isGuestOrder) })}
Icon={styledCardIcon(PaymentMethodBrandType.TICKET_RESTAURANT_CARD)}
onClick={e => handleTicketRestaurantOptionClick(e, 'card')}
isLoading={isLoadingPopup}
/>
</StyledOption>
)} |
|
Expand |
---|
title | payment-method/utils/sort-payment-methods.ts |
---|
|
Code Block |
---|
case 'TICKET_RESTAURANT_CARD':
return paymentMethods.filter(
p => p?.transient && p?.sodexoticketRestaurant && p.accountIdentifier === typeOrder
); |
Code Block |
---|
case 'TICKET_RESTAURANT_VOUCHER':
return paymentMethods.filter(
p => p?.transient && p?.sodexoticketRestaurant && p.accountIdentifier === typeOrder
); |
Code Block |
---|
const paymentMethodListTypeOrder = [
TICKET_RESTAURANT_CARD,
TICKET_RESTAURANT_VOUCHER,
] |
|
Expand |
---|
title | payment-method-option/ticket-restaurant-method-flat-list-with-button/payment-method-flat-list-with-button.tsx |
---|
|
Code Block |
---|
import React{
from 'react';
import { useIntl TICKET_RESTAURANT_PAYMENT_METHOD_PLACEHOLDER,
} from 'react-intlstate/payment/constants'; |
Code Block |
---|
//
import { MethodType } from './styled';
const TicketRestaurantMethod = () => {
const { formatMessage } = useIntl();
return <MethodType>{formatMessage({ id: 'payWithTicketRestaurantVoucher' })}</MethodType>;
};
export default SodexoMethodExclude .... Ticket Restaurant if it is ...
return paymentMethods.filter(
n =>
...
n.accountIdentifier !== TICKET_RESTAURANT_PAYMENT_METHOD_PLACEHOLDER.accountIdentifier
); |
|
Expand |
---|
title | payment-method-option/indexticket-restaurant-method.tsx |
---|
|
Code Block |
---|
import TicketRestaurantMethodReact from './ticket-restaurant-methodreact'; | Code Block |
---|
if (method.ticketRestaurant)
import { useIntl } from 'react-intl';
import { returnMethodType } <TicketRestaurantMethodfrom './>styled';
const TicketRestaurantMethod = () => } |
Code Block |
---|
{method.ticketRestaurant && styledCardIcon(PaymentMethodBrandType.TICKET_RESTAURANT)} |
|
Expand |
---|
title | payment/order-payment/use-order-payment.ts |
---|
|
Improve the paymentMethodBrandValue to add the Ticket Restaurant Code Block |
---|
if (isPaycometSodexoMethodSelected || isPaycometChequeGourmetMethodSelected) {
paymentMethodBrandValue = isPaycometSodexoMethodSelected
{
const { formatMessage } = useIntl();
return <MethodType>{formatMessage({ id: 'payWithTicketRestaurantVoucher' })}</MethodType>;
};
export default SodexoMethod; |
|
Expand |
---|
title | payment-method-option/index.tsx |
---|
|
Code Block |
---|
import TicketRestaurantMethod from './ticket-restaurant-method'; |
Code Block |
---|
if (method.ticketRestaurant) {
return ? PaymentMethodBrand.SODEXO<TicketRestaurantMethod />;
} |
Code Block |
---|
{method.ticketRestaurant : PaymentMethodBrand.CHEQUE_GOURMET;
} | Code Block |
---|
if (payment.isFreeOrderPayment&& styledCardIcon(PaymentMethodBrandType.TICKET_RESTAURANT)} |
|
Expand |
---|
title | payment/order-payment/use-order-payment.ts |
---|
|
Improve the paymentMethodBrandValue to add the Ticket Restaurant Code Block |
---|
if (isPaycometSodexoMethodSelected || isPaycometChequeGourmetMethodSelected) {
paymentAccount paymentMethodBrandValue = {isPaycometSodexoMethodSelected
ticketRestaurant: null, ? PaymentMethodBrand.SODEXO
}; } | Code Block |
---|
const isPaymentWithTicketRestaurantVoucher = : PaymentMethodBrand.CHEQUE_GOURMET;
selectedPaymentMethod?.ticketRestaurat && } |
Code Block |
---|
if (payment.isFreeOrderPayment) {
selectedPaymentMethod?.paymentMethodBrand === 'TICKET_RESTAURANT_VOUCHER'; |
Code Block |
---|
const handleOrderCommit = useCallback(async () => {
...
},
[
...,
selectedPaymentMethod?.ticketRestaurant
] |
|
Expand |
---|
title | paycomet-hosted-page-payment/paycomet-hosted-page-payment.tsx |
---|
|
Improve the paymentMethodBrandValue to add the Ticket Restaurant Code Block |
---|
if (isPaycometSodexoMethodSelected || isPaycometChequeGourmetMethodSelected) { paymentAccount = {
ticketRestaurant: null,
};
} |
Code Block |
---|
const isPaymentWithTicketRestaurantVoucher =
selectedPaymentMethod?.ticketRestaurat &&
paymentMethodBrand = isPaycometSodexoMethodSelected selectedPaymentMethod?.paymentMethodBrand ? PaymentMethodBrand.SODEXO
: PaymentMethodBrand.CHEQUE_GOURMET;
} |
|
Expand |
---|
title | src/state/payment/constants.ts |
---|
|
Update all the METHOD_PLACEHOLDER to include ticket_restaurant Code Block |
---|
export const XXXX_METHOD_PLACEHOLDER: IPaymentMethod = {
...
ticketRestaurant: null,
}; |
Create a new METHOD_PLACEHOLDER for ticket_restaurant and ticket_restaurant_voucher Code Block |
---|
export const TICKET_RESTAURANT_METHOD_PLACEHOLDER: IPaymentMethod = {
...
ticketRestaurant: true,
};
export const TICKET_RESTAURANT_VOUCHER_METHOD_PLACEHOLDER: IPaymentMethod = {
...
ticketRestaurant: true,
fdAccountId: 'CASH',
accountIdentifier: 'TICKET_RESTAURANT',
paymentMethodBrand: 'TICKET_RESTAURANT',
}; |
|
Expand |
---|
title | state/payment/types.ts |
---|
|
Code Block |
---|
export enum PaymentMethodBrand {
TICKET_RESTAURANT = 'TICKET_RESTAURANT',
TICKET_RESTAURANT_VOUCHER = 'TICKET_RESTAURANT_VOUCHER',
} |
|
Expand |
---|
title | state/payment/hooks/use-payment.tsx |
---|
|
Code Block |
---|
const cashAccount: IPaymentMethod = {
=== 'TICKET_RESTAURANT_VOUCHER'; |
Code Block |
---|
const handleOrderCommit = useCallback(async () => {
...
},
[
...,
selectedPaymentMethod?.ticketRestaurant
] |
|
Expand |
---|
title | paycomet-hosted-page-payment/paycomet-hosted-page-payment.tsx |
---|
|
Improve the paymentMethodBrandValue to add the Ticket Restaurant Code Block |
---|
if (isPaycometSodexoMethodSelected || isPaycometChequeGourmetMethodSelected) {
paymentMethodBrand = isPaycometSodexoMethodSelected
? PaymentMethodBrand.SODEXO
: PaymentMethodBrand.CHEQUE_GOURMET;
} |
|
Expand |
---|
title | src/state/payment/constants.ts |
---|
|
Update all METHOD_PLACEHOLDER to include ticketRestaurant with null value Code Block |
---|
export const XXXX_METHOD_PLACEHOLDER: IPaymentMethod = {
...
ticketRestaurant: null,
}; |
|
Expand |
---|
title | state/translations/en.json |
---|
|
Code Block |
---|
Create a new METHOD_PLACEHOLDER for ticket_restaurant_card and ticket_restaurant_voucher Code Block |
---|
export const TICKET_RESTAURANT_METHOD_PLACEHOLDER: IPaymentMethod = {
...,
"addNewPaymentSodexo": "Pay with Ticket Restaurant",
"payWithPaymentSodexo": "Pay with Ticket Restaurant",
"payWithSodexoVoucher": "Pay with Ticket Restaurant Voucher",
} |
|
Expand |
---|
title | utils/launchdarkly/flags.ts |
---|
|
Code Block |
---|
/**
* Flag for enable ticket restaurant credit card in processor paycomet
*/
ENABLE_TICKET_CREDIT_CARD_PAYCOMET = 'enable-ticket-restaurant-credit-card-paycomet',
/**
* Flag for enable ticket restaurant voucher in processor paycomet
*/
ENABLE_TICKET_RESTAURANT_VOUCHER_PAYCOMET = 'enable-ticket-restaurant-voucher-paycomet',ticketRestaurant: true,
};
export const TICKET_RESTAURANT_VOUCHER_METHOD_PLACEHOLDER: IPaymentMethod = {
...
ticketRestaurant: true,
fdAccountId: 'CASH',
accountIdentifier: 'TICKET_RESTAURANT',
paymentMethodBrand: 'TICKET_RESTAURANT',
}; |
|
Expand |
---|
title | state/payment/types.ts |
---|
|
Code Block |
---|
export enum PaymentMethodBrand {
TICKET_RESTAURANT = 'TICKET_RESTAURANT_CARD',
TICKET_RESTAURANT_VOUCHER = 'TICKET_RESTAURANT_VOUCHER',
} |
Code Block |
---|
export interface IPaymentMethod {
ticketRestaurant?: boolean | null;
} |
|
Expand |
---|
title | state/payment/hooks/use-payment.tsx |
---|
|
Code Block |
---|
const cashAccount: IPaymentMethod = {
ticketRestaurant: null,
}; |
|
Expand |
---|
title | state/translations/en.json |
---|
|
Code Block |
---|
{
...,
"addNewPaymentSodexo": "Pay with Ticket Restaurant",
"payWithPaymentSodexo": "Pay with Ticket Restaurant",
"payWithSodexoVoucher": "Pay with Ticket Restaurant Voucher",
} |
|
Expand |
---|
title | utils/paymentlaunchdarkly/voucherflags.ts |
---|
|
Code Block |
---|
export/**
const isVoucher* =Flag (method: IPaymentMethod) => {
return !!method.sodexo || !!method.chequeGourmet || !!method.ticketRestaurant;
}; |
|
Graphql
Expand |
---|
title | graphql/schemas/payments.gql |
---|
|
Add the PaymentMethodBrand Code Block |
---|
enum PaymentMethodBrand {
...
TICKET_RESTAURANT
TICKET_RESTAURANT_VOUCHER
} |
|
https://github.com/rbilabs/intl-whitelabel-graphql/pull/952
Fulfillment
Expand |
---|
|
Code Block |
---|
export enum PaymentMethodBrand {
...,
TICKET_RESTAURANT = "TICKET_RESTAURANT",
TICKET_RESTAURANT_VOUCHER = "TICKET_RESTAURANT_VOUCHER",
} |
|
Expand |
---|
title | legacy/schemas/payments.graphql |
---|
|
Code Block |
---|
enum PaymentMethodBrand {
...
TICKET_RESTAURANT
TICKET_RESTAURANT_VOUCHER
} |
|
https://github.com/rbilabs/intl-fulfillment-service/pull/813
Packages
Expand |
---|
title | orders/src/types/cart.ts |
---|
|
Code Block |
---|
export enum PaymentMethodBrand {
...,
TICKET_RESTAURANT = 'TICKET_RESTAURANT',
TICKET_RESTAURANT_VOUCHER = 'TICKET_RESTAURANT_VOUCHER',
} |
|
https://github.com/rbilabs/intl-packages/pull/1187
DMP
Expand |
---|
title | @tests/unit/pages/CashFlow/controllers/delegate.spec.ts |
---|
|
Code Block |
---|
const expected = [
'TICKET_RESTAURANT',
'TICKET_RESTAURANT_VOUCHER',
]; |
|
Expand |
---|
title | src/constants/paymentMethod.ts |
---|
|
Code Block |
---|
export enum PaymentMethod {
TICKET_RESTAURANT = 'TICKET_RESTAURANT',
TICKET_RESTAURANT_VOUCHER = 'TICKET_RESTAURANT_VOUCHER',
}
export const paymentMethodTranslation: Record<PaymentMethod, string> = {
TICKET_RESTAURANT: 'constants.paymentMethod.ticketRestaurant',
TICKET_RESTAURANT_VOUCHER: 'constants.paymentMethod.ticketRestaurantVoucher',
}; |
|
https://github.com/rbilabs/intl-expeditor-tablet/pull/742
DOP
Expand |
---|
title | delivery/settings/last-mile-settings-card/LastMileSettingsCard.tsx |
---|
|
Code Block |
---|
export const paymentMethodTranslation: Record<PaymentMethod, keyof LocalizedDictionary> = {
TICKET_RESTAURANT: `${baseTranslationPath}.ticketRestaurant`,
TICKET_RESTAURANT_VOUCHER: `${baseTranslationPath}.ticketRestaurantVoucher`,
};
export enum PaymentMethod {
TICKET_RESTAURANT = 'TICKET_RESTAURANT'for enable ticket restaurant credit card in processor paycomet
*/
ENABLE_TICKET_CREDIT_CARD_PAYCOMET = 'enable-ticket-restaurant-credit-card-paycomet',
/**
* Flag for enable ticket restaurant voucher in processor paycomet
*/
ENABLE_TICKET_RESTAURANT_VOUCHER_PAYCOMET = 'enable-ticket-restaurant-voucher-paycomet', |
|
Expand |
---|
title | utils/payment/voucher.ts |
---|
|
Code Block |
---|
export const isVoucher = (method: IPaymentMethod) => {
return !!method.sodexo || !!method.chequeGourmet || !!method.ticketRestaurant;
}; |
|
Info |
---|
It is necessary to ensure that the bumps were made to the frontend so that it is possible to find the restaurant ticket values. |
Unit Tests
Expand |
---|
title | state/payment/__tests__/use-payment.test.tsx |
---|
|
Code Block |
---|
jest.mock('state/launchdarkly', () => ({
useFlag: jest.fn(),
useGatewayFlags: jest.fn().mockReturnValue(''),
LaunchDarklyFlag: {
ENABLE_TICKET_RESTAURANT_VOUCHER_PAYCOMET: 'ticket-restaurant-string',
})); |
|
Expand |
---|
title | utils/payment/__tests__/payment-method.test.ts |
---|
|
Code Block |
---|
describe('isRemovablePaymentMethod', () => {
describe.each([
[{ ticketRestaurant: true }, false],
])("on '%s'", (input, expected) => {
it(`returns '${expected}'`, () => {
expect(isRemovablePaymentMethod(input as IPaymentMethod)).toEqual(expected);
});
});
}); |
|
Info |
---|
Update other unit tests to cover these changes. |
Graphql
Expand |
---|
title | graphql/schemas/payments.gql |
---|
|
Add the PaymentMethodBrand Code Block |
---|
enum PaymentMethodBrand {
...
TICKET_RESTAURANT_CARD
TICKET_RESTAURANT_VOUCHER
} |
|
https://github.com/rbilabs/intl-whitelabel-graphql/pull/952
Fulfillment
Expand |
---|
|
Code Block |
---|
export enum PaymentMethodBrand {
...,
TICKET_RESTAURANT_CARD = "TICKET_RESTAURANT_CARD",
TICKET_RESTAURANT_VOUCHER = '"TICKET_RESTAURANT_VOUCHER'",
} |
|
Expand |
---|
title | utilslegacy/schemas/orderspayments.tsgraphql |
---|
|
Code Block |
---|
exportenum constPaymentMethodBrand paymentMethodTranslation:{
Record<string, string> = { ...
TICKET_RESTAURANT: 'delivery-mgmt.restaurantManagement.changeDriver.paidWith.ticketRestaurant',_CARD
TICKET_RESTAURANT_VOUCHER:
'delivery-mgmt.restaurantManagement.changeDriver.paidWith.ticketRestaurantVoucher',
}; |
|
https://github.com/rbilabs/ctgintl-fzfulfillment-portalservice/pull/2799
...
813
Packages
/wiki/spaces/IBC/pages/4590338104
Expand |
---|
title | order-details/__tests__/order-details.spec.tsx |
---|
| Code Block |
describe('Payment method', () => |
Code Block |
---|
export enum PaymentMethodBrand {
it.each`...,
TICKET_RESTAURANT_CARD = 'TICKET_RESTAURANT_CARD',
case TICKET_RESTAURANT_VOUCHER = | paymentData | result
${'Ticket restaurant'} | ${{ cardType: 'VISA', paymentMethodBrand: 'TICKET_RESTAURANT' }} | ${'Ticket Restaurant'}
${'Ticket restaurant voucher'}'TICKET_RESTAURANT_VOUCHER',
} |
|
https://github.com/rbilabs/intl-packages/pull/1187
DMP
Expand |
---|
title | @tests/unit/pages/CashFlow/controllers/delegate.spec.ts |
---|
|
Code Block |
---|
const expected = [
'TICKET_RESTAURANT_CARD',
'TICKET_RESTAURANT_VOUCHER',
]; |
|
Expand |
---|
title | src/constants/paymentMethod.ts |
---|
|
Code Block |
---|
export enum PaymentMethod {
TICKET_RESTAURANT_CARD = 'TICKET_RESTAURANT_CARD',
TICKET_RESTAURANT_VOUCHER = 'TICKET_RESTAURANT_VOUCHER',
}
export const paymentMethodTranslation: Record<PaymentMethod, string> = {
TICKET_RESTAURANT_CARD: 'constants.paymentMethod.ticketRestaurantCard',
TICKET_RESTAURANT_VOUCHER: 'constants.paymentMethod.ticketRestaurantVoucher',
}; |
|
Expand |
---|
|
Code Block |
---|
"paymentMethod": {
"ticketRestaurantCard": "Ticket Restaurant",
"ticketRestaurantVoucher": "Ticket Restaurant Voucher",
}, |
|
https://github.com/rbilabs/intl-expeditor-tablet/pull/742
DOP
Expand |
---|
title | delivery/settings/last-mile-settings-card/LastMileSettingsCard.tsx |
---|
|
Code Block |
---|
export const paymentMethodTranslation: Record<PaymentMethod, keyof LocalizedDictionary> = {
TICKET_RESTAURANT_CARD: `${baseTranslationPath}.ticketRestaurantCard`,
TICKET_RESTAURANT_VOUCHER: `${baseTranslationPath}.ticketRestaurantVoucher`,
};
export enum PaymentMethod {
TICKET_RESTAURANT_CARD = 'TICKET_RESTAURANT_CARD',
TICKET_RESTAURANT_VOUCHER = 'TICKET_RESTAURANT_VOUCHER',
} |
|
Expand |
---|
|
Code Block |
---|
export const paymentMethodTranslation: Record<string, string> = {
TICKET_RESTAURANT_CARD: 'delivery-mgmt.restaurantManagement.changeDriver.paidWith.ticketRestaurantCard',
TICKET_RESTAURANT_VOUCHER: 'delivery-mgmt.restaurantManagement.changeDriver.paidWith.ticketRestaurantVoucher',
}; |
|
Expand |
---|
|
Code Block |
---|
"paidWith": {
"ticketRestaurantCard": "Ticket Restaurant",
"ticketRestaurantVoucher": "Ticket Restaurant Voucher",
}, |
|
https://github.com/rbilabs/ctg-fz-portal/pull/2799
Admin App
Expand |
---|
title | order-details/__tests__/order-details.spec.tsx |
---|
|
Code Block |
---|
describe('Payment method', () => {
it.each`
case | ${{ cardType: 'CASH', paymentMethodBrand: 'TICKET_RESTAURANT_VOUCHER' }} | ${'Ticket Restaurant Voucher'} `('Should display $case payments| accordingly', ({ paymentData, result }) => {paymentData .... } |
|
Expand |
---|
|
Code Block |
---|
export function paymentMethodBrandTranslationMap(paymentMethodBrand: string) { const translatePaymentMethodBrand = { TICKET_RESTAURANT: 'orderDetails.paymentMethodBrand.ticket_restaurant', TICKET_RESTAURANT_VOUCHER: 'orderDetails.paymentMethodBrand.ticket_restaurant_voucher', }; |
|
https://github.com/rbilabs/intl-admin-app/pull/403
Driver-app ( Voucher )
Expand |
---|
|
Code Block |
---|
export enum PaymentMethod { TICKET_RESTAURANT = 'TICKET_RESTAURANT', TICKET_RESTAURANT_VOUCHER = 'TICKET_RESTAURANT_VOUCHER', } |
|
Expand |
---|
|
Code Block |
---|
export const paymentMethodTranslation: Record<PaymentMethod, string> = { TICKET_RESTAURANT: `${pathPaymentMethosTranslation}.ticketRestaurant`, TICKET_RESTAURANT_VOUCHER: `${pathPaymentMethosTranslation}.ticketRestaurantVoucher`,
}; |
|
https://github.com/rbilabs/intl-driver-app/pull/286
Tests
Ticket Restaurant Card
Ticket Restaurant Voucher
...
| result
${'Ticket restaurant'} | ${{ cardType: 'VISA', paymentMethodBrand: 'TICKET_RESTAURANT_CARD' }} | ${'Ticket Restaurant'}
${'Ticket restaurant voucher'} | ${{ cardType: 'CASH', paymentMethodBrand: 'TICKET_RESTAURANT_VOUCHER' }} | ${'Ticket Restaurant Voucher'}
`('Should display $case payments accordingly', ({ paymentData, result }) => {
....
} |
|
Expand |
---|
|
Code Block |
---|
export function paymentMethodBrandTranslationMap(paymentMethodBrand: string) {
const translatePaymentMethodBrand = {
TICKET_RESTAURANT_CARD: 'orderDetails.paymentMethodBrand.ticket_restaurant_card',
TICKET_RESTAURANT_VOUCHER: 'orderDetails.paymentMethodBrand.ticket_restaurant_voucher',
}; |
|
Expand |
---|
|
Code Block |
---|
"paymentMethods": {
"ticket_restaurant_card": "Ticket Restaurant",
"ticket_restaurant_voucher": "Ticket Restaurant Voucher",
}, |
|
https://github.com/rbilabs/intl-admin-app/pull/403
Driver-app ( Voucher )
Expand |
---|
|
Code Block |
---|
export enum PaymentMethod {
TICKET_RESTAURANT_CARD = 'TICKET_RESTAURANT_CARD',
TICKET_RESTAURANT_VOUCHER = 'TICKET_RESTAURANT_VOUCHER',
} |
|
Expand |
---|
|
Code Block |
---|
export const paymentMethodTranslation: Record<PaymentMethod, string> = {
TICKET_RESTAURANT_CARD: `${pathPaymentMethosTranslation}.ticketRestaurantCard`,
TICKET_RESTAURANT_VOUCHER: `${pathPaymentMethosTranslation}.ticketRestaurantVoucher`,
}; |
|
Expand |
---|
|
Code Block |
---|
"paymentMethods": {
"ticketRestaurantCard": "Ticket Restaurant",
"ticketRestaurantVoucher": "Ticket Restaurant Voucher",
}, |
|
https://github.com/rbilabs/intl-driver-app/pull/286
Tests
Scenarios
Scenarios | Description | PaymentMethod | PaymentMethodBrand |
---|
The user wants to make a purchase via restaurant ticket | It should display the payment option via ticket restaurant and when clicked, a jet iframe for credit card appears. | CREDIT | TICKET_RESTAURANT_CARD |
The user wants to make a purchase via restaurant ticket voucher | It should display the payment option via ticket restaurant voucher and when clicked, only a pay button will appear | CASH | TICKET_RESTAURANT_VOUCHER |
The user select restaurant ticket and change the payment method | It should be possible to change the payment method when restaurant ticket is selected | CREDIT | TICKET_RESTAURANT_CARD |
The user select restaurant ticket and change the payment method | It should be possible to change the payment method when restaurant ticket is selected | CASH | TICKET_RESTAURANT_VOUCHER |
If the user purchases via restaurant ticket voucher, the payment method must be displayed in the Driver-app. | It should be possible to see which paymentMethodBrand was chosen in the Driver-app. | CASH | TICKET_RESTAURANT_VOUCHER |
If the user purchases via restaurant ticket, the payment method must be displayed in the DMP. | It should be possible to see which paymentMethodBrand was chosen in the DMP. | CREDIT or CASH | TICKET_RESTAURANT_CARD or TICKET_RESTAURANT_VOUCHER |
If the user purchases via restaurant ticket, the payment method must be displayed in the DOP. | It should be possible to see which paymentMethodBrand was chosen in the DOP. | CREDIT or CASH | TICKET_RESTAURANT_CARD or TICKET_RESTAURANT_VOUCHER |
If the user purchases via restaurant ticket, the payment method must be displayed in the ADMIN APP. | It should be possible to see which paymentMethodBrand was chosen in the ADMIN APP. | CREDIT or CASH | TICKET_RESTAURANT_CARD or TICKET_RESTAURANT_VOUCHER |
Ticket Restaurant Card
To make payments with the Ticket Restaurant card, we can use the same cards used for credit card payments. This integration with meal voucher cards is activated at restaurant points, together with Paycomet. We just need to validate that the credit card field is displayed to the user and that they can follow the same credit card payment flow and the paymentMethodBrand is filled with “TICKET_RESTAURANT_CARD”.
...
Ticket Restaurant Voucher
To make payments with the Ticket Restaurante Voucher, it is necessary to ensure that the process follows the CASH flow and the paymentMethodBrand is filled with “TICKET_RESTAURANT_VOUCHER”, where payment only occurs when the order is delivered to the customer and is made in person.
...
Payment Methods
It should be possible to select the restaurant card ticket as the main option to be chosen when the user enters the payment screen. You must be aware that the ticket restaurant card is not to be displayed in this list, only the voucher.
...
Possible Issues
Ticket Restaurant not accepted in payment request via paycomet
It may occur that a restaurant has payment failure when a payment request is registered via Ticket Restaurant. This problem may be related to the terminal IDs at the restaurant, which must be configured correctly to enable payment via restaurant ticket.