BizCore v4.1 — Production Stock Posting & Costing

Install
1. Back up database and project files.
2. Extract this ZIP into the BizCore project root and overwrite included files.
3. Open /update-4.1.php while logged in as Super Admin.
4. Click Install v4.1 Update.
5. Open Production > Production Orders and test with a small batch first.

Completion logic
- Material stock OUT = Actual Used + Wastage.
- Material valuation = current warehouse weighted-average cost.
- Finished stock IN = Actual Finished Output.
- Finished unit cost = Total Material Cost / Actual Finished Output.
- Batch number and expiry date are copied to the finished-goods stock movement.
- Stock posting is atomic and one-time only.
- Negative stock is blocked unless that material explicitly allows negative stock.
- Completed/posted production is locked against editing.

Important
The update does not auto-post old completed v4.0 production orders. This avoids silently changing historical stock.
