fix(twenty-partners): opportunity stage constants + Partners per Stage table (v1.1.9) (#22052)

## Summary

Two related cleanup items for the partners workspace:

### 1. Opportunity `stage` field — shared constant + reference catalog

- Adds `src/constants/opportunity-stage-options.ts` exporting
`OPPORTUNITY_STAGE_FIELD_UNIVERSAL_IDENTIFIER` and an
`OPPORTUNITY_STAGE_OPTIONS` catalog (stock stages + **Done** /
**Dead**).
- **`deals-board.view.ts`** imports the shared field id instead of
inlining `STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS`.
- The catalog is **not** synced by the app manifest — it documents
planned option ids for scripts/reference only.

**Done / Dead on prod:** added manually in Settings → Objects →
Opportunity → Stage (not via app sync). `defineField` extension of the
standard `stage` field was attempted and rejected
(`FIELD_ALREADY_EXISTS`). Deals kanban groups in the manifest stay
NEW–CUSTOMER only; Done/Dead columns appear when the workspace has those
options.

**Prod data cleanup (outside this PR):** all opportunities moved to
**Done** except `ed95573c-cbe6-4dcc-a459-5369a7449636` (Aranya CRM
Migration, kept in **New**).

### 2. Partners per Stage view — TABLE with stage grouping

Replaces the old KANBAN board with a **grouped TABLE** (same pattern as
Partners per Country / Applications):

- **Type:** `TABLE` (was `KANBAN`)
- **Group by:** `validationStage` — Application, Potential, Validated,
Former, Rejected
- **Columns:** Name, Country, Categories (`partnerScope`), Tier
(`partnerTier`)
- **Nav icon:** `IconTable`

View / view-field / group universal ids were aligned to prod after
KANBAN→TABLE install recreated the view (Twenty cannot change view type
in place).

## Version

**`1.1.9`** in this branch. Pre-merge deploys to `partner-twenty-com`
went through **1.1.5 → 1.1.11** while iterating on the view; prod may be
ahead of this branch’s pinned view id — one more id-alignment install
after merge may be needed if nav doesn’t land on the grouped table.

## Files touched (twenty-partners only)

| File | Change |
|---|---|
| `src/constants/opportunity-stage-options.ts` | New — stage field id +
option catalog |
| `src/views/deals-board.view.ts` | Import shared stage field constant |
| `src/views/partners-per-stage.view.ts` | KANBAN → grouped TABLE +
columns |
| `src/navigation-menu-items/partners-per-stage.navigation-menu-item.ts`
| Icon → `IconTable` |
| `package.json` | **1.1.9** |

## Test plan

- [x] `yarn lint` in `packages/twenty-apps/internal/twenty-partners` —
0/0
- [x] Prod: Done/Dead stage options present; Deals kanban shows 7
columns, no duplicates
- [x] Prod: Partners per Stage — TABLE grouped by validation stage with
Name / Country / Categories / Tier
- [x] Prod: Opportunity cleanup — 20 → Done, 1 stays New (Aranya CRM
Migration)
- [ ] After merge + install on fresh workspace: Partners per Stage
grouping renders without manual view fixes
This commit is contained in:
Rashad Karanouh
2026-06-24 13:52:23 +04:00
committed by GitHub
parent b7850a6c64
commit eb53dee3be
12 changed files with 245 additions and 121 deletions
@@ -1,6 +1,6 @@
{
"name": "twenty-partners",
"version": "1.1.14",
"version": "1.1.15",
"license": "MIT",
"engines": {
"node": "^24.5.0",
@@ -0,0 +1,58 @@
export const OPPORTUNITY_STAGE_FIELD_UNIVERSAL_IDENTIFIER =
'20202020-6f76-477d-8551-28cd65b2b4b9';
/** Stock Opportunity.stage options plus partners archival stages. */
export const OPPORTUNITY_STAGE_OPTIONS = [
{
id: '20202020-8e01-4afd-9c39-d2063097587a',
value: 'NEW',
label: 'New',
position: 0,
color: 'red',
},
{
id: '20202020-e685-4671-ac32-26d304dacb6e',
value: 'SCREENING',
label: 'Screening',
position: 1,
color: 'purple',
},
{
id: '20202020-dde9-4acc-b5ca-f6531a8ecb4a',
value: 'MEETING',
label: 'Meeting',
position: 2,
color: 'sky',
},
{
id: '20202020-696e-4f6b-91bc-f413e9b2f654',
value: 'PROPOSAL',
label: 'Proposal',
position: 3,
color: 'turquoise',
},
{
id: '20202020-0bb5-4a6f-a8b2-774bbad21104',
value: 'CUSTOMER',
label: 'Customer',
position: 4,
color: 'yellow',
},
{
id: 'f3a8c2d1-9e4b-4f7a-8c3d-2b1e0f9a8c7d',
value: 'DONE',
label: 'Done',
position: 5,
color: 'green',
},
{
id: 'e7d6c5b4-a3f2-4e1d-9c0b-8a7f6e5d4c3b',
value: 'DEAD',
label: 'Dead',
position: 6,
color: 'gray',
},
] as const;
export type OpportunityStageValue =
(typeof OPPORTUNITY_STAGE_OPTIONS)[number]['value'];
@@ -0,0 +1,63 @@
/** Partner object field universal identifiers — single source for views and roles. */
export const PARTNER_NAME_FIELD_UNIVERSAL_IDENTIFIER =
'a0000001-0000-4000-8000-000000000001';
export const PARTNER_VALIDATION_STAGE_FIELD_UNIVERSAL_IDENTIFIER =
'2ca9856f-f54a-4326-9ff3-668fd7da0b50';
export const PARTNER_AVAILABILITY_FIELD_UNIVERSAL_IDENTIFIER =
'a0000004-0000-4000-8000-000000000004';
export const PARTNER_REGION_FIELD_UNIVERSAL_IDENTIFIER =
'560503de-6330-4c1d-af97-a8dee125f2ad';
export const PARTNER_TIER_FIELD_UNIVERSAL_IDENTIFIER =
'd4fa6461-37b6-49ee-9181-dd482e74a70b';
export const PARTNER_PROFILE_PICTURE_FILE_FIELD_UNIVERSAL_IDENTIFIER =
'076b81f2-2398-4ece-a352-d7a6f6a89cae';
export const PARTNER_PROFILE_PICTURE_LEGACY_FIELD_UNIVERSAL_IDENTIFIER =
'40d730e3-2785-45c8-aa5f-cc724b1b08e0';
export const PARTNER_INTRODUCTION_FIELD_UNIVERSAL_IDENTIFIER =
'a0000009-0000-4000-8000-000000000009';
export const PARTNER_SCOPE_FIELD_UNIVERSAL_IDENTIFIER =
'500021ad-ca42-4fd3-8727-392dd26b722a';
export const PARTNER_SKILLS_FIELD_UNIVERSAL_IDENTIFIER =
'6f260cc0-a860-41e6-ad40-a2ef32ecffbe';
export const PARTNER_DEPLOYMENT_EXPERTISE_FIELD_UNIVERSAL_IDENTIFIER =
'a0000005-0000-4000-8000-000000000005';
export const PARTNER_LANGUAGES_SPOKEN_FIELD_UNIVERSAL_IDENTIFIER =
'a0000007-0000-4000-8000-000000000007';
export const PARTNER_TYPE_OF_TEAM_FIELD_UNIVERSAL_IDENTIFIER =
'a451e557-a488-470a-8b35-6f9b8cfb1a10';
export const PARTNER_COUNTRY_FIELD_UNIVERSAL_IDENTIFIER =
'a77d7fa6-c398-47db-af0f-036a5c719f20';
export const PARTNER_CITY_FIELD_UNIVERSAL_IDENTIFIER =
'0a1ce916-4df5-469a-b793-30f19e45b38d';
export const PARTNER_HOURLY_RATE_FIELD_UNIVERSAL_IDENTIFIER =
'6a095709-7620-495f-b6e0-790743e412d5';
export const PARTNER_PROJECT_BUDGET_MIN_FIELD_UNIVERSAL_IDENTIFIER =
'243e9808-c070-4163-8603-ded12b03923c';
export const PARTNER_LINKEDIN_FIELD_UNIVERSAL_IDENTIFIER =
'640bbf33-45d7-4174-a862-dbe611ab8d1a';
export const PARTNER_WEBSITE_FIELD_UNIVERSAL_IDENTIFIER =
'111eb60a-6e5b-4d0f-ac0d-31e7e0ddff97';
export const PARTNER_CALENDAR_LINK_FIELD_UNIVERSAL_IDENTIFIER =
'a0000008-0000-4000-8000-000000000008';
export const PARTNER_CREATED_AT_FIELD_UNIVERSAL_IDENTIFIER =
'421cbcea-4608-534b-9a3e-0454bdb3123a';
@@ -5,7 +5,7 @@ import { PARTNERS_PER_STAGE_VIEW_UNIVERSAL_IDENTIFIER } from 'src/views/partners
export default defineNavigationMenuItem({
universalIdentifier: 'fa1d850b-358c-45a4-a0af-a2fb4c06e129',
type: NavigationMenuItemType.VIEW,
icon: 'IconColumns',
icon: 'IconTable',
position: 1,
folderUniversalIdentifier: '857be3b5-82c6-45f7-b546-e20a8a97be8d',
viewUniversalIdentifier: PARTNERS_PER_STAGE_VIEW_UNIVERSAL_IDENTIFIER,
@@ -5,6 +5,7 @@ import {
defineView,
} from 'twenty-sdk/define';
import { OPPORTUNITY_STAGE_FIELD_UNIVERSAL_IDENTIFIER } from 'src/constants/opportunity-stage-options';
import { OPPORTUNITY_IS_LISTED_FIELD_ID } from 'src/fields/opportunity-is-listed.field';
import { PARTNER_ON_OPPORTUNITY_FIELD_ID } from 'src/fields/partner-on-opportunity.field';
import { APPLICATIONS_ON_OPPORTUNITY_FIELD_ID } from 'src/objects/application.object';
@@ -12,9 +13,7 @@ import { APPLICATIONS_ON_OPPORTUNITY_FIELD_ID } from 'src/objects/application.ob
export const DEALS_BOARD_VIEW_UNIVERSAL_IDENTIFIER =
'39c3ffbc-e91a-46b9-a9c6-4d186d5b3dcf';
const OPPORTUNITY_STAGE_FIELD_ID =
STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.opportunity.fields.stage
.universalIdentifier;
const OPPORTUNITY_STAGE_FIELD_ID = OPPORTUNITY_STAGE_FIELD_UNIVERSAL_IDENTIFIER;
export default defineView({
universalIdentifier: DEALS_BOARD_VIEW_UNIVERSAL_IDENTIFIER,
@@ -5,13 +5,13 @@ import {
defineView,
} from 'twenty-sdk/define';
import { OPPORTUNITY_STAGE_FIELD_UNIVERSAL_IDENTIFIER } from 'src/constants/opportunity-stage-options';
import { PARTNER_ON_OPPORTUNITY_FIELD_ID } from 'src/fields/partner-on-opportunity.field';
export const MY_DEALS_VIEW_UNIVERSAL_IDENTIFIER =
'09c9b985-6dce-43ec-a6b3-5e878e1aec74';
const OPPORTUNITY_NAME_FIELD_ID = '20202020-8609-4f65-a2d9-44009eb422b5';
const OPPORTUNITY_STAGE_FIELD_ID = '20202020-6f76-477d-8551-28cd65b2b4b9';
const OPPORTUNITY_AMOUNT_FIELD_ID = '20202020-583e-4642-8533-db761d5fa82f';
// Partner-facing list of opportunities assigned to the partner (partner relation set).
@@ -26,7 +26,7 @@ export default defineView({
position: 3,
fields: [
{ universalIdentifier: '5c936e54-687a-4bf4-a995-1d90c71b337e', fieldMetadataUniversalIdentifier: OPPORTUNITY_NAME_FIELD_ID, position: 0, isVisible: true, size: 200 },
{ universalIdentifier: 'c7d850e1-5d95-4097-93a3-02142654a470', fieldMetadataUniversalIdentifier: OPPORTUNITY_STAGE_FIELD_ID, position: 1, isVisible: true, size: 160 },
{ universalIdentifier: 'c7d850e1-5d95-4097-93a3-02142654a470', fieldMetadataUniversalIdentifier: OPPORTUNITY_STAGE_FIELD_UNIVERSAL_IDENTIFIER, position: 1, isVisible: true, size: 160 },
{ universalIdentifier: 'fee39824-5859-433e-8f08-c4b9edecca0a', fieldMetadataUniversalIdentifier: OPPORTUNITY_AMOUNT_FIELD_ID, position: 2, isVisible: true, size: 140 },
],
filters: [
@@ -1,15 +1,16 @@
import { ViewType, defineView } from 'twenty-sdk/define';
import {
PARTNER_AVAILABILITY_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_CALENDAR_LINK_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_INTRODUCTION_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_NAME_FIELD_UNIVERSAL_IDENTIFIER,
} from 'src/constants/partner-field-universal-identifiers';
import { PARTNER_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
export const MY_PROFILE_VIEW_UNIVERSAL_IDENTIFIER =
'183ab293-07ce-4be6-8dfc-436a058c36e9';
const PARTNER_NAME_FIELD_ID = 'a0000001-0000-4000-8000-000000000001';
const PARTNER_AVAILABILITY_FIELD_ID = 'a0000004-0000-4000-8000-000000000004';
const PARTNER_INTRODUCTION_FIELD_ID = 'a0000009-0000-4000-8000-000000000009';
const PARTNER_CALENDAR_LINK_FIELD_ID = 'a0000008-0000-4000-8000-000000000008';
// Partner-facing profile view — the partner edits their own listing fields here.
export default defineView({
universalIdentifier: MY_PROFILE_VIEW_UNIVERSAL_IDENTIFIER,
@@ -19,9 +20,9 @@ export default defineView({
type: ViewType.TABLE,
position: 2,
fields: [
{ universalIdentifier: 'e23cbd41-dfc1-45d9-b385-e3ddd9d9e909', fieldMetadataUniversalIdentifier: PARTNER_NAME_FIELD_ID, position: 0, isVisible: true, size: 200 },
{ universalIdentifier: 'ce9249d5-914e-458a-a115-e4daa09a6f95', fieldMetadataUniversalIdentifier: PARTNER_AVAILABILITY_FIELD_ID, position: 1, isVisible: true, size: 140 },
{ universalIdentifier: '8aa8bca2-8b9d-4028-b003-ab3fe8233fd1', fieldMetadataUniversalIdentifier: PARTNER_INTRODUCTION_FIELD_ID, position: 2, isVisible: true, size: 320 },
{ universalIdentifier: '4349740f-7c1a-4f20-b64f-36d53b18eef1', fieldMetadataUniversalIdentifier: PARTNER_CALENDAR_LINK_FIELD_ID, position: 3, isVisible: true, size: 200 },
{ universalIdentifier: 'e23cbd41-dfc1-45d9-b385-e3ddd9d9e909', fieldMetadataUniversalIdentifier: PARTNER_NAME_FIELD_UNIVERSAL_IDENTIFIER, position: 0, isVisible: true, size: 200 },
{ universalIdentifier: 'ce9249d5-914e-458a-a115-e4daa09a6f95', fieldMetadataUniversalIdentifier: PARTNER_AVAILABILITY_FIELD_UNIVERSAL_IDENTIFIER, position: 1, isVisible: true, size: 140 },
{ universalIdentifier: '8aa8bca2-8b9d-4028-b003-ab3fe8233fd1', fieldMetadataUniversalIdentifier: PARTNER_INTRODUCTION_FIELD_UNIVERSAL_IDENTIFIER, position: 2, isVisible: true, size: 320 },
{ universalIdentifier: '4349740f-7c1a-4f20-b64f-36d53b18eef1', fieldMetadataUniversalIdentifier: PARTNER_CALENDAR_LINK_FIELD_UNIVERSAL_IDENTIFIER, position: 3, isVisible: true, size: 200 },
],
});
@@ -1,14 +1,15 @@
import { ViewFilterOperand, ViewType, defineView } from 'twenty-sdk/define';
import {
PARTNER_COUNTRY_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_CREATED_AT_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_INTRODUCTION_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_NAME_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_VALIDATION_STAGE_FIELD_UNIVERSAL_IDENTIFIER,
} from 'src/constants/partner-field-universal-identifiers';
import { PARTNER_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
import { PARTNER_USER_ON_PARTNER_FIELD_ID } from 'src/fields/partner-user-on-partner.field';
const PARTNER_COUNTRY_FIELD_ID = 'a77d7fa6-c398-47db-af0f-036a5c719f20';
const PARTNER_INTRODUCTION_FIELD_ID = 'a0000009-0000-4000-8000-000000000009';
const PARTNER_VALIDATION_STAGE_FIELD_ID =
'2ca9856f-f54a-4326-9ff3-668fd7da0b50';
const PARTNER_CREATED_AT_FIELD_ID = '421cbcea-4608-534b-9a3e-0454bdb3123a';
export const PARTNER_APPLICATIONS_VIEW_UNIVERSAL_IDENTIFIER =
'8d8fc77b-77df-4eeb-9e0c-6409efd30a9c';
@@ -23,27 +24,27 @@ export default defineView({
fields: [
{
universalIdentifier: 'cc7286fd-b37a-467a-a21a-47140f910137',
fieldMetadataUniversalIdentifier: 'a0000001-0000-4000-8000-000000000001',
fieldMetadataUniversalIdentifier: PARTNER_NAME_FIELD_UNIVERSAL_IDENTIFIER,
position: 0,
isVisible: true,
size: 200,
},
{
universalIdentifier: 'c145da29-b040-4070-a726-562460b315c3',
fieldMetadataUniversalIdentifier: PARTNER_COUNTRY_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_COUNTRY_FIELD_UNIVERSAL_IDENTIFIER,
position: 1,
isVisible: true,
},
{
universalIdentifier: '2d198c8a-0199-4b9f-ae07-255172ab6e7e',
fieldMetadataUniversalIdentifier: PARTNER_INTRODUCTION_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_INTRODUCTION_FIELD_UNIVERSAL_IDENTIFIER,
position: 2,
isVisible: true,
size: 280,
},
{
universalIdentifier: '835c9a7e-72ec-46c5-8d90-39a02998f561',
fieldMetadataUniversalIdentifier: PARTNER_CREATED_AT_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_CREATED_AT_FIELD_UNIVERSAL_IDENTIFIER,
position: 3,
isVisible: true,
size: 180,
@@ -59,7 +60,7 @@ export default defineView({
filters: [
{
universalIdentifier: 'a1ef0bcd-6f2c-44fc-ab3d-11df2523a952',
fieldMetadataUniversalIdentifier: PARTNER_VALIDATION_STAGE_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_VALIDATION_STAGE_FIELD_UNIVERSAL_IDENTIFIER,
operand: ViewFilterOperand.IS,
value: ['APPLICATION'],
},
@@ -1,36 +1,31 @@
import { ViewType, defineView } from 'twenty-sdk/define';
import {
PARTNER_AVAILABILITY_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_CALENDAR_LINK_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_CITY_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_COUNTRY_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_DEPLOYMENT_EXPERTISE_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_HOURLY_RATE_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_INTRODUCTION_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_LANGUAGES_SPOKEN_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_LINKEDIN_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_NAME_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_PROFILE_PICTURE_FILE_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_PROFILE_PICTURE_LEGACY_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_PROJECT_BUDGET_MIN_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_REGION_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_SCOPE_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_SKILLS_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_TIER_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_TYPE_OF_TEAM_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_VALIDATION_STAGE_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_WEBSITE_FIELD_UNIVERSAL_IDENTIFIER,
} from 'src/constants/partner-field-universal-identifiers';
import { PARTNER_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
import { PARTNER_COMPANY_FIELD_ID } from 'src/fields/partner-company.field';
import { PARTNER_USER_ON_PARTNER_FIELD_ID } from 'src/fields/partner-user-on-partner.field';
const PARTNER_NAME_FIELD_ID = 'a0000001-0000-4000-8000-000000000001';
const PARTNER_VALIDATION_STAGE_FIELD_ID =
'2ca9856f-f54a-4326-9ff3-668fd7da0b50';
const PARTNER_AVAILABILITY_FIELD_ID = 'a0000004-0000-4000-8000-000000000004';
const PARTNER_REGION_FIELD_ID = '560503de-6330-4c1d-af97-a8dee125f2ad';
const PARTNER_TIER_FIELD_ID = 'd4fa6461-37b6-49ee-9181-dd482e74a70b';
const PARTNER_PROFILE_PICTURE_FILE_FIELD_ID =
'076b81f2-2398-4ece-a352-d7a6f6a89cae';
const PARTNER_PROFILE_PICTURE_LEGACY_FIELD_ID =
'40d730e3-2785-45c8-aa5f-cc724b1b08e0';
const PARTNER_INTRODUCTION_FIELD_ID = 'a0000009-0000-4000-8000-000000000009';
const PARTNER_SCOPE_FIELD_ID = '500021ad-ca42-4fd3-8727-392dd26b722a';
const PARTNER_SKILLS_FIELD_ID = '6f260cc0-a860-41e6-ad40-a2ef32ecffbe';
const PARTNER_DEPLOYMENT_EXPERTISE_FIELD_ID =
'a0000005-0000-4000-8000-000000000005';
const PARTNER_LANGUAGES_SPOKEN_FIELD_ID =
'a0000007-0000-4000-8000-000000000007';
const PARTNER_TYPE_OF_TEAM_FIELD_ID = 'a451e557-a488-470a-8b35-6f9b8cfb1a10';
const PARTNER_COUNTRY_FIELD_ID = 'a77d7fa6-c398-47db-af0f-036a5c719f20';
const PARTNER_CITY_FIELD_ID = '0a1ce916-4df5-469a-b793-30f19e45b38d';
const PARTNER_HOURLY_RATE_FIELD_ID = '6a095709-7620-495f-b6e0-790743e412d5';
const PARTNER_PROJECT_BUDGET_MIN_FIELD_ID =
'243e9808-c070-4163-8603-ded12b03923c';
const PARTNER_LINKEDIN_FIELD_ID = '640bbf33-45d7-4174-a862-dbe611ab8d1a';
const PARTNER_WEBSITE_FIELD_ID = '111eb60a-6e5b-4d0f-ac0d-31e7e0ddff97';
const PARTNER_CALENDAR_LINK_FIELD_ID = 'a0000008-0000-4000-8000-000000000008';
export const PARTNER_RECORD_PAGE_FIELDS_VIEW_ID =
'a10bf4de-0770-4bee-ae04-1ae97aa18254';
@@ -47,121 +42,121 @@ export default defineView({
fields: [
{
universalIdentifier: '1077c424-bbb4-44cd-afec-7170d961574e',
fieldMetadataUniversalIdentifier: PARTNER_NAME_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_NAME_FIELD_UNIVERSAL_IDENTIFIER,
position: 0,
isVisible: true,
},
{
universalIdentifier: 'c473b085-a043-48e3-8f30-2936667ae93b',
fieldMetadataUniversalIdentifier: PARTNER_PROFILE_PICTURE_FILE_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_PROFILE_PICTURE_FILE_FIELD_UNIVERSAL_IDENTIFIER,
position: 1,
isVisible: true,
},
{
universalIdentifier: '94bc6866-9a59-442d-9766-e0433420d61a',
fieldMetadataUniversalIdentifier: PARTNER_PROFILE_PICTURE_LEGACY_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_PROFILE_PICTURE_LEGACY_FIELD_UNIVERSAL_IDENTIFIER,
position: 2,
isVisible: true,
},
{
universalIdentifier: 'e82ab8fa-8d78-4ef4-97f6-5456c9df30b4',
fieldMetadataUniversalIdentifier: PARTNER_INTRODUCTION_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_INTRODUCTION_FIELD_UNIVERSAL_IDENTIFIER,
position: 3,
isVisible: true,
},
{
universalIdentifier: 'd61ac88b-139a-417d-8767-1db77a44d1a5',
fieldMetadataUniversalIdentifier: PARTNER_AVAILABILITY_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_AVAILABILITY_FIELD_UNIVERSAL_IDENTIFIER,
position: 4,
isVisible: true,
},
{
universalIdentifier: '2304f4b9-4faf-4813-8ef7-fb7697d64a92',
fieldMetadataUniversalIdentifier: PARTNER_SCOPE_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_SCOPE_FIELD_UNIVERSAL_IDENTIFIER,
position: 5,
isVisible: true,
},
{
universalIdentifier: 'a0c47e12-6435-458a-b608-621bcee57474',
fieldMetadataUniversalIdentifier: PARTNER_SKILLS_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_SKILLS_FIELD_UNIVERSAL_IDENTIFIER,
position: 6,
isVisible: true,
},
{
universalIdentifier: 'cbd9d84c-3d71-495c-b412-08c77f2c124c',
fieldMetadataUniversalIdentifier: PARTNER_DEPLOYMENT_EXPERTISE_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_DEPLOYMENT_EXPERTISE_FIELD_UNIVERSAL_IDENTIFIER,
position: 7,
isVisible: true,
},
{
universalIdentifier: '42521613-4eeb-4a00-9a25-1d9de793d3c0',
fieldMetadataUniversalIdentifier: PARTNER_LANGUAGES_SPOKEN_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_LANGUAGES_SPOKEN_FIELD_UNIVERSAL_IDENTIFIER,
position: 8,
isVisible: true,
},
{
universalIdentifier: '2d595d67-8317-4c67-aeec-fe6e030e4830',
fieldMetadataUniversalIdentifier: PARTNER_TYPE_OF_TEAM_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_TYPE_OF_TEAM_FIELD_UNIVERSAL_IDENTIFIER,
position: 9,
isVisible: true,
},
{
universalIdentifier: 'a85dc9bc-a5f5-446e-a36c-492f1b6c0035',
fieldMetadataUniversalIdentifier: PARTNER_REGION_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_REGION_FIELD_UNIVERSAL_IDENTIFIER,
position: 10,
isVisible: true,
},
{
universalIdentifier: '90d11276-1666-4c36-9055-00c4680c3168',
fieldMetadataUniversalIdentifier: PARTNER_COUNTRY_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_COUNTRY_FIELD_UNIVERSAL_IDENTIFIER,
position: 11,
isVisible: true,
},
{
universalIdentifier: '23f76380-3532-4e84-9115-55d395d6646b',
fieldMetadataUniversalIdentifier: PARTNER_CITY_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_CITY_FIELD_UNIVERSAL_IDENTIFIER,
position: 12,
isVisible: true,
},
{
universalIdentifier: 'cf5e9649-a3e9-4b3f-b746-e701e3db7169',
fieldMetadataUniversalIdentifier: PARTNER_HOURLY_RATE_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_HOURLY_RATE_FIELD_UNIVERSAL_IDENTIFIER,
position: 13,
isVisible: true,
},
{
universalIdentifier: '388ae22b-956c-4e5a-8b78-6f8cb0105c1a',
fieldMetadataUniversalIdentifier: PARTNER_PROJECT_BUDGET_MIN_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_PROJECT_BUDGET_MIN_FIELD_UNIVERSAL_IDENTIFIER,
position: 14,
isVisible: true,
},
{
universalIdentifier: '5c8727a3-6e4b-41c7-adf9-530ab6599bf9',
fieldMetadataUniversalIdentifier: PARTNER_LINKEDIN_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_LINKEDIN_FIELD_UNIVERSAL_IDENTIFIER,
position: 15,
isVisible: true,
},
{
universalIdentifier: 'a6ef3c3b-103b-41b7-ba85-9d93a9af3296',
fieldMetadataUniversalIdentifier: PARTNER_WEBSITE_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_WEBSITE_FIELD_UNIVERSAL_IDENTIFIER,
position: 16,
isVisible: true,
},
{
universalIdentifier: '4bc68141-963f-4e42-8aa4-c081afc613c7',
fieldMetadataUniversalIdentifier: PARTNER_CALENDAR_LINK_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_CALENDAR_LINK_FIELD_UNIVERSAL_IDENTIFIER,
position: 17,
isVisible: true,
},
{
universalIdentifier: '3487e2ae-0feb-41c4-ad0c-f94dff435015',
fieldMetadataUniversalIdentifier: PARTNER_VALIDATION_STAGE_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_VALIDATION_STAGE_FIELD_UNIVERSAL_IDENTIFIER,
position: 18,
isVisible: true,
},
{
universalIdentifier: '971c79e6-381e-4346-86a4-7119de4824be',
fieldMetadataUniversalIdentifier: PARTNER_TIER_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_TIER_FIELD_UNIVERSAL_IDENTIFIER,
position: 19,
isVisible: true,
},
@@ -6,13 +6,14 @@ import {
} from 'twenty-sdk/define';
import { PARTNER_COUNTRY_VIEW_GROUPS } from 'src/constants/partner-country-view-groups';
import {
PARTNER_COUNTRY_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_NAME_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_REGION_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_VALIDATION_STAGE_FIELD_UNIVERSAL_IDENTIFIER,
} from 'src/constants/partner-field-universal-identifiers';
import { PARTNER_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
const PARTNER_COUNTRY_FIELD_ID = 'a77d7fa6-c398-47db-af0f-036a5c719f20';
const PARTNER_REGION_FIELD_ID = '560503de-6330-4c1d-af97-a8dee125f2ad';
const PARTNER_VALIDATION_STAGE_FIELD_ID =
'2ca9856f-f54a-4326-9ff3-668fd7da0b50';
export const PARTNERS_PER_COUNTRY_VIEW_UNIVERSAL_IDENTIFIER =
'35ef1b2f-f501-459e-a0e8-2f3d071f002d';
@@ -23,36 +24,37 @@ export default defineView({
objectUniversalIdentifier: PARTNER_OBJECT_UNIVERSAL_IDENTIFIER,
type: ViewType.TABLE,
position: 1,
mainGroupByFieldMetadataUniversalIdentifier: PARTNER_COUNTRY_FIELD_ID,
mainGroupByFieldMetadataUniversalIdentifier:
PARTNER_COUNTRY_FIELD_UNIVERSAL_IDENTIFIER,
kanbanAggregateOperation: AggregateOperations.COUNT,
kanbanAggregateOperationFieldMetadataUniversalIdentifier:
'a0000001-0000-4000-8000-000000000001',
PARTNER_NAME_FIELD_UNIVERSAL_IDENTIFIER,
shouldHideEmptyGroups: true,
groups: [...PARTNER_COUNTRY_VIEW_GROUPS],
fields: [
{
universalIdentifier: '7ba5125f-57ec-41c6-813e-d8d8e59cfe94',
fieldMetadataUniversalIdentifier: 'a0000001-0000-4000-8000-000000000001',
fieldMetadataUniversalIdentifier: PARTNER_NAME_FIELD_UNIVERSAL_IDENTIFIER,
position: 0,
isVisible: true,
size: 200,
},
{
universalIdentifier: '938649bf-bfd5-4a97-a318-e76dbcc217bc',
fieldMetadataUniversalIdentifier: PARTNER_COUNTRY_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_COUNTRY_FIELD_UNIVERSAL_IDENTIFIER,
position: 1,
isVisible: true,
},
{
universalIdentifier: '11680e09-fc3f-46fd-a36a-dc84afc2d0f6',
fieldMetadataUniversalIdentifier: PARTNER_REGION_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_REGION_FIELD_UNIVERSAL_IDENTIFIER,
position: 2,
isVisible: true,
size: 200,
},
{
universalIdentifier: '006255c0-aa2c-4228-b55f-9807b91d9bc1',
fieldMetadataUniversalIdentifier: PARTNER_VALIDATION_STAGE_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_VALIDATION_STAGE_FIELD_UNIVERSAL_IDENTIFIER,
position: 3,
isVisible: true,
},
@@ -60,7 +62,7 @@ export default defineView({
sorts: [
{
universalIdentifier: 'b4ba64d8-6279-49a2-a137-3b1e4f710a82',
fieldMetadataUniversalIdentifier: PARTNER_COUNTRY_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_COUNTRY_FIELD_UNIVERSAL_IDENTIFIER,
direction: ViewSortDirection.ASC,
},
],
@@ -1,53 +1,56 @@
import { AggregateOperations, ViewType, defineView } from 'twenty-sdk/define';
import {
PARTNER_COUNTRY_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_NAME_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_SCOPE_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_TIER_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_VALIDATION_STAGE_FIELD_UNIVERSAL_IDENTIFIER,
} from 'src/constants/partner-field-universal-identifiers';
import { PARTNER_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
const PARTNER_VALIDATION_STAGE_FIELD_ID =
'2ca9856f-f54a-4326-9ff3-668fd7da0b50';
const PARTNER_TIER_FIELD_ID = 'd4fa6461-37b6-49ee-9181-dd482e74a70b';
const PARTNER_AVAILABILITY_FIELD_ID = 'a0000004-0000-4000-8000-000000000004';
export const PARTNERS_PER_STAGE_VIEW_UNIVERSAL_IDENTIFIER =
'6aee3d5a-563b-4106-8837-5b4b1d67f472';
'f3d411ce-eb58-4fab-b7de-c3a6d083855f';
export default defineView({
universalIdentifier: PARTNERS_PER_STAGE_VIEW_UNIVERSAL_IDENTIFIER,
name: 'Partners per Stage',
icon: 'IconColumns',
icon: 'IconTable',
objectUniversalIdentifier: PARTNER_OBJECT_UNIVERSAL_IDENTIFIER,
type: ViewType.KANBAN,
type: ViewType.TABLE,
position: 0,
mainGroupByFieldMetadataUniversalIdentifier: PARTNER_VALIDATION_STAGE_FIELD_ID,
mainGroupByFieldMetadataUniversalIdentifier:
PARTNER_VALIDATION_STAGE_FIELD_UNIVERSAL_IDENTIFIER,
kanbanAggregateOperation: AggregateOperations.COUNT,
kanbanAggregateOperationFieldMetadataUniversalIdentifier:
'a0000001-0000-4000-8000-000000000001',
PARTNER_NAME_FIELD_UNIVERSAL_IDENTIFIER,
groups: [
{
universalIdentifier: '24298244-4ce6-435d-91a4-d32d3f2fa6ef',
universalIdentifier: 'c914c1ae-b4b8-43ac-97b2-9f2781f81f36',
fieldValue: 'APPLICATION',
position: 0,
isVisible: true,
},
{
universalIdentifier: 'ab1dad6a-d540-4717-8817-9929cce5c4d7',
universalIdentifier: '4e9ba1e5-dd20-4d09-9843-f8a8216ec0b8',
fieldValue: 'POTENTIAL',
position: 1,
isVisible: true,
},
{
universalIdentifier: 'df9c9696-fd2a-4d58-a335-10b7596e12ba',
universalIdentifier: '21271ddf-0325-4ef0-adcc-6ea4da2929be',
fieldValue: 'VALIDATED',
position: 2,
isVisible: true,
},
{
universalIdentifier: '3a23f780-08d9-4930-87a0-a01eefe4f85f',
universalIdentifier: '55f47258-a19e-49c7-84cc-0ae7f14dac09',
fieldValue: 'FORMER',
position: 3,
isVisible: true,
},
{
universalIdentifier: '50d725e5-56ce-4769-8487-05fedd9bf8bb',
universalIdentifier: '1f32f40a-6ca5-4a70-9e47-e9051fdf2cde',
fieldValue: 'REJECTED',
position: 4,
isVisible: true,
@@ -55,29 +58,30 @@ export default defineView({
],
fields: [
{
universalIdentifier: 'c26f881e-f5db-4c8d-ab2a-f69b7e452459',
fieldMetadataUniversalIdentifier: 'a0000001-0000-4000-8000-000000000001',
universalIdentifier: '98c2a300-72e6-4c97-9177-ddb27476b279',
fieldMetadataUniversalIdentifier: PARTNER_NAME_FIELD_UNIVERSAL_IDENTIFIER,
position: 0,
isVisible: true,
size: 200,
},
{
universalIdentifier: 'ce5dcced-f090-4d57-a6d9-0de0cfd08e23',
fieldMetadataUniversalIdentifier: PARTNER_TIER_FIELD_ID,
universalIdentifier: 'f24e637f-9f9c-4012-8a8d-6cf503bf7674',
fieldMetadataUniversalIdentifier: PARTNER_COUNTRY_FIELD_UNIVERSAL_IDENTIFIER,
position: 1,
isVisible: true,
},
{
universalIdentifier: '3719349b-e428-470e-a5c0-5f32e9a5e9f2',
fieldMetadataUniversalIdentifier: PARTNER_AVAILABILITY_FIELD_ID,
universalIdentifier: '1009cf66-d3e4-43d1-9041-8c3966ecbdfe',
fieldMetadataUniversalIdentifier: PARTNER_SCOPE_FIELD_UNIVERSAL_IDENTIFIER,
position: 2,
isVisible: true,
size: 200,
},
{
universalIdentifier: 'f748f9a4-bfc4-42da-ae08-8c8e1412bdbf',
fieldMetadataUniversalIdentifier: PARTNER_VALIDATION_STAGE_FIELD_ID,
universalIdentifier: 'ff01c4e3-b5c6-4832-90eb-ad05d8276e60',
fieldMetadataUniversalIdentifier: PARTNER_TIER_FIELD_UNIVERSAL_IDENTIFIER,
position: 3,
isVisible: false,
isVisible: true,
},
],
});
@@ -1,14 +1,15 @@
import { ViewFilterOperand, ViewType, defineView } from 'twenty-sdk/define';
import {
PARTNER_AVAILABILITY_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_NAME_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_REGION_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_TIER_FIELD_UNIVERSAL_IDENTIFIER,
PARTNER_VALIDATION_STAGE_FIELD_UNIVERSAL_IDENTIFIER,
} from 'src/constants/partner-field-universal-identifiers';
import { PARTNER_OBJECT_UNIVERSAL_IDENTIFIER } from 'src/constants/universal-identifiers';
import { PARTNER_USER_ON_PARTNER_FIELD_ID } from 'src/fields/partner-user-on-partner.field';
const PARTNER_TIER_FIELD_ID = 'd4fa6461-37b6-49ee-9181-dd482e74a70b';
const PARTNER_AVAILABILITY_FIELD_ID = 'a0000004-0000-4000-8000-000000000004';
const PARTNER_REGION_FIELD_ID = '560503de-6330-4c1d-af97-a8dee125f2ad';
const PARTNER_VALIDATION_STAGE_FIELD_ID =
'2ca9856f-f54a-4326-9ff3-668fd7da0b50';
// Reuses the retired all-partners view id so the 0.5.x→1.0.0 sync updates the Partner
// object's existing view in place instead of deleting it (Twenty blocks deleting an object's only view).
export const PARTNERS_VALIDATED_VIEW_UNIVERSAL_IDENTIFIER =
@@ -25,26 +26,26 @@ export default defineView({
{
// Reuses all-partners' label-identifier viewField id (update in place; its deletion is blocked).
universalIdentifier: '21afcc69-09c5-42eb-a609-26c062de3bd3',
fieldMetadataUniversalIdentifier: 'a0000001-0000-4000-8000-000000000001',
fieldMetadataUniversalIdentifier: PARTNER_NAME_FIELD_UNIVERSAL_IDENTIFIER,
position: 0,
isVisible: true,
size: 200,
},
{
universalIdentifier: 'e41daafb-d157-4730-ae5d-a0305ac12e0e',
fieldMetadataUniversalIdentifier: PARTNER_TIER_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_TIER_FIELD_UNIVERSAL_IDENTIFIER,
position: 1,
isVisible: true,
},
{
universalIdentifier: '60ab0089-7353-4b34-b1d1-747c1e817267',
fieldMetadataUniversalIdentifier: PARTNER_AVAILABILITY_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_AVAILABILITY_FIELD_UNIVERSAL_IDENTIFIER,
position: 2,
isVisible: true,
},
{
universalIdentifier: '0173bc1a-4884-4b58-b12d-77afa1fb1fe1',
fieldMetadataUniversalIdentifier: PARTNER_REGION_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_REGION_FIELD_UNIVERSAL_IDENTIFIER,
position: 3,
isVisible: true,
size: 200,
@@ -60,7 +61,7 @@ export default defineView({
filters: [
{
universalIdentifier: 'da4ad9b9-57b6-4784-a68b-56426dee3761',
fieldMetadataUniversalIdentifier: PARTNER_VALIDATION_STAGE_FIELD_ID,
fieldMetadataUniversalIdentifier: PARTNER_VALIDATION_STAGE_FIELD_UNIVERSAL_IDENTIFIER,
operand: ViewFilterOperand.IS,
value: ['VALIDATED'],
},