Using procurement
How a spare request becomes a requisition, a quote, a purchase order and a receipt.
Procurement is the path from a needed part to a receipt: requisition, request for quote, quotes side by side, purchase order, receipt and the supplier invoice. The chief engineer raises the request from the job or from a low stock line. The superintendent approves the requisition and awards the quote. Paying the invoice is finance, not this module.
Dashboard and pages
Procurement is http://localhost:4400/app/procurement . It shows open requisitions, requests waiting for quotes, orders waiting for approval, deliveries due at the next port calls, and spend over the last 90 days by category.
Requisitions is http://localhost:4400/app/procurement/requisitions . One requisition is the same path plus the id: lines, approvals and the quotes side by side. Purchase orders is http://localhost:4400/app/procurement/orders . One order shows the lines, the approval, the receipts and the invoice match. Suppliers is http://localhost:4400/app/procurement/suppliers . Integrations is http://localhost:4400/app/integrations/procurement .
Workflows
Create a requisition, submit it, send the RFQ, post a receipt and record the supplier invoice need edit. Send RFQ (procurement.rfq.send) and send the order (procurement.po.send) are marked outbound. They contact no supplier. The buttons include Submit, Post receipt and the send actions on the requisition and the order.
Approve a requisition needs publish (procurement.requisition.approve). Award a quote needs publish (procurement.quote.award). The button is Award. Awarding creates the order and prices the lines only from that quote, in one database transaction.
Approve the order needs edit (procurement.po.approve), and publish when the order total is above $5,000. Both the app and the database check that limit. The order is locked before a receipt. In the demo Ravi Menon has edit. He can raise a requisition from a job card and cannot approve it. Kaan Erdem has publish.
Shared records
The part is inventory’s record. The job card shows one spare request, which is this requisition line. A receipt posts a stock move. Inventory does not keep a second on-hand figure. The port call is where the delivery is due. The call page links to this module. It does not copy the order. Finance keeps its own invoice row, linked by the order number, with its own exchange rate. The two rows are not one record yet.
What the demo simulates
On MV Aldersea the piston-ring set for the unit 1 overhaul is an RFQ with three quotes back. The turbo-bearing kit is an order waiting for approval. Quotes and prices are calculated. The demo FX table is fixed, not a market. In the demo, sending an RFQ returns the three quotes at once. In database mode it only stores the RFQ until a connector writes quotes. Sending the order sends nothing. Suppliers are invented. Cancelling a requisition, editing lines after draft, and an order without an RFQ are not built.
Integrations
ShipServ and the IMPA catalogue are mocks. See Connections and the module reference.