swift_mt_message/messages/mt112.rs
1use crate::fields::*;
2use serde::{Deserialize, Serialize};
3use swift_mt_message_macros::{SwiftMessage, serde_swift_fields};
4
5/// MT112: Status of a Request for Stop Payment of a Cheque
6///
7/// ## Purpose
8/// Used by financial institutions to respond to an MT111 stop payment request with definitive status information.
9/// This message provides clear confirmation of whether the stop payment was accepted, rejected, or requires additional
10/// processing, ensuring proper closure of the stop payment request workflow.
11///
12/// ## Scope
13/// This message is:
14/// - Used for status responses to MT111 stop payment requests from financial institutions
15/// - Applicable for confirming stop payment processing outcomes and decisions
16/// - Designed for maintaining audit trails and regulatory compliance for stop payments
17/// - Compatible with both automated and manual stop payment processing systems
18/// - Subject to validation rules for proper status reporting and reference tracking
19/// - Integrated with cheque processing systems for real-time status updates
20///
21/// ## Key Features
22/// - **Comprehensive Status Reporting**: Clear indication of stop payment request processing status
23/// - **Reference Linkage System**: Direct links to original MT111 stop payment request
24/// - **Detailed Reason Codes**: Comprehensive information for rejected or failed requests
25/// - **Transaction Audit Trail**: Maintains complete audit trail for stop payment requests
26/// - **Regulatory Compliance**: Structured reporting for regulatory and internal compliance
27/// - **Processing Confirmation**: Definitive confirmation of stop payment effectiveness
28///
29/// ## Common Use Cases
30/// - Confirmation of successful stop payment implementation
31/// - Rejection notification for invalid or late stop payment requests
32/// - Status updates for stop payments requiring manual review
33/// - Compliance reporting for regulatory stop payment tracking
34/// - Audit trail maintenance for customer service and dispute resolution
35/// - Integration with fraud prevention systems for security confirmation
36/// - Notification of stop payment effectiveness periods and limitations
37///
38/// ## Message Structure
39/// - **Field 20**: Transaction Reference (mandatory) - Links to original MT111 request reference
40/// - **Field 21**: Cheque Number (mandatory) - Confirms specific cheque number from original request
41/// - **Field 30**: Date of Issue (mandatory) - Confirms original cheque issue date (YYMMDD)
42/// - **Field 32**: Currency/Amount (mandatory) - Confirms original cheque amount and currency
43/// - **Field 52**: Drawer Bank (optional) - Confirms bank information from original request
44/// - **Field 59**: Payee (optional) - Confirms payee information (no account number)
45/// - **Field 76**: Answers (mandatory) - Status information and processing results
46///
47/// ## Network Validation Rules
48/// - **Date Format Validation**: Date of issue must be in valid YYMMDD format
49/// - **Reference Consistency**: Transaction reference must match original MT111 request format
50/// - **Cheque Number Format**: Cheque number must not contain '/' or '//' characters
51/// - **Bank Option Validation**: Only one option of Drawer Bank (52A/B/D) may be present
52/// - **Payee Format Validation**: Payee field must not contain account number in first line
53/// - **Status Code Validation**: Answers field should contain predefined status codes
54/// - **Reference Linking**: All fields must be consistent with original MT111 request
55///
56/// ## SRG2025 Status
57/// - **Structural Changes**: None - MT112 format remains stable for status reporting
58/// - **Validation Updates**: Enhanced validation for status code compliance and consistency
59/// - **Processing Improvements**: Improved handling of automated status determination
60/// - **Compliance Notes**: Strengthened regulatory reporting requirements for stop payment outcomes
61///
62/// ## Integration Considerations
63/// - **Banking Systems**: Compatible with cheque processing and fraud prevention systems
64/// - **API Integration**: RESTful API support for modern digital banking status reporting
65/// - **Processing Requirements**: Supports real-time status reporting with audit capabilities
66/// - **Compliance Integration**: Built-in validation for regulatory stop payment status requirements
67///
68/// ## Relationship to Other Messages
69/// - **Triggers**: Directly triggered by MT111 stop payment requests requiring status response
70/// - **Responses**: Provides definitive response to MT111, completing stop payment workflow
71/// - **Related**: Works with cheque processing systems and customer notification platforms
72/// - **Alternatives**: Electronic payment status messages for digital transaction cancellations
73/// - **Status Updates**: Final status message in stop payment request lifecycle
74#[serde_swift_fields]
75#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, SwiftMessage)]
76pub struct MT112 {
77 #[field("20")]
78 pub field_20: Field20, // Transaction Reference Number
79
80 #[field("21")]
81 pub field_21: Field21NoOption, // Cheque Number
82
83 #[field("30")]
84 pub field_30: Field30, // Date of Issue (YYMMDD)
85
86 #[field("32")]
87 pub field_32: Field32, // Amount
88
89 #[field("52")]
90 pub field_52: Option<Field52DrawerBank>, // Drawer Bank A
91
92 #[field("59")]
93 pub field_59: Option<Field59NoOption>, // Payee (without account number)
94
95 #[field("76")]
96 pub field_76: Field76, // Answers (Status Information)
97}