69 lines
2.2 KiB
V
69 lines
2.2 KiB
V
module contract
|
|
|
|
import base
|
|
import freeflowuniverse.herolib.data.ourtime
|
|
|
|
// Contract represents a legal agreement
|
|
pub struct Contract {
|
|
base.Base // Base struct for common fields
|
|
pub mut:
|
|
id string // Unique ID for the contract (UUID string)
|
|
title string
|
|
description string
|
|
contract_type string // service, employment, nda, sla, partnership, distribution, license, membership, other
|
|
status ContractStatus
|
|
created_at ourtime.OurTime
|
|
updated_at ourtime.OurTime
|
|
created_by string // User ID or name of the creator
|
|
terms_and_conditions string // JSON string or markdown
|
|
start_date ourtime.OurTime // Optional
|
|
end_date ourtime.OurTime // Optional
|
|
renewal_period_days int // Optional (0 if not applicable)
|
|
next_renewal_date ourtime.OurTime // Optional
|
|
signers []ContractSigner
|
|
revisions []ContractRevision
|
|
current_version u32
|
|
last_signed_date ourtime.OurTime // Optional
|
|
}
|
|
|
|
// ContractRevision represents a version of the contract content
|
|
pub struct ContractRevision {
|
|
// base.Base // If applicable
|
|
pub mut:
|
|
version u32
|
|
content string // The actual content of the contract revision
|
|
created_at ourtime.OurTime
|
|
created_by string // User ID or name of the creator
|
|
comments string // Optional in Rust, string can be empty
|
|
}
|
|
|
|
// ContractStatus defines the possible statuses of a contract
|
|
pub enum ContractStatus {
|
|
draft
|
|
pending_signatures
|
|
signed
|
|
active
|
|
expired
|
|
cancelled
|
|
}
|
|
|
|
// ContractSigner represents a party involved in signing a contract
|
|
pub struct ContractSigner {
|
|
pub mut:
|
|
id string // Unique ID for the signer (UUID string)
|
|
name string
|
|
email string
|
|
status SignerStatus
|
|
signed_at ourtime.OurTime // Optional in Rust, OurTime can be zero
|
|
comments string // Optional in Rust, string can be empty
|
|
last_reminder_mail_sent_at ourtime.OurTime // Unix timestamp of last reminder sent
|
|
signature_data string // Base64 encoded signature image data (Optional in Rust)
|
|
}
|
|
|
|
// SignerStatus defines the status of a contract signer
|
|
pub enum SignerStatus {
|
|
pending
|
|
signed
|
|
rejected
|
|
}
|