added MPC VPC switch
This commit is contained in:
@@ -45,8 +45,6 @@ class B2BPayments extends PaymentModule implements PrestaShop\PrestaShop\Core\Mo
|
||||
if (
|
||||
!parent::install() ||
|
||||
!$this->registerHook('paymentOptions')
|
||||
// || !$this->registerHook('displayCustomerAccount')
|
||||
// || !$this->registerHook('displayBeforeShoppingCartBlock')
|
||||
|| !$this->registerHook('DisplayOrderConfirmation')
|
||||
) {
|
||||
return false;
|
||||
@@ -228,7 +226,18 @@ class B2BPayments extends PaymentModule implements PrestaShop\PrestaShop\Core\Mo
|
||||
return $payment_options;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a customer is in a B2B group.
|
||||
*/
|
||||
public function isCustomerB2B(?int $customer_id): bool
|
||||
{
|
||||
|
||||
if (!$customer_id && !($customer_id = $this->context->customer->id)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (bool) count(array_intersect([Configuration::get('B2BPAYMENTS_POSTPAID_GROUP'), Configuration::get('B2BPAYMENTS_PREPAID_GROUP')], Customer::getGroupsStatic($customer_id)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a customer is in a specific group.
|
||||
@@ -279,10 +288,27 @@ class B2BPayments extends PaymentModule implements PrestaShop\PrestaShop\Core\Mo
|
||||
*/
|
||||
public function renderWidget($hookName, array $configuration)
|
||||
{
|
||||
/** call it in .tpl like {widget name='b2bpayments' hook='breadcrumb_price_visibility_switch'} */
|
||||
|
||||
if ($hookName == 'breadcrumb_price_visibility_switch') {
|
||||
if ($this->isCustomerB2B(null)) {
|
||||
return $this->fetch('module:' . $this->name . '/views/templates/hook/breadcrumb_price_visibility_switch.tpl');
|
||||
}
|
||||
return '';
|
||||
}
|
||||
/** call it in .tpl like {widget name='b2bpayments' hook='get_mpc' product=$product} */
|
||||
if ($hookName == 'get_mpc') {
|
||||
|
||||
if ($this->isCustomerB2B(null) && isset($configuration['product']->embedded_attributes)) {
|
||||
return $this->renderMPC($configuration['product']->embedded_attributes);
|
||||
}
|
||||
return '';
|
||||
}
|
||||
$this->smarty->assign($this->getWidgetVariables($hookName, $configuration));
|
||||
if ($hookName == 'breadcrumb') {
|
||||
return $this->fetch('module:' . $this->name . '/views/templates/hook/breadcrumb.tpl');
|
||||
}
|
||||
|
||||
return $this->fetch('module:' . $this->name . '/views/templates/hook/b2b_switch.tpl');
|
||||
}
|
||||
|
||||
@@ -357,4 +383,29 @@ class B2BPayments extends PaymentModule implements PrestaShop\PrestaShop\Core\Mo
|
||||
|
||||
return $this->fetch('module:b2bpayments/views/templates/hook/displayOrderConfirmation.tpl');
|
||||
}
|
||||
|
||||
|
||||
public function renderMPC($embeddedProductAttributes): string
|
||||
{
|
||||
|
||||
$id_product_attribute = (int)$embeddedProductAttributes['id_product_attribute'] ?? null;
|
||||
$id_product = (int)$embeddedProductAttributes['id_product'];
|
||||
$this->smarty->assign(['mpc' => $this->context->getCurrentLocale()->formatPrice(
|
||||
$this->calculateMPC($id_product, $id_product_attribute),
|
||||
$this->context->currency->iso_code
|
||||
)]);
|
||||
|
||||
return $this->fetch('module:b2bpayments/views/templates/hook/mpc.tpl');
|
||||
}
|
||||
|
||||
public function calculateMPC(int $id_product, ?int $id_product_attribute): float
|
||||
{
|
||||
$originalCustomer = Context::getContext()->customer;
|
||||
$guestContext = Context::getContext();
|
||||
$guestContext->customer = new Customer();
|
||||
$specific_price_output = null;
|
||||
$regularPrice = Product::getPriceStatic($id_product, true, $id_product_attribute, 2, null, false, true, 1, false, null, null, null, $specific_price_output, true, true, $guestContext);
|
||||
Context::getContext()->customer = $originalCustomer;
|
||||
return $regularPrice;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user