mirror of
https://github.com/grocy/grocy.git
synced 2025-04-29 17:45:39 +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
85 lines
2.9 KiB
PHP
85 lines
2.9 KiB
PHP
@extends('layout.default')
|
|
|
|
@section('title', $__t('Transfer'))
|
|
@section('activeNav', 'transfer')
|
|
@section('viewJsName', 'transfer')
|
|
|
|
@section('content')
|
|
<div class="row">
|
|
<div class="col-xs-12 col-md-6 col-xl-4 pb-3">
|
|
<h1>@yield('title')</h1>
|
|
|
|
<form id="transfer-form" novalidate>
|
|
|
|
@include('components.productpicker', array(
|
|
'products' => $products,
|
|
'nextInputSelector' => '#location_id_from',
|
|
'disallowAddProductWorkflows' => true
|
|
))
|
|
|
|
@php /*@include('components.locationpicker', array(
|
|
'id' => 'location_from',
|
|
'locations' => $locations,
|
|
'isRequired' => true,
|
|
'label' => 'Transfer From Location'
|
|
))*/ @endphp
|
|
|
|
<div class="form-group">
|
|
<label for="location_id_from">{{ $__t('From location') }}</label>
|
|
<select required class="form-control location-combobox" id="location_id_from" name="location_id_from">
|
|
<option></option>
|
|
@foreach($locations as $location)
|
|
<option value="{{ $location->id }}">{{ $location->name }}</option>
|
|
@endforeach
|
|
</select>
|
|
<div class="invalid-feedback">{{ $__t('A location is required') }}</div>
|
|
</div>
|
|
|
|
@include('components.numberpicker', array(
|
|
'id' => 'amount',
|
|
'label' => 'Amount',
|
|
'hintId' => 'amount_qu_unit',
|
|
'min' => 1,
|
|
'value' => 1,
|
|
'invalidFeedback' => $__t('The amount cannot be lower than %s', '1'),
|
|
'additionalHtmlContextHelp' => '<div id="tare-weight-handling-info" class="text-info font-italic d-none">' . $__t('Tare weight handling enabled - please weigh the whole container, the amount to be posted will be automatically calculcated') . '</div>'
|
|
))
|
|
|
|
<div class="form-group">
|
|
<label for="use_specific_stock_entry">
|
|
<input type="checkbox" id="use_specific_stock_entry" name="use_specific_stock_entry"> {{ $__t('Use a specific stock item') }}
|
|
<span class="small text-muted">{{ $__t('The first item in this list would be picked by the default rule which is "First expiring first, then first in first out"') }}</span>
|
|
</label>
|
|
<select disabled class="form-control" id="specific_stock_entry" name="specific_stock_entry">
|
|
<option></option>
|
|
</select>
|
|
</div>
|
|
|
|
@php /*@include('components.locationpicker', array(
|
|
'locations' => $locations,
|
|
'isRequired' => true,
|
|
'label' => 'Transfer to Location'
|
|
))*/ @endphp
|
|
|
|
<div class="form-group">
|
|
<label for="location_id_to">{{ $__t('To location') }}</label>
|
|
<select required class="form-control location-combobox" id="location_id_to" name="location_id_to">
|
|
<option></option>
|
|
@foreach($locations as $location)
|
|
<option value="{{ $location->id }}">{{ $location->name }}</option>
|
|
@endforeach
|
|
</select>
|
|
<div class="invalid-feedback">{{ $__t('A location is required') }}</div>
|
|
</div>
|
|
|
|
<button id="save-transfer-button" class="btn btn-success">{{ $__t('OK') }}</button>
|
|
|
|
</form>
|
|
</div>
|
|
|
|
<div class="col-xs-12 col-md-6 col-xl-4 hide-when-embedded">
|
|
@include('components.productcard')
|
|
</div>
|
|
</div>
|
|
@stop
|