| @@ 957-978 (lines=22) @@ | ||
| 954 | 'coupon' => 'coupon_lines', |
|
| 955 | ); |
|
| 956 | ||
| 957 | foreach ( $lines as $line_type => $line ) { |
|
| 958 | if ( isset( $request[ $line ] ) && is_array( $request[ $line ] ) ) { |
|
| 959 | $update_totals = true; |
|
| 960 | foreach ( $request[ $line ] as $item ) { |
|
| 961 | // Item ID is always required. |
|
| 962 | if ( ! array_key_exists( 'id', $item ) ) { |
|
| 963 | throw new WC_REST_Exception( 'woocommerce_rest_invalid_item_id', __( 'Order item ID is required.', 'woocommerce' ), 400 ); |
|
| 964 | } |
|
| 965 | ||
| 966 | // Create item. |
|
| 967 | if ( is_null( $item['id'] ) ) { |
|
| 968 | $this->set_item( $order, $line_type, $item, 'create' ); |
|
| 969 | } elseif ( $this->item_is_null( $item ) ) { |
|
| 970 | // Delete item. |
|
| 971 | wc_delete_order_item( $item['id'] ); |
|
| 972 | } else { |
|
| 973 | // Update item. |
|
| 974 | $this->set_item( $order, $line_type, $item, 'update' ); |
|
| 975 | } |
|
| 976 | } |
|
| 977 | } |
|
| 978 | } |
|
| 979 | ||
| 980 | // Set payment method. |
|
| 981 | if ( ! empty( $request['payment_method'] ) ) { |
|
| @@ 466-496 (lines=31) @@ | ||
| 463 | 'coupon' => 'coupon_lines', |
|
| 464 | ); |
|
| 465 | ||
| 466 | foreach ( $lines as $line_type => $line ) { |
|
| 467 | ||
| 468 | if ( isset( $data[ $line ] ) && is_array( $data[ $line ] ) ) { |
|
| 469 | ||
| 470 | $update_totals = true; |
|
| 471 | ||
| 472 | foreach ( $data[ $line ] as $item ) { |
|
| 473 | ||
| 474 | // item ID is always required |
|
| 475 | if ( ! array_key_exists( 'id', $item ) ) { |
|
| 476 | throw new WC_CLI_Exception( 'woocommerce_invalid_item_id', __( 'Order item ID is required', 'woocommerce' ) ); |
|
| 477 | } |
|
| 478 | ||
| 479 | // create item |
|
| 480 | if ( is_null( $item['id'] ) ) { |
|
| 481 | ||
| 482 | $this->set_item( $order, $line_type, $item, 'create' ); |
|
| 483 | ||
| 484 | } elseif ( $this->item_is_null( $item ) ) { |
|
| 485 | ||
| 486 | // delete item |
|
| 487 | wc_delete_order_item( $item['id'] ); |
|
| 488 | ||
| 489 | } else { |
|
| 490 | ||
| 491 | // update item |
|
| 492 | $this->set_item( $order, $line_type, $item, 'update' ); |
|
| 493 | } |
|
| 494 | } |
|
| 495 | } |
|
| 496 | } |
|
| 497 | ||
| 498 | // payment method (and payment_complete() if `paid` == true and order needs payment) |
|
| 499 | if ( isset( $data['payment_details'] ) && is_array( $data['payment_details'] ) ) { |
|