Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Suporte geral sobre problemas técnicos para OpenCart v3.x.
#90852
Olá,
Encontrei um tópico onde uma alterção possibilitou trazer opções de endereços porem quando se tem mais de uma loja cadastrada, conforme segue o link viewtopic.php?f=90&t=17387
Funciona perfeitamente da forma como fez a modificação, porem tenho apenas uma loja cadastrada e dois endereços para retirar. Os endereços eu tenho cadastrado em Configurações->Dados auxiliares->Localizações.
Alguém conseguiria alterar essa alteração do @veteranodf para buscar as informações no cadastro de endereço ao invés do cadastro de lojas?
Desde já muito obrigado!
Seguem as alterações feitas pelo @veteranodf:
Se estiver utilizando o módulo nativo "Retirar na loja" é só fazer a seguinte alteração no arquivo catalog/model/extension/shipping/pickup.php
Localizar:
Código: Selecionar todos
			$quote_data['pickup'] = array(
				'code'         => 'pickup.pickup',
				'title'        => $this->language->get('text_description'),
				'cost'         => 0.00,
				'tax_class_id' => 0,
				'text'         => $this->currency->format(0.00, $this->session->data['currency'])
			);
Substituir por:
Código: Selecionar todos
			$stores = array();

			$stores[] = array(
				'store_id' => 0,
				'name'     => $this->config->get('config_name')
			);

			$this->load->model('setting/store');

			$results = $this->model_setting_store->getStores();

			foreach ($results as $result) {
				$stores[] = array(
					'store_id' => $result['store_id'],
					'name'     => $result['name']
				);
			}
			
			foreach($stores as &$store) {
				$quote_data['pickup'.$store['store_id']] = array(
					'code'         => 'pickup.pickup'.$store['store_id'],
					'title'        => 'Retirar em ('.$store['name'].')',
					'cost'         => 0.00,
					'tax_class_id' => 0,
					'text'         => $this->currency->format(0.00, $this->session->data['currency'])
				);
			}
Editado pela última vez por dariopencart em 13 Out 2022, 10:07, em um total de 1 vez.
#90856
Resolvido!! Funcionou perfeitamente!! Muito obrigado @veteranodf :D
Segue a alteração no arquivo catalog/model/extension/shipping/pickup.php proposta pelo @veteranodf

Localizar:
Código: Selecionar todos
			$quote_data['pickup'] = array(
				'code'         => 'pickup.pickup',
				'title'        => $this->language->get('text_description'),
				'cost'         => 0.00,
				'tax_class_id' => 0,
				'text'         => $this->currency->format(0.00, $this->session->data['currency'])
			);

Substituir por:
Código: Selecionar todos
            $query_location = $this->db->query("SELECT * FROM `" . DB_PREFIX . "location`");
            
            foreach($query_location->rows as &$location) {
                $quote_data['pickup'.$location['location_id']] = array(
                    'code'         => 'pickup.pickup'.$location['location_id'],
                    'title'        => 'Retirar em ('.$location['name'].')',
                    'cost'         => 0.00,
                    'tax_class_id' => 0,
                    'text'         => $this->currency->format(0.00, $this->session->data['currency'])
                );
            }