public function test_accountPv()
 {
     /** === Test Data === */
     $custId = 21;
     $orderId = 34;
     $operId = 1024;
     $pvTotal = 300;
     $accIdCust = 101;
     $accIdRepres = 202;
     /** === Setup Mocks === */
     // $sale = $this->_repoSale->getById($saleId);
     $this->mRepoSale->shouldReceive('getById')->once()->with($orderId)->andReturn(new Sale([Sale::ATTR_TOTAL => $pvTotal]));
     // $customerId = $this->_repoMod->getSaleOrderCustomerId($saleId);
     $this->mRepoMod->shouldReceive('getSaleOrderCustomerId')->once()->with($orderId)->andReturn($custId);
     // $respGetAccCust = $this->_callAccount->get($reqGetAccCust);
     $mRespGetAccCust = new \Praxigento\Accounting\Service\Account\Response\Get();
     $mRespGetAccCust->setData([Account::ATTR_ID => $accIdCust]);
     $this->mCallAccount->shouldReceive('get')->once()->andReturn($mRespGetAccCust);
     // $respGetAccRepres = $this->_callAccount->getRepresentative($reqGetAccRepres);
     $mRespGetAccRepres = new \Praxigento\Accounting\Service\Account\Response\GetRepresentative();
     $mRespGetAccRepres->setData([Account::ATTR_ID => $accIdRepres]);
     $this->mCallAccount->shouldReceive('getRepresentative')->once()->andReturn($mRespGetAccRepres);
     // $respAddOper = $this->_callOperation->add($reqAddOper);
     $mRespAddOper = new \Praxigento\Accounting\Service\Operation\Response\Add();
     $this->mCallOperation->shouldReceive('add')->once()->andReturn($mRespAddOper);
     // $operId = $respAddOper->getOperationId();
     $mRespAddOper->setOperationId($operId);
     /** === Call and asserts  === */
     $req = new Request\AccountPv();
     $req->setSaleOrderId($orderId);
     $res = $this->obj->accountPv($req);
     $this->assertTrue($res->isSucceed());
     $operId = $res->getOperationId();
     $this->assertEquals($operId, $operId);
 }
 public function test_accountPv()
 {
     $obm = \Magento\Framework\App\ObjectManager::getInstance();
     /** @var  $call Call */
     $call = $obm->get('Praxigento\\Pv\\Service\\Sale\\Call');
     $req = new Request\AccountPv();
     $req->setSaleOrderId(1);
     /** @var  $resp Response\AccountPv */
     $resp = $call->accountPv($req);
     $this->assertTrue($resp->isSucceed());
 }
示例#3
0
 /**
  * Account PV on sale done.
  *
  * @param Request\AccountPv $request
  *
  * @return Response\AccountPv
  */
 public function accountPv(Request\AccountPv $request)
 {
     $result = new Response\AccountPv();
     $saleId = $request->getSaleOrderId();
     $customerId = $request->getCustomerId();
     $dateApplied = $request->getDateApplied();
     $this->_logger->info("PV accounting operation for sale order #{$saleId} is started.");
     $sale = $this->_repoSale->getById($saleId);
     $pvTotal = $sale->getTotal();
     /* get customer for sale order */
     if (is_null($customerId)) {
         $this->_logger->info("There is no customer ID in request, select customer ID from sale order data.");
         $customerId = $this->_repoMod->getSaleOrderCustomerId($saleId);
         $this->_logger->info("Order #{$saleId} is created by customer #{$customerId}.");
     }
     /* get PV account data for customer */
     $reqGetAccCust = new GetAccountRequest();
     $reqGetAccCust->setCustomerId($customerId);
     $reqGetAccCust->setAssetTypeCode(Cfg::CODE_TYPE_ASSET_PV);
     $reqGetAccCust->setCreateNewAccountIfMissed(true);
     $respGetAccCust = $this->_callAccount->get($reqGetAccCust);
     /* get PV account data for representative */
     $reqGetAccRepres = new GetAccountRepresentativeRequest();
     $reqGetAccRepres->setAssetTypeCode(Cfg::CODE_TYPE_ASSET_PV);
     $respGetAccRepres = $this->_callAccount->getRepresentative($reqGetAccRepres);
     /* create one operation with one transaction */
     $reqAddOper = new AddOperationRequest();
     $reqAddOper->setOperationTypeCode(Cfg::CODE_TYPE_OPER_PV_SALE_PAID);
     $trans = [Transaction::ATTR_DEBIT_ACC_ID => $respGetAccRepres->getId(), Transaction::ATTR_CREDIT_ACC_ID => $respGetAccCust->getId(), Transaction::ATTR_VALUE => $pvTotal, Transaction::ATTR_DATE_APPLIED => $dateApplied];
     $reqAddOper->setTransactions([$trans]);
     $respAddOper = $this->_callOperation->add($reqAddOper);
     $operId = $respAddOper->getOperationId();
     $result->setOperationId($operId);
     $result->markSucceed();
     $this->_logger->info("PV accounting operation for sale order #{$saleId} is completed.");
     return $result;
 }