Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilFrantiška Bednářová
1
Program pro evidenci nákladů a výnosů Jan Lisal
2
Požadavky Požadavky zadání: Možnost evidence nákladů a výnosů v rámci firmy Možnost evidence práv a uživatelů Uchovávání historie editace a mazání nákladů, výnosů a mezd Správa číselníků Toto jsou jen některé požadavky Požadavky zpracování Datový návrh EDR a DFD diagram Ukázka SQL scriptů (uložená procedura, spoušť…) Zhodnocení, závěr
3
Integritní omezení Uživatel musí být členem nějaké skupiny uživatelů Každý uživatel musí mít zadáno heslo a uživatelské jméno K uživatelské skupině lze zadat pouze „jeden záznam“ do tabulky práv Z tabulky mezd nejde zmazat záznam pro dané oddělení v případě, že není záznamem s nejvyšším datem A spousta dalších…
4
Tabulky – ERD diagram
5
Tabulky II Model tabulek zachycuje kompletní strukturu potřebnou pro funkcionalitu software Šedé tabulky jsou stěžejní pro ukládané data a jsou tyto jsou zálohovány při změně jejich dat
6
DFD diagram Tento diagram je pouze částí kompletního návrhu Diagram zjednodušeně popisuje vytvoření či změnu záznamu v tabulce nákladů
7
SQL – uložená procedura CREATE PROCEDURE dbo.PayOffSave @id uniqueidentifier, @date SMALLDATETIME, @price float, @note varchar(max), @departmentId uniqueidentifier, @operationId uniqueidentifier, @payOffTypeId uniqueidentifier, @userId AS uniqueidentifier AS BEGIN /* Procedure body */ DECLARE @ret AS INT IF @id = '00000000-0000-0000-0000-000000000000‚ OR @id IS NULL SELECT @id = NEWID() EXEC @ret = PayOffLoad @id IF @ret > 0 BEGIN -- Jde o UPDATE UPDATE PayOff SET Date = @date, Price = @price, Note = @note, DepartmentId = @departmentId, OperationId = @operationId, PayOffTypeId = @payOffTypeId, UserId = @userId WHERE Id = @id END ELSE BEGIN -- Jde o INSERT INSERT INTO PayOff VALUES (@id, @date, @price, @note, @departmentId, @operationId, @payOffTypeId, @userId) END RETURN 1 END
8
Trigger – Záloha záznamů nákladů CREATE TRIGGER [TriggerExpenseChange] ON [Expense] FOR UPDATE NOT FOR REPLICATION AS BEGIN /* Trigger body */ -- promenne ktere se zachovavaji - moznost zjisteni co bylo pred updatem DECLARE @id AS uniqueidentifier DECLARE @date AS SMALLDATETIME DECLARE @price AS money DECLARE @note AS varchar(max) DECLARE @expensesTypeId AS varchar(100) DECLARE @operationId AS varchar(100) DECLARE @expenseAllowanceId AS varchar(100) DECLARE @departmentId AS varchar(100) DECLARE @userId AS varchar(80) -- promenna pro sestaveni vysledneho stringu, ve kterem se zachovavaji data DECLARE @change AS varchar(max) -- promenna aktualniho uzivatele, ktery provadi zmenu DECLARE @updater AS uniqueidentifier SELECT @id = i.Id, @date = Date, @price = ISNULL(Price,''), @note = ISNULL(Note,''), @expensesTypeId = ISNULL(et.Title,''), @operationId = ISNULL(o.Title,''), @expenseAllowanceId = ISNULL(ea.Title,''), @departmentId = ISNULL(d.Title,''), @userId = u.Surname + ' ' + u.Name FROM inserted AS i LEFT OUTER JOIN Department AS d on d.Id = DepartmentId LEFT OUTER JOIN Operation AS o on o.Id = OperationId LEFT OUTER JOIN ExpensesType AS et on et.Id = ExpensesTypeId LEFT OUTER JOIN ExpenseAllowance AS ea ON ea.Id = ExpenseAllowanceId LEFT OUTER JOIN "User" AS u ON u.Id = UserId SELECT @change = CONVERT(varchar(30), @date) + '||' + CONVERT(varchar(50), @price) + ' Ke ||' + @note + '||' + @expensesTypeId + '||' + @operationId + '||' + @expenseAllowanceId + '||' + @departmentId + '||' + @userId SELECT @updater = UserId FROM Expense WHERE Id = @id INSERT INTO Change(Id, ItemId, Date, TableName, Change, UserId, UpdateDelete) VALUES(NEWID(), @id, CURRENT_TIMESTAMP, 'Náklady', @change, @updater, 'U') END
9
Závěr Tento systém je odzkoušený a plně funkční. V době tvorby této prezentace mě nenapadli žádné možné vylepšení a zjednodušení Děkuji za pozornost
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.