MAGINNOTECH
All work

ERP / Distribution

GeoPro ERP

One system for two sister companies that ran on spreadsheets — stock, quotes, invoices, KRW purchasing and P&L.

Client
Medical-aesthetics distributor (PH)
Year
2026 - Present
Engagement
4 months to go-live
GeoPro ERP website
GeoPro ERP: Pricing approval below minimum price
16/16

Client requirements live

382

SKUs migrated at go-live

289

Automated tests

4 mo

From kickoff to go-live

The brief

Replace every Excel tracker — stock per warehouse, quotes, receivables and KRW supplier prices — on live data from day one.

What we built

A multi-company Next.js ERP with a stock ledger, pricing approval, partial payments, KRW purchasing and per-role permissions.

  • Per-warehouse stock from a movement ledger
  • Quotation approval below minimum price
  • Invoicing that deducts stock automatically
  • Partial payments and customer statements
  • KRW purchase orders with landed cost
  • Profit & loss with matched cost of sales
  • Permission matrix, live without re-login
  • CSV product import with preview

Engineering highlights

Where the obvious approach was wrong.

  1. 01

    Approval that can't be bypassed

    Confirm and invoice both refuse while pricing is pending, and approval is tied to a snapshot of the lines — any edit re-opens it.

  2. 02

    Decided under the row lock

    The approval state is worked out inside the transaction, after the row lock, so a manager's concurrent approval is never overwritten.

  3. 03

    No double payments

    One atomic UPDATE adds a payment only if it fits the balance, so two payments at once can't overpay an invoice.

  4. 04

    Permissions that apply instantly

    Roles resolve from the database on every request instead of an 8-hour token, so edits and deactivations take effect immediately.

  5. 05

    Numbering that won't collide

    Per-company, per-year sequences (INV/2026/00147) fixed a collision before a second company or the next January could hit it.

  6. 06

    Cost of sales that reconciles

    Invoicing snapshots each line's unit cost, so the P&L reads revenue and cost from the same rows across month ends.

  7. 07

    KRW buying, PHP books

    The FX rate is locked per order, landed cost is spread across lines by value, and receiving updates a weighted-average cost.

  8. 08

    Shipping as a product, not a field

    A built-in VATable shipping product reused the existing line, tax and report code instead of changing all of it.

Inside the product

A closer look.

GeoPro ERP: Pricing approval below minimum price
Pricing approval below minimum price
GeoPro ERP: KRW purchase orders with landed cost
KRW purchase orders with landed cost
GeoPro ERP: Printed invoice with balance due
Printed invoice with balance due
GeoPro ERP: Role-by-module permissions
Role-by-module permissions

Want results like these?

Tell us about your project and book a free consultation.

info@maginnotech.com