@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
91 lines (90 loc) • 4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var react_1 = require("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 = (0, react_1.useState)(tslib_1.__assign(tslib_1.__assign({}, emptyState), initialState)), refund = _a[0], setRefund = _a[1];
var resetRefund = function () {
setRefund(emptyState);
};
var refundInFull = function () {
setRefund(tslib_1.__assign(tslib_1.__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 ? tslib_1.__spreadArray(tslib_1.__spreadArray([], otherItems, true), [refundItem], false) : otherItems;
setRefund(tslib_1.__assign(tslib_1.__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 = tslib_1.__spreadArray(tslib_1.__spreadArray([], (refund.surcharges || []), true), [
{ surcharge_id: surcharge.id }
], false);
setRefund(tslib_1.__assign(tslib_1.__assign({}, refund), { surcharges: surcharges }));
};
var addBackSurcharge = function (surcharge) {
var surcharges = refund.surcharges.filter(function (i) { return i.surcharge_id !== surcharge.id; });
setRefund(tslib_1.__assign(tslib_1.__assign({}, refund), { surcharges: surcharges }));
};
var removeTip = function (tip) {
setRefund(tslib_1.__assign(tslib_1.__assign({}, refund), { tip: tip }));
};
var addBackTip = function () {
setRefund(tslib_1.__assign(tslib_1.__assign({}, refund), { tip: '0.00' }));
};
var removeShipping = function (shipping) {
setRefund(tslib_1.__assign(tslib_1.__assign({}, refund), { shipping: shipping }));
};
var addBackShipping = function () {
setRefund(tslib_1.__assign(tslib_1.__assign({}, refund), { shipping: '0.00' }));
};
var removeTax = function () {
setRefund(tslib_1.__assign(tslib_1.__assign({}, refund), { all_taxes: true }));
};
var addBackTax = function () {
setRefund(tslib_1.__assign(tslib_1.__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
};
};
exports.default = useRefund;