Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
855 commits
Select commit Hold shift + click to select a range
affcf54
remove the irrevalent if conditions
SatyamSB Dec 10, 2018
425f3bf
Merge branch 'dev-2.1.0' into Vesting-Escrow-Wallet
satyamakgec Dec 10, 2018
f2a1cce
Merge pull request #464 from PolymathNetwork/CLI-improvements
pabloruiz55 Dec 10, 2018
0d49e20
Merge branch 'dev-2.1.0' into capped-sto-fix
pabloruiz55 Dec 10, 2018
da0f0e9
Merge branch 'dev-2.1.0' into proxy-deplyoment-usdt
satyamakgec Dec 10, 2018
c85c521
Update CHANGELOG.md
maxsam4 Dec 10, 2018
1423a11
Update CHANGELOG.md
maxsam4 Dec 10, 2018
a59e50e
improve the function definitions
SatyamSB Dec 10, 2018
75a1bdd
Merge branch 'dev-2.1.0' into remove-blocking-MATM
satyamakgec Dec 10, 2018
5d7263a
add missing return statement
SatyamSB Dec 10, 2018
46c9cdd
minor fix
SatyamSB Dec 10, 2018
4c352ee
Merge pull request #459 from PolymathNetwork/proxy-deplyoment-usdt
satyamakgec Dec 10, 2018
4837af9
Merge branch 'dev-2.1.0' into capped-sto-fix
pabloruiz55 Dec 10, 2018
45a0551
Merge branch 'dev-2.1.0' into pr/289
VictorVicente Dec 10, 2018
f1c82d6
Merge branch 'dev-2.1.0' into reinvent-lockup
VictorVicente Dec 10, 2018
bb48255
resolve conflicts
SatyamSB Dec 10, 2018
c637c2c
resolve conflicts
SatyamSB Dec 10, 2018
d771ea4
Merge pull request #415 from PolymathNetwork/capped-sto-fix
pabloruiz55 Dec 10, 2018
55e0cb9
Merge branch 'dev-2.1.0' into multiple-stable-coins
maxsam4 Dec 11, 2018
ac7541f
Merge fix
maxsam4 Dec 11, 2018
3477f0f
Minor fixes
maxsam4 Dec 11, 2018
6e2768a
Updated changelog
maxsam4 Dec 11, 2018
9410fbe
Changed currencyRaised to stableCoinsRaised
maxsam4 Dec 11, 2018
0369cf3
MATM contract and test fixes
SatyamSB Dec 11, 2018
4fefd85
Merge branch 'dev-2.1.0' into remove-blocking-MATM
satyamakgec Dec 11, 2018
40ab59b
Merge branch 'dev-2.1.0' into Vesting-Escrow-Wallet
satyamakgec Dec 11, 2018
552de1b
minor fix
SatyamSB Dec 11, 2018
4162766
CLI - LockupTM support
VictorVicente Dec 11, 2018
9b4e7b2
individual balance for every stable coin listed
shuffledex Dec 11, 2018
5f094d4
Merge branch 'dev-2.1.0' into volTM-module
VictorVicente Dec 11, 2018
3fd1e07
CLI minor fixes
shuffledex Dec 12, 2018
4ae3a21
recommended fixes
SatyamSB Dec 12, 2018
216d320
Added code comments
maxsam4 Dec 12, 2018
a0700ea
Removed uninitialized pointer
maxsam4 Dec 12, 2018
d1598e5
CLI - Fixes for new contract changes
VictorVicente Dec 12, 2018
4054bcb
Minor fix
VictorVicente Dec 12, 2018
34efb95
trying by adding some buffer in time travel
SatyamSB Dec 12, 2018
4956441
[WIP] CLI advances
shuffledex Dec 12, 2018
bc0b62e
modify function changes
SatyamSB Dec 13, 2018
6444f0d
WIP
maxsam4 Dec 13, 2018
7ed5208
CircleCI changes
maxsam4 Dec 13, 2018
6081cc8
CircleCI changes
maxsam4 Dec 13, 2018
67ceb1b
CircleCI changes
maxsam4 Dec 13, 2018
a4facea
Badge
maxsam4 Dec 13, 2018
adac3a5
Store test results
maxsam4 Dec 13, 2018
084d047
Removed coverage from commit workflow
maxsam4 Dec 13, 2018
62d4bb5
CLI - WIP VolumeRestrictionTM support
VictorVicente Dec 12, 2018
70f6cac
CLI - Removed STVR TM from CLI
VictorVicente Dec 12, 2018
e543061
Added test reporter
maxsam4 Dec 13, 2018
602b67e
Addded artifact collection
maxsam4 Dec 13, 2018
8793f08
Added parallelism
maxsam4 Dec 13, 2018
1c04aae
Comment
maxsam4 Dec 13, 2018
5c80178
Bumped parallelism to 3
maxsam4 Dec 13, 2018
526608d
Coverage requires approval
maxsam4 Dec 13, 2018
6329cc1
Bumped parallelism to 4
maxsam4 Dec 13, 2018
01dfda9
Removed manual approval
maxsam4 Dec 13, 2018
1e81411
Combine travis and CircleCI
maxsam4 Dec 13, 2018
a89562c
env var changes
maxsam4 Dec 13, 2018
742cdad
comment
maxsam4 Dec 13, 2018
5e2ec74
Improve MATM to allow allowances and expiryTimes to be changed for ex…
shuffledex Dec 13, 2018
4ebc150
Merge branch 'dev-2.1.0' into reinvent-lockup
VictorVicente Dec 13, 2018
c8832cb
Refactoring and improvements
shuffledex Dec 13, 2018
125c1b8
CLI - Operations in batch for VRTM
VictorVicente Dec 13, 2018
4c92fce
fuzz test for adding and removing modules
comeonbuddy Dec 14, 2018
6cde94f
Merge pull request #468 from maxsam4/circle-ci
maxsam4 Dec 14, 2018
5c66795
Merge branch 'dev-2.1.0' into circle-ci
maxsam4 Dec 14, 2018
bea3115
finished module fuzz test
comeonbuddy Dec 14, 2018
06ce332
Fix rounding off errors (#467)
maxsam4 Dec 14, 2018
1f5f42b
Merge branch 'dev-2.1.0' into dev-2.2.0
adamdossa Dec 14, 2018
002951b
Minor CLI changes
VictorVicente Dec 14, 2018
d1d982c
Merge branch 'dev-2.1.0' into development-1.5.1
adamdossa Dec 14, 2018
a10e0c0
fix modify batch
shuffledex Dec 14, 2018
4c40494
Increased no o/p timeout
maxsam4 Dec 14, 2018
22b6d45
manual merge
shuffledex Dec 14, 2018
bdf3c61
Merge branch 'dev-2.1.0' into circle-ci
maxsam4 Dec 14, 2018
4d48187
Improve menu string
shuffledex Dec 14, 2018
115f3b1
Triggering CircleCI
maxsam4 Dec 14, 2018
b53d904
CLI minor changes
VictorVicente Dec 14, 2018
09e8e4e
Merge branch 'dev-2.1.0' into remove-blocking-MATM
VictorVicente Dec 14, 2018
03ee41f
Merge pull request #463 from PolymathNetwork/circle-ci
pabloruiz55 Dec 14, 2018
68a43bb
Merge pull request #470 from PolymathNetwork/circle-ci
pabloruiz55 Dec 14, 2018
cbd2f57
Add ability to see excluded addresses
adamdossa Dec 14, 2018
c0f5594
Updates
adamdossa Dec 16, 2018
5574125
Fixes
adamdossa Dec 16, 2018
b01b826
Bump excluded limit to 150
adamdossa Dec 16, 2018
46afc1f
Merge branch 'dev-2.1.0' into fuzz-test-adding-removing-modules
satyamakgec Dec 17, 2018
fe306e0
remove SRVTM
SatyamSB Dec 17, 2018
8df6319
Merge branch 'dev-2.1.0' into dividend_exclusion
adamdossa Dec 17, 2018
d5058bf
Use investor list from checkpoint
adamdossa Dec 17, 2018
549f83e
CLI - Script to generate tokens, whitelist investors and mint to them
VictorVicente Dec 17, 2018
67d3429
CLI - Explore account
VictorVicente Dec 17, 2018
64a72de
Update PolyTokenFaucet.sol
maxsam4 Dec 18, 2018
629613f
Merge branch 'dev-2.1.0' into multiple-stable-coins
maxsam4 Dec 18, 2018
5e99a3a
Merge branch 'dev-2.1.0' into remove-blocking-MATM
maxsam4 Dec 18, 2018
42519d2
Merge pull request #477 from PolymathNetwork/fuzz-test-adding-removin…
satyamakgec Dec 18, 2018
baff6b5
Merge branch 'dev-2.1.0' into faucet-patch
satyamakgec Dec 18, 2018
2336d85
Merge pull request #480 from PolymathNetwork/faucet-patch
pabloruiz55 Dec 18, 2018
40802f9
Merge branch 'dev-2.1.0' into dividend_exclusion
VictorVicente Dec 18, 2018
af0ab90
Improved the natspec comments
Dec 18, 2018
9088434
added VestingEscrowWalletLogic to output
Dec 19, 2018
15d9dcf
Merge branch 'dev-2.1.0' into multiple-stable-coins
VictorVicente Dec 19, 2018
86508fb
Merge pull request #437 from PolymathNetwork/multiple-stable-coins
VictorVicente Dec 19, 2018
bfc0982
Merge branch 'dev-2.1.0' into dividend_exclusion
VictorVicente Dec 19, 2018
65b2b49
Track withheld at dividend granularity
adamdossa Dec 19, 2018
3386072
wip - issue with test not finishing
comeonbuddy Dec 20, 2018
20abb7d
removed redundant dependencies
Dec 20, 2018
5c7c2a7
increased versions
Dec 20, 2018
43cc95a
WIP-multiple transaction within 1 day with Individual and daily Restr…
comeonbuddy Dec 20, 2018
2844938
updated yarn.lock
Dec 20, 2018
213c498
Add balances & claim amounts to getters
adamdossa Dec 20, 2018
a1ed632
CLI - Flow change and updates for dividends_manager
VictorVicente Dec 20, 2018
86c2a28
Updated test script
maxsam4 Dec 21, 2018
4d7cc1a
Script updated
maxsam4 Dec 21, 2018
4e1e37b
fixed bug with the initial test
comeonbuddy Dec 21, 2018
99984f1
Update test.sh
maxsam4 Dec 21, 2018
42c2eaf
Merge pull request #490 from PolymathNetwork/ci-fix
maxsam4 Dec 21, 2018
61086f7
Script updated
maxsam4 Dec 21, 2018
ad5148f
Merge branch 'dev-2.1.0' into ci-fix
maxsam4 Dec 21, 2018
67904eb
Merge pull request #491 from PolymathNetwork/ci-fix
satyamakgec Dec 21, 2018
c84edf4
coverage block gas limit increased
maxsam4 Dec 21, 2018
ade20f3
Merge branch 'dev-2.1.0' into ci-fix
maxsam4 Dec 21, 2018
42eb324
ganache-cli 6.2.5
Dec 21, 2018
a3085b6
Merge branch 'dev-2.1.0' into Cleaning-up-dependencies
maxsam4 Dec 21, 2018
b3098f7
Merge pull request #492 from PolymathNetwork/ci-fix
maxsam4 Dec 21, 2018
27dae4d
Merge branch 'dev-2.1.0' into Cleaning-up-dependencies
maxsam4 Dec 21, 2018
66f331f
Merge pull request #489 from PolymathNetwork/Cleaning-up-dependencies
maxsam4 Dec 21, 2018
c379132
Travis submit coverage
maxsam4 Dec 21, 2018
055f8cb
Merge branch 'dev-2.1.0' into ci-fix
maxsam4 Dec 21, 2018
2de1bb8
added scenario 2 and 3
comeonbuddy Dec 21, 2018
40343b9
fix input random number issue
comeonbuddy Dec 21, 2018
5b892a2
Merge pull request #493 from PolymathNetwork/ci-fix
maxsam4 Dec 21, 2018
e5fab1f
Add more test cases
adamdossa Dec 21, 2018
2ba0db0
CLI Minor fixes
VictorVicente Dec 21, 2018
7730519
Merge branch 'dividend_exclusion' of https://github.com/PolymathNetwo…
VictorVicente Dec 21, 2018
9e94b0c
Merge branch 'dev-2.1.0' into dividend_exclusion
VictorVicente Dec 21, 2018
dbe994c
Merge branch 'dev-2.1.0' into development-1.5.1
VictorVicente Dec 21, 2018
b29a42c
483 484 fix (#488)
dev1644 Dec 21, 2018
5b2b891
Merge branch 'dev-2.1.0' into development-1.5.1
VictorVicente Dec 21, 2018
ba851bf
Merge branch 'dev-2.1.0' into remove-blocking-MATM
VictorVicente Dec 21, 2018
9aea06b
Add getCheckpointData
adamdossa Dec 21, 2018
054d441
CLI minor changes
VictorVicente Dec 21, 2018
5c14bcb
CLI typo fix
VictorVicente Dec 21, 2018
d6ed747
bug fixes
SatyamSB Dec 21, 2018
403f6c6
Merge branch 'development-1.5.1' of https://github.com/vpanwar821/pol…
SatyamSB Dec 21, 2018
fef44d0
CLI updates
VictorVicente Dec 21, 2018
2148636
finished test case 4
comeonbuddy Dec 31, 2018
a582179
Merge branch 'dev-2.1.0' into dividend_exclusion
adamdossa Dec 31, 2018
85bce98
repeat period count from the startTime
SatyamSB Jan 2, 2019
7b7f3ab
WIP
comeonbuddy Jan 2, 2019
6dcef1f
fixed functions getActiveApprovalsToUser and added getAllApprovals() …
comeonbuddy Jan 2, 2019
bb3cdef
edited function description
comeonbuddy Jan 2, 2019
babc783
Bumped cappedSTO version
maxsam4 Jan 2, 2019
48213f6
MATM version bumped
maxsam4 Jan 2, 2019
f2bd23a
Merge pull request #498 from PolymathNetwork/version-bump
satyamakgec Jan 2, 2019
cad4562
CLI update
VictorVicente Jan 2, 2019
8737567
Merge branch 'dev-2.1.0' into remove-blocking-MATM
maxsam4 Jan 2, 2019
ad29c1b
test case fixed
maxsam4 Jan 2, 2019
a0408c0
Merge pull request #450 from PolymathNetwork/remove-blocking-MATM
pabloruiz55 Jan 2, 2019
ce1354d
Merge branch 'dev-2.1.0' into dividend_exclusion
VictorVicente Jan 2, 2019
df1d920
Merge branch 'dev-2.1.0' into Vesting-Escrow-Wallet
VictorVicente Jan 2, 2019
927990c
Update j_manual_approval_transfer_manager.js
maxsam4 Jan 2, 2019
78c844e
Merge pull request #501 from PolymathNetwork/matm-test-fix
kostind Jan 2, 2019
40cfa3d
WIP
comeonbuddy Jan 3, 2019
b13e08c
reinvent the test case
SatyamSB Jan 3, 2019
d4b130b
Merge branch 'dev-2.1.0' into dividend_exclusion
VictorVicente Jan 3, 2019
3b78ff7
Merge branch 'dev-2.1.0' into Vesting-Escrow-Wallet
VictorVicente Jan 3, 2019
c85c599
Merge pull request #476 from PolymathNetwork/dividend_exclusion
VictorVicente Jan 3, 2019
0ecdf79
Merge branch 'dev-2.1.0' into Vesting-Escrow-Wallet
VictorVicente Jan 3, 2019
1299ca3
Merge conflicts
VictorVicente Jan 3, 2019
ab3d94b
Merge pull request #422 from PolymathNetwork/Vesting-Escrow-Wallet
VictorVicente Jan 3, 2019
b7d6df0
Merge branch 'dev-2.1.0' into volTM-module
VictorVicente Jan 3, 2019
c4a0af6
indexing the param (#500)
satyamakgec Jan 3, 2019
6354748
Merge branch 'dev-2.1.0' into volTM-module
VictorVicente Jan 3, 2019
e478aa3
Merge pull request #421 from PolymathNetwork/volTM-module
VictorVicente Jan 3, 2019
2248980
Merge branch 'dev-2.1.0' into development-1.5.1
VictorVicente Jan 3, 2019
2aaa03d
Permissions update
VictorVicente Jan 3, 2019
c745534
Merge branch 'dev-2.1.0' into dev-2.2.0
adamdossa Jan 3, 2019
11d0f31
Removed redundant events
maxsam4 Jan 4, 2019
8c55c2c
Merge pull request #507 from PolymathNetwork/event-fix
satyamakgec Jan 4, 2019
d71321a
dual truffle coverage
maxsam4 Jan 7, 2019
8e951d6
VRTM coverage fix
maxsam4 Jan 7, 2019
cbb8eb3
Added compile command
maxsam4 Jan 7, 2019
c1d2481
Updated coverage script
maxsam4 Jan 7, 2019
07a62e0
removed compile command
maxsam4 Jan 7, 2019
742b9c2
Updated truffle config
maxsam4 Jan 7, 2019
0e5078c
Merge pull request #509 from PolymathNetwork/dual-truffle
VictorVicente Jan 7, 2019
b59b79e
Merge branch 'dev-2.1.0' into development-1.5.1
VictorVicente Jan 7, 2019
0cfd5cd
Merge pull request #289 from vpanwar821/development-1.5.1
pabloruiz55 Jan 7, 2019
7e05021
Pull accredited lists from USDSTO (#502)
adamdossa Jan 7, 2019
3eb609a
add getRestrictedAddresses() function
SatyamSB Jan 8, 2019
418961e
Merge branch 'dev-2.1.0' into getter-voltm
satyamakgec Jan 8, 2019
d85c594
minor fix
SatyamSB Jan 8, 2019
18a0426
Merge branch 'dev-2.1.0' into reinvent-lockup
VictorVicente Jan 8, 2019
23e7d51
Fixed test file
maxsam4 Jan 8, 2019
f5992b4
Add restrictions data to getRestrictedAddresses
adamdossa Jan 8, 2019
ea5089a
Remove commented code and better tests
adamdossa Jan 8, 2019
dd39b51
'succesfully' typo
VictorVicente Jan 8, 2019
e8c0cd6
'whould' typo
VictorVicente Jan 8, 2019
73f0377
To pause/unpause TM modules fix
VictorVicente Jan 8, 2019
11f6b50
Change module budget error
VictorVicente Jan 8, 2019
7429d13
modified the getRestrictedAddress() function
SatyamSB Jan 9, 2019
72c1eb7
code cleanup
SatyamSB Jan 9, 2019
f400049
CLI - Show restrictions table
VictorVicente Jan 9, 2019
3638c60
minor fix
SatyamSB Jan 9, 2019
365db81
Merge branch 'getter-voltm' of https://github.com/PolymathNetwork/pol…
SatyamSB Jan 9, 2019
bb4c1fe
CLI - Update method name, updated csv dates
VictorVicente Jan 9, 2019
887860e
Trigger TravisCI
VictorVicente Jan 9, 2019
70a460a
Merge pull request #409 from PolymathNetwork/reinvent-lockup
VictorVicente Jan 9, 2019
d1dec2c
Merge branch 'dev-2.1.0' into getter-voltm
VictorVicente Jan 9, 2019
ceb6acf
CLI - Changed names of restrictions
VictorVicente Jan 9, 2019
d2636c0
Minor fix
VictorVicente Jan 9, 2019
60efa3f
CLI - Percentage with decimals fix
VictorVicente Jan 9, 2019
5c27711
CLI - Changed names of restrictions
VictorVicente Jan 9, 2019
6c8a321
Merge branch 'getter-voltm' of https://github.com/PolymathNetwork/pol…
VictorVicente Jan 9, 2019
3689174
add exempt list getter
SatyamSB Jan 9, 2019
4d342f1
Merge branch 'getter-voltm' of https://github.com/PolymathNetwork/pol…
SatyamSB Jan 9, 2019
c0700ea
minor fix
SatyamSB Jan 10, 2019
a2692fc
CLI - Added 'show exempted addresses'
VictorVicente Jan 10, 2019
1b126c2
Small optimisation
adamdossa Jan 10, 2019
40d4789
Use bokky's timestamp library in scheduled checkpoint (#466)
kostind Jan 10, 2019
962dc89
Merge pull request #513 from PolymathNetwork/getter-voltm
satyamakgec Jan 10, 2019
c843a99
Typo
VictorVicente Jan 10, 2019
14a9650
Text improvements
VictorVicente Jan 10, 2019
b2551b4
KYC expiry date modified to one year from now
VictorVicente Jan 10, 2019
c1b5c7e
Fix for CappedSTO
VictorVicente Jan 10, 2019
124311b
Move contracts to the respective folders (#510)
satyamakgec Jan 14, 2019
688f0a4
Fix comments (#519)
adamdossa Jan 14, 2019
5448cb3
Removed default stable coin
VictorVicente Jan 15, 2019
83f0afa
Dividend improvements (#526)
adamdossa Jan 16, 2019
e0a6087
add the remove function during re-add of the restriction
SatyamSB Jan 17, 2019
06bd8b4
Merge pull request #529 from PolymathNetwork/vrtm-small-fix
maxsam4 Jan 18, 2019
a7b1f42
add the 2.1.0 changes
SatyamSB Jan 18, 2019
6b0521a
Merge branch 'dev-2.1.0' into changelog-update
satyamakgec Jan 18, 2019
a8b71e5
Merge pull request #530 from PolymathNetwork/changelog-update
pabloruiz55 Jan 18, 2019
acd6370
Merge branch 'dev-2.1.0' into CLI-text-and-improvements
VictorVicente Jan 23, 2019
47df791
Lockup typos and fixes
VictorVicente Jan 23, 2019
ddd72ea
version bump
maxsam4 Feb 1, 2019
5c79d98
Merge pull request #540 from PolymathNetwork/version-bump
satyamakgec Feb 3, 2019
3f7c047
Merge branch 'dev-2.1.0' into CLI-text-and-improvements
VictorVicente Feb 4, 2019
511f404
add getAllLockupData getter
SatyamSB Feb 4, 2019
e36e38a
CLI - Added support to new lockup getter
VictorVicente Feb 5, 2019
3bea43c
KYC date text improved
VictorVicente Feb 5, 2019
013ac45
Merge pull request #542 from PolymathNetwork/lockup-add-getter
satyamakgec Feb 6, 2019
3ca197a
Update CLI/commands/transfer_manager.js
F-OBrien Feb 6, 2019
5e7be5b
Merge branch 'dev-2.1.0' into CLI-text-and-improvements
VictorVicente Feb 6, 2019
a742e67
Allowance method fix
VictorVicente Feb 6, 2019
0973815
Minor change
VictorVicente Feb 6, 2019
fcc2fc6
Merge pull request #515 from PolymathNetwork/CLI-text-and-improvements
CPSTL Feb 7, 2019
fd15cb8
Merge branch 'dev-2.1.0' into dev-2.2.0
adamdossa Feb 7, 2019
6921cbe
add getTokensByDelegate (#547)
adamdossa Feb 11, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Use bokky's timestamp library in scheduled checkpoint (#466)
* added enum TimeUnit

* update depends on timeUnit

* test for monthly checkpoint

* tests for monthly checkpoint

* use UTC instead of local time

* minor fix

* Tests for yearly checkpoint

* Tests for last day of month

* Updated tests for last day of month

* commented failed test

* fix for end of month schedule

* refactored _update function

* added TimeUnits: DAYS, WEEKS
  • Loading branch information
kostind authored and adamdossa committed Jan 10, 2019
commit 40d47893bca0442630ca6804728e257d3afc0f73
55 changes: 41 additions & 14 deletions contracts/modules/Experimental/Mixed/ScheduledCheckpoint.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,34 @@ import "./../../Checkpoint/ICheckpoint.sol";
import "../../TransferManager/ITransferManager.sol";
import "../../../interfaces/ISecurityToken.sol";
import "openzeppelin-solidity/contracts/math/SafeMath.sol";
import "../../../libraries/BokkyPooBahsDateTimeLibrary.sol";

/**
* @title Burn module for burning tokens and keeping track of burnt amounts
*/
contract ScheduledCheckpoint is ICheckpoint, ITransferManager {
using SafeMath for uint256;

enum TimeUnit {SECONDS, DAYS, WEEKS, MONTHS, YEARS}

struct Schedule {
bytes32 name;
uint256 startTime;
uint256 nextTime;
uint256 interval;
TimeUnit timeUnit;
uint256 index;
uint256[] checkpointIds;
uint256[] timestamps;
uint256[] periods;
uint256 totalPeriods;
}

bytes32[] public names;

mapping (bytes32 => Schedule) public schedules;

event AddSchedule(bytes32 _name, uint256 _startTime, uint256 _interval, uint256 _timestamp);
event AddSchedule(bytes32 _name, uint256 _startTime, uint256 _interval, TimeUnit _timeUint, uint256 _timestamp);
event RemoveSchedule(bytes32 _name, uint256 _timestamp);

/**
Expand All @@ -51,17 +56,19 @@ contract ScheduledCheckpoint is ICheckpoint, ITransferManager {
* @param _name name of the new schedule (must be unused)
* @param _startTime start time of the schedule (first checkpoint)
* @param _interval interval at which checkpoints should be created
* @param _timeUnit unit of time at which checkpoints should be created
*/
function addSchedule(bytes32 _name, uint256 _startTime, uint256 _interval) external onlyOwner {
function addSchedule(bytes32 _name, uint256 _startTime, uint256 _interval, TimeUnit _timeUnit) external onlyOwner {
require(_startTime > now, "Start time must be in the future");
require(schedules[_name].name == bytes32(0), "Name already in use");
schedules[_name].name = _name;
schedules[_name].startTime = _startTime;
schedules[_name].nextTime = _startTime;
schedules[_name].interval = _interval;
schedules[_name].timeUnit = _timeUnit;
schedules[_name].index = names.length;
names.push(_name);
emit AddSchedule(_name, _startTime, _interval, now);
emit AddSchedule(_name, _startTime, _interval, _timeUnit, now);
}

/**
Expand Down Expand Up @@ -99,15 +106,18 @@ contract ScheduledCheckpoint is ICheckpoint, ITransferManager {
* @notice gets schedule details
* @param _name name of the schedule
*/
function getSchedule(bytes32 _name) view external returns(bytes32, uint256, uint256, uint256, uint256[], uint256[], uint256[]) {
function getSchedule(bytes32 _name) view external returns(bytes32, uint256, uint256, uint256, TimeUnit, uint256[], uint256[], uint256[], uint256) {
Schedule storage schedule = schedules[_name];
return (
schedules[_name].name,
schedules[_name].startTime,
schedules[_name].nextTime,
schedules[_name].interval,
schedules[_name].checkpointIds,
schedules[_name].timestamps,
schedules[_name].periods
schedule.name,
schedule.startTime,
schedule.nextTime,
schedule.interval,
schedule.timeUnit,
schedule.checkpointIds,
schedule.timestamps,
schedule.periods,
schedule.totalPeriods
);
}

Expand All @@ -123,10 +133,27 @@ contract ScheduledCheckpoint is ICheckpoint, ITransferManager {
Schedule storage schedule = schedules[_name];
if (schedule.nextTime <= now) {
uint256 checkpointId = ISecurityToken(securityToken).createCheckpoint();
uint256 periods = now.sub(schedule.nextTime).div(schedule.interval).add(1);
schedule.timestamps.push(schedule.nextTime);
schedule.nextTime = periods.mul(schedule.interval).add(schedule.nextTime);
schedule.checkpointIds.push(checkpointId);
schedule.timestamps.push(schedule.nextTime);
uint256 periods;
if (schedule.timeUnit == TimeUnit.SECONDS ) {
periods = now.sub(schedule.nextTime).div(schedule.interval).add(1);
schedule.nextTime = periods.mul(schedule.interval).add(schedule.nextTime);
} else if (schedule.timeUnit == TimeUnit.DAYS ) {
periods = BokkyPooBahsDateTimeLibrary.diffDays(schedule.nextTime, now).div(schedule.interval).add(1);
schedule.nextTime = BokkyPooBahsDateTimeLibrary.addDays(schedule.nextTime, periods.mul(schedule.interval));
} else if (schedule.timeUnit == TimeUnit.WEEKS ) {
periods = BokkyPooBahsDateTimeLibrary.diffDays(schedule.nextTime, now).div(7).div(schedule.interval).add(1);
schedule.nextTime = BokkyPooBahsDateTimeLibrary.addDays(schedule.nextTime, periods.mul(schedule.interval).mul(7));
} else if (schedule.timeUnit == TimeUnit.MONTHS ) {
periods = BokkyPooBahsDateTimeLibrary.diffMonths(schedule.nextTime, now).div(schedule.interval).add(1);
uint256 totalPeriods = schedule.totalPeriods.add(periods);
schedule.nextTime = BokkyPooBahsDateTimeLibrary.addMonths(schedule.startTime, totalPeriods.mul(schedule.interval));
} else if (schedule.timeUnit == TimeUnit.YEARS ) {
periods = BokkyPooBahsDateTimeLibrary.diffYears(schedule.nextTime, now).div(schedule.interval).add(1);
schedule.nextTime = BokkyPooBahsDateTimeLibrary.addYears(schedule.nextTime, periods.mul(schedule.interval));
}
schedule.totalPeriods = schedule.totalPeriods.add(periods);
schedule.periods.push(periods);
}
}
Expand Down
Loading