Textual representation of the UML Graph
Classes
Quote
- Attributes:
quoteID: int
projectID: int
windows: list<Window>
subtotal: double
tax: double
total: double
status: QuoteStatus
reasonForStatus: string
dateCreated: date
dateModified: date
notes: string
- Methods:
AddWindow(window: Window): void
RemoveWindow(windowID: int): void
UpdateWindow(window: Window): void
CalculateSubtotal(): double
CalculateTax(): double
CalculateTotal(): double
GetQuoteDetails(): dict
GeneratePDF(): void
Customer
- Attributes:
customerID: int
name: string
email: string
phoneNumber: string
address: string
projectAddress: string
projects: list<Project>
- Methods:
UpdateDetails(details: dict): void
GetCustomerDetails(): dict
Project
- Attributes:
projectID: int
customer: Customer
quotes: list<Quote>
status: ProjectStatus
dateStarted: date
estimatedCompletionDate: date
- Methods:
AddQuote(quote: Quote): void
RemoveQuote(quoteID: int): void
UpdateStatus(status: string): void
GetProjectDetails(): dict
Window
- Attributes:
windowID: int
type: WindowType
width: double
height: double
description: string
sashes: list<Sash>
installationCost: double
- Methods:
AddSash(sash: Sash): void
RemoveSash(sashID: int): void
GetSashes(): list<Sash>
CalculateCost()
PrintData()
Sash
- Attributes:
sashID: int
windowID: int
width: double
height: double
perimeter: double
frameCost: double
numLites: int
design: Design
finish: Finish
glazings: list<Glazing>
- Methods:
CalculatePerimeter()
CalculateDesignCost()
CalculateFinishCost()
AddGlazing(glazing: Glazing): void
RemoveGlazing(glazingID: int): void
GetGlazings(): list<Glazing>
Glazing
- Attributes:
glazingID: int
type: GlazingType
area: double
cost: double
addOns: list<AddOn>
- Methods:
CalculateArea()
CalculateAddOnCost()
AddAddOn(addOn: Addon): void
RemoveAddOn(addOnID: int): void
GetAddOns(): list<AddOn>
RateCard
- Attributes:
itemType: string
(e.g., “wood”, “glazing”, “design”, “finish”)itemName: string
(e.g., ”DOUGLAS_FIR
”, ”LAMINATED
“)rate: double
- Methods:
GetRate(itemType: string, itemName: string): double
UpdateRate(itemType: string, itemName: string, newRate: double): void
Enumerations
- QuoteStatus:
PENDING
,APPROVED
,REJECTED
,REVISED
,SUPERSEDED
,WITHDRAWN
,EXPIRED
- ProjectStatus:
INITIATED
,IN_PROGRESS
,COMPLETED
,ON_HOLD
- WindowType:
SINGLE_HUNG
,DOUBLE_HUNG
,FIXED
,CASEMENT
,DOUBLE_CASEMENT
,TRANSOM
,AWNING
,PIVOT
- GlazingType:
SINGLE_PANE
,DUAL_PANE
- AddOn:
LAMINATED
,TEMPERED
,SOLARBAN_60
,SOLARBAN_70
,OBSCURED
,SATIN_ETCHED
,ARGON_GAS
- Design:
DEFAULT
,ARCH
,BENT
,CUSTOM
- Finish:
PRIMED
,PAINTED
,STAINED
,CUSTOM
Relationships
Quote
has a one-to-many relationship withWindow
.Quote
has a many-to-one relationship withProject
.Customer
has a one-to-many relationship withProject
.Project
has a one-to-many relationship withQuote
.Window
has a one-to-many relationship withSash
.Window
has a many-to-one relationship withQuote
.Sash
has a many-to-one relationship withWindow
.Sash
has a one-to-many relationship withGlazing
.