repzo 1.0.289 → 1.0.290

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/oas/rep.yaml CHANGED
@@ -106,6 +106,13 @@ paths:
106
106
  items:
107
107
  type: string
108
108
  - type: string
109
+ assigned_geo_zones:
110
+ description: Filter by assigned geo-zone `_id`s.
111
+ oneOf:
112
+ - type: array
113
+ items:
114
+ type: string
115
+ - type: string
109
116
  lines:
110
117
  oneOf:
111
118
  - type: array
@@ -164,6 +171,7 @@ paths:
164
171
  "cover_photo",
165
172
  "assigned_plan",
166
173
  "assigned_retail_execution_templates",
174
+ "assigned_geo_zones",
167
175
  "warehouse",
168
176
  ]
169
177
  withProductLines:
@@ -285,6 +293,10 @@ paths:
285
293
  type: boolean
286
294
  "permissions.rep_can_create_skip_geofence_at_visit_end_approval_request":
287
295
  type: boolean
296
+ "permissions.rep_can_start_visit_out_of_geofence":
297
+ type: boolean
298
+ "permissions.rep_can_create_approval_request_to_start_visit_out_of_geofence":
299
+ type: boolean
288
300
  "permissions.rep_can_create_credit_invoice_for_cash_client":
289
301
  type: boolean
290
302
  "permissions.rep_can_view_client_credit_limit":
@@ -672,6 +684,12 @@ components:
672
684
  rep_can_create_skip_geofence_at_visit_end_approval_request:
673
685
  type: boolean
674
686
  description: Can rep create skip geofence at visit end approval request
687
+ rep_can_start_visit_out_of_geofence:
688
+ type: boolean
689
+ description: Can rep start a visit while outside their geofence / geo zone
690
+ rep_can_create_approval_request_to_start_visit_out_of_geofence:
691
+ type: boolean
692
+ description: Can rep create an approval request to start a visit while out of geofence
675
693
  rep_can_create_credit_invoice_for_cash_client:
676
694
  type: boolean
677
695
  description: Can rep create credit invoice for cash client
@@ -785,6 +803,11 @@ components:
785
803
  items:
786
804
  type: string
787
805
  description: Assigned targets
806
+ assigned_geo_zones:
807
+ type: array
808
+ items:
809
+ type: string
810
+ description: "`_id`s of the geo zones assigned to this rep (ref `geo-zone`) — currently at most one."
788
811
  lines:
789
812
  type: array
790
813
  items:
@@ -1122,6 +1145,12 @@ components:
1122
1145
  rep_can_create_skip_geofence_at_visit_end_approval_request:
1123
1146
  type: boolean
1124
1147
  description: Can rep create skip geofence at visit end approval request
1148
+ rep_can_start_visit_out_of_geofence:
1149
+ type: boolean
1150
+ description: Can rep start a visit while outside their geofence / geo zone
1151
+ rep_can_create_approval_request_to_start_visit_out_of_geofence:
1152
+ type: boolean
1153
+ description: Can rep create an approval request to start a visit while out of geofence
1125
1154
  rep_can_create_credit_invoice_for_cash_client:
1126
1155
  type: boolean
1127
1156
  description: Can rep create credit invoice for cash client
@@ -1235,6 +1264,11 @@ components:
1235
1264
  items:
1236
1265
  type: string
1237
1266
  description: Assigned targets
1267
+ assigned_geo_zones:
1268
+ type: array
1269
+ items:
1270
+ type: string
1271
+ description: "`_id`s of the geo zones assigned to this rep (ref `geo-zone`) — currently at most one."
1238
1272
  lines:
1239
1273
  type: array
1240
1274
  items:
@@ -1562,6 +1596,12 @@ components:
1562
1596
  rep_can_create_skip_geofence_at_visit_end_approval_request:
1563
1597
  type: boolean
1564
1598
  description: Can rep create skip geofence at visit end approval request
1599
+ rep_can_start_visit_out_of_geofence:
1600
+ type: boolean
1601
+ description: Can rep start a visit while outside their geofence / geo zone
1602
+ rep_can_create_approval_request_to_start_visit_out_of_geofence:
1603
+ type: boolean
1604
+ description: Can rep create an approval request to start a visit while out of geofence
1565
1605
  rep_can_create_credit_invoice_for_cash_client:
1566
1606
  type: boolean
1567
1607
  description: Can rep create credit invoice for cash client
@@ -1675,6 +1715,11 @@ components:
1675
1715
  items:
1676
1716
  type: string
1677
1717
  description: Assigned targets
1718
+ assigned_geo_zones:
1719
+ type: array
1720
+ items:
1721
+ type: string
1722
+ description: "`_id`s of the geo zones assigned to this rep (ref `geo-zone`) — currently at most one."
1678
1723
  lines:
1679
1724
  type: array
1680
1725
  items:
@@ -93,6 +93,36 @@ components:
93
93
  type: string
94
94
  description:
95
95
  type: string
96
+ start_day_outside_active_zone_action:
97
+ type: string
98
+ enum: [monitor, warning, block]
99
+ default: warning
100
+ description: "Action when a rep starts their day outside their active geo zone: `monitor` (allow and record silently), `warning` (allow but warn), or `block` (prevent)."
101
+ start_visit_outside_active_zone_action:
102
+ type: string
103
+ enum: [monitor, warning, block]
104
+ default: warning
105
+ description: "Action when a rep starts a visit outside their active geo zone (same `monitor`/`warning`/`block` semantics as `start_day_outside_active_zone_action`)."
106
+ work_outside_active_zone_action:
107
+ type: string
108
+ enum: [monitor, warning, block]
109
+ default: warning
110
+ description: "Action when a rep performs work outside their active geo zone (same `monitor`/`warning`/`block` semantics as `start_day_outside_active_zone_action`)."
111
+ no_active_zone_action:
112
+ type: string
113
+ enum: [allow, block]
114
+ default: allow
115
+ description: "Behavior when a rep has no active geo zone: `allow` (work unrestricted) or `block` (prevent working)."
116
+ use_accuracy_radius_near_zone_boundary:
117
+ type: boolean
118
+ default: true
119
+ description: "When true, the device GPS accuracy radius is considered near a zone boundary — a position whose accuracy circle overlaps the zone counts as inside it."
120
+ zone_boundary_grace_minutes:
121
+ type: integer
122
+ minimum: 0
123
+ maximum: 60
124
+ default: 5
125
+ description: "Grace period in minutes around zone-boundary transitions before the configured outside-zone action is enforced (integer 0-60)."
96
126
  SettingsUpdateResult:
97
127
  type: object
98
128
  properties:
@@ -115,6 +145,36 @@ components:
115
145
  type: string
116
146
  description:
117
147
  type: string
148
+ start_day_outside_active_zone_action:
149
+ type: string
150
+ enum: [monitor, warning, block]
151
+ default: warning
152
+ description: "Action when a rep starts their day outside their active geo zone: `monitor` (allow and record silently), `warning` (allow but warn), or `block` (prevent)."
153
+ start_visit_outside_active_zone_action:
154
+ type: string
155
+ enum: [monitor, warning, block]
156
+ default: warning
157
+ description: "Action when a rep starts a visit outside their active geo zone (same `monitor`/`warning`/`block` semantics as `start_day_outside_active_zone_action`)."
158
+ work_outside_active_zone_action:
159
+ type: string
160
+ enum: [monitor, warning, block]
161
+ default: warning
162
+ description: "Action when a rep performs work outside their active geo zone (same `monitor`/`warning`/`block` semantics as `start_day_outside_active_zone_action`)."
163
+ no_active_zone_action:
164
+ type: string
165
+ enum: [allow, block]
166
+ default: allow
167
+ description: "Behavior when a rep has no active geo zone: `allow` (work unrestricted) or `block` (prevent working)."
168
+ use_accuracy_radius_near_zone_boundary:
169
+ type: boolean
170
+ default: true
171
+ description: "When true, the device GPS accuracy radius is considered near a zone boundary — a position whose accuracy circle overlaps the zone counts as inside it."
172
+ zone_boundary_grace_minutes:
173
+ type: integer
174
+ minimum: 0
175
+ maximum: 60
176
+ default: 5
177
+ description: "Grace period in minutes around zone-boundary transitions before the configured outside-zone action is enforced (integer 0-60)."
118
178
  createdAt:
119
179
  type: string
120
180
  format: date-time
@@ -2882,6 +2882,88 @@ export namespace Service {
2882
2882
  }
2883
2883
  }
2884
2884
 
2885
+ export namespace GeoZone {
2886
+ export interface Polygon {
2887
+ type: "Polygon";
2888
+ coordinates: [number, number][][];
2889
+ }
2890
+
2891
+ export interface AssignedRep {
2892
+ _id: StringId;
2893
+ name: string;
2894
+ }
2895
+
2896
+ export interface Data {
2897
+ _id: StringId;
2898
+ name: string;
2899
+ description?: string;
2900
+ polygon: Polygon;
2901
+ disabled: boolean;
2902
+ editor: AdminOrRepOrTenantOrClient;
2903
+ assigned_reps?: AssignedRep[];
2904
+ company_namespace: string[];
2905
+ createdAt: string;
2906
+ updatedAt: string;
2907
+ __v: number;
2908
+ }
2909
+
2910
+ export interface CreateBody {
2911
+ name: string;
2912
+ description?: string;
2913
+ polygon: Polygon;
2914
+ company_namespace?: string[];
2915
+ }
2916
+
2917
+ export interface UpdateBody {
2918
+ name?: string;
2919
+ description?: string;
2920
+ polygon?: Polygon;
2921
+ disabled?: boolean;
2922
+ editor?: AdminOrRepOrTenantOrClient;
2923
+ }
2924
+
2925
+ export namespace Find {
2926
+ export type Params = DefaultPaginationQueryParams & {
2927
+ _id?: StringId | StringId[];
2928
+ name?: string | string[];
2929
+ search?: string;
2930
+ disabled?: boolean;
2931
+ inject_assigned_reps?: boolean;
2932
+ from_updatedAt?: number;
2933
+ to_updatedAt?: number;
2934
+ from_createdAt?: number;
2935
+ to_createdAt?: number;
2936
+ };
2937
+ export interface Result extends DefaultPaginationResult {
2938
+ data: Data[];
2939
+ }
2940
+ }
2941
+
2942
+ export namespace Get {
2943
+ export type ID = StringId;
2944
+ export type Params = {
2945
+ inject_assigned_reps?: boolean;
2946
+ };
2947
+ export type Result = Data;
2948
+ }
2949
+
2950
+ export namespace Create {
2951
+ export type Body = CreateBody;
2952
+ export type Result = Data;
2953
+ }
2954
+
2955
+ export namespace Update {
2956
+ export type ID = StringId;
2957
+ export type Body = UpdateBody;
2958
+ export type Result = Data;
2959
+ }
2960
+
2961
+ export namespace Remove {
2962
+ export type ID = StringId;
2963
+ export type Result = Data;
2964
+ }
2965
+ }
2966
+
2885
2967
  export namespace Rep {
2886
2968
  interface RepPermissions {
2887
2969
  rep_can_print_payment_after_allowance_period?: boolean;
@@ -2974,6 +3056,8 @@ export namespace Service {
2974
3056
  rep_can_create_client_line_approval_request?: boolean;
2975
3057
  rep_can_enter_client_code_at_create_client?: boolean;
2976
3058
  rep_can_edit_client_location_at_create_client?: boolean;
3059
+ rep_can_start_visit_out_of_geofence?: boolean;
3060
+ rep_can_create_approval_request_to_start_visit_out_of_geofence?: boolean;
2977
3061
  }
2978
3062
  interface TargetResults {
2979
3063
  totalPoints: number;
@@ -3035,6 +3119,7 @@ export namespace Service {
3035
3119
  integration_meta?: { [key: string]: any };
3036
3120
  force_online_connectivity?: boolean;
3037
3121
  assigned_targets?: string[];
3122
+ assigned_geo_zones?: (string | GeoZone.Data)[];
3038
3123
  lines?: string[];
3039
3124
  targetResults?: TargetResults;
3040
3125
  previously_assigned_clients?: string[];
@@ -3092,6 +3177,7 @@ export namespace Service {
3092
3177
  integration_meta?: { [key: string]: any };
3093
3178
  force_online_connectivity?: boolean;
3094
3179
  assigned_targets?: string[];
3180
+ assigned_geo_zones?: string[] | null;
3095
3181
  lines?: string[];
3096
3182
  targetResults?: TargetResults;
3097
3183
  previously_assigned_clients?: string[];
@@ -3127,6 +3213,7 @@ export namespace Service {
3127
3213
  | "assigned_plan"
3128
3214
  | "assigned_retail_execution_templates"
3129
3215
  | "assigned_clm_presentations"
3216
+ | "assigned_geo_zones"
3130
3217
  | "warehouse";
3131
3218
 
3132
3219
  export type RepWithPopulatedKeysSchema = RepSchema & {
@@ -3145,6 +3232,7 @@ export namespace Service {
3145
3232
  Warehouse.WarehouseSchema,
3146
3233
  "_id" | "name" | "code" | "type" | "integration_meta"
3147
3234
  >;
3235
+ assigned_geo_zones?: (string | GeoZone.Data)[];
3148
3236
  };
3149
3237
 
3150
3238
  export namespace Find {
@@ -3167,6 +3255,7 @@ export namespace Service {
3167
3255
  assigned_plan?: string | string[];
3168
3256
  force_online_connectivity?: boolean;
3169
3257
  assigned_targets?: string | string[];
3258
+ assigned_geo_zones?: string | string[];
3170
3259
  lines?: string | string[];
3171
3260
  job_option?: JobOption | JobOption[];
3172
3261
  "permissions.rep_can_add_client"?: boolean;
@@ -3255,6 +3344,8 @@ export namespace Service {
3255
3344
  "permissions.rep_can_create_client_line_approval_request"?: boolean;
3256
3345
  "permissions.rep_can_enter_client_code_at_create_client"?: boolean;
3257
3346
  "permissions.rep_can_edit_client_location_at_create_client"?: boolean;
3347
+ "permissions.rep_can_start_visit_out_of_geofence"?: boolean;
3348
+ "permissions.rep_can_create_approval_request_to_start_visit_out_of_geofence"?: boolean;
3258
3349
  "permissions.rep_can_view_stock_on_transfers"?: boolean;
3259
3350
  "permissions.rep_must_invoice_items_from_cross_inventory_and_msl"?: boolean;
3260
3351
  "settings.rep_must_end_day_after"?: `${number}:${number}`;
@@ -13563,6 +13654,12 @@ export namespace Service {
13563
13654
  enable_whatsapp_mfa: boolean;
13564
13655
  enable_authenticator_mfa: boolean;
13565
13656
  minimum_accepted_mfa: number;
13657
+ start_day_outside_active_zone_action: "monitor" | "warning" | "block";
13658
+ start_visit_outside_active_zone_action: "monitor" | "warning" | "block";
13659
+ work_outside_active_zone_action: "monitor" | "warning" | "block";
13660
+ no_active_zone_action: "allow" | "block";
13661
+ use_accuracy_radius_near_zone_boundary: boolean;
13662
+ zone_boundary_grace_minutes: number;
13566
13663
  createdAt: Date;
13567
13664
  updatedAt: Date;
13568
13665
  }
@@ -13725,6 +13822,12 @@ export namespace Service {
13725
13822
  enable_whatsapp_mfa: boolean;
13726
13823
  enable_authenticator_mfa: boolean;
13727
13824
  minimum_accepted_mfa: number;
13825
+ start_day_outside_active_zone_action?: "monitor" | "warning" | "block";
13826
+ start_visit_outside_active_zone_action?: "monitor" | "warning" | "block";
13827
+ work_outside_active_zone_action?: "monitor" | "warning" | "block";
13828
+ no_active_zone_action?: "allow" | "block";
13829
+ use_accuracy_radius_near_zone_boundary?: boolean;
13830
+ zone_boundary_grace_minutes?: number;
13728
13831
  }
13729
13832
 
13730
13833
  export namespace Update {
@@ -18084,6 +18187,7 @@ export namespace Service {
18084
18187
  | "update-rep"
18085
18188
  | "update-salesmsl"
18086
18189
  | "update-settings"
18190
+ | "update-geo-zone"
18087
18191
  | "update-tags"
18088
18192
  | "update-taxes"
18089
18193
  | "update-transfer"
@@ -22454,6 +22558,112 @@ export namespace Service {
22454
22558
  }
22455
22559
  }
22456
22560
 
22561
+ export namespace BulkExport {
22562
+ export type BulkExportType =
22563
+ | "clients"
22564
+ | "products"
22565
+ | "variants"
22566
+ | "categories"
22567
+ | "subCategories"
22568
+ | "availabilityMsl"
22569
+ | "availabilityMslWithProducts"
22570
+ | "reps"
22571
+ | "mslWithVariants"
22572
+ | "jobCategories"
22573
+ | "jobs"
22574
+ | "tags"
22575
+ | "routes"
22576
+ | "routesWithClients"
22577
+ | "plans"
22578
+ | "planWithRules"
22579
+ | "targetRulesWithClients"
22580
+ | "rulesWithRoutes"
22581
+ | "targetRulesWithReps"
22582
+ | "adjustAccount"
22583
+ | "rules"
22584
+ | "warehouses"
22585
+ | "productGroups"
22586
+ | "priceListItems"
22587
+ | "measureunit"
22588
+ | "measureunitFamily"
22589
+ | "lineTarget"
22590
+ | "clientLineClassification"
22591
+ | "retailExecutionPresets"
22592
+ | "promotions"
22593
+ | "customListItems"
22594
+ | "assets"
22595
+ | "assetUnits"
22596
+ | "speciality"
22597
+ | "clientLocation"
22598
+ | "reminders"
22599
+ | "admins"
22600
+ | "companyGroup"
22601
+ | "company"
22602
+ | "variantBatch"
22603
+ | "banksList"
22604
+ | "clientUblInfo"
22605
+ | "supplier"
22606
+ | "contractInstallment"
22607
+ | "targetRule"
22608
+ | "contracts"
22609
+ | "assetPartTypes"
22610
+ | "assetParts"
22611
+ | "clientUblInfo_JO"
22612
+ | "clientUblInfo_SA"
22613
+ | "nameSpaceFreshnessWindowCodes";
22614
+
22615
+ export interface Data {
22616
+ _id: StringId;
22617
+ creator: AdminOrRepOrTenantOrClient;
22618
+ type: BulkExportType;
22619
+ status: "processing" | "success" | "fail";
22620
+ messages: any[];
22621
+ _errors: any[];
22622
+ start_time: number;
22623
+ end_time?: number;
22624
+ bucket_name?: string;
22625
+ region?: string;
22626
+ key?: string;
22627
+ link?: string;
22628
+ media?: StringId[];
22629
+ teams: string[];
22630
+ export_type: "excel" | "parquet";
22631
+ row_count?: number;
22632
+ company_namespace: string[];
22633
+ createdAt: Date;
22634
+ updatedAt: Date;
22635
+ }
22636
+
22637
+ export interface CreateBody {
22638
+ export_type?: "excel" | "parquet";
22639
+ columns?: { [key: string]: any };
22640
+ name?: string;
22641
+ creator?: AdminOrRepOrTenantOrClient;
22642
+ company_namespace?: string[];
22643
+ }
22644
+
22645
+ export namespace Find {
22646
+ export type Params = DefaultPaginationQueryParams & {
22647
+ _id?: StringId | StringId[];
22648
+ type?: BulkExportType;
22649
+ status?: Data["status"] | Data["status"][];
22650
+ export?: boolean;
22651
+ export_type?: "excel" | "parquet";
22652
+ from_updatedAt?: number;
22653
+ to_updatedAt?: number;
22654
+ };
22655
+ export interface Result extends DefaultPaginationResult {
22656
+ data: Data[];
22657
+ }
22658
+ }
22659
+
22660
+ export namespace Create {
22661
+ export type Params = { type: BulkExportType; [key: string]: any };
22662
+ export type Body = CreateBody;
22663
+ export type Result = Data;
22664
+ }
22665
+ }
22666
+
22457
22667
  export namespace DeliveryNote {
22458
22668
  interface User {
22459
22669
  _id: string;