{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.TimerTrigger$TimerTriggerCause",
          "shortDescription" : "Started by timer"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/dev" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 788,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "553300ed0ab8162ec41f0defd9721c7aa02fdab1",
            "branch" : [
              {
                "SHA1" : "553300ed0ab8162ec41f0defd9721c7aa02fdab1",
                "name" : "refs/remotes/origin/dev"
              }
            ]
          },
          "revision" : {
            "SHA1" : "553300ed0ab8162ec41f0defd9721c7aa02fdab1",
            "branch" : [
              {
                "SHA1" : "553300ed0ab8162ec41f0defd9721c7aa02fdab1",
                "name" : "refs/remotes/origin/dev"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "553300ed0ab8162ec41f0defd9721c7aa02fdab1",
        "branch" : [
          {
            "SHA1" : "553300ed0ab8162ec41f0defd9721c7aa02fdab1",
            "name" : "refs/remotes/origin/dev"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/younex1/erp-nuxt-frontend.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#788",
  "duration" : 66415,
  "estimatedDuration" : 61693,
  "executor" : None,
  "fullDisplayName" : "build-logship-frontend #788",
  "id" : "788",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 788,
  "queueId" : 5973,
  "result" : "SUCCESS",
  "timestamp" : 1793754000164,
  "url" : "https://jenkins.younex.de/view/all/job/build-logship-frontend/788/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "server/api/inouts/quick-rma.post.ts"
        ],
        "commitId" : "3e576690747f146b8c04fea34ecdde0aa3a6aced",
        "timestamp" : 1793701294000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "quick-rma: reuse an orphaned marketplace RMA only when it covers every receipt line\u000a\u000aA completed Amazon-imported RMA on the shipment (e.g. 535011 / RMA 30595)\u000awas reused for the mobile customer return even when it had no line for a\u000areturned product; the receipt line then had neither M_RMALine_ID nor\u000aC_OrderLine_ID and iDempiere rejected it with 'Fill mandatory fields:\u000aSales Order Line'. The line matching now lives in matchRmaLine and is\u000arun as a pre-check: if any receipt line stays unmatched, a fresh RMA is\u000acreated instead of reusing the orphan.\u000a",
        "date" : "2026-11-03 11:21:34 +0100",
        "id" : "3e576690747f146b8c04fea34ecdde0aa3a6aced",
        "msg" : "quick-rma: reuse an orphaned marketplace RMA only when it covers every receipt line",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "server/api/inouts/quick-rma.post.ts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "server/api/inouts/quick-rma.post.ts",
          "app/pages/mobile/return.vue",
          "app/pages/integrations/returns-desktop.vue",
          "app/composables/useReturnedQty.ts"
        ],
        "commitId" : "8de3a55c8e84c8912d1c0b80de1104909c99dff9",
        "timestamp" : 1793702247000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "quick-rma: create a fresh RMA next to a marketplace RMA that already authorizes a shipment line\u000a\u000aFollow-up to 3e5766907. The fresh RMA for shipment 535011 was rejected\u000awith 'Amount to be returned is greater than the amount shipped': the\u000aAmazon RMA 30595 already authorizes both shipped HYDRO units, and\u000aiDempiere's MRMALine.checkQty sums every completed/closed RMA line on a\u000ashipment line (a completed RMA also takes no new lines).\u000a\u000aquick-rma now collects the authorized qty per shipment line from CO/CL\u000aRMAs and creates such an RMA line without M_InOutLine_ID (product + qty,\u000adescription notes the conflict); the receipt line still links to it via\u000aM_RMALine_ID. useReturnedQty attributes receipt lines of unlinked RMA\u000alines to the shipment line by product (callers pass the shipment lines)\u000aso the remaining qty stays correct.\u000a",
        "date" : "2026-11-03 11:37:27 +0100",
        "id" : "8de3a55c8e84c8912d1c0b80de1104909c99dff9",
        "msg" : "quick-rma: create a fresh RMA next to a marketplace RMA that already authorizes a shipment line",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/pages/integrations/returns-desktop.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/mobile/return.vue"
          },
          {
            "editType" : "edit",
            "file" : "server/api/inouts/quick-rma.post.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/composables/useReturnedQty.ts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/components/settings/OrderSourceForm.vue",
          "app/pages/settings/order-sources/create.vue",
          "app/pages/partners/partners/[id]/edit.vue",
          "server/utils/dhlMainCredential.ts",
          "server/api/partners/partners/store.post.ts",
          ".claude/rules/fulfillment/shippers.md",
          "app/pages/settings/order-sources/[id]/view.vue",
          "public/scanbot/bin/document-scanner/ScanbotSDK.Core-simd.js",
          "public/scanbot/bin/barcode-scanner/ScanbotSDK.Core.js",
          "public/scanbot/bin/complete/ScanbotSDK.Core.js",
          "server/api/commission/parcels/dpd/manual.post.ts",
          "public/scanbot/bin/document-scanner/ScanbotSDK.Core-simd-threads.js",
          "server/api/settings/order-sources/store.post.ts",
          ".claude/rules/partners/partner-edit-form.md",
          "public/scanbot/ScanbotSDK.ui2.min.js",
          "app/pages/settings/order-sources/[id]/edit.vue",
          "public/scanbot/bin/barcode-scanner/ScanbotSDK.Core-simd-threads.js",
          "server/api/settings/order-sources/update.put.ts",
          "server/api/commission/parcels/dpd/index.post.ts",
          "server/api/partners/partners/update.put.ts",
          "server/api/commission/parcels/dhl/index.put.ts",
          "app/assets/langs/shared.js",
          "server/api/inouts/[id]/reset-commission.post.ts",
          "public/scanbot/bin/complete/ScanbotSDK.Core-simd-threads.js",
          "public/scanbot/ScanbotSDK.min.js",
          "server/api/commission/parcels/dhl/multi.post.ts",
          "server/api/commission/parcels/dpd/multi.post.ts",
          "server/utils/dhlAccountResolver.ts",
          "public/scanbot/bin/document-scanner/ScanbotSDK.Core.js",
          "server/utils/dhlCustomHelper.ts",
          "server/utils/dpdAccountResolver.ts",
          "app/pages/partners/partners/create.vue",
          "public/scanbot/bin/barcode-scanner/ScanbotSDK.Core-simd.js",
          "server/api/commission/parcels/dhl/index.post.ts",
          "app/pages/partners/partners/[id]/view.vue",
          "app/components/partners/PartnerForm.vue",
          "server/api/commission/parcels/dhl/index.get.ts",
          "server/api/tracking/[number].get.ts",
          "server/utils/orgPartnerCache.ts",
          "server/utils/dhlHelper.ts",
          "public/scanbot/bin/complete/ScanbotSDK.Core-simd.js",
          "server/api/commission/trackings/tracking.get.ts",
          "server/api/commission/parcels/dhl/manual.post.ts"
        ],
        "commitId" : "ae86f94c382a71f1c614b0307eddc715e812af80",
        "timestamp" : 1793710799000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Per-customer DHL/DPD accounts with shared three-tier account resolvers\u000a\u000aLabels, reprints, cancels, resets and tracking now pick the carrier account in\u000aone place per carrier (server/utils/dhlAccountResolver.ts, dpdAccountResolver.ts):\u000aorder source with its own account → the org's business partner when\u000a\"customer uses own account\" is on and credentials are filled → LogYou main.\u000aLabel creation is refused (422) for a flagged customer without credentials\u000aanywhere, so a manual order can no longer be labelled on the LogYou account by\u000aaccident. Custom accounts get a Kleinpaket billing number; without it a\u000aqualifying parcel ships as V01PAK instead of a V62KP on the wrong procedure.\u000a\u000aPartner create/edit/view and order-source create/edit/view carry the new\u000afields with precedence explanations, tooltips and carrier icons (DE flag,\u000aglobe, DHL Kleinpaket badge, DPD card). Partner saves invalidate the shared\u000aorg-partner cache (orgPartnerCache.ts).\u000a\u000aAlso: the DHL cancel route no longer returns the account password to the\u000abrowser, and dhlCustomHelper no longer shares one token cookie across\u000adifferent custom accounts.\u000a",
        "date" : "2026-11-03 13:59:59 +0100",
        "id" : "ae86f94c382a71f1c614b0307eddc715e812af80",
        "msg" : "Per-customer DHL/DPD accounts with shared three-tier account resolvers",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/pages/settings/order-sources/create.vue"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/document-scanner/ScanbotSDK.Core.js"
          },
          {
            "editType" : "add",
            "file" : "server/utils/orgPartnerCache.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/assets/langs/shared.js"
          },
          {
            "editType" : "edit",
            "file" : "server/api/commission/parcels/dhl/index.put.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/partners/partners/[id]/view.vue"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/ScanbotSDK.ui2.min.js"
          },
          {
            "editType" : "edit",
            "file" : ".claude/rules/partners/partner-edit-form.md"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/partners/partners/create.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/settings/order-sources/[id]/edit.vue"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/complete/ScanbotSDK.Core.js"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/document-scanner/ScanbotSDK.Core-simd-threads.js"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/dhlMainCredential.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/api/commission/parcels/dpd/multi.post.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/api/commission/parcels/dhl/manual.post.ts"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/barcode-scanner/ScanbotSDK.Core-simd.js"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/document-scanner/ScanbotSDK.Core-simd.js"
          },
          {
            "editType" : "edit",
            "file" : "server/api/settings/order-sources/store.post.ts"
          },
          {
            "editType" : "edit",
            "file" : ".claude/rules/fulfillment/shippers.md"
          },
          {
            "editType" : "edit",
            "file" : "server/api/inouts/[id]/reset-commission.post.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/settings/order-sources/[id]/view.vue"
          },
          {
            "editType" : "edit",
            "file" : "server/api/settings/order-sources/update.put.ts"
          },
          {
            "editType" : "add",
            "file" : "server/utils/dhlAccountResolver.ts"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/barcode-scanner/ScanbotSDK.Core.js"
          },
          {
            "editType" : "edit",
            "file" : "server/api/commission/parcels/dpd/manual.post.ts"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/complete/ScanbotSDK.Core-simd.js"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/complete/ScanbotSDK.Core-simd-threads.js"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/dhlCustomHelper.ts"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/ScanbotSDK.min.js"
          },
          {
            "editType" : "edit",
            "file" : "server/api/commission/parcels/dhl/index.get.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/api/tracking/[number].get.ts"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/barcode-scanner/ScanbotSDK.Core-simd-threads.js"
          },
          {
            "editType" : "edit",
            "file" : "app/components/partners/PartnerForm.vue"
          },
          {
            "editType" : "edit",
            "file" : "server/api/commission/trackings/tracking.get.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/api/partners/partners/update.put.ts"
          },
          {
            "editType" : "add",
            "file" : "server/utils/dpdAccountResolver.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/api/commission/parcels/dhl/index.post.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/components/settings/OrderSourceForm.vue"
          },
          {
            "editType" : "edit",
            "file" : "server/api/commission/parcels/dhl/multi.post.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/partners/partners/[id]/edit.vue"
          },
          {
            "editType" : "edit",
            "file" : "server/api/commission/parcels/dpd/index.post.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/dhlHelper.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/api/partners/partners/store.post.ts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "public/scanbot/bin/complete/ScanbotSDK.Core-simd-threads.js",
          "public/scanbot/ScanbotSDK.min.js",
          "public/scanbot/bin/barcode-scanner/ScanbotSDK.Core-simd-threads.js",
          "public/scanbot/ScanbotSDK.ui2.min.js",
          "public/scanbot/bin/barcode-scanner/ScanbotSDK.Core-simd.js",
          "public/scanbot/bin/document-scanner/ScanbotSDK.Core-simd.js",
          "public/scanbot/bin/barcode-scanner/ScanbotSDK.Core.js",
          "public/scanbot/bin/complete/ScanbotSDK.Core.js",
          "public/scanbot/bin/complete/ScanbotSDK.Core-simd.js",
          "public/scanbot/bin/document-scanner/ScanbotSDK.Core.js",
          "public/scanbot/bin/document-scanner/ScanbotSDK.Core-simd-threads.js"
        ],
        "commitId" : "eca31fc6c04dee48d4a8055e46ab9918ef08ec39",
        "timestamp" : 1793710833000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "Revert scanbot SDK files accidentally included in the previous commit\u000a",
        "date" : "2026-11-03 14:00:33 +0100",
        "id" : "eca31fc6c04dee48d4a8055e46ab9918ef08ec39",
        "msg" : "Revert scanbot SDK files accidentally included in the previous commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/complete/ScanbotSDK.Core-simd-threads.js"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/ScanbotSDK.min.js"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/barcode-scanner/ScanbotSDK.Core-simd-threads.js"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/barcode-scanner/ScanbotSDK.Core-simd.js"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/document-scanner/ScanbotSDK.Core-simd-threads.js"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/complete/ScanbotSDK.Core.js"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/ScanbotSDK.ui2.min.js"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/document-scanner/ScanbotSDK.Core-simd.js"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/barcode-scanner/ScanbotSDK.Core.js"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/complete/ScanbotSDK.Core-simd.js"
          },
          {
            "editType" : "edit",
            "file" : "public/scanbot/bin/document-scanner/ScanbotSDK.Core.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/pages/sales/sis/index.vue",
          ".claude/rules/marketplaces/marketplace-listings.md",
          "reference/test-scripts/ebay-listings-import-check.mts"
        ],
        "commitId" : "a0cd3c5c3644df8fd9b156bd04c162d698e23056",
        "timestamp" : 1793747646000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "SIS listings: sortable product name, own sortable article-number column, narrower channel column, BOM tag directly after the name\u000a\u000aAlso adds reference/test-scripts/ebay-listings-import-check.mts, a dry read of the eBay adapter import (one line per listing with its variant rows) used to confirm that variation listings are imported one row per SKU.\u000a",
        "date" : "2026-11-04 00:14:06 +0100",
        "id" : "a0cd3c5c3644df8fd9b156bd04c162d698e23056",
        "msg" : "SIS listings: sortable product name, own sortable article-number column, narrower channel column, BOM tag directly after the name",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/pages/sales/sis/index.vue"
          },
          {
            "editType" : "edit",
            "file" : ".claude/rules/marketplaces/marketplace-listings.md"
          },
          {
            "editType" : "add",
            "file" : "reference/test-scripts/ebay-listings-import-check.mts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "server/api/sales/sis/listings/[id]/link-product.put.ts",
          "server/api/sales/sis/listings/import.post.ts",
          "app/components/sales/sms/ListProductsModal.vue",
          "server/api/sales/sis/status.get.ts",
          "shared/utils/sisPricing.ts",
          "server/api/sales/sms/listings/[id].put.ts",
          "server/api/sales/sms/listings/index.get.ts",
          ".claude/rules/marketplaces/marketplace-listings.md",
          "server/api/sales/sms/offers.post.ts",
          "server/api/sales/sis/listings/index.get.ts",
          "server/api/sales/sms/listings/[id]/link-product.put.ts",
          "server/api/sales/sms/listings/import.post.ts",
          "server/api/sales/sis/changes/[id]/cancel.post.ts",
          "reference/test-scripts/listing-outbox-smoke.mts",
          "server/api/sales/sis/offers.post.ts",
          "server/api/sales/sms/listings/[id].delete.ts",
          "server/api/sales/sis/changes.get.ts",
          "app/components/sales/sis/ListProductsModal.vue",
          "app/components/sales/sms/LinkProductModal.vue",
          "app/composables/menu/admin/sales.ts",
          "server/api/sales/sms/products-defaults.get.ts",
          "server/api/sales/sms/listings/remote.get.ts",
          "server/api/sales/sms/order-sources.get.ts",
          "app/pages/sales/sis/index.vue",
          "server/api/sales/sis/flush.post.ts",
          "server/utils/sisMatching.ts",
          "server/api/sales/sms/status.get.ts",
          "server/api/sales/sms/changes.get.ts",
          "server/api/sales/sms/listings/[id]/delist.post.ts",
          "server/utils/listings/adapters/ebay.ts",
          "app/components/sales/sms/ChangeHistoryDrawer.vue",
          "server/api/sales/sis/listings/remote.get.ts",
          "app/components/sales/sis/LinkProductModal.vue",
          "server/api/sales/sis/listings/[id].delete.ts",
          "server/api/amazon/stocks/sync.post.ts",
          "server/api/sales/sis/listings/import-preview.post.ts",
          "app/components/sales/sms/ImportWizard.vue",
          "server/api/sales/sms/listings/import-preview.post.ts",
          "server/api/sales/sms/listings/[id]/relist.post.ts",
          "server/api/sales/sms/listings/create.post.ts",
          "server/api/sales/sis/listings/[id]/delist.post.ts",
          "server/api/sales/sis/listings/[id].put.ts",
          "app/assets/langs/shared.js",
          "app/components/sales/sis/ChangeHistoryDrawer.vue",
          "server/utils/amazonSpApi.ts",
          "server/api/sales/sis/listings/[id]/relist.post.ts",
          "server/api/sales/sms/changes/[id]/cancel.post.ts",
          "server/utils/listings/feeModel.ts",
          "server/api/sales/sms/flush.post.ts",
          "server/api/sales/sis/order-sources.get.ts",
          "server/api/sales/sis/products-defaults.get.ts",
          "app/components/MainNavigationMenu.vue",
          "server/api/sales/sis/listings/create.post.ts",
          "server/utils/listings/outbox.ts",
          "app/components/sales/sis/ImportWizard.vue",
          "app/pages/sales/sms/index.vue"
        ],
        "commitId" : "bf887d9ffd75f0eaa83129cabbaf69679b861f2d",
        "timestamp" : 1793749906000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "SMS (Sales Management System): rename from SIS, purchase cost + marketplace fee + VAT pricing floor per listing\u000a\u000a- /sales/sis → /sales/sms (page, components SalesSms*, API /api/sales/sms/**, menu + lang labels; old URL = 301 stub)\u000a- shared/utils/sisPricing.ts: fee models (band / marginal tiers, fixed per order, min fee, extra fixed), minimal gross\u000a  price solver (margin 0 after VAT, fees and purchase cost) and margin at a given price — used by server and page\u000a- server/utils/listings/feeModel.ts: eBay.de business fee schedule by top-level category (+0,35/0,45 € per order),\u000a  Amazon.de referral fee by product type (apparel 5/10/15 % tiers, min 0,30 €) blended with a real fee estimate\u000a- sisMatching: purchase price list per org (IsSOPriceList=N), net purchase price of products and BOM components\u000a- listings GET: purchaseCost (BOM = Σ component price × QtyBOM), vatRate, feeModel, minPrice, marginAtTarget per row\u000a- eBay import: primary category path per listing via one cached GetItem (fee schedule key)\u000a- page: Purchase / Fees / Min. price columns (stacked cells, breakdown popover), current marketplace price under the\u000a  Price input and internal qty under the Qty input (old marketplace-price / int-qty columns removed), two-line headers,\u000a  sortable Source / Purchase / Fees / Price / Qty / Min. price, BOM tag right-aligned, SKU hidden when = article no.\u000a",
        "date" : "2026-11-04 00:51:46 +0100",
        "id" : "bf887d9ffd75f0eaa83129cabbaf69679b861f2d",
        "msg" : "SMS (Sales Management System): rename from SIS, purchase cost + marketplace fee + VAT pricing floor per listing",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "server/utils/listings/adapters/ebay.ts"
          },
          {
            "editType" : "add",
            "file" : "app/components/sales/sms/ListProductsModal.vue"
          },
          {
            "editType" : "add",
            "file" : "server/api/sales/sms/listings/import.post.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/sales/sms/order-sources.get.ts"
          },
          {
            "editType" : "delete",
            "file" : "server/api/sales/sis/listings/import.post.ts"
          },
          {
            "editType" : "delete",
            "file" : "server/api/sales/sis/listings/[id]/relist.post.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/sales/sms/products-defaults.get.ts"
          },
          {
            "editType" : "add",
            "file" : "app/components/sales/sms/ChangeHistoryDrawer.vue"
          },
          {
            "editType" : "delete",
            "file" : "server/api/sales/sis/listings/index.get.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/sales/sms/listings/[id].delete.ts"
          },
          {
            "editType" : "delete",
            "file" : "app/components/sales/sis/LinkProductModal.vue"
          },
          {
            "editType" : "delete",
            "file" : "server/api/sales/sis/products-defaults.get.ts"
          },
          {
            "editType" : "delete",
            "file" : "app/components/sales/sis/ImportWizard.vue"
          },
          {
            "editType" : "add",
            "file" : "server/api/sales/sms/listings/[id]/delist.post.ts"
          },
          {
            "editType" : "delete",
            "file" : "server/api/sales/sis/changes/[id]/cancel.post.ts"
          },
          {
            "editType" : "add",
            "file" : "shared/utils/sisPricing.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/sales/sms/listings/[id].put.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/components/MainNavigationMenu.vue"
          },
          {
            "editType" : "edit",
            "file" : "server/api/amazon/stocks/sync.post.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/sales/sms/listings/import-preview.post.ts"
          },
          {
            "editType" : "delete",
            "file" : "server/api/sales/sis/listings/[id]/link-product.put.ts"
          },
          {
            "editType" : "delete",
            "file" : "server/api/sales/sis/offers.post.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/composables/menu/admin/sales.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/sisMatching.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/sales/sms/listings/index.get.ts"
          },
          {
            "editType" : "edit",
            "file" : "app/pages/sales/sis/index.vue"
          },
          {
            "editType" : "add",
            "file" : "server/api/sales/sms/status.get.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/sales/sms/changes.get.ts"
          },
          {
            "editType" : "delete",
            "file" : "server/api/sales/sis/flush.post.ts"
          },
          {
            "editType" : "delete",
            "file" : "server/api/sales/sis/listings/create.post.ts"
          },
          {
            "editType" : "delete",
            "file" : "server/api/sales/sis/order-sources.get.ts"
          },
          {
            "editType" : "delete",
            "file" : "server/api/sales/sis/listings/[id].delete.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/sales/sms/offers.post.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/sales/sms/flush.post.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/sales/sms/listings/remote.get.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/sales/sms/listings/[id]/relist.post.ts"
          },
          {
            "editType" : "delete",
            "file" : "app/components/sales/sis/ListProductsModal.vue"
          },
          {
            "editType" : "delete",
            "file" : "server/api/sales/sis/listings/import-preview.post.ts"
          },
          {
            "editType" : "delete",
            "file" : "server/api/sales/sis/listings/[id]/delist.post.ts"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/listings/outbox.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/sales/sms/changes/[id]/cancel.post.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/sales/sms/listings/create.post.ts"
          },
          {
            "editType" : "delete",
            "file" : "server/api/sales/sis/listings/[id].put.ts"
          },
          {
            "editType" : "delete",
            "file" : "server/api/sales/sis/listings/remote.get.ts"
          },
          {
            "editType" : "delete",
            "file" : "server/api/sales/sis/status.get.ts"
          },
          {
            "editType" : "delete",
            "file" : "server/api/sales/sis/changes.get.ts"
          },
          {
            "editType" : "add",
            "file" : "app/components/sales/sms/ImportWizard.vue"
          },
          {
            "editType" : "edit",
            "file" : "app/assets/langs/shared.js"
          },
          {
            "editType" : "add",
            "file" : "app/pages/sales/sms/index.vue"
          },
          {
            "editType" : "edit",
            "file" : ".claude/rules/marketplaces/marketplace-listings.md"
          },
          {
            "editType" : "delete",
            "file" : "app/components/sales/sis/ChangeHistoryDrawer.vue"
          },
          {
            "editType" : "add",
            "file" : "server/utils/listings/feeModel.ts"
          },
          {
            "editType" : "add",
            "file" : "app/components/sales/sms/LinkProductModal.vue"
          },
          {
            "editType" : "edit",
            "file" : "reference/test-scripts/listing-outbox-smoke.mts"
          },
          {
            "editType" : "edit",
            "file" : "server/utils/amazonSpApi.ts"
          },
          {
            "editType" : "add",
            "file" : "server/api/sales/sms/listings/[id]/link-product.put.ts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/pages/fulfillment/amazon-stocks/index.vue"
        ],
        "commitId" : "607d12b015bcbe3e04f81eabf1fbb045291e75e9",
        "timestamp" : 1793749921000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "amazon-stocks: follow the /api/sales/sms route rename\u000a",
        "date" : "2026-11-04 00:52:01 +0100",
        "id" : "607d12b015bcbe3e04f81eabf1fbb045291e75e9",
        "msg" : "amazon-stocks: follow the /api/sales/sms route rename",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/pages/fulfillment/amazon-stocks/index.vue"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "server/api/sales/sms/listings/index.get.ts",
          ".claude/rules/marketplaces/marketplace-listings.md",
          "app/pages/sales/sms/index.vue"
        ],
        "commitId" : "bd07fa04f6e2e25ad8937f48263361a40d36a041",
        "timestamp" : 1793750678000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "SMS: shipping + packaging in the pricing floor (DHL/DPD contract rates incl. surcharges), column regroup, Buy Box removed\u000a\u000a- listings GET: national DHL Paket ≤ 2 kg and DPD Classic from CUST_CarrierRate + fixed contract surcharges (toll/CO2),\u000a  DHL peak (Nov–Dec) / peak-in-peak by date, monthly energy surcharges via env (SMS_DHL_ENERGY_PCT 4.75,\u000a  SMS_DPD_ENERGY_PCT 31, SMS_DPD_EFS_PCT 4.08), packaging SMS_PACKAGING_COST 0.50; minPrice (DHL) + minPriceDpd per row\u000a- page: column order Purchase → Shipping → Fees → Min. price (tinted group) → Price → Qty; margin at the typed price under\u000a  the Price input; info icons with column descriptions instead of header sub-lines; Buy Box column/filter/stat removed\u000a",
        "date" : "2026-11-04 01:04:38 +0100",
        "id" : "bd07fa04f6e2e25ad8937f48263361a40d36a041",
        "msg" : "SMS: shipping + packaging in the pricing floor (DHL/DPD contract rates incl. surcharges), column regroup, Buy Box removed",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/pages/sales/sms/index.vue"
          },
          {
            "editType" : "edit",
            "file" : ".claude/rules/marketplaces/marketplace-listings.md"
          },
          {
            "editType" : "edit",
            "file" : "server/api/sales/sms/listings/index.get.ts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "app/pages/sales/sms/index.vue"
        ],
        "commitId" : "43b81bebfc89297cad74e7bab5069b3568b42af3",
        "timestamp" : 1793751111000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "SMS: hover popovers (header info, BOM, min-price calculation) as teleported UPopover hover cards so the table overflow no longer clips them\u000a",
        "date" : "2026-11-04 01:11:51 +0100",
        "id" : "43b81bebfc89297cad74e7bab5069b3568b42af3",
        "msg" : "SMS: hover popovers (header info, BOM, min-price calculation) as teleported UPopover hover cards so the table overflow no longer clips them",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/pages/sales/sms/index.vue"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "server/api/sales/sms/listings/index.get.ts",
          ".claude/rules/marketplaces/marketplace-listings.md",
          "app/pages/sales/sms/index.vue"
        ],
        "commitId" : "670f0df00d61ec4a40411ceec188f5885906342a",
        "timestamp" : 1793752476000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "SMS: DPD shipping in the pricing floor = contract price only (3,00 €); energy / fuel / toll / peak add-ons are opt-in env values defaulting to 0\u000a",
        "date" : "2026-11-04 01:34:36 +0100",
        "id" : "670f0df00d61ec4a40411ceec188f5885906342a",
        "msg" : "SMS: DPD shipping in the pricing floor = contract price only (3,00 €); energy / fuel / toll / peak add-ons are opt-in env values defaulting to 0",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/pages/sales/sms/index.vue"
          },
          {
            "editType" : "edit",
            "file" : "server/api/sales/sms/listings/index.get.ts"
          },
          {
            "editType" : "edit",
            "file" : ".claude/rules/marketplaces/marketplace-listings.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "server/api/sales/sms/listings/index.get.ts",
          ".claude/rules/marketplaces/marketplace-listings.md",
          "app/pages/sales/sms/index.vue"
        ],
        "commitId" : "553300ed0ab8162ec41f0defd9721c7aa02fdab1",
        "timestamp" : 1793752616000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/info",
          "fullName" : "info"
        },
        "authorEmail" : "info@younex.de",
        "comment" : "SMS: DPD shipping per the myDPD G300 price list — base 3,00 € plus Maut 0,35 €, Sicherheitsgebühr 0,15 €, Energiezuschlag Straße and Emergency Fuel Surcharge (env defaults 31 % / 4,08 %)\u000a",
        "date" : "2026-11-04 01:36:56 +0100",
        "id" : "553300ed0ab8162ec41f0defd9721c7aa02fdab1",
        "msg" : "SMS: DPD shipping per the myDPD G300 price list — base 3,00 € plus Maut 0,35 €, Sicherheitsgebühr 0,15 €, Energiezuschlag Straße and Emergency Fuel Surcharge (env defaults 31 % / 4,08 %)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "app/pages/sales/sms/index.vue"
          },
          {
            "editType" : "edit",
            "file" : "server/api/sales/sms/listings/index.get.ts"
          },
          {
            "editType" : "edit",
            "file" : ".claude/rules/marketplaces/marketplace-listings.md"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://jenkins.younex.de/user/info",
      "fullName" : "info"
    }
  ]
}