Magento 2 EE | How to create/update new record in magento_customerbalance_history table?
-
08-03-2021 - |
Question
I am trying it as:
Using the collection
\Magento\CustomerBalance\Model\Balance\HistoryFactory $historyFactory
As
$model = $this->_historyFactory->create();
//$model->setId(2);
$model->setData('balance_amount', 333);
$model->save();
But it prompts this exception:
1 exception(s): Exception #0 (Magento\Framework\Exception\LocalizedException): A balance is needed to save a balance history.
Solution
If you see in file magento/module-customer-balance/Model/Balance/History.php
line no: 154. You need to set setBalanceModel
and setHistoryAction
like this
require __DIR__ . '/app/bootstrap.php';
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
$obj = $bootstrap->getObjectManager();
$state = $obj->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');
// for Update customer balance history set setHistoryAction(2)
$customerBalance = $obj->create(\Magento\CustomerBalance\Model\BalanceFactory::class)->create()->load(2)->setHistoryAction(2);
$customerBalanceHistory = $obj->create(\Magento\CustomerBalance\Model\Balance\History::class)->create()
->setBalanceModel($customerBalance)
->setId(2)
->setAdditionalInfo('test')
->save();
// for new entry use set setHistoryAction(1)
$customerBalance = $obj->create(\Magento\CustomerBalance\Model\BalanceFactory::class)->create()->load(2)->setHistoryAction(1);
$customerBalanceHistory = $obj->create(\Magento\CustomerBalance\Model\Balance\HistoryFactory::class)->create()
->setBalanceModel($customerBalance)
->setAdditionalInfo('test')
->save();
Hope this will solve your problem.
Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange