Mudanças entre as edições de "Regra de negocio para cada transportadora"

De Tek-System Wiki
Ir para navegação Ir para pesquisar
(Criou página com '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 nes...')
 
Linha 1: Linha 1:
Primeiro, você deve ter em mente que o modulo webshopapps matrix rate deve ser instalado.
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.
É 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
<nowiki>
                // 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');
                   
                        // aqui existe um campo volume no cadastro de novos produtos
                        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');
                   
                        // aqui existe um campo volume no cadastro de novos produtos
                        if( $quantidadeDeVolumesItem == null || $quantidadeDeVolumesItem == "" ) $quantidadeDeVolumesItem = 1;
                        if( !is_nan($quantidadeDeVolumesItem) && !is_nan($quantidadeParcialDoItem) ) {
                            $resultado = $quantidadeDeVolumesItem*$quantidadeParcialDoItem;
                            $quantidadeTotalDeVolumes+= $resultado;
                        }
                        $verificaSeEhFilho = false;
                    }else{
                        $verificaSeEhFilho = true;
                    }
                }
                // $resultadoFinal = 0;
                // for($arr as $item){
                //    $resultadoFinal+= $item;
                // }
                //throw new LocalizedException(__('resultadoFinal %1', $arr[2]));
                if ( (strpos($rate['shipping_method'], 'JFORT') !== false) && $quantidadeTotalDeVolumes !=0) {
                    $shippingPrice = $shippingPrice*$quantidadeTotalDeVolumes; // No caso, o shippingPrice para esta transportadora deve ser 100
                }
</nowiki>

Edição das 13h50min 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');
                    
                        // aqui existe um campo volume no cadastro de novos produtos

                        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');
                    
                        // aqui existe um campo volume no cadastro de novos produtos

                        if( $quantidadeDeVolumesItem == null || $quantidadeDeVolumesItem == "" ) $quantidadeDeVolumesItem = 1;

                        if( !is_nan($quantidadeDeVolumesItem) && !is_nan($quantidadeParcialDoItem) ) {
                            $resultado = $quantidadeDeVolumesItem*$quantidadeParcialDoItem;
                            $quantidadeTotalDeVolumes+= $resultado;

                        }

                        $verificaSeEhFilho = false;

                    }else{
                        $verificaSeEhFilho = true;
                    }



                }

                // $resultadoFinal = 0;

                // for($arr as $item){
                //     $resultadoFinal+= $item;
                // }

                //throw new LocalizedException(__('resultadoFinal %1', $arr[2]));


                if ( (strpos($rate['shipping_method'], 'JFORT') !== false) && $quantidadeTotalDeVolumes !=0) {
                    $shippingPrice = $shippingPrice*$quantidadeTotalDeVolumes; // No caso, o shippingPrice para esta transportadora deve ser 100
                }