RNRF Posted April 18, 2012 at 12:25 PM Report #449675 Posted April 18, 2012 at 12:25 PM 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
taviroquai Posted April 21, 2012 at 07:11 PM Report #450442 Posted April 21, 2012 at 07:11 PM 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');
RNRF Posted April 22, 2012 at 01:42 PM Author Report #450513 Posted April 22, 2012 at 01:42 PM 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 ?
simonoop Posted April 23, 2012 at 10:44 AM Report #450686 Posted April 23, 2012 at 10:44 AM 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.
RNRF Posted April 23, 2012 at 10:55 AM Author Report #450687 Posted April 23, 2012 at 10:55 AM Basicamente o q faz este código em termos práticos ?
simonoop Posted April 23, 2012 at 11:05 AM Report #450690 Posted April 23, 2012 at 11:05 AM 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.
RNRF Posted April 23, 2012 at 12:00 PM Author Report #450696 Posted April 23, 2012 at 12:00 PM E como é que ela sabe quais é que deve eleminar ou nao ? Como defino isso para a categoria que pretendo ?
simonoop Posted April 23, 2012 at 12:28 PM Report #450703 Posted April 23, 2012 at 12:28 PM 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...
RNRF Posted April 23, 2012 at 12:50 PM Author Report #450707 Posted April 23, 2012 at 12:50 PM 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
simonoop Posted April 23, 2012 at 01:31 PM Report #450711 Posted April 23, 2012 at 01:31 PM (...) 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.
RNRF Posted April 25, 2012 at 07:57 PM Author Report #451457 Posted April 25, 2012 at 07:57 PM 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.
RNRF Posted April 25, 2012 at 08:10 PM Author Report #451459 Posted April 25, 2012 at 08:10 PM Envio ai 2 ficheiros que talves possam ser o que procuramos para adicionar o codigo . cart.php - http://pastebin.com/cfFC3RWK payment_method.php- http://pastebin.com/xW1Xm7PU Se puderes vê se algum deles contem o que eu procuro por favor , obrigado
simonoop Posted April 25, 2012 at 11:12 PM Report #451495 Posted April 25, 2012 at 11:12 PM Viva. Que versão do OC estás a usar?
RNRF Posted April 26, 2012 at 10:06 AM Author Report #451528 Posted April 26, 2012 at 10:06 AM 1.5.2.1
simonoop Posted April 26, 2012 at 10:31 AM Report #451534 Posted April 26, 2012 at 10:31 AM 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.
RNRF Posted April 26, 2012 at 11:54 AM Author Report #451567 Posted April 26, 2012 at 11:54 AM 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 ?
simonoop Posted April 26, 2012 at 12:08 PM Report #451571 Posted April 26, 2012 at 12:08 PM Infelizmente não faço ideia. Vou ter de olhar para o código responsável por isso na 1.5.2.1 Calculo que não ande muito longe daquilo que fiz para a 1.5.1.x
RNRF Posted April 26, 2012 at 12:23 PM Author Report #451572 Posted April 26, 2012 at 12:23 PM 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
simonoop Posted April 27, 2012 at 10:26 AM Report #451731 Posted April 27, 2012 at 10:26 AM Viva. Penso que terei tempo para ver isto durante o fim de semana. Aviso quando chegar a alguma conclusão!
RNRF Posted April 27, 2012 at 11:54 AM Author Report #451744 Posted April 27, 2012 at 11:54 AM Muito obrigado 🙂
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now