From 6fe77b9b918cf6c8b4521634ab8ea65d1b5b92c1 Mon Sep 17 00:00:00 2001 From: Alexander Zekelin Date: Fri, 26 Jun 2026 19:42:33 +0200 Subject: [PATCH] refactor: convert demo scripts and dev-loops snippets to txc CLI --- bdd-agent-v2/.demo/01-prerequisites.ps1 | 15 +- bdd-agent-v2/.demo/03a-package-deployer.ps1 | 5 +- bdd-agent-v2/.demo/03b-data-model.ps1 | 58 +- bdd-agent-v2/.demo/03c-columns.ps1 | 388 +++-- bdd-agent-v2/.demo/04-security.ps1 | 71 +- bdd-agent-v2/.demo/05a-ui-solution.ps1 | 68 +- bdd-agent-v2/.demo/05b-sitemap.ps1 | 57 +- bdd-agent-v2/.demo/05c-forms.ps1 | 1332 ++++++++--------- bdd-agent-v2/.demo/05d-views-subgrids.ps1 | 53 +- bdd-agent-v2/.demo/07-plugins.ps1 | 33 +- bdd-agent-v2/.demo/08-logic-solution.ps1 | 153 +- bdd-agent-v2/.demo/09-form-scripts.ps1 | 38 +- bdd-agent-v2/.demo/10-ribbon.ps1 | 30 +- bdd-agent-v2/.demo/11-tests-ui.ps1 | 6 +- bdd-agent-v2/.demo/12-genpage-dashboard.ps1 | 23 +- bdd-agent-v2/.demo/scaffold-demo-repo.ps1 | 5 +- dev-loops/CFB-setup-project.code-snippets | 5 +- .../CFF-implement-data-model.code-snippets | 145 +- .../CFG-implement-backend-logic.code-snippets | 98 +- .../CFH-implement-security.code-snippets | 57 +- .../CFI-implement-ui-layer.code-snippets | 708 ++++----- dev-loops/CFJ-pcf.code-snippets | 25 +- ...K-implement-codeapp-ui-layer.code-snippets | 25 +- dev-loops/CFN-test.code-snippets | 22 +- 24 files changed, 1489 insertions(+), 1931 deletions(-) diff --git a/bdd-agent-v2/.demo/01-prerequisites.ps1 b/bdd-agent-v2/.demo/01-prerequisites.ps1 index f7da235..7b1d2a3 100644 --- a/bdd-agent-v2/.demo/01-prerequisites.ps1 +++ b/bdd-agent-v2/.demo/01-prerequisites.ps1 @@ -3,7 +3,7 @@ # ║ 01: Prerequisites Check ║ # ╚════════════════════════════════════════════════════════════════════════════════════════╝ # -# Checks: dotnet CLI, TALXIS Dataverse templates, git availability. +# Checks: dotnet CLI, TALXIS DevKit CLI (txc), git availability. # Expects: $SkipGitInit from parent scope. # # ────────────────────────────────────────────────────────────────────────────────────────── @@ -18,14 +18,15 @@ if ($LASTEXITCODE -ne 0) { } Write-Host " ✓ dotnet CLI: $dotnetVersion" -ForegroundColor Green -# Check TALXIS templates -$templateList = & dotnet new list pp-solution 2>&1 | Out-String -if ($templateList -notmatch "pp-solution") { - Write-Host " ✗ TALXIS Dataverse templates not found." -ForegroundColor Red - Write-Host " Install with: dotnet new install TALXIS.DevKit.Templates.Dataverse" -ForegroundColor Yellow +# Check TALXIS DevKit CLI (txc). It scaffolds the components and fetches the +# templates itself, so no separate template install is needed. +$txcTypes = & txc workspace component type list 2>&1 | Out-String +if ($LASTEXITCODE -ne 0) { + Write-Host " ✗ TALXIS DevKit CLI (txc) not found." -ForegroundColor Red + Write-Host " Install with: dotnet tool install --global TALXIS.CLI" -ForegroundColor Yellow exit 1 } -Write-Host " ✓ TALXIS Dataverse templates installed" -ForegroundColor Green +Write-Host " ✓ TALXIS DevKit CLI (txc) available" -ForegroundColor Green # Check git if (-not $SkipGitInit) { diff --git a/bdd-agent-v2/.demo/03a-package-deployer.ps1 b/bdd-agent-v2/.demo/03a-package-deployer.ps1 index 92ea99e..eecf31e 100644 --- a/bdd-agent-v2/.demo/03a-package-deployer.ps1 +++ b/bdd-agent-v2/.demo/03a-package-deployer.ps1 @@ -10,9 +10,8 @@ Write-Host "`n── Package Deployer ──" -ForegroundColor Cyan -dotnet new pp-package ` - --output "src/Packages.Main" ` - --allow-scripts yes +txc workspace component create pp-package ` + --output "src/Packages.Main" # Add the package project to the Visual Studio solution file cd "src/Packages.Main" diff --git a/bdd-agent-v2/.demo/03b-data-model.ps1 b/bdd-agent-v2/.demo/03b-data-model.ps1 index ad6ffd8..58dfe89 100644 --- a/bdd-agent-v2/.demo/03b-data-model.ps1 +++ b/bdd-agent-v2/.demo/03b-data-model.ps1 @@ -12,11 +12,10 @@ Write-Host "`n── Solutions.DataModel ──" -ForegroundColor Cyan -dotnet new pp-solution ` +txc workspace component create pp-solution ` --output "src/Solutions.DataModel" ` - --PublisherName $PublisherName ` - --PublisherPrefix $PublisherPrefix ` - --allow-scripts yes + --param "PublisherName=$PublisherName" ` + --param "PublisherPrefix=$PublisherPrefix" Write-Host " ✓ Solutions.DataModel" -ForegroundColor Green @@ -34,43 +33,40 @@ Write-Host " ✓ ProjectReference: DataModel → Packages.Main" -ForegroundColo Write-Host "`n── Entities (DataModel) ──" -ForegroundColor Cyan # Warehouse Location -dotnet new pp-entity ` +txc workspace component create pp-entity ` --output "src/Solutions.DataModel" ` - --EntityType "Standard" ` - --Behavior "New" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "warehouselocation" ` - --LogicalNamePlural "warehouselocations" ` - --DisplayName "Warehouse Location" ` - --DisplayNamePlural "Warehouse Locations" ` - --allow-scripts yes + --param "EntityType=Standard" ` + --param "Behavior=New" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=warehouselocation" ` + --param "LogicalNamePlural=warehouselocations" ` + --param "DisplayName=Warehouse Location" ` + --param "DisplayNamePlural=Warehouse Locations" Write-Host " ✓ Entity: Warehouse Location" -ForegroundColor Green # Warehouse Item -dotnet new pp-entity ` +txc workspace component create pp-entity ` --output "src/Solutions.DataModel" ` - --EntityType "Standard" ` - --Behavior "New" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "warehouseitem" ` - --LogicalNamePlural "warehouseitems" ` - --DisplayName "Warehouse Item" ` - --DisplayNamePlural "Warehouse Items" ` - --allow-scripts yes + --param "EntityType=Standard" ` + --param "Behavior=New" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=warehouseitem" ` + --param "LogicalNamePlural=warehouseitems" ` + --param "DisplayName=Warehouse Item" ` + --param "DisplayNamePlural=Warehouse Items" Write-Host " ✓ Entity: Warehouse Item" -ForegroundColor Green # Warehouse Transaction -dotnet new pp-entity ` +txc workspace component create pp-entity ` --output "src/Solutions.DataModel" ` - --EntityType "Standard" ` - --Behavior "New" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "warehousetransaction" ` - --LogicalNamePlural "warehousetransactions" ` - --DisplayName "Warehouse Transaction" ` - --DisplayNamePlural "Warehouse Transactions" ` - --allow-scripts yes + --param "EntityType=Standard" ` + --param "Behavior=New" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=warehousetransaction" ` + --param "LogicalNamePlural=warehousetransactions" ` + --param "DisplayName=Warehouse Transaction" ` + --param "DisplayNamePlural=Warehouse Transactions" Write-Host " ✓ Entity: Warehouse Transaction" -ForegroundColor Green diff --git a/bdd-agent-v2/.demo/03c-columns.ps1 b/bdd-agent-v2/.demo/03c-columns.ps1 index e31d820..dfad81b 100644 --- a/bdd-agent-v2/.demo/03c-columns.ps1 +++ b/bdd-agent-v2/.demo/03c-columns.ps1 @@ -13,308 +13,284 @@ Write-Host "`n── Columns ──" -ForegroundColor Cyan # --- warehouseitem columns --- -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --AttributeType "WholeNumber" ` - --RequiredLevel "required" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "availablequantity" ` - --DisplayName "Available Quantity" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" ` + --param "AttributeType=WholeNumber" ` + --param "RequiredLevel=required" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=availablequantity" ` + --param "DisplayName=Available Quantity" Write-Host " ✓ warehouseitem.availablequantity (WholeNumber)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --AttributeType "Text" ` - --RequiredLevel "required" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "sku" ` - --DisplayName "SKU" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" ` + --param "AttributeType=Text" ` + --param "RequiredLevel=required" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=sku" ` + --param "DisplayName=SKU" Write-Host " ✓ warehouseitem.sku (Text)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --AttributeType "Lookup" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "locationid" ` - --DisplayName "Location" ` - --LookupTarget "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" ` + --param "AttributeType=Lookup" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=locationid" ` + --param "DisplayName=Location" ` + --param "LookupTarget=${PublisherPrefix}_warehouselocation" Write-Host " ✓ warehouseitem.locationid (Lookup → warehouselocation)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --AttributeType "MultilineText" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "description" ` - --DisplayName "Description" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" ` + --param "AttributeType=MultilineText" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=description" ` + --param "DisplayName=Description" Write-Host " ✓ warehouseitem.description (MultilineText)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --AttributeType "Money" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "unitprice" ` - --DisplayName "Unit Price" ` - --DecimalPrecision "2" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" ` + --param "AttributeType=Money" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=unitprice" ` + --param "DisplayName=Unit Price" ` + --param "DecimalPrecision=2" Write-Host " ✓ warehouseitem.unitprice (Money)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --AttributeType "Decimal" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "weight" ` - --DisplayName "Weight (kg)" ` - --DecimalPrecision "3" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" ` + --param "AttributeType=Decimal" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=weight" ` + --param "DisplayName=Weight (kg)" ` + --param "DecimalPrecision=3" Write-Host " ✓ warehouseitem.weight (Decimal)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --AttributeType "OptionSet(Local)" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "category" ` - --DisplayName "Category" ` - --OptionSetOptions "Electronics,Clothing,Food,Hardware,Other" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" ` + --param "AttributeType=OptionSet(Local)" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=category" ` + --param "DisplayName=Category" ` + --param "OptionSetOptions=Electronics,Clothing,Food,Hardware,Other" Write-Host " ✓ warehouseitem.category (OptionSet Local)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --AttributeType "Boolean" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "isperishable" ` - --DisplayName "Is Perishable" ` - --BooleanTrueLabel "Yes" ` - --BooleanFalseLabel "No" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" ` + --param "AttributeType=Boolean" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=isperishable" ` + --param "DisplayName=Is Perishable" ` + --param "BooleanTrueLabel=Yes" ` + --param "BooleanFalseLabel=No" Write-Host " ✓ warehouseitem.isperishable (Boolean)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --AttributeType "DateTime" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "expirationdate" ` - --DisplayName "Expiration Date" ` - --DateTimeFormat "date" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" ` + --param "AttributeType=DateTime" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=expirationdate" ` + --param "DisplayName=Expiration Date" ` + --param "DateTimeFormat=date" Write-Host " ✓ warehouseitem.expirationdate (DateTime, date only)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --AttributeType "Text" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "barcode" ` - --DisplayName "Barcode" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" ` + --param "AttributeType=Text" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=barcode" ` + --param "DisplayName=Barcode" Write-Host " ✓ warehouseitem.barcode (Text)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --AttributeType "WholeNumber" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "reorderpoint" ` - --DisplayName "Reorder Point" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" ` + --param "AttributeType=WholeNumber" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=reorderpoint" ` + --param "DisplayName=Reorder Point" Write-Host " ✓ warehouseitem.reorderpoint (WholeNumber)" -ForegroundColor Green # --- warehouselocation columns --- -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --AttributeType "WholeNumber" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "capacity" ` - --DisplayName "Capacity" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" ` + --param "AttributeType=WholeNumber" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=capacity" ` + --param "DisplayName=Capacity" Write-Host " ✓ warehouselocation.capacity (WholeNumber)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --AttributeType "Text" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "address" ` - --DisplayName "Address" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" ` + --param "AttributeType=Text" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=address" ` + --param "DisplayName=Address" Write-Host " ✓ warehouselocation.address (Text)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --AttributeType "Boolean" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "isactive" ` - --DisplayName "Is Active" ` - --BooleanTrueLabel "Active" ` - --BooleanFalseLabel "Inactive" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" ` + --param "AttributeType=Boolean" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=isactive" ` + --param "DisplayName=Is Active" ` + --param "BooleanTrueLabel=Active" ` + --param "BooleanFalseLabel=Inactive" Write-Host " ✓ warehouselocation.isactive (Boolean)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --AttributeType "MultilineText" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "notes" ` - --DisplayName "Notes" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" ` + --param "AttributeType=MultilineText" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=notes" ` + --param "DisplayName=Notes" Write-Host " ✓ warehouselocation.notes (MultilineText)" -ForegroundColor Green # --- warehousetransaction columns --- -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --AttributeType "Lookup" ` - --RequiredLevel "required" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "itemid" ` - --DisplayName "Item" ` - --LookupTarget "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" ` + --param "AttributeType=Lookup" ` + --param "RequiredLevel=required" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=itemid" ` + --param "DisplayName=Item" ` + --param "LookupTarget=${PublisherPrefix}_warehouseitem" Write-Host " ✓ warehousetransaction.itemid (Lookup → warehouseitem)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --AttributeType "WholeNumber" ` - --RequiredLevel "required" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "quantity" ` - --DisplayName "Quantity" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" ` + --param "AttributeType=WholeNumber" ` + --param "RequiredLevel=required" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=quantity" ` + --param "DisplayName=Quantity" Write-Host " ✓ warehousetransaction.quantity (WholeNumber)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --AttributeType "OptionSet(Local)" ` - --RequiredLevel "required" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "transactiontype" ` - --DisplayName "Transaction Type" ` - --OptionSetOptions "Inbound,Outbound" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" ` + --param "AttributeType=OptionSet(Local)" ` + --param "RequiredLevel=required" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=transactiontype" ` + --param "DisplayName=Transaction Type" ` + --param "OptionSetOptions=Inbound,Outbound" Write-Host " ✓ warehousetransaction.transactiontype (OptionSet Local)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --AttributeType "DateTime" ` - --RequiredLevel "required" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "transactiondate" ` - --DisplayName "Transaction Date" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" ` + --param "AttributeType=DateTime" ` + --param "RequiredLevel=required" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=transactiondate" ` + --param "DisplayName=Transaction Date" Write-Host " ✓ warehousetransaction.transactiondate (DateTime)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --AttributeType "MultilineText" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "notes" ` - --DisplayName "Notes" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" ` + --param "AttributeType=MultilineText" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=notes" ` + --param "DisplayName=Notes" Write-Host " ✓ warehousetransaction.notes (MultilineText)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --AttributeType "Money" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "totalvalue" ` - --DisplayName "Total Value" ` - --DecimalPrecision "2" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" ` + --param "AttributeType=Money" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=totalvalue" ` + --param "DisplayName=Total Value" ` + --param "DecimalPrecision=2" Write-Host " ✓ warehousetransaction.totalvalue (Money)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --AttributeType "Boolean" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "isprocessed" ` - --DisplayName "Is Processed" ` - --BooleanTrueLabel "Yes" ` - --BooleanFalseLabel "No" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" ` + --param "AttributeType=Boolean" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=isprocessed" ` + --param "DisplayName=Is Processed" ` + --param "BooleanTrueLabel=Yes" ` + --param "BooleanFalseLabel=No" Write-Host " ✓ warehousetransaction.isprocessed (Boolean)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --AttributeType "Text" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "processedby" ` - --DisplayName "Processed By" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" ` + --param "AttributeType=Text" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=processedby" ` + --param "DisplayName=Processed By" Write-Host " ✓ warehousetransaction.processedby (Text)" -ForegroundColor Green -dotnet new pp-entity-attribute ` +txc workspace component create pp-entity-attribute ` --output "src/Solutions.DataModel" ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --AttributeType "Text" ` - --RequiredLevel "none" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "referencenumber" ` - --DisplayName "Reference Number" ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" ` + --param "AttributeType=Text" ` + --param "RequiredLevel=none" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=referencenumber" ` + --param "DisplayName=Reference Number" Write-Host " ✓ warehousetransaction.referencenumber (Text)" -ForegroundColor Green diff --git a/bdd-agent-v2/.demo/04-security.ps1 b/bdd-agent-v2/.demo/04-security.ps1 index 16ff464..617ff8c 100644 --- a/bdd-agent-v2/.demo/04-security.ps1 +++ b/bdd-agent-v2/.demo/04-security.ps1 @@ -12,11 +12,10 @@ Write-Host "`n── Solutions.Security ──" -ForegroundColor Cyan -dotnet new pp-solution ` +txc workspace component create pp-solution ` --output "src/Solutions.Security" ` - --PublisherName $PublisherName ` - --PublisherPrefix $PublisherPrefix ` - --allow-scripts yes + --param "PublisherName=$PublisherName" ` + --param "PublisherPrefix=$PublisherPrefix" Write-Host " ✓ Solutions.Security" -ForegroundColor Green @@ -33,17 +32,15 @@ Write-Host " ✓ ProjectReference: Security → Packages.Main" -ForegroundColor Write-Host "`n── Security Roles ──" -ForegroundColor Cyan -dotnet new pp-security-role ` +txc workspace component create pp-security-role ` --output "src/Solutions.Security" ` - --RoleName "Warehouse worker" ` - --allow-scripts yes + --param "RoleName=Warehouse worker" Write-Host " ✓ Role: Warehouse worker" -ForegroundColor Green -dotnet new pp-security-role ` +txc workspace component create pp-security-role ` --output "src/Solutions.Security" ` - --RoleName "Warehouse manager" ` - --allow-scripts yes + --param "RoleName=Warehouse manager" Write-Host " ✓ Role: Warehouse manager" -ForegroundColor Green @@ -54,61 +51,55 @@ Write-Host " ✓ Role: Warehouse manager" -ForegroundColor Green Write-Host "`n── Security Role Privileges ──" -ForegroundColor Cyan # Warehouse worker — warehouseitem: Read/Write/Create/Append/AppendTo (Global) -dotnet new pp-security-role-privilege ` +txc workspace component create pp-security-role-privilege ` --output "src/Solutions.Security" ` - --RoleName "Warehouse worker" ` - --PrivilegeTypeAndLevel "[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Global }, { PrivilegeType: Create, Level: Global }, { PrivilegeType: Append, Level: Global }, { PrivilegeType: AppendTo, Level: Global }]" ` - --EntityLogicalName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "RoleName=Warehouse worker" ` + --param "PrivilegeTypeAndLevel=[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Global }, { PrivilegeType: Create, Level: Global }, { PrivilegeType: Append, Level: Global }, { PrivilegeType: AppendTo, Level: Global }]" ` + --param "EntityLogicalName=${PublisherPrefix}_warehouseitem" Write-Host " ✓ Worker → warehouseitem (RWCA)" -ForegroundColor Green # Warehouse worker — warehouselocation: Read (Global) -dotnet new pp-security-role-privilege ` +txc workspace component create pp-security-role-privilege ` --output "src/Solutions.Security" ` - --RoleName "Warehouse worker" ` - --PrivilegeTypeAndLevel "[{ PrivilegeType: Read, Level: Global }]" ` - --EntityLogicalName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes + --param "RoleName=Warehouse worker" ` + --param "PrivilegeTypeAndLevel=[{ PrivilegeType: Read, Level: Global }]" ` + --param "EntityLogicalName=${PublisherPrefix}_warehouselocation" Write-Host " ✓ Worker → warehouselocation (R)" -ForegroundColor Green # Warehouse worker — warehousetransaction: Read (Global), Write (Basic) -dotnet new pp-security-role-privilege ` +txc workspace component create pp-security-role-privilege ` --output "src/Solutions.Security" ` - --RoleName "Warehouse worker" ` - --PrivilegeTypeAndLevel "[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Basic }]" ` - --EntityLogicalName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes + --param "RoleName=Warehouse worker" ` + --param "PrivilegeTypeAndLevel=[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Basic }]" ` + --param "EntityLogicalName=${PublisherPrefix}_warehousetransaction" Write-Host " ✓ Worker → warehousetransaction (R/W)" -ForegroundColor Green # Warehouse manager — warehouseitem: Full CRUD (Global) -dotnet new pp-security-role-privilege ` +txc workspace component create pp-security-role-privilege ` --output "src/Solutions.Security" ` - --RoleName "Warehouse manager" ` - --PrivilegeTypeAndLevel "[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Global }, { PrivilegeType: Create, Level: Global }, { PrivilegeType: Delete, Level: Global }, { PrivilegeType: Append, Level: Global }, { PrivilegeType: AppendTo, Level: Global }]" ` - --EntityLogicalName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "RoleName=Warehouse manager" ` + --param "PrivilegeTypeAndLevel=[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Global }, { PrivilegeType: Create, Level: Global }, { PrivilegeType: Delete, Level: Global }, { PrivilegeType: Append, Level: Global }, { PrivilegeType: AppendTo, Level: Global }]" ` + --param "EntityLogicalName=${PublisherPrefix}_warehouseitem" Write-Host " ✓ Manager → warehouseitem (CRUD)" -ForegroundColor Green # Warehouse manager — warehouselocation: Full CRUD (Global) -dotnet new pp-security-role-privilege ` +txc workspace component create pp-security-role-privilege ` --output "src/Solutions.Security" ` - --RoleName "Warehouse manager" ` - --PrivilegeTypeAndLevel "[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Global }, { PrivilegeType: Create, Level: Global }, { PrivilegeType: Delete, Level: Global }, { PrivilegeType: Append, Level: Global }, { PrivilegeType: AppendTo, Level: Global }]" ` - --EntityLogicalName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes + --param "RoleName=Warehouse manager" ` + --param "PrivilegeTypeAndLevel=[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Global }, { PrivilegeType: Create, Level: Global }, { PrivilegeType: Delete, Level: Global }, { PrivilegeType: Append, Level: Global }, { PrivilegeType: AppendTo, Level: Global }]" ` + --param "EntityLogicalName=${PublisherPrefix}_warehouselocation" Write-Host " ✓ Manager → warehouselocation (CRUD)" -ForegroundColor Green # Warehouse manager — warehousetransaction: Full CRUD (Global) -dotnet new pp-security-role-privilege ` +txc workspace component create pp-security-role-privilege ` --output "src/Solutions.Security" ` - --RoleName "Warehouse manager" ` - --PrivilegeTypeAndLevel "[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Global }, { PrivilegeType: Create, Level: Global }, { PrivilegeType: Delete, Level: Global }, { PrivilegeType: Append, Level: Global }, { PrivilegeType: AppendTo, Level: Global }]" ` - --EntityLogicalName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes + --param "RoleName=Warehouse manager" ` + --param "PrivilegeTypeAndLevel=[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Global }, { PrivilegeType: Create, Level: Global }, { PrivilegeType: Delete, Level: Global }, { PrivilegeType: Append, Level: Global }, { PrivilegeType: AppendTo, Level: Global }]" ` + --param "EntityLogicalName=${PublisherPrefix}_warehousetransaction" Write-Host " ✓ Manager → warehousetransaction (CRUD)" -ForegroundColor Green diff --git a/bdd-agent-v2/.demo/05a-ui-solution.ps1 b/bdd-agent-v2/.demo/05a-ui-solution.ps1 index 4fad447..988e859 100644 --- a/bdd-agent-v2/.demo/05a-ui-solution.ps1 +++ b/bdd-agent-v2/.demo/05a-ui-solution.ps1 @@ -13,11 +13,10 @@ Write-Host "`n── Solutions.UI ──" -ForegroundColor Cyan -dotnet new pp-solution ` +txc workspace component create pp-solution ` --output "src/Solutions.UI" ` - --PublisherName $PublisherName ` - --PublisherPrefix $PublisherPrefix ` - --allow-scripts yes + --param "PublisherName=$PublisherName" ` + --param "PublisherPrefix=$PublisherPrefix" Write-Host " ✓ Solutions.UI" -ForegroundColor Green @@ -34,33 +33,30 @@ Write-Host " ✓ ProjectReference: UI → Packages.Main" -ForegroundColor Green Write-Host "`n── Entity References (UI) ──" -ForegroundColor Cyan -dotnet new pp-entity ` +txc workspace component create pp-entity ` --output "src/Solutions.UI" ` - --Behavior "Existing" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "warehouselocation" ` - --DisplayName "Warehouse Location" ` - --allow-scripts yes + --param "Behavior=Existing" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=warehouselocation" ` + --param "DisplayName=Warehouse Location" Write-Host " ✓ Entity ref: Warehouse Location" -ForegroundColor Green -dotnet new pp-entity ` +txc workspace component create pp-entity ` --output "src/Solutions.UI" ` - --Behavior "Existing" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "warehouseitem" ` - --DisplayName "Warehouse Item" ` - --allow-scripts yes + --param "Behavior=Existing" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=warehouseitem" ` + --param "DisplayName=Warehouse Item" Write-Host " ✓ Entity ref: Warehouse Item" -ForegroundColor Green -dotnet new pp-entity ` +txc workspace component create pp-entity ` --output "src/Solutions.UI" ` - --Behavior "Existing" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "warehousetransaction" ` - --DisplayName "Warehouse Transaction" ` - --allow-scripts yes + --param "Behavior=Existing" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=warehousetransaction" ` + --param "DisplayName=Warehouse Transaction" Write-Host " ✓ Entity ref: Warehouse Transaction" -ForegroundColor Green @@ -70,11 +66,10 @@ Write-Host " ✓ Entity ref: Warehouse Transaction" -ForegroundColor Green Write-Host "`n── Model-Driven App ──" -ForegroundColor Cyan -dotnet new pp-app-model ` +txc workspace component create pp-app-model ` --output "src/Solutions.UI" ` - --PublisherPrefix $PublisherPrefix ` - --LogicalName "warehouseapp" ` - --allow-scripts yes + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LogicalName=warehouseapp" Write-Host " ✓ App: warehouseapp" -ForegroundColor Green @@ -84,26 +79,23 @@ Write-Host " ✓ App: warehouseapp" -ForegroundColor Green Write-Host "`n── App Components ──" -ForegroundColor Cyan -dotnet new pp-app-model-component ` +txc workspace component create pp-app-model-component ` --output "src/Solutions.UI" ` - --EntityLogicalName "${PublisherPrefix}_warehouselocation" ` - --AppName "${PublisherPrefix}_warehouseapp" ` - --allow-scripts yes + --param "EntityLogicalName=${PublisherPrefix}_warehouselocation" ` + --param "AppName=${PublisherPrefix}_warehouseapp" Write-Host " ✓ App component: warehouselocation" -ForegroundColor Green -dotnet new pp-app-model-component ` +txc workspace component create pp-app-model-component ` --output "src/Solutions.UI" ` - --EntityLogicalName "${PublisherPrefix}_warehouseitem" ` - --AppName "${PublisherPrefix}_warehouseapp" ` - --allow-scripts yes + --param "EntityLogicalName=${PublisherPrefix}_warehouseitem" ` + --param "AppName=${PublisherPrefix}_warehouseapp" Write-Host " ✓ App component: warehouseitem" -ForegroundColor Green -dotnet new pp-app-model-component ` +txc workspace component create pp-app-model-component ` --output "src/Solutions.UI" ` - --EntityLogicalName "${PublisherPrefix}_warehousetransaction" ` - --AppName "${PublisherPrefix}_warehouseapp" ` - --allow-scripts yes + --param "EntityLogicalName=${PublisherPrefix}_warehousetransaction" ` + --param "AppName=${PublisherPrefix}_warehouseapp" Write-Host " ✓ App component: warehousetransaction" -ForegroundColor Green diff --git a/bdd-agent-v2/.demo/05b-sitemap.ps1 b/bdd-agent-v2/.demo/05b-sitemap.ps1 index 5c01e9c..35af8f0 100644 --- a/bdd-agent-v2/.demo/05b-sitemap.ps1 +++ b/bdd-agent-v2/.demo/05b-sitemap.ps1 @@ -10,53 +10,48 @@ Write-Host "`n── Sitemap Navigation ──" -ForegroundColor Cyan -dotnet new pp-sitemap-area ` +txc workspace component create pp-sitemap-area ` --output "src/Solutions.UI" ` - --AreaTitle "Warehouse" ` - --AppName "${PublisherPrefix}_warehouseapp" ` - --allow-scripts yes + --param "AreaTitle=Warehouse" ` + --param "AppName=${PublisherPrefix}_warehouseapp" Write-Host " ✓ Sitemap area: Warehouse" -ForegroundColor Green -dotnet new pp-sitemap-group ` +txc workspace component create pp-sitemap-group ` --output "src/Solutions.UI" ` - --GroupTitle "Management" ` - --GroupDisplayName "Management" ` - --AreaTitle "Warehouse" ` - --AppName "${PublisherPrefix}_warehouseapp" ` - --allow-scripts yes + --param "GroupTitle=Management" ` + --param "GroupDisplayName=Management" ` + --param "AreaTitle=Warehouse" ` + --param "AppName=${PublisherPrefix}_warehouseapp" Write-Host " ✓ Sitemap group: Management" -ForegroundColor Green -dotnet new pp-sitemap-subarea ` +txc workspace component create pp-sitemap-subarea ` --output "src/Solutions.UI" ` - --Title "Warehouse Locations" ` - --EntityLogicalName "${PublisherPrefix}_warehouselocation" ` - --GroupTitle "Management" ` - --AreaTitle "Warehouse" ` - --AppName "${PublisherPrefix}_warehouseapp" ` - --allow-scripts yes + --param "Title=Warehouse Locations" ` + --param "EntityLogicalName=${PublisherPrefix}_warehouselocation" ` + --param "GroupTitle=Management" ` + --param "AreaTitle=Warehouse" ` + --param "AppName=${PublisherPrefix}_warehouseapp" Write-Host " ✓ Sitemap subarea: Warehouse Locations" -ForegroundColor Green -dotnet new pp-sitemap-subarea ` +txc workspace component create pp-sitemap-subarea ` --output "src/Solutions.UI" ` - --Title "Warehouse Items" ` - --EntityLogicalName "${PublisherPrefix}_warehouseitem" ` - --GroupTitle "Management" ` - --AreaTitle "Warehouse" ` - --AppName "${PublisherPrefix}_warehouseapp" ` - --allow-scripts yes + --param "Title=Warehouse Items" ` + --param "EntityLogicalName=${PublisherPrefix}_warehouseitem" ` + --param "GroupTitle=Management" ` + --param "AreaTitle=Warehouse" ` + --param "AppName=${PublisherPrefix}_warehouseapp" Write-Host " ✓ Sitemap subarea: Warehouse Items" -ForegroundColor Green -dotnet new pp-sitemap-subarea ` +txc workspace component create pp-sitemap-subarea ` --output "src/Solutions.UI" ` - --Title "Warehouse Transactions" ` - --EntityLogicalName "${PublisherPrefix}_warehousetransaction" ` - --GroupTitle "Management" ` - --AreaTitle "Warehouse" ` - --AppName "${PublisherPrefix}_warehouseapp" ` - --allow-scripts yes + --param "Title=Warehouse Transactions" ` + --param "EntityLogicalName=${PublisherPrefix}_warehousetransaction" ` + --param "GroupTitle=Management" ` + --param "AreaTitle=Warehouse" ` + --param "AppName=${PublisherPrefix}_warehouseapp" Write-Host " ✓ Sitemap subarea: Warehouse Transactions" -ForegroundColor Green diff --git a/bdd-agent-v2/.demo/05c-forms.ps1 b/bdd-agent-v2/.demo/05c-forms.ps1 index 9f45455..20f045b 100644 --- a/bdd-agent-v2/.demo/05c-forms.ps1 +++ b/bdd-agent-v2/.demo/05c-forms.ps1 @@ -20,60 +20,54 @@ $warehouseitemFormGuid = [guid]::NewGuid() $warehousetransactionFormGuid = [guid]::NewGuid() # Warehouse Location — main form -dotnet new pp-entity-form ` +txc workspace component create pp-entity-form ` --output "src/Solutions.UI" ` - --FormType "main" ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --FormId $warehouselocationFormGuid ` - --allow-scripts yes + --param "FormType=main" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" ` + --param "FormId=$warehouselocationFormGuid" Write-Host " ✓ Form: warehouselocation (main)" -ForegroundColor Green # Warehouse Item — main form -dotnet new pp-entity-form ` +txc workspace component create pp-entity-form ` --output "src/Solutions.UI" ` - --FormType "main" ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --FormId $warehouseitemFormGuid ` - --allow-scripts yes + --param "FormType=main" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" ` + --param "FormId=$warehouseitemFormGuid" Write-Host " ✓ Form: warehouseitem (main)" -ForegroundColor Green # Warehouse Transaction — main form -dotnet new pp-entity-form ` +txc workspace component create pp-entity-form ` --output "src/Solutions.UI" ` - --FormType "main" ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --FormId $warehousetransactionFormGuid ` - --allow-scripts yes + --param "FormType=main" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" ` + --param "FormId=$warehousetransactionFormGuid" Write-Host " ✓ Form: warehousetransaction (main)" -ForegroundColor Green # Register forms as app components -dotnet new pp-app-model-component ` +txc workspace component create pp-app-model-component ` --output "src/Solutions.UI" ` - --EntityType "Form" ` - --ComponentId "$warehouselocationFormGuid" ` - --AppName "${PublisherPrefix}_warehouseapp" ` - --allow-scripts yes + --param "EntityType=Form" ` + --param "ComponentId=$warehouselocationFormGuid" ` + --param "AppName=${PublisherPrefix}_warehouseapp" Write-Host " ✓ App component: warehouselocation form" -ForegroundColor Green -dotnet new pp-app-model-component ` +txc workspace component create pp-app-model-component ` --output "src/Solutions.UI" ` - --EntityType "Form" ` - --ComponentId "$warehouseitemFormGuid" ` - --AppName "${PublisherPrefix}_warehouseapp" ` - --allow-scripts yes + --param "EntityType=Form" ` + --param "ComponentId=$warehouseitemFormGuid" ` + --param "AppName=${PublisherPrefix}_warehouseapp" Write-Host " ✓ App component: warehouseitem form" -ForegroundColor Green -dotnet new pp-app-model-component ` +txc workspace component create pp-app-model-component ` --output "src/Solutions.UI" ` - --EntityType "Form" ` - --ComponentId "$warehousetransactionFormGuid" ` - --AppName "${PublisherPrefix}_warehouseapp" ` - --allow-scripts yes + --param "EntityType=Form" ` + --param "ComponentId=$warehousetransactionFormGuid" ` + --param "AppName=${PublisherPrefix}_warehouseapp" Write-Host " ✓ App component: warehousetransaction form" -ForegroundColor Green @@ -83,36 +77,33 @@ Write-Host " ✓ App component: warehousetransaction form" -ForegroundColor Gre Write-Host "`n── Form Tabs ──" -ForegroundColor Cyan -dotnet new pp-form-tab ` +txc workspace component create pp-form-tab ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --DisplayName "General" ` - --RemoveDefaultTab "True" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" ` + --param "DisplayName=General" ` + --param "RemoveDefaultTab=True" Write-Host " ✓ Tab: warehouselocation → General" -ForegroundColor Green -dotnet new pp-form-tab ` +txc workspace component create pp-form-tab ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --DisplayName "General" ` - --RemoveDefaultTab "True" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" ` + --param "DisplayName=General" ` + --param "RemoveDefaultTab=True" Write-Host " ✓ Tab: warehouseitem → General" -ForegroundColor Green -dotnet new pp-form-tab ` +txc workspace component create pp-form-tab ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --DisplayName "General" ` - --RemoveDefaultTab "True" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" ` + --param "DisplayName=General" ` + --param "RemoveDefaultTab=True" Write-Host " ✓ Tab: warehousetransaction → General" -ForegroundColor Green @@ -124,244 +115,211 @@ Write-Host "`n── Form Columns, Sections, Rows ──" -ForegroundColor Cyan # --- Warehouse Location: 1 column, 1 section, 5 rows (name, capacity, address, isactive, notes) --- -dotnet new pp-form-column ` +txc workspace component create pp-form-column ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" -dotnet new pp-form-section ` +txc workspace component create pp-form-section ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" Write-Host " ✓ warehouselocation: column, section, 5 rows" -ForegroundColor Green # --- Warehouse Item: 1 column, 1 section, 12 rows --- -dotnet new pp-form-column ` +txc workspace component create pp-form-column ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" -dotnet new pp-form-section ` +txc workspace component create pp-form-section ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" Write-Host " ✓ warehouseitem: column, section, 12 rows" -ForegroundColor Green # --- Warehouse Transaction: 1 column, 1 section, 10 rows --- -dotnet new pp-form-column ` +txc workspace component create pp-form-column ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" -dotnet new pp-form-section ` +txc workspace component create pp-form-section ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" -dotnet new pp-form-row ` +txc workspace component create pp-form-row ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" Write-Host " ✓ warehousetransaction: column, section, 10 rows" -ForegroundColor Green @@ -373,256 +331,229 @@ Write-Host "`n── Form Cells ──" -ForegroundColor Cyan # --- Warehouse Location cells --- -dotnet new pp-form-cell ` +txc workspace component create pp-form-cell ` --output "src/Solutions.UI" ` - --RowIndex "1" ` - --FormType "main" ` - --DisplayName "Name" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes + --param "RowIndex=1" ` + --param "FormType=main" ` + --param "DisplayName=Name" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" -dotnet new pp-form-cell ` +txc workspace component create pp-form-cell ` --output "src/Solutions.UI" ` - --RowIndex "2" ` - --FormType "main" ` - --DisplayName "Capacity" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes + --param "RowIndex=2" ` + --param "FormType=main" ` + --param "DisplayName=Capacity" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" -dotnet new pp-form-cell ` +txc workspace component create pp-form-cell ` --output "src/Solutions.UI" ` - --RowIndex "3" ` - --FormType "main" ` - --DisplayName "Address" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes + --param "RowIndex=3" ` + --param "FormType=main" ` + --param "DisplayName=Address" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" -dotnet new pp-form-cell ` +txc workspace component create pp-form-cell ` --output "src/Solutions.UI" ` - --RowIndex "4" ` - --FormType "main" ` - --DisplayName "Is Active" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes + --param "RowIndex=4" ` + --param "FormType=main" ` + --param "DisplayName=Is Active" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" -dotnet new pp-form-cell ` +txc workspace component create pp-form-cell ` --output "src/Solutions.UI" ` - --RowIndex "5" ` - --FormType "main" ` - --DisplayName "Notes" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes + --param "RowIndex=5" ` + --param "FormType=main" ` + --param "DisplayName=Notes" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" Write-Host " ✓ warehouselocation cells: Name, Capacity, Address, Is Active, Notes" -ForegroundColor Green # --- Warehouse Item cells --- -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "1" ` - --FormType "main" ` - --DisplayName "Name" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "2" ` - --FormType "main" ` - --DisplayName "SKU" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "3" ` - --FormType "main" ` - --DisplayName "Available Quantity" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "4" ` - --FormType "main" ` - --DisplayName "Location" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "5" ` - --FormType "main" ` - --DisplayName "Description" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "6" ` - --FormType "main" ` - --DisplayName "Unit Price" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "7" ` - --FormType "main" ` - --DisplayName "Weight (kg)" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "8" ` - --FormType "main" ` - --DisplayName "Category" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "9" ` - --FormType "main" ` - --DisplayName "Is Perishable" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "10" ` - --FormType "main" ` - --DisplayName "Expiration Date" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "11" ` - --FormType "main" ` - --DisplayName "Barcode" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "12" ` - --FormType "main" ` - --DisplayName "Reorder Point" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=1" ` + --param "FormType=main" ` + --param "DisplayName=Name" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=2" ` + --param "FormType=main" ` + --param "DisplayName=SKU" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=3" ` + --param "FormType=main" ` + --param "DisplayName=Available Quantity" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=4" ` + --param "FormType=main" ` + --param "DisplayName=Location" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=5" ` + --param "FormType=main" ` + --param "DisplayName=Description" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=6" ` + --param "FormType=main" ` + --param "DisplayName=Unit Price" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=7" ` + --param "FormType=main" ` + --param "DisplayName=Weight (kg)" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=8" ` + --param "FormType=main" ` + --param "DisplayName=Category" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=9" ` + --param "FormType=main" ` + --param "DisplayName=Is Perishable" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=10" ` + --param "FormType=main" ` + --param "DisplayName=Expiration Date" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=11" ` + --param "FormType=main" ` + --param "DisplayName=Barcode" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=12" ` + --param "FormType=main" ` + --param "DisplayName=Reorder Point" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" Write-Host " ✓ warehouseitem cells: Name, SKU, Available Quantity, Location, Description, Unit Price, Weight, Category, Is Perishable, Expiration Date, Barcode, Reorder Point" -ForegroundColor Green # --- Warehouse Transaction cells --- -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "1" ` - --FormType "main" ` - --DisplayName "Name" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "2" ` - --FormType "main" ` - --DisplayName "Item" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "3" ` - --FormType "main" ` - --DisplayName "Quantity" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "4" ` - --FormType "main" ` - --DisplayName "Transaction Type" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "5" ` - --FormType "main" ` - --DisplayName "Transaction Date" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "6" ` - --FormType "main" ` - --DisplayName "Notes" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "7" ` - --FormType "main" ` - --DisplayName "Total Value" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "8" ` - --FormType "main" ` - --DisplayName "Is Processed" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "9" ` - --FormType "main" ` - --DisplayName "Processed By" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-cell ` - --output "src/Solutions.UI" ` - --RowIndex "10" ` - --FormType "main" ` - --DisplayName "Reference Number" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=1" ` + --param "FormType=main" ` + --param "DisplayName=Name" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=2" ` + --param "FormType=main" ` + --param "DisplayName=Item" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=3" ` + --param "FormType=main" ` + --param "DisplayName=Quantity" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=4" ` + --param "FormType=main" ` + --param "DisplayName=Transaction Type" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=5" ` + --param "FormType=main" ` + --param "DisplayName=Transaction Date" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=6" ` + --param "FormType=main" ` + --param "DisplayName=Notes" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=7" ` + --param "FormType=main" ` + --param "DisplayName=Total Value" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=8" ` + --param "FormType=main" ` + --param "DisplayName=Is Processed" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=9" ` + --param "FormType=main" ` + --param "DisplayName=Processed By" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-cell ` + --output "src/Solutions.UI" ` + --param "RowIndex=10" ` + --param "FormType=main" ` + --param "DisplayName=Reference Number" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" Write-Host " ✓ warehousetransaction cells: Name, Item, Quantity, Transaction Type, Transaction Date, Notes, Total Value, Is Processed, Processed By, Reference Number" -ForegroundColor Green @@ -634,282 +565,255 @@ Write-Host "`n── Form Controls ──" -ForegroundColor Cyan # --- Warehouse Location controls --- -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "Text" ` - --RowIndex "1" ` - --AttributeLogicalName "${PublisherPrefix}_name" ` - --FormType "main" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "WholeNumber" ` - --RowIndex "2" ` - --AttributeLogicalName "${PublisherPrefix}_capacity" ` - --FormType "main" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "Text" ` - --RowIndex "3" ` - --AttributeLogicalName "${PublisherPrefix}_address" ` - --FormType "main" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "OptionSet" ` - --RowIndex "4" ` - --AttributeLogicalName "${PublisherPrefix}_isactive" ` - --FormType "main" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "MultilineText" ` - --RowIndex "5" ` - --AttributeLogicalName "${PublisherPrefix}_notes" ` - --FormType "main" ` - --FormId $warehouselocationFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=Text" ` + --param "RowIndex=1" ` + --param "AttributeLogicalName=${PublisherPrefix}_name" ` + --param "FormType=main" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=WholeNumber" ` + --param "RowIndex=2" ` + --param "AttributeLogicalName=${PublisherPrefix}_capacity" ` + --param "FormType=main" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=Text" ` + --param "RowIndex=3" ` + --param "AttributeLogicalName=${PublisherPrefix}_address" ` + --param "FormType=main" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=OptionSet" ` + --param "RowIndex=4" ` + --param "AttributeLogicalName=${PublisherPrefix}_isactive" ` + --param "FormType=main" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=MultilineText" ` + --param "RowIndex=5" ` + --param "AttributeLogicalName=${PublisherPrefix}_notes" ` + --param "FormType=main" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" Write-Host " ✓ warehouselocation controls: name, capacity, address, isactive, notes" -ForegroundColor Green # --- Warehouse Item controls --- -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "Text" ` - --RowIndex "1" ` - --AttributeLogicalName "${PublisherPrefix}_name" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "Text" ` - --RowIndex "2" ` - --AttributeLogicalName "${PublisherPrefix}_sku" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "WholeNumber" ` - --RowIndex "3" ` - --AttributeLogicalName "${PublisherPrefix}_availablequantity" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "Lookup" ` - --RowIndex "4" ` - --AttributeLogicalName "${PublisherPrefix}_locationid" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "MultilineText" ` - --RowIndex "5" ` - --AttributeLogicalName "${PublisherPrefix}_description" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "Currency" ` - --RowIndex "6" ` - --AttributeLogicalName "${PublisherPrefix}_unitprice" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "Decimal" ` - --RowIndex "7" ` - --AttributeLogicalName "${PublisherPrefix}_weight" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "OptionSet" ` - --RowIndex "8" ` - --AttributeLogicalName "${PublisherPrefix}_category" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "OptionSet" ` - --RowIndex "9" ` - --AttributeLogicalName "${PublisherPrefix}_isperishable" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "DateTime" ` - --RowIndex "10" ` - --AttributeLogicalName "${PublisherPrefix}_expirationdate" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "Text" ` - --RowIndex "11" ` - --AttributeLogicalName "${PublisherPrefix}_barcode" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "WholeNumber" ` - --RowIndex "12" ` - --AttributeLogicalName "${PublisherPrefix}_reorderpoint" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=Text" ` + --param "RowIndex=1" ` + --param "AttributeLogicalName=${PublisherPrefix}_name" ` + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=Text" ` + --param "RowIndex=2" ` + --param "AttributeLogicalName=${PublisherPrefix}_sku" ` + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=WholeNumber" ` + --param "RowIndex=3" ` + --param "AttributeLogicalName=${PublisherPrefix}_availablequantity" ` + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=Lookup" ` + --param "RowIndex=4" ` + --param "AttributeLogicalName=${PublisherPrefix}_locationid" ` + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=MultilineText" ` + --param "RowIndex=5" ` + --param "AttributeLogicalName=${PublisherPrefix}_description" ` + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=Currency" ` + --param "RowIndex=6" ` + --param "AttributeLogicalName=${PublisherPrefix}_unitprice" ` + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=Decimal" ` + --param "RowIndex=7" ` + --param "AttributeLogicalName=${PublisherPrefix}_weight" ` + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=OptionSet" ` + --param "RowIndex=8" ` + --param "AttributeLogicalName=${PublisherPrefix}_category" ` + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=OptionSet" ` + --param "RowIndex=9" ` + --param "AttributeLogicalName=${PublisherPrefix}_isperishable" ` + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=DateTime" ` + --param "RowIndex=10" ` + --param "AttributeLogicalName=${PublisherPrefix}_expirationdate" ` + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=Text" ` + --param "RowIndex=11" ` + --param "AttributeLogicalName=${PublisherPrefix}_barcode" ` + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=WholeNumber" ` + --param "RowIndex=12" ` + --param "AttributeLogicalName=${PublisherPrefix}_reorderpoint" ` + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" Write-Host " ✓ warehouseitem controls: name, sku, availablequantity, locationid, description, unitprice, weight, category, isperishable, expirationdate, barcode, reorderpoint" -ForegroundColor Green # --- Warehouse Transaction controls --- -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "Text" ` - --RowIndex "1" ` - --AttributeLogicalName "${PublisherPrefix}_name" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "Lookup" ` - --RowIndex "2" ` - --AttributeLogicalName "${PublisherPrefix}_itemid" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "WholeNumber" ` - --RowIndex "3" ` - --AttributeLogicalName "${PublisherPrefix}_quantity" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "OptionSet" ` - --RowIndex "4" ` - --AttributeLogicalName "${PublisherPrefix}_transactiontype" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "DateTime" ` - --RowIndex "5" ` - --AttributeLogicalName "${PublisherPrefix}_transactiondate" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "MultilineText" ` - --RowIndex "6" ` - --AttributeLogicalName "${PublisherPrefix}_notes" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "Currency" ` - --RowIndex "7" ` - --AttributeLogicalName "${PublisherPrefix}_totalvalue" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "OptionSet" ` - --RowIndex "8" ` - --AttributeLogicalName "${PublisherPrefix}_isprocessed" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "Text" ` - --RowIndex "9" ` - --AttributeLogicalName "${PublisherPrefix}_processedby" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes - -dotnet new pp-form-control ` - --output "src/Solutions.UI" ` - --ControlType "Text" ` - --RowIndex "10" ` - --AttributeLogicalName "${PublisherPrefix}_referencenumber" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --allow-scripts yes +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=Text" ` + --param "RowIndex=1" ` + --param "AttributeLogicalName=${PublisherPrefix}_name" ` + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=Lookup" ` + --param "RowIndex=2" ` + --param "AttributeLogicalName=${PublisherPrefix}_itemid" ` + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=WholeNumber" ` + --param "RowIndex=3" ` + --param "AttributeLogicalName=${PublisherPrefix}_quantity" ` + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=OptionSet" ` + --param "RowIndex=4" ` + --param "AttributeLogicalName=${PublisherPrefix}_transactiontype" ` + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=DateTime" ` + --param "RowIndex=5" ` + --param "AttributeLogicalName=${PublisherPrefix}_transactiondate" ` + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=MultilineText" ` + --param "RowIndex=6" ` + --param "AttributeLogicalName=${PublisherPrefix}_notes" ` + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=Currency" ` + --param "RowIndex=7" ` + --param "AttributeLogicalName=${PublisherPrefix}_totalvalue" ` + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=OptionSet" ` + --param "RowIndex=8" ` + --param "AttributeLogicalName=${PublisherPrefix}_isprocessed" ` + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=Text" ` + --param "RowIndex=9" ` + --param "AttributeLogicalName=${PublisherPrefix}_processedby" ` + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" + +txc workspace component create pp-form-control ` + --output "src/Solutions.UI" ` + --param "ControlType=Text" ` + --param "RowIndex=10" ` + --param "AttributeLogicalName=${PublisherPrefix}_referencenumber" ` + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" Write-Host " ✓ warehousetransaction controls: name, itemid, quantity, transactiontype, transactiondate, notes, totalvalue, isprocessed, processedby, referencenumber" -ForegroundColor Green diff --git a/bdd-agent-v2/.demo/05d-views-subgrids.ps1 b/bdd-agent-v2/.demo/05d-views-subgrids.ps1 index 6aa687f..e4c0b32 100644 --- a/bdd-agent-v2/.demo/05d-views-subgrids.ps1 +++ b/bdd-agent-v2/.demo/05d-views-subgrids.ps1 @@ -52,12 +52,11 @@ function Add-ViewColumns { $xml.Save($viewFile.FullName) } -dotnet new pp-entity-view ` +txc workspace component create pp-entity-view ` --output "src/Solutions.UI" ` - --EntitySchemaName "${PublisherPrefix}_warehouselocation" ` - --DisplayName "Active Warehouse Locations" ` - --PublisherPrefix $PublisherPrefix ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehouselocation" ` + --param "DisplayName=Active Warehouse Locations" ` + --param "PublisherPrefix=$PublisherPrefix" Add-ViewColumns ` -EntityLogicalName "${PublisherPrefix}_warehouselocation" ` @@ -66,12 +65,11 @@ Add-ViewColumns ` Write-Host " ✓ View: Active Warehouse Locations (with columns)" -ForegroundColor Green -dotnet new pp-entity-view ` +txc workspace component create pp-entity-view ` --output "src/Solutions.UI" ` - --EntitySchemaName "${PublisherPrefix}_warehouseitem" ` - --DisplayName "Active Warehouse Items" ` - --PublisherPrefix $PublisherPrefix ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehouseitem" ` + --param "DisplayName=Active Warehouse Items" ` + --param "PublisherPrefix=$PublisherPrefix" Add-ViewColumns ` -EntityLogicalName "${PublisherPrefix}_warehouseitem" ` @@ -80,12 +78,11 @@ Add-ViewColumns ` Write-Host " ✓ View: Active Warehouse Items (with columns)" -ForegroundColor Green -dotnet new pp-entity-view ` +txc workspace component create pp-entity-view ` --output "src/Solutions.UI" ` - --EntitySchemaName "${PublisherPrefix}_warehousetransaction" ` - --DisplayName "Active Warehouse Transactions" ` - --PublisherPrefix $PublisherPrefix ` - --allow-scripts yes + --param "EntitySchemaName=${PublisherPrefix}_warehousetransaction" ` + --param "DisplayName=Active Warehouse Transactions" ` + --param "PublisherPrefix=$PublisherPrefix" Add-ViewColumns ` -EntityLogicalName "${PublisherPrefix}_warehousetransaction" ` @@ -101,25 +98,23 @@ Write-Host " ✓ View: Active Warehouse Transactions (with columns)" -Foregroun Write-Host "`n── Subgrids ──" -ForegroundColor Cyan # Warehouse Location form: subgrid showing related Warehouse Items -dotnet new pp-form-subgrid ` +txc workspace component create pp-form-subgrid ` --output "src/Solutions.UI" ` - --SubgridLabel "Warehouse Items" ` - --FormType "main" ` - --FormId $warehouselocationFormGuid ` - --TargetEntityLogicalName "${PublisherPrefix}_warehouseitem" ` - --EntityLogicalName "${PublisherPrefix}_warehouselocation" ` - --allow-scripts yes + --param "SubgridLabel=Warehouse Items" ` + --param "FormType=main" ` + --param "FormId=$warehouselocationFormGuid" ` + --param "TargetEntityLogicalName=${PublisherPrefix}_warehouseitem" ` + --param "EntityLogicalName=${PublisherPrefix}_warehouselocation" Write-Host " ✓ Subgrid: warehouselocation → Warehouse Items" -ForegroundColor Green # Warehouse Item form: subgrid showing related Warehouse Transactions -dotnet new pp-form-subgrid ` +txc workspace component create pp-form-subgrid ` --output "src/Solutions.UI" ` - --SubgridLabel "Warehouse Transactions" ` - --FormType "main" ` - --FormId $warehouseitemFormGuid ` - --TargetEntityLogicalName "${PublisherPrefix}_warehousetransaction" ` - --EntityLogicalName "${PublisherPrefix}_warehouseitem" ` - --allow-scripts yes + --param "SubgridLabel=Warehouse Transactions" ` + --param "FormType=main" ` + --param "FormId=$warehouseitemFormGuid" ` + --param "TargetEntityLogicalName=${PublisherPrefix}_warehousetransaction" ` + --param "EntityLogicalName=${PublisherPrefix}_warehouseitem" Write-Host " ✓ Subgrid: warehouseitem → Warehouse Transactions" -ForegroundColor Green diff --git a/bdd-agent-v2/.demo/07-plugins.ps1 b/bdd-agent-v2/.demo/07-plugins.ps1 index aa9e18a..891ba58 100644 --- a/bdd-agent-v2/.demo/07-plugins.ps1 +++ b/bdd-agent-v2/.demo/07-plugins.ps1 @@ -9,41 +9,14 @@ # # Expects: $PublisherName, $PublisherPrefix, $SolutionName from parent scope. # -# ────────────────────────────────────────────────────────────────────────────────────────── -# Signing Key Generation -# ────────────────────────────────────────────────────────────────────────────────────────── - -Write-Host "`n── Plugins.Warehouse ──" -ForegroundColor Cyan - -if (-not (Test-Path "src/Plugins.Warehouse")) { - New-Item -ItemType Directory -Path "src/Plugins.Warehouse" -Force | Out-Null -} - -# Generate signing key using RSACryptoServiceProvider (cross-platform) -$keyFile = "src/Plugins.Warehouse/PluginKey.snk" -if (-not (Test-Path $keyFile)) { - $rsa = New-Object System.Security.Cryptography.RSACryptoServiceProvider 2048 - try { - $rsa.PersistKeyInCsp = $false - $blob = $rsa.ExportCspBlob($true) - [System.IO.File]::WriteAllBytes((Join-Path (Get-Location).Path $keyFile), $blob) - Write-Host " ✓ PluginKey.snk generated" -ForegroundColor Green - } - finally { - $rsa.Dispose() - } -} - # ────────────────────────────────────────────────────────────────────────────────────────── # Plugin Project # ────────────────────────────────────────────────────────────────────────────────────────── -dotnet new pp-plugin ` +txc workspace component create pp-plugin ` --output "src/Plugins.Warehouse" ` - --PublisherName $PublisherName ` - --SigningKeyFilePath "PluginKey.snk" ` - --Company $PublisherName ` - --allow-scripts yes + --param "PublisherName=$PublisherName" ` + --param "Company=$PublisherName" dotnet sln add src/Plugins.Warehouse diff --git a/bdd-agent-v2/.demo/08-logic-solution.ps1 b/bdd-agent-v2/.demo/08-logic-solution.ps1 index 62468bb..93b6dd3 100644 --- a/bdd-agent-v2/.demo/08-logic-solution.ps1 +++ b/bdd-agent-v2/.demo/08-logic-solution.ps1 @@ -13,12 +13,10 @@ Write-Host "`n── Solutions.Logic ──" -ForegroundColor Cyan -dotnet new pp-solution ` +txc workspace component create pp-solution ` --output "src/Solutions.Logic" ` - --PublisherName $PublisherName ` - --PublisherPrefix $PublisherPrefix ` - --GeneratePluginAssembly "true" ` - --allow-scripts yes + --param "PublisherName=$PublisherName" ` + --param "PublisherPrefix=$PublisherPrefix" Write-Host " ✓ Solutions.Logic" -ForegroundColor Green @@ -58,68 +56,10 @@ Write-Host "`n── Plugin Assembly & Steps ──" -ForegroundColor Cyan $assemblyGuid = [guid]::NewGuid() -# Note: Template post-action scripts use dotnet run --file, which sets the CWD -# to the .template.scripts/ directory instead of the project root. This causes -# generated files to land in .template.scripts/ subdirectories. We suppress -# the template error and relocate the generated files manually. - -$ErrorActionPreference = "Continue" - -dotnet new pp-plugin-assembly ` +txc workspace component create pp-plugin-assembly ` --output "src/Solutions.Logic" ` - --AssemblyId "$assemblyGuid" ` - --PluginProjectRootPath "../../Plugins.Warehouse" ` - --allow-scripts yes 2>&1 | Out-Null - -$ErrorActionPreference = "Stop" - -# Relocate files from .template.scripts/ to the correct locations -$logicRoot = Resolve-Path "src/Solutions.Logic" -$tsDir = Join-Path $logicRoot ".template.scripts" - -# Remove the incorrect PluginAssemblies stub (placed by template before post-action) -$stubPA = Join-Path $logicRoot "PluginAssemblies" "PluginsWarehouse.dll.data.xml" -if (Test-Path $stubPA) { - Remove-Item $stubPA -Force -} - -# Move correctly generated PluginAssemblies from .template.scripts/ -$tsPADir = Join-Path $tsDir "PluginAssemblies" -if (Test-Path $tsPADir) { - Get-ChildItem $tsPADir -Directory | ForEach-Object { - $destDir = Join-Path $logicRoot "PluginAssemblies" $_.Name - if (-not (Test-Path $destDir)) { - New-Item -ItemType Directory -Path $destDir -Force | Out-Null - } - Copy-Item (Join-Path $_.FullName "*") $destDir -Force - } - Remove-Item $tsPADir -Recurse -Force -} - -# Move RootComponent.xml and apply to Solution.xml (remove any existing duplicate) -$tsRootComp = Join-Path $tsDir ".template.temp" "RootComponent.xml" -$solutionXmlPath = Join-Path $logicRoot "Other" "Solution.xml" -if ((Test-Path $tsRootComp) -and (Test-Path $solutionXmlPath)) { - [xml]$sourceXml = Get-Content $tsRootComp - [xml]$destinationXml = Get-Content $solutionXmlPath - - # Remove any existing assembly root components (duplicates from template stub) - $rootComponentsNode = $destinationXml.SelectSingleNode("//RootComponents") - if ($rootComponentsNode) { - $existing = $rootComponentsNode.SelectNodes("RootComponent[@type='91']") - foreach ($node in $existing) { - $rootComponentsNode.RemoveChild($node) | Out-Null - } - $importNode = $destinationXml.ImportNode($sourceXml.DocumentElement, $true) - $rootComponentsNode.AppendChild($importNode) | Out-Null - $destinationXml.Save((Resolve-Path $solutionXmlPath).Path) - } -} - -# Clean up template temp/scripts -Remove-Item (Join-Path $logicRoot ".template.temp") -Recurse -Force -ErrorAction SilentlyContinue -Remove-Item (Join-Path $tsDir ".template.temp") -Recurse -Force -ErrorAction SilentlyContinue -Remove-Item $tsDir -Recurse -Force -ErrorAction SilentlyContinue + --param "AssemblyId=$assemblyGuid" ` + --param "PluginProjectRootPath=../Plugins.Warehouse" Write-Host " ✓ Plugin assembly registered" -ForegroundColor Green @@ -127,79 +67,26 @@ Write-Host " ✓ Plugin assembly registered" -ForegroundColor Green # SDK Message Processing Steps # ────────────────────────────────────────────────────────────────────────────────────────── -# Use --allow-scripts no to skip broken post-actions, then handle file placement manually -$destStepsDir = Join-Path $logicRoot "SdkMessageProcessingSteps" -if (-not (Test-Path $destStepsDir)) { - New-Item -ItemType Directory -Path $destStepsDir -Force | Out-Null -} - # PreValidation step — ValidateWarehouseTransactionPlugin -dotnet new pp-plugin-assembly-step ` +txc workspace component create pp-plugin-assembly-step ` --output "src/Solutions.Logic" ` - --PrimaryEntity "${PublisherPrefix}_warehousetransaction" ` - --PluginProjectName "Plugins.Warehouse" ` - --PluginName "ValidateWarehouseTransactionPlugin" ` - --Stage "Pre-validation" ` - --SdkMessage "Create" ` - --allow-scripts no - -# Move generated step XML from .template.temp/ to SdkMessageProcessingSteps/ -foreach ($tempDir in @( - (Join-Path $logicRoot ".template.temp"), - (Join-Path $logicRoot ".template.scripts" ".template.temp") -)) { - if (Test-Path $tempDir) { - Get-ChildItem $tempDir -Filter "*.xml" | ForEach-Object { - Copy-Item $_.FullName (Join-Path $destStepsDir "{$($_.BaseName)}.xml") -Force - } - Remove-Item $tempDir -Recurse -Force - } -} + --param "PrimaryEntity=${PublisherPrefix}_warehousetransaction" ` + --param "PluginProjectName=Plugins.Warehouse" ` + --param "PluginName=ValidateWarehouseTransactionPlugin" ` + --param "Stage=Pre-validation" ` + --param "SdkMessage=Create" + Write-Host " ✓ Step: ValidateWarehouseTransactionPlugin (Pre-validation, Create)" -ForegroundColor Green # PostOperation step — SubtractQuantityPlugin -dotnet new pp-plugin-assembly-step ` +txc workspace component create pp-plugin-assembly-step ` --output "src/Solutions.Logic" ` - --PrimaryEntity "${PublisherPrefix}_warehousetransaction" ` - --PluginProjectName "Plugins.Warehouse" ` - --PluginName "SubtractQuantityPlugin" ` - --Stage "Post-operation" ` - --SdkMessage "Create" ` - --allow-scripts no ` - --force - -# Move generated step XML -foreach ($tempDir in @( - (Join-Path $logicRoot ".template.temp"), - (Join-Path $logicRoot ".template.scripts" ".template.temp") -)) { - if (Test-Path $tempDir) { - Get-ChildItem $tempDir -Filter "*.xml" | ForEach-Object { - Copy-Item $_.FullName (Join-Path $destStepsDir "{$($_.BaseName)}.xml") -Force - } - Remove-Item $tempDir -Recurse -Force - } -} - -Write-Host " ✓ Step: SubtractQuantityPlugin (Post-operation, Create)" -ForegroundColor Green - -# Add step RootComponents to Solution.xml -$solutionXmlPath = Join-Path $logicRoot "Other" "Solution.xml" -[xml]$destinationXml = Get-Content $solutionXmlPath -$rootComponentsNode = $destinationXml.SelectSingleNode("//RootComponents") - -Get-ChildItem $destStepsDir -Filter "*.xml" | ForEach-Object { - $guidStr = $_.BaseName - $stepRootComp = $destinationXml.CreateElement("RootComponent") - $stepRootComp.SetAttribute("type", "92") - $stepRootComp.SetAttribute("id", $guidStr) - $stepRootComp.SetAttribute("behavior", "0") - $rootComponentsNode.AppendChild($stepRootComp) | Out-Null -} + --param "PrimaryEntity=${PublisherPrefix}_warehousetransaction" ` + --param "PluginProjectName=Plugins.Warehouse" ` + --param "PluginName=SubtractQuantityPlugin" ` + --param "Stage=Post-operation" ` + --param "SdkMessage=Create" -$destinationXml.Save((Resolve-Path $solutionXmlPath).Path) -# Clean up template artifacts -Remove-Item (Join-Path $logicRoot ".template.scripts") -Recurse -Force -ErrorAction SilentlyContinue -Remove-Item (Join-Path $logicRoot ".template.temp") -Recurse -Force -ErrorAction SilentlyContinue +Write-Host " ✓ Step: SubtractQuantityPlugin (Post-operation, Create)" -ForegroundColor Green \ No newline at end of file diff --git a/bdd-agent-v2/.demo/09-form-scripts.ps1 b/bdd-agent-v2/.demo/09-form-scripts.ps1 index 2fb89b3..b065087 100644 --- a/bdd-agent-v2/.demo/09-form-scripts.ps1 +++ b/bdd-agent-v2/.demo/09-form-scripts.ps1 @@ -13,9 +13,9 @@ Write-Host "`n── Scripts.UI ──" -ForegroundColor Cyan -dotnet new pp-script-library ` - --LibraryName "main" ` - --PublisherPrefix $PublisherPrefix ` +txc workspace component create pp-script-library ` + --param "LibraryName=main" ` + --param "PublisherPrefix=$PublisherPrefix" ` --output "src/Scripts.UI" dotnet sln add src/Scripts.UI @@ -138,28 +138,26 @@ cd ../.. Write-Host "`n── Form Event Handlers ──" -ForegroundColor Cyan # OnLoad handler on warehouse transaction form -dotnet new pp-form-event-handler ` +txc workspace component create pp-form-event-handler ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntityLogicalName "${PublisherPrefix}_warehousetransaction" ` - --LibraryName "${PublisherPrefix}_main" ` - --FunctionName "WarehouseScripts.TransactionForm.onLoad" ` - --EventType "onload" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntityLogicalName=${PublisherPrefix}_warehousetransaction" ` + --param "LibraryName=${PublisherPrefix}_main" ` + --param "FunctionName=WarehouseScripts.TransactionForm.onLoad" ` + --param "EventType=onload" Write-Host " ✓ Event handler: warehousetransaction form → onLoad" -ForegroundColor Green # OnChange handler on quantity field -dotnet new pp-form-event-handler ` +txc workspace component create pp-form-event-handler ` --output "src/Solutions.UI" ` - --FormType "main" ` - --FormId $warehousetransactionFormGuid ` - --EntityLogicalName "${PublisherPrefix}_warehousetransaction" ` - --LibraryName "${PublisherPrefix}_main" ` - --FunctionName "WarehouseScripts.TransactionForm.onQuantityChange" ` - --EventType "onchange" ` - --AttributeName "${PublisherPrefix}_quantity" ` - --allow-scripts yes + --param "FormType=main" ` + --param "FormId=$warehousetransactionFormGuid" ` + --param "EntityLogicalName=${PublisherPrefix}_warehousetransaction" ` + --param "LibraryName=${PublisherPrefix}_main" ` + --param "FunctionName=WarehouseScripts.TransactionForm.onQuantityChange" ` + --param "EventType=onchange" ` + --param "AttributeName=${PublisherPrefix}_quantity" Write-Host " ✓ Event handler: warehousetransaction quantity → onChange" -ForegroundColor Green diff --git a/bdd-agent-v2/.demo/10-ribbon.ps1 b/bdd-agent-v2/.demo/10-ribbon.ps1 index e056c31..979c98e 100644 --- a/bdd-agent-v2/.demo/10-ribbon.ps1 +++ b/bdd-agent-v2/.demo/10-ribbon.ps1 @@ -41,7 +41,7 @@ namespace WarehouseScripts { } "@ -Set-Content -Path "src/Scripts.UI/TS/scripts/RibbonActions.ts" -Value $ribbonScript -Encoding UTF8 +Set-Content -Path "src/Scripts.UI/src/RibbonActions.ts" -Value $ribbonScript -Encoding UTF8 Write-Host " ✓ RibbonActions.ts" -ForegroundColor Green # Rebuild Scripts.UI with the new file @@ -59,26 +59,24 @@ cd ../.. # Ribbon Button: Check Stock Levels (warehouseitem form) # ────────────────────────────────────────────────────────────────────────────────────────── -dotnet new pp-ribbon-button ` +txc workspace component create pp-ribbon-button ` --output "src/Solutions.UI" ` - --Location "Form" ` - --EntityLogicalName "${PublisherPrefix}_warehouseitem" ` - --ButtonLabel "Check Stock Levels" ` - --PublisherPrefix $PublisherPrefix ` - --LibraryLogicalName "${PublisherPrefix}_main.js" ` - --FunctionName "WarehouseScripts.RibbonActions.checkStockLevels" ` - --allow-scripts yes + --param "Location=Form" ` + --param "EntityLogicalName=${PublisherPrefix}_warehouseitem" ` + --param "ButtonLabel=Check Stock Levels" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "LibraryLogicalName=${PublisherPrefix}_main.js" ` + --param "FunctionName=WarehouseScripts.RibbonActions.checkStockLevels" Write-Host " ✓ Ribbon button: Check Stock Levels (warehouseitem form)" -ForegroundColor Green # Add PrimaryControl parameter so the function receives the form context -dotnet new pp-ribbon-command-parameter ` +txc workspace component create pp-ribbon-command-parameter ` --output "src/Solutions.UI" ` - --EntityLogicalName "${PublisherPrefix}_warehouseitem" ` - --PublisherPrefix $PublisherPrefix ` - --ParameterType "CrmPrimaryControl" ` - --FunctionName "WarehouseScripts.RibbonActions.checkStockLevels" ` - --ButtonLogicalName "checkstocklevels" ` - --allow-scripts yes + --param "EntityLogicalName=${PublisherPrefix}_warehouseitem" ` + --param "PublisherPrefix=$PublisherPrefix" ` + --param "ParameterType=CrmPrimaryControl" ` + --param "FunctionName=WarehouseScripts.RibbonActions.checkStockLevels" ` + --param "ButtonLogicalName=checkstocklevels" Write-Host " ✓ Ribbon command parameter: PrimaryControl" -ForegroundColor Green diff --git a/bdd-agent-v2/.demo/11-tests-ui.ps1 b/bdd-agent-v2/.demo/11-tests-ui.ps1 index be1972e..e8e1b47 100644 --- a/bdd-agent-v2/.demo/11-tests-ui.ps1 +++ b/bdd-agent-v2/.demo/11-tests-ui.ps1 @@ -17,7 +17,7 @@ Write-Host "`n── Tests.UI ──" -ForegroundColor Cyan # Scaffold Test Project # ────────────────────────────────────────────────────────────────────────────────────────── -dotnet new pp-test-ui ` +txc workspace component create pp-test-ui ` --output "src/Tests.UI" # Add to solution @@ -31,8 +31,8 @@ Write-Host " ✓ Tests.UI project created" -ForegroundColor Green # Sample Feature File # ────────────────────────────────────────────────────────────────────────────────────────── -dotnet new pp-test-ui-feature ` - --name "WarehouseItemNavigation" ` +txc workspace component create pp-test-ui-feature ` + --param "name=WarehouseItemNavigation" ` --output "src/Tests.UI" # Remove Calculator sample that ships with both templates diff --git a/bdd-agent-v2/.demo/12-genpage-dashboard.ps1 b/bdd-agent-v2/.demo/12-genpage-dashboard.ps1 index 09cacfc..79d22ec 100644 --- a/bdd-agent-v2/.demo/12-genpage-dashboard.ps1 +++ b/bdd-agent-v2/.demo/12-genpage-dashboard.ps1 @@ -17,10 +17,10 @@ Write-Host "`n── Generative Page: Warehouse Dashboard ──" -ForegroundCol # Scaffold GenPage Project # ────────────────────────────────────────────────────────────────────────────────────────── -dotnet new pp-page-generative ` +txc workspace component create pp-page-generative ` --output "src/GenPages.Dashboard" ` - --Name "warehousedashboard" ` - --DisplayName "Warehouse Dashboard" + --param "Name=warehousedashboard" ` + --param "DisplayName=Warehouse Dashboard" Write-Host " ✓ GenPages.Dashboard project created" -ForegroundColor Green @@ -265,15 +265,14 @@ Write-Host " ✓ ProjectReference: GenPages.Dashboard → Solutions.UI" -Foregr # Sitemap Subarea (PageType=genpage) # ────────────────────────────────────────────────────────────────────────────────────────── -dotnet new pp-sitemap-subarea ` +txc workspace component create pp-sitemap-subarea ` --output "src/Solutions.UI" ` - --PageType "genpage" ` - --Title "Dashboard" ` - --EntityLogicalName "${PublisherPrefix}_warehouseitem" ` - --GenPageId $genPageId ` - --GroupTitle "Management" ` - --AreaTitle "Warehouse" ` - --AppName "${PublisherPrefix}_warehouseapp" ` - --allow-scripts yes + --param "PageType=genpage" ` + --param "Title=Dashboard" ` + --param "EntityLogicalName=${PublisherPrefix}_warehouseitem" ` + --param "GenPageId=$genPageId" ` + --param "GroupTitle=Management" ` + --param "AreaTitle=Warehouse" ` + --param "AppName=${PublisherPrefix}_warehouseapp" Write-Host " ✓ Sitemap subarea: Dashboard (genpage)" -ForegroundColor Green diff --git a/bdd-agent-v2/.demo/scaffold-demo-repo.ps1 b/bdd-agent-v2/.demo/scaffold-demo-repo.ps1 index 711043f..4e396df 100644 --- a/bdd-agent-v2/.demo/scaffold-demo-repo.ps1 +++ b/bdd-agent-v2/.demo/scaffold-demo-repo.ps1 @@ -4,13 +4,14 @@ Scaffolds a warehouse management Dataverse demo repository for DynamicsMinds conference. .DESCRIPTION - Creates a complete Dataverse project using TALXIS.DevKit.Templates.Dataverse dotnet new templates. + Creates a complete Dataverse project using the TALXIS DevKit CLI (txc) to scaffold components. Produces: DataModel solution (3 tables), Security solution (2 roles), UI solution (model-driven app), Logic solution (2 plugins), Script Library (TypeScript web resources), ribbon buttons, a generative page dashboard (React 17 + Fluent UI V9), and a Package Deployer package that deploys them all. - Uses plain sequential dotnet new commands — same style as the dev-loops VS Code snippets. + Uses plain sequential txc workspace component create commands, same style as the dev-loops VS Code snippets. + Note: 08-logic-solution.ps1 still uses dotnet new (see the TODO in that file). .EXAMPLE ./scaffold-demo-repo.ps1 diff --git a/dev-loops/CFB-setup-project.code-snippets b/dev-loops/CFB-setup-project.code-snippets index 6f65930..2e86887 100644 --- a/dev-loops/CFB-setup-project.code-snippets +++ b/dev-loops/CFB-setup-project.code-snippets @@ -125,9 +125,8 @@ "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Step 1: Create the Dataverse package for deployment.", - "dotnet new pp-package `", - "--output \"src/${1:Packages.Main}\" `", - "--allow-scripts yes", + "txc workspace component create pp-package `", + "--output \"src/${1:Packages.Main}\"", "", "cd \"src/${1:Packages.Main}\"", "", diff --git a/dev-loops/CFF-implement-data-model.code-snippets b/dev-loops/CFF-implement-data-model.code-snippets index 393ebf2..d9eeed6 100644 --- a/dev-loops/CFF-implement-data-model.code-snippets +++ b/dev-loops/CFF-implement-data-model.code-snippets @@ -8,14 +8,14 @@ "# ║ CFF01: Create a Dataverse solution project for a database schema ║", "# ╚════════════════════════════════════════════════════════════════════════════════════════╝", "#", - "# We will use the .NET templating engine (dotnet new) to create a Dataverse solution project.", - "# The .NET templating engine is a system that allows us to define project templates", + "# We will use the TALXIS DevKit CLI (txc) to create a Dataverse solution project.", + "# It scaffolds components from templates straight into your repo, no live environment needed.", "#", "# Unlike the Power Platform CLI, which generates projects that require post-processing to be ", - "# compatible with .NET project system, this template from the TALXIS.DevKit.Templates.Dataverse", - "# package resolves those issues.", + "# compatible with .NET project system, the txc templates resolve those issues.", "#", - "# You can check out how the templates are built and used:", + "# You can check out how the CLI and its templates are built and used:", + "# https://github.com/TALXIS/tools-cli", "# https://github.com/TALXIS/tools-devkit-templates", "#", "# Templates automatically add new projects to the .sln file.", @@ -31,11 +31,10 @@ "git checkout -b \"$$userBranchPrefix${1:/add-data-model}\"", "", "# Step 2: Create a solution project for the database schema using the installed template.", - "dotnet new pp-solution `", + "txc workspace component create pp-solution `", "--output \"src\\\\${2:Solutions.DataModel}\" `", - "--PublisherName \"${3:UDPP}\" `", - "--PublisherPrefix \"${4:udpp}\" `", - "--allow-scripts yes", + "--param \"PublisherName=${3:UDPP}\" `", + "--param \"PublisherPrefix=${4:udpp}\"", "", "# Templates automatically add new projects to the .sln file.", "# If you wanted to do it manually you would use the following command:", @@ -66,28 +65,26 @@ "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Step 1: Add Warehouse Item table to the solution", - "dotnet new pp-entity `", + "txc workspace component create pp-entity `", "--output \"src/${1:Solutions.DataModel}\" `", - "--EntityType \"${2:Standard}\" `", - "--Behavior \"${3:New}\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", - "--LogicalName \"${5:warehouseitem}\" `", - "--LogicalNamePlural \"${6:warehouseitems}\" `", - "--DisplayName \"${7:Warehouse Item}\" `", - "--DisplayNamePlural \"${8:Warehouse Items}\" `", - "--allow-scripts yes", + "--param \"EntityType=${2:Standard}\" `", + "--param \"Behavior=${3:New}\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\" `", + "--param \"LogicalName=${5:warehouseitem}\" `", + "--param \"LogicalNamePlural=${6:warehouseitems}\" `", + "--param \"DisplayName=${7:Warehouse Item}\" `", + "--param \"DisplayNamePlural=${8:Warehouse Items}\"", "", "# Step 2: Add Warehouse Transaction table to the solution", - "dotnet new pp-entity `", + "txc workspace component create pp-entity `", "--output \"src/${1:Solutions.DataModel}\" `", - "--EntityType \"${2:Standard}\" `", - "--Behavior \"${3:New}\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", - "--LogicalName \"warehousetransaction\" `", - "--LogicalNamePlural \"warehousetransactions\" `", - "--DisplayName \"Warehouse Transaction\" `", - "--DisplayNamePlural \"Warehouse Transactions\" `", - "--allow-scripts yes", + "--param \"EntityType=${2:Standard}\" `", + "--param \"Behavior=${3:New}\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\" `", + "--param \"LogicalName=warehousetransaction\" `", + "--param \"LogicalNamePlural=warehousetransactions\" `", + "--param \"DisplayName=Warehouse Transaction\" `", + "--param \"DisplayNamePlural=Warehouse Transactions\"", ] }, "Create a global option set for Payment Method": { @@ -109,14 +106,13 @@ "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", - "dotnet new pp-optionset-global `", + "txc workspace component create pp-optionset-global `", "--output \"src/${1:Solutions.DataModel}\" `", - "--RequiredLevel \"${2:required}\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", - "--LogicalName \"paymentmethod\" `", - "--DisplayName \"${4:Payment Method}\" `", - "--OptionSetOptions \"${6:Visa,Mastercard,Cash}\" `", - "--allow-scripts yes", + "--param \"RequiredLevel=${2:required}\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\" `", + "--param \"LogicalName=paymentmethod\" `", + "--param \"DisplayName=${4:Payment Method}\" `", + "--param \"OptionSetOptions=${6:Visa,Mastercard,Cash}\"", "" ] }, @@ -135,67 +131,62 @@ "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Step 1: Add Available Quantity column to the Warehouse Item table", - "dotnet new pp-entity-attribute `", + "txc workspace component create pp-entity-attribute `", "--output \"src/${1:Solutions.DataModel}\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehouseitem\" `", - "--AttributeType \"${3:WholeNumber}\" `", - "--RequiredLevel \"${4:required}\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", - "--LogicalName \"availablequantity\" `", - "--DisplayName \"${7:Available Quantity}\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehouseitem\" `", + "--param \"AttributeType=${3:WholeNumber}\" `", + "--param \"RequiredLevel=${4:required}\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\" `", + "--param \"LogicalName=availablequantity\" `", + "--param \"DisplayName=${7:Available Quantity}\"", - "--allow-scripts yes", "", "# Step 2: Add package type option set column to the Warehouse Item table", - "dotnet new pp-entity-attribute `", + "txc workspace component create pp-entity-attribute `", "--output \"src/${1:Solutions.DataModel}\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehouseitem\" `", - "--AttributeType \"OptionSet(Local)\" `", - "--RequiredLevel \"${4:required}\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", - "--LogicalName \"packagetype\" `", - "--DisplayName \"Package Type\" `", - "--OptionSetOptions \"Box,Bag,Envelope\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehouseitem\" `", + "--param \"AttributeType=OptionSet(Local)\" `", + "--param \"RequiredLevel=${4:required}\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\" `", + "--param \"LogicalName=packagetype\" `", + "--param \"DisplayName=Package Type\" `", + "--param \"OptionSetOptions=Box,Bag,Envelope\"", - "--allow-scripts yes", "", "# Step 3: Add Item column to the Warehouse transaction table", - "dotnet new pp-entity-attribute `", + "txc workspace component create pp-entity-attribute `", "--output \"src\\Solutions.DataModel\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", - "--AttributeType \"Lookup\" `", - "--RequiredLevel \"required\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", - "--LogicalName \"itemid\" `", - "--DisplayName \"Item\" `", - "--ReferencedEntityName \"${${publisherPrefix}}_warehouseitem\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\" `", + "--param \"AttributeType=Lookup\" `", + "--param \"RequiredLevel=required\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\" `", + "--param \"LogicalName=itemid\" `", + "--param \"DisplayName=Item\" `", + "--param \"ReferencedEntityName=${${publisherPrefix}}_warehouseitem\"", - "--allow-scripts yes", "", "# Step 4: Add Quantity column to the Warehouse transaction table", - "dotnet new pp-entity-attribute `", + "txc workspace component create pp-entity-attribute `", "--output \"src/${1:Solutions.DataModel}\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", - "--AttributeType \"${3:WholeNumber}\" `", - "--RequiredLevel \"${4:required}\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", - "--LogicalName \"quantity\" `", - "--DisplayName \"Quantity\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\" `", + "--param \"AttributeType=${3:WholeNumber}\" `", + "--param \"RequiredLevel=${4:required}\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\" `", + "--param \"LogicalName=quantity\" `", + "--param \"DisplayName=Quantity\"", - "--allow-scripts yes", "", "# Step 5: Add payment method option set column to the Warehouse transaction table", - "dotnet new pp-entity-attribute `", + "txc workspace component create pp-entity-attribute `", "--output \"src/${1:Solutions.DataModel}\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", - "--AttributeType \"OptionSet(Global)\" `", - "--RequiredLevel \"${4:required}\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", - "--LogicalName \"paymentmethod\" `", - "--DisplayName \"Payment Method\" `", - "--GlobalOptionSetType \"Existing\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\" `", + "--param \"AttributeType=OptionSet(Global)\" `", + "--param \"RequiredLevel=${4:required}\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\" `", + "--param \"LogicalName=paymentmethod\" `", + "--param \"DisplayName=Payment Method\" `", + "--param \"GlobalOptionSetType=Existing\"", - "--allow-scripts yes", "", ] }, diff --git a/dev-loops/CFG-implement-backend-logic.code-snippets b/dev-loops/CFG-implement-backend-logic.code-snippets index c928821..70fa1bf 100644 --- a/dev-loops/CFG-implement-backend-logic.code-snippets +++ b/dev-loops/CFG-implement-backend-logic.code-snippets @@ -18,12 +18,11 @@ "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Step 1: Create a solution project for business logic using the installed template.", - "dotnet new pp-solution `", + "txc workspace component create pp-solution `", "--output \"src/Solutions.Logic\" `", - "--PublisherName \"UDPP\" `", - "--PublisherPrefix \"udpp\" `", - "--GeneratePluginAssembly \"true\" `", - "--allow-scripts yes", + "--param \"PublisherName=UDPP\" `", + "--param \"PublisherPrefix=udpp\" `", + "--param \"GeneratePluginAssembly=true\"", "", "# Step 2: Add the solution project to the Package Deployer project as a .NET ProjectReference item.", "cd src/Packages.Main", @@ -49,58 +48,11 @@ "", "cd src/Plugins.Warehouse", "", - "# Step 1: Generate signing key - try sn.exe first, fall back to RSACryptoServiceProvider", - "\\$keyFile = \"PluginKey.snk\"", - "\\$keyGenerated = \\$false", - "", - "# Method 1: Locate sn.exe to generate signing key", - "\\$possiblePaths = @(", - " \"\\${env:ProgramFiles(x86)}\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.8 Tools\\sn.exe\",", - " \"\\${env:ProgramFiles(x86)}\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.7.2 Tools\\sn.exe\",", - " \"\\${env:ProgramFiles(x86)}\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.7.1 Tools\\sn.exe\",", - " \"\\${env:ProgramFiles(x86)}\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.7 Tools\\sn.exe\"", - ")", - "\\$snPath = \\$possiblePaths | Where-Object { Test-Path \\$_ } | Select-Object -First 1", - "", - "if (\\$snPath) {", - " try {", - " & \\$snPath -k \\$keyFile", - " if (\\$LASTEXITCODE -eq 0 -and (Test-Path \\$keyFile)) {", - " \\$keyGenerated = \\$true", - " Write-Host \"Key generated using sn.exe at '\\$snPath'.\"", - " }", - " }", - " catch {", - " Write-Warning \"sn.exe failed: \\$(\\$_.Exception.Message). Falling back to RSACryptoServiceProvider.\"", - " }", - "}", - "else {", - " Write-Warning \"sn.exe not found. Falling back to RSACryptoServiceProvider.\"", - "}", - "", - "# Method 2: Fallback - generate via RSACryptoServiceProvider (CAPI PRIVATEKEYBLOB)", - "if (-not \\$keyGenerated) {", - " \\$rsa = New-Object System.Security.Cryptography.RSACryptoServiceProvider 2048", - " try {", - " \\$rsa.PersistKeyInCsp = \\$false", - " \\$blob = \\$rsa.ExportCspBlob(\\$true)", - " [System.IO.File]::WriteAllBytes((Join-Path (Get-Location).Path \\$keyFile), \\$blob)", - " Write-Host \"Key generated using RSACryptoServiceProvider.\"", - " }", - " finally {", - " \\$rsa.Dispose()", - " }", - "}", - "", - "cd ../../", - "", - "# Step 2: Initialize plugin project", - "dotnet new pp-plugin `", + "# Step 1: Initialize plugin project", + "txc workspace component create pp-plugin `", "--output \"src/Plugins.Warehouse\" `", - "--PublisherName \"UDPP\" `", - "--SigningKeyFilePath \"PluginKey.snk\" `", - "--Company \"NETWORG\" `", - "--allow-scripts yes", + "--param \"PublisherName=UDPP\" `", + "--param \"Company=NETWORG\"", "", "dotnet sln add src/Plugins.Warehouse", "", @@ -278,30 +230,24 @@ "# ╚════════════════════════════════════════════════════════════════════════════════════╝", "#", "# Step 1: Register PostOperation step - SubtractQuantityPlugin", - "dotnet new pp-plugin-assembly-step `", + "txc workspace component create pp-plugin-assembly-step `", "--output \"src/Solutions.Logic\" `", - "--PrimaryEntity \"${${1:publisherPrefix}}_warehousetransaction\" `", - "--PluginProjectName \"Plugins.Warehouse\" `", - "--PluginName \"SubtractQuantityPlugin\" `", - "--Stage \"Post-operation\" `", - - "--SdkMessage \"Create\" `", - "--AssemblyId \"$$assemblyGuidId\" `", - "--FilteringAttributes \"{${${1:publisherPrefix}}_itemid, ${${1:publisherPrefix}}_quantity}\" `", - "--allow-scripts yes", + "--param \"PrimaryEntity=${${1:publisherPrefix}}_warehousetransaction\" `", + "--param \"PluginProjectName=Plugins.Warehouse\" `", + "--param \"PluginName=SubtractQuantityPlugin\" `", + "--param \"Stage=Post-operation\" `", + "--param \"SdkMessage=Create\" `", + "--param \"FilteringAttributes={${${1:publisherPrefix}}_itemid, ${${1:publisherPrefix}}_quantity}\"", "", "# Step 2: Register PreValidation step - ValidateWarehouseTransactionPlugin", - "dotnet new pp-plugin-assembly-step `", + "txc workspace component create pp-plugin-assembly-step `", "--output \"src/Solutions.Logic\" `", - "--PrimaryEntity \"${${1:publisherPrefix}}_warehousetransaction\" `", - "--PluginProjectName \"Plugins.Warehouse\" `", - "--PluginName \"ValidateWarehouseTransactionPlugin\" `", - "--Stage \"Pre-validation\" `", - - "--SdkMessage \"Create\" `", - "--AssemblyId \"$$assemblyGuidId\" `", - "--FilteringAttributes \"{${${1:publisherPrefix}}_itemid, ${${1:publisherPrefix}}_quantity}\" `", - "--allow-scripts yes" + "--param \"PrimaryEntity=${${1:publisherPrefix}}_warehousetransaction\" `", + "--param \"PluginProjectName=Plugins.Warehouse\" `", + "--param \"PluginName=ValidateWarehouseTransactionPlugin\" `", + "--param \"Stage=Pre-validation\" `", + "--param \"SdkMessage=Create\" `", + "--param \"FilteringAttributes={${${1:publisherPrefix}}_itemid, ${${1:publisherPrefix}}_quantity}\"", ] }, "Link plugin project to Dataverse solution for live development": { diff --git a/dev-loops/CFH-implement-security.code-snippets b/dev-loops/CFH-implement-security.code-snippets index 50e225e..8bd38cc 100644 --- a/dev-loops/CFH-implement-security.code-snippets +++ b/dev-loops/CFH-implement-security.code-snippets @@ -13,11 +13,10 @@ "#", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Step 1: Create a new solution project dedicated to security roles.", - "dotnet new pp-solution `", + "txc workspace component create pp-solution `", "--output \"src/Solutions.Security\" `", - "--PublisherName \"$${publisherPrefix}\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", - "--allow-scripts yes", + "--param \"PublisherName=$${publisherPrefix}\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\"", "", "# Add Solutions.Security to the Package Deployer project as a .NET ProjectReference.", "cd src/Packages.Main", @@ -29,19 +28,17 @@ "", "$$WarehouseWorkerId = [guid]::NewGuid()", "", - "dotnet new pp-security-role `", + "txc workspace component create pp-security-role `", "--output \"src/Solutions.Security\" `", - "--RoleName \"Warehouse worker\" `", - "--RoleId $$WarehouseWorkerId `", - "--allow-scripts yes", + "--param \"RoleName=Warehouse worker\" `", + "--param \"RoleId=$$WarehouseWorkerId\"", "", "$$WarehouseManagerGuidId = [guid]::NewGuid()", "", - "dotnet new pp-security-role `", + "txc workspace component create pp-security-role `", "--output \"src/Solutions.Security\" `", - "--RoleName \"Warehouse manager\" `", - "--RoleId $$WarehouseManagerGuidId `", - "--allow-scripts yes" + "--param \"RoleName=Warehouse manager\" `", + "--param \"RoleId=$$WarehouseManagerGuidId\"", ] }, "Dataverse Security Role Privileges": { @@ -59,36 +56,32 @@ "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Step 1: Assign privileges for warehouseitem entity.", "", - "dotnet new pp-security-role-privilege `", + "txc workspace component create pp-security-role-privilege `", "--output \"src/Solutions.Security\" `", - "--RoleName \"Warehouse worker\" `", - "--PrivilegeTypeAndLevel \"[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Global }, { PrivilegeType: Create, Level: Global }, { PrivilegeType: Append, Level: Global }, { PrivilegeType: AppendTo, Level: Global }]\" `", - "--EntityLogicalName \"${${publisherPrefix}}_warehouseitem\" `", - "--allow-scripts yes", + "--param \"RoleName=Warehouse worker\" `", + "--param \"PrivilegeTypeAndLevel=[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Global }, { PrivilegeType: Create, Level: Global }, { PrivilegeType: Append, Level: Global }, { PrivilegeType: AppendTo, Level: Global }]\" `", + "--param \"EntityLogicalName=${${publisherPrefix}}_warehouseitem\"", "", - "dotnet new pp-security-role-privilege `", + "txc workspace component create pp-security-role-privilege `", "--output \"src/Solutions.Security\" `", - "--RoleName \"Warehouse manager\" `", - "--PrivilegeTypeAndLevel \"[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Global }, { PrivilegeType: Create, Level: Global }, { PrivilegeType: Append, Level: Global }, { PrivilegeType: AppendTo, Level: Global }]\" `", - "--EntityLogicalName \"${${publisherPrefix}}_warehouseitem\" `", - "--allow-scripts yes", + "--param \"RoleName=Warehouse manager\" `", + "--param \"PrivilegeTypeAndLevel=[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Global }, { PrivilegeType: Create, Level: Global }, { PrivilegeType: Append, Level: Global }, { PrivilegeType: AppendTo, Level: Global }]\" `", + "--param \"EntityLogicalName=${${publisherPrefix}}_warehouseitem\"", "", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Step 2: Assign privileges for warehousetransaction entity.", "", - "dotnet new pp-security-role-privilege `", + "txc workspace component create pp-security-role-privilege `", "--output \"src/Solutions.Security\" `", - "--RoleName \"Warehouse worker\" `", - "--PrivilegeTypeAndLevel \"[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Basic }]\" `", - "--EntityLogicalName \"${${publisherPrefix}}_warehousetransaction\" `", - "--allow-scripts yes", + "--param \"RoleName=Warehouse worker\" `", + "--param \"PrivilegeTypeAndLevel=[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Basic }]\" `", + "--param \"EntityLogicalName=${${publisherPrefix}}_warehousetransaction\"", "", - "dotnet new pp-security-role-privilege `", + "txc workspace component create pp-security-role-privilege `", "--output \"src/Solutions.Security\" `", - "--RoleName \"Warehouse manager\" `", - "--PrivilegeTypeAndLevel \"[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Global }, { PrivilegeType: Create, Level: Global }, { PrivilegeType: Append, Level: Global }, { PrivilegeType: AppendTo, Level: Global }]\" `", - "--EntityLogicalName \"${${publisherPrefix}}_warehousetransaction\" `", - "--allow-scripts yes" + "--param \"RoleName=Warehouse manager\" `", + "--param \"PrivilegeTypeAndLevel=[{ PrivilegeType: Read, Level: Global }, { PrivilegeType: Write, Level: Global }, { PrivilegeType: Create, Level: Global }, { PrivilegeType: Append, Level: Global }, { PrivilegeType: AppendTo, Level: Global }]\" `", + "--param \"EntityLogicalName=${${publisherPrefix}}_warehousetransaction\"", ] } } diff --git a/dev-loops/CFI-implement-ui-layer.code-snippets b/dev-loops/CFI-implement-ui-layer.code-snippets index 7be7ddc..1e21f93 100644 --- a/dev-loops/CFI-implement-ui-layer.code-snippets +++ b/dev-loops/CFI-implement-ui-layer.code-snippets @@ -16,11 +16,10 @@ "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Step 1: Create the UI layer solution project.", - "dotnet new pp-solution `", + "txc workspace component create pp-solution `", "--output \"src/Solutions.UI\" `", - "--PublisherName \"$${publisherPrefix}\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", - "--allow-scripts yes", + "--param \"PublisherName=$${publisherPrefix}\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\"", "", "# Step 2: Add the solution project to the Package Deployer project as a .NET ProjectReference item.", "cd src/Packages.Main", @@ -28,23 +27,21 @@ "cd ../..", "", "# Step 3: Link existing entities from the data model.", - "dotnet new pp-entity `", + "txc workspace component create pp-entity `", "--output \"src/Solutions.UI\" `", - "--Behavior \"Existing\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", - "--LogicalName \"warehouseitem\" `", - "--DisplayName \"Warehouse Item\" `", + "--param \"Behavior=Existing\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\" `", + "--param \"LogicalName=warehouseitem\" `", + "--param \"DisplayName=Warehouse Item\"", - "--allow-scripts yes", "", - "dotnet new pp-entity `", + "txc workspace component create pp-entity `", "--output \"src/Solutions.UI\" `", - "--Behavior \"Existing\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", - "--LogicalName \"warehousetransaction\" `", - "--DisplayName \"Warehouse Transaction\" `", + "--param \"Behavior=Existing\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\" `", + "--param \"LogicalName=warehousetransaction\" `", + "--param \"DisplayName=Warehouse Transaction\"", - "--allow-scripts yes" ] }, "Create Model-Driven App and Add Entities to App": { @@ -63,28 +60,25 @@ "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Step 1: Create the model-driven app project.", - "dotnet new pp-app-model `", + "txc workspace component create pp-app-model `", "--output \"src/Solutions.UI\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", - "--LogicalName \"warehouseapp\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\" `", + "--param \"LogicalName=warehouseapp\"", - "--allow-scripts yes", "dotnet sln add src/Solutions.UI", "", "# Step 2: Add both entities to the app as components.", - "dotnet new pp-app-model-component `", + "txc workspace component create pp-app-model-component `", "--output \"src/Solutions.UI\" `", - "--EntityLogicalName \"${${publisherPrefix}}_warehouseitem\" `", + "--param \"EntityLogicalName=${${publisherPrefix}}_warehouseitem\" `", - "--AppName \"${${publisherPrefix}}_warehouseapp\" `", - "--allow-scripts yes", + "--param \"AppName=${${publisherPrefix}}_warehouseapp\"", "", - "dotnet new pp-app-model-component `", + "txc workspace component create pp-app-model-component `", "--output \"src/Solutions.UI\" `", - "--EntityLogicalName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"EntityLogicalName=${${publisherPrefix}}_warehousetransaction\" `", - "--AppName \"${${publisherPrefix}}_warehouseapp\" `", - "--allow-scripts yes" + "--param \"AppName=${${publisherPrefix}}_warehouseapp\"", ] }, "Add Sitemap Navigation to App": { @@ -103,33 +97,29 @@ "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Step 1: Add sitemap area.", - "dotnet new pp-sitemap-area `", + "txc workspace component create pp-sitemap-area `", "--output \"src/Solutions.UI\" `", - "--AppName \"${${publisherPrefix}}_warehouseapp\" `", - "--allow-scripts yes", + "--param \"AppName=${${publisherPrefix}}_warehouseapp\"", "", "# Step 2: Add group inside the area.", - "dotnet new pp-sitemap-group `", + "txc workspace component create pp-sitemap-group `", "--output \"src/Solutions.UI\" `", - "--AppName \"${${publisherPrefix}}_warehouseapp\" `", - "--allow-scripts yes", + "--param \"AppName=${${publisherPrefix}}_warehouseapp\"", "", "# Step 3: Add subareas for both entities.", - "dotnet new pp-sitemap-subarea `", + "txc workspace component create pp-sitemap-subarea `", "--output \"src/Solutions.UI\" `", - "--EntityLogicalName \"${${publisherPrefix}}_warehouseitem\" `", - "--AppName \"${${publisherPrefix}}_warehouseapp\" `", - "--allow-scripts yes", + "--param \"EntityLogicalName=${${publisherPrefix}}_warehouseitem\" `", + "--param \"AppName=${${publisherPrefix}}_warehouseapp\"", "", - "dotnet new pp-sitemap-subarea `", + "txc workspace component create pp-sitemap-subarea `", "--output \"src/Solutions.UI\" `", - "--EntityLogicalName \"${${publisherPrefix}}_warehousetransaction\" `", - "--AppName \"${${publisherPrefix}}_warehouseapp\" `", - "--allow-scripts yes" + "--param \"EntityLogicalName=${${publisherPrefix}}_warehousetransaction\" `", + "--param \"AppName=${${publisherPrefix}}_warehouseapp\"", ] }, "Create Main Forms for Entities": { @@ -152,31 +142,28 @@ "$$warehousetransactionFormGuid = [guid]::NewGuid()", "", "# Create empty 'main' forms for each entity.", - "dotnet new pp-entity-form `", + "txc workspace component create pp-entity-form `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", + "--param \"FormType=main\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehouseitem\" `", - "--FormId $$warehouseitemFormGuid `", - "--allow-scripts yes", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehouseitem\" `", + "--param \"FormId=$$warehouseitemFormGuid\"", "", - "dotnet new pp-entity-form `", + "txc workspace component create pp-entity-form `", "--output \"src/Solutions.UI\" `", - "--FormType \"dialog\" `", + "--param \"FormType=dialog\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", - "--FormId $$warehousetransactionFormGuid `", - "--allow-scripts yes", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormId=$$warehousetransactionFormGuid\"", "", "# We also need to add these as components to the app", "", - "dotnet new pp-app-model-component `", + "txc workspace component create pp-app-model-component `", "--output \"src/Solutions.UI\" `", - "--EntityType \"Form\" `", - "--ComponentId \"$$warehouseitemFormGuid\" `", + "--param \"EntityType=Form\" `", + "--param \"ComponentId=$$warehouseitemFormGuid\" `", - "--AppName \"${${publisherPrefix}}_warehouseapp\" `", - "--allow-scripts yes", + "--param \"AppName=${${publisherPrefix}}_warehouseapp\"", "", ] }, @@ -198,22 +185,20 @@ "$$warehouseitemLookupViewGuid = [guid]::NewGuid()", "", "# Step 1: Create a view for the Warehouse Item lookup.", - "dotnet new pp-entity-view `", + "txc workspace component create pp-entity-view `", "--output \"src/Solutions.UI\" `", - "--ViewId $$warehouseitemLookupViewGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehouseitem\" `", + "--param \"ViewId=$$warehouseitemLookupViewGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehouseitem\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", - "--allow-scripts yes", + "--param \"PublisherPrefix=$${publisherPrefix}\"", "", "# Step 2: Add the view to the app as a component.", - "dotnet new pp-app-model-component `", + "txc workspace component create pp-app-model-component `", "--output \"src/Solutions.UI\" `", - "--EntityType \"View\" `", - "--ComponentId $$warehouseitemLookupViewGuid `", + "--param \"EntityType=View\" `", + "--param \"ComponentId=$$warehouseitemLookupViewGuid\" `", - "--AppName \"${${publisherPrefix}}_warehouseapp\" `", - "--allow-scripts yes", + "--param \"AppName=${${publisherPrefix}}_warehouseapp\"", ] }, "Add Tabs to Entity Forms": { @@ -242,23 +227,21 @@ "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", - "dotnet new pp-form-tab `", + "txc workspace component create pp-form-tab `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", - "--FormId $$warehouseitemFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehouseitem\" `", + "--param \"FormType=main\" `", + "--param \"FormId=$$warehouseitemFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehouseitem\" `", - "--RemoveDefaultTab \"True\" `", - "--allow-scripts yes", + "--param \"RemoveDefaultTab=True\"", "", - "dotnet new pp-form-tab `", + "txc workspace component create pp-form-tab `", "--output \"src/Solutions.UI\" `", - "--FormType \"dialog\" `", - "--FormId $$warehousetransactionFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormType=dialog\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\" `", - "--RemoveDefaultTab \"True\" `", - "--allow-scripts yes", + "--param \"RemoveDefaultTab=True\"", "", ] }, @@ -278,89 +261,78 @@ "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Step 1: Add column to the form.", - "dotnet new pp-form-column `", + "txc workspace component create pp-form-column `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", - "--FormId $$warehouseitemFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehouseitem\" `", + "--param \"FormType=main\" `", + "--param \"FormId=$$warehouseitemFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehouseitem\"", - "--allow-scripts yes", "", - "dotnet new pp-form-column `", + "txc workspace component create pp-form-column `", "--output \"src/Solutions.UI\" `", - "--FormId $$warehousetransactionFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", "# Step 2: Add section to the form.", - "dotnet new pp-form-section `", + "txc workspace component create pp-form-section `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", - "--FormId $$warehouseitemFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehouseitem\" `", + "--param \"FormType=main\" `", + "--param \"FormId=$$warehouseitemFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehouseitem\"", - "--allow-scripts yes", "", - "dotnet new pp-form-section `", + "txc workspace component create pp-form-section `", "--output \"src/Solutions.UI\" `", - "--FormId $$warehousetransactionFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", "# Step 3: Add rows to the form.", - "dotnet new pp-form-row `", + "txc workspace component create pp-form-row `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", - "--FormId $$warehouseitemFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehouseitem\" `", + "--param \"FormType=main\" `", + "--param \"FormId=$$warehouseitemFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehouseitem\"", - "--allow-scripts yes", "", - "dotnet new pp-form-row `", + "txc workspace component create pp-form-row `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", - "--FormId $$warehouseitemFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehouseitem\" `", + "--param \"FormType=main\" `", + "--param \"FormId=$$warehouseitemFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehouseitem\"", - "--allow-scripts yes", "", - "dotnet new pp-form-row `", + "txc workspace component create pp-form-row `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", - "--FormId $$warehouseitemFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehouseitem\" `", + "--param \"FormType=main\" `", + "--param \"FormId=$$warehouseitemFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehouseitem\"", - "--allow-scripts yes", "", - "dotnet new pp-form-row `", + "txc workspace component create pp-form-row `", "--output \"src/Solutions.UI\" `", - "--FormId $$warehousetransactionFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-row `", + "txc workspace component create pp-form-row `", "--output \"src/Solutions.UI\" `", - "--FormId $$warehousetransactionFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-row `", + "txc workspace component create pp-form-row `", "--output \"src/Solutions.UI\" `", - "--FormId $$warehousetransactionFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-row `", + "txc workspace component create pp-form-row `", "--output \"src/Solutions.UI\" `", - "--FormId $$warehousetransactionFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", ] }, @@ -380,72 +352,65 @@ "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Add cells for Warehouse Item entity form", - "dotnet new pp-form-cell `", + "txc workspace component create pp-form-cell `", "--output \"src/Solutions.UI\" `", - "--RowIndex \"1\" `", - "--FormType \"main\" `", - "--DisplayName \"Name\" `", - "--FormId $$warehouseitemFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehouseitem\" `", + "--param \"RowIndex=1\" `", + "--param \"FormType=main\" `", + "--param \"DisplayName=Name\" `", + "--param \"FormId=$$warehouseitemFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehouseitem\"", - "--allow-scripts yes", "", - "dotnet new pp-form-cell `", + "txc workspace component create pp-form-cell `", "--output \"src/Solutions.UI\" `", - "--RowIndex \"2\" `", - "--FormType \"main\" `", - "--DisplayName \"Available Quantity\" `", - "--FormId $$warehouseitemFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehouseitem\" `", + "--param \"RowIndex=2\" `", + "--param \"FormType=main\" `", + "--param \"DisplayName=Available Quantity\" `", + "--param \"FormId=$$warehouseitemFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehouseitem\"", - "--allow-scripts yes", "", - "dotnet new pp-form-cell `", + "txc workspace component create pp-form-cell `", "--output \"src/Solutions.UI\" `", - "--RowIndex \"3\" `", - "--FormType \"main\" `", - "--DisplayName \"Package Type\" `", - "--FormId $$warehouseitemFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehouseitem\" `", + "--param \"RowIndex=3\" `", + "--param \"FormType=main\" `", + "--param \"DisplayName=Package Type\" `", + "--param \"FormId=$$warehouseitemFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehouseitem\"", - "--allow-scripts yes", "", "# Add cells for Warehouse Transaction entity form", - "dotnet new pp-form-cell `", + "txc workspace component create pp-form-cell `", "--output \"src/Solutions.UI\" `", - "--RowIndex \"1\" `", - "--DisplayName \"Name\" `", - "--FormId $$warehousetransactionFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"RowIndex=1\" `", + "--param \"DisplayName=Name\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-cell `", + "txc workspace component create pp-form-cell `", "--output \"src/Solutions.UI\" `", - "--RowIndex \"2\" `", - "--DisplayName \"Quantity\" `", - "--FormId $$warehousetransactionFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"RowIndex=2\" `", + "--param \"DisplayName=Quantity\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-cell `", + "txc workspace component create pp-form-cell `", "--output \"src/Solutions.UI\" `", - "--RowIndex \"3\" `", - "--DisplayName \"Item\" `", - "--FormId $$warehousetransactionFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"RowIndex=3\" `", + "--param \"DisplayName=Item\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-cell `", + "txc workspace component create pp-form-cell `", "--output \"src/Solutions.UI\" `", - "--RowIndex \"4\" `", - "--DisplayName \"Payment Method\" `", - "--FormId $$warehousetransactionFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"RowIndex=4\" `", + "--param \"DisplayName=Payment Method\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes" ] }, "Add Cell Controls to Entity Forms": { @@ -464,79 +429,72 @@ "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Add cell controls for Warehouse Item entity form", - "dotnet new pp-form-control `", + "txc workspace component create pp-form-control `", "--output \"src/Solutions.UI\" `", - "--ControlType \"Text\" `", - "--RowIndex \"1\" `", - "--AttributeLogicalName \"${${publisherPrefix}}_name\" `", - "--FormType \"main\" `", - "--FormId $$warehouseitemFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehouseitem\" `", + "--param \"ControlType=Text\" `", + "--param \"RowIndex=1\" `", + "--param \"AttributeLogicalName=${${publisherPrefix}}_name\" `", + "--param \"FormType=main\" `", + "--param \"FormId=$$warehouseitemFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehouseitem\"", - "--allow-scripts yes", "", - "dotnet new pp-form-control `", + "txc workspace component create pp-form-control `", "--output \"src/Solutions.UI\" `", - "--ControlType \"WholeNumber\" `", - "--RowIndex \"2\" `", - "--AttributeLogicalName \"${${publisherPrefix}}_availablequantity\" `", - "--FormType \"main\" `", - "--FormId $$warehouseitemFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehouseitem\" `", + "--param \"ControlType=WholeNumber\" `", + "--param \"RowIndex=2\" `", + "--param \"AttributeLogicalName=${${publisherPrefix}}_availablequantity\" `", + "--param \"FormType=main\" `", + "--param \"FormId=$$warehouseitemFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehouseitem\"", - "--allow-scripts yes", "", - "dotnet new pp-form-control `", + "txc workspace component create pp-form-control `", "--output \"src/Solutions.UI\" `", - "--ControlType \"OptionSet\" `", - "--RowIndex \"3\" `", - "--AttributeLogicalName \"${${publisherPrefix}}_packagetype\" `", - "--FormType \"main\" `", - "--FormId $$warehouseitemFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehouseitem\" `", + "--param \"ControlType=OptionSet\" `", + "--param \"RowIndex=3\" `", + "--param \"AttributeLogicalName=${${publisherPrefix}}_packagetype\" `", + "--param \"FormType=main\" `", + "--param \"FormId=$$warehouseitemFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehouseitem\"", - "--allow-scripts yes", "", "# Add cell controls for Warehouse Transaction entity form", - "dotnet new pp-form-control `", + "txc workspace component create pp-form-control `", "--output \"src/Solutions.UI\" `", - "--ControlType \"Text\" `", - "--RowIndex \"1\" `", - "--AttributeLogicalName \"${${publisherPrefix}}_name\" `", - "--FormId $$warehousetransactionFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"ControlType=Text\" `", + "--param \"RowIndex=1\" `", + "--param \"AttributeLogicalName=${${publisherPrefix}}_name\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-control `", + "txc workspace component create pp-form-control `", "--output \"src/Solutions.UI\" `", - "--ControlType \"WholeNumber\" `", - "--RowIndex \"2\" `", - "--AttributeLogicalName \"${${publisherPrefix}}_quantity\" `", - "--FormId $$warehousetransactionFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"ControlType=WholeNumber\" `", + "--param \"RowIndex=2\" `", + "--param \"AttributeLogicalName=${${publisherPrefix}}_quantity\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-control `", + "txc workspace component create pp-form-control `", "--output \"src/Solutions.UI\" `", - "--ControlType \"Lookup\" `", - "--RowIndex \"3\" `", - "--AttributeLogicalName \"${${publisherPrefix}}_itemid\" `", - "--FormId $$warehousetransactionFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"ControlType=Lookup\" `", + "--param \"RowIndex=3\" `", + "--param \"AttributeLogicalName=${${publisherPrefix}}_itemid\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-control `", + "txc workspace component create pp-form-control `", "--output \"src/Solutions.UI\" `", - "--ControlType \"OptionSet\" `", - "--RowIndex \"4\" `", - "--AttributeLogicalName \"${${publisherPrefix}}_paymentmethod\" `", - "--FormId $$warehousetransactionFormGuid `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"ControlType=OptionSet\" `", + "--param \"RowIndex=4\" `", + "--param \"AttributeLogicalName=${${publisherPrefix}}_paymentmethod\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes" ] }, "CFI10-add-parameters-to-dialog": { @@ -553,28 +511,26 @@ "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Add lookup parameter for Item reference", - "dotnet new pp-control-parameter `", + "txc workspace component create pp-control-parameter `", "--output \"src/Solutions.UI\" `", - "--ParameterType \"Lookup\" `", - "--RowIndex \"3\" `", - "--EntityLogicalName \"${${publisherPrefix}}_warehouseitem\" `", - "--DefaultViewId $$warehouseitemLookupViewGuid `", - "--DisableMru \"true\" `", - "--FormId $$warehousetransactionFormGuid `", + "--param \"ParameterType=Lookup\" `", + "--param \"RowIndex=3\" `", + "--param \"EntityLogicalName=${${publisherPrefix}}_warehouseitem\" `", + "--param \"DefaultViewId=$$warehouseitemLookupViewGuid\" `", + "--param \"DisableMru=true\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", - "--FormType \"dialog\" `", - "--allow-scripts yes", + "--param \"FormType=dialog\"", "", "# Add optionset parameter for Payment Method", - "dotnet new pp-control-parameter `", + "txc workspace component create pp-control-parameter `", "--output \"src/Solutions.UI\" `", - "--ParameterType \"OptionSet\" `", - "--RowIndex \"4\" `", - "--OptionSetName \"${${publisherPrefix}}_paymentmethod\" `", - "--FormId $$warehousetransactionFormGuid `", + "--param \"ParameterType=OptionSet\" `", + "--param \"RowIndex=4\" `", + "--param \"OptionSetName=${${publisherPrefix}}_paymentmethod\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", - "--FormType \"dialog\" `", - "--allow-scripts yes" + "--param \"FormType=dialog\"", ] }, "CFI11-add-save-button-to-dialog": { @@ -591,35 +547,31 @@ "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Add save button to warehouse transaction dialog form", - "dotnet new pp-form-dialog-tabfooter `", + "txc workspace component create pp-form-dialog-tabfooter `", "--output \"src/Solutions.UI\" `", - "--FormId $$warehousetransactionFormGuid `", + "--param \"FormId=$$warehousetransactionFormGuid\"", - "--allow-scripts yes", "", - "dotnet new pp-form-row `", + "txc workspace component create pp-form-row `", "--output \"src/Solutions.UI\" `", - "--FormId $$warehousetransactionFormGuid `", - "--SetToTabFooter \"True\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", + "--param \"SetToTabFooter=True\"", - "--allow-scripts yes", "", - "dotnet new pp-form-cell `", + "txc workspace component create pp-form-cell `", "--output \"src/Solutions.UI\" `", - "--DisplayName \"Save\" `", - "--FormId $$warehousetransactionFormGuid `", + "--param \"DisplayName=Save\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", - "--SetToTabFooter \"True\" `", - "--allow-scripts yes", + "--param \"SetToTabFooter=True\"", "", - "dotnet new pp-form-control `", + "txc workspace component create pp-form-control `", "--output \"src/Solutions.UI\" `", - "--AttributeLogicalName \"${${publisherPrefix}}_savebutton\" `", - "--FormId $$warehousetransactionFormGuid `", + "--param \"AttributeLogicalName=${${publisherPrefix}}_savebutton\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", - "--SetToTabFooter \"True\" `", - "--ControlType \"Button\" `", - "--allow-scripts yes" + "--param \"SetToTabFooter=True\" `", + "--param \"ControlType=Button\"", ] }, "Create Read Only Form for Warehouse Transaction": { @@ -636,142 +588,126 @@ "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Create read only form for warehouse transaction entity", - "dotnet new pp-entity-form `", + "txc workspace component create pp-entity-form `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", + "--param \"FormType=main\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", - "--allow-scripts yes", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", "", - "dotnet new pp-form-tab `", + "txc workspace component create pp-form-tab `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormType=main\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\" `", - "--RemoveDefaultTab \"True\" `", - "--allow-scripts yes", + "--param \"RemoveDefaultTab=True\"", "", - "dotnet new pp-form-column `", + "txc workspace component create pp-form-column `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormType=main\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-section `", + "txc workspace component create pp-form-section `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormType=main\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-row `", + "txc workspace component create pp-form-row `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormType=main\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-row `", + "txc workspace component create pp-form-row `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormType=main\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-row `", + "txc workspace component create pp-form-row `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormType=main\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-row `", + "txc workspace component create pp-form-row `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormType=main\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-cell `", + "txc workspace component create pp-form-cell `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", - "--RowIndex \"1\" `", - "--DisplayName \"Name\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormType=main\" `", + "--param \"RowIndex=1\" `", + "--param \"DisplayName=Name\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-cell `", + "txc workspace component create pp-form-cell `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", - "--RowIndex \"2\" `", - "--DisplayName \"Quantity\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormType=main\" `", + "--param \"RowIndex=2\" `", + "--param \"DisplayName=Quantity\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-cell `", + "txc workspace component create pp-form-cell `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", - "--RowIndex \"3\" `", - "--DisplayName \"Item\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormType=main\" `", + "--param \"RowIndex=3\" `", + "--param \"DisplayName=Item\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-cell `", + "txc workspace component create pp-form-cell `", "--output \"src/Solutions.UI\" `", - "--FormType \"main\" `", - "--RowIndex \"4\" `", - "--DisplayName \"Payment Method\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"FormType=main\" `", + "--param \"RowIndex=4\" `", + "--param \"DisplayName=Payment Method\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\"", - "--allow-scripts yes", "", - "dotnet new pp-form-control `", + "txc workspace component create pp-form-control `", "--output \"src/Solutions.UI\" `", - "--ControlType \"Text\" `", - "--FormType \"main\" `", - "--RowIndex \"1\" `", - "--AttributeLogicalName \"${${publisherPrefix}}_name\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"ControlType=Text\" `", + "--param \"FormType=main\" `", + "--param \"RowIndex=1\" `", + "--param \"AttributeLogicalName=${${publisherPrefix}}_name\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\" `", - "--isReadOnly \"true\" `", - "--allow-scripts yes", + "--param \"isReadOnly=true\"", "", - "dotnet new pp-form-control `", + "txc workspace component create pp-form-control `", "--output \"src/Solutions.UI\" `", - "--ControlType \"WholeNumber\" `", - "--FormType \"main\" `", - "--RowIndex \"2\" `", - "--AttributeLogicalName \"${${publisherPrefix}}_quantity\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"ControlType=WholeNumber\" `", + "--param \"FormType=main\" `", + "--param \"RowIndex=2\" `", + "--param \"AttributeLogicalName=${${publisherPrefix}}_quantity\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\" `", - "--isReadOnly \"true\" `", - "--allow-scripts yes", + "--param \"isReadOnly=true\"", "", - "dotnet new pp-form-control `", + "txc workspace component create pp-form-control `", "--output \"src/Solutions.UI\" `", - "--ControlType \"Lookup\" `", - "--FormType \"main\" `", - "--RowIndex \"3\" `", - "--AttributeLogicalName \"${${publisherPrefix}}_itemid\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"ControlType=Lookup\" `", + "--param \"FormType=main\" `", + "--param \"RowIndex=3\" `", + "--param \"AttributeLogicalName=${${publisherPrefix}}_itemid\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\" `", - "--isReadOnly \"true\" `", - "--allow-scripts yes", + "--param \"isReadOnly=true\"", "", - "dotnet new pp-form-control `", + "txc workspace component create pp-form-control `", "--output \"src/Solutions.UI\" `", - "--ControlType \"OptionSet\" `", - "--FormType \"main\" `", - "--RowIndex \"4\" `", - "--AttributeLogicalName \"${${publisherPrefix}}_paymentmethod\" `", - "--EntitySchemaName \"${${publisherPrefix}}_warehousetransaction\" `", + "--param \"ControlType=OptionSet\" `", + "--param \"FormType=main\" `", + "--param \"RowIndex=4\" `", + "--param \"AttributeLogicalName=${${publisherPrefix}}_paymentmethod\" `", + "--param \"EntitySchemaName=${${publisherPrefix}}_warehousetransaction\" `", - "--isReadOnly \"true\" `", - "--allow-scripts yes", + "--param \"isReadOnly=true\"", "", ] }, @@ -789,47 +725,43 @@ "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Add ribbon button to warehouse transaction dialog form", - "dotnet new pp-ribbon-button `", + "txc workspace component create pp-ribbon-button `", "--output \"src/Solutions.UI\" `", - "--Location \"Home\" `", - "--EntityLogicalName \"${${publisherPrefix}}_warehousetransaction\" `", - "--ButtonLable \"Create Warehouse Transaction\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", + "--param \"Location=Home\" `", + "--param \"EntityLogicalName=${${publisherPrefix}}_warehousetransaction\" `", + "--param \"ButtonLable=Create Warehouse Transaction\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\" `", - "--LibraryLogicalName \"${${publisherPrefix}}_main.js\" `", - "--FunctionName \"MyRibbon.Dialogs.OpenDialog\" `", - "--allow-scripts yes", + "--param \"LibraryLogicalName=${${publisherPrefix}}_main.js\" `", + "--param \"FunctionName=MyRibbon.Dialogs.OpenDialog\"", "", "# Add ribbon command parameters", - "dotnet new pp-ribbon-command-parameter `", + "txc workspace component create pp-ribbon-command-parameter `", "--output \"src/Solutions.UI\" `", - "--EntityLogicalName \"${${publisherPrefix}}_warehousetransaction\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", + "--param \"EntityLogicalName=${${publisherPrefix}}_warehousetransaction\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\" `", - "--LibraryLogicalName \"${${publisherPrefix}}_main.js\" `", - "--FunctionName \"MyRibbon.Dialogs.OpenDialog\" `", - "--ParameterInput \"${${publisherPrefix}}_generatedformdialog\" `", - "--ParameterType \"String\" `", - "--allow-scripts yes", + "--param \"LibraryLogicalName=${${publisherPrefix}}_main.js\" `", + "--param \"FunctionName=MyRibbon.Dialogs.OpenDialog\" `", + "--param \"ParameterInput=${${publisherPrefix}}_generatedformdialog\" `", + "--param \"ParameterType=String\"", "", - "dotnet new pp-ribbon-command-parameter `", + "txc workspace component create pp-ribbon-command-parameter `", "--output \"src/Solutions.UI\" `", - "--EntityLogicalName \"${${publisherPrefix}}_warehousetransaction\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", + "--param \"EntityLogicalName=${${publisherPrefix}}_warehousetransaction\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\" `", - "--LibraryLogicalName \"${${publisherPrefix}}_main.js\" `", - "--FunctionName \"MyRibbon.Dialogs.OpenDialog\" `", - "--ParameterType \"CrmSelectedControl\" `", - "--allow-scripts yes", + "--param \"LibraryLogicalName=${${publisherPrefix}}_main.js\" `", + "--param \"FunctionName=MyRibbon.Dialogs.OpenDialog\" `", + "--param \"ParameterType=CrmSelectedControl\"", "", "# Hide generic New record button from ribbon", - "dotnet new pp-ribbon-button-hide `", + "txc workspace component create pp-ribbon-button-hide `", "--output \"src/Solutions.UI\" `", - "--ButtonToHide \"New Record\" `", - "--EntityLogicalName \"${${publisherPrefix}}_warehousetransaction\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", + "--param \"ButtonToHide=New Record\" `", + "--param \"EntityLogicalName=${${publisherPrefix}}_warehousetransaction\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\"", - "--allow-scripts yes", "", ] }, @@ -850,8 +782,8 @@ "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Step 1: Create the Script Library in the existing UI solution", - "dotnet new pp-script-library `", - "--LibraryName \"main\" `", + "txc workspace component create pp-script-library `", + "--param \"LibraryName=main\" `", "--output \"src/Scripts.UI\" ", "", "# Step 2: Create TypeScript files for warehouse transaction functionality", @@ -1023,23 +955,21 @@ "cd \"../..\"", "", "# Step 2: Create the web resource from compiled JS", - "dotnet new pp-webresource `", + "txc workspace component create pp-webresource `", "--output \"src/Solutions.UI\" `", - "--WebResourceItemPath \"../Scripts.UI/TS/build/main.js\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", + "--param \"WebResourceItemPath=../Scripts.UI/TS/build/main.js\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\"", - "--allow-scripts yes", "", "# Step 3: Register dialog button event handler (onclick) to save the record", - "dotnet new pp-form-event-handler `", + "txc workspace component create pp-form-event-handler `", "--output \"src/Solutions.UI\" `", - "--AttributeName \"${${publisherPrefix}}_savebutton\" `", - "--FormId $$warehousetransactionFormGuid `", - "--FunctionName \"UdppDialog.Actions.saveAndClose\" `", - "--LibraryName \"${${publisherPrefix}}_main\" `", + "--param \"AttributeName=${${publisherPrefix}}_savebutton\" `", + "--param \"FormId=$$warehousetransactionFormGuid\" `", + "--param \"FunctionName=UdppDialog.Actions.saveAndClose\" `", + "--param \"LibraryName=${${publisherPrefix}}_main\" `", - "--EventType \"onclick\" `", - "--allow-scripts yes" + "--param \"EventType=onclick\"", ] }, } diff --git a/dev-loops/CFJ-pcf.code-snippets b/dev-loops/CFJ-pcf.code-snippets index ff9fad3..c5eab91 100644 --- a/dev-loops/CFJ-pcf.code-snippets +++ b/dev-loops/CFJ-pcf.code-snippets @@ -8,7 +8,7 @@ "# ║ CFJ01: Scaffold QuantityIndicator PCF control (field) ║", "# ╚════════════════════════════════════════════════════════════════════════════════════════╝", "# This snippet scaffolds a Dataverse field PCF control named QuantityIndicator.", - "# It runs `dotnet new pp-pcf` under namespace UdppControls, seeds placeholders so", + "# It runs `txc workspace component create pp-pcf` under namespace UdppControls, seeds placeholders so", "# and opens key files for editing.", "# Finally, it links the .csproj into Solutions.UI so the control", "# is packaged with the UI solution.", @@ -17,10 +17,10 @@ "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Step 1: Init PCF control structure", "", - "dotnet new pp-pcf `", + "txc workspace component create pp-pcf `", "--output \"src/Controls.QuantityIndicator\" `", - "--Name \"QuantityIndicator\" `", - "--Namespace \"UdppControls\" ", + "--param \"Name=QuantityIndicator\" `", + "--param \"Namespace=UdppControls\" ", "", "# Step 2: Create css folder + placeholder files (for CFJ02–CFJ04 snippets)", "mkdir src/Controls.QuantityIndicator/QuantityIndicator/css", @@ -275,16 +275,15 @@ "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Step 1: Attach PCF control for Web (formFactor 0)", - "dotnet new pp-control-custom-generic `", + "txc workspace component create pp-control-custom-generic `", "--output \"src/Solutions.UI\" `", - "--CustomControlName \"${1:UdppControls.QuantityIndicator}\" `", - "--CustomControlParameters \"[{name:quantity }, {type:Whole.None},{value:udpp_availablequantity}]\" `", - "--PublisherPrefix \"$${publisherPrefix}\" `", - "--CustomControlFormFactor \"2\" `", - "--FieldLogicalName \"${3:udpp_availablequantity}\" `", - "--EntitySchemaName \"${4:udpp_warehouseitem}\" `", - "--FormType \"${5:main}\" `", - "--allow-scripts yes", + "--param \"CustomControlName=${1:UdppControls.QuantityIndicator}\" `", + "--param \"CustomControlParameters=[{name:quantity }, {type:Whole.None},{value:udpp_availablequantity}]\" `", + "--param \"PublisherPrefix=$${publisherPrefix}\" `", + "--param \"CustomControlFormFactor=2\" `", + "--param \"FieldLogicalName=${3:udpp_availablequantity}\" `", + "--param \"EntitySchemaName=${4:udpp_warehouseitem}\" `", + "--param \"FormType=${5:main}\"", ] }, } diff --git a/dev-loops/CFK-implement-codeapp-ui-layer.code-snippets b/dev-loops/CFK-implement-codeapp-ui-layer.code-snippets index 71e4ac5..d2424d0 100644 --- a/dev-loops/CFK-implement-codeapp-ui-layer.code-snippets +++ b/dev-loops/CFK-implement-codeapp-ui-layer.code-snippets @@ -19,9 +19,9 @@ "# Commands", "# ──────────────────────────────────────────────────────────────────────────────────────────", "# Step 1: Init the Code App project", - "dotnet new pp-app-code `", + "txc workspace component create pp-app-code `", "--output \"src/Warehouse.CodeApp\" `", - "--DisplayName \"Warehouse Code App\" `", + "--param \"DisplayName=Warehouse Code App\"", "", "# Step 2: Create key files and placeholder files ", "cd \"src/Warehouse.CodeApp\"", @@ -1234,18 +1234,16 @@ "# ────────────────────────────────────────────────────────────────────────────────────────", "#", "# Connect Warehouse Items table", - "dotnet new pp-app-code-data `", + "txc workspace component create pp-app-code-data `", "--output \"src/Warehouse.CodeApp\" `", - "--ModelSolutionPath \"../Solutions.DataModel\" `", - "--EntityLogicalName \"${${publisherPrefix}}_warehouseitem\" `", - "--allow-scripts yes", + "--param \"ModelSolutionPath=../Solutions.DataModel\" `", + "--param \"EntityLogicalName=${${publisherPrefix}}_warehouseitem\"", "", "# Connect Warehouse Transactions table", - "dotnet new pp-app-code-data `", + "txc workspace component create pp-app-code-data `", "--output \"src/Warehouse.CodeApp\" `", - "--ModelSolutionPath \"../Solutions.DataModel\" `", - "--EntityLogicalName \"${${publisherPrefix}}_warehousetransaction\" `", - "--allow-scripts yes", + "--param \"ModelSolutionPath=../Solutions.DataModel\" `", + "--param \"EntityLogicalName=${${publisherPrefix}}_warehousetransaction\"", "", ], "description": "Snippet for adding Dataverse table datasources via dotnet templates" @@ -1273,11 +1271,10 @@ "# Commands", "# ────────────────────────────────────────────────────────────────────────────────────────", "# Step 1: Create a solution project for the Code App using the installed template.", - "dotnet new pp-solution `", + "txc workspace component create pp-solution `", "--output \"src\\\\${2:Solutions.CodeApp}\" `", - "--PublisherName \"${3:UDPP}\" `", - "--PublisherPrefix \"${4:udpp}\" `", - "--allow-scripts yes", + "--param \"PublisherName=${3:UDPP}\" `", + "--param \"PublisherPrefix=${4:udpp}\"", "", "# Step 2: Add the solution project to the Package Deployer project as a .NET ProjectReference item.", "cd src/Solutions.CodeApp", diff --git a/dev-loops/CFN-test.code-snippets b/dev-loops/CFN-test.code-snippets index 633a0ff..1829b1a 100644 --- a/dev-loops/CFN-test.code-snippets +++ b/dev-loops/CFN-test.code-snippets @@ -20,13 +20,12 @@ "#", "# Step 1: Create project from template", "#", - "dotnet new pp-test-ui `", + "txc workspace component create pp-test-ui `", "--output \"src/Tests.UI\" `", - "--CreateAppsetingsFile true `", - "--EnableUserSecrets true `", - "--TestExecutionFramework \"mstest\" `", - "--IncludeFluentAssertions true `", - "--allow-scripts yes", + "--param \"CreateAppsetingsFile=true\" `", + "--param \"EnableUserSecrets=true\" `", + "--param \"TestExecutionFramework=mstest\" `", + "--param \"IncludeFluentAssertions=true\"", "#", "# Step 2: Add .feature file to project", "mkdir src/Tests.UI/Features", @@ -234,10 +233,10 @@ "# This command scaffolds a test project for JavaScript/TypeScript web resources.", "# It links to an existing built script to enable isolated unit tests.", "#", - "dotnet new pp-test-script`", + "txc workspace component create pp-test-script`", "--output \"src/Scripts.Tests\" `", - "--ScriptLibraryPath \"..\\Solutions.UI\\TS\\build\\udpp_main.js\" `", - "--ScriptTestProjectName \"Scripts.Tests\"", + "--param \"ScriptLibraryPath=..\\Solutions.UI\\TS\\build\\udpp_main.js\" `", + "--param \"ScriptTestProjectName=Scripts.Tests\"", "", "# Open files in VS Code for editing", "code \"src/Scripts.Tests/tests/actions.test.js\"", @@ -339,9 +338,8 @@ "#", "# Step 1: Create project from template", "#", - "dotnet new pp-plugin-test `", - "--output \"src/Plugins.Tests\" `", - "--allow-scripts yes", + "txc workspace component create pp-plugin-test `", + "--output \"src/Plugins.Tests\"", "#", "# Step 2: Add test files to project", "# Create file for ValidateWarehouseTransaction Plugin Tests",