@@ -109,6 +109,12 @@ class ProcurementTrackerStepResponseSchema(Schema):
109109 approval_responded_date = fields .Date (allow_none = True )
110110 reviewer_notes = fields .String (allow_none = True )
111111
112+ # OPS-1639: PRE_AWARD budget team requisition fields
113+ requisition_number = fields .String (allow_none = True )
114+ requisition_date = fields .Date (allow_none = True )
115+ requisition_approved_by = fields .Integer (allow_none = True )
116+ requisition_approved_date = fields .Date (allow_none = True )
117+
112118 # BaseModel fields
113119 display_name = fields .String (dump_only = True )
114120 created_on = fields .DateTime (dump_only = True )
@@ -184,6 +190,11 @@ def map_step_specific_fields(self, obj, **_kwargs):
184190 data ["approval_responded_by" ] = getattr (obj , "pre_award_approval_responded_by" , None )
185191 data ["approval_responded_date" ] = getattr (obj , "pre_award_approval_responded_date" , None )
186192 data ["reviewer_notes" ] = getattr (obj , "pre_award_approval_reviewer_notes" , None )
193+ # OPS-1639: Budget team requisition fields
194+ data ["requisition_number" ] = getattr (obj , "pre_award_requisition_number" , None )
195+ data ["requisition_date" ] = getattr (obj , "pre_award_requisition_date" , None )
196+ data ["requisition_approved_by" ] = getattr (obj , "pre_award_requisition_approved_by" , None )
197+ data ["requisition_approved_date" ] = getattr (obj , "pre_award_requisition_approved_date" , None )
187198
188199 return data
189200
@@ -264,6 +275,10 @@ def remove_none_values(self, data, **_kwargs):
264275 "approval_responded_by" ,
265276 "approval_responded_date" ,
266277 "reviewer_notes" ,
278+ "requisition_number" ,
279+ "requisition_date" ,
280+ "requisition_approved_by" ,
281+ "requisition_approved_date" ,
267282 }
268283 # Remove PRE_SOLICITATION-only fields
269284 data .pop ("draft_solicitation_date" , None )
@@ -324,6 +339,11 @@ class ProcurementTrackerStepPatchRequestSchema(Schema):
324339 # approval_responded_by and approval_responded_date are server-controlled - not accepted from client
325340 reviewer_notes = fields .String (required = False , allow_none = True , validate = validate .Length (max = 150 ))
326341
342+ # OPS-1639: Budget team requisition fields (user-provided only)
343+ requisition_number = fields .String (required = False , allow_none = True , validate = validate .Length (max = 100 ))
344+ requisition_date = fields .Date (required = False , allow_none = True )
345+ # requisition_approved_by and requisition_approved_date are SERVER-CONTROLLED - not accepted from client
346+
327347
328348class ProcurementTrackerStepSchema (Schema ):
329349 """Schema for procurement tracker step serialization."""
@@ -361,6 +381,12 @@ class Meta:
361381 approval_responded_date = fields .Date (allow_none = True )
362382 reviewer_notes = fields .String (allow_none = True )
363383
384+ # OPS-1639: Budget team requisition fields
385+ requisition_number = fields .String (allow_none = True )
386+ requisition_date = fields .Date (allow_none = True )
387+ requisition_approved_by = fields .Integer (allow_none = True )
388+ requisition_approved_date = fields .Date (allow_none = True )
389+
364390 @pre_dump
365391 def map_step_specific_fields (self , obj , ** _kwargs ):
366392 """
@@ -426,6 +452,11 @@ def map_step_specific_fields(self, obj, **_kwargs):
426452 data ["approval_responded_by" ] = getattr (obj , "pre_award_approval_responded_by" , None )
427453 data ["approval_responded_date" ] = getattr (obj , "pre_award_approval_responded_date" , None )
428454 data ["reviewer_notes" ] = getattr (obj , "pre_award_approval_reviewer_notes" , None )
455+ # OPS-1639: Budget team requisition fields
456+ data ["requisition_number" ] = getattr (obj , "pre_award_requisition_number" , None )
457+ data ["requisition_date" ] = getattr (obj , "pre_award_requisition_date" , None )
458+ data ["requisition_approved_by" ] = getattr (obj , "pre_award_requisition_approved_by" , None )
459+ data ["requisition_approved_date" ] = getattr (obj , "pre_award_requisition_approved_date" , None )
429460
430461 return data
431462
@@ -513,6 +544,10 @@ def remove_none_step_specific_fields(self, data, **_kwargs):
513544 "approval_responded_by" ,
514545 "approval_responded_date" ,
515546 "reviewer_notes" ,
547+ "requisition_number" ,
548+ "requisition_date" ,
549+ "requisition_approved_by" ,
550+ "requisition_approved_date" ,
516551 }
517552 preserve_keys = base_fields | pre_award_fields
518553 # Remove PRE_SOLICITATION-only fields
0 commit comments