wiki:НапредниИзвештаи

Version 2 (modified by 221550, 3 weeks ago) ( diff )

--

Напредни извештаи од базата (SQL и складирани процедури)

Извештај за месечен приход и ДДВ наплата (последни 6 месеци)

Прикажува вкупен приход, трошоци за делови, труд и ДДВ наплата по месец
SELECT 
    TO_CHAR(s.DateOfService, 'YYYY-MM') AS Month,
    SUM(s.TotalPrice) AS TotalRevenue,
    SUM(si.PricePerUnit * sa.UnitsUsed) AS PartsCost,
    SUM(s.LaborCost) AS LaborCost,
    SUM(si.PricePerUnit * sa.UnitsUsed * si.Tax / 100) AS TaxCollected
FROM Services s
JOIN ServiceAssignments sa ON s.Id = sa.ServiceId
JOIN ServiceItems si ON sa.ServiceItemId = si.Id
WHERE s.DateOfService >= CURRENT_DATE - INTERVAL '6 months'
GROUP BY TO_CHAR(s.DateOfService, 'YYYY-MM')
ORDER BY Month DESC;

Извештај за продуктивност на механичари

Прикажува број на сервиси, вкупно користени делови и вкупна вредност на делови по механичар
SELECT 
    m.EMBG,
    m.FirstName || ' ' || m.LastName AS Mechanic,
    COUNT(DISTINCT sa.ServiceId) AS TotalServices,
    SUM(sa.UnitsUsed) AS TotalUnitsUsed,
    SUM(si.PricePerUnit * sa.UnitsUsed) AS TotalPartsValue
FROM Mechanics m
JOIN ServiceAssignments sa ON m.EMBG = sa.MechanicEMBG
JOIN ServiceItems si ON sa.ServiceItemId = si.Id
GROUP BY m.EMBG, Mechanic
ORDER BY TotalPartsValue DESC;

Извештај за лојални клиенти и нивни трошоци

Листа на клиенти со повеќе од 3 сервиси, вкупен потрошено и детали за нивните мотоцикли
SELECT 
    c.Id AS ClientId,
    c.FirstName || ' ' || c.LastName AS Client,
    COUNT(DISTINCT s.Id) AS TotalServices,
    SUM(s.TotalPrice) AS TotalSpent,
    STRING_AGG(m.Model || ' (' || m.Registration || ')', ', ') AS Motorcycles
FROM Clients c
JOIN Motorcycles m ON c.Id = m.ClientId
JOIN Services s ON m.Id = s.MotorcycleId
GROUP BY c.Id, Client
HAVING COUNT(DISTINCT s.Id) > 3
ORDER BY TotalSpent DESC;

Извештај за употреба на делови во сервиси (топ 10 делови)

Прикажува најчесто користени делови и просечна количина по сервис
SELECT 
    si.Id AS PartId,
    si.Description,
    COUNT(sa.ServiceId) AS TimesUsed,
    SUM(sa.UnitsUsed) AS TotalUnits,
    ROUND(AVG(sa.UnitsUsed), 2) AS AvgPerService
FROM ServiceItems si
JOIN ServiceAssignments sa ON si.Id = sa.ServiceItemId
GROUP BY si.Id, si.Description
ORDER BY TotalUnits DESC
LIMIT 10;

Извештај за фискални обврски по месец

Вкупен ДДВ и износ на фискални сметки по месец
SELECT 
    TO_CHAR(fb.IssueDateTime, 'YYYY-MM') AS Month,
    COUNT(fb.Id) AS FiscalBillsCount,
    SUM(fb.DDV) AS TotalTax,
    SUM(s.TotalPrice) AS TotalInvoiced
FROM FiscalBills fb
JOIN ServiceInvoices si ON fb.ServiceInvoiceId = si.Id
JOIN Services s ON si.ServiceId = s.Id
GROUP BY TO_CHAR(fb.IssueDateTime, 'YYYY-MM')
ORDER BY Month DESC;
Note: See TracWiki for help on using the wiki.