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
12use rust_decimal::Decimal;
13
14
15use jiff::Timestamp;
16
17use crate::field;
18use crate::tag;
19
20pub struct NewOrderSingle {
22 pub message: Message,
23}
24
25impl NewOrderSingle {
26 pub fn new(cl_ord_id: field::ClOrdIDField, handl_inst: field::HandlInstField, symbol: field::SymbolField, side: field::SideField, transact_time: field::TransactTimeField, ord_type: field::OrdTypeField) -> Self {
28 let mut msg = Message::new();
29 msg.header.set_field(tag::MSG_TYPE, FIXString::from("D".to_string()));
30
31 msg.body.set_field(tag::CL_ORD_ID, cl_ord_id.0);
32
33 msg.body.set_field(tag::HANDL_INST, handl_inst.0);
34
35 msg.body.set_field(tag::SYMBOL, symbol.0);
36
37 msg.body.set_field(tag::SIDE, side.0);
38
39 msg.body.set_field(tag::TRANSACT_TIME, transact_time.0);
40
41 msg.body.set_field(tag::ORD_TYPE, ord_type.0);
42
43 Self { message: msg }
44 }
45
46 pub fn from_message(msg: Message) -> Self {
48 Self { message: msg }
49 }
50
51 pub fn to_message(self) -> Message {
53 self.message
54 }
55
56
57
58
59 pub fn set_account(&mut self, v: String) {
61 self.message.body.set_field(tag::ACCOUNT, FIXString::from(v));
62 }
63
64 pub fn get_account(&self) -> Result<String, MessageRejectErrorEnum> {
66 let mut fld = field::AccountField::new(String::new());
67 self.message.body.get_field(tag::ACCOUNT, &mut fld.0)?;
68 Ok(fld.value().to_string())
69 }
70
71
72 pub fn has_account(&self) -> bool {
74 self.message.body.has(tag::ACCOUNT)
75 }
76
77
78
79
80 pub fn set_cash_order_qty(&mut self, val: Decimal, scale: i32) {
82 self.message.body.set_field(tag::CASH_ORDER_QTY, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
83 }
84
85 pub fn get_cash_order_qty(&self) -> Result<Decimal, MessageRejectErrorEnum> {
87 let mut fld = field::CashOrderQtyField::new(Decimal::ZERO, 0);
88 self.message.body.get_field(tag::CASH_ORDER_QTY, &mut fld.0)?;
89 Ok(fld.value())
90 }
91
92
93 pub fn has_cash_order_qty(&self) -> bool {
95 self.message.body.has(tag::CASH_ORDER_QTY)
96 }
97
98
99
100
101 pub fn set_cl_ord_id(&mut self, v: String) {
103 self.message.body.set_field(tag::CL_ORD_ID, FIXString::from(v));
104 }
105
106 pub fn get_cl_ord_id(&self) -> Result<String, MessageRejectErrorEnum> {
108 let mut fld = field::ClOrdIDField::new(String::new());
109 self.message.body.get_field(tag::CL_ORD_ID, &mut fld.0)?;
110 Ok(fld.value().to_string())
111 }
112
113
114 pub fn has_cl_ord_id(&self) -> bool {
116 self.message.body.has(tag::CL_ORD_ID)
117 }
118
119
120
121
122 pub fn set_clearing_account(&mut self, v: String) {
124 self.message.body.set_field(tag::CLEARING_ACCOUNT, FIXString::from(v));
125 }
126
127 pub fn get_clearing_account(&self) -> Result<String, MessageRejectErrorEnum> {
129 let mut fld = field::ClearingAccountField::new(String::new());
130 self.message.body.get_field(tag::CLEARING_ACCOUNT, &mut fld.0)?;
131 Ok(fld.value().to_string())
132 }
133
134
135 pub fn has_clearing_account(&self) -> bool {
137 self.message.body.has(tag::CLEARING_ACCOUNT)
138 }
139
140
141
142
143 pub fn set_clearing_firm(&mut self, v: String) {
145 self.message.body.set_field(tag::CLEARING_FIRM, FIXString::from(v));
146 }
147
148 pub fn get_clearing_firm(&self) -> Result<String, MessageRejectErrorEnum> {
150 let mut fld = field::ClearingFirmField::new(String::new());
151 self.message.body.get_field(tag::CLEARING_FIRM, &mut fld.0)?;
152 Ok(fld.value().to_string())
153 }
154
155
156 pub fn has_clearing_firm(&self) -> bool {
158 self.message.body.has(tag::CLEARING_FIRM)
159 }
160
161
162
163
164 pub fn set_client_id(&mut self, v: String) {
166 self.message.body.set_field(tag::CLIENT_ID, FIXString::from(v));
167 }
168
169 pub fn get_client_id(&self) -> Result<String, MessageRejectErrorEnum> {
171 let mut fld = field::ClientIDField::new(String::new());
172 self.message.body.get_field(tag::CLIENT_ID, &mut fld.0)?;
173 Ok(fld.value().to_string())
174 }
175
176
177 pub fn has_client_id(&self) -> bool {
179 self.message.body.has(tag::CLIENT_ID)
180 }
181
182
183
184
185 pub fn set_comm_type(&mut self, v: String) {
187 self.message.body.set_field(tag::COMM_TYPE, FIXString::from(v));
188 }
189
190 pub fn get_comm_type(&self) -> Result<String, MessageRejectErrorEnum> {
192 let mut fld = field::CommTypeField::new(String::new());
193 self.message.body.get_field(tag::COMM_TYPE, &mut fld.0)?;
194 Ok(fld.value().to_string())
195 }
196
197
198 pub fn has_comm_type(&self) -> bool {
200 self.message.body.has(tag::COMM_TYPE)
201 }
202
203
204
205
206 pub fn set_commission(&mut self, val: Decimal, scale: i32) {
208 self.message.body.set_field(tag::COMMISSION, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
209 }
210
211 pub fn get_commission(&self) -> Result<Decimal, MessageRejectErrorEnum> {
213 let mut fld = field::CommissionField::new(Decimal::ZERO, 0);
214 self.message.body.get_field(tag::COMMISSION, &mut fld.0)?;
215 Ok(fld.value())
216 }
217
218
219 pub fn has_commission(&self) -> bool {
221 self.message.body.has(tag::COMMISSION)
222 }
223
224
225
226
227 pub fn set_compliance_id(&mut self, v: String) {
229 self.message.body.set_field(tag::COMPLIANCE_ID, FIXString::from(v));
230 }
231
232 pub fn get_compliance_id(&self) -> Result<String, MessageRejectErrorEnum> {
234 let mut fld = field::ComplianceIDField::new(String::new());
235 self.message.body.get_field(tag::COMPLIANCE_ID, &mut fld.0)?;
236 Ok(fld.value().to_string())
237 }
238
239
240 pub fn has_compliance_id(&self) -> bool {
242 self.message.body.has(tag::COMPLIANCE_ID)
243 }
244
245
246
247
248 pub fn set_contract_multiplier(&mut self, val: Decimal, scale: i32) {
250 self.message.body.set_field(tag::CONTRACT_MULTIPLIER, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
251 }
252
253 pub fn get_contract_multiplier(&self) -> Result<Decimal, MessageRejectErrorEnum> {
255 let mut fld = field::ContractMultiplierField::new(Decimal::ZERO, 0);
256 self.message.body.get_field(tag::CONTRACT_MULTIPLIER, &mut fld.0)?;
257 Ok(fld.value())
258 }
259
260
261 pub fn has_contract_multiplier(&self) -> bool {
263 self.message.body.has(tag::CONTRACT_MULTIPLIER)
264 }
265
266
267
268
269 pub fn set_coupon_rate(&mut self, val: Decimal, scale: i32) {
271 self.message.body.set_field(tag::COUPON_RATE, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
272 }
273
274 pub fn get_coupon_rate(&self) -> Result<Decimal, MessageRejectErrorEnum> {
276 let mut fld = field::CouponRateField::new(Decimal::ZERO, 0);
277 self.message.body.get_field(tag::COUPON_RATE, &mut fld.0)?;
278 Ok(fld.value())
279 }
280
281
282 pub fn has_coupon_rate(&self) -> bool {
284 self.message.body.has(tag::COUPON_RATE)
285 }
286
287
288
289
290 pub fn set_covered_or_uncovered(&mut self, v: isize) {
292 self.message.body.set_field(tag::COVERED_OR_UNCOVERED, fixer::fix_int::FIXInt::from(v));
293 }
294
295 pub fn get_covered_or_uncovered(&self) -> Result<isize, MessageRejectErrorEnum> {
297 let mut fld = field::CoveredOrUncoveredField::new(0);
298 self.message.body.get_field(tag::COVERED_OR_UNCOVERED, &mut fld.0)?;
299 Ok(fld.value())
300 }
301
302
303 pub fn has_covered_or_uncovered(&self) -> bool {
305 self.message.body.has(tag::COVERED_OR_UNCOVERED)
306 }
307
308
309
310
311 pub fn set_currency(&mut self, v: String) {
313 self.message.body.set_field(tag::CURRENCY, FIXString::from(v));
314 }
315
316 pub fn get_currency(&self) -> Result<String, MessageRejectErrorEnum> {
318 let mut fld = field::CurrencyField::new(String::new());
319 self.message.body.get_field(tag::CURRENCY, &mut fld.0)?;
320 Ok(fld.value().to_string())
321 }
322
323
324 pub fn has_currency(&self) -> bool {
326 self.message.body.has(tag::CURRENCY)
327 }
328
329
330
331
332 pub fn set_customer_or_firm(&mut self, v: isize) {
334 self.message.body.set_field(tag::CUSTOMER_OR_FIRM, fixer::fix_int::FIXInt::from(v));
335 }
336
337 pub fn get_customer_or_firm(&self) -> Result<isize, MessageRejectErrorEnum> {
339 let mut fld = field::CustomerOrFirmField::new(0);
340 self.message.body.get_field(tag::CUSTOMER_OR_FIRM, &mut fld.0)?;
341 Ok(fld.value())
342 }
343
344
345 pub fn has_customer_or_firm(&self) -> bool {
347 self.message.body.has(tag::CUSTOMER_OR_FIRM)
348 }
349
350
351
352
353 pub fn set_discretion_inst(&mut self, v: String) {
355 self.message.body.set_field(tag::DISCRETION_INST, FIXString::from(v));
356 }
357
358 pub fn get_discretion_inst(&self) -> Result<String, MessageRejectErrorEnum> {
360 let mut fld = field::DiscretionInstField::new(String::new());
361 self.message.body.get_field(tag::DISCRETION_INST, &mut fld.0)?;
362 Ok(fld.value().to_string())
363 }
364
365
366 pub fn has_discretion_inst(&self) -> bool {
368 self.message.body.has(tag::DISCRETION_INST)
369 }
370
371
372
373
374 pub fn set_discretion_offset(&mut self, val: Decimal, scale: i32) {
376 self.message.body.set_field(tag::DISCRETION_OFFSET, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
377 }
378
379 pub fn get_discretion_offset(&self) -> Result<Decimal, MessageRejectErrorEnum> {
381 let mut fld = field::DiscretionOffsetField::new(Decimal::ZERO, 0);
382 self.message.body.get_field(tag::DISCRETION_OFFSET, &mut fld.0)?;
383 Ok(fld.value())
384 }
385
386
387 pub fn has_discretion_offset(&self) -> bool {
389 self.message.body.has(tag::DISCRETION_OFFSET)
390 }
391
392
393
394
395 pub fn set_effective_time(&mut self, v: Timestamp) {
397 self.message.body.set_field(tag::EFFECTIVE_TIME, fixer::fix_utc_timestamp::FIXUTCTimestamp {
398 time: v,
399 precision: fixer::fix_utc_timestamp::TimestampPrecision::Millis,
400 });
401 }
402
403 pub fn get_effective_time(&self) -> Result<Timestamp, MessageRejectErrorEnum> {
405 let mut fld = field::EffectiveTimeField::new(Timestamp::UNIX_EPOCH);
406 self.message.body.get_field(tag::EFFECTIVE_TIME, &mut fld.0)?;
407 Ok(fld.value())
408 }
409
410
411 pub fn has_effective_time(&self) -> bool {
413 self.message.body.has(tag::EFFECTIVE_TIME)
414 }
415
416
417
418
419 pub fn set_encoded_issuer(&mut self, v: String) {
421 self.message.body.set_field(tag::ENCODED_ISSUER, FIXString::from(v));
422 }
423
424 pub fn get_encoded_issuer(&self) -> Result<String, MessageRejectErrorEnum> {
426 let mut fld = field::EncodedIssuerField::new(String::new());
427 self.message.body.get_field(tag::ENCODED_ISSUER, &mut fld.0)?;
428 Ok(fld.value().to_string())
429 }
430
431
432 pub fn has_encoded_issuer(&self) -> bool {
434 self.message.body.has(tag::ENCODED_ISSUER)
435 }
436
437
438
439
440 pub fn set_encoded_issuer_len(&mut self, v: isize) {
442 self.message.body.set_field(tag::ENCODED_ISSUER_LEN, fixer::fix_int::FIXInt::from(v));
443 }
444
445 pub fn get_encoded_issuer_len(&self) -> Result<isize, MessageRejectErrorEnum> {
447 let mut fld = field::EncodedIssuerLenField::new(0);
448 self.message.body.get_field(tag::ENCODED_ISSUER_LEN, &mut fld.0)?;
449 Ok(fld.value())
450 }
451
452
453 pub fn has_encoded_issuer_len(&self) -> bool {
455 self.message.body.has(tag::ENCODED_ISSUER_LEN)
456 }
457
458
459
460
461 pub fn set_encoded_security_desc(&mut self, v: String) {
463 self.message.body.set_field(tag::ENCODED_SECURITY_DESC, FIXString::from(v));
464 }
465
466 pub fn get_encoded_security_desc(&self) -> Result<String, MessageRejectErrorEnum> {
468 let mut fld = field::EncodedSecurityDescField::new(String::new());
469 self.message.body.get_field(tag::ENCODED_SECURITY_DESC, &mut fld.0)?;
470 Ok(fld.value().to_string())
471 }
472
473
474 pub fn has_encoded_security_desc(&self) -> bool {
476 self.message.body.has(tag::ENCODED_SECURITY_DESC)
477 }
478
479
480
481
482 pub fn set_encoded_security_desc_len(&mut self, v: isize) {
484 self.message.body.set_field(tag::ENCODED_SECURITY_DESC_LEN, fixer::fix_int::FIXInt::from(v));
485 }
486
487 pub fn get_encoded_security_desc_len(&self) -> Result<isize, MessageRejectErrorEnum> {
489 let mut fld = field::EncodedSecurityDescLenField::new(0);
490 self.message.body.get_field(tag::ENCODED_SECURITY_DESC_LEN, &mut fld.0)?;
491 Ok(fld.value())
492 }
493
494
495 pub fn has_encoded_security_desc_len(&self) -> bool {
497 self.message.body.has(tag::ENCODED_SECURITY_DESC_LEN)
498 }
499
500
501
502
503 pub fn set_encoded_text(&mut self, v: String) {
505 self.message.body.set_field(tag::ENCODED_TEXT, FIXString::from(v));
506 }
507
508 pub fn get_encoded_text(&self) -> Result<String, MessageRejectErrorEnum> {
510 let mut fld = field::EncodedTextField::new(String::new());
511 self.message.body.get_field(tag::ENCODED_TEXT, &mut fld.0)?;
512 Ok(fld.value().to_string())
513 }
514
515
516 pub fn has_encoded_text(&self) -> bool {
518 self.message.body.has(tag::ENCODED_TEXT)
519 }
520
521
522
523
524 pub fn set_encoded_text_len(&mut self, v: isize) {
526 self.message.body.set_field(tag::ENCODED_TEXT_LEN, fixer::fix_int::FIXInt::from(v));
527 }
528
529 pub fn get_encoded_text_len(&self) -> Result<isize, MessageRejectErrorEnum> {
531 let mut fld = field::EncodedTextLenField::new(0);
532 self.message.body.get_field(tag::ENCODED_TEXT_LEN, &mut fld.0)?;
533 Ok(fld.value())
534 }
535
536
537 pub fn has_encoded_text_len(&self) -> bool {
539 self.message.body.has(tag::ENCODED_TEXT_LEN)
540 }
541
542
543
544
545 pub fn set_ex_destination(&mut self, v: String) {
547 self.message.body.set_field(tag::EX_DESTINATION, FIXString::from(v));
548 }
549
550 pub fn get_ex_destination(&self) -> Result<String, MessageRejectErrorEnum> {
552 let mut fld = field::ExDestinationField::new(String::new());
553 self.message.body.get_field(tag::EX_DESTINATION, &mut fld.0)?;
554 Ok(fld.value().to_string())
555 }
556
557
558 pub fn has_ex_destination(&self) -> bool {
560 self.message.body.has(tag::EX_DESTINATION)
561 }
562
563
564
565
566 pub fn set_exec_broker(&mut self, v: String) {
568 self.message.body.set_field(tag::EXEC_BROKER, FIXString::from(v));
569 }
570
571 pub fn get_exec_broker(&self) -> Result<String, MessageRejectErrorEnum> {
573 let mut fld = field::ExecBrokerField::new(String::new());
574 self.message.body.get_field(tag::EXEC_BROKER, &mut fld.0)?;
575 Ok(fld.value().to_string())
576 }
577
578
579 pub fn has_exec_broker(&self) -> bool {
581 self.message.body.has(tag::EXEC_BROKER)
582 }
583
584
585
586
587 pub fn set_exec_inst(&mut self, v: String) {
589 self.message.body.set_field(tag::EXEC_INST, FIXString::from(v));
590 }
591
592 pub fn get_exec_inst(&self) -> Result<String, MessageRejectErrorEnum> {
594 let mut fld = field::ExecInstField::new(String::new());
595 self.message.body.get_field(tag::EXEC_INST, &mut fld.0)?;
596 Ok(fld.value().to_string())
597 }
598
599
600 pub fn has_exec_inst(&self) -> bool {
602 self.message.body.has(tag::EXEC_INST)
603 }
604
605
606
607
608 pub fn set_expire_date(&mut self, v: String) {
610 self.message.body.set_field(tag::EXPIRE_DATE, FIXString::from(v));
611 }
612
613 pub fn get_expire_date(&self) -> Result<String, MessageRejectErrorEnum> {
615 let mut fld = field::ExpireDateField::new(String::new());
616 self.message.body.get_field(tag::EXPIRE_DATE, &mut fld.0)?;
617 Ok(fld.value().to_string())
618 }
619
620
621 pub fn has_expire_date(&self) -> bool {
623 self.message.body.has(tag::EXPIRE_DATE)
624 }
625
626
627
628
629 pub fn set_expire_time(&mut self, v: Timestamp) {
631 self.message.body.set_field(tag::EXPIRE_TIME, fixer::fix_utc_timestamp::FIXUTCTimestamp {
632 time: v,
633 precision: fixer::fix_utc_timestamp::TimestampPrecision::Millis,
634 });
635 }
636
637 pub fn get_expire_time(&self) -> Result<Timestamp, MessageRejectErrorEnum> {
639 let mut fld = field::ExpireTimeField::new(Timestamp::UNIX_EPOCH);
640 self.message.body.get_field(tag::EXPIRE_TIME, &mut fld.0)?;
641 Ok(fld.value())
642 }
643
644
645 pub fn has_expire_time(&self) -> bool {
647 self.message.body.has(tag::EXPIRE_TIME)
648 }
649
650
651
652
653 pub fn set_forex_req(&mut self, v: bool) {
655 self.message.body.set_field(tag::FOREX_REQ, fixer::fix_boolean::FIXBoolean::from(v));
656 }
657
658 pub fn get_forex_req(&self) -> Result<bool, MessageRejectErrorEnum> {
660 let mut fld = field::ForexReqField::new(false);
661 self.message.body.get_field(tag::FOREX_REQ, &mut fld.0)?;
662 Ok(fld.value())
663 }
664
665
666 pub fn has_forex_req(&self) -> bool {
668 self.message.body.has(tag::FOREX_REQ)
669 }
670
671
672
673
674 pub fn set_fut_sett_date(&mut self, v: String) {
676 self.message.body.set_field(tag::FUT_SETT_DATE, FIXString::from(v));
677 }
678
679 pub fn get_fut_sett_date(&self) -> Result<String, MessageRejectErrorEnum> {
681 let mut fld = field::FutSettDateField::new(String::new());
682 self.message.body.get_field(tag::FUT_SETT_DATE, &mut fld.0)?;
683 Ok(fld.value().to_string())
684 }
685
686
687 pub fn has_fut_sett_date(&self) -> bool {
689 self.message.body.has(tag::FUT_SETT_DATE)
690 }
691
692
693
694
695 pub fn set_fut_sett_date2(&mut self, v: String) {
697 self.message.body.set_field(tag::FUT_SETT_DATE2, FIXString::from(v));
698 }
699
700 pub fn get_fut_sett_date2(&self) -> Result<String, MessageRejectErrorEnum> {
702 let mut fld = field::FutSettDate2Field::new(String::new());
703 self.message.body.get_field(tag::FUT_SETT_DATE2, &mut fld.0)?;
704 Ok(fld.value().to_string())
705 }
706
707
708 pub fn has_fut_sett_date2(&self) -> bool {
710 self.message.body.has(tag::FUT_SETT_DATE2)
711 }
712
713
714
715
716 pub fn set_gt_booking_inst(&mut self, v: isize) {
718 self.message.body.set_field(tag::GT_BOOKING_INST, fixer::fix_int::FIXInt::from(v));
719 }
720
721 pub fn get_gt_booking_inst(&self) -> Result<isize, MessageRejectErrorEnum> {
723 let mut fld = field::GTBookingInstField::new(0);
724 self.message.body.get_field(tag::GT_BOOKING_INST, &mut fld.0)?;
725 Ok(fld.value())
726 }
727
728
729 pub fn has_gt_booking_inst(&self) -> bool {
731 self.message.body.has(tag::GT_BOOKING_INST)
732 }
733
734
735
736
737 pub fn set_handl_inst(&mut self, v: String) {
739 self.message.body.set_field(tag::HANDL_INST, FIXString::from(v));
740 }
741
742 pub fn get_handl_inst(&self) -> Result<String, MessageRejectErrorEnum> {
744 let mut fld = field::HandlInstField::new(String::new());
745 self.message.body.get_field(tag::HANDL_INST, &mut fld.0)?;
746 Ok(fld.value().to_string())
747 }
748
749
750 pub fn has_handl_inst(&self) -> bool {
752 self.message.body.has(tag::HANDL_INST)
753 }
754
755
756
757
758 pub fn set_id_source(&mut self, v: String) {
760 self.message.body.set_field(tag::ID_SOURCE, FIXString::from(v));
761 }
762
763 pub fn get_id_source(&self) -> Result<String, MessageRejectErrorEnum> {
765 let mut fld = field::IDSourceField::new(String::new());
766 self.message.body.get_field(tag::ID_SOURCE, &mut fld.0)?;
767 Ok(fld.value().to_string())
768 }
769
770
771 pub fn has_id_source(&self) -> bool {
773 self.message.body.has(tag::ID_SOURCE)
774 }
775
776
777
778
779 pub fn set_io_iid(&mut self, v: String) {
781 self.message.body.set_field(tag::IO_IID, FIXString::from(v));
782 }
783
784 pub fn get_io_iid(&self) -> Result<String, MessageRejectErrorEnum> {
786 let mut fld = field::IOIidField::new(String::new());
787 self.message.body.get_field(tag::IO_IID, &mut fld.0)?;
788 Ok(fld.value().to_string())
789 }
790
791
792 pub fn has_io_iid(&self) -> bool {
794 self.message.body.has(tag::IO_IID)
795 }
796
797
798
799
800 pub fn set_issuer(&mut self, v: String) {
802 self.message.body.set_field(tag::ISSUER, FIXString::from(v));
803 }
804
805 pub fn get_issuer(&self) -> Result<String, MessageRejectErrorEnum> {
807 let mut fld = field::IssuerField::new(String::new());
808 self.message.body.get_field(tag::ISSUER, &mut fld.0)?;
809 Ok(fld.value().to_string())
810 }
811
812
813 pub fn has_issuer(&self) -> bool {
815 self.message.body.has(tag::ISSUER)
816 }
817
818
819
820
821 pub fn set_locate_reqd(&mut self, v: bool) {
823 self.message.body.set_field(tag::LOCATE_REQD, fixer::fix_boolean::FIXBoolean::from(v));
824 }
825
826 pub fn get_locate_reqd(&self) -> Result<bool, MessageRejectErrorEnum> {
828 let mut fld = field::LocateReqdField::new(false);
829 self.message.body.get_field(tag::LOCATE_REQD, &mut fld.0)?;
830 Ok(fld.value())
831 }
832
833
834 pub fn has_locate_reqd(&self) -> bool {
836 self.message.body.has(tag::LOCATE_REQD)
837 }
838
839
840
841
842 pub fn set_maturity_day(&mut self, v: isize) {
844 self.message.body.set_field(tag::MATURITY_DAY, fixer::fix_int::FIXInt::from(v));
845 }
846
847 pub fn get_maturity_day(&self) -> Result<isize, MessageRejectErrorEnum> {
849 let mut fld = field::MaturityDayField::new(0);
850 self.message.body.get_field(tag::MATURITY_DAY, &mut fld.0)?;
851 Ok(fld.value())
852 }
853
854
855 pub fn has_maturity_day(&self) -> bool {
857 self.message.body.has(tag::MATURITY_DAY)
858 }
859
860
861
862
863 pub fn set_maturity_month_year(&mut self, v: String) {
865 self.message.body.set_field(tag::MATURITY_MONTH_YEAR, FIXString::from(v));
866 }
867
868 pub fn get_maturity_month_year(&self) -> Result<String, MessageRejectErrorEnum> {
870 let mut fld = field::MaturityMonthYearField::new(String::new());
871 self.message.body.get_field(tag::MATURITY_MONTH_YEAR, &mut fld.0)?;
872 Ok(fld.value().to_string())
873 }
874
875
876 pub fn has_maturity_month_year(&self) -> bool {
878 self.message.body.has(tag::MATURITY_MONTH_YEAR)
879 }
880
881
882
883
884 pub fn set_max_floor(&mut self, val: Decimal, scale: i32) {
886 self.message.body.set_field(tag::MAX_FLOOR, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
887 }
888
889 pub fn get_max_floor(&self) -> Result<Decimal, MessageRejectErrorEnum> {
891 let mut fld = field::MaxFloorField::new(Decimal::ZERO, 0);
892 self.message.body.get_field(tag::MAX_FLOOR, &mut fld.0)?;
893 Ok(fld.value())
894 }
895
896
897 pub fn has_max_floor(&self) -> bool {
899 self.message.body.has(tag::MAX_FLOOR)
900 }
901
902
903
904
905 pub fn set_max_show(&mut self, val: Decimal, scale: i32) {
907 self.message.body.set_field(tag::MAX_SHOW, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
908 }
909
910 pub fn get_max_show(&self) -> Result<Decimal, MessageRejectErrorEnum> {
912 let mut fld = field::MaxShowField::new(Decimal::ZERO, 0);
913 self.message.body.get_field(tag::MAX_SHOW, &mut fld.0)?;
914 Ok(fld.value())
915 }
916
917
918 pub fn has_max_show(&self) -> bool {
920 self.message.body.has(tag::MAX_SHOW)
921 }
922
923
924
925
926 pub fn set_min_qty(&mut self, val: Decimal, scale: i32) {
928 self.message.body.set_field(tag::MIN_QTY, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
929 }
930
931 pub fn get_min_qty(&self) -> Result<Decimal, MessageRejectErrorEnum> {
933 let mut fld = field::MinQtyField::new(Decimal::ZERO, 0);
934 self.message.body.get_field(tag::MIN_QTY, &mut fld.0)?;
935 Ok(fld.value())
936 }
937
938
939 pub fn has_min_qty(&self) -> bool {
941 self.message.body.has(tag::MIN_QTY)
942 }
943
944
945
946
947 pub fn set_no_allocs(&mut self, v: isize) {
949 self.message.body.set_field(tag::NO_ALLOCS, fixer::fix_int::FIXInt::from(v));
950 }
951
952 pub fn get_no_allocs(&self) -> Result<isize, MessageRejectErrorEnum> {
954 let mut fld = field::NoAllocsField::new(0);
955 self.message.body.get_field(tag::NO_ALLOCS, &mut fld.0)?;
956 Ok(fld.value())
957 }
958
959
960 pub fn has_no_allocs(&self) -> bool {
962 self.message.body.has(tag::NO_ALLOCS)
963 }
964
965
966
967
968 pub fn set_no_trading_sessions(&mut self, v: isize) {
970 self.message.body.set_field(tag::NO_TRADING_SESSIONS, fixer::fix_int::FIXInt::from(v));
971 }
972
973 pub fn get_no_trading_sessions(&self) -> Result<isize, MessageRejectErrorEnum> {
975 let mut fld = field::NoTradingSessionsField::new(0);
976 self.message.body.get_field(tag::NO_TRADING_SESSIONS, &mut fld.0)?;
977 Ok(fld.value())
978 }
979
980
981 pub fn has_no_trading_sessions(&self) -> bool {
983 self.message.body.has(tag::NO_TRADING_SESSIONS)
984 }
985
986
987
988
989 pub fn set_open_close(&mut self, v: String) {
991 self.message.body.set_field(tag::OPEN_CLOSE, FIXString::from(v));
992 }
993
994 pub fn get_open_close(&self) -> Result<String, MessageRejectErrorEnum> {
996 let mut fld = field::OpenCloseField::new(String::new());
997 self.message.body.get_field(tag::OPEN_CLOSE, &mut fld.0)?;
998 Ok(fld.value().to_string())
999 }
1000
1001
1002 pub fn has_open_close(&self) -> bool {
1004 self.message.body.has(tag::OPEN_CLOSE)
1005 }
1006
1007
1008
1009
1010 pub fn set_opt_attribute(&mut self, v: String) {
1012 self.message.body.set_field(tag::OPT_ATTRIBUTE, FIXString::from(v));
1013 }
1014
1015 pub fn get_opt_attribute(&self) -> Result<String, MessageRejectErrorEnum> {
1017 let mut fld = field::OptAttributeField::new(String::new());
1018 self.message.body.get_field(tag::OPT_ATTRIBUTE, &mut fld.0)?;
1019 Ok(fld.value().to_string())
1020 }
1021
1022
1023 pub fn has_opt_attribute(&self) -> bool {
1025 self.message.body.has(tag::OPT_ATTRIBUTE)
1026 }
1027
1028
1029
1030
1031 pub fn set_ord_type(&mut self, v: String) {
1033 self.message.body.set_field(tag::ORD_TYPE, FIXString::from(v));
1034 }
1035
1036 pub fn get_ord_type(&self) -> Result<String, MessageRejectErrorEnum> {
1038 let mut fld = field::OrdTypeField::new(String::new());
1039 self.message.body.get_field(tag::ORD_TYPE, &mut fld.0)?;
1040 Ok(fld.value().to_string())
1041 }
1042
1043
1044 pub fn has_ord_type(&self) -> bool {
1046 self.message.body.has(tag::ORD_TYPE)
1047 }
1048
1049
1050
1051
1052 pub fn set_order_qty(&mut self, val: Decimal, scale: i32) {
1054 self.message.body.set_field(tag::ORDER_QTY, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
1055 }
1056
1057 pub fn get_order_qty(&self) -> Result<Decimal, MessageRejectErrorEnum> {
1059 let mut fld = field::OrderQtyField::new(Decimal::ZERO, 0);
1060 self.message.body.get_field(tag::ORDER_QTY, &mut fld.0)?;
1061 Ok(fld.value())
1062 }
1063
1064
1065 pub fn has_order_qty(&self) -> bool {
1067 self.message.body.has(tag::ORDER_QTY)
1068 }
1069
1070
1071
1072
1073 pub fn set_order_qty2(&mut self, val: Decimal, scale: i32) {
1075 self.message.body.set_field(tag::ORDER_QTY2, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
1076 }
1077
1078 pub fn get_order_qty2(&self) -> Result<Decimal, MessageRejectErrorEnum> {
1080 let mut fld = field::OrderQty2Field::new(Decimal::ZERO, 0);
1081 self.message.body.get_field(tag::ORDER_QTY2, &mut fld.0)?;
1082 Ok(fld.value())
1083 }
1084
1085
1086 pub fn has_order_qty2(&self) -> bool {
1088 self.message.body.has(tag::ORDER_QTY2)
1089 }
1090
1091
1092
1093
1094 pub fn set_peg_difference(&mut self, val: Decimal, scale: i32) {
1096 self.message.body.set_field(tag::PEG_DIFFERENCE, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
1097 }
1098
1099 pub fn get_peg_difference(&self) -> Result<Decimal, MessageRejectErrorEnum> {
1101 let mut fld = field::PegDifferenceField::new(Decimal::ZERO, 0);
1102 self.message.body.get_field(tag::PEG_DIFFERENCE, &mut fld.0)?;
1103 Ok(fld.value())
1104 }
1105
1106
1107 pub fn has_peg_difference(&self) -> bool {
1109 self.message.body.has(tag::PEG_DIFFERENCE)
1110 }
1111
1112
1113
1114
1115 pub fn set_prev_close_px(&mut self, val: Decimal, scale: i32) {
1117 self.message.body.set_field(tag::PREV_CLOSE_PX, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
1118 }
1119
1120 pub fn get_prev_close_px(&self) -> Result<Decimal, MessageRejectErrorEnum> {
1122 let mut fld = field::PrevClosePxField::new(Decimal::ZERO, 0);
1123 self.message.body.get_field(tag::PREV_CLOSE_PX, &mut fld.0)?;
1124 Ok(fld.value())
1125 }
1126
1127
1128 pub fn has_prev_close_px(&self) -> bool {
1130 self.message.body.has(tag::PREV_CLOSE_PX)
1131 }
1132
1133
1134
1135
1136 pub fn set_price(&mut self, val: Decimal, scale: i32) {
1138 self.message.body.set_field(tag::PRICE, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
1139 }
1140
1141 pub fn get_price(&self) -> Result<Decimal, MessageRejectErrorEnum> {
1143 let mut fld = field::PriceField::new(Decimal::ZERO, 0);
1144 self.message.body.get_field(tag::PRICE, &mut fld.0)?;
1145 Ok(fld.value())
1146 }
1147
1148
1149 pub fn has_price(&self) -> bool {
1151 self.message.body.has(tag::PRICE)
1152 }
1153
1154
1155
1156
1157 pub fn set_process_code(&mut self, v: String) {
1159 self.message.body.set_field(tag::PROCESS_CODE, FIXString::from(v));
1160 }
1161
1162 pub fn get_process_code(&self) -> Result<String, MessageRejectErrorEnum> {
1164 let mut fld = field::ProcessCodeField::new(String::new());
1165 self.message.body.get_field(tag::PROCESS_CODE, &mut fld.0)?;
1166 Ok(fld.value().to_string())
1167 }
1168
1169
1170 pub fn has_process_code(&self) -> bool {
1172 self.message.body.has(tag::PROCESS_CODE)
1173 }
1174
1175
1176
1177
1178 pub fn set_put_or_call(&mut self, v: isize) {
1180 self.message.body.set_field(tag::PUT_OR_CALL, fixer::fix_int::FIXInt::from(v));
1181 }
1182
1183 pub fn get_put_or_call(&self) -> Result<isize, MessageRejectErrorEnum> {
1185 let mut fld = field::PutOrCallField::new(0);
1186 self.message.body.get_field(tag::PUT_OR_CALL, &mut fld.0)?;
1187 Ok(fld.value())
1188 }
1189
1190
1191 pub fn has_put_or_call(&self) -> bool {
1193 self.message.body.has(tag::PUT_OR_CALL)
1194 }
1195
1196
1197
1198
1199 pub fn set_quote_id(&mut self, v: String) {
1201 self.message.body.set_field(tag::QUOTE_ID, FIXString::from(v));
1202 }
1203
1204 pub fn get_quote_id(&self) -> Result<String, MessageRejectErrorEnum> {
1206 let mut fld = field::QuoteIDField::new(String::new());
1207 self.message.body.get_field(tag::QUOTE_ID, &mut fld.0)?;
1208 Ok(fld.value().to_string())
1209 }
1210
1211
1212 pub fn has_quote_id(&self) -> bool {
1214 self.message.body.has(tag::QUOTE_ID)
1215 }
1216
1217
1218
1219
1220 pub fn set_rule80_a(&mut self, v: String) {
1222 self.message.body.set_field(tag::RULE80_A, FIXString::from(v));
1223 }
1224
1225 pub fn get_rule80_a(&self) -> Result<String, MessageRejectErrorEnum> {
1227 let mut fld = field::Rule80AField::new(String::new());
1228 self.message.body.get_field(tag::RULE80_A, &mut fld.0)?;
1229 Ok(fld.value().to_string())
1230 }
1231
1232
1233 pub fn has_rule80_a(&self) -> bool {
1235 self.message.body.has(tag::RULE80_A)
1236 }
1237
1238
1239
1240
1241 pub fn set_security_desc(&mut self, v: String) {
1243 self.message.body.set_field(tag::SECURITY_DESC, FIXString::from(v));
1244 }
1245
1246 pub fn get_security_desc(&self) -> Result<String, MessageRejectErrorEnum> {
1248 let mut fld = field::SecurityDescField::new(String::new());
1249 self.message.body.get_field(tag::SECURITY_DESC, &mut fld.0)?;
1250 Ok(fld.value().to_string())
1251 }
1252
1253
1254 pub fn has_security_desc(&self) -> bool {
1256 self.message.body.has(tag::SECURITY_DESC)
1257 }
1258
1259
1260
1261
1262 pub fn set_security_exchange(&mut self, v: String) {
1264 self.message.body.set_field(tag::SECURITY_EXCHANGE, FIXString::from(v));
1265 }
1266
1267 pub fn get_security_exchange(&self) -> Result<String, MessageRejectErrorEnum> {
1269 let mut fld = field::SecurityExchangeField::new(String::new());
1270 self.message.body.get_field(tag::SECURITY_EXCHANGE, &mut fld.0)?;
1271 Ok(fld.value().to_string())
1272 }
1273
1274
1275 pub fn has_security_exchange(&self) -> bool {
1277 self.message.body.has(tag::SECURITY_EXCHANGE)
1278 }
1279
1280
1281
1282
1283 pub fn set_security_id(&mut self, v: String) {
1285 self.message.body.set_field(tag::SECURITY_ID, FIXString::from(v));
1286 }
1287
1288 pub fn get_security_id(&self) -> Result<String, MessageRejectErrorEnum> {
1290 let mut fld = field::SecurityIDField::new(String::new());
1291 self.message.body.get_field(tag::SECURITY_ID, &mut fld.0)?;
1292 Ok(fld.value().to_string())
1293 }
1294
1295
1296 pub fn has_security_id(&self) -> bool {
1298 self.message.body.has(tag::SECURITY_ID)
1299 }
1300
1301
1302
1303
1304 pub fn set_security_type(&mut self, v: String) {
1306 self.message.body.set_field(tag::SECURITY_TYPE, FIXString::from(v));
1307 }
1308
1309 pub fn get_security_type(&self) -> Result<String, MessageRejectErrorEnum> {
1311 let mut fld = field::SecurityTypeField::new(String::new());
1312 self.message.body.get_field(tag::SECURITY_TYPE, &mut fld.0)?;
1313 Ok(fld.value().to_string())
1314 }
1315
1316
1317 pub fn has_security_type(&self) -> bool {
1319 self.message.body.has(tag::SECURITY_TYPE)
1320 }
1321
1322
1323
1324
1325 pub fn set_settl_currency(&mut self, v: String) {
1327 self.message.body.set_field(tag::SETTL_CURRENCY, FIXString::from(v));
1328 }
1329
1330 pub fn get_settl_currency(&self) -> Result<String, MessageRejectErrorEnum> {
1332 let mut fld = field::SettlCurrencyField::new(String::new());
1333 self.message.body.get_field(tag::SETTL_CURRENCY, &mut fld.0)?;
1334 Ok(fld.value().to_string())
1335 }
1336
1337
1338 pub fn has_settl_currency(&self) -> bool {
1340 self.message.body.has(tag::SETTL_CURRENCY)
1341 }
1342
1343
1344
1345
1346 pub fn set_settlmnt_typ(&mut self, v: String) {
1348 self.message.body.set_field(tag::SETTLMNT_TYP, FIXString::from(v));
1349 }
1350
1351 pub fn get_settlmnt_typ(&self) -> Result<String, MessageRejectErrorEnum> {
1353 let mut fld = field::SettlmntTypField::new(String::new());
1354 self.message.body.get_field(tag::SETTLMNT_TYP, &mut fld.0)?;
1355 Ok(fld.value().to_string())
1356 }
1357
1358
1359 pub fn has_settlmnt_typ(&self) -> bool {
1361 self.message.body.has(tag::SETTLMNT_TYP)
1362 }
1363
1364
1365
1366
1367 pub fn set_side(&mut self, v: String) {
1369 self.message.body.set_field(tag::SIDE, FIXString::from(v));
1370 }
1371
1372 pub fn get_side(&self) -> Result<String, MessageRejectErrorEnum> {
1374 let mut fld = field::SideField::new(String::new());
1375 self.message.body.get_field(tag::SIDE, &mut fld.0)?;
1376 Ok(fld.value().to_string())
1377 }
1378
1379
1380 pub fn has_side(&self) -> bool {
1382 self.message.body.has(tag::SIDE)
1383 }
1384
1385
1386
1387
1388 pub fn set_solicited_flag(&mut self, v: bool) {
1390 self.message.body.set_field(tag::SOLICITED_FLAG, fixer::fix_boolean::FIXBoolean::from(v));
1391 }
1392
1393 pub fn get_solicited_flag(&self) -> Result<bool, MessageRejectErrorEnum> {
1395 let mut fld = field::SolicitedFlagField::new(false);
1396 self.message.body.get_field(tag::SOLICITED_FLAG, &mut fld.0)?;
1397 Ok(fld.value())
1398 }
1399
1400
1401 pub fn has_solicited_flag(&self) -> bool {
1403 self.message.body.has(tag::SOLICITED_FLAG)
1404 }
1405
1406
1407
1408
1409 pub fn set_stop_px(&mut self, val: Decimal, scale: i32) {
1411 self.message.body.set_field(tag::STOP_PX, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
1412 }
1413
1414 pub fn get_stop_px(&self) -> Result<Decimal, MessageRejectErrorEnum> {
1416 let mut fld = field::StopPxField::new(Decimal::ZERO, 0);
1417 self.message.body.get_field(tag::STOP_PX, &mut fld.0)?;
1418 Ok(fld.value())
1419 }
1420
1421
1422 pub fn has_stop_px(&self) -> bool {
1424 self.message.body.has(tag::STOP_PX)
1425 }
1426
1427
1428
1429
1430 pub fn set_strike_price(&mut self, val: Decimal, scale: i32) {
1432 self.message.body.set_field(tag::STRIKE_PRICE, fixer::fix_decimal::FIXDecimal { decimal: val, scale });
1433 }
1434
1435 pub fn get_strike_price(&self) -> Result<Decimal, MessageRejectErrorEnum> {
1437 let mut fld = field::StrikePriceField::new(Decimal::ZERO, 0);
1438 self.message.body.get_field(tag::STRIKE_PRICE, &mut fld.0)?;
1439 Ok(fld.value())
1440 }
1441
1442
1443 pub fn has_strike_price(&self) -> bool {
1445 self.message.body.has(tag::STRIKE_PRICE)
1446 }
1447
1448
1449
1450
1451 pub fn set_symbol(&mut self, v: String) {
1453 self.message.body.set_field(tag::SYMBOL, FIXString::from(v));
1454 }
1455
1456 pub fn get_symbol(&self) -> Result<String, MessageRejectErrorEnum> {
1458 let mut fld = field::SymbolField::new(String::new());
1459 self.message.body.get_field(tag::SYMBOL, &mut fld.0)?;
1460 Ok(fld.value().to_string())
1461 }
1462
1463
1464 pub fn has_symbol(&self) -> bool {
1466 self.message.body.has(tag::SYMBOL)
1467 }
1468
1469
1470
1471
1472 pub fn set_symbol_sfx(&mut self, v: String) {
1474 self.message.body.set_field(tag::SYMBOL_SFX, FIXString::from(v));
1475 }
1476
1477 pub fn get_symbol_sfx(&self) -> Result<String, MessageRejectErrorEnum> {
1479 let mut fld = field::SymbolSfxField::new(String::new());
1480 self.message.body.get_field(tag::SYMBOL_SFX, &mut fld.0)?;
1481 Ok(fld.value().to_string())
1482 }
1483
1484
1485 pub fn has_symbol_sfx(&self) -> bool {
1487 self.message.body.has(tag::SYMBOL_SFX)
1488 }
1489
1490
1491
1492
1493 pub fn set_text(&mut self, v: String) {
1495 self.message.body.set_field(tag::TEXT, FIXString::from(v));
1496 }
1497
1498 pub fn get_text(&self) -> Result<String, MessageRejectErrorEnum> {
1500 let mut fld = field::TextField::new(String::new());
1501 self.message.body.get_field(tag::TEXT, &mut fld.0)?;
1502 Ok(fld.value().to_string())
1503 }
1504
1505
1506 pub fn has_text(&self) -> bool {
1508 self.message.body.has(tag::TEXT)
1509 }
1510
1511
1512
1513
1514 pub fn set_time_in_force(&mut self, v: String) {
1516 self.message.body.set_field(tag::TIME_IN_FORCE, FIXString::from(v));
1517 }
1518
1519 pub fn get_time_in_force(&self) -> Result<String, MessageRejectErrorEnum> {
1521 let mut fld = field::TimeInForceField::new(String::new());
1522 self.message.body.get_field(tag::TIME_IN_FORCE, &mut fld.0)?;
1523 Ok(fld.value().to_string())
1524 }
1525
1526
1527 pub fn has_time_in_force(&self) -> bool {
1529 self.message.body.has(tag::TIME_IN_FORCE)
1530 }
1531
1532
1533
1534
1535 pub fn set_transact_time(&mut self, v: Timestamp) {
1537 self.message.body.set_field(tag::TRANSACT_TIME, fixer::fix_utc_timestamp::FIXUTCTimestamp {
1538 time: v,
1539 precision: fixer::fix_utc_timestamp::TimestampPrecision::Millis,
1540 });
1541 }
1542
1543 pub fn get_transact_time(&self) -> Result<Timestamp, MessageRejectErrorEnum> {
1545 let mut fld = field::TransactTimeField::new(Timestamp::UNIX_EPOCH);
1546 self.message.body.get_field(tag::TRANSACT_TIME, &mut fld.0)?;
1547 Ok(fld.value())
1548 }
1549
1550
1551 pub fn has_transact_time(&self) -> bool {
1553 self.message.body.has(tag::TRANSACT_TIME)
1554 }
1555
1556
1557}
1558
1559pub type RouteOut = fn(msg: NewOrderSingle, session_id: SessionID) -> Result<(), MessageRejectErrorEnum>;
1561
1562pub type Route = (&'static str, &'static str, Box<dyn Fn(&Message, SessionID) -> Result<(), MessageRejectErrorEnum> + Send>);
1564
1565pub fn route(router: RouteOut) -> Route {
1567 let r = move |msg: &Message, session_id: SessionID| -> Result<(), MessageRejectErrorEnum> {
1568 router(NewOrderSingle::from_message(msg.clone()), session_id)
1569 };
1570 ("FIX.4.2", "D", Box::new(r))
1571}