@open-tender/store
Version:
A library of hooks, reducers, utility functions, and types for use with Open Tender applications that utilize our in-store POS API
89 lines (88 loc) • 3.72 kB
JavaScript
import { __assign, __spreadArray } from "tslib";
import { useState } from 'react';
var emptyState = {
full_refund: false,
all_taxes: false,
items: [],
surcharges: [],
tip: '0.00',
shipping: '0.00'
};
var useRefund = function (initialState) {
if (initialState === void 0) { initialState = {}; }
var _a = useState(__assign(__assign({}, emptyState), initialState)), refund = _a[0], setRefund = _a[1];
var resetRefund = function () {
setRefund(emptyState);
};
var refundInFull = function () {
setRefund(__assign(__assign({}, emptyState), { full_refund: true }));
};
var updateItems = function (refundItem) {
var otherItems = refund.items.filter(function (i) { return i.item_no !== refundItem.item_no; });
var items = refundItem.quantity ? __spreadArray(__spreadArray([], otherItems, true), [refundItem], false) : otherItems;
setRefund(__assign(__assign({}, refund), { items: items }));
};
var incrementItem = function (item) {
var quantity = item.quantity, item_no = item.item_no;
var currentItem = refund.items.find(function (i) { return i.item_no === item_no; });
var newQuantity = currentItem ? currentItem.quantity + 1 : 1;
var updatedQuantity = Math.min(newQuantity, quantity);
var refundItem = { item_no: item_no, quantity: updatedQuantity };
updateItems(refundItem);
};
var decrementItem = function (item) {
var item_no = item.item_no;
var currentItem = refund.items.find(function (i) { return i.item_no === item_no; });
var newQuantity = currentItem ? currentItem.quantity - 1 : 0;
var updatedQuantity = Math.max(newQuantity, 0);
var refundItem = { item_no: item_no, quantity: updatedQuantity };
updateItems(refundItem);
};
var removeSurcharge = function (surcharge) {
var current = refund.surcharges.find(function (i) { return i.surcharge_id === surcharge.id; });
if (current)
return;
var surcharges = __spreadArray(__spreadArray([], (refund.surcharges || []), true), [
{ surcharge_id: surcharge.id }
], false);
setRefund(__assign(__assign({}, refund), { surcharges: surcharges }));
};
var addBackSurcharge = function (surcharge) {
var surcharges = refund.surcharges.filter(function (i) { return i.surcharge_id !== surcharge.id; });
setRefund(__assign(__assign({}, refund), { surcharges: surcharges }));
};
var removeTip = function (tip) {
setRefund(__assign(__assign({}, refund), { tip: tip }));
};
var addBackTip = function () {
setRefund(__assign(__assign({}, refund), { tip: '0.00' }));
};
var removeShipping = function (shipping) {
setRefund(__assign(__assign({}, refund), { shipping: shipping }));
};
var addBackShipping = function () {
setRefund(__assign(__assign({}, refund), { shipping: '0.00' }));
};
var removeTax = function () {
setRefund(__assign(__assign({}, refund), { all_taxes: true }));
};
var addBackTax = function () {
setRefund(__assign(__assign({}, refund), { all_taxes: false }));
};
return {
refund: refund,
resetRefund: resetRefund,
incrementItem: incrementItem,
decrementItem: decrementItem,
removeSurcharge: removeSurcharge,
addBackSurcharge: addBackSurcharge,
removeTip: removeTip,
addBackTip: addBackTip,
removeShipping: removeShipping,
addBackShipping: addBackShipping,
removeTax: removeTax,
addBackTax: addBackTax,
refundInFull: refundInFull
};
};
export default useRefund;