Skip to content

Commit 598fa63

Browse files
add invoices (#6)
* add invoices
1 parent 7267018 commit 598fa63

File tree

12 files changed

+206
-11
lines changed

12 files changed

+206
-11
lines changed

examples/simple_orm.py

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from yeti_switch_api.orm import OrmClient
44
from yeti_switch_api.orm import Contractor
5+
from yeti_switch_api.orm.billing import Invoice
56
from yeti_switch_api.orm.system import SmtpConnection
67

78
# For demonstration purpose only: below lines logs all HTTP requests to stdout
@@ -19,10 +20,10 @@
1920
# here library usage starts
2021
OrmClient(
2122
{
22-
"API_ROOT": "http://127.0.0.1:4321/api/rest/admin",
23+
"API_ROOT": "https://demo.yeti-switch.org/api/rest/admin",
2324
"AUTH_CREDS": {
2425
"login": "admin",
25-
"password": "qweasd",
26+
"password": "111111",
2627
},
2728
"VALIDATE_SSL": True,
2829
"TIMEOUT": 1,
@@ -50,15 +51,15 @@
5051
"name": "test_python",
5152
"enabled": True,
5253
"customer": True,
53-
},
54-
relationships={
55-
"smtp-connection": {
56-
"data": {
57-
"type": SmtpConnection.Meta.type,
58-
"id": found_smtp_connections[0].id,
59-
}
60-
}
61-
},
54+
}
55+
# relationships={
56+
# "smtp-connection": {
57+
# "data": {
58+
# "type": SmtpConnection.Meta.type,
59+
# "id": found_smtp_connections[0].id,
60+
# }
61+
# }
62+
# },
6263
)
6364
print("new_contractor before create", new_contractor.raw_object)
6465
new_contractor.create()
@@ -74,3 +75,12 @@
7475
print("contractor found", contractor.raw_object)
7576

7677
print(contractor.creatable_fields())
78+
79+
80+
# get invoices
81+
invs = Invoice.get_list()
82+
if len(invs) == 0:
83+
print("No invoices found")
84+
else:
85+
for inv in invs:
86+
print("Invoices found:", inv.raw_object)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,6 @@
11
from .contact import Contact # noqa: F401
2+
from .invoice import Invoice # noqa: F401
3+
from .invoice_originated_destination import InvoiceOriginatedDestination # noqa: F401
4+
from .invoice_originated_network import InvoiceOriginatedNetwork # noqa: F401
5+
from .invoice_terminated_destination import InvoiceTerminatedDestination # noqa: F401
6+
from .invoice_terminated_network import InvoiceTerminatedNetwork # noqa: F401
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
from ..base_model import BaseModel, AttributeField, RelationField
2+
3+
4+
class Invoice(BaseModel):
5+
class Meta:
6+
path = "billing/invoices"
7+
type = "invoices"
8+
9+
account = RelationField("account")
10+
originated_destinations = RelationField("originated-destinations")
11+
originated_networks = RelationField("originated-networks")
12+
terminated_destinations = RelationField("terminated-destinations")
13+
terminated_networks = RelationField("terminated-networks")
14+
15+
reference = AttributeField("reference")
16+
state = AttributeField("state")
17+
invoice_type = AttributeField("invoice-type")
18+
start_date = AttributeField("start-date")
19+
end_date = AttributeField("end-date")
20+
amount_spent = AttributeField("amount-spent")
21+
amount_earned = AttributeField("amount-earned")
22+
23+
originated_amount_spent = AttributeField("originated-amount-spent")
24+
originated_amount_earned = AttributeField("originated-amount-earned")
25+
originated_calls_count = AttributeField("originated-calls-count")
26+
originated_successful_calls_count = AttributeField(
27+
"originated-successful-calls-count"
28+
)
29+
originated_calls_duration = AttributeField("originated-calls-duration")
30+
originated_billing_duration = AttributeField("originated-billing-duration")
31+
originated_first_call_at = AttributeField("originated-first-call-at")
32+
originated_last_call_at = AttributeField("originated-last-call-at")
33+
34+
terminated_amount_spent = AttributeField("terminated-amount-spent")
35+
terminated_amount_earned = AttributeField("terminated-amount-earned")
36+
terminated_calls_count = AttributeField("terminated-calls-count")
37+
terminated_successful_calls_count = AttributeField(
38+
"terminated-successful-calls-count"
39+
)
40+
terminated_calls_duration = AttributeField("terminated-calls-duration")
41+
terminated_billing_duration = AttributeField("terminated-billing-duration")
42+
terminated_first_call_at = AttributeField("terminated-first-call-at")
43+
terminated_last_call_at = AttributeField("terminated-last-call-at")
44+
45+
def creatable_fields(self):
46+
return ["account", "start_date", "end_date"]
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from ..base_model import BaseModel, AttributeField, RelationField
2+
3+
4+
class InvoiceOriginatedDestination(BaseModel):
5+
class Meta:
6+
path = "billing/invoice-originated-destinations"
7+
type = "invoice-originated-destinations"
8+
9+
invoice = RelationField("invoice")
10+
country = RelationField("country")
11+
network = RelationField("network")
12+
13+
amount = AttributeField("amount")
14+
billing_duration = AttributeField("billing-duration")
15+
calls_count = AttributeField("calls-count")
16+
successful_calls_count = AttributeField("successful-calls-count")
17+
calls_duration = AttributeField("calls-duration")
18+
dst_prefix = AttributeField("dst-prefix")
19+
first_call_at = AttributeField("first-call-at")
20+
last_call_at = AttributeField("last-call-at")
21+
rate = AttributeField("rate")
22+
spent = AttributeField("spent")
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from ..base_model import BaseModel, AttributeField, RelationField
2+
3+
4+
class InvoiceOriginatedNetwork(BaseModel):
5+
class Meta:
6+
path = "billing/invoice-originated-networks"
7+
type = "invoice-originated-networks"
8+
9+
invoice = RelationField("invoice")
10+
country = RelationField("country")
11+
network = RelationField("network")
12+
13+
amount = AttributeField("amount")
14+
billing_duration = AttributeField("billing-duration")
15+
calls_count = AttributeField("calls-count")
16+
successful_calls_count = AttributeField("successful-calls-count")
17+
calls_duration = AttributeField("calls-duration")
18+
first_call_at = AttributeField("first-call-at")
19+
last_call_at = AttributeField("last-call-at")
20+
rate = AttributeField("rate")
21+
spent = AttributeField("spent")
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from ..base_model import BaseModel, AttributeField, RelationField
2+
3+
4+
class InvoiceTerminatedDestination(BaseModel):
5+
class Meta:
6+
path = "billing/invoice-terminated-destinations"
7+
type = "invoice-terminated-destinations"
8+
9+
invoice = RelationField("invoice")
10+
country = RelationField("country")
11+
network = RelationField("network")
12+
13+
amount = AttributeField("amount")
14+
billing_duration = AttributeField("billing-duration")
15+
calls_count = AttributeField("calls-count")
16+
successful_calls_count = AttributeField("successful-calls-count")
17+
calls_duration = AttributeField("calls-duration")
18+
dst_prefix = AttributeField("dst-prefix")
19+
first_call_at = AttributeField("first-call-at")
20+
last_call_at = AttributeField("last-call-at")
21+
rate = AttributeField("rate")
22+
spent = AttributeField("spent")
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from ..base_model import BaseModel, AttributeField, RelationField
2+
3+
4+
class InvoiceTerminatedNetwork(BaseModel):
5+
class Meta:
6+
path = "billing/invoice-terminated-networks"
7+
type = "invoice-terminated-networks"
8+
9+
invoice = RelationField("invoice")
10+
country = RelationField("country")
11+
network = RelationField("network")
12+
13+
amount = AttributeField("amount")
14+
billing_duration = AttributeField("billing-duration")
15+
calls_count = AttributeField("calls-count")
16+
successful_calls_count = AttributeField("successful-calls-count")
17+
calls_duration = AttributeField("calls-duration")
18+
first_call_at = AttributeField("first-call-at")
19+
last_call_at = AttributeField("last-call-at")
20+
rate = AttributeField("rate")
21+
spent = AttributeField("spent")

yeti_switch_api/orm/orm_client.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,16 @@
33
from ..common import build_client_config
44
from .routing import Rateplan, RoutingTag
55
from .billing import Contact
6+
from .billing import Invoice
7+
from .billing import InvoiceOriginatedDestination
8+
from .billing import InvoiceOriginatedNetwork
9+
from .billing import InvoiceTerminatedDestination
10+
from .billing import InvoiceTerminatedNetwork
611
from .contractor import Contractor
712
from .system import SmtpConnection
13+
from .system import Country
14+
from .system import Network
15+
from .system import NetworkType
816

917

1018
class OrmClient:
@@ -23,6 +31,14 @@ def __new__(cls, config, **kwargs):
2331
def __register_models(cls):
2432
cls.__register_model(Contractor)
2533
cls.__register_model(Contact)
34+
cls.__register_model(Invoice)
35+
cls.__register_model(InvoiceOriginatedDestination)
36+
cls.__register_model(InvoiceOriginatedNetwork)
37+
cls.__register_model(InvoiceTerminatedDestination)
38+
cls.__register_model(InvoiceTerminatedNetwork)
39+
cls.__register_model(Country)
40+
cls.__register_model(Network)
41+
cls.__register_model(NetworkType)
2642
cls.__register_model(Rateplan)
2743
cls.__register_model(RoutingTag)
2844
cls.__register_model(SmtpConnection)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
11
from .smtp_connection import SmtpConnection # noqa: F401
2+
from .country import Country # noqa: F401
3+
from .network import Network # noqa: F401
4+
from .network_type import NetworkType # noqa: F401
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from ..base_model import BaseModel, AttributeField, RelationField # noqa: F401
2+
3+
4+
class Country(BaseModel):
5+
class Meta:
6+
path = "system/countries"
7+
type = "countries"
8+
9+
name = AttributeField("name")
10+
host = AttributeField("iso2")

0 commit comments

Comments
 (0)