Add database changes to support > 2 decimal places in calculations
authorMatthew Wire <devel@mrwire.co.uk>
Sat, 21 Oct 2017 09:04:35 +0000 (10:04 +0100)
committerMatthew Wire <devel@mrwire.co.uk>
Sat, 21 Oct 2017 09:04:35 +0000 (10:04 +0100)
CRM/Member/DAO/MembershipType.php
CRM/Price/DAO/PriceFieldValue.php
CRM/Upgrade/Incremental/sql/4.7.28.mysql.tpl
xml/schema/Member/MembershipType.xml
xml/schema/Price/PriceFieldValue.xml

index b0e32cc43bd184bcce25278c872f5730acd806bd..3077ceba0fa01c74e242d8e48929821c1e5a4330 100644 (file)
@@ -30,7 +30,7 @@
  *
  * Generated from xml/schema/CRM/Member/MembershipType.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:22af2c3f87df3ad7cf2002c145f53cc6)
+ * (GenCodeChecksum:c86019d4817d79e1dd59d69eaa2a3eb6)
  */
 require_once 'CRM/Core/DAO.php';
 require_once 'CRM/Utils/Type.php';
@@ -299,8 +299,8 @@ class CRM_Member_DAO_MembershipType extends CRM_Core_DAO {
           'title' => ts('membership Type Minimum Fee') ,
           'description' => 'Minimum fee for this membership (0 for free/complimentary memberships).',
           'precision' => array(
-            20,
-            2
+            18,
+            9
           ) ,
           'table_name' => 'civicrm_membership_type',
           'entity' => 'MembershipType',
index f9de529cfa9235e7acc6856c197245935ff5fcc8..fb0465b855a26a008c6571bbfdc20bd108bce355 100644 (file)
@@ -30,7 +30,7 @@
  *
  * Generated from xml/schema/CRM/Price/PriceFieldValue.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:d5b9853fb1321ad9872ce5b11a582d81)
+ * (GenCodeChecksum:fed218269d1baab495490130b4e2442a)
  */
 require_once 'CRM/Core/DAO.php';
 require_once 'CRM/Utils/Type.php';
@@ -95,7 +95,7 @@ class CRM_Price_DAO_PriceFieldValue extends CRM_Core_DAO {
   /**
    * Price field option amount
    *
-   * @var string
+   * @var float
    */
   public $amount;
   /**
@@ -292,12 +292,14 @@ class CRM_Price_DAO_PriceFieldValue extends CRM_Core_DAO {
         ) ,
         'amount' => array(
           'name' => 'amount',
-          'type' => CRM_Utils_Type::T_STRING,
+          'type' => CRM_Utils_Type::T_MONEY,
           'title' => ts('Amount') ,
           'description' => 'Price field option amount',
           'required' => true,
-          'maxlength' => 512,
-          'size' => 8,
+          'precision' => array(
+            18,
+            9
+          ) ,
           'table_name' => 'civicrm_price_field_value',
           'entity' => 'PriceFieldValue',
           'bao' => 'CRM_Price_BAO_PriceFieldValue',
index 432a1628be473ec664512e2be5338f62edaea99f..f4024bcb75e6206a633be9de64da081088954bbd 100644 (file)
@@ -49,3 +49,7 @@ UPDATE `civicrm_state_province` SET `name` = 'Sălaj' WHERE `name` = 'Sa laj' AN
 UPDATE `civicrm_state_province` SET `name` = 'Timiș' WHERE `name` = 'Timis' AND `country_id` = 1176;
 UPDATE `civicrm_state_province` SET `name` = 'Vâlcea' WHERE `name` = 'Valcea' AND `country_id` = 1176;
 UPDATE `civicrm_state_province` SET `name` = 'Pazardzhik' WHERE `name` = 'Pazardzik' AND `country_id` = 1033;
+
+-- CRM-20772 Price set calculation precision when sales tax enabled
+ALTER TABLE `civicrm_membership_type` CHANGE `minimum_fee` `minimum_fee` DECIMAL(18,9) NULL DEFAULT '0.00' COMMENT 'Minimum fee for this membership (0 for free/complimentary memberships).';
+ALTER TABLE `civicrm_price_field_value` CHANGE `amount` `amount` DECIMAL(18,9) NOT NULL COMMENT 'Price field option amount';
index e1cca9d096b1ab0458b52a0a9c3ff2e53894455b..6b6f92682292c55ea8e266ccc6f5bffbc3a55795 100644 (file)
     <name>minimum_fee</name>
     <title>membership Type Minimum Fee</title>
     <type>decimal</type>
+    <length>18,9</length>
     <comment>Minimum fee for this membership (0 for free/complimentary memberships).</comment>
     <default>0</default>
     <add>1.5</add>
index b68992a1b454315c5d3add48619a97f07b44908b..03cc83453d5f800ad838d4ad08a0e34ba702257e 100644 (file)
@@ -95,9 +95,9 @@
   </field>
   <field>
     <name>amount</name>
-    <type>varchar</type>
+    <type>decimal</type>
     <title>Amount</title>
-    <length>512</length>
+    <length>18,9</length>
     <html>
       <type>Text</type>
       <size>8</size>