|
diff --git a/app/templates/admin/partials/sidebar.html b/app/templates/admin/partials/sidebar.html
index f1557e36..e3351364 100644
--- a/app/templates/admin/partials/sidebar.html
+++ b/app/templates/admin/partials/sidebar.html
@@ -78,7 +78,6 @@
{{ section_header('Vendor Operations', 'vendorOps') }}
{% call section_content('vendorOps') %}
- {{ menu_item('marketplace-products', '/admin/marketplace-products', 'database', 'Marketplace Products') }}
{{ menu_item('vendor-products', '/admin/vendor-products', 'cube', 'Vendor Products') }}
{{ menu_item('customers', '/admin/customers', 'user-group', 'Customers') }}
{{ menu_item('inventory', '/admin/inventory', 'archive', 'Inventory') }}
diff --git a/static/admin/js/marketplace-letzshop.js b/static/admin/js/marketplace-letzshop.js
index 4aec1c77..7e7bbf5a 100644
--- a/static/admin/js/marketplace-letzshop.js
+++ b/static/admin/js/marketplace-letzshop.js
@@ -218,7 +218,7 @@ function adminMarketplaceLetzshop() {
},
/**
- * Load cross-vendor aggregate data
+ * Load cross-vendor aggregate data (when no vendor is selected)
*/
async loadCrossVendorData() {
marketplaceLetzshopLog.info('Loading cross-vendor data');
@@ -226,6 +226,7 @@ function adminMarketplaceLetzshop() {
try {
await Promise.all([
+ this.loadProducts(),
this.loadOrders(),
this.loadExceptions(),
this.loadExceptionStats(),
@@ -428,27 +429,25 @@ function adminMarketplaceLetzshop() {
// ═══════════════════════════════════════════════════════════════
/**
- * Load Letzshop products for selected vendor
- * Uses /admin/products endpoint with marketplace=Letzshop filter
+ * Load Letzshop products
+ * When vendor is selected: shows products for that vendor
+ * When no vendor selected: shows ALL Letzshop marketplace products
*/
async loadProducts() {
- if (!this.selectedVendor) {
- this.products = [];
- this.totalProducts = 0;
- this.productStats = { total: 0, active: 0, inactive: 0, last_sync: null };
- return;
- }
-
this.loadingProducts = true;
try {
const params = new URLSearchParams({
marketplace: 'Letzshop',
- vendor_name: this.selectedVendor.name,
skip: ((this.productsPage - 1) * this.productsLimit).toString(),
limit: this.productsLimit.toString()
});
+ // Filter by vendor if one is selected
+ if (this.selectedVendor) {
+ params.append('vendor_name', this.selectedVendor.name);
+ }
+
if (this.productFilters.search) {
params.append('search', this.productFilters.search);
}
@@ -474,15 +473,19 @@ function adminMarketplaceLetzshop() {
/**
* Load product statistics for Letzshop products
+ * Shows stats for selected vendor or all Letzshop products
*/
async loadProductStats() {
- if (!this.selectedVendor) return;
-
try {
const params = new URLSearchParams({
- marketplace: 'Letzshop',
- vendor_name: this.selectedVendor.name
+ marketplace: 'Letzshop'
});
+
+ // Filter by vendor if one is selected
+ if (this.selectedVendor) {
+ params.append('vendor_name', this.selectedVendor.name);
+ }
+
const response = await apiClient.get(`/admin/products/stats?${params}`);
this.productStats = {
total: response.total || 0,
|