Skip to content

Changes

Started by remote host 127.0.0.1
Started 10 hr ago
Took 9 min 46 sec on built-in

Summary

  1. Software offer type "LogShip Cloud" + maintainable catalog in iDempiere (details)
  2. LogShip offer: onboarding package marked optional, "ab" price, travel costs excluded (details)
  3. LogShip offer: editable fee-line name and subtext, package taglines (details)
  4. Returns: count only received customer returns as returned qty, link receipt lines to reused marketplace RMA lines (details)
  5. quick-rma: prefer line-number match over product match for unlinked RMA lines (details)
  6. Product variants: master (IsSummary) articles + ParentId grouping, Varianten card and list column; Hess/Livipur demo catalog tooling (details)
Commit 7247b7d3b3973109586dfc39741d445d9fa06b91 by info
Software offer type "LogShip Cloud" + maintainable catalog in iDempiere

Second offer type next to the 3PL fulfillment quote on the lead page: a SaaS
offer for the LogShip Cloud product with its own modal (packages, overage
staffel, feature matrix, add-ons, onboarding package with phases/highlights,
positions, requirements, texts) and branded PDF (package card, prices, 4–5
column package comparison, onboarding section, example calculation). Header
switch "Fulfillment | LogShip Cloud" in both modals; offers/quote preview+send
branch on payload.offerType, conditions saved as offer_conditions.softwareQuote.

Catalog persisted in iDempiere (CUST_SoftwarePlan / CUST_SoftwareCatalogItem,
enum columns as AD_Reference lists): server util with 5-min cache and fail-soft
defaults, routes for read / lists / whole-catalog save / seed / seed-lists,
staff gate option requireChat=false. Settings → Software-Katalog is a matrix
editor (packages = columns, features = rows, click cell = minimum package,
mode pill, drag & drop rows/columns, inline rename, details panel, add-ons
list, one save) — linked from Sales in both menus. Offers carry a catalog
snapshot so old PDFs stay reproducible.

Also: backdrop close only on a real backdrop click (both offer modals), feature
rows no longer squeezed by the global select width, dark-mode styling for the
catalog page, the KI console and the offer modals, template clean-up keeps the
two new tables, recipe .claude/rules/offers/software-quote.md.
The file was modifiedapp/assets/langs/shared.js (diff)
The file was addedserver/api/settings/software-catalog/seed.post.ts
The file was addedapp/pages/settings/software-catalog/index.vue
The file was modifiedapp/composables/menu/admin/sales.ts (diff)
The file was added.claude/rules/offers/software-quote.md
The file was modifiedserver/api/offers/conditions/index.post.ts (diff)
The file was modifiedserver/api/offers/quote/send.post.ts (diff)
The file was addedapp/components/offers/SoftwareQuoteModal.vue
The file was modifiedserver/api/offers/quote/preview.post.ts (diff)
The file was addedserver/api/settings/software-catalog/lists.get.ts
The file was modifiedreference/template-cleanup/01-idempiere-truncate.sql (diff)
The file was addedapp/composables/useOfferSoftwareQuote.ts
The file was addedserver/api/settings/software-catalog/seed-lists.post.ts
The file was addedserver/api/offers/software-catalog/index.get.ts
The file was modifiedreference/template-cleanup/README.md (diff)
The file was modifiedapp/components/leads/ChatConsoleModal.vue (diff)
The file was addedserver/utils/offers/softwareCatalog.ts
The file was addedserver/api/settings/software-catalog/save.post.ts
The file was modifiedapp/pages/users/leads/[id]/edit.vue (diff)
The file was addedserver/utils/offers/softwareQuotePdf.ts
The file was modifiedapp/components/offers/QuoteModal.vue (diff)
The file was addedapp/utils/softwareCatalogDefaults.ts
The file was modifiedapp/components/MainNavigationMenu.vue (diff)
The file was modifiedserver/utils/chatAccess.ts (diff)
The file was addedreference/test-scripts/software-catalog-seed-lists.mts
Commit e41d3f6dc8550eda20b6a57c1a42ccba2ca35f50 by info
LogShip offer: onboarding package marked optional, "ab" price, travel costs excluded

The onboarding package prints as optional with an "ab 3.250 €" starting price
(final fixed price after the kickoff) and a note that travel and accommodation
costs for on-site appointments are billed as incurred — in the price table, the
onboarding section, the example calculation and the Hinweise. Both aspects are
per-offer switches in the modal (default on) and persist with the conditions.
The file was modifiedapp/composables/useOfferSoftwareQuote.ts (diff)
The file was modifiedapp/components/offers/SoftwareQuoteModal.vue (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedserver/utils/offers/softwareQuotePdf.ts (diff)
Commit a08361cbd2c664f0b42f95f54c50f2e7272e01ac by info
LogShip offer: editable fee-line name and subtext, package taglines

The monthly software-fee row prints "<package> — monatliche Softwaregebühr"
with the package tagline (catalog Description) and the included volumes as
subtext; name and subtext can be overridden per offer (empty = automatic).
The package card shows the tagline too. Default catalog names are now
Start / Wachstum / Premium / Enterprise with taglines (e.g. Start: "Der
komplette Fulfillment-Kern für Ihren Einstieg."); the live rows were updated
to match. Modal gets tagline, fee-name and fee-subtext fields (de/en/es).
The file was modifiedserver/utils/offers/softwareQuotePdf.ts (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedapp/composables/useOfferSoftwareQuote.ts (diff)
The file was modifiedapp/components/offers/SoftwareQuoteModal.vue (diff)
The file was modifiedapp/utils/softwareCatalogDefaults.ts (diff)
Commit a332853cd2e7e11a943633fdca396c6ac7a54586 by info
Returns: count only received customer returns as returned qty, link receipt lines to reused marketplace RMA lines

The mobile + desktop return pages summed every completed M_RMA on the
shipment as already returned. Marketplace-imported RMAs (Amazon) are
Completed with the expected qty before the parcel arrives, so unprocessed
returns showed Remaining 0/1 and could not be entered (e.g. shipment
536925 / RMA 30614). Shared useReturnedQty composable now counts only
completed/closed customer-return receipts linked via M_RMA_ID.

quick-rma: when reusing such an RMA, receipt lines are matched to RMA
lines by shipment line id (then product, then line number restricted to
unlinked lines) instead of the bare line number, which the Amazon
importer assigns as a counter. Orphan check also accepts closed receipts.
The file was modifiedapp/pages/integrations/returns-desktop.vue (diff)
The file was addedapp/composables/useReturnedQty.ts
The file was modifiedapp/pages/mobile/return.vue (diff)
The file was modifiedserver/api/inouts/quick-rma.post.ts (diff)
Commit ba5f7e6b2a5f8f26ee1dd348cc9d7103c25b8c6d by info
quick-rma: prefer line-number match over product match for unlinked RMA lines

Keeps the previous behaviour for RMAs created without M_InOutLine_ID
(sales-order return page) when the same product appears on two lines.
The file was modifiedserver/api/inouts/quick-rma.post.ts (diff)
Commit bf69e20f22003bbc73714edec19512152cea83bd by info
Product variants: master (IsSummary) articles + ParentId grouping, Varianten card and list column; Hess/Livipur demo catalog tooling
The file was addedreference/demo-instance/create-master-articles.sh
The file was addedreference/demo-instance/hess/masters.json
The file was modifiedserver/utils/productsGrid.ts (diff)
The file was addedreference/demo-instance/hess/build-catalog.py
The file was addedreference/demo-instance/set-parent-ids.sh
The file was addedreference/demo-instance/add-purchase-prices.sh
The file was modifiedapp/pages/materials/products/index.vue (diff)
The file was addedapp/components/materials/ProductVariantsCard.vue
The file was addedserver/api/materials/products/[id]/variants.get.ts
The file was addedreference/demo-instance/hess/cattree.json
The file was modifiedapp/pages/materials/products/[id]/edit.vue (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was addedreference/demo-instance/hess/catalog.json