efrilm and Claude Opus 5
992bb04816
feat(order): support weight-based products
...
Products like fish are sold per weighing (4.2 ons, 5.6 ons), which the
order line could not represent: quantity is INTEGER and prices are always
computed as quantity * unit_price.
Model one weighing as one order line. quantity stays INTEGER and keeps
meaning "how many items"; the measured amount goes into a new nullable
order_items.weight, and the line is priced weight * unit_price. Two
weighings of the same product are two lines, never merged into one.
Keeping quantity integral avoids float comparisons in void, refund and
split bill, where accumulated rounding error would silently misbehave —
"1.4 + 1.4 + 1.4" is not 4.2 in float64, which would leave a fully paid
split-bill item marked unpaid.
BillableQuantity() is now the single place that decides between weight
and count; every price and cost calculation goes through it. Missing one
would bill a 4.2 ons fish as a single ons — wrong money, no error.
Two database constraints back the design: a weighed line always carries a
positive weight, and its quantity is pinned to 1. The latter also makes
void all-or-nothing for weighed lines, so the row-splitting branch can
never produce a zero-weight remainder row.
Also wires product.unit_id through the API, which was previously not
settable at all, and corrects the misleading comment on the request's
unit_price field — that value has never been used; price always comes
from the database.
Design notes and the audit of every price multiplication site are in
docs/rfc-weight-based-products.md.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-06 17:14:42 +07:00
Efril
2c6864147b
feat: cash advance
2026-08-13 14:38:28 +07:00
Efril
e6078e3c0b
feat(purchase
2026-08-11 22:41:10 +07:00
efrilm
dbc143954c
feat(purchase): unwired unit convertions
2026-08-11 21:24:24 +07:00
efrilm
0726fcecf0
feat(ingredients): make units nullable
2026-08-11 21:20:17 +07:00
efrilm
9ae5be2c33
feat(purchasae): added team with category parent and central
2026-08-11 21:00:39 +07:00
Efril
4f7e774043
feat(products): sort by
2026-08-11 20:47:38 +07:00
Efril
a7c2d6cbb3
feat(category): update list filter category
2026-08-06 21:21:41 +07:00
Efril
b9ac97178f
feat: profit sharing
2026-08-05 19:28:38 +07:00
Efril
2b80c92caa
feat: deployment
2026-07-09 22:43:01 +07:00
Efril
f7dd0bd5e8
config: update port
2026-07-09 22:19:53 +07:00
Efril
1533914e4d
config: prod and staging
2026-07-09 22:11:03 +07:00
Efril
bfce4b865b
update purchase date
2026-07-02 12:49:28 +07:00
Efril
581e4a5453
update purchase date
2026-07-02 12:23:12 +07:00
Efril
9b0fc9a63b
feat: updat analytic profit loss add purchasing
2026-06-24 00:11:04 +07:00
Efril
793919cf10
feat: add outlet name at analytic response and new overview dashboard
2026-06-23 22:18:16 +07:00
efrilm
3977370079
fix: product price
2026-06-22 13:33:25 +07:00
Efril
37bcb90ab0
feat: ensure all role
2026-06-19 13:58:36 +07:00
Efril
e345aeee97
feat: new users role
2026-06-19 13:31:33 +07:00
Efril
486d94335b
Merge branch 'main' of https://gits.altru.id/apksel-dev/apskel-pos-backend
2026-06-18 19:55:04 +07:00
Efril
503fb5734f
fix: migration 82
2026-06-18 16:34:37 +07:00
Efril
7a7ac25dcf
fix conflict
2026-06-11 16:47:03 +07:00
Efril
d0a548f44e
merger
2026-06-11 16:43:53 +07:00
Efril
c57620beeb
feat: update product analytic
2026-06-08 19:32:30 +07:00
Efril
021ec152e9
feat: implement idempotency key for critical API endpoints
2026-06-04 00:49:45 +07:00
Efril
ea9dceb333
fix: prevent race condition on order subtotal calculation
2026-06-03 23:59:15 +07:00
Efril
afa1aa5b75
Merge branch 'main' of https://gits.altru.id/apksel-dev/apskel-pos-backend
2026-06-03 22:02:14 +07:00
Efril
328336ea5a
fix log error and omset tracker scheduled
2026-06-03 22:01:58 +07:00
Efril
f7399fd0e7
Merge branch 'main' of https://gits.altru.id/apksel-dev/apskel-pos-backend into feature/expense
2026-05-29 12:34:34 +07:00
Efril
84222fc7f4
update
2026-05-28 15:30:18 +07:00
Efril
23ac572e3f
add print_to_checker at product outlet
2026-05-28 13:49:57 +07:00
Efril
66a8126da0
expense filter by outlet and date range
2026-05-28 11:52:16 +07:00
Efril
957c1ae53d
update order response
2026-05-25 20:28:24 +07:00
Efril
d0378b5ac4
update category
2026-05-21 23:05:25 +07:00
Efril
91960f0e57
categories add outlet id
2026-05-21 21:27:57 +07:00
Efril
72f67cb519
create or update product assign to product outlet
2026-05-21 21:20:54 +07:00
Efril
d9b51a7616
update ordedr list
2026-05-14 16:17:28 +07:00
Efril
cb8a830345
fix pointer
2026-05-14 13:54:15 +07:00
Efril
222cadd8df
table and order grouping by outlet
2026-05-14 01:40:17 +07:00
Efril
50d633ee3a
fix products
2026-05-14 01:19:45 +07:00
Efril
21fa21d089
get products all
2026-05-14 00:15:28 +07:00
efrilm
fa037b4d2a
fix request outlet id at analytic
2026-05-13 14:23:27 +07:00
efrilm
f8c732f0ff
update dockerfile
2026-05-12 18:46:12 +07:00
Efril
f73a5d533c
add notif at create order
2026-05-10 23:36:22 +07:00
Efril
4ea8e32a8e
Merge branch 'self-order+notification' of https://gits.altru.id/apksel-dev/apskel-pos-backend into self-order+notification
2026-05-10 23:10:03 +07:00
Efril
06d79046d0
fix order and self order response
2026-05-10 23:07:57 +07:00
Efril
f123de7233
Revert "change order response at self order"
...
This reverts commit 7ba776555e .
2026-05-10 21:31:17 +07:00
Efril
7ba776555e
change order response at self order
2026-05-10 21:19:37 +07:00
Efril
bccf02b5f7
rename session_id
2026-05-10 19:56:34 +07:00
Efril
c24a8a8c13
rename organization_id, add customer_name and order_type at order self order
2026-05-10 19:15:50 +07:00
Efril
1834dd0b19
update url qrcode table
2026-05-10 14:13:20 +07:00
Efril
9f653eef37
fix migration number
2026-05-10 13:30:40 +07:00
Efril
ddaf6df436
migration notification
2026-05-10 12:35:44 +07:00
Efril
9d71b339b5
notification
2026-05-10 10:57:38 +07:00
Efril
bbd6666299
user devices
2026-05-10 10:42:09 +07:00
Efril
23b6293502
fcm setup
2026-05-09 12:24:44 +07:00
Efril
a7022dd4c1
ingredient composition
2026-04-27 21:17:12 +07:00
Efril
3542104050
fix sales
2026-04-27 13:24:16 +07:00
Efril
eb95459578
fix if order amount 0
2026-04-26 23:40:01 +07:00
Efril
1a5ddd2b34
update
2026-04-26 23:25:54 +07:00
Efril
0aa280462c
fix cors
2026-04-26 23:14:11 +07:00
Efril
75fdb8e847
Merge branch 'hpp' of https://gits.altru.id/apksel-dev/apskel-pos-backend into hpp
2026-04-26 23:04:47 +07:00
Efril
8efa644680
payment amount fix 0
2026-04-26 23:04:31 +07:00
Efril
d3dddea1c7
add category name at product response
2026-04-20 14:21:27 +07:00
Efril
80a78137a0
fix create outlet
2026-04-20 12:31:33 +07:00
efrilm
3826a6b7a9
create outlet route
2026-04-16 19:23:36 +07:00
efrilm
d695bedc97
update product response
2026-04-16 17:14:18 +07:00
efrilm
3db4afbce6
fix update ingredients
2026-04-16 15:44:13 +07:00
efrilm
535e4c84f6
product variant route
2026-04-16 14:30:48 +07:00
Efril
f25ec1c06f
create outlet
2026-04-14 19:09:09 +07:00
efrilm
b3359fa6ff
update product analytic
2025-11-25 21:44:20 +07:00
efrilm
0c331dce6a
update product analytic if exiest order
2025-11-25 13:23:59 +07:00
efrilm
cd784624c9
update total sales in dashboard
2025-10-15 18:55:35 +07:00
efrilm
3e0d75a4d0
update products
2025-10-09 20:03:20 +07:00
efrilm
54dc8662d6
merge
2025-10-07 00:07:38 +07:00
efrilm
27a2535dde
update product analytic
2025-10-07 00:02:15 +07:00
efrilm
f55ea1ceb0
add order at categories
2025-10-06 22:46:01 +07:00