<vn-crud-model
    vn-id="model"
    url="Tickets/{{$ctrl.$params.id}}/getSales"
    data="$ctrl.sales"
    auto-load="true">
</vn-crud-model>
<vn-watcher
    vn-id="watcher"
    data="$ctrl.sales">
</vn-watcher>
<div class="vn-w-xl">
    <vn-card class="vn-pa-lg">
        <vn-horizontal class="header">
            <vn-tool-bar class="vn-mb-md">
                <vn-button
                    disabled="!$ctrl.isEditable || $ctrl.ticketState == 'OK'"
                    label="Ok"
                    vn-http-click="$ctrl.changeState('OK')"
                    vn-tooltip="Change ticket state to 'Ok'">
                </vn-button>
                <vn-button-menu
                    disabled="!$ctrl.isEditable"
                    label="State"
                    value-field="code"
                    url="States/editableStates"
                    on-change="$ctrl.changeState(value)">
                </vn-button-menu>
                <vn-button icon="keyboard_arrow_down"
                    label="More"
                    ng-click="moreOptions.show($event)"
                    ng-show="$ctrl.hasSelectedSales()">
                </vn-button>
                <vn-button 
                    disabled="!$ctrl.hasSelectedSales() || !$ctrl.isEditable"
                    ng-click="deleteLines.show()"
                    vn-tooltip="Remove lines"
                    icon="delete">
                </vn-button>
                <vn-button
                    disabled="!$ctrl.hasSelectedSales() || !$ctrl.isEditable"
                    ng-click="$ctrl.showTransferPopover($event)"
                    vn-tooltip="Transfer lines"
                    icon="call_split">
                </vn-button>
            </vn-tool-bar>
            <vn-one class="taxes" ng-if="$ctrl.sales.length > 0">
                <p><vn-label translate>Subtotal</vn-label> {{$ctrl.ticket.totalWithoutVat | currency: 'EUR':2}}</p>
                <p><vn-label translate>VAT</vn-label> {{$ctrl.ticket.totalWithVat - $ctrl.ticket.totalWithoutVat | currency: 'EUR':2}}</p>
                <p><vn-label><strong>Total</strong></vn-label> <strong>{{$ctrl.ticket.totalWithVat | currency: 'EUR':2}}</strong></p>
            </vn-one>
        </vn-horizontal>
        <vn-table model="model">
            <vn-thead>
                <vn-tr>
                    <vn-th shrink>
                        <vn-multi-check model="model" 
                            on-change="$ctrl.resetChanges()">
                        </vn-multi-check>
                    </vn-th>
                    <vn-th shrink></vn-th>
                    <vn-th shrink></vn-th>
                    <vn-th shrink>Visible</vn-th>
                    <vn-th shrink>Available</vn-th>
                    <vn-th>Id</vn-th>
                    <vn-th shrink>Quantity</vn-th>
                    <vn-th expand>Item</vn-th>
                    <vn-th number>Price</vn-th>
                    <vn-th number>Disc</vn-th>
                    <vn-th number>Amount</vn-th>
                    <vn-th shrink>Packaging</vn-th>
                </vn-tr>
            </vn-thead>
            <vn-tbody>
                <vn-tr ng-repeat="sale in $ctrl.sales">
                    <vn-td shrink>
                        <vn-check tabindex="-1"
                            ng-model="sale.checked">
                        </vn-check>
                    </vn-td>
                    <vn-td shrink>
                        <a ui-sref="claim.card.basicData({id: sale.claim.claimFk})">
                            <vn-icon icon="icon-claims"
                                ng-show="sale.claim.claimFk"
                                vn-tooltip="{{::$ctrl.$t('Claim')}}: {{::sale.claim.claimFk}}">
                            </vn-icon>
                        </a>
                        <vn-icon 
                            ng-show="::(sale.visible < 0)" 
                            color-main
                            icon="warning"
                            vn-tooltip="Visible: {{::sale.visible || 0}}">
                        </vn-icon>
                        <vn-icon ng-show="sale.reserved" 
                            icon="icon-reserve"
                            translate-attr="{title: 'Reserved'}">
                        </vn-icon>
                        <vn-icon
                            ng-show="::sale.itemShortage"
                            translate-attr="{title: 'Not visible'}"
                            class="bright"
                            icon="icon-unavailable">
                        </vn-icon>
                        <vn-icon
                            ng-show="::sale.hasComponentLack"
                            translate-attr="{title: 'Component lack'}"
                            class="bright"
                            icon="icon-components">
                        </vn-icon>
                    </vn-td>
                    <vn-td shrink>
                        <img 
                            ng-src="{{$root.imagePath('catalog', '50x50', sale.itemFk)}}"
                            zoom-image="{{$root.imagePath('catalog', '1600x900', sale.itemFk)}}"
                            on-error-src/>
                    </vn-td>
                    <vn-td shrink>
                        <vn-chip 
                            class="transparent" 
                            ng-class="{'alert': sale.visible < 0}">
                                {{::sale.visible}}
                        </vn-chip>
                    </vn-td>
                    <vn-td shrink>
                        <vn-chip 
                            class="transparent" 
                            ng-class="{'alert': sale.available < 0}">
                                {{::sale.available}}
                        </vn-chip>
                    </vn-td>
                    <vn-td>
                        <span class="link" ng-if="sale.id"
                            ng-click="itemDescriptor.show($event, sale.itemFk, sale.id)">
                            {{sale.itemFk}}
                        </span>
                        <vn-autocomplete ng-if="!sale.id" class="dense"
                            vn-focus
                            url="Items/withName"
                            ng-model="sale.itemFk"
                            show-field="name"
                            value-field="id"
                            search-function="$ctrl.itemSearchFunc($search)"
                            on-change="$ctrl.changeQuantity(sale)"
                            order="id DESC"
                            tabindex="1">
                            <tpl-item>
                                {{::id}} - {{::name}}
                            </tpl-item>
                        </vn-autocomplete>
                    </vn-td>
                    <vn-td-editable disabled="!$ctrl.isEditable" shrink>
                        <text>{{sale.quantity}}</text>
                        <field>
                            <vn-input-number class="dense"
                                vn-focus
                                ng-model="sale.quantity"
                                on-change="$ctrl.changeQuantity(sale)"
                                clear-disabled="true">
                            </vn-input-number>
                        </field>
                    </vn-td-editable>
                    <vn-td-editable vn-fetched-tags disabled="!sale.id || !$ctrl.isEditable">
                        <text>
                            <div>
                                <vn-one title="{{sale.concept}}">{{sale.concept}}</vn-one>
                                <vn-one
                                    ng-if="::sale.item.subName"
                                    title="{{::sale.item.subName}}">
                                    <h3>{{::sale.item.subName}}</h3>
                                </vn-one>
                            </div>
                            <vn-fetched-tags
                                max-length="6"
                                item="::sale.item"
                                tabindex="-1">
                            </vn-fetched-tags>
                        </text>
                        <field>
                            <vn-textfield class="dense" vn-focus
                                vn-id="concept"
                                ng-model="sale.concept"
                                on-change="$ctrl.updateConcept(sale)"
                                clear-disabled="true">
                            </vn-textfield>
                        </field>
                    </vn-td-editable>
                    <vn-td number>
                        <span ng-class="{'link': $ctrl.isEditable}"
                            translate-attr="{title: $ctrl.isEditable ? 'Edit price' : ''}"
                            ng-click="$ctrl.showEditPricePopover($event, sale)">
                            {{sale.price | currency: 'EUR':2}}
                        </span>
                    </vn-td>
                    <vn-td number>
                        <span ng-class="{'link': !$ctrl.isLocked}"
                            translate-attr="{title: !$ctrl.isLocked ? 'Edit discount' : ''}"
                            ng-click="$ctrl.showEditDiscountPopover($event, sale)"
                            ng-if="sale.id">
                            {{(sale.discount / 100) | percentage}} 
                        </span>
                    </vn-td>
                    <vn-td number>
                        {{$ctrl.getSaleTotal(sale) | currency: 'EUR':2}}
                    </vn-td>
                    <vn-td shrink>
                        {{::sale.item.itemPackingTypeFk | dashIfEmpty}}
                    </vn-td>
                </vn-tr>
            </vn-tbody>
        </vn-table>
        <div>
            <vn-icon-button
                vn-none
                vn-tooltip="Add item"
                vn-bind="+"
                icon="add_circle"
                ng-click="$ctrl.add()"
                disabled="!$ctrl.isEditable">
            </vn-icon-button>
        </div>
    </vn-card>
</div>
<vn-float-button
    ng-show="$ctrl.isEditable"
    ng-click="$ctrl.newOrderFromTicket()"
    icon="add"
    vn-tooltip="Add item to basket"
    vn-bind="+"
    fixed-bottom-right>
</vn-float-button>
<vn-item-descriptor-popover
    vn-id="item-descriptor"
    warehouse-fk="$ctrl.ticket.warehouseFk",
    ticket-fk="$ctrl.ticket.id">
</vn-item-descriptor-popover>

<!-- Price Popover -->
<vn-popover
    vn-id="edit-price-popover"
    on-open="$ctrl.getMana()">
    <div class="edit-popover">
        <vn-spinner class="vn-pa-xs"
            ng-if="$ctrl.edit.mana == null"
            enable="true">
        </vn-spinner>
        <div ng-if="$ctrl.edit.mana != null">
            <section class="header vn-pa-md">
                <h5>MANÁ: {{::$ctrl.edit.mana | currency: 'EUR': 0}}</h5>
            </section>
            <div class="vn-pa-md">
                <vn-input-number
                    vn-focus
                    label="Price"
                    ng-model="$ctrl.edit.price"
                    step="0.01"
                    on-change="$ctrl.updatePrice()"
                    clear-disabled="true"
                    suffix="€">
                </vn-input-number>
                <div class="simulator">
                    <p class="simulatorTitle" translate>New price</p>
                    <p>
                        <strong>{{$ctrl.getNewPrice() | currency: 'EUR': 2}}</strong>
                    </p>
                </div>
            </div>
        </div>
    </div>
</vn-popover>

<!-- Discount popover -->
<vn-popover
    vn-id="editDiscount"
    on-open="$ctrl.getMana()">
    <div class="edit-popover">
        <vn-spinner class="vn-pa-xs"
            ng-if="$ctrl.edit.mana == null"
            enable="true">
        </vn-spinner>
        <div ng-if="$ctrl.edit.mana != null">
            <section class="header vn-pa-md">
                <h5>Mana: {{::$ctrl.edit.mana | currency: 'EUR':0}}</h5>
            </section>
            <div class="vn-pa-md">
                <vn-input-number
                    vn-focus
                    label="Discount"
                    ng-model="$ctrl.edit.discount"
                    clear-disabled="true"
                    suffix="%">
                </vn-input-number>
                <vn-vertical ng-if="$ctrl.currentWorkerMana != 0">
                    <vn-radio
                        label="Promotion mana"
                        val="mana"
                        ng-model="$ctrl.manaCode">
                    </vn-radio>
                    <vn-radio
                        label="Claim mana"
                        val="manaClaim"
                        ng-model="$ctrl.manaCode">
                    </vn-radio>
                </vn-vertical>
                <div class="simulator">
                    <p class="simulatorTitle" translate>New price</p>
                    <p>
                        <strong>{{$ctrl.getNewPrice() | currency: 'EUR': 2}}</strong>
                    </p>
                </div>
            </div>
        </div>
        <vn-horizontal >
            <vn-button
                label="Cancel"
                ng-click="$ctrl.cancel()">
            </vn-button>
            <vn-button
                label="Save"
                ng-click="$ctrl.save()">
            </vn-button>
        </vn-horizontal>
    </div>
</vn-popover>

<!-- Multiple discount dialog -->
<vn-dialog vn-id="editDiscountDialog"
    on-open="$ctrl.getMana()"
    message="Edit discount">
    <tpl-body>
        <vn-spinner class="vn-pa-xs"
            ng-if="$ctrl.edit.mana == null"
            enable="true">
        </vn-spinner>
        <div ng-if="$ctrl.edit.mana != null">
            <div class="vn-pa-md">
                <vn-input-number vn-focus
                    label="Discount"
                    ng-model="$ctrl.edit.discount"
                    on-change="$ctrl.changeMultipleDiscount()"
                    clear-disabled="true"
                    suffix="%">
                </vn-input-number>
            </div>
            <section class="header vn-pa-md">
                <span>Mana: <strong>{{::$ctrl.edit.mana | currency: 'EUR': 0}}</strong></span>
            </section>
        </div>
    </tpl-body>
</vn-dialog>

<!-- Transfer Popover -->
<vn-popover vn-id="transfer">
    <div class="vn-pa-lg transfer">
    <vn-horizontal>
        <vn-one>
            <h4 translate>Sales to transfer</h4>
            <vn-table>
                <vn-thead>
                    <vn-tr>
                        <vn-th number shrink>Id</vn-th>
                        <vn-th>Item</vn-th>
                        <vn-th number shrink>Quantity</vn-th>
                    </vn-tr>
                </vn-thead>
                <vn-tbody>
                    <vn-tr ng-repeat="sale in $ctrl.transfer.sales">
                        <vn-td number shrink>{{::sale.itemFk | zeroFill:6}}</vn-td>
                        <vn-td>
                            <span title="{{::sale.concept}}">{{::sale.concept}}</span>
                        </vn-td>
                        <vn-td-editable number shrink>
                            <text>{{sale.quantity}}</text>
                            <field>
                                <vn-input-number
                                    vn-focus
                                    ng-model="sale.quantity">
                                </vn-input-number>
                            </field>
                        </vn-td-editable>
                    </vn-tr>
                </vn-tbody>
            </vn-table>
        </vn-one>
        <vn-one>
            <vn-horizontal>
                <h4 vn-one translate>Destination ticket</h4>
                <vn-icon vn-none
                    color-marginal
                    vn-tooltip="You have to allow pop-ups in your web browser to use this functionality"
                    icon="info">
                </vn-icon>
            </vn-horizontal>
            <table class="destinationTable vn-table">
                <thead>
                    <tr>
                        <th translate shrink>Id</th>
                        <th translate>Shipped</th>
                        <th translate shrink>Agency</th>
                        <th translate expand>Address</th>
                    </tr>
                </thead>
                <tbody>
                    <tr 
                        class="clickable" 
                        ng-repeat="ticket in $ctrl.transfer.lastActiveTickets track by ticket.id"
                        ng-click="$ctrl.transferSales(ticket.id)">
                        <td shrink>{{::ticket.id}}</td>
                        <td>{{::ticket.shipped | date: 'dd/MM/yyyy'}}</td>
                        <td shrink>{{::ticket.agencyName}}</td>
                        <td expand>{{::ticket.address}}
                            <span vn-tooltip="
                                {{::ticket.nickname}} 
                                {{::ticket.name}} 
                                {{::ticket.street}} 
                                {{::ticket.postalCode}} 
                                {{::ticket.city}}">
                                {{::ticket.nickname}} 
                                {{::ticket.name}} 
                                {{::ticket.street}} 
                                {{::ticket.postalCode}} 
                                {{::ticket.city}}
                            </span>
                        </td>
                    </tr>
                    <tr>
                        <td
                            ng-if="!$ctrl.transfer.lastActiveTickets.length" 
                            class="empty-rows"
                            colspan="4"
                            translate>
                            No results
                        </td>
                    </tr>
                </tbody>
            </table>
            <form name="form">
                <vn-horizontal class="vn-py-md">
                    <vn-input-number vn-one
                        label="Transfer to ticket"
                        ng-model="$ctrl.transfer.ticketId"
                        type="number">
                    </vn-input-number>
                    <vn-icon-button vn-none
                        icon="arrow_forward_ios"
                        ng-click="$ctrl.transferSales($ctrl.transfer.ticketId)">
                    </vn-icon-button>
                </vn-horizontal>
            </form>
            <vn-horizontal class="vn-py-md">
                <vn-button
                    label="New ticket"
                    ng-click="$ctrl.transferSales()">
                </vn-button>
            </vn-horizontal>
        </vn-one>
    </vn-horizontal>
    </div>
</vn-popover>

<!-- SMS Dialog -->
<vn-ticket-sms
    vn-id="sms"
    sms="$ctrl.newSMS">
</vn-ticket-sms>

<vn-confirm
    vn-id="delete-lines"
    question="You are going to delete lines of the ticket"
    message="Continue anyway?"
    on-accept="$ctrl.removeSales()">
</vn-confirm>

<vn-confirm
    vn-id="delete-ticket"
    question="Do you want to delete it?"
    message="This ticket is now empty"
    on-accept="$ctrl.transferSales($ctrl.transfer.ticketId)">
</vn-confirm>

<vn-menu vn-id="moreOptions">
    <vn-item translate
        name="sms"
        ng-click="$ctrl.showSMSDialog()">
        Send shortage SMS
    </vn-item>
    <vn-item translate
        name="calculatePrice"
        ng-click="$ctrl.calculateSalePrice()"
        ng-if="$ctrl.isEditable">
        Recalculate price
    </vn-item>
    <vn-item translate
        name="discount"
        ng-click="$ctrl.showEditDiscountDialog($event)">
        Update discount
    </vn-item>
    <vn-item translate
        name="claim"
        ng-click="$ctrl.createClaim()"
        ng-if="$ctrl.isClaimable">
        Add claim
    </vn-item>
    <vn-item translate
        name="reserve"
        ng-click="$ctrl.markAsReserved()"
        ng-if="$ctrl.isEditable">
        Mark as reserved
    </vn-item>
    <vn-item translate
        name="unreserve"
        ng-click="$ctrl.unmarkAsReserved()"
        ng-if="$ctrl.isEditable && $ctrl.hasReserves()">
        Unmark as reserved
    </vn-item>
    <vn-item translate
        name="refund"
        ng-click="$ctrl.createRefund()"
        vn-acl="invoicing, claimManager, salesAssistant"
        vn-acl-action="remove">
        Refund
    </vn-item>
</vn-menu>