diff options
Diffstat (limited to 'merchant-terminal/src/main/res')
5 files changed, 241 insertions, 227 deletions
diff --git a/merchant-terminal/src/main/res/layout/fragment_process_payment.xml b/merchant-terminal/src/main/res/layout/fragment_process_payment.xml index 6cd8ea1..cb69aa2 100644 --- a/merchant-terminal/src/main/res/layout/fragment_process_payment.xml +++ b/merchant-terminal/src/main/res/layout/fragment_process_payment.xml @@ -1,5 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- +<?xml version="1.0" encoding="utf-8"?><!-- ~ This file is part of GNU Taler ~ (C) 2020 Taler Systems S.A. ~ @@ -16,95 +15,95 @@ --> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - tools:context=".payment.ProcessPaymentFragment"> + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".payment.ProcessPaymentFragment"> <ImageView - android:id="@+id/qrcodeView" - android:layout_width="0dp" - android:layout_height="0dp" - android:layout_margin="32dp" - android:visibility="invisible" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toStartOf="@+id/guideline" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - tools:ignore="ContentDescription" - tools:src="@tools:sample/avatars" - tools:visibility="visible" /> + android:id="@+id/qrcodeView" + android:layout_width="0dp" + android:layout_height="0dp" + android:layout_margin="32dp" + android:visibility="invisible" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/guideline" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:ignore="ContentDescription" + tools:src="@tools:sample/avatars" + tools:visibility="visible" /> <ProgressBar - android:id="@+id/progressBar" - style="?android:attr/progressBarStyleLarge" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintBottom_toBottomOf="@+id/qrcodeView" - app:layout_constraintEnd_toEndOf="@+id/qrcodeView" - app:layout_constraintStart_toStartOf="@+id/qrcodeView" - app:layout_constraintTop_toTopOf="@+id/qrcodeView" /> + android:id="@+id/progressBar" + style="?android:attr/progressBarStyleLarge" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + app:layout_constraintBottom_toBottomOf="@+id/qrcodeView" + app:layout_constraintEnd_toEndOf="@+id/qrcodeView" + app:layout_constraintStart_toStartOf="@+id/qrcodeView" + app:layout_constraintTop_toTopOf="@+id/qrcodeView" /> <androidx.constraintlayout.widget.Guideline - android:id="@+id/guideline" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="vertical" - app:layout_constraintGuide_percent="0.54" /> + android:id="@+id/guideline" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + app:layout_constraintGuide_percent="0.54" /> <TextView - android:id="@+id/payIntroView" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_margin="16dp" - android:text="@string/payment_intro_nfc" - android:textAlignment="center" - android:textSize="24sp" - android:visibility="invisible" - app:layout_constraintBottom_toTopOf="@+id/amountView" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="@+id/guideline" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_chainStyle="spread" - tools:visibility="visible" /> + android:id="@+id/payIntroView" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_margin="16dp" + android:text="@string/payment_intro_nfc" + android:textAlignment="center" + android:textSize="22sp" + android:visibility="invisible" + app:layout_constraintBottom_toTopOf="@+id/amountView" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="@+id/guideline" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_chainStyle="spread" + tools:visibility="visible" /> <TextView - android:id="@+id/amountView" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_margin="16dp" - android:textAppearance="@style/TextAppearance.AppCompat.Headline" - app:layout_constraintBottom_toTopOf="@+id/orderRefView" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="@+id/guideline" - app:layout_constraintTop_toBottomOf="@+id/payIntroView" - tools:text="10.49 TESTKUDOS" /> + android:id="@+id/amountView" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="16dp" + android:textAppearance="@style/TextAppearance.AppCompat.Headline" + app:layout_constraintBottom_toTopOf="@+id/orderRefView" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="@+id/guideline" + app:layout_constraintTop_toBottomOf="@+id/payIntroView" + tools:text="10.49 TESTKUDOS" /> <TextView - android:id="@+id/orderRefView" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_margin="16dp" - android:textAlignment="center" - android:visibility="invisible" - app:layout_constraintBottom_toTopOf="@id/cancelPaymentButton" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="@+id/guideline" - app:layout_constraintTop_toBottomOf="@+id/amountView" - tools:text="@string/payment_order_ref" - tools:visibility="visible" /> + android:id="@+id/orderRefView" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_margin="16dp" + android:textAlignment="center" + android:visibility="invisible" + app:layout_constraintBottom_toTopOf="@id/cancelPaymentButton" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="@+id/guideline" + app:layout_constraintTop_toBottomOf="@+id/amountView" + tools:text="@string/payment_order_ref" + tools:visibility="visible" /> <Button - android:id="@+id/cancelPaymentButton" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_margin="16dp" - android:backgroundTint="@color/red" - android:text="@string/payment_cancel" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.0" - app:layout_constraintStart_toStartOf="@+id/guideline" /> + android:id="@+id/cancelPaymentButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="16dp" + android:backgroundTint="@color/red" + android:text="@string/payment_cancel" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.0" + app:layout_constraintStart_toStartOf="@+id/guideline" /> </androidx.constraintlayout.widget.ConstraintLayout> diff --git a/merchant-terminal/src/main/res/layout/fragment_refund_uri.xml b/merchant-terminal/src/main/res/layout/fragment_refund_uri.xml index 8447d28..c82a324 100644 --- a/merchant-terminal/src/main/res/layout/fragment_refund_uri.xml +++ b/merchant-terminal/src/main/res/layout/fragment_refund_uri.xml @@ -15,79 +15,92 @@ --> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - tools:context=".payment.ProcessPaymentFragment"> + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".payment.ProcessPaymentFragment"> <ImageView - android:id="@+id/refundQrcodeView" - android:layout_width="0dp" - android:layout_height="0dp" - android:layout_margin="32dp" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toStartOf="@+id/guideline" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - tools:ignore="ContentDescription" - tools:src="@tools:sample/avatars" /> + android:id="@+id/refundQrcodeView" + android:layout_width="0dp" + android:layout_height="0dp" + android:layout_margin="32dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toStartOf="@+id/guideline" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:ignore="ContentDescription" + tools:src="@tools:sample/avatars" /> <androidx.constraintlayout.widget.Guideline - android:id="@+id/guideline" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="vertical" - app:layout_constraintGuide_percent="0.54" /> + android:id="@+id/guideline" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + app:layout_constraintGuide_percent="0.54" /> <TextView - android:id="@+id/refundIntroView" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_margin="16dp" - android:text="@string/refund_intro_nfc" - android:textAlignment="center" - android:textSize="24sp" - app:layout_constraintBottom_toTopOf="@+id/refundAmountView" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="@+id/guideline" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_chainStyle="spread" /> + android:id="@+id/refundIntroView" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_margin="16dp" + android:text="@string/refund_intro_nfc" + android:textAlignment="center" + android:textSize="22sp" + app:layout_constraintBottom_toTopOf="@+id/refundAmountView" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="@+id/guideline" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_chainStyle="spread" /> <TextView - android:id="@+id/refundAmountView" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_margin="16dp" - android:textAppearance="@style/TextAppearance.AppCompat.Headline" - app:layout_constraintBottom_toTopOf="@+id/refundRefView" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="@+id/guideline" - app:layout_constraintTop_toBottomOf="@+id/refundIntroView" - tools:text="10.49 TESTKUDOS" /> + android:id="@+id/refundAmountView" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="16dp" + android:textAppearance="@style/TextAppearance.AppCompat.Headline" + app:layout_constraintBottom_toTopOf="@+id/refundRefView" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="@+id/guideline" + app:layout_constraintTop_toBottomOf="@+id/refundIntroView" + tools:text="10.49 TESTKUDOS" /> <TextView - android:id="@+id/refundRefView" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_margin="16dp" - android:textAlignment="center" - app:layout_constraintBottom_toTopOf="@id/cancelRefundButton" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="@+id/guideline" - app:layout_constraintTop_toBottomOf="@+id/refundAmountView" - tools:text="@string/refund_order_ref" /> + android:id="@+id/refundRefView" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_margin="16dp" + android:textAlignment="center" + app:layout_constraintBottom_toTopOf="@id/cancelRefundButton" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="@+id/guideline" + app:layout_constraintTop_toBottomOf="@+id/refundAmountView" + tools:text="@string/refund_order_ref" /> <Button - android:id="@+id/cancelRefundButton" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_margin="16dp" - android:backgroundTint="@color/red" - android:text="@string/refund_abort" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.0" - app:layout_constraintStart_toStartOf="@+id/guideline" /> + android:id="@+id/cancelRefundButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="16dp" + android:backgroundTint="@color/red" + android:text="@string/refund_abort" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintEnd_toStartOf="@+id/completeButton" + app:layout_constraintHorizontal_chainStyle="spread_inside" + app:layout_constraintStart_toEndOf="@+id/refundQrcodeView" + app:layout_constraintStart_toStartOf="@+id/guideline" /> + + <Button + android:id="@+id/completeButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="16dp" + android:backgroundTint="@color/green" + android:text="@string/refund_complete" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/cancelRefundButton" /> </androidx.constraintlayout.widget.ConstraintLayout> diff --git a/merchant-terminal/src/main/res/layout/list_item_history.xml b/merchant-terminal/src/main/res/layout/list_item_history.xml index fe485ba..57f85ef 100644 --- a/merchant-terminal/src/main/res/layout/list_item_history.xml +++ b/merchant-terminal/src/main/res/layout/list_item_history.xml @@ -88,7 +88,6 @@ android:backgroundTint="?colorPrimary" android:contentDescription="@string/history_refund" android:tint="?attr/colorOnPrimary" - android:visibility="gone" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" diff --git a/merchant-terminal/src/main/res/navigation/nav_graph.xml b/merchant-terminal/src/main/res/navigation/nav_graph.xml index 2e337f2..606f2de 100644 --- a/merchant-terminal/src/main/res/navigation/nav_graph.xml +++ b/merchant-terminal/src/main/res/navigation/nav_graph.xml @@ -15,123 +15,124 @@ --> <navigation xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:id="@+id/nav_graph" - app:startDestination="@+id/nav_order" - tools:ignore="UnusedNavigation"> + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/nav_graph" + app:startDestination="@+id/nav_order" + tools:ignore="UnusedNavigation"> <fragment - android:id="@+id/nav_order" - android:name="net.taler.merchantpos.order.OrderFragment" - android:label="" - tools:layout="@layout/fragment_order"> + android:id="@+id/nav_order" + android:name="net.taler.merchantpos.order.OrderFragment" + android:label="" + tools:layout="@layout/fragment_order"> <action - android:id="@+id/action_order_to_merchantSettings" - app:destination="@+id/nav_settings" - app:launchSingleTop="true" - app:popUpTo="@+id/nav_graph" - app:popUpToInclusive="true" /> + android:id="@+id/action_order_to_merchantSettings" + app:destination="@+id/nav_settings" + app:launchSingleTop="true" + app:popUpTo="@+id/nav_graph" + app:popUpToInclusive="true" /> <action - android:id="@+id/action_order_self" - app:destination="@+id/nav_order" - app:popUpTo="@+id/nav_graph" /> + android:id="@+id/action_order_self" + app:destination="@+id/nav_order" + app:popUpTo="@+id/nav_graph" /> <action - android:id="@+id/action_order_to_processPayment" - app:destination="@+id/processPayment" /> + android:id="@+id/action_order_to_processPayment" + app:destination="@+id/processPayment" /> </fragment> <fragment - android:id="@+id/processPayment" - android:name="net.taler.merchantpos.payment.ProcessPaymentFragment" - android:label="@string/payment_process_label" - tools:layout="@layout/fragment_process_payment"> + android:id="@+id/processPayment" + android:name="net.taler.merchantpos.payment.ProcessPaymentFragment" + android:label="@string/payment_process_label" + tools:layout="@layout/fragment_process_payment"> <action - android:id="@+id/action_processPayment_to_paymentSuccess" - app:destination="@+id/paymentSuccess" - app:popUpTo="@id/nav_order" /> + android:id="@+id/action_processPayment_to_paymentSuccess" + app:destination="@+id/paymentSuccess" + app:popUpTo="@id/nav_order" /> </fragment> <fragment - android:id="@+id/nav_history" - android:name="net.taler.merchantpos.history.MerchantHistoryFragment" - android:label="@string/history_label" - tools:layout="@layout/fragment_merchant_history"> + android:id="@+id/nav_history" + android:name="net.taler.merchantpos.history.MerchantHistoryFragment" + android:label="@string/history_label" + tools:layout="@layout/fragment_merchant_history"> <action - android:id="@+id/action_nav_history_to_refundFragment" - app:destination="@id/refundFragment" /> + android:id="@+id/action_nav_history_to_refundFragment" + app:destination="@id/refundFragment" /> </fragment> <fragment - android:id="@+id/refundFragment" - android:name="net.taler.merchantpos.history.RefundFragment" - android:label="@string/history_refund" - tools:layout="@layout/fragment_refund"> + android:id="@+id/refundFragment" + android:name="net.taler.merchantpos.history.RefundFragment" + android:label="@string/history_refund" + tools:layout="@layout/fragment_refund"> <action - android:id="@+id/action_refundFragment_to_refundUriFragment" - app:destination="@id/refundUriFragment" /> + android:id="@+id/action_refundFragment_to_refundUriFragment" + app:destination="@id/refundUriFragment" + app:popUpTo="@id/nav_history" /> </fragment> <fragment - android:id="@+id/refundUriFragment" - android:name="net.taler.merchantpos.history.RefundUriFragment" - android:label="@string/history_refund" - tools:layout="@layout/fragment_refund_uri" /> + android:id="@+id/refundUriFragment" + android:name="net.taler.merchantpos.history.RefundUriFragment" + android:label="@string/history_refund" + tools:layout="@layout/fragment_refund_uri" /> <fragment - android:id="@+id/nav_settings" - android:name="net.taler.merchantpos.config.MerchantConfigFragment" - android:label="@string/config_label" - tools:layout="@layout/fragment_merchant_config"> + android:id="@+id/nav_settings" + android:name="net.taler.merchantpos.config.MerchantConfigFragment" + android:label="@string/config_label" + tools:layout="@layout/fragment_merchant_config"> <action - android:id="@+id/action_settings_to_order" - app:destination="@+id/nav_order" - app:launchSingleTop="true" - app:popUpTo="@+id/nav_graph" - app:popUpToInclusive="true" /> + android:id="@+id/action_settings_to_order" + app:destination="@+id/nav_order" + app:launchSingleTop="true" + app:popUpTo="@+id/nav_graph" + app:popUpToInclusive="true" /> </fragment> <fragment - android:id="@+id/configFetcher" - android:name="net.taler.merchantpos.config.ConfigFetcherFragment" - android:label="@string/config_fetching_label" - tools:layout="@layout/fragment_config_fetcher"> + android:id="@+id/configFetcher" + android:name="net.taler.merchantpos.config.ConfigFetcherFragment" + android:label="@string/config_fetching_label" + tools:layout="@layout/fragment_config_fetcher"> <action - android:id="@+id/action_configFetcher_to_merchantSettings" - app:destination="@+id/nav_settings" - app:launchSingleTop="true" - app:popUpTo="@+id/nav_graph" - app:popUpToInclusive="true" /> + android:id="@+id/action_configFetcher_to_merchantSettings" + app:destination="@+id/nav_settings" + app:launchSingleTop="true" + app:popUpTo="@+id/nav_graph" + app:popUpToInclusive="true" /> <action - android:id="@+id/action_configFetcher_to_order" - app:destination="@+id/nav_order" - app:launchSingleTop="true" - app:popUpTo="@+id/nav_graph" - app:popUpToInclusive="true" /> + android:id="@+id/action_configFetcher_to_order" + app:destination="@+id/nav_order" + app:launchSingleTop="true" + app:popUpTo="@+id/nav_graph" + app:popUpToInclusive="true" /> </fragment> <fragment - android:id="@+id/paymentSuccess" - android:name="net.taler.merchantpos.payment.PaymentSuccessFragment" - android:label="@string/payment_received" - tools:layout="@layout/fragment_payment_success" /> + android:id="@+id/paymentSuccess" + android:name="net.taler.merchantpos.payment.PaymentSuccessFragment" + android:label="@string/payment_received" + tools:layout="@layout/fragment_payment_success" /> <action - android:id="@+id/action_global_order" - app:destination="@+id/nav_order" - app:launchSingleTop="true" - app:popUpTo="@+id/nav_graph" /> + android:id="@+id/action_global_order" + app:destination="@+id/nav_order" + app:launchSingleTop="true" + app:popUpTo="@+id/nav_graph" /> <action - android:id="@+id/action_global_merchantHistory" - app:destination="@+id/nav_history" - app:launchSingleTop="true" /> + android:id="@+id/action_global_merchantHistory" + app:destination="@+id/nav_history" + app:launchSingleTop="true" /> <action - android:id="@+id/action_global_merchantSettings" - app:destination="@+id/nav_settings" - app:launchSingleTop="true" /> + android:id="@+id/action_global_merchantSettings" + app:destination="@+id/nav_settings" + app:launchSingleTop="true" /> <action - android:id="@+id/action_global_configFetcher" - app:destination="@+id/configFetcher" - app:launchSingleTop="true" /> + android:id="@+id/action_global_configFetcher" + app:destination="@+id/configFetcher" + app:launchSingleTop="true" /> </navigation> diff --git a/merchant-terminal/src/main/res/values/strings.xml b/merchant-terminal/src/main/res/values/strings.xml index 756ef38..712a2fc 100644 --- a/merchant-terminal/src/main/res/values/strings.xml +++ b/merchant-terminal/src/main/res/values/strings.xml @@ -36,8 +36,8 @@ <string name="config_fetching_label">Fetching Configuration</string> <string name="config_docs">Please refer to <a href="https://docs.taler.net/taler-merchant-pos-terminal.html#apis-and-data-formats">the documentation</a> for the configuration format.</string> - <string name="payment_intro_nfc">Please scan QR Code or use NFC to pay</string> - <string name="payment_intro">Please scan QR Code to pay</string> + <string name="payment_intro_nfc">Please let customer scan QR Code or use NFC to pay</string> + <string name="payment_intro">Please let customer scan QR Code to pay</string> <string name="payment_cancel">Cancel Payment</string> <string name="payment_received">Payment received</string> <string name="payment_back_button">Continue</string> @@ -51,14 +51,16 @@ <string name="refund_amount">Amount</string> <string name="refund_reason">Refund reason</string> <string name="refund_abort">Abort</string> + <string name="refund_complete">Received</string> <string name="refund_confirm">Give Refund</string> <string name="refund_error_max_amount">Greater than order amount of %s</string> <string name="refund_error_invalid_amount">Invalid amount</string> <string name="refund_error_zero">Needs to be positive amount</string> <string name="refund_error_backend">Error processing refund</string> <string name="refund_error_deadline">Refund deadline has passed</string> - <string name="refund_intro_nfc">Please scan QR Code or use NFC to give refund</string> - <string name="refund_intro">Please scan QR Code to give refund</string> + <string name="refund_error_already_refunded">Already refunded</string> + <string name="refund_intro_nfc">Please let customer scan QR Code or use NFC to give refund</string> + <string name="refund_intro">Please let customer scan QR Code to give refund</string> <string name="refund_order_ref">Order Reference: %1$s\n\n%2$s</string> <string name="error_network">Network Error</string> |