ARC S7 / architectural fixture
Lighting sales that end in a signature, not in an email thread.
The request, the contract price list, the negotiation and the trade credit in a single view. Acceptance creates the order.
- Reach
- 1000 mm
- Finish
- Brass
- Colour
- 3000 K
- Minimum
- 10 pcs
0
Domain tables alongside the WooCommerce schema
0
Test cases covering pricing, access and the state machine
0
Warehouses with availability resolved per company
0
Lines changed in the WooCommerce core
01 / Pricing
Every company sees its own price. And nobody else does.
A contract price resolves in order: the company price list, then the price group, then the category rule, and finally the list price. On top of that come quantity breaks and a logistics minimum. The result never reaches the public HTML, the schema.org data or the public Store API, and the response carries a header forbidding cache.
A
Four layers of resolution, one answer
Atelier North buys the ARC S7 at 1960 zl for ten units and at 1590 zl for two hundred and fifty. Aurora Hotels has a different list and a higher minimum. The distributor settles in euro. Three different answers to the same question about the same product, all computed by the same engine.
PriceEngine::get_price / 4 layers / breaks and MOQ
B
Trade credit outside the public checkout
The payment gateway exists, but in the ordinary checkout it reports itself unavailable. Only accepting a quotation in the Deal Room brings it into play. The ledger holds the limit, the drawn amount and every movement separately.
WC_Payment_Gateway / movement ledger
C
Availability per company
A customer sees stock only for the warehouses they are assigned to. The rest of the network stays invisible.
Warehouse::get_stock
D
Revisions are immutable
Every quotation and counter-offer is its own record. Nothing is overwritten, so an argument about who proposed what is settled by the database.
rfq_revisions
E
Orders through the CRUD layer
Acceptance calls the official WooCommerce API. Not a single write straight into the post or meta tables.
wc_create_order / HPOS
02 / Configurator
The variant resolves into a code, and the code goes into the request.
A WebGL scene with studio lighting, a contact shadow rendered to a texture and a diffuser with real light transmission. Every change recomputes the product code. The button at the foot of the panel creates a genuine server-side request and takes you into the Deal Room.
03 / Walkthrough
The life of one order, step by step.
The customer submits a request
Anna at Atelier North configures a fixture and sends the request. A record, a first revision and a history entry appear. The sales rep assigns themselves, because the company already has an account owner.
The engine applies the price list
The system finds the list assigned to Atelier North and checks the quantity break. At a hundred units the price drops from 1960 to 1720 zl. The logistics minimum is ten units.
The sales rep issues a quotation
Julia sets the unit prices and adds a delivery split between Warsaw and Berlin, because no single warehouse holds the whole quantity. She saves a note the customer will never see.
Both sides see the same thing
A quantity change on the customer side and a price change on the sales side both recompute the value at once. Tabs in other windows pick the update up over the cross-tab channel, and when that is unavailable, through the change counter.
Acceptance creates the order
The value exceeds Anna’s limit, so the request waits for Marek’s signature. Once approved, the order is created, the credit line is drawn against and the proforma is ready.
Logistics minimum for this product: 10 pcs.
Delivery split
Internal note: we can go another 4 percent lower. Not visible to the customer.
The counter rises on every change, so two events in the same second stay distinguishable and neither is lost.
Trade credit after the draw
04 / Segments
The same data layer, three different views.
Hotel groups
Aurora Hotels: seasonal orders across many properties
Head office files one request to relight several properties. The sales rep breaks the delivery down by site and warehouse, while settlement goes through as a single account on longer terms. The higher quantity minimum is what buys the lower unit rate.
- Credit limit
- 500 000 zl
- Terms
- net_45
- Price list
- hotel_chain
- Minimum
- 20 pcs
Design studios
Atelier North
Premium projects, small quantities, high expectations about how fast someone answers. The request goes through the Deal Room and the quotation covers a non-standard finish.
- Price list
- premium
- Terms
- net_30
- Limit
- 150 000 zl
- Minimum
- 10 pcs
Distribution
ElektroPartner
Large volumes, settlement in euro, availability checked without picking up the phone. The price drops markedly, because the minimum is five times higher.
- Price list
- distributor
- Currency
- EUR
- Limit
- 250 000 zl
- Minimum
- 50 pcs
05 / The difference
What exactly this adds to a standard shop.
WooCommerce on its own handles retail very well. What follows is only what it does not have, and what in B2B decides whether a customer places the order online at all.
| Area | WooCommerce, unextended | LUMORA PRO |
|---|---|---|
| Price | One list price, coupons at best | A list per company and group, quantity breaks, a minimum, the company’s currency |
| Negotiation | None. The conversation moves to email | Request, quotation, counter-offer and acceptance in one view, with an immutable revision history |
| Deferred payment | No trade credit | A limit, a drawn amount, a movement ledger, and a gateway outside the public checkout |
| Warehouse | One stock figure per product | Many warehouses, availability shown per company, delivery split inside the quotation |
| Roles | Customer or administrator | Buyer, approver with a limit, sales rep, sales manager |
| Confidentiality | Prices in the HTML, in schema.org and in the public API | Prices only for the signed-in company, outside the schema, with cache forbidden |
| Documents | An invoice once paid | A proforma from the quotation, before payment, with the delivery split |
06 / Working together
Three ways to get this moving at your client.
These ranges cover development work on the GroDev side, as a subcontractor to an agency. The agency keeps the client relationship, the brand and the design. Amounts are net.
Discovery
6 400 zl10 working days
Before anyone quotes a whole project, you have to know what is actually sitting in the client’s data and in their trading system.
- An audit of the existing price list and discount structure
- An integration map for the warehouse and accounting systems
- A data model and a risk list with a price against each one
- A clickable request flow running on the client’s own data
- An implementation quote broken down by stage
Implementation
42 000 zlfrom / 55 working days
The scope this demo covers, carried over onto a particular client’s products and price lists.
- A pricing engine with breaks, minimums and price groups
- Requests for quotation with negotiation and a revision history
- Trade credit with a limit and a movement ledger
- Multiple warehouses and delivery splitting
- A customer portal and a sales desk
- Tests covering price isolation, access and the state machine
Extension
Pricedindividually
The things that only surface after go-live, once the sales team is using it every day.
- Integration with the client’s system, Odoo or Comarch for instance
- A 3D configurator for their own product family
- An approval path above the buyer’s limit
- Multiple languages and multiple currencies
- Post-launch support on a retainer
07 / Architecture
Layers kept apart, the core untouched.
All the B2B logic lives in its own plugin and its own tables. WooCommerce is touched only through its public API, so updating the shop breaks nothing here. The front end is a single module with no framework and no build step.
Front end
Deal Room, portal, catalogue, WebGL configurator
REST lumora/v1
nonce, capability, protection against reaching other people’s data
B2B domain
pricing, requests, credit, warehouses, roles
WooCommerce
orders in the new schema, the trade credit gateway
For agencies
We come in as the developer behind the scenes. The client stays yours.
This demo exists so that you do not have to take our word for anything. The code behind it is split into layers precisely so it can be carried over to your client without being rewritten from scratch. We take the back end, the integrations and the tests. The relationship, the brand and the design stay with you.
- Stack
- WordPress, WooCommerce, a PSR-4 plugin, ES modules, Three.js
- Time to a working portal
- 55 working days for the scope shown in this demo
- Model
- Subcontracting for agencies, priced in stages
- Contact
- dominik.gronski@grodev.pl
+48 888 517 845
