Initial commit
This commit is contained in:
parent
f0fceb7473
commit
5f5c2c3c5a
28
src/finance.adb
Normal file
28
src/finance.adb
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
package body Finance is
|
||||||
|
|
||||||
|
function Round (N : Decimal) return Decimal is
|
||||||
|
begin
|
||||||
|
return N;
|
||||||
|
end Round;
|
||||||
|
|
||||||
|
procedure Add_Entry
|
||||||
|
(Trans : in out Transaction;
|
||||||
|
E : Transaction_Entry)
|
||||||
|
is
|
||||||
|
begin
|
||||||
|
Trans.Entries.Append (E);
|
||||||
|
end Add_Entry;
|
||||||
|
|
||||||
|
function Validate (T : Transaction)
|
||||||
|
return Boolean
|
||||||
|
is
|
||||||
|
Sum : Decimal := 0.0;
|
||||||
|
begin
|
||||||
|
for E of T.Entries loop
|
||||||
|
Sum := @ + E.Amount;
|
||||||
|
end loop;
|
||||||
|
|
||||||
|
return Round (Sum) = 0.0;
|
||||||
|
end Validate;
|
||||||
|
|
||||||
|
end Finance;
|
||||||
35
src/finance.ads
Normal file
35
src/finance.ads
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
with Ada.Containers.Vectors;
|
||||||
|
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
|
||||||
|
|
||||||
|
package Finance is
|
||||||
|
|
||||||
|
type Decimal is delta 1.0E-20 digits 38;
|
||||||
|
|
||||||
|
type Transaction_Entry is
|
||||||
|
record
|
||||||
|
Amount : Decimal;
|
||||||
|
Account : Unbounded_String;
|
||||||
|
end record;
|
||||||
|
|
||||||
|
package Entry_Vec is new Ada.Containers.Vectors (
|
||||||
|
Index_Type => Natural,
|
||||||
|
Element_Type => Transaction_Entry
|
||||||
|
);
|
||||||
|
|
||||||
|
use type Entry_Vec.Vector;
|
||||||
|
|
||||||
|
type Transaction is
|
||||||
|
record
|
||||||
|
Entries : Entry_Vec.Vector;
|
||||||
|
end record;
|
||||||
|
|
||||||
|
function Round (N : Decimal) return Decimal;
|
||||||
|
|
||||||
|
procedure Add_Entry
|
||||||
|
(Trans : in out Transaction;
|
||||||
|
E : Transaction_Entry);
|
||||||
|
|
||||||
|
function Validate (T : Transaction)
|
||||||
|
return Boolean;
|
||||||
|
|
||||||
|
end Finance;
|
||||||
Loading…
Reference in New Issue
Block a user