Mudanças entre as edições de "Regra de negocio para cada transportadora"
Ir para navegação
Ir para pesquisar
(Uma revisão intermediária pelo mesmo usuário não está sendo mostrada) | |||
Linha 25: | Linha 25: | ||
foreach($products as $product) | foreach($products as $product) | ||
{ | { | ||
if( !$product->getHasChildren() && $verificaSeEhFilho ){ // Produto Simples que nao seja filho | if( !$product->getHasChildren() && $verificaSeEhFilho ){ // Produto Simples que nao seja filho | ||
Linha 35: | Linha 33: | ||
$quantidadeDeVolumesItem = $product->getData('quantidade_de_volumes'); | $quantidadeDeVolumesItem = $product->getData('quantidade_de_volumes'); | ||
if( $quantidadeDeVolumesItem == null || $quantidadeDeVolumesItem == "" ) $quantidadeDeVolumesItem = 1; | if( $quantidadeDeVolumesItem == null || $quantidadeDeVolumesItem == "" ) $quantidadeDeVolumesItem = 1; | ||
if( !is_nan($quantidadeDeVolumesItem) && !is_nan($quantidadeParcialDoItem) ) { | if( !is_nan($quantidadeDeVolumesItem) && !is_nan($quantidadeParcialDoItem) ) { | ||
Linha 48: | Linha 42: | ||
} | } | ||
$verificaSeEhFilho = true; | $verificaSeEhFilho = true; | ||
} | } | ||
Linha 65: | Linha 54: | ||
$quantidadeDeVolumesItem = $product->getData('quantidade_de_volumes'); | $quantidadeDeVolumesItem = $product->getData('quantidade_de_volumes'); | ||
if( $quantidadeDeVolumesItem == null || $quantidadeDeVolumesItem == "" ) $quantidadeDeVolumesItem = 1; | if( $quantidadeDeVolumesItem == null || $quantidadeDeVolumesItem == "" ) $quantidadeDeVolumesItem = 1; | ||
Linha 82: | Linha 69: | ||
} | } | ||
} | |||
if ( (strpos($rate['shipping_method'], 'JFORT') !== false) && $quantidadeTotalDeVolumes !=0) { | |||
$shippingPrice = $shippingPrice*$quantidadeTotalDeVolumes; // No caso, o shippingPrice para esta transportadora deve ser 100 | |||
} | } | ||
</nowiki> | |||
Observe como deve trabalhado o loop, ja que produtos configuraveis pai se repetem no loop. | |||
Observe tambem que aplicamos esta regra somente para a transportadora JFORT | |||
A regra aplica 100 reais para cada modulo que sera enviado para a transportadora. | |||
2 - Para criar um campo a mais, siga o mesmo processo de volume que fica em: | |||
vendor/webshopapps/module-matrix/src/model/resourceModel/Carrier/Matrixrate |
Edição atual tal como às 13h54min de 16 de março de 2018
Primeiro, você deve ter em mente que o modulo webshopapps matrix rate deve ser instalado. É ele que será usado para as regras de negocios. Todas as regras ficarao contidas neste plugin.
1 - Criar regras proprias sem ter que adicionar campos novos na planilha
Vá em:
vendor/webshopapps/module-matrixrates/src/model/carrier/matrixrate.php
// CODIGO MODIFICADO - INICIO $quantidadeTotalDeVolumes = 0; $products = $request->getAllItems(); $arr = []; $verificaSeEhFilho = true; foreach($products as $product) { if( !$product->getHasChildren() && $verificaSeEhFilho ){ // Produto Simples que nao seja filho $quantidadeParcialDoItem = $product->getQty(); $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $product = $objectManager->create('Magento\Catalog\Model\Product')->load($product->getProductId()); $quantidadeDeVolumesItem = $product->getData('quantidade_de_volumes'); if( $quantidadeDeVolumesItem == null || $quantidadeDeVolumesItem == "" ) $quantidadeDeVolumesItem = 1; if( !is_nan($quantidadeDeVolumesItem) && !is_nan($quantidadeParcialDoItem) ) { $resultado = $quantidadeDeVolumesItem*$quantidadeParcialDoItem; $quantidadeTotalDeVolumes+= $resultado; } $verificaSeEhFilho = true; } if($product->getHasChildren()){ // Produtos configuraveis $quantidadeParcialDoItem = $product->getQty(); $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $product = $objectManager->create('Magento\Catalog\Model\Product')->load($product->getProductId()); $quantidadeDeVolumesItem = $product->getData('quantidade_de_volumes'); if( $quantidadeDeVolumesItem == null || $quantidadeDeVolumesItem == "" ) $quantidadeDeVolumesItem = 1; if( !is_nan($quantidadeDeVolumesItem) && !is_nan($quantidadeParcialDoItem) ) { $resultado = $quantidadeDeVolumesItem*$quantidadeParcialDoItem; $quantidadeTotalDeVolumes+= $resultado; } $verificaSeEhFilho = false; }else{ $verificaSeEhFilho = true; } } if ( (strpos($rate['shipping_method'], 'JFORT') !== false) && $quantidadeTotalDeVolumes !=0) { $shippingPrice = $shippingPrice*$quantidadeTotalDeVolumes; // No caso, o shippingPrice para esta transportadora deve ser 100 }
Observe como deve trabalhado o loop, ja que produtos configuraveis pai se repetem no loop.
Observe tambem que aplicamos esta regra somente para a transportadora JFORT
A regra aplica 100 reais para cada modulo que sera enviado para a transportadora.
2 - Para criar um campo a mais, siga o mesmo processo de volume que fica em:
vendor/webshopapps/module-matrix/src/model/resourceModel/Carrier/Matrixrate