Skip to content

Commit

Permalink
BTHAB-184: Link sales order with contribution using opoortunity detai…
Browse files Browse the repository at this point in the history
…ls fields
  • Loading branch information
olayiwola-compucorp committed Sep 13, 2023
1 parent 4dba0b2 commit b9ba1fd
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ public function run(CRM_Core_Form &$form, $formName) {
'to_be_invoiced' => $toBeInvoiced,
'percent_value' => $percentValue,
'line_items' => json_encode($lineItems),
'quotation_custom_field' => CRM_Core_BAO_CustomField::getCustomFieldID('Quotation', 'Opportunity_Details', TRUE),
'case_custom_field' => CRM_Core_BAO_CustomField::getCustomFieldID('Case_Opportunity', 'Opportunity_Details', TRUE),
]);
}

Expand Down
11 changes: 11 additions & 0 deletions Civi/Api4/Action/CaseSalesOrder/ContributionCreateAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,17 @@ private function linkCaseSalesOrderToContribution(int $salesOrderId, int $contri
->addValue('percent_value', $this->percentValue)
->addValue('contribution_id', $contributionId)
->execute();

$salesOrder = CaseSalesOrder::get()
->addWhere('id', '=', $salesOrderId)
->execute()
->first();

\Civi\Api4\Contribution::update()
->addValue('Opportunity_Details.Case_Opportunity', $salesOrder['case_id'])
->addValue('Opportunity_Details.Quotation', $salesOrderId)
->addWhere('id', '=', $contributionId)
->execute();
}

/**
Expand Down
20 changes: 20 additions & 0 deletions js/sales-order-contribution.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,23 @@
(function ($, _) {
const waitForElement = function ($, elementPath, callBack) {
window.setTimeout(function () {
if ($(elementPath).length) {
callBack($, $(elementPath));
} else {
window.waitForElement($, elementPath, callBack);
}
}, 500);
};

$(document).one('crmLoad', function () {
const params = CRM.vars['uk.co.compucorp.civicase'];
const salesOrderId = params.sales_order;
const salesOrderStatusId = params.sales_order_status_id;
const percentValue = params.percent_value;
const toBeInvoiced = params.to_be_invoiced;
const lineItems = JSON.parse(params.line_items);
const caseCustomField = params.case_custom_field;
const quotationCustomField = params.quotation_custom_field;
let count = 0;

const apiRequest = {};
Expand Down Expand Up @@ -37,6 +49,14 @@
$(`<input type="hidden" value="${percentValue}" name="percent_value" />`).insertBefore('#source');
$(`<input type="hidden" value="${salesOrderStatusId}" name="sales_order_status_id" />`).insertBefore('#source');
$('#totalAmount, #totalAmountORaddLineitem, #totalAmountORPriceSet, #price_set_id, #choose-manual').hide();

waitForElement($, `[name^=${quotationCustomField}_]`, function ($, elem) {
$(`[name^=${quotationCustomField}_]`).val(caseSalesOrder.id).trigger('change');
});

waitForElement($, `[name^=${caseCustomField}_]`, function ($, elem) {
$(`[name^=${caseCustomField}_]`).val(caseSalesOrder.case_id).trigger('change');
});
});
}

Expand Down

0 comments on commit b9ba1fd

Please sign in to comment.