class-wc-order-item-coupon-data-store.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. /**
  3. * Class WC_Order_Item_Coupon_Data_Store file.
  4. *
  5. * @package WooCommerce\DataStores
  6. */
  7. if ( ! defined( 'ABSPATH' ) ) {
  8. exit;
  9. }
  10. /**
  11. * WC Order Item Coupon Data Store
  12. *
  13. * @version 3.0.0
  14. */
  15. class WC_Order_Item_Coupon_Data_Store extends Abstract_WC_Order_Item_Type_Data_Store implements WC_Object_Data_Store_Interface, WC_Order_Item_Type_Data_Store_Interface {
  16. /**
  17. * Data stored in meta keys.
  18. *
  19. * @since 3.0.0
  20. * @var array
  21. */
  22. protected $internal_meta_keys = array( 'discount_amount', 'discount_amount_tax' );
  23. /**
  24. * Read/populate data properties specific to this order item.
  25. *
  26. * @since 3.0.0
  27. * @param WC_Order_Item_Coupon $item Coupon order item.
  28. */
  29. public function read( &$item ) {
  30. parent::read( $item );
  31. $id = $item->get_id();
  32. $item->set_props(
  33. array(
  34. 'discount' => get_metadata( 'order_item', $id, 'discount_amount', true ),
  35. 'discount_tax' => get_metadata( 'order_item', $id, 'discount_amount_tax', true ),
  36. )
  37. );
  38. $item->set_object_read( true );
  39. }
  40. /**
  41. * Saves an item's data to the database / item meta.
  42. * Ran after both create and update, so $item->get_id() will be set.
  43. *
  44. * @since 3.0.0
  45. * @param WC_Order_Item_Coupon $item Coupon order item.
  46. */
  47. public function save_item_data( &$item ) {
  48. $id = $item->get_id();
  49. $save_values = array(
  50. 'discount_amount' => $item->get_discount( 'edit' ),
  51. 'discount_amount_tax' => $item->get_discount_tax( 'edit' ),
  52. );
  53. foreach ( $save_values as $key => $value ) {
  54. update_metadata( 'order_item', $id, $key, $value );
  55. }
  56. }
  57. }