Skip to content
This repository was archived by the owner on Feb 9, 2022. It is now read-only.

Commit 760ba8f

Browse files
committed
Added new refund request cancel actions for
* orders * tickets Signed-off-by: smarcet <smarcet@gmail.com>
1 parent ece4950 commit 760ba8f

File tree

5 files changed

+130
-7
lines changed

5 files changed

+130
-7
lines changed

src/actions/order-actions.js

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,6 @@ export const RESET_ORDER_EXTRA_QUESTION_VALUE_FORM = 'RESET_ORDER_EXTRA_QUESTIO
4747
export const UPDATE_ORDER_EXTRA_QUESTION_VALUE = 'UPDATE_ORDER_EXTRA_QUESTION_VALUE';
4848
export const ORDER_EXTRA_QUESTION_ORDER_UPDATED = 'ORDER_EXTRA_QUESTION_ORDER_UPDATED';
4949

50-
51-
5250
export const REQUEST_PURCHASE_ORDERS = 'REQUEST_PURCHASE_ORDERS';
5351
export const RECEIVE_PURCHASE_ORDERS = 'RECEIVE_PURCHASE_ORDERS';
5452
export const RECEIVE_PURCHASE_ORDER = 'RECEIVE_PURCHASE_ORDER';
@@ -57,6 +55,7 @@ export const PURCHASE_ORDER_UPDATED = 'PURCHASE_ORDER_UPDATED';
5755
export const PURCHASE_ORDER_ADDED = 'PURCHASE_ORDER_ADDED';
5856
export const PURCHASE_ORDER_DELETED = 'PURCHASE_ORDER_DELETED';
5957
export const PURCHASE_ORDER_REFUNDED = 'PURCHASE_ORDER_REFUNDED';
58+
export const PURCHASE_ORDER_CANCEL_REFUND = 'PURCHASE_ORDER_CANCEL_REFUND';
6059
export const RESET_PURCHASE_ORDER_FORM = 'RESET_PURCHASE_ORDER_FORM';
6160
export const ORDER_EMAIL_SENT = 'ORDER_EMAIL_SENT';
6261

@@ -480,6 +479,39 @@ export const deletePurchaseOrder = (orderId) => (dispatch, getState) => {
480479
);
481480
};
482481

482+
export const cancelRefundPurchaseOrder = (orderId) => (dispatch, getState) => {
483+
let { loggedUserState, currentSummitState } = getState();
484+
let { accessToken } = loggedUserState;
485+
let { currentSummit } = currentSummitState;
486+
487+
let params = {
488+
access_token : accessToken
489+
};
490+
491+
let success_message = {
492+
title: T.translate("general.done"),
493+
html: T.translate("edit_purchase_order.order_cancel_refund"),
494+
type: 'success'
495+
};
496+
497+
return deleteRequest(
498+
null,
499+
createAction(PURCHASE_ORDER_CANCEL_REFUND)({orderId}),
500+
`${window.API_BASE_URL}/api/v1/summits/all/orders/${orderId}/refund/cancel`,
501+
{},
502+
authErrorHandler
503+
)(params)(dispatch).then(() => {
504+
dispatch(stopLoading());
505+
dispatch(showMessage(
506+
success_message,
507+
() => {
508+
history.push(`/app/summits/${currentSummit.id}/purchase-orders/${orderId}`)
509+
}
510+
));
511+
}
512+
);
513+
}
514+
483515
export const refundPurchaseOrder = (orderId, refundAmount) => (dispatch, getState) => {
484516

485517
let { loggedUserState, currentSummitState } = getState();

src/actions/ticket-actions.js

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import {
2727
getCSV,
2828
escapeFilterValue
2929
} from 'openstack-uicore-foundation/lib/methods';
30-
import {ORDER_EMAIL_SENT} from "./order-actions";
30+
import {ORDER_EMAIL_SENT, PURCHASE_ORDER_CANCEL_REFUND} from "./order-actions";
3131

3232

3333
export const REQUEST_TICKETS = 'REQUEST_TICKETS';
@@ -38,6 +38,7 @@ export const RECEIVE_TICKET = 'RECEIVE_TICKET';
3838
export const UPDATE_TICKET = 'UPDATE_TICKET';
3939
export const TICKET_UPDATED = 'TICKET_UPDATED';
4040
export const TICKET_REFUNDED = 'TICKET_REFUNDED';
41+
export const TICKET_CANCEL_REFUND = 'TICKET_CANCEL_REFUND';
4142
export const TICKET_MEMBER_ASSIGNED = 'TICKET_MEMBER_ASSIGNED';
4243
export const TICKET_MEMBER_REASSIGNED = 'TICKET_MEMBER_REASSIGNED';
4344
export const BADGE_ADDED_TO_TICKET = 'BADGE_ADDED_TO_TICKET';
@@ -284,6 +285,39 @@ export const reassignTicket = (ticketId, attendeeId, firstName, lastName, email,
284285
});
285286
};
286287

288+
export const cancelRefundTicket = (orderId, ticketId) => (dispatch, getState) => {
289+
let { loggedUserState, currentSummitState } = getState();
290+
let { accessToken } = loggedUserState;
291+
let { currentSummit } = currentSummitState;
292+
293+
let params = {
294+
access_token : accessToken
295+
};
296+
297+
let success_message = {
298+
title: T.translate("general.done"),
299+
html: T.translate("edit_ticket.ticket_cancel_refund"),
300+
type: 'success'
301+
};
302+
303+
return deleteRequest(
304+
null,
305+
createAction(TICKET_CANCEL_REFUND)({orderId}),
306+
`${window.API_BASE_URL}/api/v1/summits/all/orders/${orderId}/tickets/${ticketId}/refund/cancel`,
307+
{},
308+
authErrorHandler
309+
)(params)(dispatch).then(() => {
310+
dispatch(stopLoading());
311+
dispatch(showMessage(
312+
success_message,
313+
() => {
314+
history.push(`/app/summits/${currentSummit.id}/purchase-orders/${orderId}`)
315+
}
316+
));
317+
}
318+
);
319+
}
320+
287321
export const refundTicket = (ticketId, refundAmount) => (dispatch, getState) => {
288322

289323
let { loggedUserState, currentSummitState } = getState();

src/i18n/en.json

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1026,7 +1026,11 @@
10261026
"badge_deleted" : "Badge deleted successfully.",
10271027
"ticket_reassigned" : "Ticket reassigned successfully.",
10281028
"email_resent" : "Ticket email successfully sent.",
1029-
"resend_email" : "Resend Email"
1029+
"resend_email" : "Resend Email",
1030+
"cancel_refund" : "Cancel Refund",
1031+
"cancel_refund_warning" : "Are you sure you want to cancel the refund request for this ticket?",
1032+
"yes_cancel_refund" : "Yes, cancel refund!",
1033+
"ticket_cancel_refund" : "Ticket refund request cancelled successfully."
10301034
},
10311035
"ticket_type_list": {
10321036
"ticket_types" : "Ticket Types",
@@ -1342,7 +1346,11 @@
13421346
"order_created" : "Order created successfully",
13431347
"order_deleted" : "Order deleted successfully",
13441348
"order_refunded" : "Order refunded successfully",
1345-
"email_resent" : "Order Email Sent successfully"
1349+
"email_resent" : "Order Email Sent successfully",
1350+
"cancel_refund" : "Cancel Refund",
1351+
"cancel_refund_warning" : "Are you sure you want to cancel the refund request for this order?",
1352+
"yes_cancel_refund" : "Yes, cancel refund request!",
1353+
"order_cancel_refund" : "Cancelled refund request successfully"
13461354
},
13471355
"sponsor_list": {
13481356
"sponsors" : "Sponsors",

src/pages/orders/edit-purchase-order-page.js

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import React from 'react'
1515
import { connect } from 'react-redux';
1616
import T from "i18n-react/dist/i18n-react";
1717
import { getSummitById } from '../../actions/summit-actions';
18-
import { getPurchaseOrder, savePurchaseOrder, refundPurchaseOrder, deletePurchaseOrder, reSendOrderEmail } from "../../actions/order-actions";
18+
import { getPurchaseOrder, savePurchaseOrder, refundPurchaseOrder, deletePurchaseOrder, reSendOrderEmail, cancelRefundPurchaseOrder } from "../../actions/order-actions";
1919
import PurchaseOrderForm from "../../components/forms/purchase-order-form";
2020
import Swal from "sweetalert2";
2121

@@ -34,13 +34,31 @@ class EditPurchaseOrderPage extends React.Component {
3434
this.handleRefundOrder = this.handleRefundOrder.bind(this);
3535
this.handleRefundChange = this.handleRefundChange.bind(this);
3636
this.handleResendEmail = this.handleResendEmail.bind(this);
37+
this.handleCancelRefundOrder = this.handleCancelRefundOrder.bind(this);
3738
}
3839

3940
handleRefundChange(ev) {
4041
let value = parseInt(ev.target.value);
4142
this.setState({refund_amount: value});
4243
}
4344

45+
handleCancelRefundOrder(order, ev){
46+
let {cancelRefundPurchaseOrder} = this.props;
47+
48+
Swal.fire({
49+
title: T.translate("general.are_you_sure"),
50+
text: T.translate("edit_purchase_order.cancel_refund_warning"),
51+
type: "warning",
52+
showCancelButton: true,
53+
confirmButtonColor: "#DD6B55",
54+
confirmButtonText: T.translate("edit_purchase_order.yes_cancel_refund")
55+
}).then(function(result){
56+
if (result.value) {
57+
cancelRefundPurchaseOrder(order.id);
58+
}
59+
});
60+
}
61+
4462
handleResendEmail(order, ev){
4563
this.props.reSendOrderEmail(order.id);
4664
}
@@ -101,6 +119,12 @@ class EditPurchaseOrderPage extends React.Component {
101119
<button className="btn btn-sm btn-primary right-space" onClick={this.handleRefundOrder.bind(this, entity)}>
102120
{T.translate("edit_purchase_order.refund")}
103121
</button>
122+
{
123+
entity.status === 'RefundRequested' &&
124+
<button className="btn btn-sm btn-primary right-space" onClick={this.handleCancelRefundOrder.bind(this, entity)}>
125+
{T.translate("edit_purchase_order.cancel_refund")}
126+
</button>
127+
}
104128
<button className="btn btn-sm btn-danger" onClick={this.handleDeleteOrder.bind(this, entity)}>
105129
{T.translate("edit_purchase_order.delete_order")}
106130
</button>
@@ -141,5 +165,6 @@ export default connect (
141165
refundPurchaseOrder,
142166
deletePurchaseOrder,
143167
reSendOrderEmail,
168+
cancelRefundPurchaseOrder
144169
}
145170
)(EditPurchaseOrderPage);

src/pages/orders/edit-ticket-page.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { connect } from 'react-redux';
1616
import T from "i18n-react/dist/i18n-react";
1717
import { Breadcrumb } from 'react-breadcrumbs';
1818
import { getSummitById } from '../../actions/summit-actions';
19-
import { getTicket, refundTicket, saveTicket, reassignTicket, addBadgeToTicket, reSendTicketEmail } from "../../actions/ticket-actions";
19+
import { getTicket, refundTicket, saveTicket, reassignTicket, addBadgeToTicket, reSendTicketEmail, cancelRefundTicket } from "../../actions/ticket-actions";
2020
import TicketForm from "../../components/forms/ticket-form";
2121
import BadgeForm from "../../components/forms/badge-form";
2222
import {getBadgeFeatures, getBadgeTypes, deleteBadge, addFeatureToBadge, removeFeatureFromBadge, changeBadgeType,
@@ -77,6 +77,23 @@ class EditTicketPage extends React.Component {
7777
this.setState({refund_amount: value});
7878
}
7979

80+
handleCancelRefundTicket(ticket, ev){
81+
let {cancelRefundTicket} = this.props;
82+
83+
Swal.fire({
84+
title: T.translate("general.are_you_sure"),
85+
text: T.translate("edit_ticket.cancel_refund_warning"),
86+
type: "warning",
87+
showCancelButton: true,
88+
confirmButtonColor: "#DD6B55",
89+
confirmButtonText: T.translate("edit_ticket.yes_cancel_refund")
90+
}).then(function(result){
91+
if (result.value) {
92+
cancelRefundTicket(ticket.order_id, ticket.id);
93+
}
94+
});
95+
}
96+
8097
handleRefundTicket(ticket, ev) {
8198
let {refundTicket} = this.props;
8299
let {refund_amount} = this.state;
@@ -157,6 +174,12 @@ class EditTicketPage extends React.Component {
157174
}
158175
</div>
159176
<div className="col-md-6">
177+
{
178+
entity.status === 'RefundRequested' &&
179+
<button className="btn btn-sm btn-primary right-space" onClick={this.handleCancelRefundTicket.bind(this, entity)}>
180+
{T.translate("edit_ticket.cancel_refund")}
181+
</button>
182+
}
160183
{entity.status === 'Paid' &&
161184
<div>
162185

@@ -241,5 +264,6 @@ export default connect (
241264
addBadgeToTicket,
242265
printBadge,
243266
reSendTicketEmail,
267+
cancelRefundTicket,
244268
}
245269
)(EditTicketPage);

0 commit comments

Comments
 (0)