Ir para conteúdo
Fórum Script Brasil
  • 0

Me ajudem nesta logica


marcosfj1

Pergunta

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:

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

  • 0

Como ngm conseguiu me ajudar, resolvi tentar explicar melhor para ver se alguém consegue entender

//SE O CLIENTE FOI DO TIPO ESPECIAL(2) FAZ AS OPERACOES
if($cp8['tipo'] == 2){ 
    // BUSCO NA TABELA CARRINHO INFORMAÇOES SOBRE OS PRODUTOS QUE ESTAO INSERIDOS NO CARRINHO
    $sql = "SELECT BUSCA NA TABELA CARRINHO AS INFORMACOES Q ESTAO NO CARRINHO DO CLIENTE";
    $req = mysql_query($sql);
    // FAÇO UM ARRAY PARA VERIFICAR todos OS DADOS ALEM DO PRIMEIRO
    while ($cp = mysql_fetch_array($req)) {
    // SE O PRODUTO não ESTIVER NA PROMOCAO FAZ A OPERACAO                
            if($cp['promocao'] != 1){
        // SELECIONO NA TABELA DE PERCENTUAL A % QUE SERÁ AUMENTADA 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 O DEPARTAMENTO ESTIVER COM PERCENTUAL FOR O MESMO DO DEPARTAMENTO QUE ESTA NO CARRINHO REALIZA A OPERACAO
            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'];
                        COLOQUEI O ECHO PARA VER O QUE ESTA RECBENDO A VARIAVEL
            //echo $vl_sub_total.' / ';
                        //CASO O DEPARTAMENTO DO CARRINHO não ESTEJA COM PERCENTUAL, então não APLICA O CALCULO
            }else{
                $vl_sub_total += $cp['vl_atacado'] * $cp['qt_produto'];
            }                        
    }
        //CASO ESTEJA NA PROMOCAO FAZ ESTE CALCULO
    }else{
         $vl_sub_total += $cp['vl_atacado'] * $cp['qt_produto'];
    }
}
        
}

Bem acho q consegui explicar bem, agora vamos ao problema:

Tenho no meu carrinho 2 produtos que não estao na promocao e estao com percentual de desconto e seus departamento, ou seja eles entram em todos os IFs, mas a conta não esta certa, pois em um eu estou pagando 447,30 e no outro 83,30...Quando eu dou um echo em $vl_sub_total ele mostra este numeros quando na verdade deveria somar eles, mas não esta somando o que é estranho demais

Este é meu problema

alguém por favor analise meu codigo ele ta inteiro ai bem explicado.....SOCORROOO hahaha

valeu

Link para o comentário
Compartilhar em outros sites

  • 0
Você está zerando o $vl_sub_total dentro dos whiles, ou seja, em cada interação a variável é zerada. Coloque $vl_sub_total antes do primeiro while.

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

AND PC.st_ativo = 1

AND P.qt_produto > 0

AND (P.st_indisponivel = 0 OR P.st_indisponivel IS NULL) ";

$req = mysql_query($sql);

$vl_sub_total = 0;

// FAÇO UM ARRAY PARA VERIFICAR todos OS DADOS ALEM DO PRIMEIRO

while ($cp = mysql_fetch_array($req)) {

if($cp['promocao'] != 1){

// SELECIONO NA TABELA DE PERCENTUAL A % QUE SERÁ AUMENTADA 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'];

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'];

echo $vl_sub_total.' / ';

}else{

$vl_sub_total += $cp['vl_atacado'] * $cp['qt_produto'];

}

}

}else{

$vl_sub_total += $cp['vl_atacado'] * $cp['qt_produto'];

}

}

}

Aqui são os novos numeros que foram impressos com o echo $vl_sub_total

1006,6 / 1089,9

Link para o comentário
Compartilhar em outros sites

  • 0
O primeiro else creio que não deva existir:

else{
$vl_sub_total += $cp['vl_atacado'] * $cp['qt_produto'];
}

NOSSAAAAA cara se é foda hahaha....me ajudou muito tava quebrando a cabeça com isso aqui e era isso hahaha

Alias pensei agora, todos os departamentos vao ter uma porcentagem então nem precisava daquele ELSE bastava o IF para verificar se o departamento tinha a promocao hahaha

Valeu mesmo, ajudou demais

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...