Jump to content

Recommended Posts

Posted

Boa noite

Estou a usar um script e-commerce Opencart v1.5.2.1 e tenho o site para a minha empresa praticamente completo.

Apenas gostaria que me ajudassem numa situação .

No passo 5 do checkout "Forma de pagamento" tenho 3 opções : paypal / transferencia bancaria / contra-reeembolso . Gostaria de , para uma categoria de productos que tenho , restringir o modo de contra-reeembolso , mas apenas para esse certo produto / caterogia de producto .

Ou seja , a encomenda pode ter varios productos , mas ao ter apenas um producto daquela categoria deixa de ser logo possivel o envio contra-reeembolso , era so isso .

É preciso certamente algum codigo que crie uma função no checkout que quando aparece um producto que seja dessa categoria que seja impossivel pagar em contra reembolso.

Qual será o ficheiro a editar ? Talves algum destes ?

/www/ocart/catalog/view/theme/default/template/checkout/checkout.tpl

/www/ocart/catalog/controller/checkout/checkout.php

Será que alguem me pode ajudar com a função por favor ?

Muito Obrigado

RNRF

Posted

Fiz o download e olhei para os controladores em catalog/controller/checkout

Parece-me que no passo 5, o controlador é ControllerCheckoutPaymentMethod (payment_method.php)

Deve ser aqui que terás que consultar de novo os produtos e conforme as condições que indicaste, listar apenas os metodos de pagamento que queres, ou seja, filtrares a lista de métodos de pagamento aqui (linha 45):

$results = $this->model_setting_extension->getExtensions('payment');
Posted

Muito Boa tarde

Agradeço desde já o tempo que reservou para o meu problema e por me ter tentando ajudar .

Ainda assim não estou a conseguir encontrar a solução para o problema pois o meu problema mesmo é o código.

$results = $this->model_setting_extension->getExtensions('payment');

que significa esta linha de codigo ?

Posted

Viva.

Já passei por parecido.

Edita /catalog/controller/checkout/payment.php

Procura por

if ($this->request->server['REQUEST_METHOD'] == 'POST') {

e adiciona, imediatamente antes, o seguinte código:

        $products = $this->cart->getProducts();
        $this->load->model('catalog/product');
        $hasTargetCat = false;
        foreach ($products as $product) {
            $temp_product_id = $product['product_id'];

            $temp_categories = $this->model_catalog_product->getCategories($temp_product_id);
            foreach($temp_categories as $temp_category) {
                if($temp_category['category_id']==18)$hasTargetCat=true;
            }
        }

Substitui o 18 que aí meti hardcoded por um ou mais category_ids.

Depois procura:

            if (isset($this->session->data['payment_methods'])) {
                $this->data['payment_methods'] = $this->session->data['payment_methods'];
            } else {
                $this->data['payment_methods'] = array();
            }

e adiciona imediatamente depois:

            if($hasTargetCat) {
                foreach($this->data['payment_methods'] as $kpm=>$vmp) {
                    if($vmp['code']=='cod')unset ($this->data['payment_methods'][$kpm]);
                }
            }

estou a comparar o codigo do metodo de pagamento com a string "cod" que é a que identifica o core payment method "Cash On Delivery" do OC. Pode ser diferente no teu caso.

Isto foi feito um bocado de cabeça e sem ter sido muito testado mas é um bom principio.

Posted

Basicamente o q faz este código em termos práticos ?

A primeira parte saca as categorias de cada produto presente no carrinho de compras e compara-as com as que devem eliminar o contra-reeembolso.

A segunda parte elimina o contra-reembolso da lista de métodos de pagamento se se verificar a condição hasTargetCat.

Posted

E como é que ela sabe quais é que deve eleminar ou nao ? Como defino isso para a categoria que pretendo ?

Hmmm... não sei se compreendi a pergunta.

No exemplo que te dei, no caso de existir algum produto da cat 18, o contra-reembolso deverá ser eliminado, log a var hasTargetCat  é alterada para true.

O segundo snippet percorre todos os métodos de pagamento e elimina o contra-reembolso... caso hasTargetCat seja true...

Posted

desculpa , mas da parte de programação eu nao percebo quase nada.

Agradeço imenso desde ja a paciencia que estas a ter em me tentar ajudar , mas para eu conseguir por aquilo como pretendo nao vai ser muito rapido estou a ver lol . Mas pronto , so vou ter que editar o ficheiro do payment.php certo ? O codigo da categoria que vou querer alterar é a 34 entao

Posted

(...) so vou ter que editar o ficheiro do payment.php certo ? O codigo da categoria que vou querer alterar é a 34 entao

Exacto. Atenção: isto não foi testado convenientemente... convém testar... introduzir e retirar produtos do carrinho, com utilizador logado e guest, etc.

Posted

Boa amigo

O fiicheiro /catalog/controller/checkout/payment.php , nao existe na minha versao ,

o que eu tenho é /catalog/controller/checkout/payment_method.php , e neste nao existe o codigo

if ($this->request->server['REQUEST_METHOD'] == 'POST') {

=\

Exacto. Atenção: isto não foi testado convenientemente... convém testar... introduzir e retirar produtos do carrinho, com utilizador logado e guest, etc.

Posted

Ainda não trabalho com essa versão... Sou um late adopter por convicção e estou à espera de deixar o pó assentar e dos outros se chatearem com hipotéticos bugs.

Assim que tiver algum tempo livre vou olhar para isso.

Posted

Que pena nao conheceres esta versão =\ Será que no forum do Opencart me podem ajudar com isso mostrando o teu codigo ou o codigo é diferente para as novas versoes ?

Posted

Eu tambem penso que nao , so talves mude os ficheiros e alguns campos de codigo , certamente ou é no cart.php ou no payment_method.php , mas entao achas que me podes ver isso para quando ? Ser-me-ia um preciosa ajuda .

Cumprimentos

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.