mirror of
https://github.com/grocy/grocy.git
synced 2025-04-29 09:39:57 +00:00
* viewjs consume: implement location and update stock specific * Transfer Products * services StockService#GetProductStockEntriesByLocation: add method * services StockService#AddProduct: check for stock and locations * services StockService: include location_id * services StockService#LocationExists: add method * services StockService#UndoBooking: fix based on stockRow * Reimplement StockServer->TransferProduct (one loop for the whole action to preserve stock_id) * Ensure that the location_id is never NULL in the stock and stock_log table (checked by an INSERT trigger, sets the products default location if empty) * Only consider stock amount at the given location on consume, if supplied * Restore more/old display text for "specific stock entry" * Don't allow transfering tare weight enabled products * Various small changes (code style, missing OpenAPI endpoint, remove location_id null checking) * Updated translations strings * Added transaction_id and correlation_id to stock_log entries to group them together * ProductCard - location to default location label change * Also undo correlated bookings on undo * Added API endpoints for listing and undoing transactions and use them on purchase/consume/inventory/stockoverview * Initial Stock detail page * Allow Undo for Tranfers * Price step to .01 * Some localization string changes & fixes
79 lines
3.2 KiB
PHP
79 lines
3.2 KiB
PHP
@extends('layout.default')
|
|
|
|
@section('title', $__t('Stock journal'))
|
|
@section('activeNav', 'stockjournal')
|
|
@section('viewJsName', 'stockjournal')
|
|
|
|
@section('content')
|
|
<div class="row">
|
|
<div class="col">
|
|
<h1>@yield('title')</h1>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row my-3">
|
|
<div class="col-xs-12 col-md-6 col-xl-3">
|
|
<label for="search">{{ $__t('Search') }}</label> <i class="fas fa-search"></i>
|
|
<input type="text" class="form-control" id="search">
|
|
</div>
|
|
<div class="col-xs-12 col-md-6 col-xl-3">
|
|
<label for="product-filter">{{ $__t('Filter by product') }}</label> <i class="fas fa-filter"></i>
|
|
<select class="form-control" id="product-filter">
|
|
<option value="all">{{ $__t('All') }}</option>
|
|
@foreach($products as $product)
|
|
<option value="{{ $product->id }}">{{ $product->name }}</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col">
|
|
<table id="stock-journal-table" class="table table-sm table-striped dt-responsive">
|
|
<thead>
|
|
<tr>
|
|
<th class="border-right"></th>
|
|
<th>{{ $__t('Product') }}</th>
|
|
<th>{{ $__t('Amount') }}</th>
|
|
<th>{{ $__t('Booking time') }}</th>
|
|
<th>{{ $__t('Booking type') }}</th>
|
|
<th class="@if(!GROCY_FEATURE_FLAG_STOCK_LOCATION_TRACKING) d-none @endif">{{ $__t('Location') }}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody class="d-none">
|
|
@foreach($stockLog as $stockLogEntry)
|
|
<tr class="@if($stockLogEntry->undone == 1) text-muted @endif">
|
|
<td class="fit-content border-right">
|
|
<a class="btn btn-secondary btn-sm undo-stock-booking-button @if($stockLogEntry->undone == 1) disabled @endif" href="#" data-booking-id="{{ $stockLogEntry->id }}" data-toggle="tooltip" data-placement="left" title="{{ $__t('Undo booking') }}">
|
|
<i class="fas fa-undo"></i>
|
|
</a>
|
|
</td>
|
|
<td>
|
|
<span class="name-anchor @if($stockLogEntry->undone == 1) text-strike-through @endif">{{ FindObjectInArrayByPropertyValue($products, 'id', $stockLogEntry->product_id)->name }}</span>
|
|
@if($stockLogEntry->undone == 1)
|
|
<br>
|
|
{{ $__t('Undone on') . ' ' . $stockLogEntry->undone_timestamp }}
|
|
<time class="timeago timeago-contextual" datetime="{{ $stockLogEntry->undone_timestamp }}"></time>
|
|
@endif
|
|
</td>
|
|
<td>
|
|
<span class="locale-number locale-number-quantity-amount">{{ $stockLogEntry->amount }}</span> {{ $__n($stockLogEntry->amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $stockLogEntry->product_id)->qu_id_stock)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $stockLogEntry->product_id)->qu_id_stock)->name_plural) }}
|
|
</td>
|
|
<td>
|
|
{{ $stockLogEntry->row_created_timestamp }}
|
|
<time class="timeago timeago-contextual" datetime="{{ $stockLogEntry->row_created_timestamp }}"></time>
|
|
</td>
|
|
<td>
|
|
{{ $__t($stockLogEntry->transaction_type) }}
|
|
</td>
|
|
<td class="@if(!GROCY_FEATURE_FLAG_STOCK_LOCATION_TRACKING) d-none @endif">
|
|
{{ FindObjectInArrayByPropertyValue($locations, 'id', $stockLogEntry->location_id)->name }}
|
|
</td>
|
|
</tr>
|
|
@endforeach
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
@stop
|