← 35-37. Contractor Portal_
Chunks — 35-37. Contractor Portal_
The FRD markdown is the source of truth; these chunks are the derived retrieval index used to give the test-case generator only the relevant slices. Rebuilt automatically when the FRD is saved.
1635 chunks · ~113,144 tokens
#1
(intro)
~5 tok
✅ 1. Contractor auth
#2
**Functional Requirements Document (FRD) – Contractor Portal**
~16 tok
# **Functional Requirements Document (FRD) – Contractor Portal**
#3
**Functional Requirements Document (FRD) – Contractor Portal** > **1\. Module Overview**
~7 tok
## **1\. Module Overview**
#4
**Module Name:** Contractor Portal (Authentication & Onboarding)
~17 tok
# **Module Name:** Contractor Portal (Authentication & Onboarding)
#5
**Purpose:** Enable contractors to set up and complete profile setup, and access their dedicated portal for project management
~32 tok
# **Purpose:** Enable contractors to set up and complete profile setup, and access their dedicated portal for project management
#6
**Business Goal:** Streamline contractor onboarding and create a centralized contractor-agency collaboration platform
~30 tok
# **Business Goal:** Streamline contractor onboarding and create a centralized contractor-agency collaboration platform
#7
**Business Goal:** Streamline contractor onboarding and create a centralized contractor-agency collaboration platform > **Contractor Definition**
~7 tok
### **Contractor Definition**
#8
Contractors are freelancers, employees, solo operators, or agency owners who execute events assigned by the agency. (photographers, videographers, content creators, drone operators). They handle event attendance, deliverables, and timing requirements as specified by agency admins.
~71 tok
# Contractors are freelancers, employees, solo operators, or agency owners who execute events assigned by the agency. (photographers, videographers, content creators, drone operators). They handle event attendance, deliverables, and timing requirements as specified by agency admins.
#9
Contractors are freelancers, employees, solo operators, or agency owners who execute events assigned by the agency. (photographers, videographers, content creators, drone operators). They handle event attendance, deliverables, and timing requirements as specified by agency admins. > **Contractor Types & Roles**
~8 tok
### **Contractor Types & Roles**
#10
**Primary Types:** Videographer, Photographer, Content Creator, Drone Operator
~20 tok
# **Primary Types:** Videographer, Photographer, Content Creator, Drone Operator
#11
**Role Categories: (Roles will be categorized or defined by the agency )**
~19 tok
# **Role Categories: (Roles will be categorized or defined by the agency )**
#12
**Lead Shooter** - Main shoot leader
~10 tok
# **Lead Shooter** - Main shoot leader
#13
**Second Shooter** - Lead shooter assistant
~11 tok
# **Second Shooter** - Lead shooter assistant
#14
**Drone Operator** - Drone services provider
~12 tok
# **Drone Operator** - Drone services provider
#15
**Assistant** - Service support to the lead or other shooters
~50 tok
# **Assistant** - Service support to the lead or other shooters 1. **Backup Shooter - An additional shooter type/tag for use in the event of** last-minute unavailability of the assigned contractors.
#16
Note: Contractors can have different roles across agencies. The agency owner determines pay rates as on the contractor's expertise.
~33 tok
# Note: Contractors can have different roles across agencies. The agency owner determines pay rates as on the contractor's expertise.
#17
Note: Contractors can have different roles across agencies. The agency owner determines pay rates as on the contractor's expertise. >
~1 tok
##
#18
Note: Contractors can have different roles across agencies. The agency owner determines pay rates as on the contractor's expertise. > **2\. User Roles & Permissions**
~9 tok
## **2\. User Roles & Permissions**
#19
**Role**
~3 tok
# **Role**
#20
**Description**
~4 tok
# **Description**
#21
**Key Permissions**
~5 tok
# **Key Permissions**
#22
**Contractor**
~4 tok
# **Contractor**
#23
Freelance service providers
~7 tok
# Freelance service providers
#24
Create/edit profiles, view assigned projects, update availability, sign agreements, upload invoices, update questionnaires, update tax forms, update deliverables, Task management, and maintain notes
~50 tok
# Create/edit profiles, view assigned projects, update availability, sign agreements, upload invoices, update questionnaires, update tax forms, update deliverables, Task management, and maintain notes
#25
**Agency Admin**
~5 tok
# **Agency Admin**
#26
Agency owner/administrator
~7 tok
# Agency owner/administrator
#27
Send invitations, manage contractors, assign projects, and set rates
~18 tok
# Send invitations, manage contractors, assign projects, and set rates
#28
**Agency Manager**
~5 tok
# **Agency Manager**
#29
Team leader
~3 tok
# Team leader
#30
View contractor data, limited project assignment
~13 tok
# View contractor data, limited project assignment
#31
View contractor data, limited project assignment > **3\. User Flow**
~5 tok
## **3\. User Flow**
#32
View contractor data, limited project assignment > **3\. User Flow** > **Primary Flow - New Contractor:**
~10 tok
### **Primary Flow - New Contractor:**
#33
View contractor data, limited project assignment > **3\. User Flow** > **Primary Flow - New Contractor:** > **Scenario 1: New Invitation (1 agency, single or multiple brands, single or multiple services)**
~157 tok
#### **Scenario 1: New Invitation (1 agency, single or multiple brands, single or multiple services)**
1. **Invitation Email** → Contractor receives the invitation URL via email
2. **Profile Setup** → Complete basic profile information (name, email, password)
3. **Complete 5-Step Onboarding:**
* **Step 1:** Profile Setup (completed above)
* **Step 2:** Travel & Location Preferences
* **Step 3:** Gear Details (role-based sections)
* **Step 4:** Additional Information (dietary, allergies)
* **Step 5:** Working Days & Availability
4. **Dashboard Access** → Redirect to contractor dashboard#34
View contractor data, limited project assignment > **3\. User Flow** > **Primary Flow - New Contractor:** > **Scenario 2: Same Agency, Different Brand**
~173 tok
#### **Scenario 2: Same Agency, Different Brand** **2a. Same Services:** Already invited in 1 brand of the same agency, and invited in another/new brand of the same agency with the same services * **Flow:** Invitation → Auto-association with new brand → Dashboard update * **Result:** No additional onboarding is required **2b. Different Services:** Same agency, different brand, but different services (e.g., photographer first, then invited as videographer) * **Flow:** Invitation → Email notification with redirection link * **Action:** Direct to Settings > Gear section to add new service equipment * **Result:** Contractor adds videography gear without full re-onboarding
#35
View contractor data, limited project assignment > **3\. User Flow** > **Primary Flow - New Contractor:** > **Scenario 3: New Agency, New Brand**
~206 tok
#### **Scenario 3: New Agency, New Brand**
**3a. Same Service:** Contractor invited to a new brand of a different agency with the same service type
* **Flow:** Invitation → Profile verification → Travel Preferences only
* **Requirements:** Fill travel preferences (with/without fees) based on the new agency's settings
* **Skip:** Gear details, additional info, working days (already configured)
**3b. Different Service:** Contractor invited to a new brand of a different agency with a different service type
* **Flow:** Invitation → Profile verification → Travel Preferences + Gear Details
* **Requirements:**
* Fill in travel preferences based on the new agency's distance settings
* Complete gear details for the new service type
* **Skip:** Additional info, working days (already configured)#36
View contractor data, limited project assignment > **4\. Field Details & Validations**
~10 tok
## **4\. Field Details & Validations**
#37
View contractor data, limited project assignment > **4\. Field Details & Validations** > **4.1 Profile Setup Screen**
~8 tok
### **4.1 Profile Setup Screen**
#38
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially.
~297 tok
# **Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. **Field Name** **Type** **Required** **Validation Rules** Brand Logo Display Image Display Only Shows the inviting brand's logo (top section) Role Text Display Only Shows assigned role (e.g., "Photographer") Multi-Brand Indicator Text Display Only Shows "Multiple Brands" if multiple invitations First Name Text Yes Text-only, 2-50 characters Last Name Text Yes Text-only, 2-50 characters Email Address Email Yes Valid email format, check disposable emails, pre-filled if invited via email Phone Number Phone Yes Valid phone format with country code selector Website/Portfolio Link No Valid URL format Password Password Yes Min 6 chars, 1 uppercase, 1 lowercase, 1 number, 1 special char, Max 20 chars Eye Toggle Icon No Toggle password visibility Set up profile Action Button Yes Redirection to the Profile setup Continue with Google Action button Conditional Direct sign-in and redirection to profile setup Terms and conditions Link – – Privacy policy Link – – Terms of service Link – –
#39
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > **4.2 Travel & Location Preferences (Step 2)**
~311 tok
### **4.2 Travel & Location Preferences (Step 2)** **Field Name** **Type** **Required** **Validation Rules** Address Line Text Input Yes Google Place API City Text input Auto-filled Auto-populated via the data of the Google Place API State/Province Text input Auto-filled Auto-populated via the data of Google Place API Country Text input Auto-filled Auto-populated via the data of Google Place API Zip code Text input Auto-filled Auto-populated via the data of the Google Place API Travel distance without fees Dropdown Yes Dropdown options: 25-250+ miles (25 increments). The default initial start value will be fetched from the invited agency’s settings. The increment will be by 25 miles. For eg, if the agency sets 100 miles, then the increment will be 100, 125, 150, 175, 200, 225, 250, Any. Travel distance with fees Dropdown Yes This will depend on the “Distance without fees”. The dropdown values will be greater than the distance selected in the “Distance without fees”. If the contractor selects 150 miles in the Distance without fees field, then the 1st value in the with fees dropdown will be 175 miles (increment of 25) The “Any” option will be provided as one of the options in the dropdown.
#40
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > **4.3 Gear Details- (Role-based Gears setup) (Step 3)**
~616 tok
### **4.3 Gear Details- (Role-based Gears setup) (Step 3)** **Field Name** **Type** **Required** **Validation Rules** Photography Gear Section Collapsible Section Conditional Only visible if the "Photographer" role is selected Camera Type Multi-select Dropdown Conditional (if photographer) Multiple selection allowed Camera Type (Other) Text Yes (if others are selected) Max 250 characters. Comma separated Lenses Multi-select Dropdown Yes (if photographer) Multiple selection allowed Lenses (Other) Text Yes (if others are selected) Max 250 characters. Comma separated On-Camera Flash Toggle No Default: Off, visual toggle with label Off-Camera Flash Toggle No Default: Off, visual toggle with label Videography Gear Section Collapsible Section Conditional Only visible if the "Videographer" role is selected Video Camera Type Dropdown Conditional (if videographer) Single selection Video camera (Other) Text Yes (if others are selected) Max 250 characters. Comma separated Video Lenses Multi-select Dropdown Yes (if videographer) Multiple selection allowed Video Lenses(other) Text Yes (if others are selected) Max 250 characters. Comma separated Content Creation Gear Section Collapsible Section Conditional Only visible if the "Content Creator" role is selected Phone Model Dropdown Yes (if content creator) Single selection, with comma-separated values Phone Model (Other) Text Yes (if others are selected) Max 250 characters. Comma separated Drone Section Collapsible Section Conditional The drone is NOT a separate service - it's an equipment option across all services, the drone the other devices or both can be used Drone Model Dropdown Conditional, Single selection Drone Model(others) Text Yes (if others are selected) Max 250 characters. Comma separated Commercial License Toggle Conditional Default: Off, visual toggle with the label only needs to upload if the user has the license toggle on l Upload License File Upload Conditional PDF only, max 5MB, required if license toggle ON Upload File Delete Icon Conditional The existing license will be removed. Progress is blocked until a new document is uploaded; an inline error will ask the user to upload a valid license Other Gears Section Collapsible Section Always Visible Always shown regardless of roles Other Gear Text Area No Max 250 characters, placeholder: "Lightning, audio, stabilizers, etc."
#41
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > **4.4 Additional Information (Step 4)**
~187 tok
### **4.4 Additional Information (Step 4)** **Field Name** **Type** **Required** **Validation Rules** Preferred Name Text Yes By default first name will be fetched, but it can be edited Max 100 characters, no special symbols, auto-filled from Step 1 Meal Preferences Radio Button Options : \- Chicken \- Beef \- Fish \- Vegetarian \- Vegan/Gluten-free No Single selection Dietary Restrictions Toggle No Default: Off Dietary Restriction Details Text Conditional Max 250 chars, required if toggle ON Allergy Information Toggle No Default: Off Allergy Details Text Conditional Max 250 chars, required if toggle ON Meal Preferences Tooltip data Meal preferences will be shared with the client if meals are offered.
#42
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > **4.5 Working Days & Availability (Step 5)**
~796 tok
### **4.5 Working Days & Availability (Step 5)** **Field Name** **Type** **Required** **Validation Rules** Days of Availability Toggle Buttons Yes All the options will be on by default All days of the week will be available from Sunday to Saturday At least one day must be selected, default all ON Future Days Availability Dropdown Yes Options: No limits, 3,6,9,12, months, Any **5\. Error Message Handling** **Field Validation Scenario** **Error Message** **Profile Setup** First Name empty "First name required" First Name too long First name too short “First Name exceeds 50 characters.” “First Name requires at least 2 characters.” Last Name empty "Last name required." Last Name too long Last name too short “Last Name exceeds 50 characters ” “Last Name requires at least 2 characters.” Phone Number empty “Phone number required.” Phone Number Invalid format “Invalid phone number." Email Invalid format "Invalid email address." Email disposable check "Invalid email address." Email Empty "Email address required." Password empty "Please enter your password." Password weak/Short/long Show only the next missing condition as the user types, updating the message after each requirement is met. Requirement: \- “Password must be at least 6 characters.” \- “Password must contain at least one uppercase letter.” \- “Password must contain at least one number.” \- “Password must contain at least one special character.” \- “Password must contain at least one lowercase letter.” \- “Password cannot exceed 20 characters.” Website empty “Website link required.” Website Invalid URL “Invalid website URL.” **Travel Preferences** Address line empty " Address is required." Google Place API failure "Unable to find address. Please check and try again." No travel distance selected "Travel limit is required." **Gear Details** No camera type selected "Please select your camera type to proceed.”. No lenses selected " Please select at least one photography lens." Camera type "Other" but no custom input "Please specify your camera type." The drone license toggle is ON but no upload "Please upload your commercial drone license." The file upload size exceeded "File size must be under 5MB." File upload wrong format "Invalid format." **Additional Information** Preferred name empty " Preferred name is required." The preferred name is too long “Preferred name must be between 2 and 50 characters.” Dietary restrictions are ON, but no details "Please provide dietary restriction details." Allergy toggle ON, but no details "Please provide allergy information details." More than one meal preference selected “Please select only one meal type.” **Working Days** No days selected " Please select at least one day of availability." **General Errors** Server timeout "Connection timed out. Please try again." The invitation link by the agency has expired “Your invitation has expired.” The session expired during onboarding "Your session has expired." Network connectivity issue "Check your internet connection and please try again." Form submission failure "Unable to save your information."
#43
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > **6\. Functional Logic**
~7 tok
## **6\. Functional Logic**
#44
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > **6\. Functional Logic** > **Core Business Rules:**
~601 tok
### **Core Business Rules:**
* **One-Time Onboarding:** Contractors complete onboarding once per agency, not per brand
* **Step consistency:** If a user closes the system during the setup process, they will be able to resume from the same step when they return to complete the setup.
* **Multi-Brand Support:** Contractors can work with multiple brands under the same agency without re-onboarding. **Multi-Brand Navigation** → Contractor can switch between associated brands
* **Dynamic Gear Sections:** Only show gear sections relevant to the contractor's assigned roles
* **Primary Services:** Photography, Videography, Content Creation (Drone is not a separate service)
* **Flexible Gear Access:** Each service type has access to both standard and drone equipment
* **Minimum Requirement:** Contractor must select at least one gear type per assigned service (Eg, camera OR drone, OR both)
* **Cross-Service Logic:** All service types include a drone as an optional secondary gear if the primary service gear details are filled.
* **Validation Rule:** The system ensures at least one gear selection per service before allowing progression
* **Photography Service:** Contractor can use cameras, drones, or both to capture photos
* **Videography Service:** Contractor can use video cameras, drones, or both to record videos
* **Content Creation Service:** Contractor can use phones, drones, or both for content
* **Agency-Level Settings:** Travel policies, gear requirements, and rates are set at the agency level. In case of any service update with another gear, the user will be notified to fill in the details.
* **Real-Time Availability:** Availability updates apply to future events only, not assigned projects
* **Automatic Distance Filtering:** Travel distance options are filtered based on the agency's base distance settings
1. **Distance Without Fees**:
* Dropdown values begin from a configurable start\_value defined by the agency.
* Values increment in 25-mile steps up to 250 miles.
* The final option is "Any".
2. **Distance With Fees**:
* This dropdown depends on the user's selection in **Distance Without Fees**.
* It starts from 25 miles _greater_ than the selected "without fees" value.
* Also increments by 25 miles up to 250.
* Includes “Any" as the last option.#45
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > **6\. Functional Logic** > **Edge Case: Agency Updates “Distance Without Fees” Base Setting**
~18 tok
### **Edge Case: Agency Updates “Distance Without Fees” Base Setting**
#46
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > **When the agency increases the "Distance Without Fees" base value (e.g., from 100 to 200 miles), contractor profiles will be updated as follows:
~38 tok
## **When the agency increases the "Distance Without Fees" base value (e.g., from 100 to 200 miles), contractor profiles will be updated as follows: **
#47
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > If a contractor's existing "Distance Without Fees" value is below the new base (e.g., 150 miles), it will be updated to match the new base (200 miles).
~39 tok
## If a contractor's existing "Distance Without Fees" value is below the new base (e.g., 150 miles), it will be updated to match the new base (200 miles).
#48
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > If a contractor's value is already equal to or above the new base (e.g., 225, 250 miles, or "Any"), no changes will be made.
~32 tok
## If a contractor's value is already equal to or above the new base (e.g., 225, 250 miles, or "Any"), no changes will be made.
#49
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > **The "Distance With Fees" value, which depends on the "Distance Without Fees," will also adjust automatically:
~30 tok
## **The "Distance With Fees" value, which depends on the "Distance Without Fees," will also adjust automatically: **
#50
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > For contractors whose "Distance Without Fees" was updated, their "Distance With Fees" will be set to at least 25 miles above the new base (i.e., 225 miles in the above example).
~45 tok
## For contractors whose "Distance Without Fees" was updated, their "Distance With Fees" will be set to at least 25 miles above the new base (i.e., 225 miles in the above example).
#51
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > Contractors who already have "Distance With Fees" above this threshold or have selected "Any" will not be changed**.**
~30 tok
## Contractors who already have "Distance With Fees" above this threshold or have selected "Any" will not be changed**.**
#52
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > Contractors who already have "Distance With Fees" above this threshold or have selected "Any" will not be changed**.** > **System Behavior:**
~374 tok
#### **System Behavior:**
* On agency update of the base setting, the system will:
* Revalidate all saved contractor distance preferences.
* Trigger a user alert requiring contractors to review and confirm updated distance preferences before continuing.
* Send both email and system notifications to impacted contractors informing them of the update.
* Display an alert confirmation message to the agency before finalizing the base setting update.
* The updated distance parameters will apply only to new projects created after the update. Existing assigned projects will retain their original distance settings.
* **Drone operation:** Drone Model Field: Contractors can specify which drone models they own
* **Future availability Logic:** Indicates the availability of contractors and how far they can be booked in advance.
* **Rolling Window Behavior**
* The selected time frame (e.g., 6 months) is always counted from today’s date, not a fixed calendar range.
* As the current date progresses, the system automatically adds one more day at the end of the window, maintaining the selected duration (rolling availability).
* This ensures agencies can always book up to the chosen future period without the contractor having to update it daily.
* If “Any” is selected, then an agency can book the contractor at any time.
* Future availability will be throughout the system for all the agencies.#53
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > **7\. Edge Cases**
~475 tok
## **7\. Edge Cases** **Scenario** **Expected Behavior** **Invitation link expires** Show an error message with the option to request a new invitation **Google Place API fails** Allow manual address entry with a validation prompt **File upload fails during license upload** Retry mechanism with clear error messaging **Session timeout during onboarding** Auto-save progress and resume from the last completed step **Contractor updates availability while having committed events** Update only affects future bookings; a warning message is displayed **Multiple brand invitations were received simultaneously** Show all pending invitations, allow sequential acceptance **The agency changes the base travel distance after contractor onboarding** Pop up to the agency about the change before proceeding, and a change notification and mail will be sent to the contractor, and the change will be reflected in the system **The contractor has different travel distances set for different agencies** Each agency sees the contractor's agency-specific travel settings; no cross-contamination **Contractor selects only drone gear for the Photography service** The system accepts the selection as valid; camera gear is optional for the Photography, and either the photo or the drone can be used **The contractor tries to proceed without any gear selection for the assigned service** Validation error prevents progression until the minimum gear requirement is met **Contractor adds new gear while working with multiple agencies** New gear becomes available for all agencies where relevant service is assigned **8\. Test Cases** Test cases link: [https://docs.google.com/spreadsheets/d/1RNM15mQt\_Ax15liD7LeQZTvi\_N01Hax4yZXSNIcN2dI/edit?gid=1054361793#gid=1054361793](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=1054361793#gid=1054361793)
#54
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. >
~1 tok
##
#55
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > **9\. Acceptance Criteria**
~482 tok
## **9\. Acceptance Criteria** * **Profile Setup:** The contractor can successfully set up according to the invitation they receive * **Onboarding Completion:** All 5 steps must be completed before dashboard access the user will not be able to move to the next page until all required fields are not filled, and the user will be shown the error messages that need to be resolved to get to the next step and the step path must be shown and the current step highlighted, eg: if the user is in step 4 then the 4th in steps at the header must be highlighted * **Data Persistence:** All entered data is saved as the user navigates through the setup steps. If the user exits before completing the setup, they will return to the same step with their previously entered information intact when they come back to the system. * **Multi-Brand Support:** Existing contractors can accept new brand invitations without full re-onboarding * **Real-Time Validation:** Field validation occurs in real-time with clear error messaging * **Geolocation Integration:** Address fields auto-populate using Google Place API * **File Upload:** Drone license upload supports PDF files up to 5MB * **Availability Logic:** Future availability calculation works correctly with rolling date windows * **Dynamic Increment Logic:** 25-mile increments calculate properly from agency-defined start values * **Dependent Dropdown Logic:** "Distance With Fees" options correctly start 25 miles above "Distance Without Fees" selection * **Responsive Design:** Interface works on desktop and mobile devices * **"Any" Availability Handling:** Unlimited booking capability functions properly when "Any" is selected * **Cross-Agency Availability:** Future availability settings apply consistently across all associated agencies * **Rolling Window Calculation:** Future availability windows correctly roll forward daily from the current date
#56
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > **10\. Dependencies**
~159 tok
## **10\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** **Agency Management** Data dependency Cannot validate invitation or apply agency settings **Geolocation API** External service Manual address entry required **File Storage System** Infrastructure Cannot upload drone licenses **Email Service** External service Cannot send invitation links **Stripe Integration** Payment processing Cannot set up payment profiles **Dashboard Module** Navigation dependency Cannot redirect after onboarding completion **Project Management** Data consumer Cannot assign projects to contractors
#57
**Notifier Display:** Invited brand name, inviter’s name, role assignment, and brand logo. Multi-brand invitations show sequentially. > **12\. References**
~6 tok
## **12\. References**
#58
**Figma Design:** [**Contractor Portal**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=13461-123513&t=jmuQRlKXWo7LKcL1-0)
~37 tok
# **Figma Design:** [**Contractor Portal**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=13461-123513&t=jmuQRlKXWo7LKcL1-0)
#59
**Test Cases:** [**Google Sheets**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=1054361793#gid=1054361793)
~107 tok
# **Test Cases:** [**Google Sheets**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=1054361793#gid=1054361793) * **Drop-down values:** [**For Photo, Video, Drone, Content creation**](https://docs.google.com/document/d/1KukN8q3E8zJ13OXlMMeg_fvNGjFPxApquZg5RNMcSvA/edit?tab=t.0) ✅ Alternate Flows - Login State Management: **Alternate Contractor Onboarding & Login Scenarios**
#60
**Test Cases:** [**Google Sheets**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=1054361793#gid=1054361793) > **Below are various scenarios where contractor is onboarding and logging in :**
~21 tok
#### **Below are various scenarios where contractor is onboarding and logging in :**
#61
**Test Cases:** [**Google Sheets**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=1054361793#gid=1054361793) > **Scenario 1: Straightforward New Invitation**
~158 tok
### **Scenario 1: Straightforward New Invitation**
**Context:** 1 agency, 1 brand, single or multiple services
1. **Invitation Email** → Contractor receives invitation URL via email
2. **Profile Setup** → Complete basic profile information (name, email, password)
3. **Complete 5-Step Onboarding:**
* **Step 1:** Profile Setup (completed above)
* **Step 2:** Travel & Location Preferences
* **Step 3:** Gear Details (role-based sections)
* **Step 4:** Additional Information (dietary, allergies)
* **Step 5:** Working Days & Availability
4. **Dashboard Access** → Redirect to contractor dashboard#62
**Test Cases:** [**Google Sheets**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=1054361793#gid=1054361793) > **Scenario 2: Same Agency, Different Brand**
~172 tok
### **Scenario 2: Same Agency, Different Brand** **2a. Same Services:** Already invited in 1 brand of the same agency, and invited in another/new brand of the same agency with the same services * **Flow:** Invitation → Auto-association with new brand → Dashboard update * **Result:** No additional onboarding is required **2b. Different Services:** Same agency, different brand, but different services (e.g., photographer first, then invited as videographer) * **Flow:** Invitation → Email notification with redirection link * **Action:** Direct to Settings > Gear section to add new service equipment * **Result:** Contractor adds videography gear without full re-onboardin
#63
**Test Cases:** [**Google Sheets**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=1054361793#gid=1054361793) > **Scenario 2: Same Agency, Different Brand** > **Scenario 3: Different Agency, New Brand**
~203 tok
#### **Scenario 3: Different Agency, New Brand**
**3a. Same Service:** Contractor invited to new brand of different agency with same service type
* **Flow:** Invitation → Profile verification → Travel Preferences only
* **Requirements:** Fill in travel preferences (with/without fees) based on the new agency's settings
* **Skip:** Gear details, additional info, working days (already configured)
**3b. Different Service:** Contractor invited to new brand of different agency with different service type
* **Flow:** Invitation → Profile verification → Travel Preferences + Gear Details
* **Requirements:**
* Fill in travel preferences based on the new agency's distance settings
* Complete gear details for new service type
* **Skip:** Additional info, working days (already configure)#64
**Test Cases:** [**Google Sheets**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=1054361793#gid=1054361793) > **Alternate Flows - Login State Management:**
~12 tok
### **Alternate Flows - Login State Management:**
#65
**Test Cases:** [**Google Sheets**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=1054361793#gid=1054361793) > **Alternate Flow 1: User Already Logged In with Matching Email**
~198 tok
### **Alternate Flow 1: User Already Logged In with Matching Email**
**Context:** User is already logged in and the logged-in email matches the invited email address
1. **Invitation Click** → System detects the user is already logged in with a matching email
2. **Email Validation** → System maps invitation link with logged-in email and validates role assignment
3. **Dashboard Check** → System checks if onboarding is complete
4. **Branch Logic:**
* **4a. Onboarding Complete:** Direct to the dashboard with new brand/agency association
* **4b. Onboarding Incomplete:** Resume from last incomplete step
5. **Agency Association** → Complete association with inviting agency/brand
6. **Dashboard Access** → Successful login and dashboard access with updated associations#66
**Test Cases:** [**Google Sheets**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=1054361793#gid=1054361793) > **Alternate Flow 1: User Already Logged In with Matching Email** > **Alternate Flow 2: User Not Logged In, Associated with Different Agency**
~273 tok
#### **Alternate Flow 2: User Not Logged In, Associated with Different Agency**
**Context:** The user is not logged in but has an existing account associated with a different agency
1. **Invitation Click** → System displays login screen with invitation context
2. **Login Attempt** → User enters credentials
3. **Credential Validation** → System validates login credentials
4. **Branch Logic:**
* **4a. Valid Credentials:**
* Email mapping with invitation successful
* Proceed to existing contractor flow (Scenario 3a or 3b based on service type)
* Complete partial onboarding as required
* **4b. Invalid Credentials:**
* Display error: "Invalid credentials. Please try again or set up a new profile"
* Options provided: "Try Again" or "Set Up Profile"
* If "Set Up Profile" is selected → Proceed to Scenario 1 (new contractor flow)
5. **Agency Association** → System associates contractor with the new agency (multi-agency support)
6. **Dashboard Access** → Login successfully with multiple agency associations#67
**Test Cases:** [**Google Sheets**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=1054361793#gid=1054361793) > **Alternate Flow 1: User Already Logged In with Matching Email** >
~1 tok
####
#68
**Test Cases:** [**Google Sheets**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=1054361793#gid=1054361793) > **Alternate Flow 1: User Already Logged In with Matching Email** >
~1 tok
####
#69
**Test Cases:** [**Google Sheets**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=1054361793#gid=1054361793) > **Alternate Flow 1: User Already Logged In with Matching Email** > **Alternate Flow 3: User Not Logged In, No Existing Association**
~218 tok
#### **Alternate Flow 3: User Not Logged In, No Existing Association**
**Context:** The user is not logged in and not associated with any agency
1. **Invitation Click** → System displays login/signup screen with invitation context
2. **User Choice:**
* **2a. Login Attempt:** The user tries to log in with existing credentials
* **Valid Credentials:** Email mapping with invitation → Proceed to onboarding
* **Invalid Credentials:** Error display → Option to "Set Up Profile"
* **2b. Set Up Profile:** Direct signup process
3. **Email Mapping** → System validates invitation email with signup/login email
4. **Profile Creation** → Complete Scenario 1 (new contractor flow)
5. **Agency Association** → Associate with inviting agency based on the invitation linkage
6. **Dashboard Access** → Complete onboarding and dashboard access#70
**Test Cases:** [**Google Sheets**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=1054361793#gid=1054361793) > **Alternate Flow 1: User Already Logged In with Matching Email** > **Alternate Flow 4: User Logged In with Non-Matching Email**
~337 tok
#### **Alternate Flow 4: User Logged In with Non-Matching Email**
**Context:** The user is already logged in but the logged-in email does not match the invited email address
1. **Invitation Click** → System detects email mismatch between logged-in user and invitation
2. **Logout Confirmation Screen** → Display logout confirmation with an explanation
* **Message:** "You are logged in with \[current-email\] but this invitation is for \[invited-email\]. Please log out and sign in with the invited email address."
* **Options:** "Logout and Continue" or "Cancel"
3. **Logout Process** → User confirms logout
4. **Redirect to Login/Signup** → System redirects to the authentication screen
5. **Authentication with Invited Email:**
* **5a. Login:** User logs in with invited email credentials
* **5b. Signup:** The user creates a new account with the invited email
6. **Email Validation** → System maps authenticated email with an invitation
7. **Onboarding Process** → Proceed based on the user's existing association status:
* **New User:** Complete Scenario 1 (full onboarding)
* **Existing User:** Follow Scenario 2 or 3 based on agency relationship
8. **Agency Association** → Associate with inviting agency
9. **Dashboard Access** → Successful completion and dashboard redirect
☑️ Header section#71
**Header Section (Contractor Portal)**
~10 tok
# **Header Section (Contractor Portal)**
#72
**Header Section (Contractor Portal)** > **1\. Module Overview**
~166 tok
## **1\. Module Overview** * **Module Name:** Header Section (Contractor Portal) * **Purpose:** Provide contractors with quick access to global search, theme preferences, tasks, notifications, and profile settings through a persistent navigation header. * **Business Goal:** Enhance user experience by offering easy navigation and quick access to frequently used features from any page within the Contractor Portal. **2\. User Roles & Permissions** **Role** **Description** **Key Permissions** Contractor Contractors working with multiple agencies Access global search, toggle dark/light mode, view tasks, view notifications, and access profile menu
#73
**Header Section (Contractor Portal)** > **3\. User Flow**
~26 tok
## **3\. User Flow** **Navigation Path:** Visible on all pages in Contractor Portal (Persistent Header)
#74
**Header Section (Contractor Portal)** > **3\. User Flow** > **Step-by-Step Flow:**
~136 tok
### **Step-by-Step Flow:**
1. Contractor logs into the Contractor Portal
2. The header section loads at the top of every page, with all components visible
3. Contractor can interact with any header element:
* Use the global search to search for the project name
* Toggle between dark and light mode
* Access tasks
* View notifications
* Open profile menu
4. The header remains fixed at the top during page scrolling
5. All interactions are accessible from any page within the portal
**4\. Functional Logic**#75
**Header Section (Contractor Portal)** > **3\. User Flow** > **4.1 Header Structure and Layout**
~96 tok
### **4.1 Header Structure and Layout**
* The header is fixed at the top of all pages in the Contractor Portal
* Header remains visible when the user scrolls down the page (fixed position)
* The header contains five main components from left to right:
1. Global Search
2. Dark/Light Mode Toggle
3. Tasks Icon
4. Notifications Icon
5. Profile Avatar/Menu#76
**Header Section (Contractor Portal)** > **3\. User Flow** > **4.2 Global Search**
~6 tok
### **4.2 Global Search**
#77
**Header Section (Contractor Portal)** > **3\. User Flow** > **4.2 Global Search** > **4.2.1 Search Icon and Trigger**
~106 tok
#### **4.2.1 Search Icon and Trigger** * The search icon is displayed on the left side of the header * Icon includes "⌘K" (or "Ctrl+K" on Windows) keyboard shortcut indicator * Clicking the search icon opens the global search modal/dropdown * Pressing Ctrl+K (or Cmd+K on Mac) keyboard shortcut opens global search from anywhere in the portal * Search functionality is specifically designed for user search only
#78
**Header Section (Contractor Portal)** > **3\. User Flow** > **4.2 Global Search** > **4.2.2 Search Functionality**
~84 tok
#### **4.2.2 Search Functionality** * Search is designed to find users within the platform * For detailed search logic, filters, results display, and user interactions, refer to: \[Click Here - Global Search FRD Link\] * Search results appear in a dropdown/modal overlay * Search is accessible from any page without navigation
#79
**Header Section (Contractor Portal)** > **3\. User Flow** > **4.2 Global Search** > **4.2.3 Search States**
~70 tok
#### **4.2.3 Search States** * Default state: Search icon visible with keyboard shortcut indicator * Active state: Search modal/dropdown opens when clicked or triggered via keyboard shortcut * Closed state: Search modal closes when user clicks outside or presses Escape key
#80
**Header Section (Contractor Portal)** > **3\. User Flow** >
~1 tok
###
#81
**Header Section (Contractor Portal)** > **3\. User Flow** > **4.3 Dark/Light Mode Toggle**
~9 tok
### **4.3 Dark/Light Mode Toggle**
#82
**Header Section (Contractor Portal)** > **3\. User Flow** > **4.3 Dark/Light Mode Toggle** > **4.3.1 Toggle Display**
~67 tok
#### **4.3.1 Toggle Display** * Toggle switch is displayed next to the global search icon * Shows sun icon for light mode and moon icon for dark mode * Current mode is visually indicated on the toggle * Toggle has smooth animation when switching between modes
#83
**Header Section (Contractor Portal)** > **3\. User Flow** > **4.3 Dark/Light Mode Toggle** > **4.3.2 Toggle Functionality**
~142 tok
#### **4.3.2 Toggle Functionality** * Contractor clicks on the toggle to switch between dark mode and light mode * Toggle action is instant - theme changes immediately across the current page * Theme preference is saved for the logged-in contractor * Theme preference persists across browser sessions and different devices * When the contractor logs in again, their last selected theme is applied automatically * Theme preference is user-specific (not global) - each contractor has their own preference * Toggle state reflects the currently active theme
#84
**Header Section (Contractor Portal)** > **3\. User Flow** > **4.3 Dark/Light Mode Toggle** > **4.3.3 Theme Application**
~100 tok
#### **4.3.3 Theme Application** * Theme changes apply to the entire Contractor Portal interface * All pages, components, modals, and UI elements adapt to the selected theme * Theme transition is smooth with appropriate CSS transitions * No page reload required when switching themes * System respects the contractor's preference and does not automatically change based on device settings
#85
**Header Section (Contractor Portal)** > **3\. User Flow** > **4.3 Dark/Light Mode Toggle** > **4.3.4 Persistence Logic**
~98 tok
#### **4.3.4 Persistence Logic** * Theme preference is stored in the database associated with the contractor's user ID * When the contractor logs in, the system retrieves their saved theme preference * If no preference exists (first-time login), the default theme is light mode * Theme preference syncs across all active sessions * Preference is saved immediately upon toggle action
#86
**Header Section (Contractor Portal)** > **3\. User Flow** > **4.4 Tasks Section**
~116 tok
### **4.4 Tasks Section** * Task icon is displayed in the header with a numeric badge showing unread/pending task count * Badge displays count when there are new or pending tasks * Badge disappears when count is zero * Clicking the task icon opens the tasks panel/dropdown * For detailed task functionality, panel layout, task actions, and behaviors, refer to: \[Click Here - Tasks Module FRD Link\] * Tasks are accessible from any page in the portal
#87
**Header Section (Contractor Portal)** > **3\. User Flow** > **4.5 Notifications Section**
~161 tok
### **4.5 Notifications Section** * The notification bell icon is displayed in the header * The numeric badge shows the count of unread notifications * Badge color may indicate urgency (e.g., red for critical notifications) * The badge displays a count when there are unread notifications * The badge disappears when all notifications are read * Clicking the notification icon opens the notifications panel/dropdown * For detailed notification types, panel layout, mark as read functionality, and behaviors, refer to: **\[Click Here - Notifications Module FRD Link\]** * Notifications are accessible from any page in the portal
#88
**Header Section (Contractor Portal)** > **3\. User Flow** > **4.6 Profile Section**
~7 tok
### **4.6 Profile Section**
#89
**Header Section (Contractor Portal)** > **3\. User Flow** > **4.6 Profile Section** > **4.6.1 Profile Display**
~82 tok
#### **4.6.1 Profile Display** * Profile avatar is displayed on the far right of the header * If the contractor has uploaded a profile photo, it displays in the avatar * If no profile photo exists, the avatar shows the contractor's initials with a background color * Avatar has a circular shape with appropriate sizing
#90
**Header Section (Contractor Portal)** > **3\. User Flow** > **4.6 Profile Section** > **4.6.2 Profile Menu**
~116 tok
#### **4.6.2 Profile Menu** * Clicking on the profile avatar opens a dropdown menu * Dropdown appears below the avatar with proper positioning * Dropdown menu contains profile-related options and navigation links * For detailed profile menu items, actions, and behaviors, refer to: \[Click Here - Profile Menu FRD Link\] * Clicking outside the dropdown closes it * Dropdown is accessible from any page in the portal **5\. Field Details & Validations**
#91
**Header Section (Contractor Portal)** > **3\. User Flow** > **5.1 Global Search**
~56 tok
### **5.1 Global Search** **Element** **Behavior** **Validation** Search Icon Clickable, opens search modal N/A Keyboard Shortcut (Ctrl+K) Opens search modal from anywhere Must be active when the portal is in focus
#92
**Header Section (Contractor Portal)** > **3\. User Flow** > **5.2 Dark/Light Mode Toggle5.3 Interactive Elements**
~62 tok
### **5.2 Dark/Light Mode Toggle5.3 Interactive Elements** **Element** **Behavior** **Validation** Toggle Switch Switches between dark and light mode Instant response required Theme Preference Saved to database Must persist across sessions
#93
**Header Section (Contractor Portal)** > **3\. User Flow** >
~57 tok
### **Element** **Behavior** **Validation** Notification Icon Shows badge count, opens notifications panel Badge shows accurate unread count Profile Avatar Opens profile dropdown menu Shows correct avatar or initials
#94
**Header Section (Contractor Portal)** > **8\. Edge Cases**
~282 tok
## **8\. Edge Cases** **Scenario** **Expected Behavior** Contractor has no notifications Notification badge is hidden; clicking icon shows "No new notifications" message Contractor has no tasks Task badge is hidden; clicking icon shows "No tasks" or empty state Profile photo fails to load Display avatar with initials as fallback Search triggered when already open Keep search modal open; focus on search input field Keyboard shortcut conflicts with browser Portal shortcut takes priority when portal is in focus Multiple rapid theme toggles Debounce toggle action to prevent multiple API calls; apply last selected theme Theme fails to apply to some components Log error, apply theme to majority of components, allow user to retry Network error during theme save Show error message; theme persists in current session but may not save for future sessions Long contractor name in avatar initials Display first 2 characters only (first name initial + last name initial) Badge count exceeds 99 Display "99+" instead of exact count Dropdown opens off-screen Adjust dropdown position to stay within viewport
#95
**Header Section (Contractor Portal)** > **9\. Acceptance Criteria**
~545 tok
## **9\. Acceptance Criteria** **Header Structure:** * Header is visible and fixed at the top of all pages in Contractor Portal * Header remains visible when scrolling (sticky/fixed position) * All header components are properly aligned and spaced **Global Search:** * Search icon with Ctrl+K shortcut indicator is displayed * Clicking search icon opens search modal/dropdown * Pressing Ctrl+K (Cmd+K on Mac) opens search from anywhere * Search functionality works for user search as per linked FRD **Dark/Light Mode Toggle:** * Toggle switch displays correctly with sun/moon icons * Clicking toggle switches between dark and light mode instantly * Theme preference is saved to database for logged-in contractor * Theme preference persists across browser sessions and devices * Last selected theme is applied automatically on next login * Theme changes apply to entire Contractor Portal without page reload * Default theme is light mode for first-time users **Tasks Section:** * Task icon is displayed with badge showing pending task count * Badge displays count when tasks exist; hidden when count is zero * Clicking task icon opens tasks panel as per linked FRD * Tasks are accessible from any page **Notifications Section:** * Notification bell icon is displayed with badge showing unread count * Badge displays count when unread notifications exist; hidden when zero * Clicking notification icon opens notifications panel as per linked FRD * Notifications are accessible from any page **Profile Section:** * Profile avatar displays contractor's photo or initials * Clicking avatar opens profile dropdown menu * Dropdown menu contains options as per linked FRD * Clicking outside dropdown closes it * Profile menu is accessible from any page **Responsive Behavior:** * Header adapts to different screen sizes appropriately * All interactive elements remain accessible on mobile devices * Dropdowns and modals position correctly on all screen sizes **Performance:** * Header loads instantly with page * Theme switching is smooth with no lag * Badge counts update in real-time or with minimal delay
#96
**Header Section (Contractor Portal)** > **10\. Dependencies**
~217 tok
## **10\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** User Authentication Security Dependency Cannot identify contractor; cannot load personalized header elements Global Search Module Integration Dependency Search functionality unavailable; icon may be disabled Tasks Module Integration Dependency Tasks panel cannot be displayed; badge may not show Notifications Module Integration Dependency Notifications panel cannot be displayed; badge may not show Profile Module Integration Dependency Profile dropdown cannot be displayed Theme/Styling System UI Dependency Theme toggle may not function; visual inconsistencies Database Data Dependency Theme preference cannot be saved or retrieved WebSocket/Real-time Service Integration Dependency Badge counts may not update in real-time; manual refresh required
#97
**Header Section (Contractor Portal)** > **10\. References**
~45 tok
## **10\. References** * **Figma Link -** [**Click Here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=7948-184648&t=0ByRl7J146jJn5dx-0) ✅ 2. Dashboard
#98
**Contractor Dashboard**
~7 tok
# **Contractor Dashboard**
#99
**Contractor Dashboard** > **1\. Module Overview**
~132 tok
## **1\. Module Overview** * **Module Name:** Contractor Dashboard * **Purpose:** Provide contractors with a comprehensive global dashboard to manage projects, track earnings, view self-availability, handle payments, and collaborate with multiple agencies across multiple brands * **Business Goal:** Create a unified dashboard that enables contractors to efficiently manage their freelance work across multiple agencies and brands while maintaining a clear separation of data and workflows with appropriate access controls
#100
**Contractor Dashboard** > **2\. User Roles & Permissions**
~101 tok
## **2\. User Roles & Permissions** **Role** **Description** **Key Permissions** Contractor Contractor assigned to the events View assigned projects across all agencies and their brands, manage personal availability, view payments, sign agreements, create personal tasks, switch between agency contexts, view all the KPIs, View Task management, check availability, and view finance and performance.
#101
**3\. Contractor Dashboard – User Flow**
~11 tok
# **3\. Contractor Dashboard – User Flow**
#102
**3\. Contractor Dashboard – User Flow** > **Primary Dashboard Flow**
~377 tok
### **Primary Dashboard Flow**
* **Sign Up -** Upon successful sign-up, the contractor is redirected to a dashboard view. And contractors who don't have any events assigned see empty states
* **Dashboard Overview:** Displays KPIs, upcoming events, and tasks aggregated across agencies. Greeting shown (Welcome / Welcome Back)
* **Single Agency Context:** If the contractor is associated with only one brand/agency, → no brand dropdown or agency switch options shown
* **Agency Context Management:**
* Data from other agencies = **read-only**
* Clicking cross-agency items prompts an **agency switch**
* **Brand Switching:**
* **The brand filter** appears only if the contractor is working with multiple brands of the same or different agencies
**4\. Functional Logic**
**4.1 Global Dashboard**
* The contractor dashboard is global, meaning it displays the dashboard data across every agency to which the contractor is associated.
* However, the contractor can view event details information for events only within the agency corresponding to the current workspace.
* Events from other agency workspaces will be view-only.
* To access the full details of an event belonging to a different agency, the contractor must switch to that agency’s workspace. **Refer** \- [**Click Here**](#e64cmqeopr9y)
**4.2 Header Section**
* The header section of the contractor dashboard will display a welcome message that displays the contractor's name.
**4.2.1 Greeting message**#103
**3\. Contractor Dashboard – User Flow** > **Message Format Rules**
~7 tok
### **Message Format Rules**
#104
**3\. Contractor Dashboard – User Flow** > **First-time Login:** “Welcome \[Contractor First Name\] ”
~16 tok
### **First-time Login:** “Welcome \[Contractor First Name\] ”
#105
**3\. Contractor Dashboard – User Flow** > **Returning User:** “Welcome Back, \[Contractor First Name\]”
~16 tok
### **Returning User:** “Welcome Back, \[Contractor First Name\]”
#106
**3\. Contractor Dashboard – User Flow** > **Name > 15 chars:** Truncate if longer name→ “Welcome \[Truncated Contractor First Name\]... ”
~725 tok
### **Name > 15 chars:** Truncate if longer name→ “Welcome \[Truncated Contractor First Name\]... ”
**4.2.2 Brand Dropdown**
* The brand dropdown will only be displayed when the contractor is assigned to events from more than one brand; otherwise, it will not be shown
* If the contractor is assigned to events from more than one brand, all the brands will be displayed in the brand dropdown.
* By default “All Brands” option will be selected
**4.3 Empty State – Dashboard**
* When a contractor logs into the portal for the first time, or they do not have any assigned events for any brand, they land on a blank dashboard screen (Empty State)
* All **dashboard KPI cards** (i.e., Projects Completed, Upcoming Events, Year Wise Earnings, Upcoming Earnings) will display **“0”.**
* The event tabs (Upcoming, Post Event, and Completed) will appear with zero records and an empty-state message: “You have no events yet”.
* The **Earnings Section** (graph and earnings panel) displays an empty state as follows:
* **Total Income Chart:** Shows $0.00 with a straight placeholder graph
* **Comparison Indicator:** Displays +0.0% last week
* **Earnings Panel:**
* Pending, Upcoming, and Paid displays $0.00k
* **Payments Section:**
* Displays empty state message: “You have no payments yet.”
* **Do Not Book Days Calendar:**
* It remains visible and displays unavailable days (DNB) marked by the contractor as a grayed color, and upon clicking any date, the contractor is redirected to the Calendar module
* **Service Agreements Section:**
* Displays empty state message: “You have no agreements yet.”
* **Events by Type Section:**
* Shows an empty circular chart with a label: **“Total Events – 0.”**
* **Task Management Section:**
* Displays empty state message: “You have no tasks yet.”
* The Create New Task button remains visible, and upon clicking it, the contractor is redirected to the Task module, where the Create New Task panel opens from the right side
**4.4 Brand Switching & Multi-Tenant Access Logic**
* If a contractor is invited by (working with) more than one agency, the Dashboard remains **global** across all the agencies they are associated with
* By default, the contractor will be logged in to the agency they most recently accessed
* Data from other agency databases is **read-only**. To take action on them (view event details or change task status), the contractor must **switch to that specific agency database**
* **Brand Filters** will be available only if the contractor is associated with multiple brands. By default, the filter will have “All Brands” in the filter in case of having multiple brands
* **Agency Switching:**
* A contractor can switch to an agency by using the profile menu and changing the workspace
**4.5 Header Section KPI Summary Cards**#107
**3\. Contractor Dashboard – User Flow** > **Name > 15 chars:** Truncate if longer name→ “Welcome \[Truncated Contractor First Name\]... ”
~299 tok
* **Projects Completed**
* It displays the **count of all completed events**.
* Completed events are those for which the event date has passed, all deliverables have been uploaded by the contractor, and the agency has fully paid the contractor assigned to that event.
* **Upcoming Events**
* It displays the **count of all upcoming events**.
* Upcoming events are those scheduled for today or any future date (i.e., events that have not yet occurred)
* **\[Year\] Earnings**
* Displays the total payment received for the current year across all events and all agencies. Only amounts paid by the agency are counted; pending payments are excluded.
* The \[Year\] is dynamic and updated every new calendar year. When the year is changed (for example, 2025 to 2026), the total amount will be calculated starting from $0
* **Upcoming Earnings**
* It will display the **amount of upcoming earnings**. Upcoming earnings are the sum of contractor fees pending from all the agencies across all events
* For example, if an event has a contractor fee of $200 and $100 has already been paid, the remaining $100 will be included in the upcoming earnings#108
**3\. Contractor Dashboard – User Flow** > **4.6 Events Data Table**
~7 tok
### **4.6 Events Data Table**
#109
**3\. Contractor Dashboard – User Flow** > This section will have the list of events that are assigned to the contractor, and are in the following stages of the project life cycle
~35 tok
### This section will have the list of events that are assigned to the contractor, and are in the following stages of the project life cycle
#110
**3\. Contractor Dashboard – User Flow** > **Upcoming** **Events, Post Event, Completed Events**: **Refer** \- [**Click Here**](#sggmg4h0amfq) for the logic determining which events are displayed under each tab
~259 tok
### **Upcoming** **Events, Post Event, Completed Events**: **Refer** \- [**Click Here**](#sggmg4h0amfq) for the logic determining which events are displayed under each tab
* * To access the full details of an event belonging to a different agency, the contractor must switch to that agency’s workspace. **Refer** \- [**Click Here**](#e64cmqeopr9y)
* Clicking the “**View all**” button redirects the contractor to the Events module, with the tab preselected based on the section from which the button was clicked
* Each section will display the top 5 rows from the event listing
**Sorting Logic:**
* By default, events are sorted by **Event Date** in ascending order (earliest date first)
* Users can sort the list by clicking on the column headers:
* **Event Date** - Ascending/Descending
* **Project** - Alphabetical (A-Z / Z-A)
* **Brand** - Alphabetical (A-Z / Z-A)
* **Venue** - Alphabetical (A-Z / Z-A)
* The sort direction is indicated by an arrow icon (↑↓) next to the column header#111
**3\. Contractor Dashboard – User Flow** > **4.7 Total Income Chart**
~33 tok
### **4.7 Total Income Chart** * A widget displaying earnings across **all agency brands according to the dropdown period option**
#112
**3\. Contractor Dashboard – User Flow** > **4.7 Total Income Chart** > **Period Selector (Dropdown):** Options: “This Month”, “Last Month”, “This Year”, “Last Year”, and it will display only “Paid” payments within the selected period across all agencies
~491 tok
#### **Period Selector (Dropdown):** Options: “This Month”, “Last Month”, “This Year”, “Last Year”, and it will display only “Paid” payments within the selected period across all agencies
* **Total Income:** It will display the total paid amount received from all the agencies for the selected dropdown period
* **Growth Indicator**
* **Formula:** Growth (%) = ((Current Period Value − Previous Period Value) ÷ Previous Period Value) × 100
* **Rules:**
* If **Growth (%)** is **positive** → Display **green arrow** (e.g., +43%)
* If **Growth (%)** is **negative** → Display **red arrow** (e.g., -12.5%)
* If **Growth (%)** is **zero** → Display (0.0%)
* If **Previous = 0** → Display **100%** (if current > 0) or **0%** (if current = 0)
* **Comparison Logic:**
* Always compares against the equivalent of the previous period.
* **Example:** If the filter is “This Month”, the comparison is shown against “Last Month.”
* **Graph Line Logic**
* On hover, it will display the total paid amount for the specific day or month based on the X-axis value (Month or Year) selected
* **X-Axis:**
* If the **Monthly** filter is selected, → displays the days of the month based on whether the **This Month** or **Last Month** filter is selected
* **This Month:** Displays the days of the current month
* **Last Month:** Displays the days of the previous month
* **If the Yearly filter is selected, →** displays the months based on whether the **This Year** or **Last Year** filter is selected
* **This Year:** Displays the months of the current year
* **Last Year:** Displays the months of the previous year
* The axis **auto-scales dynamically** based on the selected filter
* **Y-Axis:**
* Displays the **total income in USD**
* **Hover Interaction:** On hover, the graph displays the paid amount on the specific date/month.#113
**3\. Contractor Dashboard – User Flow** > **4.7 Total Income Chart** > **Status Bar Breakdown:** On the right side of the graph, a status bar will be displayed with proportional lengths and corresponding currency values based on the Pending, Upcoming, and Paid statuses
~301 tok
#### **Status Bar Breakdown:** On the right side of the graph, a status bar will be displayed with proportional lengths and corresponding currency values based on the Pending, Upcoming, and Paid statuses
* **Pending (Orange):**
* The event date has passed
* Payment not made
* **Invoice raised OR invoice not raised**
* **Example**
* Event: Wedding Photoshoot
* Event Date: 05 Nov 2025 **(past)**
* Contractor Fee: **$500**
* Amount Paid by Agency: **$0**
* Remaining Amount: **$500**
* Invoice Status: Can be raised or not raised
* **Upcoming (Grey):**
* The event date is in the future
* Some payment has already been made (partial payment)
* Invoice raised OR invoice not raised
* Payment is pending
* **Example**
* Event: Corporate Shoot
* Event Date: **30 Dec 2025** (future)
* Contractor Fee: **$400**
* Agency already paid: **$200**
* Upcoming Amount: **$200**
* Invoice status: Can be raised or not raised
* **Paid (Green):** Displays the total of all the payments that have been successfully made by the agencies.#114
**3\. Contractor Dashboard – User Flow** > **4.7 Total Income Chart** > **Calculation Logic**
~7 tok
#### **Calculation Logic**
#115
**3\. Contractor Dashboard – User Flow** > **4.7 Total Income Chart** > **Total Income = Only “Paid” amounts** (within chosen timeframe).
~383 tok
#### **Total Income = Only “Paid” amounts** (within chosen timeframe).
**4.8 Calendar Management (Do Not Book)**
* Do Not Book: Along with the heading, an info (tooltip) icon will be displayed. On hover, it will show the tooltip message
* The Do Not Book Days calendar displays dates when the contractor is unavailable or already booked for events across all agency brands. By default, the current month is displayed.
* By clicking on any date, the contractor will be redirected to the calendar module, from where the contractor can set up their availability
* **Date Visual States:** The calendar displays dates with the following visual indicators:
* **Available dates**: Black text
* **Unavailable/Booked dates**: Grey text
* **Current day**: Highlighted with a colored background
* **Past dates**: Grey text
* Navigation Controls: The calendar includes month/year navigation with left/right arrow buttons for moving between months. Clicking on the month/year label opens a scrollable year selection panel displaying multiple years in a grid format. The contractor can scroll through the list and select any year, and the calendar will automatically display the current selected month for that chosen year
* When the contractor navigates to any other module and returns to the dashboard, the calendar will automatically reset to display the current month and year
* If an agency owner removes a contractor from an event, the date automatically displays as available
**4.9 Payments Table**#116
**3\. Contractor Dashboard – User Flow** > **Payments Table Widget**
~7 tok
### **Payments Table Widget**
#117
**3\. Contractor Dashboard – User Flow** > A scrollable widget that displays all payment records, auto-fetched from Stripe, with status indicators, amounts, and actions
~714 tok
### A scrollable widget that displays all payment records, auto-fetched from Stripe, with status indicators, amounts, and actions
* **Payment Status (Badge):** Displays Pending, Upcoming, Paid, Failed (Stripe-synced)
* **Upcoming** - It will display the Upcoming status when the contractor fee is associated with an upcoming event, including cases where the invoice has been raised but payment is still pending, and the event date is in the future
* **Pending** - It will display the Pending status when the invoice has been raised by the contractor, the event date has passed, and payment has not yet been made by the agency
* **Paid** - It will display the Paid status when all the total payments have been successfully made by the agency
* **Payment Date:**
* For **Upcoming** – It will display “--” when the invoice has not been generated, and if the invoice is generated, it will display the invoice due date
* For **Pending** – It will display the invoice due date
* For **Paid** – It will display the date on which the invoice was successfully paid by the agency
* **Amount:** It will display the amount based on two situations – if no invoice has been generated, it will display the **contractor fee**; if an invoice has been generated, it will display the **invoice due amount**
* **Project**: This column will display the Project and event name (with event color code) for which the payment is paid, pending, or upcoming
* **Actions (Button):** The “View Invoice” button, when clicked, opens the invoice for the corresponding payment. If no invoice has been generated, it will display “--”
* **View All:** On click, redirects to the Payments module
* **Payment Sorting:**
* The column can be sorted by Date and Amount
* By default, Newest payments appear on top
* Older ones follow in descending order
* By default, only **11 records** are shown in the widget listing
**4.10 Service Agreements Section:**
* **Service Agreements**: Along with the heading, an info (tooltip) icon will be displayed. On hover, it will show the tooltip message
* This section displays a list of all service agreements sent by all agencies for events that have not yet been signed by the contractor
* Once the contractor signs an agreement, it will be removed from the list
* **Event details displayed:**
* Event name with its corresponding color code for which the service agreement was sent by the agency
* Date and time when the service agreement was sent
* **Sign Now Button:** On click, it redirects and opens the service agreement for the event, allowing the contractor to review and sign the agreement
* **Post-signature:** Agreement removed from widget
* **Sorting:** Oldest agreements appear at the top, and newer ones appear below
**4.11 Events by Type**#118
**3\. Contractor Dashboard – User Flow** > A scrollable widget that displays all payment records, auto-fetched from Stripe, with status indicators, amounts, and actions
~287 tok
* This section provides a visual summary of all events assigned to the contractor, categorized by event type, allowing quick viewing of event distribution and total count * **Events by Type**: Along with the heading, an info (tooltip) icon will be displayed. On hover, it will show the tooltip message * **Total Events Counter:** A display-only number positioned at the center of the doughnut chart, showing the total count of events assigned to the contractor across all categories * **Chart Segments:** A doughnut chart visually representing event types. Each segment is color-coded based on the event’s assigned color, and the size of each segment is proportional to the number of events in that category * **Chart Interaction:** On hover or click, detailed information about the selected event category (name and count of that specific event type) is displayed as a tooltip * Below the chart, it displays each event type (i.e., Wedding, Rehearsal dinner) assigned to the contractor, along with its respective color code * **Display Logic:** Data is dynamically fetched based on all events associated with the logged-in contractor
#119
**3\. Contractor Dashboard – User Flow** > **4.12 Task Management**
~702 tok
### **4.12 Task Management**
* **Task Display:** The widget displays a list of tasks where the contractor is either assigned by the agency or has created the task themselves
* Tasks are listed by nearest due date first, and if any tasks are overdue, they are displayed before all upcoming tasks.
* Each task card includes:
* **Task Name**
* **Task Priority Icon (High, Medium & Low)**
* **Event Name** (if the task is linked to an event (assigned by the agency))
* **Contractor Role:** Displays the role of the contractor for the event for which the task is assigned by the agency
* **Due Date:** Display the due date of the task
* A “**Due Today”** label will be displayed if the due date matches the current date and the task status is not “Completed”.
* An **"Overdue"** label will be displayed if the due date has already passed, and the task status is not “Completed”.
* **Avatar Images** of assignees (contractor) & reporter to the same task for an event
* **Dropdown Filter:** A dropdown menu is available at the top right corner of the widget with the following filter options:
* **To Do**
* **In Progress**
* **Completed**
* Selecting an option will move the task to the selected status
* **Kebab Menu (⋮) Options:** A three-dot menu (kebab icon) is displayed for each task card
* On click, the menu shows dynamic options based on the task’s current status:
* If the task is **To Do**, it displays: **Move to In Progress** and **Move to Completed**
* If the task is **In Progress**, it displays: **Move to Completed** and **Move to To Do**
* If the task is **completed**, it displays: **Move to In Progress** and **Move to To Do**
* Selecting an option updates the task status both in the widget and in the **Task Management Module** accordingly
* **Delete Task Option:**
* A Delete option appears only for **self-created tasks** (not for agency-assigned tasks). On clicking Delete, a **confirmation pop-up** appears. And if confirmed, the task is permanently deleted and removed from both the widget and the **Task Management Module**
* **Task Completion via Checkbox:**
* **To Do** & **In Progress** Task card includes a **round checkbox**
* On click, the task is marked as **Completed**, and its status is automatically updated in the **Task Management Module**
* **Task Count and Expansion:**
* If more than two tasks are available, a **Show More (+X Tasks)** link appears below the task list (e.g., Show More (+10 Tasks))
* On click, the widget expands to display all remaining tasks in a scrollable view
* Once expanded, a **Show Less** option allows the contractor to collapse the view back to its default state
**5\. Success Messages Table**#120
**3\. Contractor Dashboard – User Flow** > **Category**
~4 tok
## **Category**
#121
**3\. Contractor Dashboard – User Flow** > **Scenario**
~4 tok
## **Scenario**
#122
**3\. Contractor Dashboard – User Flow** > **Success Message**
~6 tok
## **Success Message**
#123
**3\. Contractor Dashboard – User Flow** > **Multi-Agency Context**
~7 tok
## **Multi-Agency Context**
#124
**3\. Contractor Dashboard – User Flow** > Agency switch successful
~7 tok
## Agency switch successful
#125
**3\. Contractor Dashboard – User Flow** > Successfully switched to \[Agency Name\].
~11 tok
## Successfully switched to \[Agency Name\].
#126
**3\. Contractor Dashboard – User Flow** > **User Authentication & Profile**
~9 tok
## **User Authentication & Profile**
#127
**3\. Contractor Dashboard – User Flow** > Studio mode activated
~6 tok
## Studio mode activated
#128
**3\. Contractor Dashboard – User Flow** > "Successfully switched to \[Business Name\] studio mode."
~15 tok
## "Successfully switched to \[Business Name\] studio mode."
#129
**3\. Contractor Dashboard – User Flow** > **Task Management**
~19 tok
## **Task Management** Task Updated “Task has been successfully updated.”
#130
**3\. Contractor Dashboard – User Flow** > **6\. Edge Cases**
~387 tok
## **6\. Edge Cases** **Scenario** **Expected Behavior** The agency manually marks the project as "Completed" before the contractor’s invoice is paid The system automatically updates the contractor dashboard to show the project as completed and moves earnings to the PENDING category. The contractor must contact the agency directly to resolve any completion status disagreements Internet connection lost during task completion Auto-save progress to localStorage, sync when connection restored, show an offline indicator Agency removes contractor access mid-session Log out with an explanation message, redirect to login with an informational notice The contractor completes onboarding, but no projects are assigned Empty state dashboard with guidance messages. Calendar sync failure with external calendar Manual sync option available, warning about potential conflicts, and fallback to manual calendar management Contractor account suspended by one agency Remove suspended agency from context options, maintain access to other agencies, and clear notification of suspension Contractor delete agency ( studio) Show "Manage your business on Pixally" again The user switches agency while the brand filter is active The system clears the brand filter and shows all data for the newly selected agency The previous period had $0 income, but the current period has income The display shows "+100%" with green color, the tooltip explains "No previous income to compare", and the growth calculation handles division by zero gracefully
#131
**3\. Contractor Dashboard – User Flow** > **7\. Test Cases**
~44 tok
## **7\. Test Cases** * **Link**: [**Pixally Test cases**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=97704170#gid=97704170)
#132
**3\. Contractor Dashboard – User Flow** > **8\. Acceptance Criteria**
~8 tok
## **8\. Acceptance Criteria**
#133
**3\. Contractor Dashboard – User Flow** > **8\. Acceptance Criteria**
~800 tok
* **Global Dashboard Scope –** Dashboard aggregates data across all agencies but allows full event actions only in the current workspace and shows other-agency events as view-only until the workspace is switched. * **Header Greeting –** Displays “Welcome \[FirstName\]” for first login, “Welcome Back, \[FirstName\]” for returning users, and truncates names longer than 15 characters with “…”. * **Brand Dropdown –** Shows brand dropdown only when assigned to multiple brands, with “All Brands” selected by default, and lists all assigned brands. * **Empty State –** When no events exist, all KPIs show 0, events tabs show empty messages, earnings chart shows $0.00 and 0% comparison, payments list shows no records, DNB calendar shows only unavailable days, agreements list and tasks list show empty states, and “Create Task” opens the task drawer. * **Multi-Tenant Access –** Dashboard stays global for multi-agency contractors, defaults to the last-used agency, shows non-current agency data as read-only, and allows full actions only after workspace switch via profile menu. * **Brand Switching –** Brand filters appear only if multiple brands exist with “All Brands” default, and data filters update instantly when switching brands. * **Projects Completed KPI –** Counts events whose date passed and where deliverables are uploaded, and the contractor is fully paid. * **Upcoming Events KPI –** Counts all events scheduled for today or a future date. * **Year Earnings KPI –** Displays total paid income for the current year only across all agencies and resets to $0 at every new calendar year. * **Upcoming Earnings KPI –** Sums remaining unpaid contractor fees (full fee minus paid amount) across all future or partially paid events. * **Events Table –** Shows top 5 events for Upcoming, Post Event, and Completed tabs based on event-tab rules, supports “View All” to open the Events module, and requires workspace switch to access full details of other-agency events. * **Total Income Chart –** Displays paid income based on “This Month/Last Month/This Year/Last Year” filter, with hover values, dynamic X/Y axes, growth calculation rules, and right-side Pending/Upcoming/Paid status bar breakdown. * **Do Not Book Calendar –** Shows a monthly view with availability states, supports month navigation and scrollable year picker, resets to current month on returning, and auto-updates availability when the agency removes events. * **Payments Widget –** Lists up to 15 newest Stripe-synced payments with sortable Date/Amount, shows Upcoming/Pending/Paid/Failed badges, displays correct payment dates and amounts, and “View Invoice” opens invoice or shows “--” when unavailable. * **Service Agreements –** Displays all unsigned agreements with event name/color and sent time, allows signing via “Sign Now,” removes signed agreements from the list, and sorts oldest first. * **Events by Type –** Shows a doughnut chart of event counts by type with hover tooltips, a center total counter, and a legend listing event types with colors. * **Task Management Widget –** Shows contractor tasks sorted with overdue first, supports task status filters (To Do/In Progres
#134
**3\. Contractor Dashboard – User Flow** > **8\. Acceptance Criteria**
~44 tok
s/Completed), offers dynamic kebab actions, allows deleting only self-created tasks, supports checkbox completion, and expands via “Show More (+X)” with collapsible “Show Less”.
#135
**3\. Contractor Dashboard – User Flow** > **8\. Acceptance Criteria**
~101 tok
**9\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** Authentication System Infrastructure Cannot access the dashboard, no user context or session management Multi-Tenant Database Infrastructure Cannot separate agency data, complete system failure, security breach risk Agency Portal Data dependency Cannot get the data from the agency portal for all the events
#136
**3\. Contractor Dashboard – User Flow** > **10\. References**
~84 tok
## **10\. References** * Figma File: [**With data Dashboard**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=7948-184648&t=wvCV3qWfYOJH4PEi-0) * Figma File: [**Without data Dashboard**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=15120-77621&t=wvCV3qWfYOJH4PEi-0) ✅ 3. Event listing
#137
**Events Management System**
~8 tok
# **Events Management System**
#138
**Events Management System** > **1\. Module Overview**
~7 tok
## **1\. Module Overview**
#139
**Module Name:** Events Management System (Contractor Portals)
~16 tok
# **Module Name:** Events Management System (Contractor Portals)
#140
**Purpose:** Enable contractors to view and manage their assigned events across all agencies, from upcoming events to completed events, with cross-brand access control and comprehensive event tracking capabilities
~111 tok
# **Purpose:** Enable contractors to view and manage their assigned events across all agencies, from upcoming events to completed events, with cross-brand access control and comprehensive event tracking capabilities * **Business Goal:** Provide contractors with a centralized interface to track all assigned events, manage deliverables, submit invoices, and maintain clear visibility into event status and requirements across multiple brands
#141
**2\. User Roles & Permissions**
~9 tok
# **2\. User Roles & Permissions**
#142
**Role**
~3 tok
# **Role**
#143
**Description**
~4 tok
# **Description**
#144
**Key Permissions**
~5 tok
# **Key Permissions**
#145
**Portal Access**
~5 tok
# **Portal Access**
#146
Contractor
~3 tok
# Contractor
#147
Contractors assigned to events
~8 tok
# Contractors assigned to events
#148
View assigned events to them only, view Project details
~14 tok
# View assigned events to them only, view Project details
#149
Contractor Portal, Navigation menu
~9 tok
# Contractor Portal, Navigation menu
#150
Contractor Portal, Navigation menu > **3\. User Flow**
~5 tok
## **3\. User Flow**
#151
Contractor Portal, Navigation menu > **3\. User Flow** > **Contractor Portal Navigation Structure:**
~12 tok
### **Contractor Portal Navigation Structure:**
#152
**Navigation:** Contractor Portal Side Menu Navigation > Event Modules
~18 tok
# **Navigation:** Contractor Portal Side Menu Navigation > Event Modules
#153
**Navigation:** Contractor Portal Side Menu Navigation > Event Modules > **4\. Functional Logic**
~204 tok
## **4\. Functional Logic** **4.1 Events Module** * Contractors can view only those events that have been assigned to them by the agency. If no events are assigned, an empty state will be displayed * The event listing is **global**, meaning it displays all events across every agency to which the contractor is assigned. However, the contractor can view detailed information for events only within the agency corresponding to the **current workspace**. Events from other agency workspaces will be **view-only**. To access the full details of an event belonging to a different agency, the contractor must switch to that agency’s workspace. Refer - [**Click Here**](#q3d4jtdlwegx) * The module displays three status-based tabs: Upcoming, Post-Event, and Completed * By default, the Upcoming tab is displayed
#154
**Navigation:** Contractor Portal Side Menu Navigation > Event Modules > **4\. Functional Logic** > **4.2 Empty State Display**
~607 tok
### **4.2 Empty State Display**
* If the contractor has not been assigned any event by the agency:
* An empty state will be displayed across all tabs.
* Primary message for all the tabs: **“You have no events yet.”**
* Secondary message (Only display in the Upcoming tab): **“Wait for the agency owner to assign an event to you.”**
**4.2 Event Listing Status Logic**
* **Events are classified into Upcoming, Post Event, and Completed**
* **Upcoming**
* Events will be displayed under the Upcoming tab when their event date is today or any future date (i.e., the event has not yet occurred).
* **Post-Event**
* Events will be displayed under the Post-Event tab when the event date has passed (the day after the event date) and any of the following conditions are met:
* The deliverables have not been uploaded by the contractor
* The invoice has not been uploaded by the contractor, or
* The fee has not yet been fully received by the contractor from the agency.
* **Completed**
* It displays the count of all completed events. Completed events are those for which the event date has passed, all deliverables have been uploaded by the contractor, and the agency has fully paid the contractor's fee assigned to that event.
* Events will be displayed under the Completed tab when the event date has passed (the day after the event date) and all of the following conditions are met:
* The deliverables have been uploaded by the contractor
* The invoice has been uploaded by the contractor
* The full payment has been received by the contractor from the agency for that event.
**4.3 Event List Display Logic**
* **Default Sorting:** Events in all the tabs are sorted by event date (ascending) by default.
* Events automatically transition between tabs based on date and event completion criteria.
* **Column Sorting**: Event Date, Project, Brand, and Service Area columns support ascending and descending sort functionality
**4.4 Search Functionality**
* The search bar allows contractors to search across multiple event attributes:
* Project name
* Event type
* Brand name
* Service area name
* Search results filter the event list in real-time as the contractor types. If no matches are found, the system displays: "**No matching events found.**"
**4.5 Filter Functionality**#155
**Navigation:** Contractor Portal Side Menu Navigation > Event Modules > **4\. Functional Logic** > **4.2 Empty State Display**
~646 tok
* The contractor can access the filter by clicking the filter button in the header section.
* The filter panel provides multiple filtering options to help contractors narrow down event lists. **Filter** **options are listed below**:
* **Reset All Filters**: A circular refresh icon in the top-right corner clears all applied filters immediately without confirmation
* **Event Type**: The Event Type filter dynamically displays all event types to which the contractor has been assigned by all the agencies
* **Date Range Filter**:
* **Start Date**: Filters events occurring on or after the selected date
* **End Date**: Filters events occurring on or before the selected date
* In the date range filter, once a Start Date is selected, all dates before the selected start date will be disabled in the End Date field. Similarly, if an End Date is selected first, all dates after the selected end date will be disabled in the Start Date field.
* **Brand Filter**: A single-select dropdown that displays only the brands assigned to the contractor by all agencies. Selecting a brand filters the events to show only those associated with the selected brand
* The **Brand** and **Service Area** filters are interdependent. If the contractor selects a brand, only the service areas associated with that brand will be displayed in the Service Area filter, and vice versa
* **Tags Filter**: Multi-select dropdown allowing contractors to filter by multiple event tags simultaneously. The tag list is dynamically populated from event tags that are associated with the contractor.
* **Service Area Filter**: A single-select dropdown that displays only the service areas assigned to the contractor by all the agencies. Selecting a service area filters the events to show only those in the selected location.
* **Venue Filter**: A single-select dropdown that displays the venues of the events assigned to the contractor. If the contractor is assigned to multiple events with different venues, all those venues will appear in the dropdown. If any assigned events do not have a specified venue, a “TBD” option will be displayed in the dropdown to filter the events with no venue.
* **Service Type Filter**: A multi-select checkbox group that displays only the service types for which the contractor has been invited.
* For example, if the contractor is invited as a Photographer only, then only the Photography option will be displayed. If the contractor is invited as a Photographer, Videographer, and Content Creator, all three options will appear.#156
**Navigation:** Contractor Portal Side Menu Navigation > Event Modules > **4\. Functional Logic** > **4.2 Empty State Display** > **4.5.1 Filter Behavior (After Application)**
~157 tok
#### **4.5.1 Filter Behavior (After Application)** * When one or more filters are applied, the selected values appear as **filter tags** above the contractor listing table. * Each filter tag includes a **cancel (X)** icon that allows users to remove that specific filter. * On removing an individual filter, the event list updates instantly based on the remaining active filters. * A **Clear All Filters** button is displayed next to the tags to remove all filters at once. * Clicking '**Clear All Filters**' will clear all selected filters and refresh the event list to display all events assigned to the contractor.
#157
**Navigation:** Contractor Portal Side Menu Navigation > Event Modules > **4\. Functional Logic** > **4.6 Status Icon Display Logic**
~667 tok
### **4.6 Status Icon Display Logic**
* Status icons are displayed only in the **Upcoming** and **Post Event** tabs
* **Upcoming Tab**: **Service Agreement** Icon:
* If the contractor has signed the service agreement, it will display the **filled** icon
* If the service agreement has not yet been signed by the contractor, the icon will remain empty.
* **Post-Event Tab:**
* In the **Post-Event** tab, three icons are displayed — **Invoice Upload**, **Deliverables Upload**, and **Payment Received**.
* **Invoice Upload** - If the contractor has uploaded an invoice, the icon will appear filled; otherwise, it will remain empty.
* **Deliverables Upload** - If the contractor has uploaded the deliverables, the icon will appear filled; otherwise, it will remain empty.
* **Payment Received** - If the contractor has received partial payment from the agency for the contractor fee (i.e., not fully paid, but some amount has been paid), the Payment Received icon will appear **partially filled**. If the contractor has been fully paid the contractor fee, the icon will appear filled. If the contractor is not paid, it will remain empty.
**4.6.1 Impacted Modules for status icons**
* **Agency-Side Views:**
* Calendar List View — Status icons displayed alongside each event entry
* Event Details > Contractors Tab — Status icons shown for each assigned contractor
* Project Listing — Invoice icon visible in the project list view
* Event Listing — Status icons displayed for each event row
* **Contractor Portal Views:**
* Event Listing — Status icons displayed for contractor's assigned events
* Event Details > Contractor's Tab — Status icons reflecting contractor's own submission and payment status
**4.7 Cross-Brand Pop-Up Logic**
* When a contractor clicks the **"View Details"** button for an event that belongs to a **different brand’s studio workspace** than the one they currently have selected:
* A confirmation pop-up appears, asking the contractor to confirm the studio switch.
* Two action buttons are provided in the pop-up: **"Cancel"** and **"Yes, Switch"**.
* On clicking **"Cancel"**:
* The pop-up closes, and the contractor remains in the current brand context.
* On clicking **"Yes, Switch"**:
* The contractor will be switched to the studio workspace associated with the selected event.
* The contractor will then be redirected to the event details page for that event.
* The new studio workspace selection will persist throughout the session until it is changed again.
**5\. Field Details & Validations**#158
**Navigation:** Contractor Portal Side Menu Navigation > Event Modules > **4\. Functional Logic** > **5.1 Upcoming Events Tab**
~8 tok
### **5.1 Upcoming Events Tab**
#159
**Field Name**
~4 tok
# **Field Name**
#160
**Display Format**
~5 tok
# **Display Format**
#161
**Validation Rules**
~6 tok
# **Validation Rules**
#162
Event Date
~3 tok
# Event Date
#163
"Sat, October 5, 2024"
~6 tok
# "Sat, October 5, 2024"
#164
Display the event date
~14 tok
# Display the event date If not assigned, display TBD
#165
Event Type
~3 tok
# Event Type
#166
"PHOTOGRAPHY"
~4 tok
# "PHOTOGRAPHY"
#167
Display the event type
~6 tok
# Display the event type
#168
Project and Event Name
~6 tok
# Project and Event Name
#169
"Jadon & Monika"
~10 tok
# "Jadon & Monika" "REHEARSAL DINNER"
#170
Display the project and event name as set by the agency
~14 tok
# Display the project and event name as set by the agency
#171
Users
~2 tok
# Users
#172
User Profile Image
~5 tok
# User Profile Image
#173
\- Display only the contractor and agency users associated with the event
~38 tok
# \- Display only the contractor and agency users associated with the event \- Display the first 3 user profiles, and if more than 3, it will display +X
#174
Brand Assignment
~5 tok
# Brand Assignment
#175
"Emma Taylor"
~4 tok
# "Emma Taylor"
#176
Display the associated brand of the event
~11 tok
# Display the associated brand of the event
#177
Brand Logo
~3 tok
# Brand Logo
#178
Secondary Logo
~4 tok
# Secondary Logo
#179
Display the event’s associated brand secondary logo
~13 tok
# Display the event’s associated brand secondary logo
#180
Service Area
~4 tok
# Service Area
#181
"Los Angeles, California, USA"
~8 tok
# "Los Angeles, California, USA"
#182
Display the service area of the event
~10 tok
# Display the service area of the event
#183
Service agreement
~5 tok
# Service agreement
#184
Icon
~2 tok
# Icon
#185
Display a filled icon if the contractor signs the agreement; otherwise, display an empty icon
~24 tok
# Display a filled icon if the contractor signs the agreement; otherwise, display an empty icon
#186
Actions
~2 tok
# Actions
#187
"View Details"
~4 tok
# "View Details"
#188
Redirect the contractor to the event details page if the same studio event, otherwise display the studio switch pop-up
~30 tok
# Redirect the contractor to the event details page if the same studio event, otherwise display the studio switch pop-up
#189
Refer - [**Click Here**](#q3d4jtdlwegx)
~10 tok
# Refer - [**Click Here**](#q3d4jtdlwegx)
#190
Refer - [**Click Here**](#q3d4jtdlwegx) > **5.2 Post-Event Tab**
~7 tok
### **5.2 Post-Event Tab**
#191
**Field Name**
~4 tok
# **Field Name**
#192
**Type**
~3 tok
# **Type**
#193
**Validation Rules**
~6 tok
# **Validation Rules**
#194
Event Date
~3 tok
# Event Date
#195
**Refer** \- [**Click Here**](#u8uuxmnwh4u5)
~12 tok
# **Refer** \- [**Click Here**](#u8uuxmnwh4u5)
#196
Project Name & Event Type
~7 tok
# Project Name & Event Type
#197
Users
~2 tok
# Users
#198
Brand
~2 tok
# Brand
#199
Brand Logo
~3 tok
# Brand Logo
#200
View Details
~4 tok
# View Details
#201
Invoice Upload
~4 tok
# Invoice Upload
#202
**Refer -** [**Click Here**](#rndlgw36wh1k)
~11 tok
# **Refer -** [**Click Here**](#rndlgw36wh1k)
#203
Deliverables Upload
~5 tok
# Deliverables Upload
#204
Payment Received
~5 tok
# Payment Received
#205
Payment Received > **5.3 Completed Tab**
~6 tok
### **5.3 Completed Tab**
#206
**Field Name**
~4 tok
# **Field Name**
#207
**Type**
~3 tok
# **Type**
#208
**Validation Rules**
~6 tok
# **Validation Rules**
#209
Event Date
~3 tok
# Event Date
#210
**Refer -** [**Click Here**](#u8uuxmnwh4u5)
~11 tok
# **Refer -** [**Click Here**](#u8uuxmnwh4u5)
#211
Project & Event Name
~6 tok
# Project & Event Name
#212
Users
~2 tok
# Users
#213
Brand
~2 tok
# Brand
#214
Brand Logo
~3 tok
# Brand Logo
#215
Service Area
~4 tok
# Service Area
#216
Actions
~2 tok
# Actions
#217
Actions > **5.4 Filter Fields**
~98 tok
### **5.4 Filter Fields** **Field Name** **Field Type** **Validation Rules** Reset All Filters Button **Refer** \- [**Click Here**](#w1389kpk7qb6) Event Type Dropdown Start Date Date Picker End Date Date Picker Brands Single-Select Dropdown Tags Multi-Select Dropdown Service Area Single-Select Dropdown Venue Single-Select Dropdown Service Types Multi-Select Checkbox
#218
Actions > **6\. Error Message Handling**
~8 tok
## **6\. Error Message Handling**
#219
**Field/Action**
~5 tok
# **Field/Action**
#220
**Validation Scenario**
~6 tok
# **Validation Scenario**
#221
**Error Message**
~5 tok
# **Error Message**
#222
Search Results
~4 tok
# Search Results
#223
No matches found
~5 tok
# No matches found
#224
"No matching events found."
~7 tok
# "No matching events found."
#225
General System
~4 tok
# General System
#226
Connection timeout
~5 tok
# Connection timeout
#227
"Something went wrong."
~6 tok
# "Something went wrong."
#228
Server error
~4 tok
# Server error
#229
"Something went wrong."
~6 tok
# "Something went wrong."
#230
"Something went wrong." > **7\. Edge Cases**
~5 tok
## **7\. Edge Cases**
#231
**Scenario**
~4 tok
# **Scenario**
#232
**Expected Behavior**
~6 tok
# **Expected Behavior**
#233
Event date changes from future to past
~10 tok
# Event date changes from future to past
#234
Automatically move from Upcoming to Post-Event
~12 tok
# Automatically move from Upcoming to Post-Event
#235
Event date changes from future to past
~10 tok
# Event date changes from future to past
#236
Automatically move from Upcoming to Post-Event if payment is incomplete
~18 tok
# Automatically move from Upcoming to Post-Event if payment is incomplete
#237
Database connection lost during operation
~11 tok
# Database connection lost during operation
#238
Show error message
~5 tok
# Show error message
#239
Show error message > **8\. Test Cases**
~5 tok
## **8\. Test Cases**
#240
Show error message > **Link -** [**Pixally Test cases**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=97704170#gid=97704170)
~39 tok
## **Link -** [**Pixally Test cases**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=97704170#gid=97704170)
#241
Show error message > **9\. Acceptance Criteria**
~629 tok
## **9\. Acceptance Criteria**
* Contractors can view only events assigned to them; if none exist, all tabs display the empty state message “You have no events yet.”
* The event list is global across all agencies, but detailed event data is viewable only within the active workspace.
* Events from other agencies appear as read-only until the contractor switches to that agency’s workspace.
* The module contains three tabs — **Upcoming**, **Post-Event**, and **Completed** — with **Upcoming** as the default view.
* **Upcoming Tab:** Displays events with today’s or future dates.
* **Post-Event Tab:** Displays past events where deliverables, invoices, or payments are still pending.
* **Completed Tab:** Displays past events where all deliverables and invoices are uploaded, and payment is fully received.
* Events auto-transition between tabs based on event date and completion criteria.
* Events are sorted by event date (ascending) by default; columns (Event Date, Project, Brand, Service Area) support bidirectional sorting.
* The search bar allows real-time filtering by project name, event type, brand name, or service area.
* If no matching results are found during the search, the system displays “No matching events found.”
* The filter panel allows multi-criteria filtering by Event Type, Date Range, Brand, Tags, Service Area, Venue, and Service Type.
* Brand and Service Area filters are interdependent; selecting one limits options in the other accordingly.
* Applied filters appear as tags above the event list with “X” icons for individual removal and a “Clear All Filters” option for resetting all at once.
* Status icons appear only in the **Upcoming** and **Post-Event** tabs.
* In **Upcoming**, the Service Agreement icon shows filled when signed and empty when unsigned.
* In **Post-Event**, icons indicate:
* Invoice Upload → Filled if uploaded, empty if not.
* Deliverables Upload → Filled if uploaded, empty if not.
* Payment Received → Empty (unpaid), half-filled (partial), or filled (fully paid).
* Clicking **“View Details”** for an event under a different agency triggers a confirmation pop-up asking to switch studios.
* Clicking **“Yes, Switch”** changes the current workspace to the event’s agency and redirects to the event details page.
* Clicking **“Cancel”** closes the pop-up and retains the current workspace.
* The studio selection persists until changed again in the same session.
**10\. Dependencies**#242
**Module/System**
~5 tok
# **Module/System**
#243
**Dependency Type**
~5 tok
# **Dependency Type**
#244
**Impact if Unavailable**
~7 tok
# **Impact if Unavailable**
#245
Payment Processing System
~7 tok
# Payment Processing System
#246
Integration
~3 tok
# Integration
#247
Cannot track payment completion, events stuck in the Post-Event tab
~17 tok
# Cannot track payment completion, events stuck in the Post-Event tab
#248
User Management System
~6 tok
# User Management System
#249
Data Dependency
~4 tok
# Data Dependency
#250
Cannot assign users to events, no team avatar display, and login failures
~19 tok
# Cannot assign users to events, no team avatar display, and login failures
#251
Brand/Agency Management
~6 tok
# Brand/Agency Management
#252
Data Dependency
~4 tok
# Data Dependency
#253
Cannot enforce cross-brand access control, no brand switching
~16 tok
# Cannot enforce cross-brand access control, no brand switching
#254
Calendar/Date System
~6 tok
# Calendar/Date System
#255
Service Dependency
~5 tok
# Service Dependency
#256
Date-based status transitions fail, and incorrect tab filtering
~16 tok
# Date-based status transitions fail, and incorrect tab filtering
#257
Authentication System
~6 tok
# Authentication System
#258
Security Dependency
~5 tok
# Security Dependency
#259
Cannot validate cross-brand access; session management fails
~16 tok
# Cannot validate cross-brand access; session management fails
#260
Notification System
~5 tok
# Notification System
#261
Service Dependency
~5 tok
# Service Dependency
#262
Users are not notified of status changes or payment requirements
~17 tok
# Users are not notified of status changes or payment requirements
#263
File Storage System
~5 tok
# File Storage System
#264
Data Dependency
~4 tok
# Data Dependency
#265
User avatars not displayed, team assignment visuals fail, document uploads fail
~20 tok
# User avatars not displayed, team assignment visuals fail, document uploads fail
#266
Geographic Services
~5 tok
# Geographic Services
#267
Data Dependency
~4 tok
# Data Dependency
#268
Service area validation fails, location display incomplete
~15 tok
# Service area validation fails, location display incomplete
#269
Reporting Module
~5 tok
# Reporting Module
#270
Data Consumer
~4 tok
# Data Consumer
#271
Historical reporting is missing event data from the Completed tab
~17 tok
# Historical reporting is missing event data from the Completed tab
#272
Search Index Service
~6 tok
# Search Index Service
#273
Performance Dependency
~6 tok
# Performance Dependency
#274
Global search functionality degraded or non-functional
~14 tok
# Global search functionality degraded or non-functional
#275
Document Management
~5 tok
# Document Management
#276
Critical Dependency
~5 tok
# Critical Dependency
#277
Agreement signing fails, timeline/guide downloads unavailable
~16 tok
# Agreement signing fails, timeline/guide downloads unavailable
#278
Audit Logging System
~6 tok
# Audit Logging System
#279
Compliance Dependency
~6 tok
# Compliance Dependency
#280
Cannot track user actions, security events, and data changes
~16 tok
# Cannot track user actions, security events, and data changes
#281
Cannot track user actions, security events, and data changes >
~1 tok
##
#282
Cannot track user actions, security events, and data changes > **11\. References**
~6 tok
## **11\. References**
#283
Cannot track user actions, security events, and data changes > **11\. References** > **Figma Link -** [**Click Here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=13461-125366&t=qI39dRBohSA1mlSj-0)
~35 tok
### **Figma Link -** [**Click Here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=13461-125366&t=qI39dRBohSA1mlSj-0)
#284
Cannot track user actions, security events, and data changes > **11\. References** >
~6 tok
### ☑️ Event Details
#285
Event Details Screen - Contractor Portal
~11 tok
# Event Details Screen - Contractor Portal
#286
Event Details Screen - Contractor Portal > **1\. Module Overview**
~148 tok
## **1\. Module Overview** Attribute Description Module Name Event Details Screen (Contractor Portal) Purpose Provide contractors with comprehensive visibility into their assigned event details, including service requirements, agreements, deliverables management, and invoice submission capabilities within a centralized interface Business Goal Enable contractors to access all event-specific information, manage service agreements, track deliverables, submit invoices, and maintain clear visibility into event requirements and documentation across their assigned events and agencies
#287
Event Details Screen - Contractor Portal > **2\. User Roles & Permissions**
~96 tok
## **2\. User Roles & Permissions** Role Description Key Permissions Portal Access Contractor Contractors assigned to specific events by agencies View assigned event details only, download timeline and shooting guides, sign service agreements, view auto-captured events, complete questionnaires, upload invoices, and upload deliverables Contractor Portal, Event Details Screen
#288
Event Details Screen - Contractor Portal > **3\. User Flow**
~5 tok
## **3\. User Flow**
#289
Event Details Screen - Contractor Portal > **3\. User Flow** > Navigation Path
~77 tok
### Navigation Path Contractors can access the Event Details Screen through three entry points: * Contractor Portal Side Menu → Events Module → Event Listing → View Details button * Contractor Portal → Dashboard → Event Card → Click event * Contractor Portal → Calendar Module → Event → Click event
#290
Event Details Screen - Contractor Portal > **3\. User Flow** > Step-by-Step Flow
~210 tok
### Step-by-Step Flow
1. Step 1: Contractor clicks on an event from Event Listing, Dashboard, or Calendar Module
2. Step 2: System validates if the event belongs to the current workspace agency
* If Yes: Directly opens Event Details Screen
* If No: Displays cross-brand workspace switch pop-up
3. Step 3: Event Details Screen loads with project header, event cards, and Details tab selected by default
4. Step 4: Contractor can navigate between the Details, Contractors, Finances, Files/Documents, and Notes tabs
5. Step 5: Contractor can navigate between the Services sections for different services if assigned to multiple services in the event
6. Step 6: Contractor can perform actions: download documents, sign agreements, view captured event status, complete questionnaires, upload invoices, and upload deliverables#291
Event Details Screen - Contractor Portal > 4\. Functional Logic
~6 tok
## 4\. Functional Logic
#292
Event Details Screen - Contractor Portal > 4\. Functional Logic > 4.1 Event Access & Workspace Validation
~201 tok
### 4.1 Event Access & Workspace Validation * Contractors can only view event details for events to which they have been assigned by the agency * The contractor must be in the specific agency workspace that corresponds to the event's associated agency to view full event details Cross-Workspace Access Control: * When a contractor attempts to access an event that belongs to a different agency workspace than their currently selected workspace, a confirmation pop-up appears asking to switch workspaces. Refer - [Click Here](https://claude.ai/chat/f25a671f-03a4-4147-be6f-c75f506b1bcc?tab=t.nqli9p8m68iv#bookmark=id.e64cmqeopr9y) Access Entry Points: * Event Listing Module: Via "View Details" button * Dashboard: Via the event card, click on the events * Calendar Module: Via event click
#293
Event Details Screen - Contractor Portal > 4\. Functional Logic > 4.2 Project Header Display Logic
~303 tok
### 4.2 Project Header Display Logic The project header is displayed at the top of the Event Details Screen and includes the following elements: Brand Primary Logo: * Displays the primary logo of the brand associated with the event's project Project Banner Image: * Displays the header banner image as set by the agency for the project * If no banner is set, displays a default placeholder image Project Status Badge: * Positioned in the top-right corner of the header * Displays the current status of the project as set by the agency (e.g., Active, Completed, Archived) Project Name: * Displays the project name as set by the agency below the project status badge Event Date Display Logic: Below the project name, the event date is displayed with the following conditions: * If the contractor is assigned to only ONE event in the project: Display the single event date * If the contractor is assigned to MULTIPLE events in the same project: Display the date range showing the first event date and the last event date Primary Service Area: * Displayed on the left side, below the project banner, with a location pin icon * Shows the primary service area associated with the event
#294
Event Details Screen - Contractor Portal > 4\. Functional Logic > 4.3 Event Card Display Logic
~294 tok
### 4.3 Event Card Display Logic Event cards are displayed below the project header and show only those events within the project to which the contractor is assigned. Event Card Visibility Rules: * If a project has multiple events, but the contractor is assigned to only one event: Display only that one event card * If the contractor is assigned to multiple events in the same project: Display all assigned event cards Event Card Positioning: * Event cards are ordered chronologically based on the event date, with the nearest upcoming event positioned first Event Card Content: * Each event card displays: Event Name, Event Date, Event Stage Badge (as set by agency), and Assigned Users (first 3 profiles, +X for additional) Event Card Selection Logic: * If only ONE event is assigned: That event card is auto-selected, and the Details tab is displayed * If MULTIPLE events are assigned: The event with the nearest upcoming event date is auto-selected by default * Contractors can manually click on any other event card to view its details * When an event card is selected, all tab content updates to show information specific to that selected event
#295
Event Details Screen - Contractor Portal > 4\. Functional Logic > 4.4 Tab Navigation Structure
~128 tok
### 4.4 Tab Navigation Structure * The Event Details Screen contains five main tabs: Details Tab (default selected), Contractors Tab, Finances Tab, Files/Documents Tab, and Notes Tab * Details Tab Auto-Selection: When the Event Details Screen loads, the Details tab is automatically selected and displays information for the auto-selected event * Tab Content Dynamic Update: When a contractor clicks on a different event card, all tab content dynamically updates to reflect the selected event's information
#296
Event Details Screen - Contractor Portal > 4\. Functional Logic > 4.5 Services Section Display Logic
~364 tok
### 4.5 Services Section Display Logic
The Services section is displayed within the Details tab and shows all services for which the contractor is assigned to the selected event.
Service Type Display:
* Service Name Header: Displays the service type name (e.g., "Photography", "Videography", "Content Creator")
* If the contractor is assigned to multiple service types for the same event, each service is displayed in a separate section
Download SNAPSHOT Button:
* On clicking, downloads a PDF snapshot summary of the event details
* Snapshot displays the major details about the event:
* Brand's Primary logo
* Project Name
* Service area
* Event Details Section (Event Name, Event Date, Primary Venue, Brand Name)
* Service Name
* Timeline & Shooting Guide Download Button
* Contractor role, Coverage hours, Minimum amount of photos, Amount (Contractor Fee)
* Additional Fields (if applicable)
* Notes
* Contacts (Client's details): Client Full Name, Role, Email, Phone Number
* Contractors: Contractor Name, Specialization, Role, Email, Phone Number
Service-Specific Action Buttons:
* Timeline Download Button: Provides a link within the PDF; on click, downloads the file to the user's local system
* Shooting Guide Download Button: Displayed only if the agency has uploaded a shooting guide in brand settings; on click, downloads the file to the user's local system#297
Event Details Screen - Contractor Portal > 4\. Functional Logic > 4.6 Service Details Display
~156 tok
### 4.6 Service Details Display Below the service name header, the following service details are displayed in a grid layout: * Role Assignment: Displays role name with icon of the contractor as assigned by the agency (e.g., "Lead Shooter", "Second Shooter", "Assistant", "Drone Operator") * Coverage Hours: Displays number of hours of coverage as set by the agency (e.g., "8 hours") * Minimum Amount of Photos: Displayed ONLY for Photography service type; shows the minimum number of photos required as set by the agency * Service Amount: Displays contractor fee amount for the service assigned (e.g., "$400.00")
#298
Event Details Screen - Contractor Portal > 4\. Functional Logic > 4.7 Service Note Display
~63 tok
### 4.7 Service Note Display * Service Note Section: Displays the service note text as entered by the agency in the agency portal for the specific service in the event * If the agency has not added a service note, this section will not be displayed
#299
Event Details Screen - Contractor Portal > 4\. Functional Logic > 4.8 Service Agreement Display & Signing Logic
~348 tok
### 4.8 Service Agreement Display & Signing Logic The Service Agreement section displays the agreement document and signing status with different states based on the agreement's signing status by the contractor. Agreement Display States: State 1: Agreement Not Signed (Before Expiry) When the service agreement has been sent but not yet signed, and the current date is before expiry: * Displays: Agreement name, event name, date sent, and "Sign Agreement" button * On clicking "Sign Agreement": Opens the service agreement document for the contractor to sign State 2: Agreement Expired (Not Signed After Expiry Date) When an agreement has an expiry date and remains unsigned, and the current date has passed the expiry date: * Displays: Agreement name, below agreement name displays "Expired on \[Date\]", event name, date on which the agreement was sent by the agency, and "View" button * On clicking "View": Opens the service agreement document * Note: Even if expired and unsigned, the contractor can still view event details and upload deliverables State 3: Agreement Signed When the contractor has successfully signed the service agreement: * Displays: Agreement name, event reference, date on which the agreement was sent by the agency, "Signed" badge with checkmark, and "View" button * On clicking "View": Opens the signed agreement document in read-only mode
#300
Event Details Screen - Contractor Portal > 4\. Functional Logic > 4.9 Capture Event Section Logic
~665 tok
### 4.9 Capture Event Section Logic
The Capture Event section displays the event information and automatically marks the event as captured when the event date/time is reached. There is no manual "Mark as Captured" button.
Event Information Display:
* Displays the event name and event date in a single line format
* This information is shown at all times (before and after the event date)
Automatic Capture Logic:
The system automatically marks the event as captured based on the following rules:
Event Type
Auto-Capture Trigger Time
Single-day event
11:00 AM on the event date
Multi-day event
11:00 AM on the event end date
Display States:
State 1: Before Event Date (Pre-Capture)
* Displays: Event name and event date only
* No action button is shown
* The section serves as an informational display
State 2: After Auto-Capture (Post-Capture)
When the system time reaches 11:00 AM on the event date (or event end date for multi-day events):
* The section automatically updates to show:
* Success message: "Event was captured successfully!" displayed in a green banner with a checkmark icon
* "Complete Questionnaire" button appears in green/primary color next to the success message
Complete Questionnaire Button Logic:
* The "Complete Questionnaire" button is displayed only after the event has been auto-captured (11:00 AM on event date/end date)
* On click: Opens the questionnaire associated with the event
* If the agency has not sent any questionnaire, the button is not displayed
* The button always links to the most recently sent questionnaire by the agency
* Button text remains "Complete Questionnaire" regardless of whether the contractor has already completed it
* Questionnaires are NOT mandatory for uploading deliverables
Post-Event Questionnaire Auto-Send Logic:
* If the auto-toggle setting is enabled in the Questionnaire Module, the questionnaire is automatically sent at 12:00 PM (noon) on the event date (or event end date for multi-day events)
* This occurs 1 hour after the auto-capture trigger (11:00 AM)
* The agency can also send questionnaires manually at any time (before or after event date)
* When sent manually, the latest questionnaire always replaces the previous one on the "Complete Questionnaire" button
* All sent questionnaires (auto and manual) can be viewed in the Files/Documents tab with their created date and time
Event Progress Sidebar Update:
* When the auto-capture triggers, the "Capture Event" step in the Event Progress sidebar automatically marks as complete
* The "Post-Event Questionnaire" step updates based on questionnaire status#301
Event Details Screen - Contractor Portal > 4\. Functional Logic > 4.10 Upload Invoice Section Logic
~345 tok
### 4.10 Upload Invoice Section Logic The Upload Invoice section allows contractors to upload invoice documents at any time (before or after the event date). Upload Functionality: * Contractors can upload invoices at any time, even before the event date * Multiple invoices can be uploaded for the same event Upload Interface: * Displays a drag-and-drop upload area with a cloud upload icon * Text: "Drop or upload file here" with "+ Upload New Invoice" button File Validation Rules: * Maximum file size: 15 MB per invoice * Allowed file format: PDF only Uploaded Invoice Display: When the invoice is successfully uploaded: * Displays: PDF document icon, invoice file name, event reference, upload date & time * Kebab menu icon: Provides options to Preview, Download PDF, or Delete the invoice Invoice Upload Impact on Other Modules: When an invoice is uploaded, the following updates occur automatically: * Agency Side - Project Details → Activity Tab: Invoice upload activity is logged * Agency Side - Contractors Tab: Invoice icon is displayed as filled * Contractor Side - Event Listing: Invoice upload icon is filled for the event in the Post-Event tab * Agency Side - Finances Module → Contractors Invoices → Unpaid Section: Invoice appears * Agency Side - Contractors Module → Contractor Profile: Invoice icon is filled for the event
#302
Event Details Screen - Contractor Portal > 4\. Functional Logic > 4.11 Upload Deliverables Section Logic
~161 tok
### 4.11 Upload Deliverables Section Logic The Upload Deliverables section allows contractors to submit event deliverables using three different delivery methods after the event date has passed. Deliverables Upload Availability: * The Upload Deliverables section is displayed only after the event date has passed * Before the event date: This section is not visible Delivery Method Selection: * Contractors can choose from three delivery methods, presented as tabs: Digital Delivery (default), Hard Drive, Other * Contractors can use multiple delivery methods for the same event (e.g., upload digital links AND send a hard drive)
#303
Event Details Screen - Contractor Portal > 4\. Functional Logic > 4.11 Upload Deliverables Section Logic > 4.11.1 Digital Delivery Method
~141 tok
#### 4.11.1 Digital Delivery Method When the "Digital Delivery" tab is selected: * Contractors can add links to the deliverables * Maximum allowed links: 5 links total per event * Link validation: Links must be in a valid URL format * Each entered link is displayed as a separate row with the full URL visible * Each link row includes edit and delete icons * "+ Add Additional Link" button allows adding up to 5 links total * Once 5 links are added, the add button is disabled * Links can be edited or deleted at any time before final submission
#304
Event Details Screen - Contractor Portal > 4\. Functional Logic > 4.11 Upload Deliverables Section Logic > 4.11.2 Hard Drive Delivery Method
~91 tok
#### 4.11.2 Hard Drive Delivery Method When the "Hard Drive" tab is selected: * Tracking Number Input: Text input for entering the courier tracking number * Shipping Service Input: Text input for entering shipping/courier service name * Shipping Address Display: Displays the brand's business address as set by the agency in the agency portal (read-only)
#305
Event Details Screen - Contractor Portal > 4\. Functional Logic > 4.11 Upload Deliverables Section Logic > 4.11.3 Other Delivery Method
~66 tok
#### 4.11.3 Other Delivery Method When the "Other" tab is selected: * Note Input Field: Multi-line text area for entering delivery method details * Validation: Maximum 250 characters * Examples: "Gave it to Lead Shooter", "Hand-delivered to agency office"
#306
Event Details Screen - Contractor Portal > 4\. Functional Logic > 4.11 Upload Deliverables Section Logic > 4.11.4 Deliverables Display In Project Details
~90 tok
#### 4.11.4 Deliverables Display In Project Details When the contractor uploads the deliverables using any method, they will be displayed in the Agency Portal → Project Details → Event Details → Raw Media tab. Refer - [Click Here](https://docs.google.com/document/d/1JRbhA6wMQ6BtUWKlw63paM1s_sgaDy6PrjQHLw1suLk/edit?tab=t.4gonnhcom6re#bookmark=id.kplcbdd74n6d)
#307
Event Details Screen - Contractor Portal > 5\. Field Details & Validations
~9 tok
## 5\. Field Details & Validations
#308
Event Details Screen - Contractor Portal > 5\. Field Details & Validations > 5.1 Capture Event Section
~129 tok
### 5.1 Capture Event Section Field Name Display Format Validation Rules Event Name Text label Read-only, displays event name as set by agency Event Date Date format (e.g., "Wed, Dec 19, 2025") Read-only, displays event date or date range for multi-day events Success Banner Green banner with checkmark Displayed only after auto-capture triggers at 11:00 AM Complete Questionnaire Button Primary/green button Displayed only if questionnaire has been sent by agency; links to most recent questionnaire
#309
Event Details Screen - Contractor Portal > 5\. Field Details & Validations > 5.2 Upload Invoice Section
~123 tok
### 5.2 Upload Invoice Section Field Name Display Format Validation Rules Upload Area Drag-drop zone with cloud icon Always visible, accepts PDF up to 15 MB Upload New Invoice Text button Always enabled, allows multiple uploads Invoice File & Event Name Text with PDF icon Displays the uploaded file & event name Upload Date & Time "Day Mon Year" and "HH:MM AM/PM" Displays the invoice uploaded date and time Kebab Menu Kebab Options Options: Preview, Download PDF, Delete
#310
Event Details Screen - Contractor Portal > 5\. Field Details & Validations > 5.3 Upload Deliverables Section - Digital Delivery
~99 tok
### 5.3 Upload Deliverables Section - Digital Delivery Field Name Display Format Validation Rules Link Input Field Text input with checkbox icon Required valid URL format, max 5 links total Link Display Full URL text with edit/delete icons After the link input, each link is shown as a separate row Add Additional Link Button Text button Enabled until 5 links are added, then disabled
#311
Event Details Screen - Contractor Portal > 5\. Field Details & Validations > 5.4 Upload Deliverables Section - Hard Drive
~73 tok
### 5.4 Upload Deliverables Section - Hard Drive Field Name Display Format Validation Rules Tracking Number Text input Maximum 250 characters Shipping Service Text input Maximum 250 characters Shipping Address Read-only text block Displays the brand's business address, view only
#312
Event Details Screen - Contractor Portal > 5\. Field Details & Validations > 5.5 Upload Deliverables Section - Other
~39 tok
### 5.5 Upload Deliverables Section - Other Field Name Display Format Validation Rules Delivery Method Note Multi-line text area Maximum 250 characters
#313
Event Details Screen - Contractor Portal > 6\. Error Message Handling
~218 tok
## 6\. Error Message Handling Field/Action Validation Scenario Error Message Invoice Upload File size exceeds 15 MB "File size cannot exceed 15 MB limit." Invoice Upload File format is not PDF "Only PDF files are allowed." Digital Delivery Links More than 5 links attempted "Maximum 5 links allowed." Digital Delivery Links Invalid URL format "Please enter a valid URL." Hard Drive → Tracking Number Tracking number exceeds 250 characters "Tracking number cannot exceed 250 characters." Hard Drive → Shipping Service Shipping service exceeds 250 characters "Shipping service name cannot exceed 250 characters." Other Delivery Method Note exceeds 250 characters "Note cannot exceed 250 characters." Timeline, Shooting Guide Download Network error during download "Something went wrong." General System Connection timeout "Something went wrong."
#314
Event Details Screen - Contractor Portal > 7\. Edge Cases
~703 tok
## 7\. Edge Cases Scenario Expected Behavior Contractor assigned to multiple events with the same date Auto-select the first event in alphabetical order by event name Event date changes after the event was auto-captured Event remains marked as captured; no automatic status reversal The agency deletes the uploaded timeline after the contractor views the event The Timeline button is no longer displayed on the next page load Contractor uploads invoice before event date The invoice is accepted and displayed; all related modules update immediately Agency updates service agreement after partial signing Display notification about updated agreement; require re-signing Contractor uploads 5 digital delivery links, then switches to Hard Drive Both delivery methods are saved independently; can use multiple methods The event date passes but contractor hasn't completed questionnaire Deliverables section still displays; can upload without completing questionnaire Contractor switches workspace while on Event Details Screen Page reloads with event from newly selected workspace (if accessible) Database connection lost during invoice upload Display error: "Failed to upload invoice. Please check your connection." Multiple contractors upload different invoices simultaneously All invoices are accepted and displayed with the respective uploader information Agency removes contractor from event while viewing details Display message "You no longer have access to this event" and redirect Event date is "TBD" (no specific date set) Auto-capture cannot trigger; contractor must wait for agency to set a date; Upload Deliverables section is not displayed Contractor completes questionnaire but doesn't upload deliverables Questionnaire responses saved; no dependency on deliverables upload The service agreement expires during the signing session Display expiry notification; prevent signing; show "View" button only Contractor uploads deliverables before completing questionnaires Deliverables upload succeeds; questionnaires remain optional Agency sends questionnaire manually before event date Allowed; "Complete Questionnaire" button appears only after auto-capture (11:00 AM on event date) Agency sends multiple questionnaires manually Latest questionnaire replaces previous on the "Complete Questionnaire" button; all sent questionnaires visible in Files/Documents tab Auto-toggle for questionnaire turned ON after event date has passed Auto-send logic only applies to future events; does not retroactively send for past events Multi-day event: when does auto-capture trigger? Auto-capture triggers at 11:00 AM on the event END date Multi-day event: when is questionnaire auto-sent? Questionnaire auto-sent at 12:00 PM noon on the event END date (if auto-toggle is ON)
#315
Event Details Screen - Contractor Portal > 8\. Acceptance Criteria
~7 tok
## 8\. Acceptance Criteria
#316
Event Details Screen - Contractor Portal > 8\. Acceptance Criteria
~800 tok
* Contractors can only access event details for events explicitly assigned to them by the agency * Contractors must be in the correct agency workspace to view full event details; accessing from a different workspace triggers a confirmation pop-up * Contractors can access the Event Details Screen from the Event Listing, Dashboard, and Calendar Module * Cross-workspace pop-up displays agency name and provides "Cancel" and "Yes, Switch" options * Clicking "Yes, Switch" changes the workspace and opens event details; "Cancel" keeps the current workspace * Project header displays brand's primary logo, project banner, status badge, project name, event date(s), and primary service area * Event date displays as a single date if one event is assigned, or a date range if multiple events are assigned * The Download SNAPSHOT button generates and downloads a PDF with event details * Event cards display only events assigned to the contractor within the project * Event cards show event name, date, stage badge, and assigned users (first 3, then +X indicator) * Event cards are ordered chronologically by event date (nearest upcoming first) * If one event is assigned, the event is auto-selected and the Details tab is displayed * If multiple events are assigned, the nearest upcoming event is auto-selected by default * Clicking an event card updates all tab content to show the selected event's information * Details tab is auto-selected on page load * The Services section displays the service type name (Photography, Videography, Content Creator) * The Timeline button displays only if the agency uploaded a timeline; clicking downloads the timeline file * The Shooting Guide button displays only if the agency has uploaded a guide in brand settings; clicking downloads the guide file * Service details display Role, Coverage hours, Min Amount of Photos (Photography only), and Service Amount * The Service Note section displays only if the agency added a note; hidden if no note exists * Service Agreement displays with three states: Unsigned (with Sign button), Expired (with View button), Signed (with View button and Signed badge) * Agreement displays document icon, name, event reference, date sent, and appropriate action button * Expired agreements still allow contractors to view event details and upload deliverables * Capture Event section displays event name and date at all times (before and after event date) * No manual "Mark as Captured" button exists; capture is fully automatic * Event is automatically marked as captured at 11:00 AM on the event date (or event end date for multi-day events) * After auto-capture, success message "Event was captured successfully!" displays with "Complete Questionnaire" button * "Complete Questionnaire" button appears only after auto-capture and only if agency has sent a questionnaire * "Complete Questionnaire" button always links to the most recently sent questionnaire * Button text remains "Complete Questionnaire" regardless of completion status * If auto-toggle is ON, questionnaire is auto-sent at 12:00 PM noon on event date (or event end date for multi-day events) * Agen
#317
Event Details Screen - Contractor Portal > 8\. Acceptance Criteria
~469 tok
cy can send questionnaires manually at any time; latest always replaces previous on the button * All sent questionnaires are visible in Files/Documents tab with created date and time * Event Progress sidebar "Capture Event" step auto-completes when auto-capture triggers * Questionnaires are not mandatory for uploading deliverables * The Upload Invoice section is always visible and allows uploads at any time (before or after the event) * Contractors can upload multiple invoices for the same event * Invoice uploads accept only PDF format with maximum 15 MB file size * Uploaded invoices display with file name, event reference, upload date/time, and kebab menu * Invoice uploads automatically update the Agency Activity Tab, Event Listing icons, Finances module, and Contractor Profile * The Upload Deliverables section displays only after the event date has passed * Deliverables can be uploaded via three methods: Digital Delivery, Hard Drive, or Other * Contractors can use multiple delivery methods simultaneously for the same event * Digital Delivery allows maximum of 5 links with valid URL format * Digital Delivery links can be edited or deleted at any time * Hard Drive method requires Tracking Number (max 250 chars) and Shipping Service (max 250 chars) * Hard Drive displays the brand's business address as read-only shipping address * Other method accepts notes up to 250 characters * All error messages display appropriately for file size, format, character limits, and URL validation * Cross-workspace access control applies from all entry points (Event Listing, Dashboard, Calendar) * Workspace selection persists throughout the session until manually changed * Edge cases handled: multiple events same date, date changes post-capture, deleted documents, simultaneous uploads, TBD events, manual questionnaire sending
#318
Event Details Screen - Contractor Portal > 9\. Dependencies
~316 tok
## 9\. Dependencies Module/System Dependency Type Impact if Unavailable User Management System Data Dependency Cannot validate contractor assignment to events, no access control, and login failures Brand/Agency Management Data Dependency Cannot enforce cross-workspace access control, no brand logo/address display, workspace switching fails Project Management System Data Dependency Cannot load project information, header banner missing, event details unavailable Document Management System Critical Dependency Timeline and shooting guide downloads fail, service agreements cannot be signed, and invoice/deliverables uploads fail Authentication System Security Dependency Cannot validate contractor identity and permissions; cross-workspace validation fails File Storage System Data Dependency Document uploads/downloads fail, logo and banner images not displayed Questionnaire Module Feature Dependency Complete Questionnaire button not displayed, questionnaire responses not saved, auto-send logic unavailable Finances Module Data Consumer Invoices not reflected in the Contractor Invoices section, payment tracking is incomplete System Clock/Scheduler Critical Dependency Auto-capture timing fails, questionnaire auto-send fails
#319
Event Details Screen - Contractor Portal > 10\. References
~113 tok
## 10\. References * Figma Design: [Click Here](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=13461-159143&t=qI39dRBohSA1mlSj-0) * Questionnaire Module FRD: Refer for auto-toggle settings and questionnaire configuration * Agency Portal - Project Details FRD: [Click Here](https://docs.google.com/document/d/1JRbhA6wMQ6BtUWKlw63paM1s_sgaDy6PrjQHLw1suLk/edit?tab=t.4gonnhcom6re#bookmark=id.kplcbdd74n6d) ☑️ Contractors Tab
#320
**Contractors Tab**
~5 tok
# **Contractors Tab**
#321
**1\. Module Overview**
~168 tok
# **1\. Module Overview** * **Module Name:** Contractors Tab (Event Details Screen - Contractor Portal) * **Purpose:** Provide contractors with visibility into all assigned contractors for each service within an event, displaying role assignments, contractor details, and personal progress indicators (agreement signing, invoice submission, deliverables upload, and payment status) for the logged-in contractor * **Business Goal:** Enable contractors to understand the complete team structure for an event, identify other contractors they will be working with across different services, and track their own service-specific progress through visual status indicators
#322
**1\. Module Overview** > **2\. User Roles & Permissions**
~90 tok
## **2\. User Roles & Permissions** **Role** **Description** **Key Permissions** Contractor Contractors assigned to specific events by agencies View all service tabs within the event, view assigned contractor details for each service (role, name, avatar, specialization), view own detailed progress card with status icons, and view distance to event venue
#323
**1\. Module Overview** > **3\. User Flow**
~229 tok
## **3\. User Flow** **Navigation Path:** Contractor Portal > Event Details Screen > Contractors Tab **Step-by-Step Flow:** **Step 1:** Contractor accesses Event Details Screen from Event Listing, Dashboard, or Calendar Module **Step 2:** Contractor clicks on the "Contractors" tab from the tab navigation (Details, Contractors, Finances, Files) **Step 3:** System loads the Contractors tab with service tabs displayed horizontally **Step 4:** The System auto-selects the service tab to which the logged-in contractor is assigned **Step 5:** The Selected service tab displays all role cards for that service, showing assigned contractors and unassigned roles **Step 6:** The Contractor can navigate between service tabs to view contractor assignments for other services in the event **Step 7:** The Contractor can view their own detailed card with progress icons when viewing the service they are assigned to
#324
**1\. Module Overview** > **4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#325
**1\. Module Overview** > **4\. Functional Logic** > **4.1 Service Tab Display Logic**
~385 tok
### **4.1 Service Tab Display Logic**
* **Service Tabs Visibility:**
* The Contractors tab displays service tabs for ALL services configured for the event by the agency
* Service tabs are displayed regardless of whether the logged-in contractor is assigned to that specific service
* This allows contractors to view the complete team structure across all services for the event they are assigned to
* **Service Tab Types:**
* Photography
* Videography
* Content Creation
* **Service Tab Display Rules:**
* If the event has only one service configured, only that service tab is displayed
* If the event has multiple services configured (e.g., Photography and Videography), all configured service tabs are displayed
* Example: If an event has Photography and Videography services but not Content Creation, only Photography and Videography tabs appear
* **Service Tab Auto-Selection:**
* When the Contractors tab loads, the system automatically selects the service tab to which the logged-in contractor is assigned
* Example: If the logged-in contractor is assigned to the Photography service, the Photography tab is displayed by default.
* **Service Tab Manual Navigation:**
* Contractors can click on any service tab to view contractor assignments for that service
* Clicking a different service tab updates the content area to display role cards for the selected service
* The selected tab visual indicator moves to reflect the current selection#326
**1\. Module Overview** > **4\. Functional Logic** > **4.2 Role Card Display Logic**
~221 tok
### **4.2 Role Card Display Logic**
* **Contractor Cards Container:**
* Below the service tabs, a card container area displays all role cards for the selected service
* Each role card represents a contractor role as assigned by the agency for that service
* **Role Card Visibility Rules:**
* All roles configured by the agency for the selected service are displayed as individual cards
* If a role has an assigned contractor, the card displays the contractor's information
* If a role has no assigned contractor, the card displays a "Unassigned" placeholder
* Example: If the Photography service has Lead Shooter, Second Shooter, and Drone Operator roles configured, three role cards are displayed
* Role cards are ordered based on role hierarchy or the order set by the agency (Lead shooter < Second shooter < Assistant < Drone Operator)#327
**1\. Module Overview** > **4\. Functional Logic** > **4.3 Other Contractors Card**
~222 tok
### **4.3 Other Contractors Card**
* The contractor can only see other contractors who are assigned to the same event as the contractor is assigned and it will show roles, Avatars, Full Names, and Service specializations.
* No status icons, financial information, or distance information are displayed (agreement, invoice, deliverables, payment)
* **Card Header Section:**
* **Role Name Badge:** Displays the role name and role icon assigned to the contractor (e.g., "Second shooter")
* **Contractor Information Display:**
* **Profile Avatar:**
* Displays the contractor profile photo If no photo is uploaded, it displays the default initials
* **Full Name:** Displays contractor's full name below the avatar
* **Service Specialization:** Displays the contractor's specialization below the name
* Example: "Photographer", "Videographer", "Content Creator"#328
**1\. Module Overview** > **4\. Functional Logic** >
~1 tok
###
#329
**1\. Module Overview** > **4\. Functional Logic** > **4.4 Logged-In Contractor Card Display (Self View)**
~765 tok
### **4.4 Logged-In Contractor Card Display (Self View)**
**Card Header Section:**
* **Role Name Badge:** Displays the role name assigned to the logged-in contractor (e.g., "Lead Shooter")
* **Role Icon:** Icon indicator matching the role type
* **"You" Tag:** A distinct "You" badge or tag is displayed next to the role name
* Tag is visually prominent (e.g., blue badge with white text)
* Clearly identifies this card as the logged-in contractor's own assignment
* Format: "Lead Shooter" with "You" badge adjacent
**Contractor Information Display:**
* **Profile Avatar:** Circular profile image of the logged-in contractor
* Displays the contractor's own profile photo
* If no photo is uploaded, it displays the default avatar or initials (i.e., John Doe - JD)
* **Full Name:** Displays contractor's full name below the avatar
* **Service Specialization:** Displays the contractor's specialization below the avatar
* Example: "Photographer"
* Displayed in smaller, lighter text (name may be omitted since "You" tag identifies the user)
**Status Icons Section:**
* Four status icons are displayed in a horizontal row below the specialization
* Icons provide visual progress tracking for the contractor's service obligations
* Icon States: Empty (not completed), Filled (completed), Partially Filled (in progress - for payment only)
**Icon 1 - Service Agreement Signed:**
* **Icon Type:** Document or contract icon with checkmark
* **Empty State:** The Service agreement has not been signed by the contractor
* **Filled State:** Service agreement has been successfully signed
* **Logic:** Icon fills when the contractor signs their service agreement for this event
**Icon 2 - Invoice Uploaded:**
* **Icon Type:** Invoice or receipt document icon
* **Empty State:** No invoice has been uploaded for this event
* **Filled State:** At least one invoice PDF has been uploaded
* **Logic:** Icon fills when contractor uploads their first invoice (additional invoices don't change state)
**Icon 3 - Deliverables Submitted:**
* **Icon Type:** Upload or delivery package icon
* **Empty State:** No deliverables have been submitted
* **Filled State:** At least one deliverable has been submitted via any method (Digital Delivery, Hard Drive, or Other)
* **Logic:** Icon fills when contractor submits deliverables using any of the three delivery methods
**Icon 4 - Payment Received:**
* **Icon Type:** Currency or payment icon
* **Empty State:** No payment has been received from the agency (Amount Paid = $0)
* **Partially Filled State:** Some payment has been received but not the full contractor fee (Amount Paid > $0 but < Event Price)
* **Fully Filled State:** Full contractor fee has been received (Amount Paid = Event Price)
* **Logic:**
* Empty: No payments recorded
* Partially Filled: Any amount greater than $0 but less than total fee
* Fully Filled: Total amount equals or exceeds contractor fee
**Financial Information Display:**#330
**1\. Module Overview** > **4\. Functional Logic** > **4.4 Logged-In Contractor Card Display (Self View)**
~375 tok
* **Event Price Label:** "Event Price" text label
* **Event Price Value:** Displays contractor fee for the service assignment
* Format: "$X,XXX.XX" (e.g., "$1,200.00")
* This is the total amount the contractor is owed for the service
* **Amount Paid Label:** "Amount Paid" text label
* **Amount Paid Value:** Displays total payments received to date from the agency
* Format: "$XXX.XX" (e.g., "$800.00")
* Updates as the agency makes payments
* Shows "$0.00" if no payments have been made
**Distance to Event Venue Display:**
* **Distance Label:** "Xm. to location" or "X miles to location"
* **Distance Value:** Calculated distance from contractor's registered address to event venue
* Format: "12m. to location" or "12 miles to location"
* **Location Display:** Event venue city and country
* Format: "City, Country" (e.g., "Boston, USA")
* **Distance Calculation Logic:**
* Source: Contractor's registered business address (from contractor profile)
* Destination: Event venue address (as set by agency)
* Unit: Miles (or kilometers based on regional settings)
* If contractor has not set a registered address: Display "N/A" or "Address not set"
* If event venue is not set: Display "Venue TBD"
**Card Interaction:**
* The logged-in contractor's card is view-only
* No click actions are available
* Information updates automatically when status changes occur (e.g., agreement signed, payment received)#331
**1\. Module Overview** > **4\. Functional Logic** > **4.5 Unassigned Role Card Display**
~243 tok
### **4.5 Unassigned Role Card Display**
**Card Header Section:**
* **Role Name Badge:** Displays the role name as configured by the agency (e.g., "Drone Operator")
* **Role Icon:** Icon indicator matching the role type (e.g., star or role-specific icon)
* Badge includes colored indicator (e.g., "+" symbol or distinct color to indicate vacancy)
**Placeholder Content:**
* **Avatar Area:** Displays a placeholder icon (e.g., question mark "?" inside a circle)
* **Unassigned Text:** Below the placeholder, displays "Unassigned" text
* Text is displayed in gray or muted color
* No additional information is shown (no specialization, no icons, no financial data)
**Purpose:**
* Indicates that the agency has configured this role for the service but has not yet assigned a contractor
* Provides transparency into the complete team structure and any staffing gaps
* Contractors can see if additional team members are expected to be assigned#332
**1\. Module Overview** > **4\. Functional Logic** > **4.6 Cross-Service Viewing**
~261 tok
### **4.6 Cross-Service Viewing**
**Viewing Other Service Tabs:**
* When a contractor clicks on a service tab they are NOT assigned to:
* Service tab becomes selected (visual indicator updates)
* Content area updates to show role cards for that service
* All assigned contractors for that service are displayed with their basic information (role, name, avatar, specialization)
* No "You" tag appears since the logged-in contractor is not assigned to that service
* All cards display as "Other Contractor" cards (minimal information)
* Unassigned roles are displayed with placeholder cards
**Example Scenario:**
* Logged-in contractor is assigned to Photography as Lead Shooter
* Event also has Videography service with two roles configured
* Contractor clicks on Videography tab:
* Displays Videography contractor cards
* Shows other contractors' basic information
* No detailed progress icons or financial data visible
* Contractor understands Videography team structure#333
**1\. Module Overview** > **4\. Functional Logic** > **4.7 Data Synchronization**
~227 tok
### **4.7 Data Synchronization**
**Real-Time Updates:**
* Status icons on the logged-in contractor's card update automatically when:
* Service agreement is signed (Agreement icon fills)
* Invoice is uploaded (Invoice icon fills)
* Deliverables are submitted (Deliverables icon fills)
* Payment is received from agency (Payment icon updates to partial or full)
**Cross-Module Data Sources:**
* **Service Agreement Status:** Retrieved from Service Agreement module
* **Invoice Upload Status:** Retrieved from Upload Invoice section
* **Deliverables Submission Status:** Retrieved from Upload Deliverables section
* **Payment Status:** Retrieved from Finances module (agency-side payment records)
* **Event Price:** Retrieved from service assignment as configured by agency
* **Distance Calculation:** Retrieved from contractor profile address and event venue address#334
**1\. Module Overview** > **5\. Field Details & Validations**
~10 tok
## **5\. Field Details & Validations**
#335
**1\. Module Overview** > **5\. Field Details & Validations** > **5.1 Service Tabs**
~91 tok
### **5.1 Service Tabs** **Field Name** **Display Format** **Validation Rules** Service Tab Name Text button (e.g., "Photography") Only event-configured services displayed Tab Selection Indicator Underline, bold, or background highlight One tab selected at a time Auto-Selected Tab Service contractor is assigned to Defaults to assigned service on load
#336
**1\. Module Overview** > **5\. Field Details & Validations** > **5.2 Role Badge**
~81 tok
### **5.2 Role Badge** **Field Name** **Display Format** **Validation Rules** Role Name Text with background badge (e.g., "Lead Shooter ★") As configured by agency Role Icon Small icon next to role name Matches role type "You" Tag Badge with "You" text and user icon Displayed only for logged-in contractor's card
#337
**1\. Module Overview** > **5\. Field Details & Validations** > **5.3 Contractor Information (Other Contractors)**
~89 tok
### **5.3 Contractor Information (Other Contractors)** **Field Name** **Display Format** **Validation Rules** Profile Avatar Circular image Default placeholder if no image uploaded Full Name "First Name Last Name" Retrieved from contractor profile Service Specialization Text below name (e.g., "Photographer") Retrieved from contractor profile
#338
**1\. Module Overview** > **5\. Field Details & Validations** > **5.4 Contractor Information (Self - Logged-In Contractor)**
~233 tok
### **5.4 Contractor Information (Self - Logged-In Contractor)** **Field Name** **Display Format** **Validation Rules** Profile Avatar Circular image Default placeholder if no image is uploaded Service Specialization Text below avatar (e.g., "Photographer") Retrieved from contractor profile Agreement Icon Document icon (Empty/Filled) Fills when the agreement is signed Invoice Icon Invoice icon (Empty/Filled) Fills when at least one invoice is uploaded Deliverables Icon Upload icon (Empty/Filled) Fills when any deliverable is submitted Payment Icon Currency icon (Empty/Partial/Full) Empty: $0, Partial: >$0 <full, Full: =full amount Event Price "$X,XXX.XX" Contractor fee as set by the agency Amount Paid "$XXX.XX" Total payments received to date Distance "Xm. to location." Calculated from contractor's address to the venue Location "City, Country" (e.g., "Boston, USA") Event venue location
#339
**1\. Module Overview** > **5\. Field Details & Validations** > **5.5 Unassigned Role Card**
~87 tok
### **5.5 Unassigned Role Card** **Field Name** **Display Format** **Validation Rules** Role Name Badge Text with badge (e.g., "Drone Operator +") As configured by the agency Placeholder Icon Question mark "?" in circle Always displayed for unassigned roles Unassigned Text "Unassigned" in gray text Always displayed for unassigned roles
#340
**1\. Module Overview** > **6\. Error Message Handling**
~234 tok
## **6\. Error Message Handling** **Field/Action** **Validation Scenario** **Error Message** Service Tab Load No services configured for event "No services configured for this event." Service Tab Load Service data retrieval fails "Unable to load service information. Please try again." Contractor Data Load Failed to retrieve contractor information "Unable to load contractor details. Please refresh the page." Distance Calculation Contractor address not set Display "N/A" instead of distance Distance Calculation Event venue not set Display "Venue TBD" instead of the location Distance Calculation Calculation service unavailable Display "Distance unavailable." Payment Status Payment data retrieval fails Display empty icon as fallback Profile Avatar Image fails to load Display default avatar placeholder General System Network connection lost "Connection lost. Please check your internet connection."
#341
**1\. Module Overview** > **7\. Edge Cases**
~371 tok
## **7\. Edge Cases** **Scenario** **Expected Behavior** The event has only one service configured Only one service tab is displayed; the tab is auto-selected All roles in a service are unassigned All cards display as "Unassigned" placeholders Contractor's registered address is not set Distance field displays "N/A" or "Address not set." The event venue address is not set Location displays "Venue TBD." Contractor receives overpayment (Amount Paid > Event Price) Payment icon displays as fully filled; Amount Paid shows the actual amount received Agency removes contractor from event while viewing tab Display message "You no longer have access to this event" and redirect Agency adds new role to service after contractor loads page New role appears on the next page refresh The agency removes a role from service after the contractor loads the page Role card no longer displays on next page refresh Multiple contractors have the same name Each displays their unique profile avatar and role differentiation The contractor profile photo is a very large file System resizes/compresses for display in the avatar circle Service has more than 10 roles configured All role cards display; layout adjusts to accommodate (grid wrapping) Payment status updates while the contractor is viewing the page Icon updates automatically via real-time sync Contractor signs agreement while on the Contractors tab The agreement icon fills immediately upon successful signing
#342
**1\. Module Overview** > **8\. Test Cases**
~11 tok
## **8\. Test Cases** Link - \[To be added\]
#343
**1\. Module Overview** > **9\. Acceptance Criteria**
~745 tok
## **9\. Acceptance Criteria** **Service Tab Display:** * Service tabs display all services configured for the event by the agency * Service tabs are visible regardless of contractor's assignment status * Only event-configured services appear as tabs (non-configured services are hidden) * Service tab auto-selects the service to which the logged-in contractor is assigned on page load **Service Tab Navigation:** * Clicking on a service tab updates the content area to show that service's contractor cards * Tab selection indicator (underline, highlight) moves to reflect current selection * Contractors can freely navigate between all service tabs **Role Card Display:** * All roles configured by the agency for the selected service display as individual cards * Role cards show the role name badge with an icon * Assigned contractor cards display contractor information * Unassigned roles display a placeholder card with a "?" icon and "Unassigned" text **Other Contractor Cards:** * Display role name badge, profile avatar, full name, and service specialization only * No status icons are displayed * No financial information is displayed * No distance information is displayed * Cards are view-only with no click actions **Logged-In Contractor Card (Self View):** * Displays "You" tag badge prominently next to role name * Shows profile avatar and service specialization * Displays four status icons: Agreement, Invoice, Deliverables, Payment * The agreement icon fills when the service agreement is signed * The invoice icon fills when at least one invoice is uploaded * Deliverables icon fills when any deliverable is submitted (Digital, Hard Drive, or Other) * The payment icon shows empty (no payment), partially filled (some payment), or fully filled (full payment) * Displays Event Price (contractor fee) and Amount Paid (payments received to date) * Shows the distance from the contractor's registered address to the event venue * Displays event venue, city and country * The card is view-only with no click actions **Distance Calculation:** * Distance calculated from the contractor's registered business address to the event venue * Displays in miles (or regional unit) * Shows "N/A" if the contractor address is not set * Shows "Venue TBD" if the event venue is not configured **Data Accuracy:** * Status icons reflect real-time data from respective modules * Financial information matches the agency-configured contractor fee * Amount Paid updates as the agency processes payments * All contractor information was retrieved from verified profile data **Cross-Service Viewing:** * Contractors can view other service tabs to see the team structure * Other services display all assigned contractors with basic information * Unassigned roles in other services display placeholder cards * Privacy is maintained by showing only professional information for other contractors
#344
**1\. Module Overview** > **10\. Dependencies**
~351 tok
## **10\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** User Management System Data Dependency Cannot validate contractor identity, unable to determine which card gets "You" tag Contractor Profile System Data Dependency Cannot retrieve contractor names, avatars, specializations, or registered addresses Event Service Configuration Data Dependency Cannot determine which service tabs to display or which roles exist Service Agreement Module Status Dependency Cannot determine agreement signing status; icon remains in empty state Invoice Upload System Status Dependency Cannot determine invoice upload status; icon remains in empty state Deliverables Submission System Status Dependency Cannot determine deliverables submission status; icon remains in empty state Finances/Payment Module Status Dependency Cannot retrieve payment data; payment icon remains empty, Amount Paid shows $0 Geolocation/Distance Service Feature Dependency Distance calculation fails; displays "Distance unavailable." File Storage System Data Dependency Profile avatars fail to load; display default placeholder Event Venue Data Data Dependency Location information unavailable; displays "Venue TBD." **11\. References** Link - [click here](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=10517-38484&t=P4kOYrtfKXAaYrmP-0) ☑️ Finances Tab
#345
**Finances Tab - Event Details Screen (Contractor Portal)**
~15 tok
# **Finances Tab - Event Details Screen (Contractor Portal)**
#346
**Finances Tab - Event Details Screen (Contractor Portal)** > **1\. Module Overview**
~151 tok
## **1\. Module Overview** * **Module Name:** Finances Tab (Event Details Screen - Contractor Portal) * **Purpose:** Provide contractors with comprehensive financial visibility for their event assignments, including total event fee, pending payments, received payments, invoice creation capabilities, and complete payment history tracking * **Business Goal:** Enable contractors to manage their event-related finances efficiently, track payment status from agencies, create and submit invoices, and maintain clear visibility into all financial transactions associated with their event assignments
#347
**Finances Tab - Event Details Screen (Contractor Portal)** > **2\. User Roles & Permissions**
~81 tok
## **2\. User Roles & Permissions** **Role** **Description** **Key Permissions** Contractor Contractors assigned to specific events by agencies View total event price (contractor fee), view pending and received payment amounts, create new invoices, view invoice and payment history, and preview and download invoices
#348
**Finances Tab - Event Details Screen (Contractor Portal)** > **3\. User Flow**
~216 tok
## **3\. User Flow** **Navigation Path:** Contractor Portal > Event Details Screen > Finances Tab **Step-by-Step Flow:** **Step 1:** Contractor accesses Event Details Screen from Event Listing, Dashboard, or Calendar Module **Step 2:** Contractor clicks on the "Finances" tab from the tab navigation (Details, Contractors, Finances, Files) **Step 3:** System loads the Finances tab, displaying the Payments section header **Step 4:** Payment summary card displays Total Event Price, Pending Amount, and Payments Received **Step 5:** The Contractor can click the "Create Invoice" button to open the invoice creation pop-up **Step 6:** The Invoice and payment history table displays all invoices (created and uploaded) with status, dates, amounts, and actions **Step 7:** The Contractor can use the action menu to preview or download an individual invoice
#349
**Finances Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#350
**Finances Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.1 Finances Tab Overview**
~117 tok
### **4.1 Finances Tab Overview** **Tab Header:** * Tab is labeled "Finances" in the tab navigation bar * When selected, the tab is visually highlighted (underline or bold indicator) * Tab content displays below the tab navigation area **Section Header:** * Main section heading displays "Payments" at the top of the tab content * Heading is displayed in bold, larger font size * Provides context that this section focuses on payment-related information
#351
**Finances Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.2 Payment Summary Card**
~455 tok
### **4.2 Payment Summary Card**
**Card Layout:**
* The payment summary is displayed within a bordered card container
* The card has a slight shadow or border to distinguish it from the background
* All financial summary information is contained within this card
**Total Event Price Display:**
* **Label:** "Total Event Price" displayed as a section heading within the card
* **Value:** amount displayed below the label (e.g., "$14,200")
* **Data Source:** Contractor fee for the event service as set by the agency during contractor assignment
* **Logic:** Retrieves the contractor's assigned fee for their specific service and role in the event
* **Example:** If the contractor is assigned as Lead Shooter for Photography service at $1,200, displays "$1,200"
**Pending Amount Display:**
* **Label:** "Pending Amount" displayed on the left side
* **Value:** Dollar amount displayed on the right side of the same row
* Format: "X,XXX"or"X,XXX" or " X,XXX"or"X,XXX.XX" (e.g., "$7,100")
* **Calculation Logic:**
* Pending Amount = Total Event Price - Payments Received
* Example: $14,200 (Total) - $11,800 (Received) = $2,400 (Pending)
* **Dynamic Update:** Updates automatically when the agency makes payments
* **Zero State:** If fully paid, displays "$0" or "$0.00."
**Payments Received Display:**
* **Label:** "Payments Received" displayed on the left side
* **Value:** Amount displayed on the right side of the same row (e.g., "$11,800")
* **Data Source:** Sum of all payments marked as "Received" by the agency
* **Calculation Logic:** Aggregates all payment amounts where the status is "Received."
* **Dynamic Update:** Updates in real-time when the agency processes and marks payments as paid
* **Zero State:** If no payments received, displays "$0.00"#352
**Finances Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.3 Create Invoice Button**
~247 tok
### **4.3 Create Invoice Button** **Button Display:** * **Button Text:** "Create Invoice" * **Button Style:** Primary action button with yellow/orange brand color, full width within the card * **Button Position:** Below the Payments Received row, prominently positioned * **Button State:** Always enabled, allowing contractors to create invoices at any time **Button Click Action:** * Opens a pop-up modal for invoice creation * Invoice creation functionality is planned for the next phase * Pop-up will contain invoice creation form fields (to be defined in future phase) * A contractor can create multiple invoices for the same event * No validation restricts total invoice amounts against the Total Event Price **Post-Creation Behavior:** * After successful invoice creation, the new invoice appears in the invoice table below * The invoice is assigned "Issued" status * Payment summary amounts remain unchanged until the agency marks the invoice as paid
#353
**Finances Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** >
~1 tok
###
#354
**Finances Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.4 Invoice and Payment History Table**
~672 tok
### **4.4 Invoice and Payment History Table**
**Table Position:**
* Displayed below the Payment Summary Card
* Full width of the Finances tab content area
* Separated from the summary card by spacing or a divider
**Table Purpose:**
* Displays the complete history of all invoices associated with the event
* Includes invoices created via the "Create Invoice" button
* Includes invoices uploaded as PDFs from the Details tab
* Provides payment tracking and invoice management
**Table Column Structure:**
Column 1 - Status:
* **Header:** "Status"
* **Display:** Color-coded status badge
* **Possible Values:**
* **"Issued"** - Orange/yellow badge indicating invoice created, but payment not yet received
* **"Received"** - Green badge indicating payment has been received from the agency
* **Badge Styling:** Rounded badge with contrasting text color for visibility
Column 2 - Payment Date:
* **Header:** "Payment Date"
* **Logic Based on Status:**
* **For "Received" status:** Displays the date and time when the payment was marked as paid by the agency
* **For "Issued" status:** Displays "--" (double dash) indicating no payment date yet
* **Data Source:** Timestamp recorded when the agency marks the invoice as paid in their portal
Column 3 - Due Date:
* **Header:** "Due Date"
* **Display Format:** "Mon DD, YYYY" (e.g., "Jan 23, 2025")
* **Data Source:**
* For created invoices: Due date set during invoice creation
* For uploaded invoices: Due date entered by contractor during upload in the Details tab
* **Logic:** Displays the expected payment deadline as specified by the contractor
Column 4 - Amount:
* **Header:** "Amount"
* **Data Source:**
* For created invoices: Amount specified during invoice creation
* For uploaded invoices: Amount manually entered by contractor during upload
* **No Validation:** Amount can be any value; no restriction based on Total Event Price or Pending Amount
Column 5 - Action:
* **Header:** "Action"
* **Display:** Kebab menu for each row
* **Click Action:** Opens dropdown menu with action options
**Action Menu Options:**
Preview Option:
* **Menu Item:** "Preview"
* **Action:** Opens the invoice document in a preview modal or viewer
* **For Created Invoices:** Displays system-generated invoice format
* **For Uploaded Invoices:** Displays the uploaded PDF in the viewer
Download Option:
* **Menu Item:** "Download"
* **Action:** Downloads the invoice file to the contractor's local system
* **File Format:** PDF format
* **File Naming:** Invoice file name or system-generated name with event/date reference#355
**Finances Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.5 Table Data Display Logic**
~270 tok
### **4.5 Table Data Display Logic** **Data Population:** * The table automatically populates with all invoices associated with the selected event * Includes both system-created invoices (via Create Invoice) and uploaded invoices (via Details tab) * All invoices display in a unified format regardless of creation method **Table Sorting:** * Each column header (except Status & Action) includes a sort arrow * Clicking the column header sorts the table by that column * Default sort: Most recent first (by Payment Date or Due Date) * Sort order toggles between ascending and descending on repeated clicks **Empty State:** * If no invoices exist for the event, the table displays an empty state message * Message: "No invoices found" or "No invoices created yet." * The Create Invoice button remains available above the empty table **Table Scrolling:** * If multiple invoices exist, the table supports vertical scrolling * Table headers remain fixed during scroll for reference * Pagination may apply if the invoice count exceeds the display limit
#356
**Finances Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.6 Invoice Upload Integration (From Details Tab)**
~276 tok
### **4.6 Invoice Upload Integration (From Details Tab)** **Uploaded Invoice Display:** * Invoices uploaded via the "Upload Invoice" section in the Details tab automatically appear in the Finances table * Integration is seamless - no manual sync required * Uploaded invoices display with same column structure as created invoices **Uploaded Invoice Data Mapping:** * **Status:** Initially set to "Issued" upon upload * **Payment Date:** Displays "--" until the agency marks it as paid * **Due Date:** Displays date entered by contractor during upload process * **Amount:** Displays the amount manually entered by the contractor during upload * **Action:** Same preview and download options available **Status Update Flow:** * When the agency views the uploaded invoice and processes the payment * The agency marks the invoice as paid in their portal * Status changes from "Issued" to "Received" * Payment Date populates with the timestamp of the payment marking * Payments amount received in the summary card increases accordingly * Pending Amount decreases accordingly
#357
**Finances Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.7 Real-Time Data Synchronization**
~228 tok
### **4.7 Real-Time Data Synchronization**
**Automatic Updates:**
* Payment summary card updates automatically when:
* The agency processes a payment and marks the invoice as paid
* Payments Received increase by the payment amount
* Pending Amount decreases by the payment amount
* Invoice status changes from "Issued" to "Received"
* The Payment Date populates for the paid invoice
**Cross-Module Sync:**
* Finances tab data syncs with:
* Details tab - Upload Invoice section
* Agency Portal - Finances Module > Contractor Invoices
* Agency Portal - Payment processing system
* Contractor Portal - Dashboard payment widgets (if applicable)
**No Page Refresh Required:**
* Updates reflect in real-time or near real-time
* Contractor sees the current payment status without a manual refresh
* Status badges update immediately upon agency action#358
**Finances Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.8 Financial Calculations**
~207 tok
### **4.8 Financial Calculations** **Pending Amount Calculation:** Pending Amount = Total Event Price - Payments Received * Always reflects the accurate outstanding balance * Updates dynamically with each payment received * Cannot be negative (if overpayment occurs, displays $0 for pending) **Payments Received Calculation:** Payments Received = Sum of all invoice amounts with "Received" status * Aggregates all completed payments * Independent of individual invoice amounts * Reflects actual payments processed by the agency **Invoice Amount Independence:** * Individual invoice amounts are independent of the Total Event Price * Contractors can create multiple invoices of varying amounts * The total of all invoices can exceed the Total Event Price * The system does not enforce balance matching
#359
**Finances Tab - Event Details Screen (Contractor Portal)** > **5\. Field Details & Validations**
~10 tok
## **5\. Field Details & Validations**
#360
**Finances Tab - Event Details Screen (Contractor Portal)** > **5\. Field Details & Validations** > **5.1 Payment Summary Card**
~124 tok
### **5.1 Payment Summary Card** **Field Name** **Validation Rules** Total Event Price Label Static label, always displayed Total Event Price Value Retrieved from agency assignment, read-only Pending Amount Label Static label, always displayed Pending Amount Value Calculated: Total - Received, minimum $0 Payments Received Label Static label, always displayed Payments Received Value Sum of received payments, minimum $0 Create Invoice Button Always enabled, opens pop-up on click
#361
**Finances Tab - Event Details Screen (Contractor Portal)** > **5\. Field Details & Validations** > **5.2 Invoice Table Headers**
~48 tok
### **5.2 Invoice Table Headers** **Field Name** **Validation Rules** Status Header Sortable column Payment Date Header Due Date Header Amount Header Action Header Non-sortable column
#362
**Finances Tab - Event Details Screen (Contractor Portal)** > **5\. Field Details & Validations** >
~1 tok
###
#363
**Finances Tab - Event Details Screen (Contractor Portal)** > **5\. Field Details & Validations** >
~1 tok
###
#364
**Finances Tab - Event Details Screen (Contractor Portal)** > **5\. Field Details & Validations** > **5.3 Invoice Table Row Data**
~119 tok
### **5.3 Invoice Table Row Data** **Field Name** **Display Format** **Validation Rules** Status Badge "Issued" (orange) or "Received" (green) Only two possible values Payment Date "Mon DD, YYYY | HH:MM AM/PM" or "--" Date/time for Received, "--" for Issued Due Date "Mon DD, YYYY" Date set by contractor during creation/upload Amount "$XXX.XX" Numeric value, no negative amounts Action Menu Three-dot icon (⋮) Opens dropdown with Preview and Download options
#365
**Finances Tab - Event Details Screen (Contractor Portal)** > **5\. Field Details & Validations** > **5.4 Action Menu Options**
~52 tok
### **5.4 Action Menu Options** **Field Name** **Display Format** **Validation Rules** Preview Text menu item Opens invoice in viewer/modal Download Text menu item Downloads PDF to the local system
#366
**Finances Tab - Event Details Screen (Contractor Portal)** > **6\. Error Message Handling**
~259 tok
## **6\. Error Message Handling** **Field/Action** **Validation Scenario** **Error Message** Payment Summary Load Failed to retrieve contractor fee data "Unable to load payment information. Please try again." Payment Summary Load Failed to calculate pending/received amounts "Unable to calculate payment summary. Please refresh the page." Create Invoice Button Pop-up fails to open "Unable to open invoice creation. Please try again." Invoice Table Load Failed to retrieve invoice history "Unable to load invoice history. Please refresh the page." Preview Action The invoice document fails to load "Unable to preview invoice. Please try again." Download Action Download fails "Unable to download invoice. Please check your connection." Table Sorting Sort operation fails "Unable to sort data. Please try again." Real-Time Sync Payment update sync fails "Payment information may be outdated. Please refresh." General System Network connection lost "Connection lost. Please check your internet connection."
#367
**Finances Tab - Event Details Screen (Contractor Portal)** > **7\. Edge Cases**
~453 tok
## **7\. Edge Cases** **Scenario** **Expected Behavior** Total Event Price is $0 (free service) Display "$0" for Total Event Price; Pending Amount shows "$0"; Payments Received shows "$0" The agency pays more than the Total Event Price (overpayment) Pending Amount displays "$0"; Payments Received shows the actual total amount received No invoices exist for the event Table displays empty state: "No invoices created yet"; Create Invoice button remains functional Contractor creates invoice exceeding Pending Amount The invoice is created without validation; no restriction on invoice amounts Multiple invoices created for the same event All invoices displayed in a table, each with individual status tracking The agency marks the invoice as paid while the contractor is viewing the page Status updates to "Received"; Payment Date populates; summary card amounts update automatically Invoice uploaded from the Details tab Appears in the Finances table with "Issued" status; integrated seamlessly Very long invoice history (50+ invoices) Table implements pagination or infinite scroll; performance is maintained Contractor fee changes after initial assignment Total Event Price updates to reflect the new amount; recalculates the pending amount The agency reverses/cancels a payment Status reverts to "Issued"; Payment Date shows "--"; summary amounts recalculate Due Date is in the past for "Issued" invoice Displays due date as-is; no automatic overdue status (only "Issued" or "Received") Currency format differences All amounts display in consistent currency format (USD assumed) Contractor creates invoice before event date Invoice creation allowed; no date restrictions Agency removes contractor from event Display message "You no longer have access to this event" and redirect
#368
**Finances Tab - Event Details Screen (Contractor Portal)** > **8\. Test Cases**
~8 tok
## **8\. Test Cases** * Link
#369
**Finances Tab - Event Details Screen (Contractor Portal)** > **9\. Acceptance Criteria**
~782 tok
## **9\. Acceptance Criteria** **Finances Tab Display:** * The Finances tab is accessible from tab navigation (Details, Contractors, Finances, Files) * Tab selection indicator highlights the Finances tab when selected * Section header "Payments" displays at the top of the tab content **Payment Summary Card:** * Total Event Price displays the contractor fee for the assigned service and role * The Total Event Price amount is prominent with a large, bold font * Pending Amount displays calculated balance (Total - Received) * Payments Received displays the sum of all received payments * All amounts display in consistent currency format ($X, XXX.XX) * Summary card updates automatically when the agency processes payments **Create Invoice Button:** * "Create Invoice" button displays prominently within the payment summary card * The button is always enabled regardless of the payment status * Clicking the button opens the invoice creation pop-up (functionality in the next phase) * Contractors can create multiple invoices without restriction * No validation prevents invoice amounts from exceeding the Total Event Price **Invoice and Payment History Table:** * The table below displays the payment summary card * Table includes columns: Status, Payment Date, Due Date, Amount, Action * All columns (except Action) are sortable with sort arrows * The table displays both created invoices and uploaded invoices from the Details tab **Status Column:** * Displays a color-coded badge for each invoice * "Issued" status displays in an orange/yellow badge (unpaid) * "Received" status displays in green badge (paid) **Payment Date Column:** * For "Received" status: Displays date and time of payment (Mon DD, YYYY | HH:MM AM/PM) * For "Issued" status: Displays "--" (double dash) indicating no payment yet * Date/time recorded when the agency marks the invoice as paid **Due Date Column:** * Displays invoice due date as set by contractor (Mon DD, YYYY) * Due date sourced from invoice creation or upload process * No automatic overdue status calculation **Amount Column:** * Displays invoice amount in currency format ($XXX.XX) * Amount manually entered by the contractor during creation or upload * No validation against Total Event Price or Pending Amount **Action Menu:** * Three-dot menu icon (⋮) displays for each invoice row * Clicking the icon opens a dropdown with options * "Preview" option opens the invoice document in the viewer * "Download" option downloads the invoice PDF to the local system **Data Integration:** * Invoices uploaded from the Details tab appear automatically in the Finances table * Status updates reflect agency actions in real-time * Payment amounts sync with agency payment processing * No manual refresh required for updates **Financial Calculations:** * Pending Amount = Total Event Price - Payments Received * Payments Received = Sum of all invoices with "Received" status * Calculations update automatically with each payment * Minimum values are $0 (no negative amounts displayed)
#370
**Finances Tab - Event Details Screen (Contractor Portal)** > **10\. Dependencies**
~246 tok
## **10\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** Event Service Configuration Data Dependency Cannot retrieve Total Event Price (contractor fee); summary card incomplete Invoice Creation System Feature Dependency The Create Invoice button opens an empty pop-up; invoice creation fails Invoice Upload System (Details Tab) Data Dependency Uploaded invoices are not integrated into the Finances table Agency Payment Processing Data Dependency Invoice statuses remain "Issued"; Payment Date never populates; Payments Received stays $0 File Storage System Data Dependency Invoice preview and download fail; documents are inaccessible Real-Time Sync Service Feature Dependency Payment updates delayed; manual refresh required Database Connection Critical Dependency All financial data unavailable; page fails to load Authentication System Security Dependency Cannot verify contractor identity; unauthorized access possible
#371
**Finances Tab - Event Details Screen (Contractor Portal)** > **11\. References**
~47 tok
## **11\. References** * **Figma Link -** [**Click Here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=12036-63810&t=0ByRl7J146jJn5dx-0) ☑️ Files/Documents Tab
#372
**Files/Documents Tab - Event Details Screen (Contractor Portal)**
~17 tok
# **Files/Documents Tab - Event Details Screen (Contractor Portal)**
#373
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **1\. Module Overview**
~162 tok
## **1\. Module Overview** * **Module Name:** Files/Documents Tab (Event Details Screen - Contractor Portal) * **Purpose:** Provide contractors with centralized access to all event-related documents, including agency-uploaded documents (service agreements, questionnaires, surveys), contractor-uploaded invoices, and personal file uploads, with capabilities to view, download, and manage documents * **Business Goal:** Enable contractors to access all necessary event documentation in one location, track document status, upload supporting files for agency collaboration, and maintain organized document management for their event assignments
#374
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **2\. User Roles & Permissions**
~81 tok
## **2\. User Roles & Permissions** **Role** **Description** **Key Permissions** Contractor Contractors assigned to specific events by agencies View all event-related documents (agency-uploaded and self-uploaded), upload new files, download documents, preview documents, remove self-uploaded files, and unpaid invoices
#375
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **3\. User Flow**
~238 tok
## **3\. User Flow** **Navigation Path:** Contractor Portal > Event Details Screen > Files/Documents Tab **Step-by-Step Flow:** **Step 1:** Contractor accesses Event Details Screen from Event Listing, Dashboard, or Calendar Module **Step 2:** Contractor clicks on the "Files/Documents" tab from the tab navigation **Step 3:** System loads the Files/Documents tab with "Documents" section header and "+" upload button **Step 4:** Two sub-tabs are displayed: "Documents & Forms" (default selected) and "Uploaded Files" **Step 5:** The Documents & Forms tab displays a table with all agency documents and contractor invoices **Step 6:** The Contractor can click the "+" button to upload new files, which appear in the Uploaded Files tab **Step 7:** The Contractor can use the action menu to preview, download, or remove documents based on permissions **Step 8:** The Contractor can switch between sub-tabs to view different document categories
#376
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#377
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.1 Empty State Logic:**
~8 tok
### **4.1 Empty State Logic:**
#378
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > If no agency documents and no contractor invoice or document exist for the event:
~21 tok
### If no agency documents and no contractor invoice or document exist for the event:
#379
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > Display empty state message: "No data found."
~12 tok
### Display empty state message: "No data found."
#380
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.2 Section Header Elements**
~88 tok
### **4.2 Section Header Elements** **Documents Heading:** * Displays "Documents" as the main section title * "+" button allows contractors to upload new files * "Latest" dropdown sorts all documents by Created date in descending order (newest first) and an “Oldest” option that sorts documents by Created Date in ascending order (oldest first).
#381
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.3 Sub-Tab Structure**
~80 tok
### **4.3 Sub-Tab Structure** **Documents & Forms Tab (Default):** * Automatically selected when the Files/Documents tab loads * Displays all agency-uploaded documents and contractor-uploaded invoices **Uploaded Files Tab:** * Displays files uploaded by the contractor & the agency via the manually "+" button
#382
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** >
~1 tok
###
#383
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.4 File Upload Functionality (+ Button)**
~146 tok
### **4.4 File Upload Functionality (+ Button)**
**Upload Pop-up:**
* Clicking the "+" button opens a pop-up for file upload
* Contractor can select files from their local system with the validations. **Refer** \- [**Click here**](#daqyvrtiw8i3)
**Post-Upload Impact:**
* Successfully uploaded files appear in the "Uploaded Files" sub-tab in the Files/Documents Tab in the contractor portal
* Files automatically sync to the **Agency Portal:**
* Event Details > Files/Documents Tab > Uploaded Files section
* Project Details > Activity Tab (logged as activity)#384
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.5 Documents & Forms Table Logic**
~172 tok
### **4.5 Documents & Forms Table Logic** **Table Columns:** * **Name:** Document icon, document name, and event name (sub-text) * **Type:** Document category (Contract, Invoice, Survey, Questionnaire, Doc) * **Created:** Date (DD Mon YYYY) and time (HH:MM AM/PM) when the document was uploaded **"New" Badge Logic:** * "New" badge displays next to document name * The badge appears for documents uploaded within the last 24 hours * Automatically disappears after a 24-hour period **Document Sources:** * Agency-uploaded documents: Service agreements, questionnaires * Contractor-uploaded invoices: Invoices submitted, Any other documents uploaded using the + button
#385
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.6 Uploaded Files Table Logic**
~84 tok
### **4.6 Uploaded Files Table Logic** **Table Columns:** * **Name:** File icon and original file name * **Type:** File extension (PDF, Doc, XLS, XLSX) * **Created:** Date and time when the contractor uploaded the file **"New" Badge Logic:** * Same as Documents & Forms - displays for files uploaded within the last 24 hours
#386
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.7 Action Menu Logic**
~233 tok
### **4.7 Action Menu Logic**
**Available for All Documents/Files:**
* **Preview:** Opens document in read-only mode
* **Download:** Downloads file to contractor's local system
**Remove Option - Conditional Logic:**
* **For Contractor-Uploaded Invoices:**
* Displayed only if invoice status is NOT "Paid" or "Received."
* Hidden once the agency marks the invoice as paid
* Allows the contractor to remove incorrectly uploaded invoices
* **For Agency-Uploaded Documents:**
* NOT displayed - contractors cannot remove agency uploaded documents
* **For Contractor-Uploaded Files (via + button):**
* Always displayed
* Contractor can remove their own uploaded files at any time
* Removal syncs to the Agency Portal (file removed from agency view as well)
**Remove Confirmation:**
* Confirmation prompt displays before deletion: "Are you sure you want to remove this document?"#387
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.8 Sort Functionality (Latest Dropdown)**
~73 tok
### **4.8 Sort Functionality (Latest Dropdown)** **Default Behavior:** * Sorts documents by Created date in descending order (newest first) * Applies to currently selected sub-tab (Documents & Forms or Uploaded Files) * Sort preference is maintained while the user remains on the tab
#388
**Files/Documents Tab - Event Details Screen (Contractor Portal)** >
~1 tok
##
#389
**Files/Documents Tab - Event Details Screen (Contractor Portal)** >
~1 tok
##
#390
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **5\. Field Details & Validations**
~10 tok
## **5\. Field Details & Validations**
#391
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **5\. Field Details & Validations** > **5.1 File Upload Validation**
~50 tok
### **5.1 File Upload Validation** **Field Name** **Validation Rules** Allowed File Types PDF, DOC, DOCX, XLS, XLSX only Maximum File Size 15 MB per file File Name Original file name preserved
#392
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **5\. Field Details & Validations** > **5.2 Documents & Forms Table**
~103 tok
### **5.2 Documents & Forms Table** **Field Name** **Display Format** **Validation Rules** Name Document icon + Name + Event name (sub-text) "New" badge if created within 24 hours Type Contract, Invoice, Survey, Questionnaire, Doc Based on the document category Created DD Mon YYYY + HH:MM AM/PM Date and time on separate lines Action Menu Three-dot icon (⋮) Preview, Download, Remove (conditional)
#393
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **5\. Field Details & Validations** > **5.3 Uploaded Files Table**
~82 tok
### **5.3 Uploaded Files Table** **Field Name** **Display Format** **Validation Rules** Name File icon + File name "New" badge if uploaded within 24 hours Type PDF, Doc, XLS File extension/type Created DD Mon YYYY + HH:MM AM/PM Date and time on separate lines Action Kebab Menu Kebab menu Preview, Download, Remove
#394
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **6\. Error Message Handling**
~200 tok
## **6\. Error Message Handling** **Field/Action** **Validation Scenario** **Error Message** File Upload File size exceeds 15 MB "File size cannot exceed 15 MB limit." File Upload File format not supported "Only PDF, DOC, XLS, and XLSX files are allowed." File Upload Upload fails due to a network error "Unable to upload file. Please check your connection and try again." Document Load Failed to retrieve document list "Unable to load documents. Please refresh the page." Preview Action Document preview fails to load "Unable to preview document. Please try again." Download Action Download fails "Something went wrong." Remove Action The remove operation fails "Unable to remove document. Please try again." General System Network connection lost "Something went wrong."
#395
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **7\. Edge Cases**
~299 tok
## **7\. Edge Cases** **Scenario** **Expected Behavior** No documents exist in Documents & Forms Display empty state: "No documents available for this event." No files exist in Uploaded Files Display empty state: "No files uploaded yet. Click + to upload files." The agency removes the document while the contractor is viewing Document disappears from the list on the next refresh Contractor uploads a file with the same name as the existing file Both files were displayed, differentiated by the Created timestamp The contractor tries to remove the paid invoice "Remove" option not displayed in action menu The agency adds a document while the contractor is on the tab Document appears on the next page, refresh or real-time sync File upload interrupted mid-way Error message displayed; file not added to the list Very long file name File name truncated with ellipsis; full name shown on hover/preview Multiple files are uploaded simultaneously All files processed with individual timestamps Contractor removes file File removed from the contractor and agency portal views Agency updates/replaces document New version appears with updated Created timestamp and "New" badge
#396
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **8\. Test Cases**
~9 tok
## **8\. Test Cases** * **Link -**
#397
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **9\. Acceptance Criteria**
~282 tok
## **9\. Acceptance Criteria** * The Files/Documents tab is accessible from the main tab navigation * Two sub-tabs display: "Documents & Forms" (default) and "Uploaded Files." * "+" button opens file upload pop-up accepting PDF, DOC, DOCX, XLS, XLSX files up to 15 MB * Uploaded files appear in the "Uploaded Files" sub-tab and sync to the Agency Portal * The Documents & Forms table displays agency documents (service agreements, questionnaires, surveys) and contractor invoices * Table columns include: Name (with icon and "New" badge for <24 hours), Type, Created (date and time) * "New" badge automatically disappears after a 24-hour period * The action menu provides Preview and Download options for all documents * Remove the option available for contractor-uploaded files and unpaid invoices only * Agency-uploaded documents cannot be removed by the contractor * Paid invoices cannot be removed by the contractor * "Latest" dropdown sorts documents by Created date (newest first) * File uploads sync to Agency Portal: Event Details Files/Documents, Project Activity Tab, Project Files/Documents
#398
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **10\. Dependencies**
~178 tok
## **10\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** Document Storage System Critical Dependency Cannot load, upload, preview, or download documents Agency Document Management Data Dependency Agency-uploaded documents are not visible Invoice Upload System (Details Tab) Data Dependency Invoices not appearing in the Documents & Forms table File Upload Service Feature Dependency "+" button upload functionality fails Real-Time Sync Service Feature Dependency Uploads are not reflecting in the Agency Portal Preview/Viewer Service Feature Dependency Document preview fails Authentication System Security Dependency Cannot verify contractor permissions
#399
**Files/Documents Tab - Event Details Screen (Contractor Portal)** > **11\. References**
~45 tok
## **11\. References** * **Figma Link** \- [**Click Here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=9089-177575&t=0ByRl7J146jJn5dx-0) ☑️ Notes Tab
#400
**Notes Tab - Event Details Screen (Contractor Portal)**
~15 tok
# **Notes Tab - Event Details Screen (Contractor Portal)**
#401
**Notes Tab - Event Details Screen (Contractor Portal)** > **1\. Module Overview**
~166 tok
## **1\. Module Overview** **Module Name:** Notes Tab (Event Details Screen - Contractor Portal) **Purpose:** Enable contractors to view, create, and manage public and private notes associated with their assigned events **Business Goal:** Provide contractors with a centralized note-taking system for event-related documentation while maintaining visibility controls between contractor private notes and public notes shared with the agency **Reference Document:** For complete Notes Module functionality, refer to [**Click Here**](https://docs.google.com/document/d/1JRbhA6wMQ6BtUWKlw63paM1s_sgaDy6PrjQHLw1suLk/edit?tab=t.xrj9jtmpldgv#bookmark=id.uolu37ze2m36)
#402
**Notes Tab - Event Details Screen (Contractor Portal)** > **2\. User Roles & Permissions**
~78 tok
## **2\. User Roles & Permissions** **Role** **Description** **Key Permissions** Contractor Contractors assigned to specific events by agencies View public notes shared by agency, create public notes (visible to agency only), create private notes (visible to self only), edit and delete self-created notes
#403
**Notes Tab - Event Details Screen (Contractor Portal)** > **3\. User Flow**
~166 tok
## **3\. User Flow** **Navigation Path:** Contractor Portal > Event Details Screen > Notes Tab **Step-by-Step Flow:** **Step 1:** Contractor accesses Event Details Screen from Event Listing, Dashboard, or Calendar Module **Step 2:** Contractor clicks on the "Notes" tab from the tab navigation **Step 3:** System loads Notes tab displaying Private Notes and Public Notes sections **Step 4:** If no notes exist in a section, empty state message is displayed for that section **Step 5:** Contractor can create new notes using "Private +" or "Public +" buttons **Step 6:** Contractor can view, edit, or delete their own notes via kebab menu or note view pop-up
#404
**Notes Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#405
**Notes Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.1 Notes Section Display**
~248 tok
### **4.1 Notes Section Display** * Notes tab displays two separate sections: Private Notes and Public Notes * Each section displays notes specific to its visibility type * Sections are independent - empty state displays individually per section **Empty State Logic:** * If no private notes exist, the Private Notes section displays an empty state: "No private notes yet." * If no public notes exist, the Public Notes section displays an empty state: "No public notes yet." * Both sections can show an empty state simultaneously if no notes exist in either category * "Create Note" button available in the empty state to add the first note **Note Card Display:** * Each note card shows: Event title, Kebab menu (for self-created notes), Headline (truncated), Content preview (truncated), User avatars, Creation timestamp * Ordering: Newest first; recently edited notes move to top * Pagination: Initial 4 notes displayed, then "Show More (+X notes)" in groups of 10
#406
**Notes Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.2 Create Note - Contractor Specific Logic**
~251 tok
### **4.2 Create Note - Contractor Specific Logic** **Event Field Behavior:** * The event is always fixed (pre-selected and read-only) based on the currently selected event in the Event Details Screen * The contractor cannot change the event assignment when creating notes from Event Details **Visibility Options:** * **Private Note:** Visible only to the contractor (creator) * **Public Note:** Automatically visible to the agency only (no audience selection required) **Public Note - No Audience Checkboxes:** * Unlike agency users, contractors do not see the Clients, Contractors, or Team Members checkboxes * Public notes created by contractors are automatically shared with the agency * No additional audience selection required or available **Required Fields:** * Event: Pre-selected, read-only * Visibility: Private Note or Public Note (must select one) * Headline: Required, no character limit * Note Content: Optional, supports rich text formatting and image upload
#407
**Notes Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.3 Edit Note - Contractor Specific Logic**
~130 tok
### **4.3 Edit Note - Contractor Specific Logic** **Editable Fields:** * Headline: Can modify note title * Content: Can modify note text and media * Visibility: Can switch between Private and Public **Non-Editable Fields:** * Event: Always fixed, cannot be changed **Visibility Change Behavior:** * **Private to Public:** Note becomes visible to the agency automatically (no audience selection) * **Public to Private:** Note is hidden from the agency and moved to the contractor's Private Notes section
#408
**Notes Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.4 Delete Note**
~96 tok
### **4.4 Delete Note** **Access Control:** * Only the note creator can delete their own notes * Delete option available via the kebab menu or the note view pop-up **Delete Results:** * **Private Note:** Removed only for the contractor (creator) * **Public Note:** Removed from contractor's view and agency's view * Confirmation dialog required before permanent removal
#409
**Notes Tab - Event Details Screen (Contractor Portal)** > **4\. Functional Logic** > **4.5 View Note**
~140 tok
### **4.5 View Note**
**Note Pop-up Display:**
* Note Title (headline)
* Public/Private indicator
* Event name with color badge
* Visible To:
* Private Notes: Shows creator avatar ("You")
* Public Notes: Shows agency visibility
* Created On: Date and time
* Created By: User avatar and name
* Edited On: Last modification date (if edited)
* Full note content with rich text formatting
**Action Buttons:**
* Edit: Opens edit note pop-up (self-created notes only)
* Delete: Opens delete confirmation (self-created notes only)#410
**Notes Tab - Event Details Screen (Contractor Portal)** > **5\. Error Message Handling**
~116 tok
## **5\. Error Message Handling** **Field/Action** **Validation Scenario** **Error Message** Choose Visibility Not selected "Please select the visibility option." Headline Empty submission "Please enter a headline." Image Upload File exceeds 15 MB "File size cannot exceed 15 MB limit." Image Upload Invalid format "Only valid image formats (.jpg, .jpeg, .png, .webp, .svg) are allowed." General Save/Update/Delete error "Something went wrong."
#411
**Notes Tab - Event Details Screen (Contractor Portal)** > **6\. Success Message Handling**
~57 tok
## **6\. Success Message Handling** **Action** **Success Message** Note created "Note has been created successfully." Note updated "Note has been updated successfully." Note deleted "Note has been deleted successfully."
#412
**Notes Tab - Event Details Screen (Contractor Portal)** > **7\. Edge Cases**
~138 tok
## **7\. Edge Cases** **Scenario** **Expected Behavior** No private notes and no public notes exist Both sections display individual empty states Agency deletes public note while contractor viewing Note disappears on page refresh or API call Contractor changes note from Private to Public Note moves from Private section to Public section; becomes visible to agency Contractor changes note from Public to Private Note moves from Public section to Private section; hidden from agency Search returns no results Display "No notes found" message
#413
**Notes Tab - Event Details Screen (Contractor Portal)** > **8\. Acceptance Criteria**
~203 tok
## **8\. Acceptance Criteria** * Notes tab displays Private Notes and Public Notes sections separately * Empty state displays individually per section if no notes exist in that category * Contractor can create private notes (visible to self only) and public notes (visible to agency) * Event field is always pre-selected and read-only (fixed to current event) * Public notes do not require audience selection - automatically shared with agency * Only note creators can edit or delete their own notes * Visibility changes between Private and Public update note placement accordingly * Success toasts display after create, update, or delete actions * Note cards show event title, headline, content preview, user avatars, and timestamp * Notes ordered by newest first; edited notes move to top
#414
**Notes Tab - Event Details Screen (Contractor Portal)** >
~1 tok
##
#415
**Notes Tab - Event Details Screen (Contractor Portal)** >
~1 tok
##
#416
**Notes Tab - Event Details Screen (Contractor Portal)** > **9\. Dependencies**
~102 tok
## **9\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** Notes Management System Critical Dependency Cannot create, view, edit, or delete notes Rich Text Editor Component UI Dependency Cannot format note content CRM Library Module Integration Dependency Cannot select or upload images Authentication System Security Dependency Cannot determine user permissions
#417
**Notes Tab - Event Details Screen (Contractor Portal)** > **10\. References**
~46 tok
## **10\. References** * **Figma Link:** [**Click Here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=9089-180006&t=qI39dRBohSA1mlSj-0) ☑️ Payments module
#418
**Payments Module - Contractor Portal**
~10 tok
# **Payments Module - Contractor Portal**
#419
**Payments Module - Contractor Portal** > **1\. Module Overview**
~133 tok
## **1\. Module Overview** * **Module Name:** Payments Module (Contractor Portal) * **Purpose:** Provide contractors with a centralized, global view of all their payment-related information across all agencies they work with, including invoice management, payment status tracking, and payment history * **Business Goal:** Enable contractors to efficiently track their earnings, manage invoices across multiple agency relationships, monitor payment statuses, and maintain clear financial records for all their event assignments
#420
**Payments Module - Contractor Portal** > **2\. User Roles & Permissions**
~74 tok
## **2\. User Roles & Permissions** **Role** **Description** **Key Permissions** Contractor Contractors assigned to events across multiple agencies View all payments from all agencies in one table, upload invoices, view uploaded invoices, track payment status (Upcoming, Pending, Paid, Void)
#421
**Payments Module - Contractor Portal** > **3\. User Flow**
~262 tok
## **3\. User Flow** **Navigation Path:** Contractor Portal > Left Sidebar > Payments **Step-by-Step Flow:** **Step 1:** Contractor clicks on "Payments" from the left sidebar navigation menu **Step 2:** System loads the Payments module, displaying all payments across all agencies in a table format **Step 3:** The Contractor can view payment status, project details, due dates, amounts paid, and payment methods for each invoice **Step 4:** The Contractor can click the "Upload Invoice" button to create and upload new invoices **Step 5:** The Contractor can click the "View Invoice" action to preview the uploaded invoice PDF **Step 6:** The Contractor can sort columns to organize payment data as needed **Step 7:** For invoices with "Unpaid" or "Overdue" status, the Contractor can click the "Void" button in the Actions column to open the Mark as Void confirmation pop-up. **Step 8:** The Contractor enters a Void Reason, optionally clicks "View Invoice" in the pop-up to review the invoice, and confirms by clicking "Mark as Void."
#422
**Payments Module - Contractor Portal** > **4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#423
**Payments Module - Contractor Portal** > **4\. Functional Logic** > **4.1 Empty State (No Payments)**
~64 tok
### **4.1 Empty State (No Payments)** * If the contractor has no invoices/payments, display an empty state message * Message: "No payments found." * "Upload Invoice" button remains available only if at least one event is assigned to the contractor
#424
**Payments Module - Contractor Portal** > **4\. Functional Logic** > **4.2 Payments Module Overview**
~126 tok
### **4.2 Payments Module Overview** **Global Payment View:** * The Payments module displays all payment information across ALL agencies the contractor works with * Not workspace-dependent - contractor sees consolidated view regardless of currently selected workspace * The **“Upload Invoice”** button allows the contractor to upload new invoices. It will only fetch projects from the selected agency workspace. The contractor needs to switch their workspace to upload invoices for another agency.
#425
**Payments Module - Contractor Portal** > **4\. Functional Logic** > **4.3 Payments Table Structure**
~428 tok
### **4.3 Payments Table Structure**
**Payment Status:** This column displays the current payment status for the events with which the contractor is associated, and the System automatically calculates the status based on the event date and the agency payment action
* **Status Values and Display Logic:**
* **“Paid” status:** It will display when the Agency has marked the invoice as paid
* **“Pending” status:** It will display when the event date has passed, AND payment has not yet been made by the agency
* **“Upcoming” status:** It will display when the event date is in the future, AND payment has not yet been made
* **"Void" status:** Displays when the contractor has marked the invoice as void. A voided invoice is no longer active and cannot be paid or reactivated.
**Project Name:** It will display the Project name associated with the event (e.g., "Jadon & Monika Wedding") in which the contractor is assigned
**Due Date:** It will display the Due date entered by the contractor during invoice upload
**Amount:** It will display the actual amount of the invoice for the event
**Payment Method:** Payment method selected/entered by agency when processing payment (e.g., "Bank Transfer" )
**Actions:** Display: "View Invoice" text button/link on click, opens the uploaded invoice PDF in a preview pop-up modal
Also display a "Void" button for invoices with "Unpaid" or "Overdue" status, which opens the Mark as Void confirmation pop-up.
**4.4 View Invoice**
* Clicking "View Invoice" opens a modal with a PDF preview
* Displays the invoice PDF uploaded by the contractor
* Read-only view of the invoice document
* Close button to return to the Payments table#426
**Payments Module - Contractor Portal** > **4\. Functional Logic** > **4.5 – Mark as Void Functionality**
~218 tok
### **4.5 – Mark as Void Functionality** **Void Button Visibility:** Shown only for "Unpaid" or "Overdue" invoices. Hidden for "Paid" and already "Void" invoices. **Mark as Void Pop-up Modal contains:** * **Title:** "Mark as Void" * **Confirmation message:** "You are about to mark this invoice as void. Do you want to continue?" * **Invoice summary:** Project Name + Issued Date * **"View Invoice" link:** Opens the PDF preview modal inline — contractor can review before confirming * **Amount Invoiced:** Displays the invoice amount (e.g. $1,500.00) * **Void Reason (Required):** Text area with placeholder "Add void note here" — must be filled before confirming * **Cancel button:** Closes pop-up, no changes made * **"Mark as Void" button:** Confirms action — invoice status updates to "Void," Void button removed from that row, success message shown
#427
**Payments Module - Contractor Portal** > **4\. Functional Logic** > **4.6 Upload Invoice Functionality**
~177 tok
### **4.6 Upload Invoice Functionality**
* In the contractor portal, the contractor can upload invoices from multiple locations within the portal.
* **Payments module > Upload Invoice**
* When the contractor uploads an invoice from the Payments module, the “Choose Project” dropdown in the Upload Invoice pop-up will display only the projects in the current workspace where the contractor is logged in. If the contractor wants to upload an invoice for another agency workspace, they must switch workspaces from their contractor profile.
* **Event details > finances > create invoices**
* **Event details > details tab > Upload Invoice**
* **Field details:** [**Click Here**](#adc8wmx7p9vm)#428
**Payments Module - Contractor Portal** > **4\. Functional Logic** > **4.7 Upload Invoice - Cross-Module Impact**
~137 tok
### **4.7 Upload Invoice - Cross-Module Impact** **Contractor Portal Updates:** When the contractor uploads an invoice, it will have an impact on the following modules * **Payments Module:** A New invoice row has been added to the table with "Upcoming" or "Pending" status * **Event Details > Files/Documents Tab:** Invoice appears in Documents & Forms section * **Event Details > Finances Tab:** Invoice appears in the invoice table with "Issued" status * **Event Details > Details Tab > Services Section:** Invoice status icon updates
#429
**Payments Module - Contractor Portal** > **4\. Functional Logic** > **4.8 Warning Message Content**
~476 tok
### **4.8 Warning Message Content** * **The system does NOT restrict invoice uploads that exceed the contractor fee** * **When contractor tries to upload an invoice where the amount exceeds the contracted fee for the event, a warning modal is displayed** * **Warning is displayed as an informational alert only, allowing the contractor to proceed with submission** **Warning Modal:** **⚠ Invoice Amount Exceeds Contracted Fee** **The amount you entered (\[invoiceAmount\]) exceeds the contracted fee for this event (\[invoiceAmount\]) exceeds the contracted fee for this event ( \[invoiceAmount\])exceedsthecontractedfeeforthisevent(\[contractorFee\]). The discrepancy of $\[discrepancyAmount\] will be flagged for review by the agency.** **Actions:** * **Cancel – Returns the contractor to the upload form to modify the invoice details** * **Submit Anyway – Proceeds with the invoice submission despite the discrepancy; the invoice will be flagged for agency review** **Agency Portal Updates:** **Note:** If the contractor uploads an invoice with a due amount greater than the total Event price (contractor fee) for the case, a message will appear in the agency portal stating that the contractor has uploaded an invoice with an amount exceeding the contractor fee for that particular event. **⚠ Invoice Amount Exceeds Contractor Fee** **Contractor has submitted an invoice for $\[invoiceAmount\], which exceeds the contracted event fee of $\[contractorFee\] by $\[discrepancyAmount\].** **_Please review the invoice details and discrepancy before processing payment._** * **Finances > Contractor Invoices:** Invoice appears in the unpaid/pending section * **Project Details > Activity Tab:** Invoice upload activity logged * **Project Details > Files/Documents Tab:** Invoice appears in documents list * **Project Details > Finances Tab:** Invoice appears for processing
#430
**Payments Module - Contractor Portal** > **5\. Field Details & Validations**
~10 tok
## **5\. Field Details & Validations**
#431
**Payments Module - Contractor Portal** > **5\. Field Details & Validations** > **5.1 Upload Invoice Form Fields**
~239 tok
### **5.1 Upload Invoice Form Fields**
**Field Name**
**Field Type**
**Required**
**Validation Rules**
Choose Project
Dropdown
Yes
Must select from available projects where the contractor is assigned. It will only fetch projects from the selected agency workspace.
Choose Event
Dropdown
Yes
Must select from events in the chosen project where the contractor is assigned; Dependent on the Choose Project selection
Amount Due
Number Input
Yes
Maximum 7 digits; Only positive numbers (0-9); No negative values; Whole numbers only
Due Date
Date Picker
Yes
Cannot be before the current date; Format: MM-DD-YYYY
Upload Invoice
File Upload
Yes
PDF format only (\*.pdf); Maximum file size: 15 MB
Cancel
Button
NA
Closes the pop-up without any actions
Confirm
Button
NA
All required fields must be completed
On Success:
* * Invoice uploaded and saved
* Pop-up closes
* A new invoice row appears in the Payments table#432
**Payments Module - Contractor Portal** > **5\. Field Details & Validations** > **5.2 Payments Table Display Fields**
~282 tok
### **5.2 Payments Table Display Fields** **Field Name** **Display Format** **Data Source** **Display Logic** Payment Status Badge with color coding Calculated from the event date and the agency payment status **Paid** (green): Agency marked as paid **Pending** (orange): Event passed, unpaid **Upcoming** (gray): Future event, unpaid Void(Grey): To make payment Void. Refer - [Click Here](#s7hd8gcp1t75) \- Column Not sortable Project Name Text Event's associated project Displays project name; Long names truncated with ellipsis \- Sortable Column Due Date MM/DD/YY HH:MM AM/PM Contractor input during upload Display the invoice due date. The date format will be dynamic and based on the user’s global settings. \- Sortable Column Amount Paid Currency format Agency payment record Shows the actual amount for the invoice \- Sortable Column Payment Method Text Agency selection during payment Examples: "Bank Transfer" \- Sortable Column Actions Link/Button System generated "View Invoice" opens PDF preview modal Void Button Opens Void pop-up visible for Unpaid/Overdue invoices only
#433
**Payments Module - Contractor Portal** > **6\. Error Message Handling**
~231 tok
## **6\. Error Message Handling** **Field/Action** **Validation Scenario** **Error Message** Choose Project Not selected "Please select a project." Choose Event Not selected "Please select an event." Amount Due Empty "Please enter the amount due." Amount Due Exceeds 7 digits "Amount cannot exceed 7 digits." Amount Due Exceeds the total contractor fee amount “The entered amount is greater than the total contractor fee for the event.” Due Date Not selected "Please select a due date." Due Date Date before the current date "Due date cannot be in the past." Upload Invoice No file selected "Please upload an invoice." Upload Invoice File format not PDF "Only PDF files are allowed." Upload Invoice File exceeds 15 MB "File size cannot exceed 15 MB." General Upload/save operation fails "Something went wrong." Void Reason Left empty when submitting void “Please enter a void reason.”
#434
**Payments Module - Contractor Portal** > **7\. Success Message Handling**
~54 tok
## **7\. Success Message Handling** **Action** **Success Message** Invoice uploaded successfully "Invoice has been uploaded successfully." Invoice marked as void "Invoice has been marked as void successfully."
#435
**Payments Module - Contractor Portal** > **8\. Edge Cases**
~349 tok
## **8\. Edge Cases** **Scenario** **Expected Behavior** Contractor works with no agencies Empty state displayed: "No payments found." Contractor assigned to multiple events in the same project All assigned events appear in the Choose Event dropdown Event date passes while invoice is Upcoming Status automatically changes to "Pending" The agency pays a partial amount Amount Paid shows partial amount; status may remain Pending until fully paid The agency deletes the project while the invoice exists The invoice may show the project name as unavailable or be removed Contractor uploads multiple invoices for the same event All invoices are displayed as separate rows in the table Very long project name Text truncated with ellipsis (...) The agency hasn't selected a payment method yet The Payment Method column shows "—" or blank The due date is today The invoice shows "Upcoming" status (the current date is not past) Contractor is in the process of uploading invoice Empty Icon; remains empty until upload completes Agency initiates payment but fails Icon remains empty until payment is confirmed Contractor uploads invoice for past event Status shows "Pending" since the event date has passed Contractor submits void without entering a reason Validation error shown; void not processed Invoice already marked as Void "Void" button not shown in Actions column
#436
**Payments Module - Contractor Portal** > **9\. Acceptance Criteria**
~461 tok
## **9\. Acceptance Criteria** * The Payments module is accessible from the left sidebar navigation * Table displays all payments from all agencies (global view, not workspace-specific) * Table columns: Payment Status, Project Name, Due Date, Amount Paid, Payment Method, Actions * Payment Status shows color-coded badges: Paid (green), Pending (orange), Upcoming (gray) * Status logic: Paid = agency marked paid; Pending = event passed, unpaid; Upcoming = event future, unpaid * Amount Paid shows the actual payment amount for Paid invoices * All columns (except Actions) are sortable * "View Invoice" action opens PDF preview in pop-up modal * "Upload Invoice" button opens the upload pop-up * The Choose Project dropdown shows only projects where the contractor is assigned * The Choose Event dropdown shows only events within the selected project where the contractor is assigned * Amount Due field accepts a maximum of 7 digits, positive numbers only * Due Date cannot be before the current date * Only PDF files allowed, maximum 15 MB * A successful upload creates an invoice across all relevant modules (Contractor Portal and Agency Portal) * Invoice appears in: Payments table, Event Details Files/Documents, Event Details Finances, and corresponding Agency Portal modules * "Void" button appears in Actions column only for Unpaid/Overdue invoices * Clicking "Void" opens Mark as Void pop-up with project name, issued date, amount invoiced, View Invoice link, and Void Reason field * "View Invoice" link inside the pop-up opens the invoice PDF preview * Void Reason is a required field; submission blocked if empty * On confirmation, invoice status updates to "Void" and the Void button is removed for that row * "Void" status is displayed as a color-coded badge in the Payment Status column
#437
**Payments Module - Contractor Portal** > **10\. Dependencies**
~165 tok
## **10\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** Project/Event Management Data Dependency Cannot populate the Choose Project and Choose Event dropdowns File Storage System Critical Dependency Cannot upload or view invoice PDFs Agency Payment System Data Dependency Cannot retrieve payment status, amount paid, or payment method Cross-Module Sync Service Integration Dependency Uploaded invoices are not reflected in other modules Authentication System Security Dependency Cannot verify contractor identity across agencies Calendar/Date Service Feature Dependency The due date picker is non-functional
#438
**Payments Module - Contractor Portal** > **11\. References**
~43 tok
## **11\. References** * Link **\-** [**Click Here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=13461-170343&t=Domgr1X3sDK9PNue-0) ✅ W-9 Forms
#439
**Functional Requirements Document (FRD) - Tax Forms Module**
~16 tok
# **Functional Requirements Document (FRD) - Tax Forms Module**
#440
**Functional Requirements Document (FRD) - Tax Forms Module** > **1\. Module Overview**
~92 tok
## **1\. Module Overview** * **Module Name:** Tax Forms Management * **Purpose:** Enable contractors to upload, manage, and maintain tax documentation based on their location (US W-9 forms or international tax forms) * **Business Goal:** Ensure tax compliance for contractors while providing location-specific tax form management with automated annual reminders
#441
**Functional Requirements Document (FRD) - Tax Forms Module** > **2\. User Roles & Permissions**
~125 tok
## **2\. User Roles & Permissions** **Role** **Description** **Key Permissions** US Contractor Contractor based in the United States Upload/view/delete W-9 forms, download W-9 template Non-US Contractor Contractor based outside the United States Upload/view/delete tax forms, change the default location Agency Team Member An Agency Team Member can download the W-9 of the individual contractor form from the Contractor’s Profile Download from the Download Button in the Contractor Profile
#442
**Functional Requirements Document (FRD) - Tax Forms Module** > **3\. User Flow**
~5 tok
## **3\. User Flow**
#443
**Functional Requirements Document (FRD) - Tax Forms Module** > **3\. User Flow** > **Critical Path (US Contractor):**
~108 tok
### **Critical Path (US Contractor):** 1. Contractor navigates to "Taxes" from the main navigation menu 2. System displays "Upload W-9 Form (Only for US)" section with upload area and W-9 template 3. Contractor downloads W-9 template, fills it out 4. Contractor uploads completed W-9 form via the upload section 5. The system stores the document 6. Contractor can view, download, or delete the uploaded form via the kebab menu
#444
**Functional Requirements Document (FRD) - Tax Forms Module** > **3\. User Flow** >
~1 tok
###
#445
**Functional Requirements Document (FRD) - Tax Forms Module** > **3\. User Flow** > **Critical Path (Non-US Contractor):**
~162 tok
### **Critical Path (Non-US Contractor):** 1. Contractor navigates to "Taxes" from the main navigation menu 2. System displays "Upload Tax Form (Only for Non-U.S. Citizens)" section 3. The location of the contractor will be selected by default in the “Select your country” field. The contractor can further change the location if they want 4. Contractor uploads tax documentation 5. System validates and stores the document 6. Contractor can view, download, or delete the uploaded form via the kebab menu **Agency Team Member: **An Agency Team Member can download the W-9 of the individual contractor form from the Contractor’s Profile
#446
**Functional Requirements Document (FRD) - Tax Forms Module** > **4\. Functional Logic**
~278 tok
## **4\. Functional Logic** * **Location-based visibility:** System determines contractor location and shows appropriate sections (W-9 for US, international form for non-US). The location of all Contractors will be fetched by default; the contractor can further change it from the value in the drop-down as they want * **Template access:** The W-9 template is only visible and downloadable for US-based contractors * **Document management:** Uploaded documents can be viewed, downloaded, and deleted through the kebab menu actions * **Annual reminder system:** Automated email sent every January 1st to all contractors requesting tax form updates * **Agency downloading the W-9 form:** The agency team member can download the W-9 form from the Profile detail of the contractors * **File validation:** System validates file type, size, and format before accepting uploads * **Version control:** New uploads replace previous versions with timestamp tracking * **Reminder:** In case of any new onboarded contractor, do not upload any W-9 form for them; they will receive an email to add a W-9 form.
#447
**Functional Requirements Document (FRD) - Tax Forms Module** >
~1 tok
##
#448
**Functional Requirements Document (FRD) - Tax Forms Module** > **5\. Field Details & Validations**
~108 tok
## **5\. Field Details & Validations** **Field Name** **Type** **Required** **Validation Rules** Country Selection Dropdown Yes (Non-US only) The country will be by default fathed from the contractors’ location The Contractor can further change the country location if needed Tax Document Upload File Upload Yes PDF format only; Max size 15MB Download Template Form CTA Conditional This is only for the US Users.
#449
**Functional Requirements Document (FRD) - Tax Forms Module** > **6\. Success Message Handling**
~101 tok
## **6\. Success Message Handling** **Validation Scenario** **Success Message** W-9 form uploaded successfully "Tax form has been uploaded successfully." Tax form uploaded successfully "Tax form has been uploaded successfully." Document deleted successfully "Tax document has been deleted successfully." Document Downloaded by Agency Team Member “Tax Document has been downloaded successfully.”
#450
**Functional Requirements Document (FRD) - Tax Forms Module** > **7\. Error Message Handling**
~131 tok
## **7\. Error Message Handling** **Field** **Validation Scenario** **Error Message** File Upload No file selected "Please select a file to upload." File Upload Invalid file format "Please upload a valid file format." File Upload File size exceeds limit "File size cannot exceed 15MB" Country Selection No country selected "Please select your country." General Upload failure "Failed to upload document. Please try again." General Network error "Unable to connect. Please check your internet connection."
#451
**Functional Requirements Document (FRD) - Tax Forms Module** > **8\. Edge Cases**
~114 tok
## **8\. Edge Cases** **Scenario** **Expected Behavior** Contractor location changes from the US to a non-US location Hide W-9 section, show international form section, retain existing documents Multiple file uploads attempted Only accept the latest upload, replace the previous version Template download fails Show error message, provide alternative download link Upload during system maintenance Queue upload for processing, notify user of delay
#452
**Functional Requirements Document (FRD) - Tax Forms Module** > **9\. Test Cases :**
~6 tok
## **9\. Test Cases :**
#453
**Functional Requirements Document (FRD) - Tax Forms Module** > **10\. Acceptance Criteria**
~189 tok
## **10\. Acceptance Criteria** * **Location detection:** System correctly identifies contractor location and displays appropriate tax form sections * **Template functionality:** US contractors can download the W-9 template successfully * **Upload capability:** Contractors can upload tax documents in supported formats of PDF up to 15MB * **Document management:** Contractors can view, download, and delete their uploaded tax documents * **Annual reminders:** The System automatically sends tax form update reminders every January 1st * **Error handling:** Appropriate error messages displayed for all validation scenarios * **Navigation integration:** The Taxes module is accessible from the main navigation menu in the contractor portal
#454
**Functional Requirements Document (FRD) - Tax Forms Module** >
~1 tok
##
#455
**Functional Requirements Document (FRD) - Tax Forms Module** > **11\. Dependencies**
~88 tok
## **11\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** User Authentication Authentication dependency Cannot identify contractor location and permissions Email Service Service dependency Annual reminder emails cannot be sent File Storage System Storage dependency Cannot store or retrieve uploaded documents
#456
**Functional Requirements Document (FRD) - Tax Forms Module** > **12\. References**
~46 tok
## **12\. References** * **Figma Link:** [**Figma Design Link**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=7948-185686&t=1uwMCREmu6HRopYA-0) ✅ Tasks Module
#457
**Tasks Module - Contractor Portal**
~10 tok
# **Tasks Module - Contractor Portal**
#458
**Tasks Module - Contractor Portal** > **1\. Module Overview**
~136 tok
## **1\. Module Overview** * **Module Name:** Tasks Module (Contractor Portal) * **Purpose:** Enable contractors to view, create, and manage tasks assigned by agencies as well as self-created personal tasks, with the ability to track task progress through different statuses (To-Do, In-Progress, Completed) * **Business Goal:** Provide contractors with a centralized task management system to organize their work, track assignments from multiple agencies, and maintain productivity through clear visibility of pending and completed tasks
#459
**Tasks Module - Contractor Portal** > **2\. User Roles & Permissions**
~79 tok
## **2\. User Roles & Permissions** **Role** **Description** **Key Permissions** Contractor Contractors working with multiple agencies View all tasks (agency-assigned and self-created), create new tasks for self, edit all task fields, change task status, delete self-created tasks only, search and filter tasks
#460
**Tasks Module - Contractor Portal** > **3\. User Flow**
~33 tok
## **3\. User Flow** Flow Chart- [Click Here](https://drive.google.com/file/d/1eb5m39IUNoFdqwv3uzusxRJgkS_CfJWr/view?usp=drive_link)
#461
**Tasks Module - Contractor Portal** > **4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#462
**Tasks Module - Contractor Portal** > **4\. Functional Logic** > **4.1 Global Task Module Behavior**
~274 tok
### **4.1 Global Task Module Behavior** * The Task module operates as a **global workspace**, showing tasks across all agencies the contractor is associated with. * It displays **all tasks assigned by any agency**, grouped under their respective status tabs (e.g., _To-Do_, _In-Progress_, _Completed_), regardless of the currently selected workspace. * For **agency-assigned tasks**, the contractor can modify the task (including updating the task status) **only when the task belongs to the currently selected agency workspace**. * If the contractor attempts to edit a task that was assigned by a **different agency** than the one currently selected in the workspace, the system displays a **Wrong Brand** pop-up. * The pop-up instructs the contractor to **switch to the correct agency workspace** in order to edit that task. * Until the contractor switches the workspace, the task remains **read-only** in the current agency view. * The module also includes **self-created tasks**, allowing contractors to manage both agency-assigned and personal tasks from a single interface.
#463
**Tasks Module - Contractor Portal** > **4\. Functional Logic** > **4.2 Initial Empty State - No Tasks**
~11 tok
### **4.2 Initial Empty State - No Tasks**
#464
**Tasks Module - Contractor Portal** > **4\. Functional Logic** > When the contractor **has no assigned tasks from any agency** and has **not created any personal tasks**, the system displays a global empty state message: **“No tasks yet!”** along with a CTA to create a new task.
~55 tok
### When the contractor **has no assigned tasks from any agency** and has **not created any personal tasks**, the system displays a global empty state message: **“No tasks yet!”** along with a CTA to create a new task.
#465
**Tasks Module - Contractor Portal** > **4\. Functional Logic** > If tasks exist in the system but the **selected status contains zero tasks**, the module displays a contextual empty state message specific to that tab.
~39 tok
### If tasks exist in the system but the **selected status contains zero tasks**, the module displays a contextual empty state message specific to that tab.
#466
**Tasks Module - Contractor Portal** > **4\. Functional Logic** > Example: If the contractor has tasks in _To-Do_ or _Completed_ but none in _In-Progress_, the system displays **“No tasks in In-Progress.”**
~36 tok
### Example: If the contractor has tasks in _To-Do_ or _Completed_ but none in _In-Progress_, the system displays **“No tasks in In-Progress.”**
#467
**Tasks Module - Contractor Portal** > **4\. Functional Logic** > This behavior applies consistently across all status tabs
~53 tok
### This behavior applies consistently across all status tabs * Whenever any status tab (_To-Do_, _In-Progress_, _Completed_) has zero tasks, the system shows the respective empty state message for that status.
#468
**Tasks Module - Contractor Portal** > **4\. Functional Logic** > **4.3 Task Management Listing**
~46 tok
### **4.3 Task Management Listing** * The **Task Management module** includes two primary tabs for task listing: **To Do** and **Completed**. * "To-Do" tab is selected by default.
#469
**Tasks Module - Contractor Portal** > **4\. Functional Logic** > **4.3.1 To-Do Tab**
~362 tok
### **4.3.1 To-Do Tab**
* Displays all tasks with statuses **“To Do”** and **“In Progress.”**
* Both the **To Do** and **In Progress** sections include an **expand/collapse** option accessible through their respective section headers.
* **To Do:** Represents active tasks that are yet to be started or completed.
* **In Progress:** Represents tasks that have been started but are not yet marked as completed.
* The list view displays **“Due Today”** and **“Overdue”** tags against tasks that meet the respective criteria.
* **Due Today Tag:**
* Tasks with a due date matching the current date (today’s date) are displayed with a **“Due Today”** tag.
* The tag disappears once the task is marked as **completed**.
* If the task remains incomplete after the due date, it automatically changes to an **“Overdue”** tag on the next day.
* **Overdue Tag:**
* A task becomes **Overdue** when its due date has passed, and it is still not completed.
* The **Overdue** tag appears from the day after the assigned due date.
* When a task first becomes overdue, an **email reminder** is sent to both the task reporter and the contractor.
* If the **same user** is both the reporter and the assignee, only **one email notification** is sent.
* The tag disappears as soon as the task is marked as **completed**.
* **Table Columns (To-Do and In-Progress): Refer -** [**Click Here**](#u5yxtqa5wt7t)#470
**Tasks Module - Contractor Portal** > **4\. Functional Logic** > **4.3.2 Completed Tab**
~264 tok
### **4.3.2 Completed Tab**
* Displays tasks whose status has been updated to **“Completed.”**
* Once a task is marked as completed, it automatically moves out of the **To Do** or **In Progress** sections and appears under the **Completed** tab.
* **Table Columns (Completed): Refer -** [**Click Here**](#n6dbjqcuwixw)
**4.4 Create New Task**
* The contractors can manually create a new task from the **Task Management** module by clicking the **“New Task”** button.
* On click, a **Create Task drawer** opens from the right side, displaying the fields for task creation. Please refer- [**Click Here**](#pzrf038t1lm7)
* Tasks created from the Contractor Portal are **standalone personal tasks**. Contractors **cannot link these tasks** to any agency’s brand, project, or event.
* Task assignment is restricted in the Contractor Portal. Contractors **cannot assign tasks to other users**.
* For all manually created tasks:
* The **contractor becomes the default and only assignee**.
* The **contractor is also the reporter**.#471
**Tasks Module - Contractor Portal** > **4\. Functional Logic** > **4.5 Edit Task**
~347 tok
### **4.5 Edit Task**
* Contractors can edit an existing task by clicking **“Edit”** from the **Actions kebab menu** in the task table.
* Selecting Edit opens the **Task Edit drawer**, which is the same interface used during task creation, but with **pre-filled values**.
* For **agency-assigned tasks**, the contractor can modify the task (including updating the task status) **only when the task belongs to the currently selected agency workspace**.
* All fields in the panel are automatically populated with the current task data.
* The **Task Title** is editable inline.
* The following fields remain **editable** for all tasks, including those assigned by agencies:
* Task Title
* Status
* Priority
* Due Date
* Description
* The **Reporter** field remains **read-only** and always reflects the original creator of the task.
* The **Assignee** field also remains **read-only**, as contractors cannot reassign tasks to others.
**Save Changes**
* When the contractor clicks **“Save”**, the task is saved with the modified values.
* The drawer panel closes automatically after a successful update.
* If the task’s status is changed, the task automatically moves to the corresponding status section (e.g., from To-Do to In-Progress or Completed).
* For **agency-assigned tasks**, all updates are **synced to the Agency Portal**.#472
**Tasks Module - Contractor Portal** > **4\. Functional Logic** > **4.6 Delete Task**
~151 tok
### **4.6 Delete Task**
* The contractor can **only delete self-created tasks**.
* The contractor **cannot delete tasks assigned by any agency**. For agency-assigned tasks, the Delete option is **hidden**.
* Only the **respective agency** has permission to delete tasks they have assigned to the contractor.
* When a contractor tries to delete a task they created, selecting Delete triggers a confirmation message: “Are you sure you want to delete this task?”
* Upon confirmation, the task is permanently removed from the Tasks module and the Contractor Dashboard → Task Management section.#473
**Tasks Module - Contractor Portal** > **4\. Functional Logic** > **4.7 Status Change Logic**
~413 tok
### **4.7 Status Change Logic**
* The contractor can change the task status at different places within the system:
* The contractor can update a task’s status **directly from the status dropdown** in the table row.
* The contractor can update a task’s status by **opening the task in the Edit drawer**, where the status field is also editable.
* The contractor can update a task’s status **from the Dashboard**.
* For **agency-assigned tasks**, the contractor can change the task status **only when the task belongs to the currently selected agency workspace**.
**4.7.1 Status Change Impact**
* **To-Do → In-Progress:** Task moves from the _To-Do_ section to the _In-Progress_ section.
* **To-Do → Completed:** Task moves from the _To-Do_ section to the _Completed_ tab.
* **In-Progress → To-Do:** Task moves from the _In-Progress_ section back to the _To-Do_ section.
* **In-Progress → Completed:** Task moves from the _In-Progress_ section to the _Completed_ tab.
* **Completed → To-Do:** Task moves from the _Completed_ tab to the _To-Do_ section.
* **Completed → In-Progress:** Task moves from the _Completed_ tab to the _In-Progress_ section.
**4.7.2 Completed Date Logic**
* When the status is changed to **Completed**, the system records the **current date** as the Completed Date.
* If the status is changed **away from Completed**, the Completed Date is **cleared**.
* If the task is marked **Completed again**, a **new Completed Date** is recorded.
**4.7.3 Cross-Portal Sync**
* For **agency-assigned tasks**, all status updates performed by the contractor are **synced to the Agency Portal**.#474
**Tasks Module - Contractor Portal** > **4\. Functional Logic** > **4.8 Search Functionality**
~170 tok
### **4.8 Search Functionality** * The Task module includes a search input field with a search icon and the placeholder text: **“Search by task title.”** **4.8.1 Search Scope** * **To-Do Tab:** The search filters tasks in both the _To-Do_ and _In-Progress_ sections. * **Completed Tab:** The search filters tasks only within the _Completed_ section. * Search is always **restricted to the currently selected tab** **4.8.2 Search Behavior** * Tasks are filtered **in real time** as the contractor types in the search field. * The search matches any task title that **contains** the entered text (_partial match supported_). * The search is **case-insensitive**.
#475
**Tasks Module - Contractor Portal** > **4\. Functional Logic** > **4.9 Filter Functionality**
~259 tok
### **4.9 Filter Functionality** * A **Filter** icon button is displayed next to the search bar. * When clicked, a **Filter drawer panel** opens from the right side, allowing the contractor to apply one or more filters. * **Filter Options: Refer -** [**Click Here**](#9e3hktdltzxq) * Filters are applied **immediately upon selection**, and the task list updates in real time. * All selected filters appear as **chips/tags** above the task table. * Each filter chip includes an **(X)** icon that allows the contractor to remove the individual filter. * A **“Clear All Filters”** button is available to remove all applied filters at once and reset the task list. **4.9.1 Filter Chip Display** * Each filter chip clearly displays the **filter type and selected value**, such as “Priority: High” or “Due Date: Overdue.” * Removing a chip instantly updates the task list to reflect the remaining active filters. * Clicking **Clear All Filters** removes all filter chips together and restores the unfiltered task list.
#476
**Tasks Module - Contractor Portal** > **4\. Functional Logic** > **4.11 Cross-Module Display**
~132 tok
### **4.11 Cross-Module Display** **Contractor Dashboard Integration:** * Tasks display in Contractor Dashboard > Task Management section * Shows pending tasks for quick access * Status changes from the dashboard are also reflected in the Tasks module **Agency Portal Sync:** * Agency-assigned tasks: All changes by the contractor sync to the Agency Portal * Status updates, priority changes, and due date modifications are visible to the agency * The agency can track the contractor's progress on assigned tasks
#477
**Tasks Module - Contractor Portal** > **4\. Functional Logic** > **4.12 Tasks Email & Notifications**
~123 tok
### **4.12 Tasks Email & Notifications**
* System-generated emails and in-app notifications keep users informed about task activities and status changes.
* Email notifications will be sent in the following scenarios:
* When the task due date has passed, and the task is still in To-Do or In Progress status
* When the task is deleted by the reporter for agency agency-assigned task
* When the task status is changed to Completed
* When the task due date is updated#478
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations**
~10 tok
## **5\. Field Details & Validations**
#479
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **5.1 Create/Edit Task Form**
~129 tok
### **5.1 Create/Edit Task Form** **Field Name** **Required** **Validation Rules** Task Title Yes Maximum 200 characters Status Yes Must select one: To Do, In-Progress, Completed Reporter Read-only Auto-populated with logged-in contractor Assignee Read-only Auto-populated with logged-in contractor Priority Yes Must select one: Low, Medium, High Created Read-only Auto-populated with the current date Due Date Yes Must be a current date or a future date Description No Optional text field
#480
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **5.4 Task Table Columns (To-Do and In-Progress Sections)**
~16 tok
### **5.4 Task Table Columns (To-Do and In-Progress Sections)**
#481
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **Column Name**
~5 tok
### **Column Name**
#482
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **Display Format**
~6 tok
### **Display Format**
#483
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **Details**
~4 tok
### **Details**
#484
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > Task
~2 tok
### Task
#485
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > Task title + Priority icon
~8 tok
### Task title + Priority icon
#486
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **Priority Icons:**
~6 tok
### **Priority Icons:**
#487
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > \- Low: Blue downward icon
~8 tok
### \- Low: Blue downward icon
#488
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > \- Medium: Orange/yellow double chevron icon
~12 tok
### \- Medium: Orange/yellow double chevron icon
#489
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > \- High: Red upward icon
~7 tok
### \- High: Red upward icon
#490
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > \- Sortable column
~6 tok
### \- Sortable column
#491
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > Project
~3 tok
### Project
#492
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > Project name + Event name (or "--")
~10 tok
### Project name + Event name (or "--")
#493
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **For agency-assigned tasks:** Project name with event name below (with color dot)
~22 tok
### **For agency-assigned tasks:** Project name with event name below (with color dot)
#494
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **For self-created tasks:** "--" (double dash)
~13 tok
### **For self-created tasks:** "--" (double dash)
#495
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > \- Sortable column
~6 tok
### \- Sortable column
#496
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > Brand
~2 tok
### Brand
#497
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > Avatar + Name (or "--")
~7 tok
### Avatar + Name (or "--")
#498
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **For agency-assigned tasks:** Brand owner avatar and name
~16 tok
### **For agency-assigned tasks:** Brand owner avatar and name
#499
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **For self-created tasks:** "--" (double dash)
~13 tok
### **For self-created tasks:** "--" (double dash)
#500
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > \- Sortable column
~6 tok
### \- Sortable column
#501
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > Due Date
~3 tok
### Due Date
#502
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > Month DD, YYYY
~5 tok
### Month DD, YYYY
#503
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **Format:** "November 8, 2025"
~9 tok
### **Format:** "November 8, 2025"
#504
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **Special Badges:**
~6 tok
### **Special Badges:**
#505
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > \- Due Today: Orange text when due date is current date
~15 tok
### \- Due Today: Orange text when due date is current date
#506
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > \- Overdue: Red badge when due date has passed
~13 tok
### \- Overdue: Red badge when due date has passed
#507
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > \- Normal: Standard date display for future dates
~13 tok
### \- Normal: Standard date display for future dates
#508
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > Reporter
~3 tok
### Reporter
#509
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > User avatar
~4 tok
### User avatar
#510
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **For self-created tasks:** Contractor's own avatar
~14 tok
### **For self-created tasks:** Contractor's own avatar
#511
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **For agency-assigned tasks:** The Agency user's avatar who assigned the task
~20 tok
### **For agency-assigned tasks:** The Agency user's avatar who assigned the task
#512
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > Status
~3 tok
### Status
#513
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > Dropdown (interactive)
~7 tok
### Dropdown (interactive)
#514
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **Dropdown Options:** To-Do, In-Progress, Completed
~14 tok
### **Dropdown Options:** To-Do, In-Progress, Completed
#515
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **Status Colors:**
~6 tok
### **Status Colors:**
#516
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > \- To-Do: Gray/default
~7 tok
### \- To-Do: Gray/default
#517
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > \- In-Progress: Orange/yellow
~8 tok
### \- In-Progress: Orange/yellow
#518
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > \- Completed: Green
~6 tok
### \- Completed: Green
#519
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **Functionality:** Contractor can change status directly from the dropdown
~20 tok
### **Functionality:** Contractor can change status directly from the dropdown
#520
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > Actions
~3 tok
### Actions
#521
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > kebab menu
~4 tok
### kebab menu
#522
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **Options:**
~4 tok
### **Options:**
#523
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > \- Edit: Opens task edit panel (available for all tasks)
~15 tok
### \- Edit: Opens task edit panel (available for all tasks)
#524
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > \- Delete: Removes task (available only for self-created tasks; disabled/hidden for agency-assigned tasks)
~28 tok
### \- Delete: Removes task (available only for self-created tasks; disabled/hidden for agency-assigned tasks)
#525
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** >
~1 tok
###
#526
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** >
~1 tok
###
#527
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **5.5 Task Table Columns (Completed Section)**
~13 tok
### **5.5 Task Table Columns (Completed Section)**
#528
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **Column Name**
~5 tok
### **Column Name**
#529
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **Display Format**
~6 tok
### **Display Format**
#530
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **Details**
~4 tok
### **Details**
#531
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **Note:** The following columns are the same as the To-Do and In-Progress sections: Task, Project, Brand, Reporter, Status, Actions
~34 tok
### **Note:** The following columns are the same as the To-Do and In-Progress sections: Task, Project, Brand, Reporter, Status, Actions
#532
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > Completed Date
~5 tok
### Completed Date
#533
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > Month DD, YYYY
~5 tok
### Month DD, YYYY
#534
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **Format:** "November 4, 2025"
~9 tok
### **Format:** "November 4, 2025"
#535
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **Logic:** Displays the date when the task status was changed to "Completed."
~20 tok
### **Logic:** Displays the date when the task status was changed to "Completed."
#536
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **Note:** Replaces the "Due Date" column from the To-Do tab
~16 tok
### **Note:** Replaces the "Due Date" column from the To-Do tab
#537
**Tasks Module - Contractor Portal** > **5\. Field Details & Validations** > **5.6 Filter Fields**
~6 tok
### **5.6 Filter Fields**
#538
**Tasks Module - Contractor Portal** > **Filter Name**
~5 tok
## **Filter Name**
#539
**Tasks Module - Contractor Portal** > **Field Type**
~4 tok
## **Field Type**
#540
**Tasks Module - Contractor Portal** > **Options/Values**
~5 tok
## **Options/Values**
#541
**Tasks Module - Contractor Portal** > **Validations**
~5 tok
## **Validations**
#542
**Tasks Module - Contractor Portal** > Brand Filter
~4 tok
## Brand Filter
#543
**Tasks Module - Contractor Portal** > Dropdown
~3 tok
## Dropdown
#544
**Tasks Module - Contractor Portal** > Only brands associated with events assigned to the contractor
~16 tok
## Only brands associated with events assigned to the contractor
#545
**Tasks Module - Contractor Portal** > \- Placeholder: "Select Brand"
~8 tok
## \- Placeholder: "Select Brand"
#546
**Tasks Module - Contractor Portal** > \- No validation required
~12 tok
## \- No validation required \- Single select
#547
**Tasks Module - Contractor Portal** >
~1 tok
##
#548
**Tasks Module - Contractor Portal** > Priority Filter
~5 tok
## Priority Filter
#549
**Tasks Module - Contractor Portal** > Checkbox list
~4 tok
## Checkbox list
#550
**Tasks Module - Contractor Portal** > \- Low
~2 tok
## \- Low
#551
**Tasks Module - Contractor Portal** > \- Medium
~3 tok
## \- Medium
#552
**Tasks Module - Contractor Portal** > \- High
~3 tok
## \- High
#553
**Tasks Module - Contractor Portal** > \- Multiple options can be selected
~10 tok
## \- Multiple options can be selected
#554
**Tasks Module - Contractor Portal** > \- No validation required
~14 tok
## \- No validation required \- Single or Multi-select
#555
**Tasks Module - Contractor Portal** >
~1 tok
##
#556
**Tasks Module - Contractor Portal** > Due Date Filter
~5 tok
## Due Date Filter
#557
**Tasks Module - Contractor Portal** > Checkbox list
~4 tok
## Checkbox list
#558
**Tasks Module - Contractor Portal** > \- Due Today
~4 tok
## \- Due Today
#559
**Tasks Module - Contractor Portal** > \- Due This Week
~5 tok
## \- Due This Week
#560
**Tasks Module - Contractor Portal** > \- Overdue
~3 tok
## \- Overdue
#561
**Tasks Module - Contractor Portal** > \- Multiple options can be selected
~10 tok
## \- Multiple options can be selected
#562
**Tasks Module - Contractor Portal** > \- No validation required
~7 tok
## \- No validation required
#563
**Tasks Module - Contractor Portal** > \- Single or Multi-select
~7 tok
## \- Single or Multi-select
#564
**Tasks Module - Contractor Portal** > **6\. Error Message Handling**
~131 tok
## **6\. Error Message Handling** **Field/Action** **Validation Scenario** **Error Message** Task Title Empty submission "Please enter a task title." Task Title Exceeds 200 characters "Task title cannot exceed 200 characters." Due Date Not selected "Please select a due date." Due Date Past date selected Past dates are disabled in the calendar Priority Not selected "Please select a priority." General Save/Update fails "Something went wrong." Search No results found Display empty state in sections
#565
**Tasks Module - Contractor Portal** > **7\. Success Message Handling**
~57 tok
## **7\. Success Message Handling** **Action** **Success Message** Task created "Task has been created successfully." Task updated "Task has been updated successfully." Task deleted "Task has been deleted successfully."
#566
**Tasks Module - Contractor Portal** > **8\. Edge Cases**
~348 tok
## **8\. Edge Cases** **Scenario** **Expected Behavior** No tasks in the To-Do section "No data found" message displayed in the To-Do section No tasks in the In-Progress section "No data found" message displayed in the In-Progress section No tasks in the Completed tab "No data found" message displayed in the Completed section Both To-Do and In-Progress are empty Both sections display "No data found" independently Task status changed to Completed Task moves to Completed tab; Completed Date recorded Completed task status changed back to To-Do Task moves back to the To-Do section; Completed Date cleared Search with no matches Empty state displayed in relevant sections Filter returns no results Empty state displayed with active filters shown as chips The agency deletes the task while the contractor is viewing Task disappears on next refresh The contractor tries to delete the agency-assigned task Delete option disabled/hidden The task due date is today "Due Today" badge displayed in orange The task due date has passed "Overdue" badge displayed in red Multiple filters applied All filter chips displayed; results match all selected criteria Contractor edits agency-assigned task Changes sync to the Agency Portal Very long task title Text truncated with ellipses in a table The same task title exists Both tasks displayed (no uniqueness validation)
#567
**Tasks Module - Contractor Portal** > **9\. Acceptance Criteria**
~765 tok
## **9\. Acceptance Criteria** * **Global Task Module Behavior –** The system must display all tasks across all agencies globally and allow the contractor to edit agency-assigned tasks only when viewing the correct agency workspace, otherwise showing a Wrong Brand pop-up and locking the task in read-only mode. * **Initial Empty State –** When no tasks exist at all, the system must show a global empty message with CTA; when a specific tab has no tasks, the system must show the contextual empty state message for that tab. * **To-Do Tab Display –** The system must show both To-Do and In-Progress tasks with expandable sections, correct Due Today / Overdue tagging, and overdue email notifications sent once when a task crosses its due date. * **Completed Tab Display –** The system must move tasks to the Completed tab immediately upon status change and display them using the completed-task table configuration. * **Create New Task –** Clicking New Task must open the creation drawer and create a standalone personal task with the contractor as both Reporter and Assignee, without any brand/project/event linkage. * **Edit Task –** The system must allow editing of title, status, priority, due date, and description for personal and agency tasks (but only within the correct workspace), keeping Reporter and Assignee read-only and syncing updates back to the Agency Portal. * **Delete Task –** The system must allow contractors to delete only self-created tasks, showing a confirmation pop-up and permanently removing them from the Tasks module and Dashboard upon confirmation. * **Status Change Logic –** The system must allow changing status from table, drawer, or Dashboard and automatically move tasks between To-Do, In-Progress, and Completed sections based on the selected status. * **Completed Date Logic –** The system must record the current date when a task is marked Completed, clear it when reverted, and regenerate a new date when re-completed. * **Cross-Portal Sync –** For agency-assigned tasks, all contractor updates (status, priority, due date, description) must instantly sync to the Agency Portal. * **Search Functionality –** The system must filter tasks by title within the active tab in real time, searching To-Do + In-Progress together but only Completed in the Completed tab. * **Filter Functionality –** Applying filters must instantly update the task list, show each active filter as a chip with remove action, and support “Clear All Filters” to reset the list. * **Filter Chip Display –** Each filter chip must clearly show filter type and value, remove instantly on (X) click, and update the list dynamically. * **Cross-Module Display –** Task updates must reflect in both Contractor Dashboard Task widget and Agency Portal task views, with real-time status syncing. * **Email & Notification Logic –** The system must send emails and in-app notifications to the contractor and reporter as per defined triggers (assignment, status changes, overdue, deletion, due-date changes, assignee changes).
#568
**Tasks Module - Contractor Portal** > **10\. Dependencies**
~178 tok
## **10\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** User Authentication Security Dependency Cannot identify the contractor for the Reporter/Assignee fields Project/Event Management Data Dependency Cannot display project and event information for agency-assigned tasks Brand Management Data Dependency Cannot display brand information; Brand filter is non-functional Agency Tasks Module Integration Dependency Agency-assigned tasks not received; changes not synced back Contractor Dashboard Integration Dependency Tasks not displayed in the Dashboard Task Management section Calendar/Date Service Feature Dependency The Due Date picker is non-functional
#569
**Tasks Module - Contractor Portal** >
~1 tok
##
#570
**Tasks Module - Contractor Portal** > **11\. References**
~48 tok
## **11\. References** * **Link** \- [**Click Here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=13461-169172&t=Zeng5V4IZu3iF7VZ-0) ✅ Account Settings > General Tab
#571
**Account Settings - General Tab (Contractor Portal)**
~14 tok
# **Account Settings - General Tab (Contractor Portal)**
#572
**Account Settings - General Tab (Contractor Portal)** > **1\. Module Overview**
~123 tok
## **1\. Module Overview** * **Module Name:** Account Settings - General Tab (Contractor Portal) * **Purpose:** Enable contractors to manage their personal information, professional details, profile photo, and password settings in a centralized location * **Business Goal:** Provide contractors with control over their account details while ensuring data consistency across all agencies they work with, as changes made in Account Settings reflect globally across the Pixally platform
#573
**Account Settings - General Tab (Contractor Portal)** > **2\. User Roles & Permissions**
~69 tok
## **2\. User Roles & Permissions** **Role** **Description** **Key Permissions** Contractor Contractors working with multiple agencies Update profile photo, edit personal information (name, email, phone), edit professional information (website/portfolio), change password
#574
**Account Settings - General Tab (Contractor Portal)** > **3\. User Flow**
~332 tok
## **3\. User Flow** **Navigation Path:** Contractor Portal > Profile Menu > Account Settings > General Tab **Step-by-Step Flow:** **Step 1:** Contractor clicks on profile menu in top-right corner **Step 2:** Contractor selects "Account Settings" from the profile menu **Step 3:** Account Settings page loads with multiple tabs: General, Location & Travel, Working Days, Additional, Gear, Finances **Step 4:** The General tab is selected by default, displaying profile photo, personal information, professional information, and the change password sections **Step 5:** The Contractor can upload/update their profile photo by clicking on the circular update photo button **Step 6:** Contractor can modify personal information fields (first name, last name, email, phone) **Step 7:** If the email is changed, the contractor must verify the new email by entering the confirmation code **Step 8:** Contractor can update professional information (website/portfolio link) **Step 9:** The Contractor can change the password by entering the old password, the new password, and repeating the new password **Step 10:** Contractor clicks the common "Save changes" button to save all modifications **Step 11:** The System validates all fields and either displays validation errors (if applicable) or saves changes successfully
#575
**Account Settings - General Tab (Contractor Portal)** > **4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#576
**Account Settings - General Tab (Contractor Portal)** > **4\. Functional Logic** > **4.1 Global Settings Behavior**
~102 tok
### **4.1 Global Settings Behavior** **4.1.1 Cross-Agency Impact:** * Account Settings in the Contractor Portal is global across all agencies * Any updates made in Account Settings reflect in all agencies where the contractor is associated with * Changes sync to both Contractor Portal and Agency Portal views * Profile photo, name, email, phone, and professional details update across all agencies
#577
**Account Settings - General Tab (Contractor Portal)** > **4\. Functional Logic** > **4.2 Profile Picture**
~233 tok
### **4.2 Profile Picture**
* **Default Picture Display:** The System displays a default pic with initials (i.e., John Doe - JD) when no profile photo is uploaded
* **Upload/Update Profile Photo:** Client can upload or update a profile photo by clicking on the “+ Update Photo”, and it opens the user's local file system to upload the profile photo. For validations - [**Click Here**](#rz46wbuniv5a)
* **Profile Photo Sync:** When the profile photo is updated, it automatically displays in the agency portal modules defined below
* Contractor Management list (Active & Setup Required Tab) and detailed profile view
* Project/Event listing > users
* Global Search
* Dashboard > Event Management
* Project details
* Event tab
* Activity tab
* Files/Document tab
* Notes tab > Public notes
* Email center
* Task Module
* Finance Module#578
**Account Settings - General Tab (Contractor Portal)** > **4\. Functional Logic** > **4.3 Personal Information Section**
~380 tok
### **4.3 Personal Information Section**
* **Section Header:** "Personal Information"
* **Pre-filled Behavior:** All personal information fields will be pre-populated with existing contractor details as added by the agency during invitation and when the contractor has filled them during onboarding, i.e., first name, last name, email address, phone number
* **Email Verification Flow:**
* When the contractor updates their email address, the system sends a verification code to the new email. The verification code is valid for 10 minutes
* "Confirm the new email" field appears below the email field
* The contractor must enter the verification code to confirm the email change
* Email update only completes after successful verification
* If the same email is entered as the current, no verification is triggered
* Impact of email change: All future email communications will be sent to the contractor’s updated email address
* **Impact on Agency System:** When the contractor updates personal information, it automatically updates the contractor’s details in the Contractor Management of the agency portal and in the following modules
* Contractor Management list (Active & Setup Required Tab) and detailed profile view
* Project/Event listing > users
* Project details
* Event tab
* Activity tab
* Files/Document tab
* Notes tab > Public notes
* Email center
* Task Module
* Finance Module#579
**Account Settings - General Tab (Contractor Portal)** > **4\. Functional Logic** > **4.4 Professional Information Section**
~62 tok
### **4.4 Professional Information Section** * **Section Header:** "Professional Information" * **Pre-filled Behavior:** Website/portfolio field pre-populated if previously provided * The user can add, update, or remove the website URL link
#580
**Account Settings - General Tab (Contractor Portal)** > **4\. Functional Logic** > **4.5 Change Password Section**
~310 tok
### **4.5 Change Password Section**
* **Section Header:** "Change Password"
* In the Change Password section, three input fields will be displayed: one for entering the old password, one for entering the new password, and one for repeating the new password.
* **Password Validation Display:**
* Validation messages are shown progressively as the user types (one at a time) to guide the user through each requirement
* Users must enter their old password to change to a new password
* The old password must match the contractor’s current password, the new password must be different from the old password, and the new password and the “repeat new password” fields must match.
* New passwords must meet all specified requirements (as defined in the validation table)
* If the password is changed, the user will not be logged out and will remain in the system
* After a password change, if the user tries to log in using the old password, it will display the error message, and the user will not be able to log in
* New password – The contractor will be able to log in using the new password after successfully changing the password
* Field Details. Refer - [**Click Here**](#fiiyp57c6wo)#581
**Account Settings - General Tab (Contractor Portal)** > **4\. Functional Logic** > **4.6 Save Changes Button**
~113 tok
### **4.6 Save Changes Button**
* **Button Display:** Each section will have a separate "Save changes" button
* **Save Flow:**
* User clicks "Save changes."
* System validates all modified fields
* If validation fails: Display inline error messages under respective fields
* If validation passes:
* Save all changes to the database
* Sync changes across all agencies
* Display a success message#582
**Account Settings - General Tab (Contractor Portal)** > **4\. Functional Logic** > **4.7 Cancel Button**
~29 tok
### **4.7 Cancel Button** * **Cancel Behavior:** Resets fields to their original values, without making changes
#583
**Account Settings - General Tab (Contractor Portal)** > **4\. Functional Logic** > **4.8 Date & Time Preferences**
~249 tok
### **4.8 Date & Time Preferences** * The date format dropdown offers multiple options including DD/MM/YYYY, MM/DD/YYYY, and YYYY-MM-DD formats. * The selected date format applies immediately to all date displays throughout the contractor's interface. * The day of the week is automatically included with the selected date format by default (e.g., "Sat, 25/12/2023"). There is no option to disable this setting. * The time format setting provides two options: 12 hour (AM/PM) format and 24 hour format. * Date and time preferences are contractor-specific and do not affect how other users see timestamps in shared contexts. * The system stores dates and times internally in ISO format regardless of display preferences to ensure consistency. * Contractors can revert to default settings using the "Reset Changes" button or confirm their selections with "Save changes". * Timezone detection occurs automatically based on the contractor's browser settings or IP address location.
#584
**Account Settings - General Tab (Contractor Portal)** > **4\. Functional Logic** > **4.9 Date Formatting Guide**
~183 tok
### **4.9 Date Formatting Guide** * The Date Formatting Guide can be accessed by clicking the "Date Formatting Guide" link located in the top-right corner of the Date & Time Preferences section. * The guide displays examples of how dates appear with different format selections. * Format options include multiple standards like DD/MM/YYYY, MM/DD/YYYY, and YYYY-MM-DD to accommodate regional preferences. * The guide shows real-time previews of how dates will display with the current settings applied. * This section is informational only and actual date format changes occur in the Date & Time Preferences settings per user. * The guide helps users understand the impact of their format choices before making changes.
#585
**Account Settings - General Tab (Contractor Portal)** > **5\. Field Details & Validations**
~10 tok
## **5\. Field Details & Validations**
#586
**Account Settings - General Tab (Contractor Portal)** > **5\. Field Details & Validations** > **5.1 Personal Information**
~135 tok
### **5.1 Personal Information** **Field Name** **Required** **Validation Rules** Profile Photo File Upload JPEG/JPG format, Max 15 MB, Only from the local system First Name Yes Maximum 50 characters Last Name Yes Maximum 50 characters Email Address Yes Valid email format; Must be unique across the Pixally platform Confirm New Email Yes (when email changed) Must match verification code sent to new email Phone Number No Valid phone number format; Country code selector with US (+1) as default; Uniqueness not required
#587
**Account Settings - General Tab (Contractor Portal)** > **5\. Field Details & Validations** > **5.2 Professional Information**
~35 tok
### **5.2 Professional Information** **Field Name** **Required** **Validation Rules** Website or Link to Portfolio No Valid URL format
#588
**Account Settings - General Tab (Contractor Portal)** > **5\. Field Details & Validations** > **5.3 Change Password**
~124 tok
### **5.3 Change Password** **Field Name** **Required** **Validation Rules** Old Password Yes (when changing password) Must match current account password New Password Yes (when changing password) Min 6 - Max 20 chars, 1 uppercase, 1 lowercase, 1 number, 1 special char, no spaces; Cannot be the same as the old password Repeat New Password Yes (when changing password) Must exactly match the New Password field Eye Icon Toggle Eye toggle on click, it will hide/display the password
#589
**Account Settings - General Tab (Contractor Portal)** > **6\. Error Message Handling**
~471 tok
## **6\. Error Message Handling** **Field** **Validation Scenario** **Error Message** Profile Photo Invalid file format "Please upload a valid JPEG or JPG image." Profile Photo File exceeds 15 MB "Image size cannot exceed 15 MB." First Name Empty "Please enter your first name." First Name Exceeds 50 characters "First name cannot exceed 50 characters." Last Name Empty "Please enter your last name." Last Name Exceeds 50 characters "Last name cannot exceed 50 characters." Email Address Empty "Please enter your email address." Email Address Invalid format "Please enter a valid email address." Email Address Already exists in the system "This email is already registered." Confirm New Email Empty "Please enter the verification code." Confirm New Email Invalid code "Invalid verification code. Please try again." Phone Number Invalid format "Please enter a valid phone number." Website URL Invalid format "Please enter a valid URL." Old Password Empty submission "Please enter your current password." Old Password Incorrect password "Current password is incorrect." New Password Empty submission "Please enter a new password." New Password Length < 6 characters "Password must be at least 6 characters." New Password Length > 20 characters "Password cannot exceed 20 characters." New Password Missing uppercase "Password must contain at least one uppercase letter." New Password Missing lowercase "Password must contain at least one lowercase letter." New Password Missing number "Password must contain at least one number." New Password Missing special character "Password must contain at least one special character." New Password Contains spaces "Password cannot contain spaces." Repeat New Password Passwords don't match "Passwords do not match." General Save operation fails "Something went wrong."
#590
**Account Settings - General Tab (Contractor Portal)** > **7\. Success Message Handling**
~80 tok
## **7\. Success Message Handling** **Action** **Success Message** Profile photo uploaded/updated "Profile photo updated successfully." Personal information updated successfully "Your account information has been updated successfully." Password changed successfully "Your password has been changed successfully."
#591
**Account Settings - General Tab (Contractor Portal)** >
~1 tok
##
#592
**Account Settings - General Tab (Contractor Portal)** > **8\. Edge Cases**
~213 tok
## **8\. Edge Cases** **Scenario** **Expected Behavior** Contractor uploads logo instead of personal photo System accepts image; guidance text reminds "Please upload a photo of yourself, not a logo." Contractor enters the same email as the current one No verification flow triggered; email remains unchanged Phone number already exists in the system Allowed - phone number uniqueness not enforced Contractor tries to save with validation errors Form displays inline errors; no data saved Password meets all requirements except one Progressive error message shows the next missing requirement Network error during save Display "Something went wrong. Please try again." Contractor cancels after making changes All fields reset to their original saved values Profile photo upload fails Display "Failed to upload photo. Please try again."
#593
**Account Settings - General Tab (Contractor Portal)** > **9\. Acceptance Criteria**
~288 tok
## **9\. Acceptance Criteria** * The default avatar shows initials with a fixed background color when no photo is uploaded * Profile photo accepts .jpeg, .jpg formats up to 15 MB * First name and last name are required, with max 50 characters each * Email must be a valid format and unique across Pixally * Changing email triggers verification code flow; the new email is saved only after verification * Phone number is optional with country code selector (US default); uniqueness not enforced * Website/portfolio link is optional; must be a valid URL format if provided * The old password must match the current account password * New password requires: Min 6, Max 20, 1 uppercase, 1 lowercase, 1 number, 1 special char, no spaces * Progressive password error messages show the next missing requirement * The new password cannot match the old password * Repeat password must exactly match the new password * A successful password change logs the user out * The common "Save changes" button saves all sections * The cancel button resets all fields to their original values * All changes sync globally across all agencies
#594
**Account Settings - General Tab (Contractor Portal)** > **10\. Dependencies**
~116 tok
## **10\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** User Authentication Security Dependency Cannot verify old password; cannot enforce re-login after password change Email Service Integration Dependency Cannot send verification code for email change File Storage System Data Dependency Cannot upload or display profile photos Database Sync Service Integration Dependency Changes are not reflected across agencies
#595
**Account Settings - General Tab (Contractor Portal)** > **11\. References**
~45 tok
## **11\. References** * **Link -** [**Click Here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=7948-186002&t=NNg4dIg7UjP9pcET-0) ✅ Location & Travel
#596
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD**
~317 tok
# **Account Settings — Location & Travel Tab (Contractor Portal) — FRD** **Change summary (this version):** Adds the **address-change confirmation pop-up** shown to the contractor when they save a changed **street address** (**Update Anyway** saves + triggers the agency email; **Cancel** or **×** discards — nothing saved). The pop-up lists **every** agency the contractor works with, each with its current-event count and events. Only a **Google Places street change** counts as an address change (drives the pop-up, the agency-side history/timestamp, and the agency email); Apartment #/ZIP-only edits do not. Reinforces that address changes affect **new/future assignments only** (existing assignments frozen regardless of date; past/completed unaffected), that **distance recalculates but the travel fee never changes automatically**, and that an **email** is sent to the associated agency/agencies. **Note:** Pop-up copy is **final** per the approved design (§4.2.6). The agency email fires on **Update Anyway** and goes to all agencies the contractor is associated with; its content is managed separately (§4.2.5). **Related FRD:** Contractor Profile Module (Agency Portal) — agency-side Address display, last-changed timestamp, and previous-address history.
#597
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **1\. Module Overview**
~195 tok
## **1\. Module Overview**
* **Module Name:** Account Settings - Location & Travel Tab (Contractor Portal)
* **Purpose:** Enable contractors to manage their home address and travel preferences for each brand they work with, ensuring accurate distance calculations for travel-fee determinations and providing control over travel-willingness settings.
* **Business Goal:**
* Provide contractors the ability to update their home address, used to calculate distance between the event venue and the contractor's location for travel-fee purposes.
* Allow contractors to set agency-specific travel preferences based on agency-defined parameters.
* Ensure data consistency across all agencies, as home-address changes reflect globally across the Pixally platform.#598
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **2\. User Roles & Permissions**
~69 tok
## **2\. User Roles & Permissions** **Role** **Description** **Key Permissions** Contractor Contractors working with multiple agencies and brands Update home address (address line, apartment number, ZIP code, city); modify travel preferences for each brand independently
#599
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **3\. User Flow**
~587 tok
## **3\. User Flow** **Navigation Path:** Contractor Portal > Profile Menu > Account Settings > Location & Travel Tab **Step-by-Step Flow:** 1. Contractor clicks the profile menu (top-right). 2. Contractor selects "Account Settings." 3. Account Settings loads with tabs: General, Location & Travel, Working Days, Additional, Gear, Finances. 4. Contractor clicks the "Location & Travel" tab. 5. The tab displays two sections: **Home Address** (pre-filled with onboarding data) and **Travel Preferences** (all brands, pre-filled with onboarding data). 6. Initially, Cancel and Save Changes buttons are hidden in the Home Address section. 7. Contractor clicks the Address Line field to modify their home address. 8. As the contractor types, Google API displays location suggestions. 9. Contractor selects an address from Google API suggestions. 10. System auto-populates: Address Line, Apartment Number (if available), ZIP Code (if available), Country, State, City (if available). 11. If Apartment Number or ZIP Code isn't provided by Google API, inline errors appear below the respective fields. 12. Contractor manually enters the missing Apartment Number and ZIP Code. 13. Once a different address is selected from Google API, Cancel and Save Changes buttons appear for the Home Address section. 14. Contractor clicks "Save changes." 15. **If the street address changed (via Google selection), the system displays the Address-Change Confirmation pop-up (§4.2.6),** which lists all the agencies the contractor works with. On **Update Anyway**, the change is saved and applied across all agencies; on **Cancel**, the change is discarded and nothing is saved. 16. System validates required fields and either displays validation errors or saves successfully. 17. In Travel Preferences, the contractor views brand-wise settings (most recently assigned brand first). 18. For each brand, the contractor can modify two dropdowns (travel without fees / travel with fees). 19. Modifying any travel preference dropdown reveals Cancel and Save Changes for that section. 20. Contractor clicks "Save changes" in Travel Preferences. 21. System saves the updated travel preferences for all modified brands. 22. System displays a success message. 23. Clicking Cancel in either section resets fields to their original values without changes.
#600
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#601
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **4\. Functional Logic** > **4.1 Global Behavior**
~264 tok
### **4.1 Global Behavior** * The **Home Address** is a **global setting** shared across all agencies the contractor is associated with. Any update reflects immediately across every agency and brand connected to the contractor. * The Home Address is the contractor's **primary location reference**, used to calculate the distance between the contractor's home and the event venue for **travel eligibility and travel-fee calculations**. * **Travel Preferences** are **brand-specific** and can vary per brand. Under the same agency, defaults initially match across brands, but the contractor can customize per brand without impacting other brands or global settings. * **Agency-side visibility (cross-reference):** the current Home Address, a **last-changed timestamp**, and a **hover history of the last two previous addresses** are displayed on the **agency side** (Contractor Profile → Info tab). This history/timestamp is **not** shown to the contractor in this tab. Full display specification is in the **Contractor Profile Module FRD, §4.3.1**.
#602
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **4\. Functional Logic** > **4.2 Home Address Section**
~8 tok
### **4.2 Home Address Section**
#603
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **4\. Functional Logic** > **4.2 Home Address Section** > **4.2.1 Initial State**
~66 tok
#### **4.2.1 Initial State** * All Home Address fields are pre-populated with onboarding values. Fields: Address Line, Apartment Number, ZIP Code, Country, State, City. * Country, State, and City are **read-only** and populated from the Google API selection.
#604
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **4\. Functional Logic** > **4.2 Home Address Section** > **4.2.2 Address Line Field — Google API Integration**
~203 tok
#### **4.2.2 Address Line Field — Google API Integration** * The Address Line field supports Google Places Autocomplete. * On typing, suggestions appear in a dropdown. The contractor **must select** an address from suggestions; manual entry without selecting is **not allowed**. * **Auto-population on selection:** Address Line (always), Apartment Number (if provided), ZIP Code (if provided), Country (always → read-only), State (always → read-only), City (if provided → read-only). * **Missing data handling:** if Google API doesn't return Apartment Number or ZIP Code, the field remains blank, an inline error appears, and the contractor must complete it before saving. * **City field behavior:** read-only after selection; if not returned, remains blank until a more specific address is selected.
#605
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **4\. Functional Logic** > **4.2 Home Address Section** > **4.2.3 Button Display Logic**
~157 tok
#### **4.2.3 Button Display Logic** * Cancel and Save changes are hidden on initial load. * Buttons appear when: a new address is selected from Google API, or the contractor modifies Apartment Number or ZIP Code. * **Save Changes behavior:** validate mandatory fields; on failure show inline errors; on success save, **sync globally**, and display a success message. Saving affects only the Home Address section. (If the street address changed, the Address-Change Confirmation pop-up in §4.2.6 gates the save.) * **Cancel behavior:** revert all Home Address fields to last saved values; clear errors; hide Save/Cancel.
#606
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **4\. Functional Logic** > **4.2 Home Address Section** > **4.2.4 Update Impact Across Contractor Portal**
~87 tok
#### **4.2.4 Update Impact Across Contractor Portal** * After saving, the updated Home Address appears immediately in Contractor Portal → Account Settings → Location & Travel → Home Address. * No other contractor-portal modules are directly modified by the update; distance and travel-fee logic are triggered per the main system logic (§4.2.5).
#607
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **4\. Functional Logic** > **4.2 Home Address Section** > **4.2.5 Home Address Update Impact**
~265 tok
#### **4.2.5 Home Address Update Impact**
* The Home Address is the reference location for calculating distance between event venue and contractor, and for determining travel eligibility / travel-fee rules.
* **When the Home Address is updated:**
* **Only new/future event assignments** use the new address for distance and travel-fee calculation.
* **Events already assigned** to the contractor retain their **previously calculated distance and travel-fee amounts**, **regardless of the event's date**. Past/completed events are likewise unaffected. No retroactive recalculation is applied.
* **Distance/miles recalculate** to the new address for new assignments; however, the **travel fee is never changed automatically** — any adjustment is made **manually by the agency**.
* An **email notification** is sent to the agency/agencies the contractor is currently associated with, informing them of the address change (email content managed separately). See the Contractor Profile Module FRD §4.3.2 for the agency-side surfacing.#608
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **4\. Functional Logic** > **4.2 Home Address Section** > **4.2.6 Address-Change Confirmation Pop-up (Contractor) — UPDATED**
~792 tok
#### **4.2.6 Address-Change Confirmation Pop-up (Contractor) — UPDATED**
**Trigger**
* Displayed when the contractor **clicks Save** in the Home Address section **and the street address has changed via Google Places selection**.
* **Not** triggered when only the Apartment Number or ZIP Code was edited (no new Google selection).
**Purpose**
* Because the Home Address is **global**, a change propagates to **every agency the contractor works with**. The pop-up makes this reach explicit, lists every agency it will affect (flagging where the contractor currently has active events), and reminds them that travel fees for those events will **not** update automatically.
**Type & behavior** _(structure modeled on the "Warning: Pending Items" delete-contractor pop-up)_
* **Non-blocking, warning-style** confirmation dialog with two actions:
* **Update Anyway:** saves the new address (proceeds with the normal Save flow, global sync, and agency email).
* **Cancel:** dismisses the dialog and **discards** the change — the address is **not** saved; fields revert to last saved values.
* The pop-up appears **every time** a qualifying (street/Google) address change is saved.
* **Email trigger:** the agency email (§4.2.5) is sent **only** when the contractor selects **Update Anyway** on a qualifying street-address change. It is **not** sent on **Cancel**, and **not** sent for Apartment #/ZIP-only edits.
**Layout & content** _(final copy, per the approved design):_
1. **Title (with warning icon):** "Please confirm your address change".
2. **Close (×) icon:** top-right; dismisses the pop-up and **discards** the change (equivalent to Cancel — nothing is saved).
3. **Intro line:** "Your home address is used by every agency you work with, so this change will apply across all of them:"
4. **Per-agency breakdown** — one group **per agency the contractor works with** (all of them):
* **Group header:** agency name (left) + current-event count (right) — e.g., "BRIGHT STUDIO … 2 current events". Agencies with none show "no current events" — e.g., "NOVA AGENCY … no current events".
* **Event rows (per event):** a project/event icon and the project name on the first line; below it, the **color-coded event-type dot** + event type + date — e.g., "Jadon & Monika Wedding" / "• Rehearsal Dinner · Dec 20, 2025". Omitted for agencies with no current events.
5. **Warning callout (highlighted, with info icon):** "Updating your address won't automatically change your travel fee for these events. Please coordinate with each agency directly."
6. **Buttons:** "Cancel" (discards — nothing is saved) · "Update Anyway" (saves the new address; applies across all agencies).
**Data shown**
* **Agencies listed:** **all** agencies the contractor is currently associated with. Agencies with no current events are still listed and show a zero/none indicator.
* **"Current events":** the contractor's **upcoming, already-assigned events** (not yet completed) with each agency — i.e., the events whose distance and travel fee are **frozen** and will **not** be re-priced by this change (§4.2.5).
**Empty / edge states**#609
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **4\. Functional Logic** > **4.2 Home Address Section** > **4.2.6 Address-Change Confirmation Pop-up (Contractor) — UPDATED**
~84 tok
* **No current events with any agency:** the pop-up is still shown (the new address still applies to future assignments); every agency is still listed, each with a "no current events" indicator; the general travel-fee caution is still displayed. * **Single agency:** a single agency group is shown; behavior is otherwise identical.
#610
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **4\. Functional Logic** > **4.3 Travel Preferences**
~8 tok
### **4.3 Travel Preferences**
#611
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **4\. Functional Logic** > **4.3 Travel Preferences** > **4.3.1 Initial Values**
~73 tok
#### **4.3.1 Initial Values** * On first open, all Travel Preference dropdowns are pre-populated with values selected during onboarding. * If not modified during onboarding, the system applies the **agency's base Travel Preference settings** as defaults for all brands under that agency.
#612
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **4\. Functional Logic** > **4.3 Travel Preferences** > **4.3.2 Brand Display Logic**
~139 tok
#### **4.3.2 Brand Display Logic**
* Brands display in descending order by most recently assigned brand (most recent first).
* A contractor may be associated with multiple brands under the same agency and brands under different agencies. Each brand appears as a **separate row** with its own dropdowns.
* Per brand, the system displays the Brand Logo & Name and two dropdowns:
* "How far are you willing to travel (one way) without requiring a travel fee?"
* "How far are you willing to travel (one way) when a travel fee is provided?"#613
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **4\. Functional Logic** > **4.3 Travel Preferences** > **4.3.3 Travel Without Requiring a Travel Fee**
~155 tok
#### **4.3.3 Travel Without Requiring a Travel Fee** * Default (starting) value is the agency's **base travel distance** from Agency General Settings (e.g., base = 50 → first dropdown starts at 50 miles). * **Dropdown options:** 10 numeric options in **25-mile increments** from the base value, plus **"Any"** at the end (total 11). * **If agency base = "Any":** the contractor sees only "Any," the dropdown is **read-only**, and the value cannot be modified. * All brands under the same agency follow the same base value; the contractor can modify per brand. Different agencies may have different base values.
#614
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **4\. Functional Logic** > **4.3 Travel Preferences** > **4.3.4 Travel When a Travel Fee Is Provided**
~157 tok
#### **4.3.4 Travel When a Travel Fee Is Provided** * Values depend on the first dropdown. **Starting value = (first dropdown value + 25 miles)** (e.g., 50 → 75; 100 → 125). * **Dropdown options:** 10 numeric options in 25-mile increments plus **"Any"** (total 11). * **Dynamic update:** changing the first dropdown refreshes the second dropdown's options (recalculated from the new value + 25). * **Special case — first dropdown = "Any":** the second dropdown auto-sets to **"Any"** and becomes **read-only**. * **Validation:** the second dropdown value is always ≥ the first dropdown value through its option logic.
#615
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **4\. Functional Logic** > **4.3 Travel Preferences** > **4.3.5 Button Display Logic**
~144 tok
#### **4.3.5 Button Display Logic** * Cancel and Save changes are hidden on first open; they appear when any brand's first or second dropdown value changes. Modifying any single brand triggers button visibility for the entire section. * **Save Changes:** validates that both dropdowns for every brand have a value; on success saves updated preferences per modified brand, syncs to the database, shows a success message, and hides the buttons. Saved values apply only to the specific brand. * **Cancel:** resets all dropdowns to last saved values and hides the buttons.
#616
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **4\. Functional Logic** > **4.3 Travel Preferences** > **4.3.6 Travel Preference Impact**
~223 tok
#### **4.3.6 Travel Preference Impact** * Updates to Travel Preferences apply **only to future project assignments**. Changes do **not** affect projects/events already assigned; previously assigned projects retain their original travel distance calculations and travel-fee pay rates (no retroactive updates). * **Travel Without Fee:** one-way distance (miles) the contractor will travel at no additional fee. * **Travel With Fee:** maximum one-way distance the contractor will travel when a fee is provided. * **Travel Fee Calculation Formula:** Travel Fee = round-trip distance × rate per mile. * **Example:** Travel without fee = 50 miles; venue 40 miles → no fee; venue 60 miles → fee applies. * **Future impact:** updated values are used to determine travel-fee eligibility and calculations for **new** project assignments only; already-assigned events are not recalculated.
#617
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **5\. Field Details & Validations**
~10 tok
## **5\. Field Details & Validations**
#618
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **5\. Field Details & Validations** > **5.1 Home Address Fields**
~170 tok
### **5.1 Home Address Fields** **Field Name** **Field Type** **Required** **Validation Rules** **Editability** Address Line Text input with Google Places autocomplete Yes Must be selected from Google API suggestions; cannot be manually typed Editable via Google API only Apartment Number Text input Yes Max 50 characters; always mandatory Editable / manually fillable ZIP Code Text input Yes Valid ZIP code format Editable / manually fillable Country Text Yes Auto-filled by Google API Read-only after selection State Text Yes Auto-filled by Google API Read-only after selection City Text No Auto-filled by Google API Read-only (even if blank)
#619
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **5\. Field Details & Validations** > **5.2 Address-Change Confirmation Pop-up — UPDATED**
~330 tok
### **5.2 Address-Change Confirmation Pop-up — UPDATED** **Field / Element** **Type** **Validation / Behavior** Pop-up trigger System Fires on Save **only** when the street address changed via Google selection; not on Apartment #/ZIP-only edits Title Text (display) Warning-style heading with warning icon: "Please confirm your address change" Close (×) icon Button Top-right; dismisses and discards the change (equivalent to Cancel — nothing is saved) Intro line Text (display) "Your home address is used by every agency you work with, so this change will apply across all of them:" Per-agency group header Text (display) Agency name (left) + current-event count (right); one group per agency the contractor works with (all agencies); shows "no current events" if none Event row Text (display) Project/event icon + project name; below it, color-coded event-type dot + event type + date, per current event Warning callout Info card (highlighted, info icon) "Updating your address won't automatically change your travel fee for these events. Please coordinate with each agency directly." Update Anyway Button Saves the new address; applies across all agencies; proceeds with global sync and agency email Cancel Button Discards the change; nothing is saved; fields revert to last saved values
#620
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **5\. Field Details & Validations** > **5.3 Travel Preferences Fields**
~128 tok
### **5.3 Travel Preferences Fields** **Field Name** **Field Type** **Required** **Validation Rules** **Dependency** How far are you willing to travel (one way) without requiring a travel fee? Dropdown Yes Select one from available values; options based on agency settings Agency General Settings (base value) How far are you willing to travel (one way) when a travel fee is provided? Dropdown Yes Select one from available values; starting value = (first dropdown + 25 miles) First dropdown value
#621
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **6\. Error Message Handling**
~8 tok
## **6\. Error Message Handling**
#622
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **6\. Error Message Handling** > **6.1 Home Address Errors**
~178 tok
### **6.1 Home Address Errors** **Field** **Validation Scenario** **Error Message** Address Line Empty submission "Please select your address." Apartment Number Empty after Google API selection "Please enter the apartment number." Apartment Number Empty on save "Please enter the apartment number." Apartment Number Exceeds 50 characters "Apartment number cannot exceed 50 characters." ZIP Code Empty after Google API selection or on save "Please enter the ZIP code." ZIP Code Invalid format "Please enter a valid ZIP code." General Save operation fails "Something went wrong." Google API Network error during address call "Unable to fetch address suggestions. Please try again later."
#623
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **6\. Error Message Handling** > **6.2 Travel Preferences Errors**
~37 tok
### **6.2 Travel Preferences Errors** **Field** **Validation Scenario** **Error Message** General Save operation fails "Something went wrong."
#624
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **7\. Success Message Handling**
~129 tok
## **7\. Success Message Handling** **Action** **Success Message** **Display Location** Home address updated successfully "Contractor settings updated successfully." Top of the page (toast/banner) Travel preferences updated successfully "Contractor settings updated successfully." Top of the page (toast/banner) Note: The Address-Change Confirmation pop-up is a pre-save confirmation, not a success message. The success toast displays after the contractor selects **Update Anyway** and the save completes.
#625
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **8\. Edge Cases**
~650 tok
## **8\. Edge Cases** **Scenario** **Expected Behavior** Google API doesn't return Apartment Number and ZIP Code Inline errors under both fields; contractor must fill both before saving Contractor selects the same address as currently saved Buttons still appear; on save, success message displays even though nothing changed. (No pop-up if the street address did not change.) Contractor modifies Home Address and Travel Preferences simultaneously Independent Save/Cancel per section; each saved separately Agency changes base travel preference after the contractor has set preferences Existing preferences unchanged; dropdown options update on next edit First dropdown changed from specific mileage to "Any" Second dropdown auto-sets to "Any" and becomes read-only Contractor newly added to a brand Brand appears in Travel Preferences with default values (agency + onboarding) Multiple brands under the same agency All brands display with identical base settings Contractor clicks Cancel after making changes Fields reset to last saved values; buttons hidden; no success message **Contractor changes the street address and clicks Save** Address-Change Confirmation pop-up appears listing agencies with current events; **Update Anyway** saves and sends the agency email; **Cancel** discards **Contractor edits only Apartment # or ZIP and clicks Save** No confirmation pop-up; change saves normally; no agency email; no agency-side history entry **Contractor clicks Cancel on the confirmation pop-up** Address change is discarded; nothing is saved; fields revert to last saved values **Contractor closes the pop-up via the × icon** Same as Cancel — the change is discarded; nothing is saved **Contractor works with multiple agencies** Pop-up lists **every** agency the contractor works with, each with its current-event count (and events, where any); on **Update Anyway** the new address applies across all agencies **Contractor has no current/upcoming events with any agency** Pop-up still appears (address applies to future assignments); every agency is still listed with a "no current events" indicator; the travel-fee caution is still shown; **Update Anyway** saves **Contractor changes address while already assigned to future-dated events** Assigned events keep their original distance and travel fee (no recalculation); only new assignments use the new address **Address change would place the contractor beyond a no-fee threshold for future assignments** Distance recalculates for new assignments; no travel fee is added automatically; agency adjusts manually
#626
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **9\. Acceptance Criteria**
~467 tok
## **9\. Acceptance Criteria** * **Global Behavior:** Home Address is global across all agencies and used for distance/travel-fee calculations; Travel Preferences remain brand-specific. * **Home Address Prefill / Autocomplete / Auto-populate / Edit detection / Save / Cancel:** function as specified (Google-selection required; read-only Country/State/City; Save/Cancel appear on change; global sync on save). * **Address-Change Pop-up (UPDATED):** On saving a **street change made via Google selection**, a warning-style pop-up is shown that (a) states the address is shared across all agencies, (b) lists **every** agency the contractor works with, each with a current-event count (and its events, where any), and (c) cautions that travel fees for those events won't update automatically and to coordinate with each agency. **Update Anyway** saves (and triggers the agency email) and applies across all agencies; **Cancel** discards (nothing saved). Shown on every qualifying change; **not** shown for Apartment #/ZIP-only edits. * **Change trigger consistency:** Only a Google-selection street change counts as an address change for the pop-up, the agency-side timestamp/history (Contractor Profile Module FRD), and the agency email. * **Home Address Impact:** Updated address applies **only to new/future assignments**; already-assigned events (any date) and past/completed events are never recalculated. * **Distance vs. fee:** Distance/miles recalculate to the new address for new assignments; the **travel fee never changes automatically** (manual by the agency). * **Agency email:** An email is sent to the associated agency/agencies on a qualifying address change (content managed separately). * **Travel Preferences options / dependency / "Any" behavior / impact:** function as specified; updated preferences apply only to future assignments.
#627
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **10\. Dependencies**
~270 tok
## **10\. Dependencies** **Module** **Dependency Type** **Impact if Unavailable** Google Places API External Integration Cannot fetch address suggestions; contractor cannot update home address; Address Line becomes non-functional Agency General Settings Data Dependency Cannot determine base values for travel preference dropdowns Contractor Onboarding Module Data Dependency Initial home address and travel preferences cannot be pre-populated Distance Calculation Module Business-Logic Dependency Distance for new assignments cannot be recalculated on address change Email Service Service Dependency Address-change email to the agency cannot be sent Database Sync Service Integration Dependency Home-address changes not reflected across agencies; travel preferences do not sync Event Management (cross-agency) Data Dependency Cannot populate the per-agency current-event list and counts shown in the confirmation pop-up Agency Portal (Contractor Profile) Integration Dependency Updated address, timestamp, and history do not reflect on the agency side
#628
**Account Settings — Location & Travel Tab (Contractor Portal) — FRD** > **11\. References**
~55 tok
## **11\. References** * **Figma Link:** Click Here * **Related FRD:** Contractor Profile Module (Agency Portal) — agency-side Address display, last-changed timestamp, and previous-address history. ✅ Working Days
#629
**Account Settings - Working Days Tab (Contractor Portal)**
~15 tok
# **Account Settings - Working Days Tab (Contractor Portal)**
#630
**Account Settings - Working Days Tab (Contractor Portal)** > **1\. Module Overview**
~139 tok
## **1\. Module Overview** * **Module Name:** Account Settings - Working Days Tab (Contractor Portal) * **Purpose:** Enable contractors to configure their weekly working day availability and set their booking window limit for future event assignments * **Business Goal:** Allow contractors to control their availability across all agencies they work with, ensuring agencies can only assign them to events on their designated working days and within their specified booking window, while maintaining flexibility to update these preferences as needed
#631
**Account Settings - Working Days Tab (Contractor Portal)** > **2\. User Roles & Permissions**
~62 tok
## **2\. User Roles & Permissions** **Role** **Description** **Key Permissions** Contractor Contractors working with multiple agencies Set working days (Sunday-Saturday), set availability for future bookings limit, update availability settings
#632
**Account Settings - Working Days Tab (Contractor Portal)** > **3\. User Flow**
~232 tok
## **3\. User Flow** **Navigation Path:** Contractor Portal > Profile Menu > Account Settings > Working Days Tab **Step-by-Step Flow:** **Step 1:** Contractor clicks on the profile menu and selects "Account Settings" **Step 2:** Contractor clicks on the "Working Days" tab from the tab navigation **Step 3:** System displays the Working Days section with day toggles and the Availability for Future Bookings dropdown **Step 4:** All fields are pre-filled with values set by the contractor during onboarding **Step 5:** The Contractor can toggle days on/off to update working day availability **Step 6:** The Contractor can change the Availability for Future Bookings dropdown value **Step 7:** When any change is made, the Cancel and Save changes buttons appear **Step 8:** Contractor clicks "Save changes" to save updates **Step 9:** System validates and displays a warning pop-up if applicable, then saves changes
#633
**Account Settings - Working Days Tab (Contractor Portal)** > **4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#634
**Account Settings - Working Days Tab (Contractor Portal)** > **4\. Functional Logic** > **4.1 Global Settings Behavior**
~85 tok
### **4.1 Global Settings Behavior** * Working Days settings are global across all agencies the contractor works with * Changes apply to all current and future agency relationships * Agencies cannot assign a contractor to events on non-working days * Settings reflect immediately in the Calendar module as striped do-not-book days
#635
**Account Settings - Working Days Tab (Contractor Portal)** > **4\. Functional Logic** > **4.2 Working Days Section**
~186 tok
### **4.2 Working Days Section** **Day Toggles:** * Seven toggle switches displayed vertically (Sunday through Saturday) * Each toggle has a day name label next to it * Toggle ON (yellow/orange): Contractor is available to work on this day and can be assigned to an event on that day * Toggle OFF (gray): Contractor is not available to work on this day **Toggle Behavior:** * Click the toggle to switch between ON and OFF states * At least one day must remain ON at all times * When any toggle state changes from the saved value, the Cancel and Save changes buttons appear **Pre-filled Values:** * All toggles display values set by the contractor during onboarding * Reflects the current saved working days configuration
#636
**Account Settings - Working Days Tab (Contractor Portal)** > **4\. Functional Logic** > **4.3 Availability for Future Bookings Section**
~261 tok
### **4.3 Availability for Future Bookings Section**
* Pre-filled with the value set during onboarding
**Dropdown Options:**
* 3 Months
* 6 Months
* 9 Months
* 12 Months
* 15 Months
* 18 Months
* No limit
**Future Availability Logic**
* Indicates the availability of contractors and how far they can be booked in advance.
* **Rolling Window Behavior**
* The selected time frame (e.g., 6 months) is always counted from today’s date, not a fixed calendar range.
* As the current date progresses, the system automatically adds one more day at the end of the window, maintaining the selected duration (rolling availability).
* This ensures agencies can always book up to the chosen future period without the contractor having to update it daily.
* If “No Limit” is selected, then an agency can book the contractor at any time.
* Future availability will be throughout the system for all the agencies.
* Unavailable days (beyond booking window) display as striped do-not-book days in Calendar#637
**Account Settings - Working Days Tab (Contractor Portal)** > **4\. Functional Logic** > **4.4 Save Changes Button Logic**
~793 tok
### **4.4 Save Changes Button Logic**
* "Cancel" and "Save changes" buttons appear when any field value differs from the saved state
* Buttons are hidden when no changes are made
**Scenario 1 - Working Day Turned Off with Existing Events:**
1. Contractor turns off a working day (e.g., Sunday)
2. Contractor clicks "Save changes."
3. System checks if the contractor has any assigned events on that day across all agencies
4. If events exist on that day, display a Warning pop-up:
* **Header:** "Warning!"
* **Message:** "You currently have jobs scheduled on \[Day Name(s)\]. You're still required to complete those \[Day Name\] jobs unless otherwise agreed with the studio owner."
* **Note Box:** "Please Note: Removing your working days will likely result in fewer overall bookings."
* **Buttons:** "Cancel" and "Update Anyway"
5. If "Update Anyway" is clicked: Save changes, existing events remain, but no new events can be assigned on that day
6. If "Cancel" is clicked: Close pop-up, no changes saved
**Scenario 2 - Working Day Turned Off without Existing Events:**
1. Contractor turns off a working day
2. The contractor clicks "Save changes."
3. System checks and finds no events on that day
4. Display informational pop-up:
* **Header:** "Warning!"
* **Note Box:** "Please Note: Removing your working days will likely result in fewer overall bookings."
* **Buttons:** "Cancel" and "Update Anyway"
5. Proceed based on the button clicked
**Scenario 3 - Booking Window Decreased with Existing Events:**
1. Contractor decreases booking window (e.g., from 12 months to 3 months)
2. Contractor clicks "Save changes."
3. System checks if the contractor has any assigned events outside the new booking window
4. If events exist outside the new window, display a Warning pop-up:
* **Header:** "Warning!"
* **Message:** "You currently have jobs scheduled outside this new booking window. You are still required to complete those jobs unless explicitly agreed otherwise with the studio owner."
* **Note Box:** "Please Note: Shortening your booking window will likely result in fewer overall bookings."
* **Buttons:** "Cancel" and "Update Anyway"
5. If "Update Anyway" is clicked: Save changes, existing events remain, but no new events can be assigned beyond the new window
6. If "Cancel" is clicked: Close pop-up, no changes saved
**Scenario 4 - Booking Window Decreased (No events assigned to contractor):**
1. The contractor decreases the booking window, and there are no events
2. Contractor clicks "Save changes."
1. Display a Warning pop-up:
2. **Note Box**: "Please Note: Shortening your booking window will likely result in significantly fewer overall bookings."
3. **Buttons**: "Cancel" and "Update.”
3. If "**Update**" is clicked:
1. Save all changes
2. No new events can be assigned to the contractor based on the updated restrictions
3. Display success message: "Working days and availability updated successfully."
**Scenario 5 - Both Working Days Turned Off, AND Booking Window Decreased (Combined Changes with Existing Events):**#638
**Account Settings - Working Days Tab (Contractor Portal)** > **4\. Functional Logic** > **4.4 Save Changes Button Logic**
~735 tok
1. Contractor turns off one or more working days that have existing events AND decreases the booking window, and there are events outside the new booking window
2. Contractor clicks "Save changes."
3. System checks both conditions:
* If the contractor has assigned events on the turned-off day(s)
* If the contractor has assigned events outside the new booking window
4. If BOTH conditions are true, display a Combined Warning pop-up:
* **Header**: "Warning!"
* **Message Line 1**: "You currently have jobs scheduled on \[Day Name(s)\]. You're still required to complete those \[Day Name\] jobs unless otherwise agreed with the studio owner."
* **Message Line 2**: "You also have jobs scheduled outside your new booking window. You are still required to complete those jobs unless explicitly agreed otherwise with the studio owner."
* **Note Box**: "Please Note: Removing your working days and shortening your booking window will likely result in significantly fewer overall bookings."
* **Buttons**: "Cancel" and "Update Anyway.”
5. If "**Update Anyway**" is clicked:
* Save all changes
* All existing events remain assigned (both on turned-off days and outside the booking window)
* No new events can be assigned to the contractor based on the updated restrictions
* Display success message: "Working days and availability updated successfully."
6. If "**Cancel**" is clicked:
* Close pop-up
* No changes saved
**Scenario 6 - Both Working Days Turned Off, AND Booking Window Decreased (No events assigned to contractor):**
1. Contractor turns off one or more working days and has no existing events, AND decreases the booking window, and there are no events
2. Contractor clicks "Save changes."
1. Display a Warning pop-up:
2. **Note Box**: "Please Note: Removing your working days and shortening your booking window will likely result in significantly fewer overall bookings."
3. **Buttons**: "Cancel" and "Update.”
3. If "**Update**" is clicked:
1. Save all changes
2. No new events can be assigned to the contractor based on the updated restrictions
3. Display success message: "Working days and availability updated successfully."
4. If "**Cancel**" is clicked:
1. Close pop-up
2. No changes saved
**Scenario 7 - Both Working Days Turned On, AND Booking Window increased (Combined Changes with Existing Events):**
1. Contractor turns on one or more working days that have existing events AND increases the booking window, and there are events outside the new booking window
2. Contractor clicks "Save changes."
1. Since the contractor is adding availability (turning working days on and increasing the booking window)
2. **No warning or error pop-up is displayed**
3. Changes are saved immediately
4. A success message appears: Working days and availability updated successfully."#639
**Account Settings - Working Days Tab (Contractor Portal)** > **4\. Functional Logic** > **4.5 Cancel Button Behavior**
~40 tok
### **4.5 Cancel Button Behavior** * Resets all fields to previously saved values * Discards all unsaved changes * Hides Cancel and Save changes buttons
#640
**Account Settings - Working Days Tab (Contractor Portal)** > **4\. Functional Logic** > **4.6 Impact on Other Modules**
~195 tok
### **4.6 Impact on Other Modules** **4.6.1 Calendar Module:** * Non-working days (toggled OFF) display as striped do-not-book days * Days beyond the booking window display as striped do-not-book days * Updates are reflected immediately after saving **4.6.2 Agency Portal Impact** * The contractor does not appear in Check Availability on Do Not Book Days * Contractor not shown in the suggested contractor lists for events on non-working days * Contractor not shown for events beyond their booking window **4.6.3 Existing Event Assignments** * Already assigned events are NOT affected by the working days changes * Contractor must complete assigned events even if the day is later turned off * Only future event assignments are affected by settings changes
#641
**Account Settings - Working Days Tab (Contractor Portal)** > **5\. Field Details & Validations**
~10 tok
## **5\. Field Details & Validations**
#642
**Account Settings - Working Days Tab (Contractor Portal)** > **5\. Field Details & Validations** > **5.1 Working Days Toggles**
~44 tok
### **5.1 Working Days Toggles** **Field Name** **Required** **Validation Rules** Sunday to Monday Toggle Atleast One At least one day must remain ON across all toggles
#643
**Account Settings - Working Days Tab (Contractor Portal)** > **5\. Field Details & Validations** >
~1 tok
###
#644
**Account Settings - Working Days Tab (Contractor Portal)** > **5\. Field Details & Validations** >
~1 tok
###
#645
**Account Settings - Working Days Tab (Contractor Portal)** > **5\. Field Details & Validations** >
~1 tok
###
#646
**Account Settings - Working Days Tab (Contractor Portal)** > **5\. Field Details & Validations** > **5.2 Availability for Future Bookings**
~63 tok
### **5.2 Availability for Future Bookings** **Field Name** **Required** **Validation Rules** Availability for Future Bookings Yes Must select one option from the dropdown: 3 Months, 6 Months, 9 Months, 12 Months, 15 Months, 18 Months, No limit
#647
**Account Settings - Working Days Tab (Contractor Portal)** > **6\. Error Message Handling**
~103 tok
## **6\. Error Message Handling** **Field/Action** **Validation Scenario** **Error Message** Working Days Toggles All days turned OFF "Please select at least one day of availability." Availability for Future Bookings Not selected "Select future days availability!" Save Changes Save operation fails "Something went wrong. Please try again." General Network connection lost "Something went wrong."
#648
**Account Settings - Working Days Tab (Contractor Portal)** > **7\. Success Message Handling**
~43 tok
## **7\. Success Message Handling** **Action** **Success Message** Working days updated "Working days updated successfully." Availability for future bookings updated
#649
**Account Settings - Working Days Tab (Contractor Portal)** > **8\. Edge Cases**
~268 tok
## **8\. Edge Cases** **Scenario** **Expected Behavior** Contractor tries to turn off all days Inline error: "Please select at least one day of availability." The last remaining ON toggle cannot be turned OFF Contractor turns off the day with events from multiple agencies The warning shows the day name; events from all agencies on that day are checked Contractor decreases booking window, no events outside the window Informational warning about fewer bookings displayed Contractor increases booking window No warning; saves immediately Contractor makes changes, then clicks Cancel All changes discarded; fields reset to saved values Contractor turns off multiple days with events on some Warning lists all day names with existing events Event assigned on turned-off day before save Contractor must complete the event; only future assignments are blocked Contractor changes booking window from "No limit" to "3 Months." Warning if events exist beyond 3 months from the current date Network error during save Error message displayed; changes not saved
#650
**Account Settings - Working Days Tab (Contractor Portal)** > **9\. Acceptance Criteria**
~8 tok
## **9\. Acceptance Criteria**
#651
**Account Settings - Working Days Tab (Contractor Portal)** > **9\. Acceptance Criteria**
~800 tok
* **Global Settings Behavior –** System must apply working-day and booking-window settings globally across all agencies, update availability instantly in Calendar, and prevent agencies from assigning events on non-working or out-of-window days. * **Working Days Toggle Behavior –** System must show seven ON/OFF toggles (Sun–Sat), pre-filled from onboarding, ensure at least one day stays ON, and show Cancel/Save buttons whenever any toggle changes. * **Working Day ON State –** When a toggle is ON, the contractor must be treated as available and assignable for that weekday across all agencies. * **Working Day OFF State –** When a toggle is OFF, the system must mark that weekday as unavailable, display striped days in the Calendar, and prevent future event assignments on that day. * **Future Booking Window –** System must display a dropdown (3–18 months + No Limit), prefilled from onboarding, and must enforce a rolling availability window counted from today across all agencies. * **Future Window Impact –** Days beyond the selected booking window must display as striped, and the contractor must be excluded from assignment or check availability for events beyond that limit. * **Change Detection –** The System must show Cancel and Save changes buttons only when any toggle or booking window value differs from the saved data. * **Save Flow – Working Day OFF With Existing Events –** System must detect existing events on newly turned-off days and show a Warning pop-up requiring “Update Anyway” to continue or “Cancel” to discard. * **Save Flow – Working Day OFF With No Existing Events –** System must show an informational Warning pop-up and save changes only when contractor confirms “Update Anyway.” * **Save Flow – Booking Window Decrease With Existing Events –** System must detect events outside the new window and show a Warning pop-up requiring confirmation before saving. * **Save Flow – Booking Window Decrease With No Events –** System must show a Warning pop-up and save updated restrictions only if contractor confirms “Update.” * **Save Flow – Combined Changes With Existing Events –** If the contractor turns OFF working days _and_ reduces the booking window with events affected in both groups, the system must show a combined Warning pop-up listing both impacts and proceed only if “Update Anyway” is clicked. * **Save Flow – Combined Changes With No Events –** If the contractor turns OFF working days and reduces the booking window, but no events exist, the system must show a general Warning pop-up and save changes on “Update.” * **Save Flow – Expanding Availability (Turning ON Days or Increasing Window) –** System must save immediately without warnings and show a success message. * **Cancel Button Behavior –** Cancel must revert all toggles and booking-window selections to last saved values and hide action buttons. * **Calendar Module Impact –** Saved working-day toggles and booking-window updates must instantly reflect as striped dates; turning days ON/OFF or altering future availability must update Calendar immediately. * **Agency Portal Impact –** Contractors must not appear in Check Availability or suggested lists
#652
**Account Settings - Working Days Tab (Contractor Portal)** > **9\. Acceptance Criteria**
~64 tok
for non-working days or dates outside the booking window. * **Existing Event Assignments –** Existing events must remain unaffected by changes, and contractors must still complete them even if the day is turned OFF or falls outside the new booking window.
#653
**Account Settings - Working Days Tab (Contractor Portal)** >
~1 tok
##
#654
**Account Settings - Working Days Tab (Contractor Portal)** > **10\. Dependencies**
~146 tok
## **10\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** User Authentication Security Dependency Cannot identify the contractor for to load/save settings Event Management System Data Dependency Cannot check for existing events when validating changes Calendar Module Integration Dependency Cannot reflect working days as striped unavailable days Agency Portal - Availability Check Integration Dependency Cannot filter the contractor from unavailable days Onboarding System Data Dependency Cannot retrieve initial working days values
#655
**Account Settings - Working Days Tab (Contractor Portal)** > **11\. References**
~44 tok
## **11\. References** * **Link** \- [Click Here](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=7948-186243&t=Domgr1X3sDK9PNue-0) ✅ Additional Settings
#656
**Account Settings - Additional Tab (Contractor Portal)**
~15 tok
# **Account Settings - Additional Tab (Contractor Portal)**
#657
**Account Settings - Additional Tab (Contractor Portal)** > **1\. Module Overview**
~128 tok
## **1\. Module Overview** * **Module Name:** Account Settings - Additional Tab (Contractor Portal) * **Purpose:** Enable contractors to manage their additional personal preferences, including preferred name, meal preferences, dietary restrictions, and allergy information * **Business Goal:** Allow contractors to maintain accurate personal preferences that can be shared with agencies and clients for event planning purposes, ensuring proper accommodation of dietary needs and personal name preferences
#658
**Account Settings - Additional Tab (Contractor Portal)** > **2\. User Roles & Permissions**
~65 tok
## **2\. User Roles & Permissions** **Role** **Description** **Key Permissions** Contractor Contractors working with multiple agencies Update preferred name, select meal preference, toggle and describe dietary restrictions, toggle and describe allergies
#659
**Account Settings - Additional Tab (Contractor Portal)** > **3\. User Flow**
~207 tok
## **3\. User Flow** **Navigation Path:** Contractor Portal > Profile Menu > Account Settings > Additional Tab **Step-by-Step Flow:** **Step 1:** Contractor clicks on the profile menu and selects "Account Settings" **Step 2:** Contractor clicks on the "Additional" tab from the tab navigation **Step 3:** System displays the Additional Settings section with all fields pre-filled from onboarding data **Step 4:** Contractor can modify preferred name, meal preference, dietary restrictions, or allergy information **Step 5:** When any change is made, the Cancel and Save changes buttons appear **Step 6:** Contractor clicks "Save changes" to save updates **Step 7:** System validates all fields and saves changes **Step 8:** Updated information reflects in Contractor Portal settings and Agency Portal contractor profile
#660
**Account Settings - Additional Tab (Contractor Portal)** > **4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#661
**Account Settings - Additional Tab (Contractor Portal)** > **4\. Functional Logic** > **4.1 Global Settings Behavior**
~66 tok
### **4.1 Global Settings Behavior** * Additional Settings data is saved in the Contractor Portal * Data displays in Agency Portal > Contractor Profile > Info Tab * Agencies can view contractors' meal preferences and dietary information for event planning
#662
**Account Settings - Additional Tab (Contractor Portal)** > **4\. Functional Logic** > **4.2 Additional Settings Section**
~43 tok
### **4.2 Additional Settings Section** * All fields are pre-populated with values set by the contractor during onboarding * Reflects the current saved configuration
#663
**Account Settings - Additional Tab (Contractor Portal)** > **4\. Functional Logic** > **4.3 Preferred Name Field**
~56 tok
### **4.3 Preferred Name Field** **Field Label:** "Preferred Name" **Field Type:** Text input **Pre-filled:** Yes, with value from onboarding **Purpose:** Name contractor prefers to be called (may differ from legal name)
#664
**Account Settings - Additional Tab (Contractor Portal)** > **4\. Functional Logic** > **4.4 Meal Preference Field**
~118 tok
### **4.4 Meal Preference Field** **Field Label:** "Meal Preference" with info icon (ⓘ) **Info Icon:** Displays a tooltip on hover with additional information about meal preferences **Field Type:** Radio button group (single select) **Options:** * Chicken * Beef * Fish * Vegetarian * Vegan/Gluten-Free **Pre-filled:** Yes, with option selected during onboarding **Purpose:** Indicates the contractor's meal preference for events where meals are offered
#665
**Account Settings - Additional Tab (Contractor Portal)** > **4\. Functional Logic** > **4.5 Dietary Restrictions Toggle**
~115 tok
### **4.5 Dietary Restrictions Toggle** **Toggle Label:** "I have dietary restrictions." **Field Type:** Toggle switch **Toggle States:** * OFF (gray): No dietary restrictions; input field hidden * ON (yellow/orange): Has dietary restrictions; input field appears **Input Field (when toggle ON):** * Label: "Dietary Restrictions" * Type: Text input * Pre-filled: Yes, if previously provided * Purpose: Describe specific dietary restrictions
#666
**Account Settings - Additional Tab (Contractor Portal)** > **4\. Functional Logic** > **4.6 Allergy Toggle**
~101 tok
### **4.6 Allergy Toggle** **Toggle Label:** "I have an allergy." **Field Type:** Toggle switch **Toggle States:** * OFF (gray): No allergies; input field hidden * ON (yellow/orange): Has allergies; input field appears **Input Field (when toggle ON):** * Label: "Describe your allergy" * Type: Text input * Pre-filled: Yes, if previously provided * Purpose: Describe specific allergies
#667
**Account Settings - Additional Tab (Contractor Portal)** > **4\. Functional Logic** > **4.7 Multiple Selections**
~66 tok
### **4.7 Multiple Selections** **Combined Toggles:** * Both "I have dietary restrictions" and "I have an allergy" can be toggled ON simultaneously * Each displays its own input field when ON * A contractor can have both dietary restrictions and allergies
#668
**Account Settings - Additional Tab (Contractor Portal)** > **4\. Functional Logic** >
~1 tok
###
#669
**Account Settings - Additional Tab (Contractor Portal)** > **4\. Functional Logic** > **4.8 Save Changes Button Logic**
~158 tok
### **4.8 Save Changes Button Logic** **Button Display:** * "Cancel" and "Save changes" buttons appear only when any field value differs from the saved state * Buttons are hidden when no changes are made * "Save changes" button * "Cancel" button **Save Flow:** 1. Contractor makes changes to any field 2. Cancel and Save changes buttons appear 3. Contractor clicks "Save changes." 4. System validates all fields 5. If validation fails: Display inline error messages 6. If validation passes: Save changes and display a success message 7. Updated data syncs to Agency Portal > contractor module > contractor profile
#670
**Account Settings - Additional Tab (Contractor Portal)** > **4\. Functional Logic** > **4.9 Cancel Button Behavior**
~55 tok
### **4.9 Cancel Button Behavior** **Cancel Action:** * Resets all fields to previously saved values * Hides Cancel and Save changes buttons * Discards all unsaved changes * Does not navigate away from the page
#671
**Account Settings - Additional Tab (Contractor Portal)** > **5\. Field Details & Validations**
~135 tok
## **5\. Field Details & Validations** **Field Name** **Required** **Validation Rules** Preferred Name Yes Maximum 100 characters Meal Preference Yes One option must be selected from: Chicken, Beef, Fish, Vegetarian, Vegan/Gluten-Free I have dietary restrictions No Toggle ON/OFF Dietary Restrictions (input) Yes (when toggle ON) Maximum 100 characters; required when toggle is ON I have an allergy No Toggle ON/OFF Describe your allergy (input) Yes (when toggle ON) Maximum 100 characters; required when toggle is ON
#672
**Account Settings - Additional Tab (Contractor Portal)** > **6\. Error Message Handling**
~174 tok
## **6\. Error Message Handling** **Field** **Validation Scenario** **Error Message** Preferred Name Empty "Please enter your preferred name." Preferred Name Exceeds 100 characters "Preferred name must be less than 100 characters." Dietary Restrictions Toggle ON but input empty "Please provide dietary restriction details." Dietary Restrictions Exceeds 100 characters "Dietary restrictions must be less than 100 characters." Describe your allergy Toggle ON but input empty "Please provide allergy details." Describe your allergy Exceeds 100 characters "Allergy name must be less than 100 characters." General Save operation fails "Something went wrong. Please try again."
#673
**Account Settings - Additional Tab (Contractor Portal)** >
~1 tok
##
#674
**Account Settings - Additional Tab (Contractor Portal)** > **7\. Success Message Handling**
~35 tok
## **7\. Success Message Handling** **Action** **Success Message** Additional settings saved "Additional settings updated successfully."
#675
**Account Settings - Additional Tab (Contractor Portal)** > **8\. Edge Cases**
~237 tok
## **8\. Edge Cases** **Scenario** **Expected Behavior** Contractor clears preferred name and saves Validation error: "Please enter your preferred name." Dietary restrictions toggle ON but input left empty Validation error: "Please provide dietary restriction details." Allergy toggle ON but input left empty Validation error: "Please provide allergy details." Both dietary restrictions and allergy toggles ON Both input fields displayed; both must be filled Contractor toggles OFF dietary restrictions after entering text Input field hidden; text cleared; toggle saved as OFF Contractor toggles OFF allergy after entering text Input field hidden; text cleared; toggle saved as OFF Contractor makes changes then clicks Cancel All changes discarded; fields reset to saved values Network error during save Error message displayed; changes not saved Very long text entered (100+ characters) Character limit exceeded error displayed
#676
**Account Settings - Additional Tab (Contractor Portal)** > **9\. Acceptance Criteria**
~292 tok
## **9\. Acceptance Criteria** **Field Display:** * Additional tab accessible from Account Settings * All fields are pre-filled with values from onboarding * Preferred Name displays as text input * Meal Preference displays as a radio button group with an info icon tooltip * Dietary restrictions and allergies display as toggles **Toggle Behavior:** * Toggle ON reveals the input field below * Toggle OFF hides the input field * Both toggles can be ON simultaneously * Input required when the respective toggle is ON **Validation:** * Preferred Name required with a max of 100 characters * Meal Preference required (one selection) * Dietary Restrictions input required when toggle ON, max 100 characters * Allergy input required when toggle ON, max 100 characters * Inline error messages display for validation failures **Save and Cancel:** * Buttons appear only when changes made * Save validates and saves all changes * Cancel resets to previously saved values **Cross-Portal Sync:** * Saved data displays in Agency Portal > Contractor Profile > Info Tab * Meal preferences shared with clients when meals are offered
#677
**Account Settings - Additional Tab (Contractor Portal)** > **10\. Dependencies**
~100 tok
## **10\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** User Authentication Security Dependency Cannot identify the contractor to load/save settings Onboarding System Data Dependency Cannot retrieve initial additional settings values Agency Portal - Contractor Profile Integration Dependency Cannot display additional settings in the contractor info tab
#678
**Account Settings - Additional Tab (Contractor Portal)** > **11\. References**
~42 tok
## **11\. References** * **Link -** [**click here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=7948-186131&t=P4kOYrtfKXAaYrmP-0) ✅ Gear Tab
#679
**Account Settings - Gear Tab (Contractor Portal)**
~13 tok
# **Account Settings - Gear Tab (Contractor Portal)**
#680
**Account Settings - Gear Tab (Contractor Portal)** > **1\. Module Overview**
~130 tok
## **1\. Module Overview** * **Module Name:** Account Settings - Gear Tab (Contractor Portal) * **Purpose:** Enable contractors to manage their equipment inventory, including photography gear, videography gear, content creation equipment, drone details, and other miscellaneous gear * **Business Goal:** Allow contractors to maintain accurate equipment lists that can be viewed by agencies for event planning and contractor selection, ensuring agencies understand contractor capabilities and available equipment
#681
**Account Settings - Gear Tab (Contractor Portal)** > **2\. User Roles & Permissions**
~83 tok
## **2\. User Roles & Permissions** **Role** **Description** **Key Permissions** Contractor Contractors working with multiple agencies Update photography gear details, update videography gear details, update content creation gear details, update drone details, update other gear, upload/delete commercial drone license files
#682
**Account Settings - Gear Tab (Contractor Portal)** > **3\. User Flow**
~239 tok
## **3\. User Flow** **Navigation Path:** Contractor Portal > Profile Menu > Account Settings > Gear Tab **Step-by-Step Flow:** **Step 1:** Contractor clicks on the profile menu and selects "Account Settings" **Step 2:** Contractor clicks on the "Gear" tab from the tab navigation **Step 3:** The System displays Gear sections based on the contractor's invitation service type and data filled from onboarding **Step 4:** All sections are pre-filled with values set by the contractor during onboarding **Step 5:** The Contractor can modify any gear details in the displayed sections **Step 6:** When changes are made to a section, the Reset Changes and Save Changes buttons for that section become enabled **Step 7:** Contractor clicks "Save Changes" for the modified section, and the system validates and saves changes for that section **Step 9:** Updated information is reflected in the Contractor Portal and the Agency Portal contractor profile
#683
**Account Settings - Gear Tab (Contractor Portal)** > **4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#684
**Account Settings - Gear Tab (Contractor Portal)** > **4\. Functional Logic** > **4.1 Global Settings Behavior**
~104 tok
### **4.1 Global Settings Behavior**
* **Cross-Portal Display:**
* Gear details are saved in the Contractor Portal and reflect across all agencies, as the account settings are global. Refer - [Click Here](#xcp5hvwtk1qx)
* Data displays in Agency Portal > Contractor Profile > Gear Details Tab
* Agencies can view the contractor's equipment inventory for event planning and contractor selection#685
**Account Settings - Gear Tab (Contractor Portal)** > **4\. Functional Logic** > **4.2 Section Display Logic In Gear Tab**
~370 tok
### **4.2 Section Display Logic In Gear Tab**
* **Display Gear Details Based on Invitation Type:**
* **If Invited as Photographer:**
* Display: Photography Gear Details, Drone Details, Other Gear
* Requirement: Must fill either Photography Gear Details OR Drone Details (at least one required)
* If only Drone Drone-filled: Photography section displays, but is empty
* If only Photography filled: Drone section displays, but is empty
* **Invited as Videographer:**
* Display: Videography Gear Details, Drone Details, Other Gear
* Requirement: Must fill either Videography Gear Details OR Drone Details (at least one required)
* If only the Drone-filled Videography section displays, but is empty
* If only Videography filled: Drone section displays, but is empty
* **Invited** **as Content Creator:**
* Display: Content Creation Gear Details, Other Gear Details section
* Photography, Videography, and Drone sections do NOT display
* **Invited as Multiple Types (e.g., Photographer + Videographer):**
* Display all relevant sections, i.e., Photography gear details, Videography gear details, Drone Details
* Each section displays with a filled or empty state based on onboarding data
* **Section Order:**
1. Photography Gear Details
2. Videography Gear Details
3. Content Creation Gear Details
4. Drone Details
5. Other Gear#686
**Account Settings - Gear Tab (Contractor Portal)** > **4\. Functional Logic** > **4.3 Photography Gear Details Section**
~162 tok
### **4.3 Photography Gear Details Section** **Section Header:** "Photography Gear Details" **Pre-filled Behavior:** All fields pre-populated with values from onboarding if the contractor added photography gear **Multi-Select Dropdown Behavior:** * Selected values display as removable tags/chips with (×) icon * Click (×) to remove selection * Click the dropdown to add more selections **"Other" Option Logic:** * When "Other" is selected from the camera type dropdown, an input field appears below * An input field is required when "Other" is selected * Removing the "Other" tag hides the input field and clears the entered text
#687
**Account Settings - Gear Tab (Contractor Portal)** > **4\. Functional Logic** > **4.4 Videography Gear Details Section**
~90 tok
### **4.4 Videography Gear Details Section** **Section Header:** "Videography Gear Details" **Pre-filled Behavior:** All fields pre-populated with values from onboarding if the contractor added videography gear **Field Behavior:** Same as Photography Gear Details section (multi-select dropdowns, "Other" option logic. Refer - [Click Here](#o92c8iswozqq))
#688
**Account Settings - Gear Tab (Contractor Portal)** > **4\. Functional Logic** >
~1 tok
###
#689
**Account Settings - Gear Tab (Contractor Portal)** > **4\. Functional Logic** > **4.5 Content Creation Gear Details Section**
~386 tok
### **4.5 Content Creation Gear Details Section**
**Section Header:** "Content Creation Gear Details"
**Pre-filled Behavior:** Fields pre-populated with values from onboarding if the contractor added content creation gear
**Field Behavior:** Same multi-select dropdown and "Other" option
**4.6 Drone Details Section**
**Section Header:** "Drone Details"
**Pre-filled Behavior:** Fields pre-populated with values from onboarding if the contractor added drone details
**Display Logic:**
* Always displayed if the contractor is invited as a Photographer or Videographer
* If drone details are filled in, then even if the contractor is invited as a photographer, videographer, or both, all of these sections will become optional.
* Displays as empty if the contractor filled only Photography/Videography gear (not drone)
* Displays with filled values if the contractor added a drone during onboarding
**Commercial License Toggle Impact:**
* When toggle is OFF: Upload field hidden
* When toggle is ON: Upload field appears below
**File Upload Behavior:**
* "Upload file" button opens file browser
* Drag-and-drop also supported
* Can upload a maximum of 20 files total
* Each file has a maximum 15 MB size limit
**Uploaded Files Display:**
* Each file displays with:
* PDF/image icon
* File name
* File size
* Delete icon on the right side
* Click the delete icon to remove the file from the upload list
* Files are not permanently saved until the "Save Changes" button is clicked#690
**Account Settings - Gear Tab (Contractor Portal)** > **4\. Functional Logic** > **4.7 Other Gear Section**
~82 tok
### **4.7 Other Gear Section** **Section Header:** "Other Gear" **Description Text:** "Please list any other gear you own." **Display Logic:** Always displayed for all contractors regardless of invitation type **Pre-filled Behavior:** Text area pre-populated with a value from onboarding if the contractor added other gear
#691
**Account Settings - Gear Tab (Contractor Portal)** > **4\. Functional Logic** > **4.8 Reset Changes and Save Changes Buttons**
~329 tok
### **4.8 Reset Changes and Save Changes Buttons**
**Button Display Per Section:**
* Each section has its own set of Reset Changes and Save Changes buttons
* Buttons are positioned at the bottom-right of each section
**Button States:**
Initial State (No Changes):
* Both buttons are visible but disabled
* Cannot be clicked
After Changes Made:
* Both buttons become enabled
**Reset Changes Action:**
* Reverts all fields in that specific section to previously saved values
* Includes:
* Dropdown selections (all tags restored)
* Toggle states (ON/OFF restored)
* Text input values (restored to saved text)
* Uploaded files (deleted files reappear, newly added files removed)
* Only affects the specific section where the button is clicked, not other sections
* Buttons return to the disabled state after reset
**Save Changes Action:**
* Validates all required fields in that section
* If validation fails: Display inline error messages below respective fields
* If validation passes:
* Save all changes for that section (i.e., Photography)
* Display success message
**Agency Portal Impact**
* Updates sync immediately to all the agencies where the contractor is working and reflect in the Agency Portal > Contractor Profile > Gear Details Tab#692
**Account Settings - Gear Tab (Contractor Portal)** > **5\. Field Details & Validations**
~10 tok
## **5\. Field Details & Validations**
#693
**Account Settings - Gear Tab (Contractor Portal)** > **5\. Field Details & Validations** > **5.1 Photography Gear Details**
~254 tok
### **5.1 Photography Gear Details** **Field Name** **Field Type** **Required** **Validation Rules** Camera Type Multi-select dropdown Yes Options: Refer - [Click Here](https://docs.google.com/document/d/1KukN8q3E8zJ13OXlMMeg_fvNGjFPxApquZg5RNMcSvA/edit?tab=t.0#bookmark=id.f2wzlj4at2u4) At least one selection required; Includes "Other" option Camera Type(Other) Text input Yes (when Other selected) \- Maximum 100 characters \- Required when "Other" is selected from the Camera Type dropdown Lenses Multi-select dropdown No \- Options: Refer - [Click Here](https://docs.google.com/document/d/1KukN8q3E8zJ13OXlMMeg_fvNGjFPxApquZg5RNMcSvA/edit?tab=t.0#bookmark=id.8x3a0shr3ljp) \- Includes "Other" option Lenses(Other) Text input Yes (when Other selected) \- Maximum 100 characters \- Required when "Other" is selected from the Lenses dropdown I have an on-camera flash Toggle switch No Toggle between ON and OFF I have an off-camera flash Toggle switch No Toggle between ON and OFF
#694
**Account Settings - Gear Tab (Contractor Portal)** > **5\. Field Details & Validations** > **5.2 Videography Gear Details**
~255 tok
### **5.2 Videography Gear Details** **Field Name** **Field Type** **Required** **Validation Rules** Camera Type Multi-select dropdown Yes \- Options: Refer - [Click Here](https://docs.google.com/document/d/1KukN8q3E8zJ13OXlMMeg_fvNGjFPxApquZg5RNMcSvA/edit?tab=t.0#bookmark=id.75tf3o7m1ch4) \- At least one selection required; Includes "Other" option Camera Type(Other) Text input Yes (when Other selected) \- Maximum 100 characters \- Required when "Other" is selected from the Camera Type dropdown Lenses Multi-select dropdown No \- Options: Refer - [Click Here](https://docs.google.com/document/d/1KukN8q3E8zJ13OXlMMeg_fvNGjFPxApquZg5RNMcSvA/edit?tab=t.0#bookmark=id.19m5vpglalx) \- Includes "Other" option Lenses(Other) Text input Yes (when Other selected) \- Maximum 100 characters \- Required when "Other" is selected from the Lenses dropdown I have an on-camera flash Toggle switch No Toggle between ON and OFF I have an off-camera flash Toggle switch No Toggle between ON and OFF
#695
**Account Settings - Gear Tab (Contractor Portal)** > **5\. Field Details & Validations** > **5.3 Content Creation Gear Details**
~117 tok
### **5.3 Content Creation Gear Details** **Field Name** **Field Type** **Required** **Validation Rules** Phone Multi-select dropdown Yes \- Options: Refer - [Click Here](https://docs.google.com/document/d/1KukN8q3E8zJ13OXlMMeg_fvNGjFPxApquZg5RNMcSvA/edit?tab=t.0#bookmark=id.pvmi4dsjw1jc) \- Includes "Other" option Phone(Other) Text input Yes (when Other selected) \- Maximum 100 characters \- Required when "Other" is selected from the Phone dropdown
#696
**Account Settings - Gear Tab (Contractor Portal)** > **5\. Field Details & Validations** > **5.4 Drone Details**
~188 tok
### **5.4 Drone Details** **Field Name** **Field Type** **Required** **Validation Rules** Drone Model Multi-select dropdown No \- Options: Refer - [Click Here](https://docs.google.com/document/d/1KukN8q3E8zJ13OXlMMeg_fvNGjFPxApquZg5RNMcSvA/edit?tab=t.0#bookmark=id.w6grh7p454ck) \- Includes "Other" option Drone Model(Other) Text input Yes (when Other selected) \- Maximum 100 characters \- Required when "Other" is selected from the Drone Model dropdown I have a Commercial License Toggle switch No Toggle between ON and OFF; When ON, displays the Upload field Upload Commercial License File upload Yes (when toggle ON) \- Maximum 20 files \- Each file max 15 MB; Allowed formats: .jpeg, .jpg, .pdf; Required when toggle is ON
#697
**Account Settings - Gear Tab (Contractor Portal)** > **5\. Field Details & Validations** >
~1 tok
###
#698
**Account Settings - Gear Tab (Contractor Portal)** > **5\. Field Details & Validations** > **5.5 Other Gear**
~37 tok
### **5.5 Other Gear** **Field Name** **Field Type** **Required** **Validation Rules** Other Gear Input Text area No Maximum 100 characters
#699
**Account Settings - Gear Tab (Contractor Portal)** > **6\. Error Message Handling**
~386 tok
## **6\. Error Message Handling** **Field** **Validation Scenario** **Error Message** Camera Type (Photography) No selection made "Please select your camera type to proceed." Camera Type (Videography) No selection made "Please select your camera type to proceed." Camera Type(Other) Other selected, but the input is empty "Please specify your camera type." Camera Type(Other) Exceeds 100 characters "Camera type must be less than 100 characters." Lenses(Other) Other selected, but the input is empty "Please specify your lens type." Lenses(Other) Exceeds 100 characters "Lens type must be less than 100 characters." Phone(Other) Other selected, but the input is empty "Please specify your phone model." Phone(Other) Exceeds 100 characters "Phone model must be less than 100 characters." Drone Model(Other) Other selected, but the input is empty "Please specify your drone model." Drone Model(Other) Exceeds 100 characters "Drone model must be less than 100 characters." Upload Commercial License Toggle ON, but no file uploaded "Please upload your commercial drone license." Upload Commercial License File exceeds 15 MB "File size cannot exceed 15 MB." Upload Commercial License Invalid file format "Only .jpeg, .jpg, and .pdf files are allowed." Upload Commercial License More than 20 files uploaded "Maximum 20 files allowed." Other Gear Exceeds 100 characters "Other gear description must be less than 100 characters." General Save operation fails "Something went wrong. Please try again."
#700
**Account Settings - Gear Tab (Contractor Portal)** > **7\. Success Message Handling**
~56 tok
## **7\. Success Message Handling** **Action** **Success Message** Photography gear saved "Gear details updated successfully." Videography gear saved Content creation gear saved Drone details saved Other gear saved
#701
**Account Settings - Gear Tab (Contractor Portal)** > **8\. Edge Cases**
~294 tok
## **8\. Edge Cases** **Scenario** **Expected Behavior** Contractor invited as Photographer, but filled only Drone details The Photography section displays, but is empty; the Drone section displays with filled data Contractor invited as Videographer, but filled only Videography details The videography section displays filled data; the Drone section displays, but is empty Contractor removes "Other" tag after entering text "Other" input field hides; entered text is cleared Contractor uploads 20 files, then tries to upload 21st Error: "Maximum 20 files allowed." Commercial License toggle OFF after uploading files Upload field hides; files are cleared from selection Contractor deletes the uploaded file, then clicks Reset Changes Deleted file reappears in upload list Contractor makes changes to multiple sections Each section saves independently with its own buttons Network error during file upload File upload fails; error message displayed large file selected in drone license (>15 MB) Error: "File size cannot exceed 15 MB." Multiple "Other" options selected across different fields Each displays its own input field with an appropriate label
#702
**Account Settings - Gear Tab (Contractor Portal)** > **9\. Acceptance Criteria**
~425 tok
## **9\. Acceptance Criteria** * Gear tab accessible from Account Settings * Sections displayed based on contractor invitation type * The Photography section displays if invited as a Photographer * The videography section displays if invited as a Videographer * The Content Creation section displays if invited as a Content Creator * Drone section displays if invited as a Photographer or Videographer * The Other Gear section always displays * Empty sections display without data if not filled during onboarding * Camera Type, Lenses, Phone, and Drone Model are multi-select dropdowns * Selected values display as removable tags with (×) icon * "Other" option available in all dropdowns * Selecting "Other" displays an input field below the dropdown * Required when "Other" is selected; max 100 characters * Removing the "Other" tag hides the input field * Camera Type required in Photography and Videography sections * An error displays if trying to save without camera selection * Flash toggles switch between ON/OFF * Commercial License toggle shows/hides file upload field * The upload button and drag-and-drop are both functional * Maximum 20 files, each max 15 MB * Allowed formats: .jpeg, .jpg, .pdf * Uploaded files display with name, size, and a delete icon * The delete icon removes the file (not saved until Save Changes) * Each section has its own Reset Changes and Save Changes buttons * Buttons are disabled initially; enabled when changes are made * Reset reverts to saved state (including files) * Save validates and saves that section only * Saved gear details display in Agency Portal > Contractor Profile > Gear Details Tab
#703
**Account Settings - Gear Tab (Contractor Portal)** > **10\. Dependencies**
~120 tok
## **10\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** User Authentication Security Dependency Cannot identify the contractor to load/save gear details Onboarding System Data Dependency Cannot retrieve initial gear values or invitation type File Storage System Data Dependency Cannot upload or store commercial license files Agency Portal - Contractor Profile Integration Dependency Cannot display gear details in contractor profile
#704
**Account Settings - Gear Tab (Contractor Portal)** > **11\. References**
~46 tok
## **11\. References** * **Figma Link -** [**click here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=7948-186176&t=Domgr1X3sDK9PNue-0) ✅ Stripe Integration
#705
**Functional Requirements Document (FRD)**
~11 tok
# **Functional Requirements Document (FRD)**
#706
**Functional Requirements Document (FRD)** > **Module: Contractor Portal — Stripe Integration**
~55 tok
## **Module: Contractor Portal — Stripe Integration** **Document Version:** 1.0 **Created Date:** February 25, 2026 **Author:** Business Analyst **Module Path:** Contractor Portal > Account Settings > Stripe Integration
#707
**Functional Requirements Document (FRD)** > **1\. Module Overview**
~396 tok
## **1\. Module Overview** **Module Name:** Contractor Portal — Stripe Integration **Purpose:** The Stripe Integration module within the Contractor Portal enables contractors to connect their Stripe accounts with the agencies they work with, allowing them to receive online payments (ACH transfers) directly through the Pixally platform. This module provides contractors with a centralized view of all their agency relationships and brand assignments, along with the tools to complete Stripe onboarding, monitor verification status, and manage their payment connections across multiple agencies and brands. **Business Goals:** * Enable contractors to complete Stripe Connect onboarding so they can receive automated ACH payments from agencies, eliminating the need for offline or manual payment coordination. * Provide contractors with a single, consolidated view of their payment connection status across all agencies and brands they are assigned to. * Support both Unified (one Stripe account for all brands under an agency) and Individual (separate Stripe account per brand) configurations as determined by the agency, while keeping the contractor experience clear and consistent. * Ensure contractors receive timely guidance and actionable feedback at every stage of the Stripe onboarding lifecycle, including pending setup, requirements due, under review, connected, and restricted states. * Facilitate seamless handling of agency configuration changes, new brand assignments, and brand removals without requiring contractor intervention beyond what is necessary.
#708
**Functional Requirements Document (FRD)** >
~1 tok
##
#709
**Functional Requirements Document (FRD)** >
~1 tok
##
#710
**Functional Requirements Document (FRD)** >
~1 tok
##
#711
**Functional Requirements Document (FRD)** > **2\. User Roles & Permissions**
~197 tok
## **2\. User Roles & Permissions** **Role** **Access Level** **Permissions** **Contractor** Full Access View the Stripe Integration tab, view all assigned agencies and brands, initiate Stripe Connect onboarding, complete/update/retry Stripe setup, view connection statuses, view bank account details, and expand/collapse brand details **Agency Owner** No Access Cannot view or access the Contractor Portal; manages Stripe configuration from the Agency Global Settings **Access Rule:** The Stripe Integration tab is accessible exclusively to logged-in contractors within the Contractor Portal. The contractor can only view agencies they are currently associated with and only the brands they are assigned to within each agency. No agency-side role can access or view this module.
#712
**Functional Requirements Document (FRD)** > **3\. User Flow**
~5 tok
## **3\. User Flow**
#713
**Functional Requirements Document (FRD)** > **3\. User Flow** > **Page Access & Initial Load**
~284 tok
### **Page Access & Initial Load**
3.1 The contractor logs into the Contractor Portal and navigates to Account Settings from the left sidebar or profile menu.
3.2 The system loads the Account Settings page with horizontal tabs: General, Location & Travel, Working Days, Additional, Gear, and Stripe Integration.
3.3 The contractor clicks on the "Stripe Integration" tab.
3.4 The system loads the Stripe Integration page with the heading "Stripe Integration" and the subtitle "Manage your business information and payment preferences in one place."
3.5 The system displays a persistent informational banner at the top of the page titled "Payment configuration" with the subtitle "Connect and manage your payments with agencies."
3.6 The system retrieves all agencies the contractor is associated with and, for each agency, fetches only the brands the contractor is assigned to.
3.7 The system displays agency cards in alphabetical order, where each card shows the agency logo, agency name, configuration type badge ("Unified" or "Individual"), the number of brands assigned, and the applicable connection status and action buttons.#714
**Functional Requirements Document (FRD)** > **3\. User Flow** >
~1 tok
###
#715
**Functional Requirements Document (FRD)** > **3\. User Flow** > **Empty State**
~72 tok
### **Empty State** 3.8 If the contractor has no active agency associations (e.g., all agencies have removed the contractor), the system displays an empty state with a wallet icon, the heading "Financial Information," and the message "Start receiving payment directly through Pixally."
#716
**Functional Requirements Document (FRD)** > **3\. User Flow** > **Unified Flow — Agency Has Not Configured Stripe**
~105 tok
### **Unified Flow — Agency Has Not Configured Stripe** 3.9 If the agency has not yet configured their Stripe account, the system displays the agency card without any configuration badge and without any action button. 3.10 The system displays a yellow warning banner below the brand chips stating "\[Agency Name\] hasn't configured their Stripe account yet. You'll be able to connect once they complete their setup."
#717
**Functional Requirements Document (FRD)** > **3\. User Flow** > **Unified Flow — Ready to Connect**
~206 tok
### **Unified Flow — Ready to Connect** 3.11 Once the agency has completed their Stripe configuration in Unified mode, the system displays the agency card with a blue "Unified" badge and a yellow "Connect" button. 3.12 The contractor clicks the "Connect" button on the agency card. 3.13 The system opens the Stripe Account Setup page in a modal overlay on top of the Stripe Integration page, where the contractor must enter their personal details, address, identity verification documents, and bank account information. 3.14 The contractor completes all required fields on the Stripe setup form and submits it by clicking the "Confirm" button. 3.15 Upon successful submission, the modal closes and the system returns the contractor to the Stripe Integration page, where the agency card status updates to "Under Review."
#718
**Functional Requirements Document (FRD)** > **3\. User Flow** > **Unified Flow — Requirements Due (Incomplete Submission)**
~171 tok
### **Unified Flow — Requirements Due (Incomplete Submission)** 3.16 If the contractor exits the Stripe setup form before completing all required fields, the system displays the agency card with an orange "Requirements Due" status tag and an "Update" button. 3.17 The system displays a yellow warning banner below the brand chips stating "Some requirements are due. Please review and update them." 3.18 The contractor clicks the "Update" button, and the system opens the Stripe Account Setup modal where they left off so they can complete the remaining fields. 3.19 After the contractor completes and submits the form, the system updates the agency card status to "Under Review."
#719
**Functional Requirements Document (FRD)** > **3\. User Flow** >
~1 tok
###
#720
**Functional Requirements Document (FRD)** > **3\. User Flow** > **Unified Flow — Under Review**
~129 tok
### **Unified Flow — Under Review** 3.20 When the Stripe account is under review, the system displays the agency card with an orange "Under Review" status tag and a "Review" button. 3.21 The system displays an informational yellow banner below the brand chips stating "Your stripe account is under verification. It could take up to 24-48 hours." 3.22 The contractor clicks the "Review" button, and the system opens the Stripe-hosted setup page in a modal where they can view and edit their submitted information.
#721
**Functional Requirements Document (FRD)** > **3\. User Flow** > **Unified Flow — Connected (Approved)**
~117 tok
### **Unified Flow — Connected (Approved)** 3.23 Once Stripe approves the contractor's account, the system updates the agency card to display a green "Connected" checkmark badge. 3.24 The system displays the connection count next to the brand count (e.g., "2 brands assigned · 2 of 2 connected"). 3.25 The system displays a "Payment Account" section below the brand chips showing the linked bank name and masked account number (e.g., "Bank Of America · •••• 6021").
#722
**Functional Requirements Document (FRD)** > **3\. User Flow** > **Unified Flow — Restricted (Rejected)**
~301 tok
### **Unified Flow — Restricted (Rejected)** 3.26 If Stripe rejects the contractor's account, the system updates the agency card to display a red "Restricted" warning icon with a red "Retry" button. 3.27 The system displays specific error messages returned by Stripe as individual red-bordered alert rows inside the agency card, each with a red error icon. 3.28 If there are more than 3 error messages, the system displays the first 3 errors and collapses the rest behind a clickable "+ X more" link, where X is the number of remaining errors. 3.29 The system displays a red warning banner below the errors stating "There was an issue completing your onboarding. Please review the highlighted details and try again." 3.30 The contractor clicks the "Retry" button, and the system opens the Stripe Account Setup modal with their previously submitted data pre-filled so they can correct the flagged fields and resubmit. 3.31 After the contractor corrects and resubmits the form, the modal closes and the system updates the agency card status to "Under Review," and the Stripe review process begins again (24-48 hours). 3.32 This retry cycle continues until Stripe approves the contractor's account.
#723
**Functional Requirements Document (FRD)** > **3\. User Flow** >
~1 tok
###
#724
**Functional Requirements Document (FRD)** > **3\. User Flow** >
~1 tok
###
#725
**Functional Requirements Document (FRD)** > **3\. User Flow** > **Individual Flow — Agency Has Not Configured Stripe for a Brand**
~98 tok
### **Individual Flow — Agency Has Not Configured Stripe for a Brand** 3.33 If the agency uses Individual mode and has not yet configured Stripe for a specific brand, the system displays that brand row with a green informational message stating "You'll be able to connect once the agency completes their Stripe integration for this brand." 3.34 No "Connect" button is shown for that brand.
#726
**Functional Requirements Document (FRD)** > **3\. User Flow** > **Individual Flow — Ready to Connect (Per-Brand)**
~190 tok
### **Individual Flow — Ready to Connect (Per-Brand)** 3.35 Once the agency has configured Stripe for a brand in Individual mode, the system displays the agency card with an orange "Individual" badge and the connection counter (e.g., "3 brands assigned · 1 of 3 connected"). 3.36 Each brand that is ready for connection is displayed as a separate row with the brand logo, brand name, a "Not connected yet" subtitle, and a yellow "Connect" button. 3.37 The contractor clicks the "Connect" button on a specific brand row. 3.38 The system opens the Stripe Account Setup modal, and the onboarding process follows the same lifecycle as the Unified flow (Connect → Requirements Due / Under Review → Connected / Restricted) but applies only to that specific brand.
#727
**Functional Requirements Document (FRD)** > **3\. User Flow** > **Individual Flow — Mixed Brand States**
~140 tok
### **Individual Flow — Mixed Brand States** 3.39 In Individual mode, each brand operates independently, so a single agency card can display brands in different states simultaneously (e.g., Brand A "Connected," Brand B "Under Review," Brand C "Not connected yet"). 3.40 Each brand row displays its own status tag and corresponding action button (e.g., "Connect," "Update," "Review," "Retry"). 3.41 The brand-level status messages (requirements due, under review, restricted errors) appear directly below the corresponding brand row, not at the agency level.
#728
**Functional Requirements Document (FRD)** > **3\. User Flow** > **Individual Flow — Expand/Collapse Brand Details**
~142 tok
### **Individual Flow — Expand/Collapse Brand Details** 3.42 Once a contractor initiates Stripe integration for a brand (i.e., the brand has moved past the "Not connected yet" state), a chevron icon (↑↓) appears next to the brand status. 3.43 The contractor clicks the chevron to expand the brand details, which shows the bank account information (if connected) or error messages (if restricted). 3.44 The contractor clicks the chevron again to collapse the brand details. 3.45 Brands that have not yet initiated Stripe integration do not display a chevron icon.
#729
**Functional Requirements Document (FRD)** > **3\. User Flow** >
~1 tok
###
#730
**Functional Requirements Document (FRD)** > **3\. User Flow** >
~1 tok
###
#731
**Functional Requirements Document (FRD)** > **3\. User Flow** > **Individual Flow — Connected (All Brands)**
~79 tok
### **Individual Flow — Connected (All Brands)** 3.46 When all brands under an agency in Individual mode are connected, each brand row displays a green "Connected" checkmark badge with the linked bank name and masked account number. 3.47 The contractor can expand each brand to view the full bank account details.
#732
**Functional Requirements Document (FRD)** > **3\. User Flow** > **Individual Flow — Agency-Level "Action Required" Tag**
~92 tok
### **Individual Flow — Agency-Level "Action Required" Tag** 3.48 If any brand under an Individual-mode agency has a "Restricted" status requiring a retry, the system displays a red "Action required" warning tag at the agency card level (top-right corner). 3.49 This agency-level tag is only displayed when at least one brand has a "Restricted" verification status.
#733
**Functional Requirements Document (FRD)** > **3\. User Flow** > **Agency Configuration Change (Unified ↔ Individual)**
~151 tok
### **Agency Configuration Change (Unified ↔ Individual)** 3.50 When an agency changes their Stripe configuration mode (e.g., from Unified to Individual or vice versa), the system notifies the contractor via both in-app notification and email notification. 3.51 The Stripe Integration page immediately reflects the new configuration type, updating the agency badge and the brand display layout accordingly. 3.52 Existing connections are retained only for the brands that the agency selected to keep during the switch process; for all other brands, the contractor must complete Stripe onboarding again.
#734
**Functional Requirements Document (FRD)** > **3\. User Flow** > **New Brand Assignment**
~130 tok
### **New Brand Assignment** 3.53 When a contractor is assigned to a new brand under an agency, the system sends a notification and the brand appears on the Stripe Integration page automatically. 3.54 If the agency uses Unified mode, no additional Stripe setup is required for the new brand; the existing connection applies. 3.55 If the agency uses Individual mode, the new brand appears with a "Connect" button (if the agency has configured Stripe for that brand) or with the pending agency setup message (if not).
#735
**Functional Requirements Document (FRD)** > **3\. User Flow** > **Brand Removal**
~72 tok
### **Brand Removal** 3.56 When a contractor is removed from a brand, that brand immediately disappears from the Stripe Integration page. 3.57 The connection counter updates automatically to reflect the new brand count. 3.58 No notification is sent to the contractor for brand removal.
#736
**Functional Requirements Document (FRD)** > **4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#737
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.1 Page Structure & Layout**
~221 tok
### **4.1 Page Structure & Layout** * The Stripe Integration page is located under Contractor Portal > Account Settings > Stripe Integration tab (the tab was previously labeled "Finances" and has been renamed to "Stripe Integration"). * The page heading displays "Stripe Integration" and the subtitle "Manage your business information and payment preferences in one place." * A persistent informational banner is displayed at the top of the page with the title "Payment configuration" and the subtitle "Connect and manage your payments with agencies." * Below the banner, the system displays agency cards in alphabetical order by agency name. * Each agency card is a distinct visual block containing the agency logo, agency name, configuration type badge, brand count, connection counter (where applicable), brand display area, status-specific messaging, and action buttons.
#738
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.2 Agency Card Display Logic**
~174 tok
### **4.2 Agency Card Display Logic** * The system retrieves all agencies the contractor is currently associated with and renders one card per agency. * Only the brands the contractor is assigned to within each agency are displayed; brands the contractor is not assigned to are never shown. * If the contractor is associated with multiple agencies, each agency card is displayed as a separate block, and different agencies may have different configuration types (one agency may be Unified while another is Individual). * The agency logo is displayed using the agency's uploaded avatar or a default placeholder icon. * The agency name is displayed as the primary heading within the card.
#739
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.3 Configuration Type Badge Logic**
~120 tok
### **4.3 Configuration Type Badge Logic** * If the agency has configured a Unified Stripe setup (one Stripe account for all brands), the system displays a blue "Unified" badge next to the agency name. * If the agency has configured an Individual Stripe setup (separate Stripe account per brand), the system displays an orange "Individual" badge next to the agency name. * If the agency has not yet configured any Stripe account, no badge is displayed on the agency card.
#740
**Functional Requirements Document (FRD)** > **4\. Functional Logic** >
~1 tok
###
#741
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.4 Connection Counter Logic**
~168 tok
### **4.4 Connection Counter Logic** * For Unified mode, the connection counter is displayed once the contractor's Stripe account is connected, showing the format "X brands assigned · X of X connected" (e.g., "2 brands assigned · 2 of 2 connected"). * For Individual mode, the connection counter is always displayed once the agency has configured Stripe, showing the format "X brands assigned · Y of X connected" where Y is the number of brands for which the contractor has completed Stripe onboarding (e.g., "3 brands assigned · 1 of 3 connected"). * The connection counter updates automatically when brands are added, removed, or when connection statuses change.
#742
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.5 Brand Display Logic — Unified Mode**
~174 tok
### **4.5 Brand Display Logic — Unified Mode** * In Unified mode, brands are displayed as non-clickable pill-shaped chips within a "Brands" section inside the agency card. * Each pill chip contains the brand logo and brand name. * The brand pills are for informational purposes only and do not have any interactive behavior. * Brand pills are displayed in all Unified states, including the Pending Agency Setup state (where no badge or action button is shown), as well as all subsequent states (Ready to Connect, Requirements Due, Under Review, Connected, Restricted). * All status tags, action buttons, and messaging appear at the agency card level, not at the individual brand level.
#743
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.6 Brand Display Logic — Individual Mode**
~346 tok
### **4.6 Brand Display Logic — Individual Mode**
* In Individual mode, brands are displayed as separate list rows within the agency card, with each row containing the brand logo, brand name, brand-specific subtitle (connection status text or bank details), and brand-specific action button/status tag.
* Each brand row operates independently with its own Stripe onboarding lifecycle.
* Brand rows are displayed in alphabetical order by brand name.
* The brand-specific subtitle changes dynamically based on the brand's current state:
* **Not connected yet:** Displays "Not connected yet" as the subtitle.
* **Connected:** Displays the bank name and masked account number as the subtitle (e.g., "Bank of America ( \*\*\*\* 6021)").
* **Under Review:** Displays the bank name and masked account number as the subtitle (if bank was linked during onboarding).
* **Requirements Due:** Displays the bank name and masked account number as the subtitle (if bank was linked before form was abandoned).
* **Restricted:** Displays "Verification failed · X errors found" as a red subtitle, where X is the number of Stripe errors returned.
* **Pending Agency Setup:** Displays a green informational message as the subtitle.
* Status messages and error details appear directly below the corresponding brand row when expanded via the chevron toggle.#744
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.7 Stripe Onboarding Lifecycle**
~501 tok
### **4.7 Stripe Onboarding Lifecycle** * The Stripe onboarding lifecycle follows a defined sequence of states, and the system must handle each state with the appropriate UI treatment. * **State 1 — Pending Agency Setup:** The agency has not yet configured Stripe. No action is available to the contractor. A yellow warning message is displayed explaining that the agency needs to complete their setup first. * **State 2 — Ready to Connect:** The agency has configured Stripe. A yellow "Connect" button is displayed. The contractor can initiate the onboarding process. * **State 3 — Requirements Due:** The contractor started but did not complete the Stripe onboarding form. An orange "Requirements Due" tag and an "Update" button are displayed. A yellow warning message prompts the contractor to complete the form. * **State 4 — Under Review:** The contractor completed and submitted the Stripe onboarding form. An orange "Under Review" tag and a "Review" button are displayed. An informational yellow banner states the review may take 24-48 hours. Clicking "Review" opens the Stripe-hosted setup page in a modal where the contractor can view and edit their submitted details; however, modifying information during the review period may lead to rejection. * **State 5 — Connected (Approved):** Stripe has approved the account. A green "Connected" checkmark badge is displayed. The bank account details (bank name and masked account number) are shown. The contractor is now eligible to receive ACH payments. * **State 6 — Restricted (Rejected):** Stripe has rejected the account. A red "Restricted" warning icon and a red "Retry" button are displayed. Specific Stripe error messages are shown as individual red-bordered alert rows. A red warning banner summarizes the onboarding issue. Clicking "Retry" opens the Stripe Account Setup modal with pre-filled data to correct flagged fields. After resubmission, the status returns to "Under Review" and the cycle repeats until Stripe approves.
#745
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.8 Stripe Account Setup (Modal)**
~298 tok
### **4.8 Stripe Account Setup (Modal)** * When the contractor clicks "Connect," "Update," "Review," or "Retry," the system opens the Stripe-hosted Account Setup page in a modal overlay on top of the Stripe Integration page. * The Stripe Account Setup modal is powered by Stripe's external hosted onboarding interface and includes sections for Personal details (name, email, phone number), Business type and details, Public details (support address, phone, statement descriptor), and Management & ownership. * The Stripe modal handles its own field validations and displays errors inline (e.g., "That phone number doesn't seem to be valid. Make sure it's formatted correctly."). * The contractor's name and email are pre-populated from their Pixally profile into the Stripe form. * Upon completing and confirming the form, the modal closes and the Stripe Integration page updates to reflect the new status. * If the contractor closes the modal (via the X button or clicking outside) without completing the form, the status remains or transitions to "Requirements Due." * The contractor remains on the Stripe Integration page at all times; no page navigation or redirect occurs.
#746
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.9 Error Message Display Logic (Restricted State)**
~242 tok
### **4.9 Error Message Display Logic (Restricted State)** * When a contractor's Stripe account is in the "Restricted" state, the system displays error messages returned by the Stripe API. * Each error message is displayed as a separate row with a red circular error icon on the left and the full error text on the right, wrapped inside a red-bordered, light-red background container. * If there are 3 or fewer error messages, all errors are displayed in full. * If there are more than 3 error messages, the system displays the first 3 errors and collapses the remaining errors behind a clickable "+ X more" link (e.g., "+ 5 more"), where X represents the number of hidden errors. * Clicking the "+ X more" link expands and reveals all remaining error messages. * Below the individual error rows, a yellow/red warning banner is displayed with the text "There was an issue completing your onboarding. Please review the highlighted details and try again."
#747
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.10 Expand/Collapse Chevron Logic (Individual Mode)**
~397 tok
### **4.10 Expand/Collapse Chevron Logic (Individual Mode)**
* In Individual mode, a chevron toggle icon (↓ for expand, ↑ for collapse) is displayed next to the brand status tag/action button for brands where the contractor has initiated Stripe integration (i.e., the brand has progressed beyond "Not connected yet").
* Brands that are still in the "Not connected yet" state or the "Pending Agency Setup" state do not display a chevron icon.
* **Collapsed State (Default):** When collapsed, the brand row displays only the brand logo, brand name, subtitle (bank details or status text), status tag, and action button. This provides a summary view without detailed information.
* **Expanded State — Connected:** Expanding the chevron reveals the full bank account detail section showing the bank logo, bank name, and full masked account number (e.g., "•••• •••• •••• 6021") in a dedicated sub-section below the brand row.
* **Expanded State — Under Review:** Expanding the chevron reveals the bank account details (if provided during onboarding) and the informational verification message ("Your stripe account is under verification. It could take up to 24-48 hours").
* **Expanded State — Requirements Due:** Expanding the chevron reveals the requirements due warning message ("Some requirements are due. Please review and update them.").
* **Expanded State — Restricted:** Expanding the chevron reveals the specific Stripe error messages as individual red-bordered alert rows and the onboarding issue warning banner.
* By default, all brand detail sections are collapsed.#748
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.11 Agency-Level "Action Required" Tag (Individual Mode)**
~151 tok
### **4.11 Agency-Level "Action Required" Tag (Individual Mode)** * In Individual mode, if any brand under the agency has a "Restricted" verification status requiring a retry, the system displays a red "Action required" tag at the agency card level in the top-right corner. * This tag is only triggered by the "Restricted" status; other non-connected states (Requirements Due, Under Review, Pending Agency Setup) do not trigger this agency-level tag. * Once all restricted brands are resolved (either connected or moved to another state), the "Action required" tag is removed from the agency card.
#749
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.12 Agency Configuration Change Handling**
~332 tok
### **4.12 Agency Configuration Change Handling** * When an agency changes their Stripe setup mode from Unified to Individual or from Individual to Unified, the contractor is notified via both in-app notification and email notification. * The Stripe Integration page immediately reflects the new configuration type upon the next page load or real-time update, changing the badge, brand display layout, and available actions. * **Unified → Individual Switch:** During the switch, the agency selects which brands retain the existing Stripe credentials. For brands that retain credentials, the contractor's existing connection remains intact. For brands that do not retain credentials, the contractor must complete Stripe onboarding again once the agency adds new credentials for those brands. * **Individual → Unified Switch:** The agency consolidates all brands under a single Stripe account. All existing individual Stripe connections for the contractor are voided, as the underlying Stripe credentials change at the agency level. The contractor must complete a fresh Stripe onboarding under the new unified configuration, regardless of how many brands were previously connected individually. * The notification content and template are managed separately in the Notifications module and are not specified in this FRD.
#750
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.13 New Brand Assignment Logic**
~193 tok
### **4.13 New Brand Assignment Logic** * When a contractor is assigned to a new brand under an existing agency, the new brand appears on the Stripe Integration page automatically, and a notification is sent to the contractor. * If the agency uses Unified mode, the newly assigned brand is automatically covered by the existing Stripe connection, and no additional setup is required from the contractor. * If the agency uses Individual mode and the agency has already configured Stripe for that brand, the brand appears with a yellow "Connect" button, and the contractor must complete Stripe onboarding for that brand. * If the agency uses Individual mode but has not yet configured Stripe for that brand, the brand appears with the pending agency setup message.
#751
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.14 Brand Removal Logic**
~135 tok
### **4.14 Brand Removal Logic** * When a contractor is removed from a brand, the brand immediately disappears from the Stripe Integration page. * The connection counter updates automatically to reflect the updated brand count and connected count. * No notification is sent to the contractor regarding brand removal. * If the contractor is removed from all brands under an agency, the entire agency card is removed from the page. * If the contractor is removed from all agencies, the page displays the empty state (Section 4.15).
#752
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.15 Empty State Logic**
~119 tok
### **4.15 Empty State Logic** * The empty state is displayed when the contractor has no active agency associations, which can occur if all agencies have removed the contractor or if the contractor has been deleted from all agency rosters. * The empty state displays a wallet/briefcase icon, the heading "Financial Information," and the message "Start receiving payment directly through Pixally." * No action buttons or interactive elements are shown in the empty state.
#753
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.16 Sorting & Ordering**
~64 tok
### **4.16 Sorting & Ordering** * Agency cards are displayed in alphabetical order by agency name. * Within each agency card, brands (both pill chips in Unified mode and list rows in Individual mode) are displayed in alphabetical order by brand name.
#754
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.17 Payment Readiness**
~144 tok
### **4.17 Payment Readiness** * A contractor is considered "payment-ready" for a specific agency-brand combination only when their Stripe account status for that connection is "Connected." * Until the contractor reaches the "Connected" status, the agency cannot process ACH payments to that contractor for the respective brand(s). * In Unified mode, once the contractor is connected, they are payment-ready for all brands under that agency. * In Individual mode, the contractor is payment-ready only for the specific brands where their Stripe account is connected.
#755
**Functional Requirements Document (FRD)** > **4\. Functional Logic** > **4.18 Disconnect & Edit Bank Account**
~76 tok
### **4.18 Disconnect & Edit Bank Account** * Version 1 of this module does not include the ability for contractors to disconnect their Stripe account or edit their linked bank account from within the Pixally platform. * These features (Disconnect and Edit Bank Account) are planned for Version 2.
#756
**Functional Requirements Document (FRD)** > **5\. Field Details & Validations**
~791 tok
## **5\. Field Details & Validations** **Field Name** **Field Type** **Location** **Validation Rules** Page Heading Static Text Page top Displays "Stripe Integration" — non-editable Page Subtitle Static Text Below heading Displays "Manage your business information and payment preferences in one place." — non-editable Payment Configuration Banner Title Static Text Top banner Displays "Payment configuration" — non-editable Payment Configuration Banner Subtitle Static Text Top banner Displays "Connect and manage your payments with agencies" — non-editable Agency Logo Image Agency card header Loaded from agency profile; fallback to default placeholder if not available Agency Name Static Text Agency card header Displayed as-is from the agency profile; non-editable Configuration Type Badge Badge/Tag Agency card header Displays "Unified" (blue) or "Individual" (orange); not displayed if agency has not configured Stripe Brand Count Static Text Agency card header Format: "X brands assigned" where X is the number of brands the contractor is assigned to Connection Counter Static Text Agency card header Format: "X of Y connected" where X is connected brands and Y is total assigned brands; visible only when at least one brand has initiated Stripe setup Brand Pill Chip (Unified) Non-interactive Element Brand section Displays brand logo and brand name; not clickable Brand Row (Individual) Interactive Row Brand section Displays brand logo, brand name, subtitle (status or bank info), action button, and chevron toggle Brand Subtitle — Not Connected Static Text Brand row subtitle Displays "Not connected yet" when the contractor has not initiated Stripe setup for that brand Brand Subtitle — Connected Static Text Brand row subtitle Displays bank name and masked account number (e.g., "Bank of America ( \*\*\*\* 6021)") Brand Subtitle — Restricted Static Text (Red) Brand row subtitle Displays "Verification failed · X errors found" where X is the number of Stripe errors returned Brand Subtitle — Pending Agency Static Text (Green) Brand row subtitle Displays "You'll be able to connect once the agency completes their Stripe integration for this brand." Status Tag Badge/Tag Agency card or Brand row One of: "Requirements Due" (orange), "Under Review" (orange), "Connected" (green), "Restricted" (red with warning icon), "Action required" (red, agency-level) Connect Button Button (Yellow) Agency card (Unified) or Brand row (Individual) Clickable; opens the Stripe Account Setup modal Update Button Button (Outlined) Agency card or Brand row Clickable; opens the Stripe Account Setup modal to complete the remaining fields Review Button Button (Outlined) Agency card or Brand row Clickable; opens the Stripe-hosted setup page in a modal (editable) Retry Button Button (Red) Agency card or Brand row Clickable; opens the Stripe Account Setup modal with pre-filled data for corrections Chevron Toggle Icon Button Brand row (Individual) Toggles expand/collapse of brand details; only visible for brands that have initiated Stripe integration Bank Name Static Text
#757
**Functional Requirements Document (FRD)** > **5\. Field Details & Validations**
~378 tok
Expanded details or Payment Account section Displays bank name retrieved from Stripe (e.g., "Bank Of America") Masked Account Number Static Text Expanded details or Payment Account section Format: "•••• XXXX" where XXXX is the last 4 digits of the account number Error Message Row Alert Component Restricted state section Displays red error icon and full error text from Stripe API; red-bordered, light-red background "+ X more" Link Clickable Text Below 3rd error message Displayed when more than 3 errors exist; clicking expands all remaining errors Warning Banner (Yellow) Banner Component Below brand section Contextual message for pending setup, requirements due, or under review states Warning Banner (Red) Banner Component Below error messages Displays "There was an issue completing your onboarding. Please review the highlighted details and try again." Empty State Icon Icon/Image Center of page Wallet/briefcase icon displayed when no agencies are associated Empty State Heading Static Text Center of page Displays "Financial Information" Empty State Message Static Text Center of page Displays "Start receiving payment directly through Pixally" **Note:** All fields on the Stripe Account Setup modal (personal details, business details, bank account, identity verification) are managed by Stripe's hosted onboarding interface rendered within the modal and are not part of the Pixally field validation scope. Stripe handles its own inline validations within the modal.
#758
**Functional Requirements Document (FRD)** > **6\. Success Message Handling**
~354 tok
## **6\. Success Message Handling** **#** **Scenario** **Success Message** **Trigger Condition** **Post-Success Action** 1 Stripe onboarding form submitted successfully No explicit success toast is displayed within Pixally Contractor completes and submits the Stripe Account Setup form and the modal closes The system updates the agency/brand status to "Under Review" and displays the verification pending message 2 Stripe account approved (Connected) No explicit success toast is displayed; the status change to "Connected" with the green checkmark serves as the success indicator Stripe API returns an approval status via webhook The system updates the agency/brand status to "Connected," displays the bank account details, and updates the connection counter 3 Error details expanded via "+ X more" No success message required Contractor clicks the "+ X more" link The system expands and reveals all remaining error messages inline 4 Brand detail section expanded No success message required Contractor clicks the chevron toggle on a brand row The system expands the brand detail section to show bank account details or error information **Note:** This module does not include explicit success toast messages because status transitions serve as the primary feedback mechanism. The green "Connected" badge and visible bank details provide clear confirmation of successful Stripe onboarding.
#759
**Functional Requirements Document (FRD)** > **7\. Error Message Handling**
~784 tok
## **7\. Error Message Handling** **#** **Error Scenario** **Error Message** **Trigger Condition** **User Action / System Response** 1 Agency has not configured Stripe (Unified) "\[Agency Name\] hasn't configured their Stripe account yet. You'll be able to connect once they complete their setup." The agency has not set up any Stripe credentials in Agency Global Settings No action available to the contractor; the message is displayed as a yellow warning banner; the contractor must wait for the agency to complete setup 2 Agency has not configured Stripe for a specific brand (Individual) "You'll be able to connect once the agency completes their Stripe integration for this brand." The agency has not configured Stripe for a specific brand in Individual mode No action available for that brand; the message is displayed as green informational text below the brand name 3 Stripe onboarding incomplete (Requirements Due) "Some requirements are due. Please review and update them." The contractor started but did not complete the Stripe setup form Contractor clicks "Update" to return to the Stripe setup form and complete the remaining fields 4 Stripe account under verification "Your stripe account is under verification. It could take up to 24-48 hours." The contractor submitted the Stripe setup form and the account is pending Stripe review Contractor can click "Review" to view/edit the submitted information on the Stripe page; no immediate action required 5 Stripe account restricted — Identity document not readable "The image supplied for the identity document is not readable. Please upload a clearer image of the document." Stripe API returns a verification failure for the identity document image quality Contractor clicks "Retry" to re-upload a clearer identity document on the Stripe setup page 6 Stripe account restricted — Address mismatch "The address on the document did not match the address on the account. Upload a document with a matching address or update the address on the account." Stripe API returns a verification failure for address discrepancy Contractor clicks "Retry" to correct the address information or upload a matching document 7 Stripe account restricted — Invalid phone number "Phone number isn't formatted correctly for this account's country or region. \[phone number\] is not a valid phone number." Stripe API returns a verification failure for phone number format Contractor clicks "Retry" to correct the phone number on the Stripe setup page 8 Stripe account restricted — General onboarding issue "There was an issue completing your onboarding. Please review the highlighted details and try again." Stripe API returns one or more verification failures This summary banner is always displayed below the individual error messages when the account is in "Restricted" state; contractor clicks "Retry" to address all flagged issues 9 Stripe setup modal — Invalid phone number (inline) "That phone number doesn't seem to be valid. Make sure it's formatted correctly." The contractor enters an invalid phone number on the Stripe Account Setup modal
#760
**Functional Requirements Document (FRD)** > **7\. Error Message Handling**
~262 tok
This is an inline validation error within the Stripe modal; the contractor must correct the phone number before proceeding 10 Multiple errors with overflow "+ X more" (clickable link below the 3rd error) More than 3 Stripe error messages are returned for a single agency/brand Contractor clicks "+ X more" to expand and view all errors; then clicks "Retry" to address them 11 Network/connectivity failure during Stripe modal load Browser-level error or timeout The contractor's internet connection drops while the Stripe Account Setup modal is loading The modal fails to load or displays an error; the system retains the current status on the Stripe Integration page; the contractor can retry the action when connectivity is restored **Note:** Error messages related to Stripe are dynamic — they are returned by the Stripe API and displayed as-is by the system. The Pixally platform does not modify or rewrite Stripe error messages. The list above includes representative examples; the actual error messages depend on Stripe's response.
#761
**Functional Requirements Document (FRD)** > **8\. Edge Cases**
~773 tok
## **8\. Edge Cases** **#** **Edge Case** **Scenario Description** **Expected System Behavior** 1 Contractor works with multiple agencies using different setup types Contractor is associated with Agency A (Unified) and Agency B (Individual) The system displays both agency cards on the same page, each with its own configuration badge and independent onboarding lifecycle; the contractor manages each agency independently 2 Agency switches from Unified to Individual Agency changes Stripe configuration after the contractor is already connected in Unified mode The system notifies the contractor via in-app and email notification; the page immediately reflects the new "Individual" badge; only brands the agency selected to retain credentials stay connected; all other brands require the contractor to complete onboarding again 3 Agency switches from Individual to Unified Agency consolidates all brands under one Stripe account after the contractor has individual connections The system notifies the contractor via in-app and email notification; the page reflects the "Unified" badge; all existing individual connections are voided; the contractor must complete a fresh unified onboarding regardless of how many brands were previously connected 4 Contractor assigned to new brand — Unified mode Agency assigns the contractor to a new brand while the contractor is already connected in Unified mode The new brand pill chip appears in the agency card automatically; no additional Stripe setup is required; the connection counter updates to reflect the new brand count 5 Contractor assigned to new brand — Individual mode (agency configured) Agency assigns the contractor to a new brand, and the agency has already configured Stripe for that brand The new brand row appears with a "Connect" button; a notification is sent; the contractor must complete Stripe onboarding for the new brand 6 Contractor assigned to new brand — Individual mode (agency not configured) Agency assigns the contractor to a new brand, but the agency has not yet configured Stripe for that brand The new brand row appears with the message "You'll be able to connect once the agency completes their Stripe integration for this brand." 7 Contractor removed from a brand — Individual mode Agency removes the contractor from one brand while other brands remain The removed brand disappears from the page; the connection counter updates automatically; no notification is sent to the contractor 8 Contractor removed from all brands under an agency Agency removes the contractor from all assigned brands The entire agency card is removed from the page; if no other agencies remain, the empty state is displayed 9 Contractor removed from all agencies All agencies remove the contractor from their rosters The page displays the empty state with the wallet icon, "Financial Information" heading, and "Start receiving payment directly through Pixally" message 10 Contractor exits Stripe form midway Contractor closes the Stripe Account Setup modal before completing all required fields
#762
**Functional Requirements Document (FRD)** > **8\. Edge Cases**
~776 tok
The status transitions to "Requirements Due" with an "Update" button; the contractor can reopen the modal later to complete the form 11 Stripe rejects account multiple times The contractor submits the form, Stripe rejects it, the contractor retries and is rejected again Each rejection cycle updates the status to "Restricted" with the latest error messages; the contractor can retry indefinitely until Stripe approves; each retry resets the status to "Under Review" with a new 24-48 hour review period 12 Stripe account approved for some brands but restricted for others (Individual) In Individual mode, Stripe approves one brand but rejects another Each brand displays its own independent status; the agency-level "Action required" tag appears because at least one brand is "Restricted" 13 More than 3 Stripe errors returned Stripe returns 7 error messages for a single account/brand The system displays the first 3 errors and collapses the remaining 4 behind a "+ 4 more" clickable link 14 Contractor modifies information during "Under Review" Contractor clicks "Review," opens the Stripe modal, and edits previously submitted details while the account is under review The Stripe modal allows edits; however, modifying information during the review period may result in Stripe rejecting the account; the system does not prevent the contractor from making changes 15 Agency deletes a brand from their setup Agency removes a brand entirely from their organization while the contractor was connected to it The brand disappears from the contractor's Stripe Integration page; the connection counter updates automatically 16 Slow Stripe webhook delivery Stripe approves/rejects the account but the webhook notification is delayed The contractor's status remains in the previous state until the webhook is received and processed; the page updates once the webhook is processed 17 Contractor closes modal without completing form Contractor opens the Stripe Account Setup modal via Connect, Update, or Retry, but closes it (via X button or clicking outside) without completing the form The modal closes and the Stripe Integration page retains the last known status; if the contractor had not previously submitted the form, the status transitions to "Requirements Due"; the contractor can reopen the modal at any time by clicking the appropriate button 18 Same bank account used for multiple brands (Individual) Contractor uses the same bank account for multiple brands in Individual mode The system allows the same bank account to be linked to multiple brands; each brand displays the same bank name and masked account number independently 19 Agency has multiple brands but contractor is assigned to only one Agency has 5 brands but the contractor is only assigned to 1 Only the 1 assigned brand is visible on the contractor's Stripe Integration page; the brand count displays "1 brand assigned" 20 Concurrent agency configuration change and contractor onboarding The agency changes from Unified to Individual while the contractor has the Stripe Account Setup modal open
#763
**Functional Requirements Document (FRD)** > **8\. Edge Cases**
~59 tok
The contractor completes the current Stripe form in the modal; upon the modal closing, the Stripe Integration page reflects the new configuration; the contractor may need to redo onboarding depending on which brands retained credentials
#764
**Functional Requirements Document (FRD)** > **9\. Acceptance Criteria**
~703 tok
## **9\. Acceptance Criteria**
* The Stripe Integration tab must be accessible only to logged-in contractors within the Contractor Portal under Account Settings.
* The page must display all agencies the contractor is associated with, showing only the brands the contractor is assigned to within each agency.
* Agency cards must display the correct configuration badge ("Unified" in blue, "Individual" in orange, or no badge if not configured).
* Agencies and brands must be sorted in alphabetical order.
* In Unified mode, the "Connect" button must open the Stripe Account Setup modal, and upon form completion, the status must transition to "Under Review."
* In Individual mode, each brand must have its own independent "Connect" button and follow its own onboarding lifecycle.
* The "Update" button must open the Stripe Account Setup modal where the contractor left off to complete the remaining fields.
* The "Review" button must open the Stripe-hosted setup page in a modal where submitted information is viewable and editable.
* The "Retry" button must open the Stripe Account Setup modal with previously submitted data pre-filled for correction.
* The "Connected" status must display a green checkmark badge and show the bank name and masked account number (last 4 digits).
* The "Restricted" status must display all Stripe error messages, collapsing those beyond 3 behind a "+ X more" expandable link.
* The agency-level "Action required" tag must appear only when at least one brand in Individual mode has a "Restricted" status.
* The chevron expand/collapse toggle must appear only for brands that have initiated Stripe integration (moved past "Not connected yet") in Individual mode.
* The connection counter must dynamically update to reflect the current state of brand assignments and connections.
* The empty state must display correctly when the contractor has no active agency associations.
* Agency configuration type changes (Unified ↔ Individual) must immediately reflect on the page, and the contractor must be notified via in-app and email notification.
* New brand assignments must appear automatically with the appropriate state (no setup needed for Unified; "Connect" button or pending message for Individual).
* Brand removals must immediately remove the brand from the page and update the connection counter without notification.
* Version 1 does not include Disconnect or Edit Bank Account functionality.
* All Stripe setup forms are rendered within a modal overlay powered by Stripe's hosted onboarding interface; Pixally does not manage or validate fields within the Stripe modal.
* The Stripe Account Setup modal must open on top of the Stripe Integration page without navigating away; no page redirects occur during the onboarding process.#765
**Functional Requirements Document (FRD)** > **10\. Manual Test Cases**
~15 tok
## **10\. Manual Test Cases** Test cases Link: Click Here
#766
**Functional Requirements Document (FRD)** > **11\. Dependencies**
~558 tok
## **11\. Dependencies** **#** **Dependency** **Type** **Description** **Expected Behavior if Dependency Fails** 1 Agency Global Settings — Stripe Integration Module Internal Module The agency must configure their Stripe account (Unified or Individual) before contractors can initiate onboarding Contractor sees the "Agency hasn't configured their Stripe account yet" warning; no action buttons are available 2 Stripe Connect API External Service Stripe's Connect platform powers the onboarding modal, handling contractor identity verification, bank account linking, and account status management If Stripe API is unavailable, the "Connect," "Update," "Review," and "Retry" buttons will fail to open the modal; the system should display a generic error message and advise the contractor to try again later 3 Stripe Webhooks External Service Stripe sends webhook notifications to Pixally when account status changes (approved, rejected, requirements due) If webhooks are delayed or fail, the contractor's status on the Pixally page will not update in real-time; the status will update once the webhook is received and processed 4 Contractor Portal — Account Settings Internal Module The Stripe Integration tab is a sub-tab within Account Settings; the Account Settings page must be functional If Account Settings is inaccessible, the contractor cannot reach the Stripe Integration tab 5 Brand Management Module Internal Module Brand assignments determine which brands appear on the contractor's Stripe Integration page If brand assignment data is unavailable, the page may not display brands correctly 6 Notification Service Internal Service In-app and email notifications are sent for agency configuration changes and new brand assignments If the notification service is down, contractors will not be notified of changes but will still see updates on the Stripe Integration page upon next visit 7 Agency — Brand Configuration Internal Module Each agency's brands and their Stripe configuration (Unified vs. Individual) determine the contractor's experience If brand configuration data is inconsistent, the contractor may see incorrect badges, missing brands, or incorrect connection counters
#767
**Functional Requirements Document (FRD)** > **12\. References**
~18 tok
## **12\. References** * **Figma Link:** Click Here ✅ Calendar Module
#768
**Calendar Module - Contractor Portal**
~10 tok
# **Calendar Module - Contractor Portal**
#769
**Calendar Module - Contractor Portal** > **1\. Module Overview**
~155 tok
## **1\. Module Overview** * **Module Name:** Calendar Module (Contractor Portal) * **Purpose:** Provide contractors with a centralized calendar view to visualize their event assignments across all agencies, manage their availability by marking do-not-book days, and track their working schedule with clear visual indicators for available, unavailable, and booked dates * **Business Goal:** Enable contractors to efficiently manage their availability across multiple agency relationships, prevent double-booking conflicts, and provide agencies with accurate contractor availability information for event scheduling
#770
**Calendar Module - Contractor Portal** > **2\. User Roles & Permissions**
~86 tok
## **2\. User Roles & Permissions** **Role** **Description** **Key Permissions** Contractor Contractors working with multiple agencies View all assigned events across all agencies, set up availability by marking dates as do-not-book, mark unavailable dates as available, switch between month and list views, and navigate to event details
#771
**Calendar Module - Contractor Portal** > **3\. User Flow**
~284 tok
## **3\. User Flow** **Navigation Path:** Contractor Portal > Left Sidebar > Calendar **OR** Dashboard > Do Not Book Days > Click on any date **Step-by-Step Flow:** **Step 1:** Contractor clicks on "Calendar" from the left sidebar navigation menu, or Clicks on a date in the Dashboard > Do Not Book Days Widget **Step 2:** System loads Calendar module in month view (default), displaying the current month **Step 3:** Calendar displays events, do-not-book days (striped), available days, and the current day highlighted **Step 4:** Contractor can navigate between months using < > arrows **Step 5:** The Contractor can click on an event to navigate to the Event Details screen **Step 6:** The Contractor can click the "Set Up Availability" button to open the availability panel **Step 7:** In the availability panel, the contractor can select available dates to mark as do-not-book, or select striped dates to mark as available **Step 8:** Contractor can switch to list view using the view dropdown to see events in tabular format **Step 9:** In list view, the contractor can click on event rows to navigate to Event Details
#772
**Calendar Module - Contractor Portal** > **4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#773
**Calendar Module - Contractor Portal** > **4\. Functional Logic** > **4.1 Global Calendar Behavior**
~95 tok
### **4.1 Global Calendar Behavior**
* **Cross-Agency Display:**
* The Calendar module is global across all agencies the contractor works with
* Displays events assigned by ANY agency, not just the currently selected workspace
* Provides a unified view of the contractor's complete schedule
* Availability settings apply across all agency relationships#774
**Calendar Module - Contractor Portal** > **4\. Functional Logic** > **4.2 Calendar Header Elements**
~21 tok
### **4.2 Calendar Header Elements** * **Refer -** [**Click Here**](#5bhvf5l4i1ov)
#775
**Calendar Module - Contractor Portal** > **4\. Functional Logic** > **4.3 Month View Display**
~20 tok
### **4.3 Month View Display** * **Refer -** [**Click Here**](#d4e0d83y01z)
#776
**Calendar Module - Contractor Portal** > **4\. Functional Logic** > **4.4 List View Display**
~122 tok
### **4.4 List View Display** **View Switch:** * Select "List" from the view dropdown * Calendar grid replaced with tabular event list **List Structure:** * Displays all events assigned to the contractor for the selected month * Events from all agencies included * Month/year header displayed (e.g., "August 2024") **Empty State:** * If no events in selected month: "No Events found" message displayed **Event Row Columns:** * Refer - [**Click Here**](#o0midvmo45p7)
#777
**Calendar Module - Contractor Portal** > **4\. Functional Logic** > **4.5 Calendar Day Types and Sources**
~560 tok
### **4.5 Calendar Day Types and Sources**
**4.5.1 Available Days (Normal):**
* Clean white/light background
* No stripes or patterns
* The contractor is available for booking on these days
* The agency can assign events on these dates
**4.5.2 Do Not Book (Non-Working) Days:**
* Diagonal stripe pattern (cross stripes) on the date cell
* Days toggled off in Account Settings > Working Days
* Example: If Sunday is toggled off, all Sundays display as striped
* Applied automatically based on the contractor's working days settings
* Recurring pattern (applies to all instances of that day)
* Indicates the contractor is unavailable for booking
* Sources of unavailability:
* Onboarding- The working and non-working days selected during onboarding
* Non-working days (toggled off in Account Settings > Working Days)
* Manually marked as do-not-book via Set Up Availability
* Days beyond the future booking availability limit
* Contractor will not appear in the agency's suggested contractor list or check availability for events on these days
**4.5.3 Future Booking Limit Days:**
* Based on the "Availability for Future Bookings" setting in Account Settings > Working Days
* Options: No limit, 3, 6, 9, 12, 15, 18 months
* Days beyond the selected limit are marked as striped
* Example: If 3 months are selected, all dates after 3 months from the current date (today’s date) are striped
* Contractor unavailable for event assignments beyond this limit
**4.5.4 Manually Set Do-Not-Book Days:**
* Dates marked by the contractor using the Set Up Availability feature
* Specific dates contractor wants to block (vacation, personal commitments, etc.)
* Can be reversed by marking as available again
**4.5.5 Event Blocked Days:**
* Displays the event card/badge on the date when the contractor is assigned to an event
* Displays event information on the calendar. Shows event name and project name
* Example: "Rehearsal Dinner" with "Jadon & Monika Wedding" below
* Color indicator (dot) matches event color
* Click navigates to the Event Details screen
* When one agency assigns a contractor, all other agencies see the contractor as unavailable for that date#778
**Calendar Module - Contractor Portal** > **4\. Functional Logic** > **4.6 Set Up Availability Panel**
~685 tok
### **4.6 Set Up Availability Panel**
**4.6.1 Availability Panel Opening & Initial State**
* Clicking the **“Set Up Availability”** button opens the Availability Panel, sliding in from the right while the calendar remains visible on the left
* The panel loads with the header **“Select any Date.”**, an empty Selected Dates area, and a **“Close”** button at the bottom.
* Month navigation arrows remain enabled until the user selects at least one date.
* Once any date is selected, month navigation arrows (< >) are disabled to prevent navigating away during selection.
* Month navigation re-enables only when the user clears all selected dates or closes the availability panel.
**4.6.2 Date Selection Behavior:**
**Single Date Selection:**
* Click on a date to select it
* Selected date highlighted with a yellow/orange border
* Date appears in the Selected Dates list in the panel
**Multiple Date Selection (Drag):**
* Click and drag across multiple dates, and it will select all dates within the drag range.
* Only dates of the same type selected (available OR striped, not both)
* If the drag includes both available and blocked days, only the days matching the starting point will be selected. If the drag starts on an available day, only available days will be selected; if it starts on a “Do Not Book” day, only those days will be selected.
**4.6.3 Date Deselection:**
* Click on the already selected date to deselect
* Or click the delete icon next to the date in the Selected Dates list
* Removes from selection (not saved until the button is clicked)
**Selection Restrictions:**
* Past dates (before the current date) cannot be selected
* When dates are selected, month navigation arrows (< >) are disabled
* Can only select dates from one month at a time
**4.6.4 Panel State Logic Based on Date Type**
**A. Available Days Selected (Marking as Unavailable):**
* Panel header changes to: "Unavailability Set Up."
* The Selected Dates section displays chosen dates grouped by month
* Each date shows a calendar icon, the date in the format selected in the contractor portal, and a delete (trash) icon
* Dates grouped under month/year header (e.g., "August, 2024")
* Two buttons at the bottom:
* "Mark as Do Not Book Days" (yellow/orange primary button)
* "Cancel" (outlined secondary button) - Closes the panel without saving any changes
* Mark as Do Not Book Days:
* Saves selected available dates as do-not-book
* Dates become striped on the calendar
* Contractor becomes unavailable for those dates across all agencies
* Panel closes after save
* Success message displayed
**B. Striped Days Selected (Marking as Available):**#779
**Calendar Module - Contractor Portal** > **4\. Functional Logic** > **4.6 Set Up Availability Panel**
~279 tok
* Panel header changes to: "Availability Set Up."
* The Selected Dates section displays the chosen striped dates
* Each date shows a calendar icon, the date in the format selected in the contractor portal, and a delete (trash) icon
* Two buttons at the bottom:
* "Mark as Available" (yellow/orange primary button)
* "Cancel" (outlined secondary button) - Closes the panel without saving any changes
* **Mark as Available:**
* Saves selected striped dates as available
* Stripes removed from those dates on the calendar
* The contractor becomes available for those dates (i.e., if any day was previously marked as a “Do Not Book” day, marking it as available will update the contractor’s availability for that specific day).
* Panel closes after save and success message displayed
**4.6.5 Delete Icon Behavior**
* Removing a date from the Selected Dates list immediately deselects the date in the calendar UI.
* Deletion only modifies the **current unsaved selection**; it does **not** modify the contractor’s stored availability until the action button is clicked.#780
**Calendar Module - Contractor Portal** > **4\. Functional Logic** > **4.7 Cross-Module Impact**
~163 tok
### **4.7 Cross-Module Impact** **4.7.1 Account Settings > Working Days:** * Working days toggles determine recurring non-working days * The Availability for Future Bookings setting determines future date limits * Changes in Account Settings are reflected immediately in Calendar **4.7.2 Agency Portal Impact:** * When the contractor marks dates as do-not-book, agencies see the contractor as unavailable * Contractor does not appear in Check Availability or suggested contractor lists for blocked dates * When one agency assigns a contractor to an event, other agencies see that date as unavailable **5\. Field Details & Validations**
#781
**Calendar Module - Contractor Portal** > **4\. Functional Logic** > **5.1 Calendar Header**
~115 tok
### **5.1 Calendar Header** **Field Name** **Display Format** **Validation Rules** Page Title "Calendar" Static text Set Up Availability Button Yellow button with icon Opens the availability panel on click View Dropdown "Month" or "List" Default: Month Month/Year Display "Month YYYY" (e.g., "November 2025") Current month on load Navigation Arrows < and > icons To switch Next or Previous month. Disabled when dates are selected in the panel
#782
**Calendar Module - Contractor Portal** > **4\. Functional Logic** > **5.2 Month View Calendar**
~186 tok
### **5.2 Month View Calendar** **Field Name** **Display Format** **Validation Rules** Day Headers Sun, Mon, Tue, Wed, Thu, Fri, Sat Static 7-column layout Date Numbers Numeric date Current month dates in normal text; adjacent (previous or next) month dates in lighter text Current Day Yellow/orange background highlight Only today’s date is highlighted Available Days White/clean background Selectable for marking as a do-not-book day Do-Not-Book Days Diagonal cross-stripe pattern Non-working days, manually blocked, or beyond the future limit Event Display Event name + Project name with color dot The event color is fetched from the agency settings of the agency that assigned the event. Click navigates to Event Details
#783
**Calendar Module - Contractor Portal** > **4\. Functional Logic** > **5.3 Set Up Availability Panel**
~201 tok
### **5.3 Set Up Availability Panel** **Field Name** **Display Format** **Validation Rules** Panel Header "Select any Date" / "Unavailability Set Up" / "Availability Set Up." Changes based on selection type Selected Dates Section Grouped by month with a date list Dates in DD/MM/YYYY format Date Entry Calendar icon + Date + Delete icon Delete removes from the selection only Month Group Header "Month, YYYY" (e.g., "August, 2024") Groups selected dates by month Mark as Do Not Book Days Button Yellow primary button Visible when the available days are selected Mark as Available Button Yellow primary button Visible when striped days are selected Cancel Button Outlined secondary button Closes panel without saving Close Button Outlined button Visible in the initial state only
#784
**Calendar Module - Contractor Portal** > **4\. Functional Logic** > **5.4 Date Selection**
~106 tok
### **5.4 Date Selection** **Field Name** **Validation Rules** Single Date Selection Click to select/deselect; past dates not selectable Multi-Date Selection (Drag) Only the same type dates selected (available OR striped); past dates excluded Month Navigation During Selection Arrows disabled when dates selected; single month selection only Minimum Selection At least one date is required to show action buttons
#785
**Calendar Module - Contractor Portal** > **4\. Functional Logic** > **5.5 List View**
~164 tok
### **5.5 List View** **Field Name** **Display Format** **Validation Rules** Date DD/MM/YYYY with "DATE" label Event date Project Name Project name text From event assignment Event Name "EVENT NAME" with color dot Uppercase with event color Brand Brand name (truncated) From the project association Venue Venue location (truncated) From event configuration Service Agreement Icon Empty or Filled Filled when signed Invoice Icon Empty or Filled Filled when at least one is uploaded Deliverables Icon Empty or Filled Filled when submitted Payment Icon Empty, Partial, or Filled Based on the payment received vs the event price
#786
**Calendar Module - Contractor Portal** > **6\. Error Message Handling**
~171 tok
## **6\. Error Message Handling** **Field/Action** **Validation Scenario** **Error Message** Calendar Load Failed to load calendar data "Unable to load calendar. Please refresh the page." Date Selection Attempting to select a past date Past dates are disabled/non-selectable (no error message) Set Up Availability Save operation fails "Unable to save availability. Please try again." List View Load Failed to load events "Unable to load events. Please refresh the page." Event Navigation Failed to navigate to event details "Unable to open event details. Please try again." General Network connection lost "Connection lost. Please check your internet connection."
#787
**Calendar Module - Contractor Portal** > **7\. Success Message Handling**
~37 tok
## **7\. Success Message Handling** **Action** **Success Message** Dates marked as available or do-not-book "Availability updated successfully."
#788
**Calendar Module - Contractor Portal** >
~1 tok
##
#789
**Calendar Module - Contractor Portal** > **8\. Edge Cases**
~364 tok
## **8\. Edge Cases** **Scenario** **Expected Behavior** No events in selected month (list view) Display "No Events found" message All days in the month are striped Calendar displays all days with a stripe pattern Contractor drags selection across available and striped days Only available days are selected Contractor tries to select past dates Past dates are disabled and cannot be selected Panel opens with dates selected, contractor clicks outside the panel Panel remains open; click outside does not close Month navigation while the panel has selected dates Navigation arrows disabled; cannot change month Contractor marks event day as do-not-book The event remains, but the day is also marked (the event takes precedence) The agency assigns an event on the contractor's do-not-book day Not possible; the contractor doesn't appear in the availability check Future booking limit set to 3 months, then changed to 6 months Calendar updates to reflect new available dates Working day toggled off after events assigned on that day Existing events remain; future same-day assignments blocked Very long event name in month view Text truncated to fit the date cell Very long brand/venue name in list view Text truncated with ellipsis Multiple events on the same day Not possible; one event blocks all other agencies Contractor navigates to the past month Calendar displays the past month; cannot select past dates for availability
#790
**Calendar Module - Contractor Portal** >
~1 tok
##
#791
**Calendar Module - Contractor Portal** > **9\. Acceptance Criteria**
~728 tok
## **9\. Acceptance Criteria** * **Global Calendar Behavior –** Calendar displays events from all agencies the contractor works with, applies availability rules globally, and allows full event access only within the current workspace. * **Calendar Header Elements –** Header displays month/year navigation, view toggle, and Set Up Availability button as per design reference. * **Month View Display –** Month grid displays all assigned events across agencies along with correct availability indicators based on rules. * **List View Display –** List view shows all events for the selected month from all agencies, displays an empty state when no events exist, and includes all defined event columns. * **Available Days –** Non-striped days indicate contractor availability and allow agencies to assign events. * **Do Not Book Days –** Striped recurring non-working days (from working days, onboarding settings, manual DNB, or future limit) show contractor as unavailable and hide them from agency assignment results. * **Future Booking Limit Days –** Dates beyond the selected booking limit window automatically appear striped and unavailable for new assignments. * **Manually Set DNB Days –** Manually blocked dates are striped, apply across all agencies, and can be restored by marking them available. * **Event Blocked Days –** Dates with event assignments display event badges, open event details on click, and block availability across all agencies. * **Set Up Availability Panel Opening –** Clicking the button opens a right drawer, disables month navigation after selecting any date, and re-enables it only after clearing selection. * **Single & Multi-Date Selection –** Supports single-click selection and drag selection within the same date type (available or striped), grouping selected dates accordingly. * **Date Deselection –** Clicking an already selected date or using delete removes it from selection, with past dates disallowed and selection restricted to the same month. * **Available-Day Panel State –** Selecting available days switches panel to “Unavailability Set Up,” showing grouped dates and enabling “Mark as Do Not Book Days” to save unavailability. * **Striped-Day Panel State –** Selecting striped days switches panel to “Availability Set Up,” enabling “Mark as Available” to restore availability and remove stripes. * **Delete Icon Behavior –** Removing a date from the list immediately updates UI selection but does not update stored availability until saved. * **Account Settings Impact –** Working Days toggles create recurring DNB days and the future booking window defines striped future limits, with all changes reflecting instantly in the calendar. * **Agency Portal Impact –** Marking DNB removes the contractor from Check Availability and suggested contractor lists, and event assignments by one agency block availability for all others.
#792
**Calendar Module - Contractor Portal** > **10\. Dependencies**
~243 tok
## **10\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** Event Management System Data Dependency Cannot display assigned events on the calendar Account Settings - Working Days Data Dependency Cannot determine non-working days or future booking limits User Authentication Security Dependency Cannot identify the contractor for the cross-agency calendar Agency Portal - Event Assignment Integration Dependency Events not reflected on the contractor calendar Geolocation/Date Service Feature Dependency Cannot determine the current date for highlighting Service Agreement Module Status Dependency Cannot show the agreement status icon in the list view Invoice System Status Dependency Cannot show the invoice status icon in the list view Deliverables System Status Dependency Cannot show deliverables status icon in list view Payment/Finances Module Status Dependency Cannot show payment status icon in list view
#793
**Calendar Module - Contractor Portal** > **11\. References**
~41 tok
## **11\. References** * **Link -** [**Click Here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=13461-154366&t=Zeng5V4IZu3iF7VZ-0) Bin
#794
**Calendar Module - Contractor Portal** > **Essential Smart Fields for Client Contracts**
~13 tok
## **Essential Smart Fields for Client Contracts**
#795
**Calendar Module - Contractor Portal** > **Essential Smart Fields for Client Contracts** > **Core Client Information**
~26 tok
### **Core Client Information** * Primary client name * Client email address * Client phone number
#796
**Calendar Module - Contractor Portal** > **Essential Smart Fields for Client Contracts** > **Event Essentials**
~33 tok
### **Event Essentials** * Primary event date * Events like Weddings, engagements, corporate events, etc. * Main event venue
#797
**Calendar Module - Contractor Portal** > **Essential Smart Fields for Client Contracts** > **Service Basics**
~29 tok
### **Service Basics** * Photography, videography, content creation * Selected package title * Total amount
#798
**Calendar Module - Contractor Portal** > **Essential Smart Fields for Client Contracts** > **Business Information**
~17 tok
### **Business Information** * Business name * Business email
#799
**Calendar Module - Contractor Portal** > **Essential Smart Fields for Service Agreements (IC Agreements)**
~17 tok
## **Essential Smart Fields for Service Agreements (IC Agreements)**
#800
**Calendar Module - Contractor Portal** > **Essential Smart Fields for Service Agreements (IC Agreements)** > **Core Contractor Information**
~36 tok
### **Core Contractor Information** * Contractor's full name * Contractor Email * Lead shooter, second shooter, assistant, drone operator
#801
**Calendar Module - Contractor Portal** > **Essential Smart Fields for Service Agreements (IC Agreements)** > **Project Assignment Basics**
~22 tok
### **Project Assignment Basics** * Name of the project * Event date * Venue name
#802
**Calendar Module - Contractor Portal** > **Essential Smart Fields for Service Agreements (IC Agreements)** > **Financial Essentials**
~26 tok
### **Financial Essentials** * Payment amount and type of payment * When the contractor gets paid
#803
**Calendar Module - Contractor Portal** > **Essential Smart Fields for Service Agreements (IC Agreements)** > **Business Information**
~17 tok
### **Business Information** * Business name * Business email
#804
**Contractor Portal - All Tabs:**
~9 tok
# **Contractor Portal - All Tabs:**
#805
Primary action: View assigned events
~10 tok
# Primary action: View assigned events
#806
Available actions: Expand services, View Details, Upload documents
~17 tok
# Available actions: Expand services, View Details, Upload documents
#807
Document showcasing icons about the invoice( inactive if not raised even single invoice), file upload, and payment (will be having feature of partial activation)
~41 tok
# Document showcasing icons about the invoice( inactive if not raised even single invoice), file upload, and payment (will be having feature of partial activation)
#808
Navigation: Events List → Event Detail Page → Service-specific tabs
~177 tok
# Navigation: Events List → Event Detail Page → Service-specific tabs
* Three tabs: Upcomming (default), Post-Event, Completed
All the tabs will have a number badge to display showing how many new entries have happened, once the user opens the tab the badge will go off, Selection of each tab will make the tab heading dark or active
* If a contractor tries to access the details of the project that is of another Brand then the user will see an alert “Wrong studio- You’re trying to access an event that belongs
to one of your other brands. Would you like to switch to that brand now? ”
* Clicking on “Yes” CTA will switch the brand, else click on cancel
Deprecated\_Contractor calendar#809
**Functional Requirements Document (FRD)**
~11 tok
# **Functional Requirements Document (FRD)**
#810
**Functional Requirements Document (FRD)** > **Calendar Management System**
~8 tok
## **Calendar Management System**
#811
**Functional Requirements Document (FRD)** > **1\. Module Overview**
~7 tok
## **1\. Module Overview**
#812
**Functional Requirements Document (FRD)** > **Module Name:** Calendar Management System
~12 tok
## **Module Name:** Calendar Management System
#813
**Functional Requirements Document (FRD)** > **Purpose:** Unified calendar interface supporting dual-view presentation (Grid/List), comprehensive event management, and contractor availability configuration with real-time conflict detection. This calendar will be common across the brands and agencies.
~65 tok
## **Purpose:** Unified calendar interface supporting dual-view presentation (Grid/List), comprehensive event management, and contractor availability configuration with real-time conflict detection. This calendar will be common across the brands and agencies.
#814
**Functional Requirements Document (FRD)** > **Business Goal:** Enable efficient project scheduling, prevent booking conflicts, provide contractors with intuitive availability management, and maintain centralized calendar oversight across multiple agencies
~54 tok
## **Business Goal:** Enable efficient project scheduling, prevent booking conflicts, provide contractors with intuitive availability management, and maintain centralized calendar oversight across multiple agencies
#815
**Functional Requirements Document (FRD)** > **Path:** Contractor Navigation menu → Calendar Module → Calendar
~35 tok
## **Path:** Contractor Navigation menu → Calendar Module → Calendar Account Settings → Working days table → Calendar check availability
#816
**Functional Requirements Document (FRD)** > **2\. User Roles & Permissions**
~9 tok
## **2\. User Roles & Permissions**
#817
**Functional Requirements Document (FRD)** > **Role**
~3 tok
## **Role**
#818
**Functional Requirements Document (FRD)** > **Description**
~5 tok
## **Description**
#819
**Functional Requirements Document (FRD)** > **Key Permissions**
~6 tok
## **Key Permissions**
#820
**Functional Requirements Document (FRD)** > Contractor
~3 tok
## Contractor
#821
**Functional Requirements Document (FRD)** > Individual service provider
~8 tok
## Individual service provider
#822
**Functional Requirements Document (FRD)** > Personal availability management, calendar viewing for schedule awareness, and limited event editing based on assignments
~31 tok
## Personal availability management, calendar viewing for schedule awareness, and limited event editing based on assignments
#823
**Functional Requirements Document (FRD)** >
~1 tok
##
#824
**Functional Requirements Document (FRD)** > **3\. User Flow**
~5 tok
## **3\. User Flow**
#825
**Functional Requirements Document (FRD)** > **Primary Calendar Navigation Flow:**
~10 tok
## **Primary Calendar Navigation Flow:**
#826
**Functional Requirements Document (FRD)** > User accesses the Calendar module from the left sidebar navigation
~17 tok
## User accesses the Calendar module from the left sidebar navigation
#827
**Functional Requirements Document (FRD)** > The system displays a monthly grid view by default, with the current month
~19 tok
## The system displays a monthly grid view by default, with the current month
#828
**Functional Requirements Document (FRD)** > The user navigates using the month/list selector dropdown or navigation arrows
~20 tok
## The user navigates using the month/list selector dropdown or navigation arrows
#829
**Functional Requirements Document (FRD)** > Users can toggle between the "Month" (grid) and "List" views seamlessly
~19 tok
## Users can toggle between the "Month" (grid) and "List" views seamlessly
#830
**Functional Requirements Document (FRD)** > Users can access "Set Up Availability" or interact with event blocks
~18 tok
## Users can access "Set Up Availability" or interact with event blocks
#831
**Functional Requirements Document (FRD)** > **Availability Management Workflow:**
~10 tok
## **Availability Management Workflow:**
#832
**Functional Requirements Document (FRD)** > The contractor clicks the "Set Up Availability" button in the Calendar view
~20 tok
## The contractor clicks the "Set Up Availability" button in the Calendar view
#833
**Functional Requirements Document (FRD)** > The system opens an availability management overlay with a calendar grid (left)
~21 tok
## The system opens an availability management overlay with a calendar grid (left)
#834
**Functional Requirements Document (FRD)** > Contractor selects mode: Available dates or Unavailable dates (Do Not Book)
~20 tok
## Contractor selects mode: Available dates or Unavailable dates (Do Not Book)
#835
**Functional Requirements Document (FRD)** > The contractor selects dates using a single click or drag for ranges
~18 tok
## The contractor selects dates using a single click or drag for ranges
#836
**Functional Requirements Document (FRD)** > The system displays selected dates in the right panel, organized by month
~19 tok
## The system displays selected dates in the right panel, organized by month
#837
**Functional Requirements Document (FRD)** > The contractor reviews selections and removes individual dates if needed
~19 tok
## The contractor reviews selections and removes individual dates if needed
#838
**Functional Requirements Document (FRD)** > The contractor confirms with "Mark as Available" or "Mark as Do Not Book Days."
~21 tok
## The contractor confirms with "Mark as Available" or "Mark as Do Not Book Days."
#839
**Functional Requirements Document (FRD)** > The system integrates with the contractor profile and returns to the main calendar view
~23 tok
## The system integrates with the contractor profile and returns to the main calendar view
#840
**Functional Requirements Document (FRD)** > **List View Navigation Flow:**
~8 tok
## **List View Navigation Flow:**
#841
**Functional Requirements Document (FRD)** > The user toggles to the List view from the Month view
~14 tok
## The user toggles to the List view from the Month view
#842
**Functional Requirements Document (FRD)** > The system displays a tabular breakdown of contractor-assigned events for the selected month
~24 tok
## The system displays a tabular breakdown of contractor-assigned events for the selected month
#843
**Functional Requirements Document (FRD)** > Users can navigate months using the left/right arrows
~14 tok
## Users can navigate months using the left/right arrows
#844
**Functional Requirements Document (FRD)** > Users can access event details by clicking project names or action icons
~19 tok
## Users can access event details by clicking project names or action icons
#845
**Functional Requirements Document (FRD)** > Users can perform quick actions through dedicated icon buttons
~16 tok
## Users can perform quick actions through dedicated icon buttons
#846
**Functional Requirements Document (FRD)** > **Path:** Navigation menu → Calendar module access → View selection → Month/List navigation → Event/Availability management → Confirmation → Updated display
~40 tok
## **Path:** Navigation menu → Calendar module access → View selection → Month/List navigation → Event/Availability management → Confirmation → Updated display
#847
**Functional Requirements Document (FRD)** > **4\. Field Details & Validations**
~10 tok
## **4\. Field Details & Validations**
#848
**Functional Requirements Document (FRD)** > **Field Name**
~4 tok
## **Field Name**
#849
**Functional Requirements Document (FRD)** > **Type**
~3 tok
## **Type**
#850
**Functional Requirements Document (FRD)** > **Required**
~4 tok
## **Required**
#851
**Functional Requirements Document (FRD)** > **Validation Rules**
~6 tok
## **Validation Rules**
#852
**Functional Requirements Document (FRD)** > Month Selector
~4 tok
## Month Selector
#853
**Functional Requirements Document (FRD)** > Dropdown
~3 tok
## Dropdown
#854
**Functional Requirements Document (FRD)** > Conditional
~4 tok
## Conditional
#855
**Functional Requirements Document (FRD)** > Valid month/year combination, navigation control
~13 tok
## Valid month/year combination, navigation control
#856
**Functional Requirements Document (FRD)** > View Toggle
~4 tok
## View Toggle
#857
**Functional Requirements Document (FRD)** > Radio Button
~4 tok
## Radio Button
#858
**Functional Requirements Document (FRD)** > Yes
~2 tok
## Yes
#859
**Functional Requirements Document (FRD)** > "Month" (Grid) or "List" view selection
~11 tok
## "Month" (Grid) or "List" view selection
#860
**Functional Requirements Document (FRD)** > Date Selection
~4 tok
## Date Selection
#861
**Functional Requirements Document (FRD)** > Multi-select Calendar
~6 tok
## Multi-select Calendar
#862
**Functional Requirements Document (FRD)** > No
~1 tok
## No
#863
**Functional Requirements Document (FRD)** > Future dates only, no past date selection
~11 tok
## Future dates only, no past date selection
#864
**Functional Requirements Document (FRD)** > Available Dates
~5 tok
## Available Dates
#865
**Functional Requirements Document (FRD)** > Date Array
~3 tok
## Date Array
#866
**Functional Requirements Document (FRD)** > No
~1 tok
## No
#867
**Functional Requirements Document (FRD)** > Cannot conflict with existing confirmed bookings
~13 tok
## Cannot conflict with existing confirmed bookings
#868
**Functional Requirements Document (FRD)** > Unavailable Dates
~5 tok
## Unavailable Dates
#869
**Functional Requirements Document (FRD)** > Date Array
~3 tok
## Date Array
#870
**Functional Requirements Document (FRD)** > No
~1 tok
## No
#871
**Functional Requirements Document (FRD)** > Cannot override confirmed contractor assignments
~13 tok
## Cannot override confirmed contractor assignments
#872
**Functional Requirements Document (FRD)** > Project Name
~4 tok
## Project Name
#873
**Functional Requirements Document (FRD)** > Text Display
~4 tok
## Text Display
#874
**Functional Requirements Document (FRD)** > No
~1 tok
## No
#875
**Functional Requirements Document (FRD)** > Display from Project module (e.g., "Jadon & Monika Wedding")
~16 tok
## Display from Project module (e.g., "Jadon & Monika Wedding")
#876
**Functional Requirements Document (FRD)** > Event Type and color badge
~7 tok
## Event Type and color badge
#877
**Functional Requirements Document (FRD)** > Text Display and color badge
~8 tok
## Text Display and color badge
#878
**Functional Requirements Document (FRD)** > No
~1 tok
## No
#879
**Functional Requirements Document (FRD)** > Category classification (e.g., "Rehearsal Dinner") and the assigned color badge for the event
~24 tok
## Category classification (e.g., "Rehearsal Dinner") and the assigned color badge for the event
#880
**Functional Requirements Document (FRD)** > Brand Association
~5 tok
## Brand Association
#881
**Functional Requirements Document (FRD)** > Text Display
~4 tok
## Text Display
#882
**Functional Requirements Document (FRD)** > No
~1 tok
## No
#883
**Functional Requirements Document (FRD)** > Client/agency project tracking
~8 tok
## Client/agency project tracking
#884
**Functional Requirements Document (FRD)** > Navigation Arrows
~5 tok
## Navigation Arrows
#885
**Functional Requirements Document (FRD)** > Button Control
~4 tok
## Button Control
#886
**Functional Requirements Document (FRD)** > Yes
~2 tok
## Yes
#887
**Functional Requirements Document (FRD)** > Previous/Next month's chronological movement
~12 tok
## Previous/Next month's chronological movement
#888
**Functional Requirements Document (FRD)** > **List View Specific Fields:**
~8 tok
## **List View Specific Fields:**
#889
**Functional Requirements Document (FRD)** > **Field Name**
~4 tok
## **Field Name**
#890
**Functional Requirements Document (FRD)** > **Type**
~3 tok
## **Type**
#891
**Functional Requirements Document (FRD)** > **Required**
~4 tok
## **Required**
#892
**Functional Requirements Document (FRD)** > **Validation Rules**
~6 tok
## **Validation Rules**
#893
**Functional Requirements Document (FRD)** > Date Column
~4 tok
## Date Column
#894
**Functional Requirements Document (FRD)** > Date Display
~4 tok
## Date Display
#895
**Functional Requirements Document (FRD)** > Yes
~2 tok
## Yes
#896
**Functional Requirements Document (FRD)** > Event date format (04/08/2024)
~8 tok
## Event date format (04/08/2024)
#897
**Functional Requirements Document (FRD)** > Project Name
~4 tok
## Project Name
#898
**Functional Requirements Document (FRD)** > Text Display
~4 tok
## Text Display
#899
**Functional Requirements Document (FRD)** > Yes
~2 tok
## Yes
#900
**Functional Requirements Document (FRD)** > Project name display
~6 tok
## Project name display
#901
**Functional Requirements Document (FRD)** > Event Name (with color indicator)
~9 tok
## Event Name (with color indicator)
#902
**Functional Requirements Document (FRD)** > Text and icon Display
~6 tok
## Text and icon Display
#903
**Functional Requirements Document (FRD)** > Yes
~2 tok
## Yes
#904
**Functional Requirements Document (FRD)** > Sub-event classification
~7 tok
## Sub-event classification
#905
**Functional Requirements Document (FRD)** > Brand Column
~4 tok
## Brand Column
#906
**Functional Requirements Document (FRD)** > Text Display
~4 tok
## Text Display
#907
**Functional Requirements Document (FRD)** > Yes
~2 tok
## Yes
#908
**Functional Requirements Document (FRD)** > Brand name association
~6 tok
## Brand name association
#909
**Functional Requirements Document (FRD)** > Venue Column
~4 tok
## Venue Column
#910
**Functional Requirements Document (FRD)** > Text Display
~4 tok
## Text Display
#911
**Functional Requirements Document (FRD)** > Yes
~2 tok
## Yes
#912
**Functional Requirements Document (FRD)** > Event location information
~7 tok
## Event location information
#913
**Functional Requirements Document (FRD)** > Icons Column
~4 tok
## Icons Column
#914
**Functional Requirements Document (FRD)** > Icons
~2 tok
## Icons
#915
**Functional Requirements Document (FRD)** > Yes
~87 tok
## Yes
The **Agreement**, **Invoice**, **File Upload**, and **Payment** icons are responsive but non-clickable.
* Each icon becomes **active** only when its corresponding action or activity occurs.
* The **Payment** icon supports **partial activation**, meaning it will appear partially active once at least one payment has been made.#916
**Functional Requirements Document (FRD)** >
~1 tok
##
#917
**Functional Requirements Document (FRD)** > **SET UP AVAILABILITY OVERLAY**
~9 tok
## **SET UP AVAILABILITY OVERLAY**
#918
**Functional Requirements Document (FRD)** > **Activation:** Calendar Interface > "Set Up Availability" Button
~17 tok
## **Activation:** Calendar Interface > "Set Up Availability" Button
#919
**Set Up Availability - Functional Specification Table**
~15 tok
# **Set Up Availability - Functional Specification Table**
#920
**Set Up Availability - Functional Specification Table** > **AVAILABILITY SETUP Panel - COMPLETE FUNCTIONALITY**
~14 tok
## **AVAILABILITY SETUP Panel - COMPLETE FUNCTIONALITY**
#921
**Set Up Availability - Functional Specification**
~13 tok
# **Set Up Availability - Functional Specification**
#922
**Set Up Availability - Functional Specification** > **Component/Action**
~6 tok
## **Component/Action**
#923
**Set Up Availability - Functional Specification** > **User Interaction**
~6 tok
## **User Interaction**
#924
**Set Up Availability - Functional Specification** > **System Response**
~6 tok
## **System Response**
#925
**Set Up Availability - Functional Specification** > **CTA Behavior**
~5 tok
## **CTA Behavior**
#926
**Set Up Availability - Functional Specification** > **Display Format**
~5 tok
## **Display Format**
#927
**Set Up Availability - Functional Specification** > **Set Up Availability Button**
~8 tok
## **Set Up Availability Button**
#928
**Set Up Availability - Functional Specification** > Click from Calendar Interface
~8 tok
## Click from Calendar Interface
#929
**Set Up Availability - Functional Specification** > Panel opens on the right side
~8 tok
## Panel opens on the right side
#930
**Set Up Availability - Functional Specification** > No CTAs until dates selected
~8 tok
## No CTAs until dates selected
#931
**Set Up Availability - Functional Specification** > Empty "Selected Dates" section
~8 tok
## Empty "Selected Dates" section
#932
**Set Up Availability - Functional Specification** > **DATE SELECTION & DISPLAY**
~8 tok
## **DATE SELECTION & DISPLAY**
#933
**Set Up Availability - Functional Specification** > **Selection Type**
~5 tok
## **Selection Type**
#934
**Set Up Availability - Functional Specification** > **User Action**
~5 tok
## **User Action**
#935
**Set Up Availability - Functional Specification** > **Display Format**
~5 tok
## **Display Format**
#936
**Set Up Availability - Functional Specification** > **Organization**
~5 tok
## **Organization**
#937
**Set Up Availability - Functional Specification** > **Single Date**
~5 tok
## **Single Date**
#938
**Set Up Availability - Functional Specification** > Click the individual calendar date
~9 tok
## Click the individual calendar date
#939
**Set Up Availability - Functional Specification** > DD/MM/YYYY format (e.g., 10/08/2024)
~10 tok
## DD/MM/YYYY format (e.g., 10/08/2024)
#940
**Set Up Availability - Functional Specification** > Listed under the respective month header
~11 tok
## Listed under the respective month header
#941
**Set Up Availability - Functional Specification** > **Multiple Dates**
~5 tok
## **Multiple Dates**
#942
**Set Up Availability - Functional Specification** > Click multiple individual dates
~9 tok
## Click multiple individual dates
#943
**Set Up Availability - Functional Specification** > Each date is listed separately
~8 tok
## Each date is listed separately
#944
**Set Up Availability - Functional Specification** > Grouped under month titles (e.g., "August, 2024")
~13 tok
## Grouped under month titles (e.g., "August, 2024")
#945
**Set Up Availability - Functional Specification** > **Cross-Month Selection**
~7 tok
## **Cross-Month Selection**
#946
**Set Up Availability - Functional Specification** > Select dates from different months
~9 tok
## Select dates from different months
#947
**Set Up Availability - Functional Specification** > All dates are listed with month grouping
~11 tok
## All dates are listed with month grouping
#948
**Set Up Availability - Functional Specification** > Multiple month headers shown (e.g., "August, 2024", "July, 2024")
~17 tok
## Multiple month headers shown (e.g., "August, 2024", "July, 2024")
#949
**Set Up Availability - Functional Specification** > **DYNAMIC CTA BEHAVIOR**
~7 tok
## **DYNAMIC CTA BEHAVIOR**
#950
**Set Up Availability - Functional Specification** > **Date Status Selected**
~7 tok
## **Date Status Selected**
#951
**Set Up Availability - Functional Specification** > **Primary CTA Label**
~6 tok
## **Primary CTA Label**
#952
**Set Up Availability - Functional Specification** > **Secondary CTA**
~5 tok
## **Secondary CTA**
#953
**Set Up Availability - Functional Specification** > **Functionality**
~5 tok
## **Functionality**
#954
**Set Up Availability - Functional Specification** > **Available Dates**
~6 tok
## **Available Dates**
#955
**Set Up Availability - Functional Specification** > "Mark as Do Not Book Days"
~7 tok
## "Mark as Do Not Book Days"
#956
**Set Up Availability - Functional Specification** > "Cancel"
~3 tok
## "Cancel"
#957
**Set Up Availability - Functional Specification** > Converts selected available dates to unavailable status
~15 tok
## Converts selected available dates to unavailable status
#958
**Set Up Availability - Functional Specification** > **Unavailable Dates**
~6 tok
## **Unavailable Dates**
#959
**Set Up Availability - Functional Specification** > "Mark as Available"
~6 tok
## "Mark as Available"
#960
**Set Up Availability - Functional Specification** > "Cancel"
~3 tok
## "Cancel"
#961
**Set Up Availability - Functional Specification** > Converts selected unavailable dates to available status
~15 tok
## Converts selected unavailable dates to available status
#962
**Set Up Availability - Functional Specification** >
~1 tok
##
#963
**Set Up Availability - Functional Specification** > **DATE MANAGEMENT OPTIONS**
~8 tok
## **DATE MANAGEMENT OPTIONS**
#964
**Set Up Availability - Functional Specification** > **Action**
~3 tok
## **Action**
#965
**Set Up Availability - Functional Specification** > **Method 1**
~4 tok
## **Method 1**
#966
**Set Up Availability - Functional Specification** > **Method 2**
~4 tok
## **Method 2**
#967
**Set Up Availability - Functional Specification** > **Result**
~3 tok
## **Result**
#968
**Set Up Availability - Functional Specification** > **Remove Selected Date**
~7 tok
## **Remove Selected Date**
#969
**Set Up Availability - Functional Specification** > Click the same date on the calendar again
~11 tok
## Click the same date on the calendar again
#970
**Set Up Availability - Functional Specification** > Click the delete button next to the date in the panel
~14 tok
## Click the delete button next to the date in the panel
#971
**Set Up Availability - Functional Specification** > Date removed from selection list
~9 tok
## Date removed from selection list
#972
**Set Up Availability - Functional Specification** > **Clear All Selections**
~7 tok
## **Clear All Selections**
#973
**Set Up Availability - Functional Specification** > Click the "Cancel" button
~7 tok
## Click the "Cancel" button
#974
**Set Up Availability - Functional Specification** > Close the overlay without confirming
~10 tok
## Close the overlay without confirming
#975
**Set Up Availability - Functional Specification** > All selections discarded, the panel closes
~11 tok
## All selections discarded, the panel closes
#976
**Set Up Availability - Functional Specification** > **Confirm Changes**
~6 tok
## **Confirm Changes**
#977
**Set Up Availability - Functional Specification** > Click the primary CTA button
~8 tok
## Click the primary CTA button
#978
**Set Up Availability - Functional Specification** > N/A
~2 tok
## N/A
#979
**Set Up Availability - Functional Specification** > Selected dates status updated, panel closes
~12 tok
## Selected dates status updated, panel closes
#980
**Set Up Availability - Functional Specification** > **PANEL ORGANIZATION EXAMPLES**
~9 tok
## **PANEL ORGANIZATION EXAMPLES**
#981
**Set Up Availability - Functional Specification** > **Scenario**
~4 tok
## **Scenario**
#982
**Set Up Availability - Functional Specification** > **Selected Dates**
~5 tok
## **Selected Dates**
#983
**Set Up Availability - Functional Specification** > **Panel Display**
~5 tok
## **Panel Display**
#984
**Set Up Availability - Functional Specification** > **Single Month**
~5 tok
## **Single Month**
#985
**Set Up Availability - Functional Specification** > 10/08/2024, 11/08/2024, 12/08/2024
~9 tok
## 10/08/2024, 11/08/2024, 12/08/2024
#986
**Set Up Availability - Functional Specification** > **August, 2024**
~23 tok
## **August, 2024** 10/08/2024 \[delete\] 11/08/2024 \[delete\] 12/08/2024 \[delete\]
#987
**Set Up Availability - Functional Specification** > **Multiple Months**
~6 tok
## **Multiple Months**
#988
**Set Up Availability - Functional Specification** > 28/07/2024,29/07/2024, 10/08/2024, 13/08/2024
~12 tok
## 28/07/2024,29/07/2024, 10/08/2024, 13/08/2024
#989
**Set Up Availability - Functional Specification** > **July, 2024**
~34 tok
## **July, 2024** 28/07/2024 \[delete\] 29/07/2024 \[delete\] **August, 2024** 0/08/2024 \[delete\] 13/08/2024 \[delete\]
#990
**Set Up Availability - Functional Specification** > **WORKFLOW SUMMARY**
~6 tok
## **WORKFLOW SUMMARY**
#991
**Set Up Availability - Functional Specification** > **Step**
~3 tok
## **Step**
#992
**Set Up Availability - Functional Specification** > **User Action**
~5 tok
## **User Action**
#993
**Set Up Availability - Functional Specification** > **System Behavior**
~6 tok
## **System Behavior**
#994
**Set Up Availability - Functional Specification** > **CTA Options**
~5 tok
## **CTA Options**
#995
**Set Up Availability - Functional Specification** > **1\. Activation**
~5 tok
## **1\. Activation**
#996
**Set Up Availability - Functional Specification** > Click "Set Up Availability."
~8 tok
## Click "Set Up Availability."
#997
**Set Up Availability - Functional Specification** > Panel opens, shows empty selected dates
~11 tok
## Panel opens, shows empty selected dates
#998
**Set Up Availability - Functional Specification** > No CTAs are visible until dates are selected
~12 tok
## No CTAs are visible until dates are selected
#999
**Set Up Availability - Functional Specification** > **2\. Date Selection**
~6 tok
## **2\. Date Selection**
#1000
**Set Up Availability - Functional Specification** > Click calendar dates
~6 tok
## Click calendar dates
#1001
**Set Up Availability - Functional Specification** > Dates appear in a panel with month groupings
~12 tok
## Dates appear in a panel with month groupings
#1002
**Set Up Availability - Functional Specification** > CTAs appear based on the selected date status
~12 tok
## CTAs appear based on the selected date status
#1003
**Set Up Availability - Functional Specification** > **3\. Management**
~5 tok
## **3\. Management**
#1004
**Set Up Availability - Functional Specification** > Add/remove dates as needed
~7 tok
## Add/remove dates as needed
#1005
**Set Up Availability - Functional Specification** > Real-time panel updates
~7 tok
## Real-time panel updates
#1006
**Set Up Availability - Functional Specification** > CTAs remain contextual to selection
~10 tok
## CTAs remain contextual to selection
#1007
**Set Up Availability - Functional Specification** > **4\. Completion**
~5 tok
## **4\. Completion**
#1008
**Set Up Availability - Functional Specification** > Click the primary CTA or Cancel
~9 tok
## Click the primary CTA or Cancel
#1009
**Set Up Availability - Functional Specification** > Changes saved/discarded, panel closes
~10 tok
## Changes saved/discarded, panel closes
#1010
**Set Up Availability - Functional Specification** > Return to calendar interface
~8 tok
## Return to calendar interface
#1011
**Set Up Availability - Functional Specification** > **KEY RULES**
~4 tok
## **KEY RULES**
#1012
**Set Up Availability - Functional Specification** > **CTA Logic:** Button label depends on status of selected dates (available → "Mark as Do Not Book", unavailable → "Mark as Available")
~34 tok
## **CTA Logic:** Button label depends on status of selected dates (available → "Mark as Do Not Book", unavailable → "Mark as Available")
#1013
**Set Up Availability - Functional Specification** > **Date Organization:** Automatically groups by month with clear headers when multiple months are involved
~27 tok
## **Date Organization:** Automatically groups by month with clear headers when multiple months are involved
#1014
**Set Up Availability - Functional Specification** > **Real-time Updates:** Panel immediately reflects any date additions or removals
~21 tok
## **Real-time Updates:** Panel immediately reflects any date additions or removals
#1015
**Set Up Availability - Functional Specification** > **Dual Removal Methods:** Dates can be unselected either from the calendar or using the delete buttons in the panel
~30 tok
## **Dual Removal Methods:** Dates can be unselected either from the calendar or using the delete buttons in the panel
#1016
**Set Up Availability - Functional Specification** > **5\. Error Message Handling**
~8 tok
## **5\. Error Message Handling**
#1017
**Set Up Availability - Functional Specification** >
~1 tok
##
#1018
**Set Up Availability - Functional Specification** > **Field/Scenario**
~5 tok
## **Field/Scenario**
#1019
**Set Up Availability - Functional Specification** > **Validation Scenario**
~7 tok
## **Validation Scenario**
#1020
**Set Up Availability - Functional Specification** > **Error Message**
~5 tok
## **Error Message**
#1021
**Set Up Availability - Functional Specification** > Update alert with **Update, Cancel** Button
~12 tok
## Update alert with **Update, Cancel** Button
#1022
**Set Up Availability - Functional Specification** > When the user updates any available dates
~11 tok
## When the user updates any available dates
#1023
**Set Up Availability - Functional Specification** > **“**Please note that any change in availability made will only be reflected in future projects; already assigned /committed projects will not have any changes.**”**
~42 tok
## **“**Please note that any change in availability made will only be reflected in future projects; already assigned /committed projects will not have any changes.**”**
#1024
**Set Up Availability - Functional Specification** > Availability Conflict
~6 tok
## Availability Conflict
#1025
**Set Up Availability - Functional Specification** > Attempting to book an unavailable date
~10 tok
## Attempting to book an unavailable date
#1026
**Set Up Availability - Functional Specification** > " Date unavailable"
~6 tok
## " Date unavailable"
#1027
**Set Up Availability - Functional Specification** > Mode Toggle
~4 tok
## Mode Toggle
#1028
**Set Up Availability - Functional Specification** > No dates selected before save
~8 tok
## No dates selected before save
#1029
**Set Up Availability - Functional Specification** > "Select at least one date before marking availability."
~15 tok
## "Select at least one date before marking availability."
#1030
**Set Up Availability - Functional Specification** > List View
~3 tok
## List View
#1031
**Set Up Availability - Functional Specification** > No events for the month
~7 tok
## No events for the month
#1032
**Set Up Availability - Functional Specification** > "No events assigned for this month"
~10 tok
## "No events assigned for this month"
#1033
**Set Up Availability - Functional Specification** > Session
~3 tok
## Session
#1034
**Set Up Availability - Functional Specification** > Session timeout during operation
~9 tok
## Session timeout during operation
#1035
**Set Up Availability - Functional Specification** > "Session expired. Please log in to continue"
~12 tok
## "Session expired. Please log in to continue"
#1036
**Set Up Availability - Functional Specification** > Network
~3 tok
## Network
#1037
**Set Up Availability - Functional Specification** > Connection lost during save
~8 tok
## Connection lost during save
#1038
**Set Up Availability - Functional Specification** > "Connection lost. Please try again later"
~11 tok
## "Connection lost. Please try again later"
#1039
**Set Up Availability - Functional Specification** >
~1 tok
##
#1040
**Set Up Availability - Functional Specification** >
~1 tok
##
#1041
**Set Up Availability - Functional Specification** >
~1 tok
##
#1042
**Set Up Availability - Functional Specification** > **6\. Success Message Handling**
~9 tok
## **6\. Success Message Handling**
#1043
**Set Up Availability - Functional Specification** >
~1 tok
##
#1044
**Set Up Availability - Functional Specification** > **Action Category**
~6 tok
## **Action Category**
#1045
**Set Up Availability - Functional Specification** > **Success Scenario**
~6 tok
## **Success Scenario**
#1046
**Set Up Availability - Functional Specification** > **Success Message**
~6 tok
## **Success Message**
#1047
**Set Up Availability - Functional Specification** > Availability Management
~7 tok
## Availability Management
#1048
**Set Up Availability - Functional Specification** > Dates marked as available/unavailable
~10 tok
## Dates marked as available/unavailable
#1049
**Set Up Availability - Functional Specification** > "Availability updated successfully"
~10 tok
## "Availability updated successfully"
#1050
**Set Up Availability - Functional Specification** >
~1 tok
##
#1051
**Functional Requirements
~155 tok
# **Functional Requirements 4.1 Login & Dashboard Entry** **4.1.1 Login Flow** * Contractors log into the Contractor Portal using their registered credentials * Upon login, onboarding. The user will be adding the working days. **4.1.2 Dashboard Integration** * The **Dashboard** includes a **“Do Not Book Days” widget** summarizing upcoming unavailability and events. * Clicking any date or the “View Calendar” CTA redirects users to the **Calendar Module**, which functions as the main scheduling interface. * The widget dynamically syncs with the main calendar, reflecting all changes in real time.
#1052
**Functional Requirements > **4.2 Zero Data (No Data) State**
~307 tok
## **4.2 Zero Data (No Data) State**
**4.2.1 Overview
**The zero-state scenario occurs when no events, schedules, or agency data are available for display. It helps the contractor understand why the calendar appears empty.
**4.2.2 Causes of Zero State**
**Category**
**Description**
**Example Scenarios**
**No Assigned or Upcoming Events**
The contractor has no confirmed bookings or events.
• Events still in the “Lead” stage.
• Project event date marked “TBD”.
**Incomplete Setup**
The contractor profile or payment setup is incomplete.
• Onboarding not accepted.
• Missing Stripe/bank setup.
**Agency Cancellations or Removals**
Agency actions have removed or canceled linked events.
• Contractor unassigned from the project.
• Agency subscription expired.
**4.2.3 Display Behavior**
* **Dashboard Widget:** Only the current date is highlighted; other dates appear in default black/neutral state.
* **Calendar Module:**
* **List View:** Shows “No events to display.”
* **Month View:** Displays blank grid with current date highlighted and all days marked as available.
* Contractors can still manually set up **Do Not Book** or **Available** days even in zero state.#1053
**Functional Requirements > **4.3 Global Calendar Logic**
~235 tok
## **4.3 Global Calendar Logic** **4.3.1 Concept** * Contractors associated with multiple agencies have a unified **Global Calendar** view. * Acts as a master calendar consolidating data across agencies. * Prevents double bookings and ensures transparency of availability. **4.3.2 Synchronization Rules** * All availability and event updates are synchronized across agencies in real time. * If a contractor is booked by one agency, the same date is **automatically marked unavailable** for all others. * If a contractor is removed or an event is canceled, that date becomes available again globally. * Visibility Restriction: Agencies only see **availability status**, not the other agency’s event details. **4.3.3 Technical Notes** * Cross-agency synchronization is handled via contractor’s unique ID in the global table. * Data consistency ensured through event-level time stamps and periodic background sync tasks.
#1054
**Functional Requirements > **4.4 Calendar Display & Views**
~400 tok
## **4.4 Calendar Display & Views**
**4.4.1 Calendar Modes**
* **Month (Calendar) View:** Default grid layout showing full month overview.
* **List View:** Sequential listing of upcoming events in scrollable format.
* Both views are accessible from toggle buttons and persist the user’s last chosen mode across sessions.
**4.4.2 Calendar Display Logic**
* **Default View:** Current month grid loads on entry.
* **View Persistence:** System stores last selected view (Month/List) per user.
* **Event Visualization:** Multi-day events visually span multiple date cells.
**Highlight & Indicators:
**
**Indicator**
**Meaning**
**Yellow Block**
Current Date
**Grey Hatched / Striped**
Do Not Book / Unavailable
**Solid White w/ Label**
Booked Event
**Blank White**
Available Day
**4.4.3 Navigation & Interaction**
* Arrows or month selector to move forward/backward between months.
* Clicking an event opens **Event Detail Page** (contractor view).
* “Set Up Availability” CTA is fixed in both views for quick scheduling edits.
* Tooltip / hover cards show quick info: event name, project, brand.
* All past dates are locked from editing.
**4.4.4 Data Consistency & Integration**
* **Cross-View Consistency:** Changes made in one view immediately update in the other.
* **Real-Time Updates:** WebSocket or API polling ensures live reflection of changes.
* **External Integration:** One-way sync to Google Calendar (CRM → External only).
* **Profile Integration:** Contractor profile includes availability summary for quick reference.#1055
**Functional Requirements > **4.5 Do Not Book (DNB) and Availability Logic**
~378 tok
## **4.5 Do Not Book (DNB) and Availability Logic**
**4.5.1 Setup & Default State**
* During onboarding, contractors specify **working days**.
* All days are initially marked as **available** unless excluded in working days.
* Non-working days are auto-marked as DNB.
* Default DNB state is **grey-striped**.
**4.5.2 Marking Availability / Unavailability**
* **Mark as Do Not Book:
**
* Used to block dates (single or range).
* Triggered via single-click or drag selection.
* Immediately syncs with Global Calendar.
* **Mark as Available:
**
* Reverts previously blocked dates to available.
* Disabled for dates overlapping confirmed events.
**4.5.3 Conflict & Validation Rules**
* **One Project per Day Rule:** Contractors cannot be booked for more than one project per day.
* **Real-Time Validation:** Instant checks prevent marking DNB on booked days.
* **Conflict Indicator:** Conflicting dates highlighted in red with tooltip explaining conflict.
* **Editable Range:** Contractors can edit only future dates; past dates are read-only.
**Blocking Prevention:** System disallows creating new events on striped (unavailable) days.
**4.5.4 UI Behavior**
* Dragging over dates highlights the selection with soft yellow background before confirmation.
* After marking, success toast messages confirm action (“3 days marked as unavailable”).
* The undo option appears for 5 seconds post-change.#1056
**Functional Requirements > **4.6 Booking Window & Rolling Availability**
~287 tok
## **4.6 Booking Window & Rolling Availability**
**4.6.1 Definition**
* Defines how far into the future a contractor can be assigned events.
* Available options: **3 months**, **6 months**, **12 months**, or **Any** (unlimited).
**4.6.2 Rolling Logic**
* The system continuously rolls forward, maintaining the set duration window.
* Example: If “6 months” selected, always displays today + next 6 months.
Automatically adds new dates at the end as time progresses.
**4.6.3 System Behavior**
* Contractors outside their booking window are excluded from agency searches.
* Attempts to mark unavailable overlapping booked dates trigger warning:
_“You already have a date booked within this window.”_
* Contractors can change the booking window anytime.
* Changing the window does not affect confirmed events; applies only to future bookings.
**4.6.4 Sync & Impact**
* All window settings synchronize globally across agencies.
* Agency-side availability checks dynamically respect contractor’s window.
* Global calendar visually limits forward navigation based on booking window duration.#1057
**Functional Requirements > **4.7 Agency Portal Interaction**
~179 tok
## **4.7 Agency Portal Interaction**
**4.7.1 Check Availability Logic**
* The **Check Availability** feature fetches contractor’s real-time calendar data.
* Contractors marked as DNB or already booked (even in another agency) are **excluded** from the list.
* The system ensures that date conflicts do not occur across agencies.
**4.7.2 Assign Contractor Behavior**
* On assignment attempt, conflict validation occurs:
* If a conflict exists → warning popup shown explaining “Contractor already booked or unavailable on this date.”
* On removal → date automatically reverts to available globally.
* The same logic applies during **Suggested Contractor** recommendations.#1058
**Functional Requirements > **4.8 Contractor Calendar in Agency Portal**
~203 tok
## **4.8 Contractor Calendar in Agency Portal**
**4.8.1 Embedded Calendar**
* Each contractor’s profile under the **Agency Portal → Contractors Module** contains an integrated calendar view.
* Displays both agency-specific events and global unavailability data.
**4.8.2 Calendar View Details**
* **Unavailable Dates:** Shown as striped.
* **Booked Events:** Shown as labeled white cells with project names.
* **Available Dates:** Shown as plain white.
* **Cross-Agency Bookings:** Shown as striped (read-only for the current agency).
**4.8.3 List View Under Profile**
* Lists all events assigned to the contractor under the current agency.
* Allows quick filtering by month, project, or event type.
* Real-time sync ensures updates made by the contractor are immediately visible.#1059
**Functional Requirements >
~1 tok
##
#1060
**Functional Requirements > **8\. Edge Cases**
~5 tok
## **8\. Edge Cases**
#1061
**Functional Requirements > **Scenario**
~4 tok
## **Scenario**
#1062
**Functional Requirements > **Expected Behavior**
~6 tok
## **Expected Behavior**
#1063
**Functional Requirements > The contractor attempts to mark the unavailable date with a confirmed booking
~20 tok
## The contractor attempts to mark the unavailable date with a confirmed booking
#1064
**Functional Requirements > The system prevents change, displays errors with specific booking details, and maintains existing availability
~28 tok
## The system prevents change, displays errors with specific booking details, and maintains existing availability
#1065
**Functional Requirements > Multiple overlapping date ranges selected simultaneously
~15 tok
## Multiple overlapping date ranges selected simultaneously
#1066
**Functional Requirements > The system processes all selections, automatically merges overlapping ranges, and displays them organized by month
~29 tok
## The system processes all selections, automatically merges overlapping ranges, and displays them organized by month
#1067
**Functional Requirements > The user switches between Available/Unavailable modes during the active selection
~21 tok
## The user switches between Available/Unavailable modes during the active selection
#1068
**Functional Requirements > The system preserves selected dates, updates action button text, and maintains calendar context
~25 tok
## The system preserves selected dates, updates action button text, and maintains calendar context
#1069
**Functional Requirements > Month navigation during a multi-day event display
~13 tok
## Month navigation during a multi-day event display
#1070
**Functional Requirements > The system properly renders event spans across month boundaries, maintains visual continuity
~24 tok
## The system properly renders event spans across month boundaries, maintains visual continuity
#1071
**Functional Requirements > Network interruption during the availability save operation
~16 tok
## Network interruption during the availability save operation
#1072
**Functional Requirements > System queues change locally, display an offline indicator, and sync when the connection is restored
~26 tok
## System queues change locally, display an offline indicator, and sync when the connection is restored
#1073
**Functional Requirements > Rapid successive month navigation clicks
~11 tok
## Rapid successive month navigation clicks
#1074
**Functional Requirements > The system debounces navigation to prevent UI conflicts and maintains smooth transition animations
~25 tok
## The system debounces navigation to prevent UI conflicts and maintains smooth transition animations
#1075
**Functional Requirements > Calendar view during month transition (end/start of month)
~15 tok
## Calendar view during month transition (end/start of month)
#1076
**Functional Requirements > The system displays appropriate date cells, handles month overflow correctly
~20 tok
## The system displays appropriate date cells, handles month overflow correctly
#1077
**Functional Requirements > All days are blocked in a month
~9 tok
## All days are blocked in a month
#1078
**Functional Requirements > Show empty calendar with striping + message "You've marked all days this month as unavailable."
~25 tok
## Show empty calendar with striping + message "You've marked all days this month as unavailable."
#1079
**Functional Requirements > The contractor becomes available again(if the event gets canceled)
~17 tok
## The contractor becomes available again(if the event gets canceled)
#1080
**Functional Requirements > Stripe disappears, and the date is now open for booking
~15 tok
## Stripe disappears, and the date is now open for booking
#1081
**Functional Requirements > Clicking an event in the contractor view
~11 tok
## Clicking an event in the contractor view
#1082
**Functional Requirements > Opens a read-only detail popup with event metadata (event name, time, location, etc.)
~22 tok
## Opens a read-only detail popup with event metadata (event name, time, location, etc.)
#1083
**Functional Requirements > View toggle during active month navigation
~11 tok
## View toggle during active month navigation
#1084
**Functional Requirements > The system completes navigation first, then applies the view change
~18 tok
## The system completes navigation first, then applies the view change
#1085
**Functional Requirements > List view with extensive event data
~10 tok
## List view with extensive event data
#1086
**Functional Requirements > The system provides scroll functionality and pagination if needed
~17 tok
## The system provides scroll functionality and pagination if needed
#1087
**Functional Requirements >
~1 tok
##
#1088
**Functional Requirements >
~1 tok
##
#1089
**Functional Requirements >
~1 tok
##
#1090
**Functional Requirements >
~1 tok
##
#1091
**Functional Requirements >
~1 tok
##
#1092
**Functional Requirements >
~1 tok
##
#1093
**Functional Requirements > **9\. Test Cases**
~5 tok
## **9\. Test Cases**
#1094
**Functional Requirements > **Detailed Test Cases:** [Pixally Test cases - 01.04.25](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=97704170#gid=97704170)
~44 tok
## **Detailed Test Cases:** [Pixally Test cases - 01.04.25](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=97704170#gid=97704170)
#1095
**Functional Requirements > **10\. Acceptance Criteria**
~8 tok
## **10\. Acceptance Criteria**
#1096
**Functional Requirements > **Calendar Display Requirements:**
~9 tok
## **Calendar Display Requirements:**
#1097
**Functional Requirements > List view presents events in chronological order with all required data columns (Date, Client, Event Type, Brand, Venue, Icons, Action Menu)
~36 tok
## List view presents events in chronological order with all required data columns (Date, Client, Event Type, Brand, Venue, Icons, Action Menu)
#1098
**Functional Requirements > View toggle switches seamlessly between grid and list without data loss
~19 tok
## View toggle switches seamlessly between grid and list without data loss
#1099
**Functional Requirements > The month navigation maintains smooth transitions and proper event display across boundaries
~24 tok
## The month navigation maintains smooth transitions and proper event display across boundaries
#1100
**Functional Requirements > The current day is highlighted with a yellow background in both views
~18 tok
## The current day is highlighted with a yellow background in both views
#1101
**Functional Requirements > The color-coding system is consistently applied across all calendar states
~19 tok
## The color-coding system is consistently applied across all calendar states
#1102
**Functional Requirements > **Availability Management Requirements:**
~11 tok
## **Availability Management Requirements:**
#1103
**Functional Requirements > Date selection supports both individual clicks and range dragging
~17 tok
## Date selection supports both individual clicks and range dragging
#1104
**Functional Requirements > Available/Unavailable modes function correctly with appropriate action buttons
~20 tok
## Available/Unavailable modes function correctly with appropriate action buttons
#1105
**Functional Requirements > Selected dates are organized by month with individual removal capabilities
~19 tok
## Selected dates are organized by month with individual removal capabilities
#1106
**Functional Requirements > Only contractors can modify their availability (no admin override)
~17 tok
## Only contractors can modify their availability (no admin override)
#1107
**Functional Requirements > Entire day availability management (no partial time slots)
~15 tok
## Entire day availability management (no partial time slots)
#1108
**Functional Requirements > **Event Management Requirements:**
~9 tok
## **Event Management Requirements:**
#1109
**Functional Requirements > Events display correctly in both grid (blocks) and list (rows) formats
~18 tok
## Events display correctly in both grid (blocks) and list (rows) formats
#1110
**Functional Requirements > Multi-day events span properly across consecutive dates in a grid view
~18 tok
## Multi-day events span properly across consecutive dates in a grid view
#1111
**Functional Requirements > Event details are accessible through a click interaction on blocks/rows
~19 tok
## Event details are accessible through a click interaction on blocks/rows
#1112
**Functional Requirements > Read-only event details pop-up for contractor view
~13 tok
## Read-only event details pop-up for contractor view
#1113
**Functional Requirements > Booked events are clearly labeled and visually distinct
~15 tok
## Booked events are clearly labeled and visually distinct
#1114
**Functional Requirements > **List View Specific Requirements:**
~10 tok
## **List View Specific Requirements:**
#1115
**Functional Requirements > The tabular breakdown shows all contractor-assigned events for the selected month
~21 tok
## The tabular breakdown shows all contractor-assigned events for the selected month
#1116
**Functional Requirements > Header controls function correctly (View Toggle, Month Navigation, Today Button, Setup Availability)
~26 tok
## Header controls function correctly (View Toggle, Month Navigation, Today Button, Setup Availability)
#1117
**Functional Requirements > All column data displays accurately (Date, Client, Event Type, Brand, Venue)
~20 tok
## All column data displays accurately (Date, Client, Event Type, Brand, Venue)
#1118
**Functional Requirements > Action icons provide quick access to respective modules (View Event, Upload Deliverables, Upload Invoice, View Timeline)
~31 tok
## Action icons provide quick access to respective modules (View Event, Upload Deliverables, Upload Invoice, View Timeline)
#1119
**Functional Requirements > Clicking project names opens the full Event Detail view
~15 tok
## Clicking project names opens the full Event Detail view
#1120
**Functional Requirements > **11\. Dependencies**
~6 tok
## **11\. Dependencies**
#1121
**Functional Requirements > **Module/System**
~5 tok
## **Module/System**
#1122
**Functional Requirements > **Dependency Type**
~6 tok
## **Dependency Type**
#1123
**Functional Requirements > **Impact if Unavailable**
~7 tok
## **Impact if Unavailable**
#1124
**Functional Requirements > User Authentication & Role Management
~10 tok
## User Authentication & Role Management
#1125
**Functional Requirements > Core Access Control
~6 tok
## Core Access Control
#1126
**Functional Requirements > Cannot determine user permissions, module access blocked
~15 tok
## Cannot determine user permissions, module access blocked
#1127
**Functional Requirements > Events Management Module
~7 tok
## Events Management Module
#1128
**Functional Requirements > Data Integration
~5 tok
## Data Integration
#1129
**Functional Requirements > Event display unavailable, calendar shows availability only
~16 tok
## Event display unavailable, calendar shows availability only
#1130
**Functional Requirements > Contractor Profile System
~7 tok
## Contractor Profile System
#1131
**Functional Requirements > Core Data Source
~5 tok
## Core Data Source
#1132
**Functional Requirements > Availability management was disabled, and contractor identification failed
~19 tok
## Availability management was disabled, and contractor identification failed
#1133
**Functional Requirements > Google Place API
~5 tok
## Google Place API
#1134
**Functional Requirements > Optional External Integration
~8 tok
## Optional External Integration
#1135
**Functional Requirements > External sync unavailable, local functionality continues normally
~17 tok
## External sync unavailable, local functionality continues normally
#1136
**Functional Requirements > Database System
~5 tok
## Database System
#1137
**Functional Requirements > Core Infrastructure
~6 tok
## Core Infrastructure
#1138
**Functional Requirements > Complete module failure, no data persistence
~12 tok
## Complete module failure, no data persistence
#1139
**Functional Requirements > Session Management
~5 tok
## Session Management
#1140
**Functional Requirements > State Persistence
~5 tok
## State Persistence
#1141
**Functional Requirements > User preferences lost, frequent re-authentication required
~15 tok
## User preferences lost, frequent re-authentication required
#1142
**Functional Requirements > Left Sidebar Navigation
~7 tok
## Left Sidebar Navigation
#1143
**Functional Requirements > UI Framework
~4 tok
## UI Framework
#1144
**Functional Requirements > Module access is limited; direct URL access is required
~15 tok
## Module access is limited; direct URL access is required
#1145
**Functional Requirements > Booking/Project Management System
~9 tok
## Booking/Project Management System
#1146
**Functional Requirements > Business Logic Integration
~7 tok
## Business Logic Integration
#1147
**Functional Requirements > Conflict detection disabled, overbooking possible
~13 tok
## Conflict detection disabled, overbooking possible
#1148
**Functional Requirements > File Upload System
~5 tok
## File Upload System
#1149
**Functional Requirements > Feature Integration
~6 tok
## Feature Integration
#1150
**Functional Requirements > Upload Deliverables and Upload Invoice actions are unavailable
~16 tok
## Upload Deliverables and Upload Invoice actions are unavailable
#1151
**Functional Requirements > Timeline Module
~5 tok
## Timeline Module
#1152
**Functional Requirements > Feature Integration
~6 tok
## Feature Integration
#1153
**Functional Requirements > View Timeline action unavailable from the List view
~14 tok
## View Timeline action unavailable from the List view
#1154
**Functional Requirements > **12\. References**
~6 tok
## **12\. References**
#1155
**Functional Requirements > **UI Design Analysis:** [Figma Design Link](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=13461-154366&t=RB8f0HOIw3pCrKG7-0)
~37 tok
## **UI Design Analysis:** [Figma Design Link](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=13461-154366&t=RB8f0HOIw3pCrKG7-0)
#1156
**Functional Requirements > **Test Cases Documentation:** [Pixally Test cases - 01.04.25](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=97704170#gid=97704170)
~53 tok
## **Test Cases Documentation:** [Pixally Test cases - 01.04.25](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=97704170#gid=97704170) Deprecated\_Event detail page
#1157
**Events Details**
~5 tok
# **Events Details**
#1158
**Events Details** > **1\. Module Overview**
~7 tok
## **1\. Module Overview**
#1159
**Events Details** > **1\. Module Overview** > **Module Name:** Event Details Management
~11 tok
### **Module Name:** Event Details Management
#1160
**Events Details** > **1\. Module Overview** > **Purpose:** The Event Details Page is designed to give contractors a single, easy-to-access hub containing all essential event details—such as service summary, roles, contacts, and all the files and documents of the event, and custom notes, event finance, so they can efficiently prepare for and execute their assigned events.
~83 tok
### **Purpose:** The Event Details Page is designed to give contractors a single, easy-to-access hub containing all essential event details—such as service summary, roles, contacts, and all the files and documents of the event, and custom notes, event finance, so they can efficiently prepare for and execute their assigned events.
#1161
**Events Details** > **1\. Module Overview** > **Business Goal:** The page supports the agency’s broader objective of streamlining contractor management by improving workflow efficiency, ensuring accountability, encouraging portal engagement for job and payment processes, and maintaining consistent, standardized project data.
~71 tok
### **Business Goal:** The page supports the agency’s broader objective of streamlining contractor management by improving workflow efficiency, ensuring accountability, encouraging portal engagement for job and payment processes, and maintaining consistent, standardized project data.
#1162
**Events Details** > **1\. Module Overview** > **Navigation Path:** Navigation Bar > Events > Event Detail Page
~17 tok
### **Navigation Path:** Navigation Bar > Events > Event Detail Page
#1163
**Events Details** > **2\. User Roles & Permissions**
~9 tok
## **2\. User Roles & Permissions**
#1164
**Events Details** > **2\. User Roles & Permissions** > **Role**
~3 tok
### **Role**
#1165
**Events Details** > **2\. User Roles & Permissions** > **Description**
~5 tok
### **Description**
#1166
**Events Details** > **2\. User Roles & Permissions** > **Key Permissions**
~6 tok
### **Key Permissions**
#1167
**Events Details** > **2\. User Roles & Permissions** > Contractor
~4 tok
### Contractor
#1168
**Events Details** > **2\. User Roles & Permissions** > Contractor
~4 tok
### Contractor
#1169
**Events Details** > **2\. User Roles & Permissions** > View the assigned event’s details in one place. Can download the Timelines & Shooting guide, sign and view the agreement, agreement, answer questions, upload an invoice, delivery link or data, view the team members, view the event progress, create notes, set up and edit availability, Update and view the tax form, view payment details, and perform account-related settings
~94 tok
### View the assigned event’s details in one place. Can download the Timelines & Shooting guide, sign and view the agreement, agreement, answer questions, upload an invoice, delivery link or data, view the team members, view the event progress, create notes, set up and edit availability, Update and view the tax form, view payment details, and perform account-related settings
#1170
**Events Details** > **3\. User Flow**
~5 tok
## **3\. User Flow**
#1171
**Events Details** > **3\. User Flow** > **Main Success Scenario:**
~8 tok
### **Main Success Scenario:**
#1172
**Events Details** > **3\. User Flow** > **Project Assignment** - Contractor receives project invitation and views project details
~23 tok
### **Project Assignment** - Contractor receives project invitation and views project details
#1173
**Events Details** > **3\. User Flow** > **Agreement Signing** - Reviews and digitally signs the IC Agreement to unlock the workflow
~24 tok
### **Agreement Signing** - Reviews and digitally signs the IC Agreement to unlock the workflow
#1174
**Events Details** > **3\. User Flow** > **Event Preparation** - Downloads the timeline and shooting guidelines
~19 tok
### **Event Preparation** - Downloads the timeline and shooting guidelines
#1175
**Events Details** > **3\. User Flow** > **Event Execution** - Captures the event and marks completion
~16 tok
### **Event Execution** - Captures the event and marks completion
#1176
**Events Details** > **3\. User Flow** > **Post-Event Processing** - Completes questionnaire, uploads invoices, and deliverables
~23 tok
### **Post-Event Processing** - Completes questionnaire, uploads invoices, and deliverables
#1177
**Events Details** > **3\. User Flow** > **Payment Processing** - Receives payment confirmation and project finishes for the respective contractor
~27 tok
### **Payment Processing** - Receives payment confirmation and project finishes for the respective contractor
#1178
**Events Details** > **6\. Functional Logic**
~7 tok
## **6\. Functional Logic**
#1179
**Events Details** > **6\. Functional Logic** > **Service listing in the detail page:** The details on the service page of the event details happen per the services assigned by the agency to the contractor
~40 tok
### **Service listing in the detail page:** The details on the service page of the event details happen per the services assigned by the agency to the contractor
#1180
**Events Details** > **6\. Functional Logic** > **Agreement Dependency Rule:** All upload and delivery functions remain locked until the IC Agreement is digitally signed
~31 tok
### **Agreement Dependency Rule:** All upload and delivery functions remain locked until the IC Agreement is digitally signed
#1181
**Events Details** > **6\. Functional Logic** > **Progress Display Logic:** All progress stages are read-only visual indicators that update automatically based on user actions and system events
~37 tok
### **Progress Display Logic:** All progress stages are read-only visual indicators that update automatically based on user actions and system events
#1182
**Events Details** > **6\. Functional Logic** > **Progress Status Updates:** Progress automatically updates through the completion of associated workflows (e.g., file uploads, form submissions, payment processing)
~42 tok
### **Progress Status Updates:** Progress automatically updates through the completion of associated workflows (e.g., file uploads, form submissions, payment processing)
#1183
**Events Details** > **6\. Functional Logic** > **Progress Status Color Coding:**
~9 tok
### **Progress Status Color Coding:**
#1184
**Events Details** > **6\. Functional Logic** > Green: Permanent completion status for verified actions
~15 tok
### Green: Permanent completion status for verified actions
#1185
**Events Details** > **6\. Functional Logic** > Orange Active work in progress or pending user action- there can be multiple events with orange status, as they can be done simultaneously.
~36 tok
### Orange Active work in progress or pending user action- there can be multiple events with orange status, as they can be done simultaneously.
#1186
**Events Details** > **6\. Functional Logic** > Gray: Future stages or dependency requirements not met
~15 tok
### Gray: Future stages or dependency requirements not met
#1187
**Events Details** > **6\. Functional Logic** > **Event Details Display Logic:** All event information is read-only and sourced from the master event configuration
~30 tok
### **Event Details Display Logic:** All event information is read-only and sourced from the master event configuration
#1188
**Events Details** > **6\. Functional Logic** > **Event Capture Validation:** Event capture status updates automatically when the contractor marks the event as captured through a dedicated action
~38 tok
### **Event Capture Validation:** Event capture status updates automatically when the contractor marks the event as captured through a dedicated action
#1189
**Events Details** > **6\. Functional Logic** > **Questionnaire Dependency:** Post-event questionnaire stage is unlocked only after the event capture is marked complete
~31 tok
### **Questionnaire Dependency:** Post-event questionnaire stage is unlocked only after the event capture is marked complete
#1190
**Events Details** > **6\. Functional Logic** > **File Upload Validation:** The system validates file type, size, and format before accepting uploads
~26 tok
### **File Upload Validation:** The system validates file type, size, and format before accepting uploads
#1191
**Events Details** > **6\. Functional Logic** > **Delivery Method Logic:** Only one delivery method can be selected per project; selection determines required fields
~30 tok
### **Delivery Method Logic:** Only one delivery method can be selected per project; selection determines required fields
#1192
**Events Details** > **6\. Functional Logic** > **Role-Based Access:** Contractors can only view and modify their assigned role in that specific event, they can only see who is there in the event but they cannot see the data of others. Q- If all the contractor has their uploads of data then how is the final data selected?
~70 tok
### **Role-Based Access:** Contractors can only view and modify their assigned role in that specific event, they can only see who is there in the event but they cannot see the data of others. Q- If all the contractor has their uploads of data then how is the final data selected?
#1193
**Events Details** > **6\. Functional Logic** > **Payment Milestone Integration:** Invoice uploads automatically link to corresponding payment milestones and update progress.
~33 tok
### **Payment Milestone Integration:** Invoice uploads automatically link to corresponding payment milestones and update progress.
#1194
**Events Details** > **6\. Functional Logic** > **Document Version Control:** The system maintains an audit trail of all document uploads and modifications
~57 tok
### **Document Version Control:** The system maintains an audit trail of all document uploads and modifications * **Delete Access:** The contractor cannot delete or edit any data uploaded after the event is marked as complete
#1195
**Events Details** >
~1 tok
##
#1196
**Events Details** > **4\. Field Details & Validations**
~10 tok
## **4\. Field Details & Validations**
#1197
**Events Details** > **4\. Field Details & Validations** > **Project Header Fields( all fields are auto-populated by the data set by the agency, any new change in details will be reflected, especially the Venue and date if not initially fixed )**
~48 tok
### **Project Header Fields( all fields are auto-populated by the data set by the agency, any new change in details will be reflected, especially the Venue and date if not initially fixed )**
#1198
**Events Details** > **4\. Field Details & Validations** > **Field Name**
~5 tok
### **Field Name**
#1199
**Events Details** > **4\. Field Details & Validations** > **Type**
~3 tok
### **Type**
#1200
**Events Details** > **4\. Field Details & Validations** > **Required**
~4 tok
### **Required**
#1201
**Events Details** > **4\. Field Details & Validations** > **Validation Rules**
~6 tok
### **Validation Rules**
#1202
**Events Details** > **4\. Field Details & Validations** > Brand Logo
~4 tok
### Brand Logo
#1203
**Events Details** > **4\. Field Details & Validations** > Image Display
~4 tok
### Image Display
#1204
**Events Details** > **4\. Field Details & Validations** > Yes
~2 tok
### Yes
#1205
**Events Details** > **4\. Field Details & Validations** > Read-only, company branding top-left- all of them are
~14 tok
### Read-only, company branding top-left- all of them are
#1206
**Events Details** > **4\. Field Details & Validations** > Project Header Image
~6 tok
### Project Header Image
#1207
**Events Details** > **4\. Field Details & Validations** > Hero Image
~4 tok
### Hero Image
#1208
**Events Details** > **4\. Field Details & Validations** > Optional
~3 tok
### Optional
#1209
**Events Details** > **4\. Field Details & Validations** > Read-only, event representative image- If not selected, then the system default image will be shown
~26 tok
### Read-only, event representative image- If not selected, then the system default image will be shown
#1210
**Events Details** > **4\. Field Details & Validations** > Project Name
~4 tok
### Project Name
#1211
**Events Details** > **4\. Field Details & Validations** > Display Text
~4 tok
### Display Text
#1212
**Events Details** > **4\. Field Details & Validations** > Yes
~2 tok
### Yes
#1213
**Events Details** > **4\. Field Details & Validations** > Read-only, max 100 chars (e.g., "Jadon & Monika Wedding")
~15 tok
### Read-only, max 100 chars (e.g., "Jadon & Monika Wedding")
#1214
**Events Details** > **4\. Field Details & Validations** > Project Date
~4 tok
### Project Date
#1215
**Events Details** > **4\. Field Details & Validations** > Date Display
~4 tok
### Date Display
#1216
**Events Details** > **4\. Field Details & Validations** > Conditional
~4 tok
### Conditional
#1217
**Events Details** > **4\. Field Details & Validations** > Read-only, format: DD/MM/YYYY or "TBD"
~11 tok
### Read-only, format: DD/MM/YYYY or "TBD"
#1218
**Events Details** > **4\. Field Details & Validations** > Project Status
~5 tok
### Project Status
#1219
**Events Details** > **4\. Field Details & Validations** > Status Badge
~4 tok
### Status Badge
#1220
**Events Details** > **4\. Field Details & Validations** > Yes
~2 tok
### Yes
#1221
**Events Details** > **4\. Field Details & Validations** > Read-only, color-coded: Active(green)/Completed(red)/Pending(orange)
~18 tok
### Read-only, color-coded: Active(green)/Completed(red)/Pending(orange)
#1222
**Events Details** > **4\. Field Details & Validations** > Project Venue
~4 tok
### Project Venue
#1223
**Events Details** > **4\. Field Details & Validations** > Display Text
~4 tok
### Display Text
#1224
**Events Details** > **4\. Field Details & Validations** > Conditional
~4 tok
### Conditional
#1225
**Events Details** > **4\. Field Details & Validations** > Read-only, venue name, and complete address or TBD
~14 tok
### Read-only, venue name, and complete address or TBD
#1226
**Events Details** > **4\. Field Details & Validations** > Email icon
~4 tok
### Email icon
#1227
**Events Details** > **4\. Field Details & Validations** > CTA
~2 tok
### CTA
#1228
**Events Details** > **4\. Field Details & Validations** > No
~2 tok
### No
#1229
**Events Details** > **4\. Field Details & Validations** > The user will be redirected to the internal messaging system.
~16 tok
### The user will be redirected to the internal messaging system.
#1230
**Events Details** > **4\. Field Details & Validations** > **
~75 tok
### ** Sub tabs** All the events pages have the following sub-tabs: 1. Details 2. Contractors 3. Finance 4. File/Document 5. Notes **Project details** **Event summary card** **Event Header (Common throughout all the sub-tabs- all fields are auto-populated by the data set by the agency )**
#1231
**Events Details** > **4\. Field Details & Validations** > **Field Name**
~5 tok
### **Field Name**
#1232
**Events Details** > **4\. Field Details & Validations** > **Type**
~3 tok
### **Type**
#1233
**Events Details** > **4\. Field Details & Validations** > **Required**
~4 tok
### **Required**
#1234
**Events Details** > **4\. Field Details & Validations** > **Validation Rules**
~6 tok
### **Validation Rules**
#1235
**Events Details** > **4\. Field Details & Validations** > Event Name with color code
~8 tok
### Event Name with color code
#1236
**Events Details** > **4\. Field Details & Validations** > Text
~2 tok
### Text
#1237
**Events Details** > **4\. Field Details & Validations** > Yes
~2 tok
### Yes
#1238
**Events Details** > **4\. Field Details & Validations** > Auto-populated from the admin side
~10 tok
### Auto-populated from the admin side
#1239
**Events Details** > **4\. Field Details & Validations** > Event day &date
~5 tok
### Event day &date
#1240
**Events Details** > **4\. Field Details & Validations** > Text, date
~4 tok
### Text, date
#1241
**Events Details** > **4\. Field Details & Validations** > Conditional
~4 tok
### Conditional
#1242
**Events Details** > **4\. Field Details & Validations** > Auto-populated from the admin side
~10 tok
### Auto-populated from the admin side
#1243
Assigned Users
~4 tok
# Assigned Users
#1244
Multi-Avatar
~4 tok
# Multi-Avatar
#1245
Yes
~1 tok
# Yes
#1246
Yes > Autopopulated from the admin side, it is nonresponsive, read-only
~17 tok
### Autopopulated from the admin side, it is nonresponsive, read-only
#1247
Event Stage
~3 tok
# Event Stage
#1248
Text (stages)
~4 tok
# Text (stages)
#1249
Yes
~1 tok
# Yes
#1250
Yes > Auto-populated from the admin side
~10 tok
### Auto-populated from the admin side
#1251
Yes >
~1 tok
###
#1252
Yes > **Event Details Fields- common Element in all other sub-tabs**
~17 tok
### **Event Details Fields- common Element in all other sub-tabs**
#1253
Yes > **Field Name**
~5 tok
### **Field Name**
#1254
Yes > **Type**
~3 tok
### **Type**
#1255
Yes > **Required**
~4 tok
### **Required**
#1256
Yes > **Validation Rules**
~6 tok
### **Validation Rules**
#1257
Yes > Event Date
~4 tok
### Event Date
#1258
Yes > Date Display
~4 tok
### Date Display
#1259
Yes > Conditional
~4 tok
### Conditional
#1260
Yes > Autopopulated from the admin side, Read-only, format: DD/MM/YYYY or "TBD"
~19 tok
### Autopopulated from the admin side, Read-only, format: DD/MM/YYYY or "TBD"
#1261
Yes > Service Area
~4 tok
### Service Area
#1262
Yes > Location Display
~5 tok
### Location Display
#1263
Yes > Yes
~2 tok
### Yes
#1264
Yes > Auto-populated from the admin side, Read-only, geographic location (e.g., "Los Angeles, California, USA")
~27 tok
### Auto-populated from the admin side, Read-only, geographic location (e.g., "Los Angeles, California, USA")
#1265
Yes > Venue Name
~4 tok
### Venue Name
#1266
Yes > Text Display
~4 tok
### Text Display
#1267
Yes > Conditional
~4 tok
### Conditional
#1268
Yes > Autopopulated from the admin side, Read-only, venue facility name (e.g., "Wedding Hall") or TBD
~25 tok
### Autopopulated from the admin side, Read-only, venue facility name (e.g., "Wedding Hall") or TBD
#1269
Yes > Brand/Client
~4 tok
### Brand/Client
#1270
Yes > Brand logo + Name
~5 tok
### Brand logo + Name
#1271
Yes > Yes
~2 tok
### Yes
#1272
Yes > Auto-populated from the admin side ,Read-only, client information with profile image (e.g., "Emma Taylor")
~28 tok
### Auto-populated from the admin side ,Read-only, client information with profile image (e.g., "Emma Taylor")
#1273
Yes > Invited By
~4 tok
### Invited By
#1274
Yes > Profile image + Name
~6 tok
### Profile image + Name
#1275
Yes > N/A
~2 tok
### N/A
#1276
Yes > Autopopulated from the admin side, Read-only, project inviter with profile image (e.g., "John Doe"),
~26 tok
### Autopopulated from the admin side, Read-only, project inviter with profile image (e.g., "John Doe"),
#1277
Yes >
~1 tok
###
#1278
Yes > **Event Progress Status Fields- common Element in all other sub-tabs**
~19 tok
### **Event Progress Status Fields- common Element in all other sub-tabs**
#1279
Yes > **Field Name**
~5 tok
### **Field Name**
#1280
Yes > **Type**
~3 tok
### **Type**
#1281
Yes > **Validation Rules**
~6 tok
### **Validation Rules**
#1282
Yes > **Color Code**
~5 tok
### **Color Code**
#1283
Yes > Invited to Project
~6 tok
### Invited to Project
#1284
Yes > Progress Display with date
~8 tok
### Progress Display with date
#1285
Yes > Read-only, system-managed
~7 tok
### Read-only, system-managed
#1286
Yes > Green: stage completed
~7 tok
### Green: stage completed
#1287
Yes > Orange: In progress
~6 tok
### Orange: In progress
#1288
Yes > The system supports parallel stage states with multiple concurrent status indicators (e.g., Green for active/completed, Orange for pending/in-progress)."
~39 tok
### The system supports parallel stage states with multiple concurrent status indicators (e.g., Green for active/completed, Orange for pending/in-progress)."
#1289
Yes > Grey: the action or stage pending
~9 tok
### Grey: the action or stage pending
#1290
Yes > Sign the IC Agreement
~6 tok
### Sign the IC Agreement
#1291
Yes > Progress Display with date
~8 tok
### Progress Display with date
#1292
Yes > Read-only, updates via e-signature workflow
~12 tok
### Read-only, updates via e-signature workflow
#1293
Yes > Capture Event
~4 tok
### Capture Event
#1294
Yes > Progress Display + text
~7 tok
### Progress Display + text
#1295
Yes > Read-only, updates via manual confirmation action
~13 tok
### Read-only, updates via manual confirmation action
#1296
Yes > Post-Event Questionnaire
~7 tok
### Post-Event Questionnaire
#1297
Yes > Progress Display + text
~7 tok
### Progress Display + text
#1298
Yes > Read-only, updates via form submission
~11 tok
### Read-only, updates via form submission
#1299
Yes > Upload Invoice
~5 tok
### Upload Invoice
#1300
Yes > Progress Display + text
~7 tok
### Progress Display + text
#1301
Yes > Read-only, updates via file upload are successful
~13 tok
### Read-only, updates via file upload are successful
#1302
Yes > Upload Deliverables
~6 tok
### Upload Deliverables
#1303
Yes > Progress Display+ text
~7 tok
### Progress Display+ text
#1304
Yes > Read-only, updates via file/link upload are successful
~15 tok
### Read-only, updates via file/link upload are successful
#1305
Yes > Receive Payment
~5 tok
### Receive Payment
#1306
Yes > Progress Display + text
~7 tok
### Progress Display + text
#1307
Yes > Read-only, system-managed via payment processing
~18 tok
### Read-only, system-managed via payment processing **Service Details**
#1308
Yes > **Downloadable Resources Fields**
~9 tok
### **Downloadable Resources Fields**
#1309
Yes > **Field Name**
~5 tok
### **Field Name**
#1310
Yes > **Type**
~3 tok
### **Type**
#1311
Yes > **Required**
~4 tok
### **Required**
#1312
Yes > **Validation Rules**
~6 tok
### **Validation Rules**
#1313
Yes > Timeline Document
~5 tok
### Timeline Document
#1314
Yes > Download CTA
~4 tok
### Download CTA
#1315
Yes > N/A
~2 tok
### N/A
#1316
Yes > Will show only if uploaded by the Agency
~11 tok
### Will show only if uploaded by the Agency
#1317
Yes > The document in PDF format will be downloaded when clicked
~16 tok
### The document in PDF format will be downloaded when clicked
#1318
Yes > Shooting Guidelines
~6 tok
### Shooting Guidelines
#1319
Yes > Download CTA
~4 tok
### Download CTA
#1320
Yes > N/A
~2 tok
### N/A
#1321
Yes > Will show only if uploaded by the Agency
~11 tok
### Will show only if uploaded by the Agency
#1322
Yes > The document in PDF format will be downloaded when clicked
~41 tok
### The document in PDF format will be downloaded when clicked **Project details Details Page** **Service Information Fields according to the service opted for.**
#1323
Yes > **Field Name**
~5 tok
### **Field Name**
#1324
Yes > **Type**
~3 tok
### **Type**
#1325
Yes > **Required**
~4 tok
### **Required**
#1326
Yes > **Validation Rules**
~6 tok
### **Validation Rules**
#1327
Yes > Assigned Service
~5 tok
### Assigned Service
#1328
Yes > Text
~2 tok
### Text
#1329
Yes > Yes
~2 tok
### Yes
#1330
Yes > Photography, Videography, or content creation
~26 tok
### Photography, Videography, or content creation The user can see only the services they are assigned
#1331
Yes > Role Assignment, Icon, and Text
~9 tok
### Role Assignment, Icon, and Text
#1332
Yes > Display Badge- Icons and the text
~9 tok
### Display Badge- Icons and the text
#1333
Yes > Yes
~2 tok
### Yes
#1334
Yes > Read-only, role-based display (e.g., "Second Shooter")
~24 tok
### Read-only, role-based display (e.g., "Second Shooter") Auto-populated from the admin side
#1335
Yes > Coverage Hours
~5 tok
### Coverage Hours
#1336
Yes > Numeric Display with Text and Time icon
~11 tok
### Numeric Display with Text and Time icon
#1337
Yes > Yes
~2 tok
### Yes
#1338
Yes > Read-only, format: "X hours"
~17 tok
### Read-only, format: "X hours" Auto-populated from the admin side
#1339
Yes > Photo Minimum
~4 tok
### Photo Minimum
#1340
Yes > Numeric Display with text and camera icon
~11 tok
### Numeric Display with text and camera icon
#1341
Yes > Yes
~2 tok
### Yes
#1342
Yes > Read-only, numeric value (e.g., "1000")
~20 tok
### Read-only, numeric value (e.g., "1000") Auto-populated from the admin side
#1343
Yes > Service Amount
~5 tok
### Service Amount
#1344
Yes > Currency Display with text and money icon
~11 tok
### Currency Display with text and money icon
#1345
Yes > Yes
~2 tok
### Yes
#1346
Yes > Read-only, format: $[XXX.XX](http://xxx.xx)
~21 tok
### Read-only, format: $[XXX.XX](http://xxx.xx) Auto-populated from the admin side
#1347
Yes > Service Note
~4 tok
### Service Note
#1348
Yes > Text Display
~4 tok
### Text Display
#1349
Yes > N/A
~2 tok
### N/A
#1350
Yes > Read-only, project-specific instructions and requirements
~25 tok
### Read-only, project-specific instructions and requirements Auto-populated from the admin side
#1351
Yes > **Agreement Section Fields**
~8 tok
### **Agreement Section Fields**
#1352
Yes > **Field Name**
~5 tok
### **Field Name**
#1353
Yes > **Type**
~3 tok
### **Type**
#1354
Yes > **Required**
~4 tok
### **Required**
#1355
Yes > **Validation Rules**
~6 tok
### **Validation Rules**
#1356
Yes > Agreement Document Name
~7 tok
### Agreement Document Name
#1357
Yes > Display Text
~4 tok
### Display Text
#1358
Yes > Yes
~2 tok
### Yes
#1359
Yes > Read-only, document file name, uploaded by agency (e.g., "IC\_Agreement 12\_08\_25")
~22 tok
### Read-only, document file name, uploaded by agency (e.g., "IC\_Agreement 12\_08\_25")
#1360
Yes > Event name
~4 tok
### Event name
#1361
Yes > Display Text
~4 tok
### Display Text
#1362
Yes > Yes
~2 tok
### Yes
#1363
Yes > The event name will be auto-populated
~10 tok
### The event name will be auto-populated
#1364
Yes > Agreement Date
~5 tok
### Agreement Date
#1365
Yes > DateTime Display
~5 tok
### DateTime Display
#1366
Yes > Yes
~2 tok
### Yes
#1367
Yes > Read-only, format: "DD MMM YYYY, HH: MM AM/PM"
~13 tok
### Read-only, format: "DD MMM YYYY, HH: MM AM/PM"
#1368
Yes > Sign the agreement CTA
~7 tok
### Sign the agreement CTA
#1369
Yes > CTA
~2 tok
### CTA
#1370
Yes > Yes
~2 tok
### Yes
#1371
Yes > Will open the signed agreement Pop-up
~10 tok
### Will open the signed agreement Pop-up
#1372
Yes > The user will see an Agreement pop-up CTA of Click To Sign, it will open a
~75 tok
### The user will see an Agreement pop-up CTA of Click To Sign, it will open a 1\. Text box 2\. Draw a box Users will use any one of them, and by clicking on the “Sign agreement,” they can complete the signup process. Users can also download the agreement by clicking on the Download CTA
#1373
Yes > Post signature Icon
~6 tok
### Post signature Icon
#1374
Yes > Icon + text
~4 tok
### Icon + text
#1375
Yes > Yes
~2 tok
### Yes
#1376
Yes > Visible once the agreement is signed
~10 tok
### Visible once the agreement is signed
#1377
Yes > CTA / view button
~5 tok
### CTA / view button
#1378
Yes > CTA
~2 tok
### CTA
#1379
Yes > Required
~3 tok
### Required
#1380
Yes > Will open the agreement Once the agreement is signed by the contractor, the Agreement the CTA will change to “View”- it will open the agreement.
~37 tok
### Will open the agreement Once the agreement is signed by the contractor, the Agreement the CTA will change to “View”- it will open the agreement.
#1381
Yes > Pop-up for completion of the contractor
~11 tok
### Pop-up for completion of the contractor
#1382
Yes > POP UP
~3 tok
### POP UP
#1383
Yes > Required
~3 tok
### Required
#1384
Yes > Shows instantly once the contractor signs the agreement
~15 tok
### Shows instantly once the contractor signs the agreement
#1385
Yes > Pop-up of completion from both sides
~10 tok
### Pop-up of completion from both sides
#1386
Yes >
~1 tok
###
#1387
Yes >
~1 tok
###
#1388
Yes > Shows instantly once both the contractor and the agency sign the agreement, along with the link to the completed agreement
~32 tok
### Shows instantly once both the contractor and the agency sign the agreement, along with the link to the completed agreement
#1389
Yes >
~1 tok
##
#1390
Yes > > **Upload Fields**
~5 tok
### **Upload Fields**
#1391
Yes > **Field Name**
~4 tok
## **Field Name**
#1392
Yes > **Type**
~3 tok
## **Type**
#1393
Yes > **Required**
~4 tok
## **Required**
#1394
Yes > **Validation Rules**
~6 tok
## **Validation Rules**
#1395
Yes > Invoice Files
~4 tok
## Invoice Files
#1396
Yes > File Upload
~4 tok
## File Upload
#1397
Yes > Yes
~2 tok
## Yes
#1398
Yes > PDF, DOC, DOCX, XLS, XLSX; Max 5MB per file,
~37 tok
## PDF, DOC, DOCX, XLS, XLSX; Max 5MB per file, * Users can also delete the file. * Users can also add multiple Invoices * Number of invoices
#1399
Yes > Digital Links
~4 tok
## Digital Links
#1400
Yes > URL Input
~3 tok
## URL Input
#1401
Yes > Conditional
~4 tok
## Conditional
#1402
Yes > Valid URL format, accessibility check
~10 tok
## Valid URL format, accessibility check
#1403
Yes > The contractor can add multiple URLs
~15 tok
## The contractor can add multiple URLs * Number of links
#1404
Yes > Hard drive- Tracking Number
~8 tok
## Hard drive- Tracking Number
#1405
Yes > Text Input
~3 tok
## Text Input
#1406
Yes > Conditional
~4 tok
## Conditional
#1407
Yes > Alphanumeric, 50 characters max
~9 tok
## Alphanumeric, 50 characters max
#1408
Yes > Hard drive - Shipping Service
~8 tok
## Hard drive - Shipping Service
#1409
Yes > Text input
~3 tok
## Text input
#1410
Yes > Conditional
~4 tok
## Conditional
#1411
Yes > Alphanumeric, 50 characters max
~9 tok
## Alphanumeric, 50 characters max
#1412
Yes > Hard drive - Shipping address
~8 tok
## Hard drive - Shipping address
#1413
Yes > Alphanumeric char
~5 tok
## Alphanumeric char
#1414
Yes > Yes
~2 tok
## Yes
#1415
Yes > Fetched from the Brand Address
~8 tok
## Fetched from the Brand Address
#1416
Yes > Other-Custom Delivery Description
~9 tok
## Other-Custom Delivery Description
#1417
Yes > Text area
~3 tok
## Text area
#1418
Yes > Conditional
~4 tok
## Conditional
#1419
Yes > Max 250 characters
~5 tok
## Max 250 characters
#1420
Yes > Max 250 characters >
~1 tok
###
#1421
Yes > Max 250 characters >
~1 tok
###
#1422
Yes > Max 250 characters > **Questioners fields Fields**
~8 tok
### **Questioners fields Fields**
#1423
Yes > Max 250 characters > **Field Name**
~5 tok
### **Field Name**
#1424
Yes > Max 250 characters > **Type**
~3 tok
### **Type**
#1425
Yes > Max 250 characters > **Required**
~4 tok
### **Required**
#1426
Yes > Max 250 characters > **Validation Rules**
~6 tok
### **Validation Rules**
#1427
Yes > Max 250 characters > Capture Event
~4 tok
### Capture Event
#1428
Yes > Max 250 characters > Date and text
~4 tok
### Date and text
#1429
Yes > Max 250 characters > Yes
~2 tok
### Yes
#1430
Yes > Max 250 characters > Only accessible post-event
~8 tok
### Only accessible post-event
#1431
Yes > Max 250 characters > Complete Questionnaire
~7 tok
### Complete Questionnaire
#1432
Yes > Max 250 characters > Event captured successfully
~8 tok
### Event captured successfully
#1433
Yes > Max 250 characters > Questioner CTA
~5 tok
### Questioner CTA
#1434
Yes > Max 250 characters > Yes
~2 tok
### Yes
#1435
Yes > Max 250 characters > The agency-created Question page or pop-up will appear the contractor needs to answer them.
~32 tok
### The agency-created Question page or pop-up will appear the contractor needs to answer them. The user will be shown a pop-up.
#1436
Yes > Max 250 characters >
~1 tok
###
#1437
Yes > **5\. Error Message Handling**
~8 tok
## **5\. Error Message Handling**
#1438
Yes > **5\. Error Message Handling** > **Digital Delivery Method**
~92 tok
### **Digital Delivery Method** **Validation Scenario** **Error Message** **Link Validation** Invalid URL format "Invalid URL." Empty URL field "Digital delivery link is required." Maximum links exceeded "Maximum of 5 links allowed." **Link Management** Link deletion confirmation "Are you sure you want to remove this link? This action cannot be undone."
#1439
Yes > **5\. Error Message Handling** > **Hard Drive Method**
~309 tok
### **Hard Drive Method** **Validation Scenario** **Error Message** **Tracking Information** Empty tracking number "Tracking number is required." Invalid tracking format "Invalid tracking number.” Tracking number too short "Tracking number must be at least 8 characters." **Shipping Service** No service selected "Shipping service details required " **Post-Delivery Changes** Tracking update after submission "Tracking information has been submitted. Contact the agency to update shipping details." Edit tracking number (completed project) " **Cannot Edit**: This project is completed. Tracking information cannot be modified for finalized projects. Contact the agency if changes are needed." Edit shipping service (completed project) "**Cannot Edit**: This project is completed. Shipping service information cannot be changed for finalized deliverables." Delete tracking number (completed project) "**Action Not Allowed**: Tracking information cannot be deleted from completed projects to maintain delivery records and audit compliance." Delete shipping service (completed project) "**Action Not Allowed**: Shipping service information cannot be removed from completed projects for audit and compliance purposes."
#1440
Yes > **5\. Error Message Handling** >
~1 tok
###
#1441
Yes > **5\. Error Message Handling** > **Other Method**
~153 tok
### **Other Method** **Validation Scenario** **Error Message** **Method Description** Empty description "Please specify how you have handled the footage delivery." Description too short "Please provide more details about your delivery method (minimum 10 characters)" Description too long "Description cannot exceed 500 characters." **Post-Submission Changes** Method change after approval "Delivery method has been approved. Changes require agency permission." Method update notification "Any changes to your delivery method will notify the agency and may require re-approval." **General Messages**
#1442
Yes > **5\. Error Message Handling** > **Field**
~3 tok
### **Field**
#1443
Yes > **5\. Error Message Handling** > **Validation Scenario**
~7 tok
### **Validation Scenario**
#1444
Yes > **5\. Error Message Handling** > **Error Message**
~5 tok
### **Error Message**
#1445
Yes > **5\. Error Message Handling** > Invoice Upload
~5 tok
### Invoice Upload
#1446
Yes > **5\. Error Message Handling** > File too large
~5 tok
### File too large
#1447
Yes > **5\. Error Message Handling** > “File exceeds 20 MB limit."
~8 tok
### “File exceeds 20 MB limit."
#1448
Yes > **5\. Error Message Handling** > Invoice Upload
~5 tok
### Invoice Upload
#1449
Yes > **5\. Error Message Handling** > Invalid file type
~5 tok
### Invalid file type
#1450
Yes > **5\. Error Message Handling** > "Please upload valid files."
~8 tok
### "Please upload valid files."
#1451
Yes > **5\. Error Message Handling** > Digital Links
~4 tok
### Digital Links
#1452
Yes > **5\. Error Message Handling** > Invalid URL format
~6 tok
### Invalid URL format
#1453
Yes > **5\. Error Message Handling** > "Please enter a valid URL."
~8 tok
### "Please enter a valid URL."
#1454
Yes > **5\. Error Message Handling** > Tracking Number
~5 tok
### Tracking Number
#1455
Yes > **5\. Error Message Handling** > Empty when required
~6 tok
### Empty when required
#1456
Yes > **5\. Error Message Handling** > " Please enter a tracking number."
~10 tok
### " Please enter a tracking number."
#1457
Yes > **5\. Error Message Handling** > Shipping Service
~5 tok
### Shipping Service
#1458
Yes > **5\. Error Message Handling** > Not selected
~4 tok
### Not selected
#1459
Yes > **5\. Error Message Handling** > "Please select a shipping service."
~10 tok
### "Please select a shipping service."
#1460
Yes > **5\. Error Message Handling** > Custom Delivery
~5 tok
### Custom Delivery
#1461
Yes > **5\. Error Message Handling** > Empty description
~5 tok
### Empty description
#1462
Yes > **5\. Error Message Handling** > "Please describe your custom delivery method."
~13 tok
### "Please describe your custom delivery method."
#1463
Yes > **5\. Error Message Handling** > File Upload
~4 tok
### File Upload
#1464
Yes > **5\. Error Message Handling** > Network timeout
~5 tok
### Network timeout
#1465
Yes > **5\. Error Message Handling** > "Upload failed due to connection timeout. Please retry."
~15 tok
### "Upload failed due to connection timeout. Please retry."
#1466
Yes >
~1 tok
##
#1467
Yes > **Success Message Handling**
~224 tok
## **Success Message Handling** **Validation Scenario** **Success Message** **File Upload Operations** Invoice upload successful "Invoice uploaded successfully. Payment processing will begin shortly." **Delivery & Upload Operations** Digital link was added successfully "Digital delivery link added successfully." Hard drive tracking updated "Hard drive tracking information saved successfully." Shipping service selected "Shipping service updated successfully." Custom delivery description saved "Custom delivery method saved successfully." **Event Progress Updates** Questionnaire completed "Post-event questionnaire completed successfully." **Account & Profile Updates** Availability settings updated "Availability settings saved successfully." Tax form updated "Tax form information updated successfully." Account settings saved "Account settings saved successfully."
#1468
Yes > **7\. Edge Cases**
~5 tok
## **7\. Edge Cases**
#1469
Yes > **7\. Edge Cases** > **Scenario**
~4 tok
### **Scenario**
#1470
Yes > **7\. Edge Cases** > **Expected Behavior**
~6 tok
### **Expected Behavior**
#1471
Yes > **7\. Edge Cases** > Contractor role change mid-project
~10 tok
### Contractor role change mid-project
#1472
Yes > **7\. Edge Cases** > Update permissions immediately, and notify the contractor by mail
~17 tok
### Update permissions immediately, and notify the contractor by mail
#1473
Yes > **7\. Edge Cases** > Event date change after agreement
~9 tok
### Event date change after agreement
#1474
Yes > **7\. Edge Cases** > Notify all contractors, update timeline documents
~13 tok
### Notify all contractors, update timeline documents
#1475
Yes > **7\. Edge Cases** > Event capture marked before the event date
~12 tok
### Event capture marked before the event date
#1476
Yes > **7\. Edge Cases** > Allow manual override with a confirmation dialog, progress updates automatically
~21 tok
### Allow manual override with a confirmation dialog, progress updates automatically
#1477
Yes > **7\. Edge Cases** > Progress status sync issues
~8 tok
### Progress status sync issues
#1478
Yes > **7\. Edge Cases** > Implement an automatic retry mechanism for progress updates
~16 tok
### Implement an automatic retry mechanism for progress updates
#1479
Yes > **7\. Edge Cases** > Contractor accessing after project completion
~12 tok
### Contractor accessing after project completion
#1480
Yes > **7\. Edge Cases** > Show read-only view with all completed progress indicators
~16 tok
### Show read-only view with all completed progress indicators
#1481
Yes > **7\. Edge Cases** > Event details are missing venue information
~12 tok
### Event details are missing venue information
#1482
Yes > **7\. Edge Cases** > Display "TBD" or "Venue Pending" status in progress context
~16 tok
### Display "TBD" or "Venue Pending" status in progress context
#1483
Yes > **8\. Test Cases**
~5 tok
## **8\. Test Cases**
#1484
Yes > **Link -** [**Pixally Test cases - 01.04.25**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=97704170#gid=97704170)
~41 tok
## **Link -** [**Pixally Test cases - 01.04.25**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=97704170#gid=97704170)
#1485
Yes > **9\. Acceptance Criteria**
~8 tok
## **9\. Acceptance Criteria**
#1486
Yes > **9\. Acceptance Criteria** > **Agreement Workflow:** Contractors must successfully sign the IC Agreement before accessing the upload functionality
~30 tok
### **Agreement Workflow:** Contractors must successfully sign the IC Agreement before accessing the upload functionality
#1487
Yes > **9\. Acceptance Criteria** > **Progress Tracking:** Visual progress indicators must accurately reflect completion status with appropriate color coding (Green/Yellow/Gray)
~36 tok
### **Progress Tracking:** Visual progress indicators must accurately reflect completion status with appropriate color coding (Green/Yellow/Gray)
#1488
Yes > **9\. Acceptance Criteria** > **Delivery Options:** All three delivery methods (digital, hard drive, custom) must function with proper validation
~30 tok
### **Delivery Options:** All three delivery methods (digital, hard drive, custom) must function with proper validation
#1489
Yes > **9\. Acceptance Criteria** > **Role-Based Access:** Users can only access projects assigned to their role with appropriate permission levels
~29 tok
### **Role-Based Access:** Users can only access projects assigned to their role with appropriate permission levels
#1490
Yes > **9\. Acceptance Criteria** > **Error Handling:** All error scenarios must provide clear, actionable feedback to users
~23 tok
### **Error Handling:** All error scenarios must provide clear, actionable feedback to users
#1491
Yes > **9\. Acceptance Criteria** > **Integration Requirements:** Payment milestones must sync with invoice uploads and delivery confirmations
~28 tok
### **Integration Requirements:** Payment milestones must sync with invoice uploads and delivery confirmations
#1492
Yes > **9\. Acceptance Criteria** > **Progress State Persistence:** Progress status must persist across user sessions and remain consistent for all project stakeholders
~34 tok
### **Progress State Persistence:** Progress status must persist across user sessions and remain consistent for all project stakeholders
#1493
Yes > **10\. Dependencies**
~6 tok
## **10\. Dependencies**
#1494
Yes > **10\. Dependencies** > **Module/System**
~5 tok
### **Module/System**
#1495
Yes > **10\. Dependencies** > **Dependency Type**
~6 tok
### **Dependency Type**
#1496
Yes > **10\. Dependencies** > **Impact if Unavailable**
~7 tok
### **Impact if Unavailable**
#1497
Yes > **10\. Dependencies** > Document Management System
~8 tok
### Document Management System
#1498
Yes > **10\. Dependencies** > Core Integration
~5 tok
### Core Integration
#1499
Yes > **10\. Dependencies** > Cannot store/retrieve agreements and files
~12 tok
### Cannot store/retrieve agreements and files
#1500
Yes > **10\. Dependencies** > Digital Signature Service
~7 tok
### Digital Signature Service
#1501
Yes > **10\. Dependencies** > External API
~4 tok
### External API
#1502
Yes > **10\. Dependencies** > Agreement signing workflow fails
~9 tok
### Agreement signing workflow fails
#1503
Yes > **10\. Dependencies** > Payment Processing System
~7 tok
### Payment Processing System
#1504
Yes > **10\. Dependencies** > Data Integration
~5 tok
### Data Integration
#1505
Yes > **10\. Dependencies** > Cannot track payment milestones
~9 tok
### Cannot track payment milestones
#1506
Yes > **10\. Dependencies** > Shipping API Services
~6 tok
### Shipping API Services
#1507
Yes > **10\. Dependencies** > External Integration
~6 tok
### External Integration
#1508
Yes > **10\. Dependencies** > Cannot validate tracking numbers
~9 tok
### Cannot validate tracking numbers
#1509
Yes > **10\. Dependencies** > Notification System
~6 tok
### Notification System
#1510
Yes > **10\. Dependencies** > Internal Service
~5 tok
### Internal Service
#1511
Yes > **10\. Dependencies** > Users miss status updates and alerts
~10 tok
### Users miss status updates and alerts
#1512
Yes > **10\. Dependencies** > User Authentication
~6 tok
### User Authentication
#1513
Yes > **10\. Dependencies** > Core System
~4 tok
### Core System
#1514
Yes > **10\. Dependencies** > Cannot verify user identity and permissions
~12 tok
### Cannot verify user identity and permissions
#1515
Yes > **10\. Dependencies** > File Storage Service
~6 tok
### File Storage Service
#1516
Yes > **10\. Dependencies** > Infrastructure
~5 tok
### Infrastructure
#1517
Yes > **10\. Dependencies** > Cannot store uploaded files and documents
~11 tok
### Cannot store uploaded files and documents
#1518
Yes > **10\. Dependencies** > Event Management Module
~7 tok
### Event Management Module
#1519
Yes > **10\. Dependencies** > Data Dependency
~5 tok
### Data Dependency
#1520
Yes > **10\. Dependencies** > Cannot display event details and scheduling
~12 tok
### Cannot display event details and scheduling
#1521
Yes > **11\. References**
~6 tok
## **11\. References**
#1522
Yes > **11\. References** > **Figma Link:** Click Here
~20 tok
### **Figma Link:** Click Here Deprecated\_Event:Contractor, Finance, Docs, Tax
#1523
**Event Management System, Event details, contractors, Finance, Taxes, Notes
~159 tok
# **Event Management System, Event details, contractors, Finance, Taxes, Notes 1\. Module Overview** * **Module Name:** Project Details Management System( continued ) * **Purpose:** Comprehensive project management interface for contractors to manage wedding/event service delivery from initial assignment through final completion and payment across multiple functional areas * **Business Goal:** Streamline contractor workflow, ensure project completion milestones, facilitate seamless payment processing, and enable comprehensive project collaboration * **Navigation Path:** Navigation Bar > Events > Event Detail Page
#1524
**Event Management System, Event details, contractors, Finance, Taxes, Notes > **Sub-Module Components:**
~89 tok
### **Sub-Module Components:** * **Details Tab:** Core project information and workflow management * **Contractors Tab:** Team management and contractor coordination * **Finances Tab:** Payment tracking and invoice management * **Files/Documents Tab:** Document repository and file management * **Notes Tab:** Communication hub and project notes
#1525
**Event Management System, Event details, contractors, Finance, Taxes, Notes > **2\. User Roles & Permissions**
~9 tok
## **2\. User Roles & Permissions**
#1526
**Event Management System, Event details, contractors, Finance, Taxes, Notes >
~1 tok
##
#1527
**Event Management System, Event details, contractors, Finance, Taxes, Notes > > **Role**
~3 tok
### **Role**
#1528
**Event Management System, Event details, contractors, Finance, Taxes, Notes > > **Description**
~5 tok
### **Description**
#1529
**Event Management System, Event details, contractors, Finance, Taxes, Notes > > **Key Permissions**
~6 tok
### **Key Permissions**
#1530
**Event Management System, Event details, contractors, Finance, Taxes, Notes > > Agency Owner
~4 tok
### Agency Owner
#1531
**Event Management System, Event details, contractors, Finance, Taxes, Notes > > System administrator
~6 tok
### System administrator
#1532
**Event Management System, Event details, contractors, Finance, Taxes, Notes > > Full access to all features, view all projects, and manage user assignments
~20 tok
### Full access to all features, view all projects, and manage user assignments
#1533
**Event Management System, Event details, contractors, Finance, Taxes, Notes > > Contractor
~4 tok
### Contractor
#1534
**Event Management System, Event details, contractors, Finance, Taxes, Notes > > Primary Photographer/contractor
~9 tok
### Primary Photographer/contractor
#1535
**Event Management System, Event details, contractors, Finance, Taxes, Notes > > View other team members, Finance and File documents, notes, check availability, view tasks, update tax form, view the payment details, and perform user account settings.
~43 tok
### View other team members, Finance and File documents, notes, check availability, view tasks, update tax form, view the payment details, and perform user account settings.
#1536
**Event Management System, Event details, contractors, Finance, Taxes, Notes > **3\. User Flow**
~5 tok
## **3\. User Flow**
#1537
**Event Management System, Event details, contractors, Finance, Taxes, Notes > **3\. User Flow** > **Main Success Scenario:**
~192 tok
### **Main Success Scenario:** 1. **Project Assignment** - Contractor receives project invitation and views project details 2. **Team Review** - Reviews assigned contractors in the Contractors tab 3. **Financial Review** - Check payment structure in the Finances tab 4. **Document Access** - Reviews all project documents in the Files tab 5. **Notes Setup** - Reviews project notes and adds own notes 6. **Event Execution** - Captures event questionnaires and marks completion 7. **Post-Event Processing** - Completes questionnaire, uploads invoices, and deliverables 8. **Final Documentation** - Updates invoices, uploads final documents 9. **Payment Processing** - Receives payment confirmation 10. **Project Finalization** - Will be decided by the agency
#1538
**Event Management System, Event details, contractors, Finance, Taxes, Notes > **4\. Field Details & Validations**
~10 tok
## **4\. Field Details & Validations**
#1539
**Event Management System, Event details, contractors, Finance, Taxes, Notes > **4\. Field Details & Validations** > **Project Contractors Tab Fields**
~10 tok
### **Project Contractors Tab Fields**
#1540
**Event Management System, Event details, contractors, Finance, Taxes, Notes > **4\. Field Details & Validations** > **Project Contractors Tab Fields** > **Contractor Information Fields**
~447 tok
#### **Contractor Information Fields** **Field Name** **Type** **Required** **Validation Rules** Service Category Select Yes Only the assigned service will be shown to the contractor; the contractor can only view the teammates of the services they are assigned **Team member cards** Contractor Name Display Text Yes Read-only, contractor full name auto-populated from the onboarding data Service of the Contractor Display Text Yes Read-only, contractor full name auto-populated from the onboarding data Role Badge with role Status Badge Yes Read-only, role designation (Lead Shooter, Second Shooter, etc.) with the icon defined in the system Personal Badge Badge Yes To distinguish the contractor from other users, a contractor-specific identifier will be displayed. Profile Image Avatar Display N/A Read-only, contractor profile photo,auto-populated from the onboarding data Status Icon (Only visible to self, not to other team members assigned to this event ) Icon of signed agreement, invoice raised, file uploaded, and Payment done Yes All the icons will be only active if the specific function happens, else they will be inactive ( grey) Payment is the only icon that can be partially active Event Price(Only visible to self, not to other team members assigned to this event) Currency Display Yes Read-only, format: $X, [XXX.XX](http://xxx.xx) As per the price the agency has assigned Amount Paid(Only visible to self, not to other team members assigned to this event ) Currency Display Yes Read-only, format: $X, [XXX.XX](http://xxx.xx) As per the price the agency has assigned Location(Only visible to self, not to other team members assigned to this event ) Text Display Yes Read-only, contractor city/location from the venue
#1541
**Event Management System, Event details, contractors, Finance, Taxes, Notes > **4\. Field Details & Validations** >
~181 tok
### **Details of other Teammates are visible to the Contractor.** **Field Name** **Type** **Required** **Validation Rules** Role Badge with role Status Badge Yes Read-only, role designation (Lead Shooter, Second Shooter, etc.) with the icon defined in the system Profile Image Avatar Display N/A Read-only, contractor profile photo auto-populated from the onboarding data Contractor Name Display Text Yes Read-only, contractor full name auto-populated from the onboarding data Role in the event Text Yes Read-only, auto-populated from the onboarding data Assignment Status Status Display Yes View only for the contractor Unassigned contractor for an role will have visual indicators any event
#1542
**Event Management System, Event details, contractors, Finance, Taxes, Notes > **4\. Field Details & Validations** >
~1 tok
###
#1543
**Event Management System, Event details, contractors, Finance, Taxes, Notes > **4\. Field Details & Validations** > **Project Finances Tab Fields**
~9 tok
### **Project Finances Tab Fields**
#1544
**Event Management System, Event details, contractors, Finance, Taxes, Notes > **4\. Field Details & Validations** > **Project Finances Tab Fields** > **Financial Summary Fields. If we submit a manual PDF, THEN these details below cannot be fetched.**
~26 tok
#### **Financial Summary Fields. If we submit a manual PDF, THEN these details below cannot be fetched.**
#1545
**Event Management System, Event details, contractors, Finance, Taxes, Notes > **4\. Field Details & Validations** > **Project Finances Tab Fields** >
~1 tok
####
#1546
**Project Finances Tab Fields**
~8 tok
# **Project Finances Tab Fields**
#1547
**Project Finances Tab Fields** > Total Project Price of individual will be seen here , along with the Pending Amount and Payment Received
~52 tok
#### Total Project Price of individual will be seen here , along with the Pending Amount and Payment Received There will be a CTA to Create Invoice ( Next Phase) current phase the CTA will be “Upload Invoice”
#1548
**Project Finances Tab Fields** > **Payment Table Fields-**
~107 tok
#### **Payment Table Fields-** **Field Name** **Type** **Required** **Validation Rules** Payment Status Status Badge PENDING, PROCESSING, PAID, FAILED (Along with the reason for failure) Yes Received/Issued/Pending/Overdue with color coding Payment Date Date and Time Yes Due Date Date Display Yes Format: DD/MM/YY H: MM AM/PM Amount Paid Currency, Digit Yes Format: $XXX.XX Action CTA Optional View?
#1549
**Project Finances Tab Fields** > **Financial Summary Fields. If we submit a manual PDF, THEN these details below cannot be fetched.**
~112 tok
#### **Financial Summary Fields. If we submit a manual PDF, THEN these details below cannot be fetched.** **Upload invoice CTA** **Choose Project** Dropdown Yes A list of all the projects that are assigned to the contractor **Choose Events** Dropdown ( with event color code) Yes A list of all the events in the project that are assigned to the contractor **File Upload area** Upload document Yes 1 Invoice at a time, 5 MB max per PDF
#1550
**Project Finances Tab Fields** >
~1 tok
####
#1551
**Project Finances Tab Fields** >
~1 tok
####
#1552
**Project Finances Tab Fields** > **Project Files/Documents Tab Fields**
~11 tok
### **Project Files/Documents Tab Fields**
#1553
**Project Finances Tab Fields** > **Project Files/Documents Tab Fields** > **Document Management Fields**
~179 tok
#### **Document Management Fields** **Field Name** **Type** **Required** **Validation Rules** Add Document Button Upload CTA N/A File upload initiation Filter Dropdown Selection N/A Latest/Date/Type/Author sorting options Document Name Text Display N/A Read-only, document title with file type icon Document Type Category Badge N/A Read-only, Contract/Invoice/Doc classification Event name/ author Status Badge Status Display N/A New/Signed/Pending with color coding, and it will fade away if you view the document Date of signing and Timestamp DateTime Display N/A Read-only, signature date/time Actions Menu- Dropdown - preview, download PDF, Delete N/A Document management options
#1554
**Project Finances Tab Fields** > **Project Files/Documents Tab Fields** > **Document Upload Fields**
~83 tok
#### **Document Upload Fields** **Field Name** **Type** **Required** **Validation Rules** File Upload File Input Yes Multiple file types Document Name Text Input Yes Max 100 characters Document Type Dropdown Yes Contract/Invoice/Doc/Other Author Assignment User Dropdown Yes Select from the project team members
#1555
**Project Finances Tab Fields** >
~1 tok
###
#1556
**Project Finances Tab Fields** > **Project Notes Tab Fields**
~8 tok
### **Project Notes Tab Fields**
#1557
**Project Finances Tab Fields** > **PRIVATE NOTES SECTION**
~239 tok
### **PRIVATE NOTES SECTION** **Field Name** **Type** **Required** **Validation Rules** **Note Content** Rich Text Area Yes \-Consists of 1 Header and a body, the header will be by default bold \- Maximum 2000 characters \- Minimum 10 characters \-Truncate after 200 characters \-More" link for expansion **Creation Timestamp** DateTime System Generated \- Auto-populated on save \- Format: MM/DD/YYYY HH: MM \- Timezone aware \- Non-editable **Last Modified Timestamp** DateTime System Generated \- Auto-updated on edit \- Format: MM/DD/YYYY HH: MM \- Timezone aware \- Non-editable **Contractor profile** Reference Field System Generated \- Links to logged-in contractor \- Non-editable **Event name and color code** Text and color badge System Generated \- Links to current event context \- Non-editable \- Inherited from page context **Note Status** Action System Generated \- Values: Edit, Delete
#1558
**Project Finances Tab Fields** > **PUBLIC NOTES SECTION (READ-ONLY)**
~10 tok
### **PUBLIC NOTES SECTION (READ-ONLY)**
#1559
**Project Finances Tab Fields** > **Field Name**
~5 tok
### **Field Name**
#1560
**Project Finances Tab Fields** > **Type**
~3 tok
### **Type**
#1561
**Project Finances Tab Fields** > **Required**
~4 tok
### **Required**
#1562
**Project Finances Tab Fields** > **Validation Rules**
~6 tok
### **Validation Rules**
#1563
**Project Finances Tab Fields** > **Note Content**
~5 tok
### **Note Content**
#1564
**Project Finances Tab Fields** > Rich Text Display
~5 tok
### Rich Text Display
#1565
**Project Finances Tab Fields** > N/A (Read-only)
~170 tok
### N/A (Read-only) Consists of 1 Header and a body, the header will be bold by default \-Maximum 2000 characters \- Minimum 10 characters \-Truncate after 200 characters \-More" link for expansion and see less to collapse the content **Creation Timestamp** DateTime System Generated \- Auto-populated on save \- Format: MM/DD/YYYY HH: MM \- Timezone aware \- Non-editable **Last Modified Timestamp** DateTime System Generated \- Auto-updated on edit \- Format: MM/DD/YYYY HH: MM \- Timezone aware \- Non-editable **Team member profile badges** Images System Generated \- All the members’ icons will be shown. A minimum of 3 icons need to be shown
#1566
**Project Finances Tab Fields** > **Visibility Scope**
~6 tok
### **Visibility Scope**
#1567
**Project Finances Tab Fields** > Reference Display
~5 tok
### Reference Display
#1568
**Project Finances Tab Fields** > N/A (Read-only)
~5 tok
### N/A (Read-only)
#1569
**Project Finances Tab Fields** > \- Shows who can see the note
~16 tok
### \- Shows who can see the note \- Team, Event, Project scope
#1570
**Project Finances Tab Fields** > **ACTION CONTROLS**
~6 tok
### **ACTION CONTROLS**
#1571
**Project Finances Tab Fields** > **Field Name**
~5 tok
### **Field Name**
#1572
**Project Finances Tab Fields** > **Type**
~3 tok
### **Type**
#1573
**Project Finances Tab Fields** > **Required**
~4 tok
### **Required**
#1574
**Project Finances Tab Fields** > **Validation Rules**
~6 tok
### **Validation Rules**
#1575
**Project Finances Tab Fields** > **Edit Note Button**
~6 tok
### **Edit Note Button**
#1576
**Project Finances Tab Fields** > Action Button
~4 tok
### Action Button
#1577
**Project Finances Tab Fields** > Optional
~3 tok
### Optional
#1578
**Project Finances Tab Fields** > \- Only for private notes
~26 tok
### \- Only for private notes \- Visible if the user is not the owner \- Disabled for deleted notes
#1579
**Project Finances Tab Fields** > **Delete Note Button**
~7 tok
### **Delete Note Button**
#1580
**Project Finances Tab Fields** > Action Button
~4 tok
### Action Button
#1581
**Project Finances Tab Fields** > Optional
~3 tok
### Optional
#1582
**Project Finances Tab Fields** > \- Only for private notes
~7 tok
### \- Only for private notes
#1583
**Project Finances Tab Fields** > **Add Note Button**
~6 tok
### **Add Note Button**
#1584
**Project Finances Tab Fields** > Action Button
~4 tok
### Action Button
#1585
**Project Finances Tab Fields** > Optional
~3 tok
### Optional
#1586
**Project Finances Tab Fields** > \- Triggers note creation form
~29 tok
### \- Triggers note creation form \- Validate user permissions \- Event context required, note cannot be empty
#1587
**Project Finances Tab Fields** > **More/See less Link**
~7 tok
### **More/See less Link**
#1588
**Project Finances Tab Fields** > Action Link
~4 tok
### Action Link
#1589
**Project Finances Tab Fields** > Optional
~3 tok
### Optional
#1590
**Project Finances Tab Fields** > \- For content expansion
~23 tok
### \- For content expansion \- Available for truncated content \- Toggle expand/collapse
#1591
**Project Finances Tab Fields** > **Action Menu**
~5 tok
### **Action Menu**
#1592
**Project Finances Tab Fields** > Dropdown Menu
~4 tok
### Dropdown Menu
#1593
**Project Finances Tab Fields** > Optional
~3 tok
### Optional
#1594
**Project Finances Tab Fields** > \- Contains edit/delete options
~17 tok
### \- Contains edit/delete options \- Permission-based visibility
#1595
**Project Finances Tab Fields** >
~1 tok
###
#1596
**Project Finances Tab Fields** > > **Payments**
~139 tok
#### **Payments** **Field Name** **Type** **Required** **Validation Rules** Payment Status Status Badge PENDING, PROCESSING, PAID, FAILED (Along with the reason for failure ) Yes Received/Issued/Pending/Overdue with color coding Project Name Text Yes Auto-populate from the system Due Date Date Display Yes Format: DD/MM/YY H: MM AM/PM Amount Paid Currency, Digit Yes Format: $XXX.XX Payment Method Bank Transfer, Credit card, Debit card Yes Data will be fetched from Stripe Action CTA Optional Opens the PDF of the Invoice
#1597
**Project Finances Tab Fields** > >
~1 tok
####
#1598
**Project Finances Tab Fields** > > **Invoice Creation Fields**
~45 tok
#### **Invoice Creation Fields** **Field Name** **Type** **Required** **Validation Rules** Create Invoice Button CTA Button Yes Workflow initiation for invoice generation
#1599
**Project Finances Tab Fields** >
~1 tok
###
#1600
**Project Finances Tab Fields** > **5\. Error Message Handling**
~8 tok
## **5\. Error Message Handling**
#1601
**Project Finances Tab Fields** > **5\. Error Message Handling** > **Details Tab Error Messages**
~108 tok
### **Details Tab Error Messages** **Field** **Validation Scenario** **Error Message** Invoice Upload File too large "Please note that the file size is exceeding the limit." Invoice Upload Invalid file type Please upload files in PDF format only. Custom Delivery Empty description "Please describe your custom delivery method." Agreement Signing Signature failed "Signature could not be processed. Please try again."
#1602
**Project Finances Tab Fields** > **5\. Error Message Handling** > **Notes Tab Error Messages**
~70 tok
### **Notes Tab Error Messages** **Field** **Validation Scenario** **Error Message** Note Title Empty title "Note title is required." Note Content Empty content "Note content cannot be empty." Note Content Content too long "Note content exceeds 1000 character limit."
#1603
**Project Finances Tab Fields** > **6\. Functional Logic**
~430 tok
## **6\. Functional Logic** * **Agreement Dependency Rule:** All upload and delivery functions remain locked until the IC Agreement is digitally signed * **Progress Display Logic:** All progress stages are read-only visual indicators that update automatically based on user actions and system events * **Event Progress Navigation:** Users can click on progress indicators for navigation, but cannot directly modify progress status * **Progress Status Updates:** Progress automatically updates through the completion of associated workflows (e.g., file uploads, form submissions, payment processing) * **Tab Navigation Logic:** Users can switch between tabs freely, with consistent header information across all tabs * **Contractor Assignment Logic:** Only assigned contractors can view and modify project details for their role * **Financial Calculation Logic:** Pending amounts auto-calculate as (Total Project Price - Payments Received) * **Document Version Control:** The system maintains an audit trail of all document uploads and modifications with timestamp tracking * **Note Visibility Logic:** Notes are visible to assigned team members based on note-creation settings * **Cross-Tab Synchronization:** Changes in one tab automatically update relevant information in other tabs * **Role-Based Tab Access:** Tab visibility and functionality depend on user role permissions. * **Real-Time Updates:** All tabs sync in real-time when multiple users are accessing the same project * **Payment Status Logic:** Payment statuses automatically update based on due dates and payment confirmations * **File Organization Logic:** Documents are categorized by type and maintain searchable metadata
#1604
**Project Finances Tab Fields** > **7\. Edge Cases**
~253 tok
## **7\. Edge Cases** **Scenario** **Expected Behavior** Agreement signing timeout Auto-save progress, prompt re-authentication, allow retry Digital link becomes inaccessible Periodic link validation, notifying users of broken links Contractor role change mid-project Update permissions and access immediately Duplicate invoice upload Detect duplicates, prompt the user to confirm or replace The event date changed after the agreement Notify all contractors, update timeline documents Large file upload failure Implement chunked upload, and provide detailed progress feedback Multiple users editing the same note Implement conflict resolution with last-save-wins Contractor removal during an active project Archive contractor data and maintain historical records Payment record deletion Require admin approval, maintain an audit trail Tab switching during file upload Maintain upload progress, allow tab navigation Overdue payment notifications Automatic email alerts, status badge updates
#1605
**Project Finances Tab Fields** > **8\. Test Cases**
~538 tok
## **8\. Test Cases** **Test ID** **Requirement** **Scenario** **Priority** **Steps** **Expected Outcome** TC001 Agreement Signing Valid agreement signature High 1\. Navigate to the agreement section. 2. Click "Sign Agreement" 3. Complete e-signature process Agreement status changes to "Signed", upload sections unlock TC002 File Upload Validation Invalid file type upload High 1\. Attempt to upload a .txt file as an invoice. 2. Observe the system response Error message displayed, file rejected TC003 Progress State Management Sequential milestone completion Critical 1\. Complete agreement 2. Mark event captured 3. Upload deliverables Each step unlocks the next milestone, and visual progress updates TC004 Tab Navigation Cross-tab data consistency High 1\. Upload the document in the Files tab. 2. Navigate to the Details tab.. 3. Verify progress update Progress indicators update across all tabs TC005 Contractor Information Display Team member visibility Medium 1\. Navigate to the Contractors tab. 2. Verify all assigned contractors' display All contractors show with correct roles and contact info TC006 Financial Summary Accuracy Payment calculation validation High 1\. Add payment record 2. Verify summary calculations The pending amount auto-calculates correctly TC007 Document Upload and Categorization File management workflow Medium 1\. Upload a document with metadata 2. Verify categorization 3. Check searchability The documentt is properly categorized and searchable TC008 Note Creation and Visibility Team communication Medium 1\. Create notes with team assignments 2. Verify visibility 3. Check notifications Assigned team members can view notes, receive notifications TC009 Cross-Tab Real-Time Updates Multi-user synchronization High 1\. User A updates payment 2. User B views the Finances tab 3. Verify real-time sync Changes are reflected immediately for all users TC010 Role-Based Access Control Permission validation Critical 1\. Log in with different user roles. 2. Verify tab access 3. Test functionality limits Each role sees appropriate tabs and functions
#1606
**Project Finances Tab Fields** > **Test Cases:** [**Pixally Test cases - 01.04.25**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=97704170#gid=97704170)
~43 tok
## **Test Cases:** [**Pixally Test cases - 01.04.25**](https://docs.google.com/spreadsheets/d/1RNM15mQt_Ax15liD7LeQZTvi_N01Hax4yZXSNIcN2dI/edit?gid=97704170#gid=97704170)
#1607
**Project Finances Tab Fields** > **9\. Acceptance Criteria**
~399 tok
## **9\. Acceptance Criteria** * **Agreement Workflow:** Contractors must successfully sign the IC Agreement before accessing the upload functionality * **Event Details Display:** All event information (date, venue, client details) must be displayed accurately with proper formatting * **Progress Tracking:** Visual progress indicators must accurately reflect completion status with appropriate color coding (Green/Yellow/Gray) * **Tab Navigation:** Users must be able to seamlessly navigate between all tabs with consistent header information * **Contractor Management:** All assigned contractors must display accurate role information and contact details * **Financial Tracking:** Payment summaries must auto-calculate accurately and update in real-time * **Document Repository:** File upload, categorization, and search functionality must work reliably * **Communication Hub:** Note creation, team assignment, and visibility must function properly * **Cross-Tab Synchronization:** Changes in one tab must reflect immediately in the relevant sections of other tabs * **Role-Based Access:** Users can only access tabs and functions appropriate to their role level * **Real-Time Updates:** Multiple users must see synchronized data across all tabs * **Mobile Responsiveness:** The Interface must be fully functional on tablet devices with touch-friendly controls * **Error Handling:** All error scenarios must provide clear, actionable feedback to users * **Integration Requirements:** Payment milestones, document signatures, and progress updates must sync properly
#1608
**Project Finances Tab Fields** > **10\. Dependencies**
~298 tok
## **10\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** Document Management System Core Integration Cannot store/retrieve agreements and files, Files tab non-functional Digital Signature Service External API The agreement signing workflow fails Payment Processing System Data Integration Cannot track payment milestones, the Finances tab is limited Shipping API Services External Integration Cannot validate tracking numbers Notification System Internal Service Users miss status updates and alerts across all tabs User Authentication Core System Cannot verify user identity and permissions File Storage Service Infrastructure Cannot store uploaded files and documents Event Management Module Data Dependency Cannot display event details and scheduling Team Management System Data Integration The contractor's tab cannot display team information Communication Platform Integration Notes tab notifications and team collaboration are affected Real-Time Sync Service Infrastructure Cross-tab updates and multi-user synchronization fail Search Engine Internal Service Document search and filtering functionality unavailable
#1609
**Project Finances Tab Fields** >
~1 tok
##
#1610
**Project Finances Tab Fields** > **11\. References**
~71 tok
## **11\. References** * **Figma Design:** [https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=6079-47635&p=f&t=mGQtMEDiDYFeKbZF-0](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=6079-47635&p=f&t=mGQtMEDiDYFeKbZF-0) Deprecated\_Finances Tab
#1611
**Account Settings - Finances Tab (Contractor Portal)**
~14 tok
# **Account Settings - Finances Tab (Contractor Portal)**
#1612
**Account Settings - Finances Tab (Contractor Portal)** > **1\. Module Overview**
~142 tok
## **1\. Module Overview** * **Module Name:** Account Settings - Finances Tab (Contractor Portal) * **Purpose:** Enable contractors to integrate their Stripe account for receiving payments directly through Pixally, manage their financial information, and view the verification status of their business details. * **Business Goal:** Streamline the payment process by allowing contractors to securely connect their Stripe accounts, ensuring they can receive payments from agencies efficiently while maintaining compliance with financial verification requirements.
#1613
**Account Settings - Finances Tab (Contractor Portal)** > **2\. User Roles & Permissions**
~72 tok
## **2\. User Roles & Permissions** **Role** **Description** **Key Permissions** Contractor Contractors working with multiple agencies Add Stripe financial information, view bank account details, view business owner details, and update financial information when verification fails
#1614
**Account Settings - Finances Tab (Contractor Portal)** > **3\. User Flow**
~27 tok
## **3\. User Flow** **Navigation Path:** Contractor Portal > Profile Menu > Account Settings > Finances Tab
#1615
**Account Settings - Finances Tab (Contractor Portal)** > **3\. User Flow** > **Step-by-Step Flow:**
~565 tok
### **Step-by-Step Flow:**
**Initial State (No Financial Information Added):**
1. Contractor navigates to Account Settings
2. Contractor clicks on the "Finances" tab
3. System displays empty state with:
* Wallet icon
* Heading: "Financial Information"
* Subtext: "Start receiving payment directly through Pixally."
* Button: "Add Financial info. +"
4. Contractor clicks "Add Financial info. +" button
5. System redirects contractor to Stripe integration flow
6. Contractor completes all required steps in Stripe onboarding:
* Business information
* Bank account details
* Business owner verification
* Identity verification documents (if required)
7. After successful completion, the contractor is redirected back to the Finances tab
**Post-Integration State:**
1. System displays "Business Information" section with:
* Bank account subsection showing:
* Bank icon
* Business name (e.g., "Pixally Group")
* Bank account details: "Bank account ending in \[last 4 digits\]"
* Website URL (e.g., "www.pixally.com")
* Edit and Delete icons
* Business Owner subsection showing:
* Avatar icon
* Owner name (e.g., "Aaron James")
* Edit and Delete icons
**Verification States:**
**State A - Under Verification:** System displays informational message: "Your business information is under verification. It could take up to 24 hours."
The contractor cannot make changes during verification. Edit and Delete icons remain visible but disabled during active verification
**State B - Verification Failed:** System displays warning banner with: - Yellow/orange background - Warning icon - Message: "Some of the information provided was not verified. You can make the necessary changes." - "Update" button Contractor clicks "Update" button. System redirects contractor to Stripe to update/correct the failed information.
Contractor makes necessary corrections in Stripe. System redirects back to the Finances tab and displays a verification in progress state
**State C - Verification Successful:** Informational message is removed. Business information remains displayed. All edit and delete functions are fully active#1616
**Account Settings - Finances Tab (Contractor Portal)** >
~1 tok
##
#1617
**Account Settings - Finances Tab (Contractor Portal)** > **4\. Functional Logic**
~7 tok
## **4\. Functional Logic**
#1618
**Account Settings - Finances Tab (Contractor Portal)** > **4\. Functional Logic** > **4.1 Empty State Behavior**
~191 tok
### **4.1 Empty State Behavior**
**4.1.1 Initial Display:**
* When a contractor first accesses the Finances tab without any financial information configured, the system displays an empty state
* The empty state includes: s
* Centered wallet icon (decorative)
* "Financial Information" heading
* "Start receiving payment directly through Pixally" descriptive text
* "Add Financial info. +" CTA button
**4.1.2 Add Financial Info Action:**
* Clicking the "Add Financial info. +" button initiates the Stripe Connect integration flow
* The system generates a unique Stripe Connect onboarding link for the contractor
* Contractor is redirected to Stripe's hosted onboarding experience
* System tracks onboarding completion status#1619
**Account Settings - Finances Tab (Contractor Portal)** > **4\. Functional Logic** > **4.2 Stripe Integration Flow**
~273 tok
### **4.2 Stripe Integration Flow**
**4.2.1 Stripe Connect Onboarding:**
* Contractor is redirected to Stripe's secure hosted onboarding
* Required information collected by Stripe includes:
* Business type and details
* Business owner's personal information
* Bank account information for payouts
* Tax identification details
* Identity verification documents (as required by Stripe)
**4.2.2 Completion and Redirect:**
* Upon successful completion of all Stripe requirements, the contractor is redirected back to the Pixally Finances tab
* System receives webhook notification from Stripe confirming account setup
* System stores the Stripe account ID and associates it with the contractor profile
* The Business Information section is populated with data received from Stripe
**4.2.3 Incomplete Onboarding:**
* If the contractor exits Stripe onboarding before completion, they return to the empty state
* "Add Financial info. +" button remains available for retry
* No partial data is displayed until Stripe onboarding is fully completed#1620
**Account Settings - Finances Tab (Contractor Portal)** > **4\. Functional Logic** > **4.3 Business Information Section**
~292 tok
### **4.3 Business Information Section**
**4.3.1 Section Display:**
* Section Header: "Business Information"
* Displays after successful Stripe integration
* Contains two subsections:
1. Bank account
2. Business Owner
**4.3.2 Bank Account Subsection:**
* Label: "Bank account."
* Displays:
* Bank/business icon (decorative)
* Business name as registered in Stripe (e.g., "Pixally Group")
* Bank account identifier: "Bank account ending in \[last 4 digits\]" (e.g., "Bank account ending in 6021")
* Associated website URL (if provided during Stripe setup)
* Edit button - allows updating information via Stripe
* Delete button - allows disconnecting the Stripe account
* Data source: Retrieved from Stripe via API
**4.3.3 Business Owner Subsection:**
* Label: "Business Owner"
* Displays:
* Avatar icon with owner initials (if no photo available)
* Business owner full name (e.g., "Aaron James")
* Edit icon (pencil) - allows updating information via Stripe
* Delete icon (trash) - allows removing the business owner (if permitted)
* Data source: Retrieved from Stripe via API#1621
**Account Settings - Finances Tab (Contractor Portal)** > **4\. Functional Logic** > **4.4 Verification Status Logic**
~577 tok
### **4.4 Verification Status Logic**
**4.4.1 Verification States:**
The Stripe account can have three verification states:
1. **Under Verification** - Initial state after setup
2. **Verification Failed** - Some information couldn't be verified
3. **Verification Successful** - All information verified
**4.4.2 Under Verification State:**
* **Trigger:** Immediately after completing Stripe onboarding
* **Display:**
* Informational banner (grey/blue background)
* Message: "Your business information is under verification. It could take up to 24 hours."
* No action buttons on the banner
* Edit and delete icons remain visible
* **Duration:** Until Stripe completes verification (typically up to 24 hours)
* **System Behavior:**
* Contractor can view but may have limited editing capabilities
* Payments may be held, or processing may be restricted until verification is complete
* System polls the Stripe API or receives webhook updates on verification status
**4.4.3 Verification Failed State:**
* **Trigger:** Stripe verification process identifies issues with submitted information
* **Display:**
* Warning banner with yellow/orange background
* Warning icon
* Message: "Some of the information provided was not verified. You can make the necessary changes."
* "Update" button (prominent, on the right side of the banner)
* **Update Action:**
* Clicking the "Update" button generates a new Stripe onboarding link with pre-filled information
* Contractor is redirected to Stripe to review and correct flagged information
* Stripe highlights specific fields that require attention
* After corrections, the contractor is redirected back to the Finances tab
* Status returns to the "Under Verification" state
* New verification cycle begins
**4.4.4 Verification Successful State:**
* **Trigger:** Stripe confirms all information is verified
* **Display:**
* No informational or warning banners were displayed
* Clean display of the Business Information section
* All edit and delete functions are fully active
* **System Behavior:**
* Contractor can receive payments without restrictions
* Full access to update financial information as needed#1622
**Account Settings - Finances Tab (Contractor Portal)** > **4\. Functional Logic** > **4.5 Edit and Delete Actions**
~473 tok
### **4.5 Edit and Delete Actions**
**4.5.1 Edit Bank Account:**
* Clicking the edit icon (pencil) next to the bank account
* System generates Stripe Express dashboard link
* Contractor is redirected to Stripe to modify bank account information
* After changes in Stripe:
* Contractor is redirected back to the Finances tab
* Updated information is reflected in the Business Information section
* If changes require re-verification, status returns to "Under Verification."
**4.5.2 Edit Business Owner:**
* Clicking the edit icon (pencil) next to the business owner
* The system generates the Stripe Express dashboard link, focused on the owner's information
* Contractor is redirected to Stripe to modify the owner details
* After changes in Stripe:
* Contractor is redirected back to the Finances tab
* Updated information is reflected in the Business Information section
* If changes require re-verification, status returns to "Under Verification."
**4.5.3 Delete Bank Account:**
* Clicking the delete icon (trash) next to the bank account
* System displays confirmation modal:
* Title: "Remove Bank Account"
* Message: "Are you sure you want to remove this bank account? This action cannot be undone and will affect your ability to receive payments."
* Buttons: "Cancel" and "Remove"
* On confirmation:
* System disconnects the bank account in Stripe
* Business information section updates to show no bank account
* A warning message may be displayed about payment implications
**4.5.4 Delete Business Owner:**
* Clicking the delete icon (trash) next to the business owner
* May not be permitted if the business owner is required by Stripe
* If permitted, displays a confirmation modal similar to bank account deletion
* On confirmation, updates Stripe and refreshes the display#1623
**Account Settings - Finances Tab (Contractor Portal)** > **4\. Functional Logic** > **4.6 Global Settings Behavior**
~189 tok
### **4.6 Global Settings Behavior** **4.6.1 Cross-Agency Impact:** * Financial information in Account Settings is global across all agencies * Stripe integration is associated with the contractor's account, not individual agencies * All agencies the contractor works with will use the same Stripe account for payments * Changes to financial information reflect across all agencies * Payments from multiple agencies are consolidated into the same Stripe account **4.6.2 Synchronization:** * Any updates made via Stripe (directly or through Pixally) are synced in real-time * System uses Stripe webhooks to receive updates: * Changes are reflected in Contractor Portal and potentially Agency Portal views of contractor financial status
#1624
**Account Settings - Finances Tab (Contractor Portal)** > **4\. Functional Logic** > **4.7 Data Persistence and Security**
~183 tok
### **4.7 Data Persistence and Security**
**4.7.1 Stripe Data Storage:**
* Pixally stores only:
* Stripe account ID (connect account ID)
* Verification status
* Last sync timestamp
* Sensitive financial data (bank account numbers, SSN, etc.) is stored securely in Stripe
* The system never stores full bank account numbers, only the last 4 digits retrieved from Stripe
**4.7.2 Access Control:**
* Only the authenticated contractor can view and manage their own financial information
* Agency users may see verification status, but cannot view full financial details
* Edit and delete actions require contractor authentication
* Stripe redirects include secure tokens to prevent unauthorized access#1625
**Account Settings - Finances Tab (Contractor Portal)** > **5\. Field Details & Validations**
~10 tok
## **5\. Field Details & Validations**
#1626
**Account Settings - Finances Tab (Contractor Portal)** > **5\. Field Details & Validations** > **5.1 Business Information Display Fields**
~125 tok
### **5.1 Business Information Display Fields** **Field Name** **Source** **Format** **Notes** Business Name Stripe API Text, max 100 characters Name as registered with Stripe Bank Account Last 4 Digits Stripe API "Bank account ending in XXXX" Only the last 4 digits are displayed for security Website URL Stripe API Clickable link format Optional, displays if provided during Stripe setup Business Owner Name Stripe API Text, "First Last" format Full name of primary account owner
#1627
**Account Settings - Finances Tab (Contractor Portal)** > **5\. Field Details & Validations** >
~1 tok
###
#1628
**Account Settings - Finances Tab (Contractor Portal)** > **5\. Field Details & Validations** > **5.2 Verification Status Messages**
~120 tok
### **5.2 Verification Status Messages** **Status** **Message** **Display Style** Under Verification "Your business information is under verification. It could take up to 24 hours." Informational banner (grey/blue background) Verification Failed "Some of the information provided was not verified. You can make the necessary changes." Warning banner (yellow/orange background) with "Update" button Verification Successful No message displayed Clean display, no banner
#1629
**Account Settings - Finances Tab (Contractor Portal)** > **6\. Error Message Handling**
~217 tok
## **6\. Error Message Handling** **Scenario** **Error Message** **Display Location** Stripe onboarding incomplete/cancelled "Financial information setup was not completed. Please try again." Toast notification or inline message in the empty state Stripe API connection failure "Unable to load financial information. Please try again later." Inline error in the Business Information section Failed to generate the Stripe link for the update "Unable to open update page. Please try again." Toast notification Delete action fails "Unable to remove this information. Please try again." Toast notification Webhook processing error No user-facing error; system logs an error for investigation System logs only Network timeout during Stripe redirect "Connection timed out. Please check your internet connection and try again." Toast notification or modal
#1630
**Account Settings - Finances Tab (Contractor Portal)** >
~1 tok
##
#1631
**Account Settings - Finances Tab (Contractor Portal)** > **7\. Success Message Handling**
~119 tok
## **7\. Success Message Handling** **Action** **Success Message** Stripe integration completed "Financial information added successfully!" Bank account updated via Stripe "Bank account information updated successfully." Business owner information updated "Business owner information updated successfully." Bank account disconnected "Bank account removed successfully." Verification completed successfully No explicit message; verification banner is simply removed
#1632
**Account Settings - Finances Tab (Contractor Portal)** > **8\. Edge Cases**
~471 tok
## **8\. Edge Cases** **Scenario** **Expected Behavior** Contractor exits Stripe onboarding mid-process Return to empty state; no data saved; "Add Financial info. +" button remains available Multiple verification failures Each time "Update" is clicked, the contractor can retry; the system allows unlimited attempts Stripe account already connected to another Pixally account Stripe prevents duplicate connections; error message: "This Stripe account is already connected to another Pixally account." Contractor tries to edit during active verification Edit action opens Stripe, but the message warns that verification is in progress Stripe webhook is delayed or not received System polls the Stripe API periodically (e.g., every 5 minutes) to sync status; the contractor can also manually refresh Bank account deleted in Stripe directly (not through Pixally) Next sync updates Pixally to show no bank account; informational message: "Bank account was removed. Please add a new one." Contractor has multiple bank accounts in Stripe Display primary/default bank account only; if multiple, display the one marked as default in Stripe Stripe service is down Display error message: "Financial service is temporarily unavailable. Please try again later." Contractor clicks edit/delete during "Under Verification" state Edit opens Stripe (allowed); Delete may show a warning that verification will be cancelled Verification status stuck "Under Verification" for >24 hours Display additional message: "Verification is taking longer than expected. Contact support if needed." Network interruption during Stripe redirect Contractor remains on the current page; error message prompts to try again Contractor completes Stripe setup but immediately closes the browser On next login, the system checks Stripe status via API; if complete, it displays Business Information
#1633
**Account Settings - Finances Tab (Contractor Portal)** > **9\. Acceptance Criteria**
~796 tok
## **9\. Acceptance Criteria** **Empty State:** * Empty state displays with wallet icon, "Financial Information" heading, descriptive text, and "Add Financial info. +" button when no financial information exists * Clicking the "Add Financial info. +" button redirects to Stripe Connect onboarding **Stripe Integration:** * The contractor can complete the Stripe Connect onboarding process * After a successful Stripe setup, the contractor is redirected back to the Finances tab * The Business Information section displays after successful Stripe integration * System stores the Stripe account ID and associates it with the contractor profile **Business Information Display:** * The bank account section displays the business name, "Bank account ending in \[last 4 digits\]", and website URL * The Business Owner section displays the owner's name with an avatar * Edit icons are functional and redirect to Stripe for updates * Delete icons display a confirmation modal before removal **Verification States:** * "Under Verification" message displays immediately after Stripe setup completion * "Under Verification" message: "Your business information is under verification. It could take up to 24 hours." * "Verification Failed" warning banner displays when Stripe flags issues * "Verification Failed" message: "Some of the information provided was not verified. You can make the necessary changes" with the "Update" button * Clicking "Update" redirects to Stripe with pre-filled information for corrections * "Verification Successful" state removes all banners and shows a clean Business Information display * System updates verification status based on Stripe webhooks or API polling **Edit and Update Actions:** * Edit bank account opens the Stripe dashboard for modifications * Edit business owner opens the Stripe dashboard for owner information updates * Changes made in Stripe sync back to the Pixally Finances tab * Updates requiring re-verification return status to "Under Verification." **Delete Actions:** * Delete bank account displays a confirmation modal with a warning about payment implications * Delete confirmation removes the bank account from Stripe and updates the display * Delete business owner (if permitted) displays a confirmation modal and updates upon confirmation **Global Synchronization:** * Financial information is global across all agencies the contractor works with * Changes sync in real-time via webhooks or periodic API polling * All agencies use the same Stripe account for contractor payments **Error Handling:** * An incomplete Stripe onboarding returns the contractor to the empty state * Stripe API failures display appropriate error messages * Network issues are handled gracefully with retry options * Duplicate Stripe account connection is prevented with a clear error message **Data Security:** * Only the Stripe account ID and verification status are stored in Pixally * Full bank account numbers are never stored; only the last 4 digits are displayed * All financial data access requires contractor authentication * Stripe redirects use secure tokens
#1634
**Account Settings - Finances Tab (Contractor Portal)** > **10\. Dependencies**
~204 tok
## **10\. Dependencies** **Module/System** **Dependency Type** **Impact if Unavailable** Stripe Connect API Critical Integration Cannot add or manage financial information; payments cannot be processed Stripe Webhooks Integration Dependency Real-time updates unavailable; must rely on polling; verification status may be delayed User Authentication Security Dependency Cannot verify contractor identity; cannot associate Stripe account with the correct user Database Data Dependency Cannot store Stripe account ID or verification status; integration state lost Payment Processing System Business Logic Dependency Financial information is displayed, but payments cannot be processed or received Agency Portal Display Dependency Agencies cannot see the contractor's financial verification status
#1635
**Account Settings - Finances Tab (Contractor Portal)** > **11\. References**
~40 tok
## **11\. References** * **Link -** [**Click Here**](https://www.figma.com/design/ej0kxwP45mDKmZCZfAJ5O8/Pixally?node-id=21726-144483&t=0ByRl7J146jJn5dx-0)