<freeStyleProject _class='hudson.model.FreeStyleProject'><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'><displayUrl>https://jenkins.younex.de/view/all/job/build-logship-frontend/</displayUrl></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'><stores></stores></action><description></description><displayName>build-logship-frontend</displayName><fullDisplayName>build-logship-frontend</fullDisplayName><fullName>build-logship-frontend</fullName><name>build-logship-frontend</name><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/</url><buildable>true</buildable><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>741</buildNumber><marked><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><branch><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><branch><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><branch><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#741</displayName><duration>70605</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #741</fullDisplayName><id>741</id><inProgress>false</inProgress><keepLog>false</keepLog><number>741</number><queueId>5746</queueId><result>SUCCESS</result><timestamp>1789776000766</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/741/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><affectedPath>server/utils/amazonAds/adsApi.ts</affectedPath><affectedPath>server/utils/amazonAds/parseInvoicePdf.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/import.post.ts</affectedPath><affectedPath>reference/test-scripts/amazon-fee-parse.mjs</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/types.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/upload.post.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/status.get.ts</affectedPath><affectedPath>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>9e5d44b9cb79373965ffd173001cf1268e6d3889</commitId><timestamp>1789723068000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: book seller fee invoices (Tax Document Library PDFs) next to Ads invoices

Amazon offers no API for the seller fee invoices in Europe (the SP-API Invoices
API is Brazil-only, no report type covers them), so the PDFs downloaded from
Seller Central are dropped on the existing Amazon invoices page.

- parseSellerFeeInvoicePdf.ts: text-layer parser (kind 'fee'), one line per fee
  type with its own VAT rate; runs before the Ads parser in the upload route
- vendor resolved by the issuer's VAT id, created under org * on first import
- own charge (AMAZON_FEE_CHARGE_ID, default 1000009 "Amazon Gebühren"), tax per
  line rate; credit notes are listed but not importable yet
- list route checks bookings across the Ads vendor and all fee vendors
- page: Type / Aussteller / Empfänger columns, second charge selector
</comment><date>2026-09-18 11:17:48 +0200</date><id>9e5d44b9cb79373965ffd173001cf1268e6d3889</id><msg>Amazon invoices: book seller fee invoices (Tax Document Library PDFs) next to Ads invoices</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/upload.post.ts</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/adsApi.ts</file></path><path><editType>add</editType><file>reference/test-scripts/amazon-fee-parse.mjs</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/import.post.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/status.get.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/parseInvoicePdf.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path><path><editType>add</editType><file>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/types.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/offers/conditions/index.post.ts</affectedPath><affectedPath>server/utils/offers/quotePdf.ts</affectedPath><affectedPath>app/pages/partners/partners/[id]/edit.vue</affectedPath><affectedPath>server/utils/offers/quoteConfirmation.ts</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>app/components/offers/ForecastModal.vue</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><affectedPath>server/utils/offers/forecastPdf.ts</affectedPath><affectedPath>server/api/offers/forecast/preview.post.ts</affectedPath><affectedPath>server/utils/offers/offerConditions.ts</affectedPath><affectedPath>app/pages/users/leads/[id]/edit.vue</affectedPath><affectedPath>server/api/offers/quote/send.post.ts</affectedPath><affectedPath>server/api/offers/forecast/send.post.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/composables/useOfferForecast.ts</affectedPath><commitId>08ca7d5f074a1d4399860ffe4859350839a41e06</commitId><timestamp>1789726519000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Offers: custom forecast modal (scenarios, editable positions, PDF/send) + editable quote validity

Custom forecast ("Individuelle Prognose"): standalone cost forecast for leads and
partners, opened from a new "Prognose" button on both pages and from the quote
modal's forecast card (seeded from the live quote form). Seeds from the saved
custom forecast, else the saved quote conditions, else list prices. Every
position can be switched off, relabelled and re-priced (per order with factor or
% share, or per month), own positions added, up to 4 volume scenarios side by
side (3+ print landscape), display toggles for calculation column, unit prices,
subtotals, cost per order, yearly total and disclaimer. Save as draft
(offer_conditions.forecast), download, or e-mail with record attachment and
activity. Client computes, server only renders.

Quote validity: "Gültig (Tage)" and "Gültig bis" pair in the quote modal, default
7 days from now. One server resolver (resolveQuoteValidity) drives the PDF, the
e-mail text, the activity, the saved conditions and the confirmation link expiry.
</comment><date>2026-09-18 12:15:19 +0200</date><id>08ca7d5f074a1d4399860ffe4859350839a41e06</id><msg>Offers: custom forecast modal (scenarios, editable positions, PDF/send) + editable quote validity</msg><path><editType>edit</editType><file>app/pages/users/leads/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/offers/quote/send.post.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/utils/offers/offerConditions.ts</file></path><path><editType>edit</editType><file>app/pages/partners/partners/[id]/edit.vue</file></path><path><editType>add</editType><file>app/composables/useOfferForecast.ts</file></path><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path><path><editType>edit</editType><file>server/api/offers/conditions/index.post.ts</file></path><path><editType>edit</editType><file>server/utils/offers/quoteConfirmation.ts</file></path><path><editType>add</editType><file>app/components/offers/ForecastModal.vue</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>add</editType><file>server/utils/offers/forecastPdf.ts</file></path><path><editType>edit</editType><file>server/utils/offers/quotePdf.ts</file></path><path><editType>add</editType><file>server/api/offers/forecast/preview.post.ts</file></path><path><editType>add</editType><file>server/api/offers/forecast/send.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/booking.get.ts</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>7c40ce743ed6563a2b58c00f358be5d811025e38</commitId><timestamp>1789729923000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: document details, paid vs created status, Lexoffice reset, pinned actions

- "Beleg in" column (org · vendor) + details dialog per created AP invoice
  (new booking.get.ts: header, payment/Lexoffice state, lines with charge + tax)
- status no longer says "Verbucht" for a merely created document: "Beleg erstellt
  · Zahlung offen" until iDempiere has the invoice allocated to a payment
  (IsPaid) → "Bezahlt"; separate counters
- Lexoffice reset for selected rows and from the details dialog (shared
  /api/invoices/lexoffice-reset), with a confirm that the voucher in Lexoffice
  is not deleted
- actions column pinned right, status/document columns moved left, API notice
  collapsed by default, PDF icon fixed (ti-pdf)
</comment><date>2026-09-18 13:12:03 +0200</date><id>7c40ce743ed6563a2b58c00f358be5d811025e38</id><msg>Amazon invoices: document details, paid vs created status, Lexoffice reset, pinned actions</msg><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/api/accounting/amazon-ads/booking.get.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><affectedPath>server/api/invoices/so.get.ts</affectedPath><affectedPath>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</affectedPath><affectedPath>server/api/accounting/opos/index.get.ts</affectedPath><affectedPath>app/pages/sales/invoices/index.vue</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/types.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>8aac736389fbef7e2d88535f9f39bc7b296c4eb9</commitId><timestamp>1789731297000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: recognise fee credit notes and book them as AP CreditMemo

- parser: "STEUERGUTSCHRIFT" template (Gutschriftennummer, Ausstellungsdatum /
  Zeitraum der Gutschrift), amounts with the sign before the currency
  ("-EUR 2.61"), "Ursprüngliche Rechnungsnummer" → originalInvoiceNo
- import: credit notes become a vendor credit memo — doctype DocBaseType APC
  (AP CreditMemo) with positive amounts, reference to the original invoice in
  the description; no longer refused
- OPOS + /sales/invoices: doctype 1000006 counts as customer-side only when the
  partner is flagged IsCustomer, so genuine vendor credit memos stay on the
  payables side (existing customer credit notes unchanged)
</comment><date>2026-09-18 13:34:57 +0200</date><id>8aac736389fbef7e2d88535f9f39bc7b296c4eb9</id><msg>Amazon invoices: recognise fee credit notes and book them as AP CreditMemo</msg><path><editType>edit</editType><file>server/api/accounting/opos/index.get.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path><path><editType>edit</editType><file>server/api/invoices/so.get.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</file></path><path><editType>edit</editType><file>app/pages/sales/invoices/index.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/types.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/AgGrid/AgCopyEmail.vue</affectedPath><affectedPath>app/components/AgGrid/AgDialPhone.vue</affectedPath><affectedPath>app/pages/users/leads/index.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>9779bba8ea83bac8745a1d1a8386e89c2a9a1135</commitId><timestamp>1789731297000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Leads list: dial icon aligned to the right edge, copy button on the e-mail column

- AgDialPhone: number stays left, only the dial button is pushed to the right
  (shared renderer — also applies to the users / external users lists)
- new AgCopyEmail cell renderer: copy-to-clipboard button with check-mark
  feedback, does not start the inline editor
</comment><date>2026-09-18 13:34:57 +0200</date><id>9779bba8ea83bac8745a1d1a8386e89c2a9a1135</id><msg>Leads list: dial icon aligned to the right edge, copy button on the e-mail column</msg><path><editType>edit</editType><file>app/components/AgGrid/AgDialPhone.vue</file></path><path><editType>edit</editType><file>app/pages/users/leads/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>app/components/AgGrid/AgCopyEmail.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/dashboard/RecentCallsCard.vue</affectedPath><affectedPath>app/components/telephony/BlacklistControl.vue</affectedPath><affectedPath>server/api/telephony/blacklist.post.ts</affectedPath><affectedPath>server/api/telephony/blacklist.get.ts</affectedPath><affectedPath>app/components/DialButton.vue</affectedPath><affectedPath>server/utils/telephony/blacklist.ts</affectedPath><affectedPath>server/api/telephony/blacklist.delete.ts</affectedPath><commitId>c8fb1add4aec93b10d32265652cff746fddd349b</commitId><timestamp>1789732626000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Recent calls card: blacklist control moved into the number popover, with live status and unblock

- no per-row block button any more (it cost a column of width); clicking the
  number opens the popover, which now shows the FreePBX blacklist status and
  either "Nummer sperren" (two-step confirm) or "gesperrt · Entsperren"
- new TelephonyBlacklistControl, used inside the dial popover (DialButton
  show-blacklist) and in the card's own popover for sessions that cannot dial
- server: blacklist status read via AMI DBGet (one session for the ≤ 10 numbers
  of a page), unblock via DBDel; GET + DELETE /api/telephony/blacklist. An
  unexpected AMI error is "status unknown", never a false "not blocked"
- blocked numbers are marked red with a ban icon in the list
</comment><date>2026-09-18 13:57:06 +0200</date><id>c8fb1add4aec93b10d32265652cff746fddd349b</id><msg>Recent calls card: blacklist control moved into the number popover, with live status and unblock</msg><path><editType>add</editType><file>app/components/telephony/BlacklistControl.vue</file></path><path><editType>edit</editType><file>server/api/telephony/blacklist.post.ts</file></path><path><editType>add</editType><file>server/api/telephony/blacklist.delete.ts</file></path><path><editType>edit</editType><file>app/components/dashboard/RecentCallsCard.vue</file></path><path><editType>edit</editType><file>app/components/DialButton.vue</file></path><path><editType>add</editType><file>server/api/telephony/blacklist.get.ts</file></path><path><editType>edit</editType><file>server/utils/telephony/blacklist.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>b2d24d604b14700496f0d0ebc1f53dd8a3358015</commitId><timestamp>1789732626000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: recognise the 2025 fee-invoice template, label the charge boxes as import settings

- parser: 2025 labels (Rechnungsnr, Name des Anbieters / Verkaeufers, Adresse /
  UStID des Anbieters) plus a label-independent fallback for supplier name and
  VAT id, so the next rename by Amazon does not break recognition
- page: the two charge selectors are grouped as "Import-Einstellung · Kostenart
  für neue Belege (kein Filter)" with an explanatory tooltip
</comment><date>2026-09-18 13:57:06 +0200</date><id>b2d24d604b14700496f0d0ebc1f53dd8a3358015</id><msg>Amazon invoices: recognise the 2025 fee-invoice template, label the charge boxes as import settings</msg><path><editType>edit</editType><file>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>7b3ffcb02f1a492cae8e96636728f270a769594e</commitId><timestamp>1789733700000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: quick filters, optional date range, collapsed import settings, square upload box

- quick-filter chips with counts: Typ (Ads / Gebühren / Gutschriften), Beleg
  (ohne / erstellt / bezahlt), Lexoffice (noch nicht hochgeladen / hochgeladen);
  totals follow the filter ("1 von 3")
- no date filter by default; the optional invoice-date range sits behind a quiet
  "Zeitraum" button, reloads on change, and an upload widens it so new invoices
  are never hidden. The Ads API call keeps a bounded 12-month window server-side
- the two cost-type selectors are collapsed behind "Import-Einstellungen" with a
  one-line summary and an info box (what they do, why two, not a filter, when to
  change); the panel opens by itself when a cost type is missing
- upload area is a square drop box on the right with drag feedback and keyboard
  support
</comment><date>2026-09-18 14:15:00 +0200</date><id>7b3ffcb02f1a492cae8e96636728f270a769594e</id><msg>Amazon invoices: quick filters, optional date range, collapsed import settings, square upload box</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/booking.get.ts</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>786df63b6cc3a86132f1f9a056fec00574c6943a</commitId><timestamp>1789734174000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: show voided documents properly, match them by POReference

- a voided invoice row names its Storno document ("Storniert #&lt;id&gt; · erneut
  importierbar"), opens its details (banner + link to iDempiere's reversal
  document, no Lexoffice reset), has its own row tint, a "Storno-Beleg" action,
  a "Storniert" quick-filter chip and a counter; it no longer counts as
  "Ohne Beleg (neu)"
- list route: documents are matched to the Amazon invoice by POReference (full
  number) instead of DocumentNo — the void rename '&lt;no&gt;-VOID-&lt;id&gt;' is truncated
  to the 30-char column ('DE-AEU-2025-2978769' → 'DE-AEU-2025-29787-VOID-…'),
  so a voided document was not recognised; reversal documents are flagged and
  listed after the original
</comment><date>2026-09-18 14:22:54 +0200</date><id>786df63b6cc3a86132f1f9a056fec00574c6943a</id><msg>Amazon invoices: show voided documents properly, match them by POReference</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/booking.get.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/document.get.ts</affectedPath><affectedPath>reference/ci/deploy-production.sh</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>bcd4de9387b784591e675d94d2d83cd354b63cb6</commitId><timestamp>1789737288000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: iDempiere is the source of truth for booked invoices, PDFs from the document attachment

The page's list lived only in data/amazon-ads.db, which was missing from the
deploy script's preserve list — every deploy wiped it, so booked invoices
vanished from the page (the documents themselves were never affected).

- list route: every Amazon invoice that HAS a document is rebuilt from iDempiere
  (AP documents of the Amazon vendors, found by vendor flag + name; key =
  POReference; kind from the vendor, credit note from the doctype, period from
  the description). The local store only adds uploads that are not imported yet
  plus parsed details / PDF cache
- document route: without a local copy the ORIGINAL PDF attached to the
  iDempiere document is served (&amp;cInvoiceId=); the page passes the document id
- rows rebuilt from iDempiere are labelled (Quelle "iDempiere", PDF "Anhang");
  a voided one asks for the PDF to be uploaded again before re-import
- deploy script: amazon-ads.db + data/amazon-ads/ added to the preserve lists
  (must be pasted into the Jenkins job to take effect)
</comment><date>2026-09-18 15:14:48 +0200</date><id>bcd4de9387b784591e675d94d2d83cd354b63cb6</id><msg>Amazon invoices: iDempiere is the source of truth for booked invoices, PDFs from the document attachment</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/document.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>reference/ci/deploy-production.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/upload.post.ts</affectedPath><affectedPath>server/utils/amazonAds/invoiceStore.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/document.get.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/status.get.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/import.post.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/void.post.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>bcd159169e2557be05d88bbad7d54b88e7c038cf</commitId><timestamp>1789741744000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: store uploads in the iDempiere table CUST_AmazonInvoiceInbox (PDF in Strapi)

- new invoiceStore.ts: one async storage API with two backends — the iDempiere
  table (row via REST, PDF attached in Strapi) and, only as a fallback when the
  table is not reachable, the old SQLite file
- upload / list / import / void / document routes use it; the upload route reads
  the multipart body once and retries with a refreshed token
- rows still in the SQLite file are moved over when the page loads (bounded,
  idempotent, fail-soft; imported rows keep their PDF on the c_invoice document,
  pending rows get their PDF uploaded to Strapi). A run where nothing can be
  written pauses for 10 minutes instead of retrying on every load, and rows that
  are not in the table yet stay visible and importable from the local file
- status/list responses report the active backend
</comment><date>2026-09-18 16:29:04 +0200</date><id>bcd159169e2557be05d88bbad7d54b88e7c038cf</id><msg>Amazon invoices: store uploads in the iDempiere table CUST_AmazonInvoiceInbox (PDF in Strapi)</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/upload.post.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/void.post.ts</file></path><path><editType>add</editType><file>server/utils/amazonAds/invoiceStore.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/document.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/status.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/import.post.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>f5a4b95955cba38382c3ac8c7cc1ffae1e2654e7</commitId><timestamp>1789742168000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: keep inbox rows consistent with iDempiere's documents (self-heal)

On each list load an inbox row whose document exists but is not linked (imported
on another host / before the table existed) gets status 'imported' + the link;
a row that still points to a voided or missing document is released. Bounded,
fail-soft, idempotent — the page itself reads the documents and never depends on it.
</comment><date>2026-09-18 16:36:08 +0200</date><id>f5a4b95955cba38382c3ac8c7cc1ffae1e2654e7</id><msg>Amazon invoices: keep inbox rows consistent with iDempiere's documents (self-heal)</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/accounting/BankLineMatchModal.vue</affectedPath><affectedPath>server/utils/bankReconciliationSuggestions.ts</affectedPath><affectedPath>app/components/accounting/banking/BankReconcilePanel.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>d6003a7b7ccaba8faa27e1d466fff5d221e8dd67</commitId><timestamp>1789742659000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Bank reconciliation: suggestions need at least 2 matching criteria, fuzzy names, date signal, score ranking

- a candidate is only suggested when at least 2 of 4 criteria match: document
  number, amount, partner (IBAN or name count as one) and date. On the current
  33 open statements all 47 old invoice suggestions rested on a single signal
- new date signal: statement line date −5 … +60 days around the invoice date
- fuzzy partner names: umlauts spelled out, accents stripped, legal forms and
  filler words ignored, prefix matches, brand word, brand inside run-together
  text or the remittance text ("AMAZON PAYMENTS EUROPE S.C.A." matches "Amazon EU
  S.à r.l., Niederlassung Deutschland"; "Deutsche Bank" does not match
  "Deutsche Post")
- ranking by score, best first (doc no. 50 · amount 30 · IBAN 25 / name 10–25 ·
  date closeness 0–15); up to 8 candidates per line
- match dialog: top 3 + "weitere anzeigen", date chip, n/4 criteria, best-match
  marker, top candidate preselected; list pill shows "+n" and a criteria tooltip
</comment><date>2026-09-18 16:44:19 +0200</date><id>d6003a7b7ccaba8faa27e1d466fff5d221e8dd67</id><msg>Bank reconciliation: suggestions need at least 2 matching criteria, fuzzy names, date signal, score ranking</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/utils/bankReconciliationSuggestions.ts</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankReconcilePanel.vue</file></path><path><editType>edit</editType><file>app/components/accounting/BankLineMatchModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>6e71fb22714beae7d74a7a44353b11faad234015</commitId><timestamp>1789743036000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: report the PDF as available when it sits on the iDempiere document

Rows migrated from the local file (and rows rebuilt from documents) carry no file
of their own — their original PDF is the document's attachment. The list flagged
them as "no PDF" although the link works; they now show "Anhang".
</comment><date>2026-09-18 16:50:36 +0200</date><id>6e71fb22714beae7d74a7a44353b11faad234015</id><msg>Amazon invoices: report the PDF as available when it sits on the iDempiere document</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/import.post.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>87678796cc3032e2763f178f8e4731c10c6ed9b2</commitId><timestamp>1789744764000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: confirm every import with the cost type shown, no remembered cost types

12 fee invoices were booked to "Werbekosten": the page remembered the last
selection of each cost-type box in the browser and a stale value silently
overrode the correct default.

- cost types are no longer stored in the browser (old keys are removed); every
  page load starts from the server defaults (Ads → Werbekosten, fees/credit notes
  → Amazon Gebühren); a deviation is flagged (amber summary, reset to default)
- every import goes through a confirmation dialog that groups the invoices by
  type, shows the cost type each group will be booked to (changeable there, the
  default is marked, a deviation is highlighted) and lists already booked ones as
  skipped. It opens on "Ausgewählte importieren" and right after an upload
  ("jetzt importieren" / "Später")
- the import result names the cost type that was used per invoice
</comment><date>2026-09-18 17:19:24 +0200</date><id>87678796cc3032e2763f178f8e4731c10c6ed9b2</id><msg>Amazon invoices: confirm every import with the cost type shown, no remembered cost types</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/import.post.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>267e7becbfac41d14dbd209d510b958cf7628124</commitId><timestamp>1789745316000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: match documents by the full number in the description (POReference is 20 chars)

The first credit-memo import showed that POReference cannot carry the key: the
column is 20 chars, so 'DE-CN-AEU-2026-134720' (21) is stored as
'DE-CN-AEU-2026-13472' — the new AP CreditMemo was not recognised as the credit
note's document and the self-heal released its inbox row ('voided').

The importer's description starts with the FULL Amazon number on every document
(active, voided rename, iDempiere's reversal), so that is the primary match key
now; DocumentNo / POReference remain the fallback for documents not created by
the importer. No double booking was possible — the importer's duplicate guard
checks the full DocumentNo.
</comment><date>2026-09-18 17:28:36 +0200</date><id>267e7becbfac41d14dbd209d510b958cf7628124</id><msg>Amazon invoices: match documents by the full number in the description (POReference is 20 chars)</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><commitId>cc0ff592b5ae3cc181da2058102242fd926336b5</commitId><timestamp>1789745741000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: book the exact VAT from the PDF when a line-level purchase tax exists

Amazon rounds the VAT down (74,66 × 19 % → 14,18), iDempiere half-up (14,19); with
the document-level "19% Mwst." the VAT is recomputed at completion, so 3 of 15
documents ended up one cent above the Amazon total.

iDempiere keeps a manually entered line TaxAmt on purchase documents whose tax
rate is NOT document level. The importer now prefers such a rate (purchase,
IsDocumentLevel = N) and writes the VAT from the PDF on each line (per-line VAT
for fee invoices, proportional for Ads campaigns, remainder on the largest line).
Without such a rate nothing changes — except that a difference between the booked
total and the Amazon document is now reported as a warning instead of going unnoticed.
</comment><date>2026-09-18 17:35:41 +0200</date><id>cc0ff592b5ae3cc181da2058102242fd926336b5</id><msg>Amazon invoices: book the exact VAT from the PDF when a line-level purchase tax exists</msg><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>740</buildNumber><marked><SHA1>9fce9f60003dd71f91f23cfe3b1792f33fc33d7f</SHA1><branch><SHA1>9fce9f60003dd71f91f23cfe3b1792f33fc33d7f</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>9fce9f60003dd71f91f23cfe3b1792f33fc33d7f</SHA1><branch><SHA1>9fce9f60003dd71f91f23cfe3b1792f33fc33d7f</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>9fce9f60003dd71f91f23cfe3b1792f33fc33d7f</SHA1><branch><SHA1>9fce9f60003dd71f91f23cfe3b1792f33fc33d7f</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#740</displayName><duration>72313</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #740</fullDisplayName><id>740</id><inProgress>false</inProgress><keepLog>false</keepLog><number>740</number><queueId>5729</queueId><result>SUCCESS</result><timestamp>1789689600766</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/740/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/print/order-attachments.post.ts</affectedPath><affectedPath>server/api/print/picklist.post.ts</affectedPath><affectedPath>server/utils/pdfPageMedia.ts</affectedPath><affectedPath>server/api/print/index.post.ts</affectedPath><affectedPath>reference/recipes.md</affectedPath><affectedPath>server/api/print/attachment-smart.post.ts</affectedPath><commitId>9fce9f60003dd71f91f23cfe3b1792f33fc33d7f</commitId><timestamp>1789650385000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Print routes: route A5/A4 PDFs to the paper queue with explicit -o media

The Jasper Shipment A5 (420x595 pt) fell under the 500 pt label threshold and
was sent to the Zebra label printer. New server/utils/pdfPageMedia.ts detects
the page size once (pdfinfo, gs fallback) and classifies it: label / a5 / a4 /
other. attachment-smart, order-attachments, picklist and index now send A5 and
A4 pages to the paper queue with -o media=A5|A4 (caller-supplied media wins).

Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
</comment><date>2026-09-17 15:06:25 +0200</date><id>9fce9f60003dd71f91f23cfe3b1792f33fc33d7f</id><msg>Print routes: route A5/A4 PDFs to the paper queue with explicit -o media</msg><path><editType>add</editType><file>server/utils/pdfPageMedia.ts</file></path><path><editType>edit</editType><file>server/api/print/order-attachments.post.ts</file></path><path><editType>edit</editType><file>server/api/print/attachment-smart.post.ts</file></path><path><editType>edit</editType><file>server/api/print/index.post.ts</file></path><path><editType>edit</editType><file>server/api/print/picklist.post.ts</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>739</buildNumber><marked><SHA1>1e77ee19cf43852966794881cd3f1642880f624d</SHA1><branch><SHA1>1e77ee19cf43852966794881cd3f1642880f624d</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>1e77ee19cf43852966794881cd3f1642880f624d</SHA1><branch><SHA1>1e77ee19cf43852966794881cd3f1642880f624d</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>1e77ee19cf43852966794881cd3f1642880f624d</SHA1><branch><SHA1>1e77ee19cf43852966794881cd3f1642880f624d</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#739</displayName><duration>71887</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #739</fullDisplayName><id>739</id><inProgress>false</inProgress><keepLog>false</keepLog><number>739</number><queueId>5727</queueId><result>SUCCESS</result><timestamp>1789603200766</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/739/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/print/return-label.post.ts</affectedPath><commitId>1901094c902d6779b7ae601e4ea8109aea054959</commitId><timestamp>1789543405000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Return label: tighten header band, put doc number next to title

Shrinks the top black header-band height and moves the document number
onto the same row as the RETOURE/KUNDENRÜCKSENDUNG title (top-aligned,
right of it) instead of stacking them, freeing vertical space for more
article rows before a continuation label is needed. Title is now bold
and slightly larger; company/date text in the band keeps its prior size.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_013G7aDXCyYUwGgTG81QTP8E
</comment><date>2026-09-16 09:23:25 +0200</date><id>1901094c902d6779b7ae601e4ea8109aea054959</id><msg>Return label: tighten header band, put doc number next to title</msg><path><editType>edit</editType><file>server/api/print/return-label.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/print/return-label.post.ts</affectedPath><commitId>7944e52f1d3f243da24bcdbd08afc40629fccd44</commitId><timestamp>1789545906000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Return label: shrink header band further, lift doc number 1mm

Continues the earlier band/title tightening: band height reduced
again (10/7mm -&gt; 9/6mm) and the document number nudged 1mm above the
title's baseline for a slightly better visual balance on the row.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_013G7aDXCyYUwGgTG81QTP8E
</comment><date>2026-09-16 10:05:06 +0200</date><id>7944e52f1d3f243da24bcdbd08afc40629fccd44</id><msg>Return label: shrink header band further, lift doc number 1mm</msg><path><editType>edit</editType><file>server/api/print/return-label.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/return.vue</affectedPath><commitId>0ded69844c268c0bbcfe1ac463f1f1fa7a7bb3e1</commitId><timestamp>1789545914000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile return: fix qty locked at 0 when scanning an Amazon-imported RMA

Scanning a return parcel's external RMA number (M_RMA.externalRmaNumber)
finds the matching pre-imported Amazon RMA and loads its linked shipment,
but that RMA is already DocStatus=CO with the expected qty on its line —
getReturnedQtyMap counted it as "already returned" against its own
shipment, zeroing maxQty and locking the qty stepper at 0 for every line.
Confirmed against a live prod record (RMA 1000688 / externalRmaNumber
"DydTw8rHRRMA": CO, one M_RMALine Qty=1 on the exact line whose remaining
qty then computed to 0).

Fix: exclude the matched RMA's own id from the already-returned tally —
it's the incoming authorization being fulfilled right now, not a separate
prior return. Searching by bpartner and selecting the shipment manually
was unaffected since it doesn't go through this RMA-number match at all.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_013G7aDXCyYUwGgTG81QTP8E
</comment><date>2026-09-16 10:05:14 +0200</date><id>0ded69844c268c0bbcfe1ac463f1f1fa7a7bb3e1</id><msg>Mobile return: fix qty locked at 0 when scanning an Amazon-imported RMA</msg><path><editType>edit</editType><file>app/pages/mobile/return.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/returns/index.vue</affectedPath><affectedPath>app/pages/sales/returns/[id]/view.vue</affectedPath><affectedPath>app/components/AgGrid/Shipments/AgCustomLink.vue</affectedPath><commitId>130a2dfe89a8ab37acd85c775b105a96667f9bca</commitId><timestamp>1789546745000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Customer Returns: link doc number to detail view, add label reprint button

The list grid's Doc Number column was plain text — no way to open a
return's detail view from it. Add AgCustomLink (mirrors the
MaterialReceipt/Shippers pattern) linking to /sales/returns/[id]/view.

On that detail view, add a "Etikett erneut drucken" button that re-fetches
the return's lines (GET /api/inouts/[id]/return-detail) and reprints the
return label via POST /api/print/return-label (kind: 'customer-return',
using the printer queue from useReturnLabelPrinter) — for when the label
didn't come out at intake for any reason.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_013G7aDXCyYUwGgTG81QTP8E
</comment><date>2026-09-16 10:19:05 +0200</date><id>130a2dfe89a8ab37acd85c775b105a96667f9bca</id><msg>Customer Returns: link doc number to detail view, add label reprint button</msg><path><editType>edit</editType><file>app/pages/sales/returns/index.vue</file></path><path><editType>edit</editType><file>app/pages/sales/returns/[id]/view.vue</file></path><path><editType>add</editType><file>app/components/AgGrid/Shipments/AgCustomLink.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>nuxt.config.ts</affectedPath><commitId>954812a8077115a4364b65372e92980e3ea4685b</commitId><timestamp>1789547570000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Dev: pre-bundle AG Grid + vue-pdf deps to fix grid never rendering

Every AG Grid page (any of them — confirmed on both Customer Returns and
Shippers) rendered a completely empty &lt;div class="ag-theme-balham"&gt;: no
rows, no "No Rows" overlay, no console error. Root cause was the same
class of issue the surrounding optimizeDeps.include comment already
documents for other packages, just not yet applied to these: ag-grid-community,
ag-grid-enterprise, ag-grid-vue3, and @tato30/vue-pdf were never in the
list, so Vite only discovered them when the first page using &lt;AgGrid&gt;/
&lt;PrintViewer&gt; actually rendered — triggering a disruptive re-optimize +
forced reload mid-render. That reload left AgGridVue's internal grid
creation desynced from AgGrid.vue's provideGlobalGridOptions({theme:
"legacy"}) call, surfacing as AG Grid's own "error #239" (Theming API vs
CSS File Theme conflict) — and, on the very first hit of a session, as a
totally blank grid with no error at all.

Also adds @capacitor/preferences (pulled in by plugins/00.capacitor-api.client.ts
for the dual web/Capacitor build, which stays in the dev module graph even
though it early-returns on web) — same failure mode, same fix.

Confirmed fixed: clean nuxt dev restart + rm -rf .nuxt node_modules/.cache,
Customer Returns list and detail view both rendered fully on first load,
no "Vite discovered new dependencies at runtime" warning, no AG Grid error.
Dev-only change (vite.optimizeDeps has no effect on the production build).

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_013G7aDXCyYUwGgTG81QTP8E
</comment><date>2026-09-16 10:32:50 +0200</date><id>954812a8077115a4364b65372e92980e3ea4685b</id><msg>Dev: pre-bundle AG Grid + vue-pdf deps to fix grid never rendering</msg><path><editType>edit</editType><file>nuxt.config.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/requests/requests/update.put.ts</affectedPath><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/pages/mobile/tasks.vue</affectedPath><affectedPath>server/api/requests/requests/[id]/push-task.post.ts</affectedPath><affectedPath>server/api/mobile/pushed-tasks.get.ts</affectedPath><affectedPath>app/pages/mobile/index.vue</affectedPath><affectedPath>app/composables/states.ts</affectedPath><affectedPath>app/layouts/mobile.vue</affectedPath><affectedPath>server/utils/fcmNotifier.ts</affectedPath><affectedPath>app/composables/usePushedTasks.ts</affectedPath><affectedPath>app/plugins/20.native-push.client.ts</affectedPath><commitId>39a918fde9d11a993c8aa2aad04a6d94d3171136</commitId><timestamp>1789553513000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Requests: push tickets to mobile workers as priority tasks

Lets dispatchers push a ticket to a specific mobile worker's device (native
FCM + web push) so it pops up and stays pinned as a priority-task banner on
the mobile dashboard until the worker starts the timer on it. Opening it
reuses the existing ticket instructions/chat/timer flow in tasks.vue; a new
global running-timer banner keeps the timer visible while navigating other
mobile pages.

Needs two new custom columns on R_Request in iDempiere (IsPushedTask Yes-No,
PushedTaskAt Date+Time) — stays inert until those exist.
</comment><date>2026-09-16 12:11:53 +0200</date><id>39a918fde9d11a993c8aa2aad04a6d94d3171136</id><msg>Requests: push tickets to mobile workers as priority tasks</msg><path><editType>edit</editType><file>app/plugins/20.native-push.client.ts</file></path><path><editType>add</editType><file>server/api/mobile/pushed-tasks.get.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/tasks.vue</file></path><path><editType>edit</editType><file>server/utils/fcmNotifier.ts</file></path><path><editType>add</editType><file>app/composables/usePushedTasks.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/index.vue</file></path><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>app/composables/states.ts</file></path><path><editType>edit</editType><file>app/layouts/mobile.vue</file></path><path><editType>edit</editType><file>server/api/requests/requests/update.put.ts</file></path><path><editType>add</editType><file>server/api/requests/requests/[id]/push-task.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/returns/[id]/view.vue</affectedPath><commitId>f2540ba61045ce40c991525ed3931844b57bc0ef</commitId><timestamp>1789554804000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Fix return-label reprint printing wrong DocumentNo

The "Etikett erneut drucken" button on the return detail page always
printed the customer-return's own DocumentNo, but /mobile/reconditioning
only scans the linked RMA's DocumentNo (571/572 live returns have one).
Now prints the RMA's number when present, matching what intake already
prints, and falls back to the return's own number only when there's no
linked RMA.
</comment><date>2026-09-16 12:33:24 +0200</date><id>f2540ba61045ce40c991525ed3931844b57bc0ef</id><msg>Fix return-label reprint printing wrong DocumentNo</msg><path><editType>edit</editType><file>app/pages/sales/returns/[id]/view.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/plugins/warm-cid-lookup.ts</affectedPath><affectedPath>server/api/telephony/cid-lookup/[number].get.ts</affectedPath><affectedPath>reference/recipes.md</affectedPath><affectedPath>server/utils/telephony/cidDirectory.ts</affectedPath><commitId>3534d36393ce6175fe9b2f1c21ed9741129048c8</commitId><timestamp>1789554829000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Reverse caller-ID lookup: replace Elasticsearch with a direct iDempiere-backed in-memory directory — server/utils/telephony/cidDirectory.ts fetches the small active ad_user set with phone/phone2 (SERVICE token, same pattern as phoneActivity.ts/extensions.ts) into a 60s TTL stale-while-revalidate cache so cid-lookup/[number].get.ts has zero network calls on the hot path (was querying a Postgres-trigger-fed ES index that could lag/stall behind iDempiere edits); server/plugins/warm-cid-lookup.ts pre-warms the cache at server boot so the first call after a deploy/restart is instant too; recipe note in reference/recipes.md
</comment><date>2026-09-16 12:33:49 +0200</date><id>3534d36393ce6175fe9b2f1c21ed9741129048c8</id><msg>Reverse caller-ID lookup: replace Elasticsearch with a direct iDempiere-backed in-memory directory — server/utils/telephony/cidDirectory.ts fetches the small active ad_user set with phone/phone2 (SERVICE token, same pattern as phoneActivity.ts/extensions.ts) into a 60s TTL stale-while-revalidate cache so cid-lookup/[number].get.ts has zero network calls on the hot path (was querying a Postgres-trigger-fed ES index that could lag/stall behind iDempiere edits); server/plugins/warm-cid-lookup.ts pre-warms the cache at server boot so the first call after a deploy/restart is instant too; recipe note in reference/recipes.md</msg><path><editType>add</editType><file>server/plugins/warm-cid-lookup.ts</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path><path><editType>add</editType><file>server/utils/telephony/cidDirectory.ts</file></path><path><editType>edit</editType><file>server/api/telephony/cid-lookup/[number].get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/attachments/[table]/[id]/index.get.ts</affectedPath><commitId>4fc7a95b074a29eacb5e9ff0da45ea06db028255</commitId><timestamp>1789558991000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Fix attachment-lookup N+1: skip the live ad_table query for known table names

server/api/attachments/[table]/[id]/index.get.ts hit iDempiere's ad_table
model on every call to resolve a table name to its numeric id, even though
the very same route already had a complete hardcoded fallback map for the
common tables. Every AgGrid row with an attachment cell (AgCustomAttachment.vue)
fires this once, so a large order/shipment grid render turned into hundreds
of redundant REST calls, each going through the synchronized
DefaultQueryConverter singleton (see the "iDempiere REST load rules" recipe /
2026-09-10 incident) — a live capture on prod showed 287 of these in one
grid render. Now the static map is checked first and iDempiere is only
queried for a genuinely unmapped table name. Behavior-preserving: also drops
a dead duplicate M_Product branch that was unreachable (208 always won).
</comment><date>2026-09-16 13:43:11 +0200</date><id>4fc7a95b074a29eacb5e9ff0da45ea06db028255</id><msg>Fix attachment-lookup N+1: skip the live ad_table query for known table names</msg><path><editType>edit</editType><file>server/api/attachments/[table]/[id]/index.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/requests/requests/[id]/request-history/index.get.ts</affectedPath><affectedPath>server/api/requests/requests/latest-updates.get.ts</affectedPath><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>server/api/requests/requests/[id]/request-update/index.get.ts</affectedPath><affectedPath>server/utils/ticketViewer.ts</affectedPath><affectedPath>server/api/requests/requests/[id]/request-update/index.post.ts</affectedPath><affectedPath>server/api/requests/requests/[id]/author-orgs.get.ts</affectedPath><commitId>26a325c9da0087ee13a1ed7a95bba6080578f643</commitId><timestamp>1789559285000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Tickets: show staff replies to limited merchant roles (service-token reads)

Staff replies on merchant tickets were stamped with the staff member's
active org (LogYou) instead of the ticket's org, so iDempiere's org
row-level security hid them from the merchant's limited role — customers
saw only their own messages (85 such rows across 5 merchants on prod,
e.g. Wonderhome ticket 1000439 with both LogYou replies missing).
AD_Org_ID is not updateable on R_Request/R_RequestUpdate/R_RequestAction,
so the rows cannot be re-stamped.

- server/utils/ticketViewer.ts: role FrontendMenu resolved server-side
  (service token, cached), caller-token ticket access check, server-side
  twin of the client's internal-entry filter ('I' / [Zeitabrechnung]).
- request-update / request-history GET: a proven-limited viewer reads the
  ticket's rows with the service token AFTER the caller-token access check;
  internal entries are dropped server-side. Both lists now ordered + capped.
- request-update POST: AD_Org_ID derived from the ticket server-side
  (body.organizationId ignored) so every caller stamps the right org;
  limited roles can never post an 'I' entry. Write stays on the caller's
  token so CreatedBy is correct.
- author-orgs: collect update/action authors with the service token for
  limited viewers so the newly visible staff rows get their LogYou label.
- latest-updates: limited viewers get updates of their visible tickets via
  chunked `R_Request_ID in (...)` with the service token, filtered.
</comment><date>2026-09-16 13:48:05 +0200</date><id>26a325c9da0087ee13a1ed7a95bba6080578f643</id><msg>Tickets: show staff replies to limited merchant roles (service-token reads)</msg><path><editType>edit</editType><file>server/api/requests/requests/[id]/request-history/index.get.ts</file></path><path><editType>edit</editType><file>server/api/requests/requests/[id]/request-update/index.post.ts</file></path><path><editType>edit</editType><file>server/api/requests/requests/[id]/author-orgs.get.ts</file></path><path><editType>edit</editType><file>server/api/requests/requests/latest-updates.get.ts</file></path><path><editType>add</editType><file>server/utils/ticketViewer.ts</file></path><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>server/api/requests/requests/[id]/request-update/index.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><commitId>4e94b7513ae63f4e85e54ccfdc83f8ceaaa7169b</commitId><timestamp>1789559459000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Ticket detail: wrap toolbar instead of overlapping in the split view

The ticket header bar was a single non-wrapping row with hidden horizontal
scroll; in the my-tickets split view (and small windows) the action group
painted over the metadata chips (ticket no., date, type, category,
assignee). The bar now wraps into a metadata row and an action row when
space runs out, chips wrap inside each group, and in narrow bars the
secondary actions (push to mobile, accounting flag) collapse to icon
buttons with tooltips via a container query.
</comment><date>2026-09-16 13:50:59 +0200</date><id>4e94b7513ae63f4e85e54ccfdc83f8ceaaa7169b</id><msg>Ticket detail: wrap toolbar instead of overlapping in the split view</msg><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/composables/useOpenShipments.ts</affectedPath><affectedPath>server/api/inouts/open-to-commission-list.get.ts</affectedPath><commitId>40b7c61af8d06bd8bc95b02f3393b1f37fd504c5</commitId><timestamp>1789559494000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Fix unbounded open-shipments query: replace child-table $expand with direct-Postgres list + batched line fetch

useOpenShipments.ts (backing components/integrations/OpenShipments.vue, polled every
2 minutes per open tab on the commissioning page) queried m_inout with a 5-way $expand
including the CHILD table m_inoutline($expand=m_product_id) and no $top — same shape as
the 2026-09-10 incident's m_product $expand=M_Storage, hitting the synchronized
DefaultQueryConverter singleton once per shipment per line. A live capture returned 2MB
in one response; only 67 rows today but it only gets heavier as open-shipment volume grows.

Fix, following the same pattern already used for products+storage (productStorageHelper.ts):
- Shipment list now comes from the existing direct-Postgres endpoint
  server/api/inouts/open-to-commission-list.get.ts (already used by the dashboard "Offene
  Aufträge" card and the commissioning modal), extended with the fields the widget needs
  (location/shipper name, PO reference, line-qty sum) so it's purely additive for its
  existing consumers.
- Line items (needed for the barcode-scan-to-shipment search in commission.vue) are fetched
  in one bounded REST call: m_inoutline top-level list with $filter=M_InOut_ID in (...)
  and $expand=M_Product_ID as a to-one FK expand, not a child expand under m_inout, so it
  takes the cheap code path per the "iDempiere REST load rules" recipe. Verified directly
  against prod (SQL query + REST filter) before committing.
</comment><date>2026-09-16 13:51:34 +0200</date><id>40b7c61af8d06bd8bc95b02f3393b1f37fd504c5</id><msg>Fix unbounded open-shipments query: replace child-table $expand with direct-Postgres list + batched line fetch</msg><path><editType>edit</editType><file>app/composables/useOpenShipments.ts</file></path><path><editType>edit</editType><file>server/api/inouts/open-to-commission-list.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><commitId>9ab77d566a46409c11846c82a81629cb020bfd70</commitId><timestamp>1789559554000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile app: bump version to 1.0.49 (versionCode 50)
</comment><date>2026-09-16 13:52:34 +0200</date><id>9ab77d566a46409c11846c82a81629cb020bfd70</id><msg>Mobile app: bump version to 1.0.49 (versionCode 50)</msg><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/ChangeLogButton.vue</affectedPath><affectedPath>app/pages/materials/products/[id]/edit.vue</affectedPath><affectedPath>app/pages/partners/partners/[id]/edit.vue</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>server/utils/changeLogHelper.ts</affectedPath><affectedPath>app/components/ChangeLogModal.vue</affectedPath><affectedPath>app/pages/sales/shipments/[id]/edit.vue</affectedPath><affectedPath>server/api/changelog/detail/[table]/[recid].get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>6ef4fadbda7e9d755b39ea38b02904770c07e887</commitId><timestamp>1789560600000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Change log modal (admin only) for orders, shipments, products and partners

Adds an iDempiere AD_ChangeLog viewer like the ZK 'Change Log' / 'Time Line' tab:
- server/utils/changeLogHelper.ts + GET /api/changelog/detail/{table}/{id}:
  paged changelog read with column metadata, list values resolved via
  AD_Ref_List, foreign keys resolved to record labels (bounded, cached),
  child lines included (order/shipment lines, partner locations + contacts),
  record creation event; role must be IsClientAdministrator (checked server-side)
- components/ChangeLogModal.vue: timeline (grouped per transaction, day
  separators) + table view, search, line/technical-field toggles, DE/EN/ES
- components/ChangeLogButton.vue: admin-gated toolbar button, wired into the
  order, shipment, product and business-partner edit pages
</comment><date>2026-09-16 14:10:00 +0200</date><id>6ef4fadbda7e9d755b39ea38b02904770c07e887</id><msg>Change log modal (admin only) for orders, shipments, products and partners</msg><path><editType>add</editType><file>app/components/ChangeLogButton.vue</file></path><path><editType>edit</editType><file>app/pages/partners/partners/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>add</editType><file>server/utils/changeLogHelper.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/materials/products/[id]/edit.vue</file></path><path><editType>add</editType><file>app/components/ChangeLogModal.vue</file></path><path><editType>edit</editType><file>app/pages/sales/shipments/[id]/edit.vue</file></path><path><editType>add</editType><file>server/api/changelog/detail/[table]/[recid].get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/AgGrid/Shipments/AgShipmentEditLink.vue</affectedPath><affectedPath>app/pages/sales/shipments/index.vue</affectedPath><commitId>4068470597d78282ca601129755254f00bd0a7c5</commitId><timestamp>1789560600000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Shipments list: link document numbers directly to the shipment edit page
</comment><date>2026-09-16 14:10:00 +0200</date><id>4068470597d78282ca601129755254f00bd0a7c5</id><msg>Shipments list: link document numbers directly to the shipment edit page</msg><path><editType>add</editType><file>app/components/AgGrid/Shipments/AgShipmentEditLink.vue</file></path><path><editType>edit</editType><file>app/pages/sales/shipments/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>app/pages/sales/orders/index.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>679f81dc67cf8b18be03cdd88c38f3e00bf257c1</commitId><timestamp>1789560984000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Order edit: restructure the action toolbar, rename reactivation to 'Auftrag wiederöffnen'

The order edit bar had grown to ~20 coloured icon-only buttons. It is now a
neutral, text-labelled toolbar: Save, Files (with badge), Complete / Reopen
order, Create shipment, Create invoice, Void, and a grouped 'More actions'
dropdown (print / labels / duplicate / video / reminders / compare / change
log). All visibility rules live in one data-driven action list; on phones
(&lt;= 768px) only Save, Files and the status action stay outside the dropdown.
Right side: Abort, share, Back, Ticket as labelled buttons.

- 'Reaktivieren' is now 'Auftrag wiederöffnen' (Reopen order); the orders list
  batch action 'Auf Entwurf' uses the same wording
- new translation keys (en/de/es): reopen_order, more_actions,
  create_shipment_action, create_invoice_action, shipment_created,
  invoice_created, void_not_possible_shipped, force_void_short,
  manual_commission_short, reprint_label, order_reminders, show_video
</comment><date>2026-09-16 14:16:24 +0200</date><id>679f81dc67cf8b18be03cdd88c38f3e00bf257c1</id><msg>Order edit: restructure the action toolbar, rename reactivation to 'Auftrag wiederöffnen'</msg><path><editType>edit</editType><file>app/pages/sales/orders/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/OrderForm.vue</affectedPath><affectedPath>app/components/ChangeLogModal.vue</affectedPath><commitId>f158c2abbbf73217d0b95096455df4882b77d43d</commitId><timestamp>1789561286000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Order tab: fix column overlap (30% / auto / 22%); change log table: truncate line labels, hide technical fields by default

- OrderForm: explicit flex bases + min-width:0 on the three order-tab columns
  (numbers/refs wider, shipping address flexible, 'General' column narrower) so
  the row can no longer overflow under the side cards; long e-mails wrap
- ChangeLogModal: fixed table layout with column widths, line badges truncated
  with full text as tooltip, 'Hide technical fields' on by default
</comment><date>2026-09-16 14:21:26 +0200</date><id>f158c2abbbf73217d0b95096455df4882b77d43d</id><msg>Order tab: fix column overlap (30% / auto / 22%); change log table: truncate line labels, hide technical fields by default</msg><path><editType>edit</editType><file>app/components/ChangeLogModal.vue</file></path><path><editType>edit</editType><file>app/components/sales/OrderForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/OrderForm.vue</affectedPath><commitId>7eb042353e2b5a3fbc37ccee28f6b5b2ace61a6c</commitId><timestamp>1789561790000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Order tab: make the 'General' column really 22% wide, stack its paired fields

The earlier width rule lost to Bulma's .column.is-one-third (higher specificity),
so the column was still a third of the row. The selector now outranks it and
the Date Ordered/Promised and Organization/Tenant pairs stack vertically so
nothing truncates in the narrow column.
</comment><date>2026-09-16 14:29:50 +0200</date><id>7eb042353e2b5a3fbc37ccee28f6b5b2ace61a6c</id><msg>Order tab: make the 'General' column really 22% wide, stack its paired fields</msg><path><editType>edit</editType><file>app/components/sales/OrderForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/OrderForm.vue</affectedPath><commitId>6e5caf40f53fed39d1a293b80f62304060008fb8</commitId><timestamp>1789561862000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Order tab: move the partner link into the shipping-address header as a right-aligned 'Kunde' link

The partner row above the recipient name is replaced by a compact 'Kunde' link
(with open-link icon) on the right of the 'Lieferanschrift' header; the partner
name is shown as tooltip only. Limited roles get a static label.
</comment><date>2026-09-16 14:31:02 +0200</date><id>6e5caf40f53fed39d1a293b80f62304060008fb8</id><msg>Order tab: move the partner link into the shipping-address header as a right-aligned 'Kunde' link</msg><path><editType>edit</editType><file>app/components/sales/OrderForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/OrderForm.vue</affectedPath><commitId>cce23cadaf525474a569212d8c883efbd265512a</commitId><timestamp>1789561969000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Order tab 'General' column: Organization first, compact German-formatted date row, Tenant as tooltip

- Organization is the first field; Tenant is no longer a field, it shows as a
  tooltip on hover over Organization
- Date Ordered / Date Promised sit side by side in one compact row (smaller
  label + input, short labels 'Ordered' / 'Promised' with full title); on
  completed/voided orders the read-only values display as dd.mm.yyyy
</comment><date>2026-09-16 14:32:49 +0200</date><id>cce23cadaf525474a569212d8c883efbd265512a</id><msg>Order tab 'General' column: Organization first, compact German-formatted date row, Tenant as tooltip</msg><path><editType>edit</editType><file>app/components/sales/OrderForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><commitId>67b55a0e93a3b98c8d50c634e6c42f29d52c436d</commitId><timestamp>1789562001000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Order edit toolbar: ticket button in the app-wide yellow (same as .button.is-ticket)
</comment><date>2026-09-16 14:33:21 +0200</date><id>67b55a0e93a3b98c8d50c634e6c42f29d52c436d</id><msg>Order edit toolbar: ticket button in the app-wide yellow (same as .button.is-ticket)</msg><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/OrderQuickAddModal.vue</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><commitId>b23e90b7728a7cee87ddf690a385dde8403b453d</commitId><timestamp>1789562270000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Order edit: no stale 'Abort' button when opening an order

- loadOrderData() resets the global useActiveSave flag before loading — a
  fresh record has nothing unsaved; the flag is shared by every edit page and
  modal, so a leftover true (e.g. from a dismissed quick-add) showed 'Abort'
  and blocked navigation on the next order opened from the grid
- the Abort button additionally requires the form to be really dirty
  (activeSave &amp;&amp; !noEdit)
- OrderQuickAddModal clears the flag when it is closed without saving
</comment><date>2026-09-16 14:37:50 +0200</date><id>b23e90b7728a7cee87ddf690a385dde8403b453d</id><msg>Order edit: no stale 'Abort' button when opening an order</msg><path><editType>edit</editType><file>app/components/OrderQuickAddModal.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/requests/requests/[id]/push-task-status.post.ts</affectedPath><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/pages/mobile/tasks.vue</affectedPath><affectedPath>server/api/requests/requests/[id]/push-task.post.ts</affectedPath><affectedPath>server/api/mobile/pushed-tasks.get.ts</affectedPath><affectedPath>app/pages/mobile/index.vue</affectedPath><affectedPath>app/composables/usePushedTasks.ts</affectedPath><commitId>f81ead42e45699211b185cc66502b6580111e91b</commitId><timestamp>1789565593000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Pushed tasks: instruction note, worker actions, take-back and deep-link fix

Rounds out the push-to-mobile-worker flow into one coherent workflow:

- Desktop push modal: the note becomes an instruction for the worker (up to
  1000 chars) and is stored as an INTERNAL chat note "[Anweisung] …" — never
  visible to the merchant and no merchant notification. The modal shows which
  order/product is linked (rendered on the device with the instruction).
- Desktop ticket: a prominent banner while the ticket lives on a device
  ("An Mobilgerät gepusht · wartet" / "In Arbeit auf dem Mobilgerät · X"),
  a state pill in the toolbar and a "Zurückholen" button (optional take-back).
- New route [id]/push-task-status.post.ts: start → TaskStatus 20 %, return →
  IsPushedTask cleared (+ internal note, staff toast when from mobile),
  complete → IsComplete + TaskStatus 100 % + IsPushedTask cleared. push-task
  sets TaskStatus 0 %; the pending list now includes started tasks
  (TaskStatus ≠ 0 → "In Arbeit") plus linked order/product.
- Mobile ticket modal for a pushed task: instruction card, order/product
  cards, "Timer starten" (keeps the task in the list as "In Arbeit"),
  "Arbeit abschließen" (stops the timer, books the time, completes and hands
  the ticket back to the desktop) and "Zurück an Desktop" (optional reason).
  Full history collapsed behind "Verlauf anzeigen".
- Dashboard banner separates new vs. "in Arbeit" pushed tasks.
- Fix: opening a pushed task from the dashboard again after leaving the
  keep-alive'd tasks page re-showed the state it was left in (wizard step,
  open list). Deep links are now handled on every activation/query change
  and reset the page first (a running timer is never discarded).
</comment><date>2026-09-16 15:33:13 +0200</date><id>f81ead42e45699211b185cc66502b6580111e91b</id><msg>Pushed tasks: instruction note, worker actions, take-back and deep-link fix</msg><path><editType>add</editType><file>server/api/requests/requests/[id]/push-task-status.post.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/tasks.vue</file></path><path><editType>edit</editType><file>server/api/requests/requests/[id]/push-task.post.ts</file></path><path><editType>edit</editType><file>app/composables/usePushedTasks.ts</file></path><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/index.vue</file></path><path><editType>edit</editType><file>server/api/mobile/pushed-tasks.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><commitId>a05516e158e1274739e9bf16292acf5114274e7f</commitId><timestamp>1789565721000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Ticket detail toolbar: chips + two workflow buttons + 'Weitere Aktionen' dropdown

Same pattern as the order edit toolbar: state chips (open/completed, owner,
pushed, accounted) on the left of the action group, the two workflow actions
(hand over / take back, close / reopen) as text buttons, and everything else
(push to mobile, take back from mobile, accounting flag, PDF report, open
full page) grouped in a data-driven "Weitere Aktionen" dropdown — so the bar
fits one row in the split view instead of a wall of buttons.
</comment><date>2026-09-16 15:35:21 +0200</date><id>a05516e158e1274739e9bf16292acf5114274e7f</id><msg>Ticket detail toolbar: chips + two workflow buttons + 'Weitere Aktionen' dropdown</msg><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/offers/LeadQuestionnaireModal.vue</affectedPath><affectedPath>app/pages/users/leads/index.vue</affectedPath><affectedPath>server/utils/offers/questionnairePdf.ts</affectedPath><affectedPath>app/utils/leadQuestionnaire.ts</affectedPath><affectedPath>app/pages/users/leads/[id]/edit.vue</affectedPath><affectedPath>server/api/offers/questionnaire/pdf.post.ts</affectedPath><affectedPath>server/utils/offers/offerConditions.ts</affectedPath><affectedPath>server/api/offers/questionnaire/save.post.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>6556f77238142892a52f9c9b0e26663c42a909e6</commitId><timestamp>1789568496000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Lead questionnaire: initial-call form (DE/EN) with blank print, draft and PDF attachment

New "Fragebogen" on the lead page (hero CTA + toolbar icon): a catalog-driven
questionnaire staff fill in while talking to a prospect — current situation,
order volume, articles (barcode, MHD, serials), additional services
(customisation, kitting, Amazon Prime/FBA/Pre-FBA), inbound &amp; storage,
organisational. German by default, EN toggle switches labels and PDF.

- Question catalog in app/utils/leadQuestionnaire.ts, shared by the modal and
  the server renderer; adding a question is one entry.
- server/utils/offers/questionnairePdf.ts (pdf-lib): blank mode = fillable
  AcroForm (text fields + check boxes) for hand-written answers, filled mode =
  drawn values; the free-notes box grows to the rest of its page.
- Routes: offers/questionnaire/pdf (render) and offers/questionnaire/save
  (answers on offer_conditions.questionnaire; with attach: filled PDF attached
  to Lead_User via Strapi + C_ContactActivity with the answer summary).
- Draft save / reopen prefilled, progress chip, conversation meta (date,
  channel, interviewer).
- Leads list: "Leerer Fragebogen" (+ EN) prints the blank form without any
  lead prefill.
- offerConditions section type widened to string (new 'questionnaire' section).
</comment><date>2026-09-16 16:21:36 +0200</date><id>6556f77238142892a52f9c9b0e26663c42a909e6</id><msg>Lead questionnaire: initial-call form (DE/EN) with blank print, draft and PDF attachment</msg><path><editType>edit</editType><file>app/pages/users/leads/index.vue</file></path><path><editType>add</editType><file>server/utils/offers/questionnairePdf.ts</file></path><path><editType>edit</editType><file>app/pages/users/leads/[id]/edit.vue</file></path><path><editType>add</editType><file>app/utils/leadQuestionnaire.ts</file></path><path><editType>add</editType><file>server/api/offers/questionnaire/pdf.post.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/utils/offers/offerConditions.ts</file></path><path><editType>add</editType><file>app/components/offers/LeadQuestionnaireModal.vue</file></path><path><editType>add</editType><file>server/api/offers/questionnaire/save.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><commitId>84f6e38b0d2d238419af49bc604a98c97074e6f0</commitId><timestamp>1789568496000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Android app 1.0.50 (versionCode 51): Mobile Push Tasks release
</comment><date>2026-09-16 16:21:36 +0200</date><id>84f6e38b0d2d238419af49bc604a98c97074e6f0</id><msg>Android app 1.0.50 (versionCode 51): Mobile Push Tasks release</msg><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/plugins/20.native-push.client.ts</affectedPath><commitId>ed5155594b06a3de2a0b937148dc0a67bc965024</commitId><timestamp>1789574610000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Pushed tasks: refresh the mobile dashboard live on a foreground push

Android hands a foreground FCM message to the app without a tray
notification, so a worker sitting on the dashboard saw nothing until they
left and came back. The native plugin now refetches the pushed-task list on
a 'pushed_task' receipt, plays the warning feedback and shows a toast.
</comment><date>2026-09-16 18:03:30 +0200</date><id>ed5155594b06a3de2a0b937148dc0a67bc965024</id><msg>Pushed tasks: refresh the mobile dashboard live on a foreground push</msg><path><editType>edit</editType><file>app/plugins/20.native-push.client.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/pages/mobile/index.vue</affectedPath><commitId>4931f7663993c142be7e4ed09071c1b04489782c</commitId><timestamp>1789574610000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Pushed tasks: neutral dashboard banner with urgency tags, native refresh poll

The banner stays sticky at the top but drops the red block: rows are neutral
and only priority 1 (Dringend) / 3 (Hoch) carry a tag. The native app adds a
60 s refetch while the dashboard is visible as a safety net for missed pushes.
The desktop "Gepusht · wartet" pill uses the blue working-state colours.
</comment><date>2026-09-16 18:03:30 +0200</date><id>4931f7663993c142be7e4ed09071c1b04489782c</id><msg>Pushed tasks: neutral dashboard banner with urgency tags, native refresh poll</msg><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/tasks.vue</affectedPath><affectedPath>app/composables/usePushedTasks.ts</affectedPath><affectedPath>server/api/mobile/pushed-tasks.get.ts</affectedPath><commitId>82990a75948958eacd02ef68561ba8961b52ef9d</commitId><timestamp>1789574610000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Pushed tasks: task modal — back to dashboard, return fix, linked record cards

- Closing a task opened from the dashboard/notification deep link returns to
  the dashboard (history entry replaced) instead of the new-task wizard.
- "Zurück an Desktop" confirmation replaces the action row in place (it used
  to render below the fold), books a running timer instead of refusing, and
  hands back to the dashboard afterwards.
- Linked product (thumbnail, codes, stock per locator, open shortcut), order
  (customer, ship-to, lines, shipments) and shipment (status, tracking, lines)
  are rendered as cards; the pushed-task list now carries M_InOut_ID.
- Pinned list uses neutral colours with Dringend/Hoch tags.
</comment><date>2026-09-16 18:03:30 +0200</date><id>82990a75948958eacd02ef68561ba8961b52ef9d</id><msg>Pushed tasks: task modal — back to dashboard, return fix, linked record cards</msg><path><editType>edit</editType><file>app/composables/usePushedTasks.ts</file></path><path><editType>edit</editType><file>server/api/mobile/pushed-tasks.get.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/tasks.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/tasks.vue</affectedPath><affectedPath>app/pages/mobile/index.vue</affectedPath><commitId>1e77ee19cf43852966794881cd3f1642880f624d</commitId><timestamp>1789575694000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Pushed tasks: colour rows by priority tier (high red, default orange, low blue)

Dashboard banner rows and the pinned list now carry the ticket's priority
tier on border/background plus a solid tag: 1/3 (Urgent/High) red, 5 (the
default) orange, 7/9 (Low/Minor) light blue. Theme tokens only, so dark mode
follows automatically.
</comment><date>2026-09-16 18:21:34 +0200</date><id>1e77ee19cf43852966794881cd3f1642880f624d</id><msg>Pushed tasks: colour rows by priority tier (high red, default orange, low blue)</msg><path><editType>edit</editType><file>app/pages/mobile/tasks.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/index.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>738</buildNumber><marked><SHA1>c11453c0e75288e9d497bff9644e55c9541eafea</SHA1><branch><SHA1>c11453c0e75288e9d497bff9644e55c9541eafea</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>c11453c0e75288e9d497bff9644e55c9541eafea</SHA1><branch><SHA1>c11453c0e75288e9d497bff9644e55c9541eafea</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>c11453c0e75288e9d497bff9644e55c9541eafea</SHA1><branch><SHA1>c11453c0e75288e9d497bff9644e55c9541eafea</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#738</displayName><duration>68685</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #738</fullDisplayName><id>738</id><inProgress>false</inProgress><keepLog>false</keepLog><number>738</number><queueId>5705</queueId><result>SUCCESS</result><timestamp>1789516800273</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/738/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/dashboard/RecentCallsCard.vue</affectedPath><affectedPath>server/api/telephony/blacklist.post.ts</affectedPath><affectedPath>server/utils/telephony/blacklist.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>31601308527d637a24ce1dbb928085488affb6c8</commitId><timestamp>1789459780000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Dashboard: add call-blacklist button to Recent Calls card

Admin-only "Sperren" action per row, writes to FreePBX's astdb-based
Blacklist via AMI DBPut (no MySQL table involved) so future calls from
that number are rejected immediately.
</comment><date>2026-09-15 10:09:40 +0200</date><id>31601308527d637a24ce1dbb928085488affb6c8</id><msg>Dashboard: add call-blacklist button to Recent Calls card</msg><path><editType>edit</editType><file>app/components/dashboard/RecentCallsCard.vue</file></path><path><editType>add</editType><file>server/api/telephony/blacklist.post.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/utils/telephony/blacklist.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/telephony/cdr.ts</affectedPath><affectedPath>app/components/dashboard/RecentCallsCard.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>d8620a46b42efac1131bfce361e06bb2beec307b</commitId><timestamp>1789460110000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Dashboard: always show Queue-routed calls on Recent Calls card

Previously the card only showed missed inbound + answered outbound,
so support-line calls that came in via the Queue and got answered
(possibly after a missed ring on another agent) never appeared.
Queue-routed inbound calls now always show regardless of outcome;
direct-dial inbound calls keep the missed-only behavior.
</comment><date>2026-09-15 10:15:10 +0200</date><id>d8620a46b42efac1131bfce361e06bb2beec307b</id><msg>Dashboard: always show Queue-routed calls on Recent Calls card</msg><path><editType>edit</editType><file>server/utils/telephony/cdr.ts</file></path><path><editType>edit</editType><file>app/components/dashboard/RecentCallsCard.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/sis/index.vue</affectedPath><affectedPath>server/api/sales/sis/listings.get.ts</affectedPath><affectedPath>server/utils/amazonSpApi.ts</affectedPath><affectedPath>server/utils/sisMatching.ts</affectedPath><affectedPath>server/api/sales/sis/price-update.post.ts</affectedPath><commitId>89a23e942f5ea0be7a9453c79ffef0b394b352f6</commitId><timestamp>1789462887000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>SIS: fix intermittent load hang, safen Amazon price pushes, in-flight glow

Amazon-side errors (report timeout, 429, ...) were silently triggering a
full refresh-and-retry of the whole route (report poll + matching, or a
full price push run twice) because event.context.lastIdempiereError is
only ever set by iDempiere calls — tag Amazon-origin errors and skip the
retry for them. Also: timeouts + retry-after-aware backoff on every raw
SP-API/LWA call (none had any before), parallelize the previously serial
SKU/ASIN/price chunk lookups in sisMatching.ts, a real loading
spinner/elapsed-time + client-side fetch timeout instead of a static
"Loading listings..." line, and a per-order-source push queue so rapid
per-field price pushes never burst past Amazon's ~1 req/sec limit.

Also adds the requested "knight rider" glowing border animation on a
price field while its push is in flight, handing off to the existing
success/error flash once it resolves.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_013G7aDXCyYUwGgTG81QTP8E
</comment><date>2026-09-15 11:01:27 +0200</date><id>89a23e942f5ea0be7a9453c79ffef0b394b352f6</id><msg>SIS: fix intermittent load hang, safen Amazon price pushes, in-flight glow</msg><path><editType>edit</editType><file>app/pages/sales/sis/index.vue</file></path><path><editType>edit</editType><file>server/api/sales/sis/listings.get.ts</file></path><path><editType>edit</editType><file>server/api/sales/sis/price-update.post.ts</file></path><path><editType>edit</editType><file>server/utils/amazonSpApi.ts</file></path><path><editType>edit</editType><file>server/utils/sisMatching.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/telephony/recordings/audio.get.ts</affectedPath><affectedPath>server/utils/telephony/recordings.ts</affectedPath><commitId>11e64f412c360e3e27d2d2f1e62aceee6f5f3e2f</commitId><timestamp>1789462899000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Telephony: fix call recording playback for .gsm files

Recordings served as .gsm played inconsistently in the dashboard phone
card and the contact-page recordings modal ("play does nothing" for
most, "player shows up" only for .wav/.mp3) — no browser ships a native
GSM 06.10 decoder, so the &lt;audio&gt; element just sits at
readyState=HAVE_NOTHING forever with no error event. ffmpeg (already
used to decode these same .gsm files for whisper transcription)
transcodes .gsm to mp3 server-side before streaming; .wav/.mp3 pass
through unchanged.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_013G7aDXCyYUwGgTG81QTP8E
</comment><date>2026-09-15 11:01:39 +0200</date><id>11e64f412c360e3e27d2d2f1e62aceee6f5f3e2f</id><msg>Telephony: fix call recording playback for .gsm files</msg><path><editType>edit</editType><file>server/utils/telephony/recordings.ts</file></path><path><editType>edit</editType><file>server/api/telephony/recordings/audio.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/returns/index.vue</affectedPath><commitId>e7e99c24f3437370b725c5cd1ff3b75eb198bf86</commitId><timestamp>1789463284000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Returns: add searchable Products column (line items + qty)

/sales/returns now fetches ?withLines=1 (the M_InOutLine + nested
M_Product_ID expand already used by the dashboard "Letzte Retouren"
card) and shows the returned products with their quantities inline in
a new grid column, with its own text filter — no master-detail.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_013G7aDXCyYUwGgTG81QTP8E
</comment><date>2026-09-15 11:08:04 +0200</date><id>e7e99c24f3437370b725c5cd1ff3b75eb198bf86</id><msg>Returns: add searchable Products column (line items + qty)</msg><path><editType>edit</editType><file>app/pages/sales/returns/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/inventory-desktop.vue</affectedPath><commitId>376abf176801739a3c3d427a56263898d657861c</commitId><timestamp>1789470038000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Inventory Desktop: BOM tags + exclude-BOM filter on article search

Ports the same excludeBom checkbox + BOM/JTL-BOM tags mobile/inventory.vue
already has on its article text search (server already supports both via
/api/materials/products/search?excludeBom=), but defaults the checkbox to
checked here — a physical stock count is about individually-located
articles, not kit/BOM headers, unlike the mobile default (unchecked).

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_013G7aDXCyYUwGgTG81QTP8E
</comment><date>2026-09-15 13:00:38 +0200</date><id>376abf176801739a3c3d427a56263898d657861c</id><msg>Inventory Desktop: BOM tags + exclude-BOM filter on article search</msg><path><editType>edit</editType><file>app/pages/integrations/inventory-desktop.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/print/return-label.post.ts</affectedPath><commitId>006f06ebd1f54f49f2fef962ffa4a48861c1a862</commitId><timestamp>1789482747000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Return label: enlarge header-band text for readability

Company name and date/time in the dark top band were too small against
the fill, especially on the common 74x52/56x75/102x152 label sizes.
Bumps bar height and font sizes on both sides and raises the minimum
shrink-to-fit floor for long company names.
</comment><date>2026-09-15 16:32:27 +0200</date><id>006f06ebd1f54f49f2fef962ffa4a48861c1a862</id><msg>Return label: enlarge header-band text for readability</msg><path><editType>edit</editType><file>server/api/print/return-label.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/composables/useReturnLabelPrinter.ts</affectedPath><affectedPath>server/api/print/return-label.post.ts</affectedPath><affectedPath>app/components/NavBar.vue</affectedPath><affectedPath>app/composables/states.ts</affectedPath><affectedPath>app/components/rmas/ReturnLabelPrinterPicker.vue</affectedPath><affectedPath>app/pages/mobile/return.vue</affectedPath><affectedPath>app/pages/integrations/returns-desktop.vue</affectedPath><commitId>8e1a9966727348cffb3a45f49e81b2eebed592d5</commitId><timestamp>1789482760000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Return-label printer: org default + per-session override

Return labels no longer print per-article, so the legacy per-product
printer field (m_product.labelprinter_rma) no longer fits how they're
used. Replaces it with a printer picker in the top navbar (desktop) /
returns page header (mobile), admin-only (IsClientAdministrator), that
staff switch per working place — remembered per device via localStorage
so it survives reloads. Falls back to the org's CUST_Printer marked
"Default printer (for its type)" (printerType=lab), else the lab
printer with the smallest id.

Also fixes a bug in /api/print/return-label where an explicit body.queue
override was never actually consulted (labelPrinterId always defaulted
to a truthy 'b', winning the || before queue was checked), and
consolidates return-label printing to one request per return instead of
grouping lines by printer — a return is one label listing every article,
so the old per-product grouping could silently split one return across
multiple partial-article labels.
</comment><date>2026-09-15 16:32:40 +0200</date><id>8e1a9966727348cffb3a45f49e81b2eebed592d5</id><msg>Return-label printer: org default + per-session override</msg><path><editType>edit</editType><file>app/composables/states.ts</file></path><path><editType>edit</editType><file>app/components/NavBar.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/return.vue</file></path><path><editType>edit</editType><file>server/api/print/return-label.post.ts</file></path><path><editType>add</editType><file>app/components/rmas/ReturnLabelPrinterPicker.vue</file></path><path><editType>add</editType><file>app/composables/useReturnLabelPrinter.ts</file></path><path><editType>edit</editType><file>app/pages/integrations/returns-desktop.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/OrderForm.vue</affectedPath><commitId>70d978c5f75ce97343d7740bbd8478a2c3d7b01d</commitId><timestamp>1789482764000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Sales order edit: emphasize ship-to name over partner

On the completed-order shipping summary, the partner name was bold and
the actual ship-to location (Name/Name2) was plain text, making it easy
to misread which one the order ships to. Indents the partner row and
drops its bold, and bolds the Name/Name2 values instead.
</comment><date>2026-09-15 16:32:44 +0200</date><id>70d978c5f75ce97343d7740bbd8478a2c3d7b01d</id><msg>Sales order edit: emphasize ship-to name over partner</msg><path><editType>edit</editType><file>app/components/sales/OrderForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><commitId>c11453c0e75288e9d497bff9644e55c9541eafea</commitId><timestamp>1789483734000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>My-Tickets: fix staff replies stamped with wrong org, hiding them from limited-role customers

sendMessage() stamped new r_requestupdate rows with the replying staff
member's currently active org (logship_organization_id cookie) instead
of the ticket's own org. A limited-role customer's access is scoped to
only their own org (IsAccessAllOrgs=false), so any reply written while
staff had a different org active became invisible to them via
iDempiere's row-level security — even though the ticket itself and
their own messages stayed visible. Every other send path in this file
(accounting-flag note, assign-to-merchant, status actions) already
preferred the ticket's own org with this exact fallback; only the main
composer's sendMessage() was missing it.

Confirmed against production data: customer "stoyan" (Wonderhome) was
missing 4 of 9 staff replies on ticket 1000426, all sent while support
had a different org active.
</comment><date>2026-09-15 16:48:54 +0200</date><id>c11453c0e75288e9d497bff9644e55c9541eafea</id><msg>My-Tickets: fix staff replies stamped with wrong org, hiding them from limited-role customers</msg><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>737</buildNumber><marked><SHA1>7ccda3abf09f752e54f2ad7299b242330511d169</SHA1><branch><SHA1>7ccda3abf09f752e54f2ad7299b242330511d169</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>7ccda3abf09f752e54f2ad7299b242330511d169</SHA1><branch><SHA1>7ccda3abf09f752e54f2ad7299b242330511d169</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>7ccda3abf09f752e54f2ad7299b242330511d169</SHA1><branch><SHA1>7ccda3abf09f752e54f2ad7299b242330511d169</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#737</displayName><duration>71493</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #737</fullDisplayName><id>737</id><inProgress>false</inProgress><keepLog>false</keepLog><number>737</number><queueId>5701</queueId><result>SUCCESS</result><timestamp>1789430400272</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/737/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/telephony/extensions.ts</affectedPath><affectedPath>app/composables/useClickToDial.ts</affectedPath><affectedPath>app/components/DialButton.vue</affectedPath><commitId>630fc88a6a26eba7608728a395bb5fc80a4964ef</commitId><timestamp>1789370185000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Dial popover: show the PBX extension name instead of the state text — server/utils/telephony/extensions.ts reads each extension's FreePBX display name from the astdb (AMI DBGet AMPUSER/&lt;ext&gt;/cidname, covered by the reporting class already granted to the logship manager user; cached 10 min per extension, fetched on the same socket as DeviceStateList, ERP user name stays the fallback), DialButton rows now read '401 Younes' with the state carried by the coloured dot + hover tooltip only, DirectoryExtension type gains pbxName
</comment><date>2026-09-14 09:16:25 +0200</date><id>630fc88a6a26eba7608728a395bb5fc80a4964ef</id><msg>Dial popover: show the PBX extension name instead of the state text — server/utils/telephony/extensions.ts reads each extension's FreePBX display name from the astdb (AMI DBGet AMPUSER/&lt;ext&gt;/cidname, covered by the reporting class already granted to the logship manager user; cached 10 min per extension, fetched on the same socket as DeviceStateList, ERP user name stays the fallback), DialButton rows now read '401 Younes' with the state carried by the coloured dot + hover tooltip only, DirectoryExtension type gains pbxName</msg><path><editType>edit</editType><file>app/components/DialButton.vue</file></path><path><editType>edit</editType><file>app/composables/useClickToDial.ts</file></path><path><editType>edit</editType><file>server/utils/telephony/extensions.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/accounting/banking/BankBackfillPanel.vue</affectedPath><affectedPath>server/api/accounting/bank-transactions/coverage.get.ts</affectedPath><affectedPath>app/assets/css/banking.css</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><affectedPath>app/pages/accounting/banking/index.vue</affectedPath><affectedPath>app/composables/menu/admin/accounting.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/pages/accounting/bank-transactions/index.vue</affectedPath><commitId>53342fb748940c080a9c541b0d4c1a87499d5339</commitId><timestamp>1789372209000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Bank fetch page: /accounting/bank-transactions becomes the dedicated "Bankabruf" page (fetch from the bank), replacing the duplicate staged-statements/import tables — coverage table per connection (data from/to, counts, last fetch, 12-month strip green = staged / red = never fetched, click = preselect), backfill runner for past periods (months from a coverage-aware grid with "Select missing", everything since a date, free range, single day; chunks of max 31 days so PayPal's 30-day window and the proxy timeout are respected; sequential per connection + chunk, progress bar, per-chunk log, abort, retry failed, details via the fetch-result modal, dry-run toggle, hand-off to Banking → import), connection cards kept in a collapsible section; new proxy route bank-transactions/coverage.get.ts (Laravel banking/statements/coverage, fail-soft notice when not deployed); shared bk-* styles moved from the Banking page into app/assets/css/banking.css (loaded by both pages); Banking fetch modal links to the backfill page; menu labels "Bankabruf"/"Bank Fetch"; bankfetch_* translations en/de/es
</comment><date>2026-09-14 09:50:09 +0200</date><id>53342fb748940c080a9c541b0d4c1a87499d5339</id><msg>Bank fetch page: /accounting/bank-transactions becomes the dedicated "Bankabruf" page (fetch from the bank), replacing the duplicate staged-statements/import tables — coverage table per connection (data from/to, counts, last fetch, 12-month strip green = staged / red = never fetched, click = preselect), backfill runner for past periods (months from a coverage-aware grid with "Select missing", everything since a date, free range, single day; chunks of max 31 days so PayPal's 30-day window and the proxy timeout are respected; sequential per connection + chunk, progress bar, per-chunk log, abort, retry failed, details via the fetch-result modal, dry-run toggle, hand-off to Banking → import), connection cards kept in a collapsible section; new proxy route bank-transactions/coverage.get.ts (Laravel banking/statements/coverage, fail-soft notice when not deployed); shared bk-* styles moved from the Banking page into app/assets/css/banking.css (loaded by both pages); Banking fetch modal links to the backfill page; menu labels "Bankabruf"/"Bank Fetch"; bankfetch_* translations en/de/es</msg><path><editType>edit</editType><file>app/composables/menu/admin/accounting.ts</file></path><path><editType>add</editType><file>server/api/accounting/bank-transactions/coverage.get.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path><path><editType>add</editType><file>app/components/accounting/banking/BankBackfillPanel.vue</file></path><path><editType>add</editType><file>app/assets/css/banking.css</file></path><path><editType>edit</editType><file>app/pages/accounting/banking/index.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/bank-transactions/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/dashboard/RecentCallsCard.vue</affectedPath><affectedPath>app/components/dashboard/QuickContactModal.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>f810d698d77298b9a9a8e0a18b8ea93623b496bc</commitId><timestamp>1789372736000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Dashboard calls card: '+' on unmatched numbers → quick-create contact modal — new components/dashboard/QuickContactModal.vue (teleported; name required + autofocused, phone preset from the call row incl. PBX caller-id name, optional e-mail and 'als Lead anlegen' flag; creates a plain ad_user via /api/admin/users/store, not a system user, current org); RecentCallsCard remembers checked-but-unmatched numbers (null entries) so the '+' only shows after the ES match finished, and stores the created user as the number's contact locally so the row flips to the contact menu without waiting for the ad_user index sync; rcc_add_contact/qcm_* translations en/de/es
</comment><date>2026-09-14 09:58:56 +0200</date><id>f810d698d77298b9a9a8e0a18b8ea93623b496bc</id><msg>Dashboard calls card: '+' on unmatched numbers → quick-create contact modal — new components/dashboard/QuickContactModal.vue (teleported; name required + autofocused, phone preset from the call row incl. PBX caller-id name, optional e-mail and 'als Lead anlegen' flag; creates a plain ad_user via /api/admin/users/store, not a system user, current org); RecentCallsCard remembers checked-but-unmatched numbers (null entries) so the '+' only shows after the ES match finished, and stores the created user as the number's contact locally so the row flips to the contact menu without waiting for the ad_user index sync; rcc_add_contact/qcm_* translations en/de/es</msg><path><editType>add</editType><file>app/components/dashboard/QuickContactModal.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/dashboard/RecentCallsCard.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/commission/parcels/dhl/multi.post.ts</affectedPath><affectedPath>server/api/commission/parcels/dhl/index.post.ts</affectedPath><affectedPath>server/api/commission/parcels/dpd/multi.post.ts</affectedPath><affectedPath>server/api/commission/parcels/dpd/index.post.ts</affectedPath><commitId>e644ded9fd4885ca7e5be18f1d3c638d0b687e12</commitId><timestamp>1789373944000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>DPD labels: carry address2 (Adresszusatz) like DHL — dpd/index + dpd/multi now map body.address2 into the recipient: name2 when no company/c/o is set, otherwise the company keeps name2 and address2 goes to contact (the only other printed DPD line, 35 chars), plus a data-only comment mirror (70); &lt;contact&gt; emitted after &lt;city&gt; and &lt;comment&gt; after &lt;email&gt; per the DPD XSD order. DHL index/multi cap consignee name2/name3 at 50 chars so over-long values are truncated instead of rejected. Frontend unchanged (commission.vue already sends both fields to both carriers).
</comment><date>2026-09-14 10:19:04 +0200</date><id>e644ded9fd4885ca7e5be18f1d3c638d0b687e12</id><msg>DPD labels: carry address2 (Adresszusatz) like DHL — dpd/index + dpd/multi now map body.address2 into the recipient: name2 when no company/c/o is set, otherwise the company keeps name2 and address2 goes to contact (the only other printed DPD line, 35 chars), plus a data-only comment mirror (70); &lt;contact&gt; emitted after &lt;city&gt; and &lt;comment&gt; after &lt;email&gt; per the DPD XSD order. DHL index/multi cap consignee name2/name3 at 50 chars so over-long values are truncated instead of rejected. Frontend unchanged (commission.vue already sends both fields to both carriers).</msg><path><editType>edit</editType><file>server/api/commission/parcels/dpd/multi.post.ts</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dhl/multi.post.ts</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dpd/index.post.ts</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dhl/index.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/telephony/transcriptionResponse.ts</affectedPath><affectedPath>server/api/telephony/recordings/transcribe-status.get.ts</affectedPath><affectedPath>app/components/telephony/CallRecordingsModal.vue</affectedPath><affectedPath>server/api/telephony/recordings/transcribe.post.ts</affectedPath><affectedPath>server/utils/telephony/recordings.ts</affectedPath><commitId>72610850d43102cc0e14ac7cf6ef1b5db716ace6</commitId><timestamp>1789375913000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Call recordings: async whisper transcription — transcribe.post.ts starts the job, waits max 20 s and answers 202 pending for anything longer (the edge nginx cuts requests at 60 s, long calls used to 504 while whisper kept running); new transcribe-status.get.ts polls the disk state (pending marker &lt;file&gt;.pending.json shared across PM2 instances, cache file = done, marker error = failed); shared statusResponse() in transcriptionResponse.ts; CallRecordingsModal polls every 3 s up to 25 min and shows the elapsed time
</comment><date>2026-09-14 10:51:53 +0200</date><id>72610850d43102cc0e14ac7cf6ef1b5db716ace6</id><msg>Call recordings: async whisper transcription — transcribe.post.ts starts the job, waits max 20 s and answers 202 pending for anything longer (the edge nginx cuts requests at 60 s, long calls used to 504 while whisper kept running); new transcribe-status.get.ts polls the disk state (pending marker &lt;file&gt;.pending.json shared across PM2 instances, cache file = done, marker error = failed); shared statusResponse() in transcriptionResponse.ts; CallRecordingsModal polls every 3 s up to 25 min and shows the elapsed time</msg><path><editType>edit</editType><file>app/components/telephony/CallRecordingsModal.vue</file></path><path><editType>edit</editType><file>server/utils/telephony/recordings.ts</file></path><path><editType>edit</editType><file>server/api/telephony/recordings/transcribe.post.ts</file></path><path><editType>add</editType><file>server/api/telephony/recordings/transcribe-status.get.ts</file></path><path><editType>add</editType><file>server/utils/telephony/transcriptionResponse.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/roadsurfer_Fulfillment_Anfrage_Preisblatt_LogYou.xlsx</affectedPath><affectedPath>reference/~$roadsurfer_Fulfillment_Anfrage_Preisblatt_LogYou.xlsx</affectedPath><commitId>14d0e08b8c0a28cd535aeb98b9273a2ce1dfb557</commitId><timestamp>1789375913000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Roadsurfer price sheet: update workbook, drop stray Excel lock file
</comment><date>2026-09-14 10:51:53 +0200</date><id>14d0e08b8c0a28cd535aeb98b9273a2ce1dfb557</id><msg>Roadsurfer price sheet: update workbook, drop stray Excel lock file</msg><path><editType>edit</editType><file>reference/roadsurfer_Fulfillment_Anfrage_Preisblatt_LogYou.xlsx</file></path><path><editType>delete</editType><file>reference/~$roadsurfer_Fulfillment_Anfrage_Preisblatt_LogYou.xlsx</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/connect.get.ts</affectedPath><affectedPath>.gitignore</affectedPath><affectedPath>server/api/accounting/amazon-ads/document.get.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/import.post.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/disconnect.post.ts</affectedPath><affectedPath>server/utils/amazonAds/types.ts</affectedPath><affectedPath>.env-dev</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>server/api/invoices/lexoffice-upload.post.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/status.get.ts</affectedPath><affectedPath>server/api/oauth/amazon-ads/callback.get.ts</affectedPath><affectedPath>app/components/AgGrid.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>server/utils/amazonAds/routeShared.ts</affectedPath><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><affectedPath>server/utils/amazonAds/adsApi.ts</affectedPath><affectedPath>server/utils/amazonAds/parseInvoicePdf.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/profile.put.ts</affectedPath><affectedPath>.env</affectedPath><affectedPath>reference/INVOICE-503111M5PA26.pdf</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/invoiceOriginalPdf.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>reference/test-scripts/amazon-ads-parse.mjs</affectedPath><affectedPath>server/api/accounting/amazon-ads/upload.post.ts</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><affectedPath>server/utils/amazonAds/adsStore.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/profiles.get.ts</affectedPath><affectedPath>app/composables/menu/admin/accounting.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/void.post.ts</affectedPath><affectedPath>.env-prod</affectedPath><commitId>0f630bc593490f322597f096f15bc84851b5a3c0</commitId><timestamp>1789375913000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon Ads invoices → Eingangsrechnungen: new page /accounting/amazon-ads-invoices lists Sponsored-Ads invoices (Amazon Ads API when connected — LWA consent flow, profile picker, GET /invoices + /invoices/{id} + /billing/documents PDF — or console PDFs dropped on the page and parsed server-side), lets the user tick which ones to import and books each as a completed AP invoice on the fixed vendor 1043801 (org *): one charge line per campaign (default charge Werbekosten), tax by rate so GrandTotal = Amazon gross, DocumentNo/POReference = Amazon invoice no., duplicate guard, original Amazon PDF attached under PO_Invoice; Storno action voids + renames the number (&lt;no&gt;-VOID-&lt;id&gt;) so the same invoice can be re-imported; booked/Lexoffice status comes from iDempiere (vendor AP invoices matched by number). Lexoffice upload: purchase invoices now upload the attached vendor original instead of the Jasper print (no ZUGFeRD on foreign documents) and requireOriginal:true skips invoices without one (used by the Ads page). Store data/amazon-ads.db + PDF cache data/amazon-ads/ (git-ignored); AMAZON_ADS_* env keys (empty = PDF-upload mode until the Ads API approval exists); AgGrid wrapper registers RowGroupingPanelModule (error #200 on every grid page); menu + en/de/es labels; parser dev script reference/test-scripts/amazon-ads-parse.mjs + sample invoice
</comment><date>2026-09-14 10:51:53 +0200</date><id>0f630bc593490f322597f096f15bc84851b5a3c0</id><msg>Amazon Ads invoices → Eingangsrechnungen: new page /accounting/amazon-ads-invoices lists Sponsored-Ads invoices (Amazon Ads API when connected — LWA consent flow, profile picker, GET /invoices + /invoices/{id} + /billing/documents PDF — or console PDFs dropped on the page and parsed server-side), lets the user tick which ones to import and books each as a completed AP invoice on the fixed vendor 1043801 (org *): one charge line per campaign (default charge Werbekosten), tax by rate so GrandTotal = Amazon gross, DocumentNo/POReference = Amazon invoice no., duplicate guard, original Amazon PDF attached under PO_Invoice; Storno action voids + renames the number (&lt;no&gt;-VOID-&lt;id&gt;) so the same invoice can be re-imported; booked/Lexoffice status comes from iDempiere (vendor AP invoices matched by number). Lexoffice upload: purchase invoices now upload the attached vendor original instead of the Jasper print (no ZUGFeRD on foreign documents) and requireOriginal:true skips invoices without one (used by the Ads page). Store data/amazon-ads.db + PDF cache data/amazon-ads/ (git-ignored); AMAZON_ADS_* env keys (empty = PDF-upload mode until the Ads API approval exists); AgGrid wrapper registers RowGroupingPanelModule (error #200 on every grid page); menu + en/de/es labels; parser dev script reference/test-scripts/amazon-ads-parse.mjs + sample invoice</msg><path><editType>edit</editType><file>.env-prod</file></path><path><editType>add</editType><file>server/utils/amazonAds/routeShared.ts</file></path><path><editType>add</editType><file>server/utils/amazonAds/adsStore.ts</file></path><path><editType>add</editType><file>server/api/oauth/amazon-ads/callback.get.ts</file></path><path><editType>edit</editType><file>app/composables/menu/admin/accounting.ts</file></path><path><editType>add</editType><file>reference/INVOICE-503111M5PA26.pdf</file></path><path><editType>add</editType><file>server/api/accounting/amazon-ads/connect.get.ts</file></path><path><editType>edit</editType><file>server/api/invoices/lexoffice-upload.post.ts</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path><path><editType>add</editType><file>server/api/accounting/amazon-ads/profile.put.ts</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>app/components/AgGrid.vue</file></path><path><editType>edit</editType><file>.env-dev</file></path><path><editType>add</editType><file>server/api/accounting/amazon-ads/profiles.get.ts</file></path><path><editType>add</editType><file>reference/test-scripts/amazon-ads-parse.mjs</file></path><path><editType>add</editType><file>server/api/accounting/amazon-ads/status.get.ts</file></path><path><editType>edit</editType><file>.env</file></path><path><editType>add</editType><file>server/api/accounting/amazon-ads/document.get.ts</file></path><path><editType>add</editType><file>server/utils/invoiceOriginalPdf.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/api/accounting/amazon-ads/disconnect.post.ts</file></path><path><editType>add</editType><file>server/api/accounting/amazon-ads/import.post.ts</file></path><path><editType>add</editType><file>server/api/accounting/amazon-ads/upload.post.ts</file></path><path><editType>add</editType><file>server/utils/amazonAds/importInvoice.ts</file></path><path><editType>add</editType><file>server/api/accounting/amazon-ads/void.post.ts</file></path><path><editType>add</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>add</editType><file>server/utils/amazonAds/adsApi.ts</file></path><path><editType>edit</editType><file>.gitignore</file></path><path><editType>add</editType><file>server/utils/amazonAds/parseInvoicePdf.ts</file></path><path><editType>add</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>add</editType><file>server/utils/amazonAds/types.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/dashboard/RecentCallsCard.vue</affectedPath><affectedPath>server/api/admin/users/search.get.ts</affectedPath><affectedPath>app/components/dashboard/QuickContactModal.vue</affectedPath><affectedPath>server/utils/telephony/cdr.ts</affectedPath><affectedPath>app/pages/sales/orders/[id]/view.vue</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>server/api/telephony/recent-calls.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>b99b7ac21f59acb46845cd37905cf64ad2f389e4</commitId><timestamp>1789378079000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Sales order ship-to name + dashboard calls card improvements

Sales orders: edit.vue only fetched order data in onMounted, so switching
between order tabs via the in-app tab bar (router.push into the same
keep-alive'd component, only :id changes) kept showing the previously loaded
order's data — including its business partner — until a hard reload. Added a
route.params.id watcher (loadOrderData()) mirroring the existing fix on
sales/invoices and sales/customer-rma edit pages. Also added the ship-to
recipient name (C_BPartner_Location_ID.Name — the same field the orders grid
shows as "Name", which can legitimately differ from the business partner's
own Name) to the read-only order view.vue page, which was missing it
entirely; edit.vue's OrderForm.vue already displayed it correctly.

Dashboard "Letzte Anrufe" card: the extension badge and duration/missed
label were side-by-side in a fixed-width column that could overflow into
neighboring text. Stacked them vertically instead and gave rows a bit more
height. Added server-side search (number/name) and pagination — cdr.ts's
recentCalls() now takes offset/search/direction and returns total +
missedTotal (so the missed-count badge stays accurate regardless of the
active direction tab or page).

Quick-contact modal (dashboard "+" on unmatched calls): added a "search
existing contact" panel above the create-new form, so a call can be linked
to an existing ad_user/lead instead of always creating a duplicate. Scoped
to the caller's own organization by default ("search all organizations" to
widen), with a type filter (All/Lead/External/Internal) mirroring the
site's existing Users/Leads/External Users split. New
GET /api/admin/users/search endpoint backs it; picking a result only PUTs
the call's phone number onto the existing contact when it isn't already on
file, to avoid clobbering an existing different number.
</comment><date>2026-09-14 11:27:59 +0200</date><id>b99b7ac21f59acb46845cd37905cf64ad2f389e4</id><msg>Sales order ship-to name + dashboard calls card improvements</msg><path><editType>edit</editType><file>app/components/dashboard/RecentCallsCard.vue</file></path><path><editType>edit</editType><file>server/api/telephony/recent-calls.get.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/utils/telephony/cdr.ts</file></path><path><editType>add</editType><file>server/api/admin/users/search.get.ts</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/components/dashboard/QuickContactModal.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/view.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/invoices/index.vue</affectedPath><affectedPath>app/components/sales/InvoiceListFilters.vue</affectedPath><affectedPath>app/components/sales/InvoiceAction.vue</affectedPath><affectedPath>app/components/AgGrid/Invoices/AgInvoiceKind.vue</affectedPath><affectedPath>server/api/invoices/so.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>852e5a139e7dc3c8d4e43fa24f46d603c71b710d</commitId><timestamp>1789379089000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Sales invoices: merge in purchase (AP) invoices, incl. Amazon Ads imports

server/api/invoices/so.get.ts dropped its IsSOTrx-only filter (kept the
existing DocStatus CO/CL/DR restriction) so /sales/invoices now returns both
sales and purchase invoices — including the Amazon Ads AP invoices booked via
/accounting/amazon-ads-invoices, which land in c_invoice like any other
vendor invoice. Route name/URL kept as-is to avoid touching every caller.

New "Type" grid column (AgInvoiceKind.vue) tags each row AR/AR-CM/AP/AP-CM
from C_Invoice.DocBaseType (the same field lexoffice-upload.post.ts already
keys its AR/AP branching on), right after the document-number column.

InvoiceListFilters.vue gained two segmented filters: Receivables/Payables
(side, derived from IsSOTrx / the C_DocTypeTarget_ID 1000006 "AP CreditMemo
used as a customer credit note" exception — same convention as
accounting/opos) and Lexoffice upload status (uploaded/not uploaded), both
applied client-side alongside the existing fulfillment/payment/amount
filters so the grand-total row and counts stay consistent.

The existing bulk Lexoffice upload button needed no changes — the shared
lexoffice-upload.post.ts route already branches on DocBaseType per invoice
(original vendor PDF for AP, Jasper print for AR) and processes mixed AR/AP
id batches correctly; it just never had AP rows to select from before.

Fixed InvoiceAction.vue's row-menu edit/duplicate handlers, which always
navigated to the sales-invoice pages — now they branch on isSOTrx to
/procurements/invoices/{id}/{edit,duplicate} for AP rows, matching the
branching AgLink.vue's document-number link already had.

Note: this route has no $top cap (pre-existing), so removing the AR-only
restriction roughly doubles the worst-case row count for orgs with a long
purchase-invoice history — worth watching if the page gets sluggish.
</comment><date>2026-09-14 11:44:49 +0200</date><id>852e5a139e7dc3c8d4e43fa24f46d603c71b710d</id><msg>Sales invoices: merge in purchase (AP) invoices, incl. Amazon Ads imports</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/sales/invoices/index.vue</file></path><path><editType>edit</editType><file>app/components/sales/InvoiceAction.vue</file></path><path><editType>edit</editType><file>server/api/invoices/so.get.ts</file></path><path><editType>edit</editType><file>app/components/sales/InvoiceListFilters.vue</file></path><path><editType>add</editType><file>app/components/AgGrid/Invoices/AgInvoiceKind.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/users/leads/[id]/edit.vue</affectedPath><commitId>9b08ac127dfe1f98967ced8227f64c07868a1db3</commitId><timestamp>1789379322000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Lead page: move Aufnahmen button out of the offer/contract CTA group

The "Aufnahmen" (call recordings) button sat in the top-right CTA cluster
alongside Angebot/Vertrag/SEPA/Onboarding, but it isn't part of that
offer/contract workflow — it's phone-call history. Moved it next to the
phone number / DialButton in the contact-chips row instead, gated on the
lead having a phone number (nothing to match recordings against otherwise).
The compact top-toolbar icon button (MobileActionsMenu) already had its own
"Aufnahmen" entry and is unchanged.
</comment><date>2026-09-14 11:48:42 +0200</date><id>9b08ac127dfe1f98967ced8227f64c07868a1db3</id><msg>Lead page: move Aufnahmen button out of the offer/contract CTA group</msg><path><editType>edit</editType><file>app/pages/users/leads/[id]/edit.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/dashboard/RecentCallsCard.vue</affectedPath><affectedPath>app/components/DialButton.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>39f1dfd5739eef2e6173ff543b20fba47bca5fa3</commitId><timestamp>1789379675000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>DialButton: opt-in Recordings toggle (play-only) in the dial popover

Adds a showRecordings prop that puts a headset icon in the popover header
next to Close. Toggling it switches the popover body to a compact list of
FreePBX recordings matched to `number` (GET /api/telephony/recordings, same
endpoint CallRecordingsModal.vue uses on contact pages, called here with
just `numbers` — no source/recordId, so it works for numbers with no known
contact too) — date, direction, duration and a play button only, no
transcription/download clutter. Off by default everywhere; enabled on both
DialButton usages in the dashboard's "Letzte Anrufe" card, so clicking a
call's number now offers a quick way to listen to past recordings for that
number right from the dial popover.
</comment><date>2026-09-14 11:54:35 +0200</date><id>39f1dfd5739eef2e6173ff543b20fba47bca5fa3</id><msg>DialButton: opt-in Recordings toggle (play-only) in the dial popover</msg><path><editType>edit</editType><file>app/components/DialButton.vue</file></path><path><editType>edit</editType><file>app/components/dashboard/RecentCallsCard.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/dashboard/RecentCallsCard.vue</affectedPath><commitId>3a2aa7e776b1ecd670ff8e1f0abb8a4de7311b04</commitId><timestamp>1789379818000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Recent calls card: stack date above number, give the name its own full line

The date used to be its own fixed 62px grid column, squeezing how much
width the number/name column got. Moved it to sit above the number instead
(inside the same column), so the name — which can run considerably longer
than the number — gets the full row width on its own line rather than
sharing it with a separate date column.
</comment><date>2026-09-14 11:56:58 +0200</date><id>3a2aa7e776b1ecd670ff8e1f0abb8a4de7311b04</id><msg>Recent calls card: stack date above number, give the name its own full line</msg><path><editType>edit</editType><file>app/components/dashboard/RecentCallsCard.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/locators/priority-recommendations.get.ts</affectedPath><commitId>d9627b7266e6432d9febb322babb26fcc4f62970</commitId><timestamp>1789380713000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Locator priorities: exclude locators not allowed for shipping

M_LocatorType.IsAvailableForShipping=false locators (return bins,
quarantine, reconditioning input, ...) are dropped before building
pick-order conflicts/proposals, since shipment generation never picks
from them anyway.
</comment><date>2026-09-14 12:11:53 +0200</date><id>d9627b7266e6432d9febb322babb26fcc4f62970</id><msg>Locator priorities: exclude locators not allowed for shipping</msg><path><editType>edit</editType><file>server/api/materials/locators/priority-recommendations.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/DialButton.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>c1fb76e4b48ea72b198182db778fce1fb2a4892b</commitId><timestamp>1789383931000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>DialButton: fix recordings that appeared to play but stayed silent

Chrome's &lt;audio&gt; element does not behave like a normal failed request when
the recordings route errors out (e.g. the PBX recordings service returns a
JSON error body instead of audio): no 'error' event ever fires and
.play()'s promise never settles either — it just sits at
networkState=LOADING/readyState=HAVE_NOTHING with paused=false forever.
Since the row's play/stop icon was driven only by a manually-toggled ref,
a failed load looked exactly like "still playing" with no sound and no
way to tell it failed. Add a stall-timeout guard (6s) that aborts the
hung request, resets the button and shows an inline error message when
playable data never arrives; canplay/playing clear the timer on success.
</comment><date>2026-09-14 13:05:31 +0200</date><id>c1fb76e4b48ea72b198182db778fce1fb2a4892b</id><msg>DialButton: fix recordings that appeared to play but stayed silent</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/DialButton.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/AgGrid/Invoices/AgInvoiceKind.vue</affectedPath><commitId>182290a4e2c2f6c96174f4a55e9d7c30acf5855c</commitId><timestamp>1789383938000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>AgInvoiceKind: fix AP/AR tags never actually getting their colors

The tag colors never rendered: this component is used as an AG Grid
cellRenderer, and its &lt;style scoped&gt; block never reached the rendered
elements (they carried no data-v-* attribute at all), so every tag
silently fell back to Bulma's plain grey .tag look regardless of AR/AP/
credit-memo type — the same gap already documented for AG Grid image
cell renderers. Move the styling to a non-scoped block keyed off a
dedicated .ag-ikind-tag marker class (so it can't leak onto the many
other Bulma .tag elements elsewhere in the app), and switch from thin
outlined tags to solid-filled ones so AP vs AR reads at a glance while
scanning a long invoice grid.
</comment><date>2026-09-14 13:05:38 +0200</date><id>182290a4e2c2f6c96174f4a55e9d7c30acf5855c</id><msg>AgInvoiceKind: fix AP/AR tags never actually getting their colors</msg><path><editType>edit</editType><file>app/components/AgGrid/Invoices/AgInvoiceKind.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/invoices/lexoffice-upload.post.ts</affectedPath><affectedPath>app/components/sales/LexofficeCategoryModal.vue</affectedPath><commitId>3648fbba0e22b85d8209ea8ec5b961f204aff7e9</commitId><timestamp>1789383946000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Lexoffice upload: default AP invoices into Ausgaben, not the general inbox

Without an explicit category, uploads went through Lexoffice's plain
Files-drop, which auto-creates its own uncategorized draft voucher — it
never lands as a filed Einnahmen/Ausgaben entry, just a general/pending
item in Lexoffice's own inbox. AR invoices only looked correctly filed
under Einnahmen because someone picked a category for them every time,
which goes through the Vouchers API instead.

Add a third modal option, "Mit Standardkategorie hochladen": books a
real voucher via the same Vouchers API as an explicit category, using a
generic catch-all per direction (Einnahmen for AR/AR-CM, Sonstige
Ausgaben for AP/AP-CM) resolved per invoice so a mixed bulk upload still
files each one correctly. The true "Ohne Kategorie hochladen" (plain,
uncategorized Files-drop) option is unchanged and still available.

Also fixes APC (AP credit memo) incorrectly booking as voucher type
purchaseinvoice instead of purchasecreditnote.
</comment><date>2026-09-14 13:05:46 +0200</date><id>3648fbba0e22b85d8209ea8ec5b961f204aff7e9</id><msg>Lexoffice upload: default AP invoices into Ausgaben, not the general inbox</msg><path><editType>edit</editType><file>app/components/sales/LexofficeCategoryModal.vue</file></path><path><editType>edit</editType><file>server/api/invoices/lexoffice-upload.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/pages/accounting/bank-transactions/index.vue</affectedPath><commitId>d7464e740863297d158a64b96ec8573d0e755371</commitId><timestamp>1789391406000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Bank fetch coverage: show import progress per month, not just staged

Coverage cells only reflected whether any statement was staged for a
month; add the imported/open counts the coverage endpoint already
returns so a month reads green only once fully imported, amber while
partially imported, with the count shown. Also surface the imported
count as a pill on the connection row, next to the existing pending one.
</comment><date>2026-09-14 15:10:06 +0200</date><id>d7464e740863297d158a64b96ec8573d0e755371</id><msg>Bank fetch coverage: show import progress per month, not just staged</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/accounting/bank-transactions/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.env-dev</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>.gitignore</affectedPath><affectedPath>server/api/telephony/cid-lookup/[number].get.ts</affectedPath><affectedPath>server/utils/elasticHelper.ts</affectedPath><affectedPath>.env</affectedPath><affectedPath>.env-prod</affectedPath><commitId>3c67c7ed036f479cad2a91044c687bb5dbfbe6a4</commitId><timestamp>1789399518000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add asterisk lookup endpoint

Squashed to drop an accidentally committed 134MB HAR capture file
that was blocking the push (GitHub's 100MB file size limit); also
gitignore *.har so this can't recur.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_013G7aDXCyYUwGgTG81QTP8E
</comment><date>2026-09-14 17:25:18 +0200</date><id>3c67c7ed036f479cad2a91044c687bb5dbfbe6a4</id><msg>Add asterisk lookup endpoint</msg><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>.gitignore</file></path><path><editType>edit</editType><file>.env</file></path><path><editType>edit</editType><file>server/utils/elasticHelper.ts</file></path><path><editType>edit</editType><file>.env-dev</file></path><path><editType>edit</editType><file>.env-prod</file></path><path><editType>add</editType><file>server/api/telephony/cid-lookup/[number].get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/offers/conditions/index.post.ts</affectedPath><affectedPath>server/utils/offers/quotePdf.ts</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><commitId>0d5c36c95d22b6066ed5d0718459bb0e6e13c578</commitId><timestamp>1789403035000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Quote: configurable grading pricing (time/fixed + description) and save-draft button

Grading is now priced by time/effort or a fixed price with a freetext
description printed as a subtext, instead of a flat by-effort checkbox.
Also adds a Save button on the quote modal to persist offer_conditions
without sending the quote.
</comment><date>2026-09-14 18:23:55 +0200</date><id>0d5c36c95d22b6066ed5d0718459bb0e6e13c578</id><msg>Quote: configurable grading pricing (time/fixed + description) and save-draft button</msg><path><editType>edit</editType><file>server/utils/offers/quotePdf.ts</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>add</editType><file>server/api/offers/conditions/index.post.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/offers/quotePdf.ts</affectedPath><affectedPath>app/pages/index.vue</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>server/utils/offers/offerConditions.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><commitId>26efb3a1498df891c0853f9e44aae23876a7713c</commitId><timestamp>1789403770000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Quote: customer-requirements checklist; dashboard: leads card quick actions

Add a "Kundenanforderungen" section to the quote modal — freetext bullet
points each answered possible/not possible (green check / red X) or with
a freetext answer, printed as a checklist in the PDF.

Also add "create lead" and "open all leads" icon buttons to the dashboard's
latest-leads card header.
</comment><date>2026-09-14 18:36:10 +0200</date><id>26efb3a1498df891c0853f9e44aae23876a7713c</id><msg>Quote: customer-requirements checklist; dashboard: leads card quick actions</msg><path><editType>edit</editType><file>app/pages/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/utils/offers/quotePdf.ts</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path><path><editType>edit</editType><file>server/utils/offers/offerConditions.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/oauth/amazon/test-connection.post.ts</affectedPath><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><affectedPath>.env-prod</affectedPath><commitId>82e20b0c80024eabe37fea705ff9d11134cfbf58</commitId><timestamp>1789417063000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon: switch central OAuth app to Published, fix test-connection + credential UI

Order source 1000026 stopped importing because the previous central Amazon app
("logship", Draft) hit its mandatory 180-day LWA Client Secret rotation deadline
(2026-09-12) — LWA still authenticated fine, but every SP-API call was denied.
Reconnecting the seller's own authorization doesn't rotate the app's secret, so
that never fixed it. Standardized the central app on "LogShip App" (Published)
instead, matching what order source 1000000 already used successfully.

Also:
- test-connection.post.ts: report failure (with Amazon's real error text) when
  every SP-API endpoint is denied, instead of always defaulting to a misleading
  "missing Tax Invoicing role" message.
- OrderSourceForm.vue: hide the raw Client ID / Client Secret / Refresh Token
  fields for Amazon by default (Connect/Reconnect manages them automatically);
  only reveal them behind an explicit "uses its own separate Amazon Developer
  app" toggle.
</comment><date>2026-09-14 22:17:43 +0200</date><id>82e20b0c80024eabe37fea705ff9d11134cfbf58</id><msg>Amazon: switch central OAuth app to Published, fix test-connection + credential UI</msg><path><editType>edit</editType><file>server/api/oauth/amazon/test-connection.post.ts</file></path><path><editType>edit</editType><file>.env-prod</file></path><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/sales/sis/listings.get.ts</affectedPath><affectedPath>server/api/sales/sis/order-sources.get.ts</affectedPath><affectedPath>app/composables/menu/admin/sales.ts</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><affectedPath>app/pages/sales/sis/index.vue</affectedPath><affectedPath>server/api/sales/sis/offers.post.ts</affectedPath><affectedPath>server/utils/amazonSpApi.ts</affectedPath><affectedPath>server/utils/sisMatching.ts</affectedPath><affectedPath>server/api/sales/sis/price-update.post.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>7ccda3abf09f752e54f2ad7299b242330511d169</commitId><timestamp>1789424614000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>SIS: new Amazon pricing control page — compare internal vs Amazon price/qty, Buy Box, fees, push corrected prices

Admin-only page under Sales comparing internal price/stock against what's
live on Amazon for each Amazon order source, with a one-click price push
back to Amazon. New Amazon SP-API surface in amazonSpApi.ts: bulk merchant
listings report (Reports API, the source of truth for "what's on Amazon"),
Listings Items API read/patch, Product Pricing API (Buy Box), Fees Estimate
API. Product matching is SKU-first (Value/SKU) with ASIN as fallback, via
sisMatching.ts. Verified end-to-end against live production data, including
a real price push (Amazon's Listings Items PATCH turned out to be async
despite returning immediately, so pushes poll briefly then trust the
accepted submission, with a short-lived overlay so a subsequent bulk report
refresh can't revert a just-pushed price before Amazon's own report catches
up).
</comment><date>2026-09-15 00:23:34 +0200</date><id>7ccda3abf09f752e54f2ad7299b242330511d169</id><msg>SIS: new Amazon pricing control page — compare internal vs Amazon price/qty, Buy Box, fees, push corrected prices</msg><path><editType>add</editType><file>server/api/sales/sis/price-update.post.ts</file></path><path><editType>edit</editType><file>app/composables/menu/admin/sales.ts</file></path><path><editType>add</editType><file>app/pages/sales/sis/index.vue</file></path><path><editType>add</editType><file>server/api/sales/sis/listings.get.ts</file></path><path><editType>add</editType><file>server/api/sales/sis/order-sources.get.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/api/sales/sis/offers.post.ts</file></path><path><editType>edit</editType><file>server/utils/amazonSpApi.ts</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path><path><editType>add</editType><file>server/utils/sisMatching.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>736</buildNumber><marked><SHA1>d626e2ef330acc638feb470c8d8c8d79fe8c6845</SHA1><branch><SHA1>d626e2ef330acc638feb470c8d8c8d79fe8c6845</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>d626e2ef330acc638feb470c8d8c8d79fe8c6845</SHA1><branch><SHA1>d626e2ef330acc638feb470c8d8c8d79fe8c6845</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>d626e2ef330acc638feb470c8d8c8d79fe8c6845</SHA1><branch><SHA1>d626e2ef330acc638feb470c8d8c8d79fe8c6845</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#736</displayName><duration>69251</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #736</fullDisplayName><id>736</id><inProgress>false</inProgress><keepLog>false</keepLog><number>736</number><queueId>5690</queueId><result>SUCCESS</result><timestamp>1789344000276</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/736/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>735</buildNumber><marked><SHA1>d626e2ef330acc638feb470c8d8c8d79fe8c6845</SHA1><branch><SHA1>d626e2ef330acc638feb470c8d8c8d79fe8c6845</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>d626e2ef330acc638feb470c8d8c8d79fe8c6845</SHA1><branch><SHA1>d626e2ef330acc638feb470c8d8c8d79fe8c6845</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>d626e2ef330acc638feb470c8d8c8d79fe8c6845</SHA1><branch><SHA1>d626e2ef330acc638feb470c8d8c8d79fe8c6845</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#735</displayName><duration>68175</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #735</fullDisplayName><id>735</id><inProgress>false</inProgress><keepLog>false</keepLog><number>735</number><queueId>5689</queueId><result>SUCCESS</result><timestamp>1789257600272</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/735/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/generate-shipments.vue</affectedPath><affectedPath>app/composables/useShipperLogo.ts</affectedPath><affectedPath>server/api/orders/openso-generation-queue.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>f263d5555ef9086194f5d605f8dd33374754d72b</commitId><timestamp>1789232580000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Generate shipments: shipper filter (queue-driven, same semantics as the qty-1 option) — openso-generation-queue accepts shipperIds + returns shipperId/shipperName; new 'Only selected shippers' option card with a logo multi-select (useShipperLogo composable centralises the carrier→logo mapping, fallback badge for unknown carriers), select all/clear + counter, submit gated until a shipper is picked, shipper shown in progress + result labels; options block restyled into 'Order filters' / 'Process options' groups with subtitle + ⓘ hover tooltip per option, previously hardcoded English options translated (en/de/es/ne)
</comment><date>2026-09-12 19:03:00 +0200</date><id>f263d5555ef9086194f5d605f8dd33374754d72b</id><msg>Generate shipments: shipper filter (queue-driven, same semantics as the qty-1 option) — openso-generation-queue accepts shipperIds + returns shipperId/shipperName; new 'Only selected shippers' option card with a logo multi-select (useShipperLogo composable centralises the carrier→logo mapping, fallback badge for unknown carriers), select all/clear + counter, submit gated until a shipper is picked, shipper shown in progress + result labels; options block restyled into 'Order filters' / 'Process options' groups with subtitle + ⓘ hover tooltip per option, previously hardcoded English options translated (en/de/es/ne)</msg><path><editType>add</editType><file>app/composables/useShipperLogo.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/api/orders/openso-generation-queue.get.ts</file></path><path><editType>edit</editType><file>app/pages/generate-shipments.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/users/users/index.vue</affectedPath><affectedPath>server/api/admin/users/update.put.ts</affectedPath><affectedPath>app/components/partners/PartnerDetailRecordUser.vue</affectedPath><affectedPath>app/pages/users/users/create.vue</affectedPath><affectedPath>server/api/telephony/me.get.ts</affectedPath><affectedPath>app/components/DialButton.vue</affectedPath><affectedPath>server/utils/telephony/extensions.ts</affectedPath><affectedPath>app/pages/users/external-users/create.vue</affectedPath><affectedPath>app/pages/users/external-users/[id]/duplicate.vue</affectedPath><affectedPath>server/utils/telephony/dialAccess.ts</affectedPath><affectedPath>app/composables/useClickToDial.ts</affectedPath><affectedPath>.env-dev</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>server/api/telephony/extensions.get.ts</affectedPath><affectedPath>server/api/telephony/dial.post.ts</affectedPath><affectedPath>app/pages/users/leads/[id]/edit.vue</affectedPath><affectedPath>server/utils/telephony/phoneActivity.ts</affectedPath><affectedPath>app/pages/users/external-users/[id]/edit.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/components/sales/OrderForm.vue</affectedPath><affectedPath>app/pages/users/users/[id]/edit.vue</affectedPath><affectedPath>app/components/partners/PartnerDetailRecordLocation.vue</affectedPath><affectedPath>server/api/admin/users/store.post.ts</affectedPath><affectedPath>server/utils/telephony/amiClient.ts</affectedPath><affectedPath>app/components/admin/UserForm.vue</affectedPath><affectedPath>.env</affectedPath><affectedPath>app/components/AgGrid/AgDialPhone.vue</affectedPath><affectedPath>app/pages/users/users/[id]/view.vue</affectedPath><affectedPath>app/pages/users/leads/index.vue</affectedPath><affectedPath>app/pages/users/external-users/index.vue</affectedPath><affectedPath>app/components/SearchModal.vue</affectedPath><affectedPath>app/components/admin/LeadForm.vue</affectedPath><affectedPath>app/pages/users/users/[id]/duplicate.vue</affectedPath><affectedPath>app/pages/users/external-users/[id]/view.vue</affectedPath><affectedPath>server/utils/telephony/callTracker.ts</affectedPath><affectedPath>app/components/integrations/CommissionModal.vue</affectedPath><affectedPath>.env-prod</affectedPath><affectedPath>app/pages/users/leads/[id]/view.vue</affectedPath><commitId>bd0aee220aeaa8e0f4543e7a844a66569e7a0f32</commitId><timestamp>1789236101000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Click-to-dial via FreePBX/Asterisk AMI + AD_User.SIP_Extension CRUD — new &lt;DialButton&gt; next to every phone field (user/lead/contact forms + views, partner contacts/locations, order ship-to phone, commission modal, search results, phone columns of the user/lead lists via AgDialPhone), visible only for system users with a SIP_Extension (server-authoritative gate via JWT + models/ad_user, 10-min cache); click opens a popover with the PBX extension chooser (DeviceStateList with live state joined with ERP user names, own extension preselected, free entry, remembered per browser) and dials: POST /api/telephony/dial originates PJSIP/&lt;ext&gt; (Local/&lt;ext&gt;@from-internal for dialplan-routed extensions) with the target as caller-id, returns right after the originate is accepted (1.5 s fast-fail window for an unreachable phone); a detached per-call AMI tracker follows OriginateResponse/DialBegin/DialEnd/Hangup via the inherited __LOGSHIP_CALL_ID channel var and writes a C_ContactActivity (type PC, reached/not reached + duration, German cause texts) on the called AD_User (or the partner's contact user) with the service token — fail-soft, unref'd timers, 3 h cap, per-process; new runtimeConfig.asterisk + CLICK_TO_DIAL_ENABLED/ASTERISK_* env keys; user pages: admin-only SIP extension field (internal tab, system users only, greyed for non-admins), retrieve/save wiring, view row, 'SIP Ext.' grid column, update/store routes gate the key on isAdminVerified; FreePBX: [logship] manager user (manager_custom.conf, LAN ACL, originate/call/reporting) + channelvars=LOGSHIP_CALL_ID in manager.conf
</comment><date>2026-09-12 20:01:41 +0200</date><id>bd0aee220aeaa8e0f4543e7a844a66569e7a0f32</id><msg>Click-to-dial via FreePBX/Asterisk AMI + AD_User.SIP_Extension CRUD — new &lt;DialButton&gt; next to every phone field (user/lead/contact forms + views, partner contacts/locations, order ship-to phone, commission modal, search results, phone columns of the user/lead lists via AgDialPhone), visible only for system users with a SIP_Extension (server-authoritative gate via JWT + models/ad_user, 10-min cache); click opens a popover with the PBX extension chooser (DeviceStateList with live state joined with ERP user names, own extension preselected, free entry, remembered per browser) and dials: POST /api/telephony/dial originates PJSIP/&lt;ext&gt; (Local/&lt;ext&gt;@from-internal for dialplan-routed extensions) with the target as caller-id, returns right after the originate is accepted (1.5 s fast-fail window for an unreachable phone); a detached per-call AMI tracker follows OriginateResponse/DialBegin/DialEnd/Hangup via the inherited __LOGSHIP_CALL_ID channel var and writes a C_ContactActivity (type PC, reached/not reached + duration, German cause texts) on the called AD_User (or the partner's contact user) with the service token — fail-soft, unref'd timers, 3 h cap, per-process; new runtimeConfig.asterisk + CLICK_TO_DIAL_ENABLED/ASTERISK_* env keys; user pages: admin-only SIP extension field (internal tab, system users only, greyed for non-admins), retrieve/save wiring, view row, 'SIP Ext.' grid column, update/store routes gate the key on isAdminVerified; FreePBX: [logship] manager user (manager_custom.conf, LAN ACL, originate/call/reporting) + channelvars=LOGSHIP_CALL_ID in manager.conf</msg><path><editType>add</editType><file>server/utils/telephony/phoneActivity.ts</file></path><path><editType>edit</editType><file>.env-prod</file></path><path><editType>edit</editType><file>app/pages/users/external-users/index.vue</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>app/pages/users/leads/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/pages/users/users/[id]/edit.vue</file></path><path><editType>edit</editType><file>.env-dev</file></path><path><editType>edit</editType><file>app/pages/users/external-users/[id]/duplicate.vue</file></path><path><editType>add</editType><file>server/utils/telephony/dialAccess.ts</file></path><path><editType>add</editType><file>server/utils/telephony/callTracker.ts</file></path><path><editType>edit</editType><file>app/components/admin/UserForm.vue</file></path><path><editType>edit</editType><file>app/pages/users/leads/index.vue</file></path><path><editType>add</editType><file>server/utils/telephony/extensions.ts</file></path><path><editType>add</editType><file>server/api/telephony/me.get.ts</file></path><path><editType>edit</editType><file>app/pages/users/users/[id]/view.vue</file></path><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path><path><editType>edit</editType><file>app/pages/users/users/[id]/duplicate.vue</file></path><path><editType>edit</editType><file>app/pages/users/leads/[id]/view.vue</file></path><path><editType>edit</editType><file>server/api/admin/users/update.put.ts</file></path><path><editType>add</editType><file>app/components/AgGrid/AgDialPhone.vue</file></path><path><editType>edit</editType><file>app/components/sales/OrderForm.vue</file></path><path><editType>add</editType><file>app/composables/useClickToDial.ts</file></path><path><editType>add</editType><file>server/utils/telephony/amiClient.ts</file></path><path><editType>edit</editType><file>.env</file></path><path><editType>edit</editType><file>app/pages/users/external-users/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/pages/users/external-users/create.vue</file></path><path><editType>add</editType><file>app/components/DialButton.vue</file></path><path><editType>edit</editType><file>app/components/partners/PartnerDetailRecordLocation.vue</file></path><path><editType>edit</editType><file>app/components/partners/PartnerDetailRecordUser.vue</file></path><path><editType>edit</editType><file>server/api/admin/users/store.post.ts</file></path><path><editType>edit</editType><file>app/components/admin/LeadForm.vue</file></path><path><editType>edit</editType><file>app/pages/users/users/create.vue</file></path><path><editType>edit</editType><file>app/pages/users/users/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/users/external-users/[id]/view.vue</file></path><path><editType>edit</editType><file>app/components/integrations/CommissionModal.vue</file></path><path><editType>add</editType><file>server/api/telephony/dial.post.ts</file></path><path><editType>add</editType><file>server/api/telephony/extensions.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/admin/LeadDetailRecordActivity.vue</affectedPath><affectedPath>app/utils/activityFormat.ts</affectedPath><commitId>9a43b22bbf9db5090902c079f1d6bcf0c76fca38</commitId><timestamp>1789236490000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Lead activities: rich rendering of activity notes — new app/utils/activityFormat.ts (escape → linkify → decorate; safe for v-html) renders line-initial / '·'-separated 'Label:' as bold, 'Label (…): https://…' lines as a labelled link chip (e.g. the online confirmation / signing link) instead of the raw token URL, URLs and e-mail addresses as links, file names (.pdf/.docx/…) as badges, **bold**/_italic_ markers, blank lines as paragraph gaps; notes written as simple HTML (&lt;b&gt;, &lt;i&gt;, &lt;u&gt;, &lt;a&gt;, lists, &lt;br&gt;) are sanitised to a tag whitelist with http(s)/mailto hrefs only; LeadDetailRecordActivity.vue binds the formatter, adds a formatting hint + live preview in the note modal and the :deep styles
</comment><date>2026-09-12 20:08:10 +0200</date><id>9a43b22bbf9db5090902c079f1d6bcf0c76fca38</id><msg>Lead activities: rich rendering of activity notes — new app/utils/activityFormat.ts (escape → linkify → decorate; safe for v-html) renders line-initial / '·'-separated 'Label:' as bold, 'Label (…): https://…' lines as a labelled link chip (e.g. the online confirmation / signing link) instead of the raw token URL, URLs and e-mail addresses as links, file names (.pdf/.docx/…) as badges, **bold**/_italic_ markers, blank lines as paragraph gaps; notes written as simple HTML (&lt;b&gt;, &lt;i&gt;, &lt;u&gt;, &lt;a&gt;, lists, &lt;br&gt;) are sanitised to a tag whitelist with http(s)/mailto hrefs only; LeadDetailRecordActivity.vue binds the formatter, adds a formatting hint + live preview in the note modal and the :deep styles</msg><path><editType>edit</editType><file>app/components/admin/LeadDetailRecordActivity.vue</file></path><path><editType>add</editType><file>app/utils/activityFormat.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/offers/contractPackage.ts</affectedPath><affectedPath>app/pages/sepa/[token].vue</affectedPath><affectedPath>app/components/offers/SigningLinksPanel.vue</affectedPath><affectedPath>app/components/offers/SepaMandateModal.vue</affectedPath><affectedPath>app/pages/partners/partners/[id]/edit.vue</affectedPath><affectedPath>app/composables/useOfferContract.ts</affectedPath><affectedPath>server/api/public/sepa/[token]/document/[key].get.ts</affectedPath><affectedPath>app/utils/iban.ts</affectedPath><affectedPath>server/utils/offers/sepaTexts.ts</affectedPath><affectedPath>.env-dev</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>server/utils/offers/sepaMandate.ts</affectedPath><affectedPath>server/api/offers/sepa/preview.post.ts</affectedPath><affectedPath>app/pages/users/leads/[id]/edit.vue</affectedPath><affectedPath>server/utils/offers/sepaPdf.ts</affectedPath><affectedPath>server/api/public/sign/[token]/index.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>server/api/offers/contract/send.post.ts</affectedPath><affectedPath>.env</affectedPath><affectedPath>app/pages/sign/[token].vue</affectedPath><affectedPath>server/utils/offers/contractSigning.ts</affectedPath><affectedPath>server/api/public/sign/[token]/index.post.ts</affectedPath><affectedPath>server/api/offers/contract/signing-status.get.ts</affectedPath><affectedPath>server/api/public/sepa/[token]/request-renewal.post.ts</affectedPath><affectedPath>server/api/public/sepa/[token]/index.post.ts</affectedPath><affectedPath>server/api/public/sepa/[token]/index.get.ts</affectedPath><affectedPath>app/components/offers/ContractModal.vue</affectedPath><affectedPath>server/api/offers/sepa/send.post.ts</affectedPath><affectedPath>.env-prod</affectedPath><affectedPath>server/utils/offers/contractSigningDb.ts</affectedPath><commitId>0a58e7b9aa9f7f3a6ab93112d2d85788ab0b62e4</commitId><timestamp>1789237810000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>SEPA-Lastschriftmandat: opt-in contract annex + standalone send/fill/sign flow — new pdf-lib mandate (server/utils/offers/sepaPdf.ts: A4, branded, native fillable AcroForm fields for company/account holder/address/IBAN/BIC/bank/place-date, signed variant sets values, draws the signature, adds a protocol line and flattens), DE/EN mandate wording per DK/EPC (sepaTexts.ts: CORE with 8-week refund notice / B2B without, pre-notification line, 36-month lapse), IBAN validation in app/utils/iban.ts (ISO 13616 per-country lengths, MOD 97-10, SEPA country set, BIC check) used live in the portals and re-checked server-side; (1) contract package: 'Anlage 4 — SEPA-Lastschriftmandat' checkbox in ContractModal (default off, scheme B2B/CORE + payment type + pre-notification days), assembled by contractPackage.ts, mandate stored on the signing row, /sign portal gets step 1b (account holder, IBAN, BIC, bank) + two mandate declarations, finalizeSignature renders the filled+signed mandate, attaches it to the record and patches offer_conditions.sepa (masked IBAN); (2) standalone: SepaMandateModal ('SEPA' button on the partner and lead pages, DE default/EN, prefill from partner contacts + location, preview) → POST /api/offers/sepa/send (signing kind 'sepa', mail with /sepa/&lt;token&gt;, blank mandate attached to the record, activity) → public /sepa/&lt;token&gt; portal + routes (fill, validate, sign) → finalizeSepaMandate attaches the signed PDF to the sending C_BPartner / lead user, logs an activity, mails customer + info@; signing-status + SigningLinksPanel know kind 'sepa' (panel now also on the partner page); runtimeConfig.sepa + SEPA_CREDITOR_ID/SEPA_PRENOTIFICATION_DAYS env keys (creditor id still to be filled in)
</comment><date>2026-09-12 20:30:10 +0200</date><id>0a58e7b9aa9f7f3a6ab93112d2d85788ab0b62e4</id><msg>SEPA-Lastschriftmandat: opt-in contract annex + standalone send/fill/sign flow — new pdf-lib mandate (server/utils/offers/sepaPdf.ts: A4, branded, native fillable AcroForm fields for company/account holder/address/IBAN/BIC/bank/place-date, signed variant sets values, draws the signature, adds a protocol line and flattens), DE/EN mandate wording per DK/EPC (sepaTexts.ts: CORE with 8-week refund notice / B2B without, pre-notification line, 36-month lapse), IBAN validation in app/utils/iban.ts (ISO 13616 per-country lengths, MOD 97-10, SEPA country set, BIC check) used live in the portals and re-checked server-side; (1) contract package: 'Anlage 4 — SEPA-Lastschriftmandat' checkbox in ContractModal (default off, scheme B2B/CORE + payment type + pre-notification days), assembled by contractPackage.ts, mandate stored on the signing row, /sign portal gets step 1b (account holder, IBAN, BIC, bank) + two mandate declarations, finalizeSignature renders the filled+signed mandate, attaches it to the record and patches offer_conditions.sepa (masked IBAN); (2) standalone: SepaMandateModal ('SEPA' button on the partner and lead pages, DE default/EN, prefill from partner contacts + location, preview) → POST /api/offers/sepa/send (signing kind 'sepa', mail with /sepa/&lt;token&gt;, blank mandate attached to the record, activity) → public /sepa/&lt;token&gt; portal + routes (fill, validate, sign) → finalizeSepaMandate attaches the signed PDF to the sending C_BPartner / lead user, logs an activity, mails customer + info@; signing-status + SigningLinksPanel know kind 'sepa' (panel now also on the partner page); runtimeConfig.sepa + SEPA_CREDITOR_ID/SEPA_PRENOTIFICATION_DAYS env keys (creditor id still to be filled in)</msg><path><editType>edit</editType><file>.env-dev</file></path><path><editType>add</editType><file>app/components/offers/SepaMandateModal.vue</file></path><path><editType>edit</editType><file>server/utils/offers/contractSigning.ts</file></path><path><editType>add</editType><file>server/api/public/sepa/[token]/request-renewal.post.ts</file></path><path><editType>edit</editType><file>app/pages/sign/[token].vue</file></path><path><editType>add</editType><file>server/api/offers/sepa/send.post.ts</file></path><path><editType>edit</editType><file>.env</file></path><path><editType>add</editType><file>server/api/public/sepa/[token]/index.post.ts</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>app/composables/useOfferContract.ts</file></path><path><editType>edit</editType><file>server/api/offers/contract/send.post.ts</file></path><path><editType>edit</editType><file>.env-prod</file></path><path><editType>add</editType><file>server/api/public/sepa/[token]/document/[key].get.ts</file></path><path><editType>add</editType><file>server/utils/offers/sepaPdf.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/api/offers/contract/signing-status.get.ts</file></path><path><editType>edit</editType><file>server/utils/offers/contractSigningDb.ts</file></path><path><editType>edit</editType><file>server/utils/offers/contractPackage.ts</file></path><path><editType>edit</editType><file>server/api/public/sign/[token]/index.get.ts</file></path><path><editType>add</editType><file>app/pages/sepa/[token].vue</file></path><path><editType>edit</editType><file>app/components/offers/SigningLinksPanel.vue</file></path><path><editType>edit</editType><file>server/api/public/sign/[token]/index.post.ts</file></path><path><editType>add</editType><file>server/utils/offers/sepaMandate.ts</file></path><path><editType>edit</editType><file>app/pages/users/leads/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/components/offers/ContractModal.vue</file></path><path><editType>add</editType><file>server/utils/offers/sepaTexts.ts</file></path><path><editType>edit</editType><file>app/pages/partners/partners/[id]/edit.vue</file></path><path><editType>add</editType><file>app/utils/iban.ts</file></path><path><editType>add</editType><file>server/api/offers/sepa/preview.post.ts</file></path><path><editType>add</editType><file>server/api/public/sepa/[token]/index.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/recipes.md</affectedPath><commitId>1cb4bf0a8ddba51fba801514f9cb3269bbca259c</commitId><timestamp>1789238308000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Recipes: click-to-dial (FreePBX AMI, &lt;DialButton&gt;, PBX gotchas) and SEPA mandate (contract annex + standalone portal, IBAN check, creditor id)
</comment><date>2026-09-12 20:38:28 +0200</date><id>1cb4bf0a8ddba51fba801514f9cb3269bbca259c</id><msg>Recipes: click-to-dial (FreePBX AMI, &lt;DialButton&gt;, PBX gotchas) and SEPA mandate (contract annex + standalone portal, IBAN check, creditor id)</msg><path><editType>edit</editType><file>reference/recipes.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/admin/users/update.put.ts</affectedPath><affectedPath>app/components/dashboard/ProfileForm.vue</affectedPath><affectedPath>app/pages/users/profile/index.vue</affectedPath><commitId>a419d4d00e539ecd68e844a02e2fcbf3944828b9</commitId><timestamp>1789239065000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Profile: system users can set their own SIP extension (click-to-dial) on /users/profile → Contact tab — field shown only for IsSystemUser records, saved via the profile's existing PUT; update.put.ts accepts sipExtension for the caller's own record (JWT AD_User_ID = body.id) in addition to verified admins
</comment><date>2026-09-12 20:51:05 +0200</date><id>a419d4d00e539ecd68e844a02e2fcbf3944828b9</id><msg>Profile: system users can set their own SIP extension (click-to-dial) on /users/profile → Contact tab — field shown only for IsSystemUser records, saved via the profile's existing PUT; update.put.ts accepts sipExtension for the caller's own record (JWT AD_User_ID = body.id) in addition to verified admins</msg><path><editType>edit</editType><file>app/components/dashboard/ProfileForm.vue</file></path><path><editType>edit</editType><file>server/api/admin/users/update.put.ts</file></path><path><editType>edit</editType><file>app/pages/users/profile/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/NewNavBar.vue</affectedPath><affectedPath>app/components/QuickDial.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>9e9dac38e431a6bed27c32b76c6319179633d87d</commitId><timestamp>1789239210000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Top bar quick dial (admins with a SIP extension): number input left of the user menu — Enter dials with the own extension, the dial button opens the extension chooser; hidden for non-admins and users who cannot dial; error-boundaried like the chat badge
</comment><date>2026-09-12 20:53:30 +0200</date><id>9e9dac38e431a6bed27c32b76c6319179633d87d</id><msg>Top bar quick dial (admins with a SIP extension): number input left of the user menu — Enter dials with the own extension, the dial button opens the extension chooser; hidden for non-admins and users who cannot dial; error-boundaried like the chat badge</msg><path><editType>add</editType><file>app/components/QuickDial.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/NewNavBar.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/dashboard/RecentCallsCard.vue</affectedPath><affectedPath>app/pages/index.vue</affectedPath><affectedPath>package-lock.json</affectedPath><affectedPath>app/components/TopMegaBar.vue</affectedPath><affectedPath>.env</affectedPath><affectedPath>server/api/telephony/recent-calls.get.ts</affectedPath><affectedPath>.env-dev</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>server/utils/telephony/cdr.ts</affectedPath><affectedPath>package.json</affectedPath><affectedPath>reference/recipes.md</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>.env-prod</affectedPath><commitId>591fe6109509809117dc5b97cb1136ef33ba8472</commitId><timestamp>1789240092000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Dashboard 'Letzte Anrufe' card (admin roles) + quick dial placed in the top bar — new GET /api/telephony/recent-calls reads the FreePBX CDR via a read-only MariaDB user (mysql2, PBX_CDR_* env) and reduces the many per-leg cdr rows to ONE entry per call (grouped by linkedid; inbound/outbound by trunk channel, answered = ANSWERED Dial leg with billsec&gt;0 to a device), showing the last 20 missed inbound + successful outbound calls (all/in/out filter, missed badge, extension + duration, auto-refresh 60 s, 30 s server cache); numbers are clickable (click-to-dial with the own extension) plus a chooser button per row; QuickDial moved into the TopMegaBar user-menu container (the app layout uses TopMegaBar, not NewNavBar) so it renders left of the user menu; caller-id names stripped of the PBX 'LogYou:' / 'Anruf:' prefixes; recipe note
</comment><date>2026-09-12 21:08:12 +0200</date><id>591fe6109509809117dc5b97cb1136ef33ba8472</id><msg>Dashboard 'Letzte Anrufe' card (admin roles) + quick dial placed in the top bar — new GET /api/telephony/recent-calls reads the FreePBX CDR via a read-only MariaDB user (mysql2, PBX_CDR_* env) and reduces the many per-leg cdr rows to ONE entry per call (grouped by linkedid; inbound/outbound by trunk channel, answered = ANSWERED Dial leg with billsec&gt;0 to a device), showing the last 20 missed inbound + successful outbound calls (all/in/out filter, missed badge, extension + duration, auto-refresh 60 s, 30 s server cache); numbers are clickable (click-to-dial with the own extension) plus a chooser button per row; QuickDial moved into the TopMegaBar user-menu container (the app layout uses TopMegaBar, not NewNavBar) so it renders left of the user menu; caller-id names stripped of the PBX 'LogYou:' / 'Anruf:' prefixes; recipe note</msg><path><editType>edit</editType><file>package.json</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path><path><editType>edit</editType><file>app/components/TopMegaBar.vue</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path><path><editType>edit</editType><file>package-lock.json</file></path><path><editType>add</editType><file>server/api/telephony/recent-calls.get.ts</file></path><path><editType>add</editType><file>server/utils/telephony/cdr.ts</file></path><path><editType>edit</editType><file>.env-dev</file></path><path><editType>edit</editType><file>.env</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>.env-prod</file></path><path><editType>add</editType><file>app/components/dashboard/RecentCallsCard.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/dashboard/RecentCallsCard.vue</affectedPath><affectedPath>app/components/DialButton.vue</affectedPath><affectedPath>server/api/telephony/match-contacts.post.ts</affectedPath><affectedPath>app/pages/index.vue</affectedPath><commitId>2f23a38d108cdab644854df9215c2bc74095ea38</commitId><timestamp>1789250857000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Dashboard: first row now Open Orders (0.9fr, ≈−10 %) · tickets (0.6fr, ≈−40 %) · recent-calls card (0.7fr) side by side; tickets fullscreen button commented out for now; recent-calls card limited to the last 10 calls, clicking a number opens the dial popover (own extension from the profile preselected, call starts only after 'Anrufen') instead of dialing immediately, and phone numbers are matched to ERP contacts asynchronously after render via new POST /api/telephony/match-contacts (Elasticsearch ad_user index, regexp on the keyword phone/phone2 fields, fail-soft) — matched names shown with a contact icon and passed as the activity target; DialButton gains a default slot to use custom trigger content (the number text)
</comment><date>2026-09-13 00:07:37 +0200</date><id>2f23a38d108cdab644854df9215c2bc74095ea38</id><msg>Dashboard: first row now Open Orders (0.9fr, ≈−10 %) · tickets (0.6fr, ≈−40 %) · recent-calls card (0.7fr) side by side; tickets fullscreen button commented out for now; recent-calls card limited to the last 10 calls, clicking a number opens the dial popover (own extension from the profile preselected, call starts only after 'Anrufen') instead of dialing immediately, and phone numbers are matched to ERP contacts asynchronously after render via new POST /api/telephony/match-contacts (Elasticsearch ad_user index, regexp on the keyword phone/phone2 fields, fail-soft) — matched names shown with a contact icon and passed as the activity target; DialButton gains a default slot to use custom trigger content (the number text)</msg><path><editType>edit</editType><file>app/components/DialButton.vue</file></path><path><editType>edit</editType><file>app/components/dashboard/RecentCallsCard.vue</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path><path><editType>add</editType><file>server/api/telephony/match-contacts.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/demo/index.vue</affectedPath><affectedPath>app/pages/demo/set-builder.vue</affectedPath><commitId>57d1db967c449a684860b40699282d50920ca919</commitId><timestamp>1789252825000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Demo screens for the Stücklisten/Set feature (app/pages/demo)

/demo hub lists real IsBOM articles; /demo/set-builder is a Set-Builder template in quick-order positions style with real product search, component quantities and stock, set image proposals from component photos, and an order-import preview. Public route, no backend writes. Used for logyou.de/leistungen/stuecklisten-bom.

Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01CdyiVTWYfCkMzH8rJyc5Pq
</comment><date>2026-09-13 00:40:25 +0200</date><id>57d1db967c449a684860b40699282d50920ca919</id><msg>Demo screens for the Stücklisten/Set feature (app/pages/demo)</msg><path><editType>add</editType><file>app/pages/demo/index.vue</file></path><path><editType>add</editType><file>app/pages/demo/set-builder.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/dashboard/RecentCallsCard.vue</affectedPath><affectedPath>app/pages/index.vue</affectedPath><affectedPath>server/api/telephony/match-contacts.post.ts</affectedPath><commitId>75a8a5218182d36766c28dd6046e1320a158e6f1</commitId><timestamp>1789253014000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Dashboard call card + first row: uniform column starts (the slot-trigger DialButton was stretched/centered by the flex column → left-aligned, fixed 96px meta column with right-aligned duration/missed), slim low headers on the whole first row (title only, icon 30px; the subtitles move into a header tooltip — calls card tooltip = title / blank line / subtitle / missed count), tickets card header now just 'Tickets', call date shown as Heute / Gestern / dd.MM.yy without time (full weekday + date + time as hover tooltip), matched contact name is now a button opening a teleported menu 'Als Lead öffnen / Als Benutzer öffnen' (+ 'Partner bearbeiten / ansehen' when a C_BPartner is linked) — match-contacts enriches the ES hit with IsSalesLead/IsVendorLead + C_BPartner_ID name from iDempiere (fail-soft) so the known record kind is listed first
</comment><date>2026-09-13 00:43:34 +0200</date><id>75a8a5218182d36766c28dd6046e1320a158e6f1</id><msg>Dashboard call card + first row: uniform column starts (the slot-trigger DialButton was stretched/centered by the flex column → left-aligned, fixed 96px meta column with right-aligned duration/missed), slim low headers on the whole first row (title only, icon 30px; the subtitles move into a header tooltip — calls card tooltip = title / blank line / subtitle / missed count), tickets card header now just 'Tickets', call date shown as Heute / Gestern / dd.MM.yy without time (full weekday + date + time as hover tooltip), matched contact name is now a button opening a teleported menu 'Als Lead öffnen / Als Benutzer öffnen' (+ 'Partner bearbeiten / ansehen' when a C_BPartner is linked) — match-contacts enriches the ES hit with IsSalesLead/IsVendorLead + C_BPartner_ID name from iDempiere (fail-soft) so the known record kind is listed first</msg><path><editType>edit</editType><file>app/components/dashboard/RecentCallsCard.vue</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path><path><editType>edit</editType><file>server/api/telephony/match-contacts.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.gitignore</affectedPath><affectedPath>server/api/telephony/recordings/transcribe.post.ts</affectedPath><affectedPath>server/api/telephony/recordings/index.get.ts</affectedPath><affectedPath>.env</affectedPath><affectedPath>server/api/telephony/recordings/audio.get.ts</affectedPath><affectedPath>server/utils/telephony/recordings.ts</affectedPath><affectedPath>.env-dev</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>server/utils/telephony/cdr.ts</affectedPath><affectedPath>app/pages/users/leads/[id]/edit.vue</affectedPath><affectedPath>server/utils/chatTranscribe.ts</affectedPath><affectedPath>reference/recipes.md</affectedPath><affectedPath>app/components/telephony/CallRecordingsModal.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>.env-prod</affectedPath><commitId>d626e2ef330acc638feb470c8d8c8d79fe8c6845</commitId><timestamp>1789253031000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Lead page 'Aufnahmen': call recordings + whisper transcription — new components/telephony/CallRecordingsModal.vue (button + CTA on /edit/lead-&lt;id&gt;): step 1 lists every FreePBX recording matched by the lead's phone numbers (all pre-selected, single rows can be unticked, in-app audio player + download per row, language select DE/EN/ES/auto), 'Transkribieren' runs the selected ones one after the other through the server whisper.cpp pipeline with real progress, step 2 shows the transcripts to read (optional timestamps), copy and download (single / all as one .txt). Server: server/utils/telephony/recordings.ts (CDR lookup recordingfile&lt;&gt;'' + src/dst suffix match, one row per file, stat on the PBX drops missing/44-byte never-answered files, transcript cache data/call-transcripts/&lt;file&gt;.json, serial whisper queue, timeout 3× audio length), routes telephony/recordings/{index.get,transcribe.post,audio.get} gated by gateFromEvent (staff), chatTranscribe.ts gains transcribeAudioDetailed() (text + timestamped segments, timeout/extra-args options; transcribeAudio() is the wrapper) and no longer converts a .wav onto itself (ffmpeg refused in-place edits); PBX side: /opt/logship-ivr/recordings.js on 192.168.12.73 (systemd logship-recordings, port 8096, LAN allow-list + X-IVR-Secret = IVR_SHARED_SECRET, POST /recordings/stat because Node 8 caps headers at 8 KB, GET /recordings/file/&lt;name&gt;, read-only); runtimeConfig.pbxRecordings + PBX_RECORDINGS_URL env; lead page now defines t (useTranslation) which the SEPA title already referenced; rec_* translations en/de; recipe
</comment><date>2026-09-13 00:43:51 +0200</date><id>d626e2ef330acc638feb470c8d8c8d79fe8c6845</id><msg>Lead page 'Aufnahmen': call recordings + whisper transcription — new components/telephony/CallRecordingsModal.vue (button + CTA on /edit/lead-&lt;id&gt;): step 1 lists every FreePBX recording matched by the lead's phone numbers (all pre-selected, single rows can be unticked, in-app audio player + download per row, language select DE/EN/ES/auto), 'Transkribieren' runs the selected ones one after the other through the server whisper.cpp pipeline with real progress, step 2 shows the transcripts to read (optional timestamps), copy and download (single / all as one .txt). Server: server/utils/telephony/recordings.ts (CDR lookup recordingfile&lt;&gt;'' + src/dst suffix match, one row per file, stat on the PBX drops missing/44-byte never-answered files, transcript cache data/call-transcripts/&lt;file&gt;.json, serial whisper queue, timeout 3× audio length), routes telephony/recordings/{index.get,transcribe.post,audio.get} gated by gateFromEvent (staff), chatTranscribe.ts gains transcribeAudioDetailed() (text + timestamped segments, timeout/extra-args options; transcribeAudio() is the wrapper) and no longer converts a .wav onto itself (ffmpeg refused in-place edits); PBX side: /opt/logship-ivr/recordings.js on 192.168.12.73 (systemd logship-recordings, port 8096, LAN allow-list + X-IVR-Secret = IVR_SHARED_SECRET, POST /recordings/stat because Node 8 caps headers at 8 KB, GET /recordings/file/&lt;name&gt;, read-only); runtimeConfig.pbxRecordings + PBX_RECORDINGS_URL env; lead page now defines t (useTranslation) which the SEPA title already referenced; rec_* translations en/de; recipe</msg><path><editType>add</editType><file>server/api/telephony/recordings/index.get.ts</file></path><path><editType>edit</editType><file>.env</file></path><path><editType>edit</editType><file>.gitignore</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/api/telephony/recordings/transcribe.post.ts</file></path><path><editType>add</editType><file>server/utils/telephony/recordings.ts</file></path><path><editType>edit</editType><file>app/pages/users/leads/[id]/edit.vue</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path><path><editType>edit</editType><file>.env-prod</file></path><path><editType>edit</editType><file>server/utils/chatTranscribe.ts</file></path><path><editType>add</editType><file>app/components/telephony/CallRecordingsModal.vue</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>.env-dev</file></path><path><editType>add</editType><file>server/api/telephony/recordings/audio.get.ts</file></path><path><editType>edit</editType><file>server/utils/telephony/cdr.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>734</buildNumber><marked><SHA1>d51b8503f5d725aa822727839ef7a849d00983b5</SHA1><branch><SHA1>d51b8503f5d725aa822727839ef7a849d00983b5</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>d51b8503f5d725aa822727839ef7a849d00983b5</SHA1><branch><SHA1>d51b8503f5d725aa822727839ef7a849d00983b5</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>d51b8503f5d725aa822727839ef7a849d00983b5</SHA1><branch><SHA1>d51b8503f5d725aa822727839ef7a849d00983b5</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#734</displayName><duration>66708</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #734</fullDisplayName><id>734</id><inProgress>false</inProgress><keepLog>false</keepLog><number>734</number><queueId>5682</queueId><result>SUCCESS</result><timestamp>1789171200273</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/734/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>cca171e8faf50256c8031565eb616abd60ba9ea1</commitId><timestamp>1789121111000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Sales order edit: client admins can void a completed + commissioned/shipped order — new admin-only red truck-off button replaces the disabled lock when the shipment carries a tracking no., opens a dedicated warning modal (lists order + shipments with tracking, explains that shipment/invoice are reversed and stock booked back although the parcel left = goods treated as lost, marketplace not notified, label stays active) with a mandatory acknowledgement checkbox before the VO document action runs (skips the plain browser confirm); non-admins keep the disabled button; en/de/es/ne force_void_* keys
</comment><date>2026-09-11 12:05:11 +0200</date><id>cca171e8faf50256c8031565eb616abd60ba9ea1</id><msg>Sales order edit: client admins can void a completed + commissioned/shipped order — new admin-only red truck-off button replaces the disabled lock when the shipment carries a tracking no., opens a dedicated warning modal (lists order + shipments with tracking, explains that shipment/invoice are reversed and stock booked back although the parcel left = goods treated as lost, marketplace not notified, label stays active) with a mandatory acknowledgement checkbox before the VO document action runs (skips the plain browser confirm); non-admins keep the disabled button; en/de/es/ne force_void_* keys</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>d51b8503f5d725aa822727839ef7a849d00983b5</commitId><timestamp>1789122556000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Sales order force-void (admin): reword warning — 'lost' means the ORDER is lost and cannot be reactivated after voiding (not the goods); modal text, acknowledgement checkbox and button title in en/de/es/ne
</comment><date>2026-09-11 12:29:16 +0200</date><id>d51b8503f5d725aa822727839ef7a849d00983b5</id><msg>Sales order force-void (admin): reword warning — 'lost' means the ORDER is lost and cannot be reactivated after voiding (not the goods); modal text, acknowledgement checkbox and button title in en/de/es/ne</msg><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>733</buildNumber><marked><SHA1>b0144617e997073012c0381e848fff6798b301d7</SHA1><branch><SHA1>b0144617e997073012c0381e848fff6798b301d7</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>b0144617e997073012c0381e848fff6798b301d7</SHA1><branch><SHA1>b0144617e997073012c0381e848fff6798b301d7</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>b0144617e997073012c0381e848fff6798b301d7</SHA1><branch><SHA1>b0144617e997073012c0381e848fff6798b301d7</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#733</displayName><duration>74361</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #733</fullDisplayName><id>733</id><inProgress>false</inProgress><keepLog>false</keepLog><number>733</number><queueId>5679</queueId><result>SUCCESS</result><timestamp>1789084800272</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/733/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/offers/contract/send.post.ts</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>server/utils/offers/quoteConfirmation.ts</affectedPath><affectedPath>app/pages/confirm/[token].vue</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><affectedPath>app/composables/useOfferContract.ts</affectedPath><affectedPath>server/api/offers/quote/send.post.ts</affectedPath><affectedPath>app/pages/sign/[token].vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>server/utils/offers/contractSigning.ts</affectedPath><commitId>a7aa7ae42b222bbcc0ef3667b6bf58dc4e2892f3</commitId><timestamp>1789024134000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Offer/contract e-mails: button is 'Angebot öffnen' / 'Dokumente öffnen' (view only, non-binding) — accepting or signing is described as a separate, optional step on the page; default message texts, info boxes and modal label reworded accordingly
</comment><date>2026-09-10 09:08:54 +0200</date><id>a7aa7ae42b222bbcc0ef3667b6bf58dc4e2892f3</id><msg>Offer/contract e-mails: button is 'Angebot öffnen' / 'Dokumente öffnen' (view only, non-binding) — accepting or signing is described as a separate, optional step on the page; default message texts, info boxes and modal label reworded accordingly</msg><path><editType>edit</editType><file>server/api/offers/quote/send.post.ts</file></path><path><editType>edit</editType><file>app/pages/confirm/[token].vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/utils/offers/contractSigning.ts</file></path><path><editType>edit</editType><file>server/api/offers/contract/send.post.ts</file></path><path><editType>edit</editType><file>app/composables/useOfferContract.ts</file></path><path><editType>edit</editType><file>app/pages/sign/[token].vue</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>edit</editType><file>server/utils/offers/quoteConfirmation.ts</file></path><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/mobile/transcribe-text.post.ts</affectedPath><affectedPath>app/pages/mobile/movement.vue</affectedPath><commitId>fc1d48ab4d2e46c5f22309169e84c1c8a839300d</commitId><timestamp>1789026457000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile movement: opt-in billable ticket after completion — post-completion screen with selectable moved articles/qty, time or direct amount ([Zeitabrechnung]), typed or voice-transcribed note (new sync /api/mobile/transcribe-text), ticket for the partner linked to the source locator's org, audio attached to the ticket
</comment><date>2026-09-10 09:47:37 +0200</date><id>fc1d48ab4d2e46c5f22309169e84c1c8a839300d</id><msg>Mobile movement: opt-in billable ticket after completion — post-completion screen with selectable moved articles/qty, time or direct amount ([Zeitabrechnung]), typed or voice-transcribed note (new sync /api/mobile/transcribe-text), ticket for the partner linked to the source locator's org, audio attached to the ticket</msg><path><editType>add</editType><file>server/api/mobile/transcribe-text.post.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/movement.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>scripts/release-app.sh</affectedPath><affectedPath>scripts/upload-mobile-update.sh</affectedPath><affectedPath>scripts/stage-mobile-update.sh</affectedPath><commitId>1d1b2d4e81e0dda86dad7771d4f6e9b54d1a265d</commitId><timestamp>1789026991000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile app release channel moved into the logyou.de website repo: new scripts/stage-mobile-update.sh copies APK + version.json into ../logship/logyou-landing/public/logship (archives the replaced APK into history/, merges history.json, keeps last 10); release-app.sh hands off to it (MOBILE_PUBLISH=sftp keeps the SFTP uploader for Blut24, --push also deploys the site); release app 1.0.40 (code 41)
</comment><date>2026-09-10 09:56:31 +0200</date><id>1d1b2d4e81e0dda86dad7771d4f6e9b54d1a265d</id><msg>Mobile app release channel moved into the logyou.de website repo: new scripts/stage-mobile-update.sh copies APK + version.json into ../logship/logyou-landing/public/logship (archives the replaced APK into history/, merges history.json, keeps last 10); release-app.sh hands off to it (MOBILE_PUBLISH=sftp keeps the SFTP uploader for Blut24, --push also deploys the site); release app 1.0.40 (code 41)</msg><path><editType>edit</editType><file>scripts/release-app.sh</file></path><path><editType>edit</editType><file>scripts/upload-mobile-update.sh</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>add</editType><file>scripts/stage-mobile-update.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/settings/mobile-app/index.vue</affectedPath><affectedPath>scripts/release-app.sh</affectedPath><affectedPath>.gitignore</affectedPath><affectedPath>reference/ci/deploy-production.sh</affectedPath><affectedPath>scripts/stage-mobile-update.sh</affectedPath><affectedPath>app/composables/menu/admin/settings.ts</affectedPath><affectedPath>server/api/mobile/app-versions.get.ts</affectedPath><affectedPath>.env</affectedPath><affectedPath>server/api/mobile/app-download-link.get.ts</affectedPath><affectedPath>server/api/settings/mobile-app/publish.post.ts</affectedPath><affectedPath>scripts/upload-mobile-update.sh</affectedPath><affectedPath>server/api/mobile/app-version.get.ts</affectedPath><affectedPath>.env-dev</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>server/utils/mobileReleases.ts</affectedPath><affectedPath>server/api/public/mobile/[token]/[...path].ts</affectedPath><affectedPath>scripts/publish-mobile-update.sh</affectedPath><affectedPath>.env-prod</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>2ccbd5088aaa0422989f669a9d2e67bf1827d8d7</commitId><timestamp>1789028835000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile app release channel inside the ERP: APK + manifests live server-side in data/mobile-releases (never in the bundle or git), served via expiring HMAC-signed public download URLs (/api/public/mobile/&lt;token&gt;/…, Range support); app-version/app-versions read the local channel for authenticated checks and keep proxying www.logyou.de/logship for old builds (MOBILE_APP_LEGACY_FALLBACK); new Settings → Mobile App page with QR install code, download link and admin upload form; publish endpoint (admin verified via ad_role or service token) + scripts/publish-mobile-update.sh; release-app.sh publishes to erp,landing; deploy script preserves data/mobile-releases
</comment><date>2026-09-10 10:27:15 +0200</date><id>2ccbd5088aaa0422989f669a9d2e67bf1827d8d7</id><msg>Mobile app release channel inside the ERP: APK + manifests live server-side in data/mobile-releases (never in the bundle or git), served via expiring HMAC-signed public download URLs (/api/public/mobile/&lt;token&gt;/…, Range support); app-version/app-versions read the local channel for authenticated checks and keep proxying www.logyou.de/logship for old builds (MOBILE_APP_LEGACY_FALLBACK); new Settings → Mobile App page with QR install code, download link and admin upload form; publish endpoint (admin verified via ad_role or service token) + scripts/publish-mobile-update.sh; release-app.sh publishes to erp,landing; deploy script preserves data/mobile-releases</msg><path><editType>edit</editType><file>.env-prod</file></path><path><editType>edit</editType><file>.gitignore</file></path><path><editType>edit</editType><file>server/api/mobile/app-versions.get.ts</file></path><path><editType>add</editType><file>server/utils/mobileReleases.ts</file></path><path><editType>add</editType><file>app/pages/settings/mobile-app/index.vue</file></path><path><editType>edit</editType><file>scripts/release-app.sh</file></path><path><editType>add</editType><file>server/api/public/mobile/[token]/[...path].ts</file></path><path><editType>add</editType><file>server/api/settings/mobile-app/publish.post.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>reference/ci/deploy-production.sh</file></path><path><editType>edit</editType><file>scripts/stage-mobile-update.sh</file></path><path><editType>edit</editType><file>.env</file></path><path><editType>add</editType><file>server/api/mobile/app-download-link.get.ts</file></path><path><editType>edit</editType><file>app/composables/menu/admin/settings.ts</file></path><path><editType>edit</editType><file>scripts/upload-mobile-update.sh</file></path><path><editType>edit</editType><file>server/api/mobile/app-version.get.ts</file></path><path><editType>edit</editType><file>.env-dev</file></path><path><editType>add</editType><file>scripts/publish-mobile-update.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/products/search.get.ts</affectedPath><affectedPath>app/pages/mobile/inventory.vue</affectedPath><affectedPath>app/pages/mobile/receive.vue</affectedPath><affectedPath>reference/~$roadsurfer_Fulfillment_Anfrage_Preisblatt_LogYou.xlsx</affectedPath><affectedPath>app/pages/mobile/fix-locator-owner.vue</affectedPath><affectedPath>app/pages/mobile/print-labels.vue</affectedPath><affectedPath>reference/roadsurfer_Fulfillment_Anfrage_Preisblatt (3).xlsx</affectedPath><affectedPath>server/api/mobile/product-search.post.ts</affectedPath><affectedPath>app/pages/mobile/product.vue</affectedPath><affectedPath>reference/roadsurfer_Fulfillment_Anfrage_Preisblatt_LogYou.xlsx</affectedPath><affectedPath>app/pages/mobile/return.vue</affectedPath><affectedPath>app/pages/mobile/movement.vue</affectedPath><commitId>6ec8b08642bd83c7778bedbbc43d14bd77423300</commitId><timestamp>1789030903000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show bom on mobile search
</comment><date>2026-09-10 11:01:43 +0200</date><id>6ec8b08642bd83c7778bedbbc43d14bd77423300</id><msg>show bom on mobile search</msg><path><editType>edit</editType><file>app/pages/mobile/fix-locator-owner.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/print-labels.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/inventory.vue</file></path><path><editType>edit</editType><file>server/api/mobile/product-search.post.ts</file></path><path><editType>add</editType><file>reference/~$roadsurfer_Fulfillment_Anfrage_Preisblatt_LogYou.xlsx</file></path><path><editType>edit</editType><file>app/pages/mobile/product.vue</file></path><path><editType>add</editType><file>reference/roadsurfer_Fulfillment_Anfrage_Preisblatt_LogYou.xlsx</file></path><path><editType>edit</editType><file>app/pages/mobile/movement.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/return.vue</file></path><path><editType>edit</editType><file>server/api/materials/products/search.get.ts</file></path><path><editType>add</editType><file>reference/roadsurfer_Fulfillment_Anfrage_Preisblatt (3).xlsx</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><commitId>7dfb2c9d7a1f68be35d33c900a9558fbb28e0b31</commitId><timestamp>1789031079000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>release app 1.0.41 (code 42): movement ticket + BOM in mobile search
</comment><date>2026-09-10 11:04:39 +0200</date><id>7dfb2c9d7a1f68be35d33c900a9558fbb28e0b31</id><msg>release app 1.0.41 (code 42): movement ticket + BOM in mobile search</msg><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>scripts/release-app.sh</affectedPath><commitId>80eb9f223b2040bdd659ad95c627f20ddd818207</commitId><timestamp>1789031406000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>release-app.sh: interactive release — asks for versionName (Enter = auto bump), release notes, publish target (default: ERP channel only; landing/sftp optional, website push asked separately) and a final confirmation with summary; --yes runs non-interactively with the defaults
</comment><date>2026-09-10 11:10:06 +0200</date><id>80eb9f223b2040bdd659ad95c627f20ddd818207</id><msg>release-app.sh: interactive release — asks for versionName (Enter = auto bump), release notes, publish target (default: ERP channel only; landing/sftp optional, website push asked separately) and a final confirmation with summary; --yes runs non-interactively with the defaults</msg><path><editType>edit</editType><file>scripts/release-app.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/mobile/ProductThumb.vue</affectedPath><affectedPath>server/api/materials/products/search.get.ts</affectedPath><affectedPath>app/pages/mobile/inventory.vue</affectedPath><affectedPath>app/pages/mobile/receive.vue</affectedPath><affectedPath>server/api/mobile/product-thumb/[id].get.ts</affectedPath><affectedPath>app/pages/mobile/print-labels.vue</affectedPath><affectedPath>app/pages/mobile/fix-locator-owner.vue</affectedPath><affectedPath>app/pages/mobile/product.vue</affectedPath><affectedPath>server/api/mobile/product-search.post.ts</affectedPath><affectedPath>app/pages/mobile/return.vue</affectedPath><affectedPath>app/pages/mobile/movement.vue</affectedPath><commitId>a9d04682477bb7e454899e41ffba3b62510f6ce7</commitId><timestamp>1789032523000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile article search: BOM / JTL-BOM tags on results, "Stücklisten (BOM) ausblenden" filter checkbox (default off, on all 7 pages incl. receive), article names clamped to 3 lines, viewport-lazy product thumbnails (MobileProductThumb + GET /api/mobile/product-thumb/{id}, per-product client + 10-min server cache) — search endpoints return isBOM/isJtlBom/imageUrl
</comment><date>2026-09-10 11:28:43 +0200</date><id>a9d04682477bb7e454899e41ffba3b62510f6ce7</id><msg>Mobile article search: BOM / JTL-BOM tags on results, "Stücklisten (BOM) ausblenden" filter checkbox (default off, on all 7 pages incl. receive), article names clamped to 3 lines, viewport-lazy product thumbnails (MobileProductThumb + GET /api/mobile/product-thumb/{id}, per-product client + 10-min server cache) — search endpoints return isBOM/isJtlBom/imageUrl</msg><path><editType>edit</editType><file>app/pages/mobile/product.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/movement.vue</file></path><path><editType>edit</editType><file>server/api/mobile/product-search.post.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/print-labels.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/return.vue</file></path><path><editType>add</editType><file>server/api/mobile/product-thumb/[id].get.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/fix-locator-owner.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/inventory.vue</file></path><path><editType>add</editType><file>app/components/mobile/ProductThumb.vue</file></path><path><editType>edit</editType><file>server/api/materials/products/search.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/plugins/00.capacitor-api.client.ts</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><affectedPath>app/composables/useAppUpdate.ts</affectedPath><commitId>de1f81e0ec815245ce32ccd881ddcfb7784b93ea</commitId><timestamp>1789034450000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile app update check now authenticated: useAppUpdate uses relative /api/mobile/app-version(s) so the Capacitor fetch wrapper injects the Bearer token (absolute URLs bypassed it and only ever saw the legacy www.logyou.de manifest); the raw-fetch wrapper also handles absolute apiBase/api URLs; release app 1.0.44 (code 45)
</comment><date>2026-09-10 12:00:50 +0200</date><id>de1f81e0ec815245ce32ccd881ddcfb7784b93ea</id><msg>Mobile app update check now authenticated: useAppUpdate uses relative /api/mobile/app-version(s) so the Capacitor fetch wrapper injects the Bearer token (absolute URLs bypassed it and only ever saw the legacy www.logyou.de manifest); the raw-fetch wrapper also handles absolute apiBase/api URLs; release app 1.0.44 (code 45)</msg><path><editType>edit</editType><file>app/plugins/00.capacitor-api.client.ts</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>app/composables/useAppUpdate.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><commitId>9579d52a373e994fba20c9069e0c34d64f5d48df</commitId><timestamp>1789034519000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>release app 1.0.45 (code 46): authenticated update check
</comment><date>2026-09-10 12:01:59 +0200</date><id>9579d52a373e994fba20c9069e0c34d64f5d48df</id><msg>release app 1.0.45 (code 46): authenticated update check</msg><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.claude/settings.json</affectedPath><affectedPath>.gitignore</affectedPath><commitId>2d2b2fb44183b2f0fc103fe7b58bb02ef2bf0fae</commitId><timestamp>1789034920000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Track .claude/settings.json so cloud sessions default to bypass permissions
</comment><date>2026-09-10 12:08:40 +0200</date><id>2d2b2fb44183b2f0fc103fe7b58bb02ef2bf0fae</id><msg>Track .claude/settings.json so cloud sessions default to bypass permissions</msg><path><editType>edit</editType><file>.gitignore</file></path><path><editType>add</editType><file>.claude/settings.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/materials/ProductDetailRecordLocatedAt.vue</affectedPath><commitId>811b119c435d102b227b8ba1f4cd92edda76c8a1</commitId><timestamp>1789044442000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Product Located-at tab: quantity pills aligned with their column headers, Active column removed, Date Material Policy shown as dd.mm.yyyy
</comment><date>2026-09-10 14:47:22 +0200</date><id>811b119c435d102b227b8ba1f4cd92edda76c8a1</id><msg>Product Located-at tab: quantity pills aligned with their column headers, Active column removed, Date Material Policy shown as dd.mm.yyyy</msg><path><editType>edit</editType><file>app/components/materials/ProductDetailRecordLocatedAt.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/materials/ProductForm.vue</affectedPath><commitId>6c46f67746d277eea733bd682852131879b9ee28</commitId><timestamp>1789044442000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Product form: hide Summary Level checkbox (commented out, not needed for now; isSummary stays in the model)
</comment><date>2026-09-10 14:47:22 +0200</date><id>6c46f67746d277eea733bd682852131879b9ee28</id><msg>Product form: hide Summary Level checkbox (commented out, not needed for now; isSummary stays in the model)</msg><path><editType>edit</editType><file>app/components/materials/ProductForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/composables/useTransactionReportPdf.ts</affectedPath><affectedPath>server/api/materials/products/search.get.ts</affectedPath><affectedPath>app/pages/materials/transactions.vue</affectedPath><commitId>8ffa636208f0c71cfa4ff4d8c47b2bc8649ba9fc</commitId><timestamp>1789044442000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Transactions page: product search on the Nuxt UI SelectBox wrapper (tedir-select dropped) with rich results (thumbnail, article no., SKU/MPN/category, BOM + org + inactive tags), selected-product card with product link, ?productId= deep link that preloads the product and its history; PDF report extracted into useTransactionReportPdf; product search returns org/category/active
</comment><date>2026-09-10 14:47:22 +0200</date><id>8ffa636208f0c71cfa4ff4d8c47b2bc8649ba9fc</id><msg>Transactions page: product search on the Nuxt UI SelectBox wrapper (tedir-select dropped) with rich results (thumbnail, article no., SKU/MPN/category, BOM + org + inactive tags), selected-product card with product link, ?productId= deep link that preloads the product and its history; PDF report extracted into useTransactionReportPdf; product search returns org/category/active</msg><path><editType>edit</editType><file>server/api/materials/products/search.get.ts</file></path><path><editType>edit</editType><file>app/pages/materials/transactions.vue</file></path><path><editType>add</editType><file>app/composables/useTransactionReportPdf.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/products/[id]/transaction/index.get.ts</affectedPath><affectedPath>app/components/materials/ProductDetailRecordTransaction.vue</affectedPath><commitId>937074b2db7cebfe41e77f58b283eb186d9fe1da</commitId><timestamp>1789044442000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Product Transactions tab: order + shipment links (server resolves M_InOutLine → M_InOut → C_Order with a batched lookup; sales vs purchase routes), dates as dd.mm.yyyy with muted booking time, coloured movement-type icons and signed quantity pills, Active column removed, Report button (PDF preview modal + download) and link to the prefilled transactions page
</comment><date>2026-09-10 14:47:22 +0200</date><id>937074b2db7cebfe41e77f58b283eb186d9fe1da</id><msg>Product Transactions tab: order + shipment links (server resolves M_InOutLine → M_InOut → C_Order with a batched lookup; sales vs purchase routes), dates as dd.mm.yyyy with muted booking time, coloured movement-type icons and signed quantity pills, Active column removed, Report button (PDF preview modal + download) and link to the prefilled transactions page</msg><path><editType>edit</editType><file>app/components/materials/ProductDetailRecordTransaction.vue</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/transaction/index.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/fetchHelper.ts</affectedPath><affectedPath>server/utils/refreshTokenHelper.ts</affectedPath><affectedPath>server/middleware/fetch.ts</affectedPath><commitId>11ac029738ce4ae6caf08464d24d7972fb8c9352</commitId><timestamp>1789048717000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>iDempiere fetch layer: no ofetch auto-retry, 90 s timeout, and no token-refresh retry after backend errors

fetchHelper and event.context.fetch now send retry: 0 (ofetch retried every GET once on 500/502/503/504) plus a timeout (IDEMPIERE_FETCH_TIMEOUT_MS, default 90 s) and record the last iDempiere error on event.context. refreshTokenHelper throws instead of refreshing when that error is not 401/403, so the standard catch → refresh → retry route pattern no longer re-runs a query that just timed out on a stalled backend (2026-09-10 retry storm: 6 → 79 calls/min of one heavy query, 178 of 200 Jetty threads blocked).
</comment><date>2026-09-10 15:58:37 +0200</date><id>11ac029738ce4ae6caf08464d24d7972fb8c9352</id><msg>iDempiere fetch layer: no ofetch auto-retry, 90 s timeout, and no token-refresh retry after backend errors</msg><path><editType>edit</editType><file>server/utils/refreshTokenHelper.ts</file></path><path><editType>edit</editType><file>server/utils/fetchHelper.ts</file></path><path><editType>edit</editType><file>server/middleware/fetch.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/products/qty-on-hand-overview.get.ts</affectedPath><affectedPath>server/utils/productStorageHelper.ts</affectedPath><affectedPath>server/api/materials/products/qty-on-hand-pit.get.ts</affectedPath><affectedPath>server/api/materials/products/index.get.ts</affectedPath><affectedPath>server/api/materials/locators/priority-recommendations.get.ts</affectedPath><affectedPath>server/api/materials/products/ag-grid/products.post.ts</affectedPath><affectedPath>server/api/materials/products/qty-on-hand-by-locator.get.ts</affectedPath><commitId>df9ce51c1905ff2e546a2f03d259fc6d6ae689d0</commitId><timestamp>1789048717000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Products with stock: drop $expand=M_Storage (global-lock hazard in idempiere-rest) for a paged m_storage join

New server/utils/productStorageHelper.ts fetches products plainly and joins m_storage rows in Node (by-id chunks for a page, all rows with a 30 s single-flight cache for full lists), keeping the M_Storage array shape. A detail expand runs DefaultQueryConverter.convertStatement (synchronized singleton) once per parent record — 3.3k products = ~6.6k serialized queries under one lock that every other $filter request waits on. Switched: materials/products (also gains ?top=&amp;skip= and a 60 s per client/role/org response cache with single-flight), ag-grid products, qty-on-hand overview/by-locator/pit, locator priority recommendations.
</comment><date>2026-09-10 15:58:37 +0200</date><id>df9ce51c1905ff2e546a2f03d259fc6d6ae689d0</id><msg>Products with stock: drop $expand=M_Storage (global-lock hazard in idempiere-rest) for a paged m_storage join</msg><path><editType>edit</editType><file>server/api/materials/products/qty-on-hand-pit.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/locators/priority-recommendations.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/ag-grid/products.post.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/qty-on-hand-overview.get.ts</file></path><path><editType>add</editType><file>server/utils/productStorageHelper.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/qty-on-hand-by-locator.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/synologyHelper.ts</affectedPath><commitId>029c404ada50027cefc2e31638d4ca37741234f4</commitId><timestamp>1789048717000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Synology helper: timeouts on every NAS call, shared session, re-login on session errors

Every Surveillance Station request carries an AbortSignal timeout (15 s API, 5 min download) so a hung NAS cannot pin a request. One login is reused for 30 min across requests instead of login+logout per call; error codes 105/106/107/119 trigger exactly one re-login + retry with the session updated in place. synologyLogout is a no-op unless force=true, so the route handlers are unchanged.
</comment><date>2026-09-10 15:58:37 +0200</date><id>029c404ada50027cefc2e31638d4ca37741234f4</id><msg>Synology helper: timeouts on every NAS call, shared session, re-login on session errors</msg><path><editType>edit</editType><file>server/utils/synologyHelper.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/recipes.md</affectedPath><commitId>8c172c0be5713df8d7222328e4d66d38cf2b47a8</commitId><timestamp>1789048717000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Recipes: iDempiere REST load rules (no child $expand over big lists, no blind retries, $top everywhere) and the Synology session/timeout conventions
</comment><date>2026-09-10 15:58:37 +0200</date><id>8c172c0be5713df8d7222328e4d66d38cf2b47a8</id><msg>Recipes: iDempiere REST load rules (no child $expand over big lists, no blind retries, $top everywhere) and the Synology session/timeout conventions</msg><path><editType>edit</editType><file>reference/recipes.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/reconditioning.vue</affectedPath><affectedPath>server/utils/returnLocatorHelper.ts</affectedPath><affectedPath>server/api/mobile/reconditioning/lookup.post.ts</affectedPath><affectedPath>app/pages/mobile/index.vue</affectedPath><affectedPath>server/api/mobile/reconditioning/target-locators.post.ts</affectedPath><affectedPath>server/api/materials/stock-transfers/store.post.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>06b01d4c15174f621d93d5f66812bee129e41177</commitId><timestamp>1789051910000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile Reconditioning page (/mobile/reconditioning): scan return label (RMA no. / customer-return doc no. / product code) → customer return with lines on non-shippable locators only, select articles + qty (capped by on-hand and already-reconditioned qty), target locator with org default preselected, books an M_Movement linked via M_Movement.M_Customer_Return_ID (fail-soft if column missing), then optional billable 'Reconditioning' ticket (time/amount, articles as message, no note/voice); endpoints /api/mobile/reconditioning/{lookup,target-locators}; dashboard tile + en/de/es/ne translations
</comment><date>2026-09-10 16:51:50 +0200</date><id>06b01d4c15174f621d93d5f66812bee129e41177</id><msg>Mobile Reconditioning page (/mobile/reconditioning): scan return label (RMA no. / customer-return doc no. / product code) → customer return with lines on non-shippable locators only, select articles + qty (capped by on-hand and already-reconditioned qty), target locator with org default preselected, books an M_Movement linked via M_Movement.M_Customer_Return_ID (fail-soft if column missing), then optional billable 'Reconditioning' ticket (time/amount, articles as message, no note/voice); endpoints /api/mobile/reconditioning/{lookup,target-locators}; dashboard tile + en/de/es/ne translations</msg><path><editType>edit</editType><file>server/api/materials/stock-transfers/store.post.ts</file></path><path><editType>edit</editType><file>server/utils/returnLocatorHelper.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>app/pages/mobile/reconditioning.vue</file></path><path><editType>add</editType><file>server/api/mobile/reconditioning/lookup.post.ts</file></path><path><editType>add</editType><file>server/api/mobile/reconditioning/target-locators.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><commitId>59962537dce5a8b573a7c0895f02e00770863f7c</commitId><timestamp>1789052001000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>release app 1.0.46 (code 47): mobile Reconditioning page
</comment><date>2026-09-10 16:53:21 +0200</date><id>59962537dce5a8b573a7c0895f02e00770863f7c</id><msg>release app 1.0.46 (code 47): mobile Reconditioning page</msg><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/bi/product-performance.get.ts</affectedPath><affectedPath>app/composables/menu/admin/bi.ts</affectedPath><affectedPath>app/pages/bi/product-performance.vue</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>63146b1cd06c93d864c5f8c03573b917757d37ba</commitId><timestamp>1789052728000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>BI Product Performance (/bi/product-performance, admins only): per-merchant product sales analytics — rolling window (3d…12m) with previous-period deltas or 12/6/24-month matrix (heat cells, sparklines, 3M-vs-3M trend); sold/returned/return-rate/net revenue/on-hand/coverage per product; scope = top N sellers or manual pick list (persisted per org, pin from table); KPI cards, daily and monthly charts, category share, worst return rates, CSV export; direct-Postgres route server/api/bi/product-performance.get.ts; sidebar + top-menu entries, en/de/es translations
</comment><date>2026-09-10 17:05:28 +0200</date><id>63146b1cd06c93d864c5f8c03573b917757d37ba</id><msg>BI Product Performance (/bi/product-performance, admins only): per-merchant product sales analytics — rolling window (3d…12m) with previous-period deltas or 12/6/24-month matrix (heat cells, sparklines, 3M-vs-3M trend); sold/returned/return-rate/net revenue/on-hand/coverage per product; scope = top N sellers or manual pick list (persisted per org, pin from table); KPI cards, daily and monthly charts, category share, worst return rates, CSV export; direct-Postgres route server/api/bi/product-performance.get.ts; sidebar + top-menu entries, en/de/es translations</msg><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path><path><editType>add</editType><file>server/api/bi/product-performance.get.ts</file></path><path><editType>edit</editType><file>app/composables/menu/admin/bi.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>app/pages/bi/product-performance.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/bi/product-performance.vue</affectedPath><commitId>77517cfa18d11aab027e793d79f92f3ab9cf573f</commitId><timestamp>1789053260000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>BI Product Performance: hide charts/table until a report is loaded (no stale chart data when switching org or with an empty manual selection), subtle row action buttons
</comment><date>2026-09-10 17:14:20 +0200</date><id>77517cfa18d11aab027e793d79f92f3ab9cf573f</id><msg>BI Product Performance: hide charts/table until a report is loaded (no stale chart data when switching org or with an empty manual selection), subtle row action buttons</msg><path><editType>edit</editType><file>app/pages/bi/product-performance.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/reconditioning.vue</affectedPath><affectedPath>server/api/mobile/reconditioning/lookup.post.ts</affectedPath><affectedPath>app/pages/mobile/return.vue</affectedPath><affectedPath>app/pages/integrations/returns-desktop.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>6fd692b75c4074aaff411735e54a2ca8301c8de9</commitId><timestamp>1789060461000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile Reconditioning: lookup by RMA number only (no return-doc-no / product-code fallback), return label barcode now encodes the RMA number (was product SKU, so scanning never hit the RMA path), keep-alive focus lifecycle for the hidden scanner input, en/de/es hint texts
</comment><date>2026-09-10 19:14:21 +0200</date><id>6fd692b75c4074aaff411735e54a2ca8301c8de9</id><msg>Mobile Reconditioning: lookup by RMA number only (no return-doc-no / product-code fallback), return label barcode now encodes the RMA number (was product SKU, so scanning never hit the RMA path), keep-alive focus lifecycle for the hidden scanner input, en/de/es hint texts</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/integrations/returns-desktop.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/reconditioning.vue</file></path><path><editType>edit</editType><file>server/api/mobile/reconditioning/lookup.post.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/return.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/reconditioning.vue</affectedPath><affectedPath>server/api/mobile/reconditioning/print-report.post.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>5b77679c090a7efc6f52a11c276005f81798ebcf</commitId><timestamp>1789060807000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Mobile Reconditioning: A4 movement report (Umlagerungsbericht) printed after booking — server-rendered pdfmake sheet grouped by target locator (article, qty, from → to, checkboxes, disposed lines, signature line) sent via lp to the remembered paper printer (CUST_Printer 'pap', default-on toggle + printer select persisted per device); per-line 'Entsorgen' option books non-reconditionable articles OUT via physical inventory (MMIPI, qtyCount = on-hand − disposed, description documents the disposal) instead of moving them, target locator only required when something is moved; ticket + report cover both; en/de/es keys
</comment><date>2026-09-10 19:20:07 +0200</date><id>5b77679c090a7efc6f52a11c276005f81798ebcf</id><msg>Mobile Reconditioning: A4 movement report (Umlagerungsbericht) printed after booking — server-rendered pdfmake sheet grouped by target locator (article, qty, from → to, checkboxes, disposed lines, signature line) sent via lp to the remembered paper printer (CUST_Printer 'pap', default-on toggle + printer select persisted per device); per-line 'Entsorgen' option books non-reconditionable articles OUT via physical inventory (MMIPI, qtyCount = on-hand − disposed, description documents the disposal) instead of moving them, target locator only required when something is moved; ticket + report cover both; en/de/es keys</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/mobile/reconditioning.vue</file></path><path><editType>add</editType><file>server/api/mobile/reconditioning/print-report.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><commitId>affedcf372684fb431685c61bb299efef3542419</commitId><timestamp>1789060902000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>release app 1.0.47 (code 48): Reconditioning RMA-only scan, A4 movement report, disposal option
</comment><date>2026-09-10 19:21:42 +0200</date><id>affedcf372684fb431685c61bb299efef3542419</id><msg>release app 1.0.47 (code 48): Reconditioning RMA-only scan, A4 movement report, disposal option</msg><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/return.vue</affectedPath><affectedPath>app/pages/integrations/returns-desktop.vue</affectedPath><affectedPath>server/api/print/return-label.post.ts</affectedPath><commitId>3720a71faf263fcf49588812d303e43e52fd2baa</commitId><timestamp>1789062247000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Return label rebuilt: ONE label per return (was one per article and qty) rendered server-side by POST /api/print/return-label at the printer's real label size (registry → CUPS → legacy fallback, same as product labels) with size-driven layouts (tiny 35×17 / compact 54×29 / standard 74×52, 56×75, 102×152 with continuation pages), vector CODE128 of the RMA or customer-return document number, ad_org.companyname header band, partner · reason · locator line and an article table with quantities; mobile return page + desktop returns page now call the route instead of building jsPDF labels client-side
</comment><date>2026-09-10 19:44:07 +0200</date><id>3720a71faf263fcf49588812d303e43e52fd2baa</id><msg>Return label rebuilt: ONE label per return (was one per article and qty) rendered server-side by POST /api/print/return-label at the printer's real label size (registry → CUPS → legacy fallback, same as product labels) with size-driven layouts (tiny 35×17 / compact 54×29 / standard 74×52, 56×75, 102×152 with continuation pages), vector CODE128 of the RMA or customer-return document number, ad_org.companyname header band, partner · reason · locator line and an article table with quantities; mobile return page + desktop returns page now call the route instead of building jsPDF labels client-side</msg><path><editType>edit</editType><file>app/pages/integrations/returns-desktop.vue</file></path><path><editType>add</editType><file>server/api/print/return-label.post.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/return.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><commitId>a7077f906fa454a31e9d28a5415ce57f617140ed</commitId><timestamp>1789062317000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>release app 1.0.48 (code 49): new return label (one per return, server-rendered)
</comment><date>2026-09-10 19:45:17 +0200</date><id>a7077f906fa454a31e9d28a5415ce57f617140ed</id><msg>release app 1.0.48 (code 49): new return label (one per return, server-rendered)</msg><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><affectedPath>app/pages/settings/order-sources/[id]/edit.vue</affectedPath><affectedPath>app/pages/settings/order-sources/create.vue</affectedPath><affectedPath>server/api/settings/order-sources/update.put.ts</affectedPath><affectedPath>server/api/settings/order-sources/store.post.ts</affectedPath><affectedPath>app/pages/settings/order-sources/[id]/view.vue</affectedPath><commitId>b0144617e997073012c0381e848fff6798b301d7</commitId><timestamp>1789065370000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Order sources: Amazon returns import flag (isImportReturns) + lookback days (importReturnsDaysFilter) wired through create/edit/view + store/update routes — toggle in the Marketplace-Specific tab's Amazon SP-API block gates the middleware's daily MFN returns → RMA import
</comment><date>2026-09-10 20:36:10 +0200</date><id>b0144617e997073012c0381e848fff6798b301d7</id><msg>Order sources: Amazon returns import flag (isImportReturns) + lookback days (importReturnsDaysFilter) wired through create/edit/view + store/update routes — toggle in the Marketplace-Specific tab's Amazon SP-API block gates the middleware's daily MFN returns → RMA import</msg><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path><path><editType>edit</editType><file>app/pages/settings/order-sources/create.vue</file></path><path><editType>edit</editType><file>app/pages/settings/order-sources/[id]/view.vue</file></path><path><editType>edit</editType><file>server/api/settings/order-sources/update.put.ts</file></path><path><editType>edit</editType><file>app/pages/settings/order-sources/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/settings/order-sources/store.post.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>732</buildNumber><marked><SHA1>665054863af2bb33ea7671f10f6fdea82e9a12b2</SHA1><branch><SHA1>665054863af2bb33ea7671f10f6fdea82e9a12b2</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>665054863af2bb33ea7671f10f6fdea82e9a12b2</SHA1><branch><SHA1>665054863af2bb33ea7671f10f6fdea82e9a12b2</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>665054863af2bb33ea7671f10f6fdea82e9a12b2</SHA1><branch><SHA1>665054863af2bb33ea7671f10f6fdea82e9a12b2</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#732</displayName><duration>69768</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #732</fullDisplayName><id>732</id><inProgress>false</inProgress><keepLog>false</keepLog><number>732</number><queueId>5663</queueId><result>SUCCESS</result><timestamp>1788998400285</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/732/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/AgGrid/Invoices/AgPayJoeStatus.vue</affectedPath><affectedPath>app/components/AgGrid/Invoices/AgLexofficeStatus.vue</affectedPath><affectedPath>app/components/AgGrid/Invoices/AgAmazonStatus.vue</affectedPath><affectedPath>app/components/sales/InvoiceListFilters.vue</affectedPath><affectedPath>server/api/invoices/so.get.ts</affectedPath><affectedPath>app/components/AgGrid/Invoices/AgCurrency.vue</affectedPath><affectedPath>app/components/AgGrid/Invoices/AgDateInvoiced.vue</affectedPath><affectedPath>app/pages/sales/invoices/index.vue</affectedPath><affectedPath>app/components/sales/InvoiceActionsMenu.vue</affectedPath><affectedPath>app/components/AgGrid/Invoices/AgLink.vue</affectedPath><affectedPath>app/components/AgGrid/Invoices/AgDocStatus.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>665054863af2bb33ea7671f10f6fdea82e9a12b2</commitId><timestamp>1788948521000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Invoices list: filter bar (order source, fulfillment/non-fulfillment, payment state, amount range) and Documents / Accounting dropdown menus replacing the ten icon buttons

- SalesInvoiceListFilters: order-source select with counts, order-type and payment segmented controls, dual-thumb amount slider; filters the row data so the grand-total row and the shown counts match
- SalesInvoiceActionsMenu: Nuxt UI dropdowns with per-entry descriptions and progress labels; one busy key replaces the per-action booleans, upload/reset handlers share helpers
- so.get.ts expands C_Order.IsFulfillmentOrder; rows carry paymentStatus/overdueDays using the same rules as the cell badges
- Invoice cell renderers guard params.data (the grand-total row has none) — previously every row re-render threw and left the renderer columns blank
- invl_* translation keys (en/de/es)
</comment><date>2026-09-09 12:08:41 +0200</date><id>665054863af2bb33ea7671f10f6fdea82e9a12b2</id><msg>Invoices list: filter bar (order source, fulfillment/non-fulfillment, payment state, amount range) and Documents / Accounting dropdown menus replacing the ten icon buttons</msg><path><editType>edit</editType><file>server/api/invoices/so.get.ts</file></path><path><editType>edit</editType><file>app/components/AgGrid/Invoices/AgDocStatus.vue</file></path><path><editType>edit</editType><file>app/components/AgGrid/Invoices/AgPayJoeStatus.vue</file></path><path><editType>edit</editType><file>app/components/AgGrid/Invoices/AgCurrency.vue</file></path><path><editType>edit</editType><file>app/components/AgGrid/Invoices/AgAmazonStatus.vue</file></path><path><editType>add</editType><file>app/components/sales/InvoiceListFilters.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>app/components/sales/InvoiceActionsMenu.vue</file></path><path><editType>edit</editType><file>app/components/AgGrid/Invoices/AgDateInvoiced.vue</file></path><path><editType>edit</editType><file>app/components/AgGrid/Invoices/AgLink.vue</file></path><path><editType>edit</editType><file>app/pages/sales/invoices/index.vue</file></path><path><editType>edit</editType><file>app/components/AgGrid/Invoices/AgLexofficeStatus.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>731</buildNumber><marked><SHA1>25e57e1d2a58ceb6994e6c82bab7533d42935788</SHA1><branch><SHA1>25e57e1d2a58ceb6994e6c82bab7533d42935788</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>25e57e1d2a58ceb6994e6c82bab7533d42935788</SHA1><branch><SHA1>25e57e1d2a58ceb6994e6c82bab7533d42935788</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>25e57e1d2a58ceb6994e6c82bab7533d42935788</SHA1><branch><SHA1>25e57e1d2a58ceb6994e6c82bab7533d42935788</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#731</displayName><duration>64695</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #731</fullDisplayName><id>731</id><inProgress>false</inProgress><keepLog>false</keepLog><number>731</number><queueId>5661</queueId><result>SUCCESS</result><timestamp>1788912000272</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/731/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/public/sign/[token]/index.post.ts</affectedPath><affectedPath>server/api/public/sign/[token]/document/[key].get.ts</affectedPath><affectedPath>server/api/offers/contract/signing-status.get.ts</affectedPath><affectedPath>server/api/public/sign/[token]/index.get.ts</affectedPath><affectedPath>server/utils/offers/contractSigningDb.ts</affectedPath><commitId>6867a990ad10e973d0fcb49b44dd4c5166806fcd</commitId><timestamp>1788846822000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Signing store: kind column (contract | quote), kind-aware supersede and status history

signing_requests gets a kind column (migrated in place, default contract) so
quote confirmations share the table, the on-disk document store and the
lifecycle with contract signing. Superseding is per kind, signing-status
returns latest / latestQuote / full history of both kinds with daysLeft and
portal document urls, and the /sign routes only accept contract tokens.
</comment><date>2026-09-08 07:53:42 +0200</date><id>6867a990ad10e973d0fcb49b44dd4c5166806fcd</id><msg>Signing store: kind column (contract | quote), kind-aware supersede and status history</msg><path><editType>edit</editType><file>server/api/public/sign/[token]/document/[key].get.ts</file></path><path><editType>edit</editType><file>server/api/public/sign/[token]/index.get.ts</file></path><path><editType>edit</editType><file>server/api/offers/contract/signing-status.get.ts</file></path><path><editType>edit</editType><file>server/api/public/sign/[token]/index.post.ts</file></path><path><editType>edit</editType><file>server/utils/offers/contractSigningDb.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/offers/contactActivity.ts</affectedPath><affectedPath>server/utils/offers/contractSigning.ts</affectedPath><affectedPath>server/api/offers/contract/send.post.ts</affectedPath><commitId>a8c47ec14aacc1ac6e45a92468871c6d9b093212</commitId><timestamp>1788846822000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Activities: log contract sent and contract signed on the record

New contactActivity helper writes C_ContactActivity rows (type E-Mail) for
customer-facing steps, with the documents referenced in a parseable
[Dokumente] block in Comments (title | url). Contract send logs the package,
recipient and signing link; finalizeSignature logs the signature with the
signed contract and annexes. Fail-soft everywhere.
</comment><date>2026-09-08 07:53:42 +0200</date><id>a8c47ec14aacc1ac6e45a92468871c6d9b093212</id><msg>Activities: log contract sent and contract signed on the record</msg><path><editType>add</editType><file>server/utils/offers/contactActivity.ts</file></path><path><editType>edit</editType><file>server/utils/offers/contractSigning.ts</file></path><path><editType>edit</editType><file>server/api/offers/contract/send.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/offers/quoteConfirmation.ts</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>app/pages/confirm/[token].vue</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><affectedPath>server/api/public/confirm/[token]/index.post.ts</affectedPath><affectedPath>server/api/public/confirm/[token]/request-renewal.post.ts</affectedPath><affectedPath>server/api/offers/quote/send.post.ts</affectedPath><affectedPath>server/api/public/confirm/[token]/index.get.ts</affectedPath><affectedPath>server/utils/offers/offerConditions.ts</affectedPath><affectedPath>server/api/public/confirm/[token]/document/[key].get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>7c8cbf87e7b8d409534fb242a15ad8a95d7ceecf</commitId><timestamp>1788846822000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Quotes: online confirmation button in the e-mail + public /confirm/&lt;token&gt; page

Opt-out checkbox in the quote modal (default on). The send creates a kind
'quote' signing request valid as long as the quote, stores the exact PDF and
adds a CTA to the mail; the e-mail default text mentions the button. The
public page shows the quote, collects company/name/e-mail + declarations and
confirms: the offer PDF gets an appended confirmation page (pdf-lib), is
attached to the record, written to offer_conditions.quote.confirmation,
mailed to the customer and info@logyou.de, and logged as an activity with
document buttons. Quote send itself is logged as an activity too.
</comment><date>2026-09-08 07:53:42 +0200</date><id>7c8cbf87e7b8d409534fb242a15ad8a95d7ceecf</id><msg>Quotes: online confirmation button in the e-mail + public /confirm/&lt;token&gt; page</msg><path><editType>add</editType><file>app/pages/confirm/[token].vue</file></path><path><editType>edit</editType><file>server/api/offers/quote/send.post.ts</file></path><path><editType>add</editType><file>server/utils/offers/quoteConfirmation.ts</file></path><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path><path><editType>add</editType><file>server/api/public/confirm/[token]/index.get.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/api/public/confirm/[token]/index.post.ts</file></path><path><editType>edit</editType><file>server/utils/offers/offerConditions.ts</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>add</editType><file>server/api/public/confirm/[token]/request-renewal.post.ts</file></path><path><editType>add</editType><file>server/api/public/confirm/[token]/document/[key].get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/users/leads/[id]/edit.vue</affectedPath><affectedPath>app/components/offers/SigningLinksPanel.vue</affectedPath><affectedPath>app/components/admin/LeadDetailRecordActivity.vue</affectedPath><affectedPath>app/components/admin/LeadForm.vue</affectedPath><affectedPath>app/components/admin/LeadDetailRecord.vue</affectedPath><commitId>26daf290da8c94ae87d75e2f78f15a33ad8adb34</commitId><timestamp>1788846822000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Lead page: hero header, side panels for links + attachments, activity timeline

Restyled /edit/lead-&lt;id&gt;: hero with initials/status/source chips and quick
actions, two-column layout, form sections without Avatar/Tenant, a signing
links panel listing every contract/quote link with status, remaining validity
and clickable url, an attachments panel, and the activities as a timeline.
The activity modal has a single note field (Comments, description derived
from the first line); the timeline shows Comments or the legacy Description
and renders [Dokumente] references as buttons.
</comment><date>2026-09-08 07:53:42 +0200</date><id>26daf290da8c94ae87d75e2f78f15a33ad8adb34</id><msg>Lead page: hero header, side panels for links + attachments, activity timeline</msg><path><editType>edit</editType><file>app/components/admin/LeadDetailRecordActivity.vue</file></path><path><editType>add</editType><file>app/components/offers/SigningLinksPanel.vue</file></path><path><editType>edit</editType><file>app/components/admin/LeadForm.vue</file></path><path><editType>edit</editType><file>app/pages/users/leads/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/components/admin/LeadDetailRecord.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sign/[token].vue</affectedPath><commitId>3bcec9625e1768733d5e7136392ece9112854a14</commitId><timestamp>1788846822000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Sign page: on phones only the PDF pans, the page never scrolls horizontally
</comment><date>2026-09-08 07:53:42 +0200</date><id>3bcec9625e1768733d5e7136392ece9112854a14</id><msg>Sign page: on phones only the PDF pans, the page never scrolls horizontally</msg><path><editType>edit</editType><file>app/pages/sign/[token].vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/accounting/banking/BankReconcilePanel.vue</affectedPath><commitId>5e677922cb07d6e92ce254ce5aa134c953f82679</commitId><timestamp>1788847457000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Banking: combinable line filters (status, with suggestion, credit/debit), one Match button per row

The Status segment stays single-select (All / Open / Matched); two new
chip groups combine with it: 'Mit Vorschlag' (only lines that have a match
suggestion — disabled and cleared while Matched is active, suggestions only
exist for open lines) and an exclusive credit (+) / debit (−) toggle. Chip
counts respect the other active filters; a reset button clears everything.
The three per-row buttons collapse into one 'Zuordnen' — the modal carries
the invoice / fee / payment tabs and opens on the tab the best suggestion
points to.
</comment><date>2026-09-08 08:04:17 +0200</date><id>5e677922cb07d6e92ce254ce5aa134c953f82679</id><msg>Banking: combinable line filters (status, with suggestion, credit/debit), one Match button per row</msg><path><editType>edit</editType><file>app/components/accounting/banking/BankReconcilePanel.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/accounting/BankLineMatchModal.vue</affectedPath><affectedPath>server/api/invoices/[id]/pdf.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>2d529629dd7087711b7fd0272e86a1fb0333d052</commitId><timestamp>1788847457000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Banking: restyled match modal with invoice thumbnails and inline PDF preview

The 'Position zuordnen' modal now uses the banking design system (bk-*):
bank-line ticket, segmented tabs, candidate cards with a first-page
thumbnail, confidence + signal pills and an eye button that opens the
invoice PDF in a preview pane inside the modal (the modal widens, the
selection stays). New GET /api/invoices/[id]/pdf streams the invoice as
binary application/pdf (short private cache) for thumbnail + iframe.
Modal strings are translatable (banking_modal_*).
</comment><date>2026-09-08 08:04:17 +0200</date><id>2d529629dd7087711b7fd0272e86a1fb0333d052</id><msg>Banking: restyled match modal with invoice thumbnails and inline PDF preview</msg><path><editType>add</editType><file>server/api/invoices/[id]/pdf.get.ts</file></path><path><editType>edit</editType><file>app/components/accounting/BankLineMatchModal.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon/order-sources.get.ts</affectedPath><affectedPath>app/pages/accounting/ebay-settlements.vue</affectedPath><affectedPath>app/pages/accounting/amazon-settlements.vue</affectedPath><affectedPath>server/api/accounting/ebay/order-sources.get.ts</affectedPath><commitId>6d6c5a9505a8622125674e8b4c501793d5c96ba8</commitId><timestamp>1788847924000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Settlements: range picker with presets, calendar and 'last N periods'; order source preset by org

Replaces the two native date inputs on the Amazon/eBay settlement pages with
one Zeitraum control: a popover with presets (last month, 3/6/12 months,
this/last year), 'Letzte N Abrechnungen/Auszahlungen' (period-count mode —
looks back far enough and keeps the newest N), a two-month range calendar
(Nuxt UI UCalendar, grid pinned by marker CSS) and from/to inputs as typing
fallback. Same dateFrom/dateTo contract + range-change emit as before.
The order source is preselected with the first source owned by the org the
user is logged in with (order-sources routes now return orgId/orgName).
</comment><date>2026-09-08 08:12:04 +0200</date><id>6d6c5a9505a8622125674e8b4c501793d5c96ba8</id><msg>Settlements: range picker with presets, calendar and 'last N periods'; order source preset by org</msg><path><editType>edit</editType><file>app/pages/accounting/ebay-settlements.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-settlements.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon/order-sources.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/ebay/order-sources.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/offers/quotePdf.ts</affectedPath><affectedPath>server/utils/offers/pdfImages.ts</affectedPath><affectedPath>app/pages/users/leads/[id]/edit.vue</affectedPath><affectedPath>server/utils/offers/contractPdf.ts</affectedPath><commitId>7d9f6b6a5f6c39a4c956cc3c7a69dc0698266977</commitId><timestamp>1788848444000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Offer PDFs: normalise customer logo / screenshot / signature images to PNG or JPEG

pdfmake throws 'Unknown image format' for anything but PNG/JPEG. A lead
avatar in WebP/GIF/SVG (uploaded as company logo) was labelled image/png by
the lead page and killed the whole quote preview. New pdfImages.ts sniffs
the real format, converts other formats with sharp and drops unusable data
instead of failing; applied to the quote logo + website screenshot and the
contract signature image. The lead page now sniffs webp/gif/svg too.
</comment><date>2026-09-08 08:20:44 +0200</date><id>7d9f6b6a5f6c39a4c956cc3c7a69dc0698266977</id><msg>Offer PDFs: normalise customer logo / screenshot / signature images to PNG or JPEG</msg><path><editType>edit</editType><file>server/utils/offers/contractPdf.ts</file></path><path><editType>add</editType><file>server/utils/offers/pdfImages.ts</file></path><path><editType>edit</editType><file>app/pages/users/leads/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/utils/offers/quotePdf.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>app/components/offers/ContractModal.vue</affectedPath><commitId>666a2f22c1bedff589d9903b4eba506068632234</commitId><timestamp>1788848444000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Offer/contract modals: consistent, spaced checkbox rows

Every checkbox in the quote and contract modals gets the same row style:
gap between box and label, padding + hover surface, 18px box, brand accent,
and the global transform scale on checkbox inputs is neutralised so the box
no longer overlaps its label and neighbouring controls.
</comment><date>2026-09-08 08:20:44 +0200</date><id>666a2f22c1bedff589d9903b4eba506068632234</id><msg>Offer/contract modals: consistent, spaced checkbox rows</msg><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>edit</editType><file>app/components/offers/ContractModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/accounting/SettlementSourceFields.vue</affectedPath><commitId>e163c30b60d98dd983bffd29c9b4a35ac30a984c</commitId><timestamp>1788848478000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Settlements range picker: pin the calendar grid body to table layout
</comment><date>2026-09-08 08:21:18 +0200</date><id>e163c30b60d98dd983bffd29c9b4a35ac30a984c</id><msg>Settlements range picker: pin the calendar grid body to table layout</msg><path><editType>edit</editType><file>app/components/accounting/SettlementSourceFields.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/recipes.md</affectedPath><commitId>e175e587f486e8aa322305a03243fe19bc47d7fd</commitId><timestamp>1788848643000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Recipes: activities [Dokumente] convention, quote confirmation portal, PDF image normalisation, invoice PDF url, UCalendar pinning, checkbox scale override
</comment><date>2026-09-08 08:24:03 +0200</date><id>e175e587f486e8aa322305a03243fe19bc47d7fd</id><msg>Recipes: activities [Dokumente] convention, quote confirmation portal, PDF image normalisation, invoice PDF url, UCalendar pinning, checkbox scale override</msg><path><editType>edit</editType><file>reference/recipes.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/materials/ProductDetailRecordLocatedAt.vue</affectedPath><affectedPath>app/composables/states.ts</affectedPath><commitId>ecadbf8fdba3adfaaf4606a7e1e3f260362ebc28</commitId><timestamp>1788856346000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Product 'Located at' tab: show only locators with any on-hand / ordered / reserved qty by default, toggle for all, qty columns; drop tedir imports
</comment><date>2026-09-08 10:32:26 +0200</date><id>ecadbf8fdba3adfaaf4606a7e1e3f260362ebc28</id><msg>Product 'Located at' tab: show only locators with any on-hand / ordered / reserved qty by default, toggle for all, qty columns; drop tedir imports</msg><path><editType>edit</editType><file>app/composables/states.ts</file></path><path><editType>edit</editType><file>app/components/materials/ProductDetailRecordLocatedAt.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/materials/ProductStockLocatorsCard.vue</affectedPath><affectedPath>app/components/materials/ProductStockActionModal.vue</affectedPath><affectedPath>app/pages/materials/products/[id]/edit.vue</affectedPath><commitId>05ab84b63ee3aba0cfc569b4bb465352ed0ece3e</commitId><timestamp>1788856346000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Product edit: admin 'Bestand je Lagerplatz' card with per-locator tiles and in-page inventory count / goods receipt / movement modals that refresh quantities live
</comment><date>2026-09-08 10:32:26 +0200</date><id>05ab84b63ee3aba0cfc569b4bb465352ed0ece3e</id><msg>Product edit: admin 'Bestand je Lagerplatz' card with per-locator tiles and in-page inventory count / goods receipt / movement modals that refresh quantities live</msg><path><editType>add</editType><file>app/components/materials/ProductStockLocatorsCard.vue</file></path><path><editType>edit</editType><file>app/pages/materials/products/[id]/edit.vue</file></path><path><editType>add</editType><file>app/components/materials/ProductStockActionModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/receive-desktop.vue</affectedPath><commitId>7871bf08102d33741ddd70b99897d88aac182729</commitId><timestamp>1788856346000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Receive desktop: replace unstyled USelect/native selects with the SelectBox (Nuxt UI) wrapper, ignore stale org cookie entries
</comment><date>2026-09-08 10:32:26 +0200</date><id>7871bf08102d33741ddd70b99897d88aac182729</id><msg>Receive desktop: replace unstyled USelect/native selects with the SelectBox (Nuxt UI) wrapper, ignore stale org cookie entries</msg><path><editType>edit</editType><file>app/pages/integrations/receive-desktop.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/materials/ProductStockLocatorsCard.vue</affectedPath><commitId>34cafbecb1954b33dde58fc2638abfa8015077d2</commitId><timestamp>1788857650000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Product stock card: 'Etiketten drucken' action opening print-labels-desktop with the article preloaded (productId + productValue hand-off, SKU/UPC fallback)
</comment><date>2026-09-08 10:54:10 +0200</date><id>34cafbecb1954b33dde58fc2638abfa8015077d2</id><msg>Product stock card: 'Etiketten drucken' action opening print-labels-desktop with the article preloaded (productId + productValue hand-off, SKU/UPC fallback)</msg><path><editType>edit</editType><file>app/components/materials/ProductStockLocatorsCard.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/recipes.md</affectedPath><commitId>f10c9649cb3920d39f04cd8b0114d98441064633</commitId><timestamp>1788857650000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Recipes: product page stock actions card + modal (data source, cloned document chains, live refresh, page hand-off)
</comment><date>2026-09-08 10:54:10 +0200</date><id>f10c9649cb3920d39f04cd8b0114d98441064633</id><msg>Recipes: product page stock actions card + modal (data source, cloned document chains, live refresh, page hand-off)</msg><path><editType>edit</editType><file>reference/recipes.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/print-labels-desktop.vue</affectedPath><commitId>5b97c2d515fcdfe9d8b51bd9b00570a1a9c0a11b</commitId><timestamp>1788859286000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Print labels desktop: single full-width column — sticky action bar, scan + search side by side, selected articles as order-style positions (thumb, codes, org, per-row printer, qty); SelectBox for printer pickers
</comment><date>2026-09-08 11:21:26 +0200</date><id>5b97c2d515fcdfe9d8b51bd9b00570a1a9c0a11b</id><msg>Print labels desktop: single full-width column — sticky action bar, scan + search side by side, selected articles as order-style positions (thumb, codes, org, per-row printer, qty); SelectBox for printer pickers</msg><path><editType>edit</editType><file>app/pages/integrations/print-labels-desktop.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/materials/ProductStockLocatorsCard.vue</affectedPath><affectedPath>app/pages/materials/products/[id]/edit.vue</affectedPath><commitId>17d352cfcb1a5ce5660246960d7a983ec40662d6</commitId><timestamp>1788859286000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Product stock card: 'Etiketten drucken' opens the page's print-labels modal instead of a new tab
</comment><date>2026-09-08 11:21:26 +0200</date><id>17d352cfcb1a5ce5660246960d7a983ec40662d6</id><msg>Product stock card: 'Etiketten drucken' opens the page's print-labels modal instead of a new tab</msg><path><editType>edit</editType><file>app/pages/materials/products/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/components/materials/ProductStockLocatorsCard.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/offers/quote/send.post.ts</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>server/utils/offers/offerConditions.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><commitId>915e0f4f6e40350029d376104fc3d26e1dbe677b</commitId><timestamp>1788859992000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Quote modal: optional PDF attachment when the online confirmation link is sent (default link-only; PDF always attached without link), link-only e-mail texts, persisted in offer conditions
</comment><date>2026-09-08 11:33:12 +0200</date><id>915e0f4f6e40350029d376104fc3d26e1dbe677b</id><msg>Quote modal: optional PDF attachment when the online confirmation link is sent (default link-only; PDF always attached without link), link-only e-mail texts, persisted in offer conditions</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/api/offers/quote/send.post.ts</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path><path><editType>edit</editType><file>server/utils/offers/offerConditions.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/print/product.post.ts</affectedPath><affectedPath>app/pages/integrations/print-labels-desktop.vue</affectedPath><affectedPath>app/components/settings/PrinterForm.vue</affectedPath><affectedPath>app/pages/settings/printers/[id]/edit.vue</affectedPath><affectedPath>app/pages/settings/printers/create.vue</affectedPath><affectedPath>server/api/printers/cups-media.get.ts</affectedPath><affectedPath>app/pages/settings/printers/[id]/view.vue</affectedPath><affectedPath>server/api/settings/printers/store.post.ts</affectedPath><affectedPath>server/api/settings/printers/update.put.ts</affectedPath><affectedPath>app/components/sales/RelabelLabelPrintModal.vue</affectedPath><affectedPath>server/api/printers/index.get.ts</affectedPath><affectedPath>server/utils/labelMedia.ts</affectedPath><affectedPath>app/pages/settings/printers/[id]/duplicate.vue</affectedPath><affectedPath>reference/recipes.md</affectedPath><affectedPath>server/utils/cupsMedia.ts</affectedPath><affectedPath>server/utils/labelBarcode.ts</affectedPath><affectedPath>app/pages/settings/printers/index.vue</affectedPath><commitId>d81db0b973c0bf582df7f457d2dfb7974b2615ca</commitId><timestamp>1788864168000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Product labels: size-exact pages per printer, vector CODE128, label size from printer registry with CUPS fallback

- /api/print/product renders each printer group at the real label size (registry
  LabelWidthMm/LabelHeightMm → CUPS queue PPD default → legacy format) instead of
  A8 + fit-to-page, which used only 24 of 35 mm on labelprinter-2 and shrank the barcode
- fix off-by-one that drew every label on the page created for the next one (first
  label of a batch landed on a default-format page)
- barcodes as vector bars from bwip-js geometry (crisp on the 203 dpi Zebra grid);
  compact layout for labels &lt; 40 mm high, adaptive table layout for larger rolls;
  customSettings (Shopify stock page) keeps the legacy layouts
- registry sizes are sent to lp as -o media=Custom.WxHmm; results carry the resolved media
- Settings → Printers: label size (mm) with "Aus CUPS übernehmen" detect
  (/api/printers/cups-media), LabelType reorder reference; wired through form, pages, grid,
  store/update, /api/printers; relabel modal preselects the registry size
- recipe: product labels — page size from registry/CUPS, vector CODE128
</comment><date>2026-09-08 12:42:48 +0200</date><id>d81db0b973c0bf582df7f457d2dfb7974b2615ca</id><msg>Product labels: size-exact pages per printer, vector CODE128, label size from printer registry with CUPS fallback</msg><path><editType>edit</editType><file>server/api/settings/printers/store.post.ts</file></path><path><editType>add</editType><file>server/utils/labelMedia.ts</file></path><path><editType>edit</editType><file>app/components/sales/RelabelLabelPrintModal.vue</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path><path><editType>edit</editType><file>server/api/print/product.post.ts</file></path><path><editType>add</editType><file>server/utils/labelBarcode.ts</file></path><path><editType>edit</editType><file>server/api/settings/printers/update.put.ts</file></path><path><editType>edit</editType><file>app/pages/settings/printers/[id]/view.vue</file></path><path><editType>edit</editType><file>app/pages/settings/printers/index.vue</file></path><path><editType>edit</editType><file>app/pages/settings/printers/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/printers/index.get.ts</file></path><path><editType>edit</editType><file>app/pages/settings/printers/[id]/duplicate.vue</file></path><path><editType>add</editType><file>server/api/printers/cups-media.get.ts</file></path><path><editType>edit</editType><file>app/components/settings/PrinterForm.vue</file></path><path><editType>edit</editType><file>app/pages/integrations/print-labels-desktop.vue</file></path><path><editType>add</editType><file>server/utils/cupsMedia.ts</file></path><path><editType>edit</editType><file>app/pages/settings/printers/create.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/print/product.post.ts</affectedPath><commitId>fd32d8ff9d2823cb26fa373678f8f6e702029afe</commitId><timestamp>1788865575000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Product labels (compact): two name rows, barcode lower, org company name rotated along the right edge

- 35×17 / 54×29 layout: product name wraps to two lines, SKU row, then barcode +
  cleartext value; the 2-digit org code is gone
- ad_org.companyname (fallback Name) printed as one 90°-rotated string on the right
  edge, vertically centred, shrunk to 4 pt then ellipsised to the label height
</comment><date>2026-09-08 13:06:15 +0200</date><id>fd32d8ff9d2823cb26fa373678f8f6e702029afe</id><msg>Product labels (compact): two name rows, barcode lower, org company name rotated along the right edge</msg><path><editType>edit</editType><file>server/api/print/product.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/print/product.post.ts</affectedPath><commitId>7c416c6207cd20cb749989c9e7438084d2509284</commitId><timestamp>1788867149000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Product labels (compact): wider text/barcode area, company name at the right edge, barcode lower with a clear gap under the text rows
</comment><date>2026-09-08 13:32:29 +0200</date><id>7c416c6207cd20cb749989c9e7438084d2509284</id><msg>Product labels (compact): wider text/barcode area, company name at the right edge, barcode lower with a clear gap under the text rows</msg><path><editType>edit</editType><file>server/api/print/product.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/composables/useOpenShipments.ts</affectedPath><commitId>d57d085a7df0992fea2f94c53a03585617422d88</commitId><timestamp>1788872894000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Commissioning open-shipments list: expand C_Order_ID and show only shipments of fulfillment orders (isFulfillmentOrder = Y), mirroring the dashboard open-to-commission rule; scan input unchanged
</comment><date>2026-09-08 15:08:14 +0200</date><id>d57d085a7df0992fea2f94c53a03585617422d88</id><msg>Commissioning open-shipments list: expand C_Order_ID and show only shipments of fulfillment orders (isFulfillmentOrder = Y), mirroring the dashboard open-to-commission rule; scan input unchanged</msg><path><editType>edit</editType><file>app/composables/useOpenShipments.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/RequestForm.vue</affectedPath><commitId>9afa79b55166ae0a4de7ff3f6046ff5752dac38a</commitId><timestamp>1788882961000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Request edit form: billing dialog gets a 'Betrag' mode next to 'Zeit' — book a direct (also negative) amount without time, same [Zeitabrechnung] envelope and QtySpent rules as the my-tickets detail
</comment><date>2026-09-08 17:56:01 +0200</date><id>9afa79b55166ae0a4de7ff3f6046ff5752dac38a</id><msg>Request edit form: billing dialog gets a 'Betrag' mode next to 'Zeit' — book a direct (also negative) amount without time, same [Zeitabrechnung] envelope and QtySpent rules as the my-tickets detail</msg><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/requests/requests/create.vue</affectedPath><affectedPath>app/pages/requests/my-tickets/index.vue</affectedPath><affectedPath>app/pages/requests/my-tickets/create.vue</affectedPath><commitId>a91a37f8b47890a451b7d1352939b52ff8bc5eb9</commitId><timestamp>1788882961000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Ticket creation (Create Request + my-tickets wizard) opens the new ticket in the my-tickets split view (?ticket=&lt;id&gt;); split view refetches its list when a deep-linked ticket is not loaded yet
</comment><date>2026-09-08 17:56:01 +0200</date><id>a91a37f8b47890a451b7d1352939b52ff8bc5eb9</id><msg>Ticket creation (Create Request + my-tickets wizard) opens the new ticket in the my-tickets split view (?ticket=&lt;id&gt;); split view refetches its list when a deep-linked ticket is not loaded yet</msg><path><editType>edit</editType><file>app/pages/requests/my-tickets/index.vue</file></path><path><editType>edit</editType><file>app/pages/requests/my-tickets/create.vue</file></path><path><editType>edit</editType><file>app/pages/requests/requests/create.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/admin/users/leads/latest.get.ts</affectedPath><affectedPath>app/pages/index.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>25e57e1d2a58ceb6994e6c82bab7533d42935788</commitId><timestamp>1788882961000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Dashboard Latest Leads: offer and contract badges per lead — greyed when the online link was sent, coloured once the offer is accepted / the contract is signed
</comment><date>2026-09-08 17:56:01 +0200</date><id>25e57e1d2a58ceb6994e6c82bab7533d42935788</id><msg>Dashboard Latest Leads: offer and contract badges per lead — greyed when the online link was sent, coloured once the offer is accepted / the contract is signed</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/api/admin/users/leads/latest.get.ts</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>730</buildNumber><marked><SHA1>2c1cf04ffecab7dbbadb2f9037e9f71476ccfe2f</SHA1><branch><SHA1>2c1cf04ffecab7dbbadb2f9037e9f71476ccfe2f</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>2c1cf04ffecab7dbbadb2f9037e9f71476ccfe2f</SHA1><branch><SHA1>2c1cf04ffecab7dbbadb2f9037e9f71476ccfe2f</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>2c1cf04ffecab7dbbadb2f9037e9f71476ccfe2f</SHA1><branch><SHA1>2c1cf04ffecab7dbbadb2f9037e9f71476ccfe2f</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#730</displayName><duration>64433</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #730</fullDisplayName><id>730</id><inProgress>false</inProgress><keepLog>false</keepLog><number>730</number><queueId>5649</queueId><result>SUCCESS</result><timestamp>1788825600272</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/730/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/banking-lexoffice/eBay Payments_EUR Sammelkonto_CSV_2026-06-09_2026-09-07.csv</affectedPath><affectedPath>reference/banking-lexoffice/leitfaden_fuer_die_buchhaltung.pdf</affectedPath><commitId>09cf3a9f16c449a1b1d2a51178b035a7eda02cc6</commitId><timestamp>1788783186000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Tune Amazon Bezahlabgleich
</comment><date>2026-09-07 14:13:06 +0200</date><id>09cf3a9f16c449a1b1d2a51178b035a7eda02cc6</id><msg>Tune Amazon Bezahlabgleich</msg><path><editType>add</editType><file>reference/banking-lexoffice/eBay Payments_EUR Sammelkonto_CSV_2026-06-09_2026-09-07.csv</file></path><path><editType>add</editType><file>reference/banking-lexoffice/leitfaden_fuer_die_buchhaltung.pdf</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/utils/amazonLexoffice.ts</affectedPath><affectedPath>app/components/accounting/SettlementGridFilters.vue</affectedPath><affectedPath>server/utils/ebayFinancesApi.ts</affectedPath><affectedPath>reference/banking-lexoffice/Amazon_EUR Sammelkonto_CSV_2026-06-09_2026-09-07.csv</affectedPath><affectedPath>app/components/accounting/SettlementToolbar.vue</affectedPath><affectedPath>app/pages/accounting/amazon-settlements.vue</affectedPath><affectedPath>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</affectedPath><affectedPath>app/utils/amazonFeeCodes.ts</affectedPath><affectedPath>app/composables/useLexofficeSettlementExport.ts</affectedPath><affectedPath>app/components/accounting/SettlementPeriodList.vue</affectedPath><affectedPath>server/utils/amazonSpApi.ts</affectedPath><affectedPath>app/utils/settlementViews.ts</affectedPath><affectedPath>app/components/accounting/SettlementSummaryStrip.vue</affectedPath><affectedPath>app/components/accounting/SettlementViewSwitch.vue</affectedPath><affectedPath>app/utils/settlementGridFilter.ts</affectedPath><affectedPath>app/utils/ebayLexoffice.ts</affectedPath><affectedPath>app/components/accounting/SettlementSourceFields.vue</affectedPath><affectedPath>app/pages/accounting/ebay-settlements.vue</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><affectedPath>app/components/accounting/LexofficeHintsPanel.vue</affectedPath><affectedPath>app/composables/menu/admin/accounting.ts</affectedPath><commitId>ef7d4221f72b123c18900fe104eb9b44608eb18c</commitId><timestamp>1788787440000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add amazon settlement
</comment><date>2026-09-07 15:24:00 +0200</date><id>ef7d4221f72b123c18900fe104eb9b44608eb18c</id><msg>add amazon settlement</msg><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path><path><editType>add</editType><file>app/utils/amazonFeeCodes.ts</file></path><path><editType>add</editType><file>app/utils/settlementGridFilter.ts</file></path><path><editType>add</editType><file>app/components/accounting/SettlementSourceFields.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-settlements.vue</file></path><path><editType>add</editType><file>app/components/accounting/SettlementToolbar.vue</file></path><path><editType>add</editType><file>app/components/accounting/LexofficeHintsPanel.vue</file></path><path><editType>add</editType><file>app/components/accounting/SettlementGridFilters.vue</file></path><path><editType>edit</editType><file>app/composables/menu/admin/accounting.ts</file></path><path><editType>add</editType><file>app/utils/settlementViews.ts</file></path><path><editType>add</editType><file>app/components/accounting/SettlementPeriodList.vue</file></path><path><editType>add</editType><file>app/components/accounting/SettlementViewSwitch.vue</file></path><path><editType>add</editType><file>app/composables/useLexofficeSettlementExport.ts</file></path><path><editType>edit</editType><file>server/utils/amazonSpApi.ts</file></path><path><editType>add</editType><file>reference/banking-lexoffice/Amazon_EUR Sammelkonto_CSV_2026-06-09_2026-09-07.csv</file></path><path><editType>edit</editType><file>server/utils/ebayFinancesApi.ts</file></path><path><editType>edit</editType><file>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</file></path><path><editType>add</editType><file>app/components/accounting/SettlementSummaryStrip.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/ebay-settlements.vue</file></path><path><editType>add</editType><file>app/utils/amazonLexoffice.ts</file></path><path><editType>add</editType><file>app/utils/ebayLexoffice.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/accounting/SettlementViewSwitch.vue</affectedPath><affectedPath>app/components/AgGrid/Accounting/AgLexofficeSyncStatus.vue</affectedPath><affectedPath>app/utils/settlementGridFilter.ts</affectedPath><affectedPath>app/components/accounting/SettlementGridFilters.vue</affectedPath><affectedPath>app/components/accounting/SettlementLexofficeActions.vue</affectedPath><affectedPath>app/pages/accounting/amazon-settlements.vue</affectedPath><affectedPath>server/api/invoices/lexoffice-reset.post.ts</affectedPath><affectedPath>server/api/invoices/lexoffice-upload.post.ts</affectedPath><affectedPath>server/utils/lexofficeCsvExportMark.ts</affectedPath><affectedPath>app/composables/useLexofficeSettlementExport.ts</affectedPath><affectedPath>server/api/accounting/lexoffice-csv-export.post.ts</affectedPath><affectedPath>server/api/accounting/amazon/settlement.get.ts</affectedPath><commitId>c2c7b9c16220cd0b336b5d3d7dbef95248c9c69e</commitId><timestamp>1788790692000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon settlements: Lexoffice upload/reset + CSV-export marker

Nach Order-ID view of /accounting/amazon-settlements can now upload the
invoices of the selected or all visible (filtered) orders to Lexoffice,
reset their upload status, and shows per order whether an invoice exists,
whether it was uploaded to Lexoffice and whether the order already went out
in a settlement CSV.

- Checkbox row selection (pinned selection column, group selects filtered
  descendants, header selects all filtered rows)
- SettlementLexofficeActions: "Lexoffice Upload" (Auswahl / Alle sichtbaren)
  and "Zurücksetzen" (upload status + CSV marker, both scopes); chunked
  requests with progress, category modal reused from /sales/invoices
- New grid columns "Lexoffice" and "CSV-Export" (AgLexofficeSyncStatus,
  status shown on collapsed group rows, click = single upload/reset)
- Filter card: new Lexoffice section (Rechnung / Lexoffice-Upload / CSV-Export)
- CSV export marks all matched orders of the exported periods via new
  onExported hook in useLexofficeSettlementExport
- settlement.get.ts returns invoice upload status + order CSV marker;
  C_Order columns isLexofficeCsvExported / lexofficeCsvExportDate are
  optional (fail-soft retry without them until created in iDempiere)
- lexoffice-upload/-reset now return uploadedIds / skippedIds / resetIds
- New route accounting/lexoffice-csv-export (mark / reset orders)
</comment><date>2026-09-07 16:18:12 +0200</date><id>c2c7b9c16220cd0b336b5d3d7dbef95248c9c69e</id><msg>Amazon settlements: Lexoffice upload/reset + CSV-export marker</msg><path><editType>edit</editType><file>app/components/accounting/SettlementViewSwitch.vue</file></path><path><editType>add</editType><file>app/components/AgGrid/Accounting/AgLexofficeSyncStatus.vue</file></path><path><editType>edit</editType><file>app/utils/settlementGridFilter.ts</file></path><path><editType>add</editType><file>server/api/accounting/lexoffice-csv-export.post.ts</file></path><path><editType>add</editType><file>server/utils/lexofficeCsvExportMark.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon/settlement.get.ts</file></path><path><editType>add</editType><file>app/components/accounting/SettlementLexofficeActions.vue</file></path><path><editType>edit</editType><file>server/api/invoices/lexoffice-reset.post.ts</file></path><path><editType>edit</editType><file>app/composables/useLexofficeSettlementExport.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-settlements.vue</file></path><path><editType>edit</editType><file>app/components/accounting/SettlementGridFilters.vue</file></path><path><editType>edit</editType><file>server/api/invoices/lexoffice-upload.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/bank-reconciliation/index.vue</affectedPath><commitId>269ecf4f253329ab9533a693ce3103ac4359f80a</commitId><timestamp>1788791097000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Bank reconciliation: auto-complete statement when the last line is matched

When a match (invoice, charge or linked payment) resolves the last open
line of a Drafted C_BankStatement, the page now re-reads the lines from
the server and, if all are matched, sends the Complete doc-action
automatically. The statement posts and its payments are marked
reconciled without a separate manual step.

- completion logic extracted into runCompletion(); the manual
  "Auszug abschließen" button keeps its confirm dialog and remains as a
  retry if the automatic completion is rejected by iDempiere
- on failure the alert states that all lines are matched but the
  statement could not be closed automatically, with the backend reason
- after completion the next oldest draft is auto-selected
- progress hint tells the user the statement closes automatically once
  the last position is matched
</comment><date>2026-09-07 16:24:57 +0200</date><id>269ecf4f253329ab9533a693ce3103ac4359f80a</id><msg>Bank reconciliation: auto-complete statement when the last line is matched</msg><path><editType>edit</editType><file>app/pages/accounting/bank-reconciliation/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/public/sign/[token]/document/[key].get.ts</affectedPath><affectedPath>server/utils/offers/contractPackage.ts</affectedPath><affectedPath>app/composables/menu/admin/settings.ts</affectedPath><affectedPath>.gitignore</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>server/api/legal-documents/[key]/index.put.ts</affectedPath><affectedPath>CLAUDE.md</affectedPath><affectedPath>server/api/legal-documents/[key]/pdf.get.ts</affectedPath><affectedPath>server/utils/offers/staticAnnexes.ts</affectedPath><affectedPath>server/utils/offers/offerAttachments.ts</affectedPath><affectedPath>app/composables/useOfferContract.ts</affectedPath><affectedPath>reference/contracts/DSLV-ADSp-2017.pdf</affectedPath><affectedPath>server/api/offers/contract/signing-cancel.post.ts</affectedPath><affectedPath>server/utils/offers/offerConditions.ts</affectedPath><affectedPath>server/api/legal-documents/[key]/version/[id].get.ts</affectedPath><affectedPath>server/api/offers/contract/sections.get.ts</affectedPath><affectedPath>server/api/public/sign/[token]/request-renewal.post.ts</affectedPath><affectedPath>reference/contracts/Logistik-AGB_2019_dt.pdf</affectedPath><affectedPath>server/utils/legalDocsDb.ts</affectedPath><affectedPath>server/utils/offers/agbPdf.ts</affectedPath><affectedPath>app/pages/users/leads/[id]/edit.vue</affectedPath><affectedPath>reference/contracts/KFP_DSVGO_2026.pdf</affectedPath><affectedPath>reference/recipes.md</affectedPath><affectedPath>reference/README.md</affectedPath><affectedPath>server/api/public/sign/[token]/index.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>reference/ci/deploy-production.sh</affectedPath><affectedPath>server/api/offers/contract/send.post.ts</affectedPath><affectedPath>server/utils/offers/agbDefault.ts</affectedPath><affectedPath>app/pages/settings/legal-documents/index.vue</affectedPath><affectedPath>server/api/legal-documents/[key]/index.get.ts</affectedPath><affectedPath>reference/ci/README.md</affectedPath><affectedPath>app/pages/sign/[token].vue</affectedPath><affectedPath>server/utils/offers/contractSigning.ts</affectedPath><affectedPath>server/api/offers/last-offer.get.ts</affectedPath><affectedPath>server/api/public/sign/[token]/index.post.ts</affectedPath><affectedPath>server/api/offers/contract/signing-status.get.ts</affectedPath><affectedPath>server/assets/offers/DSLV-ADSp-2017.pdf</affectedPath><affectedPath>server/utils/offers/contractPdf.ts</affectedPath><affectedPath>server/utils/offers/contractTexts.ts</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><affectedPath>app/components/offers/ContractModal.vue</affectedPath><affectedPath>server/assets/offers/Logistik-AGB_2019_dt.pdf</affectedPath><affectedPath>app/components/sign/DocThumb.vue</affectedPath><affectedPath>server/utils/offers/contractSigningDb.ts</affectedPath><commitId>6b69cc2fe98bb650b6a1459eef13b9bdc8277e0c</commitId><timestamp>1788794153000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add new contract-offer system with online signing
</comment><date>2026-09-07 17:15:53 +0200</date><id>6b69cc2fe98bb650b6a1459eef13b9bdc8277e0c</id><msg>Add new contract-offer system with online signing</msg><path><editType>add</editType><file>reference/contracts/DSLV-ADSp-2017.pdf</file></path><path><editType>add</editType><file>server/assets/offers/DSLV-ADSp-2017.pdf</file></path><path><editType>add</editType><file>server/utils/offers/staticAnnexes.ts</file></path><path><editType>edit</editType><file>server/utils/offers/contractPdf.ts</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path><path><editType>add</editType><file>server/utils/offers/offerAttachments.ts</file></path><path><editType>add</editType><file>server/api/offers/contract/signing-status.get.ts</file></path><path><editType>add</editType><file>server/api/offers/contract/signing-cancel.post.ts</file></path><path><editType>add</editType><file>reference/contracts/Logistik-AGB_2019_dt.pdf</file></path><path><editType>add</editType><file>server/utils/offers/contractSigning.ts</file></path><path><editType>add</editType><file>reference/ci/README.md</file></path><path><editType>add</editType><file>server/api/public/sign/[token]/document/[key].get.ts</file></path><path><editType>add</editType><file>server/api/legal-documents/[key]/index.put.ts</file></path><path><editType>edit</editType><file>app/composables/menu/admin/settings.ts</file></path><path><editType>edit</editType><file>app/components/offers/ContractModal.vue</file></path><path><editType>add</editType><file>app/pages/settings/legal-documents/index.vue</file></path><path><editType>add</editType><file>server/api/offers/last-offer.get.ts</file></path><path><editType>add</editType><file>server/api/public/sign/[token]/request-renewal.post.ts</file></path><path><editType>add</editType><file>server/utils/offers/agbPdf.ts</file></path><path><editType>edit</editType><file>server/utils/offers/offerConditions.ts</file></path><path><editType>add</editType><file>server/api/offers/contract/sections.get.ts</file></path><path><editType>edit</editType><file>reference/ci/deploy-production.sh</file></path><path><editType>add</editType><file>reference/contracts/KFP_DSVGO_2026.pdf</file></path><path><editType>edit</editType><file>server/api/offers/contract/send.post.ts</file></path><path><editType>add</editType><file>server/assets/offers/Logistik-AGB_2019_dt.pdf</file></path><path><editType>edit</editType><file>reference/README.md</file></path><path><editType>add</editType><file>server/api/public/sign/[token]/index.get.ts</file></path><path><editType>edit</editType><file>app/composables/useOfferContract.ts</file></path><path><editType>edit</editType><file>.gitignore</file></path><path><editType>add</editType><file>server/api/public/sign/[token]/index.post.ts</file></path><path><editType>add</editType><file>server/utils/offers/agbDefault.ts</file></path><path><editType>add</editType><file>server/api/legal-documents/[key]/version/[id].get.ts</file></path><path><editType>edit</editType><file>server/utils/offers/contractTexts.ts</file></path><path><editType>add</editType><file>server/api/legal-documents/[key]/index.get.ts</file></path><path><editType>edit</editType><file>CLAUDE.md</file></path><path><editType>add</editType><file>app/pages/sign/[token].vue</file></path><path><editType>add</editType><file>server/utils/offers/contractPackage.ts</file></path><path><editType>edit</editType><file>app/pages/users/leads/[id]/edit.vue</file></path><path><editType>add</editType><file>server/api/legal-documents/[key]/pdf.get.ts</file></path><path><editType>add</editType><file>server/utils/legalDocsDb.ts</file></path><path><editType>add</editType><file>app/components/sign/DocThumb.vue</file></path><path><editType>add</editType><file>server/utils/offers/contractSigningDb.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/offers/contract/send.post.ts</affectedPath><affectedPath>server/utils/offers/contractPdf.ts</affectedPath><affectedPath>server/utils/offers/contractTexts.ts</affectedPath><affectedPath>app/components/offers/ContractModal.vue</affectedPath><affectedPath>app/composables/useOfferContract.ts</affectedPath><affectedPath>server/utils/offers/offerConditions.ts</affectedPath><affectedPath>app/pages/sign/[token].vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>12f40ea2a7a75561d477750382f56b35924124ff</commitId><timestamp>1788796254000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Contract modal: 0-month notice default, aligned rows, checkbox spacing, opt-in PDF attachments on signing mail

- Kündigungsfrist defaults to 0; termination clause adapts (no notice / 1 month / N months + special right)
- Parameter rows bottom-align inputs; shorter cure-period label
- Spacing for contract-part, annex and signing checkboxes
- New 'attach PDFs to link e-mail' option (default off); link-only mail text; persisted with conditions
- Signing page: VAT hint now says German VAT ID may follow later but is required before shipping into Germany
</comment><date>2026-09-07 17:50:54 +0200</date><id>12f40ea2a7a75561d477750382f56b35924124ff</id><msg>Contract modal: 0-month notice default, aligned rows, checkbox spacing, opt-in PDF attachments on signing mail</msg><path><editType>edit</editType><file>app/pages/sign/[token].vue</file></path><path><editType>edit</editType><file>app/components/offers/ContractModal.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/utils/offers/contractPdf.ts</file></path><path><editType>edit</editType><file>server/utils/offers/contractTexts.ts</file></path><path><editType>edit</editType><file>server/utils/offers/offerConditions.ts</file></path><path><editType>edit</editType><file>app/composables/useOfferContract.ts</file></path><path><editType>edit</editType><file>server/api/offers/contract/send.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/invoices/lexoffice-upload.post.ts</affectedPath><affectedPath>server/utils/lexofficeClient.ts</affectedPath><commitId>2a68c6e0f83f7e930afc900ceef1304612462a26</commitId><timestamp>1788796819000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Lexoffice upload: pipeline invoices concurrently, throttle Lexware calls

The upload processed invoices strictly one after another with two fixed 500 ms
sleeps per invoice (~4.7 s each on prod: 1.0 s sleeps, 1.2 s iDempiere PDF
render, ~2.5 s Lexware calls). Lexware's upload endpoints return 202 before their
asynchronous OCR, so there was never anything to wait for — the time was purely
serial latency.

- lexofficeClient.ts: new `lexFetch` — the single gateway for all Lexware traffic.
  Process-wide pacing (&gt;= 520 ms between call starts), max 2 calls in flight and
  429/503 retry with backoff (honours Retry-After). All client helpers use it.
- lexoffice-upload.post.ts: 3 invoices are worked on concurrently (worker pool),
  so PDF rendering overlaps the Lexware round-trips; the hard-coded sleeps are
  replaced by the throttle. Per-partner contact resolution is memoised for the
  run so concurrent invoices of one partner can't create duplicate contacts.
  Per-invoice logs are prefixed with the invoice id; result id lists keep the
  caller's input order. Response contract unchanged.

Expected: ~4.7 s -&gt; ~1.5 s per invoice on bulk uploads.
</comment><date>2026-09-07 18:00:19 +0200</date><id>2a68c6e0f83f7e930afc900ceef1304612462a26</id><msg>Lexoffice upload: pipeline invoices concurrently, throttle Lexware calls</msg><path><editType>edit</editType><file>server/api/invoices/lexoffice-upload.post.ts</file></path><path><editType>edit</editType><file>server/utils/lexofficeClient.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-settlements.vue</affectedPath><commitId>f409dbb222ee4bbe9fbf05ab0777df7eb128779a</commitId><timestamp>1788796831000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon settlements: show/filter Lexoffice + CSV status immediately after actions

After uploading invoices or exporting a settlement CSV the row status was patched
in place, but the "Lexoffice" / "CSV-Export" column set filters kept the value
list they built from the initially loaded rows. A period that started with only
"Nein" never offered "Ja", so filtering on the just-uploaded / just-exported rows
only worked after a full page reload.

- refreshLexCells now refreshes both set filters' value lists
  (getColumnFilterInstance -&gt; refreshFilterValues) before re-running the filter,
  and updates the filtered row count + lexStats in the same pass.
- Both columns get `filterParams: { refreshValuesOnOpen: true }` as a safety net.
</comment><date>2026-09-07 18:00:31 +0200</date><id>f409dbb222ee4bbe9fbf05ab0777df7eb128779a</id><msg>Amazon settlements: show/filter Lexoffice + CSV status immediately after actions</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-settlements.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-settlements.vue</affectedPath><affectedPath>app/pages/sales/invoices/index.vue</affectedPath><commitId>3dd6009da7e593917e3ea5287f39c505a6b94c09</commitId><timestamp>1788796841000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Lexoffice upload: send invoices in chunks of 20 per request

The sales invoices list sent every selected invoice id in a single request, so a
large selection became one very long HTTP request that could hit the proxy
timeout. It now uploads in chunks of 20 ids sequentially and aggregates
uploaded / skipped / error counts into one toast. The Amazon settlements page
already chunked (10) — raised to 20 to match the faster concurrent server path
while keeping progress visible.
</comment><date>2026-09-07 18:00:41 +0200</date><id>3dd6009da7e593917e3ea5287f39c505a6b94c09</id><msg>Lexoffice upload: send invoices in chunks of 20 per request</msg><path><editType>edit</editType><file>app/pages/sales/invoices/index.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-settlements.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/recipes.md</affectedPath><commitId>5049cd1e61d80ce33abfb9226f9a4fcf225ccd20</commitId><timestamp>1788797057000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Recipes: Lexware uploads are async, lexFetch throttle, settlement grid set-filter refresh
</comment><date>2026-09-07 18:04:17 +0200</date><id>5049cd1e61d80ce33abfb9226f9a4fcf225ccd20</id><msg>Recipes: Lexware uploads are async, lexFetch throttle, settlement grid set-filter refresh</msg><path><editType>edit</editType><file>reference/recipes.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/invoices/lexoffice-upload.post.ts</affectedPath><commitId>e7af7d902afd9c8b492f5aae928dd5fd3ca0b1ff</commitId><timestamp>1788797129000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Lexoffice upload: guard against double uploads of the same invoice

- Dedupe the requested ids: with concurrent workers a duplicated id could be
  picked up by two workers at once (serial processing used to mask this).
- Process-local in-progress set: overlapping requests (double-click, two tabs,
  two users) that both pass the isUploadToLexoffice check before either has
  marked the invoice now skip it with "already being uploaded by another
  request" instead of uploading it twice.
</comment><date>2026-09-07 18:05:29 +0200</date><id>e7af7d902afd9c8b492f5aae928dd5fd3ca0b1ff</id><msg>Lexoffice upload: guard against double uploads of the same invoice</msg><path><editType>edit</editType><file>server/api/invoices/lexoffice-upload.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/assets/offers/flyer/logos/amazon_icon.png</affectedPath><affectedPath>server/assets/offers/flyer/warehouse_scanning_p.jpg</affectedPath><affectedPath>server/assets/offers/flyer/barcode_scanner_t.jpg</affectedPath><affectedPath>server/api/offers/flyer.get.ts</affectedPath><affectedPath>server/assets/offers/flyer/forklift_aisle_p.jpg</affectedPath><affectedPath>server/assets/offers/flyer/logyou-logo.png</affectedPath><affectedPath>server/assets/offers/flyer/warehouse_scanning.jpg</affectedPath><affectedPath>server/assets/offers/flyer/packing_station_p.jpg</affectedPath><affectedPath>server/assets/offers/flyer/delivery_truck_t.jpg</affectedPath><affectedPath>server/assets/offers/flyer/logos/xentral_logo.png</affectedPath><affectedPath>server/assets/offers/flyer/screen-returns.png</affectedPath><affectedPath>server/assets/offers/flyer/logos/shopify.png</affectedPath><affectedPath>server/assets/offers/flyer/delivery_truck_p.jpg</affectedPath><affectedPath>server/assets/offers/flyer/logship-logo-dark.png</affectedPath><affectedPath>server/assets/offers/flyer/delivery_truck.jpg</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><affectedPath>server/assets/offers/flyer/forklift_aisle.jpg</affectedPath><affectedPath>server/assets/offers/flyer/warehouse_shelves.jpg</affectedPath><affectedPath>server/assets/offers/flyer/logos/dhlexpress.png</affectedPath><affectedPath>server/assets/offers/flyer/logos/temu.png</affectedPath><affectedPath>server/utils/offers/flyerTexts.ts</affectedPath><affectedPath>server/assets/offers/flyer/ecommerce_packages.jpg</affectedPath><affectedPath>server/utils/offers/contractSigning.ts</affectedPath><affectedPath>server/assets/offers/flyer/warehouse_shelves_p.jpg</affectedPath><affectedPath>server/assets/offers/flyer/forklift_aisle_t.jpg</affectedPath><affectedPath>app/pages/flyer-demo/[screen].vue</affectedPath><affectedPath>server/assets/offers/flyer/screen-orders.png</affectedPath><affectedPath>server/assets/offers/flyer/barcode_scanner_p.jpg</affectedPath><affectedPath>server/assets/offers/flyer/cardboard_boxes_t.jpg</affectedPath><affectedPath>server/assets/offers/flyer/barcode_scanner.jpg</affectedPath><affectedPath>reference/contracts/Monkatech x Hive - 20240701 - Angebot.pdf</affectedPath><affectedPath>server/assets/offers/flyer/laptop_analytics_w.jpg</affectedPath><affectedPath>server/assets/offers/flyer/packing_station.jpg</affectedPath><affectedPath>server/utils/offers/flyerPdf.ts</affectedPath><affectedPath>server/utils/offers/contractPackage.ts</affectedPath><affectedPath>server/assets/offers/flyer/logos/dpd_logo_small.png</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>server/assets/offers/flyer/cardboard_boxes.jpg</affectedPath><affectedPath>server/assets/offers/flyer/logos/plentyone_logo.png</affectedPath><affectedPath>app/composables/useOfferContract.ts</affectedPath><affectedPath>server/assets/offers/flyer/logos/gls_logo_small.svg</affectedPath><affectedPath>server/assets/offers/flyer/logos/jtl.png</affectedPath><affectedPath>server/assets/offers/flyer/mobile_warehouse_p.jpg</affectedPath><affectedPath>server/assets/offers/flyer/screen-dashboard.png</affectedPath><affectedPath>reference/recipes.md</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>server/assets/offers/flyer/screen-shipments.png</affectedPath><affectedPath>server/assets/offers/flyer/logyou-logo-dark.png</affectedPath><affectedPath>server/assets/offers/flyer/logos/shopware.png</affectedPath><affectedPath>server/assets/offers/flyer/warehouse_scanning_w.jpg</affectedPath><affectedPath>server/assets/offers/flyer/cardboard_boxes_p.jpg</affectedPath><affectedPath>server/assets/offers/flyer/ecommerce_packages_w.jpg</affectedPath><affectedPath>server/assets/offers/flyer/mobile_warehouse.jpg</affectedPath><affectedPath>server/assets/offers/flyer/laptop_analytics.jpg</affectedPath><affectedPath>server/assets/offers/flyer/screen-stock.png</affectedPath><affectedPath>server/assets/offers/flyer/logship-logo-light.png</affectedPath><affectedPath>server/assets/offers/flyer/logos/dhl_logo_small.png</affectedPath><affectedPath>server/assets/offers/flyer/screen-mobile.png</affectedPath><affectedPath>server/assets/offers/flyer/screen-tracking.png</affectedPath><affectedPath>app/components/offers/ContractModal.vue</affectedPath><affectedPath>server/assets/offers/flyer/logos/ebay.svg</affectedPath><affectedPath>server/assets/offers/flyer/conveyor_packages_p.jpg</affectedPath><affectedPath>server/assets/offers/flyer/conveyor_packages.jpg</affectedPath><affectedPath>server/api/offers/quote/send.post.ts</affectedPath><affectedPath>server/assets/offers/flyer/logship-mark.png</affectedPath><affectedPath>server/assets/offers/flyer/warehouse_shelves_t.jpg</affectedPath><affectedPath>server/assets/offers/flyer/logos/one_logo_small.png</affectedPath><commitId>2c1cf04ffecab7dbbadb2f9037e9f71476ccfe2f</commitId><timestamp>1788798488000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Marketing flyer LogYou x LogShip: 16:9 PDF, opt-in attachment on quote/contract, dummy-data demo screens

- server/utils/offers/flyerPdf.ts + flyerTexts.ts (DE/EN), assets under server/assets/offers/flyer
- GET /api/offers/flyer (preview/download), contractPackage 'flyer' key (explicit opt-in), quote send attachment
- Checkboxes (default off) in ContractModal and QuoteModal with preview link
- /flyer-demo/* public dummy-data screens used for the app screenshots
- ci: deploy script preserves new SQLite stores + signing PDFs; ci/README convention; recipes
</comment><date>2026-09-07 18:28:08 +0200</date><id>2c1cf04ffecab7dbbadb2f9037e9f71476ccfe2f</id><msg>Marketing flyer LogYou x LogShip: 16:9 PDF, opt-in attachment on quote/contract, dummy-data demo screens</msg><path><editType>add</editType><file>server/assets/offers/flyer/logos/shopify.png</file></path><path><editType>add</editType><file>server/utils/offers/flyerTexts.ts</file></path><path><editType>add</editType><file>server/assets/offers/flyer/delivery_truck.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/delivery_truck_p.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/screen-shipments.png</file></path><path><editType>edit</editType><file>app/components/offers/ContractModal.vue</file></path><path><editType>add</editType><file>server/assets/offers/flyer/logyou-logo.png</file></path><path><editType>add</editType><file>server/assets/offers/flyer/logos/ebay.svg</file></path><path><editType>add</editType><file>server/api/offers/flyer.get.ts</file></path><path><editType>add</editType><file>server/assets/offers/flyer/warehouse_scanning_p.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/forklift_aisle_p.jpg</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>add</editType><file>server/assets/offers/flyer/laptop_analytics.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/ecommerce_packages.jpg</file></path><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path><path><editType>add</editType><file>server/assets/offers/flyer/screen-stock.png</file></path><path><editType>add</editType><file>server/assets/offers/flyer/mobile_warehouse.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/packing_station.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/screen-tracking.png</file></path><path><editType>add</editType><file>server/assets/offers/flyer/conveyor_packages.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/ecommerce_packages_w.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/barcode_scanner_p.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/mobile_warehouse_p.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/logos/one_logo_small.png</file></path><path><editType>add</editType><file>server/assets/offers/flyer/warehouse_scanning.jpg</file></path><path><editType>add</editType><file>app/pages/flyer-demo/[screen].vue</file></path><path><editType>edit</editType><file>app/composables/useOfferContract.ts</file></path><path><editType>add</editType><file>server/assets/offers/flyer/barcode_scanner.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/logos/amazon_icon.png</file></path><path><editType>add</editType><file>server/assets/offers/flyer/logos/jtl.png</file></path><path><editType>add</editType><file>server/assets/offers/flyer/screen-returns.png</file></path><path><editType>add</editType><file>server/assets/offers/flyer/logship-logo-light.png</file></path><path><editType>add</editType><file>server/assets/offers/flyer/logship-logo-dark.png</file></path><path><editType>add</editType><file>server/assets/offers/flyer/delivery_truck_t.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/forklift_aisle.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/logos/gls_logo_small.svg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/screen-orders.png</file></path><path><editType>add</editType><file>server/assets/offers/flyer/conveyor_packages_p.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/cardboard_boxes.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/packing_station_p.jpg</file></path><path><editType>add</editType><file>reference/contracts/Monkatech x Hive - 20240701 - Angebot.pdf</file></path><path><editType>edit</editType><file>server/api/offers/quote/send.post.ts</file></path><path><editType>add</editType><file>server/assets/offers/flyer/logship-mark.png</file></path><path><editType>add</editType><file>server/assets/offers/flyer/cardboard_boxes_p.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/logos/dhlexpress.png</file></path><path><editType>add</editType><file>server/assets/offers/flyer/cardboard_boxes_t.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/warehouse_shelves.jpg</file></path><path><editType>edit</editType><file>server/utils/offers/contractSigning.ts</file></path><path><editType>add</editType><file>server/assets/offers/flyer/warehouse_shelves_t.jpg</file></path><path><editType>edit</editType><file>server/utils/offers/contractPackage.ts</file></path><path><editType>add</editType><file>server/assets/offers/flyer/warehouse_scanning_w.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/screen-mobile.png</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/assets/offers/flyer/forklift_aisle_t.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/screen-dashboard.png</file></path><path><editType>add</editType><file>server/assets/offers/flyer/warehouse_shelves_p.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/barcode_scanner_t.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/logos/temu.png</file></path><path><editType>add</editType><file>server/assets/offers/flyer/logos/dpd_logo_small.png</file></path><path><editType>add</editType><file>server/utils/offers/flyerPdf.ts</file></path><path><editType>add</editType><file>server/assets/offers/flyer/logos/plentyone_logo.png</file></path><path><editType>add</editType><file>server/assets/offers/flyer/logyou-logo-dark.png</file></path><path><editType>add</editType><file>server/assets/offers/flyer/logos/xentral_logo.png</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path><path><editType>add</editType><file>server/assets/offers/flyer/logos/dhl_logo_small.png</file></path><path><editType>add</editType><file>server/assets/offers/flyer/laptop_analytics_w.jpg</file></path><path><editType>add</editType><file>server/assets/offers/flyer/logos/shopware.png</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>729</buildNumber><marked><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><branch><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><branch><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><branch><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#729</displayName><duration>60704</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #729</fullDisplayName><id>729</id><inProgress>false</inProgress><keepLog>false</keepLog><number>729</number><queueId>5642</queueId><result>SUCCESS</result><timestamp>1788739200273</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/729/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>728</buildNumber><marked><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><branch><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><branch><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><branch><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#728</displayName><duration>60096</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #728</fullDisplayName><id>728</id><inProgress>false</inProgress><keepLog>false</keepLog><number>728</number><queueId>5641</queueId><result>SUCCESS</result><timestamp>1788652800272</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/728/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>727</buildNumber><marked><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><branch><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><branch><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><branch><SHA1>f644a224b3c6af1b3a8bcb2316e3d0015013282d</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#727</displayName><duration>66181</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #727</fullDisplayName><id>727</id><inProgress>false</inProgress><keepLog>false</keepLog><number>727</number><queueId>5640</queueId><result>SUCCESS</result><timestamp>1788566400273</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/727/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>server/api/inouts/[id]/mark-commissioned.post.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>bdd390fe51cbbe2e8f622100f7cf3e61fa3e96c2</commitId><timestamp>1788513716000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add Button to order detail view to confirm commission without marketplace interaction to skip orders which was not meant to be for fulfillment
</comment><date>2026-09-04 11:21:56 +0200</date><id>bdd390fe51cbbe2e8f622100f7cf3e61fa3e96c2</id><msg>Add Button to order detail view to confirm commission without marketplace interaction to skip orders which was not meant to be for fulfillment</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>add</editType><file>server/api/inouts/[id]/mark-commissioned.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/langBundle.ts</affectedPath><affectedPath>app/pages/generate-invoices-from-orders.vue</affectedPath><affectedPath>app/pages/generate-invoices.vue</affectedPath><affectedPath>server/api/fulfillment/generate-orders.post.ts</affectedPath><affectedPath>server/utils/invoicePeriodOfPerformance.ts</affectedPath><affectedPath>server/api/processes/c_invoice_generate.post.ts</affectedPath><commitId>799896e456248138bff40e5aa109a9774e2b48f0</commitId><timestamp>1788517999000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix ffn sales orders translations and add leistungszeitraum
</comment><date>2026-09-04 12:33:19 +0200</date><id>799896e456248138bff40e5aa109a9774e2b48f0</id><msg>fix ffn sales orders translations and add leistungszeitraum</msg><path><editType>edit</editType><file>server/api/processes/c_invoice_generate.post.ts</file></path><path><editType>add</editType><file>server/utils/langBundle.ts</file></path><path><editType>edit</editType><file>app/pages/generate-invoices-from-orders.vue</file></path><path><editType>edit</editType><file>app/pages/generate-invoices.vue</file></path><path><editType>edit</editType><file>server/api/fulfillment/generate-orders.post.ts</file></path><path><editType>add</editType><file>server/utils/invoicePeriodOfPerformance.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>5834ade52d9ec06412392db9b5866852458de9bc</commitId><timestamp>1788524390000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add button to confirm it was invoice already
</comment><date>2026-09-04 14:19:50 +0200</date><id>5834ade52d9ec06412392db9b5866852458de9bc</id><msg>add button to confirm it was invoice already</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/processes/c_invoice_generate.post.ts</affectedPath><affectedPath>server/api/fulfillment/generate-orders.post.ts</affectedPath><affectedPath>server/utils/invoicePeriodOfPerformance.ts</affectedPath><commitId>f644a224b3c6af1b3a8bcb2316e3d0015013282d</commitId><timestamp>1788529297000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>exclude orders with isfulfillmentorder yes on dashboard
</comment><date>2026-09-04 15:41:37 +0200</date><id>f644a224b3c6af1b3a8bcb2316e3d0015013282d</id><msg>exclude orders with isfulfillmentorder yes on dashboard</msg><path><editType>edit</editType><file>server/api/fulfillment/generate-orders.post.ts</file></path><path><editType>edit</editType><file>server/utils/invoicePeriodOfPerformance.ts</file></path><path><editType>edit</editType><file>server/api/processes/c_invoice_generate.post.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>726</buildNumber><marked><SHA1>58b17603f170fd526c73b345e46a874083a1427c</SHA1><branch><SHA1>58b17603f170fd526c73b345e46a874083a1427c</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>58b17603f170fd526c73b345e46a874083a1427c</SHA1><branch><SHA1>58b17603f170fd526c73b345e46a874083a1427c</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>58b17603f170fd526c73b345e46a874083a1427c</SHA1><branch><SHA1>58b17603f170fd526c73b345e46a874083a1427c</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#726</displayName><duration>471785</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #726</fullDisplayName><id>726</id><inProgress>false</inProgress><keepLog>false</keepLog><number>726</number><queueId>5637</queueId><result>SUCCESS</result><timestamp>1788480000273</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/726/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/ebay-settlements.vue</affectedPath><affectedPath>app/pages/accounting/amazon-settlements.vue</affectedPath><commitId>ceab8d5e9dcd161ee18ca3380adc75ea1796418e</commitId><timestamp>1788418001000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Changes to selecting multiple settlements
</comment><date>2026-09-03 08:46:41 +0200</date><id>ceab8d5e9dcd161ee18ca3380adc75ea1796418e</id><msg>Changes to selecting multiple settlements</msg><path><editType>edit</editType><file>app/pages/accounting/ebay-settlements.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-settlements.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/invoices/lexoffice-categories.get.ts</affectedPath><affectedPath>app/components/AgGrid/Invoices/AgLexofficeStatus.vue</affectedPath><affectedPath>app/components/sales/LexofficeCategoryModal.vue</affectedPath><affectedPath>app/composables/states.ts</affectedPath><affectedPath>server/api/invoices/lexoffice-upload.post.ts</affectedPath><affectedPath>server/utils/zugferd/maybeZugferdPdf.ts</affectedPath><affectedPath>app/pages/sales/invoices/index.vue</affectedPath><affectedPath>server/utils/lexofficeClient.ts</affectedPath><affectedPath>app/composables/useLexofficeCategoryPrompt.ts</affectedPath><commitId>e1d74a4d026b0ddb339b62cf2922b65cfed6d989</commitId><timestamp>1788421656000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Tweak lexoffice
</comment><date>2026-09-03 09:47:36 +0200</date><id>e1d74a4d026b0ddb339b62cf2922b65cfed6d989</id><msg>Tweak lexoffice</msg><path><editType>add</editType><file>server/api/invoices/lexoffice-categories.get.ts</file></path><path><editType>add</editType><file>server/utils/lexofficeClient.ts</file></path><path><editType>edit</editType><file>server/utils/zugferd/maybeZugferdPdf.ts</file></path><path><editType>add</editType><file>app/components/sales/LexofficeCategoryModal.vue</file></path><path><editType>edit</editType><file>server/api/invoices/lexoffice-upload.post.ts</file></path><path><editType>edit</editType><file>app/components/AgGrid/Invoices/AgLexofficeStatus.vue</file></path><path><editType>edit</editType><file>app/pages/sales/invoices/index.vue</file></path><path><editType>edit</editType><file>app/composables/states.ts</file></path><path><editType>add</editType><file>app/composables/useLexofficeCategoryPrompt.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/partners/PartnerExtraOrderLinesEditor.vue</affectedPath><affectedPath>server/api/partners/fulfillment-order-lines/index.get.ts</affectedPath><affectedPath>server/api/partners/fulfillment-order-lines/destroy.delete.ts</affectedPath><affectedPath>app/components/partners/PartnerForm.vue</affectedPath><affectedPath>server/api/fulfillment/generate-orders.post.ts</affectedPath><affectedPath>server/api/partners/fulfillment-order-lines/update.put.ts</affectedPath><affectedPath>server/api/partners/fulfillment-order-lines/store.post.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>48a99bb443d228ff91a94bd8a38e8fca95d007c5</commitId><timestamp>1788424103000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add admin-only extra order lines per fulfillment customer

Lets admins configure standing product+qty+price lines per c_bpartner
(CUST_BPartner_ExtraOrderLine) that get automatically appended to every
order generated for that customer via Fulfillment Customers &gt; Generate
Orders, so recurring per-customer invoice requirements no longer need
manual ad-hoc entry each period.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01U6KtDeLYZGDTg5SWKCiSjL
</comment><date>2026-09-03 10:28:23 +0200</date><id>48a99bb443d228ff91a94bd8a38e8fca95d007c5</id><msg>Add admin-only extra order lines per fulfillment customer</msg><path><editType>edit</editType><file>app/components/partners/PartnerForm.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>app/components/partners/PartnerExtraOrderLinesEditor.vue</file></path><path><editType>add</editType><file>server/api/partners/fulfillment-order-lines/store.post.ts</file></path><path><editType>edit</editType><file>server/api/fulfillment/generate-orders.post.ts</file></path><path><editType>add</editType><file>server/api/partners/fulfillment-order-lines/index.get.ts</file></path><path><editType>add</editType><file>server/api/partners/fulfillment-order-lines/destroy.delete.ts</file></path><path><editType>add</editType><file>server/api/partners/fulfillment-order-lines/update.put.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/partners/PartnerExtraOrderLinesEditor.vue</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>app/components/SelectBox.vue</affectedPath><affectedPath>reference/recipes.md</affectedPath><affectedPath>app/components/sales/LexofficeCategoryModal.vue</affectedPath><commitId>4af90b5e5626e410142b8fc9dab921a90c249970</commitId><timestamp>1788433705000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix bpartner product ffn order
</comment><date>2026-09-03 13:08:25 +0200</date><id>4af90b5e5626e410142b8fc9dab921a90c249970</id><msg>fix bpartner product ffn order</msg><path><editType>edit</editType><file>app/components/partners/PartnerExtraOrderLinesEditor.vue</file></path><path><editType>edit</editType><file>app/components/sales/LexofficeCategoryModal.vue</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path><path><editType>add</editType><file>app/components/SelectBox.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/commission/parcels/dhl/multi.post.ts</affectedPath><affectedPath>server/api/commission/parcels/dpd/multi.post.ts</affectedPath><affectedPath>server/api/commission/parcels/dpd/index.post.ts</affectedPath><commitId>f0b6ac6ffb3f0021f36262f31bc3731ad5290ce1</commitId><timestamp>1788434722000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>decouple dpd and dhl multi form marketplace interaction
</comment><date>2026-09-03 13:25:22 +0200</date><id>f0b6ac6ffb3f0021f36262f31bc3731ad5290ce1</id><msg>decouple dpd and dhl multi form marketplace interaction</msg><path><editType>edit</editType><file>server/api/commission/parcels/dpd/multi.post.ts</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dpd/index.post.ts</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dhl/multi.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/fulfillment/generate-orders.post.ts</affectedPath><affectedPath>app/components/partners/PartnerExtraOrderLinesEditor.vue</affectedPath><affectedPath>app/components/partners/PartnerForm.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>6e8e5a76207f64a774d6fc1d89d4f6c6983df23f</commitId><timestamp>1788435150000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Fix extra order line UX per feedback: append order, plain product name, description text

- New rows append to the bottom of the list instead of the top, matching
  the order lines will appear in on the generated invoice
- Show the plain product name (not the SKU-prefixed picker label) in the
  editor and when reloading saved rows
- Stop overwriting the product name with the custom description on the
  generated order/preview/report line — the product name always comes
  from M_Product_ID; description is now only sent as supplementary line
  text when the admin actually entered one
- Correct the section subtitle to reference the fulfillment order-generation
  flow instead of "invoice"

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01U6KtDeLYZGDTg5SWKCiSjL
</comment><date>2026-09-03 13:32:30 +0200</date><id>6e8e5a76207f64a774d6fc1d89d4f6c6983df23f</id><msg>Fix extra order line UX per feedback: append order, plain product name, description text</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/api/fulfillment/generate-orders.post.ts</file></path><path><editType>edit</editType><file>app/components/partners/PartnerExtraOrderLinesEditor.vue</file></path><path><editType>edit</editType><file>app/components/partners/PartnerForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/partners/PartnerForm.vue</affectedPath><affectedPath>app/components/partners/PartnerExtraOrderLinesEditor.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>3a0f08c909ae6092fdd5ba889f44a037db3bd42c</commitId><timestamp>1788435378000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Fix remaining invoice wording on extra order lines section

Section title and description placeholder still referred to "invoice",
inconsistent with the earlier fix that stopped the description from
overwriting the product name. Now consistently frames it as sales order
terminology and clarifies the description rides along as the order line's
description text without replacing the product name.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01U6KtDeLYZGDTg5SWKCiSjL
</comment><date>2026-09-03 13:36:18 +0200</date><id>3a0f08c909ae6092fdd5ba889f44a037db3bd42c</id><msg>Fix remaining invoice wording on extra order lines section</msg><path><editType>edit</editType><file>app/components/partners/PartnerExtraOrderLinesEditor.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/partners/PartnerForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/partners/PartnerExtraOrderLinesEditor.vue</affectedPath><commitId>32f5d093c53c79474bc946ca7f6bee300a961d6a</commitId><timestamp>1788435466000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Make extra order line product search case-insensitive

Wraps the Name filter in tolower(...) and lowercases the search term
client-side, matching the tolower() pattern already used for every other
product search in this app. Also escapes single quotes in the search term
to keep the OData filter valid for product names containing an apostrophe.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01U6KtDeLYZGDTg5SWKCiSjL
</comment><date>2026-09-03 13:37:46 +0200</date><id>32f5d093c53c79474bc946ca7f6bee300a961d6a</id><msg>Make extra order line product search case-insensitive</msg><path><editType>edit</editType><file>app/components/partners/PartnerExtraOrderLinesEditor.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/partners/PartnerExtraOrderLinesEditor.vue</affectedPath><commitId>a349de2fe0f001392e296a55a4e6b17e34d23d27</commitId><timestamp>1788435701000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Richer product picker results: BOM badge, bold name, small SKU

Custom item slot on the extra-order-lines product picker (SelectBox's
default slot renders per dropdown row only, not the closed trigger):
bold product name, a small muted SKU/Value, and an orange "BOM" badge
when the product is a BOM/JTL-BOM article — same isBomOf() combined-flag
check and badge styling already used in ProductSearchSelect.vue. Styles
live in a non-scoped &lt;style&gt; block since the dropdown is teleported to
&lt;body&gt; (same reasoning as SelectBox.vue's own item/trigger styles).

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01U6KtDeLYZGDTg5SWKCiSjL
</comment><date>2026-09-03 13:41:41 +0200</date><id>a349de2fe0f001392e296a55a4e6b17e34d23d27</id><msg>Richer product picker results: BOM badge, bold name, small SKU</msg><path><editType>edit</editType><file>app/components/partners/PartnerExtraOrderLinesEditor.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/offers/quotePdf.ts</affectedPath><affectedPath>server/utils/offers/offerConditions.ts</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>0f85aed82ebfa1404d1c6b40ac154ebf12220c0d</commitId><timestamp>1788440280000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Enhance Quote offer
</comment><date>2026-09-03 14:58:00 +0200</date><id>0f85aed82ebfa1404d1c6b40ac154ebf12220c0d</id><msg>Enhance Quote offer</msg><path><editType>edit</editType><file>server/utils/offers/offerConditions.ts</file></path><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path><path><editType>edit</editType><file>server/utils/offers/quotePdf.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/datev-opos-liste-research.md</affectedPath><affectedPath>app/pages/accounting/opos/index.vue</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><affectedPath>server/api/accounting/opos/index.get.ts</affectedPath><affectedPath>reference/recipes.md</affectedPath><affectedPath>app/composables/menu/admin/accounting.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>6c8bfb9f5eb915c8c0d9adc7d78957653dd4ab35</commitId><timestamp>1788443797000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add Opos List to Accounting
</comment><date>2026-09-03 15:56:37 +0200</date><id>6c8bfb9f5eb915c8c0d9adc7d78957653dd4ab35</id><msg>Add Opos List to Accounting</msg><path><editType>add</editType><file>reference/datev-opos-liste-research.md</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/api/accounting/opos/index.get.ts</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path><path><editType>edit</editType><file>app/composables/menu/admin/accounting.ts</file></path><path><editType>add</editType><file>app/pages/accounting/opos/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/accountingRequestType.ts</affectedPath><affectedPath>server/api/fulfillment/generate-orders.post.ts</affectedPath><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/composables/useRequestReportPdf.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>201be99b0b8acbc647d506b15142b5af5f5092e7</commitId><timestamp>1788444766000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add amount option to ticket for accounting
</comment><date>2026-09-03 16:12:46 +0200</date><id>201be99b0b8acbc647d506b15142b5af5f5092e7</id><msg>add amount option to ticket for accounting</msg><path><editType>edit</editType><file>app/composables/useRequestReportPdf.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/utils/accountingRequestType.ts</file></path><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>server/api/fulfillment/generate-orders.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/orders/[id]/rmas.get.ts</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>58b17603f170fd526c73b345e46a874083a1427c</commitId><timestamp>1788451276000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Show return on sales order2
</comment><date>2026-09-03 18:01:16 +0200</date><id>58b17603f170fd526c73b345e46a874083a1427c</id><msg>Show return on sales order2</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>add</editType><file>server/api/orders/[id]/rmas.get.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>725</buildNumber><marked><SHA1>7c7324b08cb2fc903ea604eb4c40a3d3d8d76ae2</SHA1><branch><SHA1>7c7324b08cb2fc903ea604eb4c40a3d3d8d76ae2</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>7c7324b08cb2fc903ea604eb4c40a3d3d8d76ae2</SHA1><branch><SHA1>7c7324b08cb2fc903ea604eb4c40a3d3d8d76ae2</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>7c7324b08cb2fc903ea604eb4c40a3d3d8d76ae2</SHA1><branch><SHA1>7c7324b08cb2fc903ea604eb4c40a3d3d8d76ae2</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#725</displayName><duration>67419</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #725</fullDisplayName><id>725</id><inProgress>false</inProgress><keepLog>false</keepLog><number>725</number><queueId>5631</queueId><result>SUCCESS</result><timestamp>1788393600273</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/725/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/commission/parcels/dpd/multi.post.ts</affectedPath><affectedPath>server/api/commission/parcels/dpd/index.post.ts</affectedPath><affectedPath>server/utils/dpdHelper.ts</affectedPath><commitId>624bd016f0ccfd0f02438b9a08baf06e515a15d9</commitId><timestamp>1788338275000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add dpd logging
</comment><date>2026-09-02 10:37:55 +0200</date><id>624bd016f0ccfd0f02438b9a08baf06e515a15d9</id><msg>add dpd logging</msg><path><editType>edit</editType><file>server/api/commission/parcels/dpd/multi.post.ts</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dpd/index.post.ts</file></path><path><editType>edit</editType><file>server/utils/dpdHelper.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon/settlements.get.ts</affectedPath><affectedPath>app/pages/accounting/amazon-settlements.vue</affectedPath><affectedPath>server/utils/amazonSpApi.ts</affectedPath><affectedPath>server/api/accounting/amazon/settlement.get.ts</affectedPath><commitId>1020af763ee0fcb60ce954a9eabebe2e65516add</commitId><timestamp>1788343251000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add new financial amzaon implementation
</comment><date>2026-09-02 12:00:51 +0200</date><id>1020af763ee0fcb60ce954a9eabebe2e65516add</id><msg>add new financial amzaon implementation</msg><path><editType>edit</editType><file>server/utils/amazonSpApi.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-settlements.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon/settlements.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon/settlement.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/commission/parcels/dpd/multi.post.ts</affectedPath><affectedPath>server/api/commission/parcels/dpd/index.post.ts</affectedPath><commitId>611c8cf67be7a9a09e14c965cd070387671fbdfb</commitId><timestamp>1788344447000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>enhance logs
</comment><date>2026-09-02 12:20:47 +0200</date><id>611c8cf67be7a9a09e14c965cd070387671fbdfb</id><msg>enhance logs</msg><path><editType>edit</editType><file>server/api/commission/parcels/dpd/index.post.ts</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dpd/multi.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/banking-lexoffice/PayPal-Vorlage.csv</affectedPath><affectedPath>reference/banking-lexoffice/Bankimport-Vorlage.csv</affectedPath><affectedPath>app/utils/lexofficeExport.ts</affectedPath><affectedPath>app/pages/accounting/ebay-settlements.vue</affectedPath><affectedPath>app/pages/accounting/amazon-settlements.vue</affectedPath><commitId>0054135765f441d45a13fbaedb457465be12d0f0</commitId><timestamp>1788362461000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add lexoffice bank export for amazon and ebay
</comment><date>2026-09-02 17:21:01 +0200</date><id>0054135765f441d45a13fbaedb457465be12d0f0</id><msg>Add lexoffice bank export for amazon and ebay</msg><path><editType>add</editType><file>reference/banking-lexoffice/PayPal-Vorlage.csv</file></path><path><editType>edit</editType><file>app/pages/accounting/ebay-settlements.vue</file></path><path><editType>add</editType><file>reference/banking-lexoffice/Bankimport-Vorlage.csv</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-settlements.vue</file></path><path><editType>add</editType><file>app/utils/lexofficeExport.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-settlements.vue</affectedPath><affectedPath>app/pages/accounting/ebay-settlements.vue</affectedPath><commitId>2d05a2447bf1bcf3e1e47bc87cc9c8f0e98f49cc</commitId><timestamp>1788375759000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add CSV Export for Orders LexOffice
</comment><date>2026-09-02 21:02:39 +0200</date><id>2d05a2447bf1bcf3e1e47bc87cc9c8f0e98f49cc</id><msg>Add CSV Export for Orders LexOffice</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-settlements.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/ebay-settlements.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-settlements.vue</affectedPath><commitId>6a93254b0423cb59025209b476d2b4fa14a92725</commitId><timestamp>1788376476000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>limit settlement to only paid amount by amazon
</comment><date>2026-09-02 21:14:36 +0200</date><id>6a93254b0423cb59025209b476d2b4fa14a92725</id><msg>limit settlement to only paid amount by amazon</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-settlements.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon/settlements.get.ts</affectedPath><affectedPath>app/pages/accounting/ebay-settlements.vue</affectedPath><affectedPath>app/pages/accounting/amazon-settlements.vue</affectedPath><affectedPath>server/utils/amazonSpApi.ts</affectedPath><commitId>d6ed398fed7f37abf7ba5b00025c6ecdc8f52a20</commitId><timestamp>1788378793000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add enhanced range selection and switch on amazon and ebay settlement csv export for lexoffice
</comment><date>2026-09-02 21:53:13 +0200</date><id>d6ed398fed7f37abf7ba5b00025c6ecdc8f52a20</id><msg>Add enhanced range selection and switch on amazon and ebay settlement csv export for lexoffice</msg><path><editType>edit</editType><file>server/api/accounting/amazon/settlements.get.ts</file></path><path><editType>edit</editType><file>server/utils/amazonSpApi.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/ebay-settlements.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-settlements.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/ebay-settlements.vue</affectedPath><affectedPath>app/pages/accounting/amazon-settlements.vue</affectedPath><commitId>7c7324b08cb2fc903ea604eb4c40a3d3d8d76ae2</commitId><timestamp>1788383651000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>tune amazon and ebay csv export for lexoffice and buttons
</comment><date>2026-09-02 23:14:11 +0200</date><id>7c7324b08cb2fc903ea604eb4c40a3d3d8d76ae2</id><msg>tune amazon and ebay csv export for lexoffice and buttons</msg><path><editType>edit</editType><file>app/pages/accounting/ebay-settlements.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-settlements.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>724</buildNumber><marked><SHA1>718962b615ea9c5fe54c114e74aa1d8eff256b3f</SHA1><branch><SHA1>718962b615ea9c5fe54c114e74aa1d8eff256b3f</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>718962b615ea9c5fe54c114e74aa1d8eff256b3f</SHA1><branch><SHA1>718962b615ea9c5fe54c114e74aa1d8eff256b3f</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>718962b615ea9c5fe54c114e74aa1d8eff256b3f</SHA1><branch><SHA1>718962b615ea9c5fe54c114e74aa1d8eff256b3f</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#724</displayName><duration>61773</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #724</fullDisplayName><id>724</id><inProgress>false</inProgress><keepLog>false</keepLog><number>724</number><queueId>5623</queueId><result>SUCCESS</result><timestamp>1788307200273</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/724/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon/orders-check.get.ts</affectedPath><affectedPath>server/api/accounting/ebay/orders-check.get.ts</affectedPath><commitId>0eb5b88f6d5e3d007b193bffd483875433779862</commitId><timestamp>1788244104000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>orders-check (Amazon + eBay): don't count a voided linked order as matched

matchOrders() already captured the linked c_order's DocStatus but never
checked it - a manually voided/canceled order still counted as a resolved
match, so the reconciliation page silently showed it as handled instead
of flagging it for reimport (importSingleOrder already treats a voided
link as not-really-imported for the exact same reason; this brings the
comparison page's own matching in line with that rule).

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01QTy674ErXSPZ8spJ6HMhE6
</comment><date>2026-09-01 08:28:24 +0200</date><id>0eb5b88f6d5e3d007b193bffd483875433779862</id><msg>orders-check (Amazon + eBay): don't count a voided linked order as matched</msg><path><editType>edit</editType><file>server/api/accounting/ebay/orders-check.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon/orders-check.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-orders-check.vue</affectedPath><affectedPath>app/components/AgGrid/Accounting/AgDocPreviewLink.vue</affectedPath><affectedPath>app/pages/accounting/ebay-orders-check.vue</affectedPath><commitId>e72265bd4727f144c2355df0676ccf32a933ee67</commitId><timestamp>1788251427000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon/eBay orders-check: add batch/single order cancellation (VO)

Sometimes a matched order was imported with a mistake (wrong amount etc.)
and needs to be voided so it can be reimported clean. Adds a "Stornieren"
toolbar action (batch, from the checkbox selection) and a per-row cancel
button on "Interner Auftrag" (mirrors the existing import "+" button),
both calling the standard order document-action endpoint with VO.

Eligible rows: matched, linked to a real order, no invoice yet, not
already voided/closed. After a successful void the row is patched
in-place to matched:false so it immediately shows as "FEHLT" again and
can be reimported from the same page.

AgDocPreviewLink gains an opt-in onCancelOrder/canCancelOrder param pair,
symmetric with the existing onImportOrder/canImportOrder.
</comment><date>2026-09-01 10:30:27 +0200</date><id>e72265bd4727f144c2355df0676ccf32a933ee67</id><msg>Amazon/eBay orders-check: add batch/single order cancellation (VO)</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-orders-check.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/ebay-orders-check.vue</file></path><path><editType>edit</editType><file>app/components/AgGrid/Accounting/AgDocPreviewLink.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/invoices/lexoffice-upload.post.ts</affectedPath><affectedPath>server/utils/zugferd/maybeZugferdPdf.ts</affectedPath><commitId>718962b615ea9c5fe54c114e74aa1d8eff256b3f</commitId><timestamp>1788255012000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>upload to lexoffice only zugpferd
</comment><date>2026-09-01 11:30:12 +0200</date><id>718962b615ea9c5fe54c114e74aa1d8eff256b3f</id><msg>upload to lexoffice only zugpferd</msg><path><editType>edit</editType><file>server/api/invoices/lexoffice-upload.post.ts</file></path><path><editType>edit</editType><file>server/utils/zugferd/maybeZugferdPdf.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>723</buildNumber><marked><SHA1>b29d6c633206895521e31689ae3ce9c7a1b69a8c</SHA1><branch><SHA1>b29d6c633206895521e31689ae3ce9c7a1b69a8c</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>b29d6c633206895521e31689ae3ce9c7a1b69a8c</SHA1><branch><SHA1>b29d6c633206895521e31689ae3ce9c7a1b69a8c</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>b29d6c633206895521e31689ae3ce9c7a1b69a8c</SHA1><branch><SHA1>b29d6c633206895521e31689ae3ce9c7a1b69a8c</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#723</displayName><duration>59826</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #723</fullDisplayName><id>723</id><inProgress>false</inProgress><keepLog>false</keepLog><number>723</number><queueId>5619</queueId><result>SUCCESS</result><timestamp>1788220800273</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/723/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/requests/my-tickets/index.vue</affectedPath><commitId>90425d1d1ade5b97ec4353688c7a7f25ca6a6682</commitId><timestamp>1788162074000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show last completed tickets first
</comment><date>2026-08-31 09:41:14 +0200</date><id>90425d1d1ade5b97ec4353688c7a7f25ca6a6682</id><msg>show last completed tickets first</msg><path><editType>edit</editType><file>app/pages/requests/my-tickets/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/offers/quotePdf.ts</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>server/utils/offers/offerConditions.ts</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>0c599707f16dc5150c191a77008f3edabc370318</commitId><timestamp>1788184884000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>tune lead offer
</comment><date>2026-08-31 16:01:24 +0200</date><id>0c599707f16dc5150c191a77008f3edabc370318</id><msg>tune lead offer</msg><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path><path><editType>edit</editType><file>server/utils/offers/offerConditions.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/utils/offers/quotePdf.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/BaseSideBar.vue</affectedPath><affectedPath>server/api/accounting/ebay/import-order.post.ts</affectedPath><affectedPath>server/api/accounting/amazon/import-order.post.ts</affectedPath><affectedPath>server/api/accounting/ebay/orders-check.get.ts</affectedPath><affectedPath>app/components/settings/BankConnectionForm.vue</affectedPath><affectedPath>app/pages/accounting/amazon-orders-check.vue</affectedPath><affectedPath>server/api/accounting/amazon/orders-check.get.ts</affectedPath><affectedPath>app/pages/accounting/ebay-orders-check.vue</affectedPath><affectedPath>app/components/AgGrid/Accounting/AgDocPreviewLink.vue</affectedPath><commitId>ecd0ed23199ce87c71079ae3a91df01da157b3a8</commitId><timestamp>1788202676000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add ebay and amazon bestellabgleich tuning
</comment><date>2026-08-31 20:57:56 +0200</date><id>ecd0ed23199ce87c71079ae3a91df01da157b3a8</id><msg>add ebay and amazon bestellabgleich tuning</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-orders-check.vue</file></path><path><editType>edit</editType><file>app/components/settings/BankConnectionForm.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/ebay-orders-check.vue</file></path><path><editType>add</editType><file>server/api/accounting/ebay/import-order.post.ts</file></path><path><editType>edit</editType><file>app/components/BaseSideBar.vue</file></path><path><editType>edit</editType><file>app/components/AgGrid/Accounting/AgDocPreviewLink.vue</file></path><path><editType>edit</editType><file>server/api/accounting/ebay/orders-check.get.ts</file></path><path><editType>add</editType><file>server/api/accounting/amazon/import-order.post.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon/orders-check.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-orders-check.vue</affectedPath><affectedPath>app/pages/accounting/ebay-orders-check.vue</affectedPath><commitId>decd5a60993767a7cf1342e8220a9d9dc049e5cd</commitId><timestamp>1788203045000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix build
</comment><date>2026-08-31 21:04:05 +0200</date><id>decd5a60993767a7cf1342e8220a9d9dc049e5cd</id><msg>fix build</msg><path><editType>edit</editType><file>app/pages/accounting/ebay-orders-check.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-orders-check.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-orders-check.vue</affectedPath><affectedPath>server/api/accounting/amazon/import-order.post.ts</affectedPath><commitId>f66dfdcda4644e8b94fca5e03f39972af554ac15</commitId><timestamp>1788208465000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon reconciliation: confirm-once "add missing product to price list" flow

The manual import endpoint now returns errorType=product_not_on_pricelist
with the resolved productId and a suggested price when Amazon's own line
item is unambiguous (single-line orders) - this wires that into the import
modal:

- Upfront checkbox: auto-add using Amazon's line price and retry
  immediately, no per-order interruption, for the common case of a
  currently-valid price list just missing one product.
- Per-row fallback (checkbox off, or price ambiguous/missing): an inline
  price field + "add to price list &amp; reimport" button on the failed row,
  confirmed once per distinct failure rather than needing to redo the
  whole batch.

The proxy previously discarded every field but message/status on failure -
now passes errorType/productId/suggestedPrice/etc. through so the page can
act on them, and forwards the new priceListAdditions option through to
Laravel.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01QTy674ErXSPZ8spJ6HMhE6
</comment><date>2026-08-31 22:34:25 +0200</date><id>f66dfdcda4644e8b94fca5e03f39972af554ac15</id><msg>Amazon reconciliation: confirm-once "add missing product to price list" flow</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-orders-check.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon/import-order.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-orders-check.vue</affectedPath><commitId>c4646d3320dcb64ed134fe6fe856ff511084e83b</commitId><timestamp>1788210623000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon import modal: price list override + IsDefault pre-selection

Adds a fourth "Preisliste" selector (filtered to IsSOPriceList) alongside
doc type/delivery rule/invoice rule, wired to the new priceListId option -
lets staff choose which price list an import (and any "add missing
product" action) actually targets, instead of always the order source's
own.

Also pre-selects the first IsDefault=true record for doc type targets and
price lists when their options load (or immediately on reopen if already
cached), rather than always starting on "— Standard —".

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01QTy674ErXSPZ8spJ6HMhE6
</comment><date>2026-08-31 23:10:23 +0200</date><id>c4646d3320dcb64ed134fe6fe856ff511084e83b</id><msg>Amazon import modal: price list override + IsDefault pre-selection</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-orders-check.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-orders-check.vue</affectedPath><commitId>b29d6c633206895521e31689ae3ce9c7a1b69a8c</commitId><timestamp>1788215967000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix: TDZ crash in amazon-orders-check - production 500 on page load

importDefaultFieldFor was an object literal reading importDocTypeTargetId/
importPriceListId at definition time, but declared above those refs in the
file - eager evaluation hit them before their own `const` initializers ran
("can't access lexical declaration before initialization", confirmed via
Sentry). Moved the field lookup inside applyImportDefault's function body,
which only runs when called (well after all top-level consts exist),
regardless of declaration order in the file.

Co-Authored-By: Claude Sonnet 5 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01QTy674ErXSPZ8spJ6HMhE6
</comment><date>2026-09-01 00:39:27 +0200</date><id>b29d6c633206895521e31689ae3ce9c7a1b69a8c</id><msg>fix: TDZ crash in amazon-orders-check - production 500 on page load</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-orders-check.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>722</buildNumber><marked><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><branch><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><branch><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><branch><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#722</displayName><duration>65233</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #722</fullDisplayName><id>722</id><inProgress>false</inProgress><keepLog>false</keepLog><number>722</number><queueId>5611</queueId><result>SUCCESS</result><timestamp>1788134400274</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/722/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>721</buildNumber><marked><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><branch><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><branch><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><branch><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#721</displayName><duration>66923</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #721</fullDisplayName><id>721</id><inProgress>false</inProgress><keepLog>false</keepLog><number>721</number><queueId>5610</queueId><result>SUCCESS</result><timestamp>1788048000277</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/721/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>720</buildNumber><marked><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><branch><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><branch><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><branch><SHA1>26dd9926c92c1e147099abdea4fdcff6138dcb60</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#720</displayName><duration>57347</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #720</fullDisplayName><id>720</id><inProgress>false</inProgress><keepLog>false</keepLog><number>720</number><queueId>5608</queueId><result>SUCCESS</result><timestamp>1787961600272</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/720/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/dhlCustomHelper.ts</affectedPath><affectedPath>server/utils/dhlHelper.ts</affectedPath><affectedPath>server/utils/dpdHelper.ts</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>app/components/integrations/CommissionDPDLabel.vue</affectedPath><commitId>ec0b62069ccc1cebcadbbdeceea2afd2a196e44e</commitId><timestamp>1787902933000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Fix DPD to refresh and show DHL human readable error on credential error
</comment><date>2026-08-28 09:42:13 +0200</date><id>ec0b62069ccc1cebcadbbdeceea2afd2a196e44e</id><msg>Fix DPD to refresh and show DHL human readable error on credential error</msg><path><editType>edit</editType><file>server/utils/dhlHelper.ts</file></path><path><editType>edit</editType><file>server/utils/dpdHelper.ts</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/utils/dhlCustomHelper.ts</file></path><path><editType>add</editType><file>app/components/integrations/CommissionDPDLabel.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/materials/ProductFulfillmentPricingCard.vue</affectedPath><affectedPath>app/pages/materials/products/[id]/edit.vue</affectedPath><affectedPath>server/api/materials/products/[id]/fulfillment-pricing.get.ts</affectedPath><affectedPath>app/components/materials/RulePricingEditModal.vue</affectedPath><affectedPath>app/components/materials/ProductOverridePriceModal.vue</affectedPath><commitId>26dd9926c92c1e147099abdea4fdcff6138dcb60</commitId><timestamp>1787936650000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add product page pricing
</comment><date>2026-08-28 19:04:10 +0200</date><id>26dd9926c92c1e147099abdea4fdcff6138dcb60</id><msg>add product page pricing</msg><path><editType>edit</editType><file>app/pages/materials/products/[id]/edit.vue</file></path><path><editType>add</editType><file>app/components/materials/ProductOverridePriceModal.vue</file></path><path><editType>add</editType><file>server/api/materials/products/[id]/fulfillment-pricing.get.ts</file></path><path><editType>add</editType><file>app/components/materials/ProductFulfillmentPricingCard.vue</file></path><path><editType>add</editType><file>app/components/materials/RulePricingEditModal.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>719</buildNumber><marked><SHA1>1cd1184f81df70c8df195b18069e99303514b0c2</SHA1><branch><SHA1>1cd1184f81df70c8df195b18069e99303514b0c2</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>1cd1184f81df70c8df195b18069e99303514b0c2</SHA1><branch><SHA1>1cd1184f81df70c8df195b18069e99303514b0c2</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>1cd1184f81df70c8df195b18069e99303514b0c2</SHA1><branch><SHA1>1cd1184f81df70c8df195b18069e99303514b0c2</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#719</displayName><duration>55874</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #719</fullDisplayName><id>719</id><inProgress>false</inProgress><keepLog>false</keepLog><number>719</number><queueId>5604</queueId><result>SUCCESS</result><timestamp>1787875200274</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/719/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/commission/parcels/dpd/index.get.ts</affectedPath><affectedPath>server/utils/dpdHelper.ts</affectedPath><commitId>2f5fcb00bd7d73c4b3fef01295eaf76028e902ce</commitId><timestamp>1787813974000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Revert DPD label PDF transform — fit at print time via CUPS instead

The pdf-lib rescale added ~6s per label in practice (likely the re-serialized
PDF slowing the CUPS filter chain). Label PDFs now pass through untouched;
the width fit moves to lp options on the DPD print calls.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</comment><date>2026-08-27 08:59:34 +0200</date><id>2f5fcb00bd7d73c4b3fef01295eaf76028e902ce</id><msg>Revert DPD label PDF transform — fit at print time via CUPS instead</msg><path><editType>edit</editType><file>server/utils/dpdHelper.ts</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dpd/index.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/commission.vue</affectedPath><affectedPath>app/pages/integrations/manual-label.vue</affectedPath><commitId>da65b5f57439ab11749411ab097fc532555c4c67</commitId><timestamp>1787814023000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Fit DPD labels via CUPS options on print (-o fit-to-page + explicit media)

DPD A6 labels (105mm) exceed the Zebra queues' 101.6mm printable width and
got clipped ~7mm on the left. The DPD print calls now pass lp options so
CUPS scales at print time; DHL prints send no options and stay unchanged.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</comment><date>2026-08-27 09:00:23 +0200</date><id>da65b5f57439ab11749411ab097fc532555c4c67</id><msg>Fit DPD labels via CUPS options on print (-o fit-to-page + explicit media)</msg><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path><path><editType>edit</editType><file>app/pages/integrations/manual-label.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/commission/parcels/dhl/multi.post.ts</affectedPath><affectedPath>app/pages/materials/shippers/create.vue</affectedPath><affectedPath>app/pages/materials/shippers/[id]/edit.vue</affectedPath><affectedPath>app/components/materials/ShipperForm.vue</affectedPath><affectedPath>server/utils/dhlMainCredential.ts</affectedPath><affectedPath>server/api/materials/shippers/update.put.ts</affectedPath><affectedPath>server/utils/dhlBaseHelper.ts</affectedPath><affectedPath>server/api/materials/shippers/store.post.ts</affectedPath><affectedPath>app/pages/materials/shippers/[id]/duplicate.vue</affectedPath><affectedPath>server/api/commission/parcels/dhl/index.post.ts</affectedPath><affectedPath>server/api/tracking/[number].get.ts</affectedPath><affectedPath>app/pages/materials/shippers/[id]/view.vue</affectedPath><affectedPath>server/utils/dhlHelper.ts</affectedPath><affectedPath>server/api/commission/trackings/tracking.get.ts</affectedPath><affectedPath>server/api/commission/parcels/dhl/manual.post.ts</affectedPath><commitId>84e71663ef3f280de373e71328bbc7ff65a5ae10</commitId><timestamp>1787820560000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add dhl to m shipper and wire
</comment><date>2026-08-27 10:49:20 +0200</date><id>84e71663ef3f280de373e71328bbc7ff65a5ae10</id><msg>add dhl to m shipper and wire</msg><path><editType>edit</editType><file>app/pages/materials/shippers/create.vue</file></path><path><editType>edit</editType><file>app/pages/materials/shippers/[id]/view.vue</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dhl/index.post.ts</file></path><path><editType>edit</editType><file>app/components/materials/ShipperForm.vue</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dhl/manual.post.ts</file></path><path><editType>edit</editType><file>server/api/materials/shippers/store.post.ts</file></path><path><editType>edit</editType><file>server/api/commission/trackings/tracking.get.ts</file></path><path><editType>delete</editType><file>server/utils/dhlBaseHelper.ts</file></path><path><editType>add</editType><file>server/utils/dhlMainCredential.ts</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dhl/multi.post.ts</file></path><path><editType>edit</editType><file>app/pages/materials/shippers/[id]/duplicate.vue</file></path><path><editType>edit</editType><file>server/api/tracking/[number].get.ts</file></path><path><editType>edit</editType><file>app/pages/materials/shippers/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/materials/shippers/update.put.ts</file></path><path><editType>edit</editType><file>server/utils/dhlHelper.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/shippers/store.post.ts</affectedPath><affectedPath>server/utils/dhlMainCredential.ts</affectedPath><affectedPath>server/api/materials/shippers/update.put.ts</affectedPath><commitId>852e06f2ad3ab6384ec5d6a026886f09aad0b812</commitId><timestamp>1787820886000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>cache dhl 24 hours credentials
</comment><date>2026-08-27 10:54:46 +0200</date><id>852e06f2ad3ab6384ec5d6a026886f09aad0b812</id><msg>cache dhl 24 hours credentials</msg><path><editType>edit</editType><file>server/api/materials/shippers/store.post.ts</file></path><path><editType>edit</editType><file>server/utils/dhlMainCredential.ts</file></path><path><editType>edit</editType><file>server/api/materials/shippers/update.put.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/commission.vue</affectedPath><affectedPath>app/pages/integrations/manual-label.vue</affectedPath><commitId>95becf7869027b1adfe6f884ee74154734285842</commitId><timestamp>1787822516000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Revert "Fit DPD labels via CUPS options on print (-o fit-to-page + explicit media)"

This reverts commit da65b5f57439ab11749411ab097fc532555c4c67.
</comment><date>2026-08-27 11:21:56 +0200</date><id>95becf7869027b1adfe6f884ee74154734285842</id><msg>Revert "Fit DPD labels via CUPS options on print (-o fit-to-page + explicit media)"</msg><path><editType>edit</editType><file>app/pages/integrations/manual-label.vue</file></path><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/orders/ag-grid/summary.post.ts</affectedPath><commitId>a11f5e9603d68d9442b61ede72adf99033292fb2</commitId><timestamp>1787822551000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>revert pdf dpd modifications
</comment><date>2026-08-27 11:22:31 +0200</date><id>a11f5e9603d68d9442b61ede72adf99033292fb2</id><msg>revert pdf dpd modifications</msg><path><editType>edit</editType><file>server/api/orders/ag-grid/summary.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/shippers/update.put.ts</affectedPath><commitId>1cd1184f81df70c8df195b18069e99303514b0c2</commitId><timestamp>1787823328000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>wire dhl kleinpaket national
</comment><date>2026-08-27 11:35:28 +0200</date><id>1cd1184f81df70c8df195b18069e99303514b0c2</id><msg>wire dhl kleinpaket national</msg><path><editType>edit</editType><file>server/api/materials/shippers/update.put.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>718</buildNumber><marked><SHA1>8147bb32844f79efe3ab88360bd1c18cb7537bbf</SHA1><branch><SHA1>8147bb32844f79efe3ab88360bd1c18cb7537bbf</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>8147bb32844f79efe3ab88360bd1c18cb7537bbf</SHA1><branch><SHA1>8147bb32844f79efe3ab88360bd1c18cb7537bbf</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>8147bb32844f79efe3ab88360bd1c18cb7537bbf</SHA1><branch><SHA1>8147bb32844f79efe3ab88360bd1c18cb7537bbf</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#718</displayName><duration>56608</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #718</fullDisplayName><id>718</id><inProgress>false</inProgress><keepLog>false</keepLog><number>718</number><queueId>5600</queueId><result>SUCCESS</result><timestamp>1787788800273</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/718/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.env-prod</affectedPath><commitId>c7fa94962052c443eefc90632f509821b43d56c9</commitId><timestamp>1787739395000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Change DHL pass
</comment><date>2026-08-26 12:16:35 +0200</date><id>c7fa94962052c443eefc90632f509821b43d56c9</id><msg>Change DHL pass</msg><path><editType>edit</editType><file>.env-prod</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.env-prod</affectedPath><commitId>8147bb32844f79efe3ab88360bd1c18cb7537bbf</commitId><timestamp>1787741272000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix pw
</comment><date>2026-08-26 12:47:52 +0200</date><id>8147bb32844f79efe3ab88360bd1c18cb7537bbf</id><msg>fix pw</msg><path><editType>edit</editType><file>.env-prod</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>717</buildNumber><marked><SHA1>1bd0bb99035dd4456264337b047d087646961099</SHA1><branch><SHA1>1bd0bb99035dd4456264337b047d087646961099</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>1bd0bb99035dd4456264337b047d087646961099</SHA1><branch><SHA1>1bd0bb99035dd4456264337b047d087646961099</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>1bd0bb99035dd4456264337b047d087646961099</SHA1><branch><SHA1>1bd0bb99035dd4456264337b047d087646961099</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#717</displayName><duration>55838</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #717</fullDisplayName><id>717</id><inProgress>false</inProgress><keepLog>false</keepLog><number>717</number><queueId>5597</queueId><result>SUCCESS</result><timestamp>1787702400272</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/717/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/bi/fulfillment-earnings.vue</affectedPath><affectedPath>server/api/bi/fulfillment-earnings.get.ts</affectedPath><affectedPath>server/api/bi/send-earnings-report.post.ts</affectedPath><commitId>e9381c4b8b5adb51d94c112947f5da44511bfa70</commitId><timestamp>1787640096000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>tune erlöse page
</comment><date>2026-08-25 08:41:36 +0200</date><id>e9381c4b8b5adb51d94c112947f5da44511bfa70</id><msg>tune erlöse page</msg><path><editType>add</editType><file>server/api/bi/send-earnings-report.post.ts</file></path><path><editType>edit</editType><file>app/pages/bi/fulfillment-earnings.vue</file></path><path><editType>edit</editType><file>server/api/bi/fulfillment-earnings.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/inbox/inboxDb.ts</affectedPath><affectedPath>app/pages/accounting/incoming-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/incoming-invoices/[id]/unlink.post.ts</affectedPath><affectedPath>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</affectedPath><affectedPath>app/components/accounting/inbox/InboxList.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>793a82d4cbd64989cb56f00fe958405346e679a6</commitId><timestamp>1787641115000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix accounting unlinking
</comment><date>2026-08-25 08:58:35 +0200</date><id>793a82d4cbd64989cb56f00fe958405346e679a6</id><msg>fix accounting unlinking</msg><path><editType>edit</editType><file>server/utils/inbox/inboxDb.ts</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InboxList.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/incoming-invoices/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/api/accounting/incoming-invoices/[id]/unlink.post.ts</file></path><path><editType>edit</editType><file>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>2f450190619f89a1ca50943b1979065fa0287642</commitId><timestamp>1787641822000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add ticket pdf report function
</comment><date>2026-08-25 09:10:22 +0200</date><id>2f450190619f89a1ca50943b1979065fa0287642</id><msg>add ticket pdf report function</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</affectedPath><affectedPath>server/api/accounting/incoming-invoices/[id]/unlink.post.ts</affectedPath><affectedPath>server/utils/inbox/freeInvoiceNo.ts</affectedPath><commitId>67b08d0b7afa8c054b21580edc6fe1ac2fd6ed9e</commitId><timestamp>1787644426000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix unlinking invoices
</comment><date>2026-08-25 09:53:46 +0200</date><id>67b08d0b7afa8c054b21580edc6fe1ac2fd6ed9e</id><msg>fix unlinking invoices</msg><path><editType>edit</editType><file>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</file></path><path><editType>add</editType><file>server/utils/inbox/freeInvoiceNo.ts</file></path><path><editType>edit</editType><file>server/api/accounting/incoming-invoices/[id]/unlink.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/OrderForm.vue</affectedPath><affectedPath>server/api/commission/state-lookup.get.ts</affectedPath><affectedPath>app/pages/sales/orders/add.vue</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>app/composables/useUsAddress.ts</affectedPath><affectedPath>app/pages/integrations/commission.vue</affectedPath><affectedPath>app/composables/useAddressFixer.ts</affectedPath><affectedPath>app/pages/sales/orders/create.vue</affectedPath><commitId>4004704729336f2b835f45cbf660979d8a4941e4</commitId><timestamp>1787649101000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add usa state check
</comment><date>2026-08-25 11:11:41 +0200</date><id>4004704729336f2b835f45cbf660979d8a4941e4</id><msg>add usa state check</msg><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path><path><editType>add</editType><file>server/api/commission/state-lookup.get.ts</file></path><path><editType>edit</editType><file>app/components/sales/OrderForm.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/add.vue</file></path><path><editType>edit</editType><file>app/composables/useAddressFixer.ts</file></path><path><editType>add</editType><file>app/composables/useUsAddress.ts</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/create.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/settings/bank-connections/[id]/edit.vue</affectedPath><affectedPath>server/api/accounting/ebay/orders-check.get.ts</affectedPath><affectedPath>app/components/settings/BankConnectionForm.vue</affectedPath><affectedPath>app/components/accounting/banking/BankConnectionCard.vue</affectedPath><affectedPath>app/pages/settings/bank-connections/create.vue</affectedPath><affectedPath>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</affectedPath><affectedPath>app/components/accounting/banking/BankFetchResultModal.vue</affectedPath><affectedPath>app/components/AgGrid/Accounting/AgDocPreviewLink.vue</affectedPath><affectedPath>app/components/accounting/inbox/InvoiceReview.vue</affectedPath><affectedPath>app/components/accounting/BankLineMatchModal.vue</affectedPath><affectedPath>app/pages/accounting/amazon-orders-check.vue</affectedPath><affectedPath>app/pages/accounting/banking/index.vue</affectedPath><affectedPath>reference/recipes.md</affectedPath><affectedPath>app/components/accounting/banking/BankReconcileTab.vue</affectedPath><affectedPath>app/components/accounting/banking/BankImportPreviewModal.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/composables/useInvoiceGenerate.ts</affectedPath><affectedPath>server/api/accounting/amazon/orders-check.get.ts</affectedPath><affectedPath>server/api/accounting/bank-reconciliation/lines/[lineId]/match-invoice.post.ts</affectedPath><affectedPath>app/components/accounting/banking/BankImportTab.vue</affectedPath><affectedPath>server/utils/bankReconciliation.ts</affectedPath><affectedPath>server/api/accounting/bank-reconciliation/unreconciled-payments.get.ts</affectedPath><affectedPath>app/pages/settings/bank-connections/index.vue</affectedPath><affectedPath>app/pages/accounting/ebay-orders-check.vue</affectedPath><affectedPath>app/composables/useBankingFormat.ts</affectedPath><affectedPath>server/api/accounting/bank-reconciliation/statements.get.ts</affectedPath><commitId>1bd0bb99035dd4456264337b047d087646961099</commitId><timestamp>1787657167000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add Invoice creation on amazon and ebay reconilation pages
</comment><date>2026-08-25 13:26:07 +0200</date><id>1bd0bb99035dd4456264337b047d087646961099</id><msg>Add Invoice creation on amazon and ebay reconilation pages</msg><path><editType>edit</editType><file>app/components/settings/BankConnectionForm.vue</file></path><path><editType>edit</editType><file>app/pages/settings/bank-connections/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/components/AgGrid/Accounting/AgDocPreviewLink.vue</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankConnectionCard.vue</file></path><path><editType>edit</editType><file>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankReconcileTab.vue</file></path><path><editType>edit</editType><file>app/pages/settings/bank-connections/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/bank-reconciliation/lines/[lineId]/match-invoice.post.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/banking/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon/orders-check.get.ts</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankImportTab.vue</file></path><path><editType>edit</editType><file>server/utils/bankReconciliation.ts</file></path><path><editType>edit</editType><file>app/composables/useBankingFormat.ts</file></path><path><editType>edit</editType><file>server/api/accounting/bank-reconciliation/statements.get.ts</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankImportPreviewModal.vue</file></path><path><editType>add</editType><file>app/composables/useInvoiceGenerate.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/settings/bank-connections/create.vue</file></path><path><editType>edit</editType><file>server/api/accounting/ebay/orders-check.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/bank-reconciliation/unreconciled-payments.get.ts</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InvoiceReview.vue</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-orders-check.vue</file></path><path><editType>edit</editType><file>app/components/accounting/BankLineMatchModal.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/ebay-orders-check.vue</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankFetchResultModal.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>716</buildNumber><marked><SHA1>c41fc2c30e6bb6d7fd020e8848db3402ddf3cd54</SHA1><branch><SHA1>c41fc2c30e6bb6d7fd020e8848db3402ddf3cd54</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>c41fc2c30e6bb6d7fd020e8848db3402ddf3cd54</SHA1><branch><SHA1>c41fc2c30e6bb6d7fd020e8848db3402ddf3cd54</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>c41fc2c30e6bb6d7fd020e8848db3402ddf3cd54</SHA1><branch><SHA1>c41fc2c30e6bb6d7fd020e8848db3402ddf3cd54</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#716</displayName><duration>58364</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #716</fullDisplayName><id>716</id><inProgress>false</inProgress><keepLog>false</keepLog><number>716</number><queueId>5592</queueId><result>SUCCESS</result><timestamp>1787616000274</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/716/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/index.vue</affectedPath><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>feac130192b05be84e747088aae7fdcbd85c180b</commitId><timestamp>1787555130000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>tune ticket
</comment><date>2026-08-24 09:05:30 +0200</date><id>feac130192b05be84e747088aae7fdcbd85c180b</id><msg>tune ticket</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><commitId>9f086a736614cc0ead4e6d3810cdfeffdc70d5d2</commitId><timestamp>1787561527000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>changes for ticket
</comment><date>2026-08-24 10:52:07 +0200</date><id>9f086a736614cc0ead4e6d3810cdfeffdc70d5d2</id><msg>changes for ticket</msg><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><affectedPath>server/api/settings/order-sources/update.put.ts</affectedPath><affectedPath>app/pages/settings/order-sources/[id]/edit.vue</affectedPath><commitId>4c21f6e046a122001cc12b4e31741097dd32d374</commitId><timestamp>1787564710000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add new shipping profile for DPD - Plenty on ordersource
</comment><date>2026-08-24 11:45:10 +0200</date><id>4c21f6e046a122001cc12b4e31741097dd32d374</id><msg>Add new shipping profile for DPD - Plenty on ordersource</msg><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path><path><editType>edit</editType><file>app/pages/settings/order-sources/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/settings/order-sources/update.put.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/index.vue</affectedPath><affectedPath>server/api/orders/unfulfillable-products.get.ts</affectedPath><commitId>2c6a3560035cceaafca03a1f4f63b346a9912237</commitId><timestamp>1787565243000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>filter missing articles by org
</comment><date>2026-08-24 11:54:03 +0200</date><id>2c6a3560035cceaafca03a1f4f63b346a9912237</id><msg>filter missing articles by org</msg><path><editType>edit</editType><file>server/api/orders/unfulfillable-products.get.ts</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</affectedPath><affectedPath>app/components/accounting/inbox/InvoiceReview.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>296b83b373fddc81fc96ba578a7b50652c263312</commitId><timestamp>1787569443000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add AR payment accolation on banking page
</comment><date>2026-08-24 13:04:03 +0200</date><id>296b83b373fddc81fc96ba578a7b50652c263312</id><msg>add AR payment accolation on banking page</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InvoiceReview.vue</file></path><path><editType>edit</editType><file>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>server/utils/pushNotifier.ts</affectedPath><affectedPath>app/components/requests/RequestForm.vue</affectedPath><affectedPath>app/components/dashboard/TicketQuickModal.vue</affectedPath><affectedPath>server/api/requests/requests/[id]/action-notification.post.ts</affectedPath><commitId>86a16f9082ce09fa64e56527c4992e92e38751d7</commitId><timestamp>1787570722000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>tune ticket notification
</comment><date>2026-08-24 13:25:22 +0200</date><id>86a16f9082ce09fa64e56527c4992e92e38751d7</id><msg>tune ticket notification</msg><path><editType>edit</editType><file>app/components/dashboard/TicketQuickModal.vue</file></path><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path><path><editType>edit</editType><file>server/utils/pushNotifier.ts</file></path><path><editType>edit</editType><file>server/api/requests/requests/[id]/action-notification.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</affectedPath><affectedPath>app/components/accounting/banking/BankReconcilePanel.vue</affectedPath><affectedPath>app/components/accounting/banking/BankImportTab.vue</affectedPath><affectedPath>app/pages/accounting/banking/index.vue</affectedPath><affectedPath>app/components/accounting/inbox/InvoiceReview.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/composables/useBankingMarks.ts</affectedPath><commitId>232aeb401da22d996403ff0796a5d219c39dad2b</commitId><timestamp>1787571916000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix banking invoice amounts
</comment><date>2026-08-24 13:45:16 +0200</date><id>232aeb401da22d996403ff0796a5d219c39dad2b</id><msg>fix banking invoice amounts</msg><path><editType>edit</editType><file>app/components/accounting/banking/BankImportTab.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankReconcilePanel.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/banking/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</file></path><path><editType>edit</editType><file>app/composables/useBankingMarks.ts</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InvoiceReview.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/offers/quotePdf.ts</affectedPath><affectedPath>app/pages/partners/partners/[id]/edit.vue</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>server/api/offers/website-screenshot.post.ts</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><affectedPath>app/components/offers/ContractModal.vue</affectedPath><affectedPath>app/pages/users/leads/[id]/edit.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>4f3ad36e95938f4bd4c60e3ea40c1d632f005a7f</commitId><timestamp>1787573953000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>tweak leads offer with website screenshot or logo
</comment><date>2026-08-24 14:19:13 +0200</date><id>4f3ad36e95938f4bd4c60e3ea40c1d632f005a7f</id><msg>tweak leads offer with website screenshot or logo</msg><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/utils/offers/quotePdf.ts</file></path><path><editType>edit</editType><file>app/pages/partners/partners/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/components/offers/ContractModal.vue</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>edit</editType><file>app/pages/users/leads/[id]/edit.vue</file></path><path><editType>add</editType><file>server/api/offers/website-screenshot.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/incoming-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</affectedPath><affectedPath>app/components/accounting/inbox/InvoiceReview.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>22713e86704032f1809d570ef3ff9571fedadbbd</commitId><timestamp>1787575634000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix invoices
</comment><date>2026-08-24 14:47:14 +0200</date><id>22713e86704032f1809d570ef3ff9571fedadbbd</id><msg>fix invoices</msg><path><editType>edit</editType><file>app/components/accounting/inbox/InvoiceReview.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/accounting/incoming-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/commission/parcels/dpd/index.get.ts</affectedPath><affectedPath>server/utils/dpdHelper.ts</affectedPath><commitId>3578f0468c34f72394d4c59f1d49550ca66e4c19</commitId><timestamp>1787579057000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix to show the label a6
</comment><date>2026-08-24 15:44:17 +0200</date><id>3578f0468c34f72394d4c59f1d49550ca66e4c19</id><msg>fix to show the label a6</msg><path><editType>edit</editType><file>server/utils/dpdHelper.ts</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dpd/index.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/dpdHelper.ts</affectedPath><commitId>b58d9ba724cb7fe8f19d2c0e6e80bb39d3eb42ad</commitId><timestamp>1787583223000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>reduce dpd commission pdf time
</comment><date>2026-08-24 16:53:43 +0200</date><id>b58d9ba724cb7fe8f19d2c0e6e80bb39d3eb42ad</id><msg>reduce dpd commission pdf time</msg><path><editType>edit</editType><file>server/utils/dpdHelper.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/bi/fulfillment-earnings.vue</affectedPath><affectedPath>server/api/bi/fulfillment-earnings.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><commitId>388382cd995bd887df683cbe40660c82e47264ab</commitId><timestamp>1787588780000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show maring calculation per date range
</comment><date>2026-08-24 18:26:20 +0200</date><id>388382cd995bd887df683cbe40660c82e47264ab</id><msg>show maring calculation per date range</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/api/bi/fulfillment-earnings.get.ts</file></path><path><editType>add</editType><file>app/pages/bi/fulfillment-earnings.vue</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/commission.vue</affectedPath><commitId>c41fc2c30e6bb6d7fd020e8848db3402ddf3cd54</commitId><timestamp>1787589343000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix
</comment><date>2026-08-24 18:35:43 +0200</date><id>c41fc2c30e6bb6d7fd020e8848db3402ddf3cd54</id><msg>fix</msg><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>715</buildNumber><marked><SHA1>dd0fe5ffef247f4643b120ed36867ea125bb0516</SHA1><branch><SHA1>dd0fe5ffef247f4643b120ed36867ea125bb0516</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>dd0fe5ffef247f4643b120ed36867ea125bb0516</SHA1><branch><SHA1>dd0fe5ffef247f4643b120ed36867ea125bb0516</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>dd0fe5ffef247f4643b120ed36867ea125bb0516</SHA1><branch><SHA1>dd0fe5ffef247f4643b120ed36867ea125bb0516</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#715</displayName><duration>56367</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #715</fullDisplayName><id>715</id><inProgress>false</inProgress><keepLog>false</keepLog><number>715</number><queueId>5583</queueId><result>SUCCESS</result><timestamp>1787529600274</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/715/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/OrderQuickAddModal.vue</affectedPath><affectedPath>app/pages/partners/partners/add.vue</affectedPath><affectedPath>app/components/partners/PartnerQuickForm.vue</affectedPath><affectedPath>server/api/partners/partners/quick-add.post.ts</affectedPath><commitId>246ffe948973e5edfb0ecc575f7f76d271c2e008</commitId><timestamp>1787508390000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>tweak dhl packstation manual order creation
</comment><date>2026-08-23 20:06:30 +0200</date><id>246ffe948973e5edfb0ecc575f7f76d271c2e008</id><msg>tweak dhl packstation manual order creation</msg><path><editType>edit</editType><file>app/components/partners/PartnerQuickForm.vue</file></path><path><editType>edit</editType><file>server/api/partners/partners/quick-add.post.ts</file></path><path><editType>edit</editType><file>app/components/OrderQuickAddModal.vue</file></path><path><editType>edit</editType><file>app/pages/partners/partners/add.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/bank-reconciliation/[id]/lines.get.ts</affectedPath><affectedPath>app/components/accounting/banking/BankReconcilePanel.vue</affectedPath><affectedPath>app/components/accounting/banking/BankFetchResultModal.vue</affectedPath><affectedPath>app/components/accounting/banking/BankImportTab.vue</affectedPath><affectedPath>app/pages/accounting/banking/index.vue</affectedPath><affectedPath>app/composables/useBankingFormat.ts</affectedPath><affectedPath>server/api/accounting/bank-reconciliation/statements.get.ts</affectedPath><affectedPath>app/components/accounting/banking/BankImportPreviewModal.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/composables/useBankingMarks.ts</affectedPath><commitId>a63a3f6d96d2699a1dc0740cf3f9fd05429ffba0</commitId><timestamp>1787509433000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>change ordering of bank transactions latest top
</comment><date>2026-08-23 20:23:53 +0200</date><id>a63a3f6d96d2699a1dc0740cf3f9fd05429ffba0</id><msg>change ordering of bank transactions latest top</msg><path><editType>edit</editType><file>app/components/accounting/banking/BankImportTab.vue</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankImportPreviewModal.vue</file></path><path><editType>edit</editType><file>server/api/accounting/bank-reconciliation/[id]/lines.get.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/banking/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>app/composables/useBankingMarks.ts</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankReconcilePanel.vue</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankFetchResultModal.vue</file></path><path><editType>edit</editType><file>app/composables/useBankingFormat.ts</file></path><path><editType>edit</editType><file>server/api/accounting/bank-reconciliation/statements.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/commission.vue</affectedPath><affectedPath>app/composables/useAddressFixer.ts</affectedPath><commitId>dd0fe5ffef247f4643b120ed36867ea125bb0516</commitId><timestamp>1787515546000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Tune the address edit on commission to not close directly when moving out of edit area and introduce and address recommondation wizard inside the same modal
</comment><date>2026-08-23 22:05:46 +0200</date><id>dd0fe5ffef247f4643b120ed36867ea125bb0516</id><msg>Tune the address edit on commission to not close directly when moving out of edit area and introduce and address recommondation wizard inside the same modal</msg><path><editType>add</editType><file>app/composables/useAddressFixer.ts</file></path><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>714</buildNumber><marked><SHA1>74fbf9b3aae02a663436db434a580ac01a928c1c</SHA1><branch><SHA1>74fbf9b3aae02a663436db434a580ac01a928c1c</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>74fbf9b3aae02a663436db434a580ac01a928c1c</SHA1><branch><SHA1>74fbf9b3aae02a663436db434a580ac01a928c1c</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>74fbf9b3aae02a663436db434a580ac01a928c1c</SHA1><branch><SHA1>74fbf9b3aae02a663436db434a580ac01a928c1c</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#714</displayName><duration>57217</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #714</fullDisplayName><id>714</id><inProgress>false</inProgress><keepLog>false</keepLog><number>714</number><queueId>5579</queueId><result>SUCCESS</result><timestamp>1787443200273</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/714/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/OrderQuickAddModal.vue</affectedPath><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/composables/useDhlShipper.ts</affectedPath><affectedPath>app/pages/partners/partners/add.vue</affectedPath><affectedPath>app/components/partners/PartnerQuickForm.vue</affectedPath><affectedPath>app/pages/materials/products/index.vue</affectedPath><affectedPath>app/pages/index.vue</affectedPath><affectedPath>reference/dhlpackstation.png</affectedPath><affectedPath>app/components/AgGrid/Products/AgOriginCountry.vue</affectedPath><affectedPath>public/assets/shipper/dhl_packstation_small.png</affectedPath><affectedPath>server/api/partners/partners/quick-add.post.ts</affectedPath><commitId>39422f98beefc5d30da965cd9941c3ca60d4172e</commitId><timestamp>1787418170000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fixes merchant portal
</comment><date>2026-08-22 19:02:50 +0200</date><id>39422f98beefc5d30da965cd9941c3ca60d4172e</id><msg>fixes merchant portal</msg><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>server/api/partners/partners/quick-add.post.ts</file></path><path><editType>edit</editType><file>app/components/partners/PartnerQuickForm.vue</file></path><path><editType>add</editType><file>reference/dhlpackstation.png</file></path><path><editType>add</editType><file>app/composables/useDhlShipper.ts</file></path><path><editType>edit</editType><file>app/pages/materials/products/index.vue</file></path><path><editType>add</editType><file>public/assets/shipper/dhl_packstation_small.png</file></path><path><editType>edit</editType><file>app/components/OrderQuickAddModal.vue</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path><path><editType>edit</editType><file>app/pages/partners/partners/add.vue</file></path><path><editType>edit</editType><file>app/components/AgGrid/Products/AgOriginCountry.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/OrderQuickAddModal.vue</affectedPath><affectedPath>app/components/materials/ProductForm.vue</affectedPath><affectedPath>app/pages/partners/partners/add.vue</affectedPath><affectedPath>app/components/partners/PartnerQuickForm.vue</affectedPath><affectedPath>app/pages/materials/products/index.vue</affectedPath><affectedPath>app/pages/index.vue</affectedPath><affectedPath>app/components/sales/CountryPickerModal.vue</affectedPath><affectedPath>app/components/AgGrid/Products/AgOriginCountry.vue</affectedPath><affectedPath>server/api/partners/partners/quick-add.post.ts</affectedPath><commitId>74fbf9b3aae02a663436db434a580ac01a928c1c</commitId><timestamp>1787419783000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fixes merchant portal
</comment><date>2026-08-22 19:29:43 +0200</date><id>74fbf9b3aae02a663436db434a580ac01a928c1c</id><msg>fixes merchant portal</msg><path><editType>edit</editType><file>app/pages/materials/products/index.vue</file></path><path><editType>edit</editType><file>app/components/OrderQuickAddModal.vue</file></path><path><editType>edit</editType><file>app/pages/partners/partners/add.vue</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path><path><editType>edit</editType><file>server/api/partners/partners/quick-add.post.ts</file></path><path><editType>edit</editType><file>app/components/materials/ProductForm.vue</file></path><path><editType>edit</editType><file>app/components/partners/PartnerQuickForm.vue</file></path><path><editType>edit</editType><file>app/components/sales/CountryPickerModal.vue</file></path><path><editType>edit</editType><file>app/components/AgGrid/Products/AgOriginCountry.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>713</buildNumber><marked><SHA1>a1dc93ca0866540d9e47109b3cc15758cef248c0</SHA1><branch><SHA1>a1dc93ca0866540d9e47109b3cc15758cef248c0</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>a1dc93ca0866540d9e47109b3cc15758cef248c0</SHA1><branch><SHA1>a1dc93ca0866540d9e47109b3cc15758cef248c0</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>a1dc93ca0866540d9e47109b3cc15758cef248c0</SHA1><branch><SHA1>a1dc93ca0866540d9e47109b3cc15758cef248c0</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#713</displayName><duration>56083</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #713</fullDisplayName><id>713</id><inProgress>false</inProgress><keepLog>false</keepLog><number>713</number><queueId>5576</queueId><result>SUCCESS</result><timestamp>1787356800273</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/713/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/bankReconciliation.ts</affectedPath><affectedPath>server/api/accounting/bank-reconciliation/lines/index.get.ts</affectedPath><affectedPath>server/api/accounting/bank-reconciliation/[id]/suggestions.get.ts</affectedPath><affectedPath>server/utils/bankReconciliationSuggestions.ts</affectedPath><affectedPath>app/components/accounting/banking/BankReconcilePanel.vue</affectedPath><affectedPath>app/components/accounting/banking/BankImportTab.vue</affectedPath><affectedPath>app/pages/accounting/banking/index.vue</affectedPath><affectedPath>server/api/accounting/bank-reconciliation/suggestions.get.ts</affectedPath><affectedPath>app/components/accounting/banking/BankReconcileTab.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>3b4fd40cfbad3d47beb1efbebd80f5b24e6c74fa</commitId><timestamp>1787306128000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>optmize banking
</comment><date>2026-08-21 11:55:28 +0200</date><id>3b4fd40cfbad3d47beb1efbebd80f5b24e6c74fa</id><msg>optmize banking</msg><path><editType>edit</editType><file>server/utils/bankReconciliation.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/api/accounting/bank-reconciliation/lines/index.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/bank-reconciliation/[id]/suggestions.get.ts</file></path><path><editType>add</editType><file>server/utils/bankReconciliationSuggestions.ts</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankImportTab.vue</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankReconcileTab.vue</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankReconcilePanel.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/banking/index.vue</file></path><path><editType>add</editType><file>server/api/accounting/bank-reconciliation/suggestions.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>server/api/requests/requests/latest-updates.get.ts</affectedPath><affectedPath>app/pages/requests/my-tickets/index.vue</affectedPath><affectedPath>app/utils/chatFormat.ts</affectedPath><affectedPath>server/api/requests/requests/[id]/author-orgs.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>b2de5a56c5a60b556a08dad8a34b2bdd191f8ee5</commitId><timestamp>1787309765000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>tune ticket window
</comment><date>2026-08-21 12:56:05 +0200</date><id>b2de5a56c5a60b556a08dad8a34b2bdd191f8ee5</id><msg>tune ticket window</msg><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>server/api/requests/requests/latest-updates.get.ts</file></path><path><editType>edit</editType><file>app/pages/requests/my-tickets/index.vue</file></path><path><editType>add</editType><file>app/utils/chatFormat.ts</file></path><path><editType>add</editType><file>server/api/requests/requests/[id]/author-orgs.get.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/accounting/banking/BankImportTab.vue</affectedPath><affectedPath>app/pages/accounting/banking/index.vue</affectedPath><affectedPath>app/components/accounting/banking/BankReconcilePanel.vue</affectedPath><affectedPath>app/components/accounting/banking/BankReconcileTab.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>b63d695c5ed351cc48e81c3376bacb3669c65445</commitId><timestamp>1787311617000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>tune banking page
</comment><date>2026-08-21 13:26:57 +0200</date><id>b63d695c5ed351cc48e81c3376bacb3669c65445</id><msg>tune banking page</msg><path><editType>edit</editType><file>app/pages/accounting/banking/index.vue</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankReconcilePanel.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankImportTab.vue</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankReconcileTab.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/composables/useRequestAttachmentActions.ts</affectedPath><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/components/AttachmentModal.vue</affectedPath><affectedPath>app/components/requests/RequestForm.vue</affectedPath><affectedPath>app/components/requests/RequestAttachmentsCard.vue</affectedPath><commitId>b14cb4a6e688776f1eb638a664e7d9eb2d84e093</commitId><timestamp>1787315135000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show back the attachments
</comment><date>2026-08-21 14:25:35 +0200</date><id>b14cb4a6e688776f1eb638a664e7d9eb2d84e093</id><msg>show back the attachments</msg><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path><path><editType>add</editType><file>app/composables/useRequestAttachmentActions.ts</file></path><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>add</editType><file>app/components/requests/RequestAttachmentsCard.vue</file></path><path><editType>edit</editType><file>app/components/AttachmentModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><commitId>21cd639c35986aeab6d36281bea2fd453789d466</commitId><timestamp>1787316204000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>tune ticket
</comment><date>2026-08-21 14:43:24 +0200</date><id>21cd639c35986aeab6d36281bea2fd453789d466</id><msg>tune ticket</msg><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>d3dab29790723a6ed5c7d78e22bc1e04f5b6058d</commitId><timestamp>1787316531000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>tune ticket
</comment><date>2026-08-21 14:48:51 +0200</date><id>d3dab29790723a6ed5c7d78e22bc1e04f5b6058d</id><msg>tune ticket</msg><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/requests/requests/update.put.ts</affectedPath><affectedPath>server/utils/accountingRequestType.ts</affectedPath><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>server/api/requests/requests/store.post.ts</affectedPath><affectedPath>app/pages/requests/my-tickets/index.vue</affectedPath><affectedPath>app/pages/index.vue</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>server/api/orders/[id]/requests.get.ts</affectedPath><affectedPath>app/components/requests/RequestForm.vue</affectedPath><affectedPath>app/components/sales/OrderPositionsTable.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>server/api/orders/[id]/productions.get.ts</affectedPath><commitId>44906da043dcf94aa5677c5af63a26820df89382</commitId><timestamp>1787318315000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>tune ticket
</comment><date>2026-08-21 15:18:35 +0200</date><id>44906da043dcf94aa5677c5af63a26820df89382</id><msg>tune ticket</msg><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>add</editType><file>server/utils/accountingRequestType.ts</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path><path><editType>edit</editType><file>server/api/requests/requests/store.post.ts</file></path><path><editType>add</editType><file>server/api/orders/[id]/productions.get.ts</file></path><path><editType>edit</editType><file>server/api/requests/requests/update.put.ts</file></path><path><editType>edit</editType><file>app/components/sales/OrderPositionsTable.vue</file></path><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path><path><editType>edit</editType><file>app/pages/requests/my-tickets/index.vue</file></path><path><editType>edit</editType><file>server/api/orders/[id]/requests.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/OrderForm.vue</affectedPath><affectedPath>server/api/requests/requests/update.put.ts</affectedPath><affectedPath>app/components/AttachmentViewer.vue</affectedPath><affectedPath>app/pages/requests/my-tickets/index.vue</affectedPath><affectedPath>server/api/requests/requests/store.post.ts</affectedPath><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>app/components/requests/RequestForm.vue</affectedPath><affectedPath>server/utils/productionTicket.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>a1dc93ca0866540d9e47109b3cc15758cef248c0</commitId><timestamp>1787319748000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>tune ticket
</comment><date>2026-08-21 15:42:28 +0200</date><id>a1dc93ca0866540d9e47109b3cc15758cef248c0</id><msg>tune ticket</msg><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/pages/requests/my-tickets/index.vue</file></path><path><editType>edit</editType><file>app/components/AttachmentViewer.vue</file></path><path><editType>edit</editType><file>app/components/sales/OrderForm.vue</file></path><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path><path><editType>edit</editType><file>server/api/requests/requests/store.post.ts</file></path><path><editType>edit</editType><file>server/api/requests/requests/update.put.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/utils/productionTicket.ts</file></path><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>712</buildNumber><marked><SHA1>afe7eeb2c13652f8e4b6eaf31364ffacd92d33ab</SHA1><branch><SHA1>afe7eeb2c13652f8e4b6eaf31364ffacd92d33ab</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>afe7eeb2c13652f8e4b6eaf31364ffacd92d33ab</SHA1><branch><SHA1>afe7eeb2c13652f8e4b6eaf31364ffacd92d33ab</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>afe7eeb2c13652f8e4b6eaf31364ffacd92d33ab</SHA1><branch><SHA1>afe7eeb2c13652f8e4b6eaf31364ffacd92d33ab</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#712</displayName><duration>59573</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #712</fullDisplayName><id>712</id><inProgress>false</inProgress><keepLog>false</keepLog><number>712</number><queueId>5570</queueId><result>SUCCESS</result><timestamp>1787270400273</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/712/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/accounting/banking/BankConnectionCard.vue</affectedPath><affectedPath>app/components/accounting/banking/BankReconcilePanel.vue</affectedPath><affectedPath>app/components/accounting/banking/BankFetchResultModal.vue</affectedPath><affectedPath>app/components/accounting/banking/BankImportTab.vue</affectedPath><affectedPath>app/composables/useIdempiereDate.ts</affectedPath><affectedPath>app/composables/useNavigateTab.ts</affectedPath><affectedPath>app/components/accounting/BankLineMatchModal.vue</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><affectedPath>app/pages/accounting/banking/index.vue</affectedPath><affectedPath>app/composables/useBankingFormat.ts</affectedPath><affectedPath>app/composables/menu/admin/accounting.ts</affectedPath><affectedPath>app/components/accounting/banking/BankReconcileTab.vue</affectedPath><affectedPath>app/components/accounting/banking/BankImportPreviewModal.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>4eb32d69f5dbd3a99f432659d0968392d52b9834</commitId><timestamp>1787223300000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>create unified accounting page
</comment><date>2026-08-20 12:55:00 +0200</date><id>4eb32d69f5dbd3a99f432659d0968392d52b9834</id><msg>create unified accounting page</msg><path><editType>add</editType><file>app/composables/useBankingFormat.ts</file></path><path><editType>edit</editType><file>app/composables/useIdempiereDate.ts</file></path><path><editType>add</editType><file>app/pages/accounting/banking/index.vue</file></path><path><editType>add</editType><file>app/components/accounting/banking/BankConnectionCard.vue</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path><path><editType>edit</editType><file>app/components/accounting/BankLineMatchModal.vue</file></path><path><editType>add</editType><file>app/composables/useNavigateTab.ts</file></path><path><editType>add</editType><file>app/components/accounting/banking/BankImportTab.vue</file></path><path><editType>add</editType><file>app/components/accounting/banking/BankReconcilePanel.vue</file></path><path><editType>add</editType><file>app/components/accounting/banking/BankFetchResultModal.vue</file></path><path><editType>add</editType><file>app/components/accounting/banking/BankReconcileTab.vue</file></path><path><editType>add</editType><file>app/components/accounting/banking/BankImportPreviewModal.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/composables/menu/admin/accounting.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/bi/locator-usage.get.ts</affectedPath><affectedPath>app/pages/bi/locator-usage.vue</affectedPath><affectedPath>app/pages/requests/requests/create.vue</affectedPath><commitId>bf7c95b98e8f73748208230d6096ad5495a3813e</commitId><timestamp>1787228593000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add unique locators
</comment><date>2026-08-20 14:23:13 +0200</date><id>bf7c95b98e8f73748208230d6096ad5495a3813e</id><msg>add unique locators</msg><path><editType>edit</editType><file>server/api/bi/locator-usage.get.ts</file></path><path><editType>edit</editType><file>app/pages/bi/locator-usage.vue</file></path><path><editType>edit</editType><file>app/pages/requests/requests/create.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/commission/open-tickets.get.ts</affectedPath><commitId>b7147bc395fb1e0d0bed2dcbea1fb58fb7751ed6</commitId><timestamp>1787228760000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show only open tickets
</comment><date>2026-08-20 14:26:00 +0200</date><id>b7147bc395fb1e0d0bed2dcbea1fb58fb7751ed6</id><msg>show only open tickets</msg><path><editType>edit</editType><file>server/api/commission/open-tickets.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.env</affectedPath><affectedPath>app/utils/purchaseOrderReport.ts</affectedPath><affectedPath>app/pages/procurements/orders/[id]/edit.vue</affectedPath><affectedPath>app/components/procurements/OrderDetailRecordLine.vue</affectedPath><commitId>5dad62bd5a1d80f4466f4f9e56b5738a77b9110a</commitId><timestamp>1787239988000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix wareneingang report
</comment><date>2026-08-20 17:33:08 +0200</date><id>5dad62bd5a1d80f4466f4f9e56b5738a77b9110a</id><msg>fix wareneingang report</msg><path><editType>edit</editType><file>.env</file></path><path><editType>edit</editType><file>app/pages/procurements/orders/[id]/edit.vue</file></path><path><editType>add</editType><file>app/utils/purchaseOrderReport.ts</file></path><path><editType>edit</editType><file>app/components/procurements/OrderDetailRecordLine.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/receive.vue</affectedPath><commitId>afe7eeb2c13652f8e4b6eaf31364ffacd92d33ab</commitId><timestamp>1787242363000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add mobile po full complete option
</comment><date>2026-08-20 18:12:43 +0200</date><id>afe7eeb2c13652f8e4b6eaf31364ffacd92d33ab</id><msg>add mobile po full complete option</msg><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>711</buildNumber><marked><SHA1>07ea2164c855d3ec0a4a2c0184b0f3c615ed70a1</SHA1><branch><SHA1>07ea2164c855d3ec0a4a2c0184b0f3c615ed70a1</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>07ea2164c855d3ec0a4a2c0184b0f3c615ed70a1</SHA1><branch><SHA1>07ea2164c855d3ec0a4a2c0184b0f3c615ed70a1</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>07ea2164c855d3ec0a4a2c0184b0f3c615ed70a1</SHA1><branch><SHA1>07ea2164c855d3ec0a4a2c0184b0f3c615ed70a1</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#711</displayName><duration>58283</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #711</fullDisplayName><id>711</id><inProgress>false</inProgress><keepLog>false</keepLog><number>711</number><queueId>5567</queueId><result>SUCCESS</result><timestamp>1787184000272</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/711/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/tasks.vue</affectedPath><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/components/requests/RequestForm.vue</affectedPath><commitId>2e2edec62005a6dc899215a9fac95282a81df5f8</commitId><timestamp>1787127988000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix ticket view
</comment><date>2026-08-19 10:26:28 +0200</date><id>2e2edec62005a6dc899215a9fac95282a81df5f8</id><msg>fix ticket view</msg><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/tasks.vue</file></path><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/ProductSearchSelect.vue</affectedPath><affectedPath>app/components/ProductChooser.vue</affectedPath><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/components/sales/OrderPositionsTable.vue</affectedPath><commitId>1bc63f3aab0851cc31980f23714b4eb104c02b6c</commitId><timestamp>1787133624000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fixes bom
</comment><date>2026-08-19 12:00:24 +0200</date><id>1bc63f3aab0851cc31980f23714b4eb104c02b6c</id><msg>fixes bom</msg><path><editType>edit</editType><file>app/components/sales/OrderPositionsTable.vue</file></path><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>app/components/ProductSearchSelect.vue</file></path><path><editType>edit</editType><file>app/components/ProductChooser.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/manufacturings/bom-productions/index.get.ts</affectedPath><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/pages/manufacturings/bom-productions/index.vue</affectedPath><affectedPath>app/components/dashboard/TicketQuickModal.vue</affectedPath><affectedPath>app/components/sales/RelabelLabelPrintModal.vue</affectedPath><affectedPath>app/pages/mobile/tasks.vue</affectedPath><affectedPath>app/pages/integrations/tasks-desktop.vue</affectedPath><affectedPath>server/api/manufacturings/bom-productions/[id].get.ts</affectedPath><affectedPath>app/pages/requests/requests/create.vue</affectedPath><affectedPath>app/pages/requests/my-tickets/create.vue</affectedPath><affectedPath>app/components/requests/RequestForm.vue</affectedPath><commitId>6ec0a3fde9db67c5ff96bed26ec694319d56ca62</commitId><timestamp>1787139266000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix
</comment><date>2026-08-19 13:34:26 +0200</date><id>6ec0a3fde9db67c5ff96bed26ec694319d56ca62</id><msg>fix</msg><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>server/api/manufacturings/bom-productions/[id].get.ts</file></path><path><editType>edit</editType><file>app/components/dashboard/TicketQuickModal.vue</file></path><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path><path><editType>edit</editType><file>app/components/sales/RelabelLabelPrintModal.vue</file></path><path><editType>edit</editType><file>app/pages/manufacturings/bom-productions/index.vue</file></path><path><editType>edit</editType><file>app/pages/integrations/tasks-desktop.vue</file></path><path><editType>edit</editType><file>server/api/manufacturings/bom-productions/index.get.ts</file></path><path><editType>edit</editType><file>app/pages/requests/requests/create.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/tasks.vue</file></path><path><editType>edit</editType><file>app/pages/requests/my-tickets/create.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/requests/requests/[id]/edit.vue</affectedPath><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/components/requests/RequestForm.vue</affectedPath><affectedPath>app/composables/useRequestReportPdf.ts</affectedPath><commitId>029ec16f0abddb4459384bacf6d5a04ed4c95960</commitId><timestamp>1787142843000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix merchant tickets
</comment><date>2026-08-19 14:34:03 +0200</date><id>029ec16f0abddb4459384bacf6d5a04ed4c95960</id><msg>fix merchant tickets</msg><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>app/pages/requests/requests/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path><path><editType>edit</editType><file>app/composables/useRequestReportPdf.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/pages/requests/my-tickets/create.vue</affectedPath><affectedPath>app/components/requests/RequestForm.vue</affectedPath><affectedPath>server/api/admin/users/[id]/org-companyname.get.ts</affectedPath><commitId>e5577cbe0af950979db99aae28bd71caa378eef0</commitId><timestamp>1787151085000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix tickets
</comment><date>2026-08-19 16:51:25 +0200</date><id>e5577cbe0af950979db99aae28bd71caa378eef0</id><msg>fix tickets</msg><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>server/api/admin/users/[id]/org-companyname.get.ts</file></path><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path><path><editType>edit</editType><file>app/pages/requests/my-tickets/create.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>app/components/sales/OrderPositionsTable.vue</affectedPath><commitId>59730441ee342da2186898632bafdac94968e401</commitId><timestamp>1787152480000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix description saving
</comment><date>2026-08-19 17:14:40 +0200</date><id>59730441ee342da2186898632bafdac94968e401</id><msg>fix description saving</msg><path><editType>edit</editType><file>app/components/sales/OrderPositionsTable.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/requests/my-tickets/index.vue</affectedPath><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>d56e125754e006469fe5ab3f59a4e9b4c1696d7c</commitId><timestamp>1787155355000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix ticket
</comment><date>2026-08-19 18:02:35 +0200</date><id>d56e125754e006469fe5ab3f59a4e9b4c1696d7c</id><msg>fix ticket</msg><path><editType>edit</editType><file>app/pages/requests/my-tickets/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><commitId>9cf0f8d2d2325e6adf5625e851ce45292af473ff</commitId><timestamp>1787156806000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix ticket
</comment><date>2026-08-19 18:26:46 +0200</date><id>9cf0f8d2d2325e6adf5625e851ce45292af473ff</id><msg>fix ticket</msg><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>server/api/admin/users/[id]/org-companyname.get.ts</affectedPath><commitId>209ba4ed51422baa02a84f41d7a48dae19326ac4</commitId><timestamp>1787160813000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix ticketname
</comment><date>2026-08-19 19:33:33 +0200</date><id>209ba4ed51422baa02a84f41d7a48dae19326ac4</id><msg>fix ticketname</msg><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>server/api/admin/users/[id]/org-companyname.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/pages/requests/my-tickets/index.vue</affectedPath><commitId>d62d9899a9a9e7563cd9390a068afc5b1fd83626</commitId><timestamp>1787171815000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix ticket
</comment><date>2026-08-19 22:36:55 +0200</date><id>d62d9899a9a9e7563cd9390a068afc5b1fd83626</id><msg>fix ticket</msg><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>app/pages/requests/my-tickets/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/pages/requests/my-tickets/index.vue</affectedPath><affectedPath>server/api/admin/users/[id]/org-companyname.get.ts</affectedPath><commitId>c0a82558e260101f138a1e906bc13fe85a96d951</commitId><timestamp>1787173149000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix ticket
</comment><date>2026-08-19 22:59:09 +0200</date><id>c0a82558e260101f138a1e906bc13fe85a96d951</id><msg>fix ticket</msg><path><editType>edit</editType><file>server/api/admin/users/[id]/org-companyname.get.ts</file></path><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>app/pages/requests/my-tickets/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><commitId>07ea2164c855d3ec0a4a2c0184b0f3c615ed70a1</commitId><timestamp>1787174431000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix ticket
</comment><date>2026-08-19 23:20:31 +0200</date><id>07ea2164c855d3ec0a4a2c0184b0f3c615ed70a1</id><msg>fix ticket</msg><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>710</buildNumber><marked><SHA1>90921cce1b648dd8fa45944a4331f046f62c88a9</SHA1><branch><SHA1>90921cce1b648dd8fa45944a4331f046f62c88a9</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>90921cce1b648dd8fa45944a4331f046f62c88a9</SHA1><branch><SHA1>90921cce1b648dd8fa45944a4331f046f62c88a9</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>90921cce1b648dd8fa45944a4331f046f62c88a9</SHA1><branch><SHA1>90921cce1b648dd8fa45944a4331f046f62c88a9</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#710</displayName><duration>56714</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #710</fullDisplayName><id>710</id><inProgress>false</inProgress><keepLog>false</keepLog><number>710</number><queueId>5554</queueId><result>SUCCESS</result><timestamp>1787097600272</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/710/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/requests/requests/update.put.ts</affectedPath><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>app/pages/requests/my-tickets/index.vue</affectedPath><affectedPath>server/api/requests/requests/store.post.ts</affectedPath><affectedPath>app/pages/index.vue</affectedPath><affectedPath>app/components/dashboard/TicketQuickModal.vue</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><affectedPath>app/pages/requests/requests/create.vue</affectedPath><affectedPath>app/pages/requests/my-tickets/create.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>e6d829a765e5dfd564863ff1f92af9c8a377cdba</commitId><timestamp>1787042132000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>style ticket
</comment><date>2026-08-18 10:35:32 +0200</date><id>e6d829a765e5dfd564863ff1f92af9c8a377cdba</id><msg>style ticket</msg><path><editType>edit</editType><file>app/pages/requests/requests/create.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path><path><editType>edit</editType><file>server/api/requests/requests/update.put.ts</file></path><path><editType>edit</editType><file>app/pages/requests/my-tickets/create.vue</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path><path><editType>edit</editType><file>app/pages/requests/my-tickets/index.vue</file></path><path><editType>edit</editType><file>app/components/dashboard/TicketQuickModal.vue</file></path><path><editType>edit</editType><file>server/api/requests/requests/store.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/requests/requests/[id]/edit.vue</affectedPath><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><commitId>83710de5bf9f526c46b2af98bccf2c13236cb731</commitId><timestamp>1787043965000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>style buttons
</comment><date>2026-08-18 11:06:05 +0200</date><id>83710de5bf9f526c46b2af98bccf2c13236cb731</id><msg>style buttons</msg><path><editType>edit</editType><file>app/pages/requests/requests/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><commitId>1805a139fe3fa1d00399887735d4af7155f7a1de</commitId><timestamp>1787051611000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix ticket
</comment><date>2026-08-18 13:13:31 +0200</date><id>1805a139fe3fa1d00399887735d4af7155f7a1de</id><msg>fix ticket</msg><path><editType>edit</editType><file>app/components/requests/MyTicketDetail.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/admin/users/leads/latest.get.ts</affectedPath><affectedPath>server/api/commission/parcels/contents.post.ts</affectedPath><affectedPath>app/pages/index.vue</affectedPath><affectedPath>app/components/materials/ProductDetailRecordBom.vue</affectedPath><affectedPath>server/api/materials/products/[id]/bom-components/index.get.ts</affectedPath><affectedPath>app/pages/integrations/commission.vue</affectedPath><affectedPath>app/components/materials/ProductDetailRecordComponents.vue</affectedPath><affectedPath>app/components/sales/OrderPositionsTable.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>2e7392f74ab805862a4390c275d7c8efae7acc42</commitId><timestamp>1787060146000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>leads to dashboard and show deliverd qty on position
</comment><date>2026-08-18 15:35:46 +0200</date><id>2e7392f74ab805862a4390c275d7c8efae7acc42</id><msg>leads to dashboard and show deliverd qty on position</msg><path><editType>add</editType><file>server/api/admin/users/leads/latest.get.ts</file></path><path><editType>edit</editType><file>app/components/materials/ProductDetailRecordBom.vue</file></path><path><editType>edit</editType><file>server/api/commission/parcels/contents.post.ts</file></path><path><editType>edit</editType><file>app/components/sales/OrderPositionsTable.vue</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/bom-components/index.get.ts</file></path><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/materials/ProductDetailRecordComponents.vue</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/index.vue</affectedPath><commitId>90921cce1b648dd8fa45944a4331f046f62c88a9</commitId><timestamp>1787061013000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>change lead path
</comment><date>2026-08-18 15:50:13 +0200</date><id>90921cce1b648dd8fa45944a4331f046f62c88a9</id><msg>change lead path</msg><path><editType>edit</editType><file>app/pages/index.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>709</buildNumber><marked><SHA1>21e1c2ba55dcd6338429fbd667624a0ed84e6cdf</SHA1><branch><SHA1>21e1c2ba55dcd6338429fbd667624a0ed84e6cdf</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>21e1c2ba55dcd6338429fbd667624a0ed84e6cdf</SHA1><branch><SHA1>21e1c2ba55dcd6338429fbd667624a0ed84e6cdf</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>21e1c2ba55dcd6338429fbd667624a0ed84e6cdf</SHA1><branch><SHA1>21e1c2ba55dcd6338429fbd667624a0ed84e6cdf</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#709</displayName><duration>59482</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #709</fullDisplayName><id>709</id><inProgress>false</inProgress><keepLog>false</keepLog><number>709</number><queueId>5549</queueId><result>SUCCESS</result><timestamp>1787011200274</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/709/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/requests/my-tickets/[id].vue</affectedPath><affectedPath>app/pages/requests/my-tickets/index.vue</affectedPath><affectedPath>app/components/requests/MyTicketDetail.vue</affectedPath><affectedPath>reference/recipes.md</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>789bc780cbcb9962bc231495a51ecfe80babaf5d</commitId><timestamp>1786956142000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add a new method how to work with tickets mast detail view2
</comment><date>2026-08-17 10:42:22 +0200</date><id>789bc780cbcb9962bc231495a51ecfe80babaf5d</id><msg>add a new method how to work with tickets mast detail view2</msg><path><editType>edit</editType><file>app/pages/requests/my-tickets/index.vue</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path><path><editType>add</editType><file>app/components/requests/MyTicketDetail.vue</file></path><path><editType>edit</editType><file>app/pages/requests/my-tickets/[id].vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/requests/my-tickets/index.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>8fe081f30345e4977d62face45d977d601d8c7a2</commitId><timestamp>1786957969000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>change ticket overview
</comment><date>2026-08-17 11:12:49 +0200</date><id>8fe081f30345e4977d62face45d977d601d8c7a2</id><msg>change ticket overview</msg><path><editType>edit</editType><file>app/pages/requests/my-tickets/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounts/company-profile.get.ts</affectedPath><affectedPath>server/utils/emailVerification.ts</affectedPath><affectedPath>server/utils/merchantPartner.ts</affectedPath><affectedPath>app/components/dashboard/ProfileForm.vue</affectedPath><affectedPath>server/api/email-verification/confirm.post.ts</affectedPath><affectedPath>app/components/dashboard/ProfileBilling.vue</affectedPath><affectedPath>server/api/accounts/company-profile.put.ts</affectedPath><affectedPath>server/api/accounts/company-profile/cancel-pending.post.ts</affectedPath><affectedPath>app/pages/verify-email.vue</affectedPath><affectedPath>app/pages/users/profile/index.vue</affectedPath><affectedPath>server/utils/emailVerifyDb.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>ac5a1dfc66d0e94ed723dc8205660bd172698217</commitId><timestamp>1786964027000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>give user option to modify emails in account
</comment><date>2026-08-17 12:53:47 +0200</date><id>ac5a1dfc66d0e94ed723dc8205660bd172698217</id><msg>give user option to modify emails in account</msg><path><editType>edit</editType><file>app/pages/users/profile/index.vue</file></path><path><editType>add</editType><file>server/api/email-verification/confirm.post.ts</file></path><path><editType>edit</editType><file>server/utils/merchantPartner.ts</file></path><path><editType>edit</editType><file>app/components/dashboard/ProfileBilling.vue</file></path><path><editType>edit</editType><file>server/api/accounts/company-profile.put.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/api/accounts/company-profile/cancel-pending.post.ts</file></path><path><editType>add</editType><file>app/pages/verify-email.vue</file></path><path><editType>add</editType><file>server/utils/emailVerifyDb.ts</file></path><path><editType>add</editType><file>server/utils/emailVerification.ts</file></path><path><editType>edit</editType><file>app/components/dashboard/ProfileForm.vue</file></path><path><editType>edit</editType><file>server/api/accounts/company-profile.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.env-dev</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>server/api/webhooks/landing-leads.options.ts</affectedPath><affectedPath>server/api/webhooks/landing-leads.post.ts</affectedPath><affectedPath>server/utils/landingLeadCors.ts</affectedPath><affectedPath>.env</affectedPath><affectedPath>.env-prod</affectedPath><commitId>d9bd5ab26d83d263841798ee658178f99c386124</commitId><timestamp>1786975201000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add receiver for submission from new page
</comment><date>2026-08-17 16:00:01 +0200</date><id>d9bd5ab26d83d263841798ee658178f99c386124</id><msg>add receiver for submission from new page</msg><path><editType>add</editType><file>server/utils/landingLeadCors.ts</file></path><path><editType>add</editType><file>server/api/webhooks/landing-leads.post.ts</file></path><path><editType>add</editType><file>server/api/webhooks/landing-leads.options.ts</file></path><path><editType>edit</editType><file>.env</file></path><path><editType>edit</editType><file>.env-dev</file></path><path><editType>edit</editType><file>.env-prod</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/landingLeadCors.ts</affectedPath><commitId>f596ccf6eb91a4272ee55baf7452d8f6cd3a5d90</commitId><timestamp>1786981208000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>landing-leads CORS: allow any *.younex.de origin (PaaS system domains)

deploy.younex.de (dotnews-paas) gives every project a system domain shaped
like &lt;app&gt;-&lt;8 hex&gt;.younex.de, always live even before a custom domain is
attached — pre-launch/staging deploys of the landing page live there and
need the lead-intake CORS check to pass too. Wildcard regex added alongside
the exact-match production allowlist (logyou.de/www.logyou.de untouched).

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</comment><date>2026-08-17 17:40:08 +0200</date><id>f596ccf6eb91a4272ee55baf7452d8f6cd3a5d90</id><msg>landing-leads CORS: allow any *.younex.de origin (PaaS system domains)</msg><path><editType>edit</editType><file>server/utils/landingLeadCors.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.env</affectedPath><affectedPath>.env-prod</affectedPath><commitId>9c7bd39385b13d2d16cad444805eb22f3736c4a7</commitId><timestamp>1786982419000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Set real LANDING_LEAD_TOKEN in .env and .env-prod (was empty placeholder)

Matches the value now deployed as NUXT_LANDING_LEAD_TOKEN on the
logyou-landing side (server/api/lead.post.ts), which forwards lead
submissions here server-to-server instead of the browser calling this
endpoint directly — removes the CORS-allowlist dependency for that path.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</comment><date>2026-08-17 18:00:19 +0200</date><id>9c7bd39385b13d2d16cad444805eb22f3736c4a7</id><msg>Set real LANDING_LEAD_TOKEN in .env and .env-prod (was empty placeholder)</msg><path><editType>edit</editType><file>.env</file></path><path><editType>edit</editType><file>.env-prod</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/webhooks/landing-leads.post.ts</affectedPath><commitId>21e1c2ba55dcd6338429fbd667624a0ed84e6cdf</commitId><timestamp>1786982544000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>push landing leads for new logyou page
</comment><date>2026-08-17 18:02:24 +0200</date><id>21e1c2ba55dcd6338429fbd667624a0ed84e6cdf</id><msg>push landing leads for new logyou page</msg><path><editType>edit</editType><file>server/api/webhooks/landing-leads.post.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>708</buildNumber><marked><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><branch><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><branch><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><branch><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#708</displayName><duration>59350</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #708</fullDisplayName><id>708</id><inProgress>false</inProgress><keepLog>false</keepLog><number>708</number><queueId>5543</queueId><result>SUCCESS</result><timestamp>1786924800273</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/708/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>707</buildNumber><marked><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><branch><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><branch><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><branch><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#707</displayName><duration>57465</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #707</fullDisplayName><id>707</id><inProgress>false</inProgress><keepLog>false</keepLog><number>707</number><queueId>5542</queueId><result>SUCCESS</result><timestamp>1786838400271</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/707/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>706</buildNumber><marked><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><branch><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><branch><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><branch><SHA1>5ae41a30734984355135aadf9f8c33d693b2d153</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#706</displayName><duration>57633</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #706</fullDisplayName><id>706</id><inProgress>false</inProgress><keepLog>false</keepLog><number>706</number><queueId>5541</queueId><result>SUCCESS</result><timestamp>1786752000273</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/706/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/shopify/products.get.ts</affectedPath><affectedPath>server/api/shopify-new/products.get.ts</affectedPath><affectedPath>server/api/plentyone/products.get.ts</affectedPath><affectedPath>app/pages/fulfillment/plentyone-stocks/index.vue</affectedPath><commitId>5ae41a30734984355135aadf9f8c33d693b2d153</commitId><timestamp>1786714665000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix plenty sync
</comment><date>2026-08-14 15:37:45 +0200</date><id>5ae41a30734984355135aadf9f8c33d693b2d153</id><msg>fix plenty sync</msg><path><editType>edit</editType><file>server/api/plentyone/products.get.ts</file></path><path><editType>edit</editType><file>app/pages/fulfillment/plentyone-stocks/index.vue</file></path><path><editType>edit</editType><file>server/api/shopify/products.get.ts</file></path><path><editType>edit</editType><file>server/api/shopify-new/products.get.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>705</buildNumber><marked><SHA1>b66a1ec6667a7e9876e49c182126b737f4d7dfb9</SHA1><branch><SHA1>b66a1ec6667a7e9876e49c182126b737f4d7dfb9</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>b66a1ec6667a7e9876e49c182126b737f4d7dfb9</SHA1><branch><SHA1>b66a1ec6667a7e9876e49c182126b737f4d7dfb9</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>b66a1ec6667a7e9876e49c182126b737f4d7dfb9</SHA1><branch><SHA1>b66a1ec6667a7e9876e49c182126b737f4d7dfb9</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#705</displayName><duration>63370</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #705</fullDisplayName><id>705</id><inProgress>false</inProgress><keepLog>false</keepLog><number>705</number><queueId>5539</queueId><result>SUCCESS</result><timestamp>1786665600272</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/705/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.env.backup-20260813</affectedPath><affectedPath>app/pages/requests/requests/index.vue</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>server/api/attachments/[table]/[id]/files.get.ts</affectedPath><affectedPath>.env</affectedPath><affectedPath>server/api/attachments/[table]/[id]/processed.put.ts</affectedPath><affectedPath>app/components/requests/RequestForm.vue</affectedPath><commitId>42a9a5603a092ea96cec9120f02799429675b25a</commitId><timestamp>1786606462000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show coloring of tickets completed
</comment><date>2026-08-13 09:34:22 +0200</date><id>42a9a5603a092ea96cec9120f02799429675b25a</id><msg>show coloring of tickets completed</msg><path><editType>edit</editType><file>.env</file></path><path><editType>add</editType><file>.env.backup-20260813</file></path><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path><path><editType>edit</editType><file>server/api/attachments/[table]/[id]/files.get.ts</file></path><path><editType>edit</editType><file>app/pages/requests/requests/index.vue</file></path><path><editType>add</editType><file>server/api/attachments/[table]/[id]/processed.put.ts</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/print/attachment-labels.post.ts</affectedPath><affectedPath>app/components/requests/RequestForm.vue</affectedPath><commitId>e938c37626994cd354a7169b296d979a9b0094be</commitId><timestamp>1786622324000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add label printer selection
</comment><date>2026-08-13 13:58:44 +0200</date><id>e938c37626994cd354a7169b296d979a9b0094be</id><msg>add label printer selection</msg><path><editType>edit</editType><file>server/api/print/attachment-labels.post.ts</file></path><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/commission.vue</affectedPath><affectedPath>server/api/commission/open-tickets.get.ts</affectedPath><commitId>d55793c11a1f58b043220779ddfce30b985d2fcc</commitId><timestamp>1786633956000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add ticket popup on commission if exists
</comment><date>2026-08-13 17:12:36 +0200</date><id>d55793c11a1f58b043220779ddfce30b985d2fcc</id><msg>Add ticket popup on commission if exists</msg><path><editType>add</editType><file>server/api/commission/open-tickets.get.ts</file></path><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/offers/quotePdf.ts</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><commitId>dbd8515d9a72c5a8f83fce8f639e435b8f80cc27</commitId><timestamp>1786634657000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add more configs for offer
</comment><date>2026-08-13 17:24:17 +0200</date><id>dbd8515d9a72c5a8f83fce8f639e435b8f80cc27</id><msg>add more configs for offer</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/utils/offers/quotePdf.ts</file></path><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/procurements/OrderDetailRecordLine.vue</affectedPath><commitId>f3b1dad761558573d465f51248c09c80b5920820</commitId><timestamp>1786636476000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add report for warenanmeldung
</comment><date>2026-08-13 17:54:36 +0200</date><id>f3b1dad761558573d465f51248c09c80b5920820</id><msg>add report for warenanmeldung</msg><path><editType>edit</editType><file>app/components/procurements/OrderDetailRecordLine.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/offers/quotePdf.ts</affectedPath><affectedPath>server/api/offers/contract/send.post.ts</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>app/pages/fulfillment/merchant-onboarding/index.vue</affectedPath><affectedPath>server/api/admin/merchant-onboarding/process.post.ts</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><affectedPath>server/api/offers/conditions/index.get.ts</affectedPath><affectedPath>app/composables/useOfferContract.ts</affectedPath><affectedPath>server/utils/offers/offerConditions.ts</affectedPath><affectedPath>app/components/offers/ContractModal.vue</affectedPath><affectedPath>app/pages/users/leads/[id]/edit.vue</affectedPath><affectedPath>server/api/offers/quote/send.post.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>b66a1ec6667a7e9876e49c182126b737f4d7dfb9</commitId><timestamp>1786655768000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>optimize quote system for leads
</comment><date>2026-08-13 23:16:08 +0200</date><id>b66a1ec6667a7e9876e49c182126b737f4d7dfb9</id><msg>optimize quote system for leads</msg><path><editType>edit</editType><file>server/utils/offers/quotePdf.ts</file></path><path><editType>edit</editType><file>app/pages/users/leads/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/admin/merchant-onboarding/process.post.ts</file></path><path><editType>add</editType><file>server/utils/offers/offerConditions.ts</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>add</editType><file>server/api/offers/conditions/index.get.ts</file></path><path><editType>edit</editType><file>server/api/offers/contract/send.post.ts</file></path><path><editType>edit</editType><file>server/api/offers/quote/send.post.ts</file></path><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path><path><editType>edit</editType><file>app/components/offers/ContractModal.vue</file></path><path><editType>edit</editType><file>app/composables/useOfferContract.ts</file></path><path><editType>edit</editType><file>app/pages/fulfillment/merchant-onboarding/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>704</buildNumber><marked><SHA1>0b4ddbbefcecd9e0e24af31c4bd86265bb5ade92</SHA1><branch><SHA1>0b4ddbbefcecd9e0e24af31c4bd86265bb5ade92</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>0b4ddbbefcecd9e0e24af31c4bd86265bb5ade92</SHA1><branch><SHA1>0b4ddbbefcecd9e0e24af31c4bd86265bb5ade92</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>0b4ddbbefcecd9e0e24af31c4bd86265bb5ade92</SHA1><branch><SHA1>0b4ddbbefcecd9e0e24af31c4bd86265bb5ade92</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#704</displayName><duration>65223</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #704</fullDisplayName><id>704</id><inProgress>false</inProgress><keepLog>false</keepLog><number>704</number><queueId>5533</queueId><result>SUCCESS</result><timestamp>1786579200272</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/704/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><affectedPath>app/pages/settings/order-sources/[id]/edit.vue</affectedPath><affectedPath>app/pages/settings/order-sources/create.vue</affectedPath><affectedPath>server/api/settings/order-sources/update.put.ts</affectedPath><affectedPath>server/api/settings/order-sources/store.post.ts</affectedPath><affectedPath>app/pages/settings/order-sources/[id]/view.vue</affectedPath><commitId>1c751ce9cb7d2d101ae800dc52a91dcbe24c7d5c</commitId><timestamp>1786533742000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add shopify mail notification control to ordersource
</comment><date>2026-08-12 13:22:22 +0200</date><id>1c751ce9cb7d2d101ae800dc52a91dcbe24c7d5c</id><msg>add shopify mail notification control to ordersource</msg><path><editType>edit</editType><file>app/pages/settings/order-sources/[id]/view.vue</file></path><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path><path><editType>edit</editType><file>server/api/settings/order-sources/update.put.ts</file></path><path><editType>edit</editType><file>app/pages/settings/order-sources/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/settings/order-sources/store.post.ts</file></path><path><editType>edit</editType><file>app/pages/settings/order-sources/create.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/print/relabel-labels.post.ts</affectedPath><affectedPath>app/components/sales/RelabelLabelPrintModal.vue</affectedPath><affectedPath>reference/recipes.md</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>4798f5c28a981260e4b812c2cd6550c2bda27709</commitId><timestamp>1786538466000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add blank on fba relable printing
</comment><date>2026-08-12 14:41:06 +0200</date><id>4798f5c28a981260e4b812c2cd6550c2bda27709</id><msg>add blank on fba relable printing</msg><path><editType>edit</editType><file>app/components/sales/RelabelLabelPrintModal.vue</file></path><path><editType>edit</editType><file>server/api/print/relabel-labels.post.ts</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/composables/useRelabelDocs.ts</affectedPath><commitId>da432e35e6b96d7a07979bf4c8173be9bce7e83c</commitId><timestamp>1786540520000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix relabel fba sequence to take it from shipment
</comment><date>2026-08-12 15:15:20 +0200</date><id>da432e35e6b96d7a07979bf4c8173be9bce7e83c</id><msg>fix relabel fba sequence to take it from shipment</msg><path><editType>edit</editType><file>app/composables/useRelabelDocs.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/orders/[id]/requests.get.ts</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><commitId>775e4157cb07378396fe2f972e3a8c6b76f380b3</commitId><timestamp>1786563263000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add tickets to order if exists
</comment><date>2026-08-12 21:34:23 +0200</date><id>775e4157cb07378396fe2f972e3a8c6b76f380b3</id><msg>add tickets to order if exists</msg><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>add</editType><file>server/api/orders/[id]/requests.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/FBA15M4V5Y67-1786525009322_Paket 22.pdf</affectedPath><affectedPath>app/utils/labelPdfTools.ts</affectedPath><affectedPath>app/components/requests/RequestForm.vue</affectedPath><commitId>cb52e42894ccf9cb3e3da6157dfb900c70da851d</commitId><timestamp>1786564430000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add printing of labels splitting fba
</comment><date>2026-08-12 21:53:50 +0200</date><id>cb52e42894ccf9cb3e3da6157dfb900c70da851d</id><msg>add printing of labels splitting fba</msg><path><editType>add</editType><file>reference/FBA15M4V5Y67-1786525009322_Paket 22.pdf</file></path><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path><path><editType>add</editType><file>app/utils/labelPdfTools.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/commission.vue</affectedPath><affectedPath>app/composables/useRelabelDocs.ts</affectedPath><affectedPath>app/components/integrations/CommissionPacklistConfirmModal.vue</affectedPath><commitId>aaf8bab76dec99bd73269bca8aa3888fadf8f66d</commitId><timestamp>1786565483000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add adaption to commission for fba relabel with custom enter of weight and paket number
</comment><date>2026-08-12 22:11:23 +0200</date><id>aaf8bab76dec99bd73269bca8aa3888fadf8f66d</id><msg>add adaption to commission for fba relabel with custom enter of weight and paket number</msg><path><editType>add</editType><file>app/components/integrations/CommissionPacklistConfirmModal.vue</file></path><path><editType>edit</editType><file>app/composables/useRelabelDocs.ts</file></path><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/commission.vue</affectedPath><affectedPath>app/composables/useRelabelDocs.ts</affectedPath><affectedPath>app/components/requests/RequestForm.vue</affectedPath><commitId>625b92737f681cff020e7fbe474f9e41d0313077</commitId><timestamp>1786569529000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix fba relable report
</comment><date>2026-08-12 23:18:49 +0200</date><id>625b92737f681cff020e7fbe474f9e41d0313077</id><msg>fix fba relable report</msg><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path><path><editType>edit</editType><file>app/composables/useRelabelDocs.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package-lock.json</affectedPath><affectedPath>package.json</affectedPath><commitId>42b0960ab58fa742fdbb595ede2c9ed52a9cf536</commitId><timestamp>1786570244000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix ffmpeg build issue
</comment><date>2026-08-12 23:30:44 +0200</date><id>42b0960ab58fa742fdbb595ede2c9ed52a9cf536</id><msg>fix ffmpeg build issue</msg><path><editType>edit</editType><file>package-lock.json</file></path><path><editType>edit</editType><file>package.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/commission.vue</affectedPath><commitId>ef100e774446f6531470dc9b4cdfb87ee7a574ce</commitId><timestamp>1786571370000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>make scrollable the commission window
</comment><date>2026-08-12 23:49:30 +0200</date><id>ef100e774446f6531470dc9b4cdfb87ee7a574ce</id><msg>make scrollable the commission window</msg><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/commission.vue</affectedPath><commitId>c2c44d2beacfe84b94401fb593aca9c252812649</commitId><timestamp>1786572332000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>make scrollable the commission window
</comment><date>2026-08-13 00:05:32 +0200</date><id>c2c44d2beacfe84b94401fb593aca9c252812649</id><msg>make scrollable the commission window</msg><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/JtlBomSyncModal.vue</affectedPath><affectedPath>app/components/settings/JtlSelectiveUpdateModal.vue</affectedPath><affectedPath>app/components/requests/RequestForm.vue</affectedPath><commitId>0b4ddbbefcecd9e0e24af31c4bd86265bb5ade92</commitId><timestamp>1786575764000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add jtl optinal bom sync
</comment><date>2026-08-13 01:02:44 +0200</date><id>0b4ddbbefcecd9e0e24af31c4bd86265bb5ade92</id><msg>add jtl optinal bom sync</msg><path><editType>edit</editType><file>app/components/settings/JtlBomSyncModal.vue</file></path><path><editType>edit</editType><file>app/components/settings/JtlSelectiveUpdateModal.vue</file></path><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>703</buildNumber><marked><SHA1>880fbdfba25763573a4aa2fdfdadb1cf98c2e269</SHA1><branch><SHA1>880fbdfba25763573a4aa2fdfdadb1cf98c2e269</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>880fbdfba25763573a4aa2fdfdadb1cf98c2e269</SHA1><branch><SHA1>880fbdfba25763573a4aa2fdfdadb1cf98c2e269</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>880fbdfba25763573a4aa2fdfdadb1cf98c2e269</SHA1><branch><SHA1>880fbdfba25763573a4aa2fdfdadb1cf98c2e269</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#703</displayName><duration>66069</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #703</fullDisplayName><id>703</id><inProgress>false</inProgress><keepLog>false</keepLog><number>703</number><queueId>5523</queueId><result>SUCCESS</result><timestamp>1786492800140</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/703/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/bank-reconciliation/[id]/document-action.post.ts</affectedPath><affectedPath>app/components/accounting/BankLineMatchModal.vue</affectedPath><affectedPath>server/utils/bankReconciliation.ts</affectedPath><affectedPath>server/api/accounting/bank-reconciliation/[id]/suggestions.get.ts</affectedPath><affectedPath>server/api/accounting/bank-reconciliation/[id]/lines.get.ts</affectedPath><affectedPath>server/api/accounting/bank-reconciliation/lines/[lineId]/match-invoice.post.ts</affectedPath><affectedPath>server/api/accounting/bank-reconciliation/unreconciled-payments.get.ts</affectedPath><affectedPath>app/pages/accounting/bank-reconciliation/index.vue</affectedPath><affectedPath>server/api/accounting/bank-reconciliation/lines/[lineId]/index.put.ts</affectedPath><affectedPath>app/composables/menu/admin/accounting.ts</affectedPath><affectedPath>server/api/accounting/bank-reconciliation/statements.get.ts</affectedPath><affectedPath>app/pages/accounting/bank-transactions/index.vue</affectedPath><commitId>d940ac2f31e7c224029cb9786d89651a80a07f1b</commitId><timestamp>1786445911000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add import for ebic
</comment><date>2026-08-11 12:58:31 +0200</date><id>d940ac2f31e7c224029cb9786d89651a80a07f1b</id><msg>add import for ebic</msg><path><editType>add</editType><file>app/components/accounting/BankLineMatchModal.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/bank-transactions/index.vue</file></path><path><editType>edit</editType><file>app/composables/menu/admin/accounting.ts</file></path><path><editType>add</editType><file>app/pages/accounting/bank-reconciliation/index.vue</file></path><path><editType>add</editType><file>server/api/accounting/bank-reconciliation/unreconciled-payments.get.ts</file></path><path><editType>add</editType><file>server/api/accounting/bank-reconciliation/[id]/suggestions.get.ts</file></path><path><editType>add</editType><file>server/utils/bankReconciliation.ts</file></path><path><editType>add</editType><file>server/api/accounting/bank-reconciliation/lines/[lineId]/match-invoice.post.ts</file></path><path><editType>add</editType><file>server/api/accounting/bank-reconciliation/lines/[lineId]/index.put.ts</file></path><path><editType>add</editType><file>server/api/accounting/bank-reconciliation/[id]/document-action.post.ts</file></path><path><editType>add</editType><file>server/api/accounting/bank-reconciliation/statements.get.ts</file></path><path><editType>add</editType><file>server/api/accounting/bank-reconciliation/[id]/lines.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package.json</affectedPath><affectedPath>server/api/attachments/[table]/[id]/download-all.get.ts</affectedPath><affectedPath>app/components/requests/RequestForm.vue</affectedPath><affectedPath>package-lock.json</affectedPath><commitId>e48c78163015e941243402566ff07b3e6053ddf2</commitId><timestamp>1786453182000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add amazon fba
</comment><date>2026-08-11 14:59:42 +0200</date><id>e48c78163015e941243402566ff07b3e6053ddf2</id><msg>add amazon fba</msg><path><editType>add</editType><file>server/api/attachments/[table]/[id]/download-all.get.ts</file></path><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path><path><editType>edit</editType><file>package.json</file></path><path><editType>edit</editType><file>package-lock.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/requests/requests/[id]/edit.vue</affectedPath><affectedPath>app/pages/bi/locator-usage.vue</affectedPath><affectedPath>app/composables/useRequestReportPdf.ts</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><commitId>880fbdfba25763573a4aa2fdfdadb1cf98c2e269</commitId><timestamp>1786455974000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add reports
</comment><date>2026-08-11 15:46:14 +0200</date><id>880fbdfba25763573a4aa2fdfdadb1cf98c2e269</id><msg>add reports</msg><path><editType>edit</editType><file>app/pages/requests/requests/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/pages/bi/locator-usage.vue</file></path><path><editType>add</editType><file>app/composables/useRequestReportPdf.ts</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>702</buildNumber><marked><SHA1>68d5aaa7a06b9cd2626e30b3348881bb9f784e03</SHA1><branch><SHA1>68d5aaa7a06b9cd2626e30b3348881bb9f784e03</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>68d5aaa7a06b9cd2626e30b3348881bb9f784e03</SHA1><branch><SHA1>68d5aaa7a06b9cd2626e30b3348881bb9f784e03</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>68d5aaa7a06b9cd2626e30b3348881bb9f784e03</SHA1><branch><SHA1>68d5aaa7a06b9cd2626e30b3348881bb9f784e03</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#702</displayName><duration>63953</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #702</fullDisplayName><id>702</id><inProgress>false</inProgress><keepLog>false</keepLog><number>702</number><queueId>5519</queueId><result>SUCCESS</result><timestamp>1786406400140</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/702/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/receive.vue</affectedPath><affectedPath>app/pages/settings/bank-connections/[id]/edit.vue</affectedPath><affectedPath>server/api/mobile/po-open.get.ts</affectedPath><commitId>94da1c3a6e333619dcb30dfc7aef26d188c8205d</commitId><timestamp>1786356900000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Fix Receive PO View
</comment><date>2026-08-10 12:15:00 +0200</date><id>94da1c3a6e333619dcb30dfc7aef26d188c8205d</id><msg>Fix Receive PO View</msg><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path><path><editType>edit</editType><file>app/pages/settings/bank-connections/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/mobile/po-open.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>server/api/shopify/locations.get.ts</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>server/api/shopify/products.get.ts</affectedPath><affectedPath>server/api/shopify-new/locations.get.ts</affectedPath><affectedPath>server/api/settings/order-sources/[id]/shopify-location.put.ts</affectedPath><affectedPath>server/api/shopify/stocks/sync.post.ts</affectedPath><affectedPath>app/pages/fulfillment/shopify-stocks/index.vue</affectedPath><affectedPath>android/update-files/history.json</affectedPath><affectedPath>reference/recipes.md</affectedPath><affectedPath>server/api/shopify-new/stocks/sync.post.ts</affectedPath><affectedPath>server/api/shopify-new/products.get.ts</affectedPath><commitId>9fbf14a6944e89f718bd8a505f22b0d62c802020</commitId><timestamp>1786358543000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Fix shopify sync
</comment><date>2026-08-10 12:42:23 +0200</date><id>9fbf14a6944e89f718bd8a505f22b0d62c802020</id><msg>Fix shopify sync</msg><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>android/update-files/history.json</file></path><path><editType>edit</editType><file>app/pages/fulfillment/shopify-stocks/index.vue</file></path><path><editType>add</editType><file>server/api/settings/order-sources/[id]/shopify-location.put.ts</file></path><path><editType>edit</editType><file>server/api/shopify/products.get.ts</file></path><path><editType>add</editType><file>server/api/shopify-new/locations.get.ts</file></path><path><editType>add</editType><file>server/api/shopify/locations.get.ts</file></path><path><editType>edit</editType><file>server/api/shopify-new/products.get.ts</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path><path><editType>edit</editType><file>server/api/shopify-new/stocks/sync.post.ts</file></path><path><editType>edit</editType><file>server/api/shopify/stocks/sync.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/manufacturings/BomProductionWorkflow.vue</affectedPath><affectedPath>app/components/AgGrid.vue</affectedPath><affectedPath>app/pages/manufacturings/product-bom/index.vue</affectedPath><affectedPath>app/pages/manufacturings/bom-productions/index.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>eec4b06ddf7d601952715d89f5bc27121f3ccbac</commitId><timestamp>1786363602000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>tune bom production
</comment><date>2026-08-10 14:06:42 +0200</date><id>eec4b06ddf7d601952715d89f5bc27121f3ccbac</id><msg>tune bom production</msg><path><editType>edit</editType><file>app/components/AgGrid.vue</file></path><path><editType>edit</editType><file>app/pages/manufacturings/product-bom/index.vue</file></path><path><editType>add</editType><file>app/components/manufacturings/BomProductionWorkflow.vue</file></path><path><editType>edit</editType><file>app/pages/manufacturings/bom-productions/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/orders/index.vue</affectedPath><affectedPath>app/components/AgGridServer.vue</affectedPath><commitId>c0a3542dd31b44e532d36816a9f196138ca9c7ff</commitId><timestamp>1786365189000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Sales Order Grid keep state and open orders in new tab
</comment><date>2026-08-10 14:33:09 +0200</date><id>c0a3542dd31b44e532d36816a9f196138ca9c7ff</id><msg>Sales Order Grid keep state and open orders in new tab</msg><path><editType>edit</editType><file>app/pages/sales/orders/index.vue</file></path><path><editType>edit</editType><file>app/components/AgGridServer.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/orders/index.vue</affectedPath><affectedPath>app/components/AgGridServer.vue</affectedPath><commitId>771a801439b5c8a7bb2a3ad78ce6b798638763ae</commitId><timestamp>1786365454000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix state of sales order grid
</comment><date>2026-08-10 14:37:34 +0200</date><id>771a801439b5c8a7bb2a3ad78ce6b798638763ae</id><msg>fix state of sales order grid</msg><path><editType>edit</editType><file>app/components/AgGridServer.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/print-labels-desktop.vue</affectedPath><affectedPath>app/pages/integrations/picklist-desktop.vue</affectedPath><affectedPath>app/pages/integrations/product-desktop.vue</affectedPath><affectedPath>app/pages/integrations/inventory-desktop.vue</affectedPath><affectedPath>app/app.vue</affectedPath><affectedPath>app/pages/integrations/fix-locator-owner-desktop.vue</affectedPath><affectedPath>app/pages/integrations/tasks-desktop.vue</affectedPath><affectedPath>app/pages/integrations/locator-articles-desktop.vue</affectedPath><affectedPath>app/pages/integrations/index.vue</affectedPath><affectedPath>app/pages/integrations/movement-desktop.vue</affectedPath><affectedPath>app/composables/useDesktopScanner.ts</affectedPath><affectedPath>app/pages/integrations/receive-desktop.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>f2f18062d6be35dfa5f6d47209dc2a6822fbcc27</commitId><timestamp>1786368470000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Clone and adapt all mobile pages as desktop integration apps
</comment><date>2026-08-10 15:27:50 +0200</date><id>f2f18062d6be35dfa5f6d47209dc2a6822fbcc27</id><msg>Clone and adapt all mobile pages as desktop integration apps</msg><path><editType>add</editType><file>app/pages/integrations/locator-articles-desktop.vue</file></path><path><editType>add</editType><file>app/pages/integrations/picklist-desktop.vue</file></path><path><editType>add</editType><file>app/pages/integrations/print-labels-desktop.vue</file></path><path><editType>add</editType><file>app/pages/integrations/fix-locator-owner-desktop.vue</file></path><path><editType>add</editType><file>app/pages/integrations/inventory-desktop.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>app/pages/integrations/movement-desktop.vue</file></path><path><editType>edit</editType><file>app/pages/integrations/index.vue</file></path><path><editType>add</editType><file>app/composables/useDesktopScanner.ts</file></path><path><editType>add</editType><file>app/pages/integrations/tasks-desktop.vue</file></path><path><editType>add</editType><file>app/pages/integrations/product-desktop.vue</file></path><path><editType>add</editType><file>app/pages/integrations/receive-desktop.vue</file></path><path><editType>edit</editType><file>app/app.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/requests/requests/update.put.ts</affectedPath><affectedPath>app/pages/manufacturings/productions/create.vue</affectedPath><affectedPath>app/components/manufacturings/ProductionForm.vue</affectedPath><affectedPath>server/api/requests/requests/store.post.ts</affectedPath><affectedPath>server/api/manufacturings/productions/store.post.ts</affectedPath><affectedPath>app/pages/manufacturings/bom-productions/index.vue</affectedPath><affectedPath>server/api/manufacturings/bom-productions/store.post.ts</affectedPath><affectedPath>app/pages/requests/requests/[id]/edit.vue</affectedPath><affectedPath>app/components/requests/RequestForm.vue</affectedPath><affectedPath>server/utils/productionTicket.ts</affectedPath><commitId>2f1422619268399368deeab0ac2a1467b4fefff9</commitId><timestamp>1786369192000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add Production Ticket Integration
</comment><date>2026-08-10 15:39:52 +0200</date><id>2f1422619268399368deeab0ac2a1467b4fefff9</id><msg>Add Production Ticket Integration</msg><path><editType>add</editType><file>server/utils/productionTicket.ts</file></path><path><editType>edit</editType><file>server/api/manufacturings/productions/store.post.ts</file></path><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path><path><editType>edit</editType><file>app/pages/manufacturings/bom-productions/index.vue</file></path><path><editType>edit</editType><file>server/api/requests/requests/update.put.ts</file></path><path><editType>edit</editType><file>app/components/manufacturings/ProductionForm.vue</file></path><path><editType>edit</editType><file>app/pages/requests/requests/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/requests/requests/store.post.ts</file></path><path><editType>edit</editType><file>app/pages/manufacturings/productions/create.vue</file></path><path><editType>edit</editType><file>server/api/manufacturings/bom-productions/store.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/print-labels-desktop.vue</affectedPath><affectedPath>app/pages/integrations/product-desktop.vue</affectedPath><affectedPath>app/pages/integrations/picklist-desktop.vue</affectedPath><affectedPath>app/components/AgGrid/SalesOrder/AgCustomLink.vue</affectedPath><affectedPath>app/pages/integrations/inventory-desktop.vue</affectedPath><affectedPath>app/pages/procurements/my-receipts/[id].vue</affectedPath><affectedPath>app/pages/integrations/fix-locator-owner-desktop.vue</affectedPath><affectedPath>app/pages/integrations/tasks-desktop.vue</affectedPath><affectedPath>app/pages/integrations/index.vue</affectedPath><affectedPath>app/pages/integrations/locator-articles-desktop.vue</affectedPath><affectedPath>app/pages/integrations/movement-desktop.vue</affectedPath><affectedPath>app/pages/integrations/receive-desktop.vue</affectedPath><affectedPath>server/api/mobile/product-search.post.ts</affectedPath><affectedPath>reference/recipes.md</affectedPath><commitId>68d5aaa7a06b9cd2626e30b3348881bb9f784e03</commitId><timestamp>1786374223000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>optimize desktop integration pages
</comment><date>2026-08-10 17:03:43 +0200</date><id>68d5aaa7a06b9cd2626e30b3348881bb9f784e03</id><msg>optimize desktop integration pages</msg><path><editType>edit</editType><file>app/pages/procurements/my-receipts/[id].vue</file></path><path><editType>edit</editType><file>server/api/mobile/product-search.post.ts</file></path><path><editType>edit</editType><file>app/pages/integrations/inventory-desktop.vue</file></path><path><editType>edit</editType><file>app/pages/integrations/print-labels-desktop.vue</file></path><path><editType>edit</editType><file>app/pages/integrations/fix-locator-owner-desktop.vue</file></path><path><editType>edit</editType><file>app/pages/integrations/index.vue</file></path><path><editType>edit</editType><file>app/pages/integrations/product-desktop.vue</file></path><path><editType>edit</editType><file>app/pages/integrations/movement-desktop.vue</file></path><path><editType>edit</editType><file>app/components/AgGrid/SalesOrder/AgCustomLink.vue</file></path><path><editType>edit</editType><file>app/pages/integrations/picklist-desktop.vue</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path><path><editType>edit</editType><file>app/pages/integrations/locator-articles-desktop.vue</file></path><path><editType>edit</editType><file>app/pages/integrations/receive-desktop.vue</file></path><path><editType>edit</editType><file>app/pages/integrations/tasks-desktop.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>701</buildNumber><marked><SHA1>c94c506f12f555ecc6fbccf84213013f4f0b11e0</SHA1><branch><SHA1>c94c506f12f555ecc6fbccf84213013f4f0b11e0</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>c94c506f12f555ecc6fbccf84213013f4f0b11e0</SHA1><branch><SHA1>c94c506f12f555ecc6fbccf84213013f4f0b11e0</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>c94c506f12f555ecc6fbccf84213013f4f0b11e0</SHA1><branch><SHA1>c94c506f12f555ecc6fbccf84213013f4f0b11e0</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#701</displayName><duration>69252</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #701</fullDisplayName><id>701</id><inProgress>false</inProgress><keepLog>false</keepLog><number>701</number><queueId>5516</queueId><result>SUCCESS</result><timestamp>1786320000143</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/701/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/settings/bank-connections/[id]/edit.vue</affectedPath><affectedPath>.gitignore</affectedPath><affectedPath>app/components/settings/BankConnectionForm.vue</affectedPath><affectedPath>app/pages/settings/bank-connections/create.vue</affectedPath><affectedPath>app/composables/menu/admin/settings.ts</affectedPath><affectedPath>app/components/settings/BankConnectionAction.vue</affectedPath><affectedPath>server/api/settings/bank-connections/update.put.ts</affectedPath><affectedPath>app/pages/accounting/bank-transactions/index.vue</affectedPath><affectedPath>.env-dev</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>server/api/accounting/bank-transactions/statements.get.ts</affectedPath><affectedPath>server/utils/laravelHelper.ts</affectedPath><affectedPath>server/api/settings/bank-connections/[id]/action.post.ts</affectedPath><affectedPath>server/api/accounting/bank-transactions/preview-import.post.ts</affectedPath><affectedPath>server/api/settings/bank-connections/store.post.ts</affectedPath><affectedPath>.env</affectedPath><affectedPath>server/api/accounting/bank-transactions/import.post.ts</affectedPath><affectedPath>server/api/settings/bank-connections/[id]/index.get.ts</affectedPath><affectedPath>server/api/settings/bank-connections/[id]/ini-letter.get.ts</affectedPath><affectedPath>app/pages/settings/bank-connections/index.vue</affectedPath><affectedPath>server/api/settings/bank-connections/index.get.ts</affectedPath><affectedPath>app/composables/menu/admin/accounting.ts</affectedPath><affectedPath>server/api/accounting/bank-transactions/index.get.ts</affectedPath><affectedPath>.env-prod</affectedPath><affectedPath>server/api/settings/bank-connections/destroy.delete.ts</affectedPath><commitId>c94c506f12f555ecc6fbccf84213013f4f0b11e0</commitId><timestamp>1786281398000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add ebic bank integration
</comment><date>2026-08-09 15:16:38 +0200</date><id>c94c506f12f555ecc6fbccf84213013f4f0b11e0</id><msg>add ebic bank integration</msg><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>add</editType><file>server/api/settings/bank-connections/[id]/index.get.ts</file></path><path><editType>add</editType><file>server/api/settings/bank-connections/index.get.ts</file></path><path><editType>add</editType><file>server/api/accounting/bank-transactions/preview-import.post.ts</file></path><path><editType>add</editType><file>app/pages/settings/bank-connections/[id]/edit.vue</file></path><path><editType>add</editType><file>server/api/accounting/bank-transactions/import.post.ts</file></path><path><editType>add</editType><file>server/api/settings/bank-connections/update.put.ts</file></path><path><editType>edit</editType><file>.gitignore</file></path><path><editType>add</editType><file>app/pages/accounting/bank-transactions/index.vue</file></path><path><editType>edit</editType><file>app/composables/menu/admin/accounting.ts</file></path><path><editType>add</editType><file>server/api/settings/bank-connections/[id]/action.post.ts</file></path><path><editType>edit</editType><file>.env-dev</file></path><path><editType>add</editType><file>app/components/settings/BankConnectionForm.vue</file></path><path><editType>add</editType><file>app/pages/settings/bank-connections/create.vue</file></path><path><editType>edit</editType><file>server/utils/laravelHelper.ts</file></path><path><editType>add</editType><file>app/pages/settings/bank-connections/index.vue</file></path><path><editType>add</editType><file>server/api/settings/bank-connections/store.post.ts</file></path><path><editType>add</editType><file>server/api/accounting/bank-transactions/index.get.ts</file></path><path><editType>edit</editType><file>app/composables/menu/admin/settings.ts</file></path><path><editType>edit</editType><file>.env-prod</file></path><path><editType>add</editType><file>app/components/settings/BankConnectionAction.vue</file></path><path><editType>add</editType><file>server/api/settings/bank-connections/destroy.delete.ts</file></path><path><editType>add</editType><file>server/api/accounting/bank-transactions/statements.get.ts</file></path><path><editType>add</editType><file>server/api/settings/bank-connections/[id]/ini-letter.get.ts</file></path><path><editType>edit</editType><file>.env</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>700</buildNumber><marked><SHA1>e585f3fe52424c83d0e2bfe3d98d2aae46fb6c90</SHA1><branch><SHA1>e585f3fe52424c83d0e2bfe3d98d2aae46fb6c90</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>e585f3fe52424c83d0e2bfe3d98d2aae46fb6c90</SHA1><branch><SHA1>e585f3fe52424c83d0e2bfe3d98d2aae46fb6c90</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>e585f3fe52424c83d0e2bfe3d98d2aae46fb6c90</SHA1><branch><SHA1>e585f3fe52424c83d0e2bfe3d98d2aae46fb6c90</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#700</displayName><duration>64784</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #700</fullDisplayName><id>700</id><inProgress>false</inProgress><keepLog>false</keepLog><number>700</number><queueId>5514</queueId><result>SUCCESS</result><timestamp>1786233600141</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/700/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>699</buildNumber><marked><SHA1>e585f3fe52424c83d0e2bfe3d98d2aae46fb6c90</SHA1><branch><SHA1>e585f3fe52424c83d0e2bfe3d98d2aae46fb6c90</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>e585f3fe52424c83d0e2bfe3d98d2aae46fb6c90</SHA1><branch><SHA1>e585f3fe52424c83d0e2bfe3d98d2aae46fb6c90</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>e585f3fe52424c83d0e2bfe3d98d2aae46fb6c90</SHA1><branch><SHA1>e585f3fe52424c83d0e2bfe3d98d2aae46fb6c90</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#699</displayName><duration>63063</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #699</fullDisplayName><id>699</id><inProgress>false</inProgress><keepLog>false</keepLog><number>699</number><queueId>5512</queueId><result>SUCCESS</result><timestamp>1786147200141</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/699/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/materials/PriceListVersionAction.vue</affectedPath><affectedPath>app/pages/materials/price-list-versions/[id]/edit.vue</affectedPath><affectedPath>server/api/materials/price-list-versions/[id]/generate.post.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>e585f3fe52424c83d0e2bfe3d98d2aae46fb6c90</commitId><timestamp>1786110258000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add priceliste generation button
</comment><date>2026-08-07 15:44:18 +0200</date><id>e585f3fe52424c83d0e2bfe3d98d2aae46fb6c90</id><msg>add priceliste generation button</msg><path><editType>edit</editType><file>app/components/materials/PriceListVersionAction.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/materials/price-list-versions/[id]/edit.vue</file></path><path><editType>add</editType><file>server/api/materials/price-list-versions/[id]/generate.post.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>698</buildNumber><marked><SHA1>ea5a47f62e23489f8bcd705df4688dcf7a1b3e36</SHA1><branch><SHA1>ea5a47f62e23489f8bcd705df4688dcf7a1b3e36</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>ea5a47f62e23489f8bcd705df4688dcf7a1b3e36</SHA1><branch><SHA1>ea5a47f62e23489f8bcd705df4688dcf7a1b3e36</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>ea5a47f62e23489f8bcd705df4688dcf7a1b3e36</SHA1><branch><SHA1>ea5a47f62e23489f8bcd705df4688dcf7a1b3e36</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#698</displayName><duration>64954</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #698</fullDisplayName><id>698</id><inProgress>false</inProgress><keepLog>false</keepLog><number>698</number><queueId>5510</queueId><result>SUCCESS</result><timestamp>1786060800140</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/698/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/OrderForm.vue</affectedPath><commitId>e971042c3add74d0fd0de28fe2f84b4f5843facb</commitId><timestamp>1786004086000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add edit option to sales order inline as long it is not commissioned
</comment><date>2026-08-06 10:14:46 +0200</date><id>e971042c3add74d0fd0de28fe2f84b4f5843facb</id><msg>Add edit option to sales order inline as long it is not commissioned</msg><path><editType>edit</editType><file>app/components/sales/OrderForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/rma/so.get.ts</affectedPath><affectedPath>app/pages/sales/customer-rma/index.vue</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><commitId>48a34697b46c30955581a34dedc673b7f795966b</commitId><timestamp>1786004778000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>change top menu links
</comment><date>2026-08-06 10:26:18 +0200</date><id>48a34697b46c30955581a34dedc673b7f795966b</id><msg>change top menu links</msg><path><editType>edit</editType><file>server/api/rma/so.get.ts</file></path><path><editType>edit</editType><file>app/pages/sales/customer-rma/index.vue</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/AgGrid.vue</affectedPath><affectedPath>app/pages/sales/invoices/index.vue</affectedPath><affectedPath>app/pages/requests/my-tickets/index.vue</affectedPath><affectedPath>app/pages/index.vue</affectedPath><affectedPath>app/pages/procurements/my-orders/[id].vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>8350ec78e44cd9e87a339ada0a5fdf58f2e6ca6e</commitId><timestamp>1786007339000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>tune ticketsystem
</comment><date>2026-08-06 11:08:59 +0200</date><id>8350ec78e44cd9e87a339ada0a5fdf58f2e6ca6e</id><msg>tune ticketsystem</msg><path><editType>edit</editType><file>app/components/AgGrid.vue</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/procurements/my-orders/[id].vue</file></path><path><editType>edit</editType><file>app/pages/sales/invoices/index.vue</file></path><path><editType>edit</editType><file>app/pages/requests/my-tickets/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/OrderForm.vue</affectedPath><affectedPath>server/api/settings/locations/ag-grid.put.ts</affectedPath><affectedPath>app/components/sales/RegionPickerModal.vue</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>server/api/settings/partner-locations/ag-grid.put.ts</affectedPath><commitId>3447cb2c08c2d9838054a0d15be4bd28f42a8fb6</commitId><timestamp>1786008832000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add state and phone to bpartner and resturcture order page
</comment><date>2026-08-06 11:33:52 +0200</date><id>3447cb2c08c2d9838054a0d15be4bd28f42a8fb6</id><msg>add state and phone to bpartner and resturcture order page</msg><path><editType>edit</editType><file>server/api/settings/partner-locations/ag-grid.put.ts</file></path><path><editType>add</editType><file>app/components/sales/RegionPickerModal.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/components/sales/OrderForm.vue</file></path><path><editType>edit</editType><file>server/api/settings/locations/ag-grid.put.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/OrderForm.vue</affectedPath><affectedPath>app/pages/requests/my-tickets/index.vue</affectedPath><affectedPath>app/pages/index.vue</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>app/pages/sales/orders/create.vue</affectedPath><commitId>bdb329a1e7454a1902f117f32780b77339703b27</commitId><timestamp>1786010833000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>change ticketpage
</comment><date>2026-08-06 12:07:13 +0200</date><id>bdb329a1e7454a1902f117f32780b77339703b27</id><msg>change ticketpage</msg><path><editType>edit</editType><file>app/pages/index.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/create.vue</file></path><path><editType>edit</editType><file>app/pages/requests/my-tickets/index.vue</file></path><path><editType>edit</editType><file>app/components/sales/OrderForm.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/index.vue</affectedPath><affectedPath>server/api/orders/po-upcoming.get.ts</affectedPath><affectedPath>app/components/dashboard/NonWorkingDaysCalendar.vue</affectedPath><commitId>20b4e4934b7d463d3efb79033c73dcc3d6db3ca5</commitId><timestamp>1786023557000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>tune tickets
</comment><date>2026-08-06 15:39:17 +0200</date><id>20b4e4934b7d463d3efb79033c73dcc3d6db3ca5</id><msg>tune tickets</msg><path><editType>edit</editType><file>app/components/dashboard/NonWorkingDaysCalendar.vue</file></path><path><editType>edit</editType><file>server/api/orders/po-upcoming.get.ts</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/index.vue</affectedPath><affectedPath>app/components/dashboard/TicketQuickModal.vue</affectedPath><affectedPath>app/composables/states.ts</affectedPath><commitId>b0142fcbe0888d34dee4bdd495e72c3830699a11</commitId><timestamp>1786024304000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>include PO into dashboard calendar
</comment><date>2026-08-06 15:51:44 +0200</date><id>b0142fcbe0888d34dee4bdd495e72c3830699a11</id><msg>include PO into dashboard calendar</msg><path><editType>edit</editType><file>app/pages/index.vue</file></path><path><editType>edit</editType><file>app/composables/states.ts</file></path><path><editType>add</editType><file>app/components/dashboard/TicketQuickModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/procurements/orders/[id]/edit.vue</affectedPath><affectedPath>server/api/orders/[id]/promised-date.put.ts</affectedPath><affectedPath>app/components/procurements/OrderForm.vue</affectedPath><commitId>5335fb384cb5050cc3de733581f176ab0580d2b5</commitId><timestamp>1786036738000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix dashsboard
</comment><date>2026-08-06 19:18:58 +0200</date><id>5335fb384cb5050cc3de733581f176ab0580d2b5</id><msg>fix dashsboard</msg><path><editType>add</editType><file>server/api/orders/[id]/promised-date.put.ts</file></path><path><editType>edit</editType><file>app/components/procurements/OrderForm.vue</file></path><path><editType>edit</editType><file>app/pages/procurements/orders/[id]/edit.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/manufacturings/bom-productions/open-lines.get.ts</affectedPath><affectedPath>app/pages/manufacturings/bom-productions/index.vue</affectedPath><commitId>eb6ce471bda22c230df9109d45ff14fe5aac99f9</commitId><timestamp>1786041560000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add bom product printing
</comment><date>2026-08-06 20:39:20 +0200</date><id>eb6ce471bda22c230df9109d45ff14fe5aac99f9</id><msg>add bom product printing</msg><path><editType>edit</editType><file>server/api/manufacturings/bom-productions/open-lines.get.ts</file></path><path><editType>edit</editType><file>app/pages/manufacturings/bom-productions/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/manufacturings/bom-productions/index.get.ts</affectedPath><affectedPath>server/api/manufacturings/bom-productions/open-lines.get.ts</affectedPath><affectedPath>app/pages/manufacturings/bom-productions/index.vue</affectedPath><affectedPath>app/pages/index.vue</affectedPath><commitId>7e8ffaf765d78c1cc8eeed15c5e4ca5a64a15d76</commitId><timestamp>1786042248000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>enhance dashboard order
</comment><date>2026-08-06 20:50:48 +0200</date><id>7e8ffaf765d78c1cc8eeed15c5e4ca5a64a15d76</id><msg>enhance dashboard order</msg><path><editType>edit</editType><file>server/api/manufacturings/bom-productions/open-lines.get.ts</file></path><path><editType>edit</editType><file>app/pages/manufacturings/bom-productions/index.vue</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path><path><editType>edit</editType><file>server/api/manufacturings/bom-productions/index.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/manufacturings/bom-productions/index.vue</affectedPath><commitId>ea5a47f62e23489f8bcd705df4688dcf7a1b3e36</commitId><timestamp>1786043451000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add fba label printing
</comment><date>2026-08-06 21:10:51 +0200</date><id>ea5a47f62e23489f8bcd705df4688dcf7a1b3e36</id><msg>add fba label printing</msg><path><editType>edit</editType><file>app/pages/manufacturings/bom-productions/index.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>697</buildNumber><marked><SHA1>f8bf5c6c9814dda28d855cfb8a740b204e0c55b4</SHA1><branch><SHA1>f8bf5c6c9814dda28d855cfb8a740b204e0c55b4</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>f8bf5c6c9814dda28d855cfb8a740b204e0c55b4</SHA1><branch><SHA1>f8bf5c6c9814dda28d855cfb8a740b204e0c55b4</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>f8bf5c6c9814dda28d855cfb8a740b204e0c55b4</SHA1><branch><SHA1>f8bf5c6c9814dda28d855cfb8a740b204e0c55b4</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#697</displayName><duration>70915</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #697</fullDisplayName><id>697</id><inProgress>false</inProgress><keepLog>false</keepLog><number>697</number><queueId>5501</queueId><result>SUCCESS</result><timestamp>1785974400146</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/697/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/OrderPositionsTable.vue</affectedPath><commitId>a7868f7a772b5ed1f5391ee586d12fd9082fbe09</commitId><timestamp>1785915170000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>change sales order lines display
</comment><date>2026-08-05 09:32:50 +0200</date><id>a7868f7a772b5ed1f5391ee586d12fd9082fbe09</id><msg>change sales order lines display</msg><path><editType>edit</editType><file>app/components/sales/OrderPositionsTable.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/partners/partnerReportPdf.ts</affectedPath><affectedPath>app/components/partners/PartnerReportModal.vue</affectedPath><affectedPath>app/pages/partners/partners/[id]/edit.vue</affectedPath><affectedPath>server/api/partners/partners/[id]/report.get.ts</affectedPath><commitId>f8bf5c6c9814dda28d855cfb8a740b204e0c55b4</commitId><timestamp>1785922112000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>bpartner report
</comment><date>2026-08-05 11:28:32 +0200</date><id>f8bf5c6c9814dda28d855cfb8a740b204e0c55b4</id><msg>bpartner report</msg><path><editType>add</editType><file>server/utils/partners/partnerReportPdf.ts</file></path><path><editType>add</editType><file>server/api/partners/partners/[id]/report.get.ts</file></path><path><editType>edit</editType><file>app/pages/partners/partners/[id]/edit.vue</file></path><path><editType>add</editType><file>app/components/partners/PartnerReportModal.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>696</buildNumber><marked><SHA1>351188a0f13d13882499b2e2fdb72ee67ae936c5</SHA1><branch><SHA1>351188a0f13d13882499b2e2fdb72ee67ae936c5</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>351188a0f13d13882499b2e2fdb72ee67ae936c5</SHA1><branch><SHA1>351188a0f13d13882499b2e2fdb72ee67ae936c5</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>351188a0f13d13882499b2e2fdb72ee67ae936c5</SHA1><branch><SHA1>351188a0f13d13882499b2e2fdb72ee67ae936c5</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#696</displayName><duration>67087</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #696</fullDisplayName><id>696</id><inProgress>false</inProgress><keepLog>false</keepLog><number>696</number><queueId>5498</queueId><result>SUCCESS</result><timestamp>1785888000140</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/696/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/mobile/product-lookup.post.ts</affectedPath><commitId>028318104b7633ccee0a47daa376cfca9354c347</commitId><timestamp>1785839075000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix
</comment><date>2026-08-04 12:24:35 +0200</date><id>028318104b7633ccee0a47daa376cfca9354c347</id><msg>fix</msg><path><editType>edit</editType><file>server/api/mobile/product-lookup.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><affectedPath>.gitignore</affectedPath><affectedPath>reference/template-cleanup/03-neutralize-env.sh</affectedPath><affectedPath>android/.gitignore</affectedPath><affectedPath>reference/template-cleanup/clone-logship-instance.sh</affectedPath><affectedPath>android/update-files/history.json</affectedPath><commitId>351188a0f13d13882499b2e2fdb72ee67ae936c5</commitId><timestamp>1785839973000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>remove blut24 traces
</comment><date>2026-08-04 12:39:33 +0200</date><id>351188a0f13d13882499b2e2fdb72ee67ae936c5</id><msg>remove blut24 traces</msg><path><editType>edit</editType><file>reference/template-cleanup/clone-logship-instance.sh</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>reference/template-cleanup/03-neutralize-env.sh</file></path><path><editType>edit</editType><file>android/.gitignore</file></path><path><editType>edit</editType><file>.gitignore</file></path><path><editType>edit</editType><file>android/update-files/history.json</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>695</buildNumber><marked><SHA1>5bb8230dd8cac61f5ec5416d63550b78c540596b</SHA1><branch><SHA1>5bb8230dd8cac61f5ec5416d63550b78c540596b</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>5bb8230dd8cac61f5ec5416d63550b78c540596b</SHA1><branch><SHA1>5bb8230dd8cac61f5ec5416d63550b78c540596b</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>5bb8230dd8cac61f5ec5416d63550b78c540596b</SHA1><branch><SHA1>5bb8230dd8cac61f5ec5416d63550b78c540596b</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#695</displayName><duration>67825</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #695</fullDisplayName><id>695</id><inProgress>false</inProgress><keepLog>false</keepLog><number>695</number><queueId>5496</queueId><result>SUCCESS</result><timestamp>1785801600142</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/695/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/index.vue</affectedPath><commitId>5bb8230dd8cac61f5ec5416d63550b78c540596b</commitId><timestamp>1785775306000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>change purchase order dashboard links
</comment><date>2026-08-03 18:41:46 +0200</date><id>5bb8230dd8cac61f5ec5416d63550b78c540596b</id><msg>change purchase order dashboard links</msg><path><editType>edit</editType><file>app/pages/index.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>694</buildNumber><marked><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#694</displayName><duration>65924</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #694</fullDisplayName><id>694</id><inProgress>false</inProgress><keepLog>false</keepLog><number>694</number><queueId>5493</queueId><result>SUCCESS</result><timestamp>1785715200141</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/694/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>693</buildNumber><marked><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#693</displayName><duration>64895</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #693</fullDisplayName><id>693</id><inProgress>false</inProgress><keepLog>false</keepLog><number>693</number><queueId>5492</queueId><result>SUCCESS</result><timestamp>1785628800152</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/693/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>692</buildNumber><marked><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#692</displayName><duration>66141</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #692</fullDisplayName><id>692</id><inProgress>false</inProgress><keepLog>false</keepLog><number>692</number><queueId>5490</queueId><result>SUCCESS</result><timestamp>1785542400140</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/692/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>691</buildNumber><marked><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#691</displayName><duration>65414</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #691</fullDisplayName><id>691</id><inProgress>false</inProgress><keepLog>false</keepLog><number>691</number><queueId>5488</queueId><result>SUCCESS</result><timestamp>1785456000141</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/691/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>690</buildNumber><marked><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#690</displayName><duration>63540</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #690</fullDisplayName><id>690</id><inProgress>false</inProgress><keepLog>false</keepLog><number>690</number><queueId>5482</queueId><result>SUCCESS</result><timestamp>1785369600140</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/690/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>689</buildNumber><marked><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#689</displayName><duration>62962</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #689</fullDisplayName><id>689</id><inProgress>false</inProgress><keepLog>false</keepLog><number>689</number><queueId>5478</queueId><result>SUCCESS</result><timestamp>1785283200140</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/689/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>688</buildNumber><marked><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><branch><SHA1>41546cf99afef826cf65d6ba3ca3ee0547636984</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#688</displayName><duration>60523</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #688</fullDisplayName><id>688</id><inProgress>false</inProgress><keepLog>false</keepLog><number>688</number><queueId>5441</queueId><result>SUCCESS</result><timestamp>1785196800700</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/688/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/template-cleanup/01-idempiere-truncate.sql</affectedPath><affectedPath>reference/template-cleanup/03-neutralize-env.sh</affectedPath><affectedPath>reference/template-cleanup/diagnose-survivors.sql</affectedPath><affectedPath>reference/template-cleanup/run-cleanup.sh</affectedPath><affectedPath>reference/template-cleanup/README.md</affectedPath><affectedPath>reference/template-cleanup/02-strapi-truncate.sql</affectedPath><affectedPath>reference/template-cleanup/00-defuse.sh</affectedPath><commitId>888220a76c01f7344c71da83aabff85fc07023ce</commitId><timestamp>1785053492000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add template-cleanup scripts: reset a production clone to a clean golden VM

Defuse (crontab/postfix/push/ES-bind), .env neutralization, and an
FK-retry truncation engine for the iDempiere DB (transactional wipe,
bare master data, org purge with reversal/cycle unlinking, trigger
handling for the ES sync, deferrable-constraint handling), plus Strapi
truncation and orchestration. Used to build VM 113 logship-template-2.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</comment><date>2026-07-26 10:11:32 +0200</date><id>888220a76c01f7344c71da83aabff85fc07023ce</id><msg>Add template-cleanup scripts: reset a production clone to a clean golden VM</msg><path><editType>add</editType><file>reference/template-cleanup/README.md</file></path><path><editType>add</editType><file>reference/template-cleanup/02-strapi-truncate.sql</file></path><path><editType>add</editType><file>reference/template-cleanup/00-defuse.sh</file></path><path><editType>add</editType><file>reference/template-cleanup/03-neutralize-env.sh</file></path><path><editType>add</editType><file>reference/template-cleanup/diagnose-survivors.sql</file></path><path><editType>add</editType><file>reference/template-cleanup/01-idempiere-truncate.sql</file></path><path><editType>add</editType><file>reference/template-cleanup/run-cleanup.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/template-cleanup/RECLONE-RUNBOOK.md</affectedPath><affectedPath>reference/template-cleanup/TEMPLATE-README.md</affectedPath><commitId>10ead8aa2b638df47d5d0aa96c183d6c2db82080</commitId><timestamp>1785053661000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add template VM README and full re-clone runbook

TEMPLATE-README.md mirrors /root/TEMPLATE-README.md on VM 113 (what the
golden VM contains, clone-to-instance checklist). RECLONE-RUNBOOK.md is
the tested end-to-end procedure (PBS restore, quarantined defuse via
guest agent, truncation, validation, finalize) with all gotchas.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</comment><date>2026-07-26 10:14:21 +0200</date><id>10ead8aa2b638df47d5d0aa96c183d6c2db82080</id><msg>Add template VM README and full re-clone runbook</msg><path><editType>add</editType><file>reference/template-cleanup/TEMPLATE-README.md</file></path><path><editType>add</editType><file>reference/template-cleanup/RECLONE-RUNBOOK.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/template-cleanup/RECLONE-RUNBOOK.md</affectedPath><affectedPath>reference/template-cleanup/04-set-instance-identity.sh</affectedPath><affectedPath>reference/template-cleanup/TEMPLATE-README.md</affectedPath><commitId>7fe847d4563cd2264f4b63043caca1195115fa4c</commitId><timestamp>1785054093000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add 04-set-instance-identity.sh: rebrand tenant on instance clones

Renames client/org 1000000, the org-linked partner, main warehouse and
roles, sets .env COMPANYNAME, restarts iDempiere+frontend, and reports
remaining old-brand occurrences. --dry-run mode (verified on VM 113).
Docs updated with the new clone-to-instance step.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</comment><date>2026-07-26 10:21:33 +0200</date><id>7fe847d4563cd2264f4b63043caca1195115fa4c</id><msg>Add 04-set-instance-identity.sh: rebrand tenant on instance clones</msg><path><editType>add</editType><file>reference/template-cleanup/04-set-instance-identity.sh</file></path><path><editType>edit</editType><file>reference/template-cleanup/RECLONE-RUNBOOK.md</file></path><path><editType>edit</editType><file>reference/template-cleanup/TEMPLATE-README.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/template-cleanup/clone-logship-instance.sh</affectedPath><affectedPath>reference/template-cleanup/TEMPLATE-README.md</affectedPath><commitId>571c9b78d3ba798cb4ec7434d4b061229f3957df</commitId><timestamp>1785054224000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add clone-logship-instance.sh: one-command instance provisioning on prox2

Wraps qm clone of template VM 113 + IP/name/resources + boot + guest-agent
wait + in-guest tenant rebrand (04-set-instance-identity.sh), with VMID/IP
preflight checks and a next-steps checklist. Staged at
prox2:/root/clone-logship-instance.sh.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</comment><date>2026-07-26 10:23:44 +0200</date><id>571c9b78d3ba798cb4ec7434d4b061229f3957df</id><msg>Add clone-logship-instance.sh: one-command instance provisioning on prox2</msg><path><editType>add</editType><file>reference/template-cleanup/clone-logship-instance.sh</file></path><path><editType>edit</editType><file>reference/template-cleanup/TEMPLATE-README.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/template-cleanup/03-neutralize-env.sh</affectedPath><affectedPath>reference/template-cleanup/clone-logship-instance.sh</affectedPath><commitId>a830efa993126a05a7e292d94fa2022d7f97045c</commitId><timestamp>1785054943000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>clone-instance: add --domain (https public URLs); 03-neutralize-env accepts domain or IP

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</comment><date>2026-07-26 10:35:43 +0200</date><id>a830efa993126a05a7e292d94fa2022d7f97045c</id><msg>clone-instance: add --domain (https public URLs); 03-neutralize-env accepts domain or IP</msg><path><editType>edit</editType><file>reference/template-cleanup/clone-logship-instance.sh</file></path><path><editType>edit</editType><file>reference/template-cleanup/03-neutralize-env.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/template-cleanup/01-idempiere-truncate.sql</affectedPath><commitId>6618fda9517ab1135be6fd461d834ce44490129c</commitId><timestamp>1785055429000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>template-cleanup: restore AD_Session for the long-lived IDEMPIERETOKEN

The truncation wiped ad_session incl. the row the SuperUser JWT points
at; the REST servlet 500s on such tokens. Recreate session 1000081 so
clones work out of the box (already applied to template VM 113).

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</comment><date>2026-07-26 10:43:49 +0200</date><id>6618fda9517ab1135be6fd461d834ce44490129c</id><msg>template-cleanup: restore AD_Session for the long-lived IDEMPIERETOKEN</msg><path><editType>edit</editType><file>reference/template-cleanup/01-idempiere-truncate.sql</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/commission.vue</affectedPath><commitId>5292f94d94a2065a9e3ccc525e3865e1d4cfb956</commitId><timestamp>1785137223000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>enable multi parcel for fba dhl orders
</comment><date>2026-07-27 09:27:03 +0200</date><id>5292f94d94a2065a9e3ccc525e3865e1d4cfb956</id><msg>enable multi parcel for fba dhl orders</msg><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/commission.vue</affectedPath><affectedPath>app/composables/useRelabelDocs.ts</affectedPath><affectedPath>app/pages/mobile/commission.vue</affectedPath><commitId>a516b90ece0ec20fe6d5202079120901e3a20401</commitId><timestamp>1785151435000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix fba commission with relabel scan
</comment><date>2026-07-27 13:23:55 +0200</date><id>a516b90ece0ec20fe6d5202079120901e3a20401</id><msg>fix fba commission with relabel scan</msg><path><editType>edit</editType><file>app/pages/mobile/commission.vue</file></path><path><editType>edit</editType><file>app/composables/useRelabelDocs.ts</file></path><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/RelabelLabelPrintModal.vue</affectedPath><commitId>8dd3d84930eec3dfef5e1dac3caa131865cba16c</commitId><timestamp>1785152414000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add selection print labels fba relabel print
</comment><date>2026-07-27 13:40:14 +0200</date><id>8dd3d84930eec3dfef5e1dac3caa131865cba16c</id><msg>add selection print labels fba relabel print</msg><path><editType>edit</editType><file>app/components/sales/RelabelLabelPrintModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.env</affectedPath><affectedPath>.gitignore</affectedPath><commitId>35f4ff9fd8e5fa67022a80c5a0c2cbee4f4dde14</commitId><timestamp>1785153579000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>track .env per branch (dev = LogShip local config)

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</comment><date>2026-07-27 13:59:39 +0200</date><id>35f4ff9fd8e5fa67022a80c5a0c2cbee4f4dde14</id><msg>track .env per branch (dev = LogShip local config)</msg><path><editType>edit</editType><file>.gitignore</file></path><path><editType>add</editType><file>.env</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.env</affectedPath><commitId>93e0965d0bb599b252f2fc71f8a1509068f5c09f</commitId><timestamp>1785154663000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add .env
</comment><date>2026-07-27 14:17:43 +0200</date><id>93e0965d0bb599b252f2fc71f8a1509068f5c09f</id><msg>add .env</msg><path><editType>edit</editType><file>.env</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.env</affectedPath><commitId>f6eae180dad8e6c7c8886f3bd1694899ff0f924b</commitId><timestamp>1785154830000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>dev .env: use LAN IP 192.168.12.72 for API/media URLs

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</comment><date>2026-07-27 14:20:30 +0200</date><id>f6eae180dad8e6c7c8886f3bd1694899ff0f924b</id><msg>dev .env: use LAN IP 192.168.12.72 for API/media URLs</msg><path><editType>edit</editType><file>.env</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/utils/scanCode.ts</affectedPath><commitId>64bfd3d1dd3599930cfadb626dcf088a4bcf9633</commitId><timestamp>1785155948000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Fix fba relable encoding issue
</comment><date>2026-07-27 14:39:08 +0200</date><id>64bfd3d1dd3599930cfadb626dcf088a4bcf9633</id><msg>Fix fba relable encoding issue</msg><path><editType>edit</editType><file>app/utils/scanCode.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>app/components/sales/OrderPositionsTable.vue</affectedPath><commitId>26ce8d1fff124248c20f8d2bde03e94ab6f2face</commitId><timestamp>1785156718000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add position add from quick order to default order page
</comment><date>2026-07-27 14:51:58 +0200</date><id>26ce8d1fff124248c20f8d2bde03e94ab6f2face</id><msg>add position add from quick order to default order page</msg><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>add</editType><file>app/components/sales/OrderPositionsTable.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/commission.vue</affectedPath><commitId>fe5183cba030a0474b6feab8b713284c5799efd2</commitId><timestamp>1785162778000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show current scanned position on top
</comment><date>2026-07-27 16:32:58 +0200</date><id>fe5183cba030a0474b6feab8b713284c5799efd2</id><msg>show current scanned position on top</msg><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/AgGrid/Shippers/AgCustomLink.vue</affectedPath><affectedPath>app/pages/materials/shippers/[id]/edit.vue</affectedPath><affectedPath>app/pages/materials/shippers/create.vue</affectedPath><affectedPath>app/pages/materials/shippers/index.vue</affectedPath><affectedPath>server/api/materials/shippers/update.put.ts</affectedPath><affectedPath>app/components/materials/ShipperForm.vue</affectedPath><affectedPath>app/pages/materials/shippers/[id]/view.vue</affectedPath><affectedPath>app/pages/materials/shippers/[id]/duplicate.vue</affectedPath><affectedPath>server/api/materials/shippers/store.post.ts</affectedPath><affectedPath>reference/recipes.md</affectedPath><commitId>41546cf99afef826cf65d6ba3ca3ee0547636984</commitId><timestamp>1785164169000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add shipper table and edit
</comment><date>2026-07-27 16:56:09 +0200</date><id>41546cf99afef826cf65d6ba3ca3ee0547636984</id><msg>add shipper table and edit</msg><path><editType>add</editType><file>app/components/AgGrid/Shippers/AgCustomLink.vue</file></path><path><editType>edit</editType><file>app/pages/materials/shippers/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/pages/materials/shippers/create.vue</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path><path><editType>edit</editType><file>app/pages/materials/shippers/[id]/view.vue</file></path><path><editType>edit</editType><file>app/pages/materials/shippers/index.vue</file></path><path><editType>edit</editType><file>server/api/materials/shippers/update.put.ts</file></path><path><editType>edit</editType><file>app/components/materials/ShipperForm.vue</file></path><path><editType>edit</editType><file>app/pages/materials/shippers/[id]/duplicate.vue</file></path><path><editType>edit</editType><file>server/api/materials/shippers/store.post.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>687</buildNumber><marked><SHA1>06cd5ce97df3aa120a4b7cb608269847d770ca77</SHA1><branch><SHA1>06cd5ce97df3aa120a4b7cb608269847d770ca77</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>06cd5ce97df3aa120a4b7cb608269847d770ca77</SHA1><branch><SHA1>06cd5ce97df3aa120a4b7cb608269847d770ca77</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>06cd5ce97df3aa120a4b7cb608269847d770ca77</SHA1><branch><SHA1>06cd5ce97df3aa120a4b7cb608269847d770ca77</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#687</displayName><duration>59585</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #687</fullDisplayName><id>687</id><inProgress>false</inProgress><keepLog>false</keepLog><number>687</number><queueId>5429</queueId><result>SUCCESS</result><timestamp>1785110400092</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/687/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>686</buildNumber><marked><SHA1>06cd5ce97df3aa120a4b7cb608269847d770ca77</SHA1><branch><SHA1>06cd5ce97df3aa120a4b7cb608269847d770ca77</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>06cd5ce97df3aa120a4b7cb608269847d770ca77</SHA1><branch><SHA1>06cd5ce97df3aa120a4b7cb608269847d770ca77</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>06cd5ce97df3aa120a4b7cb608269847d770ca77</SHA1><branch><SHA1>06cd5ce97df3aa120a4b7cb608269847d770ca77</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#686</displayName><duration>156649</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #686</fullDisplayName><id>686</id><inProgress>false</inProgress><keepLog>false</keepLog><number>686</number><queueId>5426</queueId><result>SUCCESS</result><timestamp>1785024000972</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/686/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>deploy/README.md</affectedPath><affectedPath>deploy/pm2-root.service.d/override.conf</affectedPath><commitId>44842957e3e2056c97262a7688ccd7f46a88a5ae</commitId><timestamp>1784974171000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>deploy: add pm2 boot-ordering override and server setup notes

pm2 started the frontend at boot before the iDempiere REST API (8443) was
up, causing a ~2 minute 502 storm after every server reboot. Ship the
systemd drop-in (wait for 8443, max 180s) plus notes on pm2-logrotate and
crontab leftovers so the server config stays reproducible.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</comment><date>2026-07-25 12:09:31 +0200</date><id>44842957e3e2056c97262a7688ccd7f46a88a5ae</id><msg>deploy: add pm2 boot-ordering override and server setup notes</msg><path><editType>add</editType><file>deploy/README.md</file></path><path><editType>add</editType><file>deploy/pm2-root.service.d/override.conf</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/ci/deploy-production.sh</affectedPath><affectedPath>.gitignore</affectedPath><affectedPath>package-lock.json</affectedPath><affectedPath>reference/ci/latest-working-jenkins-production.sh</affectedPath><commitId>0ba977ce84e6f26c48cf7ab7f64597e8acbed555</commitId><timestamp>1784978362000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>deploy: commit package-lock.json and switch production install to npm ci

The 2026-07-25 production build died in npm's resolver (Arborist
"Cannot read properties of null (reading 'edgesOut')") while resolving
the brand-new @vitejs/devtools-vite 0.4.8 published the day before.
Root cause: package-lock.json was gitignored and the deploy script even
deleted it, so every deploy re-resolved all semver ranges against the
live registry — any bad publish upstream could (and did) break deploys.

- Track package-lock.json (validated: npm ci passes, linux-x64 platform
  binaries included, AG Grid pinned at 35.2.1)
- Deploy scripts: drop the vestigial patch-package install (no patches/
  dir, not in package.json) and use npm ci instead of a lockfile-less
  npm install

The Jenkins job shell step must be updated manually to match
reference/ci/latest-working-jenkins-production.sh.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</comment><date>2026-07-25 13:19:22 +0200</date><id>0ba977ce84e6f26c48cf7ab7f64597e8acbed555</id><msg>deploy: commit package-lock.json and switch production install to npm ci</msg><path><editType>edit</editType><file>reference/ci/deploy-production.sh</file></path><path><editType>edit</editType><file>reference/ci/latest-working-jenkins-production.sh</file></path><path><editType>edit</editType><file>.gitignore</file></path><path><editType>add</editType><file>package-lock.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/ci/latest-working-jenkins-production.sh</affectedPath><affectedPath>deploy/README.md</affectedPath><affectedPath>reference/ci/deploy-production.sh</affectedPath><commitId>42a30a35931b0a4f43ad9b57d996859e6f5e4a7a</commitId><timestamp>1784981345000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>ci: deploy script must not clobber pm2 boot-ordering override

The production deploy rewrote /etc/systemd/system/pm2-root.service.d/
override.conf with only the Environment lines, wiping the [Unit]
After=idempiere.service ordering and the wait-for-8443 ExecStartPre added
on 2026-07-25 (a deploy at 13:31 reverted it before the verification
reboot, which reproduced the 502 storm). Write the full drop-in from the
deploy script and document that the script heredoc is the source of truth.
NOTE: the Jenkins job runs a manually pasted copy of this script - it must
be updated there as well.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</comment><date>2026-07-25 14:09:05 +0200</date><id>42a30a35931b0a4f43ad9b57d996859e6f5e4a7a</id><msg>ci: deploy script must not clobber pm2 boot-ordering override</msg><path><editType>edit</editType><file>reference/ci/deploy-production.sh</file></path><path><editType>edit</editType><file>deploy/README.md</file></path><path><editType>edit</editType><file>reference/ci/latest-working-jenkins-production.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/materials/products/index.vue</affectedPath><affectedPath>app/pages/partners/partners/[id]/edit.vue</affectedPath><affectedPath>server/api/partners/partners/store.post.ts</affectedPath><affectedPath>app/components/sales/OrderCardList.vue</affectedPath><affectedPath>app/pages/sales/orders/index.vue</affectedPath><affectedPath>app/components/AgGridServer.vue</affectedPath><affectedPath>app/components/materials/ProductForm.vue</affectedPath><affectedPath>app/components/partners/PartnerForm.vue</affectedPath><affectedPath>app/pages/fulfillment/stocks/index.vue</affectedPath><affectedPath>app/components/AgGrid.vue</affectedPath><affectedPath>app/composables/useBpartnerFlags.ts</affectedPath><affectedPath>server/api/admin/organizations/ui-flags.get.ts</affectedPath><affectedPath>server/api/partners/partners/update.put.ts</affectedPath><affectedPath>app/components/sales/OrderDetailRecordLine.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>5b28fd19c39cd19933cfed83cc7afdc4f1f885a0</commitId><timestamp>1784983414000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add HideQty and DisallowExport for limited Roles
</comment><date>2026-07-25 14:43:34 +0200</date><id>5b28fd19c39cd19933cfed83cc7afdc4f1f885a0</id><msg>Add HideQty and DisallowExport for limited Roles</msg><path><editType>edit</editType><file>app/components/partners/PartnerForm.vue</file></path><path><editType>edit</editType><file>app/components/sales/OrderDetailRecordLine.vue</file></path><path><editType>add</editType><file>app/composables/useBpartnerFlags.ts</file></path><path><editType>add</editType><file>server/api/admin/organizations/ui-flags.get.ts</file></path><path><editType>edit</editType><file>app/pages/materials/products/index.vue</file></path><path><editType>edit</editType><file>app/components/AgGridServer.vue</file></path><path><editType>edit</editType><file>server/api/partners/partners/store.post.ts</file></path><path><editType>edit</editType><file>server/api/partners/partners/update.put.ts</file></path><path><editType>edit</editType><file>app/pages/fulfillment/stocks/index.vue</file></path><path><editType>edit</editType><file>app/components/materials/ProductForm.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/AgGrid.vue</file></path><path><editType>edit</editType><file>app/components/sales/OrderCardList.vue</file></path><path><editType>edit</editType><file>app/pages/partners/partners/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/partners/PartnerForm.vue</affectedPath><commitId>06cd5ce97df3aa120a4b7cb608269847d770ca77</commitId><timestamp>1784986454000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix permission display
</comment><date>2026-07-25 15:34:14 +0200</date><id>06cd5ce97df3aa120a4b7cb608269847d770ca77</id><msg>fix permission display</msg><path><editType>edit</editType><file>app/components/partners/PartnerForm.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>685</buildNumber><marked><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><branch><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><branch><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><branch><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#685</displayName><duration>64362</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #685</fullDisplayName><id>685</id><inProgress>false</inProgress><keepLog>false</keepLog><number>685</number><queueId>5421</queueId><result>SUCCESS</result><timestamp>1784937600975</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/685/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>684</buildNumber><marked><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><branch><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><branch><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><branch><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#684</displayName><duration>59883</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #684</fullDisplayName><id>684</id><inProgress>false</inProgress><keepLog>false</keepLog><number>684</number><queueId>5420</queueId><result>SUCCESS</result><timestamp>1784851200972</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/684/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>683</buildNumber><marked><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><branch><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><branch><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><branch><SHA1>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#683</displayName><duration>62079</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #683</fullDisplayName><id>683</id><inProgress>false</inProgress><keepLog>false</keepLog><number>683</number><queueId>5419</queueId><result>SUCCESS</result><timestamp>1784764800972</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/683/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/partners/PartnerForm.vue</affectedPath><affectedPath>app/pages/partners/partners/[id]/edit.vue</affectedPath><affectedPath>app/app.vue</affectedPath><affectedPath>app/composables/states.ts</affectedPath><affectedPath>server/api/invoices/termination-status.get.ts</affectedPath><affectedPath>server/api/partners/partners/update.put.ts</affectedPath><affectedPath>app/components/TerminationGuard.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</commitId><timestamp>1784732348000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add termination notice when payment is open
</comment><date>2026-07-22 16:59:08 +0200</date><id>9ed7a41b51dcab418fda8ac0637fcb014a7ddda2</id><msg>add termination notice when payment is open</msg><path><editType>edit</editType><file>app/composables/states.ts</file></path><path><editType>edit</editType><file>server/api/partners/partners/update.put.ts</file></path><path><editType>add</editType><file>app/components/TerminationGuard.vue</file></path><path><editType>edit</editType><file>app/components/partners/PartnerForm.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/app.vue</file></path><path><editType>edit</editType><file>app/pages/partners/partners/[id]/edit.vue</file></path><path><editType>add</editType><file>server/api/invoices/termination-status.get.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>682</buildNumber><marked><SHA1>65cc19225d5d4b05ea50cb575a87d49c4d4c91cc</SHA1><branch><SHA1>65cc19225d5d4b05ea50cb575a87d49c4d4c91cc</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>65cc19225d5d4b05ea50cb575a87d49c4d4c91cc</SHA1><branch><SHA1>65cc19225d5d4b05ea50cb575a87d49c4d4c91cc</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>65cc19225d5d4b05ea50cb575a87d49c4d4c91cc</SHA1><branch><SHA1>65cc19225d5d4b05ea50cb575a87d49c4d4c91cc</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#682</displayName><duration>62335</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #682</fullDisplayName><id>682</id><inProgress>false</inProgress><keepLog>false</keepLog><number>682</number><queueId>5417</queueId><result>SUCCESS</result><timestamp>1784678400971</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/682/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/commission.vue</affectedPath><commitId>e49af1b7f656278331b2bc7127b1a010854d8f55</commitId><timestamp>1784652327000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add Scan Relabel Barcode if present
</comment><date>2026-07-21 18:45:27 +0200</date><id>e49af1b7f656278331b2bc7127b1a010854d8f55</id><msg>Add Scan Relabel Barcode if present</msg><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/commission.vue</affectedPath><commitId>65cc19225d5d4b05ea50cb575a87d49c4d4c91cc</commitId><timestamp>1784653033000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add relabel scan to mobile
</comment><date>2026-07-21 18:57:13 +0200</date><id>65cc19225d5d4b05ea50cb575a87d49c4d4c91cc</id><msg>add relabel scan to mobile</msg><path><editType>edit</editType><file>app/pages/mobile/commission.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>681</buildNumber><marked><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><branch><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><branch><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><branch><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#681</displayName><duration>60291</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #681</fullDisplayName><id>681</id><inProgress>false</inProgress><keepLog>false</keepLog><number>681</number><queueId>5415</queueId><result>SUCCESS</result><timestamp>1784592000973</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/681/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>680</buildNumber><marked><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><branch><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><branch><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><branch><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#680</displayName><duration>61624</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #680</fullDisplayName><id>680</id><inProgress>false</inProgress><keepLog>false</keepLog><number>680</number><queueId>5414</queueId><result>SUCCESS</result><timestamp>1784505600972</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/680/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>679</buildNumber><marked><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><branch><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><branch><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><branch><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#679</displayName><duration>58809</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #679</fullDisplayName><id>679</id><inProgress>false</inProgress><keepLog>false</keepLog><number>679</number><queueId>5413</queueId><result>SUCCESS</result><timestamp>1784419200972</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/679/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>678</buildNumber><marked><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><branch><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><branch><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><branch><SHA1>b0e104708ac96736cc222d7c98b661e55f6c3aa2</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#678</displayName><duration>59034</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #678</fullDisplayName><id>678</id><inProgress>false</inProgress><keepLog>false</keepLog><number>678</number><queueId>5412</queueId><result>SUCCESS</result><timestamp>1784332800971</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/678/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><affectedPath>server/api/settings/order-sources/[id]/sync-shopify-products.post.ts</affectedPath><commitId>b0e104708ac96736cc222d7c98b661e55f6c3aa2</commitId><timestamp>1784267934000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add shopify full product sync button to order source form

Visible only for shopify-new order sources: queues a background full
sync (all articles) in the Laravel middleware via new server route
/api/settings/order-sources/[id]/sync-shopify-products. The middleware
holds a per-source lock, so the manual sync waits instead of running
concurrently with the scheduled one.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</comment><date>2026-07-17 07:58:54 +0200</date><id>b0e104708ac96736cc222d7c98b661e55f6c3aa2</id><msg>add shopify full product sync button to order source form</msg><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path><path><editType>add</editType><file>server/api/settings/order-sources/[id]/sync-shopify-products.post.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>677</buildNumber><marked><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><branch><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><branch><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><branch><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#677</displayName><duration>57779</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #677</fullDisplayName><id>677</id><inProgress>false</inProgress><keepLog>false</keepLog><number>677</number><queueId>5411</queueId><result>SUCCESS</result><timestamp>1784246400972</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/677/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>676</buildNumber><marked><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><branch><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><branch><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><branch><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#676</displayName><duration>57663</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #676</fullDisplayName><id>676</id><inProgress>false</inProgress><keepLog>false</keepLog><number>676</number><queueId>5410</queueId><result>SUCCESS</result><timestamp>1784160000971</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/676/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>675</buildNumber><marked><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><branch><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><branch><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><branch><SHA1>edf7ef11f411205826f051991c8cd1c9938edfd2</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#675</displayName><duration>58949</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #675</fullDisplayName><id>675</id><inProgress>false</inProgress><keepLog>false</keepLog><number>675</number><queueId>5408</queueId><result>SUCCESS</result><timestamp>1784073600972</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/675/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/index.vue</affectedPath><commitId>95e24749976ccd941cb704f6957c1ac6aac017f8</commitId><timestamp>1784020706000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show rquests more prominent with high priority
</comment><date>2026-07-14 11:18:26 +0200</date><id>95e24749976ccd941cb704f6957c1ac6aac017f8</id><msg>show rquests more prominent with high priority</msg><path><editType>edit</editType><file>app/pages/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/SearchModal.vue</affectedPath><affectedPath>server/api/search/[query]/index.get.ts</affectedPath><commitId>c29600f1ad6370e17e5b51d80e69e7750ba7a08d</commitId><timestamp>1784024352000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>adapt search format mobile and desktop
</comment><date>2026-07-14 12:19:12 +0200</date><id>c29600f1ad6370e17e5b51d80e69e7750ba7a08d</id><msg>adapt search format mobile and desktop</msg><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path><path><editType>edit</editType><file>server/api/search/[query]/index.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/materials/ProductForm.vue</affectedPath><affectedPath>app/components/ProductChooser.vue</affectedPath><affectedPath>server/api/materials/products/store.post.ts</affectedPath><affectedPath>app/pages/materials/products/[id]/edit.vue</affectedPath><affectedPath>app/pages/materials/products/create.vue</affectedPath><affectedPath>server/api/materials/products/update.put.ts</affectedPath><affectedPath>server/api/materials/products/filter-elastic.get.ts</affectedPath><affectedPath>server/api/materials/products/filter.get.ts</affectedPath><affectedPath>app/components/partners/PartnerOrderLineTable.vue</affectedPath><affectedPath>server/api/partners/partners/quick-add.post.ts</affectedPath><commitId>b5b6fb078d5b3df812b83736c524b02accdf088b</commitId><timestamp>1784026123000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>enable bom orders if enabled
</comment><date>2026-07-14 12:48:43 +0200</date><id>b5b6fb078d5b3df812b83736c524b02accdf088b</id><msg>enable bom orders if enabled</msg><path><editType>edit</editType><file>app/pages/materials/products/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/pages/materials/products/create.vue</file></path><path><editType>edit</editType><file>server/api/partners/partners/quick-add.post.ts</file></path><path><editType>edit</editType><file>app/components/ProductChooser.vue</file></path><path><editType>edit</editType><file>server/api/materials/products/filter.get.ts</file></path><path><editType>edit</editType><file>app/components/partners/PartnerOrderLineTable.vue</file></path><path><editType>edit</editType><file>server/api/materials/products/store.post.ts</file></path><path><editType>edit</editType><file>app/components/materials/ProductForm.vue</file></path><path><editType>edit</editType><file>server/api/materials/products/update.put.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/filter-elastic.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/orders/[id]/relabel-check.get.ts</affectedPath><affectedPath>server/api/orders/openso-generation-queue.get.ts</affectedPath><affectedPath>server/api/orders/unfulfillable-count.get.ts</affectedPath><affectedPath>app/pages/sales/orders/[id]/view.vue</affectedPath><affectedPath>app/pages/index.vue</affectedPath><affectedPath>server/api/orders/[id]/index.get.ts</affectedPath><affectedPath>server/utils/relabelOrderHelper.ts</affectedPath><affectedPath>server/api/orders/openso-list.get.ts</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>server/api/orders/[id]/document-action.post.ts</affectedPath><affectedPath>server/api/orders/unfulfillable-products.get.ts</affectedPath><commitId>4779e8c26ffdabeddba4dda6c7c0b708721d0597</commitId><timestamp>1784035044000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show bom missing articles
</comment><date>2026-07-14 15:17:24 +0200</date><id>4779e8c26ffdabeddba4dda6c7c0b708721d0597</id><msg>show bom missing articles</msg><path><editType>edit</editType><file>server/api/orders/[id]/document-action.post.ts</file></path><path><editType>edit</editType><file>server/api/orders/openso-generation-queue.get.ts</file></path><path><editType>edit</editType><file>server/api/orders/openso-list.get.ts</file></path><path><editType>add</editType><file>server/api/orders/[id]/relabel-check.get.ts</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/view.vue</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path><path><editType>edit</editType><file>server/api/orders/unfulfillable-count.get.ts</file></path><path><editType>edit</editType><file>server/api/orders/[id]/index.get.ts</file></path><path><editType>edit</editType><file>server/api/orders/unfulfillable-products.get.ts</file></path><path><editType>edit</editType><file>server/utils/relabelOrderHelper.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/manufacturings/bom-productions/index.get.ts</affectedPath><affectedPath>server/api/manufacturings/bom-productions/[id]/document-action.post.ts</affectedPath><affectedPath>app/composables/menu/admin/manufacturings.ts</affectedPath><affectedPath>server/api/manufacturings/bom-productions/open-lines.get.ts</affectedPath><affectedPath>app/pages/manufacturings/bom-productions/index.vue</affectedPath><affectedPath>server/api/manufacturings/bom-productions/store.post.ts</affectedPath><affectedPath>server/api/manufacturings/bom-productions/destroy.delete.ts</affectedPath><affectedPath>server/api/manufacturings/bom-productions/[id]/create-lines.post.ts</affectedPath><affectedPath>server/api/manufacturings/bom-productions/[id].get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>63b9dd2f84f494e12e57de5bb34bbc2bd7117c0c</commitId><timestamp>1784037313000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fixes
</comment><date>2026-07-14 15:55:13 +0200</date><id>63b9dd2f84f494e12e57de5bb34bbc2bd7117c0c</id><msg>fixes</msg><path><editType>add</editType><file>server/api/manufacturings/bom-productions/open-lines.get.ts</file></path><path><editType>add</editType><file>server/api/manufacturings/bom-productions/destroy.delete.ts</file></path><path><editType>add</editType><file>app/pages/manufacturings/bom-productions/index.vue</file></path><path><editType>add</editType><file>server/api/manufacturings/bom-productions/[id]/create-lines.post.ts</file></path><path><editType>add</editType><file>server/api/manufacturings/bom-productions/[id]/document-action.post.ts</file></path><path><editType>add</editType><file>server/api/manufacturings/bom-productions/[id].get.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/api/manufacturings/bom-productions/store.post.ts</file></path><path><editType>add</editType><file>server/api/manufacturings/bom-productions/index.get.ts</file></path><path><editType>edit</editType><file>app/composables/menu/admin/manufacturings.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/manufacturings/bom-productions/index.get.ts</affectedPath><affectedPath>server/api/manufacturings/bom-productions/open-lines.get.ts</affectedPath><affectedPath>app/pages/manufacturings/bom-productions/index.vue</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><affectedPath>app/components/SideBarMenu.vue</affectedPath><affectedPath>app/components/SideBarAdministrator.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/components/SideBarFulfillmentAdmin.vue</affectedPath><commitId>eac188d7150ce8e3c6b9822d703bdbf01d31b493</commitId><timestamp>1784040372000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add menu
</comment><date>2026-07-14 16:46:12 +0200</date><id>eac188d7150ce8e3c6b9822d703bdbf01d31b493</id><msg>add menu</msg><path><editType>edit</editType><file>app/components/SideBarAdministrator.vue</file></path><path><editType>edit</editType><file>server/api/manufacturings/bom-productions/open-lines.get.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/SideBarFulfillmentAdmin.vue</file></path><path><editType>edit</editType><file>server/api/manufacturings/bom-productions/index.get.ts</file></path><path><editType>edit</editType><file>app/components/SideBarMenu.vue</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path><path><editType>edit</editType><file>app/pages/manufacturings/bom-productions/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/manufacturings/bom-productions/[id].get.ts</affectedPath><affectedPath>app/pages/manufacturings/bom-productions/index.vue</affectedPath><affectedPath>app/composables/useRelabelDocs.ts</affectedPath><affectedPath>server/api/orders/[id]/order-line/index.get.ts</affectedPath><commitId>43cf374e1d5847b8689546e91c747fa5ed25039f</commitId><timestamp>1784043818000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add information to bom reports
</comment><date>2026-07-14 17:43:38 +0200</date><id>43cf374e1d5847b8689546e91c747fa5ed25039f</id><msg>add information to bom reports</msg><path><editType>edit</editType><file>app/composables/useRelabelDocs.ts</file></path><path><editType>edit</editType><file>app/pages/manufacturings/bom-productions/index.vue</file></path><path><editType>edit</editType><file>server/api/orders/[id]/order-line/index.get.ts</file></path><path><editType>edit</editType><file>server/api/manufacturings/bom-productions/[id].get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/rma/store.post.ts</affectedPath><affectedPath>app/pages/sales/customer-rma/[id]/edit.vue</affectedPath><affectedPath>app/components/SearchModal.vue</affectedPath><affectedPath>app/components/rmas/CustomerRmaForm.vue</affectedPath><affectedPath>app/pages/sales/customer-rma/create.vue</affectedPath><affectedPath>app/pages/mobile/return.vue</affectedPath><affectedPath>server/api/rma/update.put.ts</affectedPath><commitId>c2bea1d3f4fb27cc7d4d69a65ff75c923ae5d9bf</commitId><timestamp>1784062474000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show new external tracking on rma2
</comment><date>2026-07-14 22:54:34 +0200</date><id>c2bea1d3f4fb27cc7d4d69a65ff75c923ae5d9bf</id><msg>show new external tracking on rma2</msg><path><editType>edit</editType><file>app/pages/mobile/return.vue</file></path><path><editType>edit</editType><file>server/api/rma/store.post.ts</file></path><path><editType>edit</editType><file>app/components/rmas/CustomerRmaForm.vue</file></path><path><editType>edit</editType><file>app/pages/sales/customer-rma/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/rma/update.put.ts</file></path><path><editType>edit</editType><file>app/pages/sales/customer-rma/create.vue</file></path><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><affectedPath>app/composables/menu/admin/materials.ts</affectedPath><affectedPath>android/update-files/history.json</affectedPath><affectedPath>server/api/materials/locators/priority-recommendations.get.ts</affectedPath><affectedPath>app/pages/materials/locator-priorities.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>edf7ef11f411205826f051991c8cd1c9938edfd2</commitId><timestamp>1784065584000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add priority locator page
</comment><date>2026-07-14 23:46:24 +0200</date><id>edf7ef11f411205826f051991c8cd1c9938edfd2</id><msg>add priority locator page</msg><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>android/update-files/history.json</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path><path><editType>add</editType><file>app/pages/materials/locator-priorities.vue</file></path><path><editType>edit</editType><file>app/composables/menu/admin/materials.ts</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>add</editType><file>server/api/materials/locators/priority-recommendations.get.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>674</buildNumber><marked><SHA1>a03c1f34605981d1fd5d7ca54e37e35fbd2f4a5a</SHA1><branch><SHA1>a03c1f34605981d1fd5d7ca54e37e35fbd2f4a5a</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>a03c1f34605981d1fd5d7ca54e37e35fbd2f4a5a</SHA1><branch><SHA1>a03c1f34605981d1fd5d7ca54e37e35fbd2f4a5a</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>a03c1f34605981d1fd5d7ca54e37e35fbd2f4a5a</SHA1><branch><SHA1>a03c1f34605981d1fd5d7ca54e37e35fbd2f4a5a</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#674</displayName><duration>60237</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #674</fullDisplayName><id>674</id><inProgress>false</inProgress><keepLog>false</keepLog><number>674</number><queueId>5400</queueId><result>SUCCESS</result><timestamp>1783987200971</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/674/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>public/favicon-32x32.png</affectedPath><affectedPath>public/icon-384x384.png</affectedPath><affectedPath>public/favicon-16x16.png</affectedPath><affectedPath>public/icon-72x72.png</affectedPath><affectedPath>public/icon-192x192.png</affectedPath><affectedPath>public/icon-144x144.png</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>public/favicon.ico</affectedPath><affectedPath>public/assets/logship-mark.png</affectedPath><affectedPath>public/assets/logship-logo-light.png</affectedPath><affectedPath>public/assets/logo-white.png</affectedPath><affectedPath>app/pages/signin.vue</affectedPath><affectedPath>app/pages/select-role.vue</affectedPath><affectedPath>public/assets/logo-medium.png</affectedPath><affectedPath>app/pages/register.vue</affectedPath><affectedPath>public/favicon.png</affectedPath><affectedPath>public/icon-maskable-512x512.png</affectedPath><affectedPath>public/assets/logship-logo-dark.png</affectedPath><affectedPath>app/components/BaseSideBar.vue</affectedPath><affectedPath>public/icon-152x152.png</affectedPath><affectedPath>server/routes/manifest.json.get.ts</affectedPath><affectedPath>public/icon-96x96.png</affectedPath><affectedPath>public/icon-512x512.png</affectedPath><affectedPath>app/pages/forgot-password.vue</affectedPath><affectedPath>scripts/README.md</affectedPath><affectedPath>public/apple-touch-icon.png</affectedPath><affectedPath>scripts/generate-icons.js</affectedPath><affectedPath>public/icon.png</affectedPath><affectedPath>public/icon-128x128.png</affectedPath><affectedPath>public/icon.svg</affectedPath><affectedPath>public/assets/Logo.png</affectedPath><affectedPath>public/icon-maskable-192x192.png</affectedPath><commitId>93a8603e8cecad95a90fe9b223dcffe06bd35aad</commitId><timestamp>1783933741000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add new logo
</comment><date>2026-07-13 11:09:01 +0200</date><id>93a8603e8cecad95a90fe9b223dcffe06bd35aad</id><msg>add new logo</msg><path><editType>edit</editType><file>public/icon-144x144.png</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>public/favicon.ico</file></path><path><editType>add</editType><file>public/favicon-16x16.png</file></path><path><editType>edit</editType><file>app/pages/forgot-password.vue</file></path><path><editType>add</editType><file>public/assets/logship-mark.png</file></path><path><editType>edit</editType><file>app/pages/select-role.vue</file></path><path><editType>edit</editType><file>public/icon-72x72.png</file></path><path><editType>add</editType><file>public/icon-maskable-192x192.png</file></path><path><editType>delete</editType><file>public/icon.svg</file></path><path><editType>edit</editType><file>scripts/README.md</file></path><path><editType>edit</editType><file>public/icon-384x384.png</file></path><path><editType>delete</editType><file>public/favicon.png</file></path><path><editType>add</editType><file>public/icon.png</file></path><path><editType>edit</editType><file>app/components/BaseSideBar.vue</file></path><path><editType>delete</editType><file>public/assets/logo-medium.png</file></path><path><editType>edit</editType><file>app/pages/signin.vue</file></path><path><editType>edit</editType><file>public/icon-128x128.png</file></path><path><editType>add</editType><file>public/icon-maskable-512x512.png</file></path><path><editType>delete</editType><file>public/assets/logo-white.png</file></path><path><editType>edit</editType><file>public/icon-152x152.png</file></path><path><editType>edit</editType><file>public/icon-192x192.png</file></path><path><editType>delete</editType><file>public/assets/Logo.png</file></path><path><editType>edit</editType><file>server/routes/manifest.json.get.ts</file></path><path><editType>edit</editType><file>app/pages/register.vue</file></path><path><editType>add</editType><file>public/apple-touch-icon.png</file></path><path><editType>add</editType><file>public/assets/logship-logo-dark.png</file></path><path><editType>edit</editType><file>public/icon-512x512.png</file></path><path><editType>add</editType><file>public/favicon-32x32.png</file></path><path><editType>add</editType><file>public/assets/logship-logo-light.png</file></path><path><editType>edit</editType><file>public/icon-96x96.png</file></path><path><editType>edit</editType><file>scripts/generate-icons.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/requests/my-tickets/create.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>9e6dac12114bfd269d931899db226098ebe12c12</commitId><timestamp>1783934665000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>assign ticket by default to others
</comment><date>2026-07-13 11:24:25 +0200</date><id>9e6dac12114bfd269d931899db226098ebe12c12</id><msg>assign ticket by default to others</msg><path><editType>edit</editType><file>app/pages/requests/my-tickets/create.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/return.vue</affectedPath><commitId>97c03478b01adfef7c4e24bd4b4f6c2fb29e9b90</commitId><timestamp>1783935609000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>include amazon rma number on return scanning to verify for
</comment><date>2026-07-13 11:40:09 +0200</date><id>97c03478b01adfef7c4e24bd4b4f6c2fb29e9b90</id><msg>include amazon rma number on return scanning to verify for</msg><path><editType>edit</editType><file>app/pages/mobile/return.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/print/relabel-labels.post.ts</affectedPath><affectedPath>app/composables/useRelabelDocs.ts</affectedPath><commitId>1ae234f68c2e3ea3464659f47579d04eb6540fe9</commitId><timestamp>1783945205000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>new format amazon fba labels
</comment><date>2026-07-13 14:20:05 +0200</date><id>1ae234f68c2e3ea3464659f47579d04eb6540fe9</id><msg>new format amazon fba labels</msg><path><editType>edit</editType><file>app/composables/useRelabelDocs.ts</file></path><path><editType>edit</editType><file>server/api/print/relabel-labels.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/ffn/bom-products-list.post.ts</affectedPath><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><affectedPath>server/api/ffn/sync-bom-components.post.ts</affectedPath><affectedPath>app/components/settings/JtlBomSyncModal.vue</affectedPath><commitId>0217d6e3f99e5bd330c677f23e49af715c9afb06</commitId><timestamp>1783947777000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add bom component sync button to ordersource for jtl-ffn
</comment><date>2026-07-13 15:02:57 +0200</date><id>0217d6e3f99e5bd330c677f23e49af715c9afb06</id><msg>add bom component sync button to ordersource for jtl-ffn</msg><path><editType>add</editType><file>app/components/settings/JtlBomSyncModal.vue</file></path><path><editType>add</editType><file>server/api/ffn/bom-products-list.post.ts</file></path><path><editType>add</editType><file>server/api/ffn/sync-bom-components.post.ts</file></path><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/images/Logo/Logo 5-04.psd</affectedPath><affectedPath>reference/images/Logo/Logo 5-02.svg</affectedPath><affectedPath>reference/images/Logo/Logo 5-02.jpg</affectedPath><affectedPath>reference/images/Logo/Logo 5-03.pdf</affectedPath><affectedPath>reference/images/Logo/Logo 5-02.eps</affectedPath><affectedPath>reference/images/Logo/Logo 5-02.png</affectedPath><affectedPath>server/api/search/[query]/index.get.ts</affectedPath><affectedPath>reference/images/Logo/Logo 5-01.eps</affectedPath><affectedPath>reference/images/Logo/Logo 5-02.ai</affectedPath><affectedPath>reference/images/Logo/Logo 5-03.psd</affectedPath><affectedPath>reference/images/Logo/Logo 5-04.pdf</affectedPath><affectedPath>reference/images/Logo/Logo 5-01.jpg</affectedPath><affectedPath>reference/images/Logo/Logo 5-01.svg</affectedPath><affectedPath>reference/images/Logo/Logo 5-04.ai</affectedPath><affectedPath>reference/images/Logo/3D MocKup .jpg</affectedPath><affectedPath>reference/images/Logo/Logo 5-01.png</affectedPath><affectedPath>reference/images/Logo/Logo 5-04.jpg</affectedPath><affectedPath>reference/images/Logo/Logo 5-04.svg</affectedPath><affectedPath>reference/images/Logo/Logo 5-01.pdf</affectedPath><affectedPath>reference/images/Logo/Logo 5-02.psd</affectedPath><affectedPath>reference/images/Logo/Logo 5-04.eps</affectedPath><affectedPath>reference/images/quotes_examples/Vertrag_Wonderhome_2026.docx</affectedPath><affectedPath>reference/images/Logo/Logo 5-04.png</affectedPath><affectedPath>reference/images/quotes_examples/Angebot_Fulfillment_Ruppert_2026.docx</affectedPath><affectedPath>reference/images/Logo/Logo 5-01.ai</affectedPath><affectedPath>reference/images/Logo/Logo 5-03.svg</affectedPath><affectedPath>reference/images/Logo/Logo 5-02.pdf</affectedPath><affectedPath>app/components/SearchModal.vue</affectedPath><affectedPath>reference/images/Logo/Logo 5-03.jpg</affectedPath><affectedPath>reference/images/Logo/Logo 5-01.psd</affectedPath><affectedPath>reference/images/Logo/Logo 5-03.eps</affectedPath><affectedPath>reference/images/Logo/Logo 5-03.ai</affectedPath><affectedPath>reference/images/Logo/Logo 5-03.png</affectedPath><affectedPath>app/components/settings/JtlBomSyncModal.vue</affectedPath><commitId>427702be4f3aa11d4f381be67c40417dc993ded9</commitId><timestamp>1783951674000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>disable fuzzy search on search modal and show contact phone number
</comment><date>2026-07-13 16:07:54 +0200</date><id>427702be4f3aa11d4f381be67c40417dc993ded9</id><msg>disable fuzzy search on search modal and show contact phone number</msg><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-01.pdf</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-01.psd</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-02.png</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-03.eps</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-02.ai</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-02.eps</file></path><path><editType>add</editType><file>reference/images/quotes_examples/Angebot_Fulfillment_Ruppert_2026.docx</file></path><path><editType>add</editType><file>reference/images/quotes_examples/Vertrag_Wonderhome_2026.docx</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-03.psd</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-01.ai</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-03.ai</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-01.png</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-02.psd</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-03.jpg</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-04.psd</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-03.svg</file></path><path><editType>add</editType><file>reference/images/Logo/3D MocKup .jpg</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-03.png</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-04.eps</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-01.jpg</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-02.jpg</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-02.svg</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-01.svg</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-01.eps</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-02.pdf</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-03.pdf</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-04.jpg</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-04.pdf</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-04.png</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-04.svg</file></path><path><editType>add</editType><file>reference/images/Logo/Logo 5-04.ai</file></path><path><editType>edit</editType><file>app/components/settings/JtlBomSyncModal.vue</file></path><path><editType>edit</editType><file>server/api/search/[query]/index.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/assets/offers/logyou-logo-dark.png</affectedPath><affectedPath>server/utils/offers/quotePdf.ts</affectedPath><affectedPath>app/pages/partners/partners/[id]/edit.vue</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><affectedPath>server/utils/inbox/strapiAttach.ts</affectedPath><affectedPath>public/assets/logyou-logo-color.png</affectedPath><affectedPath>app/pages/users/leads/[id]/edit.vue</affectedPath><affectedPath>server/api/offers/quote/send.post.ts</affectedPath><affectedPath>server/api/offers/quote/preview.post.ts</affectedPath><affectedPath>server/assets/offers/logyou-logo.png</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>9c80934f5e0c9bd4e2c4d81199227496b2f63c94</commitId><timestamp>1783956267000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add quote creation option to lead and partner
</comment><date>2026-07-13 17:24:27 +0200</date><id>9c80934f5e0c9bd4e2c4d81199227496b2f63c94</id><msg>add quote creation option to lead and partner</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/partners/partners/[id]/edit.vue</file></path><path><editType>add</editType><file>server/utils/offers/quotePdf.ts</file></path><path><editType>add</editType><file>public/assets/logyou-logo-color.png</file></path><path><editType>add</editType><file>server/api/offers/quote/send.post.ts</file></path><path><editType>add</editType><file>server/assets/offers/logyou-logo-dark.png</file></path><path><editType>edit</editType><file>server/utils/inbox/strapiAttach.ts</file></path><path><editType>add</editType><file>server/assets/offers/logyou-logo.png</file></path><path><editType>add</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>add</editType><file>app/composables/useOfferQuote.ts</file></path><path><editType>edit</editType><file>app/pages/users/leads/[id]/edit.vue</file></path><path><editType>add</editType><file>server/api/offers/quote/preview.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/offers/quotePdf.ts</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>bbeb29d1f0a344cfe7f8785e68a75649bcea411a</commitId><timestamp>1783973067000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix preview
</comment><date>2026-07-13 22:04:27 +0200</date><id>bbeb29d1f0a344cfe7f8785e68a75649bcea411a</id><msg>fix preview</msg><path><editType>edit</editType><file>server/utils/offers/quotePdf.ts</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/MobileActionsMenu.vue</affectedPath><affectedPath>server/api/offers/contract/send.post.ts</affectedPath><affectedPath>app/pages/partners/partners/[id]/edit.vue</affectedPath><affectedPath>app/composables/useOfferContract.ts</affectedPath><affectedPath>reference/contracts/Vertrag_KFP_2026_Ver2.pdf</affectedPath><affectedPath>reference/contracts/Contract_Fulfillment_Gutology_2026_Revised.pdf</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>server/utils/offers/contractTexts.ts</affectedPath><affectedPath>reference/contracts/Vertrag_Namaste_Kids_eV_2026.pdf</affectedPath><affectedPath>server/utils/offers/contractPdf.ts</affectedPath><affectedPath>app/components/offers/ContractModal.vue</affectedPath><affectedPath>server/api/offers/contract/preview.post.ts</affectedPath><affectedPath>app/pages/users/leads/[id]/edit.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>a03c1f34605981d1fd5d7ca54e37e35fbd2f4a5a</commitId><timestamp>1783982189000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add contract option to create
</comment><date>2026-07-14 00:36:29 +0200</date><id>a03c1f34605981d1fd5d7ca54e37e35fbd2f4a5a</id><msg>add contract option to create</msg><path><editType>add</editType><file>app/composables/useOfferContract.ts</file></path><path><editType>add</editType><file>reference/contracts/Vertrag_KFP_2026_Ver2.pdf</file></path><path><editType>add</editType><file>server/api/offers/contract/send.post.ts</file></path><path><editType>add</editType><file>server/utils/offers/contractTexts.ts</file></path><path><editType>add</editType><file>reference/contracts/Contract_Fulfillment_Gutology_2026_Revised.pdf</file></path><path><editType>add</editType><file>reference/contracts/Vertrag_Namaste_Kids_eV_2026.pdf</file></path><path><editType>add</editType><file>server/utils/offers/contractPdf.ts</file></path><path><editType>add</editType><file>app/components/offers/ContractModal.vue</file></path><path><editType>edit</editType><file>app/pages/users/leads/[id]/edit.vue</file></path><path><editType>add</editType><file>server/api/offers/contract/preview.post.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>app/components/MobileActionsMenu.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/pages/partners/partners/[id]/edit.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>673</buildNumber><marked><SHA1>68d55b33ce355f0250e887cd89ce59769aa9a598</SHA1><branch><SHA1>68d55b33ce355f0250e887cd89ce59769aa9a598</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>68d55b33ce355f0250e887cd89ce59769aa9a598</SHA1><branch><SHA1>68d55b33ce355f0250e887cd89ce59769aa9a598</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>68d55b33ce355f0250e887cd89ce59769aa9a598</SHA1><branch><SHA1>68d55b33ce355f0250e887cd89ce59769aa9a598</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#673</displayName><duration>59701</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #673</fullDisplayName><id>673</id><inProgress>false</inProgress><keepLog>false</keepLog><number>673</number><queueId>5393</queueId><result>SUCCESS</result><timestamp>1783900800971</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/673/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/orders/[id]/order-line/index.post.ts</affectedPath><affectedPath>server/api/print/relabel-labels.post.ts</affectedPath><affectedPath>app/pages/sales/orders/[id]/view.vue</affectedPath><affectedPath>server/api/orders/[id]/document-action.post.ts</affectedPath><affectedPath>app/components/integrations/CommissionCustomsModal.vue</affectedPath><affectedPath>app/pages/sales/orders/create.vue</affectedPath><affectedPath>app/components/sales/RelabelReportModal.vue</affectedPath><affectedPath>app/components/sales/RelabelLabelPrintModal.vue</affectedPath><affectedPath>app/composables/useRelabelDocs.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/components/sales/OrderForm.vue</affectedPath><affectedPath>server/utils/relabelOrderHelper.ts</affectedPath><affectedPath>server/api/orders/store.post.ts</affectedPath><affectedPath>app/pages/integrations/commission.vue</affectedPath><affectedPath>app/components/sales/RelabelCompleteConfirmModal.vue</affectedPath><affectedPath>app/composables/useFbaShipper.ts</affectedPath><affectedPath>server/api/partners/partners/quick-add.post.ts</affectedPath><affectedPath>app/components/OrderQuickAddModal.vue</affectedPath><affectedPath>app/pages/partners/partners/add.vue</affectedPath><affectedPath>app/components/partners/PartnerQuickForm.vue</affectedPath><affectedPath>server/api/orders/[id]/order-line/index.put.ts</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>server/api/orders/update.put.ts</affectedPath><affectedPath>app/components/partners/PartnerOrderLineTable.vue</affectedPath><affectedPath>app/components/sales/OrderDetailRecordLine.vue</affectedPath><commitId>99f3d521b250a570603663a98dd38770ed32741f</commitId><timestamp>1783892109000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add fba relabel function
</comment><date>2026-07-12 23:35:09 +0200</date><id>99f3d521b250a570603663a98dd38770ed32741f</id><msg>add fba relabel function</msg><path><editType>add</editType><file>app/components/sales/RelabelCompleteConfirmModal.vue</file></path><path><editType>add</editType><file>app/composables/useFbaShipper.ts</file></path><path><editType>edit</editType><file>app/components/partners/PartnerOrderLineTable.vue</file></path><path><editType>edit</editType><file>server/api/orders/[id]/order-line/index.put.ts</file></path><path><editType>edit</editType><file>server/api/orders/[id]/document-action.post.ts</file></path><path><editType>edit</editType><file>app/components/partners/PartnerQuickForm.vue</file></path><path><editType>add</editType><file>app/composables/useRelabelDocs.ts</file></path><path><editType>edit</editType><file>app/components/sales/OrderDetailRecordLine.vue</file></path><path><editType>edit</editType><file>server/api/orders/store.post.ts</file></path><path><editType>edit</editType><file>server/api/partners/partners/quick-add.post.ts</file></path><path><editType>edit</editType><file>app/components/integrations/CommissionCustomsModal.vue</file></path><path><editType>edit</editType><file>server/api/orders/[id]/order-line/index.post.ts</file></path><path><editType>edit</editType><file>server/api/orders/update.put.ts</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>add</editType><file>server/api/print/relabel-labels.post.ts</file></path><path><editType>edit</editType><file>app/pages/partners/partners/add.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/create.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/view.vue</file></path><path><editType>edit</editType><file>app/components/OrderQuickAddModal.vue</file></path><path><editType>edit</editType><file>app/components/sales/OrderForm.vue</file></path><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path><path><editType>add</editType><file>server/utils/relabelOrderHelper.ts</file></path><path><editType>add</editType><file>app/components/sales/RelabelLabelPrintModal.vue</file></path><path><editType>add</editType><file>app/components/sales/RelabelReportModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/commission/parcels/contents.post.ts</affectedPath><affectedPath>app/composables/useParcelContentsDoc.ts</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>app/components/sales/ParcelContentsModal.vue</affectedPath><affectedPath>app/pages/integrations/commission.vue</affectedPath><affectedPath>app/composables/useRelabelDocs.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/utils/loadPdfMake.ts</affectedPath><commitId>68d55b33ce355f0250e887cd89ce59769aa9a598</commitId><timestamp>1783894119000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add package manifest
</comment><date>2026-07-13 00:08:39 +0200</date><id>68d55b33ce355f0250e887cd89ce59769aa9a598</id><msg>add package manifest</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/api/commission/parcels/contents.post.ts</file></path><path><editType>add</editType><file>app/components/sales/ParcelContentsModal.vue</file></path><path><editType>edit</editType><file>app/composables/useRelabelDocs.ts</file></path><path><editType>add</editType><file>app/utils/loadPdfMake.ts</file></path><path><editType>add</editType><file>app/composables/useParcelContentsDoc.ts</file></path><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>672</buildNumber><marked><SHA1>91cce03f510d9b1a9ffe09efb8a679f29dffa824</SHA1><branch><SHA1>91cce03f510d9b1a9ffe09efb8a679f29dffa824</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>91cce03f510d9b1a9ffe09efb8a679f29dffa824</SHA1><branch><SHA1>91cce03f510d9b1a9ffe09efb8a679f29dffa824</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>91cce03f510d9b1a9ffe09efb8a679f29dffa824</SHA1><branch><SHA1>91cce03f510d9b1a9ffe09efb8a679f29dffa824</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#672</displayName><duration>57055</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #672</fullDisplayName><id>672</id><inProgress>false</inProgress><keepLog>false</keepLog><number>672</number><queueId>5391</queueId><result>SUCCESS</result><timestamp>1783814400971</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/672/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>671</buildNumber><marked><SHA1>91cce03f510d9b1a9ffe09efb8a679f29dffa824</SHA1><branch><SHA1>91cce03f510d9b1a9ffe09efb8a679f29dffa824</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>91cce03f510d9b1a9ffe09efb8a679f29dffa824</SHA1><branch><SHA1>91cce03f510d9b1a9ffe09efb8a679f29dffa824</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>91cce03f510d9b1a9ffe09efb8a679f29dffa824</SHA1><branch><SHA1>91cce03f510d9b1a9ffe09efb8a679f29dffa824</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#671</displayName><duration>56608</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #671</fullDisplayName><id>671</id><inProgress>false</inProgress><keepLog>false</keepLog><number>671</number><queueId>5390</queueId><result>SUCCESS</result><timestamp>1783728000971</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/671/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/commission/parcels/dhl/multi.post.ts</affectedPath><affectedPath>server/api/commission/parcels/dhl/index.post.ts</affectedPath><affectedPath>app/pages/integrations/commission.vue</affectedPath><affectedPath>reference/recipes.md</affectedPath><commitId>91cce03f510d9b1a9ffe09efb8a679f29dffa824</commitId><timestamp>1783687881000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix spain commission
</comment><date>2026-07-10 14:51:21 +0200</date><id>91cce03f510d9b1a9ffe09efb8a679f29dffa824</id><msg>fix spain commission</msg><path><editType>edit</editType><file>server/api/commission/parcels/dhl/multi.post.ts</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dhl/index.post.ts</file></path><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>670</buildNumber><marked><SHA1>960e84e0c1bcf90a3325ecd16d08d8628caf7724</SHA1><branch><SHA1>960e84e0c1bcf90a3325ecd16d08d8628caf7724</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>960e84e0c1bcf90a3325ecd16d08d8628caf7724</SHA1><branch><SHA1>960e84e0c1bcf90a3325ecd16d08d8628caf7724</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>960e84e0c1bcf90a3325ecd16d08d8628caf7724</SHA1><branch><SHA1>960e84e0c1bcf90a3325ecd16d08d8628caf7724</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#670</displayName><duration>58464</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #670</fullDisplayName><id>670</id><inProgress>false</inProgress><keepLog>false</keepLog><number>670</number><queueId>5388</queueId><result>SUCCESS</result><timestamp>1783641600971</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/670/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/fulfillment/crossdock/match-proposal.get.ts</affectedPath><affectedPath>server/api/fulfillment/crossdock/board.get.ts</affectedPath><commitId>e6ca7411221750852158d33e870ebfa576ee6cfc</commitId><timestamp>1783582607000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix rest cross docking
</comment><date>2026-07-09 09:36:47 +0200</date><id>e6ca7411221750852158d33e870ebfa576ee6cfc</id><msg>fix rest cross docking</msg><path><editType>edit</editType><file>server/api/fulfillment/crossdock/match-proposal.get.ts</file></path><path><editType>edit</editType><file>server/api/fulfillment/crossdock/board.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/ProductChooser.vue</affectedPath><affectedPath>server/api/materials/products/filter.get.ts</affectedPath><affectedPath>app/components/partners/PartnerOrderLineTable.vue</affectedPath><affectedPath>app/components/sales/OrderLineTable.vue</affectedPath><affectedPath>app/components/sales/OrderDetailRecordLine.vue</affectedPath><affectedPath>server/api/partners/partners/quick-add.post.ts</affectedPath><commitId>1e58f2a956d94275cabca96c81e21c25b700fcb0</commitId><timestamp>1783588235000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>filter bom on order creation
</comment><date>2026-07-09 11:10:35 +0200</date><id>1e58f2a956d94275cabca96c81e21c25b700fcb0</id><msg>filter bom on order creation</msg><path><editType>edit</editType><file>app/components/sales/OrderDetailRecordLine.vue</file></path><path><editType>edit</editType><file>app/components/ProductChooser.vue</file></path><path><editType>edit</editType><file>server/api/materials/products/filter.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/partners/quick-add.post.ts</file></path><path><editType>edit</editType><file>app/components/partners/PartnerOrderLineTable.vue</file></path><path><editType>edit</editType><file>app/components/sales/OrderLineTable.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/promotion-groups/[id]/line/index.get.ts</affectedPath><affectedPath>server/api/materials/promotion-groups/[id]/line/index.delete.ts</affectedPath><affectedPath>server/api/models/[model].get.ts</affectedPath><affectedPath>server/api/materials/promotions/[id]/quantity-distribution/index.post.ts</affectedPath><affectedPath>server/api/admin/tenants/[id]/tenant-share/index.get.ts</affectedPath><affectedPath>app/pages/mobile/return.vue</affectedPath><affectedPath>app/pages/integrations/returns-desktop.vue</affectedPath><affectedPath>server/api/orders/ag-grid/notfulfilled.post.ts</affectedPath><affectedPath>server/api/filters/[model]/[query].get.ts</affectedPath><affectedPath>server/api/orders/sales/stream.get.ts</affectedPath><affectedPath>server/api/materials/promotions/[id]/quantity-distribution/index.delete.ts</affectedPath><affectedPath>.env-dev</affectedPath><affectedPath>server/api/idempiere-auth/warehouses/[client]/[role]/[organization].get.ts</affectedPath><affectedPath>server/api/commission/trackings/[number]/shipment.get.ts</affectedPath><affectedPath>server/api/invoices/payjoe-upload.post.ts</affectedPath><affectedPath>server/api/materials/promotion-groups/[id]/line/index.post.ts</affectedPath><affectedPath>server/api/idempiere-auth/select-role.post.ts</affectedPath><affectedPath>server/api/idempiere-auth/organizations/[client]/[role].get.ts</affectedPath><affectedPath>server/api/invoices/lexoffice-upload.post.ts</affectedPath><affectedPath>server/api/fulfillment/generate-orders.post.ts</affectedPath><affectedPath>server/api/idempiere-auth/login.post.ts</affectedPath><affectedPath>server/api/materials/promotions/[id]/quantity-distribution/index.get.ts</affectedPath><affectedPath>server/api/idempiere-auth/session-refresh.post.ts</affectedPath><affectedPath>server/utils/refreshTokenHelper.ts</affectedPath><affectedPath>server/utils/authCooldown.ts</affectedPath><affectedPath>server/api/requests/requests/latest-updates.get.ts</affectedPath><affectedPath>server/api/materials/promotions/[id]/quantity-distribution/index.put.ts</affectedPath><affectedPath>server/api/orders/ag-grid/notfulfilled-5days.post.ts</affectedPath><affectedPath>server/utils/tokenRefreshCore.ts</affectedPath><affectedPath>server/utils/inoutDocType.ts</affectedPath><affectedPath>server/api/orders/ag-grid/summary.post.ts</affectedPath><affectedPath>server/api/materials/promotion-groups/[id]/line/index.put.ts</affectedPath><affectedPath>server/utils/idempiereDate.ts</affectedPath><affectedPath>server/api/inouts/quick-return.post.ts</affectedPath><affectedPath>server/api/inouts/store.post.ts</affectedPath><affectedPath>app/pages/mobile/commission.vue</affectedPath><affectedPath>server/api/orders/ag-grid/notfulfilled-fastlane.post.ts</affectedPath><affectedPath>server/utils/forceLogoutHelper.ts</affectedPath><affectedPath>server/api/tracking/[number].get.ts</affectedPath><affectedPath>app/pages/mobile/index.vue</affectedPath><affectedPath>server/api/orders/ag-grid/so.post.ts</affectedPath><affectedPath>server/api/inouts/quick-rma.post.ts</affectedPath><affectedPath>server/utils/promotionModels.ts</affectedPath><affectedPath>server/api/partners/partner-locations/[id]/index.get.ts</affectedPath><affectedPath>server/api/orders/batch-lines.post.ts</affectedPath><affectedPath>.env-prod</affectedPath><commitId>226e25a8347bdf639af9dffbc2ebb3604e1b7dbe</commitId><timestamp>1783593209000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>bug fixes generel
</comment><date>2026-07-09 12:33:29 +0200</date><id>226e25a8347bdf639af9dffbc2ebb3604e1b7dbe</id><msg>bug fixes generel</msg><path><editType>add</editType><file>server/utils/inoutDocType.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/return.vue</file></path><path><editType>edit</editType><file>server/api/orders/sales/stream.get.ts</file></path><path><editType>add</editType><file>server/utils/authCooldown.ts</file></path><path><editType>edit</editType><file>server/api/orders/ag-grid/notfulfilled.post.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/commission.vue</file></path><path><editType>edit</editType><file>server/api/invoices/payjoe-upload.post.ts</file></path><path><editType>edit</editType><file>server/api/models/[model].get.ts</file></path><path><editType>edit</editType><file>app/pages/integrations/returns-desktop.vue</file></path><path><editType>edit</editType><file>server/api/inouts/quick-return.post.ts</file></path><path><editType>edit</editType><file>server/api/requests/requests/latest-updates.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/promotion-groups/[id]/line/index.put.ts</file></path><path><editType>edit</editType><file>server/api/commission/trackings/[number]/shipment.get.ts</file></path><path><editType>edit</editType><file>server/api/orders/ag-grid/summary.post.ts</file></path><path><editType>edit</editType><file>server/api/materials/promotions/[id]/quantity-distribution/index.post.ts</file></path><path><editType>edit</editType><file>server/api/filters/[model]/[query].get.ts</file></path><path><editType>edit</editType><file>server/api/orders/ag-grid/notfulfilled-5days.post.ts</file></path><path><editType>edit</editType><file>server/api/idempiere-auth/organizations/[client]/[role].get.ts</file></path><path><editType>add</editType><file>server/utils/promotionModels.ts</file></path><path><editType>add</editType><file>server/utils/tokenRefreshCore.ts</file></path><path><editType>edit</editType><file>server/api/idempiere-auth/session-refresh.post.ts</file></path><path><editType>edit</editType><file>server/api/tracking/[number].get.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/index.vue</file></path><path><editType>edit</editType><file>server/api/materials/promotions/[id]/quantity-distribution/index.put.ts</file></path><path><editType>edit</editType><file>server/api/materials/promotion-groups/[id]/line/index.post.ts</file></path><path><editType>edit</editType><file>server/api/orders/batch-lines.post.ts</file></path><path><editType>edit</editType><file>server/utils/forceLogoutHelper.ts</file></path><path><editType>edit</editType><file>server/api/admin/tenants/[id]/tenant-share/index.get.ts</file></path><path><editType>edit</editType><file>server/api/fulfillment/generate-orders.post.ts</file></path><path><editType>edit</editType><file>server/api/materials/promotions/[id]/quantity-distribution/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/partner-locations/[id]/index.get.ts</file></path><path><editType>edit</editType><file>.env-dev</file></path><path><editType>edit</editType><file>server/api/idempiere-auth/login.post.ts</file></path><path><editType>edit</editType><file>server/api/materials/promotion-groups/[id]/line/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/promotions/[id]/quantity-distribution/index.delete.ts</file></path><path><editType>edit</editType><file>.env-prod</file></path><path><editType>edit</editType><file>server/api/inouts/quick-rma.post.ts</file></path><path><editType>edit</editType><file>server/api/inouts/store.post.ts</file></path><path><editType>edit</editType><file>server/api/invoices/lexoffice-upload.post.ts</file></path><path><editType>edit</editType><file>server/api/materials/promotion-groups/[id]/line/index.delete.ts</file></path><path><editType>edit</editType><file>server/api/idempiere-auth/select-role.post.ts</file></path><path><editType>edit</editType><file>server/api/orders/ag-grid/so.post.ts</file></path><path><editType>edit</editType><file>server/utils/refreshTokenHelper.ts</file></path><path><editType>edit</editType><file>server/api/idempiere-auth/warehouses/[client]/[role]/[organization].get.ts</file></path><path><editType>edit</editType><file>server/api/orders/ag-grid/notfulfilled-fastlane.post.ts</file></path><path><editType>add</editType><file>server/utils/idempiereDate.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/ProductSearchSelect.vue</affectedPath><affectedPath>app/components/partners/PartnerOrderLineTable.vue</affectedPath><commitId>4a735d1615d0707b658c52c033d903b5fb281027</commitId><timestamp>1783595208000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>refactor the position adding on new quick orders
</comment><date>2026-07-09 13:06:48 +0200</date><id>4a735d1615d0707b658c52c033d903b5fb281027</id><msg>refactor the position adding on new quick orders</msg><path><editType>add</editType><file>app/components/ProductSearchSelect.vue</file></path><path><editType>edit</editType><file>app/components/partners/PartnerOrderLineTable.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/products/search.get.ts</affectedPath><affectedPath>app/pages/materials/products/create.vue</affectedPath><affectedPath>app/pages/materials/products/[id]/duplicate.vue</affectedPath><affectedPath>app/pages/mobile/return.vue</affectedPath><affectedPath>app/pages/mobile/commission.vue</affectedPath><affectedPath>app/utils/scanCode.ts</affectedPath><affectedPath>app/components/materials/ProductForm.vue</affectedPath><affectedPath>server/api/materials/products/store.post.ts</affectedPath><affectedPath>server/api/materials/products/update.put.ts</affectedPath><affectedPath>app/pages/materials/products/[id]/edit.vue</affectedPath><affectedPath>app/pages/mobile/inventory.vue</affectedPath><affectedPath>app/components/settings/JtlSelectiveUpdateModal.vue</affectedPath><affectedPath>app/pages/mobile/index.vue</affectedPath><affectedPath>server/api/mobile/product-search.post.ts</affectedPath><affectedPath>server/api/mobile/product-lookup.post.ts</affectedPath><commitId>0cf28873ea7c175136cc16302efcf4eeb1702cd7</commitId><timestamp>1783597455000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add fnsku amazon identifier to product and mobile
</comment><date>2026-07-09 13:44:15 +0200</date><id>0cf28873ea7c175136cc16302efcf4eeb1702cd7</id><msg>add fnsku amazon identifier to product and mobile</msg><path><editType>edit</editType><file>server/api/materials/products/search.get.ts</file></path><path><editType>edit</editType><file>app/pages/materials/products/create.vue</file></path><path><editType>edit</editType><file>server/api/materials/products/update.put.ts</file></path><path><editType>edit</editType><file>app/pages/materials/products/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/utils/scanCode.ts</file></path><path><editType>edit</editType><file>app/components/settings/JtlSelectiveUpdateModal.vue</file></path><path><editType>edit</editType><file>app/pages/materials/products/[id]/duplicate.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/inventory.vue</file></path><path><editType>edit</editType><file>server/api/mobile/product-search.post.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/commission.vue</file></path><path><editType>edit</editType><file>server/api/mobile/product-lookup.post.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/store.post.ts</file></path><path><editType>edit</editType><file>app/components/materials/ProductForm.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/return.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><affectedPath>server/api/commission/system-status.get.ts</affectedPath><affectedPath>app/composables/useCommissionSystemStatus.ts</affectedPath><affectedPath>app/components/integrations/CommissionSystemStatusPill.vue</affectedPath><affectedPath>android/update-files/history.json</affectedPath><affectedPath>app/pages/integrations/commission.vue</affectedPath><affectedPath>server/utils/commissionSystemStatus.ts</affectedPath><affectedPath>app/components/integrations/CommissionOfflineWarningModal.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/pages/mobile/commission.vue</affectedPath><commitId>960fc2b557cdc5e01bbc3d11deecc921d2c35b3f</commitId><timestamp>1783601844000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show indicator if laravel is down on commission
</comment><date>2026-07-09 14:57:24 +0200</date><id>960fc2b557cdc5e01bbc3d11deecc921d2c35b3f</id><msg>show indicator if laravel is down on commission</msg><path><editType>edit</editType><file>android/update-files/history.json</file></path><path><editType>add</editType><file>app/components/integrations/CommissionSystemStatusPill.vue</file></path><path><editType>add</editType><file>server/utils/commissionSystemStatus.ts</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path><path><editType>add</editType><file>server/api/commission/system-status.get.ts</file></path><path><editType>add</editType><file>app/components/integrations/CommissionOfflineWarningModal.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/commission.vue</file></path><path><editType>add</editType><file>app/composables/useCommissionSystemStatus.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><affectedPath>app/pages/settings/order-sources/[id]/edit.vue</affectedPath><affectedPath>app/pages/settings/order-sources/create.vue</affectedPath><affectedPath>server/api/settings/order-sources/update.put.ts</affectedPath><affectedPath>server/api/settings/order-sources/store.post.ts</affectedPath><affectedPath>app/pages/settings/order-sources/[id]/view.vue</affectedPath><commitId>528534d3a40c4b0f1ad012b26d1bde1f07407d2e</commitId><timestamp>1783603752000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add bom product sync control to ordersource - jtl ffn for now only
</comment><date>2026-07-09 15:29:12 +0200</date><id>528534d3a40c4b0f1ad012b26d1bde1f07407d2e</id><msg>add bom product sync control to ordersource - jtl ffn for now only</msg><path><editType>edit</editType><file>app/pages/settings/order-sources/create.vue</file></path><path><editType>edit</editType><file>app/pages/settings/order-sources/[id]/view.vue</file></path><path><editType>edit</editType><file>app/pages/settings/order-sources/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path><path><editType>edit</editType><file>server/api/settings/order-sources/update.put.ts</file></path><path><editType>edit</editType><file>server/api/settings/order-sources/store.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/SearchModal.vue</affectedPath><affectedPath>server/api/search/[query]/index.get.ts</affectedPath><commitId>960e84e0c1bcf90a3325ecd16d08d8628caf7724</commitId><timestamp>1783609123000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>modify search modal display and increase results
</comment><date>2026-07-09 16:58:43 +0200</date><id>960e84e0c1bcf90a3325ecd16d08d8628caf7724</id><msg>modify search modal display and increase results</msg><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path><path><editType>edit</editType><file>server/api/search/[query]/index.get.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>669</buildNumber><marked><SHA1>ac293fe93b5a347e483e4f447c06b1f8a5ddbc4c</SHA1><branch><SHA1>ac293fe93b5a347e483e4f447c06b1f8a5ddbc4c</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>ac293fe93b5a347e483e4f447c06b1f8a5ddbc4c</SHA1><branch><SHA1>ac293fe93b5a347e483e4f447c06b1f8a5ddbc4c</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>ac293fe93b5a347e483e4f447c06b1f8a5ddbc4c</SHA1><branch><SHA1>ac293fe93b5a347e483e4f447c06b1f8a5ddbc4c</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#669</displayName><duration>57539</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #669</fullDisplayName><id>669</id><inProgress>false</inProgress><keepLog>false</keepLog><number>669</number><queueId>5381</queueId><result>SUCCESS</result><timestamp>1783555200972</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/669/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/bi/locator-usage.get.ts</affectedPath><affectedPath>app/pages/bi/locator-usage.vue</affectedPath><commitId>3db78d8120ee4befd4d349bf2ef07fe4b85571e3</commitId><timestamp>1783503094000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add 3th option to show locator usage combined
</comment><date>2026-07-08 11:31:34 +0200</date><id>3db78d8120ee4befd4d349bf2ef07fe4b85571e3</id><msg>add 3th option to show locator usage combined</msg><path><editType>edit</editType><file>server/api/bi/locator-usage.get.ts</file></path><path><editType>edit</editType><file>app/pages/bi/locator-usage.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/procurements/ReceiptForm.vue</affectedPath><affectedPath>app/components/procurements/ReceiptLineTable.vue</affectedPath><affectedPath>server/utils/returnLocatorHelper.ts</affectedPath><affectedPath>server/api/materials/storages/higher-on-hand.get.ts</affectedPath><affectedPath>server/api/materials/products/[id]/index.get.ts</affectedPath><commitId>5f34c0df60fb6c2cacb95df691ff6dfbc1dea70b</commitId><timestamp>1783507333000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix material receipt using locator not for fulfillment
</comment><date>2026-07-08 12:42:13 +0200</date><id>5f34c0df60fb6c2cacb95df691ff6dfbc1dea70b</id><msg>fix material receipt using locator not for fulfillment</msg><path><editType>edit</editType><file>server/api/materials/storages/higher-on-hand.get.ts</file></path><path><editType>edit</editType><file>app/components/procurements/ReceiptForm.vue</file></path><path><editType>edit</editType><file>app/components/procurements/ReceiptLineTable.vue</file></path><path><editType>edit</editType><file>server/utils/returnLocatorHelper.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/index.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/requests/RequestForm.vue</affectedPath><commitId>fc148d5074fe4f3cc401f77eb93acda4ba2eeba1</commitId><timestamp>1783509541000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix changes
</comment><date>2026-07-08 13:19:01 +0200</date><id>fc148d5074fe4f3cc401f77eb93acda4ba2eeba1</id><msg>fix changes</msg><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/OrderForm.vue</affectedPath><affectedPath>app/components/DateTimePickerConfirm.vue</affectedPath><affectedPath>server/api/admin/users/[id]/activity/index.post.ts</affectedPath><affectedPath>app/components/materials/PromotionDetailRecordPreCondition.vue</affectedPath><affectedPath>server/api/admin/users/[id]/activity/index.put.ts</affectedPath><commitId>13a1cb466553aa5da1ada59dca6efdec11dd8812</commitId><timestamp>1783520604000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix enter trackingnumber manual to order
</comment><date>2026-07-08 16:23:24 +0200</date><id>13a1cb466553aa5da1ada59dca6efdec11dd8812</id><msg>fix enter trackingnumber manual to order</msg><path><editType>edit</editType><file>app/components/sales/OrderForm.vue</file></path><path><editType>add</editType><file>app/components/DateTimePickerConfirm.vue</file></path><path><editType>edit</editType><file>app/components/materials/PromotionDetailRecordPreCondition.vue</file></path><path><editType>edit</editType><file>server/api/admin/users/[id]/activity/index.post.ts</file></path><path><editType>edit</editType><file>server/api/admin/users/[id]/activity/index.put.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/orders/index.vue</affectedPath><affectedPath>server/api/orders/ag-grid/summary.post.ts</affectedPath><commitId>d95ca21cbec6d6f84ee19169218cbf747c9c673f</commitId><timestamp>1783529835000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add order source filter to sales order tab
</comment><date>2026-07-08 18:57:15 +0200</date><id>d95ca21cbec6d6f84ee19169218cbf747c9c673f</id><msg>add order source filter to sales order tab</msg><path><editType>edit</editType><file>app/pages/sales/orders/index.vue</file></path><path><editType>edit</editType><file>server/api/orders/ag-grid/summary.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/fulfillment/crossdock/Truck.vue</affectedPath><affectedPath>app/components/fulfillment/crossdock/Board.vue</affectedPath><affectedPath>server/api/fulfillment/crossdock/board.get.ts</affectedPath><affectedPath>app/components/fulfillment/crossdock/SidePanel.vue</affectedPath><affectedPath>app/composables/useCrossdockBoard.ts</affectedPath><affectedPath>server/api/fulfillment/crossdock/allocations/destroy.delete.ts</affectedPath><affectedPath>app/components/fulfillment/crossdock/AllocationModal.vue</affectedPath><affectedPath>app/composables/menu/admin/fulfillment.ts</affectedPath><affectedPath>server/api/fulfillment/crossdock/match-proposal.get.ts</affectedPath><affectedPath>server/api/fulfillment/crossdock/allocations/save.post.ts</affectedPath><affectedPath>app/components/fulfillment/crossdock/Toolbar.vue</affectedPath><affectedPath>app/pages/fulfillment/crossdock-board.vue</affectedPath><affectedPath>server/api/fulfillment/crossdock/order-date.put.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>ac293fe93b5a347e483e4f447c06b1f8a5ddbc4c</commitId><timestamp>1783548045000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add beta cross docking
</comment><date>2026-07-09 00:00:45 +0200</date><id>ac293fe93b5a347e483e4f447c06b1f8a5ddbc4c</id><msg>add beta cross docking</msg><path><editType>add</editType><file>app/components/fulfillment/crossdock/AllocationModal.vue</file></path><path><editType>add</editType><file>app/components/fulfillment/crossdock/SidePanel.vue</file></path><path><editType>edit</editType><file>app/composables/menu/admin/fulfillment.ts</file></path><path><editType>add</editType><file>server/api/fulfillment/crossdock/match-proposal.get.ts</file></path><path><editType>add</editType><file>server/api/fulfillment/crossdock/order-date.put.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>app/components/fulfillment/crossdock/Board.vue</file></path><path><editType>add</editType><file>server/api/fulfillment/crossdock/allocations/destroy.delete.ts</file></path><path><editType>add</editType><file>app/components/fulfillment/crossdock/Truck.vue</file></path><path><editType>add</editType><file>app/composables/useCrossdockBoard.ts</file></path><path><editType>add</editType><file>server/api/fulfillment/crossdock/board.get.ts</file></path><path><editType>add</editType><file>app/pages/fulfillment/crossdock-board.vue</file></path><path><editType>add</editType><file>server/api/fulfillment/crossdock/allocations/save.post.ts</file></path><path><editType>add</editType><file>app/components/fulfillment/crossdock/Toolbar.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>668</buildNumber><marked><SHA1>c2a89a22e839ed2d6c5e6ce8b4d8538739de1472</SHA1><branch><SHA1>c2a89a22e839ed2d6c5e6ce8b4d8538739de1472</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>c2a89a22e839ed2d6c5e6ce8b4d8538739de1472</SHA1><branch><SHA1>c2a89a22e839ed2d6c5e6ce8b4d8538739de1472</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>c2a89a22e839ed2d6c5e6ce8b4d8538739de1472</SHA1><branch><SHA1>c2a89a22e839ed2d6c5e6ce8b4d8538739de1472</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#668</displayName><duration>55999</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #668</fullDisplayName><id>668</id><inProgress>false</inProgress><keepLog>false</keepLog><number>668</number><queueId>5374</queueId><result>SUCCESS</result><timestamp>1783468800972</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/668/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/OrderDetailRecord.vue</affectedPath><affectedPath>app/pages/settings/order-sources/create.vue</affectedPath><affectedPath>server/api/settings/order-sources/update.put.ts</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>server/api/settings/order-sources/store.post.ts</affectedPath><affectedPath>app/components/sales/OrderDetailRecordLine.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>1b450b2cd7b435fe25a5e2467403e448d776949e</commitId><timestamp>1783408262000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix ordersource
</comment><date>2026-07-07 09:11:02 +0200</date><id>1b450b2cd7b435fe25a5e2467403e448d776949e</id><msg>fix ordersource</msg><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/pages/settings/order-sources/create.vue</file></path><path><editType>edit</editType><file>server/api/settings/order-sources/store.post.ts</file></path><path><editType>edit</editType><file>app/components/sales/OrderDetailRecordLine.vue</file></path><path><editType>edit</editType><file>server/api/settings/order-sources/update.put.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/sales/OrderDetailRecord.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/requests/standard-responses/index.get.ts</affectedPath><affectedPath>server/api/invoices/index.get.ts</affectedPath><affectedPath>server/api/invoices/po.get.ts</affectedPath><affectedPath>server/api/materials/products/[id]/price/index.get.ts</affectedPath><affectedPath>server/api/rma/index.get.ts</affectedPath><affectedPath>server/api/partners/payment-terms/index.get.ts</affectedPath><affectedPath>server/api/materials/price-lists/[id]/versions/index.get.ts</affectedPath><affectedPath>server/api/partners/partner-groups/[id]/accounting/index.get.ts</affectedPath><affectedPath>server/api/marketings/channels/index.get.ts</affectedPath><affectedPath>server/api/partners/partner-groups/[id]/assigned-partners/index.put.ts</affectedPath><affectedPath>server/api/admin/countries/index.get.ts</affectedPath><affectedPath>server/api/partners/greetings/[id]/translation/index.get.ts</affectedPath><affectedPath>server/api/commission/parcels/dpd/inouts.get.ts</affectedPath><affectedPath>server/api/settings/tax-categories/index.get.ts</affectedPath><affectedPath>server/api/materials/products/[id]/purchasing/index.get.ts</affectedPath><affectedPath>server/api/materials/products/[id]/translation/index.get.ts</affectedPath><affectedPath>server/api/materials/products/[id]/accounting/index.get.ts</affectedPath><affectedPath>server/api/projects/project-types/index.get.ts</affectedPath><affectedPath>server/api/materials/shippers/[id]/freight/index.get.ts</affectedPath><affectedPath>server/api/admin/shipper-configurations/index.get.ts</affectedPath><affectedPath>server/api/settings/currencies/index.get.ts</affectedPath><affectedPath>server/api/inouts/vendor-returns.get.ts</affectedPath><affectedPath>server/api/settings/locations/index.get.ts</affectedPath><affectedPath>server/api/manufacturings/part-types/index.get.ts</affectedPath><affectedPath>server/api/materials/locators/index.get.ts</affectedPath><affectedPath>server/api/payments/cp.ts</affectedPath><affectedPath>server/api/materials/price-list-versions/[id]/prices/index.get.ts</affectedPath><affectedPath>server/api/settings/tax-rates/index.get.ts</affectedPath><affectedPath>server/api/manufacturings/product-bom/index.get.ts</affectedPath><affectedPath>server/api/materials/products/[id]/quantity-log/reserved.get.ts</affectedPath><affectedPath>server/api/commission/parcels/dhl/inouts.get.ts</affectedPath><affectedPath>server/api/materials/stock-transfers/index.get.ts</affectedPath><affectedPath>server/api/materials/products/[id]/quantity-log/ordered.get.ts</affectedPath><affectedPath>server/api/models/[model].get.ts</affectedPath><affectedPath>server/api/materials/warehouses/[id]/accounting/index.get.ts</affectedPath><affectedPath>server/api/commission/parcels/label/[id].get.ts</affectedPath><affectedPath>server/api/materials/products/[id]/transaction/index.get.ts</affectedPath><affectedPath>server/api/invoices/so.get.ts</affectedPath><affectedPath>server/api/materials/product-prices/[id].get.ts</affectedPath><affectedPath>server/api/admin/roles/index.get.ts</affectedPath><affectedPath>server/api/inouts/customers.get.ts</affectedPath><affectedPath>server/api/materials/shipper-configurations/[id]/label-type/index.get.ts</affectedPath><affectedPath>server/api/accountings/schemas/index.get.ts</affectedPath><affectedPath>server/api/materials/product-categories/index.get.ts</affectedPath><affectedPath>server/api/accountings/journals/index.get.ts</affectedPath><affectedPath>server/api/commission/trackings/[number]/shipment.get.ts</affectedPath><affectedPath>server/api/partners/job-categories/index.get.ts</affectedPath><affectedPath>server/api/requests/request-resolutions/index.get.ts</affectedPath><affectedPath>server/api/admin/print-formats/index.get.ts</affectedPath><affectedPath>server/api/materials/discount-schemas/index.get.ts</affectedPath><affectedPath>server/api/materials/promotions/[id]/quantity-distribution/index.get.ts</affectedPath><affectedPath>server/api/settings/mail-text/index.get.ts</affectedPath><affectedPath>server/api/materials/freight-categories/index.get.ts</affectedPath><affectedPath>server/api/settings/countries/index.get.ts</affectedPath><affectedPath>server/api/admin/regions/index.get.ts</affectedPath><affectedPath>server/api/materials/warehouses/[id]/locator/index.get.ts</affectedPath><affectedPath>server/api/inouts/co.get.ts</affectedPath><affectedPath>server/api/materials/products/[id]/bom/index.get.ts</affectedPath><affectedPath>server/api/materials/shippers/[id]/packaging/index.get.ts</affectedPath><affectedPath>server/api/orders/index.get.ts</affectedPath><affectedPath>server/api/partners/remunerations/index.get.ts</affectedPath><affectedPath>server/api/commission/parcels/other/inouts.get.ts</affectedPath><affectedPath>server/api/requests/request-categories/index.get.ts</affectedPath><affectedPath>server/api/partners/partner-groups/[id]/assigned-partners/index.get.ts</affectedPath><affectedPath>server/api/settings/document-types/index.get.ts</affectedPath><affectedPath>server/api/partners/partner-groups/index.get.ts</affectedPath><affectedPath>server/api/partners/job-positions/[id]/remuneration/index.get.ts</affectedPath><affectedPath>server/api/accountings/elements/index.get.ts</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>server/api/admin/organizations/index.get.ts</affectedPath><affectedPath>server/api/materials/locator-types/index.get.ts</affectedPath><affectedPath>server/api/materials/price-list-versions/[id]/breaks/index.get.ts</affectedPath><affectedPath>server/api/materials/stock-units/[id]/translation/index.get.ts</affectedPath><affectedPath>server/api/inouts/customer-returns.get.ts</affectedPath><affectedPath>server/api/materials/promotions/[id]/pre-condition/index.get.ts</affectedPath><affectedPath>server/api/rma/so.get.ts</affectedPath><affectedPath>server/api/projects/index.get.ts</affectedPath><affectedPath>server/api/materials/promotion-groups/[id]/line/index.get.ts</affectedPath><affectedPath>server/api/payments/vp.ts</affectedPath><affectedPath>server/api/settings/document-sequences/index.get.ts</affectedPath><affectedPath>server/api/manufacturings/quality-tests/index.get.ts</affectedPath><affectedPath>server/api/materials/discount-schemas/[id]/breaks/index.get.ts</affectedPath><affectedPath>server/api/materials/product-categories/[id]/accounting/index.get.ts</affectedPath><affectedPath>server/api/settings/validation-rules/index.get.ts</affectedPath><affectedPath>server/api/materials/shippers/[id]/label-type/index.get.ts</affectedPath><affectedPath>server/api/admin/roles/organizations/[id].get.ts</affectedPath><affectedPath>server/api/materials/products/[id]/bom-components/index.get.ts</affectedPath><affectedPath>server/api/partners/payment-terms/[id]/schedule/index.get.ts</affectedPath><affectedPath>server/api/settings/charges/index.get.ts</affectedPath><affectedPath>server/api/materials/stock-units/[id]/conversion/index.get.ts</affectedPath><affectedPath>server/api/filters/[model]/[query].get.ts</affectedPath><affectedPath>server/api/projects/projects/index.get.ts</affectedPath><affectedPath>server/api/materials/stock-transfers/[id]/move-line/index.get.ts</affectedPath><affectedPath>server/api/materials/locators/[id].get.ts</affectedPath><affectedPath>server/api/partners/partners/[id]/vendor-accounting/index.get.ts</affectedPath><affectedPath>server/api/requests/request-status/index.get.ts</affectedPath><affectedPath>server/api/manufacturings/productions/index.get.ts</affectedPath><affectedPath>server/api/materials/warehouses/[id]/replenish/index.get.ts</affectedPath><affectedPath>server/api/partners/dunnings/index.get.ts</affectedPath><affectedPath>server/api/partners/job-positions/index.get.ts</affectedPath><affectedPath>server/api/materials/products/[id]/replenish/index.get.ts</affectedPath><affectedPath>server/api/partners/partners/[id]/customer-accounting/index.get.ts</affectedPath><affectedPath>server/api/assets/asset-groups/index.get.ts</affectedPath><affectedPath>server/api/partners/remunerations/[id]/job-remunerations/index.get.ts</affectedPath><affectedPath>server/api/admin/print-colors/index.get.ts</affectedPath><affectedPath>server/api/materials/products/[id]/related/index.get.ts</affectedPath><affectedPath>server/api/tracking/[number].get.ts</affectedPath><affectedPath>server/api/partners/greetings/index.get.ts</affectedPath><affectedPath>server/api/settings/shipping-cost-overrides/index.get.ts</affectedPath><affectedPath>server/api/rma/rma-types/index.get.ts</affectedPath><affectedPath>server/api/changelog/[id]/index.get.ts</affectedPath><affectedPath>server/api/settings/regions/index.get.ts</affectedPath><affectedPath>server/api/materials/product-categories/[id]/translation/index.get.ts</affectedPath><affectedPath>server/api/materials/products/[id]/cost/index.get.ts</affectedPath><affectedPath>server/api/partners/partners/[id]/locations/index.get.ts</affectedPath><affectedPath>app/components/integrations/CommissionDHLLabel.vue</affectedPath><affectedPath>server/api/partners/remunerations/[id]/user-remunerations/index.get.ts</affectedPath><affectedPath>server/api/materials/stock-takes/index.get.ts</affectedPath><affectedPath>server/api/marketings/campaigns/index.get.ts</affectedPath><affectedPath>server/api/inouts/index.get.ts</affectedPath><affectedPath>server/api/settings/document-status/index.get.ts</affectedPath><affectedPath>server/api/settings/charge-types/index.get.ts</affectedPath><affectedPath>server/api/procurements/my-orders/defaults.get.ts</affectedPath><affectedPath>server/api/materials/shippers/[id]/pickup-type/index.get.ts</affectedPath><affectedPath>server/api/materials/products/[id]/located-at/index.get.ts</affectedPath><affectedPath>server/utils/zugferd/maybeZugferdPdf.ts</affectedPath><affectedPath>server/api/admin/currencies/index.get.ts</affectedPath><affectedPath>server/api/materials/stock-missings/index.get.ts</affectedPath><affectedPath>server/api/rma/po.get.ts</affectedPath><affectedPath>server/api/settings/tax-configurations/index.get.ts</affectedPath><affectedPath>server/api/materials/products/[id]/substitute/index.get.ts</affectedPath><affectedPath>server/api/admin/users/organizations/[id].get.ts</affectedPath><affectedPath>app/components/integrations/CommissionList.vue</affectedPath><affectedPath>server/api/materials/products/[id]/conversion/index.get.ts</affectedPath><affectedPath>server/api/admin/shipping-processors/index.get.ts</affectedPath><affectedPath>server/api/requests/request-types/index.get.ts</affectedPath><affectedPath>server/api/settings/tax-providers/index.get.ts</affectedPath><affectedPath>server/api/materials/product-categories/[id]/assigned-products/index.put.ts</affectedPath><affectedPath>server/api/settings/document-groups/index.get.ts</affectedPath><affectedPath>server/api/partners/job-positions/[id]/assignment/index.get.ts</affectedPath><affectedPath>server/api/payments/index.get.ts</affectedPath><affectedPath>server/api/materials/shipper-configurations/[id]/pickup-type/index.get.ts</affectedPath><affectedPath>server/api/partners/payment-terms/[id]/translation/index.get.ts</affectedPath><affectedPath>server/api/materials/promotions/[id]/line/index.get.ts</affectedPath><affectedPath>server/api/assets/assets/index.get.ts</affectedPath><affectedPath>server/api/settings/shipping-costs/index.get.ts</affectedPath><affectedPath>server/api/requests/request-groups/index.get.ts</affectedPath><affectedPath>server/api/accountings/calendars/index.get.ts</affectedPath><affectedPath>server/api/materials/products/[id]/partner/index.get.ts</affectedPath><affectedPath>server/api/materials/discount-breaks/index.get.ts</affectedPath><affectedPath>server/api/materials/products/[id]/quantity-log/index.get.ts</affectedPath><affectedPath>server/api/materials/stock-units/index.get.ts</affectedPath><affectedPath>server/api/materials/shipper-configurations/[id]/packaging/index.get.ts</affectedPath><affectedPath>server/api/materials/promotions/[id]/reward/index.get.ts</affectedPath><affectedPath>server/api/admin/tenants/organizations/[id].get.ts</affectedPath><affectedPath>server/api/settings/revenue-recognition/index.get.ts</affectedPath><affectedPath>server/api/materials/product-categories/[id]/assigned-products/index.get.ts</affectedPath><affectedPath>server/api/inouts/quick-rma.post.ts</affectedPath><affectedPath>server/api/partners/dunnings/[id]/level/index.get.ts</affectedPath><commitId>d3aa48e30ada3c6e4af003f09647d55477bda12a</commitId><timestamp>1783411754000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix endpoints with ordering by id and delete endpoint which resultes in jvm memory heap
</comment><date>2026-07-07 10:09:14 +0200</date><id>d3aa48e30ada3c6e4af003f09647d55477bda12a</id><msg>fix endpoints with ordering by id and delete endpoint which resultes in jvm memory heap</msg><path><editType>edit</editType><file>server/api/materials/price-list-versions/[id]/prices/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/greetings/[id]/translation/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/product-categories/[id]/assigned-products/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/partner/index.get.ts</file></path><path><editType>edit</editType><file>server/api/orders/index.get.ts</file></path><path><editType>edit</editType><file>server/api/invoices/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/locator-types/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/shipper-configurations/[id]/pickup-type/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/partner-groups/index.get.ts</file></path><path><editType>edit</editType><file>server/api/requests/request-types/index.get.ts</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dpd/inouts.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/price-list-versions/[id]/breaks/index.get.ts</file></path><path><editType>edit</editType><file>server/api/rma/po.get.ts</file></path><path><editType>edit</editType><file>server/api/accountings/journals/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/quantity-log/ordered.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/job-positions/[id]/remuneration/index.get.ts</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/admin/roles/organizations/[id].get.ts</file></path><path><editType>edit</editType><file>server/api/materials/stock-takes/index.get.ts</file></path><path><editType>edit</editType><file>server/api/admin/shipping-processors/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/product-categories/[id]/translation/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/partner-groups/[id]/accounting/index.get.ts</file></path><path><editType>edit</editType><file>server/api/admin/tenants/organizations/[id].get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/replenish/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/stock-transfers/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/job-positions/index.get.ts</file></path><path><editType>edit</editType><file>server/api/admin/currencies/index.get.ts</file></path><path><editType>edit</editType><file>server/api/payments/cp.ts</file></path><path><editType>edit</editType><file>server/api/rma/index.get.ts</file></path><path><editType>add</editType><file>server/api/commission/parcels/label/[id].get.ts</file></path><path><editType>edit</editType><file>server/api/partners/remunerations/[id]/job-remunerations/index.get.ts</file></path><path><editType>edit</editType><file>server/api/assets/assets/index.get.ts</file></path><path><editType>edit</editType><file>server/api/commission/parcels/other/inouts.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/price-lists/[id]/versions/index.get.ts</file></path><path><editType>edit</editType><file>server/api/commission/trackings/[number]/shipment.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/promotions/[id]/reward/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/partners/[id]/locations/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/shippers/[id]/packaging/index.get.ts</file></path><path><editType>edit</editType><file>server/api/admin/print-colors/index.get.ts</file></path><path><editType>edit</editType><file>server/api/rma/so.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/promotions/[id]/quantity-distribution/index.get.ts</file></path><path><editType>edit</editType><file>server/api/admin/roles/index.get.ts</file></path><path><editType>edit</editType><file>server/api/settings/shipping-cost-overrides/index.get.ts</file></path><path><editType>edit</editType><file>app/components/integrations/CommissionList.vue</file></path><path><editType>delete</editType><file>server/api/inouts/co.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/payment-terms/[id]/translation/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/payment-terms/index.get.ts</file></path><path><editType>edit</editType><file>server/api/inouts/customer-returns.get.ts</file></path><path><editType>edit</editType><file>server/api/tracking/[number].get.ts</file></path><path><editType>edit</editType><file>server/api/marketings/campaigns/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/discount-schemas/[id]/breaks/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/price/index.get.ts</file></path><path><editType>edit</editType><file>server/api/procurements/my-orders/defaults.get.ts</file></path><path><editType>edit</editType><file>server/api/rma/rma-types/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/partners/[id]/vendor-accounting/index.get.ts</file></path><path><editType>edit</editType><file>server/api/assets/asset-groups/index.get.ts</file></path><path><editType>edit</editType><file>server/api/settings/regions/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/related/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/warehouses/[id]/accounting/index.get.ts</file></path><path><editType>edit</editType><file>server/api/settings/charges/index.get.ts</file></path><path><editType>edit</editType><file>server/api/admin/users/organizations/[id].get.ts</file></path><path><editType>edit</editType><file>server/api/settings/currencies/index.get.ts</file></path><path><editType>edit</editType><file>server/api/accountings/schemas/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/stock-units/index.get.ts</file></path><path><editType>edit</editType><file>server/api/changelog/[id]/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/stock-units/[id]/translation/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/purchasing/index.get.ts</file></path><path><editType>edit</editType><file>server/api/settings/shipping-costs/index.get.ts</file></path><path><editType>edit</editType><file>server/api/settings/revenue-recognition/index.get.ts</file></path><path><editType>edit</editType><file>server/api/settings/mail-text/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/quantity-log/reserved.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/discount-breaks/index.get.ts</file></path><path><editType>edit</editType><file>server/api/settings/document-groups/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/job-categories/index.get.ts</file></path><path><editType>edit</editType><file>server/api/projects/project-types/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/shipper-configurations/[id]/label-type/index.get.ts</file></path><path><editType>edit</editType><file>server/api/requests/request-status/index.get.ts</file></path><path><editType>edit</editType><file>server/api/projects/index.get.ts</file></path><path><editType>edit</editType><file>server/api/inouts/vendor-returns.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/greetings/index.get.ts</file></path><path><editType>edit</editType><file>server/api/requests/standard-responses/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/bom/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/transaction/index.get.ts</file></path><path><editType>edit</editType><file>server/api/admin/shipper-configurations/index.get.ts</file></path><path><editType>edit</editType><file>server/api/manufacturings/productions/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/product-prices/[id].get.ts</file></path><path><editType>edit</editType><file>app/components/integrations/CommissionDHLLabel.vue</file></path><path><editType>delete</editType><file>server/api/inouts/index.get.ts</file></path><path><editType>edit</editType><file>server/api/invoices/po.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/substitute/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/promotion-groups/[id]/line/index.get.ts</file></path><path><editType>edit</editType><file>server/api/inouts/customers.get.ts</file></path><path><editType>edit</editType><file>server/api/payments/vp.ts</file></path><path><editType>edit</editType><file>server/api/materials/freight-categories/index.get.ts</file></path><path><editType>edit</editType><file>server/api/payments/index.get.ts</file></path><path><editType>edit</editType><file>server/api/settings/document-sequences/index.get.ts</file></path><path><editType>edit</editType><file>server/api/manufacturings/quality-tests/index.get.ts</file></path><path><editType>edit</editType><file>server/api/manufacturings/part-types/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/shippers/[id]/freight/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/conversion/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/bom-components/index.get.ts</file></path><path><editType>edit</editType><file>server/api/settings/tax-configurations/index.get.ts</file></path><path><editType>edit</editType><file>server/api/inouts/quick-rma.post.ts</file></path><path><editType>edit</editType><file>server/api/materials/stock-units/[id]/conversion/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/remunerations/[id]/user-remunerations/index.get.ts</file></path><path><editType>edit</editType><file>server/api/admin/regions/index.get.ts</file></path><path><editType>edit</editType><file>server/api/requests/request-groups/index.get.ts</file></path><path><editType>edit</editType><file>server/api/settings/tax-categories/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/stock-missings/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/shipper-configurations/[id]/packaging/index.get.ts</file></path><path><editType>edit</editType><file>server/api/settings/countries/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/accounting/index.get.ts</file></path><path><editType>edit</editType><file>server/api/settings/charge-types/index.get.ts</file></path><path><editType>edit</editType><file>server/api/filters/[model]/[query].get.ts</file></path><path><editType>edit</editType><file>server/api/accountings/elements/index.get.ts</file></path><path><editType>edit</editType><file>server/api/projects/projects/index.get.ts</file></path><path><editType>edit</editType><file>server/api/models/[model].get.ts</file></path><path><editType>edit</editType><file>server/api/settings/tax-providers/index.get.ts</file></path><path><editType>edit</editType><file>server/api/admin/print-formats/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/promotions/[id]/line/index.get.ts</file></path><path><editType>edit</editType><file>server/api/requests/request-categories/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/job-positions/[id]/assignment/index.get.ts</file></path><path><editType>edit</editType><file>server/api/admin/organizations/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/translation/index.get.ts</file></path><path><editType>edit</editType><file>server/api/settings/document-types/index.get.ts</file></path><path><editType>edit</editType><file>server/api/settings/validation-rules/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/partner-groups/[id]/assigned-partners/index.get.ts</file></path><path><editType>edit</editType><file>server/api/accountings/calendars/index.get.ts</file></path><path><editType>edit</editType><file>server/api/marketings/channels/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/locators/[id].get.ts</file></path><path><editType>edit</editType><file>server/api/materials/warehouses/[id]/locator/index.get.ts</file></path><path><editType>edit</editType><file>server/utils/zugferd/maybeZugferdPdf.ts</file></path><path><editType>edit</editType><file>server/api/requests/request-resolutions/index.get.ts</file></path><path><editType>edit</editType><file>server/api/settings/tax-rates/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/remunerations/index.get.ts</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dhl/inouts.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/product-categories/[id]/accounting/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/shippers/[id]/pickup-type/index.get.ts</file></path><path><editType>edit</editType><file>server/api/invoices/so.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/discount-schemas/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/stock-transfers/[id]/move-line/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/shippers/[id]/label-type/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/promotions/[id]/pre-condition/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/locators/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/product-categories/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/dunnings/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/dunnings/[id]/level/index.get.ts</file></path><path><editType>edit</editType><file>server/api/settings/document-status/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/warehouses/[id]/replenish/index.get.ts</file></path><path><editType>edit</editType><file>server/api/settings/locations/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/quantity-log/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/payment-terms/[id]/schedule/index.get.ts</file></path><path><editType>edit</editType><file>server/api/admin/countries/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/partners/[id]/customer-accounting/index.get.ts</file></path><path><editType>edit</editType><file>server/api/manufacturings/product-bom/index.get.ts</file></path><path><editType>edit</editType><file>server/api/partners/partner-groups/[id]/assigned-partners/index.put.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/located-at/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/[id]/cost/index.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/product-categories/[id]/assigned-products/index.put.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounts/company-profile.get.ts</affectedPath><affectedPath>server/utils/merchantPartner.ts</affectedPath><affectedPath>app/components/dashboard/ProfileForm.vue</affectedPath><affectedPath>app/components/sales/InvoiceEmailModal.vue</affectedPath><affectedPath>app/components/dashboard/ProfileBilling.vue</affectedPath><affectedPath>server/api/accounts/company-profile.put.ts</affectedPath><affectedPath>app/pages/users/profile/index.vue</affectedPath><commitId>0b811dc07e9dc6005076ede132ac9c64fef52d13</commitId><timestamp>1783417591000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add invoice email to merchant area
</comment><date>2026-07-07 11:46:31 +0200</date><id>0b811dc07e9dc6005076ede132ac9c64fef52d13</id><msg>add invoice email to merchant area</msg><path><editType>add</editType><file>server/api/accounts/company-profile.put.ts</file></path><path><editType>edit</editType><file>app/components/dashboard/ProfileForm.vue</file></path><path><editType>edit</editType><file>app/pages/users/profile/index.vue</file></path><path><editType>edit</editType><file>app/components/sales/InvoiceEmailModal.vue</file></path><path><editType>add</editType><file>server/utils/merchantPartner.ts</file></path><path><editType>add</editType><file>app/components/dashboard/ProfileBilling.vue</file></path><path><editType>add</editType><file>server/api/accounts/company-profile.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/invoices/ffn-unpaid-count.get.ts</affectedPath><affectedPath>app/components/UserMenuBar.vue</affectedPath><commitId>016fd5b0ec36705a7175ff05757edcabc371b10e</commitId><timestamp>1783419435000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show invoice badge
</comment><date>2026-07-07 12:17:15 +0200</date><id>016fd5b0ec36705a7175ff05757edcabc371b10e</id><msg>show invoice badge</msg><path><editType>edit</editType><file>server/api/invoices/ffn-unpaid-count.get.ts</file></path><path><editType>edit</editType><file>app/components/UserMenuBar.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/partners/PartnerForm.vue</affectedPath><affectedPath>app/pages/partners/partners/[id]/edit.vue</affectedPath><affectedPath>server/api/partners/partners/update.put.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>c2a89a22e839ed2d6c5e6ce8b4d8538739de1472</commitId><timestamp>1783419996000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add fields to cbpartner full crud
</comment><date>2026-07-07 12:26:36 +0200</date><id>c2a89a22e839ed2d6c5e6ce8b4d8538739de1472</id><msg>add fields to cbpartner full crud</msg><path><editType>edit</editType><file>app/components/partners/PartnerForm.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/partners/partners/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/partners/partners/update.put.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>667</buildNumber><marked><SHA1>fc5d313061b443f68efa9b74137f37851fdfa7e7</SHA1><branch><SHA1>fc5d313061b443f68efa9b74137f37851fdfa7e7</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>fc5d313061b443f68efa9b74137f37851fdfa7e7</SHA1><branch><SHA1>fc5d313061b443f68efa9b74137f37851fdfa7e7</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>fc5d313061b443f68efa9b74137f37851fdfa7e7</SHA1><branch><SHA1>fc5d313061b443f68efa9b74137f37851fdfa7e7</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#667</displayName><duration>58974</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #667</fullDisplayName><id>667</id><inProgress>false</inProgress><keepLog>false</keepLog><number>667</number><queueId>5370</queueId><result>SUCCESS</result><timestamp>1783382400972</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/667/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>app/pages/generate-shipments.vue</affectedPath><affectedPath>android/update-files/history.json</affectedPath><affectedPath>reference/recipes.md</affectedPath><affectedPath>app/pages/mobile/generate-shipments.vue</affectedPath><commitId>fafebe583d99eb5bdf60dd840d8115260a914a61</commitId><timestamp>1783319674000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>mobile enhancments
</comment><date>2026-07-06 08:34:34 +0200</date><id>fafebe583d99eb5bdf60dd840d8115260a914a61</id><msg>mobile enhancments</msg><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>app/pages/generate-shipments.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/generate-shipments.vue</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path><path><editType>edit</editType><file>android/update-files/history.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/receive.vue</affectedPath><commitId>e6b6c48faac1b45836e242fd4657cd5f97734f0d</commitId><timestamp>1783337217000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>try to fix creation of request on material receipt completion
</comment><date>2026-07-06 13:26:57 +0200</date><id>e6b6c48faac1b45836e242fd4657cd5f97734f0d</id><msg>try to fix creation of request on material receipt completion</msg><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/generate-invoices-from-orders.vue</affectedPath><affectedPath>app/pages/generate-shipments.vue</affectedPath><affectedPath>app/pages/generate-invoices.vue</affectedPath><affectedPath>app/pages/mobile/generate-shipments.vue</affectedPath><commitId>66cbf67adc41e792e2928701644b265665a96265</commitId><timestamp>1783339546000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix shipment generation mobile
</comment><date>2026-07-06 14:05:46 +0200</date><id>66cbf67adc41e792e2928701644b265665a96265</id><msg>fix shipment generation mobile</msg><path><editType>edit</editType><file>app/pages/generate-shipments.vue</file></path><path><editType>edit</editType><file>app/pages/generate-invoices-from-orders.vue</file></path><path><editType>edit</editType><file>app/pages/generate-invoices.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/generate-shipments.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/update-files/history.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><commitId>31fe291a5bdf5e54076f7b1f741c56d9d8600dbb</commitId><timestamp>1783339628000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>mobile akp update
</comment><date>2026-07-06 14:07:08 +0200</date><id>31fe291a5bdf5e54076f7b1f741c56d9d8600dbb</id><msg>mobile akp update</msg><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>android/update-files/history.json</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/receive.vue</affectedPath><commitId>fc5d313061b443f68efa9b74137f37851fdfa7e7</commitId><timestamp>1783345209000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix material mobile label printing not doubling
</comment><date>2026-07-06 15:40:09 +0200</date><id>fc5d313061b443f68efa9b74137f37851fdfa7e7</id><msg>fix material mobile label printing not doubling</msg><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>666</buildNumber><marked><SHA1>4c61fa7eff6cc03fc135a3effe9a0129f42b3705</SHA1><branch><SHA1>4c61fa7eff6cc03fc135a3effe9a0129f42b3705</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>4c61fa7eff6cc03fc135a3effe9a0129f42b3705</SHA1><branch><SHA1>4c61fa7eff6cc03fc135a3effe9a0129f42b3705</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>4c61fa7eff6cc03fc135a3effe9a0129f42b3705</SHA1><branch><SHA1>4c61fa7eff6cc03fc135a3effe9a0129f42b3705</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#666</displayName><duration>58555</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #666</fullDisplayName><id>666</id><inProgress>false</inProgress><keepLog>false</keepLog><number>666</number><queueId>5366</queueId><result>SUCCESS</result><timestamp>1783296000970</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/666/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>665</buildNumber><marked><SHA1>4c61fa7eff6cc03fc135a3effe9a0129f42b3705</SHA1><branch><SHA1>4c61fa7eff6cc03fc135a3effe9a0129f42b3705</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>4c61fa7eff6cc03fc135a3effe9a0129f42b3705</SHA1><branch><SHA1>4c61fa7eff6cc03fc135a3effe9a0129f42b3705</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>4c61fa7eff6cc03fc135a3effe9a0129f42b3705</SHA1><branch><SHA1>4c61fa7eff6cc03fc135a3effe9a0129f42b3705</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#665</displayName><duration>58017</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #665</fullDisplayName><id>665</id><inProgress>false</inProgress><keepLog>false</keepLog><number>665</number><queueId>5365</queueId><result>SUCCESS</result><timestamp>1783209600970</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/665/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/invoices/index.vue</affectedPath><affectedPath>app/pages/index.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>server/api/dashboard/open-fulfillment-invoices.get.ts</affectedPath><commitId>dcfce036aa65bdb322afa21b8dd530f49d96eecb</commitId><timestamp>1783199181000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add open payments dashboard
</comment><date>2026-07-04 23:06:21 +0200</date><id>dcfce036aa65bdb322afa21b8dd530f49d96eecb</id><msg>add open payments dashboard</msg><path><editType>edit</editType><file>app/pages/sales/invoices/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path><path><editType>edit</editType><file>server/api/dashboard/open-fulfillment-invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>server/api/orders/[id]/compare-candidates.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/components/sales/OrderCompareModal.vue</affectedPath><affectedPath>app/composables/states.ts</affectedPath><commitId>67029a27236058b041f6a80937c3e4100445bce9</commitId><timestamp>1783201391000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add order comparison for fulfillment invoices
</comment><date>2026-07-04 23:43:11 +0200</date><id>67029a27236058b041f6a80937c3e4100445bce9</id><msg>add order comparison for fulfillment invoices</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>app/components/sales/OrderCompareModal.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>add</editType><file>server/api/orders/[id]/compare-candidates.get.ts</file></path><path><editType>edit</editType><file>app/composables/states.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/generate-shipments.vue</affectedPath><affectedPath>"reference/lexware/Lexware API Kochbuch - \303\234bertragung von Paymentprovider Kontoums\303\244tzen.pdf"</affectedPath><affectedPath>android/update-files/history.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><affectedPath>reference/lexware/eCommerce-bookkeeping-cases.pdf</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>server/api/orders/openso-generation-queue.get.ts</affectedPath><affectedPath>reference/lexware/Lexware Office API Nutzungsbedingungen.pdf</affectedPath><affectedPath>reference/lexware/Lexware API - One Stop Shop in der Buchhaltung.pdf</affectedPath><affectedPath>app/pages/generate-shipments.vue</affectedPath><affectedPath>reference/recipes.md</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>reference/lexware/Lexware API Kochbuch - Zuordnung von Beleg und Kontoumsatz - eCommerce.pdf</affectedPath><affectedPath>reference/lexware/Lexware API Kochbuch - Onboarding.pdf</affectedPath><commitId>4c61fa7eff6cc03fc135a3effe9a0129f42b3705</commitId><timestamp>1783205741000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add Single Shipment Generation and by Date
</comment><date>2026-07-05 00:55:41 +0200</date><id>4c61fa7eff6cc03fc135a3effe9a0129f42b3705</id><msg>Add Single Shipment Generation and by Date</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>reference/lexware/Lexware API Kochbuch - Zuordnung von Beleg und Kontoumsatz - eCommerce.pdf</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>add</editType><file>reference/lexware/Lexware Office API Nutzungsbedingungen.pdf</file></path><path><editType>edit</editType><file>app/pages/mobile/generate-shipments.vue</file></path><path><editType>add</editType><file>reference/lexware/eCommerce-bookkeeping-cases.pdf</file></path><path><editType>edit</editType><file>app/pages/generate-shipments.vue</file></path><path><editType>add</editType><file>reference/lexware/Lexware API - One Stop Shop in der Buchhaltung.pdf</file></path><path><editType>add</editType><file>reference/lexware/Lexware API Kochbuch - Onboarding.pdf</file></path><path><editType>add</editType><file>server/api/orders/openso-generation-queue.get.ts</file></path><path><editType>add</editType><file>"reference/lexware/Lexware API Kochbuch - \303\234bertragung von Paymentprovider Kontoums\303\244tzen.pdf"</file></path><path><editType>edit</editType><file>android/update-files/history.json</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>664</buildNumber><marked><SHA1>32d4ed9817d1da8324b0444e431c254d0dba45a8</SHA1><branch><SHA1>32d4ed9817d1da8324b0444e431c254d0dba45a8</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>32d4ed9817d1da8324b0444e431c254d0dba45a8</SHA1><branch><SHA1>32d4ed9817d1da8324b0444e431c254d0dba45a8</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>32d4ed9817d1da8324b0444e431c254d0dba45a8</SHA1><branch><SHA1>32d4ed9817d1da8324b0444e431c254d0dba45a8</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#664</displayName><duration>57098</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #664</fullDisplayName><id>664</id><inProgress>false</inProgress><keepLog>false</keepLog><number>664</number><queueId>5362</queueId><result>SUCCESS</result><timestamp>1783123200970</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/664/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/tasks.vue</affectedPath><affectedPath>server/api/mobile/locator-articles.post.ts</affectedPath><affectedPath>app/pages/mobile/fix-locator-owner.vue</affectedPath><affectedPath>server/api/mobile/rma-lookup.post.ts</affectedPath><affectedPath>app/pages/mobile/product.vue</affectedPath><affectedPath>server/api/mobile/po-open.get.ts</affectedPath><affectedPath>app/pages/mobile/return.vue</affectedPath><affectedPath>app/composables/useBarcodeScanner.js</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>server/middleware/fetch.ts</affectedPath><affectedPath>server/utils/odataHelper.ts</affectedPath><affectedPath>app/composables/useNativeScanner.ts</affectedPath><affectedPath>server/api/mobile/product-search.post.ts</affectedPath><affectedPath>server/utils/withAuthRetry.ts</affectedPath><affectedPath>app/pages/mobile/movement.vue</affectedPath><affectedPath>server/api/mobile/voice-command.post.ts</affectedPath><affectedPath>server/api/mobile/transcribe.post.ts</affectedPath><affectedPath>app/pages/mobile/receive.vue</affectedPath><affectedPath>app/pages/mobile/generate-shipments.vue</affectedPath><affectedPath>server/api/mobile/organizations.get.ts</affectedPath><affectedPath>android/update-files/history.json</affectedPath><affectedPath>server/api/mobile/send-return-notification.post.ts</affectedPath><affectedPath>app/pages/mobile/commission.vue</affectedPath><affectedPath>android/app/build.gradle</affectedPath><affectedPath>app/pages/mobile/inventory.vue</affectedPath><affectedPath>app/pages/mobile/locator-articles.vue</affectedPath><affectedPath>server/api/mobile/bpartner-shipments.post.ts</affectedPath><affectedPath>server/api/mobile/locator-by-xyz.post.ts</affectedPath><affectedPath>app/pages/mobile/print-labels.vue</affectedPath><affectedPath>server/api/mobile/locator-lookup.post.ts</affectedPath><affectedPath>app/pages/mobile/locator-labels.vue</affectedPath><affectedPath>server/api/mobile/default-locator-lookup.post.ts</affectedPath><affectedPath>server/api/mobile/product-lookup.post.ts</affectedPath><commitId>32d4ed9817d1da8324b0444e431c254d0dba45a8</commitId><timestamp>1783083923000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix mobile auth
</comment><date>2026-07-03 15:05:23 +0200</date><id>32d4ed9817d1da8324b0444e431c254d0dba45a8</id><msg>fix mobile auth</msg><path><editType>edit</editType><file>android/update-files/history.json</file></path><path><editType>edit</editType><file>app/pages/mobile/commission.vue</file></path><path><editType>edit</editType><file>server/api/mobile/send-return-notification.post.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/inventory.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/locator-articles.vue</file></path><path><editType>edit</editType><file>server/api/mobile/bpartner-shipments.post.ts</file></path><path><editType>edit</editType><file>server/api/mobile/product-lookup.post.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/return.vue</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>app/pages/mobile/fix-locator-owner.vue</file></path><path><editType>edit</editType><file>server/api/mobile/po-open.get.ts</file></path><path><editType>edit</editType><file>server/api/mobile/locator-lookup.post.ts</file></path><path><editType>edit</editType><file>server/api/mobile/voice-command.post.ts</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>server/api/mobile/locator-articles.post.ts</file></path><path><editType>edit</editType><file>server/api/mobile/transcribe.post.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path><path><editType>edit</editType><file>server/api/mobile/default-locator-lookup.post.ts</file></path><path><editType>edit</editType><file>server/api/mobile/rma-lookup.post.ts</file></path><path><editType>edit</editType><file>server/api/mobile/organizations.get.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/movement.vue</file></path><path><editType>edit</editType><file>server/api/mobile/locator-by-xyz.post.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/locator-labels.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/print-labels.vue</file></path><path><editType>edit</editType><file>app/composables/useNativeScanner.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/generate-shipments.vue</file></path><path><editType>edit</editType><file>app/composables/useBarcodeScanner.js</file></path><path><editType>edit</editType><file>app/pages/mobile/product.vue</file></path><path><editType>add</editType><file>server/utils/withAuthRetry.ts</file></path><path><editType>add</editType><file>server/utils/odataHelper.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/tasks.vue</file></path><path><editType>edit</editType><file>server/middleware/fetch.ts</file></path><path><editType>edit</editType><file>server/api/mobile/product-search.post.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>663</buildNumber><marked><SHA1>aa5afd0be271aac72e6a6abfecb670900f93a9dc</SHA1><branch><SHA1>aa5afd0be271aac72e6a6abfecb670900f93a9dc</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>aa5afd0be271aac72e6a6abfecb670900f93a9dc</SHA1><branch><SHA1>aa5afd0be271aac72e6a6abfecb670900f93a9dc</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>aa5afd0be271aac72e6a6abfecb670900f93a9dc</SHA1><branch><SHA1>aa5afd0be271aac72e6a6abfecb670900f93a9dc</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#663</displayName><duration>57546</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #663</fullDisplayName><id>663</id><inProgress>false</inProgress><keepLog>false</keepLog><number>663</number><queueId>5360</queueId><result>SUCCESS</result><timestamp>1783036800971</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/663/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><affectedPath>app/components/TabBar.vue</affectedPath><affectedPath>app/components/AttachmentViewer.vue</affectedPath><affectedPath>app/pages/mobile/inventory.vue</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>app/components/NewTabBar.vue</affectedPath><affectedPath>android/update-files/history.json</affectedPath><affectedPath>app/components/sales/OrderDetailRecordLine.vue</affectedPath><affectedPath>server/api/materials/stock-takes/[id]/count-line/index.post.ts</affectedPath><affectedPath>server/api/mobile/product-lookup.post.ts</affectedPath><commitId>fde4ab9b66350ec514f93042f3a8e44affbab08e</commitId><timestamp>1782976043000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>various fixes
</comment><date>2026-07-02 09:07:23 +0200</date><id>fde4ab9b66350ec514f93042f3a8e44affbab08e</id><msg>various fixes</msg><path><editType>edit</editType><file>server/api/materials/stock-takes/[id]/count-line/index.post.ts</file></path><path><editType>edit</editType><file>android/update-files/history.json</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>server/api/mobile/product-lookup.post.ts</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/components/sales/OrderDetailRecordLine.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/inventory.vue</file></path><path><editType>edit</editType><file>app/components/AttachmentViewer.vue</file></path><path><editType>edit</editType><file>app/components/TabBar.vue</file></path><path><editType>edit</editType><file>app/components/NewTabBar.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/partners/partners/index.vue</affectedPath><affectedPath>server/api/partners/partners/ag-grid/partners.post.ts</affectedPath><commitId>b1b6f6d50012a3177bb1f0fe3390e550fe574a10</commitId><timestamp>1782987121000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Optimize partner grid load
</comment><date>2026-07-02 12:12:01 +0200</date><id>b1b6f6d50012a3177bb1f0fe3390e550fe574a10</id><msg>Optimize partner grid load</msg><path><editType>edit</editType><file>app/pages/partners/partners/index.vue</file></path><path><editType>edit</editType><file>server/api/partners/partners/ag-grid/partners.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><affectedPath>app/pages/settings/order-sources/[id]/edit.vue</affectedPath><affectedPath>.env-dev</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>app/pages/settings/order-sources/create.vue</affectedPath><affectedPath>server/api/settings/order-sources/update.put.ts</affectedPath><affectedPath>server/api/oauth/amazon/callback.get.ts</affectedPath><affectedPath>server/api/settings/order-sources/[id]/index.get.ts</affectedPath><affectedPath>server/api/oauth/amazon/authorize/[uid].get.ts</affectedPath><affectedPath>.env-prod</affectedPath><commitId>9180b9fab4b34d822d2244607095a6d77dc19f97</commitId><timestamp>1782994830000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add merchant oauth amazon integration self authorizing
</comment><date>2026-07-02 14:20:30 +0200</date><id>9180b9fab4b34d822d2244607095a6d77dc19f97</id><msg>add merchant oauth amazon integration self authorizing</msg><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path><path><editType>edit</editType><file>app/pages/settings/order-sources/[id]/edit.vue</file></path><path><editType>edit</editType><file>.env-prod</file></path><path><editType>edit</editType><file>server/api/settings/order-sources/update.put.ts</file></path><path><editType>add</editType><file>server/api/oauth/amazon/callback.get.ts</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>server/api/settings/order-sources/[id]/index.get.ts</file></path><path><editType>edit</editType><file>.env-dev</file></path><path><editType>add</editType><file>server/api/oauth/amazon/authorize/[uid].get.ts</file></path><path><editType>edit</editType><file>app/pages/settings/order-sources/create.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/products/update.put.ts</affectedPath><affectedPath>app/components/AgGridServer.vue</affectedPath><affectedPath>app/pages/materials/products/index.vue</affectedPath><affectedPath>app/components/settings/JtlSelectiveUpdateModal.vue</affectedPath><commitId>1d8426b0596997106b7c0da64b7b830f6e47499e</commitId><timestamp>1782996291000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix batch sync
</comment><date>2026-07-02 14:44:51 +0200</date><id>1d8426b0596997106b7c0da64b7b830f6e47499e</id><msg>fix batch sync</msg><path><editType>edit</editType><file>app/pages/materials/products/index.vue</file></path><path><editType>edit</editType><file>server/api/materials/products/update.put.ts</file></path><path><editType>edit</editType><file>app/components/AgGridServer.vue</file></path><path><editType>edit</editType><file>app/components/settings/JtlSelectiveUpdateModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/materials/ProductForm.vue</affectedPath><affectedPath>server/api/commission/parcels/dhl/multi.post.ts</affectedPath><affectedPath>server/api/commission/parcels/dhl/index.post.ts</affectedPath><affectedPath>app/pages/materials/products/[id]/edit.vue</affectedPath><affectedPath>app/pages/materials/products/index.vue</affectedPath><affectedPath>server/api/commission/parcels/dpd/multi.post.ts</affectedPath><affectedPath>server/api/commission/parcels/dpd/index.post.ts</affectedPath><affectedPath>app/components/AgGrid/Products/AgOriginCountry.vue</affectedPath><affectedPath>app/components/integrations/CommissionCustomsModal.vue</affectedPath><affectedPath>app/pages/integrations/commission.vue</affectedPath><affectedPath>server/api/materials/products/ag-grid/products.post.ts</affectedPath><commitId>080dee7c13c26ee3d3ecb1df39db51306331dc2a</commitId><timestamp>1782997881000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>include new taric and origin fields on commission
</comment><date>2026-07-02 15:11:21 +0200</date><id>080dee7c13c26ee3d3ecb1df39db51306331dc2a</id><msg>include new taric and origin fields on commission</msg><path><editType>add</editType><file>app/components/AgGrid/Products/AgOriginCountry.vue</file></path><path><editType>edit</editType><file>app/components/integrations/CommissionCustomsModal.vue</file></path><path><editType>edit</editType><file>server/api/materials/products/ag-grid/products.post.ts</file></path><path><editType>edit</editType><file>app/components/materials/ProductForm.vue</file></path><path><editType>edit</editType><file>app/pages/materials/products/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dhl/multi.post.ts</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dpd/index.post.ts</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dpd/multi.post.ts</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dhl/index.post.ts</file></path><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path><path><editType>edit</editType><file>app/pages/materials/products/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.env-dev</affectedPath><affectedPath>app/pages/index.vue</affectedPath><affectedPath>app/pages/mobile/inventory.vue</affectedPath><affectedPath>amazon-appstore-listing.txt</affectedPath><affectedPath>server/api/dashboard/open-fulfillment-invoices.get.ts</affectedPath><affectedPath>.env-prod</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>1e2e8e38485ccfedc6c85a1e720d23c3c8d40a06</commitId><timestamp>1783004518000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fixes
</comment><date>2026-07-02 17:01:58 +0200</date><id>1e2e8e38485ccfedc6c85a1e720d23c3c8d40a06</id><msg>fixes</msg><path><editType>edit</editType><file>.env-dev</file></path><path><editType>edit</editType><file>.env-prod</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>amazon-appstore-listing.txt</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/inventory.vue</file></path><path><editType>add</editType><file>server/api/dashboard/open-fulfillment-invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/update-files/history.json</affectedPath><affectedPath>app/pages/mobile/inventory.vue</affectedPath><commitId>10db0a783d164298967092acf3ad668a595d8312</commitId><timestamp>1783005326000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fixes mobile
</comment><date>2026-07-02 17:15:26 +0200</date><id>10db0a783d164298967092acf3ad668a595d8312</id><msg>fixes mobile</msg><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>android/update-files/history.json</file></path><path><editType>edit</editType><file>app/pages/mobile/inventory.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/receive.vue</affectedPath><commitId>24a18e99eb05785be299500e5b99a331288e5d3b</commitId><timestamp>1783005869000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fixes
</comment><date>2026-07-02 17:24:29 +0200</date><id>24a18e99eb05785be299500e5b99a331288e5d3b</id><msg>fixes</msg><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/history.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><commitId>bd1b0ed6348d474864b845df3ff8b9f4b2509cdf</commitId><timestamp>1783006297000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fixes
</comment><date>2026-07-02 17:31:37 +0200</date><id>bd1b0ed6348d474864b845df3ff8b9f4b2509cdf</id><msg>fixes</msg><path><editType>edit</editType><file>android/update-files/history.json</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>app/pages/mobile/product.vue</affectedPath><affectedPath>app/pages/mobile/locator-articles.vue</affectedPath><affectedPath>android/update-files/history.json</affectedPath><affectedPath>app/pages/mobile/index.vue</affectedPath><commitId>aa5afd0be271aac72e6a6abfecb670900f93a9dc</commitId><timestamp>1783007558000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix mobile scan and show if it is a bom
</comment><date>2026-07-02 17:52:38 +0200</date><id>aa5afd0be271aac72e6a6abfecb670900f93a9dc</id><msg>fix mobile scan and show if it is a bom</msg><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>app/pages/mobile/locator-articles.vue</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>app/pages/mobile/index.vue</file></path><path><editType>edit</editType><file>android/update-files/history.json</file></path><path><editType>edit</editType><file>app/pages/mobile/product.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>662</buildNumber><marked><SHA1>0e80acec3fa462dbc0f03522c9a5d3b5ca142cb6</SHA1><branch><SHA1>0e80acec3fa462dbc0f03522c9a5d3b5ca142cb6</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>0e80acec3fa462dbc0f03522c9a5d3b5ca142cb6</SHA1><branch><SHA1>0e80acec3fa462dbc0f03522c9a5d3b5ca142cb6</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>0e80acec3fa462dbc0f03522c9a5d3b5ca142cb6</SHA1><branch><SHA1>0e80acec3fa462dbc0f03522c9a5d3b5ca142cb6</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#662</displayName><duration>58017</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #662</fullDisplayName><id>662</id><inProgress>false</inProgress><keepLog>false</keepLog><number>662</number><queueId>5355</queueId><result>SUCCESS</result><timestamp>1782950400970</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/662/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><affectedPath>app/pages/sales/orders/index.vue</affectedPath><commitId>3aab20b2322d0565f3bf8cc3c9a30d02d93d856e</commitId><timestamp>1782891130000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>give merchant option to edit his orders as long not shipped
</comment><date>2026-07-01 09:32:10 +0200</date><id>3aab20b2322d0565f3bf8cc3c9a30d02d93d856e</id><msg>give merchant option to edit his orders as long not shipped</msg><path><editType>edit</editType><file>app/pages/sales/orders/index.vue</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/settings/locations/ag-grid.put.ts</affectedPath><commitId>afbb279c23186fd47d4c63fe0225865b8e6ff197</commitId><timestamp>1782891973000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add safeguard to merchaent order change
</comment><date>2026-07-01 09:46:13 +0200</date><id>afbb279c23186fd47d4c63fe0225865b8e6ff197</id><msg>add safeguard to merchaent order change</msg><path><editType>edit</editType><file>server/api/settings/locations/ag-grid.put.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>server/api/print/product.post.ts</affectedPath><affectedPath>android/app/build.gradle</affectedPath><affectedPath>server/api/search/product-card/[id].get.ts</affectedPath><affectedPath>app/components/SearchModal.vue</affectedPath><affectedPath>app/pages/mobile/print-labels.vue</affectedPath><affectedPath>android/update-files/history.json</affectedPath><commitId>547b5cd5cb6f8c3b74e4b69cdcb09c3dedf9f7f4</commitId><timestamp>1782897200000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add safeguard to merchaent order change
</comment><date>2026-07-01 11:13:20 +0200</date><id>547b5cd5cb6f8c3b74e4b69cdcb09c3dedf9f7f4</id><msg>add safeguard to merchaent order change</msg><path><editType>edit</editType><file>android/update-files/history.json</file></path><path><editType>edit</editType><file>app/pages/mobile/print-labels.vue</file></path><path><editType>edit</editType><file>server/api/search/product-card/[id].get.ts</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>server/api/print/product.post.ts</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/print-labels.vue</affectedPath><commitId>7145953bd24dc51bf87f144b818dd0fe6a4e138a</commitId><timestamp>1782899948000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>stay on label printing
</comment><date>2026-07-01 11:59:08 +0200</date><id>7145953bd24dc51bf87f144b818dd0fe6a4e138a</id><msg>stay on label printing</msg><path><editType>edit</editType><file>app/pages/mobile/print-labels.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>server/api/search/product-card/[id].get.ts</affectedPath><affectedPath>android/update-files/history.json</affectedPath><affectedPath>app/components/SearchModal.vue</affectedPath><commitId>0df412774636537727e6a14ba47ef295a980f1f3</commitId><timestamp>1782905579000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>tune search modal
</comment><date>2026-07-01 13:32:59 +0200</date><id>0df412774636537727e6a14ba47ef295a980f1f3</id><msg>tune search modal</msg><path><editType>edit</editType><file>android/update-files/history.json</file></path><path><editType>edit</editType><file>server/api/search/product-card/[id].get.ts</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/procurements/my-orders/create.vue</affectedPath><affectedPath>app/pages/materials/products/index.vue</affectedPath><affectedPath>app/components/SearchModal.vue</affectedPath><affectedPath>server/api/materials/products/ag-grid/products.post.ts</affectedPath><commitId>0e80acec3fa462dbc0f03522c9a5d3b5ca142cb6</commitId><timestamp>1782923700000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix window
</comment><date>2026-07-01 18:35:00 +0200</date><id>0e80acec3fa462dbc0f03522c9a5d3b5ca142cb6</id><msg>fix window</msg><path><editType>edit</editType><file>app/pages/procurements/my-orders/create.vue</file></path><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path><path><editType>edit</editType><file>app/pages/materials/products/index.vue</file></path><path><editType>edit</editType><file>server/api/materials/products/ag-grid/products.post.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>661</buildNumber><marked><SHA1>4c58490685a1607abd1faf7cf4b63091ea271134</SHA1><branch><SHA1>4c58490685a1607abd1faf7cf4b63091ea271134</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>4c58490685a1607abd1faf7cf4b63091ea271134</SHA1><branch><SHA1>4c58490685a1607abd1faf7cf4b63091ea271134</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>4c58490685a1607abd1faf7cf4b63091ea271134</SHA1><branch><SHA1>4c58490685a1607abd1faf7cf4b63091ea271134</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#661</displayName><duration>57393</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #661</fullDisplayName><id>661</id><inProgress>false</inProgress><keepLog>false</keepLog><number>661</number><queueId>5350</queueId><result>SUCCESS</result><timestamp>1782864000971</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/661/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/admin/merchant-onboarding/send-credentials.post.ts</affectedPath><affectedPath>server/api/admin/merchant-onboarding/bpartner-users.get.ts</affectedPath><affectedPath>app/components/partners/PartnerDetailRecordUser.vue</affectedPath><affectedPath>app/components/admin/merchant-onboarding/SendMerchantLoginsModal.vue</affectedPath><commitId>320a0f070f7f246a982cf5716082b6ce73e1489a</commitId><timestamp>1782809306000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Modify email sending with user credentials and listing of contacts on bpartner with full phone and email
</comment><date>2026-06-30 10:48:26 +0200</date><id>320a0f070f7f246a982cf5716082b6ce73e1489a</id><msg>Modify email sending with user credentials and listing of contacts on bpartner with full phone and email</msg><path><editType>edit</editType><file>server/api/admin/merchant-onboarding/send-credentials.post.ts</file></path><path><editType>edit</editType><file>app/components/admin/merchant-onboarding/SendMerchantLoginsModal.vue</file></path><path><editType>edit</editType><file>server/api/admin/merchant-onboarding/bpartner-users.get.ts</file></path><path><editType>edit</editType><file>app/components/partners/PartnerDetailRecordUser.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/requests/my-tickets/[id].vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>b59e9239b884d752784d6734772d5be483df7185</commitId><timestamp>1782810227000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>ticket complete button for merchants
</comment><date>2026-06-30 11:03:47 +0200</date><id>b59e9239b884d752784d6734772d5be483df7185</id><msg>ticket complete button for merchants</msg><path><editType>edit</editType><file>app/pages/requests/my-tickets/[id].vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/admin/merchant-onboarding/send-credentials.post.ts</affectedPath><commitId>88f965d6aaab950638318accc9b5c19a0ed4a9ed</commitId><timestamp>1782810285000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Extend mail text on credentials sent
</comment><date>2026-06-30 11:04:45 +0200</date><id>88f965d6aaab950638318accc9b5c19a0ed4a9ed</id><msg>Extend mail text on credentials sent</msg><path><editType>edit</editType><file>server/api/admin/merchant-onboarding/send-credentials.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/admin/merchant-onboarding/send-credentials.post.ts</affectedPath><affectedPath>server/utils/pushNotifier.ts</affectedPath><affectedPath>app/components/admin/merchant-onboarding/SendMerchantLoginsModal.vue</affectedPath><affectedPath>server/api/requests/requests/[id]/action-notification.post.ts</affectedPath><commitId>1fa14e4afd28190463f6601564a73274279e6e3b</commitId><timestamp>1782813022000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix ad user role on mail sent
</comment><date>2026-06-30 11:50:22 +0200</date><id>1fa14e4afd28190463f6601564a73274279e6e3b</id><msg>fix ad user role on mail sent</msg><path><editType>edit</editType><file>server/api/admin/merchant-onboarding/send-credentials.post.ts</file></path><path><editType>edit</editType><file>app/components/admin/merchant-onboarding/SendMerchantLoginsModal.vue</file></path><path><editType>edit</editType><file>server/utils/pushNotifier.ts</file></path><path><editType>edit</editType><file>server/api/requests/requests/[id]/action-notification.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/qty-fix/search.get.ts</affectedPath><affectedPath>app/pages/mobile/product.vue</affectedPath><affectedPath>server/api/materials/products/search.get.ts</affectedPath><affectedPath>app/components/SearchModal.vue</affectedPath><affectedPath>app/pages/mobile/receive.vue</affectedPath><affectedPath>server/api/mobile/product-lookup.post.ts</affectedPath><commitId>62c972139ae06df272244760c1ec92976310f8ff</commitId><timestamp>1782816358000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>filter idempiere and jtl bom from receive and similar pages
</comment><date>2026-06-30 12:45:58 +0200</date><id>62c972139ae06df272244760c1ec92976310f8ff</id><msg>filter idempiere and jtl bom from receive and similar pages</msg><path><editType>edit</editType><file>server/api/materials/products/search.get.ts</file></path><path><editType>edit</editType><file>server/api/materials/qty-fix/search.get.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/product.vue</file></path><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path><path><editType>edit</editType><file>server/api/mobile/product-lookup.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/admin/merchant-onboarding/send-credentials.post.ts</affectedPath><affectedPath>app/components/admin/merchant-onboarding/SendMerchantLoginsModal.vue</affectedPath><commitId>df41c6d3a10146625a6ded479e157a796239851e</commitId><timestamp>1782816955000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix ad user role set
</comment><date>2026-06-30 12:55:55 +0200</date><id>df41c6d3a10146625a6ded479e157a796239851e</id><msg>fix ad user role set</msg><path><editType>edit</editType><file>app/components/admin/merchant-onboarding/SendMerchantLoginsModal.vue</file></path><path><editType>edit</editType><file>server/api/admin/merchant-onboarding/send-credentials.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>server/api/materials/qty-fix/search.get.ts</affectedPath><affectedPath>app/pages/materials/qty-fix.vue</affectedPath><affectedPath>android/update-files/history.json</affectedPath><commitId>326eb6a4989ef4e14378747e4a848febea5b53b3</commitId><timestamp>1782819601000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix allow source bom
</comment><date>2026-06-30 13:40:01 +0200</date><id>326eb6a4989ef4e14378747e4a848febea5b53b3</id><msg>fix allow source bom</msg><path><editType>edit</editType><file>android/update-files/history.json</file></path><path><editType>edit</editType><file>server/api/materials/qty-fix/search.get.ts</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>app/pages/materials/qty-fix.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/receive.vue</affectedPath><affectedPath>app/pages/materials/qty-fix.vue</affectedPath><commitId>331180a25cb4087f8765920cfb4a1e487395d910</commitId><timestamp>1782822252000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix selection
</comment><date>2026-06-30 14:24:12 +0200</date><id>331180a25cb4087f8765920cfb4a1e487395d910</id><msg>fix selection</msg><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path><path><editType>edit</editType><file>app/pages/materials/qty-fix.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><affectedPath>app/components/procurements/ReceiptDetailRecordLine.vue</affectedPath><affectedPath>app/pages/mobile/receive.vue</affectedPath><affectedPath>server/api/materials/products/filter-elastic.get.ts</affectedPath><affectedPath>app/components/procurements/OrderDetailRecordLine.vue</affectedPath><affectedPath>app/pages/procurements/my-orders/create.vue</affectedPath><affectedPath>server/api/materials/products/filter.get.ts</affectedPath><affectedPath>android/update-files/history.json</affectedPath><affectedPath>server/api/mobile/product-lookup.post.ts</affectedPath><commitId>cfca5e157a1b4d380ea519c0a4e22d1790cce71a</commitId><timestamp>1782824230000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix mobile ean input receive takover
</comment><date>2026-06-30 14:57:10 +0200</date><id>cfca5e157a1b4d380ea519c0a4e22d1790cce71a</id><msg>fix mobile ean input receive takover</msg><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>server/api/materials/products/filter-elastic.get.ts</file></path><path><editType>edit</editType><file>android/update-files/history.json</file></path><path><editType>edit</editType><file>app/components/procurements/ReceiptDetailRecordLine.vue</file></path><path><editType>edit</editType><file>app/components/procurements/OrderDetailRecordLine.vue</file></path><path><editType>edit</editType><file>server/api/mobile/product-lookup.post.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>app/pages/procurements/my-orders/create.vue</file></path><path><editType>edit</editType><file>server/api/materials/products/filter.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/history.json</affectedPath><affectedPath>android/update-files/version.json</affectedPath><commitId>2c8db30fadc0c756fc98a37db2257cde9414c8e7</commitId><timestamp>1782824479000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>changes on mobile only for native android
</comment><date>2026-06-30 15:01:19 +0200</date><id>2c8db30fadc0c756fc98a37db2257cde9414c8e7</id><msg>changes on mobile only for native android</msg><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>android/update-files/history.json</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/receive.vue</affectedPath><affectedPath>app/pages/materials/qty-fix.vue</affectedPath><commitId>395c1559988ed65435e23032c2f9524dce76e521</commitId><timestamp>1782854621000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add filter to qty fix
</comment><date>2026-06-30 23:23:41 +0200</date><id>395c1559988ed65435e23032c2f9524dce76e521</id><msg>add filter to qty fix</msg><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path><path><editType>edit</editType><file>app/pages/materials/qty-fix.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/qty-fix/search.get.ts</affectedPath><affectedPath>app/pages/materials/qty-fix.vue</affectedPath><commitId>24d18df42ded418609ac66685556ebc2bddbf7c5</commitId><timestamp>1782855220000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add all filter on qty fix
</comment><date>2026-06-30 23:33:40 +0200</date><id>24d18df42ded418609ac66685556ebc2bddbf7c5</id><msg>add all filter on qty fix</msg><path><editType>edit</editType><file>server/api/materials/qty-fix/search.get.ts</file></path><path><editType>edit</editType><file>app/pages/materials/qty-fix.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/AttachmentViewer.vue</affectedPath><affectedPath>server/api/materials/products/quantities.post.ts</affectedPath><affectedPath>app/pages/index.vue</affectedPath><affectedPath>app/pages/mobile/tasks.vue</affectedPath><affectedPath>app/pages/materials/products/index.vue</affectedPath><affectedPath>app/pages/mobile/receive.vue</affectedPath><affectedPath>app/pages/requests/requests/index.vue</affectedPath><affectedPath>app/components/TopMegaBar.vue</affectedPath><affectedPath>server/api/admin/merchant-onboarding/send-credentials.post.ts</affectedPath><affectedPath>app/pages/mobile/product.vue</affectedPath><affectedPath>android/update-files/history.json</affectedPath><affectedPath>server/api/materials/products/ag-grid/products.post.ts</affectedPath><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>app/components/AttachmentModal.vue</affectedPath><affectedPath>app/components/SearchModal.vue</affectedPath><commitId>704b71efa2349558a5805819870f8bee6070b4f4</commitId><timestamp>1782858308000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>multiple fixes
</comment><date>2026-07-01 00:25:08 +0200</date><id>704b71efa2349558a5805819870f8bee6070b4f4</id><msg>multiple fixes</msg><path><editType>edit</editType><file>server/api/materials/products/quantities.post.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/ag-grid/products.post.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path><path><editType>edit</editType><file>android/update-files/history.json</file></path><path><editType>edit</editType><file>app/components/AttachmentModal.vue</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path><path><editType>edit</editType><file>server/api/admin/merchant-onboarding/send-credentials.post.ts</file></path><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>app/pages/mobile/product.vue</file></path><path><editType>edit</editType><file>app/components/TopMegaBar.vue</file></path><path><editType>edit</editType><file>app/components/AttachmentViewer.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/tasks.vue</file></path><path><editType>edit</editType><file>app/pages/requests/requests/index.vue</file></path><path><editType>edit</editType><file>app/pages/materials/products/index.vue</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/SearchModal.vue</affectedPath><commitId>872a25dcf1788aa7ff3e8c19da4f8b4686d80a9c</commitId><timestamp>1782859951000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fixes
</comment><date>2026-07-01 00:52:31 +0200</date><id>872a25dcf1788aa7ff3e8c19da4f8b4686d80a9c</id><msg>fixes</msg><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>app/pages/mobile/receive.vue</affectedPath><affectedPath>app/pages/mobile/index.vue</affectedPath><commitId>4c58490685a1607abd1faf7cf4b63091ea271134</commitId><timestamp>1782860624000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fixes
</comment><date>2026-07-01 01:03:44 +0200</date><id>4c58490685a1607abd1faf7cf4b63091ea271134</id><msg>fixes</msg><path><editType>edit</editType><file>app/pages/mobile/index.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>660</buildNumber><marked><SHA1>b57614009d68eb09a04c42ec032c9c22172f12c5</SHA1><branch><SHA1>b57614009d68eb09a04c42ec032c9c22172f12c5</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>b57614009d68eb09a04c42ec032c9c22172f12c5</SHA1><branch><SHA1>b57614009d68eb09a04c42ec032c9c22172f12c5</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>b57614009d68eb09a04c42ec032c9c22172f12c5</SHA1><branch><SHA1>b57614009d68eb09a04c42ec032c9c22172f12c5</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#660</displayName><duration>56869</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #660</fullDisplayName><id>660</id><inProgress>false</inProgress><keepLog>false</keepLog><number>660</number><queueId>5341</queueId><result>SUCCESS</result><timestamp>1782777600970</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/660/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><affectedPath>server/api/commission/parcels/dhl/multi.post.ts</affectedPath><affectedPath>app/pages/settings/order-sources/create.vue</affectedPath><affectedPath>app/pages/settings/order-sources/[id]/view.vue</affectedPath><affectedPath>android/app/capacitor.build.gradle</affectedPath><affectedPath>android/update-files/history.json</affectedPath><affectedPath>server/api/settings/order-sources/store.post.ts</affectedPath><affectedPath>android/capacitor.settings.gradle</affectedPath><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>app/pages/settings/order-sources/[id]/edit.vue</affectedPath><affectedPath>server/api/local/qty-on-hand-batch.post.ts</affectedPath><affectedPath>.env-dev</affectedPath><affectedPath>server/api/commission/parcels/dhl/index.post.ts</affectedPath><affectedPath>server/api/settings/order-sources/update.put.ts</affectedPath><affectedPath>app/pages/fulfillment/stocks/index.vue</affectedPath><commitId>03cbe280983d0a16b303e8039d1a97be8107e505</commitId><timestamp>1782715992000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>change jtl order import
</comment><date>2026-06-29 08:53:12 +0200</date><id>03cbe280983d0a16b303e8039d1a97be8107e505</id><msg>change jtl order import</msg><path><editType>edit</editType><file>.env-dev</file></path><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path><path><editType>add</editType><file>android/update-files/history.json</file></path><path><editType>edit</editType><file>app/pages/settings/order-sources/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/pages/settings/order-sources/[id]/view.vue</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>android/capacitor.settings.gradle</file></path><path><editType>edit</editType><file>server/api/settings/order-sources/store.post.ts</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>android/app/capacitor.build.gradle</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dhl/multi.post.ts</file></path><path><editType>edit</editType><file>app/pages/settings/order-sources/create.vue</file></path><path><editType>add</editType><file>server/api/local/qty-on-hand-batch.post.ts</file></path><path><editType>edit</editType><file>app/pages/fulfillment/stocks/index.vue</file></path><path><editType>edit</editType><file>server/api/commission/parcels/dhl/index.post.ts</file></path><path><editType>edit</editType><file>server/api/settings/order-sources/update.put.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><affectedPath>server/api/ffn/sync-images.post.ts</affectedPath><commitId>760f1acae48be364aae3ae9e833f711b7fd76ec3</commitId><timestamp>1782717483000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add jtl image sync
</comment><date>2026-06-29 09:18:03 +0200</date><id>760f1acae48be364aae3ae9e833f711b7fd76ec3</id><msg>add jtl image sync</msg><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path><path><editType>add</editType><file>server/api/ffn/sync-images.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/products/send-qty-report.post.ts</affectedPath><affectedPath>app/pages/materials/qty-on-hand.vue</affectedPath><affectedPath>server/api/materials/products/qty-on-hand-pit.get.ts</affectedPath><affectedPath>app/components/materials/StockReportEmailModal.vue</affectedPath><commitId>549dda364b1114dca2b4912287930ec33ac810ac</commitId><timestamp>1782720185000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add pit for lageberbestand
</comment><date>2026-06-29 10:03:05 +0200</date><id>549dda364b1114dca2b4912287930ec33ac810ac</id><msg>add pit for lageberbestand</msg><path><editType>edit</editType><file>server/api/materials/products/send-qty-report.post.ts</file></path><path><editType>edit</editType><file>app/pages/materials/qty-on-hand.vue</file></path><path><editType>add</editType><file>server/api/materials/products/qty-on-hand-pit.get.ts</file></path><path><editType>edit</editType><file>app/components/materials/StockReportEmailModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/ffn/stocks/set-all.post.ts</affectedPath><affectedPath>app/pages/fulfillment/stocks/index.vue</affectedPath><commitId>c8c409860cc4f949b915118794fcae0c61c6e909</commitId><timestamp>1782728161000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add jtl fixed qty setting
</comment><date>2026-06-29 12:16:01 +0200</date><id>c8c409860cc4f949b915118794fcae0c61c6e909</id><msg>add jtl fixed qty setting</msg><path><editType>add</editType><file>server/api/ffn/stocks/set-all.post.ts</file></path><path><editType>edit</editType><file>app/pages/fulfillment/stocks/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/qty-fix/product-detail.get.ts</affectedPath><affectedPath>app/composables/menu/admin/materials.ts</affectedPath><affectedPath>server/api/materials/qty-fix/search.get.ts</affectedPath><affectedPath>app/pages/materials/qty-fix.vue</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><commitId>34dadcddcd3474d14d6c0ed7f33b3439116b6993</commitId><timestamp>1782731780000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add article qty swap with ean fix option
</comment><date>2026-06-29 13:16:20 +0200</date><id>34dadcddcd3474d14d6c0ed7f33b3439116b6993</id><msg>add article qty swap with ean fix option</msg><path><editType>add</editType><file>server/api/materials/qty-fix/search.get.ts</file></path><path><editType>add</editType><file>server/api/materials/qty-fix/product-detail.get.ts</file></path><path><editType>edit</editType><file>app/composables/menu/admin/materials.ts</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path><path><editType>add</editType><file>app/pages/materials/qty-fix.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><affectedPath>app/components/settings/JtlSelectiveUpdateModal.vue</affectedPath><affectedPath>server/api/ffn/selective-update-products.post.ts</affectedPath><commitId>e22e111343ac18932f7015e0c3dd47cd712d7c89</commitId><timestamp>1782742071000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add custom jtl ffn sync with selected fields
</comment><date>2026-06-29 16:07:51 +0200</date><id>e22e111343ac18932f7015e0c3dd47cd712d7c89</id><msg>add custom jtl ffn sync with selected fields</msg><path><editType>add</editType><file>server/api/ffn/selective-update-products.post.ts</file></path><path><editType>add</editType><file>app/components/settings/JtlSelectiveUpdateModal.vue</file></path><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/qty-fix/product-detail.get.ts</affectedPath><affectedPath>server/api/materials/qty-fix/search.get.ts</affectedPath><affectedPath>app/pages/materials/qty-fix.vue</affectedPath><commitId>0e3846fa6f7c2378c846d29da9eb7bba88b8c176</commitId><timestamp>1782742360000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show if jtl is bowm on the qty swap page
</comment><date>2026-06-29 16:12:40 +0200</date><id>0e3846fa6f7c2378c846d29da9eb7bba88b8c176</id><msg>show if jtl is bowm on the qty swap page</msg><path><editType>edit</editType><file>server/api/materials/qty-fix/product-detail.get.ts</file></path><path><editType>edit</editType><file>app/pages/materials/qty-fix.vue</file></path><path><editType>edit</editType><file>server/api/materials/qty-fix/search.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/JtlSelectiveUpdateModal.vue</affectedPath><commitId>b57614009d68eb09a04c42ec032c9c22172f12c5</commitId><timestamp>1782743554000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>jtl sync bom fix
</comment><date>2026-06-29 16:32:34 +0200</date><id>b57614009d68eb09a04c42ec032c9c22172f12c5</id><msg>jtl sync bom fix</msg><path><editType>edit</editType><file>app/components/settings/JtlSelectiveUpdateModal.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>659</buildNumber><marked><SHA1>cbaea3e096ef00607eb04e91b24d39ac02c47a4f</SHA1><branch><SHA1>cbaea3e096ef00607eb04e91b24d39ac02c47a4f</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>cbaea3e096ef00607eb04e91b24d39ac02c47a4f</SHA1><branch><SHA1>cbaea3e096ef00607eb04e91b24d39ac02c47a4f</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>cbaea3e096ef00607eb04e91b24d39ac02c47a4f</SHA1><branch><SHA1>cbaea3e096ef00607eb04e91b24d39ac02c47a4f</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#659</displayName><duration>61393</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #659</fullDisplayName><id>659</id><inProgress>false</inProgress><keepLog>false</keepLog><number>659</number><queueId>5334</queueId><result>SUCCESS</result><timestamp>1782691200971</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/659/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><affectedPath>app/pages/mobile/inventory.vue</affectedPath><affectedPath>app/pages/mobile/receive.vue</affectedPath><affectedPath>app/assets/css/mobile-theme.css</affectedPath><affectedPath>app/pages/mobile/product.vue</affectedPath><affectedPath>app/pages/mobile/movement.vue</affectedPath><commitId>540d8cb4744949ed43843f7acfa88cedbcb6b6c2</commitId><timestamp>1782653500000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add on mobile article scan receive function
</comment><date>2026-06-28 15:31:40 +0200</date><id>540d8cb4744949ed43843f7acfa88cedbcb6b6c2</id><msg>Add on mobile article scan receive function</msg><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>app/pages/mobile/inventory.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/product.vue</file></path><path><editType>edit</editType><file>app/assets/css/mobile-theme.css</file></path><path><editType>edit</editType><file>app/pages/mobile/movement.vue</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/ffn/products/index.get.ts</affectedPath><commitId>bf0939e7d7d61032abe29737c792d0c22f82bb30</commitId><timestamp>1782672824000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix ffn product sync sepearate merchants
</comment><date>2026-06-28 20:53:44 +0200</date><id>bf0939e7d7d61032abe29737c792d0c22f82bb30</id><msg>fix ffn product sync sepearate merchants</msg><path><editType>edit</editType><file>server/api/ffn/products/index.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/returnLocatorHelper.ts</affectedPath><affectedPath>app/pages/fulfillment/stocks/index.vue</affectedPath><commitId>b3d4f1903fd74d1cfffe35ea3cb5c8c8bd53d85a</commitId><timestamp>1782680370000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>enhance jtl sync product page
</comment><date>2026-06-28 22:59:30 +0200</date><id>b3d4f1903fd74d1cfffe35ea3cb5c8c8bd53d85a</id><msg>enhance jtl sync product page</msg><path><editType>edit</editType><file>app/pages/fulfillment/stocks/index.vue</file></path><path><editType>edit</editType><file>server/utils/returnLocatorHelper.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/composables/useAppUpdate.ts</affectedPath><affectedPath>app/composables/useKeepAwake.ts</affectedPath><affectedPath>app/composables/useFeedback.js</affectedPath><affectedPath>app/pages/mobile/receive.vue</affectedPath><affectedPath>app/pages/mobile/generate-shipments.vue</affectedPath><affectedPath>server/api/mobile/app-versions.get.ts</affectedPath><affectedPath>app/plugins/21.native-lifecycle.client.ts</affectedPath><affectedPath>app/pages/mobile/return.vue</affectedPath><affectedPath>app/pages/mobile/picklist.vue</affectedPath><affectedPath>app/pages/mobile/commission.vue</affectedPath><affectedPath>scripts/upload-mobile-update.sh</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>app/pages/mobile/inventory.vue</affectedPath><affectedPath>app/pages/mobile/index.vue</affectedPath><affectedPath>package.json</affectedPath><affectedPath>app/pages/mobile/locator-labels.vue</affectedPath><affectedPath>app/pages/mobile/movement.vue</affectedPath><commitId>cbaea3e096ef00607eb04e91b24d39ac02c47a4f</commitId><timestamp>1782685613000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>new mobile version with more features
</comment><date>2026-06-29 00:26:53 +0200</date><id>cbaea3e096ef00607eb04e91b24d39ac02c47a4f</id><msg>new mobile version with more features</msg><path><editType>edit</editType><file>scripts/upload-mobile-update.sh</file></path><path><editType>edit</editType><file>app/pages/mobile/inventory.vue</file></path><path><editType>edit</editType><file>app/composables/useFeedback.js</file></path><path><editType>add</editType><file>app/composables/useKeepAwake.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/return.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/movement.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/locator-labels.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/generate-shipments.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/picklist.vue</file></path><path><editType>edit</editType><file>package.json</file></path><path><editType>edit</editType><file>app/pages/mobile/commission.vue</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/index.vue</file></path><path><editType>add</editType><file>server/api/mobile/app-versions.get.ts</file></path><path><editType>edit</editType><file>app/composables/useAppUpdate.ts</file></path><path><editType>add</editType><file>app/plugins/21.native-lifecycle.client.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>658</buildNumber><marked><SHA1>6a39a1f31a80e69ce43b252941776c1c0a5fc7fd</SHA1><branch><SHA1>6a39a1f31a80e69ce43b252941776c1c0a5fc7fd</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>6a39a1f31a80e69ce43b252941776c1c0a5fc7fd</SHA1><branch><SHA1>6a39a1f31a80e69ce43b252941776c1c0a5fc7fd</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>6a39a1f31a80e69ce43b252941776c1c0a5fc7fd</SHA1><branch><SHA1>6a39a1f31a80e69ce43b252941776c1c0a5fc7fd</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#658</displayName><duration>57123</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #658</fullDisplayName><id>658</id><inProgress>false</inProgress><keepLog>false</keepLog><number>658</number><queueId>5329</queueId><result>SUCCESS</result><timestamp>1782604800970</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/658/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/materials/locators/index.vue</affectedPath><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><commitId>f38f73410de7c0abc9b079f9e63393838aaf5e61</commitId><timestamp>1782548070000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show visualization when generate locators
</comment><date>2026-06-27 10:14:30 +0200</date><id>f38f73410de7c0abc9b079f9e63393838aaf5e61</id><msg>show visualization when generate locators</msg><path><editType>edit</editType><file>app/pages/materials/locators/index.vue</file></path><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><affectedPath>app/pages/materials/locators/index.vue</affectedPath><affectedPath>server/api/ffn/products-list.post.ts</affectedPath><commitId>fce5fb2e5c47028d99087b5628036c419f94eb51</commitId><timestamp>1782550971000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show full article list on jtl-ffn preview
</comment><date>2026-06-27 11:02:51 +0200</date><id>fce5fb2e5c47028d99087b5628036c419f94eb51</id><msg>show full article list on jtl-ffn preview</msg><path><editType>add</editType><file>server/api/ffn/products-list.post.ts</file></path><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path><path><editType>edit</editType><file>app/pages/materials/locators/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><commitId>12601f39f847209bb68d1c39bad36dd7bd11812d</commitId><timestamp>1782551293000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show jtl preview
</comment><date>2026-06-27 11:08:13 +0200</date><id>12601f39f847209bb68d1c39bad36dd7bd11812d</id><msg>show jtl preview</msg><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><affectedPath>app/pages/settings/order-sources/[id]/edit.vue</affectedPath><affectedPath>server/api/settings/order-sources/update.put.ts</affectedPath><affectedPath>server/api/settings/order-sources/store.post.ts</affectedPath><commitId>45d3f6c3d020d59e6e44f4590c97c37fc8ef4c8a</commitId><timestamp>1782554615000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add pricelist for product import
</comment><date>2026-06-27 12:03:35 +0200</date><id>45d3f6c3d020d59e6e44f4590c97c37fc8ef4c8a</id><msg>add pricelist for product import</msg><path><editType>edit</editType><file>app/pages/settings/order-sources/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path><path><editType>edit</editType><file>server/api/settings/order-sources/update.put.ts</file></path><path><editType>edit</editType><file>server/api/settings/order-sources/store.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/ivr/return-instructions-email.post.ts</affectedPath><affectedPath>.env-dev</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>.env-prod</affectedPath><commitId>e15792ee60b648e24b9f937c22fa21aa88682ed7</commitId><timestamp>1782556657000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>ivr with return functionality on asterisk
</comment><date>2026-06-27 12:37:37 +0200</date><id>e15792ee60b648e24b9f937c22fa21aa88682ed7</id><msg>ivr with return functionality on asterisk</msg><path><editType>edit</editType><file>.env-prod</file></path><path><editType>edit</editType><file>.env-dev</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>add</editType><file>server/api/ivr/return-instructions-email.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><commitId>2dd5b721c221074eaea048328e2e7d525a3dff32</commitId><timestamp>1782557169000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add print pdf to the full product list preview on ordersource
</comment><date>2026-06-27 12:46:09 +0200</date><id>2dd5b721c221074eaea048328e2e7d525a3dff32</id><msg>add print pdf to the full product list preview on ordersource</msg><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><commitId>11174e110f06a7f097eeb2e29308c70d6a934964</commitId><timestamp>1782561242000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>update ordersource form
</comment><date>2026-06-27 13:54:02 +0200</date><id>11174e110f06a7f097eeb2e29308c70d6a934964</id><msg>update ordersource form</msg><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/utils/scanCode.ts</affectedPath><affectedPath>app/pages/mobile/inventory.vue</affectedPath><affectedPath>server/api/materials/products/by-value.get.ts</affectedPath><affectedPath>server/api/mobile/product-search.post.ts</affectedPath><affectedPath>app/pages/integrations/commission.vue</affectedPath><affectedPath>app/pages/mobile/return.vue</affectedPath><affectedPath>app/pages/integrations/returns-desktop.vue</affectedPath><affectedPath>server/api/mobile/product-lookup.post.ts</affectedPath><affectedPath>app/pages/mobile/commission.vue</affectedPath><commitId>ac14878d15ac0b37949f7bb24cf06bee6f867f58</commitId><timestamp>1782567075000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>scan fallback striping for pzn
</comment><date>2026-06-27 15:31:15 +0200</date><id>ac14878d15ac0b37949f7bb24cf06bee6f867f58</id><msg>scan fallback striping for pzn</msg><path><editType>edit</editType><file>server/api/mobile/product-lookup.post.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/inventory.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/return.vue</file></path><path><editType>edit</editType><file>server/api/mobile/product-search.post.ts</file></path><path><editType>edit</editType><file>app/pages/mobile/commission.vue</file></path><path><editType>edit</editType><file>app/pages/integrations/returns-desktop.vue</file></path><path><editType>add</editType><file>app/utils/scanCode.ts</file></path><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path><path><editType>edit</editType><file>server/api/materials/products/by-value.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><affectedPath>app/utils/scanCode.ts</affectedPath><affectedPath>app/pages/mobile/inventory.vue</affectedPath><affectedPath>app/pages/integrations/commission.vue</affectedPath><affectedPath>app/pages/mobile/commission.vue</affectedPath><affectedPath>server/api/mobile/product-lookup.post.ts</affectedPath><commitId>6515b667a2698f631e7aa76624240b8250ab3db5</commitId><timestamp>1782568649000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>scan fallback striping for pzn
</comment><date>2026-06-27 15:57:29 +0200</date><id>6515b667a2698f631e7aa76624240b8250ab3db5</id><msg>scan fallback striping for pzn</msg><path><editType>edit</editType><file>app/pages/mobile/inventory.vue</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>app/pages/mobile/commission.vue</file></path><path><editType>edit</editType><file>app/utils/scanCode.ts</file></path><path><editType>edit</editType><file>server/api/mobile/product-lookup.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>app/pages/mobile/receive.vue</affectedPath><commitId>8933793fd27a9104911a55e7ccb6317670bdd193</commitId><timestamp>1782569478000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>scan fallback striping for pzn
</comment><date>2026-06-27 16:11:18 +0200</date><id>8933793fd27a9104911a55e7ccb6317670bdd193</id><msg>scan fallback striping for pzn</msg><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/inventory.vue</affectedPath><affectedPath>app/pages/mobile/locator-articles.vue</affectedPath><affectedPath>app/pages/mobile/receive.vue</affectedPath><affectedPath>app/pages/mobile/fix-locator-owner.vue</affectedPath><affectedPath>app/pages/mobile/print-labels.vue</affectedPath><affectedPath>app/pages/mobile/product.vue</affectedPath><affectedPath>app/pages/mobile/movement.vue</affectedPath><commitId>6a39a1f31a80e69ce43b252941776c1c0a5fc7fd</commitId><timestamp>1782573220000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>scan fallback striping for pzn
</comment><date>2026-06-27 17:13:40 +0200</date><id>6a39a1f31a80e69ce43b252941776c1c0a5fc7fd</id><msg>scan fallback striping for pzn</msg><path><editType>edit</editType><file>app/pages/mobile/inventory.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/fix-locator-owner.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/locator-articles.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/movement.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/print-labels.vue</file></path><path><editType>edit</editType><file>app/pages/mobile/product.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>657</buildNumber><marked><SHA1>89c9b17b5ee4d40de31488d0ca801e768cf3acbb</SHA1><branch><SHA1>89c9b17b5ee4d40de31488d0ca801e768cf3acbb</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>89c9b17b5ee4d40de31488d0ca801e768cf3acbb</SHA1><branch><SHA1>89c9b17b5ee4d40de31488d0ca801e768cf3acbb</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>89c9b17b5ee4d40de31488d0ca801e768cf3acbb</SHA1><branch><SHA1>89c9b17b5ee4d40de31488d0ca801e768cf3acbb</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#657</displayName><duration>57684</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #657</fullDisplayName><id>657</id><inProgress>false</inProgress><keepLog>false</keepLog><number>657</number><queueId>5317</queueId><result>SUCCESS</result><timestamp>1782518400971</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/657/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><affectedPath>server/api/ffn/authorizations/index.post.ts</affectedPath><affectedPath>server/api/ffn/warehouses/index.post.ts</affectedPath><affectedPath>server/api/ffn/dry-run-orders.post.ts</affectedPath><affectedPath>server/api/ffn/merchants/index.get.ts</affectedPath><affectedPath>server/api/ffn/dry-run-products.post.ts</affectedPath><affectedPath>app/components/fulfillment/FulfillmentFulfillerShippingMethodFormModal.vue</affectedPath><affectedPath>server/api/ffn/shipping-methods/index.get.ts</affectedPath><affectedPath>server/api/ffn/shipping-methods/index.post.ts</affectedPath><affectedPath>server/api/ffn/authorizations/index.get.ts</affectedPath><affectedPath>app/components/NewNavBar.vue</affectedPath><affectedPath>server/api/ffn/test-connection.post.ts</affectedPath><affectedPath>server/api/ffn/warehouses/index.get.ts</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>app/pages/fulfillment/onboarding/index.vue</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><affectedPath>app/components/fulfillment/FulfillmentFulfillerWarehouseFormModal.vue</affectedPath><affectedPath>server/api/ffn/products/index.get.ts</affectedPath><affectedPath>app/components/fulfillment/FulfillmentFulfillerAuthorizeModal.vue</affectedPath><affectedPath>server/api/ffn/stocks.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>.env-prod</affectedPath><commitId>39c33d373a855b855b3775731f40b41256a52339</commitId><timestamp>1782455945000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add jtl onboarding
</comment><date>2026-06-26 08:39:05 +0200</date><id>39c33d373a855b855b3775731f40b41256a52339</id><msg>add jtl onboarding</msg><path><editType>add</editType><file>server/api/ffn/warehouses/index.get.ts</file></path><path><editType>add</editType><file>app/components/fulfillment/FulfillmentFulfillerAuthorizeModal.vue</file></path><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path><path><editType>add</editType><file>server/api/ffn/authorizations/index.get.ts</file></path><path><editType>add</editType><file>app/components/fulfillment/FulfillmentFulfillerShippingMethodFormModal.vue</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/api/ffn/authorizations/index.post.ts</file></path><path><editType>add</editType><file>server/api/ffn/dry-run-orders.post.ts</file></path><path><editType>edit</editType><file>app/components/NewNavBar.vue</file></path><path><editType>add</editType><file>server/api/ffn/shipping-methods/index.get.ts</file></path><path><editType>add</editType><file>server/api/ffn/merchants/index.get.ts</file></path><path><editType>add</editType><file>server/api/ffn/test-connection.post.ts</file></path><path><editType>add</editType><file>app/pages/fulfillment/onboarding/index.vue</file></path><path><editType>add</editType><file>server/api/ffn/dry-run-products.post.ts</file></path><path><editType>add</editType><file>app/components/fulfillment/FulfillmentFulfillerWarehouseFormModal.vue</file></path><path><editType>edit</editType><file>server/api/ffn/products/index.get.ts</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path><path><editType>edit</editType><file>.env-prod</file></path><path><editType>add</editType><file>server/api/ffn/shipping-methods/index.post.ts</file></path><path><editType>edit</editType><file>server/api/ffn/stocks.get.ts</file></path><path><editType>add</editType><file>server/api/ffn/warehouses/index.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/admin/merchant-onboarding/MerchantOnboardingSendCredentialsModal.vue</affectedPath><affectedPath>app/pages/fulfillment/merchant-onboarding/index.vue</affectedPath><affectedPath>server/api/admin/merchant-onboarding/process.post.ts</affectedPath><affectedPath>server/api/admin/merchant-onboarding/send-credentials.post.ts</affectedPath><affectedPath>app/components/admin/merchant-onboarding/MerchantOnboardingReport.vue</affectedPath><affectedPath>app/composables/menu/admin/fulfillment.ts</affectedPath><affectedPath>server/utils/copyRoleHelper.ts</affectedPath><affectedPath>.env-dev</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><affectedPath>app/composables/menu/admin/partners.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>.env-prod</affectedPath><affectedPath>app/app.config.ts</affectedPath><commitId>04217b2a8e49d60bbc9dd491c9e11593bc4fdf90</commitId><timestamp>1782477366000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add Onboarding Fulfillment Page
</comment><date>2026-06-26 14:36:06 +0200</date><id>04217b2a8e49d60bbc9dd491c9e11593bc4fdf90</id><msg>Add Onboarding Fulfillment Page</msg><path><editType>edit</editType><file>app/composables/menu/admin/partners.ts</file></path><path><editType>add</editType><file>server/api/admin/merchant-onboarding/send-credentials.post.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>.env-prod</file></path><path><editType>edit</editType><file>.env-dev</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>app/app.config.ts</file></path><path><editType>add</editType><file>app/pages/fulfillment/merchant-onboarding/index.vue</file></path><path><editType>add</editType><file>server/utils/copyRoleHelper.ts</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path><path><editType>add</editType><file>app/components/admin/merchant-onboarding/MerchantOnboardingReport.vue</file></path><path><editType>edit</editType><file>app/composables/menu/admin/fulfillment.ts</file></path><path><editType>add</editType><file>server/api/admin/merchant-onboarding/process.post.ts</file></path><path><editType>add</editType><file>app/components/admin/merchant-onboarding/MerchantOnboardingSendCredentialsModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/settings/OrderSourceForm.vue</affectedPath><affectedPath>server/api/ffn/dry-run-products-detailed.post.ts</affectedPath><affectedPath>server/api/ffn/dry-run-orders-detailed.post.ts</affectedPath><commitId>8d7278405749af17ef0cc657c93e13b3d1b644cf</commitId><timestamp>1782481109000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add jtl dry tests
</comment><date>2026-06-26 15:38:29 +0200</date><id>8d7278405749af17ef0cc657c93e13b3d1b644cf</id><msg>add jtl dry tests</msg><path><editType>edit</editType><file>app/components/settings/OrderSourceForm.vue</file></path><path><editType>add</editType><file>server/api/ffn/dry-run-products-detailed.post.ts</file></path><path><editType>add</editType><file>server/api/ffn/dry-run-orders-detailed.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/copyRoleHelper.ts</affectedPath><affectedPath>server/api/admin/merchant-onboarding/process.post.ts</affectedPath><commitId>ab16e764295ea7ca0f5f4d5bf8c0f089592dd85d</commitId><timestamp>1782490015000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix wizard ad_user_role deletion and duplicate error
</comment><date>2026-06-26 18:06:55 +0200</date><id>ab16e764295ea7ca0f5f4d5bf8c0f089592dd85d</id><msg>fix wizard ad_user_role deletion and duplicate error</msg><path><editType>edit</editType><file>server/api/admin/merchant-onboarding/process.post.ts</file></path><path><editType>edit</editType><file>server/utils/copyRoleHelper.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/admin/merchant-onboarding/send-credentials.post.ts</affectedPath><affectedPath>app/components/admin/merchant-onboarding/MerchantOnboardingReport.vue</affectedPath><affectedPath>app/pages/fulfillment/merchant-onboarding/index.vue</affectedPath><affectedPath>server/api/admin/merchant-onboarding/process.post.ts</affectedPath><commitId>926af165ff87578c622c4a401ab557176713fecc</commitId><timestamp>1782500578000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix wizard
</comment><date>2026-06-26 21:02:58 +0200</date><id>926af165ff87578c622c4a401ab557176713fecc</id><msg>fix wizard</msg><path><editType>edit</editType><file>app/pages/fulfillment/merchant-onboarding/index.vue</file></path><path><editType>edit</editType><file>server/api/admin/merchant-onboarding/send-credentials.post.ts</file></path><path><editType>edit</editType><file>app/components/admin/merchant-onboarding/MerchantOnboardingReport.vue</file></path><path><editType>edit</editType><file>server/api/admin/merchant-onboarding/process.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/fulfillment/merchant-onboarding/index.vue</affectedPath><affectedPath>app/components/admin/merchant-onboarding/MerchantOnboardingReport.vue</affectedPath><affectedPath>server/api/admin/merchant-onboarding/process.post.ts</affectedPath><commitId>875137bfcf8a8073ea537d9a8e8fc278f1b662ec</commitId><timestamp>1782504806000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix wizard
</comment><date>2026-06-26 22:13:26 +0200</date><id>875137bfcf8a8073ea537d9a8e8fc278f1b662ec</id><msg>fix wizard</msg><path><editType>edit</editType><file>server/api/admin/merchant-onboarding/process.post.ts</file></path><path><editType>edit</editType><file>app/pages/fulfillment/merchant-onboarding/index.vue</file></path><path><editType>edit</editType><file>app/components/admin/merchant-onboarding/MerchantOnboardingReport.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/fulfillment/merchant-onboarding/index.vue</affectedPath><commitId>39b88c8f3f9343b3b75bf492086b2eb5c8b38d88</commitId><timestamp>1782506812000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix wizard
</comment><date>2026-06-26 22:46:52 +0200</date><id>39b88c8f3f9343b3b75bf492086b2eb5c8b38d88</id><msg>fix wizard</msg><path><editType>edit</editType><file>app/pages/fulfillment/merchant-onboarding/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/admin/merchant-onboarding/bpartner-users.get.ts</affectedPath><affectedPath>server/api/search/product-card/[id].get.ts</affectedPath><affectedPath>server/api/admin/merchant-onboarding/send-credentials.post.ts</affectedPath><affectedPath>app/pages/partners/partners/[id]/edit.vue</affectedPath><affectedPath>app/components/SearchModal.vue</affectedPath><affectedPath>app/components/admin/merchant-onboarding/SendMerchantLoginsModal.vue</affectedPath><commitId>89c9b17b5ee4d40de31488d0ca801e768cf3acbb</commitId><timestamp>1782510263000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>enhance search modal
</comment><date>2026-06-26 23:44:23 +0200</date><id>89c9b17b5ee4d40de31488d0ca801e768cf3acbb</id><msg>enhance search modal</msg><path><editType>add</editType><file>server/api/admin/merchant-onboarding/bpartner-users.get.ts</file></path><path><editType>add</editType><file>app/components/admin/merchant-onboarding/SendMerchantLoginsModal.vue</file></path><path><editType>add</editType><file>server/api/search/product-card/[id].get.ts</file></path><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path><path><editType>edit</editType><file>app/pages/partners/partners/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/admin/merchant-onboarding/send-credentials.post.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>656</buildNumber><marked><SHA1>edd8c47a85c7b94d56a0026fb094feae6ef50a68</SHA1><branch><SHA1>edd8c47a85c7b94d56a0026fb094feae6ef50a68</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>edd8c47a85c7b94d56a0026fb094feae6ef50a68</SHA1><branch><SHA1>edd8c47a85c7b94d56a0026fb094feae6ef50a68</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>edd8c47a85c7b94d56a0026fb094feae6ef50a68</SHA1><branch><SHA1>edd8c47a85c7b94d56a0026fb094feae6ef50a68</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#656</displayName><duration>59127</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #656</fullDisplayName><id>656</id><inProgress>false</inProgress><keepLog>false</keepLog><number>656</number><queueId>5309</queueId><result>SUCCESS</result><timestamp>1782432000971</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/656/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/procurements/OrderDetailRecordLine.vue</affectedPath><commitId>3a8785f43ed655090132162d4502715a47900b38</commitId><timestamp>1782371163000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix qty field on warenanmeldung
</comment><date>2026-06-25 09:06:03 +0200</date><id>3a8785f43ed655090132162d4502715a47900b38</id><msg>fix qty field on warenanmeldung</msg><path><editType>edit</editType><file>app/components/procurements/OrderDetailRecordLine.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/plugins/00.capacitor-api.client.ts</affectedPath><affectedPath>app/composables/useAuthSession.ts</affectedPath><commitId>28ab53ac1b4888d0566ca7a5c048059b80230adb</commitId><timestamp>1782389958000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix android native logged in state
</comment><date>2026-06-25 14:19:18 +0200</date><id>28ab53ac1b4888d0566ca7a5c048059b80230adb</id><msg>fix android native logged in state</msg><path><editType>edit</editType><file>app/composables/useAuthSession.ts</file></path><path><editType>edit</editType><file>app/plugins/00.capacitor-api.client.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>app/components/procurements/ReceiptDetailRecordLine.vue</affectedPath><affectedPath>server/api/materials/storages/higher-on-hand.get.ts</affectedPath><commitId>edd8c47a85c7b94d56a0026fb094feae6ef50a68</commitId><timestamp>1782404753000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>exclude locators not for shipping on new material receipts recommondation
</comment><date>2026-06-25 18:25:53 +0200</date><id>edd8c47a85c7b94d56a0026fb094feae6ef50a68</id><msg>exclude locators not for shipping on new material receipts recommondation</msg><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>server/api/materials/storages/higher-on-hand.get.ts</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>app/components/procurements/ReceiptDetailRecordLine.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>655</buildNumber><marked><SHA1>6df6dc025f7d7f78a1252fd632ab2ee002743897</SHA1><branch><SHA1>6df6dc025f7d7f78a1252fd632ab2ee002743897</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>6df6dc025f7d7f78a1252fd632ab2ee002743897</SHA1><branch><SHA1>6df6dc025f7d7f78a1252fd632ab2ee002743897</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>6df6dc025f7d7f78a1252fd632ab2ee002743897</SHA1><branch><SHA1>6df6dc025f7d7f78a1252fd632ab2ee002743897</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#655</displayName><duration>57128</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #655</fullDisplayName><id>655</id><inProgress>false</inProgress><keepLog>false</keepLog><number>655</number><queueId>5305</queueId><result>SUCCESS</result><timestamp>1782345600970</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/655/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/materials/products/quantities.post.ts</affectedPath><affectedPath>app/components/SearchModal.vue</affectedPath><affectedPath>server/api/search/related/[entity]/[id].get.ts</affectedPath><affectedPath>server/api/materials/products/filter-elastic.get.ts</affectedPath><affectedPath>server/api/search/[query]/index.get.ts</affectedPath><commitId>561096353130db41c02e1b0eedc551d74997dfa5</commitId><timestamp>1782301977000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Rebuild global search for the new idempiere-elastic backend

- search/[query]: parallel multi-index (9 entities), no fragile agg, tenant/org scoping
- search/related/[entity]/[id]: new related-documents fan-out (both directions)
- materials/products/quantities: new live stock-qty endpoint (async enrichment)
- materials/products/filter-elastic: new one-doc-per-product index (nested price filter, batched live qty); keeps {records:[...]} so the 19 line pickers are unchanged
- SearchModal: 9 grouped result types, lazy related-docs, partner kind / shipment type tags, async product qty

Deploy only with/after the new ES is live (queries the new index shape).

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</comment><date>2026-06-24 13:52:57 +0200</date><id>561096353130db41c02e1b0eedc551d74997dfa5</id><msg>Rebuild global search for the new idempiere-elastic backend</msg><path><editType>add</editType><file>server/api/search/related/[entity]/[id].get.ts</file></path><path><editType>edit</editType><file>server/api/materials/products/filter-elastic.get.ts</file></path><path><editType>edit</editType><file>server/api/search/[query]/index.get.ts</file></path><path><editType>add</editType><file>server/api/materials/products/quantities.post.ts</file></path><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/SearchModal.vue</affectedPath><commitId>126feaf1bb5d5fc4ef9064d46e8db1c95d524259</commitId><timestamp>1782303491000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>SearchModal: invoice search link -&gt; /sales|procurements/invoices/{id}/edit

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</comment><date>2026-06-24 14:18:11 +0200</date><id>126feaf1bb5d5fc4ef9064d46e8db1c95d524259</id><msg>SearchModal: invoice search link -&gt; /sales|procurements/invoices/{id}/edit</msg><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/SearchModal.vue</affectedPath><affectedPath>server/api/search/related/[entity]/[id].get.ts</affectedPath><commitId>b25d972c58e9ed83dd4821e07b202b415bf68f55</commitId><timestamp>1782309576000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>SearchModal: tiled grid + master-detail related panel; modern restyle

- one tile per document type (responsive grid), modern styling (glass header, color-mixed accents, hover lift)
- click a result -&gt; right column shows its related docs grouped (max 10 each, newest first)
- per-result ↗ Open button opens the record in a new window (modal stays open)
- related API capped to 10 per group

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</comment><date>2026-06-24 15:59:36 +0200</date><id>b25d972c58e9ed83dd4821e07b202b415bf68f55</id><msg>SearchModal: tiled grid + master-detail related panel; modern restyle</msg><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path><path><editType>edit</editType><file>server/api/search/related/[entity]/[id].get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/SearchModal.vue</affectedPath><commitId>4a2e34a73d4d39348cb1aa1c342ab2579ffc1e1f</commitId><timestamp>1782309745000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>SearchModal: color qty tags only when &gt;0, grey 0

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</comment><date>2026-06-24 16:02:25 +0200</date><id>4a2e34a73d4d39348cb1aa1c342ab2579ffc1e1f</id><msg>SearchModal: color qty tags only when &gt;0, grey 0</msg><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/partners/PartnerForm.vue</affectedPath><affectedPath>app/components/SearchModal.vue</affectedPath><commitId>5078356e72f496766c448c950e0002e7c1904819</commitId><timestamp>1782312999000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>change search modal
</comment><date>2026-06-24 16:56:39 +0200</date><id>5078356e72f496766c448c950e0002e7c1904819</id><msg>change search modal</msg><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path><path><editType>edit</editType><file>app/components/partners/PartnerForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/fulfillment/generate-orders.post.ts</affectedPath><affectedPath>app/components/fulfillment/FulfillmentGenerateOrdersModal.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>b333d78edba14982b5ee760372feab3824e8a805</commitId><timestamp>1782314205000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add date range for fulfilmment customer generation
</comment><date>2026-06-24 17:16:45 +0200</date><id>b333d78edba14982b5ee760372feab3824e8a805</id><msg>add date range for fulfilmment customer generation</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/fulfillment/FulfillmentGenerateOrdersModal.vue</file></path><path><editType>edit</editType><file>server/api/fulfillment/generate-orders.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/SearchModal.vue</affectedPath><commitId>6df6dc025f7d7f78a1252fd632ab2ee002743897</commitId><timestamp>1782315154000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add modal filtering on persmissions for roles
</comment><date>2026-06-24 17:32:34 +0200</date><id>6df6dc025f7d7f78a1252fd632ab2ee002743897</id><msg>add modal filtering on persmissions for roles</msg><path><editType>edit</editType><file>app/components/SearchModal.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>654</buildNumber><marked><SHA1>d71f809daedbcf53b5c7c78fa5b5cc1ad95b4e49</SHA1><branch><SHA1>d71f809daedbcf53b5c7c78fa5b5cc1ad95b4e49</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>d71f809daedbcf53b5c7c78fa5b5cc1ad95b4e49</SHA1><branch><SHA1>d71f809daedbcf53b5c7c78fa5b5cc1ad95b4e49</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>d71f809daedbcf53b5c7c78fa5b5cc1ad95b4e49</SHA1><branch><SHA1>d71f809daedbcf53b5c7c78fa5b5cc1ad95b4e49</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#654</displayName><duration>57593</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #654</fullDisplayName><id>654</id><inProgress>false</inProgress><keepLog>false</keepLog><number>654</number><queueId>5299</queueId><result>SUCCESS</result><timestamp>1782259200971</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/654/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/index.vue</affectedPath><commitId>61470e8b510a1793a2990b63e89a86aef8be9290</commitId><timestamp>1782209060000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix dashboard next wareneingang card
</comment><date>2026-06-23 12:04:20 +0200</date><id>61470e8b510a1793a2990b63e89a86aef8be9290</id><msg>fix dashboard next wareneingang card</msg><path><editType>edit</editType><file>app/pages/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/OrderForm.vue</affectedPath><commitId>2dcfdb7f1db2ddcf8aed79300728f67aafd3baf5</commitId><timestamp>1782209539000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show status indicator on order detail
</comment><date>2026-06-23 12:12:19 +0200</date><id>2dcfdb7f1db2ddcf8aed79300728f67aafd3baf5</id><msg>show status indicator on order detail</msg><path><editType>edit</editType><file>app/components/sales/OrderForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/index.vue</affectedPath><commitId>87e7fa1d0a116e100bc93171e3d59a9737fbf754</commitId><timestamp>1782217217000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix card on dashboard
</comment><date>2026-06-23 14:20:17 +0200</date><id>87e7fa1d0a116e100bc93171e3d59a9737fbf754</id><msg>fix card on dashboard</msg><path><editType>edit</editType><file>app/pages/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/OrderForm.vue</affectedPath><affectedPath>server/api/orders/[id]/index.get.ts</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><commitId>ca8a902353473c23a954a44d859da72491a33025</commitId><timestamp>1782218144000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix order detail page visiblity of marketplace
</comment><date>2026-06-23 14:35:44 +0200</date><id>ca8a902353473c23a954a44d859da72491a33025</id><msg>fix order detail page visiblity of marketplace</msg><path><editType>edit</editType><file>app/components/sales/OrderForm.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/orders/[id]/index.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/OrderForm.vue</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><commitId>97434964ac664ace739259528d6dfd1ce44e6566</commitId><timestamp>1782220536000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix order detail view
</comment><date>2026-06-23 15:15:36 +0200</date><id>97434964ac664ace739259528d6dfd1ce44e6566</id><msg>fix order detail view</msg><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/components/sales/OrderForm.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><commitId>d71f809daedbcf53b5c7c78fa5b5cc1ad95b4e49</commitId><timestamp>1782222346000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix order icon
</comment><date>2026-06-23 15:45:46 +0200</date><id>d71f809daedbcf53b5c7c78fa5b5cc1ad95b4e49</id><msg>fix order icon</msg><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>653</buildNumber><marked><SHA1>18e1c39b6484f907a0ac5c25d87e98a3c2937fb0</SHA1><branch><SHA1>18e1c39b6484f907a0ac5c25d87e98a3c2937fb0</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>18e1c39b6484f907a0ac5c25d87e98a3c2937fb0</SHA1><branch><SHA1>18e1c39b6484f907a0ac5c25d87e98a3c2937fb0</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>18e1c39b6484f907a0ac5c25d87e98a3c2937fb0</SHA1><branch><SHA1>18e1c39b6484f907a0ac5c25d87e98a3c2937fb0</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#653</displayName><duration>65249</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #653</fullDisplayName><id>653</id><inProgress>false</inProgress><keepLog>false</keepLog><number>653</number><queueId>5292</queueId><result>SUCCESS</result><timestamp>1782172800980</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/653/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>AGENTS.md</affectedPath><commitId>ed55c82297da2482752466fee643a317c037d0ea</commitId><timestamp>1782127701000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Fix Page Reload on Order Detail Page
</comment><date>2026-06-22 13:28:21 +0200</date><id>ed55c82297da2482752466fee643a317c037d0ea</id><msg>Fix Page Reload on Order Detail Page</msg><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>add</editType><file>AGENTS.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/integrations/commission.vue</affectedPath><commitId>b274d004a054d4a87eaf2fa79db4dd8baaf7cbc6</commitId><timestamp>1782131060000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>show modal when shipment is canceled or shipped already
</comment><date>2026-06-22 14:24:20 +0200</date><id>b274d004a054d4a87eaf2fa79db4dd8baaf7cbc6</id><msg>show modal when shipment is canceled or shipped already</msg><path><editType>edit</editType><file>app/pages/integrations/commission.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><commitId>74257781e64ca367d00cabaf79353f2ac66a1592</commitId><timestamp>1782131386000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>do not show save when open canceled orders
</comment><date>2026-06-22 14:29:46 +0200</date><id>74257781e64ca367d00cabaf79353f2ac66a1592</id><msg>do not show save when open canceled orders</msg><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/procurements/orders/[id]/edit.vue</affectedPath><commitId>29574326d0ccf11446481ab43b851d4c84764547</commitId><timestamp>1782132107000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix reactivation on purchase order
</comment><date>2026-06-22 14:41:47 +0200</date><id>29574326d0ccf11446481ab43b851d4c84764547</id><msg>fix reactivation on purchase order</msg><path><editType>edit</editType><file>app/pages/procurements/orders/[id]/edit.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-orders-check.vue</affectedPath><affectedPath>app/pages/accounting/ebay-settlements.vue</affectedPath><affectedPath>app/pages/accounting/amazon-settlements.vue</affectedPath><affectedPath>app/components/AgGrid/Accounting/AgMarketplaceOrderLink.vue</affectedPath><affectedPath>server/api/accounting/ebay/settlement.get.ts</affectedPath><affectedPath>app/pages/accounting/ebay-orders-check.vue</affectedPath><affectedPath>server/api/invoices/[id]/preview.get.ts</affectedPath><affectedPath>app/components/AgGrid/Accounting/AgDocPreviewLink.vue</affectedPath><affectedPath>server/api/orders/[id]/preview.get.ts</affectedPath><affectedPath>server/api/accounting/amazon/settlement.get.ts</affectedPath><commitId>7a1e98a378f7993826bbdabfa06a0c45db364fd6</commitId><timestamp>1782137484000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add order link to the amazon and ebay payment invoice pages
</comment><date>2026-06-22 16:11:24 +0200</date><id>7a1e98a378f7993826bbdabfa06a0c45db364fd6</id><msg>add order link to the amazon and ebay payment invoice pages</msg><path><editType>add</editType><file>server/api/invoices/[id]/preview.get.ts</file></path><path><editType>add</editType><file>server/api/orders/[id]/preview.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/ebay/settlement.get.ts</file></path><path><editType>add</editType><file>app/components/AgGrid/Accounting/AgMarketplaceOrderLink.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon/settlement.get.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-orders-check.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/ebay-settlements.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-settlements.vue</file></path><path><editType>add</editType><file>app/components/AgGrid/Accounting/AgDocPreviewLink.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/ebay-orders-check.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/sales/OrderForm.vue</affectedPath><affectedPath>app/pages/partners/partners/[id]/edit.vue</affectedPath><affectedPath>app/components/procurements/InvoiceForm.vue</affectedPath><affectedPath>app/pages/sales/orders/[id]/view.vue</affectedPath><affectedPath>server/api/orders/store.post.ts</affectedPath><affectedPath>app/components/AgGrid/SalesOrder/AgCustomFeeLineButton.vue</affectedPath><affectedPath>app/pages/sales/shipments/[id]/view.vue</affectedPath><affectedPath>app/pages/sales/orders/create.vue</affectedPath><affectedPath>app/components/materials/ProductForm.vue</affectedPath><affectedPath>app/components/sales/InvoiceForm.vue</affectedPath><affectedPath>server/api/shipments/[id]/shipping-fees.get.ts</affectedPath><affectedPath>server/api/materials/products/store.post.ts</affectedPath><affectedPath>app/pages/materials/products/[id]/edit.vue</affectedPath><affectedPath>server/api/materials/products/update.put.ts</affectedPath><affectedPath>app/components/partners/PartnerForm.vue</affectedPath><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><affectedPath>server/api/orders/update.put.ts</affectedPath><affectedPath>server/api/partners/partners/update.put.ts</affectedPath><affectedPath>app/components/sales/OrderDetailRecordLine.vue</affectedPath><affectedPath>reference/recipes.md</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>c987222ea13857964bd4347ac59b0af10762afbe</commitId><timestamp>1782141640000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add new fields
</comment><date>2026-06-22 17:20:40 +0200</date><id>c987222ea13857964bd4347ac59b0af10762afbe</id><msg>Add new fields</msg><path><editType>edit</editType><file>app/components/sales/OrderDetailRecordLine.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/sales/OrderForm.vue</file></path><path><editType>edit</editType><file>app/pages/materials/products/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/orders/update.put.ts</file></path><path><editType>edit</editType><file>app/components/partners/PartnerForm.vue</file></path><path><editType>edit</editType><file>server/api/materials/products/update.put.ts</file></path><path><editType>edit</editType><file>app/pages/sales/shipments/[id]/view.vue</file></path><path><editType>edit</editType><file>app/pages/sales/orders/create.vue</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path><path><editType>edit</editType><file>server/api/orders/store.post.ts</file></path><path><editType>edit</editType><file>app/components/AgGrid/SalesOrder/AgCustomFeeLineButton.vue</file></path><path><editType>edit</editType><file>app/components/materials/ProductForm.vue</file></path><path><editType>edit</editType><file>app/components/sales/InvoiceForm.vue</file></path><path><editType>edit</editType><file>app/pages/partners/partners/[id]/edit.vue</file></path><path><editType>edit</editType><file>app/components/procurements/InvoiceForm.vue</file></path><path><editType>edit</editType><file>server/api/partners/partners/update.put.ts</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/materials/products/store.post.ts</file></path><path><editType>edit</editType><file>server/api/shipments/[id]/shipping-fees.get.ts</file></path><path><editType>edit</editType><file>app/pages/sales/orders/[id]/view.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/index.vue</affectedPath><affectedPath>server/api/orders/po-upcoming.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>c5ccfa3ec3a5c0a50c6771e177734005cb2d71eb</commitId><timestamp>1782141845000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>format next we on dashboard
</comment><date>2026-06-22 17:24:05 +0200</date><id>c5ccfa3ec3a5c0a50c6771e177734005cb2d71eb</id><msg>format next we on dashboard</msg><path><editType>edit</editType><file>server/api/orders/po-upcoming.get.ts</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>app/pages/mobile/inventory.vue</affectedPath><affectedPath>app/pages/mobile/receive.vue</affectedPath><commitId>18e1c39b6484f907a0ac5c25d87e98a3c2937fb0</commitId><timestamp>1782142383000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix native mobile manual product enter
</comment><date>2026-06-22 17:33:03 +0200</date><id>18e1c39b6484f907a0ac5c25d87e98a3c2937fb0</id><msg>fix native mobile manual product enter</msg><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>app/pages/mobile/inventory.vue</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>app/pages/mobile/receive.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>652</buildNumber><marked><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><branch><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><branch><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><branch><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#652</displayName><duration>65171</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #652</fullDisplayName><id>652</id><inProgress>false</inProgress><keepLog>false</keepLog><number>652</number><queueId>5289</queueId><result>SUCCESS</result><timestamp>1782086400943</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/652/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>651</buildNumber><marked><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><branch><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><branch><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><branch><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#651</displayName><duration>56670</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #651</fullDisplayName><id>651</id><inProgress>false</inProgress><keepLog>false</keepLog><number>651</number><queueId>5288</queueId><result>SUCCESS</result><timestamp>1782000000934</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/651/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>650</buildNumber><marked><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><branch><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><branch><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><branch><SHA1>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#650</displayName><duration>57860</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #650</fullDisplayName><id>650</id><inProgress>false</inProgress><keepLog>false</keepLog><number>650</number><queueId>5287</queueId><result>SUCCESS</result><timestamp>1781913600932</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/650/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/bi/shipments-by-country.get.ts</affectedPath><affectedPath>app/composables/menu/admin/bi.ts</affectedPath><affectedPath>app/components/BI/ShipmentCountryLineChart.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>app/pages/bi/shipments-by-country.vue</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><commitId>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</commitId><timestamp>1781861522000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add Analytic of shipments by country
</comment><date>2026-06-19 11:32:02 +0200</date><id>97bdcc5da5c9c50e59f46da27f4f1d04582f5fbd</id><msg>Add Analytic of shipments by country</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>app/pages/bi/shipments-by-country.vue</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path><path><editType>edit</editType><file>app/composables/menu/admin/bi.ts</file></path><path><editType>add</editType><file>app/components/BI/ShipmentCountryLineChart.vue</file></path><path><editType>add</editType><file>server/api/bi/shipments-by-country.get.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>649</buildNumber><marked><SHA1>8be5a53ebcae77eca311b0045c6dcb8995921ba6</SHA1><branch><SHA1>8be5a53ebcae77eca311b0045c6dcb8995921ba6</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>8be5a53ebcae77eca311b0045c6dcb8995921ba6</SHA1><branch><SHA1>8be5a53ebcae77eca311b0045c6dcb8995921ba6</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>8be5a53ebcae77eca311b0045c6dcb8995921ba6</SHA1><branch><SHA1>8be5a53ebcae77eca311b0045c6dcb8995921ba6</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#649</displayName><duration>57650</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #649</fullDisplayName><id>649</id><inProgress>false</inProgress><keepLog>false</keepLog><number>649</number><queueId>5283</queueId><result>SUCCESS</result><timestamp>1781827200932</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/649/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/accounting/inbox/InboxPdfPreview.vue</affectedPath><affectedPath>app/pages/accounting/incoming-invoices/index.vue</affectedPath><affectedPath>app/components/accounting/inbox/InboxList.vue</affectedPath><affectedPath>app/components/accounting/inbox/InvoiceReview.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>3b0d8cdb7da4b7f4e17d6e4105ba9ff666de7412</commitId><timestamp>1781764977000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>enhance pdf quality and manual edit for learning
</comment><date>2026-06-18 08:42:57 +0200</date><id>3b0d8cdb7da4b7f4e17d6e4105ba9ff666de7412</id><msg>enhance pdf quality and manual edit for learning</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InboxPdfPreview.vue</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InboxList.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/incoming-invoices/index.vue</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InvoiceReview.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/sales/orders/[id]/edit.vue</affectedPath><commitId>36ce6d145bd4d78fd5bc99505dbd124cc456627a</commitId><timestamp>1781770064000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix print preview for limited roles
</comment><date>2026-06-18 10:07:44 +0200</date><id>36ce6d145bd4d78fd5bc99505dbd124cc456627a</id><msg>fix print preview for limited roles</msg><path><editType>edit</editType><file>app/pages/sales/orders/[id]/edit.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/chat/Drawer.vue</affectedPath><affectedPath>server/utils/pushNotifier.ts</affectedPath><affectedPath>app/components/accounting/inbox/InboxPdfPreview.vue</affectedPath><affectedPath>app/pages/accounting/incoming-invoices/index.vue</affectedPath><affectedPath>app/pages/chat.vue</affectedPath><affectedPath>app/pages/requests/my-tickets/[id].vue</affectedPath><affectedPath>app/components/requests/RequestForm.vue</affectedPath><affectedPath>app/utils/linkify.ts</affectedPath><affectedPath>app/components/accounting/inbox/InvoiceReview.vue</affectedPath><affectedPath>server/api/requests/requests/[id]/action-notification.post.ts</affectedPath><commitId>031203c7de555efe5ecda12b74315c4a9fb4e9f7</commitId><timestamp>1781772206000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>various fixes
</comment><date>2026-06-18 10:43:26 +0200</date><id>031203c7de555efe5ecda12b74315c4a9fb4e9f7</id><msg>various fixes</msg><path><editType>edit</editType><file>app/components/chat/Drawer.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/incoming-invoices/index.vue</file></path><path><editType>add</editType><file>app/utils/linkify.ts</file></path><path><editType>edit</editType><file>app/components/requests/RequestForm.vue</file></path><path><editType>edit</editType><file>app/pages/requests/my-tickets/[id].vue</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InboxPdfPreview.vue</file></path><path><editType>edit</editType><file>app/pages/chat.vue</file></path><path><editType>edit</editType><file>server/api/requests/requests/[id]/action-notification.post.ts</file></path><path><editType>edit</editType><file>server/utils/pushNotifier.ts</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InvoiceReview.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/accounting/inbox/InvoiceReview.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>8be5a53ebcae77eca311b0045c6dcb8995921ba6</commitId><timestamp>1781773512000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix invoice parsing
</comment><date>2026-06-18 11:05:12 +0200</date><id>8be5a53ebcae77eca311b0045c6dcb8995921ba6</id><msg>fix invoice parsing</msg><path><editType>edit</editType><file>app/components/accounting/inbox/InvoiceReview.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>648</buildNumber><marked><SHA1>103154a28cdecc2f2f6efb039c45e2220388f0ce</SHA1><branch><SHA1>103154a28cdecc2f2f6efb039c45e2220388f0ce</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>103154a28cdecc2f2f6efb039c45e2220388f0ce</SHA1><branch><SHA1>103154a28cdecc2f2f6efb039c45e2220388f0ce</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>103154a28cdecc2f2f6efb039c45e2220388f0ce</SHA1><branch><SHA1>103154a28cdecc2f2f6efb039c45e2220388f0ce</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#648</displayName><duration>56368</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #648</fullDisplayName><id>648</id><inProgress>false</inProgress><keepLog>false</keepLog><number>648</number><queueId>5278</queueId><result>SUCCESS</result><timestamp>1781740800932</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/648/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/architecture-pods.png</affectedPath><affectedPath>server/api/accounting/incoming-invoices/config.put.ts</affectedPath><affectedPath>server/utils/inbox/parseEinvoiceXml.ts</affectedPath><affectedPath>server/api/accounting/incoming-invoices/[id]/index.get.ts</affectedPath><affectedPath>server/utils/inbox/providers/types.ts</affectedPath><affectedPath>server/utils/inbox/scope.ts</affectedPath><affectedPath>.gitignore</affectedPath><affectedPath>app/composables/menu/admin/settings.ts</affectedPath><affectedPath>app/pages/accounting/incoming-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</affectedPath><affectedPath>app/pages/settings/incoming-invoices/index.vue</affectedPath><affectedPath>server/utils/inbox/processDocument.ts</affectedPath><affectedPath>reference/architecture-pods.svg</affectedPath><affectedPath>server/utils/inbox/extractPipeline.ts</affectedPath><affectedPath>server/utils/inbox/strapiAttach.ts</affectedPath><affectedPath>server/utils/inbox/providers/selfHostedProvider.ts</affectedPath><affectedPath>app/components/accounting/inbox/InvoiceReview.vue</affectedPath><affectedPath>server/api/accounting/incoming-invoices/[id]/pdf.get.ts</affectedPath><affectedPath>app/pages/accounting/incoming-invoices/[id]/review.vue</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>server/api/accounting/incoming-invoices/match-vendor.get.ts</affectedPath><affectedPath>server/utils/inbox/providers/index.ts</affectedPath><affectedPath>server/utils/inbox/fieldExtractors.ts</affectedPath><affectedPath>server/api/accounting/incoming-invoices/upload.post.ts</affectedPath><affectedPath>server/utils/ocr/tesseractOcr.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>server/utils/inbox/inboxDb.ts</affectedPath><affectedPath>app/components/accounting/inbox/InboxList.vue</affectedPath><affectedPath>server/api/accounting/incoming-invoices/index.get.ts</affectedPath><affectedPath>app/components/accounting/inbox/InboxUpload.vue</affectedPath><affectedPath>server/utils/inbox/pdfTextLayer.ts</affectedPath><affectedPath>server/utils/inbox/rasterizePdf.ts</affectedPath><affectedPath>server/api/accounting/incoming-invoices/[id]/reject.delete.ts</affectedPath><affectedPath>server/utils/inbox/vendorProfile.ts</affectedPath><affectedPath>server/api/accounting/incoming-invoices/[id]/reparse.post.ts</affectedPath><affectedPath>reference/architecture-pods.pdf</affectedPath><affectedPath>app/components/MainNavigationMenu.vue</affectedPath><affectedPath>server/api/mobile/ocr-scan.post.ts</affectedPath><affectedPath>server/api/accounting/incoming-invoices/config.get.ts</affectedPath><affectedPath>server/utils/inbox/providers/llmProvider.ts</affectedPath><affectedPath>app/composables/menu/admin/accounting.ts</affectedPath><commitId>499e9e1a087974c7def9d760ac7fbcad5f28e09f</commitId><timestamp>1781703167000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add initial Inbound Invoice Parsing
</comment><date>2026-06-17 15:32:47 +0200</date><id>499e9e1a087974c7def9d760ac7fbcad5f28e09f</id><msg>Add initial Inbound Invoice Parsing</msg><path><editType>add</editType><file>server/utils/inbox/inboxDb.ts</file></path><path><editType>add</editType><file>reference/architecture-pods.png</file></path><path><editType>add</editType><file>server/utils/inbox/scope.ts</file></path><path><editType>add</editType><file>server/utils/inbox/vendorProfile.ts</file></path><path><editType>add</editType><file>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</file></path><path><editType>add</editType><file>app/pages/settings/incoming-invoices/index.vue</file></path><path><editType>add</editType><file>server/utils/inbox/strapiAttach.ts</file></path><path><editType>add</editType><file>server/utils/inbox/processDocument.ts</file></path><path><editType>add</editType><file>server/utils/inbox/providers/selfHostedProvider.ts</file></path><path><editType>add</editType><file>server/api/accounting/incoming-invoices/index.get.ts</file></path><path><editType>edit</editType><file>.gitignore</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>server/api/mobile/ocr-scan.post.ts</file></path><path><editType>add</editType><file>reference/architecture-pods.pdf</file></path><path><editType>add</editType><file>app/components/accounting/inbox/InvoiceReview.vue</file></path><path><editType>add</editType><file>server/api/accounting/incoming-invoices/match-vendor.get.ts</file></path><path><editType>add</editType><file>server/api/accounting/incoming-invoices/[id]/reject.delete.ts</file></path><path><editType>add</editType><file>server/utils/inbox/parseEinvoiceXml.ts</file></path><path><editType>edit</editType><file>app/composables/menu/admin/settings.ts</file></path><path><editType>add</editType><file>server/api/accounting/incoming-invoices/[id]/index.get.ts</file></path><path><editType>add</editType><file>app/components/accounting/inbox/InboxList.vue</file></path><path><editType>add</editType><file>app/pages/accounting/incoming-invoices/[id]/review.vue</file></path><path><editType>add</editType><file>server/utils/ocr/tesseractOcr.ts</file></path><path><editType>add</editType><file>app/pages/accounting/incoming-invoices/index.vue</file></path><path><editType>add</editType><file>reference/architecture-pods.svg</file></path><path><editType>add</editType><file>server/utils/inbox/providers/index.ts</file></path><path><editType>add</editType><file>server/utils/inbox/fieldExtractors.ts</file></path><path><editType>add</editType><file>server/api/accounting/incoming-invoices/config.put.ts</file></path><path><editType>add</editType><file>server/api/accounting/incoming-invoices/[id]/pdf.get.ts</file></path><path><editType>edit</editType><file>app/components/MainNavigationMenu.vue</file></path><path><editType>add</editType><file>server/api/accounting/incoming-invoices/[id]/reparse.post.ts</file></path><path><editType>add</editType><file>app/components/accounting/inbox/InboxUpload.vue</file></path><path><editType>add</editType><file>server/utils/inbox/extractPipeline.ts</file></path><path><editType>edit</editType><file>app/composables/menu/admin/accounting.ts</file></path><path><editType>add</editType><file>server/api/accounting/incoming-invoices/upload.post.ts</file></path><path><editType>add</editType><file>server/api/accounting/incoming-invoices/config.get.ts</file></path><path><editType>add</editType><file>server/utils/inbox/providers/types.ts</file></path><path><editType>add</editType><file>server/utils/inbox/rasterizePdf.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/utils/inbox/pdfTextLayer.ts</file></path><path><editType>add</editType><file>server/utils/inbox/providers/llmProvider.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/inbox/pdfTextLayer.ts</affectedPath><affectedPath>server/utils/inbox/strapiAttach.ts</affectedPath><affectedPath>server/utils/ocr/tesseractOcr.ts</affectedPath><affectedPath>server/utils/inbox/inboxDb.ts</affectedPath><commitId>f195232ec0f727593494ebb2603be35e0b05e1d4</commitId><timestamp>1781706207000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix invoice processing
</comment><date>2026-06-17 16:23:27 +0200</date><id>f195232ec0f727593494ebb2603be35e0b05e1d4</id><msg>fix invoice processing</msg><path><editType>edit</editType><file>server/utils/inbox/pdfTextLayer.ts</file></path><path><editType>edit</editType><file>server/utils/inbox/inboxDb.ts</file></path><path><editType>edit</editType><file>server/utils/ocr/tesseractOcr.ts</file></path><path><editType>edit</editType><file>server/utils/inbox/strapiAttach.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>reference/ci/latest-working-jenkins-production.sh</affectedPath><affectedPath>server/utils/inbox/strapiAttach.ts</affectedPath><affectedPath>nuxt.config.ts</affectedPath><commitId>940304ed4e48d12c70f32578c5df30882923a2ea</commitId><timestamp>1781708961000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix
</comment><date>2026-06-17 17:09:21 +0200</date><id>940304ed4e48d12c70f32578c5df30882923a2ea</id><msg>fix</msg><path><editType>edit</editType><file>reference/ci/latest-working-jenkins-production.sh</file></path><path><editType>edit</editType><file>server/utils/inbox/strapiAttach.ts</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/inbox/strapiAttach.ts</affectedPath><commitId>9aeeb0d83210915c4e9da04c1036e4317b4ca779</commitId><timestamp>1781712259000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix
</comment><date>2026-06-17 18:04:19 +0200</date><id>9aeeb0d83210915c4e9da04c1036e4317b4ca779</id><msg>fix</msg><path><editType>edit</editType><file>server/utils/inbox/strapiAttach.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/inbox/strapiAttach.ts</affectedPath><affectedPath>app/components/accounting/inbox/EngineSettingsModal.vue</affectedPath><affectedPath>reference/test-scripts/test-strapi-upload.sh</affectedPath><affectedPath>app/pages/accounting/incoming-invoices/index.vue</affectedPath><affectedPath>app/components/accounting/inbox/InboxList.vue</affectedPath><commitId>500b171175549bbeff8ff95e3a6b548d939feed8</commitId><timestamp>1781714494000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Fixes Invoice Parsing
</comment><date>2026-06-17 18:41:34 +0200</date><id>500b171175549bbeff8ff95e3a6b548d939feed8</id><msg>Fixes Invoice Parsing</msg><path><editType>add</editType><file>app/components/accounting/inbox/EngineSettingsModal.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/incoming-invoices/index.vue</file></path><path><editType>add</editType><file>reference/test-scripts/test-strapi-upload.sh</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InboxList.vue</file></path><path><editType>edit</editType><file>server/utils/inbox/strapiAttach.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/inbox/strapiAttach.ts</affectedPath><commitId>af17c35bcd7b27ef6f52bb31fbf5b8feae2ef34a</commitId><timestamp>1781716223000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix invoices
</comment><date>2026-06-17 19:10:23 +0200</date><id>af17c35bcd7b27ef6f52bb31fbf5b8feae2ef34a</id><msg>fix invoices</msg><path><editType>edit</editType><file>server/utils/inbox/strapiAttach.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</affectedPath><commitId>53a2fbb1563d9f94748e0d991dca6ab59b12b255</commitId><timestamp>1781717446000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix invoice
</comment><date>2026-06-17 19:30:46 +0200</date><id>53a2fbb1563d9f94748e0d991dca6ab59b12b255</id><msg>fix invoice</msg><path><editType>edit</editType><file>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/inbox/fieldExtractors.ts</affectedPath><affectedPath>server/utils/inbox/pdfTextLayer.ts</affectedPath><affectedPath>app/pages/accounting/incoming-invoices/[id]/review.vue</affectedPath><affectedPath>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</affectedPath><affectedPath>server/utils/inbox/vendorProfile.ts</affectedPath><affectedPath>app/components/accounting/inbox/InvoiceReview.vue</affectedPath><commitId>a319f484b8054e1c114bf650c0f819f02a565391</commitId><timestamp>1781721710000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>enhance pdf quality and manual edit for learning
</comment><date>2026-06-17 20:41:50 +0200</date><id>a319f484b8054e1c114bf650c0f819f02a565391</id><msg>enhance pdf quality and manual edit for learning</msg><path><editType>edit</editType><file>server/utils/inbox/fieldExtractors.ts</file></path><path><editType>edit</editType><file>server/utils/inbox/pdfTextLayer.ts</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InvoiceReview.vue</file></path><path><editType>edit</editType><file>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</file></path><path><editType>edit</editType><file>server/utils/inbox/vendorProfile.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/incoming-invoices/[id]/review.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/inbox/rasterizePdf.ts</affectedPath><affectedPath>app/components/accounting/inbox/InboxPdfPreview.vue</affectedPath><affectedPath>server/utils/inbox/layoutFingerprint.ts</affectedPath><affectedPath>app/pages/accounting/incoming-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</affectedPath><affectedPath>server/utils/inbox/vendorProfile.ts</affectedPath><affectedPath>server/utils/inbox/processDocument.ts</affectedPath><affectedPath>app/components/accounting/inbox/InboxList.vue</affectedPath><affectedPath>server/utils/inbox/extractPipeline.ts</affectedPath><affectedPath>server/utils/inbox/strapiAttach.ts</affectedPath><affectedPath>app/components/accounting/inbox/InvoiceReview.vue</affectedPath><commitId>92b612a200427b5d65a331d003c2e6b0358b3f30</commitId><timestamp>1781724317000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>enhance pdf quality and manual edit for learning
</comment><date>2026-06-17 21:25:17 +0200</date><id>92b612a200427b5d65a331d003c2e6b0358b3f30</id><msg>enhance pdf quality and manual edit for learning</msg><path><editType>edit</editType><file>server/api/accounting/incoming-invoices/[id]/confirm.post.ts</file></path><path><editType>edit</editType><file>server/utils/inbox/extractPipeline.ts</file></path><path><editType>edit</editType><file>server/utils/inbox/vendorProfile.ts</file></path><path><editType>add</editType><file>app/components/accounting/inbox/InboxPdfPreview.vue</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InvoiceReview.vue</file></path><path><editType>edit</editType><file>server/utils/inbox/rasterizePdf.ts</file></path><path><editType>edit</editType><file>server/utils/inbox/strapiAttach.ts</file></path><path><editType>edit</editType><file>server/utils/inbox/processDocument.ts</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InboxList.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/incoming-invoices/index.vue</file></path><path><editType>add</editType><file>server/utils/inbox/layoutFingerprint.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>nuxt.config.ts</affectedPath><affectedPath>server/utils/inbox/inboxDb.ts</affectedPath><affectedPath>server/utils/inbox/vendorProfile.ts</affectedPath><affectedPath>server/utils/inbox/extractPipeline.ts</affectedPath><affectedPath>app/components/accounting/inbox/InvoiceReview.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>server/api/accounting/incoming-invoices/[id]/ocr-region.post.ts</affectedPath><commitId>657f4edf6743f71919d491cb073735817e1f13de</commitId><timestamp>1781725067000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>enhance pdf quality and manual edit for learning
</comment><date>2026-06-17 21:37:47 +0200</date><id>657f4edf6743f71919d491cb073735817e1f13de</id><msg>enhance pdf quality and manual edit for learning</msg><path><editType>edit</editType><file>server/utils/inbox/vendorProfile.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>server/api/accounting/incoming-invoices/[id]/ocr-region.post.ts</file></path><path><editType>edit</editType><file>server/utils/inbox/inboxDb.ts</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>server/utils/inbox/extractPipeline.ts</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InvoiceReview.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/accounting/inbox/InboxPdfPreview.vue</affectedPath><affectedPath>app/pages/accounting/incoming-invoices/index.vue</affectedPath><affectedPath>app/components/accounting/inbox/InboxUpload.vue</affectedPath><affectedPath>app/components/accounting/inbox/InvoiceReview.vue</affectedPath><affectedPath>app/components/accounting/inbox/InboxList.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>0fef1bb0ca770fe9a2edbf7774f1e5c6aaca545a</commitId><timestamp>1781727350000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>enhance pdf quality and manual edit for learning
</comment><date>2026-06-17 22:15:50 +0200</date><id>0fef1bb0ca770fe9a2edbf7774f1e5c6aaca545a</id><msg>enhance pdf quality and manual edit for learning</msg><path><editType>edit</editType><file>app/pages/accounting/incoming-invoices/index.vue</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InboxUpload.vue</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InvoiceReview.vue</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InboxPdfPreview.vue</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InboxList.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/incoming-invoices/index.vue</affectedPath><affectedPath>app/components/accounting/inbox/InboxList.vue</affectedPath><affectedPath>app/pages/procurements/invoices/[id]/edit.vue</affectedPath><affectedPath>server/utils/inbox/extractPipeline.ts</affectedPath><affectedPath>app/components/accounting/inbox/InboxUpload.vue</affectedPath><affectedPath>app/components/accounting/inbox/InvoiceReview.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>103154a28cdecc2f2f6efb039c45e2220388f0ce</commitId><timestamp>1781734159000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>enhance pdf quality and manual edit for learning
</comment><date>2026-06-18 00:09:19 +0200</date><id>103154a28cdecc2f2f6efb039c45e2220388f0ce</id><msg>enhance pdf quality and manual edit for learning</msg><path><editType>edit</editType><file>app/components/accounting/inbox/InvoiceReview.vue</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InboxUpload.vue</file></path><path><editType>edit</editType><file>app/pages/procurements/invoices/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/utils/inbox/extractPipeline.ts</file></path><path><editType>edit</editType><file>app/components/accounting/inbox/InboxList.vue</file></path><path><editType>edit</editType><file>app/pages/accounting/incoming-invoices/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>647</buildNumber><marked><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><branch><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><branch><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><branch><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#647</displayName><duration>57561</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #647</fullDisplayName><id>647</id><inProgress>false</inProgress><keepLog>false</keepLog><number>647</number><queueId>5260</queueId><result>SUCCESS</result><timestamp>1781654400932</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/647/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>646</buildNumber><marked><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><branch><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><branch><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><branch><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#646</displayName><duration>59239</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #646</fullDisplayName><id>646</id><inProgress>false</inProgress><keepLog>false</keepLog><number>646</number><queueId>5259</queueId><result>SUCCESS</result><timestamp>1781568000931</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/646/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>645</buildNumber><marked><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><branch><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><branch><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><branch><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#645</displayName><duration>55808</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #645</fullDisplayName><id>645</id><inProgress>false</inProgress><keepLog>false</keepLog><number>645</number><queueId>5258</queueId><result>SUCCESS</result><timestamp>1781481600933</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/645/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>644</buildNumber><marked><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><branch><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><branch><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><branch><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#644</displayName><duration>63862</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #644</fullDisplayName><id>644</id><inProgress>false</inProgress><keepLog>false</keepLog><number>644</number><queueId>5257</queueId><result>SUCCESS</result><timestamp>1781395200936</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/644/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>643</buildNumber><marked><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><branch><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><branch><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><branch><SHA1>a147c4ad2336b0903f8a88c7b6de861f44ab583c</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#643</displayName><duration>57443</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #643</fullDisplayName><id>643</id><inProgress>false</inProgress><keepLog>false</keepLog><number>643</number><queueId>5256</queueId><result>SUCCESS</result><timestamp>1781308800931</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/643/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/index.vue</affectedPath><affectedPath>server/api/orders/unfulfillable-products.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>8a854f6f96b65697d65a3a221b76300d6559c157</commitId><timestamp>1781237667000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add Missing articles export
</comment><date>2026-06-12 06:14:27 +0200</date><id>8a854f6f96b65697d65a3a221b76300d6559c157</id><msg>Add Missing articles export</msg><path><editType>edit</editType><file>server/api/orders/unfulfillable-products.get.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/pages/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/generate-shipments.vue</affectedPath><commitId>a147c4ad2336b0903f8a88c7b6de861f44ab583c</commitId><timestamp>1781238031000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>fix picklist print
</comment><date>2026-06-12 06:20:31 +0200</date><id>a147c4ad2336b0903f8a88c7b6de861f44ab583c</id><msg>fix picklist print</msg><path><editType>edit</editType><file>app/pages/generate-shipments.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><build _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>642</buildNumber><marked><SHA1>860b3f6d10c00e06580690356df286f6129ac7f1</SHA1><branch><SHA1>860b3f6d10c00e06580690356df286f6129ac7f1</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>860b3f6d10c00e06580690356df286f6129ac7f1</SHA1><branch><SHA1>860b3f6d10c00e06580690356df286f6129ac7f1</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>860b3f6d10c00e06580690356df286f6129ac7f1</SHA1><branch><SHA1>860b3f6d10c00e06580690356df286f6129ac7f1</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#642</displayName><duration>62171</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #642</fullDisplayName><id>642</id><inProgress>false</inProgress><keepLog>false</keepLog><number>642</number><queueId>5253</queueId><result>SUCCESS</result><timestamp>1781222400933</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/642/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><commitId>d4225a17e2f7a04c2b1ae4b56fd7ee7a5efc4d23</commitId><timestamp>1781161581000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add biometric to android native
</comment><date>2026-06-11 09:06:21 +0200</date><id>d4225a17e2f7a04c2b1ae4b56fd7ee7a5efc4d23</id><msg>add biometric to android native</msg><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/index.vue</affectedPath><affectedPath>nuxt.config.ts</affectedPath><commitId>3d98d54f7d88326419b81c755704d9d10798c1ac</commitId><timestamp>1781162512000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Fix stale dashboard counts + app pointing at dev Strapi host

Dashboard: the mobile index is keep-alive'd, so the openso-count/shipped
useFetch never re-ran on revisit (stale counts). Capture refresh and re-fetch
on page re-activation and on app foreground.

App Strapi host: the bundled app baked config.public.strapi from the local
.env (a dev host, unreachable from devices) while /api goes to prod — breaking
product thumbnails and media uploads. In the app build, strapi base/token now
follow apiBase (CAP_STRAPI_BASE/CAP_STRAPI_TOKEN override), so /files-api and
/media-api resolve on the same prod host as the API. Web build unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</comment><date>2026-06-11 09:21:52 +0200</date><id>3d98d54f7d88326419b81c755704d9d10798c1ac</id><msg>Fix stale dashboard counts + app pointing at dev Strapi host</msg><path><editType>edit</editType><file>app/pages/mobile/index.vue</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>package.json</affectedPath><commitId>e3623b1e780125b9d34da31e3993e4010320082a</commitId><timestamp>1781162686000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>build:app uses .env-prod (production app build)

The bundled app is a production app (apiBase = app.logship.de), so build it
with the prod env. This bakes the PROD Strapi token (dev≠prod), fixing media
uploads, and aligns all public config to prod. For a dev app build, override
the env/CAP_* vars.

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</comment><date>2026-06-11 09:24:46 +0200</date><id>e3623b1e780125b9d34da31e3993e4010320082a</id><msg>build:app uses .env-prod (production app build)</msg><path><editType>edit</editType><file>package.json</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.gitignore</affectedPath><affectedPath>android/app/capacitor.build.gradle</affectedPath><affectedPath>app/composables/useChatSocket.ts</affectedPath><affectedPath>server/utils/fcmNotifier.ts</affectedPath><affectedPath>android/app/google-services.json</affectedPath><affectedPath>server/api/push/register-native.post.ts</affectedPath><affectedPath>server/api/chat/voice.post.ts</affectedPath><affectedPath>android/capacitor.settings.gradle</affectedPath><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>server/utils/fcmDb.ts</affectedPath><affectedPath>package.json</affectedPath><affectedPath>server/routes/chat/ws.ts</affectedPath><affectedPath>app/plugins/20.native-push.client.ts</affectedPath><affectedPath>.env-prod</affectedPath><commitId>cd3e4c34a3ba58e56b3ad45158f0e047b55ed0e9</commitId><timestamp>1781166611000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Integrate Android Native Push Messaging on Chat with Firebase
</comment><date>2026-06-11 10:30:11 +0200</date><id>cd3e4c34a3ba58e56b3ad45158f0e047b55ed0e9</id><msg>Integrate Android Native Push Messaging on Chat with Firebase</msg><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>package.json</file></path><path><editType>edit</editType><file>server/api/chat/voice.post.ts</file></path><path><editType>edit</editType><file>server/routes/chat/ws.ts</file></path><path><editType>add</editType><file>android/app/google-services.json</file></path><path><editType>edit</editType><file>.env-prod</file></path><path><editType>edit</editType><file>android/app/capacitor.build.gradle</file></path><path><editType>add</editType><file>server/api/push/register-native.post.ts</file></path><path><editType>add</editType><file>server/utils/fcmDb.ts</file></path><path><editType>edit</editType><file>.gitignore</file></path><path><editType>edit</editType><file>app/composables/useChatSocket.ts</file></path><path><editType>add</editType><file>server/utils/fcmNotifier.ts</file></path><path><editType>edit</editType><file>android/capacitor.settings.gradle</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>add</editType><file>app/plugins/20.native-push.client.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/index.vue</affectedPath><commitId>d0ccdc3e4e26e7ea789d8b3813f0acd875ee8be8</commitId><timestamp>1781167451000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Add chat entry point to the mobile dashboard

The chat window (/chat) was bundled into the app but unreachable — the desktop
&lt;ChatBadge&gt; lives in navbars the /mobile/* pages don't use, and the mobile
layout has no shared nav. Add the chat entry to the mobile dashboard:
- &lt;ChatBadge&gt; in the header (live unread badge; taps → /chat on mobile),
- a gated "Chat" tile in the task grid for discoverability.

Both reuse useChatEligible/useChatUnread (no new state, no server change) and
self-hide for non-staff / when chat is disabled.

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</comment><date>2026-06-11 10:44:11 +0200</date><id>d0ccdc3e4e26e7ea789d8b3813f0acd875ee8be8</id><msg>Add chat entry point to the mobile dashboard</msg><path><editType>edit</editType><file>app/pages/mobile/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/mobile/index.vue</affectedPath><commitId>a95497c94c62d0e7c8cd1c8c5730f0da32f48d7e</commitId><timestamp>1781169743000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Restructure + restyle the mobile dashboard header (Option A)

Modernize the cramped header: replace the centered "LogShip Mobile" title and
the 4-button cluster with a clean profile-driven bar.

- Left: gradient avatar (user initials) + first name + warehouse/org; tapping
  opens the profile sheet.
- Right: only the two task actions — scanner toggle and chat (with a live red
  unread-count badge).
- Theme toggle + logout move into the profile sheet (UModal, now titled
  "Profil"), decluttering the bar.

Chat unread badge reuses useChatUnread; the chat button is gated by
useChatEligible (hidden for non-staff). No server change.

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</comment><date>2026-06-11 11:22:23 +0200</date><id>a95497c94c62d0e7c8cd1c8c5730f0da32f48d7e</id><msg>Restructure + restyle the mobile dashboard header (Option A)</msg><path><editType>edit</editType><file>app/pages/mobile/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><commitId>ce4a701251b6e94be5f0a1bf251e4cc969852d08</commitId><timestamp>1781170461000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>changes to mobile header
</comment><date>2026-06-11 11:34:21 +0200</date><id>ce4a701251b6e94be5f0a1bf251e4cc969852d08</id><msg>changes to mobile header</msg><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/chat/voice.post.ts</affectedPath><affectedPath>server/routes/chat/ws.ts</affectedPath><commitId>73dc5819a3a0a6870053a356ebd2ed03ba392914</commitId><timestamp>1781170694000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>chat: push to all devices, not only when the user is fully offline

Presence is per-USER (online if ANY socket is connected), but the FCM/web-push
fallback was gated on the whole user being offline. With two devices on one
login, a foreground device kept the user "online", so the server skipped the
push entirely and the backgrounded 2nd device got nothing.

Send the native FCM to ALL the recipient's devices on every message, regardless
of presence. Foreground devices receive it silently (no pushNotificationReceived
handler → no tray; the live socket already rendered it), so there's no
double-notify; backgrounded/killed devices now get the tray notification.
Web push stays offline-only (an active browser tab already showed it live).

Applied in both the text (ws.ts) and voice-note (voice.post.ts) paths.

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</comment><date>2026-06-11 11:38:14 +0200</date><id>73dc5819a3a0a6870053a356ebd2ed03ba392914</id><msg>chat: push to all devices, not only when the user is fully offline</msg><path><editType>edit</editType><file>server/api/chat/voice.post.ts</file></path><path><editType>edit</editType><file>server/routes/chat/ws.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/src/main/AndroidManifest.xml</affectedPath><affectedPath>android/app/src/main/res/drawable/ic_stat_notify.xml</affectedPath><affectedPath>app/composables/useChatSocket.ts</affectedPath><affectedPath>server/utils/fcmNotifier.ts</affectedPath><affectedPath>android/app/src/main/java/com/logship/mobile/MainActivity.java</affectedPath><commitId>346a27eec2e6129c0607b7b41c4805ca4eb20e59</commitId><timestamp>1781172054000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Fix background chat push not displaying on Android + in-app toast deep-link

Background FCM pushes played a sound but showed nothing in the tray/heads-up:
the 'chat' notification channel was only created from JS (never runs on a
killed app), with no small icon and no manifest fallback — so Android 8+
silently dropped the notification (posted to a non-existent channel).

- MainActivity: create the high-importance 'chat' channel NATIVELY in onCreate
  so it always exists (persists when killed) → heads-up + shade.
- ic_stat_notify.xml: a proper white notification small icon.
- AndroidManifest: firebase default_notification_icon + default_notification_channel_id='chat'.
- fcmNotifier: log sends (no-credential / no-tokens / sent N/M / per-token error)
  so we can confirm pushes are actually sent vs a display problem.
- useChatSocket: the in-app toast's "open" now navigates to /chat on mobile
  (it previously only toggled the desktop drawer, which doesn't render on mobile).

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</comment><date>2026-06-11 12:00:54 +0200</date><id>346a27eec2e6129c0607b7b41c4805ca4eb20e59</id><msg>Fix background chat push not displaying on Android + in-app toast deep-link</msg><path><editType>edit</editType><file>android/app/src/main/java/com/logship/mobile/MainActivity.java</file></path><path><editType>add</editType><file>android/app/src/main/res/drawable/ic_stat_notify.xml</file></path><path><editType>edit</editType><file>android/app/src/main/AndroidManifest.xml</file></path><path><editType>edit</editType><file>server/utils/fcmNotifier.ts</file></path><path><editType>edit</editType><file>app/composables/useChatSocket.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><commitId>96c1a8ae05278cee2c12cee066e03ea59634a5f7</commitId><timestamp>1781172157000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Fix Android OS Level notification
</comment><date>2026-06-11 12:02:37 +0200</date><id>96c1a8ae05278cee2c12cee066e03ea59634a5f7</id><msg>Fix Android OS Level notification</msg><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/chat/Drawer.vue</affectedPath><affectedPath>server/api/chat/voice/[id].get.ts</affectedPath><affectedPath>app/pages/chat.vue</affectedPath><affectedPath>app/composables/useImageDownscale.ts</affectedPath><affectedPath>server/api/chat/image/[id].get.ts</affectedPath><affectedPath>server/utils/chatDb.ts</affectedPath><affectedPath>app/composables/useChatMedia.ts</affectedPath><affectedPath>app/composables/useChat.ts</affectedPath><affectedPath>server/api/chat/image.post.ts</affectedPath><commitId>3b24faa650308e06fc6dd652371f416b59b91483</commitId><timestamp>1781176390000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>chat: image sharing (send + view photos), mirroring the voice-note pattern

Adds image messages to the staff chat, stored self-contained in chat.db like
voice notes (no Strapi/iDempiere coupling):

- chatDb: image_notes table + insert/get/link fns + retention sweep.
- POST /api/chat/image: multipart upload → image_notes + a message carrying
  meta {kind:'image', imageId}, fanned out over the socket + pushed (📷 Bild
  label). Type guard (jpeg/png/webp/gif) + 8MB cap. No post-processing.
- GET /api/chat/image/:id: serves the blob, party-authorized like the voice route.
- useChat.sendImage (optimistic localUrl preview) + a shared downscaleImage util
  (≤1600px / q0.82, GIFs passed through) so blobs stay small in sqlite.
- Drawer.vue + pages/chat.vue (kept in sync): a 📷 composer button (hidden
  &lt;input accept=image/*&gt; → Android camera/gallery), an image bubble (thumbnail
  opens full-size), and image CSS.

Also fixes media loading in the bundled app: &lt;img&gt;/&lt;audio&gt; element loads bypass
the fetch wrapper, so chatMediaUrl() makes voice/image URLs absolute + token-bearing
in the app, and the voice/image serve routes accept ?access_token= as an auth
fallback (web is unchanged — relative + cookie). This also makes VOICE playback
work in the app for the first time.

Co-Authored-By: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</comment><date>2026-06-11 13:13:10 +0200</date><id>3b24faa650308e06fc6dd652371f416b59b91483</id><msg>chat: image sharing (send + view photos), mirroring the voice-note pattern</msg><path><editType>add</editType><file>app/composables/useChatMedia.ts</file></path><path><editType>add</editType><file>server/api/chat/image/[id].get.ts</file></path><path><editType>add</editType><file>app/composables/useImageDownscale.ts</file></path><path><editType>edit</editType><file>server/utils/chatDb.ts</file></path><path><editType>edit</editType><file>app/pages/chat.vue</file></path><path><editType>add</editType><file>server/api/chat/image.post.ts</file></path><path><editType>edit</editType><file>app/components/chat/Drawer.vue</file></path><path><editType>edit</editType><file>app/composables/useChat.ts</file></path><path><editType>edit</editType><file>server/api/chat/voice/[id].get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/app/build.gradle</affectedPath><affectedPath>android/update-files/version.json</affectedPath><affectedPath>app/components/chat/Drawer.vue</affectedPath><affectedPath>app/pages/chat.vue</affectedPath><affectedPath>server/api/chat/image/[id].get.ts</affectedPath><affectedPath>server/utils/chatDb.ts</affectedPath><affectedPath>app/composables/useChat.ts</affectedPath><affectedPath>server/api/chat/image.post.ts</affectedPath><commitId>10feacd40f1f4e945f057bbeb44cd9972da8d3d2</commitId><timestamp>1781182062000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add image handling and vice voice german transcritpion
</comment><date>2026-06-11 14:47:42 +0200</date><id>10feacd40f1f4e945f057bbeb44cd9972da8d3d2</id><msg>add image handling and vice voice german transcritpion</msg><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>app/composables/useChat.ts</file></path><path><editType>edit</editType><file>app/pages/chat.vue</file></path><path><editType>edit</editType><file>app/components/chat/Drawer.vue</file></path><path><editType>edit</editType><file>server/utils/chatDb.ts</file></path><path><editType>delete</editType><file>server/api/chat/image/[id].get.ts</file></path><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>edit</editType><file>server/api/chat/image.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>android/update-files/version.json</affectedPath><affectedPath>android/app/build.gradle</affectedPath><affectedPath>server/api/partners/agreements/destroy.delete.ts</affectedPath><affectedPath>app/components/partners/PartnerForm.vue</affectedPath><affectedPath>app/components/partners/PartnerAgreementNotesEditor.vue</affectedPath><affectedPath>server/api/partners/agreements/update.put.ts</affectedPath><affectedPath>app/components/RichTextEditor.vue</affectedPath><affectedPath>reference/recipes.md</affectedPath><affectedPath>server/api/partners/agreements/store.post.ts</affectedPath><affectedPath>server/api/partners/agreements/index.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>8eb323432715780fe53e768237f38112b4c77756</commitId><timestamp>1781186917000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add agreement notes to bpartner
</comment><date>2026-06-11 16:08:37 +0200</date><id>8eb323432715780fe53e768237f38112b4c77756</id><msg>add agreement notes to bpartner</msg><path><editType>edit</editType><file>android/update-files/version.json</file></path><path><editType>add</editType><file>app/components/RichTextEditor.vue</file></path><path><editType>edit</editType><file>reference/recipes.md</file></path><path><editType>add</editType><file>server/api/partners/agreements/destroy.delete.ts</file></path><path><editType>edit</editType><file>android/app/build.gradle</file></path><path><editType>edit</editType><file>app/components/partners/PartnerForm.vue</file></path><path><editType>add</editType><file>server/api/partners/agreements/index.get.ts</file></path><path><editType>add</editType><file>app/components/partners/PartnerAgreementNotesEditor.vue</file></path><path><editType>add</editType><file>server/api/partners/agreements/store.post.ts</file></path><path><editType>add</editType><file>server/api/partners/agreements/update.put.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/RichTextEditor.vue</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>app/components/partners/PartnerAgreementNotesEditor.vue</affectedPath><affectedPath>server/api/partners/agreements/store.post.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>server/api/partners/agreements/update.put.ts</affectedPath><commitId>e0259e37b18917e174f7d0436a1fca990a7106da</commitId><timestamp>1781188747000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add agreement notes to bpartner
</comment><date>2026-06-11 16:39:07 +0200</date><id>e0259e37b18917e174f7d0436a1fca990a7106da</id><msg>add agreement notes to bpartner</msg><path><editType>edit</editType><file>app/components/partners/PartnerAgreementNotesEditor.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/RichTextEditor.vue</file></path><path><editType>edit</editType><file>server/api/partners/agreements/store.post.ts</file></path><path><editType>edit</editType><file>server/api/partners/agreements/update.put.ts</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/dashboard/PicklistGenerateModal.vue</affectedPath><affectedPath>app/composables/usePicklistPdf.ts</affectedPath><commitId>860b3f6d10c00e06580690356df286f6129ac7f1</commitId><timestamp>1781200468000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>add shipment printing to dashboard picklist card
</comment><date>2026-06-11 19:54:28 +0200</date><id>860b3f6d10c00e06580690356df286f6129ac7f1</id><msg>add shipment printing to dashboard picklist card</msg><path><editType>edit</editType><file>app/composables/usePicklistPdf.ts</file></path><path><editType>edit</editType><file>app/components/dashboard/PicklistGenerateModal.vue</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></build><color>blue</color><firstBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Younes</shortDescription><userId>younex</userId><userName>Younes</userName></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>1</buildNumber><marked><SHA1>6414a02df5e1f9176b93e17ce04863b8790f768c</SHA1><branch><SHA1>6414a02df5e1f9176b93e17ce04863b8790f768c</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>6414a02df5e1f9176b93e17ce04863b8790f768c</SHA1><branch><SHA1>6414a02df5e1f9176b93e17ce04863b8790f768c</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>6414a02df5e1f9176b93e17ce04863b8790f768c</SHA1><branch><SHA1>6414a02df5e1f9176b93e17ce04863b8790f768c</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#1</displayName><duration>2109</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #1</fullDisplayName><id>1</id><inProgress>false</inProgress><keepLog>false</keepLog><number>1</number><queueId>318</queueId><result>FAILURE</result><timestamp>1735826497687</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/1/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><kind>git</kind></changeSet></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>741</buildNumber><marked><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><branch><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><branch><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><branch><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#741</displayName><duration>70605</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #741</fullDisplayName><id>741</id><inProgress>false</inProgress><keepLog>false</keepLog><number>741</number><queueId>5746</queueId><result>SUCCESS</result><timestamp>1789776000766</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/741/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><affectedPath>server/utils/amazonAds/parseInvoicePdf.ts</affectedPath><affectedPath>server/utils/amazonAds/adsApi.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/import.post.ts</affectedPath><affectedPath>reference/test-scripts/amazon-fee-parse.mjs</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/types.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/upload.post.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/status.get.ts</affectedPath><affectedPath>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>9e5d44b9cb79373965ffd173001cf1268e6d3889</commitId><timestamp>1789723068000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: book seller fee invoices (Tax Document Library PDFs) next to Ads invoices

Amazon offers no API for the seller fee invoices in Europe (the SP-API Invoices
API is Brazil-only, no report type covers them), so the PDFs downloaded from
Seller Central are dropped on the existing Amazon invoices page.

- parseSellerFeeInvoicePdf.ts: text-layer parser (kind 'fee'), one line per fee
  type with its own VAT rate; runs before the Ads parser in the upload route
- vendor resolved by the issuer's VAT id, created under org * on first import
- own charge (AMAZON_FEE_CHARGE_ID, default 1000009 "Amazon Gebühren"), tax per
  line rate; credit notes are listed but not importable yet
- list route checks bookings across the Ads vendor and all fee vendors
- page: Type / Aussteller / Empfänger columns, second charge selector
</comment><date>2026-09-18 11:17:48 +0200</date><id>9e5d44b9cb79373965ffd173001cf1268e6d3889</id><msg>Amazon invoices: book seller fee invoices (Tax Document Library PDFs) next to Ads invoices</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/import.post.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/upload.post.ts</file></path><path><editType>add</editType><file>reference/test-scripts/amazon-fee-parse.mjs</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/status.get.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/types.ts</file></path><path><editType>add</editType><file>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/utils/amazonAds/parseInvoicePdf.ts</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/adsApi.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/offers/conditions/index.post.ts</affectedPath><affectedPath>server/utils/offers/quotePdf.ts</affectedPath><affectedPath>app/pages/partners/partners/[id]/edit.vue</affectedPath><affectedPath>server/utils/offers/quoteConfirmation.ts</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>app/components/offers/ForecastModal.vue</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><affectedPath>server/utils/offers/forecastPdf.ts</affectedPath><affectedPath>server/api/offers/forecast/preview.post.ts</affectedPath><affectedPath>server/utils/offers/offerConditions.ts</affectedPath><affectedPath>app/pages/users/leads/[id]/edit.vue</affectedPath><affectedPath>server/api/offers/quote/send.post.ts</affectedPath><affectedPath>server/api/offers/forecast/send.post.ts</affectedPath><affectedPath>app/composables/useOfferForecast.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>08ca7d5f074a1d4399860ffe4859350839a41e06</commitId><timestamp>1789726519000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Offers: custom forecast modal (scenarios, editable positions, PDF/send) + editable quote validity

Custom forecast ("Individuelle Prognose"): standalone cost forecast for leads and
partners, opened from a new "Prognose" button on both pages and from the quote
modal's forecast card (seeded from the live quote form). Seeds from the saved
custom forecast, else the saved quote conditions, else list prices. Every
position can be switched off, relabelled and re-priced (per order with factor or
% share, or per month), own positions added, up to 4 volume scenarios side by
side (3+ print landscape), display toggles for calculation column, unit prices,
subtotals, cost per order, yearly total and disclaimer. Save as draft
(offer_conditions.forecast), download, or e-mail with record attachment and
activity. Client computes, server only renders.

Quote validity: "Gültig (Tage)" and "Gültig bis" pair in the quote modal, default
7 days from now. One server resolver (resolveQuoteValidity) drives the PDF, the
e-mail text, the activity, the saved conditions and the confirmation link expiry.
</comment><date>2026-09-18 12:15:19 +0200</date><id>08ca7d5f074a1d4399860ffe4859350839a41e06</id><msg>Offers: custom forecast modal (scenarios, editable positions, PDF/send) + editable quote validity</msg><path><editType>add</editType><file>app/composables/useOfferForecast.ts</file></path><path><editType>add</editType><file>server/api/offers/forecast/send.post.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>app/components/offers/ForecastModal.vue</file></path><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path><path><editType>edit</editType><file>server/utils/offers/quoteConfirmation.ts</file></path><path><editType>edit</editType><file>server/utils/offers/quotePdf.ts</file></path><path><editType>edit</editType><file>app/pages/users/leads/[id]/edit.vue</file></path><path><editType>add</editType><file>server/api/offers/forecast/preview.post.ts</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>add</editType><file>server/utils/offers/forecastPdf.ts</file></path><path><editType>edit</editType><file>server/api/offers/conditions/index.post.ts</file></path><path><editType>edit</editType><file>server/utils/offers/offerConditions.ts</file></path><path><editType>edit</editType><file>app/pages/partners/partners/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/offers/quote/send.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/booking.get.ts</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>7c40ce743ed6563a2b58c00f358be5d811025e38</commitId><timestamp>1789729923000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: document details, paid vs created status, Lexoffice reset, pinned actions

- "Beleg in" column (org · vendor) + details dialog per created AP invoice
  (new booking.get.ts: header, payment/Lexoffice state, lines with charge + tax)
- status no longer says "Verbucht" for a merely created document: "Beleg erstellt
  · Zahlung offen" until iDempiere has the invoice allocated to a payment
  (IsPaid) → "Bezahlt"; separate counters
- Lexoffice reset for selected rows and from the details dialog (shared
  /api/invoices/lexoffice-reset), with a confirm that the voucher in Lexoffice
  is not deleted
- actions column pinned right, status/document columns moved left, API notice
  collapsed by default, PDF icon fixed (ti-pdf)
</comment><date>2026-09-18 13:12:03 +0200</date><id>7c40ce743ed6563a2b58c00f358be5d811025e38</id><msg>Amazon invoices: document details, paid vs created status, Lexoffice reset, pinned actions</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>add</editType><file>server/api/accounting/amazon-ads/booking.get.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/invoices/so.get.ts</affectedPath><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><affectedPath>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</affectedPath><affectedPath>app/pages/sales/invoices/index.vue</affectedPath><affectedPath>server/api/accounting/opos/index.get.ts</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/types.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>8aac736389fbef7e2d88535f9f39bc7b296c4eb9</commitId><timestamp>1789731297000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: recognise fee credit notes and book them as AP CreditMemo

- parser: "STEUERGUTSCHRIFT" template (Gutschriftennummer, Ausstellungsdatum /
  Zeitraum der Gutschrift), amounts with the sign before the currency
  ("-EUR 2.61"), "Ursprüngliche Rechnungsnummer" → originalInvoiceNo
- import: credit notes become a vendor credit memo — doctype DocBaseType APC
  (AP CreditMemo) with positive amounts, reference to the original invoice in
  the description; no longer refused
- OPOS + /sales/invoices: doctype 1000006 counts as customer-side only when the
  partner is flagged IsCustomer, so genuine vendor credit memos stay on the
  payables side (existing customer credit notes unchanged)
</comment><date>2026-09-18 13:34:57 +0200</date><id>8aac736389fbef7e2d88535f9f39bc7b296c4eb9</id><msg>Amazon invoices: recognise fee credit notes and book them as AP CreditMemo</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/invoices/so.get.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/types.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path><path><editType>edit</editType><file>app/pages/sales/invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/opos/index.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/AgGrid/AgCopyEmail.vue</affectedPath><affectedPath>app/components/AgGrid/AgDialPhone.vue</affectedPath><affectedPath>app/pages/users/leads/index.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>9779bba8ea83bac8745a1d1a8386e89c2a9a1135</commitId><timestamp>1789731297000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Leads list: dial icon aligned to the right edge, copy button on the e-mail column

- AgDialPhone: number stays left, only the dial button is pushed to the right
  (shared renderer — also applies to the users / external users lists)
- new AgCopyEmail cell renderer: copy-to-clipboard button with check-mark
  feedback, does not start the inline editor
</comment><date>2026-09-18 13:34:57 +0200</date><id>9779bba8ea83bac8745a1d1a8386e89c2a9a1135</id><msg>Leads list: dial icon aligned to the right edge, copy button on the e-mail column</msg><path><editType>edit</editType><file>app/components/AgGrid/AgDialPhone.vue</file></path><path><editType>edit</editType><file>app/pages/users/leads/index.vue</file></path><path><editType>add</editType><file>app/components/AgGrid/AgCopyEmail.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/dashboard/RecentCallsCard.vue</affectedPath><affectedPath>app/components/telephony/BlacklistControl.vue</affectedPath><affectedPath>server/api/telephony/blacklist.post.ts</affectedPath><affectedPath>server/api/telephony/blacklist.get.ts</affectedPath><affectedPath>app/components/DialButton.vue</affectedPath><affectedPath>server/utils/telephony/blacklist.ts</affectedPath><affectedPath>server/api/telephony/blacklist.delete.ts</affectedPath><commitId>c8fb1add4aec93b10d32265652cff746fddd349b</commitId><timestamp>1789732626000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Recent calls card: blacklist control moved into the number popover, with live status and unblock

- no per-row block button any more (it cost a column of width); clicking the
  number opens the popover, which now shows the FreePBX blacklist status and
  either "Nummer sperren" (two-step confirm) or "gesperrt · Entsperren"
- new TelephonyBlacklistControl, used inside the dial popover (DialButton
  show-blacklist) and in the card's own popover for sessions that cannot dial
- server: blacklist status read via AMI DBGet (one session for the ≤ 10 numbers
  of a page), unblock via DBDel; GET + DELETE /api/telephony/blacklist. An
  unexpected AMI error is "status unknown", never a false "not blocked"
- blocked numbers are marked red with a ban icon in the list
</comment><date>2026-09-18 13:57:06 +0200</date><id>c8fb1add4aec93b10d32265652cff746fddd349b</id><msg>Recent calls card: blacklist control moved into the number popover, with live status and unblock</msg><path><editType>add</editType><file>app/components/telephony/BlacklistControl.vue</file></path><path><editType>add</editType><file>server/api/telephony/blacklist.delete.ts</file></path><path><editType>edit</editType><file>app/components/dashboard/RecentCallsCard.vue</file></path><path><editType>edit</editType><file>server/api/telephony/blacklist.post.ts</file></path><path><editType>edit</editType><file>server/utils/telephony/blacklist.ts</file></path><path><editType>add</editType><file>server/api/telephony/blacklist.get.ts</file></path><path><editType>edit</editType><file>app/components/DialButton.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>b2d24d604b14700496f0d0ebc1f53dd8a3358015</commitId><timestamp>1789732626000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: recognise the 2025 fee-invoice template, label the charge boxes as import settings

- parser: 2025 labels (Rechnungsnr, Name des Anbieters / Verkaeufers, Adresse /
  UStID des Anbieters) plus a label-independent fallback for supplier name and
  VAT id, so the next rename by Amazon does not break recognition
- page: the two charge selectors are grouped as "Import-Einstellung · Kostenart
  für neue Belege (kein Filter)" with an explanatory tooltip
</comment><date>2026-09-18 13:57:06 +0200</date><id>b2d24d604b14700496f0d0ebc1f53dd8a3358015</id><msg>Amazon invoices: recognise the 2025 fee-invoice template, label the charge boxes as import settings</msg><path><editType>edit</editType><file>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>7b3ffcb02f1a492cae8e96636728f270a769594e</commitId><timestamp>1789733700000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: quick filters, optional date range, collapsed import settings, square upload box

- quick-filter chips with counts: Typ (Ads / Gebühren / Gutschriften), Beleg
  (ohne / erstellt / bezahlt), Lexoffice (noch nicht hochgeladen / hochgeladen);
  totals follow the filter ("1 von 3")
- no date filter by default; the optional invoice-date range sits behind a quiet
  "Zeitraum" button, reloads on change, and an upload widens it so new invoices
  are never hidden. The Ads API call keeps a bounded 12-month window server-side
- the two cost-type selectors are collapsed behind "Import-Einstellungen" with a
  one-line summary and an info box (what they do, why two, not a filter, when to
  change); the panel opens by itself when a cost type is missing
- upload area is a square drop box on the right with drag feedback and keyboard
  support
</comment><date>2026-09-18 14:15:00 +0200</date><id>7b3ffcb02f1a492cae8e96636728f270a769594e</id><msg>Amazon invoices: quick filters, optional date range, collapsed import settings, square upload box</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/booking.get.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>786df63b6cc3a86132f1f9a056fec00574c6943a</commitId><timestamp>1789734174000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: show voided documents properly, match them by POReference

- a voided invoice row names its Storno document ("Storniert #&lt;id&gt; · erneut
  importierbar"), opens its details (banner + link to iDempiere's reversal
  document, no Lexoffice reset), has its own row tint, a "Storno-Beleg" action,
  a "Storniert" quick-filter chip and a counter; it no longer counts as
  "Ohne Beleg (neu)"
- list route: documents are matched to the Amazon invoice by POReference (full
  number) instead of DocumentNo — the void rename '&lt;no&gt;-VOID-&lt;id&gt;' is truncated
  to the 30-char column ('DE-AEU-2025-2978769' → 'DE-AEU-2025-29787-VOID-…'),
  so a voided document was not recognised; reversal documents are flagged and
  listed after the original
</comment><date>2026-09-18 14:22:54 +0200</date><id>786df63b6cc3a86132f1f9a056fec00574c6943a</id><msg>Amazon invoices: show voided documents properly, match them by POReference</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/booking.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/document.get.ts</affectedPath><affectedPath>reference/ci/deploy-production.sh</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>bcd4de9387b784591e675d94d2d83cd354b63cb6</commitId><timestamp>1789737288000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: iDempiere is the source of truth for booked invoices, PDFs from the document attachment

The page's list lived only in data/amazon-ads.db, which was missing from the
deploy script's preserve list — every deploy wiped it, so booked invoices
vanished from the page (the documents themselves were never affected).

- list route: every Amazon invoice that HAS a document is rebuilt from iDempiere
  (AP documents of the Amazon vendors, found by vendor flag + name; key =
  POReference; kind from the vendor, credit note from the doctype, period from
  the description). The local store only adds uploads that are not imported yet
  plus parsed details / PDF cache
- document route: without a local copy the ORIGINAL PDF attached to the
  iDempiere document is served (&amp;cInvoiceId=); the page passes the document id
- rows rebuilt from iDempiere are labelled (Quelle "iDempiere", PDF "Anhang");
  a voided one asks for the PDF to be uploaded again before re-import
- deploy script: amazon-ads.db + data/amazon-ads/ added to the preserve lists
  (must be pasted into the Jenkins job to take effect)
</comment><date>2026-09-18 15:14:48 +0200</date><id>bcd4de9387b784591e675d94d2d83cd354b63cb6</id><msg>Amazon invoices: iDempiere is the source of truth for booked invoices, PDFs from the document attachment</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/document.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>reference/ci/deploy-production.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/upload.post.ts</affectedPath><affectedPath>server/utils/amazonAds/invoiceStore.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/status.get.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/document.get.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/import.post.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/void.post.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>bcd159169e2557be05d88bbad7d54b88e7c038cf</commitId><timestamp>1789741744000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: store uploads in the iDempiere table CUST_AmazonInvoiceInbox (PDF in Strapi)

- new invoiceStore.ts: one async storage API with two backends — the iDempiere
  table (row via REST, PDF attached in Strapi) and, only as a fallback when the
  table is not reachable, the old SQLite file
- upload / list / import / void / document routes use it; the upload route reads
  the multipart body once and retries with a refreshed token
- rows still in the SQLite file are moved over when the page loads (bounded,
  idempotent, fail-soft; imported rows keep their PDF on the c_invoice document,
  pending rows get their PDF uploaded to Strapi). A run where nothing can be
  written pauses for 10 minutes instead of retrying on every load, and rows that
  are not in the table yet stay visible and importable from the local file
- status/list responses report the active backend
</comment><date>2026-09-18 16:29:04 +0200</date><id>bcd159169e2557be05d88bbad7d54b88e7c038cf</id><msg>Amazon invoices: store uploads in the iDempiere table CUST_AmazonInvoiceInbox (PDF in Strapi)</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/status.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/import.post.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/void.post.ts</file></path><path><editType>add</editType><file>server/utils/amazonAds/invoiceStore.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/upload.post.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/document.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>f5a4b95955cba38382c3ac8c7cc1ffae1e2654e7</commitId><timestamp>1789742168000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: keep inbox rows consistent with iDempiere's documents (self-heal)

On each list load an inbox row whose document exists but is not linked (imported
on another host / before the table existed) gets status 'imported' + the link;
a row that still points to a voided or missing document is released. Bounded,
fail-soft, idempotent — the page itself reads the documents and never depends on it.
</comment><date>2026-09-18 16:36:08 +0200</date><id>f5a4b95955cba38382c3ac8c7cc1ffae1e2654e7</id><msg>Amazon invoices: keep inbox rows consistent with iDempiere's documents (self-heal)</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/accounting/BankLineMatchModal.vue</affectedPath><affectedPath>server/utils/bankReconciliationSuggestions.ts</affectedPath><affectedPath>app/components/accounting/banking/BankReconcilePanel.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>d6003a7b7ccaba8faa27e1d466fff5d221e8dd67</commitId><timestamp>1789742659000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Bank reconciliation: suggestions need at least 2 matching criteria, fuzzy names, date signal, score ranking

- a candidate is only suggested when at least 2 of 4 criteria match: document
  number, amount, partner (IBAN or name count as one) and date. On the current
  33 open statements all 47 old invoice suggestions rested on a single signal
- new date signal: statement line date −5 … +60 days around the invoice date
- fuzzy partner names: umlauts spelled out, accents stripped, legal forms and
  filler words ignored, prefix matches, brand word, brand inside run-together
  text or the remittance text ("AMAZON PAYMENTS EUROPE S.C.A." matches "Amazon EU
  S.à r.l., Niederlassung Deutschland"; "Deutsche Bank" does not match
  "Deutsche Post")
- ranking by score, best first (doc no. 50 · amount 30 · IBAN 25 / name 10–25 ·
  date closeness 0–15); up to 8 candidates per line
- match dialog: top 3 + "weitere anzeigen", date chip, n/4 criteria, best-match
  marker, top candidate preselected; list pill shows "+n" and a criteria tooltip
</comment><date>2026-09-18 16:44:19 +0200</date><id>d6003a7b7ccaba8faa27e1d466fff5d221e8dd67</id><msg>Bank reconciliation: suggestions need at least 2 matching criteria, fuzzy names, date signal, score ranking</msg><path><editType>edit</editType><file>app/components/accounting/BankLineMatchModal.vue</file></path><path><editType>edit</editType><file>server/utils/bankReconciliationSuggestions.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankReconcilePanel.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>6e71fb22714beae7d74a7a44353b11faad234015</commitId><timestamp>1789743036000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: report the PDF as available when it sits on the iDempiere document

Rows migrated from the local file (and rows rebuilt from documents) carry no file
of their own — their original PDF is the document's attachment. The list flagged
them as "no PDF" although the link works; they now show "Anhang".
</comment><date>2026-09-18 16:50:36 +0200</date><id>6e71fb22714beae7d74a7a44353b11faad234015</id><msg>Amazon invoices: report the PDF as available when it sits on the iDempiere document</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/import.post.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>87678796cc3032e2763f178f8e4731c10c6ed9b2</commitId><timestamp>1789744764000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: confirm every import with the cost type shown, no remembered cost types

12 fee invoices were booked to "Werbekosten": the page remembered the last
selection of each cost-type box in the browser and a stale value silently
overrode the correct default.

- cost types are no longer stored in the browser (old keys are removed); every
  page load starts from the server defaults (Ads → Werbekosten, fees/credit notes
  → Amazon Gebühren); a deviation is flagged (amber summary, reset to default)
- every import goes through a confirmation dialog that groups the invoices by
  type, shows the cost type each group will be booked to (changeable there, the
  default is marked, a deviation is highlighted) and lists already booked ones as
  skipped. It opens on "Ausgewählte importieren" and right after an upload
  ("jetzt importieren" / "Später")
- the import result names the cost type that was used per invoice
</comment><date>2026-09-18 17:19:24 +0200</date><id>87678796cc3032e2763f178f8e4731c10c6ed9b2</id><msg>Amazon invoices: confirm every import with the cost type shown, no remembered cost types</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/import.post.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>267e7becbfac41d14dbd209d510b958cf7628124</commitId><timestamp>1789745316000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: match documents by the full number in the description (POReference is 20 chars)

The first credit-memo import showed that POReference cannot carry the key: the
column is 20 chars, so 'DE-CN-AEU-2026-134720' (21) is stored as
'DE-CN-AEU-2026-13472' — the new AP CreditMemo was not recognised as the credit
note's document and the self-heal released its inbox row ('voided').

The importer's description starts with the FULL Amazon number on every document
(active, voided rename, iDempiere's reversal), so that is the primary match key
now; DocumentNo / POReference remain the fallback for documents not created by
the importer. No double booking was possible — the importer's duplicate guard
checks the full DocumentNo.
</comment><date>2026-09-18 17:28:36 +0200</date><id>267e7becbfac41d14dbd209d510b958cf7628124</id><msg>Amazon invoices: match documents by the full number in the description (POReference is 20 chars)</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><commitId>cc0ff592b5ae3cc181da2058102242fd926336b5</commitId><timestamp>1789745741000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: book the exact VAT from the PDF when a line-level purchase tax exists

Amazon rounds the VAT down (74,66 × 19 % → 14,18), iDempiere half-up (14,19); with
the document-level "19% Mwst." the VAT is recomputed at completion, so 3 of 15
documents ended up one cent above the Amazon total.

iDempiere keeps a manually entered line TaxAmt on purchase documents whose tax
rate is NOT document level. The importer now prefers such a rate (purchase,
IsDocumentLevel = N) and writes the VAT from the PDF on each line (per-line VAT
for fee invoices, proportional for Ads campaigns, remainder on the largest line).
Without such a rate nothing changes — except that a difference between the booked
total and the Amazon document is now reported as a warning instead of going unnoticed.
</comment><date>2026-09-18 17:35:41 +0200</date><id>cc0ff592b5ae3cc181da2058102242fd926336b5</id><msg>Amazon invoices: book the exact VAT from the PDF when a line-level purchase tax exists</msg><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></lastBuild><lastCompletedBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>741</buildNumber><marked><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><branch><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><branch><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><branch><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#741</displayName><duration>70605</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #741</fullDisplayName><id>741</id><inProgress>false</inProgress><keepLog>false</keepLog><number>741</number><queueId>5746</queueId><result>SUCCESS</result><timestamp>1789776000766</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/741/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><affectedPath>server/utils/amazonAds/parseInvoicePdf.ts</affectedPath><affectedPath>server/utils/amazonAds/adsApi.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/import.post.ts</affectedPath><affectedPath>reference/test-scripts/amazon-fee-parse.mjs</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/types.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/upload.post.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/status.get.ts</affectedPath><affectedPath>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>9e5d44b9cb79373965ffd173001cf1268e6d3889</commitId><timestamp>1789723068000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: book seller fee invoices (Tax Document Library PDFs) next to Ads invoices

Amazon offers no API for the seller fee invoices in Europe (the SP-API Invoices
API is Brazil-only, no report type covers them), so the PDFs downloaded from
Seller Central are dropped on the existing Amazon invoices page.

- parseSellerFeeInvoicePdf.ts: text-layer parser (kind 'fee'), one line per fee
  type with its own VAT rate; runs before the Ads parser in the upload route
- vendor resolved by the issuer's VAT id, created under org * on first import
- own charge (AMAZON_FEE_CHARGE_ID, default 1000009 "Amazon Gebühren"), tax per
  line rate; credit notes are listed but not importable yet
- list route checks bookings across the Ads vendor and all fee vendors
- page: Type / Aussteller / Empfänger columns, second charge selector
</comment><date>2026-09-18 11:17:48 +0200</date><id>9e5d44b9cb79373965ffd173001cf1268e6d3889</id><msg>Amazon invoices: book seller fee invoices (Tax Document Library PDFs) next to Ads invoices</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/import.post.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/upload.post.ts</file></path><path><editType>add</editType><file>reference/test-scripts/amazon-fee-parse.mjs</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/status.get.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/types.ts</file></path><path><editType>add</editType><file>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/utils/amazonAds/parseInvoicePdf.ts</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/adsApi.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/offers/conditions/index.post.ts</affectedPath><affectedPath>server/utils/offers/quotePdf.ts</affectedPath><affectedPath>app/pages/partners/partners/[id]/edit.vue</affectedPath><affectedPath>server/utils/offers/quoteConfirmation.ts</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>app/components/offers/ForecastModal.vue</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><affectedPath>server/utils/offers/forecastPdf.ts</affectedPath><affectedPath>server/api/offers/forecast/preview.post.ts</affectedPath><affectedPath>server/utils/offers/offerConditions.ts</affectedPath><affectedPath>app/pages/users/leads/[id]/edit.vue</affectedPath><affectedPath>server/api/offers/quote/send.post.ts</affectedPath><affectedPath>server/api/offers/forecast/send.post.ts</affectedPath><affectedPath>app/composables/useOfferForecast.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>08ca7d5f074a1d4399860ffe4859350839a41e06</commitId><timestamp>1789726519000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Offers: custom forecast modal (scenarios, editable positions, PDF/send) + editable quote validity

Custom forecast ("Individuelle Prognose"): standalone cost forecast for leads and
partners, opened from a new "Prognose" button on both pages and from the quote
modal's forecast card (seeded from the live quote form). Seeds from the saved
custom forecast, else the saved quote conditions, else list prices. Every
position can be switched off, relabelled and re-priced (per order with factor or
% share, or per month), own positions added, up to 4 volume scenarios side by
side (3+ print landscape), display toggles for calculation column, unit prices,
subtotals, cost per order, yearly total and disclaimer. Save as draft
(offer_conditions.forecast), download, or e-mail with record attachment and
activity. Client computes, server only renders.

Quote validity: "Gültig (Tage)" and "Gültig bis" pair in the quote modal, default
7 days from now. One server resolver (resolveQuoteValidity) drives the PDF, the
e-mail text, the activity, the saved conditions and the confirmation link expiry.
</comment><date>2026-09-18 12:15:19 +0200</date><id>08ca7d5f074a1d4399860ffe4859350839a41e06</id><msg>Offers: custom forecast modal (scenarios, editable positions, PDF/send) + editable quote validity</msg><path><editType>add</editType><file>app/composables/useOfferForecast.ts</file></path><path><editType>add</editType><file>server/api/offers/forecast/send.post.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>app/components/offers/ForecastModal.vue</file></path><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path><path><editType>edit</editType><file>server/utils/offers/quoteConfirmation.ts</file></path><path><editType>edit</editType><file>server/utils/offers/quotePdf.ts</file></path><path><editType>edit</editType><file>app/pages/users/leads/[id]/edit.vue</file></path><path><editType>add</editType><file>server/api/offers/forecast/preview.post.ts</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>add</editType><file>server/utils/offers/forecastPdf.ts</file></path><path><editType>edit</editType><file>server/api/offers/conditions/index.post.ts</file></path><path><editType>edit</editType><file>server/utils/offers/offerConditions.ts</file></path><path><editType>edit</editType><file>app/pages/partners/partners/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/offers/quote/send.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/booking.get.ts</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>7c40ce743ed6563a2b58c00f358be5d811025e38</commitId><timestamp>1789729923000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: document details, paid vs created status, Lexoffice reset, pinned actions

- "Beleg in" column (org · vendor) + details dialog per created AP invoice
  (new booking.get.ts: header, payment/Lexoffice state, lines with charge + tax)
- status no longer says "Verbucht" for a merely created document: "Beleg erstellt
  · Zahlung offen" until iDempiere has the invoice allocated to a payment
  (IsPaid) → "Bezahlt"; separate counters
- Lexoffice reset for selected rows and from the details dialog (shared
  /api/invoices/lexoffice-reset), with a confirm that the voucher in Lexoffice
  is not deleted
- actions column pinned right, status/document columns moved left, API notice
  collapsed by default, PDF icon fixed (ti-pdf)
</comment><date>2026-09-18 13:12:03 +0200</date><id>7c40ce743ed6563a2b58c00f358be5d811025e38</id><msg>Amazon invoices: document details, paid vs created status, Lexoffice reset, pinned actions</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>add</editType><file>server/api/accounting/amazon-ads/booking.get.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/invoices/so.get.ts</affectedPath><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><affectedPath>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</affectedPath><affectedPath>app/pages/sales/invoices/index.vue</affectedPath><affectedPath>server/api/accounting/opos/index.get.ts</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/types.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>8aac736389fbef7e2d88535f9f39bc7b296c4eb9</commitId><timestamp>1789731297000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: recognise fee credit notes and book them as AP CreditMemo

- parser: "STEUERGUTSCHRIFT" template (Gutschriftennummer, Ausstellungsdatum /
  Zeitraum der Gutschrift), amounts with the sign before the currency
  ("-EUR 2.61"), "Ursprüngliche Rechnungsnummer" → originalInvoiceNo
- import: credit notes become a vendor credit memo — doctype DocBaseType APC
  (AP CreditMemo) with positive amounts, reference to the original invoice in
  the description; no longer refused
- OPOS + /sales/invoices: doctype 1000006 counts as customer-side only when the
  partner is flagged IsCustomer, so genuine vendor credit memos stay on the
  payables side (existing customer credit notes unchanged)
</comment><date>2026-09-18 13:34:57 +0200</date><id>8aac736389fbef7e2d88535f9f39bc7b296c4eb9</id><msg>Amazon invoices: recognise fee credit notes and book them as AP CreditMemo</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/invoices/so.get.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/types.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path><path><editType>edit</editType><file>app/pages/sales/invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/opos/index.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/AgGrid/AgCopyEmail.vue</affectedPath><affectedPath>app/components/AgGrid/AgDialPhone.vue</affectedPath><affectedPath>app/pages/users/leads/index.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>9779bba8ea83bac8745a1d1a8386e89c2a9a1135</commitId><timestamp>1789731297000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Leads list: dial icon aligned to the right edge, copy button on the e-mail column

- AgDialPhone: number stays left, only the dial button is pushed to the right
  (shared renderer — also applies to the users / external users lists)
- new AgCopyEmail cell renderer: copy-to-clipboard button with check-mark
  feedback, does not start the inline editor
</comment><date>2026-09-18 13:34:57 +0200</date><id>9779bba8ea83bac8745a1d1a8386e89c2a9a1135</id><msg>Leads list: dial icon aligned to the right edge, copy button on the e-mail column</msg><path><editType>edit</editType><file>app/components/AgGrid/AgDialPhone.vue</file></path><path><editType>edit</editType><file>app/pages/users/leads/index.vue</file></path><path><editType>add</editType><file>app/components/AgGrid/AgCopyEmail.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/dashboard/RecentCallsCard.vue</affectedPath><affectedPath>app/components/telephony/BlacklistControl.vue</affectedPath><affectedPath>server/api/telephony/blacklist.post.ts</affectedPath><affectedPath>server/api/telephony/blacklist.get.ts</affectedPath><affectedPath>app/components/DialButton.vue</affectedPath><affectedPath>server/utils/telephony/blacklist.ts</affectedPath><affectedPath>server/api/telephony/blacklist.delete.ts</affectedPath><commitId>c8fb1add4aec93b10d32265652cff746fddd349b</commitId><timestamp>1789732626000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Recent calls card: blacklist control moved into the number popover, with live status and unblock

- no per-row block button any more (it cost a column of width); clicking the
  number opens the popover, which now shows the FreePBX blacklist status and
  either "Nummer sperren" (two-step confirm) or "gesperrt · Entsperren"
- new TelephonyBlacklistControl, used inside the dial popover (DialButton
  show-blacklist) and in the card's own popover for sessions that cannot dial
- server: blacklist status read via AMI DBGet (one session for the ≤ 10 numbers
  of a page), unblock via DBDel; GET + DELETE /api/telephony/blacklist. An
  unexpected AMI error is "status unknown", never a false "not blocked"
- blocked numbers are marked red with a ban icon in the list
</comment><date>2026-09-18 13:57:06 +0200</date><id>c8fb1add4aec93b10d32265652cff746fddd349b</id><msg>Recent calls card: blacklist control moved into the number popover, with live status and unblock</msg><path><editType>add</editType><file>app/components/telephony/BlacklistControl.vue</file></path><path><editType>add</editType><file>server/api/telephony/blacklist.delete.ts</file></path><path><editType>edit</editType><file>app/components/dashboard/RecentCallsCard.vue</file></path><path><editType>edit</editType><file>server/api/telephony/blacklist.post.ts</file></path><path><editType>edit</editType><file>server/utils/telephony/blacklist.ts</file></path><path><editType>add</editType><file>server/api/telephony/blacklist.get.ts</file></path><path><editType>edit</editType><file>app/components/DialButton.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>b2d24d604b14700496f0d0ebc1f53dd8a3358015</commitId><timestamp>1789732626000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: recognise the 2025 fee-invoice template, label the charge boxes as import settings

- parser: 2025 labels (Rechnungsnr, Name des Anbieters / Verkaeufers, Adresse /
  UStID des Anbieters) plus a label-independent fallback for supplier name and
  VAT id, so the next rename by Amazon does not break recognition
- page: the two charge selectors are grouped as "Import-Einstellung · Kostenart
  für neue Belege (kein Filter)" with an explanatory tooltip
</comment><date>2026-09-18 13:57:06 +0200</date><id>b2d24d604b14700496f0d0ebc1f53dd8a3358015</id><msg>Amazon invoices: recognise the 2025 fee-invoice template, label the charge boxes as import settings</msg><path><editType>edit</editType><file>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>7b3ffcb02f1a492cae8e96636728f270a769594e</commitId><timestamp>1789733700000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: quick filters, optional date range, collapsed import settings, square upload box

- quick-filter chips with counts: Typ (Ads / Gebühren / Gutschriften), Beleg
  (ohne / erstellt / bezahlt), Lexoffice (noch nicht hochgeladen / hochgeladen);
  totals follow the filter ("1 von 3")
- no date filter by default; the optional invoice-date range sits behind a quiet
  "Zeitraum" button, reloads on change, and an upload widens it so new invoices
  are never hidden. The Ads API call keeps a bounded 12-month window server-side
- the two cost-type selectors are collapsed behind "Import-Einstellungen" with a
  one-line summary and an info box (what they do, why two, not a filter, when to
  change); the panel opens by itself when a cost type is missing
- upload area is a square drop box on the right with drag feedback and keyboard
  support
</comment><date>2026-09-18 14:15:00 +0200</date><id>7b3ffcb02f1a492cae8e96636728f270a769594e</id><msg>Amazon invoices: quick filters, optional date range, collapsed import settings, square upload box</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/booking.get.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>786df63b6cc3a86132f1f9a056fec00574c6943a</commitId><timestamp>1789734174000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: show voided documents properly, match them by POReference

- a voided invoice row names its Storno document ("Storniert #&lt;id&gt; · erneut
  importierbar"), opens its details (banner + link to iDempiere's reversal
  document, no Lexoffice reset), has its own row tint, a "Storno-Beleg" action,
  a "Storniert" quick-filter chip and a counter; it no longer counts as
  "Ohne Beleg (neu)"
- list route: documents are matched to the Amazon invoice by POReference (full
  number) instead of DocumentNo — the void rename '&lt;no&gt;-VOID-&lt;id&gt;' is truncated
  to the 30-char column ('DE-AEU-2025-2978769' → 'DE-AEU-2025-29787-VOID-…'),
  so a voided document was not recognised; reversal documents are flagged and
  listed after the original
</comment><date>2026-09-18 14:22:54 +0200</date><id>786df63b6cc3a86132f1f9a056fec00574c6943a</id><msg>Amazon invoices: show voided documents properly, match them by POReference</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/booking.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/document.get.ts</affectedPath><affectedPath>reference/ci/deploy-production.sh</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>bcd4de9387b784591e675d94d2d83cd354b63cb6</commitId><timestamp>1789737288000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: iDempiere is the source of truth for booked invoices, PDFs from the document attachment

The page's list lived only in data/amazon-ads.db, which was missing from the
deploy script's preserve list — every deploy wiped it, so booked invoices
vanished from the page (the documents themselves were never affected).

- list route: every Amazon invoice that HAS a document is rebuilt from iDempiere
  (AP documents of the Amazon vendors, found by vendor flag + name; key =
  POReference; kind from the vendor, credit note from the doctype, period from
  the description). The local store only adds uploads that are not imported yet
  plus parsed details / PDF cache
- document route: without a local copy the ORIGINAL PDF attached to the
  iDempiere document is served (&amp;cInvoiceId=); the page passes the document id
- rows rebuilt from iDempiere are labelled (Quelle "iDempiere", PDF "Anhang");
  a voided one asks for the PDF to be uploaded again before re-import
- deploy script: amazon-ads.db + data/amazon-ads/ added to the preserve lists
  (must be pasted into the Jenkins job to take effect)
</comment><date>2026-09-18 15:14:48 +0200</date><id>bcd4de9387b784591e675d94d2d83cd354b63cb6</id><msg>Amazon invoices: iDempiere is the source of truth for booked invoices, PDFs from the document attachment</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/document.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>reference/ci/deploy-production.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/upload.post.ts</affectedPath><affectedPath>server/utils/amazonAds/invoiceStore.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/status.get.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/document.get.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/import.post.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/void.post.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>bcd159169e2557be05d88bbad7d54b88e7c038cf</commitId><timestamp>1789741744000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: store uploads in the iDempiere table CUST_AmazonInvoiceInbox (PDF in Strapi)

- new invoiceStore.ts: one async storage API with two backends — the iDempiere
  table (row via REST, PDF attached in Strapi) and, only as a fallback when the
  table is not reachable, the old SQLite file
- upload / list / import / void / document routes use it; the upload route reads
  the multipart body once and retries with a refreshed token
- rows still in the SQLite file are moved over when the page loads (bounded,
  idempotent, fail-soft; imported rows keep their PDF on the c_invoice document,
  pending rows get their PDF uploaded to Strapi). A run where nothing can be
  written pauses for 10 minutes instead of retrying on every load, and rows that
  are not in the table yet stay visible and importable from the local file
- status/list responses report the active backend
</comment><date>2026-09-18 16:29:04 +0200</date><id>bcd159169e2557be05d88bbad7d54b88e7c038cf</id><msg>Amazon invoices: store uploads in the iDempiere table CUST_AmazonInvoiceInbox (PDF in Strapi)</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/status.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/import.post.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/void.post.ts</file></path><path><editType>add</editType><file>server/utils/amazonAds/invoiceStore.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/upload.post.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/document.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>f5a4b95955cba38382c3ac8c7cc1ffae1e2654e7</commitId><timestamp>1789742168000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: keep inbox rows consistent with iDempiere's documents (self-heal)

On each list load an inbox row whose document exists but is not linked (imported
on another host / before the table existed) gets status 'imported' + the link;
a row that still points to a voided or missing document is released. Bounded,
fail-soft, idempotent — the page itself reads the documents and never depends on it.
</comment><date>2026-09-18 16:36:08 +0200</date><id>f5a4b95955cba38382c3ac8c7cc1ffae1e2654e7</id><msg>Amazon invoices: keep inbox rows consistent with iDempiere's documents (self-heal)</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/accounting/BankLineMatchModal.vue</affectedPath><affectedPath>server/utils/bankReconciliationSuggestions.ts</affectedPath><affectedPath>app/components/accounting/banking/BankReconcilePanel.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>d6003a7b7ccaba8faa27e1d466fff5d221e8dd67</commitId><timestamp>1789742659000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Bank reconciliation: suggestions need at least 2 matching criteria, fuzzy names, date signal, score ranking

- a candidate is only suggested when at least 2 of 4 criteria match: document
  number, amount, partner (IBAN or name count as one) and date. On the current
  33 open statements all 47 old invoice suggestions rested on a single signal
- new date signal: statement line date −5 … +60 days around the invoice date
- fuzzy partner names: umlauts spelled out, accents stripped, legal forms and
  filler words ignored, prefix matches, brand word, brand inside run-together
  text or the remittance text ("AMAZON PAYMENTS EUROPE S.C.A." matches "Amazon EU
  S.à r.l., Niederlassung Deutschland"; "Deutsche Bank" does not match
  "Deutsche Post")
- ranking by score, best first (doc no. 50 · amount 30 · IBAN 25 / name 10–25 ·
  date closeness 0–15); up to 8 candidates per line
- match dialog: top 3 + "weitere anzeigen", date chip, n/4 criteria, best-match
  marker, top candidate preselected; list pill shows "+n" and a criteria tooltip
</comment><date>2026-09-18 16:44:19 +0200</date><id>d6003a7b7ccaba8faa27e1d466fff5d221e8dd67</id><msg>Bank reconciliation: suggestions need at least 2 matching criteria, fuzzy names, date signal, score ranking</msg><path><editType>edit</editType><file>app/components/accounting/BankLineMatchModal.vue</file></path><path><editType>edit</editType><file>server/utils/bankReconciliationSuggestions.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankReconcilePanel.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>6e71fb22714beae7d74a7a44353b11faad234015</commitId><timestamp>1789743036000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: report the PDF as available when it sits on the iDempiere document

Rows migrated from the local file (and rows rebuilt from documents) carry no file
of their own — their original PDF is the document's attachment. The list flagged
them as "no PDF" although the link works; they now show "Anhang".
</comment><date>2026-09-18 16:50:36 +0200</date><id>6e71fb22714beae7d74a7a44353b11faad234015</id><msg>Amazon invoices: report the PDF as available when it sits on the iDempiere document</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/import.post.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>87678796cc3032e2763f178f8e4731c10c6ed9b2</commitId><timestamp>1789744764000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: confirm every import with the cost type shown, no remembered cost types

12 fee invoices were booked to "Werbekosten": the page remembered the last
selection of each cost-type box in the browser and a stale value silently
overrode the correct default.

- cost types are no longer stored in the browser (old keys are removed); every
  page load starts from the server defaults (Ads → Werbekosten, fees/credit notes
  → Amazon Gebühren); a deviation is flagged (amber summary, reset to default)
- every import goes through a confirmation dialog that groups the invoices by
  type, shows the cost type each group will be booked to (changeable there, the
  default is marked, a deviation is highlighted) and lists already booked ones as
  skipped. It opens on "Ausgewählte importieren" and right after an upload
  ("jetzt importieren" / "Später")
- the import result names the cost type that was used per invoice
</comment><date>2026-09-18 17:19:24 +0200</date><id>87678796cc3032e2763f178f8e4731c10c6ed9b2</id><msg>Amazon invoices: confirm every import with the cost type shown, no remembered cost types</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/import.post.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>267e7becbfac41d14dbd209d510b958cf7628124</commitId><timestamp>1789745316000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: match documents by the full number in the description (POReference is 20 chars)

The first credit-memo import showed that POReference cannot carry the key: the
column is 20 chars, so 'DE-CN-AEU-2026-134720' (21) is stored as
'DE-CN-AEU-2026-13472' — the new AP CreditMemo was not recognised as the credit
note's document and the self-heal released its inbox row ('voided').

The importer's description starts with the FULL Amazon number on every document
(active, voided rename, iDempiere's reversal), so that is the primary match key
now; DocumentNo / POReference remain the fallback for documents not created by
the importer. No double booking was possible — the importer's duplicate guard
checks the full DocumentNo.
</comment><date>2026-09-18 17:28:36 +0200</date><id>267e7becbfac41d14dbd209d510b958cf7628124</id><msg>Amazon invoices: match documents by the full number in the description (POReference is 20 chars)</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><commitId>cc0ff592b5ae3cc181da2058102242fd926336b5</commitId><timestamp>1789745741000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: book the exact VAT from the PDF when a line-level purchase tax exists

Amazon rounds the VAT down (74,66 × 19 % → 14,18), iDempiere half-up (14,19); with
the document-level "19% Mwst." the VAT is recomputed at completion, so 3 of 15
documents ended up one cent above the Amazon total.

iDempiere keeps a manually entered line TaxAmt on purchase documents whose tax
rate is NOT document level. The importer now prefers such a rate (purchase,
IsDocumentLevel = N) and writes the VAT from the PDF on each line (per-line VAT
for fee invoices, proportional for Ads campaigns, remainder on the largest line).
Without such a rate nothing changes — except that a difference between the booked
total and the Amazon document is now reported as a warning instead of going unnoticed.
</comment><date>2026-09-18 17:35:41 +0200</date><id>cc0ff592b5ae3cc181da2058102242fd926336b5</id><msg>Amazon invoices: book the exact VAT from the PDF when a line-level purchase tax exists</msg><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></lastCompletedBuild><lastFailedBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#611</displayName><duration>200</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #611</fullDisplayName><id>611</id><inProgress>false</inProgress><keepLog>false</keepLog><number>611</number><queueId>5105</queueId><result>FAILURE</result><timestamp>1778544000931</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/611/</url><builtOn></builtOn><changeSet _class='hudson.scm.EmptyChangeLogSet'></changeSet></lastFailedBuild><lastStableBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>741</buildNumber><marked><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><branch><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><branch><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><branch><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#741</displayName><duration>70605</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #741</fullDisplayName><id>741</id><inProgress>false</inProgress><keepLog>false</keepLog><number>741</number><queueId>5746</queueId><result>SUCCESS</result><timestamp>1789776000766</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/741/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><affectedPath>server/utils/amazonAds/parseInvoicePdf.ts</affectedPath><affectedPath>server/utils/amazonAds/adsApi.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/import.post.ts</affectedPath><affectedPath>reference/test-scripts/amazon-fee-parse.mjs</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/types.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/upload.post.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/status.get.ts</affectedPath><affectedPath>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>9e5d44b9cb79373965ffd173001cf1268e6d3889</commitId><timestamp>1789723068000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: book seller fee invoices (Tax Document Library PDFs) next to Ads invoices

Amazon offers no API for the seller fee invoices in Europe (the SP-API Invoices
API is Brazil-only, no report type covers them), so the PDFs downloaded from
Seller Central are dropped on the existing Amazon invoices page.

- parseSellerFeeInvoicePdf.ts: text-layer parser (kind 'fee'), one line per fee
  type with its own VAT rate; runs before the Ads parser in the upload route
- vendor resolved by the issuer's VAT id, created under org * on first import
- own charge (AMAZON_FEE_CHARGE_ID, default 1000009 "Amazon Gebühren"), tax per
  line rate; credit notes are listed but not importable yet
- list route checks bookings across the Ads vendor and all fee vendors
- page: Type / Aussteller / Empfänger columns, second charge selector
</comment><date>2026-09-18 11:17:48 +0200</date><id>9e5d44b9cb79373965ffd173001cf1268e6d3889</id><msg>Amazon invoices: book seller fee invoices (Tax Document Library PDFs) next to Ads invoices</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/import.post.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/upload.post.ts</file></path><path><editType>add</editType><file>reference/test-scripts/amazon-fee-parse.mjs</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/status.get.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/types.ts</file></path><path><editType>add</editType><file>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/utils/amazonAds/parseInvoicePdf.ts</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/adsApi.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/offers/conditions/index.post.ts</affectedPath><affectedPath>server/utils/offers/quotePdf.ts</affectedPath><affectedPath>app/pages/partners/partners/[id]/edit.vue</affectedPath><affectedPath>server/utils/offers/quoteConfirmation.ts</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>app/components/offers/ForecastModal.vue</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><affectedPath>server/utils/offers/forecastPdf.ts</affectedPath><affectedPath>server/api/offers/forecast/preview.post.ts</affectedPath><affectedPath>server/utils/offers/offerConditions.ts</affectedPath><affectedPath>app/pages/users/leads/[id]/edit.vue</affectedPath><affectedPath>server/api/offers/quote/send.post.ts</affectedPath><affectedPath>server/api/offers/forecast/send.post.ts</affectedPath><affectedPath>app/composables/useOfferForecast.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>08ca7d5f074a1d4399860ffe4859350839a41e06</commitId><timestamp>1789726519000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Offers: custom forecast modal (scenarios, editable positions, PDF/send) + editable quote validity

Custom forecast ("Individuelle Prognose"): standalone cost forecast for leads and
partners, opened from a new "Prognose" button on both pages and from the quote
modal's forecast card (seeded from the live quote form). Seeds from the saved
custom forecast, else the saved quote conditions, else list prices. Every
position can be switched off, relabelled and re-priced (per order with factor or
% share, or per month), own positions added, up to 4 volume scenarios side by
side (3+ print landscape), display toggles for calculation column, unit prices,
subtotals, cost per order, yearly total and disclaimer. Save as draft
(offer_conditions.forecast), download, or e-mail with record attachment and
activity. Client computes, server only renders.

Quote validity: "Gültig (Tage)" and "Gültig bis" pair in the quote modal, default
7 days from now. One server resolver (resolveQuoteValidity) drives the PDF, the
e-mail text, the activity, the saved conditions and the confirmation link expiry.
</comment><date>2026-09-18 12:15:19 +0200</date><id>08ca7d5f074a1d4399860ffe4859350839a41e06</id><msg>Offers: custom forecast modal (scenarios, editable positions, PDF/send) + editable quote validity</msg><path><editType>add</editType><file>app/composables/useOfferForecast.ts</file></path><path><editType>add</editType><file>server/api/offers/forecast/send.post.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>app/components/offers/ForecastModal.vue</file></path><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path><path><editType>edit</editType><file>server/utils/offers/quoteConfirmation.ts</file></path><path><editType>edit</editType><file>server/utils/offers/quotePdf.ts</file></path><path><editType>edit</editType><file>app/pages/users/leads/[id]/edit.vue</file></path><path><editType>add</editType><file>server/api/offers/forecast/preview.post.ts</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>add</editType><file>server/utils/offers/forecastPdf.ts</file></path><path><editType>edit</editType><file>server/api/offers/conditions/index.post.ts</file></path><path><editType>edit</editType><file>server/utils/offers/offerConditions.ts</file></path><path><editType>edit</editType><file>app/pages/partners/partners/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/offers/quote/send.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/booking.get.ts</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>7c40ce743ed6563a2b58c00f358be5d811025e38</commitId><timestamp>1789729923000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: document details, paid vs created status, Lexoffice reset, pinned actions

- "Beleg in" column (org · vendor) + details dialog per created AP invoice
  (new booking.get.ts: header, payment/Lexoffice state, lines with charge + tax)
- status no longer says "Verbucht" for a merely created document: "Beleg erstellt
  · Zahlung offen" until iDempiere has the invoice allocated to a payment
  (IsPaid) → "Bezahlt"; separate counters
- Lexoffice reset for selected rows and from the details dialog (shared
  /api/invoices/lexoffice-reset), with a confirm that the voucher in Lexoffice
  is not deleted
- actions column pinned right, status/document columns moved left, API notice
  collapsed by default, PDF icon fixed (ti-pdf)
</comment><date>2026-09-18 13:12:03 +0200</date><id>7c40ce743ed6563a2b58c00f358be5d811025e38</id><msg>Amazon invoices: document details, paid vs created status, Lexoffice reset, pinned actions</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>add</editType><file>server/api/accounting/amazon-ads/booking.get.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/invoices/so.get.ts</affectedPath><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><affectedPath>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</affectedPath><affectedPath>app/pages/sales/invoices/index.vue</affectedPath><affectedPath>server/api/accounting/opos/index.get.ts</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/types.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>8aac736389fbef7e2d88535f9f39bc7b296c4eb9</commitId><timestamp>1789731297000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: recognise fee credit notes and book them as AP CreditMemo

- parser: "STEUERGUTSCHRIFT" template (Gutschriftennummer, Ausstellungsdatum /
  Zeitraum der Gutschrift), amounts with the sign before the currency
  ("-EUR 2.61"), "Ursprüngliche Rechnungsnummer" → originalInvoiceNo
- import: credit notes become a vendor credit memo — doctype DocBaseType APC
  (AP CreditMemo) with positive amounts, reference to the original invoice in
  the description; no longer refused
- OPOS + /sales/invoices: doctype 1000006 counts as customer-side only when the
  partner is flagged IsCustomer, so genuine vendor credit memos stay on the
  payables side (existing customer credit notes unchanged)
</comment><date>2026-09-18 13:34:57 +0200</date><id>8aac736389fbef7e2d88535f9f39bc7b296c4eb9</id><msg>Amazon invoices: recognise fee credit notes and book them as AP CreditMemo</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/invoices/so.get.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/types.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path><path><editType>edit</editType><file>app/pages/sales/invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/opos/index.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/AgGrid/AgCopyEmail.vue</affectedPath><affectedPath>app/components/AgGrid/AgDialPhone.vue</affectedPath><affectedPath>app/pages/users/leads/index.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>9779bba8ea83bac8745a1d1a8386e89c2a9a1135</commitId><timestamp>1789731297000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Leads list: dial icon aligned to the right edge, copy button on the e-mail column

- AgDialPhone: number stays left, only the dial button is pushed to the right
  (shared renderer — also applies to the users / external users lists)
- new AgCopyEmail cell renderer: copy-to-clipboard button with check-mark
  feedback, does not start the inline editor
</comment><date>2026-09-18 13:34:57 +0200</date><id>9779bba8ea83bac8745a1d1a8386e89c2a9a1135</id><msg>Leads list: dial icon aligned to the right edge, copy button on the e-mail column</msg><path><editType>edit</editType><file>app/components/AgGrid/AgDialPhone.vue</file></path><path><editType>edit</editType><file>app/pages/users/leads/index.vue</file></path><path><editType>add</editType><file>app/components/AgGrid/AgCopyEmail.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/dashboard/RecentCallsCard.vue</affectedPath><affectedPath>app/components/telephony/BlacklistControl.vue</affectedPath><affectedPath>server/api/telephony/blacklist.post.ts</affectedPath><affectedPath>server/api/telephony/blacklist.get.ts</affectedPath><affectedPath>app/components/DialButton.vue</affectedPath><affectedPath>server/utils/telephony/blacklist.ts</affectedPath><affectedPath>server/api/telephony/blacklist.delete.ts</affectedPath><commitId>c8fb1add4aec93b10d32265652cff746fddd349b</commitId><timestamp>1789732626000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Recent calls card: blacklist control moved into the number popover, with live status and unblock

- no per-row block button any more (it cost a column of width); clicking the
  number opens the popover, which now shows the FreePBX blacklist status and
  either "Nummer sperren" (two-step confirm) or "gesperrt · Entsperren"
- new TelephonyBlacklistControl, used inside the dial popover (DialButton
  show-blacklist) and in the card's own popover for sessions that cannot dial
- server: blacklist status read via AMI DBGet (one session for the ≤ 10 numbers
  of a page), unblock via DBDel; GET + DELETE /api/telephony/blacklist. An
  unexpected AMI error is "status unknown", never a false "not blocked"
- blocked numbers are marked red with a ban icon in the list
</comment><date>2026-09-18 13:57:06 +0200</date><id>c8fb1add4aec93b10d32265652cff746fddd349b</id><msg>Recent calls card: blacklist control moved into the number popover, with live status and unblock</msg><path><editType>add</editType><file>app/components/telephony/BlacklistControl.vue</file></path><path><editType>add</editType><file>server/api/telephony/blacklist.delete.ts</file></path><path><editType>edit</editType><file>app/components/dashboard/RecentCallsCard.vue</file></path><path><editType>edit</editType><file>server/api/telephony/blacklist.post.ts</file></path><path><editType>edit</editType><file>server/utils/telephony/blacklist.ts</file></path><path><editType>add</editType><file>server/api/telephony/blacklist.get.ts</file></path><path><editType>edit</editType><file>app/components/DialButton.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>b2d24d604b14700496f0d0ebc1f53dd8a3358015</commitId><timestamp>1789732626000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: recognise the 2025 fee-invoice template, label the charge boxes as import settings

- parser: 2025 labels (Rechnungsnr, Name des Anbieters / Verkaeufers, Adresse /
  UStID des Anbieters) plus a label-independent fallback for supplier name and
  VAT id, so the next rename by Amazon does not break recognition
- page: the two charge selectors are grouped as "Import-Einstellung · Kostenart
  für neue Belege (kein Filter)" with an explanatory tooltip
</comment><date>2026-09-18 13:57:06 +0200</date><id>b2d24d604b14700496f0d0ebc1f53dd8a3358015</id><msg>Amazon invoices: recognise the 2025 fee-invoice template, label the charge boxes as import settings</msg><path><editType>edit</editType><file>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>7b3ffcb02f1a492cae8e96636728f270a769594e</commitId><timestamp>1789733700000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: quick filters, optional date range, collapsed import settings, square upload box

- quick-filter chips with counts: Typ (Ads / Gebühren / Gutschriften), Beleg
  (ohne / erstellt / bezahlt), Lexoffice (noch nicht hochgeladen / hochgeladen);
  totals follow the filter ("1 von 3")
- no date filter by default; the optional invoice-date range sits behind a quiet
  "Zeitraum" button, reloads on change, and an upload widens it so new invoices
  are never hidden. The Ads API call keeps a bounded 12-month window server-side
- the two cost-type selectors are collapsed behind "Import-Einstellungen" with a
  one-line summary and an info box (what they do, why two, not a filter, when to
  change); the panel opens by itself when a cost type is missing
- upload area is a square drop box on the right with drag feedback and keyboard
  support
</comment><date>2026-09-18 14:15:00 +0200</date><id>7b3ffcb02f1a492cae8e96636728f270a769594e</id><msg>Amazon invoices: quick filters, optional date range, collapsed import settings, square upload box</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/booking.get.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>786df63b6cc3a86132f1f9a056fec00574c6943a</commitId><timestamp>1789734174000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: show voided documents properly, match them by POReference

- a voided invoice row names its Storno document ("Storniert #&lt;id&gt; · erneut
  importierbar"), opens its details (banner + link to iDempiere's reversal
  document, no Lexoffice reset), has its own row tint, a "Storno-Beleg" action,
  a "Storniert" quick-filter chip and a counter; it no longer counts as
  "Ohne Beleg (neu)"
- list route: documents are matched to the Amazon invoice by POReference (full
  number) instead of DocumentNo — the void rename '&lt;no&gt;-VOID-&lt;id&gt;' is truncated
  to the 30-char column ('DE-AEU-2025-2978769' → 'DE-AEU-2025-29787-VOID-…'),
  so a voided document was not recognised; reversal documents are flagged and
  listed after the original
</comment><date>2026-09-18 14:22:54 +0200</date><id>786df63b6cc3a86132f1f9a056fec00574c6943a</id><msg>Amazon invoices: show voided documents properly, match them by POReference</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/booking.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/document.get.ts</affectedPath><affectedPath>reference/ci/deploy-production.sh</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>bcd4de9387b784591e675d94d2d83cd354b63cb6</commitId><timestamp>1789737288000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: iDempiere is the source of truth for booked invoices, PDFs from the document attachment

The page's list lived only in data/amazon-ads.db, which was missing from the
deploy script's preserve list — every deploy wiped it, so booked invoices
vanished from the page (the documents themselves were never affected).

- list route: every Amazon invoice that HAS a document is rebuilt from iDempiere
  (AP documents of the Amazon vendors, found by vendor flag + name; key =
  POReference; kind from the vendor, credit note from the doctype, period from
  the description). The local store only adds uploads that are not imported yet
  plus parsed details / PDF cache
- document route: without a local copy the ORIGINAL PDF attached to the
  iDempiere document is served (&amp;cInvoiceId=); the page passes the document id
- rows rebuilt from iDempiere are labelled (Quelle "iDempiere", PDF "Anhang");
  a voided one asks for the PDF to be uploaded again before re-import
- deploy script: amazon-ads.db + data/amazon-ads/ added to the preserve lists
  (must be pasted into the Jenkins job to take effect)
</comment><date>2026-09-18 15:14:48 +0200</date><id>bcd4de9387b784591e675d94d2d83cd354b63cb6</id><msg>Amazon invoices: iDempiere is the source of truth for booked invoices, PDFs from the document attachment</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/document.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>reference/ci/deploy-production.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/upload.post.ts</affectedPath><affectedPath>server/utils/amazonAds/invoiceStore.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/status.get.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/document.get.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/import.post.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/void.post.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>bcd159169e2557be05d88bbad7d54b88e7c038cf</commitId><timestamp>1789741744000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: store uploads in the iDempiere table CUST_AmazonInvoiceInbox (PDF in Strapi)

- new invoiceStore.ts: one async storage API with two backends — the iDempiere
  table (row via REST, PDF attached in Strapi) and, only as a fallback when the
  table is not reachable, the old SQLite file
- upload / list / import / void / document routes use it; the upload route reads
  the multipart body once and retries with a refreshed token
- rows still in the SQLite file are moved over when the page loads (bounded,
  idempotent, fail-soft; imported rows keep their PDF on the c_invoice document,
  pending rows get their PDF uploaded to Strapi). A run where nothing can be
  written pauses for 10 minutes instead of retrying on every load, and rows that
  are not in the table yet stay visible and importable from the local file
- status/list responses report the active backend
</comment><date>2026-09-18 16:29:04 +0200</date><id>bcd159169e2557be05d88bbad7d54b88e7c038cf</id><msg>Amazon invoices: store uploads in the iDempiere table CUST_AmazonInvoiceInbox (PDF in Strapi)</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/status.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/import.post.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/void.post.ts</file></path><path><editType>add</editType><file>server/utils/amazonAds/invoiceStore.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/upload.post.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/document.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>f5a4b95955cba38382c3ac8c7cc1ffae1e2654e7</commitId><timestamp>1789742168000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: keep inbox rows consistent with iDempiere's documents (self-heal)

On each list load an inbox row whose document exists but is not linked (imported
on another host / before the table existed) gets status 'imported' + the link;
a row that still points to a voided or missing document is released. Bounded,
fail-soft, idempotent — the page itself reads the documents and never depends on it.
</comment><date>2026-09-18 16:36:08 +0200</date><id>f5a4b95955cba38382c3ac8c7cc1ffae1e2654e7</id><msg>Amazon invoices: keep inbox rows consistent with iDempiere's documents (self-heal)</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/accounting/BankLineMatchModal.vue</affectedPath><affectedPath>server/utils/bankReconciliationSuggestions.ts</affectedPath><affectedPath>app/components/accounting/banking/BankReconcilePanel.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>d6003a7b7ccaba8faa27e1d466fff5d221e8dd67</commitId><timestamp>1789742659000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Bank reconciliation: suggestions need at least 2 matching criteria, fuzzy names, date signal, score ranking

- a candidate is only suggested when at least 2 of 4 criteria match: document
  number, amount, partner (IBAN or name count as one) and date. On the current
  33 open statements all 47 old invoice suggestions rested on a single signal
- new date signal: statement line date −5 … +60 days around the invoice date
- fuzzy partner names: umlauts spelled out, accents stripped, legal forms and
  filler words ignored, prefix matches, brand word, brand inside run-together
  text or the remittance text ("AMAZON PAYMENTS EUROPE S.C.A." matches "Amazon EU
  S.à r.l., Niederlassung Deutschland"; "Deutsche Bank" does not match
  "Deutsche Post")
- ranking by score, best first (doc no. 50 · amount 30 · IBAN 25 / name 10–25 ·
  date closeness 0–15); up to 8 candidates per line
- match dialog: top 3 + "weitere anzeigen", date chip, n/4 criteria, best-match
  marker, top candidate preselected; list pill shows "+n" and a criteria tooltip
</comment><date>2026-09-18 16:44:19 +0200</date><id>d6003a7b7ccaba8faa27e1d466fff5d221e8dd67</id><msg>Bank reconciliation: suggestions need at least 2 matching criteria, fuzzy names, date signal, score ranking</msg><path><editType>edit</editType><file>app/components/accounting/BankLineMatchModal.vue</file></path><path><editType>edit</editType><file>server/utils/bankReconciliationSuggestions.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankReconcilePanel.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>6e71fb22714beae7d74a7a44353b11faad234015</commitId><timestamp>1789743036000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: report the PDF as available when it sits on the iDempiere document

Rows migrated from the local file (and rows rebuilt from documents) carry no file
of their own — their original PDF is the document's attachment. The list flagged
them as "no PDF" although the link works; they now show "Anhang".
</comment><date>2026-09-18 16:50:36 +0200</date><id>6e71fb22714beae7d74a7a44353b11faad234015</id><msg>Amazon invoices: report the PDF as available when it sits on the iDempiere document</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/import.post.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>87678796cc3032e2763f178f8e4731c10c6ed9b2</commitId><timestamp>1789744764000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: confirm every import with the cost type shown, no remembered cost types

12 fee invoices were booked to "Werbekosten": the page remembered the last
selection of each cost-type box in the browser and a stale value silently
overrode the correct default.

- cost types are no longer stored in the browser (old keys are removed); every
  page load starts from the server defaults (Ads → Werbekosten, fees/credit notes
  → Amazon Gebühren); a deviation is flagged (amber summary, reset to default)
- every import goes through a confirmation dialog that groups the invoices by
  type, shows the cost type each group will be booked to (changeable there, the
  default is marked, a deviation is highlighted) and lists already booked ones as
  skipped. It opens on "Ausgewählte importieren" and right after an upload
  ("jetzt importieren" / "Später")
- the import result names the cost type that was used per invoice
</comment><date>2026-09-18 17:19:24 +0200</date><id>87678796cc3032e2763f178f8e4731c10c6ed9b2</id><msg>Amazon invoices: confirm every import with the cost type shown, no remembered cost types</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/import.post.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>267e7becbfac41d14dbd209d510b958cf7628124</commitId><timestamp>1789745316000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: match documents by the full number in the description (POReference is 20 chars)

The first credit-memo import showed that POReference cannot carry the key: the
column is 20 chars, so 'DE-CN-AEU-2026-134720' (21) is stored as
'DE-CN-AEU-2026-13472' — the new AP CreditMemo was not recognised as the credit
note's document and the self-heal released its inbox row ('voided').

The importer's description starts with the FULL Amazon number on every document
(active, voided rename, iDempiere's reversal), so that is the primary match key
now; DocumentNo / POReference remain the fallback for documents not created by
the importer. No double booking was possible — the importer's duplicate guard
checks the full DocumentNo.
</comment><date>2026-09-18 17:28:36 +0200</date><id>267e7becbfac41d14dbd209d510b958cf7628124</id><msg>Amazon invoices: match documents by the full number in the description (POReference is 20 chars)</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><commitId>cc0ff592b5ae3cc181da2058102242fd926336b5</commitId><timestamp>1789745741000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: book the exact VAT from the PDF when a line-level purchase tax exists

Amazon rounds the VAT down (74,66 × 19 % → 14,18), iDempiere half-up (14,19); with
the document-level "19% Mwst." the VAT is recomputed at completion, so 3 of 15
documents ended up one cent above the Amazon total.

iDempiere keeps a manually entered line TaxAmt on purchase documents whose tax
rate is NOT document level. The importer now prefers such a rate (purchase,
IsDocumentLevel = N) and writes the VAT from the PDF on each line (per-line VAT
for fee invoices, proportional for Ads campaigns, remainder on the largest line).
Without such a rate nothing changes — except that a difference between the booked
total and the Amazon document is now reported as a warning instead of going unnoticed.
</comment><date>2026-09-18 17:35:41 +0200</date><id>cc0ff592b5ae3cc181da2058102242fd926336b5</id><msg>Amazon invoices: book the exact VAT from the PDF when a line-level purchase tax exists</msg><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></lastStableBuild><lastSuccessfulBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindev _class='hudson.plugins.git.util.Build'><buildNumber>741</buildNumber><marked><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><branch><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><name>refs/remotes/origin/dev</name></branch></marked><revision><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><branch><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><name>refs/remotes/origin/dev</name></branch></revision></refsremotesorigindev></buildsByBranchName><lastBuiltRevision><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><branch><SHA1>cc0ff592b5ae3cc181da2058102242fd926336b5</SHA1><name>refs/remotes/origin/dev</name></branch></lastBuiltRevision><remoteUrl>https://github.com/younex1/erp-nuxt-frontend.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#741</displayName><duration>70605</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #741</fullDisplayName><id>741</id><inProgress>false</inProgress><keepLog>false</keepLog><number>741</number><queueId>5746</queueId><result>SUCCESS</result><timestamp>1789776000766</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/741/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><affectedPath>server/utils/amazonAds/parseInvoicePdf.ts</affectedPath><affectedPath>server/utils/amazonAds/adsApi.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/import.post.ts</affectedPath><affectedPath>reference/test-scripts/amazon-fee-parse.mjs</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/types.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>nuxt.config.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/upload.post.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/status.get.ts</affectedPath><affectedPath>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>9e5d44b9cb79373965ffd173001cf1268e6d3889</commitId><timestamp>1789723068000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: book seller fee invoices (Tax Document Library PDFs) next to Ads invoices

Amazon offers no API for the seller fee invoices in Europe (the SP-API Invoices
API is Brazil-only, no report type covers them), so the PDFs downloaded from
Seller Central are dropped on the existing Amazon invoices page.

- parseSellerFeeInvoicePdf.ts: text-layer parser (kind 'fee'), one line per fee
  type with its own VAT rate; runs before the Ads parser in the upload route
- vendor resolved by the issuer's VAT id, created under org * on first import
- own charge (AMAZON_FEE_CHARGE_ID, default 1000009 "Amazon Gebühren"), tax per
  line rate; credit notes are listed but not importable yet
- list route checks bookings across the Ads vendor and all fee vendors
- page: Type / Aussteller / Empfänger columns, second charge selector
</comment><date>2026-09-18 11:17:48 +0200</date><id>9e5d44b9cb79373965ffd173001cf1268e6d3889</id><msg>Amazon invoices: book seller fee invoices (Tax Document Library PDFs) next to Ads invoices</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/import.post.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/upload.post.ts</file></path><path><editType>add</editType><file>reference/test-scripts/amazon-fee-parse.mjs</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/status.get.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/types.ts</file></path><path><editType>add</editType><file>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/utils/amazonAds/parseInvoicePdf.ts</file></path><path><editType>edit</editType><file>nuxt.config.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/adsApi.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/offers/conditions/index.post.ts</affectedPath><affectedPath>server/utils/offers/quotePdf.ts</affectedPath><affectedPath>app/pages/partners/partners/[id]/edit.vue</affectedPath><affectedPath>server/utils/offers/quoteConfirmation.ts</affectedPath><affectedPath>app/components/offers/QuoteModal.vue</affectedPath><affectedPath>app/components/offers/ForecastModal.vue</affectedPath><affectedPath>app/composables/useOfferQuote.ts</affectedPath><affectedPath>server/utils/offers/forecastPdf.ts</affectedPath><affectedPath>server/api/offers/forecast/preview.post.ts</affectedPath><affectedPath>server/utils/offers/offerConditions.ts</affectedPath><affectedPath>app/pages/users/leads/[id]/edit.vue</affectedPath><affectedPath>server/api/offers/quote/send.post.ts</affectedPath><affectedPath>server/api/offers/forecast/send.post.ts</affectedPath><affectedPath>app/composables/useOfferForecast.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>08ca7d5f074a1d4399860ffe4859350839a41e06</commitId><timestamp>1789726519000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Offers: custom forecast modal (scenarios, editable positions, PDF/send) + editable quote validity

Custom forecast ("Individuelle Prognose"): standalone cost forecast for leads and
partners, opened from a new "Prognose" button on both pages and from the quote
modal's forecast card (seeded from the live quote form). Seeds from the saved
custom forecast, else the saved quote conditions, else list prices. Every
position can be switched off, relabelled and re-priced (per order with factor or
% share, or per month), own positions added, up to 4 volume scenarios side by
side (3+ print landscape), display toggles for calculation column, unit prices,
subtotals, cost per order, yearly total and disclaimer. Save as draft
(offer_conditions.forecast), download, or e-mail with record attachment and
activity. Client computes, server only renders.

Quote validity: "Gültig (Tage)" and "Gültig bis" pair in the quote modal, default
7 days from now. One server resolver (resolveQuoteValidity) drives the PDF, the
e-mail text, the activity, the saved conditions and the confirmation link expiry.
</comment><date>2026-09-18 12:15:19 +0200</date><id>08ca7d5f074a1d4399860ffe4859350839a41e06</id><msg>Offers: custom forecast modal (scenarios, editable positions, PDF/send) + editable quote validity</msg><path><editType>add</editType><file>app/composables/useOfferForecast.ts</file></path><path><editType>add</editType><file>server/api/offers/forecast/send.post.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>add</editType><file>app/components/offers/ForecastModal.vue</file></path><path><editType>edit</editType><file>app/composables/useOfferQuote.ts</file></path><path><editType>edit</editType><file>server/utils/offers/quoteConfirmation.ts</file></path><path><editType>edit</editType><file>server/utils/offers/quotePdf.ts</file></path><path><editType>edit</editType><file>app/pages/users/leads/[id]/edit.vue</file></path><path><editType>add</editType><file>server/api/offers/forecast/preview.post.ts</file></path><path><editType>edit</editType><file>app/components/offers/QuoteModal.vue</file></path><path><editType>add</editType><file>server/utils/offers/forecastPdf.ts</file></path><path><editType>edit</editType><file>server/api/offers/conditions/index.post.ts</file></path><path><editType>edit</editType><file>server/utils/offers/offerConditions.ts</file></path><path><editType>edit</editType><file>app/pages/partners/partners/[id]/edit.vue</file></path><path><editType>edit</editType><file>server/api/offers/quote/send.post.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/booking.get.ts</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>7c40ce743ed6563a2b58c00f358be5d811025e38</commitId><timestamp>1789729923000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: document details, paid vs created status, Lexoffice reset, pinned actions

- "Beleg in" column (org · vendor) + details dialog per created AP invoice
  (new booking.get.ts: header, payment/Lexoffice state, lines with charge + tax)
- status no longer says "Verbucht" for a merely created document: "Beleg erstellt
  · Zahlung offen" until iDempiere has the invoice allocated to a payment
  (IsPaid) → "Bezahlt"; separate counters
- Lexoffice reset for selected rows and from the details dialog (shared
  /api/invoices/lexoffice-reset), with a confirm that the voucher in Lexoffice
  is not deleted
- actions column pinned right, status/document columns moved left, API notice
  collapsed by default, PDF icon fixed (ti-pdf)
</comment><date>2026-09-18 13:12:03 +0200</date><id>7c40ce743ed6563a2b58c00f358be5d811025e38</id><msg>Amazon invoices: document details, paid vs created status, Lexoffice reset, pinned actions</msg><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>add</editType><file>server/api/accounting/amazon-ads/booking.get.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/invoices/so.get.ts</affectedPath><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><affectedPath>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</affectedPath><affectedPath>app/pages/sales/invoices/index.vue</affectedPath><affectedPath>server/api/accounting/opos/index.get.ts</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/types.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>8aac736389fbef7e2d88535f9f39bc7b296c4eb9</commitId><timestamp>1789731297000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: recognise fee credit notes and book them as AP CreditMemo

- parser: "STEUERGUTSCHRIFT" template (Gutschriftennummer, Ausstellungsdatum /
  Zeitraum der Gutschrift), amounts with the sign before the currency
  ("-EUR 2.61"), "Ursprüngliche Rechnungsnummer" → originalInvoiceNo
- import: credit notes become a vendor credit memo — doctype DocBaseType APC
  (AP CreditMemo) with positive amounts, reference to the original invoice in
  the description; no longer refused
- OPOS + /sales/invoices: doctype 1000006 counts as customer-side only when the
  partner is flagged IsCustomer, so genuine vendor credit memos stay on the
  payables side (existing customer credit notes unchanged)
</comment><date>2026-09-18 13:34:57 +0200</date><id>8aac736389fbef7e2d88535f9f39bc7b296c4eb9</id><msg>Amazon invoices: recognise fee credit notes and book them as AP CreditMemo</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/invoices/so.get.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/types.ts</file></path><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path><path><editType>edit</editType><file>app/pages/sales/invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/opos/index.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/AgGrid/AgCopyEmail.vue</affectedPath><affectedPath>app/components/AgGrid/AgDialPhone.vue</affectedPath><affectedPath>app/pages/users/leads/index.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>9779bba8ea83bac8745a1d1a8386e89c2a9a1135</commitId><timestamp>1789731297000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Leads list: dial icon aligned to the right edge, copy button on the e-mail column

- AgDialPhone: number stays left, only the dial button is pushed to the right
  (shared renderer — also applies to the users / external users lists)
- new AgCopyEmail cell renderer: copy-to-clipboard button with check-mark
  feedback, does not start the inline editor
</comment><date>2026-09-18 13:34:57 +0200</date><id>9779bba8ea83bac8745a1d1a8386e89c2a9a1135</id><msg>Leads list: dial icon aligned to the right edge, copy button on the e-mail column</msg><path><editType>edit</editType><file>app/components/AgGrid/AgDialPhone.vue</file></path><path><editType>edit</editType><file>app/pages/users/leads/index.vue</file></path><path><editType>add</editType><file>app/components/AgGrid/AgCopyEmail.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/dashboard/RecentCallsCard.vue</affectedPath><affectedPath>app/components/telephony/BlacklistControl.vue</affectedPath><affectedPath>server/api/telephony/blacklist.post.ts</affectedPath><affectedPath>server/api/telephony/blacklist.get.ts</affectedPath><affectedPath>app/components/DialButton.vue</affectedPath><affectedPath>server/utils/telephony/blacklist.ts</affectedPath><affectedPath>server/api/telephony/blacklist.delete.ts</affectedPath><commitId>c8fb1add4aec93b10d32265652cff746fddd349b</commitId><timestamp>1789732626000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Recent calls card: blacklist control moved into the number popover, with live status and unblock

- no per-row block button any more (it cost a column of width); clicking the
  number opens the popover, which now shows the FreePBX blacklist status and
  either "Nummer sperren" (two-step confirm) or "gesperrt · Entsperren"
- new TelephonyBlacklistControl, used inside the dial popover (DialButton
  show-blacklist) and in the card's own popover for sessions that cannot dial
- server: blacklist status read via AMI DBGet (one session for the ≤ 10 numbers
  of a page), unblock via DBDel; GET + DELETE /api/telephony/blacklist. An
  unexpected AMI error is "status unknown", never a false "not blocked"
- blocked numbers are marked red with a ban icon in the list
</comment><date>2026-09-18 13:57:06 +0200</date><id>c8fb1add4aec93b10d32265652cff746fddd349b</id><msg>Recent calls card: blacklist control moved into the number popover, with live status and unblock</msg><path><editType>add</editType><file>app/components/telephony/BlacklistControl.vue</file></path><path><editType>add</editType><file>server/api/telephony/blacklist.delete.ts</file></path><path><editType>edit</editType><file>app/components/dashboard/RecentCallsCard.vue</file></path><path><editType>edit</editType><file>server/api/telephony/blacklist.post.ts</file></path><path><editType>edit</editType><file>server/utils/telephony/blacklist.ts</file></path><path><editType>add</editType><file>server/api/telephony/blacklist.get.ts</file></path><path><editType>edit</editType><file>app/components/DialButton.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>b2d24d604b14700496f0d0ebc1f53dd8a3358015</commitId><timestamp>1789732626000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: recognise the 2025 fee-invoice template, label the charge boxes as import settings

- parser: 2025 labels (Rechnungsnr, Name des Anbieters / Verkaeufers, Adresse /
  UStID des Anbieters) plus a label-independent fallback for supplier name and
  VAT id, so the next rename by Amazon does not break recognition
- page: the two charge selectors are grouped as "Import-Einstellung · Kostenart
  für neue Belege (kein Filter)" with an explanatory tooltip
</comment><date>2026-09-18 13:57:06 +0200</date><id>b2d24d604b14700496f0d0ebc1f53dd8a3358015</id><msg>Amazon invoices: recognise the 2025 fee-invoice template, label the charge boxes as import settings</msg><path><editType>edit</editType><file>server/utils/amazonAds/parseSellerFeeInvoicePdf.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>7b3ffcb02f1a492cae8e96636728f270a769594e</commitId><timestamp>1789733700000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: quick filters, optional date range, collapsed import settings, square upload box

- quick-filter chips with counts: Typ (Ads / Gebühren / Gutschriften), Beleg
  (ohne / erstellt / bezahlt), Lexoffice (noch nicht hochgeladen / hochgeladen);
  totals follow the filter ("1 von 3")
- no date filter by default; the optional invoice-date range sits behind a quiet
  "Zeitraum" button, reloads on change, and an upload widens it so new invoices
  are never hidden. The Ads API call keeps a bounded 12-month window server-side
- the two cost-type selectors are collapsed behind "Import-Einstellungen" with a
  one-line summary and an info box (what they do, why two, not a filter, when to
  change); the panel opens by itself when a cost type is missing
- upload area is a square drop box on the right with drag feedback and keyboard
  support
</comment><date>2026-09-18 14:15:00 +0200</date><id>7b3ffcb02f1a492cae8e96636728f270a769594e</id><msg>Amazon invoices: quick filters, optional date range, collapsed import settings, square upload box</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/booking.get.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>786df63b6cc3a86132f1f9a056fec00574c6943a</commitId><timestamp>1789734174000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: show voided documents properly, match them by POReference

- a voided invoice row names its Storno document ("Storniert #&lt;id&gt; · erneut
  importierbar"), opens its details (banner + link to iDempiere's reversal
  document, no Lexoffice reset), has its own row tint, a "Storno-Beleg" action,
  a "Storniert" quick-filter chip and a counter; it no longer counts as
  "Ohne Beleg (neu)"
- list route: documents are matched to the Amazon invoice by POReference (full
  number) instead of DocumentNo — the void rename '&lt;no&gt;-VOID-&lt;id&gt;' is truncated
  to the 30-char column ('DE-AEU-2025-2978769' → 'DE-AEU-2025-29787-VOID-…'),
  so a voided document was not recognised; reversal documents are flagged and
  listed after the original
</comment><date>2026-09-18 14:22:54 +0200</date><id>786df63b6cc3a86132f1f9a056fec00574c6943a</id><msg>Amazon invoices: show voided documents properly, match them by POReference</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/booking.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/document.get.ts</affectedPath><affectedPath>reference/ci/deploy-production.sh</affectedPath><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>bcd4de9387b784591e675d94d2d83cd354b63cb6</commitId><timestamp>1789737288000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: iDempiere is the source of truth for booked invoices, PDFs from the document attachment

The page's list lived only in data/amazon-ads.db, which was missing from the
deploy script's preserve list — every deploy wiped it, so booked invoices
vanished from the page (the documents themselves were never affected).

- list route: every Amazon invoice that HAS a document is rebuilt from iDempiere
  (AP documents of the Amazon vendors, found by vendor flag + name; key =
  POReference; kind from the vendor, credit note from the doctype, period from
  the description). The local store only adds uploads that are not imported yet
  plus parsed details / PDF cache
- document route: without a local copy the ORIGINAL PDF attached to the
  iDempiere document is served (&amp;cInvoiceId=); the page passes the document id
- rows rebuilt from iDempiere are labelled (Quelle "iDempiere", PDF "Anhang");
  a voided one asks for the PDF to be uploaded again before re-import
- deploy script: amazon-ads.db + data/amazon-ads/ added to the preserve lists
  (must be pasted into the Jenkins job to take effect)
</comment><date>2026-09-18 15:14:48 +0200</date><id>bcd4de9387b784591e675d94d2d83cd354b63cb6</id><msg>Amazon invoices: iDempiere is the source of truth for booked invoices, PDFs from the document attachment</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/document.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>reference/ci/deploy-production.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/upload.post.ts</affectedPath><affectedPath>server/utils/amazonAds/invoiceStore.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/status.get.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/document.get.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/import.post.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/void.post.ts</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>bcd159169e2557be05d88bbad7d54b88e7c038cf</commitId><timestamp>1789741744000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: store uploads in the iDempiere table CUST_AmazonInvoiceInbox (PDF in Strapi)

- new invoiceStore.ts: one async storage API with two backends — the iDempiere
  table (row via REST, PDF attached in Strapi) and, only as a fallback when the
  table is not reachable, the old SQLite file
- upload / list / import / void / document routes use it; the upload route reads
  the multipart body once and retries with a refreshed token
- rows still in the SQLite file are moved over when the page loads (bounded,
  idempotent, fail-soft; imported rows keep their PDF on the c_invoice document,
  pending rows get their PDF uploaded to Strapi). A run where nothing can be
  written pauses for 10 minutes instead of retrying on every load, and rows that
  are not in the table yet stay visible and importable from the local file
- status/list responses report the active backend
</comment><date>2026-09-18 16:29:04 +0200</date><id>bcd159169e2557be05d88bbad7d54b88e7c038cf</id><msg>Amazon invoices: store uploads in the iDempiere table CUST_AmazonInvoiceInbox (PDF in Strapi)</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/status.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/import.post.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/void.post.ts</file></path><path><editType>add</editType><file>server/utils/amazonAds/invoiceStore.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/upload.post.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/document.get.ts</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>f5a4b95955cba38382c3ac8c7cc1ffae1e2654e7</commitId><timestamp>1789742168000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: keep inbox rows consistent with iDempiere's documents (self-heal)

On each list load an inbox row whose document exists but is not linked (imported
on another host / before the table existed) gets status 'imported' + the link;
a row that still points to a voided or missing document is released. Bounded,
fail-soft, idempotent — the page itself reads the documents and never depends on it.
</comment><date>2026-09-18 16:36:08 +0200</date><id>f5a4b95955cba38382c3ac8c7cc1ffae1e2654e7</id><msg>Amazon invoices: keep inbox rows consistent with iDempiere's documents (self-heal)</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/components/accounting/BankLineMatchModal.vue</affectedPath><affectedPath>server/utils/bankReconciliationSuggestions.ts</affectedPath><affectedPath>app/components/accounting/banking/BankReconcilePanel.vue</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>d6003a7b7ccaba8faa27e1d466fff5d221e8dd67</commitId><timestamp>1789742659000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Bank reconciliation: suggestions need at least 2 matching criteria, fuzzy names, date signal, score ranking

- a candidate is only suggested when at least 2 of 4 criteria match: document
  number, amount, partner (IBAN or name count as one) and date. On the current
  33 open statements all 47 old invoice suggestions rested on a single signal
- new date signal: statement line date −5 … +60 days around the invoice date
- fuzzy partner names: umlauts spelled out, accents stripped, legal forms and
  filler words ignored, prefix matches, brand word, brand inside run-together
  text or the remittance text ("AMAZON PAYMENTS EUROPE S.C.A." matches "Amazon EU
  S.à r.l., Niederlassung Deutschland"; "Deutsche Bank" does not match
  "Deutsche Post")
- ranking by score, best first (doc no. 50 · amount 30 · IBAN 25 / name 10–25 ·
  date closeness 0–15); up to 8 candidates per line
- match dialog: top 3 + "weitere anzeigen", date chip, n/4 criteria, best-match
  marker, top candidate preselected; list pill shows "+n" and a criteria tooltip
</comment><date>2026-09-18 16:44:19 +0200</date><id>d6003a7b7ccaba8faa27e1d466fff5d221e8dd67</id><msg>Bank reconciliation: suggestions need at least 2 matching criteria, fuzzy names, date signal, score ranking</msg><path><editType>edit</editType><file>app/components/accounting/BankLineMatchModal.vue</file></path><path><editType>edit</editType><file>server/utils/bankReconciliationSuggestions.ts</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path><path><editType>edit</editType><file>app/components/accounting/banking/BankReconcilePanel.vue</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>6e71fb22714beae7d74a7a44353b11faad234015</commitId><timestamp>1789743036000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: report the PDF as available when it sits on the iDempiere document

Rows migrated from the local file (and rows rebuilt from documents) carry no file
of their own — their original PDF is the document's attachment. The list flagged
them as "no PDF" although the link works; they now show "Anhang".
</comment><date>2026-09-18 16:50:36 +0200</date><id>6e71fb22714beae7d74a7a44353b11faad234015</id><msg>Amazon invoices: report the PDF as available when it sits on the iDempiere document</msg><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>app/pages/accounting/amazon-ads-invoices/index.vue</affectedPath><affectedPath>server/api/accounting/amazon-ads/import.post.ts</affectedPath><affectedPath>app/assets/langs/shared.js</affectedPath><commitId>87678796cc3032e2763f178f8e4731c10c6ed9b2</commitId><timestamp>1789744764000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: confirm every import with the cost type shown, no remembered cost types

12 fee invoices were booked to "Werbekosten": the page remembered the last
selection of each cost-type box in the browser and a stale value silently
overrode the correct default.

- cost types are no longer stored in the browser (old keys are removed); every
  page load starts from the server defaults (Ads → Werbekosten, fees/credit notes
  → Amazon Gebühren); a deviation is flagged (amber summary, reset to default)
- every import goes through a confirmation dialog that groups the invoices by
  type, shows the cost type each group will be booked to (changeable there, the
  default is marked, a deviation is highlighted) and lists already booked ones as
  skipped. It opens on "Ausgewählte importieren" and right after an upload
  ("jetzt importieren" / "Später")
- the import result names the cost type that was used per invoice
</comment><date>2026-09-18 17:19:24 +0200</date><id>87678796cc3032e2763f178f8e4731c10c6ed9b2</id><msg>Amazon invoices: confirm every import with the cost type shown, no remembered cost types</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/import.post.ts</file></path><path><editType>edit</editType><file>app/pages/accounting/amazon-ads-invoices/index.vue</file></path><path><editType>edit</editType><file>app/assets/langs/shared.js</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/api/accounting/amazon-ads/invoices.get.ts</affectedPath><commitId>267e7becbfac41d14dbd209d510b958cf7628124</commitId><timestamp>1789745316000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: match documents by the full number in the description (POReference is 20 chars)

The first credit-memo import showed that POReference cannot carry the key: the
column is 20 chars, so 'DE-CN-AEU-2026-134720' (21) is stored as
'DE-CN-AEU-2026-13472' — the new AP CreditMemo was not recognised as the credit
note's document and the self-heal released its inbox row ('voided').

The importer's description starts with the FULL Amazon number on every document
(active, voided rename, iDempiere's reversal), so that is the primary match key
now; DocumentNo / POReference remain the fallback for documents not created by
the importer. No double booking was possible — the importer's duplicate guard
checks the full DocumentNo.
</comment><date>2026-09-18 17:28:36 +0200</date><id>267e7becbfac41d14dbd209d510b958cf7628124</id><msg>Amazon invoices: match documents by the full number in the description (POReference is 20 chars)</msg><path><editType>edit</editType><file>server/api/accounting/amazon-ads/invoices.get.ts</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>server/utils/amazonAds/importInvoice.ts</affectedPath><commitId>cc0ff592b5ae3cc181da2058102242fd926336b5</commitId><timestamp>1789745741000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></author><authorEmail>info@younex.de</authorEmail><comment>Amazon invoices: book the exact VAT from the PDF when a line-level purchase tax exists

Amazon rounds the VAT down (74,66 × 19 % → 14,18), iDempiere half-up (14,19); with
the document-level "19% Mwst." the VAT is recomputed at completion, so 3 of 15
documents ended up one cent above the Amazon total.

iDempiere keeps a manually entered line TaxAmt on purchase documents whose tax
rate is NOT document level. The importer now prefers such a rate (purchase,
IsDocumentLevel = N) and writes the VAT from the PDF on each line (per-line VAT
for fee invoices, proportional for Ads campaigns, remainder on the largest line).
Without such a rate nothing changes — except that a difference between the booked
total and the Amazon document is now reported as a warning instead of going unnoticed.
</comment><date>2026-09-18 17:35:41 +0200</date><id>cc0ff592b5ae3cc181da2058102242fd926336b5</id><msg>Amazon invoices: book the exact VAT from the PDF when a line-level purchase tax exists</msg><path><editType>edit</editType><file>server/utils/amazonAds/importInvoice.ts</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/info</absoluteUrl><fullName>info</fullName></culprit></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#611</displayName><duration>200</duration><estimatedDuration>71602</estimatedDuration><fullDisplayName>build-logship-frontend #611</fullDisplayName><id>611</id><inProgress>false</inProgress><keepLog>false</keepLog><number>611</number><queueId>5105</queueId><result>FAILURE</result><timestamp>1778544000931</timestamp><url>https://jenkins.younex.de/view/all/job/build-logship-frontend/611/</url><builtOn></builtOn><changeSet _class='hudson.scm.EmptyChangeLogSet'></changeSet></lastUnsuccessfulBuild><nextBuildNumber>742</nextBuildNumber><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'><browser _class='hudson.plugins.git.browser.GithubWeb'></browser><type>hudson.plugins.git.GitSCM</type><branche></branche><mergeOptions><fastForwardMode>--ff</fastForwardMode><mergeStrategy>default</mergeStrategy></mergeOptions><userRemoteConfig></userRemoteConfig></scm></freeStyleProject>