UNPKG

@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
"use strict"; 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;