Skip to content

Changes

Started by timer
Started 19 hr ago
Took 1 min 4 sec on built-in

Summary

  1. Warehouse Builder: single head row (selects, tabs, inline stat pills, version/reload/fullscreen) and fullscreen app mode (hides the ERP chrome via html.wb-fullscreen + browser fullscreen, auto-restore on leave); editor height calibrated to the viewport (details)
  2. DHL Nachbelastung attachment per fee invoice: branded per-shipment breakdown PDF (GET /api/invoices/[id]/dhl-surcharge-report, summary/json modes) from the SHIPPINGFEE_NACHBELASTUNG fee lines of the generated order, button on the invoice view/edit pages; fee report gets a proper Nachbelastung section (shipment, DHL invoice + positions, DHL total / billed / surcharge) (details)
  3. DHL Nachbelastung report: file-name fallback resolves the invoice number for both DHL file-name schemes (mirrors create_fulfillment.py) (details)
  4. Fix 500 on hard reload of sales invoice edit (and fulfillment-orders edit, inbound-notification detail): root-level <Teleport to="body"> next to the async <NuxtLayout> hydrated out of order in the prod build (insertBefore … not a child of this node); wrapped in <ClientOnly> like procurements/invoices edit; recipe note in nuxt4-conventions.md (details)
  5. Mobile tasks: browse list defaults to own open tickets (SalesRep_ID + IsComplete=false via browse.get.ts mine/openOnly, Meine offenen/Alle toggle, pinned pushed tasks deduped), separate camera / gallery buttons for ticket photos; fix invisible text on pushed-task buttons (--mob-blue-soft used as background = same blue as text; also timer display, In-Arbeit tag, generate-shipments segment pill + shipper chip); dashboard: compact Offene-Aufträge strip with one scrollable org-chip row, flatter task tiles (14 instead of 4 visible per phone screen); reference/saas concept doc (details)
  6. Mobile tasks browse: 'mine' scope = open tickets of the session organization (AD_Org_ID = logship_organization_id, org 0/* = no org filter) instead of the assignee; chip renamed 'Offene meiner Org' (details)
  7. Mobile tasks: 'Foto aufnehmen' uses a new in-app getUserMedia camera overlay (<MobileCameraCapture>, ported from the receive page) instead of <input capture=environment>, which the Android WebView file chooser routes to the gallery; shots feed the same pending-photo / ticket-image lists, 'Aus Galerie' stays a file input (details)
  8. Mobile tasks browse 'mine' = desktop My-Tickets 'Bei uns' court (IsComplete false and IsMerchantAction not true, org visibility by role) instead of session org; chip 'Bei uns (offen)' (details)
  9. Invoice Jasper logo on black fixed + organization page rebuilt (full AD_Org/AD_OrgInfo CRUD, logo upload, Nuxt UI) (details)
  10. Leads list: clock column opens a close-lead modal (Expired / Recycled with lost reason from the LostReason list, or 'Kunde geworden' = Converted) instead of a blind one-click expire; 'Hide closed' filter now hides E/R/C, converted rows tinted green with user-check icon, one-click reopen for any closed lead (details)
  11. Recipe: leads list close-lead modal (details)
  12. Replace mobile barcode scanner with Scanbot SDK (details)
Commit 67fb6d6041a9cdb3636ab85556ba3e41e0ad5242 by info
Warehouse Builder: single head row (selects, tabs, inline stat pills, version/reload/fullscreen) and fullscreen app mode (hides the ERP chrome via html.wb-fullscreen + browser fullscreen, auto-restore on leave); editor height calibrated to the viewport
The file was modified.claude/rules/materials/warehouse-builder.md (diff)
The file was modifiedapp/pages/materials/warehouse-builder/index.vue (diff)
Commit 08b36be0cd4826d8531c7affa9df5a670046fe1c by info
DHL Nachbelastung attachment per fee invoice: branded per-shipment breakdown PDF (GET /api/invoices/[id]/dhl-surcharge-report, summary/json modes) from the SHIPPINGFEE_NACHBELASTUNG fee lines of the generated order, button on the invoice view/edit pages; fee report gets a proper Nachbelastung section (shipment, DHL invoice + positions, DHL total / billed / surcharge)
The file was modifiedapp/pages/sales/invoices/[id]/edit.vue (diff)
The file was addedserver/api/invoices/[id]/dhl-surcharge-report.get.ts
The file was addedserver/utils/invoices/dhlSurchargeReportPdf.ts
The file was modifiedserver/api/fulfillment/generate-fee-report.post.ts (diff)
The file was modifiedapp/pages/sales/invoices/[id]/view.vue (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was addedserver/utils/invoices/dhlSurchargeReportData.ts
The file was modified.claude/rules/fulfillment/fee-invoice-generator.md (diff)
Commit a8d99ca4fb8fdf4af8c8329e94976c6fa4cf8b94 by info
DHL Nachbelastung report: file-name fallback resolves the invoice number for both DHL file-name schemes (mirrors create_fulfillment.py)
The file was modified.claude/rules/fulfillment/fee-invoice-generator.md (diff)
The file was modifiedserver/utils/invoices/dhlSurchargeReportData.ts (diff)
Commit c29d7966d9218de3e0d2eaf201c9fcd9e700e7c2 by info
Fix 500 on hard reload of sales invoice edit (and fulfillment-orders edit, inbound-notification detail): root-level <Teleport to="body"> next to the async <NuxtLayout> hydrated out of order in the prod build (insertBefore … not a child of this node); wrapped in <ClientOnly> like procurements/invoices edit; recipe note in nuxt4-conventions.md
The file was modifiedapp/pages/sales/invoices/[id]/edit.vue (diff)
The file was modified.claude/rules/nuxt/nuxt4-conventions.md (diff)
The file was modifiedapp/pages/sales/fulfillment-orders/[id]/edit.vue (diff)
The file was modifiedapp/pages/procurements/my-orders/[id].vue (diff)
Commit 75e2a35d6209b4fd4d203569e9f121aa74b27f03 by info
Mobile tasks: browse list defaults to own open tickets (SalesRep_ID + IsComplete=false via browse.get.ts mine/openOnly, Meine offenen/Alle toggle, pinned pushed tasks deduped), separate camera / gallery buttons for ticket photos; fix invisible text on pushed-task buttons (--mob-blue-soft used as background = same blue as text; also timer display, In-Arbeit tag, generate-shipments segment pill + shipper chip); dashboard: compact Offene-Aufträge strip with one scrollable org-chip row, flatter task tiles (14 instead of 4 visible per phone screen); reference/saas concept doc
The file was addedreference/saas/logship-cloud-konzept.pdf
The file was modifiedapp/pages/mobile/generate-shipments.vue (diff)
The file was modifiedapp/pages/mobile/index.vue (diff)
The file was modifiedserver/api/requests/requests/browse.get.ts (diff)
The file was addedreference/saas/logship-cloud-konzept.html
The file was modifiedapp/pages/mobile/tasks.vue (diff)
Commit 9950ade8f88bf740a22245b600e996f969b704b4 by info
Mobile tasks browse: 'mine' scope = open tickets of the session organization (AD_Org_ID = logship_organization_id, org 0/* = no org filter) instead of the assignee; chip renamed 'Offene meiner Org'
The file was modifiedandroid/app/build.gradle (diff)
The file was modifiedserver/api/requests/requests/browse.get.ts (diff)
The file was modifiedapp/pages/mobile/tasks.vue (diff)
The file was modifiedandroid/update-files/version.json (diff)
Commit efa639ef0dbff30aa2bada22de90d11d93a114ad by info
Mobile tasks: 'Foto aufnehmen' uses a new in-app getUserMedia camera overlay (<MobileCameraCapture>, ported from the receive page) instead of <input capture=environment>, which the Android WebView file chooser routes to the gallery; shots feed the same pending-photo / ticket-image lists, 'Aus Galerie' stays a file input
The file was modifiedapp/pages/mobile/tasks.vue (diff)
The file was addedapp/components/mobile/CameraCapture.vue
Commit c8f25c2067e77798abbfb3d0d7fb7ecf2bead84e by info
Mobile tasks browse 'mine' = desktop My-Tickets 'Bei uns' court (IsComplete false and IsMerchantAction not true, org visibility by role) instead of session org; chip 'Bei uns (offen)'
The file was modifiedserver/api/requests/requests/browse.get.ts (diff)
The file was modifiedandroid/update-files/version.json (diff)
The file was modifiedapp/pages/mobile/tasks.vue (diff)
The file was modifiedandroid/app/build.gradle (diff)
Commit f1e371daca5a2d57ba1497c1d9a55dea31797678 by info
Invoice Jasper logo on black fixed + organization page rebuilt (full AD_Org/AD_OrgInfo CRUD, logo upload, Nuxt UI)

Invoice template (reference/jasper-reports/invoice/, deployed + compiled on the host root reports folder): the logo is
embedded from ad_image.binarydata like every other template instead of COLUMN_LOOKUP("image") (AWT image → JPEG
re-encode printed the transparent PNG on a black block); orgs without a logo print COALESCE(companyname, name) as text.

Organization pages (/create, /edit/organization-:id, /duplicate): <AdminOrganizationForm> on Nuxt UI (hero with logo
tile + upload/remove, tabs Stammdaten / Briefkopf & Belege / Adresse / Logistik & Struktur, info tooltips per field
saying where the value is printed), all AD_Org columns (companyname, C_BPartner_ID, …) and AD_OrgInfo columns
(Logo_ID via nested AD_Image, LY_Subtitle, ReceiptFooterMsg, TaxID, DUNS, phones, e-mail, C_Location_ID with inline
address card, warehouses, org type, parent org, supervisor, calendar, time zone, transfer bank, cash book);
changed-field writes, '' clears a reference; store creates the org and PUTs the auto-created AD_OrgInfo; shared
payload builder server/utils/orgInfoPayload.ts; list gets a Company Name column + lazy fetch.
The file was addedreference/jasper-reports/invoice/C_Invoice_TaxLines.jrxml
The file was modifiedserver/api/admin/organizations/update.put.ts (diff)
The file was addedserver/utils/orgInfoPayload.ts
The file was modifiedapp/components/admin/OrganizationForm.vue (diff)
The file was modifiedapp/pages/users/organizations/[id]/duplicate.vue (diff)
The file was addedreference/jasper-reports/invoice/C_Invoice_OrgInfoblock.jrxml
The file was addedreference/jasper-reports/invoice/C_Invoice_Lines.jrxml
The file was addedreference/jasper-reports/invoice/Letterhead_Footer.jrxml
The file was addedreference/jasper-reports/invoice/C_Invoice_Document.jrxml
The file was addedapp/components/admin/OrgFormField.vue
The file was modifiedreference/jasper-reports/README.md (diff)
The file was modifiedapp/pages/users/organizations/index.vue (diff)
The file was modifiedserver/api/admin/organizations/store.post.ts (diff)
The file was modifiedapp/pages/users/organizations/[id]/edit.vue (diff)
The file was addedreference/jasper-reports/invoice/C_Invoice_Address.jrxml
The file was modifiedapp/pages/users/organizations/create.vue (diff)
The file was addedapp/composables/useOrganizationForm.ts
The file was modifiedserver/api/admin/organizations/[id]/organization-info/index.put.ts (diff)
The file was modified.claude/rules/printing/jasper-shipment-report.md (diff)
Commit c83fc53be899ebea1a71e35b67602349373e9463 by info
Leads list: clock column opens a close-lead modal (Expired / Recycled with lost reason from the LostReason list, or 'Kunde geworden' = Converted) instead of a blind one-click expire; 'Hide closed' filter now hides E/R/C, converted rows tinted green with user-check icon, one-click reopen for any closed lead
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedapp/components/AgGrid/AgLeadExpireToggle.vue (diff)
The file was addedapp/components/leads/CloseLeadModal.vue
The file was modifiedapp/pages/users/leads/index.vue (diff)
Commit f0ce63aca1642654bcefe3180aa896635c2592c8 by info
Recipe: leads list close-lead modal
The file was modified.claude/rules/leads/crm-qualification.md (diff)
Commit 6c162c77f5a03aa47c28c57f70d9b6dbaf05c278 by info
Replace mobile barcode scanner with Scanbot SDK
The file was modifiedpackage.json (diff)
The file was addedpublic/scanbot/ScanbotSDK.min.js
The file was modifiedpackage-lock.json (diff)
The file was addedpublic/scanbot/bin/barcode-scanner/ScanbotSDK.Asm-simd-threads.worker.js
The file was addedpublic/scanbot/bin/document-scanner/ScanbotSDK.Core.js
The file was addedpublic/scanbot/bin/complete/ScanbotSDK.Asm-simd-threads.wasm
The file was addedpublic/scanbot/bin/barcode-scanner/ScanbotSDK.Asm.wasm
The file was modifiedapp/composables/useBarcodeScanner.js (diff)
The file was modifiednuxt.config.ts (diff)
The file was addedpublic/scanbot/bin/complete/ScanbotSDK.Asm.wasm
The file was addedpublic/scanbot/bin/complete/ScanbotSDK.Core.js
The file was addedpublic/scanbot/bin/barcode-scanner/ScanbotSDK.Asm-simd-threads.wasm
The file was modifiedandroid/app/build.gradle (diff)
The file was addedpublic/scanbot/bin/barcode-scanner/ScanbotSDK.Asm-simd.wasm
The file was addedpublic/scanbot/bin/document-scanner/ScanbotSDK.Core-simd-threads.js
The file was addedpublic/scanbot/bin/barcode-scanner/ScanbotSDK.Core.js
The file was addedpublic/scanbot/bin/barcode-scanner/ScanbotSDK.Core-simd-threads.js
The file was modifiedapp/pages/mobile/picklist.vue (diff)
The file was addedpublic/scanbot/bin/barcode-scanner/ScanbotSDK.Asm-simd-threads.js
The file was addedpublic/scanbot/bin/document-scanner/ScanbotSDK.Asm-simd-threads.worker.js
The file was addedpublic/scanbot/ScanbotSDK.ui2.min.js
The file was addedpublic/scanbot/bin/complete/ScanbotSDK.Asm-simd-threads.js
The file was addedpublic/scanbot/bin/barcode-scanner/ScanbotSDK.Core-simd.js
The file was addedpublic/scanbot/bin/complete/ScanbotSDK.Asm-simd-threads.worker.js
The file was addedpublic/scanbot/bin/document-scanner/ScanbotSDK.Asm-simd-threads.js
The file was addedpublic/scanbot/bin/document-scanner/ScanbotSDK.Asm-simd.wasm
The file was modifiedapp/composables/states.ts (diff)
The file was modifiedapp/pages/mobile/index.vue (diff)
The file was modifiedapp/components/BarcodeScanner.vue (diff)
The file was addedpublic/scanbot/bin/complete/ScanbotSDK.Asm-simd.wasm
The file was addedpublic/scanbot/bin/document-scanner/ScanbotSDK.Asm.wasm
The file was addedpublic/scanbot/ScanbotSDK.ui2.min.js.LICENSE.txt
The file was addedpublic/scanbot/bin/complete/ScanbotSDK.Core-simd-threads.js
The file was modifiedandroid/update-files/version.json (diff)
The file was addedpublic/scanbot/bin/document-scanner/ScanbotSDK.Core-simd.js
The file was addedpublic/scanbot/bin/complete/ScanbotSDK.Core-simd.js
The file was addedpublic/scanbot/bin/document-scanner/ScanbotSDK.Asm-simd-threads.wasm