mirror of
https://github.com/grocy/grocy.git
synced 2026-04-04 03:46:16 +02:00
Reuse the existing product_price_history view
This commit is contained in:
parent
132dfb8e6b
commit
6cfee78b95
|
|
@ -6,42 +6,58 @@ class StockReportsController extends BaseController
|
|||
{
|
||||
public function Spendings(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
|
||||
{
|
||||
if (isset($request->getQueryParams()['start_date']) and isset($request->getQueryParams()['end_date']))
|
||||
if (isset($request->getQueryParams()['start_date']) && isset($request->getQueryParams()['end_date']) && IsIsoDate($request->getQueryParams()['start_date']) && IsIsoDate($request->getQueryParams()['end_date']))
|
||||
{
|
||||
$startDate = $request->getQueryParams()['start_date'];
|
||||
$endDate = $request->getQueryParams()['end_date'];
|
||||
$where = "purchased_date >= '$startDate' AND purchased_date <= '$endDate'";
|
||||
$where = "pph.purchased_date BETWEEN '$startDate' AND '$endDate'";
|
||||
}
|
||||
else
|
||||
{
|
||||
// Default this month
|
||||
$where = "purchased_date >= DATE(DATE('now', 'localtime'), 'start of month')";
|
||||
// Default to this month
|
||||
$where = "pph.purchased_date >= DATE(DATE('now', 'localtime'), 'start of month')";
|
||||
}
|
||||
|
||||
|
||||
if (isset($request->getQueryParams()['byGroup']))
|
||||
{
|
||||
$sql = "
|
||||
SELECT product_group_id as id, product_group as name, sum(quantity * price) as total
|
||||
FROM product_purchase_history
|
||||
SELECT
|
||||
pg.id AS id,
|
||||
pg.name AS name,
|
||||
SUM(pph.amount * pph.price) AS total
|
||||
FROM product_price_history pph
|
||||
JOIN products p
|
||||
ON pph.product_id = p.id
|
||||
JOIN product_groups pg
|
||||
ON p.product_group_id = pg.id
|
||||
WHERE $where
|
||||
GROUP BY product_group
|
||||
ORDER BY product_group
|
||||
GROUP BY pg.id
|
||||
ORDER BY pg.NAME COLLATE NOCASE
|
||||
";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isset($request->getQueryParams()['product_group']) and $request->getQueryParams()['product_group'] != 'all')
|
||||
{
|
||||
$where = $where . ' AND product_group_id = ' . $request->getQueryParams()['product_group'];
|
||||
$where .= ' AND pg.id = ' . $request->getQueryParams()['product_group'];
|
||||
}
|
||||
|
||||
$sql = "
|
||||
SELECT product_id as id, product_name as name, product_group_id as group_id, product_group as group_name, sum(quantity * price) as total
|
||||
FROM product_purchase_history
|
||||
SELECT
|
||||
p.id AS id,
|
||||
p.name AS name,
|
||||
pg.id AS group_id,
|
||||
pg.name AS group_name,
|
||||
SUM(pph.amount * pph.price) AS total
|
||||
FROM product_price_history pph
|
||||
JOIN products p
|
||||
ON pph.product_id = p.id
|
||||
JOIN product_groups pg
|
||||
ON p.product_group_id = pg.id
|
||||
WHERE $where
|
||||
GROUP BY product_name
|
||||
ORDER BY product_name
|
||||
GROUP BY p.id
|
||||
ORDER BY p.NAME COLLATE NOCASE
|
||||
";
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +1,25 @@
|
|||
CREATE VIEW product_purchase_history
|
||||
DROP VIEW product_price_history;
|
||||
CREATE VIEW product_price_history
|
||||
AS
|
||||
SELECT
|
||||
1 AS id, -- Dummy, LessQL needs an id column
|
||||
p.id AS product_id,
|
||||
p.name AS product_name,
|
||||
g.id AS product_group_id,
|
||||
g.name AS product_group,
|
||||
s.amount AS quantity,
|
||||
s.price AS price,
|
||||
s.purchased_date AS purchased_date
|
||||
FROM product_groups g
|
||||
JOIN products p
|
||||
ON p.product_group_id = g.id
|
||||
JOIN stock_log s
|
||||
ON s.product_id = p.id
|
||||
WHERE s.transaction_type = 'purchase'
|
||||
AND s.undone = 0
|
||||
AND s.price IS NOT NULL
|
||||
ORDER BY p.name ASC;
|
||||
sl.product_id AS id, -- Dummy, LessQL needs an id column
|
||||
sl.product_id,
|
||||
sl.price,
|
||||
sl.amount,
|
||||
sl.purchased_date,
|
||||
sl.shopping_location_id
|
||||
FROM stock_log sl
|
||||
WHERE sl.transaction_type IN ('purchase', 'inventory-correction', 'stock-edit-new')
|
||||
AND sl.undone = 0
|
||||
AND IFNULL(sl.price, 0) > 0
|
||||
AND IFNULL(sl.amount, 0) > 0
|
||||
AND sl.id NOT IN (
|
||||
-- These are edited purchase and inventory-correction rows
|
||||
SELECT sl_origin.id
|
||||
FROM stock_log sl_origin
|
||||
JOIN stock_log sl_edit
|
||||
ON sl_origin.stock_id = sl_edit.stock_id
|
||||
AND sl_edit.transaction_type = 'stock-edit-new'
|
||||
AND sl_edit.id > sl_origin.id
|
||||
WHERE sl_origin.transaction_type IN ('purchase', 'inventory-correction')
|
||||
);
|
||||
|
|
|
|||
|
|
@ -76,9 +76,7 @@
|
|||
id="product-group-filter">
|
||||
<option value="all">{{ $__t('All') }}</option>
|
||||
@foreach($productGroups as $productGroup)
|
||||
<option @if($selectedGroup==$productGroup->id)
|
||||
selected="selected"
|
||||
@endif
|
||||
<option @if($productGroup->id == $selectedGroup) selected="selected" @endif
|
||||
value="{{ $productGroup->id }}">{{ $productGroup->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user