mirror of
https://github.com/grocy/grocy.git
synced 2026-04-06 21:06:15 +02:00
services StockService#UndoBooking: fix based on stockRow
This commit is contained in:
parent
47c5d440ed
commit
96e6176ffc
|
|
@ -681,6 +681,8 @@ class StockService extends BaseService
|
||||||
public function UndoBooking($bookingId)
|
public function UndoBooking($bookingId)
|
||||||
{
|
{
|
||||||
$logRow = $this->Database->stock_log()->where('id = :1 AND undone = 0', $bookingId)->fetch();
|
$logRow = $this->Database->stock_log()->where('id = :1 AND undone = 0', $bookingId)->fetch();
|
||||||
|
$stockRow = $this->Database->stock()->where('stock_id = :1 ', $logRow->stock_id)->fetch();
|
||||||
|
|
||||||
if ($logRow == null)
|
if ($logRow == null)
|
||||||
{
|
{
|
||||||
throw new \Exception('Booking does not exist or was already undone');
|
throw new \Exception('Booking does not exist or was already undone');
|
||||||
|
|
@ -694,9 +696,14 @@ class StockService extends BaseService
|
||||||
|
|
||||||
if ($logRow->transaction_type === self::TRANSACTION_TYPE_PURCHASE || ($logRow->transaction_type === self::TRANSACTION_TYPE_INVENTORY_CORRECTION && $logRow->amount > 0))
|
if ($logRow->transaction_type === self::TRANSACTION_TYPE_PURCHASE || ($logRow->transaction_type === self::TRANSACTION_TYPE_INVENTORY_CORRECTION && $logRow->amount > 0))
|
||||||
{
|
{
|
||||||
// Remove corresponding stock entry
|
if ($logRow->amount == $stockRow->amount)
|
||||||
$stockRows = $this->Database->stock()->where('stock_id', $logRow->stock_id);
|
{
|
||||||
$stockRows->delete();
|
$stockRow->delete();
|
||||||
|
} else {
|
||||||
|
$stockRow->update(array(
|
||||||
|
'amount' => $stockRow->amount - $logRow->amount
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
// Update log entry
|
// Update log entry
|
||||||
$logRow->update(array(
|
$logRow->update(array(
|
||||||
|
|
@ -707,6 +714,7 @@ class StockService extends BaseService
|
||||||
elseif ($logRow->transaction_type === self::TRANSACTION_TYPE_CONSUME || ($logRow->transaction_type === self::TRANSACTION_TYPE_INVENTORY_CORRECTION && $logRow->amount < 0))
|
elseif ($logRow->transaction_type === self::TRANSACTION_TYPE_CONSUME || ($logRow->transaction_type === self::TRANSACTION_TYPE_INVENTORY_CORRECTION && $logRow->amount < 0))
|
||||||
{
|
{
|
||||||
// Add corresponding amount back to stock
|
// Add corresponding amount back to stock
|
||||||
|
if ($stockRow == null) {
|
||||||
$stockRow = $this->Database->stock()->createRow(array(
|
$stockRow = $this->Database->stock()->createRow(array(
|
||||||
'product_id' => $logRow->product_id,
|
'product_id' => $logRow->product_id,
|
||||||
'amount' => $logRow->amount * -1,
|
'amount' => $logRow->amount * -1,
|
||||||
|
|
@ -714,9 +722,15 @@ class StockService extends BaseService
|
||||||
'purchased_date' => $logRow->purchased_date,
|
'purchased_date' => $logRow->purchased_date,
|
||||||
'stock_id' => $logRow->stock_id,
|
'stock_id' => $logRow->stock_id,
|
||||||
'price' => $logRow->price,
|
'price' => $logRow->price,
|
||||||
'opened_date' => $logRow->opened_date
|
'opened_date' => $logRow->opened_date,
|
||||||
|
'location_id' => $logRow->location_id
|
||||||
));
|
));
|
||||||
$stockRow->save();
|
$stockRow->save();
|
||||||
|
} else {
|
||||||
|
$stockRow->update(array(
|
||||||
|
'amount' => $stockRow->amount + $logRow->amount
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
// Update log entry
|
// Update log entry
|
||||||
$logRow->update(array(
|
$logRow->update(array(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user