Skip to content

Commit 797df69

Browse files
authored
Merge pull request #182 from topcoder-platform/PM-4669_additional-support-for-payment-cycles
PM-4669 - support for payment cycles engagement payments
2 parents 6f0c07a + d67d3e8 commit 797df69

3 files changed

Lines changed: 43 additions & 1 deletion

File tree

src/api/admin/admin.service.ts

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ import {
3333
TopcoderChallengeInfo,
3434
TopcoderChallengesService,
3535
} from 'src/shared/topcoder/challenges.service';
36-
import { WinningPaymentDetailsDto } from './dto/payment-details.dto';
36+
import {
37+
PaymentCycle,
38+
WinningPaymentDetailsDto,
39+
} from './dto/payment-details.dto';
3740

3841
const PAYMENT_DECIMAL_PLACES = 2;
3942
const BUDGET_LEDGER_DECIMAL_PLACES = 4;
@@ -261,6 +264,13 @@ export class AdminService {
261264
assignment.standardHoursPerWeek !== null
262265
? Number(assignment.standardHoursPerWeek)
263266
: undefined;
267+
const standardHoursPerDay =
268+
assignment?.standardHoursPerDay !== undefined &&
269+
assignment.standardHoursPerDay !== null
270+
? Number(assignment.standardHoursPerDay)
271+
: Number.isFinite(standardHoursPerWeek)
272+
? Number(((standardHoursPerWeek ?? 0) / 5).toFixed(2))
273+
: undefined;
264274
const projectId = engagement.projectId ?? engagement.project?.id;
265275
const projectName =
266276
(engagement.projectName ?? engagement.project?.name)?.trim() ?? undefined;
@@ -288,6 +298,11 @@ export class AdminService {
288298
? durationMonths
289299
: undefined,
290300
ratePerHour: assignment?.ratePerHour?.trim() ?? undefined,
301+
paymentCycle: (assignment?.paymentCycle?.trim() ||
302+
'WEEKLY') as PaymentCycle,
303+
standardHoursPerDay: Number.isFinite(standardHoursPerDay)
304+
? standardHoursPerDay
305+
: undefined,
291306
standardHoursPerWeek: Number.isFinite(standardHoursPerWeek)
292307
? standardHoursPerWeek
293308
: undefined,
@@ -1316,6 +1331,14 @@ export class AdminService {
13161331
: undefined,
13171332
durationMonths: assignmentContext.durationMonths ?? undefined,
13181333
ratePerHour: assignmentContext.ratePerHour ?? undefined,
1334+
paymentCycle: (assignmentContext.paymentCycle ??
1335+
'WEEKLY') as PaymentCycle,
1336+
standardHoursPerDay:
1337+
assignmentContext.standardHoursPerDay ??
1338+
(assignmentContext.standardHoursPerWeek !== undefined &&
1339+
assignmentContext.standardHoursPerWeek !== null
1340+
? Number((assignmentContext.standardHoursPerWeek / 5).toFixed(2))
1341+
: undefined),
13191342
standardHoursPerWeek:
13201343
assignmentContext.standardHoursPerWeek ?? undefined,
13211344
otherRemarks: assignmentContext.otherRemarks ?? undefined,

src/api/admin/dto/payment-details.dto.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { ApiPropertyOptional } from '@nestjs/swagger';
22

3+
export type PaymentCycle = 'WEEKLY' | 'FORTNIGHTLY' | 'MONTHLY';
4+
35
export class PaymentEngagementDetailsDto {
46
@ApiPropertyOptional({
57
description: 'The assignment ID associated with the payment',
@@ -49,6 +51,19 @@ export class PaymentEngagementDetailsDto {
4951
})
5052
ratePerHour?: string;
5153

54+
@ApiPropertyOptional({
55+
description: 'Assignment payment cycle',
56+
enum: ['WEEKLY', 'FORTNIGHTLY', 'MONTHLY'],
57+
example: 'WEEKLY',
58+
})
59+
paymentCycle?: PaymentCycle;
60+
61+
@ApiPropertyOptional({
62+
description: 'Assignment standard hours per day',
63+
example: 8,
64+
})
65+
standardHoursPerDay?: number;
66+
5267
@ApiPropertyOptional({
5368
description: 'Assignment standard hours per week',
5469
example: 40,

src/shared/topcoder/engagements.service.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ export interface TopcoderAssignmentContext {
1717
memberHandle: string;
1818
memberId: string;
1919
otherRemarks?: string | null;
20+
paymentCycle?: string | null;
2021
projectId: string;
2122
projectName?: string;
2223
ratePerHour?: string | null;
24+
standardHoursPerDay?: number | null;
2325
standardHoursPerWeek?: number | null;
2426
startDate?: string | null;
2527
status: string;
@@ -34,7 +36,9 @@ export interface TopcoderEngagementAssignment {
3436
memberHandle?: string | null;
3537
memberId?: string | number | null;
3638
otherRemarks?: string | null;
39+
paymentCycle?: string | null;
3740
ratePerHour?: string | null;
41+
standardHoursPerDay?: number | string | null;
3842
startDate?: string | null;
3943
standardHoursPerWeek?: number | string | null;
4044
}

0 commit comments

Comments
 (0)