Enviar valores para script frete.php e utilizar valor retorno

(Fbonline) #1

Olá pessoal,
Sou iniciante no scriptcase, eu desenvolvi um script php chamado frete.php que ao ser enviado parâmetros de região e peso ele me retorna o valor do frete.
Tenho uma tela(form) de pedido feita no scriptcase agora preciso criar um botão na tela ( calcular frete) onde ele vai enviar a região e peso para o frete.php e usar o valor de retorno no campo “valor do frete” do form pedido.
Qual a melhor forma de fazer isso?
Agradeço atenção

(Cleyton Euler) #2

Talvez se vc criar um botão PHP e colocar nele o código que calcula o frete funcione.

Nos parâmetros que o script php precisa vc coloca os nomes dos campos:

peso = {nomedocampopeso}
regiao = {nomedocamporegiao}

{campovalorfrete} = peso * regiao

Não sei se entedeu o exemplo, se vc postar o código fica mais facil de ajudar.

(Cleyton Euler) #3

Talvez um evento ajax em algum campo apropriado fique melhor ainda.

(George Carvalho) #4

Fbonline,

Vc esta utilizando o web service dos correios?

(Fbonline) #5

Primeiramente gostaria de agradecer a ajuda de todos:
segue abaixo o script que estou usando pra obter retorno do valor do frete;

[code]

$frete = new Frete();
$frete->getFrete(‘joinville’,‘curitiba’,10,15);
session_start();

$db = null;
class Frete {
function __construct(){
return true;
}

/**********************************************************************
VALIDA / CRIA / ELIMINA ESTABELECIMENTO
**********************************************************************/

function getFrete($cidadeOrigem,$cidadeDestino,$pesoInicial,$pesoFim){
	$db=$this->connection();
	
	$ArrayRetorno ="Sem resultado para essa pesquisa!";
	if($cidadeOrigem!="" && $cidadeDestino!="" && $pesoInicial!="" && $pesoFim!=""){
		$resultado = mysql_query("SELECT * FROM frete
							   WHERE cidadeOrigem ='".$cidadeOrigem."' 
							   and cidadeDestino ='".$cidadeDestino."' 
							   and pesoInicial = ".$pesoInicial." 
							   and pesoFim =".$pesoFim);
	
		while ($linha = mysql_fetch_object($resultado)) {
						$ArrayRetorno[]=$linha;
		}
		mysql_free_result($resultado);
	}
	
	
	
	
	return($ArrayRetorno);
}[/code]

Sobre a pergunta do George não estou usando webservice dos correios estou usando este script acima.

Mais ajuda fico grato.

(George Carvalho) #6

Obrigado.

(Fbonline) #7

Pensei em criar uma
1- função CalculaFrete();
2- chamar a função assim que abrir o form de pedidos e ao incluir mais itens no pedido

Como devo criar a função?
Ela deve pegar a somatória do peso dos itens e a região de entrega do destinatário do pedido enviar os valores para o script frete.php e pegar o valor de retorno o colocar no campo valor do frete.

Nao sei como fazer isso
Obrigado

(Cleyton Euler) #8

Que tipo de aplicação vc está usando?

(Fbonline) #9

Obrigado por responder,
Estou usando aplicação mestre / detalhe com informacoes do pedido e item do pedido.

(Cleyton Euler) #10

Eu tentaria fazer assim:

Um campo no master somando o peso dos produtos inseridos no detalhe.
Um campo para informar a origem
Um campo para informar o destino
Um campo para mostrar o valor do frete

Um botão para calcular frete, que pega os dados dos campos, faz a busca na tabela e calcula o valor do frete.

Nesta sua select não está faltando o valor do frete? Como vc calcula o valor do frete?

(Fbonline) #11

Obrigado,
Desculpe não ter mencionado, o valor do frete eu nao calculo, ele vem direto da tabela frete campo vlfrete.
Ex: a transportadora manda valor que ela cobra de origem ate destino com isso cadastro no sistema o nome da transportadora cidade origem cidade destino e valor cobrado isso fica salvo na tabela frete.

Acha melhor eu colocar esse código direto no scritpcase ou manter ele externo?
Nao sei como vou pegar este valor do frete e colocar ele no campo valor do frete como sugeriu na mensagem anterior.
Sobre a somatória do peso dos itens como eu posso fazer no scriptcase tem algum exemplo ou dica?
Muito obrigado pela ajuda.

(Cleyton Euler) #12

Tem uma macro sc_master_value que atualiza um campo no mestre. Dê uma olhada na documentação para ver como usar.

Acho que vc vai precisar deste campos no master:

O campo peso_total deve ser atualizado pela macro sc_master_value

{origem}
{destino}
{peso_total}
{valor_frete}

O usuário informa a origem e o destino. O sistema pega a origem e o distino informado mais o peso total e busca na tabela frete o valor do frete usando como parametros a origem, o destino e o peso total.

sc_lookup(ds_frete,“select valor_frete from tab_frete where origem = {origem} And destino = {destino} And peso_inicial > {peso_total} And peso_final < {peso_total}”);

Aqui vc informa o valor do frete no campo

{valor_frete} = {ds_frete[0][0]};

Os campos origem e destino podem ser do tipo select buscando os dados na tabela frete mesmo.

Confira a construção dos código, fiz rapidão aqui, talves que virgulas fora do lugar. rsrs

(Fbonline) #13

Olá Cleyton,

Coloquei um botão e nele o codigo:

sc_lookup(ds_frete,"select FRETE_VALOR from FRETES_TRANSPORTADORA where CIDADE_ORIGEM = ‘RIBEIRAO PRETO’ and CIDADE_DESTINO = ‘SAO JOSE DO RIO PRETO’
and PESO_INICIAL >= ‘1’ and PESO_FINAL <= ‘99’
");
{VALOR_FRETE} = 12;

Coloquei somente para teste,
Ao clicar no botão que está no Form Mestre ele dá um refresh e aparece um botão OK na tela nada mais, já testei essa SQL no FLAMEROBIN e funcionou ela dá o result, certinho.

Obrigado

(Fbonline) #14

Olá Pessoal consegui usando o evento Onload script para testar:

sc_lookup(result,“SELECT FRETE_VALOR FROM FRETES_TRANSPORTADORA WHERE CIDADE_ORIGEM = ‘RIBEIRAO PRETO’
AND CIDADE_DESTINO = ‘SAO JOSE DO RIO PRETO’
AND PESO_INICIAL >= ‘1’ and PESO_FINAL <= ‘99’”);
//sc_master_value(‘VALOR_FRETE’, ‘12’);
{VALOR_FRETE} = {result[0][0]};

e agora já mostra o valor no campo assim que carrega.

Agora preciso fazer funcionar em um botão de preferencia sem dar refresh na página.

Alguém pra me orientar?

(Cleyton Euler) #15

Por eventos ajax nos campos que calculam não funciona?