Intranet · Sales status overview & Yardi export
Cross-store view of a month’s declaration status with totals, plus the Yardi integration: validate the export, generate it, upload it to Yardi and download it for inspection.
| Area | Intranet |
| Routes | intranet.sales.state |
| Centre modules | intranet · intranet-yardi |
| Staff levels | root · admin · manager · scmanager |
| Models | closed-month · commerce · shop-property · yardi-upload |
| UI label | title.header.sales (state tab) |
| Coverage | 4 use cases · 1 happy · 4 failure |
How it works
Yardi is a four-step flow — checkErrors → createYardi → uploadYardi → downloadYardi — with a dedicated errors modal (yardi-errors-modal) listing the stores that block the export and an exportYardi action to proceed anyway. The two blocking per-store conditions are explicit: a store must have a linked property (yardi.shop_property_error) and a specific tenant code (yardi.tenant_code_error). An important business rule is stated in the copy: only validated sales are uploaded, closed-but-unvalidated sales are not (yardi.warn_errors_validated_sales_upload). setDownloadDate scopes the download and filteredShops narrows the overview.
Use cases
Why someone opens this (4)
- Seeing at a glance which stores have not yet closed the month.
- Pushing the month’s validated sales into Yardi for rent and service-charge calculation.
- Fixing the stores that block an export before running it.
- Downloading the generated file to reconcile against Yardi.
Path map
flowchart LR F(["Sales status overview and Yardi export"]):::feat F --> H1["Month exported to Yardi"]:::ok F -.-> X1["Stores block the export"]:::bad F -.-> X2["Upload fails"]:::bad F -.-> X3["Unvalidated sales silently excluded"]:::bad F -.-> X4["Module or role missing"]:::bad classDef feat fill:#26688f,stroke:#26688f,color:#ffffff,font-weight:bold classDef ok fill:#e3f1ea,stroke:#0d6b42,color:#0d4a2e classDef bad fill:#f7e6e2,stroke:#9a2d1c,color:#6e1f13
Happy paths
Month exported to Yardi
- Manager opens the state tab for the month and reviews the per-store status and totals.
checkErrorsruns and reports no blocking stores.createYardigenerates the export from the validated sales.uploadYardipushes it andinformative-message.upload-yardi.successconfirms.downloadYardiretrieves the file for the records.
Failure paths
Stores block the export
Cause — One or more stores lack a linked property or a tenant code.
What happens —
yardi.warn_errors_exporting(‘There are errors in the export. Please, review them before continue.’) and the errors modal lists each store withyardi.shop_property_errororyardi.tenant_code_error.
Upload fails
Cause — Yardi rejects the file or the request errors.
What happens —
informative-message.upload-yardi.error(“The Yardi file hasn’t been uploaded correctly. Please, try again or contact with an admin.”).
Unvalidated sales silently excluded
Cause — Months are closed but not validated.
What happens — Warned about rather than blocked:
yardi.warn_errors_validated_sales_upload. The export completes with less data than the user may expect.
Module or role missing
Cause — Yardi module off or role lacks
canAccessYardi.What happens — The Yardi actions are not rendered.
QA checklist
Tick these off while regression-testing this feature. The boxes are plain Markdown, so progress is visible in git diffs.
- ✅ Month exported to Yardi
- ⛔ Stores block the export
- ⛔ Upload fails
- ⛔ Unvalidated sales silently excluded
- ⛔ Module or role missing
Implementation
app/controllers/intranet/sales/state.jsapp/routes/intranet/sales/state.jsapp/services/yardi.jsapp/models/yardi-upload.jsapp/models/shop-property.jsapp/components/yardi-errors-modal.js
Translation keys (8)
Key English yardi.titleUpload month of {date} yardi.warn_errors_exportingThere are errors in the export. Please, review them before continue. yardi.shop_property_errorThe store needs a property linked. yardi.tenant_code_errorThe store needs an specific tenant code. yardi.warn_errors_validated_sales_uploadOnly validated sales will be uploaded to Yardi, closed sales will not be uploaded. informative-message.upload-yardi.successThe Yardi file has been uploaded correctly. informative-message.upload-yardi.errorThe Yardi file hasn’t been uploaded correctly. Please, try again or contact with an admin. informative-message.export-crm-csv.success.messageThe export request has been processed successfully, you will receive an email with the exported file shortly
Related
- Same area — Store sales declaration & month closing · Sales & audit-log CSV download · Annual sales statement · Intranet communications (threads, confirmations, authorisations) · Communication subtypes · Files management · Footfall (flows) & Yardi upload · SAFT-E - IntelliSales import · Utility consumptions
- Shares data with — Centre editor (modules, app config, integrations) · Customer receipts tab & ticket-stamp generation · Customer loyalty — coupon exchanges · Receipt verification queue · Store list, filters & exports · Store create & edit · Store CSV import · Activity editor (loyalty mechanics, rules & targeting)
- Behind the same module — Store create & edit · Footfall (flows) & Yardi upload · Store sales declaration & month closing · Annual sales statement
Generated from doc/feature-inventory.json · id intranet-sales-state · commit 276788ca6