/includes/data-stores/class-wc-order-item-fee-data-store.php

  1. <?php 
  2. if ( ! defined( 'ABSPATH' ) ) { 
  3. exit; 
  4.  
  5. /** 
  6. * WC Order Item Fee Data Store 
  7. * 
  8. * @version 3.0.0 
  9. * @category Class 
  10. * @author WooCommerce 
  11. */ 
  12. class WC_Order_Item_Fee_Data_Store extends Abstract_WC_Order_Item_Type_Data_Store implements WC_Object_Data_Store_Interface, WC_Order_Item_Type_Data_Store_Interface { 
  13.  
  14. /** 
  15. * Data stored in meta keys. 
  16. * @since 3.0.0 
  17. * @var array 
  18. */ 
  19. protected $internal_meta_keys = array( '_tax_class', '_tax_status', '_line_subtotal', '_line_subtotal_tax', '_line_total', '_line_tax', '_line_tax_data' ); 
  20.  
  21. /** 
  22. * Read/populate data properties specific to this order item. 
  23. * 
  24. * @since 3.0.0 
  25. * @param WC_Order_Item_Fee $item 
  26. */ 
  27. public function read( &$item ) { 
  28. parent::read( $item ); 
  29. $id = $item->get_id(); 
  30. $item->set_props( array( 
  31. 'tax_class' => get_metadata( 'order_item', $id, '_tax_class', true ),  
  32. 'tax_status' => get_metadata( 'order_item', $id, '_tax_status', true ),  
  33. 'total' => get_metadata( 'order_item', $id, '_line_total', true ),  
  34. 'taxes' => get_metadata( 'order_item', $id, '_line_tax_data', true ),  
  35. ) ); 
  36. $item->set_object_read( true ); 
  37.  
  38. /** 
  39. * Saves an item's data to the database / item meta. 
  40. * Ran after both create and update, so $id will be set. 
  41. * 
  42. * @since 3.0.0 
  43. * @param WC_Order_Item_Fee $item 
  44. */ 
  45. public function save_item_data( &$item ) { 
  46. $id = $item->get_id(); 
  47. $save_values = array( 
  48. '_tax_class' => $item->get_tax_class( 'edit' ),  
  49. '_tax_status' => $item->get_tax_status( 'edit' ),  
  50. '_line_total' => $item->get_total( 'edit' ),  
  51. '_line_tax' => $item->get_total_tax( 'edit' ),  
  52. '_line_tax_data' => $item->get_taxes( 'edit' ),  
  53. ); 
  54. foreach ( $save_values as $key => $value ) { 
  55. update_metadata( 'order_item', $id, $key, $value ); 
.