@@ -13,27 +13,31 @@ define(
13
13
'uiRegistry' ,
14
14
'../model/url-builder' ,
15
15
'mage/storage' ,
16
- '../model/payment-service'
17
-
16
+ '../model/payment-service' ,
17
+ 'underscore'
18
18
] ,
19
- function ( quote , addressList , navigator , selectShippingAddress , registry , urlBuilder , storage , paymentService ) {
19
+ function ( quote , addressList , navigator , selectShippingAddress , registry , urlBuilder , storage , paymentService , _ ) {
20
20
"use strict" ;
21
21
var actionCallback ;
22
22
var result = function ( billingAddress , useForShipping , additionalData ) {
23
+ var copyBillingToShipping = function ( ) {
24
+ var shippingAddressSource = registry . get ( 'checkoutProvider' ) ,
25
+ shippingAddress = shippingAddressSource . get ( 'shippingAddress' ) ;
26
+ for ( var property in billingAddress ) {
27
+ if ( billingAddress . hasOwnProperty ( property ) && shippingAddress . hasOwnProperty ( property ) ) {
28
+ if ( typeof billingAddress [ property ] === 'string' ) {
29
+ shippingAddressSource . set ( 'shippingAddress.' + property , billingAddress [ property ] ) ;
30
+ } else {
31
+ shippingAddressSource . set ( 'shippingAddress.' + property , _ . clone ( billingAddress [ property ] ) ) ;
32
+ }
33
+ }
34
+ }
35
+ } ;
23
36
additionalData = additionalData || { } ;
24
37
quote . setBillingAddress ( billingAddress ) ;
25
38
if ( useForShipping ( ) === '1' && ! quote . isVirtual ( ) ) {
26
39
if ( ! billingAddress . customerAddressId ) {
27
- // update shipping address data in corresponding provider
28
- var shippingAddressSource = registry . get ( 'checkoutProvider' ) ;
29
- var shippingAddress = shippingAddressSource . get ( 'shippingAddress' ) ;
30
- for ( var property in billingAddress ) {
31
- if ( billingAddress . hasOwnProperty ( property )
32
- && shippingAddress . hasOwnProperty ( property )
33
- ) {
34
- shippingAddressSource . set ( 'shippingAddress.' + property , billingAddress [ property ] ) ;
35
- }
36
- }
40
+ copyBillingToShipping ( ) ;
37
41
}
38
42
selectShippingAddress ( billingAddress , useForShipping , additionalData ) ;
39
43
} else if ( quote . isVirtual ( ) ) {
@@ -72,6 +76,9 @@ define(
72
76
) ;
73
77
} else {
74
78
navigator . setCurrent ( 'billingAddress' ) . goNext ( ) ;
79
+ if ( addressList . isBillingSameAsShipping ) {
80
+ copyBillingToShipping ( ) ;
81
+ }
75
82
}
76
83
} ;
77
84
result . setActionCallback = function ( value ) {
0 commit comments