| Server IP : 213.186.33.4 / Your IP : 216.73.216.193 Web Server : Apache System : Linux webm006.cluster103.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : awebpaca ( 35430) PHP Version : 8.5.0 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/awebpaca/boutiques/app/code/core/Mage/Sales/Model/Billing/ |
Upload File : |
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category Mage
* @package Mage_Sales
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/**
* Billing Agreement abstract model
*
* @author Magento Core Team <core@magentocommerce.com>
*/
class Mage_Sales_Model_Billing_Agreement extends Mage_Payment_Model_Billing_AgreementAbstract
{
const STATUS_ACTIVE = 'active';
const STATUS_CANCELED = 'canceled';
/**
* Init model
*
*/
protected function _construct()
{
$this->_init('sales/billing_agreement');
}
/**
* Set created_at parameter
*
* @return Mage_Core_Model_Abstract
*/
protected function _beforeSave()
{
$date = Mage::getModel('core/date')->gmtDate();
if ($this->isObjectNew()) {
$this->setCreatedAt($date);
} else {
$this->setUpdatedAt($date);
}
return parent::_beforeSave();
}
/**
* Retrieve billing agreement status label
*
* @return string
*/
public function getStatusLabel()
{
switch ($this->getStatus()) {
case self::STATUS_ACTIVE:
return Mage::helper('sales')->__('Active');
case self::STATUS_CANCELED:
return Mage::helper('sales')->__('Canceled');
}
}
/**
* Initialize token
*
* @return string
*/
public function initToken()
{
$this->getPaymentMethodInstance()
->initBillingAgreementToken($this);
return $this->getRedirectUrl();
}
/**
* Get billing agreement details
* Data from response is inside this object
*
* @return Mage_Sales_Model_Billing_Agreement
*/
public function verifyToken()
{
$this->getPaymentMethodInstance()
->getBillingAgreementTokenInfo($this);
return $this;
}
/**
* Create billing agreement
*
* @return Mage_Sales_Model_Billing_Agreement
*/
public function place()
{
$this->verifyToken();
$this->getPaymentMethodInstance()
->placeBillingAgreement($this);
$this->setCustomerId($this->getCustomer()->getId())
->setMethodCode($this->getMethodCode())
->setReferenceId($this->getBillingAgreementId())
->setStatus(self::STATUS_ACTIVE)
->save();
return $this;
}
/**
* Cancel billing agreement
*
* @return Mage_Sales_Model_Billing_Agreement
*/
public function cancel()
{
$this->setStatus(self::STATUS_CANCELED);
$this->getPaymentMethodInstance()->updateBillingAgreementStatus($this);
return $this->save();
}
/**
* Check whether can cancel billing agreement
*
* @return bool
*/
public function canCancel()
{
return ($this->getStatus() != self::STATUS_CANCELED);
}
/**
* Retrieve billing agreement statuses array
*
* @return array
*/
public function getStatusesArray()
{
return array(
self::STATUS_ACTIVE => Mage::helper('sales')->__('Active'),
self::STATUS_CANCELED => Mage::helper('sales')->__('Canceled')
);
}
/**
* Validate data
*
* @return bool
*/
public function isValid()
{
$result = parent::isValid();
if (!$this->getCustomerId()) {
$this->_errors[] = Mage::helper('payment')->__('Customer ID is not set.');
}
if (!$this->getStatus()) {
$this->_errors[] = Mage::helper('payment')->__('Billing Agreement status is not set.');
}
return $result && empty($this->_errors);
}
/**
* Import payment data to billing agreement
*
* $payment->getBillingAgreementData() contains array with following structure :
* [billing_agreement_id] => string
* [method_code] => string
*
* @param Mage_Sales_Model_Order_Payment $payment
* @return Mage_Sales_Model_Billing_Agreement
*/
public function importOrderPayment(Mage_Sales_Model_Order_Payment $payment)
{
$baData = $payment->getBillingAgreementData();
$this->_paymentMethodInstance = (isset($baData['method_code']))
? Mage::helper('payment')->getMethodInstance($baData['method_code'])
->setStore($payment->getMethodInstance()->getStore())
: $payment->getMethodInstance();
$this->setCustomerId($payment->getOrder()->getCustomerId())
->setMethodCode($this->_paymentMethodInstance->getCode())
->setReferenceId($baData['billing_agreement_id'])
->setStatus(self::STATUS_ACTIVE);
return $this;
}
/**
* Retrieve available customer Billing Agreements
*
* @param int $customer
* @return Mage_Paypal_Controller_Express_Abstract
*/
public function getAvailableCustomerBillingAgreements($customerId)
{
$collection = Mage::getResourceModel('sales/billing_agreement_collection');
$collection->addFieldToFilter('customer_id', $customerId)
->addFieldToFilter('status', self::STATUS_ACTIVE)
->setOrder('agreement_id');
return $collection;
}
/**
* Check whether need to create billing agreement for customer
*
* @param int $customerId
* @return bool
*/
public function needToCreateForCustomer($customerId)
{
return $customerId ? count($this->getAvailableCustomerBillingAgreements($customerId)) == 0 : false;
}
/**
* Add order relation to current billing agreement
*
* @param int $orderId
* @return Mage_Sales_Model_Billing_Agreement
*/
public function addOrderRelation($orderId)
{
$this->getResource()->addOrderRelation($this->getId(), $orderId);
return $this;
}
}