403Webshell
Server IP : 54.233.248.239  /  Your IP : 172.28.1.13
Web Server : Apache
System : Linux ip-172-28-29-189 6.5.0-1014-aws #14~22.04.1-Ubuntu SMP Thu Feb 15 15:27:06 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.2.34-43+ubuntu22.04.1+deb.sury.org+1
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/html/vinumday2_0/app/Services/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/vinumday2_0/app/Services/ContaCorrenteService.php
<?php 

namespace App\Services;

use DB;
use Exception;
use App\BasicInfo;
use App\Modules\Canal\Models\Canal;
use Illuminate\Support\Facades\Log;
use App\Modules\Cadastro\Models\Cadastro;
use App\Modules\Confraria\Models\Confraria;
use App\Modules\ConfrariaMembro\Models\ConfrariaMembro;
use App\Modules\ContaCorrente\Models\ContaCorrente;
use App\Modules\Confraria\Services\ConfrariaService;

class ContaCorrenteService {

	public static function atualizarSaldoExpirado($contaCorrente){

		$data          = date('Y-m-d H:i:s');
		$saldoRestante = $contaCorrente->valor - $contaCorrente->saldo_resgatado;
		$confraria_id  = (!empty($contaCorrente->confraria_id)) ? $contaCorrente->confraria_id : NULL;

		$contaSaldo = !empty($contaCorrente->confraria_id) ? $contaCorrente->confraria : $contaCorrente->cliente;
		$saldoAtual = $contaSaldo->contaCorrente->saldo - $saldoRestante;
		$saldoAtual = number_format($saldoAtual, 2, '.', '');

		//Novo Registro
		if($contaSaldo->contaCorrente->saldo > 0){
		    Log::info('ContaCorrenteService::atualizarSaldoExpirado(insert)');
			DB::table('conta_corrente')->insert([
				[
					'confraria_id'    => $confraria_id,
					'cadastro_id'     => $contaCorrente->cadastro_id,
					'pedido_venda_id' => $contaCorrente->pedido_venda_id,
					'data'            => $data,
					'tipo_movimento'  => 'S',
					'valor'           => $saldoRestante,
					'saldo'           => $saldoAtual,
					'saldo_usado'     => 1,
					'saldo_expirado'  => 1,
					'observacao'	  => 'Saldo Expirado'
				]
			]);
		}

	    //Update Registro
	   	$sql = "UPDATE conta_corrente SET saldo_resgatado = valor, saldo_usado = 1 WHERE id = {$contaCorrente->id}";
	   	Log::info('ContaCorrenteService::atualizarSaldoExpirado(update) => SQL:' . $sql);
	   	DB::statement($sql);

		return true;

	}

    public static function atualizarConta($pedidoVenda, $tipoMovimento='E', $forceCashback = FALSE, $forceCanal = false, $observacao = ''){

    	Log::info('ContaCorrenteService::atualizarConta()');

    	$basicInfo = BasicInfo::find(1);
		$confraria = ConfrariaService::buscarConfrariaUsuarioLogado($pedidoVenda->id_cliente);
    	$cliente   = $pedidoVenda->cliente;

    	if($cliente->influencer){
    		Log::info('ContaCorrenteService::atualizarConta() => influencer = true - (pedidoVenda: '.$pedidoVenda->id.' | cliente: '.$pedidoVenda->id_cliente.')');
    		return false;
    	}

    	if(!$confraria){

	    	if($basicInfo->validade_cashback == 0 || ($forceCashback == FALSE && $tipoMovimento == 'E' && $basicInfo->data_fim_geracao_cashback < date('Y-m-d H:i:s'))){
	    		Log::info('ContaCorrenteService::atualizarConta() => validade_cashback == 0 || data_fim_geracao_cashback < today hour - (pedidoVenda: '.$pedidoVenda->id.' | cliente: '.$pedidoVenda->id_cliente.')');
	    		return false;
	    	}

	    	//TipoMovimento E => Entrada
	    	if($tipoMovimento == 'E' && $basicInfo->valor_minimo_cashback > $pedidoVenda->subtotal){ // Ex.: valor_minimo_cashback => 500 | total => 159,90
	    		Log::info('ContaCorrenteService::atualizarConta() => valor_minimo_cashback > total == true - (pedidoVenda: '.$pedidoVenda->id.' | cliente: '.$pedidoVenda->id_cliente.')');
	    		return false;
	    	}

    	}

    	if($pedidoVenda->contaCorrente){
    		Log::info('ContaCorrenteService::atualizarConta() => pedido_venda_id == true - (pedidoVenda: '.$pedidoVenda->id.' | cliente: '.$pedidoVenda->id_cliente.')');
    		return false;
    	}

		$data  = date('Y-m-d H:i:s');

    	if($pedidoVenda->saldo_usado == 1){

			$contaSaldo = !empty($pedidoVenda->confraria_id) ? $pedidoVenda->confraria : $pedidoVenda->cliente;
			$saldo      = ($contaSaldo->contaCorrente ? ($contaSaldo->contaCorrente->saldo) : 0);
			$valor      = abs($pedidoVenda->ajuste);
			
			if($pedidoVenda->cupomPedidoVenda){

				$cupom = $pedidoVenda->cupomPedidoVenda;

				$total = $pedidoVenda->subtotal * (1 - (($cupom->percentual_desconto ? $cupom->percentual_desconto : 100) / 100)) - $cupom->valor_desconto;
				$total = $total > 0 ? $total : 0;

				$ajuste = $total - $pedidoVenda->subtotal;
				$valor  = $valor - abs($ajuste);

			}
			$saldo         = $saldo - abs($valor);
			$tipoMovimento = 'S';

			$saldo = number_format($saldo, 2, '.', '');
			$valor = abs($valor);
			$valor = number_format($valor, 2, '.', '');

	    	$confraria_id  = (!empty($pedidoVenda->confraria_id)) ? $pedidoVenda->confraria_id : NULL;

	    	Log::info('ContaCorrenteService::atualizarConta() => SQL: saĆ­da saldo usado');
			DB::table('conta_corrente')->insert([
				[
					'confraria_id'    => $pedidoVenda->confraria_id,
					'cadastro_id'     => $pedidoVenda->id_cliente,
					'pedido_venda_id' => $pedidoVenda->id,
					'data'            => $data,
					'tipo_movimento'  => 'S',
					'valor'           => $valor,
					'saldo'           => $saldo,
					'saldo_usado'     => 1
				]
			]);

            //->where('data_validade', '>', $data) - verificar @marcoskubas

			if($confraria_id){
				$Entradas = ContaCorrente::where('tipo_movimento', 'E')->where('cadastro_id', $cliente->id)->where('confraria_id', $confraria_id)->where('saldo_usado', 0)->orderBy('data_validade', 'ASC')->orderBy('data', 'ASC')->get();
			}else{
				$Entradas = ContaCorrente::where('tipo_movimento', 'E')->where('cadastro_id', $cliente->id)->where('saldo_usado', 0)->whereRaw('confraria_id IS NULL')->orderBy('data_validade', 'ASC')->orderBy('data', 'ASC')->get();
			}
			$total = 0;
	    	foreach($Entradas as $entrada){
	    		$saldo = ($entrada->valor - $entrada->saldo_resgatado);
	    		Log::info("ContaCorrenteService::atualizarConta() => saldo: {$saldo} | valor: {$valor} | saldo_resgatado: {$entrada->saldo_resgatado}");
	    		if($saldo <= ($valor)){ // saldo: 28.94 | valor: 78.92 | saldo_resgatado: 85.00
	    			$saldo_resgatado = $saldo;
	    			$saldo_resgatado = number_format($saldo_resgatado, 2, '.', '');
		    		$sql = "UPDATE `conta_corrente` SET `saldo_usado` = 1, `saldo_resgatado` = `saldo_resgatado`+{$saldo_resgatado} WHERE id = {$entrada->id}"; //50
	    			$valor = ($valor) - $saldo_resgatado; //78.92 - 28.94 = 49.98
			    	Log::info('ContaCorrenteService::atualizarConta() => SQL:' . $sql);
			    	DB::update($sql);
	    		}else{
	    			$saldo = ($entrada->valor - $entrada->saldo_resgatado);
	    			$saldo = number_format($saldo, 2, '.', '');
	    			$valor = number_format($valor, 2, '.', '');
	    			if($saldo == $valor){
	    				$sql = "UPDATE `conta_corrente` SET `saldo_usado` = 1, `saldo_resgatado` = `saldo_resgatado`+".($valor)." WHERE id = {$entrada->id}";
	    			}else{
	    				$sql = "UPDATE `conta_corrente` SET `saldo_resgatado` = `saldo_resgatado`+".($valor)." WHERE id = {$entrada->id}";
	    			}
	    			Log::info('ContaCorrenteService::atualizarConta() => SQL:' . $sql); //113,94 | 85
			    	DB::update($sql);
	    		}
	    	}

    	}elseif(($pedidoVenda->id_status_pedido_venda == 2 || $pedidoVenda->id_status_pedido_venda == 7) && $pedidoVenda->saldo_usado == 0){

    		$totalCashback = $pedidoVenda->subtotal;

			if($forceCanal == true){

				if(isset($basicInfo->canal_id_cashback) && !empty($basicInfo->canal_id_cashback)){

					$checkCanalPedido = Canal::select('pedido_venda_has_produto.*')
					->join('canal_has_oferta', 'canal_has_oferta.id_canal', 'canal.id')
					->join('pedido_venda_has_produto', 'pedido_venda_has_produto.id_oferta', 'canal_has_oferta.id_oferta')
					->join('pedido_venda', 'pedido_venda.id', 'pedido_venda_has_produto.id_pedido_venda')
					->where('pedido_venda.id', $pedidoVenda->id)
					->where('canal.id', $basicInfo->canal_id_cashback)
					->get();

					if(count($checkCanalPedido) == 0){
						return false;
					}

					$totalCashback = 0;
					foreach ($checkCanalPedido as $canalPedido) {
						$totalCashback += $canalPedido->valor_total;
					}

				}else{
					return false;
				}

			}

			if($confraria && $confraria->qtde_membros < ($basicInfo->min_membros_confraria+1)){
				Log::info('ContaCorrenteService::atualizarConta() => $confraria->qtde_membros < ($info->min_membros_confraria+1) - (pedidoVenda: '.$pedidoVenda->id.' | cliente: '.$pedidoVenda->id_cliente.')');
				return false;
			}

			$validade = $basicInfo->validade_cashback;
			if($confraria){
				$validade = $basicInfo->validade_cashback_confraria;
			}

			$confraria_id = (($confraria && empty($pedidoVenda->confraria_id)) ? $confraria->id : NULL);

			$data_validade = date('Y-m-d', strtotime("+{$validade} days",strtotime($data)));

			$valor = ContaCorrenteService::calcularValor($totalCashback, $basicInfo, 'cashback', $confraria);
			
			if(!$confraria && $basicInfo->valor_minimo_cashback > $totalCashback){
				return false;
			}
			
			if(!empty($confraria_id)){
				$saldo = $valor + ($confraria->contaCorrente ? ($confraria->contaCorrente->saldo) : 0);
			}else{
				$saldo = $valor + ($cliente->contaCorrente ? ($cliente->contaCorrente->saldo) : 0);
			}

			$saldo = number_format($saldo, 2, '.', '');

			if($confraria && $confraria->qtde_membros < ($basicInfo->min_membros_confraria+1)){
				Log::info('ContaCorrenteService::atualizarConta() => $confraria->qtde_membros < ($info->min_membros_confraria+1) - (pedidoVenda: '.$pedidoVenda->id.' | cliente: '.$pedidoVenda->id_cliente.')');
				return false;
			}

			if($confraria && is_numeric($pedidoVenda->confraria_id)){

				$ConfrariaMembros = ConfrariaMembro::where('confraria_id', $confraria->id)->where('confraria_membro.deleted', 0)->get();
				$valor            = $valor / count($ConfrariaMembros);
				$valor            = number_format($valor, 2, '.', '');

				foreach ($ConfrariaMembros as $membro) {

					$cliente = $membro->cadastro;
					$saldo   = $valor + ($cliente->contaCorrente ? ($cliente->contaCorrente->saldo) : 0);
					
					DB::table('conta_corrente')->insert([
						[
							'confraria_id'    => NULL,
							'cadastro_id'     => $cliente->id,
							'pedido_venda_id' => $pedidoVenda->id,
							'data'            => $data,
							'data_validade'   => $data_validade,
							'tipo_movimento'  => $tipoMovimento,
							'valor'           => $valor,
							'saldo'           => $saldo,
                            'observacao'      => $observacao
						]
					]);

				}

			}else{

				DB::table('conta_corrente')->insert([
					[
						'confraria_id'    => $confraria_id,
						'cadastro_id'     => $cliente->id,
						'pedido_venda_id' => $pedidoVenda->id,
						'data'            => $data,
						'data_validade'   => $data_validade,
						'tipo_movimento'  => $tipoMovimento,
						'valor'           => $valor,
						'saldo'           => $saldo,
                        'observacao'      => $observacao
					]
				]);

			}

    	}else{
    		Log::info('ContaCorrenteService::atualizarConta() => tipoMovimento == "E" && id_status_pedido_venda != 2 ou 7');
    	}

    	return true;

    }

    public static function calcularValor($total, $basicInfo, $tipo='cashback', $confraria = FALSE){

    	$valor = 0;
    	if(!$confraria){
    		$confraria = ConfrariaService::buscarConfrariaUsuarioLogado();
    	}

    	if($tipo == 'cashback'){
			$valorCashback      = $basicInfo->valor_cashback;
			$percentualCashback = $basicInfo->percentual_cashback;
			if($confraria){
				$valorCashback      = $basicInfo->valor_cashback_confraria;
				$percentualCashback = $basicInfo->percentual_cashback_confraria;
			}
    		$valor = ($valorCashback > 0 ? $valorCashback : ( ($total * $percentualCashback) / 100 ));
			$valor = $valor > 0 ? $valor : 0;
			$valor = number_format($valor, 2, '.', '');
    	}

    	return $valor;

    }

}

Youez - 2016 - github.com/yon3zu
LinuXploit