CiviCRM Community Forums (archive)

*

News:

Have a question about CiviCRM?
Get it answered quickly at the new
CiviCRM Stack Exchange Q+A site

This forum was archived on 25 November 2017. Learn more.
How to get involved.
What to do if you think you've found a bug.



  • CiviCRM Community Forums (archive) »
  • Old sections (read-only, deprecated) »
  • Support »
  • Long term release support (Moderators: mathieu, Eileen, youngjin) »
  • Membership with separate contribution bug
Pages: [1]

Author Topic: Membership with separate contribution bug  (Read 1798 times)

mathieu

  • Administrator
  • Ask me questions
  • *****
  • Posts: 620
  • Karma: 36
    • Work
  • CiviCRM version: 4.7
  • CMS version: Drupal
  • MySQL version: MariaDB 10
  • PHP version: 7
Membership with separate contribution bug
July 09, 2013, 02:28:58 pm
I found a bug that took me a really long time to isolate:

* create a contribution page that can process both memberships and contributions, with contributions/memberships being processed separately.
* make contribution amounts "allow other"
* in the "preview" contrib page (with the dummy processor), donate in the "other amounts" the same amount as the cost of the membership. Ex: if the membership is 10$, also donate 10$ in the "other amounts" field.

Interestingly, I managed to reproduce it in the 4.2 demo, but not in the 4.3 demo.

Result: DB Error: already exists

Code: [Select]
Jun 27 10:18:10  [info] $Fatal Error Details = Array (
 [...]
    [code] => -5
    [message] => DB Error: already exists
    [mode] => 16
    [debug_info] => INSERT INTO civicrm_line_item (entity_table , entity_id , price_field_id , label , qty , unit_price , line_total , participant_count , price_field_value_id ) VALUES ('civicrm_contribution' ,  5106 ,  20 , '3 year membership - $10' ,  1 ,  10.00 ,  10 ,  0 ,  52 )  [nativecode=1062 ** Duplicate entry 'civicrm_contribution-5106-52-20' for key 'UI_line_item_value']
[...]
)

Backtrace:

Code: [Select]
Jun 27 10:18:10  [info] $backTrace =
#0 /sites/all/modules/civicrm/CRM/Core/Error.php(196): CRM_Core_Error::backtrace("backTrace", TRUE)
#1 [internal function](): CRM_Core_Error::handle(Object(DB_Error))
#2 /sites/all/modules/civicrm/packages/PEAR.php(931): call_user_func((Array:2), Object(DB_Error))
#3 /sites/all/modules/civicrm/packages/DB.php(968): PEAR_Error->PEAR_Error("DB Error: already exists", -5, 16, (Array:2), "INSERT INTO civicrm_line_item (entity_table , entity_id , price_field_id , la...")
#4 /sites/all/modules/civicrm/packages/PEAR.php(564): DB_Error->DB_Error(-5, 16, (Array:2), "INSERT INTO civicrm_line_item (entity_table , entity_id , price_field_id , la...")
#5 /sites/all/modules/civicrm/packages/DB/common.php(1903): PEAR->raiseError(NULL, -5, NULL, NULL, "INSERT INTO civicrm_line_item (entity_table , entity_id , price_field_id , la...", "DB_Error", TRUE)
#6 /sites/all/modules/civicrm/packages/DB/mysql.php(898): DB_common->raiseError(-5, NULL, NULL, NULL, "1062 ** Duplicate entry 'civicrm_contribution-5106-52-20' for key 'UI_line_it...")
#7 /sites/all/modules/civicrm/packages/DB/mysql.php(327): DB_mysql->mysqlRaiseError()
#8 /sites/all/modules/civicrm/packages/DB/common.php(1216): DB_mysql->simpleQuery("INSERT INTO civicrm_line_item (entity_table , entity_id , price_field_id , la...")
#9  /sites/all/modules/civicrm/packages/DB/DataObject.php(2421): DB_common->query("INSERT INTO civicrm_line_item (entity_table , entity_id , price_field_id , la...")
#10 /sites/all/modules/civicrm/packages/DB/DataObject.php(1055): DB_DataObject->_query("INSERT INTO civicrm_line_item (entity_table , entity_id , price_field_id , la...")
#11 /sites/all/modules/civicrm/CRM/Core/DAO.php(287): DB_DataObject->insert()
#12  /sites/all/modules/civicrm/CRM/Price/BAO/LineItem.php(65): CRM_Core_DAO->save()
#13 /sites/all/modules/civicrm/CRM/Contribute/Form/AdditionalInfo.php(503): CRM_Price_BAO_LineItem::create((Array:15))
#14 /sites/all/modules/civicrm/CRM/Contribute/Form/Contribution/Confirm.php(1249): CRM_Contribute_Form_AdditionalInfo::processPriceSet(5106, (Array:1))
#15 /sites/all/modules/civicrm/CRM/Member/BAO/Membership.php(1306): CRM_Contribute_Form_Contribution_Confirm::processContribution(Object(CRM_Contribute_Form_Contribution_Confirm), (Array:58), (Array:57), "32862", Object(CRM_Contribute_DAO_ContributionType), TRUE, FALSE)
#16  /sites/all/modules/civicrm/CRM/Contribute/Form/Contribution/Confirm.php(898): CRM_Member_BAO_Membership->postProcessMembership((Array:53), "32862", Object(CRM_Contribute_Form_Contribution_Confirm), (Array:43), (Array:0), (Array:0))
#17 /sites/all/modules/civicrm/CRM/Core/Form.php(246): CRM_Contribute_Form_Contribution_Confirm->postProcess()
#18 /sites/all/modules/civicrm/CRM/Core/StateMachine.php(159): CRM_Core_Form->mainProcess()
[...]
CiviCamp Montréal, 29 septembre 2017 | Co-founder / consultant / turn-key CiviCRM hosting for Quebec/Canada @ SymbioTIC.coop

mathieu

  • Administrator
  • Ask me questions
  • *****
  • Posts: 620
  • Karma: 36
    • Work
  • CiviCRM version: 4.7
  • CMS version: Drupal
  • MySQL version: MariaDB 10
  • PHP version: 7
Re: Membership with separate contribution bug
July 09, 2013, 03:54:30 pm
I'm pretty sure it's this patch:
http://issues.civicrm.org/jira/browse/CRM-12233

Not a small patch, however ("git show  git show 9ce8bcfc8856a221f7b83c1feb448da88299f93b" on the 4.3 branch).

I did a bit of testing, and it seems to fix the issue: I get two entries in civicrm_line_item, and civicrm_contribution looks OK.

Anyone else using memberships + contributions?
CiviCamp Montréal, 29 septembre 2017 | Co-founder / consultant / turn-key CiviCRM hosting for Quebec/Canada @ SymbioTIC.coop

Pages: [1]
  • CiviCRM Community Forums (archive) »
  • Old sections (read-only, deprecated) »
  • Support »
  • Long term release support (Moderators: mathieu, Eileen, youngjin) »
  • Membership with separate contribution bug

This forum was archived on 2017-11-26.