NOTE: Trivore ID Documentation has moved to https://trivoreid.com

The content on this site IS OUT OF DATE!

This space has been archived!

Please go ahead to the new site!

Contract Service (python)

If you need more information on contracts, please, see /wiki/spaces/TISpubdoc/pages/20515354.

List of all options:

  • Contracts management
  • Contract's Parties management
  • Party's Signers management
  • Party's Contacts management
  • Appendix management
  • Contract body's file management
  • Appendix file management

Contract Status

  • DRAFT - new contract has been created.
  • SIGNABLE - contract has been finalized.  NB! Even if the allowed action modifyFinalised is True, after contract is finalized user can modify only notes.
  • SIGNED - every signer has signed.
  • EXPIRED - contract passes expiration dates.
  • TERMINATED - contract termination conditions are passed
  • ARCHIVED - expired or terminated contract will eventually be archived

Contract Actions

  • Finalize - to finalize contract following conditions should be fulfilled:
    • current user must have read access to contract
    • current user must be owner of contract
    • contract's state must be DRAFT
    • contract must have an owner
    • contract must have at least one party
    • each party must have at least one signer
  • Sign
  • Terminate

Contracts management

from trivoreid.models.contract import Contract, TerminationMode
from trivoreid.utils.criteria import Filter

# Get list of all contracts
page = api.contract_service.get_all()

# Apply filter
filt = Filter(Filter.EQUAL, 'code', 'examplecode')
page = api.contract_service.get_all(filt)

# Add new Contract
contract = Contract()

contract.termOfNoticeDays = 'Example Term of Notice'
contract.terminationMode = TerminationMode.AFTER_ALL_PARTIES_TERMINATE
contract.title = 'Example Title'
contract.version = '1.0.0'
contract.validFrom = '2018-04-26T08:38:02.730Z'
contract.validTo = '2022-04-26T08:38:02.730Z'
contract.code = 'examplecode'
contract.links = ['example1', 'example2']
contract.contractRefs = ['ref1', 'ref2']
contract.notes = 'Example contract notes.'

contract.financialTerms.billingTerms = 'Example Billing Terms.'
contract.financialTerms.paymentTerms = 'Example Payment Terms.'

# This method returns new contract object with the generated ID
contract = api.contract_service.create(contract)
contractId = contract.id

# Get one, Update and Delete
contract.scope = 'Modified scope'
contract.title = 'Modified Title'

api.contract_service.update(contract)

contract = api.contract_service.get(contractId)

api.contract_service.delete(contractId)

# Get all allowed actions, finalise, sign and terminate the contract

# returns dictionary with all actions
actions = api.contract_service.get_allowed_actions(contractId)

contract = api.contract_service.finalise(contractId)

contract = api.contract_service.sign(contractId)

contract = api.contract_service.terminate(contractId, reason='Termination Reason')

Contract's Party management

from trivoreid.models.contract import Party

# Get list of all contract's parties.
# Instead of Page returns list of parties. No pagination or filter can be applied.
parties = api.contract_service.get_all_parties(contractId)

# Add new Party
party = Party()

party.name = 'Example Name'
party.address = 'Example Address'

# This method returns new party object with the generated ID
party = api.contract_service.create_party(contractId, party)
partyId = party.id

# Get one, Update and Delete
party.mobile = '+358401234567'
party.email = 'example@example.com'

api.contract_service.update_party(contractId, party)

party = api.contract_service.get_party(contractId, partyId)

api.contract_service.delete_party(contractId, partyId)

Party's Signer management

from trivoreid.models.contract import Signer

# Get list of all contract's signers.
# Instead of Page returns list of signers. No pagination or filter can be applied.
signers = api.contract_service.get_all_party_signers(contractId, partyId)

# Add new Signer
signer = Signer()

signer.name = 'Example Name'
signer.address = 'Example Address'

# This method returns new signer object with the generated ID
signer = api.contract_service.create_party_signer(contractId, partyId, signer)
signerId = signer.id

# Get one, Update and Delete
signer.mobile = '+358401234567'
signer.email = 'example@example.com'

api.contract_service.update_party_signer(contractId, partyId, signer)

signer = api.contract_service.get_party_signer(contractId, partyId, signerId)

api.contract_service.delete_party_signer(contractId, partyId, signerId)

Party's Contact management

from trivoreid.models.contract import PartyContact

# Get list of all contract's contacts.
# Instead of Page returns list of contacts. No pagination or filter can be applied.
contacts = api.contract_service.get_all_party_contacts(contractId, partyId)

# Add new Contact
contact = PartyContact()

contact.name = 'Example Name'
contact.address = 'Example Address'

# This method returns new contact object with the generated ID
contact = api.contract_service.create_party_contact(contractId, partyId, contact)
contactId = contact.id

# Get one, Update and Delete
contact.mobile = '+358401234567'
contact.email = 'example@example.com'

api.contract_service.update_party_contact(contractId, partyId, contact)

contact = api.contract_service.get_party_contact(contractId, partyId, contactId)

api.contract_service.delete_party_contact(contractId, partyId, contactId)

Contract's Appendix management

from trivoreid.models.contract import Appendix

# Get list of all contract's appendices.
# Instead of Page returns list of appendices. No pagination or filter can be applied.
appendices = api.contract_service.get_all_appendices(contractId)

# Add new Appendix
appendix = Appendix()

appendix.text = 'Example text.'
appendix.title = 'Example Title'

# This method returns new appendix object with the generated ID
appendix = api.contract_service.create_appendix(contractId, appendix)
appendixId = appendix.id

# Get one, Update and Delete
appendix.text = 'Modified appendix text.'

api.contract_service.update_appendix(contractId, appendix)

appendix = api.contract_service.get_appendix(contractId, appendixId)

api.contract_service.delete_appendix(contractId, appendixId)

# Change appendix order
appendices = api.contract_service.get_all_appendices(contractId)
ids = []
for a in appendices:
    ids.append(a.id)
# Reversing the order of appendices IDs
ids_reversed = ids[::-1]

api.contract_service.change_appendix_order(contractId, ids_reversed)

Content and appendix file management

# Safe file to the contract body
file = open('example.pdf', 'rb')
file_bytes = file.read()

api.contract_service.upload_body_file(contractId, file_bytes)

# Get the file from the contract body
result = api.contract_service.get_body_file(contractId)

with open('result.pdf', 'wb') as out_file:
    out_file.write(result)

# Safe file to appendix
api.contract_service.upload_appendix_file(cId, a.id, file_bytes)

# Get the file from the appendix
result = api.contract_service.get_appendix_file(contractId, appendixId)

with open('result.pdf', 'wb') as out_file:
	out_file.write(result)

# Delete
api.contract_service.delete_body_file(contractId)
api.contract_service.delete_appendix_file(contractId, appendixId)

Contract Service Models

/wiki/spaces/TISpubdoc/pages/20515187

/wiki/spaces/TISpubdoc/pages/20515193

/wiki/spaces/TISpubdoc/pages/20515194

/wiki/spaces/TISpubdoc/pages/20515188

/wiki/spaces/TISpubdoc/pages/20515185

/wiki/spaces/TISpubdoc/pages/20515184

/wiki/spaces/TISpubdoc/pages/20515189

/wiki/spaces/TISpubdoc/pages/20515186

NOTE: Trivore ID Documentation has moved to https://trivoreid.com

The content on this site IS OUT OF DATE!

This space has been archived!