# Acumatica ProjectEntry **PM Labor Auto‑Budget** Extension
Keeps one **PMLABOR** revenue‑budget line in sync with the project’s PM‑hours
every time a revenue budget amount changes.
| Item | Value |
|------|-------|
| **Target screen / graph** | **Project Entry** (`PM301000`) → `ProjectEntry` |
| **DAC touched** | `PMRevenueBudget` |
| **Key Inventory ID** | `PMLABOR` |
| **Labor rate** | **90** (project currency) |
| **Exits early when** | • Project’s branch **301**
• Billing rule **PROGRESS** |
---
## ✨ Features
1. **Monitors** `Original Budgeted Amount` on revenue lines.
2. **Totals** the project’s revised revenue (excluding PMLABOR).
3. **Converts** that total to PM‑hours with a bucket table:
| Revenue ≤ | PM Hours |
|-----------|---------|
| 1 000 | 1.0 |
| 2 500 | 1.5 |
| 5 000 | 3.0 |
| 7 500 | 3.5 |
| 10 000 | 5.0 |
| 25 000 | 6.0 |
| 50 000 | 9.0 |
| > 50 000 | 10.5 |
4. **Updates / inserts** one PMLABOR line → `Qty = PM‑hours`, `Rate = 90`, amount auto‑recalculated.
5. **Pins** the rate in `RowPersisting`, preventing the 90 → 0 flip when users save mid‑edit.
6. **Debug logging** via `PXTrace` (toggle with `DEBUG_ON`).
---
## 🛠 Install
```text
1. Copy ProjectEntryExt.cs → \App_RuntimeCode
2. Customization » Projects (SM204505)
• Add File → select ProjectEntryExt.cs
• Publish