Boa noite a todos,
não manjo NADA de PHP, entretando tava desesperadamente precisando do frete no carrinho, porém o cálculo deveria usar as dimensões cadastradas, inclusive somar, caso tenha mais de um produto, por isso tomei uma medida desesperada e fiz uma puta gambiarra pra calcular o frete com as dimensoes e pesos do banco.
Passo aqui como eu fiz, para quem quiser fazer. Que fique bem claro que não me orgulho nem um pouco do que eu fiz, gambiarra ao extremo. Vo usar dessa forma até q saia uma versão descente para tal recurso.
Obs. 1: Faça um backup dos arquivos antes de alterá-los.
Obs. 2: Há possibilidade de ocorrer erros nos cálculos, pois não foi mto bem testado. Testem antes de usar!
Essas edições a seguir é em cima do que o nosso amigo do fórum fez frete_carrinho.zip.
Não precisa ter peso habilitado no carrinho (era um requisito do qual eu também precisava).
No arquivo cart.tpl, localizado em catalog/view/theme/default/template/checkout/cart.tpl na linha 55 adicione o seguinte código:
Código que antecede a linha 55:
Código: Selecionar todos...
<td align="right" valign="top"><?php echo $product['price']; ?></td>
<td align="right" valign="top"><?php echo $product['total']; ?></td>
<?php } ?>
</tr>
Código a ser inserido:
Código: Selecionar todos <?php //Aqui é a linha 55
//GAMBIARRA
$count = 0;
for($i = 1; $i <= $product['quantity']; $i++){
$product_keys[$count] = $product['key'];
$count = $count + 1;
}
if(!isset($_SESSION)){
session_start();
}
$_SESSION['product_keys'] = $product_keys;
//FIM DA GAMBIARRA
?>
Código posterior:
Agora no arquivo calcular.php na linha 39 localizado na raiz você deve adicionar:
Código que antecede:
Código a ser inserido:
Código: Selecionar todos//GAMBIARRA
if(!isset($_SESSION)){
session_start();
}
$produtos = $_SESSION['product_keys'];
$conexao = mysql_connect('url','login','senha') or die (mysql_error());
$db = mysql_select_db("nome_data_base",$conexao);
$weight = 0;
$lenght = 0;
$width = 0;
$height = 0;
foreach ($produtos as $produto) {
$sql = "SELECT weight, length, width, height FROM product where product_id = '$produto'" ;
$res = mysql_query($sql,$conexao) or exit(mysql_error());
while ($row = mysql_fetch_assoc($res)) {
$weight += $row['weight'];
$lenght += $row['length'];
$width += $row['width'];
$height += $row['height'];
}
}
//PARAMETROS ADICIONADOS AO ENDERECO DO WEB SERVICE
if($srv == '40045') {
$url = "http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?nCdEmpresa=&sDsSenha=&sCepOrigem=".$cepOrigem."&sCepDestino=".$cepDestino."&nVlPeso=".$weight."&nCdFormato=1&nVlComprimento=".$lenght."&nVlAltura=".$height."&nVlLargura=".$width."&sCdMaoPropria=n&nVlValorDeclarado=1&sCdAvisoRecebimento=n&nCdServico=".$srv."&nVlDiametro=20&StrRetorno=xml";
} else {
$url = "http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?nCdEmpresa=&sDsSenha=&sCepOrigem=".$cepOrigem."&sCepDestino=".$cepDestino."&nVlPeso=".$weight."&nCdFormato=1&nVlComprimento=".$lenght."&nVlAltura=".$height."&nVlLargura=".$width."&sCdMaoPropria=n&nVlValorDeclarado=1&sCdAvisoRecebimento=n&nCdServico=".$srv."&nVlDiametro=20&StrRetorno=xml";
//FIM DA GAMBIARRA
As configurações de bancos devem ser setados em url, login, senha, nome_data_base (
)
Esse código deve ser excluído, pois foi adicionado no bloco anterior:
Código: Selecionar todosif($srv == '40045') {
$url = "http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?nCdEmpresa=&sDsSenha=&sCepOrigem=".$cepOrigem."&sCepDestino=".$cepDestino."&nVlPeso=".$weight."&nCdFormato=1&nVlComprimento=".$lenght."&nVlAltura=".$height."&nVlLargura=".$width."&sCdMaoPropria=n&nVlValorDeclarado=1&sCdAvisoRecebimento=n&nCdServico=".$srv."&nVlDiametro=20&StrRetorno=xml";
} else {
$url = "http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?nCdEmpresa=&sDsSenha=&sCepOrigem=".$cepOrigem."&sCepDestino=".$cepDestino."&nVlPeso=".$weight."&nCdFormato=1&nVlComprimento=".$lenght."&nVlAltura=".$height."&nVlLargura=".$width."&sCdMaoPropria=n&nVlValorDeclarado=1&sCdAvisoRecebimento=n&nCdServico=".$srv."&nVlDiametro=20&StrRetorno=xml";
}
Código posterior:
após isso o cálcula irá funcionar, porém não é a melhor forma de se fazer.