From da6b7c62e21b8ae2e31ab13cf7785ee17177716d Mon Sep 17 00:00:00 2001 From: Matthew Wire Date: Fri, 6 Jul 2018 18:37:20 +0100 Subject: [PATCH] Enable pseudoconstant for financial_type and use it to display financial type for premiums. Add "cost" column to premium UI and properly format money --- CRM/Contribute/BAO/Premium.php | 1 - CRM/Contribute/Page/ManagePremiums.php | 5 ++- CRM/Contribute/Page/Premium.php | 36 +++++++++---------- CRM/Financial/DAO/FinancialType.php | 7 +++- api/v3/FinancialType.php | 6 ++++ .../CRM/Contribute/Page/ManagePremiums.tpl | 12 ++++--- templates/CRM/Contribute/Page/Premium.tpl | 8 +++-- xml/schema/Financial/FinancialType.xml | 5 +++ 8 files changed, 49 insertions(+), 31 deletions(-) diff --git a/CRM/Contribute/BAO/Premium.php b/CRM/Contribute/BAO/Premium.php index 49b3bebe77..31ace03233 100644 --- a/CRM/Contribute/BAO/Premium.php +++ b/CRM/Contribute/BAO/Premium.php @@ -126,7 +126,6 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium { $dao->find(); $products = array(); - $radio = array(); while ($dao->fetch()) { $productDAO = new CRM_Contribute_DAO_Product(); $productDAO->id = $dao->product_id; diff --git a/CRM/Contribute/Page/ManagePremiums.php b/CRM/Contribute/Page/ManagePremiums.php index d4abc4dcd0..070a393d80 100644 --- a/CRM/Contribute/Page/ManagePremiums.php +++ b/CRM/Contribute/Page/ManagePremiums.php @@ -150,10 +150,9 @@ class CRM_Contribute_Page_ManagePremiums extends CRM_Core_Page_Basic { 'Premium', $dao->id ); - //Financial Type + // Financial Type if (!empty($dao->financial_type_id)) { - require_once 'CRM/Core/DAO.php'; - $premiums[$dao->id]['financial_type_id'] = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialType', $dao->financial_type_id, 'name'); + $premiums[$dao->id]['financial_type'] = CRM_Core_PseudoConstant::getLabel('CRM_Financial_BAO_FinancialType', 'financial_type', $dao->financial_type_id); } } $this->assign('rows', $premiums); diff --git a/CRM/Contribute/Page/Premium.php b/CRM/Contribute/Page/Premium.php index 3a61d21ed0..0028036acb 100644 --- a/CRM/Contribute/Page/Premium.php +++ b/CRM/Contribute/Page/Premium.php @@ -130,45 +130,45 @@ class CRM_Contribute_Page_Premium extends CRM_Core_Page_Basic { $pageID = CRM_Utils_Request::retrieve('id', 'Positive', $this, FALSE, 0 ); - $dao = new CRM_Contribute_DAO_Premium(); - $dao->entity_table = 'civicrm_contribution_page'; - $dao->entity_id = $pageID; - $dao->find(TRUE); - $premiumID = $dao->id; + $premiumDao = new CRM_Contribute_DAO_Premium(); + $premiumDao->entity_table = 'civicrm_contribution_page'; + $premiumDao->entity_id = $pageID; + $premiumDao->find(TRUE); + $premiumID = $premiumDao->id; $this->assign('products', FALSE); $this->assign('id', $pageID); if (!$premiumID) { return; } - $dao = new CRM_Contribute_DAO_PremiumsProduct(); - $dao->premiums_id = $premiumID; - $dao->orderBy('weight'); - $dao->find(); + $premiumsProductDao = new CRM_Contribute_DAO_PremiumsProduct(); + $premiumsProductDao->premiums_id = $premiumID; + $premiumsProductDao->orderBy('weight'); + $premiumsProductDao->find(); - while ($dao->fetch()) { + while ($premiumsProductDao->fetch()) { $productDAO = new CRM_Contribute_DAO_Product(); - $productDAO->id = $dao->product_id; + $productDAO->id = $premiumsProductDao->product_id; $productDAO->is_active = 1; if ($productDAO->find(TRUE)) { $premiums[$productDAO->id] = array(); - $premiums[$productDAO->id]['weight'] = $dao->weight; + $premiums[$productDAO->id]['weight'] = $premiumsProductDao->weight; CRM_Core_DAO::storeValues($productDAO, $premiums[$productDAO->id]); $action = array_sum(array_keys($this->links())); - $premiums[$dao->product_id]['action'] = CRM_Core_Action::formLink(self::links(), $action, - array('id' => $pageID, 'pid' => $dao->id), + $premiums[$premiumsProductDao->product_id]['action'] = CRM_Core_Action::formLink(self::links(), $action, + array('id' => $pageID, 'pid' => $premiumsProductDao->id), ts('more'), FALSE, 'premium.contributionpage.row', 'Premium', - $dao->id + $premiumsProductDao->id ); - //Financial Type - if (!empty($dao->financial_type_id)) { - $premiums[$productDAO->id]['financial_type_id'] = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialType', $dao->financial_type_id, 'name'); + // Financial Type + if (!empty($premiumsProductDao->financial_type_id)) { + $premiums[$productDAO->id]['financial_type'] = CRM_Core_PseudoConstant::getLabel('CRM_Financial_BAO_FinancialType', 'financial_type', $premiumsProductDao->financial_type_id); } } } diff --git a/CRM/Financial/DAO/FinancialType.php b/CRM/Financial/DAO/FinancialType.php index 7ee17ac490..70bd24234a 100644 --- a/CRM/Financial/DAO/FinancialType.php +++ b/CRM/Financial/DAO/FinancialType.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Financial/FinancialType.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:9d787931917508983d68631821eea721) + * (GenCodeChecksum:237f3a0cb50c930dd33a9f957677245b) */ /** @@ -114,6 +114,11 @@ class CRM_Financial_DAO_FinancialType extends CRM_Core_DAO { 'entity' => 'FinancialType', 'bao' => 'CRM_Financial_BAO_FinancialType', 'localizable' => 0, + 'pseudoconstant' => [ + 'table' => 'civicrm_financial_type', + 'keyColumn' => 'id', + 'labelColumn' => 'name', + ] ], 'description' => [ 'name' => 'description', diff --git a/api/v3/FinancialType.php b/api/v3/FinancialType.php index cc597b3445..59f0d8fe34 100644 --- a/api/v3/FinancialType.php +++ b/api/v3/FinancialType.php @@ -42,6 +42,12 @@ function civicrm_api3_financial_type_create($params) { return _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params, 'FinancialType'); } +function _civicrm_api3_financial_type_create_spec(&$params) { + $params['name']['api.required'] = 1; + $params['name']['type'] = CRM_Utils_Type::T_STRING; + unset($params['name']['pseudoconstant']); +} + /** * Get a FinancialType. * diff --git a/templates/CRM/Contribute/Page/ManagePremiums.tpl b/templates/CRM/Contribute/Page/ManagePremiums.tpl index e85be285f3..6f46d0ca47 100644 --- a/templates/CRM/Contribute/Page/ManagePremiums.tpl +++ b/templates/CRM/Contribute/Page/ManagePremiums.tpl @@ -43,7 +43,7 @@
{strip} {* handle enable/disable actions*} - {include file="CRM/common/enableDisableApi.tpl"} + {include file="CRM/common/enableDisableApi.tpl"} {include file="CRM/common/jsortable.tpl"} @@ -51,8 +51,9 @@ - + + @@ -61,9 +62,10 @@ - - - + + + + diff --git a/templates/CRM/Contribute/Page/Premium.tpl b/templates/CRM/Contribute/Page/Premium.tpl index 9abb647652..8d3398220e 100644 --- a/templates/CRM/Contribute/Page/Premium.tpl +++ b/templates/CRM/Contribute/Page/Premium.tpl @@ -37,6 +37,7 @@ + @@ -45,9 +46,10 @@ - - - + + + + diff --git a/xml/schema/Financial/FinancialType.xml b/xml/schema/Financial/FinancialType.xml index f5a7197155..d82956aa51 100644 --- a/xml/schema/Financial/FinancialType.xml +++ b/xml/schema/Financial/FinancialType.xml @@ -32,6 +32,11 @@ /donation|member|campaign/iFinancial Type Name.1.3 + +
{ts}Name{/ts} {ts}SKU{/ts} {ts}Market Value{/ts}{ts}Financial Type{/ts} {ts}Min Contribution{/ts}{ts}Actual Cost{/ts}{ts}Financial Type{/ts} {ts}Active?{/ts}
{$row.name} {$row.sku}{$row.price }{$row.financial_type_id}{$row.min_contribution}{$row.price|crmMoney}{$row.min_contribution|crmMoney}{$row.cost|crmMoney}{$row.financial_type} {if $row.is_active eq 1} {ts}Yes{/ts} {else} {ts}No{/ts} {/if} {$row.action|replace:'xx':$row.id}
{ts}SKU{/ts} {ts}Market Value{/ts} {ts}Min Contribution{/ts}{ts}Actual Cost{/ts} {ts}Financial Type{/ts} {ts}Order{/ts}
{$row.product_name} {$row.sku}{$row.price }{$row.min_contribution}{$row.financial_type_id}{$row.price|crmMoney}{$row.min_contribution|crmMoney}{$row.cost|crmMoney}{$row.financial_type} {$row.weight} {$row.action}
civicrm_financial_type
+ id + name + accounting_code -- 2.25.1