Skip to content

Add Modern UI stubs, AcuPower publish script, and customization packages#109

Open
yuriycto wants to merge 5 commits intoAcumatica:masterfrom
yuriycto:mui-publisher-and-customizations
Open

Add Modern UI stubs, AcuPower publish script, and customization packages#109
yuriycto wants to merge 5 commits intoAcumatica:masterfrom
yuriycto:mui-publisher-and-customizations

Conversation

@yuriycto
Copy link
Copy Markdown
Contributor

Registers 5 screens (SU101000, SU201000, SU204003, SU301000, SU501000) in the customization project with both classic ASPX and Modern UI per-tenant files (.ts + .html), so they appear in the Screens section and the Modern UI Files section of the Customization Project editor.

  • ModernUI/screens/SU/SU*/SU*.ts + .html: minimal PXScreen stubs bound to each graph via @graphInfo (no workflows - by design).
  • publish-survey-customization.ps1: end-to-end packager using AcuPower.CustomizationTools (AddFile, AddPage, AddScreen, AddModernUiFile, AddWebhook, AddSiteMapNode) + ImportAndPublish.
  • Survey26R1.zip: functionality package (DLL + Pages + Screens + MUI files + Webhook). Webhook GUID 9d2fd3bc-aae4-4b34-ab66-f40879be1be2 matches Survey26R1Base and Survey26R1SalesDemo.
  • Survey26R1.Base.zip: base package (SQL schemas, sitemap, seed content).
  • Survey26R1.SalesDemo.zip: data package (Numbering + SurveySetup init, demo Case Satisfaction survey). Compatible with Survey26R1 via matching webhook GUID.
  • README.md: usage guide with screenshot gallery.

Registers 5 screens (SU101000, SU201000, SU204003, SU301000, SU501000)
in the customization project with both classic ASPX and Modern UI
per-tenant files (.ts + .html), so they appear in the Screens section
and the Modern UI Files section of the Customization Project editor.

- ModernUI/screens/SU/SU*/SU*.ts + .html: minimal PXScreen stubs bound
  to each graph via @graphInfo (no workflows - by design).
- publish-survey-customization.ps1: end-to-end packager using
  AcuPower.CustomizationTools (AddFile, AddPage, AddScreen,
  AddModernUiFile, AddWebhook, AddSiteMapNode) + ImportAndPublish.
- Survey26R1.zip: functionality package (DLL + Pages + Screens + MUI
  files + Webhook). Webhook GUID 9d2fd3bc-aae4-4b34-ab66-f40879be1be2
  matches Survey26R1Base and Survey26R1SalesDemo.
- Survey26R1.Base.zip: base package (SQL schemas, sitemap, seed content).
- Survey26R1.SalesDemo.zip: data package (Numbering + SurveySetup init,
  demo Case Satisfaction survey). Compatible with Survey26R1 via
  matching webhook GUID.
- README.md: usage guide with screenshot gallery.
@yuriycto
Copy link
Copy Markdown
Contributor Author

@markoan can you review please, and if you are fine with my changes for 26 R1 then to merge them into master ?

yuriycto and others added 4 commits April 17, 2026 00:28
…ization Editor

Modern UI (all 5 Survey screens now render with data):
- Declared every view as a PXView class with typed PXFieldState fields in
  each SU*.ts so Acumatica's TS transformer populates
  App_Data/TSScreenInfo/Company/SU*.json. Previously empty templates
  showed only Save/Cancel.
- Rewrote SU*.html to use two-column qp-template name="1-1" with
  <div slot="A"/<div slot="B"> wrappers, added required qp-fieldset id
  and caption attributes, fixed view.bind case (surveySetup was bound as
  "SurveySetup") and GridPreset values (Processing, not PrimaryView).

Customization Project Editor:
- Screen_SU*.xml now use <Screen ID="..." /> (CstScreen reads ID only;
  Type/Url were ignored).
- build-combined-package.ps1 emits the correct attribute AND registers
  each page as <Page path="~/Pages/SU/<id>.aspx" .../> via
  builder.AddPage() so the Screens section populates on import.

Tooling:
- publish-local.ps1 and publish-uat.ps1 — ImportAndPublish via
  AcuPower.CustomizationTools.
- nuget.config — project-local source mapping so Scriban and
  System.Threading.Tasks.Extensions can restore on machines with global
  packageSourceMapping restrictions.
- test-*.ps1 / test-pages-curl.sh — login + screen-render smoke tests.

Survey26R1.zip rebuilt with the DLL targeting 26.100.0175, the fixed
Modern UI files, and the new <Page>/<Screen> entries.

Verified end-to-end on http://localhost/Survey: anonymous survey
flow via /Webhooks/Company/<id>?CollectorToken=000011 renders,
accepts answers, and persists into SurveyCollector/SurveyCollectorData.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… below component

- Body field moved below the Component fieldset (full-width, stretches to
  window height), matching the classic PXFormView layout and giving the
  editor room to work.
- Swapped the default PXDBString plain textarea for a qp-rich-text-editor
  via @fieldConfig on the Body property. The default toolbar exposes the
  mode-group (Visual / HTML / Plain Text) so users can see and edit the
  raw markup when needed.
- Config: expandToContent with 400px minimum height, spellcheck off to
  avoid noise over template tags and Scriban placeholders.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
docs/Acumatica-Survey-User-Guide.docx (3.3 MB, 271 paragraphs) walks the
reader end-to-end through:

- Overview of the Surveys workspace and the screens shipped with the
  customization (SU101000 / SU201000 / SU204003 / SU301000 / SU501000).
- Installation: import and publish Survey26R1.zip, with screenshots of
  each step.
- Configuration: Survey Preferences (Numbering, Default Components,
  Notifications, anonymous contact), Survey Components (with a note on
  the new WYSIWYG rich-text editor), and attribute-based questions.
- Creating a survey: composing the component sequence, previewing,
  picking recipients.
- Sending: Start Survey on SU201000, mass operations on Process Surveys
  (SU501000), how the webhook URL is built, automation schedules and
  business events.
- Respondent view: mobile screenshots of the welcome page, question,
  progress bar and thank-you page.
- Tracking results: per-collector view (SU301000), the dashboard, and
  the P/R/C answer lifecycle.
- Troubleshooting table covering the empty-Screens, null-Numbering and
  500-on-anon errors we hit during QA.
- Appendices: screen-to-graph-to-DAC reference and a table listing all
  survey database tables.

The Word document embeds the existing screenshots from docs/images/ and
uses an 11 pt Arial base, styled H1/H2/H3, bulleted and numbered lists,
info-tables with blue header rows, and Note / Tip / Warning callouts.

docs/generate-survey-user-guide.js is the docx-js generator script that
built the file, so it can be regenerated after further edits with
`node docs/generate-survey-user-guide.js`.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…y test

All screenshots in the Word document now come from the actual
http://localhost/Survey instance rather than the stale try.acumatica.com /
mobile captures that shipped in docs/images/. Replaced the 1999-era mobile
JPEGs and the try.acumatica.com shot with 17 crisp 1440x900 PNGs of the
real running MUI.

New screenshot set in docs/images/fresh/:
- SU101000 — Survey Preferences with the two-column layout (Numbering,
  Default Components, Field Sizes, Notifications) and the Survey
  Integration tab.
- SU201000 — Surveys screen (Survey Header / Options / Notifications +
  Details / Recipients / Collectors / Answers tabs).
- SU204003 — Survey Components with the WYSIWYG rich-text editor visible
  (Paragraph / Arial / font-size / B I U / colors / lists / image /
  table + Visual mode dropdown for the HTML/Plain toggle).
- SU301000 — Survey Collector (two-column + Collected Answers tab).
- SU501000 — Process Surveys (Selection filter + Documents grid).
- CS100000 — Enable/Disable Features.
- SM204505 — Customization Projects list.
- AU000000-project-editor — Customization Project Editor surface.
- 7 anonymous-survey walk-through captures for BOTH surveys tested:
  Case Survey 000011 (page 1 welcome, page 2 question, page 3 progress,
  page 6 thank-you) and Product Feedback 000012 (welcome, question,
  thank-you).

End-to-end dual-survey QA performed:
- Created Survey 000012 "Product Feedback Survey" by duplicating 000011
  (same 24 SurveyDetail rows, AllowAnonymous=True, Status=A).
- Filled both surveys end-to-end anonymously via the webhook endpoint
  (http://localhost/Survey/Webhooks/Company/<webhookid>?CollectorToken=<id>),
  answering every required question with a radio value and advancing
  through 5 pages to the thank-you page.
- DB verification: Collector Acumatica#8 (000011) and Collector Acumatica#9 (000012) both
  reached Status=Y (Completed) with 5 rows each in SurveyCollectorData.
  Payloads confirmed (e.g. "2.1.2=5&action=next").

Tooling added:
- docs/capture-screenshots.js — Playwright script that logs in, walks
  each MUI screen at 1440x900 viewport, and saves PNGs to
  docs/images/fresh/.
- docs/capture-remaining.js — retries flakey screens (SU101000 needs
  longer warm-up) and renders anonymous-survey pages from saved HTML
  files so the layout matches what a real respondent sees.
- docs/generate-survey-user-guide.js — rewritten to reference only the
  fresh screenshots; dropped all MobileSS-*.jpeg, SS0-, SS2- etc. shots
  that were from try.acumatica.com or pre-26R1 mobile app.

The user guide now contains a dedicated "End-to-end test results"
section with the collector counts and status, plus a dual walk-through
chapter showing both surveys from the respondent's perspective.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant