PluginProbe ʕ •ᴥ•ʔ
WooCommerce Square / 3.8.1
WooCommerce Square v3.8.1
5.4.2 5.4.1 5.4.0 trunk 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.4.0 2.4.1 2.5.0 2.5.1 2.5.2 2.5.3 2.6.0 2.7.0 2.8.0 2.9.0 2.9.1 3.0.0 3.0.1 3.0.2 3.0.3 3.1.0 3.2.0 3.3.0 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.7.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.9.0 4.0.0 4.1.0 4.2.0 4.2.1 4.2.2 4.2.3 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.4.2 4.5.0 4.5.1 4.5.2 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.8.0 4.8.1 4.8.2 4.8.3 4.8.4 4.8.5 4.8.6 4.8.7 4.8.8 4.9.0 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 4.9.6 4.9.7 4.9.8 4.9.9 5.0.0 5.0.1 5.1.0 5.1.1 5.1.2 5.2.0 5.3.0 5.3.1 5.3.2 5.3.3
woocommerce-square / includes / Utilities / Money_Utility.php
woocommerce-square / includes / Utilities Last commit date
Array_Utility.php 3 years ago Encryption_Utility.php 3 years ago Helper.php 3 years ago Money_Utility.php 3 years ago String_Utility.php 3 years ago
Money_Utility.php
149 lines
1 <?php
2 /**
3 * WooCommerce Square
4 *
5 * This source file is subject to the GNU General Public License v3.0
6 * that is bundled with this package in the file license.txt.
7 * It is also available through the world-wide-web at this URL:
8 * http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 or later
9 * If you did not receive a copy of the license and are unable to
10 * obtain it through the world-wide-web, please send an email
11 * to license@woocommerce.com so we can send you a copy immediately.
12 *
13 * DISCLAIMER
14 *
15 * Do not edit or add to this file if you wish to upgrade WooCommerce Square to newer
16 * versions in the future. If you wish to customize WooCommerce Square for your
17 * needs please refer to https://docs.woocommerce.com/document/woocommerce-square/
18 *
19 * @author WooCommerce
20 * @copyright Copyright: (c) 2019, Automattic, Inc.
21 * @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 or later
22 */
23
24 namespace WooCommerce\Square\Utilities;
25
26 use WooCommerce\Square\Framework\Plugin_Compatibility;
27 use WooCommerce\Square\Framework\Square_Helper;
28
29 defined( 'ABSPATH' ) || exit;
30
31 /**
32 * Helper for converting money values.
33 *
34 * Square deals in cents, and Woo deals in floats so this methods help conversion between the two.
35 *
36 * @since 2.0.0
37 */
38 class Money_Utility {
39
40
41 /**
42 * Converts a WooCommerce amount to a Square money object.
43 *
44 * @since 2.0.0
45 *
46 * @param float $amount amount to convert
47 * @param string $currency currency code
48 *
49 * @return \Square\Models\Money
50 */
51 public static function amount_to_money( $amount, $currency ) {
52 $amount_money = new \Square\Models\Money();
53 $amount_money->setAmount( self::amount_to_cents( $amount, $currency ) );
54 $amount_money->setCurrency( $currency );
55
56 return $amount_money;
57 }
58
59
60 /**
61 * Converts a float amount to cents.
62 *
63 * @since 2.0.0
64 *
65 * @param float $amount float amount to convert
66 * @param string $currency currency code for the amount
67 * @return int
68 */
69 public static function amount_to_cents( $amount, $currency = '' ) {
70
71 if ( ! $currency ) {
72 $currency = get_woocommerce_currency();
73 }
74
75 $cents_factor = 10 ** self::get_currency_decimals( $currency );
76 return (int) ( round( $cents_factor * $amount ) );
77 }
78
79
80 /**
81 * Converts an amount in cents to a float.
82 *
83 * @since 2.0.0
84 *
85 * @param int $cents amount in cents
86 * @param string $currency currency code for the amount
87 * @return float
88 */
89 public static function cents_to_float( $cents, $currency = '' ) {
90
91 if ( ! $currency ) {
92 $currency = get_woocommerce_currency();
93 }
94
95 $cents_factor = 10 ** self::get_currency_decimals( $currency );
96 return (float) ( $cents / $cents_factor );
97 }
98
99
100 /**
101 * Gets the standard number of decimals for the given currency.
102 *
103 * @since 2.0.2
104 *
105 * @param string $currency currency code
106 * @return int
107 */
108 public static function get_currency_decimals( $currency ) {
109
110 $other_currencies = array(
111 'BIF' => 0,
112 'CLP' => 0,
113 'DJF' => 0,
114 'GNF' => 0,
115 'HUF' => 0,
116 'JPY' => 0,
117 'KMF' => 0,
118 'KRW' => 0,
119 'MGA' => 0,
120 'PYG' => 0,
121 'RWF' => 0,
122 'VND' => 0,
123 'VUV' => 0,
124 'XAF' => 0,
125 'XOF' => 0,
126 'XPF' => 0,
127 );
128
129 $locale_info = include WC()->plugin_path() . '/i18n/locale-info.php';
130
131 $currencies = wp_list_pluck( $locale_info, 'num_decimals', 'currency_code' );
132
133 // ensure the values set in local-info.php always override the above
134 $currencies = array_merge( $other_currencies, $currencies );
135
136 /**
137 * Filters the number of decimals to use for a given currency when converting to or from its smallest denomination.
138 *
139 * @since 2.0.2
140 *
141 * @param int $decimals number of decimals
142 * @param string $currency currency code
143 */
144 return apply_filters( 'wc_square_currency_decimals', isset( $currencies[ $currency ] ) ? $currencies[ $currency ] : 2, $currency );
145 }
146
147
148 }
149