Skip to content

Changes

Started by timer
Started 1 mo 3 days ago
Took 1 min 4 sec on built-in

Summary

  1. Quote: shelf S + new shelf prices, optional cut-off time, return rate, sortable requirements (details)
  2. Telephony: read PBX cdr.calldate as Europe/Berlin wall time (calls showed 2 h late) (details)
  3. Payment print: expose the Jasper process export as reportFile for the PDF preview (details)
  4. Dashboard/tickets: make the leads column and ticket detail usable on mobile (details)
Commit 5be26ff14e17d3694679c3009902801f42371b5b by info
Quote: shelf S + new shelf prices, optional cut-off time, return rate, sortable requirements

- Storage: new Fachbodenregal S (30×60×40 cm, 3,50 €); M now 4,50 €, L 6,50 €
  (list prices + floors). Saved pre-S quotes still on the old list prices
  (3,50 / 5,50) are lifted to the new ones; negotiated prices stay.
  S quantity in quote + contract modals, forecast and storage summaries.
- Note under the storage table: one SKU per storage location.
- Optional cut-off time (default off / 14:00): meta-card row + Hinweise
  sentence; persisted in offer_conditions.quote.cutoff.
- Annahmen: shows the return rate; "Onboarding & Setupkosten" without "(IT-Support)".
- Customer requirements sortable (drag handle + up/down arrows).
- Quote modal: form area fills the space between header and footer via a
  flex chain instead of a fixed calc() height, so the bottom (Freitexte)
  is no longer clipped.
The file was modifiedserver/utils/offers/contractPdf.ts (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedserver/utils/offers/offerConditions.ts (diff)
The file was modifiedapp/composables/useOfferQuote.ts (diff)
The file was modifiedapp/composables/useOfferForecast.ts (diff)
The file was modifiedserver/utils/offers/quotePdf.ts (diff)
The file was modifiedapp/components/offers/ContractModal.vue (diff)
The file was modifiedapp/components/offers/QuoteModal.vue (diff)
The file was modifiedapp/composables/useOfferContract.ts (diff)
Commit 189daa6d5a7ea9528f555367c392ca1a625889c8 by info
Telephony: read PBX cdr.calldate as Europe/Berlin wall time (calls showed 2 h late)

FreePBX/MariaDB (time_zone = SYSTEM = CEST) stores calldate as local wall
time; the mysql2 pool read it with timezone 'Z', shifting every call on the
dashboard "Letzte Anrufe" card and in the call-recordings list by the Berlin
offset. DATETIME/TIMESTAMP columns are now converted via typeCast from
Berlin wall time to the real instant (DST-safe; overridable via
runtimeConfig.pbxCdr.timezone).
The file was modifiedserver/utils/telephony/cdr.ts (diff)
Commit 2723fcd08c353fc77f0689ed13ac2bce3e20fc31 by info
Payment print: expose the Jasper process export as reportFile for the PDF preview
The file was modifiedserver/api/payments/[id]/print/[type].get.ts (diff)
Commit 9d56329a3b339ba5496fcdac4a29cea8fff0139b by noreply
Dashboard/tickets: make the leads column and ticket detail usable on mobile

The dashboard's right column (latest leads, non-working-days calendar,
returns, missing products) and the ticket detail's reference column were
<aside> elements. public/css/styles.css styles every bare `aside` as the app
sidebar and, at <=991px, turns it into a fixed off-canvas drawer
(translateX(-100%)), so both columns vanished on phones. They are plain
<div>s now.

Dashboard ticket clicks on screens <=1024px open the full-page ticket route
directly instead of bouncing through the split-view list, and
MyTicketDetail gets a phone layout: stacked toolbar with full-width action
buttons, "Weitere Aktionen" as a bottom sheet, viewport-sized chat bubbles,
16px composer font (no iOS focus zoom) and wrapping composer actions.
The file was modifiedapp/components/requests/MyTicketDetail.vue (diff)
The file was modifiedapp/pages/index.vue (diff)