Try out a below code.
File - Vendor\Custom\etc\events.xml
<event name="adminhtml_customer_save_after">
<observer name="customer_get_balance" instance="Vendor\Custom\Observer\GetCustomerBalance"/>
</event>
File - Vendor\Custom\Observer\GetCustomerBalance.php
<?php
namespace Vendor\Custom\Observer;
use Magento\Framework\Event\Observer as EventObserver;
use Magento\Framework\Event\ObserverInterface;
/**
* Class GetCustomerBalance
* @package Vendor\Custom\Observer
*/
class GetCustomerBalance implements ObserverInterface
{
/**
* @var \Psr\Log\LoggerInterface
*/
private $logger;
/**
* SaveCustomer constructor.
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
* @param \Psr\Log\LoggerInterface $logger
* @param \Magento\CustomerBalance\Model\BalanceFactory $balanceFactory
* @param \Magento\Customer\Api\CustomerRepositoryInterface $customerRepositoryInterface
*/
public function __construct(
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Psr\Log\LoggerInterface $logger,
\Magento\CustomerBalance\Model\BalanceFactory $balanceFactory,
\Magento\Customer\Api\CustomerRepositoryInterface $customerRepositoryInterface
)
{
$this->_storeManager = $storeManager;
$this->logger = $logger;
$this->_balanceFactory = $balanceFactory;
$this->_customerRepositoryInterface = $customerRepositoryInterface;
}
/**
* @param EventObserver $observer
* @return $this|void
* @throws \Magento\Framework\Exception\LocalizedException
* @throws \Magento\Framework\Exception\NoSuchEntityException
*/
public function execute(EventObserver $observer)
{
$this->logger->info(' -- Changed Balance Field of Update Balance -- ');
/* @var $request \Magento\Framework\App\RequestInterface */
$request = $observer->getRequest();
$data = $request->getPost('customerbalance');
if ($data && !empty($data['amount_delta'])) {
$this->logger->info($data['amount_delta']);
}
/* @var $customer \Magento\Customer\Api\Data\CustomerInterface */
$customer = $observer->getCustomer();
$websiteId = $this->_storeManager->getStore($customer->getStoreId())->getWebsiteId();
$balanceModel = $this->_balanceFactory->create()->setCustomerId(
$customer->getId()
)->setWebsiteId(
$websiteId
)->loadByCustomer();
$amount = $balanceModel->getAmount();
$this->logger->info(' -- Final Balance -- ');
$this->logger->info($amount);
return $this;
}
}
See the debug.log
file you will see something like below:
report.INFO: -- Changed Balance Field of Update Balance -- [] []
report.INFO: 7 [] []
report.INFO: -- Final Balance -- [] []
report.INFO: 307 [] []