...
This commit is contained in:
		
							
								
								
									
										31
									
								
								specs/models_older/crm/account.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								specs/models_older/crm/account.v
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
module crm
 | 
			
		||||
import base
 | 
			
		||||
 | 
			
		||||
import freeflowuniverse.herolib.data.ourtime
 | 
			
		||||
 | 
			
		||||
// Account represents a business or organization.
 | 
			
		||||
// Enums like AccountType and AccountIndustry have been removed for broader applicability.
 | 
			
		||||
// Fields previously using these enums now use `string` type.
 | 
			
		||||
pub struct Account {
 | 
			
		||||
	base.Base // Base struct for common fields
 | 
			
		||||
pub mut:
 | 
			
		||||
	name              string
 | 
			
		||||
	typ                string             // Type of account (e.g., Customer, Partner) - formerly AccountType enum
 | 
			
		||||
	industry           string             // Industry of the account (e.g., Technology, Healthcare) - formerly AccountIndustry enum
 | 
			
		||||
	employees         u32
 | 
			
		||||
	annual_revenue    f64
 | 
			
		||||
	billing_street    string
 | 
			
		||||
	billing_city      string
 | 
			
		||||
	billing_state     string
 | 
			
		||||
	billing_postal_code string
 | 
			
		||||
	billing_country   string
 | 
			
		||||
	shipping_street   string
 | 
			
		||||
	shipping_city     string
 | 
			
		||||
	shipping_state    string
 | 
			
		||||
	shipping_postal_code string
 | 
			
		||||
	shipping_country  string
 | 
			
		||||
	description       string
 | 
			
		||||
	assigned_user_id  u32    // Reference to User
 | 
			
		||||
	created_by_id     u32    // Reference to User
 | 
			
		||||
	primary_contact_id u32?  // Optional: Reference to Contact
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										39
									
								
								specs/models_older/crm/call.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								specs/models_older/crm/call.v
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
module crm
 | 
			
		||||
import base
 | 
			
		||||
 | 
			
		||||
import freeflowuniverse.herolib.data.ourtime
 | 
			
		||||
 | 
			
		||||
// CallStatus represents the status of a call
 | 
			
		||||
pub enum CallStatus {
 | 
			
		||||
	planned
 | 
			
		||||
	held
 | 
			
		||||
	not_held
 | 
			
		||||
	canceled
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CallDirection represents the direction of a call
 | 
			
		||||
pub enum CallDirection {
 | 
			
		||||
	outbound
 | 
			
		||||
	inbound
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Call represents a phone call in the CRM system
 | 
			
		||||
pub struct Call {
 | 
			
		||||
	base.Base // Base struct for common fields (id u32, creation_time, mod_time)
 | 
			
		||||
pub mut:
 | 
			
		||||
	name              string
 | 
			
		||||
	status            CallStatus
 | 
			
		||||
	direction         CallDirection
 | 
			
		||||
	date_start        ourtime.OurTime
 | 
			
		||||
	duration          u32    // Duration in minutes
 | 
			
		||||
	description       string
 | 
			
		||||
	parent_type       string // Can be 'Account', 'Contact', 'Lead', 'Opportunity', 'Case'
 | 
			
		||||
	parent_id         u32    // Reference to the parent entity
 | 
			
		||||
	account_id        u32    // Reference to Account
 | 
			
		||||
	contact_id        u32    // Reference to Contact
 | 
			
		||||
	lead_id           u32    // Reference to Lead
 | 
			
		||||
	phone_number      string
 | 
			
		||||
	recording_url     string // Optional
 | 
			
		||||
	assigned_user_id  u32    // Reference to User
 | 
			
		||||
	created_by_id     u32    // Reference to User
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										57
									
								
								specs/models_older/crm/campaign.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								specs/models_older/crm/campaign.v
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,57 @@
 | 
			
		||||
module crm
 | 
			
		||||
import base
 | 
			
		||||
 | 
			
		||||
import freeflowuniverse.herolib.data.ourtime
 | 
			
		||||
 | 
			
		||||
// CampaignStatus represents the status of a marketing campaign
 | 
			
		||||
pub enum CampaignStatus {
 | 
			
		||||
	planning
 | 
			
		||||
	active
 | 
			
		||||
	inactive
 | 
			
		||||
	complete
 | 
			
		||||
	canceled
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CampaignType represents the type of a marketing campaign
 | 
			
		||||
pub enum CampaignType {
 | 
			
		||||
	email
 | 
			
		||||
	newsletter
 | 
			
		||||
	web
 | 
			
		||||
	television
 | 
			
		||||
	radio
 | 
			
		||||
	mail
 | 
			
		||||
	print
 | 
			
		||||
	social_media
 | 
			
		||||
	telemarketing
 | 
			
		||||
	event
 | 
			
		||||
	other
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Campaign represents a marketing campaign in the CRM system
 | 
			
		||||
pub struct Campaign {
 | 
			
		||||
	base.Base // Base struct for common fields (id u32, creation_time, mod_time)
 | 
			
		||||
pub mut:
 | 
			
		||||
	name              string
 | 
			
		||||
	status            CampaignStatus
 | 
			
		||||
	type              CampaignType
 | 
			
		||||
	start_date        ourtime.OurTime
 | 
			
		||||
	end_date          ourtime.OurTime
 | 
			
		||||
	budget            f64
 | 
			
		||||
	expected_revenue  f64
 | 
			
		||||
	expected_cost     f64
 | 
			
		||||
	actual_cost       f64
 | 
			
		||||
	objective         string
 | 
			
		||||
	description       string
 | 
			
		||||
	target_audience   string
 | 
			
		||||
	sent_count        u32
 | 
			
		||||
	open_count        u32
 | 
			
		||||
	click_count       u32
 | 
			
		||||
	bounce_count      u32
 | 
			
		||||
	opt_out_count     u32
 | 
			
		||||
	lead_count        u32
 | 
			
		||||
	opportunity_count u32
 | 
			
		||||
	revenue           f64
 | 
			
		||||
	roi               f64    // Return on Investment
 | 
			
		||||
	assigned_user_id  u32    // Reference to User
 | 
			
		||||
	created_by_id     u32    // Reference to User
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										53
									
								
								specs/models_older/crm/case.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								specs/models_older/crm/case.v
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
module crm
 | 
			
		||||
import base
 | 
			
		||||
 | 
			
		||||
import freeflowuniverse.herolib.data.ourtime
 | 
			
		||||
 | 
			
		||||
// CaseStatus represents the status of a support case
 | 
			
		||||
pub enum CaseStatus {
 | 
			
		||||
	new
 | 
			
		||||
	assigned
 | 
			
		||||
	pending
 | 
			
		||||
	closed
 | 
			
		||||
	rejected
 | 
			
		||||
	duplicate
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CasePriority represents the priority of a support case
 | 
			
		||||
pub enum CasePriority {
 | 
			
		||||
	low
 | 
			
		||||
	medium
 | 
			
		||||
	high
 | 
			
		||||
	urgent
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CaseType represents the type of a support case
 | 
			
		||||
pub enum CaseType {
 | 
			
		||||
	question
 | 
			
		||||
	incident
 | 
			
		||||
	problem
 | 
			
		||||
	feature_request
 | 
			
		||||
	bug
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Case represents a customer support case in the CRM system
 | 
			
		||||
pub struct Case {
 | 
			
		||||
	base.Base // Base struct for common fields (id u32, creation_time, mod_time)
 | 
			
		||||
pub mut:
 | 
			
		||||
	// id                u32 // Removed, provided by base.Base
 | 
			
		||||
	number            string  // Auto-generated case number (e.g., "C-00001")
 | 
			
		||||
	name              string
 | 
			
		||||
	status            CaseStatus
 | 
			
		||||
	priority          CasePriority
 | 
			
		||||
	type              CaseType
 | 
			
		||||
	account_id        u32     // Reference to Account
 | 
			
		||||
	contact_id        u32     // Reference to Contact
 | 
			
		||||
	description       string
 | 
			
		||||
	resolution        string  // Optional
 | 
			
		||||
	solution          string  // Optional
 | 
			
		||||
	resolved_at       ourtime.OurTime // Optional
 | 
			
		||||
	// created_at        ourtime.OurTime // Removed, provided by base.Base.creation_time
 | 
			
		||||
	// updated_at        ourtime.OurTime // Removed, provided by base.Base.mod_time
 | 
			
		||||
	assigned_user_id  u32     // Reference to User
 | 
			
		||||
	created_by_id     u32     // Reference to User
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										35
									
								
								specs/models_older/crm/contact.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								specs/models_older/crm/contact.v
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
module crm
 | 
			
		||||
 | 
			
		||||
import base
 | 
			
		||||
import freeflowuniverse.herolib.data.ourtime
 | 
			
		||||
 | 
			
		||||
// Contact represents an individual person in the CRM system.
 | 
			
		||||
pub struct Contact {
 | 
			
		||||
	base.Base // Provides id u32, creation_time, mod_time
 | 
			
		||||
pub mut:
 | 
			
		||||
	first_name          string
 | 
			
		||||
	last_name           string
 | 
			
		||||
	title               string // e.g., Mr., Ms., Dr.
 | 
			
		||||
	email               string
 | 
			
		||||
	phone               string
 | 
			
		||||
	mobile              string
 | 
			
		||||
	job_title           string
 | 
			
		||||
	department          string // Optional
 | 
			
		||||
	// company_id       u32    // Optional: If directly linked to a primary company/account
 | 
			
		||||
	// reports_to_id    u32    // Optional: Contact ID of their manager
 | 
			
		||||
 | 
			
		||||
	// Address fields
 | 
			
		||||
	address_street      string
 | 
			
		||||
	address_city        string
 | 
			
		||||
	address_state       string
 | 
			
		||||
	address_postal_code string
 | 
			
		||||
	address_country     string
 | 
			
		||||
 | 
			
		||||
	description         string // General notes about the contact
 | 
			
		||||
	do_not_call         bool
 | 
			
		||||
	email_opt_out       bool
 | 
			
		||||
 | 
			
		||||
	// Social media profiles could be added here too
 | 
			
		||||
	// linkedin_profile string
 | 
			
		||||
	// twitter_profile  string
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										47
									
								
								specs/models_older/crm/lead.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								specs/models_older/crm/lead.v
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,47 @@
 | 
			
		||||
module crm
 | 
			
		||||
import base
 | 
			
		||||
 | 
			
		||||
import freeflowuniverse.herolib.data.ourtime
 | 
			
		||||
 | 
			
		||||
// LeadStatus represents the status of a lead
 | 
			
		||||
pub enum LeadStatus {
 | 
			
		||||
	new
 | 
			
		||||
	assigned
 | 
			
		||||
	in_process
 | 
			
		||||
	converted
 | 
			
		||||
	recycled
 | 
			
		||||
	dead
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// LeadSource represents the source of a lead
 | 
			
		||||
pub enum LeadSource {
 | 
			
		||||
	website
 | 
			
		||||
	call
 | 
			
		||||
	email
 | 
			
		||||
	existing_customer
 | 
			
		||||
	partner
 | 
			
		||||
	public_relations
 | 
			
		||||
	campaign
 | 
			
		||||
	conference
 | 
			
		||||
	trade_show
 | 
			
		||||
	word_of_mouth
 | 
			
		||||
	other
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Lead represents a potential customer in the CRM system
 | 
			
		||||
pub struct Lead {
 | 
			
		||||
	base.Base // Base struct for common fields (id u32, creation_time, mod_time)
 | 
			
		||||
pub mut:
 | 
			
		||||
	// id                u32 // Removed, provided by base.Base
 | 
			
		||||
	contact_id        u32    // Reference to a Contact (holds name, email, phone etc.)
 | 
			
		||||
	description       string
 | 
			
		||||
	status            LeadStatus
 | 
			
		||||
	source            LeadSource
 | 
			
		||||
	opportunity_amount f64   // Optional: If lead is converted, this could be initial amount
 | 
			
		||||
	opportunity_name  string // Optional: If lead is converted, this could be initial name
 | 
			
		||||
	converted_at      ourtime.OurTime // Optional: Timestamp when lead was converted
 | 
			
		||||
	// created_at        ourtime.OurTime // Removed, provided by base.Base.creation_time
 | 
			
		||||
	// updated_at        ourtime.OurTime // Removed, provided by base.Base.mod_time
 | 
			
		||||
	assigned_user_id  u32    // Reference to User
 | 
			
		||||
	created_by_id     u32    // Reference to User
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										57
									
								
								specs/models_older/crm/opportunity.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								specs/models_older/crm/opportunity.v
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,57 @@
 | 
			
		||||
module crm
 | 
			
		||||
import base
 | 
			
		||||
 | 
			
		||||
import freeflowuniverse.herolib.data.ourtime
 | 
			
		||||
 | 
			
		||||
// Opportunity represents a potential sale in the CRM system
 | 
			
		||||
pub struct Opportunity {
 | 
			
		||||
	base.Base // Base struct for common fields (id u32, creation_time, mod_time)
 | 
			
		||||
pub mut:
 | 
			
		||||
	// id                u32 // Removed, provided by base.Base
 | 
			
		||||
	name              string
 | 
			
		||||
	account_id        u32    // Reference to Account
 | 
			
		||||
	amount            f64
 | 
			
		||||
	close_date        ourtime.OurTime // Expected close date
 | 
			
		||||
	probability       f64    // Percentage (0-100)
 | 
			
		||||
	stage             OpportunityStage
 | 
			
		||||
	source            OpportunitySource
 | 
			
		||||
	lead_source       string // More specific lead source details if needed
 | 
			
		||||
	campaign_id       u32    // Optional: Reference to Campaign
 | 
			
		||||
	description       string
 | 
			
		||||
	next_step         string // Optional
 | 
			
		||||
	competition       string // Optional
 | 
			
		||||
	// created_at        ourtime.OurTime // Removed, provided by base.Base.creation_time
 | 
			
		||||
	// updated_at        ourtime.OurTime // Removed, provided by base.Base.mod_time
 | 
			
		||||
	assigned_user_id  u32    // Reference to User
 | 
			
		||||
	created_by_id     u32    // Reference to User
 | 
			
		||||
	contacts          []u32  // References to Contacts associated with this opportunity
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// OpportunityStage represents the stage of an opportunity
 | 
			
		||||
pub enum OpportunityStage {
 | 
			
		||||
	prospecting
 | 
			
		||||
	qualification
 | 
			
		||||
	needs_analysis
 | 
			
		||||
	value_proposition
 | 
			
		||||
	id_decision_makers
 | 
			
		||||
	perception_analysis
 | 
			
		||||
	proposal_price_quote
 | 
			
		||||
	negotiation_review
 | 
			
		||||
	closed_won
 | 
			
		||||
	closed_lost
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// OpportunitySource represents the source of an opportunity
 | 
			
		||||
pub enum OpportunitySource {
 | 
			
		||||
	call
 | 
			
		||||
	email
 | 
			
		||||
	existing_customer
 | 
			
		||||
	partner
 | 
			
		||||
	public_relations
 | 
			
		||||
	campaign
 | 
			
		||||
	web_site
 | 
			
		||||
	conference
 | 
			
		||||
	trade_show
 | 
			
		||||
	word_of_mouth
 | 
			
		||||
	other
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										43
									
								
								specs/models_older/crm/task.v
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								specs/models_older/crm/task.v
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
module crm
 | 
			
		||||
import base
 | 
			
		||||
 | 
			
		||||
import freeflowuniverse.herolib.data.ourtime
 | 
			
		||||
 | 
			
		||||
// TaskStatus represents the status of a task
 | 
			
		||||
pub enum TaskStatus {
 | 
			
		||||
	not_started
 | 
			
		||||
	in_progress
 | 
			
		||||
	completed
 | 
			
		||||
	deferred
 | 
			
		||||
	canceled
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// TaskPriority represents the priority of a task
 | 
			
		||||
pub enum TaskPriority {
 | 
			
		||||
	low
 | 
			
		||||
	medium
 | 
			
		||||
	high
 | 
			
		||||
	urgent
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Task represents a task or to-do item in the CRM system
 | 
			
		||||
pub struct Task {
 | 
			
		||||
	base.Base // Base struct for common fields (id u32, creation_time, mod_time)
 | 
			
		||||
pub mut:
 | 
			
		||||
	// id                u32 // Removed, provided by base.Base
 | 
			
		||||
	name              string
 | 
			
		||||
	status            TaskStatus
 | 
			
		||||
	priority          TaskPriority
 | 
			
		||||
	due_date          ourtime.OurTime // Optional
 | 
			
		||||
	completed_at      ourtime.OurTime // Optional
 | 
			
		||||
	description       string
 | 
			
		||||
	parent_type       string  // Optional: Can be 'Account', 'Contact', 'Lead', 'Opportunity', 'Case'
 | 
			
		||||
	parent_id         u32     // Optional: Reference to the parent entity
 | 
			
		||||
	account_id        u32     // Optional: Reference to Account
 | 
			
		||||
	contact_id        u32     // Optional: Reference to Contact
 | 
			
		||||
	reminder_time     ourtime.OurTime // Optional
 | 
			
		||||
	// created_at        ourtime.OurTime // Removed, provided by base.Base.creation_time
 | 
			
		||||
	// updated_at        ourtime.OurTime // Removed, provided by base.Base.mod_time
 | 
			
		||||
	assigned_user_id  u32     // Reference to User
 | 
			
		||||
	created_by_id     u32     // Reference to User
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user