-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathActionInterface.php
More file actions
89 lines (72 loc) · 2.03 KB
/
ActionInterface.php
File metadata and controls
89 lines (72 loc) · 2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
declare(strict_types=1);
/**
* PHP Billing Library
*
* @link https://github.com/hiqdev/php-billing
* @package php-billing
* @license BSD-3-Clause
* @copyright Copyright (c) 2017-2020, HiQDev (http://hiqdev.com/)
*/
namespace hiqdev\php\billing\action;
use DateTimeImmutable;
use hiqdev\php\billing\customer\CustomerInterface;
use hiqdev\php\billing\EntityInterface;
use hiqdev\php\billing\price\PriceInterface;
use hiqdev\php\billing\sale\SaleInterface;
use hiqdev\php\billing\target\TargetInterface;
use hiqdev\php\billing\type\TypeInterface;
use hiqdev\php\units\QuantityInterface;
/**
* Action is action to be charged.
*
* Provides:
*
* - data: id, type, target, quantity, customer, time, sale, state, parent
* - logic:
* - unique ID
* - check is applicable to price
*
* @author Andrii Vasyliev <sol@hiqdev.com>
*/
interface ActionInterface extends EntityInterface
{
/**
* Returns if the given price applicable to this action.
*/
public function isApplicable(PriceInterface $price): bool;
/**
* Returns client ot this action.
*/
public function getCustomer(): CustomerInterface;
/**
* Returns target ot this action.
*/
public function getTarget(): TargetInterface;
/**
* Returns type ot this action.
*/
public function getType(): TypeInterface;
/**
* Returns quantity ot this action.
*/
public function getQuantity(): QuantityInterface;
/**
* Returns time ot this action.
*/
public function getTime(): DateTimeImmutable;
/**
* Returns sale if set.
*/
public function getSale(): ?SaleInterface;
/**
* Returns null if the action state is not set.
*/
public function isFinished(): ?bool;
public function getParent(): ?ActionInterface;
public function getState(): ?ActionState;
public function hasSale();
public function setSale(SaleInterface $sale);
public function getUsageInterval(): UsageInterval;
public function getFractionOfMonth(): float;
}