absuite-pricing-cli

star 0

Manage pricing in the Alliance Business Suite (ABS) Pricing Service using the `absuite` CLI. Covers price lists and their price entries, discount lists and their discount entries, pricing rules, rounding policies, and item price calculations — via list/count/get/create/update/delete commands and the price-calculation reads. Requires an authenticated CLI session (see absuite-login-cli). For atomic PATCH updates or raw HTTP, use the absuite-pricing (REST) skill.

FenixAlliance By FenixAlliance schedule Updated 6/12/2026

name: absuite-pricing-cli description: > Manage pricing in the Alliance Business Suite (ABS) Pricing Service using the absuite CLI. Covers price lists and their price entries, discount lists and their discount entries, pricing rules, rounding policies, and item price calculations — via list/count/get/create/update/delete commands and the price-calculation reads. Requires an authenticated CLI session (see absuite-login-cli). For atomic PATCH updates or raw HTTP, use the absuite-pricing (REST) skill.

Alliance Business Suite — Pricing Skill (CLI)

Manage pricing through the absuite CLI's pricing service. The price-list, discount-list, pricing-rule, and rounding-policy commands are tenant-scoped and require an authenticated session; the price-calculation reads (get price, get final-price, …) are not tenant-bound. The CLI does not support PATCH (JSON Patch) — for partial atomic updates use the absuite-pricing REST skill.

Prerequisites

  1. Authenticate first — run absuite login (see absuite-login-cli). For general CLI usage and configuration, see absuite-cli.
  2. Set your tenant — the price-list / discount-list / pricing-rule / rounding-policy commands require a tenant. Either set a default:
    absuite config set --tenant-id <tenant-guid>
    
    …and reference it as $TENANT_ID, or pass --TenantId <tenant-guid> on each call. (The price-calculation reads do not take a tenant — see that section.)
  3. Discover commands:
    absuite pricing list-commands
    absuite pricing create price-list --help
    

Command Structure

absuite pricing <verb> <entity> --Param value
  • Verbs: list, count, get, create, update, delete (plus the price-calculation get reads). There is no search verb in the Pricing Service.
  • Entities: price-list, price-list-price (price entry), discount-list, discount-list-entry (discount entry), pricing-rule, rounding-policy, and the calculation reads (price, final-price, total-savings, total-taxes).
  • The canonical PowerShell function-name form also works as the command. The function names map to PowerShell-approved verbs: create → New-, list/count/get → Get-, update → Update-, delete → Invoke-Delete…. For example, absuite pricing New-PriceListAsync --TenantId <tenant-guid> --PriceListCreateDto '{...}' is equivalent to absuite pricing create price-list ....
  • JSON DTO params are passed as a single-quoted JSON string (--<Dto> '{...}') using the same PascalCase field names as the REST API.

Key Concepts

  • Price List — a named, dated set of item prices, optionally scoped to a context, currency, and unit/unit-group.
  • Price (price-list entry / ItemPrice) — the price of a single item inside a price list.
  • Discount List — a named set of quantity-banded discounts (amount- or percentage-based).
  • Discount (discount-list entry) — a single banded discount for an item.
  • Pricing Rule — a free/reduce, geo-scoped, time-windowed rule carrying a value and/or percentage.
  • Rounding Policy — a policy controlling price rounding; shares the pricing-rule shape.
  • PriceList.ContextSales | Purchase | Cost.
  • DiscountList.DiscountListTypeAmount | Percentage.
  • Percentage convention — every Percent / Percentage field is a whole number, not a fraction: 19.5 means 19.5%, 10 means 10%. Never send 0.10 for 10%.

Price Lists

List Price Lists

absuite pricing list price-lists --TenantId $TENANT_ID

Count Price Lists

absuite pricing count price-lists --TenantId $TENANT_ID

Get Price List by ID

absuite pricing get price-list --TenantId $TENANT_ID --PriceListId <price-list-guid>

Create Price List

absuite pricing create price-list --TenantId $TENANT_ID --PriceListCreateDto '{
  "Name": "Retail Price List 2026",
  "Description": "Standard retail pricing",
  "Context": "Sales",
  "StartDate": "2026-01-01T00:00:00Z",
  "EndDate": "2026-12-31T23:59:59Z",
  "CurrencyId": "<currency-guid>",
  "UnitId": "<unit-guid>",
  "UnitGroupId": "<unit-group-guid>",
  "PartnerVisible": false,
  "UnitOfMeasureDependant": false
}'

PriceListCreateDto fields: Id, Timestamp, Name (required), Description, Context (Sales|Purchase|Cost), StartDate, EndDate, CurrencyId, UnitId, UnitGroupId, PartnerVisible (bool), UnitOfMeasureDependant (bool).

Update Price List

absuite pricing update price-list --TenantId $TENANT_ID --PriceListId <price-list-guid> --PriceListUpdateDto '{
  "Name": "Retail Price List 2026 (revised)",
  "Description": "Updated retail pricing",
  "Context": "Sales",
  "CurrencyId": "<currency-guid>",
  "PartnerVisible": true
}'

PriceListUpdateDto fields: Name (required), Description, Context (Sales|Purchase|Cost), StartDate, EndDate, CurrencyId, UnitId, UnitGroupId, PartnerVisible (bool), UnitOfMeasureDependant (bool).

Delete Price List

absuite pricing delete price-list --TenantId $TENANT_ID --PriceListId <price-list-guid>

Price List Entries (Prices)

Each entry sets the price of one item within a price list.

List Entries in a Price List

# Optionally filter by item with --ItemId <item-guid>
absuite pricing list price-list-prices --TenantId $TENANT_ID --PriceListId <price-list-guid>

Get Entry by ID

absuite pricing get price-list-price --TenantId $TENANT_ID --PriceListId <price-list-guid> --PriceId <price-guid>

Create Entry

absuite pricing create price-list-price --TenantId $TENANT_ID --PriceListId <price-list-guid> --ItemPriceCreateDto '{
  "ItemId": "<item-guid>",
  "PriceListId": "<price-list-guid>",
  "UnitId": "<unit-guid>",
  "CurrencyId": "<currency-guid>",
  "UnitGroupId": "<unit-group-guid>",
  "DiscountListId": "<discount-list-guid>",
  "RoundingPolicyId": "<rounding-policy-guid>",
  "Price": 49.99,
  "Percent": 0
}'

ItemPriceCreateDto fields: Id, Timestamp, ItemId (required), UnitId, CurrencyId, PriceListId, UnitGroupId, DiscountListId, RoundingPolicyId, Price (number), Percent (number, whole-number percentage).

Update Entry

absuite pricing update price-list-price --TenantId $TENANT_ID --PriceListId <price-list-guid> --PriceId <price-guid> --ItemPriceUpdateDto '{
  "Price": 59.99,
  "ItemId": "<item-guid>",
  "CurrencyId": "<currency-guid>",
  "Percent": 0
}'

ItemPriceUpdateDto fields: Price (number), ItemId, UnitId, Percent (number, whole-number percentage), UnitGroupId, CurrencyId, DiscountListId, RoundingPolicyId.

Delete Entry

absuite pricing delete price-list-price --TenantId $TENANT_ID --PriceListId <price-list-guid> --PriceId <price-guid>

Discount Lists

List Discount Lists

absuite pricing list discount-lists --TenantId $TENANT_ID

Count Discount Lists

absuite pricing count discount-lists --TenantId $TENANT_ID

Get Discount List by ID

absuite pricing get discount-list --TenantId $TENANT_ID --DiscountListId <discount-list-guid>

Create Discount List

absuite pricing create discount-list --TenantId $TENANT_ID --DiscountListCreateDto '{
  "Name": "VIP Discounts",
  "DiscountListType": "Percentage",
  "CurrencyId": "<currency-guid>"
}'

DiscountListCreateDto fields: Id, Timestamp, Name, DiscountListType (Amount|Percentage), CurrencyId.

Update Discount List

absuite pricing update discount-list --TenantId $TENANT_ID --DiscountListId <discount-list-guid> --DiscountListUpdateDto '{
  "Name": "VIP Discounts (revised)",
  "DiscountListType": "Percentage",
  "CurrencyId": "<currency-guid>"
}'

DiscountListUpdateDto fields: Name, DiscountListType (Amount|Percentage), CurrencyId.

Delete Discount List

absuite pricing delete discount-list --TenantId $TENANT_ID --DiscountListId <discount-list-guid>

Discount List Entries (Discounts)

Each entry is one quantity-banded discount for an item within a discount list.

List Entries in a Discount List

absuite pricing list discount-list-entries --TenantId $TENANT_ID --DiscountListId <discount-list-guid>

Count Entries in a Discount List

absuite pricing count discount-list-entries --TenantId $TENANT_ID --DiscountListId <discount-list-guid>

Get Entry by ID

absuite pricing get discount-list-entry --TenantId $TENANT_ID --DiscountListId <discount-list-guid> --DiscountListEntryId <discount-guid>

Create Entry

absuite pricing create discount-list-entry --TenantId $TENANT_ID --DiscountListId <discount-list-guid> --DiscountCreateDto '{
  "Description": "Volume discount, 10+ units",
  "BeginQuantity": 10,
  "EndQuantity": 99,
  "Percent": 15.0,
  "Value": 0,
  "ItemId": "<item-guid>",
  "DiscountListId": "<discount-list-guid>"
}'

DiscountCreateDto fields: Id, Timestamp, Description, BeginQuantity (number), EndQuantity (number), Percent (number, whole-number percentage — 15.0 = 15%), Value (number), ItemId, DiscountListId.

Update Entry

absuite pricing update discount-list-entry --TenantId $TENANT_ID --DiscountListId <discount-list-guid> --DiscountListEntryId <discount-guid> --DiscountUpdateDto '{
  "Description": "Volume discount, 10+ units",
  "BeginQuantity": 10,
  "EndQuantity": 99,
  "Percent": 20.0,
  "Value": 0,
  "ItemId": "<item-guid>",
  "DiscountListId": "<discount-list-guid>"
}'

DiscountUpdateDto fields: Description, BeginQuantity (number), EndQuantity (number), Percent (number, whole-number percentage), Value (number), ItemId, DiscountListId.

Delete Entry

absuite pricing delete discount-list-entry --TenantId $TENANT_ID --DiscountListId <discount-list-guid> --DiscountListEntryId <discount-guid>

Pricing Rules

List Pricing Rules

absuite pricing list pricing-rules --TenantId $TENANT_ID

Count Pricing Rules

absuite pricing count pricing-rules --TenantId $TENANT_ID

Get Pricing Rule by ID

absuite pricing get pricing-rule --TenantId $TENANT_ID --PricingRuleId <pricing-rule-guid>

Create Pricing Rule

absuite pricing create pricing-rule --TenantId $TENANT_ID --PricingRuleCreateDto '{
  "Code": "SUMMER10",
  "Title": "Summer Sale",
  "Description": "10% off during the summer window",
  "IsFree": false,
  "Reduce": true,
  "IsEnabled": true,
  "IsDefault": false,
  "AllowInternational": true,
  "Value": 0,
  "Percentage": 10.0,
  "CurrencyId": "<currency-guid>",
  "CountryId": "<country-guid>"
}'

PricingRuleCreateDto fields: Id, Timestamp, Code, Title, Description, IsFree (bool), Reduce (bool), IsEnabled (bool), IsDefault (bool), AllowInternational (bool), Hours (int), Days (int), Weeks (int), Months (int), Years (int), Value (number), Percentage (number, whole-number percentage — 10.0 = 10%), CurrencyId, CountryId, CountryStateId, CustomState, CustomCity, CityId.

Update Pricing Rule

The rule id is passed as --PricingRuleId (it maps to a query param on the underlying PUT /PricingRules/Update route, not a path segment — but at the CLI it is just another --Param).

absuite pricing update pricing-rule --TenantId $TENANT_ID --PricingRuleId <pricing-rule-guid> --PricingRuleUpdateDto '{
  "Title": "Summer Sale (extended)",
  "Description": "Extended summer discount",
  "IsEnabled": true,
  "Reduce": true,
  "Value": 0,
  "Percentage": 15.0,
  "CurrencyId": "<currency-guid>"
}'

PricingRuleUpdateDto fields: Title, Description, IsFree (bool), Reduce (bool), IsEnabled (bool), IsDefault (bool), AllowInternational (bool), Hours (int), Days (int), Weeks (int), Months (int), Years (int), Value (number), Percentage (number, whole-number percentage), CurrencyId, CountryId, CountryStateId, CustomState, CustomCity, CityId. (Unlike create, it does not carry Code.)

Delete Pricing Rule

absuite pricing delete pricing-rule --TenantId $TENANT_ID --PricingRuleId <pricing-rule-guid>

Rounding Policies

List Rounding Policies

absuite pricing list rounding-policies --TenantId $TENANT_ID

Count Rounding Policies

absuite pricing count rounding-policies --TenantId $TENANT_ID

Get Rounding Policy by ID

absuite pricing get rounding-policy --TenantId $TENANT_ID --RoundingPolicyId <rounding-policy-guid>

Create Rounding Policy

absuite pricing create rounding-policy --TenantId $TENANT_ID --RoundingPolicyCreateDto '{
  "Code": "ROUND-CENT",
  "Title": "Round to nearest cent",
  "Description": "Standard rounding policy",
  "IsEnabled": true,
  "IsDefault": false,
  "Value": 0,
  "Percentage": 0
}'

RoundingPolicyCreateDto fields: Id, Timestamp, Code, Title, Description, IsFree (bool), Reduce (bool), IsEnabled (bool), IsDefault (bool), AllowInternational (bool), Hours (int), Days (int), Weeks (int), Months (int), Years (int), Value (number), Percentage (number, whole-number percentage), CurrencyId, CountryId, CountryStateId, CustomState, CustomCity, CityId.

Update Rounding Policy

absuite pricing update rounding-policy --TenantId $TENANT_ID --RoundingPolicyId <rounding-policy-guid> --RoundingPolicyUpdateDto '{
  "Code": "ROUND-CENT",
  "Title": "Round to nearest cent (revised)",
  "Description": "Revised rounding policy",
  "IsEnabled": true,
  "Value": 0,
  "Percentage": 0
}'

RoundingPolicyUpdateDto fields: Code, Title, Description, IsFree (bool), Reduce (bool), IsEnabled (bool), IsDefault (bool), AllowInternational (bool), Hours (int), Days (int), Weeks (int), Months (int), Years (int), Value (number), Percentage (number, whole-number percentage), CurrencyId, CountryId, CountryStateId, CustomState, CustomCity, CityId. (Unlike the pricing-rule update, this one does carry Code.)

Delete Rounding Policy

absuite pricing delete rounding-policy --TenantId $TENANT_ID --RoundingPolicyId <rounding-policy-guid>

Price Calculation (item reads — no tenant)

These reads compute prices for a single item and are not tenant-scoped — do not pass --TenantId. --CurrencyId is optional (defaults server-side, e.g. USD.USA).

Get Calculated Price for an Item

Considers a price list, discount list, quantity, and currency (all optional).

absuite pricing get price --ItemId <item-guid> --PriceListId <price-list-guid> --DiscountsListId <discount-list-guid> --Quantity 1 --CurrencyId <currency-id>

Optional params: --PriceListId, --DiscountsListId (note the spelling), --Quantity, --CurrencyId.

Get Final Price (after discounts and taxes)

absuite pricing get final-price --ItemId <item-guid> --CurrencyId <currency-id>

Get Total Savings

absuite pricing get total-savings --ItemId <item-guid> --CurrencyId <currency-id>

Get Total Taxes

absuite pricing get total-taxes --ItemId <item-guid> --CurrencyId <currency-id>

End-to-End Workflow

# 1. Create a price list (note the returned id)
absuite pricing create price-list --TenantId $TENANT_ID --PriceListCreateDto '{
  "Name": "Retail 2026", "Context": "Sales", "CurrencyId": "<currency-guid>"
}'

# 2. Create a discount list
absuite pricing create discount-list --TenantId $TENANT_ID --DiscountListCreateDto '{
  "Name": "Volume Discounts", "DiscountListType": "Percentage", "CurrencyId": "<currency-guid>"
}'

# 3. Add a banded discount (whole-number percent)
absuite pricing create discount-list-entry --TenantId $TENANT_ID --DiscountListId <discount-list-guid> --DiscountCreateDto '{
  "Description": "10+ units", "BeginQuantity": 10, "EndQuantity": 99, "Percent": 15.0, "ItemId": "<item-guid>", "DiscountListId": "<discount-list-guid>"
}'

# 4. Add a price entry to the price list, linking the discount list
absuite pricing create price-list-price --TenantId $TENANT_ID --PriceListId <price-list-guid> --ItemPriceCreateDto '{
  "ItemId": "<item-guid>", "PriceListId": "<price-list-guid>", "CurrencyId": "<currency-guid>", "DiscountListId": "<discount-list-guid>", "Price": 49.99
}'

# 5. Update the price entry (full replace — the CLI has no PATCH)
absuite pricing update price-list-price --TenantId $TENANT_ID --PriceListId <price-list-guid> --PriceId <price-guid> --ItemPriceUpdateDto '{
  "Price": 44.99, "ItemId": "<item-guid>", "CurrencyId": "<currency-guid>"
}'

# 6. Calculate the item price for quantity 12 (NO --TenantId on calculation reads)
absuite pricing get price --ItemId <item-guid> --PriceListId <price-list-guid> --DiscountsListId <discount-list-guid> --Quantity 12

CLI Commands Quick Reference

Action CLI command
List price lists absuite pricing list price-lists
Count price lists absuite pricing count price-lists
Get price list absuite pricing get price-list --PriceListId <price-list-guid>
Create price list absuite pricing create price-list --PriceListCreateDto '{...}'
Update price list absuite pricing update price-list --PriceListId <price-list-guid> --PriceListUpdateDto '{...}'
Delete price list absuite pricing delete price-list --PriceListId <price-list-guid>
List price entries absuite pricing list price-list-prices --PriceListId <price-list-guid>
Get price entry absuite pricing get price-list-price --PriceListId <price-list-guid> --PriceId <price-guid>
Create price entry absuite pricing create price-list-price --PriceListId <price-list-guid> --ItemPriceCreateDto '{...}'
Update price entry absuite pricing update price-list-price --PriceListId <price-list-guid> --PriceId <price-guid> --ItemPriceUpdateDto '{...}'
Delete price entry absuite pricing delete price-list-price --PriceListId <price-list-guid> --PriceId <price-guid>
List discount lists absuite pricing list discount-lists
Count discount lists absuite pricing count discount-lists
Get discount list absuite pricing get discount-list --DiscountListId <discount-list-guid>
Create discount list absuite pricing create discount-list --DiscountListCreateDto '{...}'
Update discount list absuite pricing update discount-list --DiscountListId <discount-list-guid> --DiscountListUpdateDto '{...}'
Delete discount list absuite pricing delete discount-list --DiscountListId <discount-list-guid>
List discount entries absuite pricing list discount-list-entries --DiscountListId <discount-list-guid>
Count discount entries absuite pricing count discount-list-entries --DiscountListId <discount-list-guid>
Get discount entry absuite pricing get discount-list-entry --DiscountListId <discount-list-guid> --DiscountListEntryId <discount-guid>
Create discount entry absuite pricing create discount-list-entry --DiscountListId <discount-list-guid> --DiscountCreateDto '{...}'
Update discount entry absuite pricing update discount-list-entry --DiscountListId <discount-list-guid> --DiscountListEntryId <discount-guid> --DiscountUpdateDto '{...}'
Delete discount entry absuite pricing delete discount-list-entry --DiscountListId <discount-list-guid> --DiscountListEntryId <discount-guid>
List pricing rules absuite pricing list pricing-rules
Count pricing rules absuite pricing count pricing-rules
Get pricing rule absuite pricing get pricing-rule --PricingRuleId <pricing-rule-guid>
Create pricing rule absuite pricing create pricing-rule --PricingRuleCreateDto '{...}'
Update pricing rule absuite pricing update pricing-rule --PricingRuleId <pricing-rule-guid> --PricingRuleUpdateDto '{...}'
Delete pricing rule absuite pricing delete pricing-rule --PricingRuleId <pricing-rule-guid>
List rounding policies absuite pricing list rounding-policies
Count rounding policies absuite pricing count rounding-policies
Get rounding policy absuite pricing get rounding-policy --RoundingPolicyId <rounding-policy-guid>
Create rounding policy absuite pricing create rounding-policy --RoundingPolicyCreateDto '{...}'
Update rounding policy absuite pricing update rounding-policy --RoundingPolicyId <rounding-policy-guid> --RoundingPolicyUpdateDto '{...}'
Delete rounding policy absuite pricing delete rounding-policy --RoundingPolicyId <rounding-policy-guid>
Get calculated price absuite pricing get price --ItemId <item-guid>
Get final price absuite pricing get final-price --ItemId <item-guid>
Get total savings absuite pricing get total-savings --ItemId <item-guid>
Get total taxes absuite pricing get total-taxes --ItemId <item-guid>

Every price-list / discount-list / pricing-rule / rounding-policy command also accepts --TenantId <tenant-guid> (omit it if you set a default tenant with absuite config set --tenant-id <tenant-guid>). The four price-calculation reads (get price, get final-price, get total-savings, get total-taxes) take no tenant.

Notes

  • No PATCH. The absuite CLI does not support JSON Patch. For atomic partial updates, use the absuite-pricing REST skill; otherwise use update (full PUT replace).
  • No search. The Pricing Service exposes no search endpoint — use list (optionally with the entity's parent id) and filter client-side.
  • Create parents before children. Create a price list before its price entries, and a discount list before its discount entries; entries reference the parent list id.
Install via CLI
npx skills add https://github.com/FenixAlliance/ABS.Agents --skill absuite-pricing-cli
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator
FenixAlliance
FenixAlliance Explore all skills →