Skip to content

Commit 90942f6

Browse files
author
Jan Aertgeerts
committed
feat(core) add attachment/supdoc support
1 parent bca2fb1 commit 90942f6

2 files changed

Lines changed: 53 additions & 2 deletions

File tree

pyintacct/models/company.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,20 @@
11
from .base import API21Object
22
from pydantic import BaseModel
3-
from typing import Optional
3+
from typing import Optional, List
44

5+
class AttachmentDetail(BaseModel):
6+
attachmentname: Optional[str] = None
7+
attachmenttype: Optional[str] = None
8+
attachmentdata: Optional[str] = None
9+
10+
class Attachment(BaseModel):
11+
attachment: List[AttachmentDetail] = Field(default_factory=list)
12+
13+
class SupDoc(API21Object):
14+
supdocid: Optional[str] = None
15+
supdocfoldername: Optional[str] = None
16+
supdocdescription: Optional[str] = None
17+
attachments: Attachment = Field(default_factory=Attachment)
518

619
class MailAddress(BaseModel):
720
address1: Optional[str] = None
@@ -14,7 +27,6 @@ class MailAddress(BaseModel):
1427
latitude: Optional[str] = None
1528
longitude: Optional[str] = None
1629

17-
1830
class Contact(API21Object):
1931
contactname: str = ...
2032
printas: Optional[str] = None

tests/test_order_entry.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import pytest
2+
from decimal import Decimal
3+
from pyintacct.models.base import Date
4+
from pyintacct.models.company import Contact
5+
from pyintacct.models.sotransaction import SOTransaction, SOTransactionItem, SOTransactionItems
6+
7+
8+
def test_create_sotransaction():
9+
items = SOTransactionItems(sotransitem=[
10+
SOTransactionItem(itemid='1001', quantity=Decimal('5'), unit='each', price=Decimal('100.00')),
11+
SOTransactionItem(itemid='1002', quantity=Decimal('3'), unit='each', price=Decimal('200.00'))
12+
])
13+
14+
transaction = SOTransaction(
15+
transactiontype='Sales Order',
16+
datecreated=Date(year='2024', month='6', day='18'),
17+
customerid='CUST-1000',
18+
sotransitems=items,
19+
termname='Net 30',
20+
basecurr='USD',
21+
currency='USD',
22+
exchratetype='Intacct Daily Rate'
23+
)
24+
25+
assert transaction.transactiontype == 'Sales Order'
26+
assert transaction.datecreated == Date(year='2024', month='6', day='18')
27+
assert transaction.customerid == 'CUST-1000'
28+
assert transaction.sotransitems == items
29+
assert transaction.termname == 'Net 30'
30+
assert transaction.basecurr == 'USD'
31+
assert transaction.currency == 'USD'
32+
assert transaction.exchratetype == 'Intacct Daily Rate'
33+
assert len(transaction.sotransitems.sotransitem) == 2
34+
35+
36+
def test_query_transactions(client):
37+
transactions = client.read_by_query('SOTRANSACTION', 'CUSTOMERID LIKE CUST%', fields='TRANSACTIONID', pagesize=3)
38+
assert isinstance(transactions, list)
39+
assert len(transactions) > 0

0 commit comments

Comments
 (0)