Open ShreeKrishnaLabs opened 6 years ago
While debugging the above issue, I have traced it back to the below function which you can find it here in github https://github.com/Project60/org.project60.banking/blob/9dc6bdcc486753f70948edfd4ea36df0eb9d2f86/extension/CRM/Banking/Matcher/Engine.php and the exact code where I think the issue is $continue value turns out to be 1 and which results in return value to be false since it does not enter the if(!$continue) condition
foreach ($matchers as $matcher) {
try {
// run matchers to generate suggestions
$logger->setTimer('matcher');
$continue = $this->matchPlugin( $matcher, $context );
$logger->logTime("Matcher [{$matcher->getPluginID()}]", 'matcher');
if (!$continue) {
$lock->release();
$logger->logTime("Matching of btx [{$btx_id}]", 'matcher');
return true;
}
Now I need to find out a way to make it true so I can see options to match contributions The matcher I am using is https://github.com/Project60/org.project60.banking/blob/9dc6bdcc486753f70948edfd4ea36df0eb9d2f86/configuration_database/matcher/default/EnglishDefaults.json I think this is where I need to alter json so that $continue value turns out to be false,but unsure how I can alter it and what does each key value pair does specifically.
/**
* Run this BTX through the matchers
*
* @param CRM_Banking_BAO_BankTransaction $btx
* @param bool $override_processed Set this to TRUE if you want to re-match processed transactions.
* This will destroy all records of the execution!
*/
public function match( $btx_id, $override_processed = FALSE ) {
// TODO: timeout is 30s - do we need a setting here?
$lock_timeout = 30.0;
$lock = CRM_Utils_BankingSafeLock::acquireLock('org.project60.banking.tx'.'-'.$btx_id, $lock_timeout);
if (empty($lock)) {
error_log("org.project60.banking - couldn't acquire lock. Timeout is $lock_timeout.");
return false;
}
// load btx
$btx = new CRM_Banking_BAO_BankTransaction();
$btx->get('id', $btx_id);
if (!$override_processed) {
// don't match already executed transactions...
$processed_status_id = banking_helper_optionvalueid_by_groupname_and_name('civicrm_banking.bank_tx_status', 'Processed');
$ignored_status_id = banking_helper_optionvalueid_by_groupname_and_name('civicrm_banking.bank_tx_status', 'Ignored');
if ($btx->status_id == $processed_status_id || $btx->status_id == $ignored_status_id) {
// will not match already executed transactions
$lock->release();
return true;
}
}
// reset the BTX suggestion list
$btx->resetSuggestions();
// reset the cache / context object
$context = new CRM_Banking_Matcher_Context( $btx );
$logger = CRM_Banking_Helpers_Logger::getLogger();
// run through the list of matchers
$logger->setTimer('matching');
// run through the list of matchers
$all_matchers = $this->getMatchers();
if (empty($all_matchers)) {
CRM_Core_Session::setStatus(ts("No matcher plugins configured!"), ts('No processors'), 'alert');
} else {
foreach ($all_matchers as $weight => $matchers) {
foreach ($matchers as $matcher) {
try {
// run matchers to generate suggestions
$logger->setTimer('matcher');
$continue = $this->matchPlugin( $matcher, $context );
$logger->logTime("Matcher [{$matcher->getPluginID()}]", 'matcher');
if (!$continue) {
$lock->release();
$logger->logTime("Matching of btx [{$btx_id}]", 'matcher');
return true;
}
// check if we can execute the suggestion right aways
$abort = $this->checkAutoExecute($matcher, $btx);
if ($abort) {
$logger->logDebug("Matcher [{$matcher->getPluginID()}] executed automatically.");
$lock->release();
$logger->logTime("Matching of btx [{$btx_id}]", 'matcher');
return false;
}
} catch (Exception $e) {
$matcher_id = $matcher->getPluginID();
error_log("org.project60.banking - Exception during the execution of matcher [$matcher_id], error was: ".$e->getMessage());
$lock->release();
return false;
}
}
}
}
$btx->saveSuggestisons();
// set the status
$newStatus = banking_helper_optionvalueid_by_groupname_and_name('civicrm_banking.bank_tx_status', 'Suggestions');
$btx->status_id = $newStatus;
$btx->setStatus($newStatus);
$lock->release();
$context->destroy();
$logger->logTime("Matching of btx [{$btx_id}]", 'matcher');
return false;
}
When I click Analyse (again) button on the review page i.e.(civicrm/banking/review?s_list=45) I get 500 service unavailable error in console
The code at analysePayment@review?s_list=45:752 is