class-wc-order-item-fee-data-store.php 2.0 KB

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