<?php
/**
 * Copyright 2011 Adobe
 * All Rights Reserved.
 */

use Magento\Framework\Escaper;

/**
 * @see \Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer
 */
/** @var $block \Magento\Bundle\Block\Adminhtml\Sales\Order\Items\Renderer */
/** @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer */
/** @var Escaper $escaper */
?>

<?php $_item = $block->getItem() ?>
<?php $items = $block->getChildren($_item); ?>
<?php $_count = count($items) ?>
<?php $_index = 0 ?>
<?php $canEditItemQty = true ?>
<?php
/** @var \Magento\Catalog\Helper\Data $catalogHelper */
$catalogHelper = $block->getData('catalogHelper');
?>

<?php $_prevOptionId = '' ?>

<?php if ($block->getOrderOptions() || $_item->getDescription()): ?>
    <?php $_showlastRow = true ?>
<?php else: ?>
    <?php $_showlastRow = false ?>
<?php endif; ?>

<?php foreach ($items as $_item): ?>
    <?php
    $shipTogether = ($_item->getOrderItem()->getProductType() == \Magento\Catalog\Model\Product\Type::TYPE_BUNDLE) ?
        !$_item->getOrderItem()->isShipSeparately() : !$_item->getOrderItem()->getParentItem()->isShipSeparately()
    ?>
    <?php $block->setPriceDataObject($_item) ?>
    <?php if ($_item->getOrderItem()->getParentItem()): ?>
        <?php
        if ($shipTogether) {
            $canEditItemQty = false;
        }
        ?>
        <?php $attributes = $block->getSelectionAttributes($_item) ?>
        <?php if ($_prevOptionId != $attributes['option_id']): ?>
        <tr>
            <td class="col-product">
                <div class="option-label"><?= $escaper->escapeHtml($attributes['option_label']) ?></div>
            </td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td class="last">&nbsp;</td>
        </tr>
            <?php $_prevOptionId = $attributes['option_id'] ?>
        <?php endif; ?>
    <?php endif; ?>
    <tr<?= (++$_index == $_count && !$_showlastRow) ? ' class="border"' : '' ?>>
        <?php if (!$_item->getOrderItem()->getParentItem()): ?>
        <td class="col-product">
            <div class="product-title"><?= $escaper->escapeHtml($_item->getName()) ?></div>
            <div class="product-sku-block">
                <span><?= $escaper->escapeHtml(__('SKU')) ?>:</span>
                <?= /* @noEscape */ implode('<br />', $catalogHelper->splitSku(
                    $escaper->escapeHtml($_item->getSku())
                )) ?>
            </div>
        </td>
        <?php else: ?>
        <td class="col-product">
            <div class="option-value"><?= $block->getValueHtml($_item) ?></div>
        </td>
        <?php endif; ?>
        <td class="col-price">
            <?php if ($block->canShowPriceInfo($_item) || $shipTogether): ?>
                <?= $block->getColumnHtml($_item, 'price') ?>
            <?php else: ?>
                &nbsp;
            <?php endif; ?>
        </td>
        <td class="col-qty">
            <?php if ($block->canShowPriceInfo($_item) || $shipTogether): ?>
                <table class="qty-table">
                    <tr>
                        <th><?= $escaper->escapeHtml(__('Ordered')) ?></th>
                        <td><span><?= (float)$_item->getOrderItem()->getQtyOrdered() * 1 ?></span></td>
                    </tr>
                    <?php if ((float) $_item->getOrderItem()->getQtyInvoiced()): ?>
                    <tr>
                        <th><?= $escaper->escapeHtml(__('Invoiced')) ?></th>
                        <td><?= (float)$_item->getOrderItem()->getQtyInvoiced() * 1 ?></td>
                    </tr>
                    <?php endif; ?>
                    <?php if ((float) $_item->getOrderItem()->getQtyShipped() &&
                        $block->isShipmentSeparately($_item)): ?>
                    <tr>
                        <th><?= $escaper->escapeHtml(__('Shipped')) ?></th>
                        <td><?= (float)$_item->getOrderItem()->getQtyShipped() * 1 ?></td>
                    </tr>
                    <?php endif; ?>
                    <?php if ((float) $_item->getOrderItem()->getQtyRefunded()): ?>
                    <tr>
                        <th><?= $escaper->escapeHtml(__('Refunded')) ?></th>
                        <td><?= (float)$_item->getOrderItem()->getQtyRefunded() * 1 ?></td>
                    </tr>
                    <?php endif; ?>
                    <?php if ((float) $_item->getOrderItem()->getQtyCanceled()): ?>
                    <tr>
                        <th><?= $escaper->escapeHtml(__('Canceled')) ?></th>
                        <td><?= (float)$_item->getOrderItem()->getQtyCanceled() * 1 ?></td>
                    </tr>
                    <?php endif; ?>
                </table>
            <?php elseif ($block->isShipmentSeparately($_item)): ?>
                <table class="qty-table">
                    <tr>
                        <th><?= $escaper->escapeHtml(__('Ordered')) ?></th>
                        <td><?= (float)$_item->getOrderItem()->getQtyOrdered() * 1 ?></td>
                    </tr>
                    <?php if ((float) $_item->getOrderItem()->getQtyShipped()): ?>
                    <tr>
                        <th><?= $escaper->escapeHtml(__('Shipped')) ?></th>
                        <td><?= (float)$_item->getOrderItem()->getQtyShipped() * 1 ?></td>
                    </tr>
                    <?php endif; ?>
                </table>
            <?php else: ?>
                &nbsp;
                        <?php endif; ?>
        </td>
        <td class="col-qty-invoice">
            <?php if ($block->canShowPriceInfo($_item) || $shipTogether): ?>
                <?php if ($block->canEditQty() && $canEditItemQty): ?>
                    <input type="text"
                           class="input-text admin__control-text qty-input"
                           name="invoice[items][<?= $escaper->escapeHtmlAttr($_item->getOrderItemId()) ?>]"
                           value="<?= (float)$_item->getQty() * 1 ?>" />
                <?php else: ?>
                    <?= (float)$_item->getQty() * 1 ?>
                <?php endif; ?>
            <?php else: ?>
                &nbsp;
            <?php endif; ?>
        </td>
        <td class="col-subtotal">
            <?php if ($block->canShowPriceInfo($_item)): ?>
                <?= $block->getColumnHtml($_item, 'subtotal') ?>
            <?php else: ?>
                &nbsp;
            <?php endif; ?>
        </td>
        <td class="col-tax">
            <?php if ($block->canShowPriceInfo($_item)): ?>
                <?= /* @noEscape */ $block->displayPriceAttribute('tax_amount') ?>
            <?php else: ?>
                &nbsp;
            <?php endif; ?>
        </td>
        <td class="col-discount">
            <?php if ($block->canShowPriceInfo($_item)): ?>
                <?= /* @noEscape */ $block->displayPriceAttribute('discount_amount') ?>
            <?php else: ?>
                &nbsp;
            <?php endif; ?>
        </td>
        <td class="col-total last">
            <?php if ($block->canShowPriceInfo($_item)): ?>
                <?= $block->getColumnHtml($_item, 'total') ?>
            <?php else: ?>
                &nbsp;
            <?php endif; ?>
        </td>
    </tr>
<?php endforeach; ?>
<?php if ($_showlastRow): ?>
    <tr class="border">
        <td class="col-product">
            <?php if ($block->getOrderOptions($_item->getOrderItem())): ?>
                <dl class="item-options">
                <?php foreach ($block->getOrderOptions($_item->getOrderItem()) as $option): ?>
                    <dt><?= $escaper->escapeHtml($option['label']) ?></dt>
                    <dd>
                    <?php if (isset($option['custom_view']) && $option['custom_view']): ?>
                        <?= $escaper->escapeHtml($option['value']) ?>
                    <?php else: ?>
                        <?= $escaper->escapeHtml($block->truncateString($option['value'], 55, '', $_remainder)) ?>
                        <?php if ($_remainder):?>
                            ... <span id="<?= $escaper->escapeHtmlAttr($_id = 'id' . uniqid())
                            ?>"><?= $escaper->escapeHtml($_remainder) ?></span>
                            <?php $escapedId = /* @noEscape */ $escaper->escapeJs($_id);
                            $scriptString = <<<script
                                require(['prototype'], function(){
                                    $('{$escapedId}').hide();
                                    $('{$escapedId}').up().observe('mouseover', function(){\$('{$escapedId}').show();});
                                    $('{$escapedId}').up().observe('mouseout',  function(){\$('{$escapedId}').hide();});
                                });
script;
                            ?>
                            <?= /* @noEscape */ $secureRenderer->renderTag('script', [], $scriptString, false) ?>
                        <?php endif;?>
                    <?php endif;?>
                    </dd>
                <?php endforeach; ?>
                </dl>
            <?php else: ?>
                &nbsp;
            <?php endif; ?>
            <?= $escaper->escapeHtml($_item->getDescription()) ?>
        </td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td class="last">&nbsp;</td>
    </tr>
<?php endif; ?>
