KOKINIO - MANAGER
Edit File: ComisionesController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Venta; use App\Cliente; use App\Comision; use Uuid; use Auth; use App\Helper; use App\Http\Controllers\ComisionPagoController; use App\Nivel; class ComisionesController extends Controller { // public function index() { $clientesI = new Cliente(); $clientes = $clientesI->Clientes(); $redes = new Venta(); $years = $redes->monthYearVenta(); // $months = $redes->monthYearVenta(date('Y')); $months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; // $clientes = Cliente::where('status_id', 1)->get(); /* $redController = new RedController(); $red = []; $comisiones = []; $total = 0; $comision = 0; $red_size = 0; $message = ""; $year = date('Y'); $month = date('m'); foreach ($clientes as $key => $value) { $compra = $redes->cliente_compra($value->id); $ids = '"'.$value->id.'"'; for($i = 1; $i<= 4; $i++){ $red_first = $redes->red_first($ids,$i); if(isset($red_first)){ $ids = $redController->get_ids($red_first); $red[$i] = $red_first; foreach($red_first as $val){ if($val->total < 4000 | !$val->comisiona){ $comision += 0; }else{ $comision += $val->comision; } $red_size++; $total += $val->total; } }else{ break; } } */ /*if($comision >= 10000){ $frontales = $redController->afterTen($value->id,$year,$month); if($frontales < 5){ $message = "Necesitas tus 5 frontales con venta para tu comisi贸n completa"; $comision = 0; $ids = '"'.$value->id.'"'; $front = 1; for($i = 1; $i<= 2; $i++){ $red_first = $redes->red_first($ids,$i); if(isset($red_first)){ $ids = $redController->get_ids($red_first); foreach($red_first as $val){ if($val->total >= 4000){ if($front <= $frontales){ $comision += $val->comision; $front++; } } } $front = 1; } } } } if($comision != 0){ $comisiones[$key] = [ 'cliente'=> $value->nombre." ".$value->ape_p." ".$value->ape_m, 'tel'=> $value->tel, 'id'=>$value->id, 'pagado' => $value->pagado, 'comision'=>$comision, 'total' => $total, 'compra'=>$compra, 'message' => $message ]; } } */ $comision = new Comision(); $comisiones = $comision->existPay(null, null, null); $totalPagado = $comision->totalPagado(null, null, null); $totalPagado = $totalPagado[0]->total; $data = ['years' => $years, 'months' => $months]; return view('Catalogos.Comisiones')->with(compact('comisiones', 'clientes', 'data')); } public function getComisiones(Request $request) { $data = $request->all(); $comision = new Comision(); $comisiones = $comision->existPay($data['cliente'], $data['year'], $data['month']); $totalPagado = $comision->totalPagado($data['year'], $data['month'], $data['cliente']); $totalPagado = $totalPagado[0]->total; return view('Catalogos.sectionComisiones')->with(compact('comisiones', 'totalPagado')); } public function getComisiones_updated(Request $request) { $data = $request->all(); $redes = new Venta(); $comisiones_ = new Comision(); if ($data['cliente'] != "vacio") { $clientesI = new Cliente(); $clientes = $clientesI->Clientes($data['cliente']); } else { $clientes = Cliente::where('status_id', 1)->OrderBy('nombre')->get(); } $year = $data['year']; $month = $data['month']; $redController = new RedController(); $red = []; $comisiones = []; foreach ($clientes as $key => $value) { $total = 0; $comision = 0; $red_size = 0; $message = ""; $compra = $redes->cliente_compra($value->id, $year, $month); $ids = '"' . $value->id . '"'; for ($i = 1; $i <= 4; $i++) { $red_first = $redes->red_first($ids, $i, $month, $year); if (isset($red_first)) { $ids = $redController->get_ids($red_first); $red[$i] = $red_first; foreach ($red_first as $val) { if ($val->total < 4000 | !$val->comisiona) { $comision += 0; } else { $comision += $val->comision; } $red_size++; $total += $val->total; } } else { break; } } if ($total >= 400000 || $value->nivel == 2) { $redController->checkLevel($value->id, 2); $frontales = $redController->afterTen($value->id, $year, $month); if ($frontales < 10) { $message = "Necesitas tus 10 frontales con venta para tu comisi贸n completa"; $comision = 0; $ids = '"' . $value->id . '"'; $front = 1; for ($i = 1; $i <= 2; $i++) { $red_first = $redes->red_first($ids, $i, $month, $year); if (isset($red_first)) { $ids = $redController->get_ids($red_first); foreach ($red_first as $val) { if ($val->total >= 4000) { if ($front <= $frontales) { $comision += $val->comision; $front++; } } } $front = 1; } } } } else if ($comision >= 10000 || $value->nivel == 1) { $redController->checkLevel($value->id, 1); $frontales = $redController->afterTen($value->id, $year, $month); if ($frontales < 5) { $message = "Necesitas tus 5 frontales con venta para tu comisi贸n completa"; $comision = 0; $ids = '"' . $value->id . '"'; $front = 1; for ($i = 1; $i <= 2; $i++) { $red_first = $redes->red_first($ids, $i, $month, $year); if (isset($red_first)) { $ids = $redController->get_ids($red_first); foreach ($red_first as $val) { if ($val->total >= 4000) { if ($front <= $frontales) { $comision += $val->comision; $front++; } } } $front = 1; } } } } if ($comision != 0) { $comision_ = $comisiones_->existPay($value->id, $year, $month); $comisiones[$key] = [ 'cliente' => $value->nombre . " " . $value->ape_p . " " . $value->ape_m, 'tel' => $value->tel, 'id' => $value->id, 'pagado' => (isset($comision_)) ? $comision_[0]->pagado : null, 'comision' => $comision, 'total' => $total, 'compra' => $compra, 'message' => $message ]; } } $totalPagado = $comisiones_->totalPagado($year, $month, $data['client']); $totalPagado = $totalPagado[0]->total; return view('Catalogos.sectionComisiones')->with(compact('comisiones', 'totalPagado')); } public function payComisiones(Request $request) { $data = $request->all(); $comisiones = new Comision(); $exist = $comisiones->existPay($data['cliente_id'], $data['year'], $data['month']); if (!isset($exist)) { $comisiones->id = Uuid::generate()->string; } else { $comisiones = Comision::find($exist[0]->id); } $comisiones->cliente_id = $data['cliente_id']; $comisiones->ano = $data['year']; $comisiones->mes = $data['month']; $comisiones->venta = $data['venta']; $comisiones->comision = $data['comision']; $comisiones->pagado = $data['pay']; $comisiones->created_by = Auth::user()->id; if ($comisiones->save()) { $comisionPaid = $comisiones->updateComisionPagado($data['cliente_id'], $data['year'], $data['month'], $data['pay']); echo $comisionPaid; return response()->json(['status' => "success", 'message' => 'Pago guardado']); } else { return response()->json(['status' => "error", 'message' => 'Error al Guardar']); } } public function getMonths(Request $request) { $year = $request->input('year'); $redes = new Venta(); $months = $redes->monthYearVenta($year); $months_select = "<option value=''>Selecciona</option>"; foreach ($months as $month) { $months_select .= "<option value='" . $month->mes . "'>" . Helper::month($month->mes) . "</option>"; } return $months_select; } public function generateComisiones($client = null, $year, $month) { $data = ""; $redes = new Venta(); $comisiones_ = new Comision(); if ($client != "" || $client != null) { $clientesI = new Cliente(); $clientes = $clientesI->Clientes($client); } else { $clientes = Cliente::where('status_id', 1)->OrderBy('nombre')->get(); } if ($year == null) $year = date('Y'); if ($month == null) $month = date('m'); $redController = new RedController(); $red = []; $comisiones = []; foreach ($clientes as $key => $value) { $total = 0; $comision = 0; $red_size = 0; $message = ""; $cantidad = 0; $compra = $redes->cliente_compra($value->id, $year, $month); $ids = '"'.$value->id.'"'; for($i = 1; $i<= 4; $i++){ $red_first = $redes->red_first($ids,$i,$month,$year); if(isset($red_first)){ $ids = $redController->get_ids($red_first); $red[$i] = $red_first; foreach($red_first as $val){ if ($val->total >= 4000 && $val->comisiona){ $comision += $val->comision; } $red_size++; $total += $val->total; $cantidad += $val->cantidad; } }else{ break; } } if($comision >= 400000 || $value->nivel == 2){ $redController->checkLevel($value->id,2); $frontales = $redController->afterTen($value->id,$year,$month); if($frontales < 10){ $message = "Necesitas tus 10 frontales con venta para tus activos"; $comisionType = Helper::getComisionCountry($value->pais); $firstLevel = Nivel::where('nivel', 'Primer')->first(); $comision = $frontales * $firstLevel->$comisionType; $ids = '"'.$value->id.'"'; $front = 1; for($i = 1; $i<= 2; $i++){ $red_first = $redes->red_first($ids,$i,$month,$year); if(isset($red_first)){ $ids = $redController->get_ids($red_first); foreach($red_first as $val){ if($val->total >= 4000){ if($front <= $frontales){ // $comision += $val->comision; $secondLevel = Nivel::where('nivel', 'Segundo')->first(); $comision += $val->nivel === 'Segundo' ? $secondLevel->$comisionType : 0; $cantidad += $val->cantidad; $front++; } } } $front = 1; } } } }else if(($comision >= 10000 && $comision <= 400000) || $value->nivel == 1){ $redController->checkLevel($value->id, 1); $frontales = $redController->afterTen($value->id,$year,$month); if($frontales < 5){ $message = "Necesitas tus 5 frontales con venta para tus activos"; $comisionType = Helper::getComisionCountry($value->pais); $firstLevel = Nivel::where('nivel', 'Primer')->first(); $comision = $frontales * $firstLevel->$comisionType; $ids = '"'.$value->id.'"'; $front = 1; for($i = 1; $i<= 2; $i++){ $red_first = $redes->red_first($ids,$i,$month,$year); if(isset($red_first)){ $ids = $redController->get_ids($red_first); foreach($red_first as $val){ if($val->total >= 4000){ if($front <= $frontales){ $secondLevel = Nivel::where('nivel', 'Segundo')->first(); $comision += $val->nivel === 'Segundo' ? $secondLevel->$comisionType : 0; // $comision += $val->comision; $cantidad += $val->cantidad; $front++; } } } $front = 1; } } } } $total_comision = $redes->Get_3_Months($value->id, $year, $month); if($comision != 0 || $total_comision[0]->comision != 0){ $comision_ = $comisiones_->existPay($value->id, $year, $month); // $total_comision = $redes->Get_3_Months($value->id, $year, $month); $comision_3_meses = 0; if (isset($total_comision)) { $comision_3_meses = $total_comision[0]->comision; } $comisiones[$key] = [ 'cliente'=> $value->nombre." ".$value->ape_p." ".$value->ape_m, 'tel'=> $value->tel, 'id' => $value->id, 'pagado' => (isset($comision_))? $comision_[0]->pagado : null, 'comision'=>$comision, 'comision_3meses' => $comision_3_meses, 'total' => $total, 'compra' => $compra, 'message' => ($compra) ? $message : 'NO TIENE DERECHO A ACTIVOS!'."<br />". $message, 'year' => $year, 'month' => $month, 'cantidad' => $cantidad ]; } } $totalPagado = $comisiones_->totalPagado($year, $month, $client); $totalPagado = $totalPagado[0]->total; return $comisiones; } public function insertComisionesTerminal($clientId = null, $year = null, $month = null) { set_time_limit(300); // $info = $request->all(); $data = $this->generateComisiones($clientId, $year, $month); // $data = array_slice($data, 0, 4); $comision_ = new Comision(); foreach ($data as $key => $client) { $exist = $comision_->checkComisionUpdate($client['id'], null, $client['year'], $client['month'], $client['comision_3meses']); if ($exist) { if ($exist[0]->cliente_id == $client['id'] && $exist[0]->comision != $client['comision'] || $exist[0]->venta != $client['total'] || $exist[0]->comentarios != $client['message'] || $exist[0]->comision_3meses != $client['comision_3meses']) { $comision = Comision::find($exist[0]->id); $comision->venta = $client['total']; $comision->comision = $client['comision']; $comision->cantidad = $client['cantidad']; $comision->comentarios = $client['message']; $comision->comision_3meses = ($client['comision_3meses'] ? $client['comision_3meses'] : 0); if ($comision->save()) { echo 'saved correctly'; } else { echo 'error to save'; } } else { echo 'same'; } } else { $comision = new Comision(); $comision->id = Uuid::generate()->string; $comision->cliente_id = $client['id']; $comision->ano = $client['year']; $comision->mes = $client['month']; $comision->venta = $client['total']; $comision->comision = $client['comision']; $comision->cantidad = $client['cantidad']; $comision->comentarios = $client['message']; $comision->comision_3meses = ($client['comision_3meses'] ? $client['comision_3meses'] : 0); $comision->pagado = 0; $comision->status_id = 1; $comision->created_by = 'f3b078a0-5907-11e8-9745-4770ebde3703'; if ($comision->save()) { echo 'saved correctly'; } else { echo 'error to save'; } } } } public function insertComisiones(Request $request) { set_time_limit(300); $info = $request->all(); $data = $this->generateComisiones($info["clientId"], $info['year'], $info['month']); // $data = array_slice($data, 0, 4); $comision_ = new Comision(); foreach ($data as $key => $client) { $exist = $comision_->checkComisionUpdate($client['id'], null, $client['year'], $client['month'], $client['comision_3meses']); if ($exist) { if ($exist[0]->cliente_id == $client['id'] && $exist[0]->comision != $client['comision'] || $exist[0]->venta != $client['total'] || $exist[0]->comentarios != $client['message'] || $exist[0]->comision_3meses != $client['comision_3meses']) { $comision = Comision::find($exist[0]->id); $comision->venta = $client['total']; $comision->comision = $client['comision']; $comision->cantidad = $client['cantidad']; $comision->comentarios = $client['message']; $comision->comision_3meses = ($client['comision_3meses'] ? $client['comision_3meses'] : 0); if ($comision->save()) { echo 'saved correctly'; } else { echo 'error to save'; } } else { echo 'same'; } } else { $comision = new Comision(); $comision->id = Uuid::generate()->string; $comision->cliente_id = $client['id']; $comision->ano = $client['year']; $comision->mes = $client['month']; $comision->venta = $client['total']; $comision->comision = $client['comision']; $comision->cantidad = $client['cantidad']; $comision->comentarios = $client['message']; $comision->comision_3meses = ($client['comision_3meses'] ? $client['comision_3meses'] : 0); $comision->pagado = 0; $comision->status_id = 1; $comision->created_by = 'f3b078a0-5907-11e8-9745-4770ebde3703'; if ($comision->save()) { echo 'saved correctly'; } else { echo 'error to save'; } } } } public function updateGastoComision($client_id, $venta_id, $cantidad) { $venta = Venta::where('id', $venta_id)->first(); $redes = new Venta(); $date = \DateTime::createFromFormat("Y-m-d", $venta->fecha_venta); $year = $date->format("Y") ?? date('Y'); $month = $date->format("m") ?? date('m'); $getMonthsComision = $redes->Get_3_Months($client_id, $year, $month); return $this->iteratePreviousMonths($client_id, $getMonthsComision, $cantidad, $venta_id); } public function iteratePreviousMonths($client_id, $getMonthsComision, $cantidad, $venta_id) { $monts = ['firstMonth', 'secondMonth', 'thirdMonth']; $comisionPago = new ComisionPagoController(); foreach ($monts as $value) { $comision = $this->getComision($client_id, $getMonthsComision[0]->$value); if ($comision && $cantidad > 0) { $restanteComision = ($comision['comision'] - $comision['comision_pagada']); if ($restanteComision > 0) { if ($cantidad > $restanteComision) { $comision->comision_pagada = $comision['comision_pagada'] + $restanteComision; if (!$comision->save()) return ['status' => false, 'message' => "saving Comision month: $value canidad: $restanteComision"]; if (!$comisionPago->guardar($client_id, $venta_id, $restanteComision, $comision->id)) return ['status' => false, 'message' => "saving ComisionPago month: $value canidad: $restanteComision"]; } else { if ($cantidad > 0) { $comision->comision_pagada = $comision['comision_pagada'] + $cantidad; if (!$comision->save()) return ['status' => false, 'message' => "saving Comision month: $value canidad: $restanteComision"]; if (!$comisionPago->guardar($client_id, $venta_id, $cantidad, $comision->id)) return ['status' => false, 'message' => "saving ComisionPago month: $value canidad: $restanteComision"]; return ['status' => true]; } } $cantidad = $cantidad - $restanteComision; } } } return ['status' => true]; } public function getComision($client_id, $date) { $date = \DateTime::createFromFormat("Y-m-d", $date); return Comision::where('cliente_id', $client_id) ->where('ano', $date->format("Y")) ->where('mes', $date->format("m")) ->where('comision', '>', 0) ->where('status_id', 1) ->first(); } public function updateComisionGasto($comision_id, $cantidad) { $comision = Comision::where('id', $comision_id)->first(); $restoComisionPagada = $comision->comision_pagada - $cantidad; $comision->comision_pagada = $restoComisionPagada; if ($comision->save()) { return true; } else { return false; } } }