Locations (/admin/locations) guarda filas de county y city usadas en proyectos y estimates. El listado va agrupado: padres county con ciudades anidadas.
Permisos: FunctionId COUNTY (32), menú Estimating → Libraries → Locations (function.url = county). View abre la pantalla; Add New; Edit y Delete en fila, bulk de estado y bulk delete.
Disposición de la pantalla
Figura: grilla agrupada County / City / Status, Search, Filter (State, District, Map location), Export, New, expand/collapse en padres county.
| Región | Qué ves |
|---|---|
| Barra de página | Título Locations, subtítulo, New (Add), ayuda ?. |
| Tarjeta de datos | Search, Filter, Export, columnas agrupadas, checkboxes (solo filas con id real), bulk Mark Active/Inactive y Delete, paginación por grupos county. |
| Modal New | New County: — un paso, sin wizard (tipo County/City, State, District, Name, Map location, Status). |
| Modal Edit | Update Location: \{name\} — wizard General · Projects · Estimates (tablas informativas). |
- County / City / Status — ordenables. Las filas padre County se expanden a City anidadas (listado agrupado del legado).
- Filter — State, District y Map location (All / No map location / Has map location).
- Export — Copy, Excel y CSV de la página actual.
- Checkboxes + barra bulk — Mark as Active, Mark as Inactive, Delete. Las filas ligadas a proyectos o estimates no se pueden borrar.
- New — abre un modal (New County:) sin stepper.
- Fila ⋮ — Edit (modal wizard) · Activate o Deactivate · Delete.
Alta
Empieza por Location type (County o City), luego State, District, Name (o county padre + nombre de ciudad), Map location y Status. District es obligatorio. En tipo City, el listado County carga condados del District y/o State elegido (basta con uno de los dos).
Map location usa Google Places (US) más latitud/longitud y Clear. Places usa la misma clave que Symfony (GOOGLE_MAPS_API_KEY / NEXT_PUBLIC_GOOGLE_MAPS_API_KEY en env local — nunca en git).
Wizard de edición
Edit abre un modal sobre el listado. Título: Update Location: {name}. Los pasos viven solo en el stepper — General, Projects, Estimates — sin título extra debajo de las pills.
Figura: Edit Location — DataTable de Projects (Search, Export, sort, paginado). Estimates usa el mismo chrome.
- General — mismos campos que New (Location type, State, District, Name, Map location, Status).
- Projects — proyectos ligados, solo lectura. Columnas: C & G Project #, County, Name, Description, Due Date, Company, Status, Notes, Actions. Search, Export (Copy / Excel / CSV), encabezados ordenables, filas por página. Actions es un solo botón ojo (View), no un menú ⋮ — abre el proyecto cuando exista esa pantalla.
- Estimates — estimates ligados, solo lectura. Columnas: Name, Project ID, Stage, Status, Bid deadline, Actions. Mismo chrome Search / Export / sort / paginado; mismo botón ojo View.