2020-01-27 19:19:09 +01:00
@ extends ( 'layout.default' )
@ section ( 'title' , $__t ( 'Stock entries' ))
@ section ( 'viewJsName' , 'stockentries' )
2020-01-28 19:27:18 +01:00
@ push ( 'pageStyles' )
2020-08-31 20:32:50 +02:00
< link href = " { { $U ('/node_modules/animate.css/animate.min.css?v=', true) }} { { $version }} "
rel = " stylesheet " >
2020-01-28 19:27:18 +01:00
@ endpush
2020-01-27 19:19:09 +01:00
@ push ( 'pageScripts' )
2020-08-31 20:32:50 +02:00
< script src = " { { $U ('/viewjs/purchase.js?v=', true) }} { { $version }} " ></ script >
2020-01-27 19:19:09 +01:00
@ endpush
@ section ( 'content' )
< div class = " row " >
< div class = " col " >
2020-08-29 16:41:27 +02:00
< h2 class = " title " >@ yield ( 'title' ) </ h2 >
2020-11-15 14:48:48 +01:00
< div class = " float-right " >
< button class = " btn btn-outline-dark d-md-none mt-2 order-1 order-md-3 "
type = " button "
data - toggle = " collapse "
data - target = " #table-filter-row " >
< i class = " fas fa-filter " ></ i >
</ button >
</ div >
2020-01-27 19:19:09 +01:00
</ div >
2020-10-31 18:37:10 +01:00
</ div >
2020-11-08 15:09:10 +01:00
< hr class = " my-2 " >
2020-10-31 18:37:10 +01:00
2020-11-15 14:48:48 +01:00
< div class = " row collapse d-md-flex "
id = " table-filter-row " >
2021-06-24 22:46:47 +02:00
< div class = " col-12 col-md-6 col-xl-3 " >
2020-01-27 19:19:09 +01:00
@ include ( 'components.productpicker' , array (
2020-08-31 20:32:50 +02:00
'products' => $products ,
2020-11-15 14:48:48 +01:00
'disallowAllProductWorkflows' => true ,
'isRequired' => false
2020-01-27 19:19:09 +01:00
))
</ div >
2020-11-15 14:48:48 +01:00
< div class = " col " >
< div class = " float-right mt-3 " >
< a id = " clear-filter-button "
class = " btn btn-sm btn-outline-info "
href = " # " >
{{ $__t ( 'Clear filter' ) }}
</ a >
</ div >
</ div >
2020-01-27 19:19:09 +01:00
</ div >
2020-10-31 18:37:10 +01:00
2020-01-27 19:19:09 +01:00
< div class = " row " >
< div class = " col " >
2020-08-31 20:32:50 +02:00
< table id = " stockentries-table "
2020-11-07 14:53:45 +01:00
class = " table table-sm table-striped nowrap w-100 " >
2020-01-27 19:19:09 +01:00
< thead >
< tr >
2020-11-11 22:28:05 +01:00
< th class = " border-right " >< a class = " text-muted change-table-columns-visibility-button "
data - toggle = " tooltip "
2020-11-11 21:11:17 +01:00
data - toggle = " tooltip "
2020-12-16 18:18:03 +01:00
title = " { { $__t ('Table options') }} "
2020-11-11 21:11:17 +01:00
data - table - selector = " #stockentries-table "
href = " # " >< i class = " fas fa-eye " ></ i ></ a >
</ th >
2021-06-28 19:14:15 +02:00
< th class = " d-none " > Hidden product_id </ th > <!-- This must be in the first column for searching -->
2020-01-27 19:19:09 +01:00
< th > {{ $__t ( 'Product' ) }} </ th >
< th > {{ $__t ( 'Amount' ) }} </ th >
2021-07-12 19:55:53 +02:00
< th class = " @if(!GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING) d-none @endif " > {{ $__t ( 'Due date' ) }} </ th >
< th class = " @if(!GROCY_FEATURE_FLAG_STOCK_LOCATION_TRACKING) d-none @endif " > {{ $__t ( 'Location' ) }} </ th >
< th class = " @if(!GROCY_FEATURE_FLAG_STOCK_PRICE_TRACKING) d-none @endif " > {{ $__t ( 'Store' ) }} </ th >
< th class = " @if(!GROCY_FEATURE_FLAG_STOCK_PRICE_TRACKING) d-none @endif " > {{ $__t ( 'Price' ) }} </ th >
2021-06-28 19:31:27 +02:00
< th data - shadow - rowgroup - column = " 9 " > {{ $__t ( 'Purchased date' ) }} </ th >
2021-06-28 19:14:15 +02:00
< th class = " d-none " > Hidden purchased_date </ th >
2021-07-12 18:25:07 +02:00
< th > {{ $__t ( 'Timestamp' ) }} </ th >
2020-01-27 19:19:09 +01:00
@ include ( 'components.userfields_thead' , array (
2020-08-31 20:32:50 +02:00
'userfields' => $userfields
2020-01-27 19:19:09 +01:00
))
</ tr >
</ thead >
< tbody class = " d-none " >
@ foreach ( $stockEntries as $stockEntry )
2020-08-31 20:32:50 +02:00
< tr id = " stock- { { $stockEntry->id }}-row "
2020-11-15 19:53:44 +01:00
data - due - type = " { { FindObjectInArrayByPropertyValue( $products , 'id', $stockEntry->product_id )->due_type }} "
class = " @if(GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING && $stockEntry->best_before_date < date('Y-m-d 23:59:59', strtotime('-1 days')) && $stockEntry->amount > 0) @if(FindObjectInArrayByPropertyValue( $products , 'id', $stockEntry->product_id )->due_type == 1) table-secondary @else table-danger @endif @elseif(GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING && $stockEntry->best_before_date < date('Y-m-d 23:59:59', strtotime('+' . $nextXDays . ' days'))
2020-08-31 20:32:50 +02:00
&&
$stockEntry -> amount > 0 ) table - warning @ endif " >
2020-01-27 19:19:09 +01:00
< td class = " fit-content border-right " >
2020-08-31 20:32:50 +02:00
< a class = " btn btn-danger btn-sm stock-consume-button "
href = " # "
data - toggle = " tooltip "
data - placement = " left "
title = " { { $__t ('Consume this stock entry') }} "
2020-01-27 19:19:09 +01:00
data - product - id = " { { $stockEntry->product_id }} "
data - stock - id = " { { $stockEntry->stock_id }} "
data - stockrow - id = " { { $stockEntry->id }} "
data - location - id = " { { $stockEntry->location_id }} "
data - product - name = " { { FindObjectInArrayByPropertyValue( $products , 'id', $stockEntry->product_id )->name }} "
data - product - qu - name = " { { FindObjectInArrayByPropertyValue( $quantityunits , 'id', FindObjectInArrayByPropertyValue( $products , 'id', $stockEntry->product_id )->qu_id_stock)->name }} "
data - consume - amount = " { { $stockEntry->amount }} " >
< i class = " fas fa-utensils " ></ i >
</ a >
@ if ( GROCY_FEATURE_FLAG_STOCK_PRODUCT_OPENED_TRACKING )
2020-10-18 14:48:21 +02:00
< a class = " btn btn-success btn-sm product-open-button @if( $stockEntry->open == 1 || FindObjectInArrayByPropertyValue( $products , 'id', $stockEntry->product_id )->enable_tare_weight_handling == 1) disabled @endif "
2020-08-31 20:32:50 +02:00
href = " # "
data - toggle = " tooltip "
data - placement = " left "
title = " { { $__t ('Mark this stock entry as open') }} "
2020-01-27 19:19:09 +01:00
data - product - id = " { { $stockEntry->product_id }} "
data - product - name = " { { FindObjectInArrayByPropertyValue( $products , 'id', $stockEntry->product_id )->name }} "
data - product - qu - name = " { { FindObjectInArrayByPropertyValue( $quantityunits , 'id', FindObjectInArrayByPropertyValue( $products , 'id', $stockEntry->product_id )->qu_id_stock)->name }} "
data - stock - id = " { { $stockEntry->stock_id }} "
data - stockrow - id = " { { $stockEntry->id }} " >
< i class = " fas fa-box-open " ></ i >
</ a >
@ endif
2020-08-31 20:32:50 +02:00
< a class = " btn btn-info btn-sm show-as-dialog-link "
href = " { { $U ('/stockentry/' . $stockEntry->id . '?embedded') }} "
data - toggle = " tooltip "
data - placement = " left "
title = " { { $__t ('Edit stock entry') }} " >
2020-01-27 19:19:09 +01:00
< i class = " fas fa-edit " ></ i >
</ a >
< div class = " dropdown d-inline-block " >
2020-08-31 20:32:50 +02:00
< button class = " btn btn-sm btn-light text-secondary "
type = " button "
data - toggle = " dropdown " >
2020-01-27 19:19:09 +01:00
< i class = " fas fa-ellipsis-v " ></ i >
</ button >
< div class = " dropdown-menu " >
2021-07-13 21:24:08 +02:00
@ if ( GROCY_FEATURE_FLAG_SHOPPINGLIST )
2020-08-31 20:32:50 +02:00
< a class = " dropdown-item show-as-dialog-link "
type = " button "
href = " { { $U ('/shoppinglistitem/new?embedded&updateexistingproduct&product=' . $stockEntry->product_id ) }} " >
2020-01-27 19:19:09 +01:00
< i class = " fas fa-shopping-cart " ></ i > {{ $__t ( 'Add to shopping list' ) }}
</ a >
< div class = " dropdown-divider " ></ div >
2021-07-13 21:24:08 +02:00
@ endif
2020-08-31 20:32:50 +02:00
< a class = " dropdown-item show-as-dialog-link "
type = " button "
href = " { { $U ('/purchase?embedded&product=' . $stockEntry->product_id ) }} " >
2020-12-21 19:04:48 +01:00
< i class = " fas fa-cart-plus " ></ i > {{ $__t ( 'Purchase' ) }}
2020-01-27 19:19:09 +01:00
</ a >
2020-08-31 20:32:50 +02:00
< a class = " dropdown-item show-as-dialog-link "
type = " button "
href = " { { $U ('/consume?embedded&product=' . $stockEntry->product_id . '&locationId=' . $stockEntry->location_id . '&stockId=' . $stockEntry->stock_id ) }} " >
2020-01-27 19:19:09 +01:00
< i class = " fas fa-utensils " ></ i > {{ $__t ( 'Consume' ) }}
</ a >
@ if ( GROCY_FEATURE_FLAG_STOCK_LOCATION_TRACKING )
2020-08-31 20:32:50 +02:00
< a class = " dropdown-item show-as-dialog-link "
type = " button "
href = " { { $U ('/transfer?embedded&product=' . $stockEntry->product_id . '&locationId=' . $stockEntry->location_id . '&stockId=' . $stockEntry->stock_id ) }} " >
2020-01-27 19:19:09 +01:00
< i class = " fas fa-exchange-alt " ></ i > {{ $__t ( 'Transfer' ) }}
</ a >
@ endif
2020-08-31 20:32:50 +02:00
< a class = " dropdown-item show-as-dialog-link "
type = " button "
href = " { { $U ('/inventory?embedded&product=' . $stockEntry->product_id ) }} " >
2020-01-27 19:19:09 +01:00
< i class = " fas fa-list " ></ i > {{ $__t ( 'Inventory' ) }}
</ a >
< div class = " dropdown-divider " ></ div >
2021-09-15 14:24:50 +02:00
< a class = " dropdown-item stock-consume-button stock-consume-button-spoiled "
2020-08-31 20:32:50 +02:00
type = " button "
href = " # "
2020-01-27 19:19:09 +01:00
data - product - id = " { { $stockEntry->product_id }} "
data - product - name = " { { FindObjectInArrayByPropertyValue( $products , 'id', $stockEntry->product_id )->name }} "
data - product - qu - name = " { { FindObjectInArrayByPropertyValue( $quantityunits , 'id', FindObjectInArrayByPropertyValue( $products , 'id', $stockEntry->product_id )->qu_id_stock)->name }} "
data - stock - id = " { { $stockEntry->stock_id }} "
data - stockrow - id = " { { $stockEntry->id }} "
data - location - id = " { { $stockEntry->location_id }} "
data - consume - amount = " 1 " >
2020-11-12 21:35:10 +01:00
{{ $__t ( 'Consume this stock entry as spoiled' , '1 ' . FindObjectInArrayByPropertyValue ( $quantityunits , 'id' , FindObjectInArrayByPropertyValue ( $products , 'id' , $stockEntry -> product_id ) -> qu_id_stock ) -> name , FindObjectInArrayByPropertyValue ( $products , 'id' , $stockEntry -> product_id ) -> name ) }}
2020-01-27 19:19:09 +01:00
</ a >
@ if ( GROCY_FEATURE_FLAG_RECIPES )
2020-08-31 20:32:50 +02:00
< a class = " dropdown-item "
type = " button "
href = " { { $U ('/recipes?search=') }} { { FindObjectInArrayByPropertyValue( $products , 'id', $stockEntry->product_id )->name }} " >
2020-11-12 21:35:10 +01:00
{{ $__t ( 'Search for recipes containing this product' ) }}
2020-01-27 19:19:09 +01:00
</ a >
@ endif
2020-11-12 21:35:10 +01:00
< div class = " dropdown-divider " ></ div >
< a class = " dropdown-item product-name-cell "
data - product - id = " { { $stockEntry->product_id }} "
type = " button "
href = " # " >
{{ $__t ( 'Product overview' ) }}
</ a >
< a class = " dropdown-item show-as-dialog-link "
type = " button "
href = " { { $U ('/stockjournal?embedded&product=') }} { { $stockEntry->product_id }} " >
{{ $__t ( 'Stock journal' ) }}
</ a >
< a class = " dropdown-item show-as-dialog-link "
type = " button "
href = " { { $U ('/stockjournal/summary?embedded&product=') }} { { $stockEntry->product_id }} " >
{{ $__t ( 'Stock journal summary' ) }}
</ a >
< a class = " dropdown-item "
type = " button "
href = " { { $U ('/product/') }} { { $stockEntry->product_id . '?returnto=/stockentries' }} " >
{{ $__t ( 'Edit product' ) }}
</ a >
2021-06-12 17:21:12 +02:00
< div class = " dropdown-divider " ></ div >
< a class = " dropdown-item stockentry-grocycode-link "
type = " button "
href = " { { $U ('/stockentry/' . $stockEntry->id . '/grocycode?download=true') }} " >
2021-07-13 19:29:23 +02:00
{ !! str_replace ( 'grocycode' , '<span class="ls-n1">grocycode</span>' , $__t ( 'Download %s grocycode' , $__t ( 'Stock entry' ))) !! }
2021-06-12 17:21:12 +02:00
</ a >
2021-07-13 19:29:23 +02:00
@ if ( GROCY_FEATURE_FLAG_LABEL_PRINTER )
< a class = " dropdown-item stockentry-grocycode-label-print "
2021-06-12 17:21:12 +02:00
data - stock - id = " { { $stockEntry->id }} "
type = " button "
href = " # " >
2021-07-13 19:29:23 +02:00
{ !! str_replace ( 'grocycode' , '<span class="ls-n1">grocycode</span>' , $__t ( 'Print %s grocycode on label printer' , $__t ( 'Stock entry' ))) !! }
2021-06-12 17:21:12 +02:00
</ a >
@ endif
< a class = " dropdown-item stockentry-label-link "
type = " button "
target = " _blank "
href = " { { $U ('/stockentry/' . $stockEntry->id . '/label') }} " >
2021-07-13 19:29:23 +02:00
{{ $__t ( 'Open stock entry label in new window' ) }}
2021-06-12 17:21:12 +02:00
</ a >
2020-01-27 19:19:09 +01:00
</ div >
</ div >
</ td >
2020-08-31 20:32:50 +02:00
< td class = " d-none "
data - product - id = " { { $stockEntry->product_id }} " >
2020-01-27 19:19:09 +01:00
{{ $stockEntry -> product_id }}
</ td >
2020-08-31 20:32:50 +02:00
< td class = " product-name-cell cursor-link "
data - product - id = " { { $stockEntry->product_id }} " >
2020-01-27 19:19:09 +01:00
{{ FindObjectInArrayByPropertyValue ( $products , 'id' , $stockEntry -> product_id ) -> name }}
</ td >
2021-11-25 19:08:53 +01:00
< td data - order = " { { $stockEntry->amount }} " >
2020-08-31 20:32:50 +02:00
< span id = " stock- { { $stockEntry->id }}-amount "
class = " locale-number locale-number-quantity-amount " > {{ $stockEntry -> amount }} </ span > < span id = " product- { { $stockEntry->product_id }}-qu-name " > {{ $__n ( $stockEntry -> amount , FindObjectInArrayByPropertyValue ( $quantityunits , 'id' , FindObjectInArrayByPropertyValue ( $products , 'id' , $stockEntry -> product_id ) -> qu_id_stock ) -> name , FindObjectInArrayByPropertyValue ( $quantityunits , 'id' , FindObjectInArrayByPropertyValue ( $products , 'id' , $stockEntry -> product_id ) -> qu_id_stock ) -> name_plural ) }} </ span >
< span id = " stock- { { $stockEntry->id }}-opened-amount "
class = " small font-italic " >@ if ( $stockEntry -> open == 1 ){{ $__t ( 'Opened' ) }} @ endif </ span >
2020-01-27 19:19:09 +01:00
</ td >
2021-07-12 19:55:53 +02:00
< td class = " @if(!GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING) d-none @endif " >
2020-11-15 19:53:44 +01:00
< span id = " stock- { { $stockEntry->id }}-due-date " > {{ $stockEntry -> best_before_date }} </ span >
< time id = " stock- { { $stockEntry->id }}-due-date-timeago "
2020-08-31 20:32:50 +02:00
class = " timeago timeago-contextual "
2021-11-15 20:05:10 +01:00
@ if ( $stockEntry -> best_before_date != " " ) datetime = " { { $stockEntry->best_before_date }} 23:59:59 " @ endif ></ time >
2020-01-27 19:19:09 +01:00
</ td >
2020-08-31 20:32:50 +02:00
< td id = " stock- { { $stockEntry->id }}-location "
2021-07-12 19:55:53 +02:00
class = " @if(!GROCY_FEATURE_FLAG_STOCK_LOCATION_TRACKING) d-none @endif "
2020-08-31 20:32:50 +02:00
data - location - id = " { { $stockEntry->location_id }} " >
2020-01-27 19:19:09 +01:00
{{ FindObjectInArrayByPropertyValue ( $locations , 'id' , $stockEntry -> location_id ) -> name }}
</ td >
2020-08-31 20:32:50 +02:00
< td id = " stock- { { $stockEntry->id }}-shopping-location "
2021-07-12 19:55:53 +02:00
class = " @if(!GROCY_FEATURE_FLAG_STOCK_PRICE_TRACKING) d-none @endif "
2020-08-31 20:32:50 +02:00
data - shopping - location - id = " { { $stockEntry->shopping_location_id }} " >
2020-03-25 19:53:00 +01:00
@ if ( FindObjectInArrayByPropertyValue ( $shoppinglocations , 'id' , $stockEntry -> shopping_location_id ) !== null )
2020-03-25 19:34:56 +01:00
{{ FindObjectInArrayByPropertyValue ( $shoppinglocations , 'id' , $stockEntry -> shopping_location_id ) -> name }}
2020-03-25 19:53:00 +01:00
@ endif
2020-03-25 19:34:56 +01:00
</ td >
2020-08-31 20:32:50 +02:00
< td id = " stock- { { $stockEntry->id }}-price "
2021-07-12 19:55:53 +02:00
class = " @if(!GROCY_FEATURE_FLAG_STOCK_PRICE_TRACKING) d-none @endif "
2020-08-31 20:32:50 +02:00
class = " locale-number locale-number-currency "
data - price - id = " { { $stockEntry->price }} " >
2020-03-25 20:00:52 +01:00
{{ $stockEntry -> price }}
</ td >
2020-01-27 19:19:09 +01:00
< td >
< span id = " stock- { { $stockEntry->id }}-purchased-date " > {{ $stockEntry -> purchased_date }} </ span >
2020-08-31 20:32:50 +02:00
< time id = " stock- { { $stockEntry->id }}-purchased-date-timeago "
class = " timeago timeago-contextual "
2021-11-15 20:05:10 +01:00
@ if ( ! empty ( $stockEntry -> purchased_date )) datetime = " { { $stockEntry->purchased_date }} 23:59:59 " @ endif ></ time >
2020-01-27 19:19:09 +01:00
</ td >
2021-06-28 19:14:15 +02:00
< td class = " d-none " > {{ $stockEntry -> purchased_date }} </ td >
2021-07-12 18:25:07 +02:00
< td >
< span > {{ $stockEntry -> row_created_timestamp }} </ span >
< time class = " timeago timeago-contextual "
datetime = " { { $stockEntry->row_created_timestamp }} " ></ time >
</ td >
2020-04-12 14:13:28 +02:00
@ include ( 'components.userfields_tbody' , array (
2020-08-31 20:32:50 +02:00
'userfields' => $userfields ,
'userfieldValues' => FindAllObjectsInArrayByPropertyValue ( $userfieldValues , 'object_id' , $stockEntry -> product_id )
2020-04-12 14:13:28 +02:00
))
2020-01-27 19:19:09 +01:00
</ tr >
@ endforeach
</ tbody >
</ table >
</ div >
</ div >
2020-08-31 20:32:50 +02:00
< div class = " modal fade "
id = " productcard-modal "
tabindex = " -1 " >
2020-01-27 19:19:09 +01:00
< div class = " modal-dialog " >
< div class = " modal-content text-center " >
< div class = " modal-body " >
@ include ( 'components.productcard' )
</ div >
< div class = " modal-footer " >
2020-08-31 20:32:50 +02:00
< button type = " button "
class = " btn btn-secondary "
data - dismiss = " modal " > {{ $__t ( 'Close' ) }} </ button >
2020-01-27 19:19:09 +01:00
</ div >
</ div >
</ div >
</ div >
@ stop