@@ -296,7 +296,7 @@ export class OrderingService
296
296
protected readonly awaits_render_result = new ResourceAwaitQueue < string [ ] > ;
297
297
protected readonly default_setting : ResolvedSetting ;
298
298
protected readonly default_templates : Template [ ] = [ ] ;
299
- protected readonly kafka_timeout = 10000 ;
299
+ protected readonly kafka_timeout = 15000 ;
300
300
protected readonly contact_point_type_ids = {
301
301
legal : 'legal' ,
302
302
shipping : 'shipping' ,
@@ -1408,16 +1408,15 @@ export class OrderingService
1408
1408
try {
1409
1409
if ( this . fulfillment_service ) {
1410
1410
this . logger ?. debug ( 'Evaluate fulfillment on submit...' ) ;
1411
- response . fulfillments = await this . _evaluateFulfillment (
1411
+ response . fulfillments = [ ] ;
1412
+ const fulfillment_map : Record < string , FulfillmentResponse > = { } ;
1413
+ await this . _evaluateFulfillment (
1412
1414
{
1413
1415
items : response . orders ?. filter (
1414
1416
item => {
1415
1417
const setting = settings . get ( item . payload ?. id ) ;
1416
1418
return item . status ?. code === 200
1417
- && (
1418
- setting ?. shop_fulfillment_create_enabled
1419
- || setting ?. shop_fulfillment_evaluate_enabled
1420
- ) ;
1419
+ && setting ?. shop_fulfillment_evaluate_enabled
1421
1420
}
1422
1421
) . map ( item => ( {
1423
1422
order_id : item . payload . id ,
@@ -1437,13 +1436,13 @@ export class OrderingService
1437
1436
if ( order && fulfillment . status ?. code !== 200 ) {
1438
1437
order . status = fulfillment . status ;
1439
1438
}
1439
+ fulfillment_map [ id ] = fulfillment ;
1440
1440
}
1441
1441
) ;
1442
1442
1443
1443
if ( r . operation_status ?. code !== 200 ) {
1444
1444
throw r . operation_status ;
1445
1445
}
1446
- return r . items ;
1447
1446
}
1448
1447
) . catch (
1449
1448
error => {
@@ -1455,21 +1454,27 @@ export class OrderingService
1455
1454
}
1456
1455
throw error ;
1457
1456
}
1457
+ ) . finally (
1458
+ ( ) => response . fulfillments . push ( ...Object . values ( fulfillment_map ) )
1458
1459
) ;
1459
1460
1460
1461
this . logger ?. debug ( 'Create fulfillment on submit...' ) ;
1461
- await this . fulfillment_service . create (
1462
+ await this . _createFulfillment (
1462
1463
{
1463
- items : response . fulfillments ?. filter (
1464
+ items : response . orders ?. filter (
1464
1465
item => {
1465
- const setting = settings . get ( item . payload ?. references ?. [ 0 ] ?. instance_id ) ;
1466
+ const setting = settings . get ( item . payload ?. id ) ;
1466
1467
return item . status ?. code === 200
1467
- && setting ? .shop_fulfillment_create_enabled ;
1468
+ && setting . shop_fulfillment_create_enabled ;
1468
1469
}
1469
- ) . map ( item => item . payload ) ,
1470
+ ) . map ( item => ( {
1471
+ order_id : item . payload . id ,
1472
+ } ) ) ,
1470
1473
subject : this . tech_user ?? request . subject ,
1471
1474
} ,
1472
1475
context ,
1476
+ response_map ,
1477
+ aggregation ,
1473
1478
) . then (
1474
1479
r => {
1475
1480
r . items ?. forEach (
@@ -1479,6 +1484,7 @@ export class OrderingService
1479
1484
if ( order && fulfillment . status ?. code !== 200 ) {
1480
1485
order . status = fulfillment . status ;
1481
1486
}
1487
+ fulfillment_map [ id ] = fulfillment ;
1482
1488
}
1483
1489
) ;
1484
1490
@@ -1497,12 +1503,15 @@ export class OrderingService
1497
1503
}
1498
1504
throw error ;
1499
1505
}
1506
+ ) . finally (
1507
+ ( ) => response . fulfillments . push ( ...Object . values ( fulfillment_map ) )
1500
1508
) ;
1501
1509
}
1502
1510
1503
1511
if ( this . invoice_service ) {
1504
1512
this . logger ?. debug ( 'Create invoices on submit...' ) ;
1505
- const created_invoices = await this . _createInvoice (
1513
+ response . invoices = [ ] ;
1514
+ await this . _createInvoice (
1506
1515
{
1507
1516
items : response . orders ?. filter (
1508
1517
item => {
@@ -1530,21 +1539,24 @@ export class OrderingService
1530
1539
aggregation ,
1531
1540
) . then (
1532
1541
r => {
1533
- r . items ?. forEach (
1534
- invoice => {
1535
- invoice . payload ?. references ?. forEach (
1536
- reference => {
1537
- const order = response_map [ reference ?. instance_id ] ;
1538
- if ( invoice . status ?. code !== 200 && order ) {
1539
- order . status = {
1540
- ...invoice . status ,
1541
- id : order . payload ?. id ?? order . status ?. id ,
1542
- } ;
1542
+ if ( r . items ) {
1543
+ r . items . forEach (
1544
+ invoice => {
1545
+ invoice . payload ?. references ?. forEach (
1546
+ reference => {
1547
+ const order = response_map [ reference ?. instance_id ] ;
1548
+ if ( invoice . status ?. code !== 200 && order ) {
1549
+ order . status = {
1550
+ ...invoice . status ,
1551
+ id : order . payload ?. id ?? order . status ?. id ,
1552
+ } ;
1553
+ }
1543
1554
}
1544
- }
1545
- ) ;
1546
- }
1547
- ) ;
1555
+ ) ;
1556
+ }
1557
+ ) ;
1558
+ response . invoices . push ( ...r . items ) ;
1559
+ }
1548
1560
1549
1561
if ( r . operation_status ?. code !== 200 ) {
1550
1562
throw r . operation_status ;
@@ -1593,21 +1605,24 @@ export class OrderingService
1593
1605
aggregation ,
1594
1606
) . then (
1595
1607
r => {
1596
- r . items ?. forEach (
1597
- invoice => {
1598
- invoice . payload ?. references ?. forEach (
1599
- reference => {
1600
- const order = response_map [ reference ?. instance_id ] ;
1601
- if ( invoice . status ?. code !== 200 && order ) {
1602
- order . status = {
1603
- ...invoice . status ,
1604
- id : order . payload ?. id ?? order . status ?. id ,
1605
- } ;
1608
+ if ( r . items ) {
1609
+ r . items . forEach (
1610
+ invoice => {
1611
+ invoice . payload ?. references ?. forEach (
1612
+ reference => {
1613
+ const order = response_map [ reference ?. instance_id ] ;
1614
+ if ( invoice . status ?. code !== 200 && order ) {
1615
+ order . status = {
1616
+ ...invoice . status ,
1617
+ id : order . payload ?. id ?? order . status ?. id ,
1618
+ } ;
1619
+ }
1606
1620
}
1607
- }
1608
- ) ;
1609
- }
1610
- ) ;
1621
+ ) ;
1622
+ }
1623
+ ) ;
1624
+ response . invoices . push ( ...r . items ) ;
1625
+ }
1611
1626
1612
1627
if ( r . operation_status ?. code !== 200 ) {
1613
1628
throw r . operation_status ;
@@ -1626,15 +1641,6 @@ export class OrderingService
1626
1641
}
1627
1642
) ;
1628
1643
1629
- response . invoices = [
1630
- created_invoices ,
1631
- rendered_invoices ,
1632
- ] . flatMap (
1633
- list => list
1634
- ) . filter (
1635
- item => item
1636
- ) ;
1637
-
1638
1644
this . logger ?. debug ( 'Send invoices on submit...' ) ;
1639
1645
const invoices = response . invoices ?. filter (
1640
1646
item => {
@@ -1741,10 +1747,10 @@ export class OrderingService
1741
1747
return setting ?. shop_order_send_confirm_enabled ;
1742
1748
}
1743
1749
) . map (
1744
- async ( item ) => {
1750
+ item => {
1745
1751
const render_id = `order/confirm/${ item . payload . id } ` ;
1746
1752
try {
1747
- return await this . emitRenderRequest (
1753
+ return this . emitRenderRequest (
1748
1754
item . payload ,
1749
1755
aggregation ,
1750
1756
render_id ,
@@ -2117,7 +2123,11 @@ export class OrderingService
2117
2123
} as Packaging ,
2118
2124
total_amounts : solution . solutions [ 0 ] . amounts ,
2119
2125
meta : {
2120
- owners : order . payload ?. meta ?. owners
2126
+ created : new Date ( ) ,
2127
+ modified : new Date ( ) ,
2128
+ created_by : request . subject ?. id ,
2129
+ modified_by : request . subject ?. id ,
2130
+ owners : order . payload . meta . owners ,
2121
2131
}
2122
2132
} : undefined ,
2123
2133
status : {
@@ -2566,7 +2576,11 @@ export class OrderingService
2566
2576
) ,
2567
2577
sections,
2568
2578
meta : {
2569
- owners : master . payload . meta . owners
2579
+ created : new Date ( ) ,
2580
+ modified : new Date ( ) ,
2581
+ created_by : request . subject ?. id ,
2582
+ modified_by : request . subject ?. id ,
2583
+ owners : master . payload . meta . owners ,
2570
2584
}
2571
2585
} ,
2572
2586
status : createStatusCode (
0 commit comments