@@ -115,6 +115,86 @@ public function testMissingUNTUNZ()
115115 $ this ->assertSame (['UNZ ' , 'UNT ' ], $ segments );
116116 }
117117
118+ public function testOrderError ()
119+ {
120+ $ edi = file_get_contents (__DIR__ . '/../files/example_order_error.edi ' );
121+ $ parser = new Parser ($ edi );
122+ $ mapping = new \EDI \Mapping \MappingProvider ('D95B ' );
123+ $ analyser = new Analyser ();
124+ $ segs = $ analyser ->loadSegmentsXml ($ mapping ->getSegments ());
125+ $ svc = $ analyser ->loadSegmentsXml ($ mapping ->getServiceSegments (3 ));
126+
127+ $ interpreter = new Interpreter ($ mapping ->getMessage ('ORDERS ' ), $ segs , $ svc );
128+ /** @noinspection UnusedFunctionResultInspection */
129+ $ interpreter ->prepare ($ parser ->get ());
130+ $ this ->assertSame (
131+ [
132+ 0 => 'There \'s a character not escaped with ? in the data; string :::H-Vollmilch 3,5% ?*?*Marke?*?*:1l Tertra mit Drehverschluss ' ,
133+ ],
134+ $ parser ->errors ()
135+ );
136+
137+ $ errors = $ interpreter ->getErrors ();
138+ $ this ->assertCount (3 , $ errors );
139+ $ segments = [];
140+ foreach ($ errors as $ err ) {
141+ $ segments [] = $ err ['segmentId ' ];
142+ }
143+ $ this ->assertSame (['IMD ' , 'IMD ' , 'IMD ' ], $ segments );
144+
145+ $ this ->assertCount (2 , $ interpreter ->getMessages ());
146+
147+ $ this ->assertContains ('"messageHeader" ' , $ interpreter ->getJson (true ));
148+ $ this ->assertContains ('"interchangeHeader" ' , $ interpreter ->getJsonServiceSegments (true ));
149+
150+ $ arrayy = $ interpreter ->getArrayy ();
151+ $ this ->assertSame (
152+ 'Butter 40x250g Alu ' ,
153+ $ arrayy ->get ('0.SG25.0.itemDescription.itemDescription.itemDescription ' )
154+ );
155+
156+ $ arrayy = $ interpreter ->getArrayyServiceSegments ();
157+ $ this ->assertCount (
158+ 13 ,
159+ $ arrayy ->get ('interchangeHeader ' )
160+ );
161+ }
162+
163+ public function testOrderOk ()
164+ {
165+ $ edi = file_get_contents (__DIR__ . '/../files/example_order_ok.edi ' );
166+ $ parser = new Parser ($ edi );
167+ $ mapping = new \EDI \Mapping \MappingProvider ('D95B ' );
168+ $ analyser = new Analyser ();
169+ $ segs = $ analyser ->loadSegmentsXml ($ mapping ->getSegments ());
170+ $ svc = $ analyser ->loadSegmentsXml ($ mapping ->getServiceSegments (3 ));
171+
172+ $ interpreter = new Interpreter ($ mapping ->getMessage ('ORDERS ' ), $ segs , $ svc );
173+ /** @noinspection UnusedFunctionResultInspection */
174+ $ interpreter ->prepare ($ parser ->get ());
175+ $ this ->assertSame ([], $ parser ->errors ());
176+
177+ $ errors = $ interpreter ->getErrors ();
178+ $ this ->assertCount (0 , $ errors );
179+
180+ $ this ->assertCount (2 , $ interpreter ->getMessages ());
181+
182+ $ this ->assertContains ('"messageHeader" ' , $ interpreter ->getJson (true ));
183+ $ this ->assertContains ('"interchangeHeader" ' , $ interpreter ->getJsonServiceSegments (true ));
184+
185+ $ arrayy = $ interpreter ->getArrayy ();
186+ $ this ->assertSame (
187+ 'Butter 40x250g Alu ' ,
188+ $ arrayy ->get ('0.SG25.0.itemDescription.itemDescription.itemDescription ' )
189+ );
190+
191+ $ arrayy = $ interpreter ->getArrayyServiceSegments ();
192+ $ this ->assertCount (
193+ 13 ,
194+ $ arrayy ->get ('interchangeHeader ' )
195+ );
196+ }
197+
118198 public function testMissingUNBUNH ()
119199 {
120200 $ edi = "UNT+30+1907'UNZ+1+1865' " ;
0 commit comments