/**
* Get products table content
*/
private function get_products_table_content($stock_zero, $stock_below_zero, $stock_above_zero, $sort_by_cost, $is_admin = false, $visible_columns = array()) {
$output = '';
$total_price = 0;
$total_cost = 0;
// If no visible columns specified, use defaults
if (empty($visible_columns)) {
$visible_columns = $this->get_column_visibility_settings();
}
try {
// Build query
$args = array(
'status' => 'publish',
'limit' => -1,
);
if (!empty($_POST['product_categories'])) {
$args['category'] = array_map('sanitize_text_field', $_POST['product_categories']);
}
if ($sort_by_cost && $is_admin) {
$args['orderby'] = 'meta_value_num';
$args['meta_key'] = '_alg_wc_cog_cost';
}
$products = wc_get_products($args);
$normalized_products = $this->normalize_products($products, $stock_zero, $stock_below_zero, $stock_above_zero);
if (empty($normalized_products)) {
$visible_count = count(array_filter($visible_columns));
return '
' . __('No products found.', 'wc-multi-inventory') . ' ';
}
$export_data = array();
foreach ($normalized_products as $item) {
$product_id = $item['id'];
$product = $item['product'];
$product_name = $item['name'];
$product_sku = $item['sku'];
$is_variation = $item['is_variation'];
// Get data
$price = $this->sanitize_numeric($product->get_price());
$quantity = $this->sanitize_numeric($product->get_stock_quantity());
$stock_casa = $this->sanitize_numeric(get_post_meta($product_id, '_stock_casa', true));
$stock_rabat = $this->sanitize_numeric(get_post_meta($product_id, '_stock_rabat', true));
$stock_agadir = $this->sanitize_numeric(get_post_meta($product_id, '_stock_agadir', true));
$stock_min = $this->sanitize_numeric(get_post_meta($product_id, '_stock_minimum', true));
// Calculate location total
$location_total = $stock_casa + $stock_rabat + $stock_agadir;
// Admin-only data
$cost = 0;
$coming_qty = 0;
$factory_price = 0;
$reseller_price = 0;
if ($is_admin) {
$cost = $this->sanitize_numeric(get_post_meta($product_id, '_alg_wc_cog_cost', true));
$coming_qty = $this->sanitize_numeric(get_post_meta($product_id, '_coming_quantity', true));
$factory_price = $this->sanitize_numeric(get_post_meta($product_id, '_factory_price', true));
$reseller_price = $this->sanitize_numeric(get_post_meta($product_id, '_reseller_price', true));
// Update pricing if needed
$this->update_product_pricing($product_id, $product_name);
}
$profit = $price - $cost;
$total_value = $price * $quantity;
if ($is_admin) {
$total_price += $total_value;
$total_cost += ($cost * $quantity);
}
// Add to export
$export_data[] = array($product_name, $product_sku, $quantity, $stock_min, $stock_casa, $stock_rabat);
// CSS classes
$classes = array();
if ($is_admin && $cost == 0) $classes[] = 'cost-zero';
if ($quantity <= $stock_min && $stock_min > 0) $classes[] = 'low-stock';
if ($is_variation) $classes[] = 'variation-row';
if ($location_total > $quantity) $classes[] = 'sync-needed';
$display_name = $is_variation ?
'↳ ' . esc_html($product_name) . ' (' . esc_html($item['parent_name']) . ') ' :
esc_html($product_name);
$output .= '';
// Render columns based on visibility settings
$output .= $this->render_table_row_columns($visible_columns, $is_admin, array(
'product_id' => $product_id,
'display_name' => $display_name,
'product_sku' => $product_sku,
'is_variation' => $is_variation,
'price' => $price,
'cost' => $cost,
'profit' => $profit,
'reseller_price' => $reseller_price,
'quantity' => $quantity,
'stock_casa' => $stock_casa,
'stock_rabat' => $stock_rabat,
'stock_agadir' => $stock_agadir,
'location_total' => $location_total,
'stock_min' => $stock_min,
'coming_qty' => $coming_qty,
'factory_price' => $factory_price,
'total_value' => $total_value
));
$output .= ' ';
}
// Store export data in session
if (!session_id()) {
session_start();
}
$_SESSION['wc_multi_inventory_export'] = $export_data;
} catch (Exception $e) {
$visible_count = count(array_filter($visible_columns));
$output = '' . __('Error loading products: ', 'wc-multi-inventory') . esc_html($e->getMessage()) . ' ';
}
return $output;
}
/**
* Render table row columns based on visibility settings
*/
private function render_table_row_columns($visible_columns, $is_admin, $data) {
$output = '';
// Product column
if (isset($visible_columns['product']) && $visible_columns['product']) {
$output .= '' . $data['display_name'] . ' ';
}
// SKU column
if (isset($visible_columns['sku']) && $visible_columns['sku']) {
$output .= '' . esc_html($data['product_sku']) . ' ';
}
// Type column
if (isset($visible_columns['type']) && $visible_columns['type']) {
$type_text = $data['is_variation'] ? __('Variation', 'wc-multi-inventory') : __('Simple', 'wc-multi-inventory');
$output .= '' . $type_text . ' ';
}
// Price column
if (isset($visible_columns['price']) && $visible_columns['price']) {
$output .= '' . wc_price($data['price']) . ' ';
}
// Admin-only columns
if ($is_admin) {
// Cost column
if (isset($visible_columns['cost']) && $visible_columns['cost']) {
$output .= ' ';
}
// Profit column
if (isset($visible_columns['profit']) && $visible_columns['profit']) {
$output .= '' . wc_price($data['profit']) . ' ';
}
// Reseller price column
if (isset($visible_columns['resell_price']) && $visible_columns['resell_price']) {
$output .= ' ';
}
}
// Stock total column
if (isset($visible_columns['stock_total']) && $visible_columns['stock_total']) {
$output .= ' ';
}
// Location columns
if (isset($visible_columns['casa']) && $visible_columns['casa']) {
$output .= ' ';
}
if (isset($visible_columns['rabat']) && $visible_columns['rabat']) {
$output .= ' ';
}
if (isset($visible_columns['agadir']) && $visible_columns['agadir']) {
$output .= ' ';
}
// Location total column with sync button
if (isset($visible_columns['location_total']) && $visible_columns['location_total']) {
$output .= '';
$output .= '' . $data['location_total'] . ' ';
if ($is_admin && $data['location_total'] > $data['quantity']) {
$output .= '';
$output .= __('Sync', 'wc-multi-inventory') . ' ';
}
$output .= ' ';
}
// Minimum stock column
if (isset($visible_columns['min_stock']) && $visible_columns['min_stock']) {
$output .= ' ';
}
// Admin-only columns continued
if ($is_admin) {
// Coming quantity column
if (isset($visible_columns['coming']) && $visible_columns['coming']) {
$output .= ' ';
}
// Factory price column
if (isset($visible_columns['factory']) && $visible_columns['factory']) {
$output .= ' ';
}
// Total value column
if (isset($visible_columns['total_value']) && $visible_columns['total_value']) {
$output .= '' . wc_price($data['total_value']) . ' ';
}
}
// Actions column
if (isset($visible_columns['actions']) && $visible_columns['actions']) {
$output .= '' . __('Edit', 'wc-multi-inventory') . ' ';
}
return $output;
}
Elegoo Saturn Build Plate – 3dware, Impression 3D au Maroc
Skip to the content
3, Lot Promo Sud Ain Atig Temara +212 708 770 815 / +212 708 770 818 / +212 705 414 149
Monday - Sunday 9:00 - 17:00
Accueil / 3D Printers / Imprimantes 3D Résine / Resin Accessories / Elegoo Saturn Build Plate
«Castable Resin for Jewelry 500ml» a été ajouté à votre panier.
Voir le panier
Elegoo Saturn Build Plate 490.00 DH
En stock
Description
Plateau d’Impression pour Elegoo Saturn
Plateau de remplacement de la Elegoo Saturn (196x126mm)
Les vis de réglage ont été remplacées par des vis à six pans creux antidérapantes, ce qui permet d’obtenir un résultat de mise à niveau plus stable et plus durable.
Le motif sur la plaque de construction permet d’obtenir une meilleure adhérence pendant l’impression.
Option parfaite de changement et de nettoyage rapides pour les personnes qui ont besoin d’une grande efficacité d’impression.
Il est livré avec une clé Allen pour remplacer ou fixer les vis de la plaque de construction.