CakeProducts/templates/ProductSkus/add.php

137 lines
7.3 KiB
PHP

<?php
use Cake\Log\Log;
use function BenTools\CartesianProduct\combinations;
/**
* @var \App\View\AppView $this
* @var \App\Model\Entity\ProductSku[] $productSkus
* @var \App\Model\Entity\ProductSku $product
* @var array $toGetCartesianProductsFrom
*/
?>
<div class="row">
<aside class="column">
<div class="side-nav">
<h4 class="heading"><?= __('Actions') ?></h4>
<?= $this->Html->link(__('View Product'), [
'controller' => 'Products',
'action' => 'view',
$product->id,
], ['class' => 'side-nav-item']) ?>
<?= $this->Html->link(__('List Product SKUs'), ['action' => 'index'], ['class' => 'side-nav-item']) ?>
</div>
</aside>
<div class="column column-80">
<div class="productSkus form content">
<?= $this->Form->create($productSkus) ?>
<fieldset>
<legend><?= __('Add Product SKU(s) for Product: ' . $product->name) ?></legend>
<div id="product-skus-container" class="container">
<table class="table">
<thead>
<tr>
<th>SKU</th>
<th>Barcode</th>
<th>Price</th>
<th>Cost</th>
<?php
$cnt = 0;
foreach ($variantNameMapping as $singleVariantName) : ?>
<th><?= $singleVariantName; ?></th>
<?php endforeach; ?>
</tr>
</thead>
<tbody>
<?php
$cnt = 0;
$labelFalse = ['label' => false];
$found = [];
foreach (combinations($toGetCartesianProductsFrom) as $c => $combination) : ?>
<?php
// $singleVariantId
$foundSku = null;
// dd($existingSkusForCartesianComparison);
foreach($existingSkusForCartesianComparison as $existingSkuForCartesianComparisonId => $existingSkuForCartesianComparison) {
$allMatch = false;
Log::debug(print_r(['$combination' => $combination, '$existingSkuForCartesianComparison' => $existingSkuForCartesianComparison], true));
if ($existingSkuForCartesianComparison == $combination) {
$foundSku = $existingSkuForCartesianComparisonId;
}
}
$found[$c] = $foundSku;
$addInputOptions = [
'label' => false,
'type' => 'checkbox',
'checked' => true,
'readonly' => isset($foundSku),
];
$skuInputOptions = [
'label' => false,
'required' => isset($foundSku),
'value' => $foundSku && isset($existingProductSkus[$foundSku]['sku']) ? $existingProductSkus[$foundSku]['sku'] : '',
];
// if ($foundSku) {
// dd($existingProductSkus[$foundSku]['sku']);
// }
?>
<tr>
<td>
<?= $this->Form->hidden($cnt . '.id', ['value' => $foundSku]); ?>
<?= $this->Form->control($cnt . '.sku', $skuInputOptions); ?>
</td>
<td><?= $this->Form->control($cnt . '.barcode', $labelFalse); ?></td>
<td><?= $this->Form->control($cnt . '.price', $labelFalse); ?></td>
<td><?= $this->Form->control($cnt . '.cost', $labelFalse); ?></td>
<?php
$variantCnt = 0;
if (isset($foundSku) && isset($existingProductSkus[$foundSku])) : ?>
<?php foreach ($existingProductSkus[$foundSku]['product_sku_variant_values'] as $existingVariantValueRecord) : ?>
<td>
<?= $this->Form->hidden($cnt . '.product_sku_variant_values.' . $variantCnt . '.id', ['value' => $existingVariantValueRecord->id]); ?>
<?= $this->Form->hidden($cnt . '.product_sku_variant_values.' . $variantCnt . '.product_sku_id', ['value' => $foundSku]); ?>
<?= $this->Form->hidden($cnt . '.product_sku_variant_values.' . $variantCnt . '.product_variant_id', ['value' => $existingVariantValueRecord->product_variant_id ?? null]); ?>
<?= $this->Form->hidden($cnt . '.product_sku_variant_values.' . $variantCnt . '.product_category_variant_option_id', ['value' => $existingVariantValueRecord->product_category_variant_option_id ?? null]); ?>
<?= $optionMapping[$combination[$existingVariantValueRecord->product_variant_id]]; ?>
</td>
<?php
$variantCnt++;
endforeach; ?>
<?php else : ?>
<?php foreach ($variantNameMapping as $singleVariantId => $singleVariantName) : ?>
<td>
<?= isset($foundSku) ? $this->Form->hidden($cnt . '.product_sku_variant_values.' . $variantCnt . '.product_sku_id', ['value' => $foundSku]) : ''; ?>
<?= $this->Form->hidden($cnt . '.product_sku_variant_values.' . $variantCnt . '.product_variant_id', ['value' => $productVariantsMapping[$singleVariantId] ?? null]); ?>
<?= $this->Form->hidden($cnt . '.product_sku_variant_values.' . $variantCnt . '.product_category_variant_option_id', ['value' => $combination[$productVariantsMapping[$singleVariantId]] ?? null]); ?>
<?= $optionMapping[$combination[$productVariantsMapping[$singleVariantId]]]; ?>
</td>
<?php
$variantCnt++;
endforeach; ?>
<?php endif; ?>
</tr>
<?php
$cnt++;
endforeach;
// dd($found);
?>
</tbody>
</table>
</div>
</fieldset>
<?= $this->Form->button(__('Submit')) ?>
<?= $this->Form->end() ?>
</div>
</div>
</div>