/** * Check whether customer should be asked confirmation whether to sign a billing agreement * * @param \Magento\Paypal\Model\Config $config * @param int $customerId * @return bool */ public function shouldAskToCreateBillingAgreement(\Magento\Paypal\Model\Config $config, $customerId) { if (null === self::$_shouldAskToCreateBillingAgreement) { self::$_shouldAskToCreateBillingAgreement = false; if ($customerId && $config->shouldAskToCreateBillingAgreement()) { if ($this->_agreementFactory->create()->needToCreateForCustomer($customerId)) { self::$_shouldAskToCreateBillingAgreement = true; } } } return self::$_shouldAskToCreateBillingAgreement; }
/** * Set create billing agreement flag to api call * * @return $this */ protected function _setBillingAgreementRequest() { if (!$this->_customerId) { return $this; } $isRequested = $this->_isBARequested || $this->_quote->getPayment()->getAdditionalInformation(self::PAYMENT_INFO_TRANSPORT_BILLING_AGREEMENT); if (!($this->_config->getValue('allow_ba_signup') == PaypalConfig::EC_BA_SIGNUP_AUTO || $isRequested && $this->_config->shouldAskToCreateBillingAgreement())) { return $this; } if (!$this->_agreementFactory->create()->needToCreateForCustomer($this->_customerId)) { return $this; } $this->_api->setBillingType($this->_api->getBillingAgreementType()); return $this; }