1#![allow(clippy::new_without_default)]
3#![allow(clippy::needless_pass_by_value)]
4#![allow(clippy::too_many_arguments)]
5#![allow(unused_imports)]
6
7use fixer::message::Message;
8use fixer::fix_string::FIXString;
9use fixer::errors::MessageRejectErrorEnum;
10use fixer::session::session_id::SessionID;
11
12
13use jiff::Timestamp;
14
15use crate::field;
16use crate::tag;
17
18pub struct SettlementInstructions {
20 pub message: Message,
21}
22
23impl SettlementInstructions {
24 pub fn new(settl_inst_id: field::SettlInstIDField, settl_inst_trans_type: field::SettlInstTransTypeField, settl_inst_mode: field::SettlInstModeField, settl_inst_source: field::SettlInstSourceField, alloc_account: field::AllocAccountField, transact_time: field::TransactTimeField) -> Self {
26 let mut msg = Message::new();
27 msg.header.set_field(tag::MSG_TYPE, FIXString::from("T".to_string()));
28
29 msg.body.set_field(tag::SETTL_INST_ID, settl_inst_id.0);
30
31 msg.body.set_field(tag::SETTL_INST_TRANS_TYPE, settl_inst_trans_type.0);
32
33 msg.body.set_field(tag::SETTL_INST_MODE, settl_inst_mode.0);
34
35 msg.body.set_field(tag::SETTL_INST_SOURCE, settl_inst_source.0);
36
37 msg.body.set_field(tag::ALLOC_ACCOUNT, alloc_account.0);
38
39 msg.body.set_field(tag::TRANSACT_TIME, transact_time.0);
40
41 Self { message: msg }
42 }
43
44 pub fn from_message(msg: Message) -> Self {
46 Self { message: msg }
47 }
48
49 pub fn to_message(self) -> Message {
51 self.message
52 }
53
54
55
56
57 pub fn set_alloc_account(&mut self, v: String) {
59 self.message.body.set_field(tag::ALLOC_ACCOUNT, FIXString::from(v));
60 }
61
62 pub fn get_alloc_account(&self) -> Result<String, MessageRejectErrorEnum> {
64 let mut fld = field::AllocAccountField::new(String::new());
65 self.message.body.get_field(tag::ALLOC_ACCOUNT, &mut fld.0)?;
66 Ok(fld.value().to_string())
67 }
68
69
70 pub fn has_alloc_account(&self) -> bool {
72 self.message.body.has(tag::ALLOC_ACCOUNT)
73 }
74
75
76
77
78 pub fn set_alloc_id(&mut self, v: String) {
80 self.message.body.set_field(tag::ALLOC_ID, FIXString::from(v));
81 }
82
83 pub fn get_alloc_id(&self) -> Result<String, MessageRejectErrorEnum> {
85 let mut fld = field::AllocIDField::new(String::new());
86 self.message.body.get_field(tag::ALLOC_ID, &mut fld.0)?;
87 Ok(fld.value().to_string())
88 }
89
90
91 pub fn has_alloc_id(&self) -> bool {
93 self.message.body.has(tag::ALLOC_ID)
94 }
95
96
97
98
99 pub fn set_cash_settl_agent_acct_name(&mut self, v: String) {
101 self.message.body.set_field(tag::CASH_SETTL_AGENT_ACCT_NAME, FIXString::from(v));
102 }
103
104 pub fn get_cash_settl_agent_acct_name(&self) -> Result<String, MessageRejectErrorEnum> {
106 let mut fld = field::CashSettlAgentAcctNameField::new(String::new());
107 self.message.body.get_field(tag::CASH_SETTL_AGENT_ACCT_NAME, &mut fld.0)?;
108 Ok(fld.value().to_string())
109 }
110
111
112 pub fn has_cash_settl_agent_acct_name(&self) -> bool {
114 self.message.body.has(tag::CASH_SETTL_AGENT_ACCT_NAME)
115 }
116
117
118
119
120 pub fn set_cash_settl_agent_acct_num(&mut self, v: String) {
122 self.message.body.set_field(tag::CASH_SETTL_AGENT_ACCT_NUM, FIXString::from(v));
123 }
124
125 pub fn get_cash_settl_agent_acct_num(&self) -> Result<String, MessageRejectErrorEnum> {
127 let mut fld = field::CashSettlAgentAcctNumField::new(String::new());
128 self.message.body.get_field(tag::CASH_SETTL_AGENT_ACCT_NUM, &mut fld.0)?;
129 Ok(fld.value().to_string())
130 }
131
132
133 pub fn has_cash_settl_agent_acct_num(&self) -> bool {
135 self.message.body.has(tag::CASH_SETTL_AGENT_ACCT_NUM)
136 }
137
138
139
140
141 pub fn set_cash_settl_agent_code(&mut self, v: String) {
143 self.message.body.set_field(tag::CASH_SETTL_AGENT_CODE, FIXString::from(v));
144 }
145
146 pub fn get_cash_settl_agent_code(&self) -> Result<String, MessageRejectErrorEnum> {
148 let mut fld = field::CashSettlAgentCodeField::new(String::new());
149 self.message.body.get_field(tag::CASH_SETTL_AGENT_CODE, &mut fld.0)?;
150 Ok(fld.value().to_string())
151 }
152
153
154 pub fn has_cash_settl_agent_code(&self) -> bool {
156 self.message.body.has(tag::CASH_SETTL_AGENT_CODE)
157 }
158
159
160
161
162 pub fn set_cash_settl_agent_contact_name(&mut self, v: String) {
164 self.message.body.set_field(tag::CASH_SETTL_AGENT_CONTACT_NAME, FIXString::from(v));
165 }
166
167 pub fn get_cash_settl_agent_contact_name(&self) -> Result<String, MessageRejectErrorEnum> {
169 let mut fld = field::CashSettlAgentContactNameField::new(String::new());
170 self.message.body.get_field(tag::CASH_SETTL_AGENT_CONTACT_NAME, &mut fld.0)?;
171 Ok(fld.value().to_string())
172 }
173
174
175 pub fn has_cash_settl_agent_contact_name(&self) -> bool {
177 self.message.body.has(tag::CASH_SETTL_AGENT_CONTACT_NAME)
178 }
179
180
181
182
183 pub fn set_cash_settl_agent_contact_phone(&mut self, v: String) {
185 self.message.body.set_field(tag::CASH_SETTL_AGENT_CONTACT_PHONE, FIXString::from(v));
186 }
187
188 pub fn get_cash_settl_agent_contact_phone(&self) -> Result<String, MessageRejectErrorEnum> {
190 let mut fld = field::CashSettlAgentContactPhoneField::new(String::new());
191 self.message.body.get_field(tag::CASH_SETTL_AGENT_CONTACT_PHONE, &mut fld.0)?;
192 Ok(fld.value().to_string())
193 }
194
195
196 pub fn has_cash_settl_agent_contact_phone(&self) -> bool {
198 self.message.body.has(tag::CASH_SETTL_AGENT_CONTACT_PHONE)
199 }
200
201
202
203
204 pub fn set_cash_settl_agent_name(&mut self, v: String) {
206 self.message.body.set_field(tag::CASH_SETTL_AGENT_NAME, FIXString::from(v));
207 }
208
209 pub fn get_cash_settl_agent_name(&self) -> Result<String, MessageRejectErrorEnum> {
211 let mut fld = field::CashSettlAgentNameField::new(String::new());
212 self.message.body.get_field(tag::CASH_SETTL_AGENT_NAME, &mut fld.0)?;
213 Ok(fld.value().to_string())
214 }
215
216
217 pub fn has_cash_settl_agent_name(&self) -> bool {
219 self.message.body.has(tag::CASH_SETTL_AGENT_NAME)
220 }
221
222
223
224
225 pub fn set_client_id(&mut self, v: String) {
227 self.message.body.set_field(tag::CLIENT_ID, FIXString::from(v));
228 }
229
230 pub fn get_client_id(&self) -> Result<String, MessageRejectErrorEnum> {
232 let mut fld = field::ClientIDField::new(String::new());
233 self.message.body.get_field(tag::CLIENT_ID, &mut fld.0)?;
234 Ok(fld.value().to_string())
235 }
236
237
238 pub fn has_client_id(&self) -> bool {
240 self.message.body.has(tag::CLIENT_ID)
241 }
242
243
244
245
246 pub fn set_effective_time(&mut self, v: Timestamp) {
248 self.message.body.set_field(tag::EFFECTIVE_TIME, fixer::fix_utc_timestamp::FIXUTCTimestamp {
249 time: v,
250 precision: fixer::fix_utc_timestamp::TimestampPrecision::Millis,
251 });
252 }
253
254 pub fn get_effective_time(&self) -> Result<Timestamp, MessageRejectErrorEnum> {
256 let mut fld = field::EffectiveTimeField::new(Timestamp::UNIX_EPOCH);
257 self.message.body.get_field(tag::EFFECTIVE_TIME, &mut fld.0)?;
258 Ok(fld.value())
259 }
260
261
262 pub fn has_effective_time(&self) -> bool {
264 self.message.body.has(tag::EFFECTIVE_TIME)
265 }
266
267
268
269
270 pub fn set_exec_broker(&mut self, v: String) {
272 self.message.body.set_field(tag::EXEC_BROKER, FIXString::from(v));
273 }
274
275 pub fn get_exec_broker(&self) -> Result<String, MessageRejectErrorEnum> {
277 let mut fld = field::ExecBrokerField::new(String::new());
278 self.message.body.get_field(tag::EXEC_BROKER, &mut fld.0)?;
279 Ok(fld.value().to_string())
280 }
281
282
283 pub fn has_exec_broker(&self) -> bool {
285 self.message.body.has(tag::EXEC_BROKER)
286 }
287
288
289
290
291 pub fn set_last_mkt(&mut self, v: String) {
293 self.message.body.set_field(tag::LAST_MKT, FIXString::from(v));
294 }
295
296 pub fn get_last_mkt(&self) -> Result<String, MessageRejectErrorEnum> {
298 let mut fld = field::LastMktField::new(String::new());
299 self.message.body.get_field(tag::LAST_MKT, &mut fld.0)?;
300 Ok(fld.value().to_string())
301 }
302
303
304 pub fn has_last_mkt(&self) -> bool {
306 self.message.body.has(tag::LAST_MKT)
307 }
308
309
310
311
312 pub fn set_security_settl_agent_acct_name(&mut self, v: String) {
314 self.message.body.set_field(tag::SECURITY_SETTL_AGENT_ACCT_NAME, FIXString::from(v));
315 }
316
317 pub fn get_security_settl_agent_acct_name(&self) -> Result<String, MessageRejectErrorEnum> {
319 let mut fld = field::SecuritySettlAgentAcctNameField::new(String::new());
320 self.message.body.get_field(tag::SECURITY_SETTL_AGENT_ACCT_NAME, &mut fld.0)?;
321 Ok(fld.value().to_string())
322 }
323
324
325 pub fn has_security_settl_agent_acct_name(&self) -> bool {
327 self.message.body.has(tag::SECURITY_SETTL_AGENT_ACCT_NAME)
328 }
329
330
331
332
333 pub fn set_security_settl_agent_acct_num(&mut self, v: String) {
335 self.message.body.set_field(tag::SECURITY_SETTL_AGENT_ACCT_NUM, FIXString::from(v));
336 }
337
338 pub fn get_security_settl_agent_acct_num(&self) -> Result<String, MessageRejectErrorEnum> {
340 let mut fld = field::SecuritySettlAgentAcctNumField::new(String::new());
341 self.message.body.get_field(tag::SECURITY_SETTL_AGENT_ACCT_NUM, &mut fld.0)?;
342 Ok(fld.value().to_string())
343 }
344
345
346 pub fn has_security_settl_agent_acct_num(&self) -> bool {
348 self.message.body.has(tag::SECURITY_SETTL_AGENT_ACCT_NUM)
349 }
350
351
352
353
354 pub fn set_security_settl_agent_code(&mut self, v: String) {
356 self.message.body.set_field(tag::SECURITY_SETTL_AGENT_CODE, FIXString::from(v));
357 }
358
359 pub fn get_security_settl_agent_code(&self) -> Result<String, MessageRejectErrorEnum> {
361 let mut fld = field::SecuritySettlAgentCodeField::new(String::new());
362 self.message.body.get_field(tag::SECURITY_SETTL_AGENT_CODE, &mut fld.0)?;
363 Ok(fld.value().to_string())
364 }
365
366
367 pub fn has_security_settl_agent_code(&self) -> bool {
369 self.message.body.has(tag::SECURITY_SETTL_AGENT_CODE)
370 }
371
372
373
374
375 pub fn set_security_settl_agent_contact_name(&mut self, v: String) {
377 self.message.body.set_field(tag::SECURITY_SETTL_AGENT_CONTACT_NAME, FIXString::from(v));
378 }
379
380 pub fn get_security_settl_agent_contact_name(&self) -> Result<String, MessageRejectErrorEnum> {
382 let mut fld = field::SecuritySettlAgentContactNameField::new(String::new());
383 self.message.body.get_field(tag::SECURITY_SETTL_AGENT_CONTACT_NAME, &mut fld.0)?;
384 Ok(fld.value().to_string())
385 }
386
387
388 pub fn has_security_settl_agent_contact_name(&self) -> bool {
390 self.message.body.has(tag::SECURITY_SETTL_AGENT_CONTACT_NAME)
391 }
392
393
394
395
396 pub fn set_security_settl_agent_contact_phone(&mut self, v: String) {
398 self.message.body.set_field(tag::SECURITY_SETTL_AGENT_CONTACT_PHONE, FIXString::from(v));
399 }
400
401 pub fn get_security_settl_agent_contact_phone(&self) -> Result<String, MessageRejectErrorEnum> {
403 let mut fld = field::SecuritySettlAgentContactPhoneField::new(String::new());
404 self.message.body.get_field(tag::SECURITY_SETTL_AGENT_CONTACT_PHONE, &mut fld.0)?;
405 Ok(fld.value().to_string())
406 }
407
408
409 pub fn has_security_settl_agent_contact_phone(&self) -> bool {
411 self.message.body.has(tag::SECURITY_SETTL_AGENT_CONTACT_PHONE)
412 }
413
414
415
416
417 pub fn set_security_settl_agent_name(&mut self, v: String) {
419 self.message.body.set_field(tag::SECURITY_SETTL_AGENT_NAME, FIXString::from(v));
420 }
421
422 pub fn get_security_settl_agent_name(&self) -> Result<String, MessageRejectErrorEnum> {
424 let mut fld = field::SecuritySettlAgentNameField::new(String::new());
425 self.message.body.get_field(tag::SECURITY_SETTL_AGENT_NAME, &mut fld.0)?;
426 Ok(fld.value().to_string())
427 }
428
429
430 pub fn has_security_settl_agent_name(&self) -> bool {
432 self.message.body.has(tag::SECURITY_SETTL_AGENT_NAME)
433 }
434
435
436
437
438 pub fn set_security_type(&mut self, v: String) {
440 self.message.body.set_field(tag::SECURITY_TYPE, FIXString::from(v));
441 }
442
443 pub fn get_security_type(&self) -> Result<String, MessageRejectErrorEnum> {
445 let mut fld = field::SecurityTypeField::new(String::new());
446 self.message.body.get_field(tag::SECURITY_TYPE, &mut fld.0)?;
447 Ok(fld.value().to_string())
448 }
449
450
451 pub fn has_security_type(&self) -> bool {
453 self.message.body.has(tag::SECURITY_TYPE)
454 }
455
456
457
458
459 pub fn set_settl_brkr_code(&mut self, v: String) {
461 self.message.body.set_field(tag::SETTL_BRKR_CODE, FIXString::from(v));
462 }
463
464 pub fn get_settl_brkr_code(&self) -> Result<String, MessageRejectErrorEnum> {
466 let mut fld = field::SettlBrkrCodeField::new(String::new());
467 self.message.body.get_field(tag::SETTL_BRKR_CODE, &mut fld.0)?;
468 Ok(fld.value().to_string())
469 }
470
471
472 pub fn has_settl_brkr_code(&self) -> bool {
474 self.message.body.has(tag::SETTL_BRKR_CODE)
475 }
476
477
478
479
480 pub fn set_settl_delivery_type(&mut self, v: isize) {
482 self.message.body.set_field(tag::SETTL_DELIVERY_TYPE, fixer::fix_int::FIXInt::from(v));
483 }
484
485 pub fn get_settl_delivery_type(&self) -> Result<isize, MessageRejectErrorEnum> {
487 let mut fld = field::SettlDeliveryTypeField::new(0);
488 self.message.body.get_field(tag::SETTL_DELIVERY_TYPE, &mut fld.0)?;
489 Ok(fld.value())
490 }
491
492
493 pub fn has_settl_delivery_type(&self) -> bool {
495 self.message.body.has(tag::SETTL_DELIVERY_TYPE)
496 }
497
498
499
500
501 pub fn set_settl_depository_code(&mut self, v: String) {
503 self.message.body.set_field(tag::SETTL_DEPOSITORY_CODE, FIXString::from(v));
504 }
505
506 pub fn get_settl_depository_code(&self) -> Result<String, MessageRejectErrorEnum> {
508 let mut fld = field::SettlDepositoryCodeField::new(String::new());
509 self.message.body.get_field(tag::SETTL_DEPOSITORY_CODE, &mut fld.0)?;
510 Ok(fld.value().to_string())
511 }
512
513
514 pub fn has_settl_depository_code(&self) -> bool {
516 self.message.body.has(tag::SETTL_DEPOSITORY_CODE)
517 }
518
519
520
521
522 pub fn set_settl_inst_code(&mut self, v: String) {
524 self.message.body.set_field(tag::SETTL_INST_CODE, FIXString::from(v));
525 }
526
527 pub fn get_settl_inst_code(&self) -> Result<String, MessageRejectErrorEnum> {
529 let mut fld = field::SettlInstCodeField::new(String::new());
530 self.message.body.get_field(tag::SETTL_INST_CODE, &mut fld.0)?;
531 Ok(fld.value().to_string())
532 }
533
534
535 pub fn has_settl_inst_code(&self) -> bool {
537 self.message.body.has(tag::SETTL_INST_CODE)
538 }
539
540
541
542
543 pub fn set_settl_inst_id(&mut self, v: String) {
545 self.message.body.set_field(tag::SETTL_INST_ID, FIXString::from(v));
546 }
547
548 pub fn get_settl_inst_id(&self) -> Result<String, MessageRejectErrorEnum> {
550 let mut fld = field::SettlInstIDField::new(String::new());
551 self.message.body.get_field(tag::SETTL_INST_ID, &mut fld.0)?;
552 Ok(fld.value().to_string())
553 }
554
555
556 pub fn has_settl_inst_id(&self) -> bool {
558 self.message.body.has(tag::SETTL_INST_ID)
559 }
560
561
562
563
564 pub fn set_settl_inst_mode(&mut self, v: String) {
566 self.message.body.set_field(tag::SETTL_INST_MODE, FIXString::from(v));
567 }
568
569 pub fn get_settl_inst_mode(&self) -> Result<String, MessageRejectErrorEnum> {
571 let mut fld = field::SettlInstModeField::new(String::new());
572 self.message.body.get_field(tag::SETTL_INST_MODE, &mut fld.0)?;
573 Ok(fld.value().to_string())
574 }
575
576
577 pub fn has_settl_inst_mode(&self) -> bool {
579 self.message.body.has(tag::SETTL_INST_MODE)
580 }
581
582
583
584
585 pub fn set_settl_inst_source(&mut self, v: String) {
587 self.message.body.set_field(tag::SETTL_INST_SOURCE, FIXString::from(v));
588 }
589
590 pub fn get_settl_inst_source(&self) -> Result<String, MessageRejectErrorEnum> {
592 let mut fld = field::SettlInstSourceField::new(String::new());
593 self.message.body.get_field(tag::SETTL_INST_SOURCE, &mut fld.0)?;
594 Ok(fld.value().to_string())
595 }
596
597
598 pub fn has_settl_inst_source(&self) -> bool {
600 self.message.body.has(tag::SETTL_INST_SOURCE)
601 }
602
603
604
605
606 pub fn set_settl_inst_trans_type(&mut self, v: String) {
608 self.message.body.set_field(tag::SETTL_INST_TRANS_TYPE, FIXString::from(v));
609 }
610
611 pub fn get_settl_inst_trans_type(&self) -> Result<String, MessageRejectErrorEnum> {
613 let mut fld = field::SettlInstTransTypeField::new(String::new());
614 self.message.body.get_field(tag::SETTL_INST_TRANS_TYPE, &mut fld.0)?;
615 Ok(fld.value().to_string())
616 }
617
618
619 pub fn has_settl_inst_trans_type(&self) -> bool {
621 self.message.body.has(tag::SETTL_INST_TRANS_TYPE)
622 }
623
624
625
626
627 pub fn set_settl_location(&mut self, v: String) {
629 self.message.body.set_field(tag::SETTL_LOCATION, FIXString::from(v));
630 }
631
632 pub fn get_settl_location(&self) -> Result<String, MessageRejectErrorEnum> {
634 let mut fld = field::SettlLocationField::new(String::new());
635 self.message.body.get_field(tag::SETTL_LOCATION, &mut fld.0)?;
636 Ok(fld.value().to_string())
637 }
638
639
640 pub fn has_settl_location(&self) -> bool {
642 self.message.body.has(tag::SETTL_LOCATION)
643 }
644
645
646
647
648 pub fn set_side(&mut self, v: String) {
650 self.message.body.set_field(tag::SIDE, FIXString::from(v));
651 }
652
653 pub fn get_side(&self) -> Result<String, MessageRejectErrorEnum> {
655 let mut fld = field::SideField::new(String::new());
656 self.message.body.get_field(tag::SIDE, &mut fld.0)?;
657 Ok(fld.value().to_string())
658 }
659
660
661 pub fn has_side(&self) -> bool {
663 self.message.body.has(tag::SIDE)
664 }
665
666
667
668
669 pub fn set_stand_inst_db_id(&mut self, v: String) {
671 self.message.body.set_field(tag::STAND_INST_DB_ID, FIXString::from(v));
672 }
673
674 pub fn get_stand_inst_db_id(&self) -> Result<String, MessageRejectErrorEnum> {
676 let mut fld = field::StandInstDbIDField::new(String::new());
677 self.message.body.get_field(tag::STAND_INST_DB_ID, &mut fld.0)?;
678 Ok(fld.value().to_string())
679 }
680
681
682 pub fn has_stand_inst_db_id(&self) -> bool {
684 self.message.body.has(tag::STAND_INST_DB_ID)
685 }
686
687
688
689
690 pub fn set_stand_inst_db_name(&mut self, v: String) {
692 self.message.body.set_field(tag::STAND_INST_DB_NAME, FIXString::from(v));
693 }
694
695 pub fn get_stand_inst_db_name(&self) -> Result<String, MessageRejectErrorEnum> {
697 let mut fld = field::StandInstDbNameField::new(String::new());
698 self.message.body.get_field(tag::STAND_INST_DB_NAME, &mut fld.0)?;
699 Ok(fld.value().to_string())
700 }
701
702
703 pub fn has_stand_inst_db_name(&self) -> bool {
705 self.message.body.has(tag::STAND_INST_DB_NAME)
706 }
707
708
709
710
711 pub fn set_stand_inst_db_type(&mut self, v: isize) {
713 self.message.body.set_field(tag::STAND_INST_DB_TYPE, fixer::fix_int::FIXInt::from(v));
714 }
715
716 pub fn get_stand_inst_db_type(&self) -> Result<isize, MessageRejectErrorEnum> {
718 let mut fld = field::StandInstDbTypeField::new(0);
719 self.message.body.get_field(tag::STAND_INST_DB_TYPE, &mut fld.0)?;
720 Ok(fld.value())
721 }
722
723
724 pub fn has_stand_inst_db_type(&self) -> bool {
726 self.message.body.has(tag::STAND_INST_DB_TYPE)
727 }
728
729
730
731
732 pub fn set_trade_date(&mut self, v: String) {
734 self.message.body.set_field(tag::TRADE_DATE, FIXString::from(v));
735 }
736
737 pub fn get_trade_date(&self) -> Result<String, MessageRejectErrorEnum> {
739 let mut fld = field::TradeDateField::new(String::new());
740 self.message.body.get_field(tag::TRADE_DATE, &mut fld.0)?;
741 Ok(fld.value().to_string())
742 }
743
744
745 pub fn has_trade_date(&self) -> bool {
747 self.message.body.has(tag::TRADE_DATE)
748 }
749
750
751
752
753 pub fn set_transact_time(&mut self, v: Timestamp) {
755 self.message.body.set_field(tag::TRANSACT_TIME, fixer::fix_utc_timestamp::FIXUTCTimestamp {
756 time: v,
757 precision: fixer::fix_utc_timestamp::TimestampPrecision::Millis,
758 });
759 }
760
761 pub fn get_transact_time(&self) -> Result<Timestamp, MessageRejectErrorEnum> {
763 let mut fld = field::TransactTimeField::new(Timestamp::UNIX_EPOCH);
764 self.message.body.get_field(tag::TRANSACT_TIME, &mut fld.0)?;
765 Ok(fld.value())
766 }
767
768
769 pub fn has_transact_time(&self) -> bool {
771 self.message.body.has(tag::TRANSACT_TIME)
772 }
773
774
775}
776
777pub type RouteOut = fn(msg: SettlementInstructions, session_id: SessionID) -> Result<(), MessageRejectErrorEnum>;
779
780pub type Route = (&'static str, &'static str, Box<dyn Fn(&Message, SessionID) -> Result<(), MessageRejectErrorEnum> + Send>);
782
783pub fn route(router: RouteOut) -> Route {
785 let r = move |msg: &Message, session_id: SessionID| -> Result<(), MessageRejectErrorEnum> {
786 router(SettlementInstructions::from_message(msg.clone()), session_id)
787 };
788 ("FIX.4.1", "T", Box::new(r))
789}