Bom galera seguinte, to apanhando muito aqui com umas contas, q não estao batendo pois tenho q estabelecer varias condiçoes, onde dependendo faz um coisa ou faz outra.
Bem funciona assim, exite um cliente especial no meu site que irá ter desconto em alguns dos departamentos, mas se o produto X já estiver em promocao para todos os clientes, então o cliente especial não recebe a promocao, senao ficaria o desconto dele ser especial + a promocao ai ficaria errado, então fi da seguinte maneira
APOS FAZER A VERIFICAÇÃO SE O CLIENTE ESTA LOGADO
VERIFICO O TIPO DELE:
if($cp8['tipo'] == 2){
// BUSCO NA TABELA CARRINHO INFORMAÇOES SOBRE OS PRODUTOS QUE ESTAO INSERIDOS NO CARRINHO
$sql = "SELECT C.*, P.nome, P.vl_atacado, P.vl_varejo, P.codigo, PC.id_produto_categoria, C.qt_produto, P.id_produto, P.promocao
FROM carrinho C
INNER JOIN produto P ON P.id_produto = C.id_produto
INNER JOIN produto_categoria PC ON PC.id_produto_categoria = P.id_produto_categoria
WHERE id_cliente = {$_SESSION['cliente']['id_cliente']}
AND P.st_ativo = 1";
$req = mysql_query($sql);
$cp['vl_atacado'] = $cp['vl_atacado'];
$vl_sub_total = 0;
// FAÇO UM ARRAY PARA VERIFICAR todos OS DADOS ALEM DO PRIMEIRO
while ($cp = mysql_fetch_array($req)) {
//VERIFICO SE NA COLUNA PROMOCAO EXISTE 0 ou NULL
if($cp['promocao'] != 1){
// SELECIONO NA TABELA DE PERCENTUAL A % QUE SERÁ REDUZIDA NAQUELE PRODUTO
$sql50 = mysql_query("SELECT * FROM percentual_cliente_especial
WHERE id_aumento IS NOT NULL ORDER BY id_aumento DESC LIMIT 1000");
while($cp50 = mysql_fetch_array($sql50)){
$aumento_porcetagem = $cp50['vl_aumento'];
$vl_sub_total = 0;
//SE A CATEGORIA DE PERCENTUAL ESTIVER NA TABELA CARRINHO então ELE AUMENTA A PORCENTAGEM SOMENTE NAQUELE PRODUTO
if($cp50['id_produto_categoria'] == $cp['id_produto_categoria']){
// FAZ O CALCULO
$cp['vl_atacado'] = ((ceil($cp['vl_atacado'] - ($cp['vl_atacado'] * ($aumento_porcetagem/100)))) - 0.10);
// PARA CADA PRODUTO VERIFICO A QUANTIDADE DELE PARA FAZER A MULTIPLICAÇAO PELO VALOR ENCONTRADO ACIMA
$vl_sub_total += $cp['vl_atacado'] * $cp['qt_produto'];
}else{
vl_sub_total += $cp['vl_atacado'] * $cp['qt_produto'];
}
}
}else{
$vl_sub_total += $cp['vl_atacado'] * $cp['qt_produto'];
}
}
}
Bom se o produto esta em promocao então $cp['promocao'] = 1 logo não entra no IF então nem preciso verificar a categoria dele se tem desconto e tal, porque ele esta na promocao. Se ele não estiver na promocao então $cp['promocao'] = 0 ou NULL ele entra no IF e verifica se o departamento atraves de $cp['id_produto_categoria'] tem desconto, se tiver faz o calculo, senao ele coloca o valor normal
então se eu tenho um produto com desconto, q esta na promocao + um normal(sem promocao ou desconto) ele faz a conta errada, sendo que em teoria ambos os produtos deveria dar certo a conta pois entra um dele em cada ELSE
alguém pode me ajudar a onde estou errado, talvez seja em um dos WHILEs, pois no exemplo que citei acima parece q ele só pega um produto e verifica os IFs.....De qualquer modo analisem ai meu codigo q eu não guento mais, não consigo achar o erro, pra mim eu fechei todas as condicoes mas deve estar faltando alguma, no caso:
Pergunta
marcosfj1
Bom galera seguinte, to apanhando muito aqui com umas contas, q não estao batendo pois tenho q estabelecer varias condiçoes, onde dependendo faz um coisa ou faz outra.
Bem funciona assim, exite um cliente especial no meu site que irá ter desconto em alguns dos departamentos, mas se o produto X já estiver em promocao para todos os clientes, então o cliente especial não recebe a promocao, senao ficaria o desconto dele ser especial + a promocao ai ficaria errado, então fi da seguinte maneira
APOS FAZER A VERIFICAÇÃO SE O CLIENTE ESTA LOGADO
VERIFICO O TIPO DELE:
Bom se o produto esta em promocao então $cp['promocao'] = 1 logo não entra no IF então nem preciso verificar a categoria dele se tem desconto e tal, porque ele esta na promocao. Se ele não estiver na promocao então $cp['promocao'] = 0 ou NULL ele entra no IF e verifica se o departamento atraves de $cp['id_produto_categoria'] tem desconto, se tiver faz o calculo, senao ele coloca o valor normal
então se eu tenho um produto com desconto, q esta na promocao + um normal(sem promocao ou desconto) ele faz a conta errada, sendo que em teoria ambos os produtos deveria dar certo a conta pois entra um dele em cada ELSE
alguém pode me ajudar a onde estou errado, talvez seja em um dos WHILEs, pois no exemplo que citei acima parece q ele só pega um produto e verifica os IFs.....De qualquer modo analisem ai meu codigo q eu não guento mais, não consigo achar o erro, pra mim eu fechei todas as condicoes mas deve estar faltando alguma, no caso:
1 PRODUTO COM DESCONTO EM PROMOCAO E UM NORMAL
e
1 PRODUTO COM DESCONTO E UM NORMAL
Valeu
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.