@@ -26,6 +26,7 @@ import {
26
26
} from '@restorecommerce/rc-grpc-clients/dist/generated-server/io/restorecommerce/fulfillment_product.js' ;
27
27
import { BigNumber } from 'bignumber.js' ;
28
28
import { Package } from '@restorecommerce/rc-grpc-clients/dist/generated-server/io/restorecommerce/product.js' ;
29
+ import { Attribute } from '@restorecommerce/rc-grpc-clients/dist/generated-server/io/restorecommerce/attribute.js' ;
29
30
30
31
dayjs . extend ( customParseFormat ) ;
31
32
@@ -166,6 +167,7 @@ const DefaultUrns = {
166
167
dhl_roundWeightUp : 'urn:restorecommerce:fulfillment:product:attribute:dhl:roundWeightUp' ,
167
168
dhl_stepPrice : 'urn:restorecommerce:fulfillment:product:attribute:dhl:stepPrice' ,
168
169
dhl_stepWeight : 'urn:restorecommerce:fulfillment:product:attribute:dhl:stepWeightInKg' ,
170
+ dhl_premium : 'urn:restorecommerce:fulfillment:product:attribute:dhl:service' ,
169
171
} ;
170
172
171
173
type KnownUrns = typeof DefaultUrns ;
@@ -437,14 +439,20 @@ export class DHLSoap extends Stub {
437
439
}
438
440
}
439
441
440
- protected parseService ( attributes : any [ ] ) {
441
- return attributes . filter ( ( att : any ) =>
442
- att . id . startsWith ( this . urns . dhl_service )
442
+ protected parseService ( attributes : Attribute [ ] ) {
443
+ return attributes ?. reverse ( ) . filter ( ( att : Attribute ) =>
444
+ att . id ? .startsWith ( this . urns . dhl_service )
443
445
) . map ( ( att : any ) => ( {
444
446
[ att . value ] : {
445
- attributes : Object . assign ( { } , ...att . attribute . map ( ( att : any ) => ( {
446
- [ att . id ] : att . value
447
- } ) ) ) }
447
+ attributes : Object . assign (
448
+ {
449
+ active : "1" ,
450
+ } ,
451
+ ...att . attribute . map (
452
+ ( att : any ) => ( { [ att . id ] : att . value } )
453
+ )
454
+ )
455
+ }
448
456
} ) ) ;
449
457
}
450
458
@@ -624,6 +632,17 @@ export class DHLSoap extends Stub {
624
632
} ,
625
633
ShipmentOrder : requests . map ( ( request , i ) : ShipmentOrder => {
626
634
const packaging = request . payload . packaging ;
635
+ const variant = {
636
+ ...( request . product . variants ?. find (
637
+ v => packaging . parcels . map (
638
+ p => p . variant_id . includes ( v . id )
639
+ )
640
+ ) ?? { } )
641
+ }
642
+ variant . attributes = [
643
+ ...( variant . attributes ?? [ ] ) ,
644
+ ...( request . product ?. attributes ?? [ ] ) ,
645
+ ] ;
627
646
return {
628
647
sequenceNumber : i + 1 ,
629
648
Shipment : {
@@ -673,24 +692,19 @@ export class DHLSoap extends Stub {
673
692
shipmentDate : new Date ( ) . toISOString ( ) . slice ( 0 , 10 ) ,
674
693
costCenter : '' ,
675
694
customerReference : request . payload . id ,
676
- product : request . product . attributes . find (
695
+ product : variant . attributes . find (
677
696
att => att . id === this . urns . dhl_productName
678
697
) ?. value ,
679
- accountNumber : request . product . attributes . find (
698
+ accountNumber : variant . attributes . find (
680
699
att => att . id === this . urns . dhl_accountNumber
681
700
) ?. value ?? this . stub_config ?. ordering ?. account_number ,
682
- // Service: parseService(request.parcel .attributes),
701
+ Service : this . parseService ( variant . attributes ) ,
683
702
ShipmentItem : {
684
703
heightInCM : request . parcel . package . size_in_cm . height ,
685
704
lengthInCM : request . parcel . package . size_in_cm . length ,
686
705
widthInCM : request . parcel . package . size_in_cm . width ,
687
706
weightInKG : request . parcel . package . weight_in_kg ,
688
707
} ,
689
- /* No longer supported!!!
690
- Notification: {
691
- recipientEmailAddress: packaging.notify
692
- }
693
- */
694
708
}
695
709
}
696
710
} ;
0 commit comments