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