feat: odebírání položek objednávky ve sloupci Z nabídky
CI / Generate TypeScript types (push) Successful in 10s
CI / Server unit tests (push) Successful in 26s
CI / Build server (push) Successful in 58s
CI / Build client (push) Successful in 1m4s
CI / Playwright E2E tests (push) Successful in 1m47s
CI / Build and push Docker image (push) Successful in 45s
CI / Notify (push) Successful in 2s
CI / Generate TypeScript types (push) Successful in 10s
CI / Server unit tests (push) Successful in 26s
CI / Build server (push) Successful in 58s
CI / Build client (push) Successful in 1m4s
CI / Playwright E2E tests (push) Successful in 1m47s
CI / Build and push Docker image (push) Successful in 45s
CI / Notify (push) Successful in 2s
This commit is contained in:
4 files changed
+94
-3
No files matched your search
@@ -12,7 +12,7 @@ import {
|
||||
} from '../../../types';
|
||||
import MenuHintCell from '../components/MenuHintCell';
|
||||
import EaterBadge from '../components/EaterBadge';
|
||||
import { countNoteItems } from '../utils/menuMatch';
|
||||
import { countNoteItems, removeNoteItem } from '../utils/menuMatch';
|
||||
import { computeFeeShare, computeMemberTotal, countActiveMembers } from '../utils/groupFees';
|
||||
import { getStoreUrls, isHttpUrl, storeUrlLabel } from '../utils/storeUrls';
|
||||
import { EVENT_MESSAGE, EVENT_PENDING_QR, SocketContext } from '../context/socket';
|
||||
@@ -339,6 +339,15 @@ export default function OrderGroupsPage() {
|
||||
return refresh(() => updateGroupMember({ body: { id: group.id, login, note, ...(amount != null && { amount }) } }));
|
||||
};
|
||||
|
||||
/** Odebere jeden kus položky z poznámky a odečte její cenu z částky (nikdy pod nulu). */
|
||||
const handleRemoveDish = (group: OrderGroup, login: string, member: OrderGroupMember, index: number) => {
|
||||
const { note, removedPrice } = removeNoteItem(member.note, index, getGroupMenu(group) ?? []);
|
||||
const amount = removedPrice != null && member.amount != null
|
||||
? Math.max(0, member.amount - Math.round(removedPrice * 100))
|
||||
: member.amount;
|
||||
return refresh(() => updateGroupMember({ body: { id: group.id, login, note, ...(amount != null && { amount }) } }));
|
||||
};
|
||||
|
||||
const handleUseMenuPrice = (group: OrderGroup, login: string, priceKc: number) =>
|
||||
refresh(() => updateGroupMember({ body: { id: group.id, login, amount: Math.round(priceKc * 100) } }));
|
||||
|
||||
@@ -789,6 +798,7 @@ export default function OrderGroupsPage() {
|
||||
canEdit={canEdit}
|
||||
onPick={dish => handlePickDish(group, memberLogin, member, dish)}
|
||||
onUsePrice={price => handleUseMenuPrice(group, memberLogin, price)}
|
||||
onRemoveItem={index => handleRemoveDish(group, memberLogin, member, index)}
|
||||
/>
|
||||
</td>
|
||||
) : null}
|
||||
|
||||
Reference in new issue
Block a user