<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">

    <t t-name="point_of_sale.TicketScreen">
        <t t-set="_filteredOrderList" t-value="getFilteredOrderList()" />
        <div class="ticket-screen screen h-100 bg-100">
            <div class="screen-full-width d-flex w-100 h-100">
                <t t-set="usePreset" t-value="pos.config.use_presets and pos.models['pos.preset'].length > 1" />
                <div t-if="!ui.isSmall || pos.ticket_screen_mobile_pane === 'left'" class="rightpane pane-border d-flex flex-column flex-grow-1 w-100 h-100 h-lg-100 pe-lg-0 bg-view border-end overflow-y-auto">
                    <div class="controls d-grid d-sm-flex align-items-center justify-content-between gap-2 gap-sm-3 p-2 border-bottom bg-view">
                        <SearchBar
                            config="getSearchBarConfig()"
                            placeholder.translate="Search Orders..."
                            onSearch.bind="onSearch"
                            onFilterSelected.bind="onFilterSelected" />
                        <div class="buttons d-flex gap-1" t-if="usePreset">
                            <button t-foreach="pos.models['pos.preset'].getAll()" t-as="preset" t-key="preset.id"
                                class="btn btn-lg btn-secondary text-nowrap" t-on-click="() => this.onPresetSelected(preset)"
                                t-attf-class="{{this.state.selectedPreset === preset ? 'active' : ''}}">
                                <t t-esc="preset.name"/>
                            </button>
                        </div>
                        <div class="item d-none d-xl-flex align-items-center justify-content-end">
                            <span class="page me-2" role="button" t-on-click="onClickPageNbr"><t t-esc="getPageNumber()" /></span>
                            <div class="page-controls d-flex align-items-center gap-1">
                                <button class="previous btn btn-secondary" t-on-click="() => this.onPrevPage()">
                                    <i class="fa fa-fw fa-caret-left" role="img" aria-label="Previous Order List" title="Previous Order List"></i>
                                </button>
                                <button class="next btn btn-secondary" t-on-click="() => this.onNextPage()">
                                    <i class="fa fa-fw fa-caret-right" role="img" aria-label="Next Order List" title="Next Order List"></i>
                                </button>
                            </div>
                        </div>
                    </div>
                    <div class="orders overflow-y-auto flex-grow-1 rounded-bottom-3 bg-view">
                        <t t-if="_filteredOrderList.length !== 0">
                            <table t-if="!ui.isSmall"  class="table table-striped table-hover">
                                <tbody>
                                    <t t-foreach="_filteredOrderList" t-as="order" t-key="order.uuid">
                                        <tr role="button" class="order-row" t-attf-class="{{ isHighlighted(order) ? 'highlight active': '' }}" t-att-orderUuid="order.uuid"
                                            t-on-click="() => this.onClickOrder(order)" t-on-dblclick="() => this.onDblClickOrder(order)" >
                                            <td class="align-middle">
                                                <div class="fs-6 fw-bolder"><t t-esc="this.pos.getDate(order.date_order)"></t></div>
                                                <div class="small text-muted"><t t-esc="this.pos.getTime(order.date_order)"></t></div>
                                            </td>
                                            <td class="order-name align-middle">
                                                <div class="fw-bolder"><t t-esc="order.getName()"></t></div>
                                                <div class="small text-muted"><t t-esc="order.pos_reference"></t></div>
                                            </td>
                                            <td class="align-middle">
                                                <div class="fw-bolder"><t t-esc="order.partner_id?.name"></t></div>
                                                <div id="order-tags" t-if="usePreset" t-attf-class="badge rounded o_colorlist_item_color_{{order.preset_id?.color}}" style="font-size: 0.75rem !important;">
                                                    <t t-esc="order.preset_id?.name"></t>
                                                </div>
                                            </td>
                                            <td class="align-middle address-cell">
                                                <span t-if="order.preset_id?.identification === 'address'"
                                                    class="address-text"
                                                    t-out="order.partner_id?.pos_contact_address"/>
                                            </td>
                                            <td class="align-middle">
                                                <t t-if="order.presetTime">
                                                    <div t-if="order.isFutureDate" class="fw-bolder" t-esc="order.presetDate" />
                                                    <div t-attf-class="fs-6 badge rounded {{ this.getPresetTimeColor(order) }}" t-esc="order.presetTime"/>
                                                </t>
                                            </td>
                                            <td t-if="showCardholderName()">
                                                <div><t t-esc="getCardholderName(order)"></t></div>
                                            </td>
                                            <td>
                                                <t t-esc="getCashier(order)"></t>
                                            </td>
                                            <td class="align-middle">
                                                <div class="fw-bolder"><t t-esc="getTotal(order)"></t></div>
                                            </td>
                                            <td class="align-middle text-end">
                                                <t t-set="status" t-value="getStatus(order)" />
                                                <div t-attf-class="badge rounded fs-6 text-bg-{{
                                                    status === 'Ongoing' || status === 'Payment'
                                                    ? 'info'
                                                    : status === 'Receipt' || status === 'Paid'
                                                    ? 'success'
                                                    : 'secondary'
                                                }}">
                                                    <t t-esc="status"></t>
                                                </div>
                                            </td>
                                            <td class="text-end delete-column" name="delete-column">
                                                <button t-if="!shouldHideDeleteButton(order) and this.pos.cashier._role !== 'minimal'" t-on-click.stop="() => this.onDeleteOrder(order)" class="btn btn-link btn-lg text-danger">
                                                    <i class="fa fa-trash" aria-hidden="true"/>
                                                </button>
                                            </td>
                                        </tr>
                                    </t>
                                </tbody>

                            </table>
                            <t t-if="ui.isSmall" t-foreach="_filteredOrderList" t-as="order" t-key="order.uuid">
                                <div role="button" class="mobileOrderList order-row d-flex flex-row ps-1" t-attf-class="{{ isHighlighted(order) ? 'highlight': '' }}"
                                    t-on-click="() => this.onClickOrder(order)" t-on-dblclick="() => this.onDblClickOrder(order)" >
                                    <div class="p-2">
                                            <div class="fw-bolder"><t t-esc="this.pos.getDate(order.date_order)"></t></div>
                                            <div class="small text-muted"><t t-esc="this.pos.getTime(order.date_order)"></t></div>
                                    </div>
                                    <div class="order-name p-2 d-flex flex-column flex-grow-1 justify-content-center align-items-start">
                                        <div class="fw-bolder"><t t-esc="order.getName()"></t></div>
                                        <div class="small text-muted"><t t-esc="order.pos_reference"></t></div>
                                    </div>
                                    <div class="p-2 d-flex flex-column flex-grow-1 justify-content-center align-items-end">
                                        <div class="fw-bolder"><t t-esc="getTotal(order)"></t></div>
                                                <t t-set="status" t-value="getStatus(order)" />
                                                <div t-attf-class="badge rounded fs-6 text-bg-{{
                                                    status === 'Ongoing' || status === 'Payment'
                                                    ? 'info'
                                                    : status === 'Receipt' || status === 'Paid'
                                                    ? 'success'
                                                    : 'secondary'
                                                }}">
                                                    <t t-esc="status"></t>
                                                </div>
                                    </div>
                                    <div class="mx-2" name="delete-column">
                                        <div t-if="!shouldHideDeleteButton(order) and this.pos.cashier._role !== 'minimal'" class="d-flex align-items-center justify-content-center h-100" role="button" name="delete" t-on-click.stop="() => this.onDeleteOrder(order)">
                                            <div class="btn btn-danger btn-lg">
                                                <i class="fa fa-trash" aria-hidden="true"/>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </t>
                        </t>
                        <div t-else="" class="d-flex h-100 flex-column align-items-center justify-content-center">
                            <CenteredIcon
                                icon="this.pos.data.network.loading ? 'fa-circle-o-notch fa-spin' : 'fa-shopping-cart fa-4x'"
                                text="this.pos.data.network.loading ? 'Loading...' : 'No orders found'"
                                class="'w-100'"/>
                            <button class="btn btn-secondary" t-on-click="onClickNewOrder">New Order</button>
                        </div>
                    </div>
                    <div class="switchpane d-flex gap-2 m-2" t-if="ui.isSmall">
                        <t t-set="_selectedSyncedOrder" t-value="getSelectedOrder()" />
                        <button class="btn-switchpane load-order-button primary btn btn-primary btn-lg lh-lg w-50 py-3"
                            t-att-disabled="!_selectedSyncedOrder"
                            t-if="!isOrderSynced"
                            t-on-click="() => this.setOrder(_selectedSyncedOrder)">
                            <span class="d-block">Load Order</span>
                        </button>
                        <button class="btn-switchpane btn btn-lg lh-lg py-3 secondary review-button" t-att-class="isOrderSynced ? 'w-100 btn-primary' : 'w-50 btn-light'" t-on-click="switchPane">
                            <span class="d-block">Review</span>
                        </button>
                    </div>
                </div>
                <!-- Hide the cart pane if no orders to list after having a search term -->
                <div t-if="(!ui.isSmall || pos.ticket_screen_mobile_pane === 'right')" class="leftpane d-flex flex-column flex-grow-1 gap-2 w-100 h-100 h-lg-100 bg-view">
                    <t t-set="_selectedSyncedOrder" t-value="getSelectedOrder()" />
                    <t t-set="_selectedOrderlineId" t-value="getSelectedOrderlineId()" />
                    <t t-if="_selectedSyncedOrder?.getOrderlines()?.length and !this.pos.scanning" >
                        <div t-if="isOrderSynced" t-att-class="{ 'highlight text-danger': !getHasItemsToRefund() }" class="py-2 px-3 rounded-3 bg-view text-center">
                            Select the product(s) to refund and set the quantity
                        </div>
                        <OrderDisplay order="_selectedSyncedOrder" t-if="_selectedSyncedOrder" t-slot-scope="scope">
                            <t t-set="line" t-value="scope.line" />
                            <Orderline line="line" t-on-click="() => this.onClickOrderline(line)" class="{'selected': line.id === _selectedOrderlineId}">
                                <t t-set="toRefundDetail" t-value="line.order_id?.uiState?.lineToRefund?.[line.uuid]" />
                                <li t-if="!pos.isProductQtyZero(line.refundedQty)"
                                    class="info refund-note mt-1">
                                    <strong t-esc="env.utils.formatProductQty(line.refundedQty)" />
                                    <span> Refunded</span>
                                </li>
                                <li t-if="!pos.isProductQtyZero(toRefundDetail?.qty)" class="info to-refund-highlight refund-note mt-1 fw-bold text-primary">
                                    <t t-set="_destinationOrderUid" t-value="toRefundDetail.destinationOrder?.uuid"/>
                                    <t t-set="refundQty" t-value="env.utils.formatProductQty(toRefundDetail.qty)"/>
                                    <t t-if="_destinationOrderUid">
                                        Refunding <t t-esc="refundQty" /> in
                                        <span t-esc="_destinationOrderUid"
                                            class="order-link ms-1 text-decoration-underline cursor-pointer"
                                            t-on-click.stop="() => this.onClickRefundOrderUid(_destinationOrderUid)" />
                                    </t>
                                    <t t-else="">
                                        To Refund: <t t-esc="refundQty" />
                                    </t>
                                </li>
                            </Orderline>
                        </OrderDisplay>
                        <div class="pads">
                            <t t-if="isOrderSynced">
                                <div class="control-buttons d-flex gap-2 pb-2">
                                    <button class="edit-order-payment control-button btn btn-secondary btn-lg lh-lg flex-grow-1 flex-shrink-1" t-on-click="() => this.pos.orderDetails(_selectedSyncedOrder)">
                                        <i class="fa fa-pencil-square-o me-1" /> Details
                                    </button>
                                    <InvoiceButton
                                        onInvoiceOrder.bind="onInvoiceOrder"
                                        order="_selectedSyncedOrder" />
                                    <button class="control-button btn btn-secondary btn-lg lh-lg flex-grow-1 flex-shrink-1" t-on-click="() => doPrint.call(_selectedSyncedOrder)">
                                        <i t-attf-class="fa {{doPrint.status === 'loading' ? 'fa-fw fa-spin fa-circle-o-notch' : 'fa-print'}} me-1" />Print Receipt
                                    </button>
                                </div>
                                <div class="subpads d-flex flex-column">
                                    <Numpad class="'pb-2'" buttons="getNumpadButtons()"/>
                                        <ActionpadWidget
                                            partner="getSelectedOrder()?.getPartner()"
                                            actionName.translate="Refund"
                                            actionToTrigger.bind="onDoRefund"
                                        />
                                </div>
                            </t>
                            <div t-else="" class="pads d-flex gap-2 m-2 mt-0" >
                                <BackButton t-if="ui.isSmall" onClick="() => pos.onClickBackButton()"/>
                                <button class="button btn btn-secondary btn-lg d-flex flex-row align-items-center justify-content-center"
                                    t-on-click="() => this.onClickReprintAll(_selectedSyncedOrder)"
                                    t-if="this.pos.unwatched.printers.length and _selectedSyncedOrder.uiState.lastPrints.length">
                                    <i class="fa fa-cutlery" aria-hidden="true"/>
                                </button>
                                <button class="button validation load-order-button w-100 btn btn-lg btn-primary py-3"
                                    t-att-disabled="!_selectedSyncedOrder"
                                    t-on-click="() => this.setOrder(_selectedSyncedOrder)">
                                    <span class="d-block">Load Order</span>
                                </button>
                            </div>
                        </div>
                    </t>
                    <t t-else="">
                        <BarcodeVideoScanner t-if="this.pos.scanning" onError.bind="()=>{}" onResult.bind="onClickScanOrder" facingMode="'environment'"/>
                        <CenteredIcon t-if="!this.pos.scanning" icon="'fa-shopping-cart fa-4x'" text.translate="Select an order or scan QR code" class="'bg-100 h-100 rounded'"/>
                        <BackButton t-if="ui.isSmall" onClick="() => pos.onClickBackButton()"/>
                    </t>
                </div>
            </div>
        </div>
    </t>

</templates>
