예제 #1
0
 public static function cuentaDif($carga)
 {
     $empresa = $carga->empresa()->lists('id');
     $sat = $carga->sat()->lists('id');
     $count = Diferencias::whereIn('empresa_id', $empresa)->orWhereIn('sat_id', $sat)->count();
     return $count;
 }
 public function getObtiene(Request $request)
 {
     $diff = Diferencias::find($request->id);
     if ($diff->solucion == false) {
         return response()->json(['resp' => 'no'], 200);
     }
     $diff->comprobantes;
     return response()->json(['resp' => 'yes', 'data' => $diff], 200);
 }
예제 #3
0
 public function getReporte(Request $request)
 {
     try {
         $contr = $request->cont;
         $desde = Carbon::createFromFormat('Y-m-d', $request->desde)->startOfDay();
         $hasta = Carbon::createFromFormat('Y-m-d', $request->hasta)->endOfDay();
     } catch (\Exception $e) {
         return view('vacio');
     }
     $sat = ArchivoSat::whereBetween('fecha', array($desde, $hasta))->where(function ($q) use($contr) {
         $q->where('rfc_emisor', '=', $contr)->orWhere('rfc_receptor', '=', $contr);
     });
     $empresa = ArchivoEmpresa::whereBetween('fecha', array($desde, $hasta))->where(function ($q) use($contr) {
         $q->where('rfc_emisor', '=', $contr)->orWhere('rfc_receptor', '=', $contr);
     });
     $todos = $sat->count() + $empresa->count();
     if ($todos == 0) {
         return view('vacio');
     }
     $diff = new DiferenciasCFID($sat->get(), $empresa->get(), $contr);
     $correctos_em = $diff->get_emitidos_correctos();
     $correctos_res = $diff->get_recibidos_correctos();
     $falt_em = $diff->get_emitidos_faltantes();
     $falt_res = $diff->get_recibidos_faltantes();
     $dif_em = $diff->get_emitidos_differences();
     $diff_res = $diff->get_recibidos_differences();
     $sinEmp = Diferencias::whereIn('sat_id', $sat->lists('id'))->where('falta', '=', true)->where('empresa_id', '=', 0)->count();
     $sinSat = Diferencias::whereIn('empresa_id', $empresa->lists('id'))->where('falta', '=', true)->where('sat_id', '=', 0)->count();
     $cancelados = $diff->getCancelados();
     $cuenta_falta_sat = $sat->get()->map(function ($item) {
         return $item->diferencias()->where('falta', '=', true)->count();
     })->sum();
     $cuenta_falta_emp = $empresa->get()->map(function ($item) {
         return $item->diferencias()->where('falta', '=', true)->count();
     })->sum();
     $contr = Contribuyente::where('rfc', '=', $contr)->first();
     $serialize = "cont={$contr->rfc}&desde={$request->desde}&hasta={$request->hasta}";
     $array = array('urlPdf' => url('buscar/pdf') . "?{$serialize}", 'urlExcel' => url('buscar/excel') . "?{$serialize}", 'urlErrores' => url('buscar/tabla') . "?" . $serialize, 'urlJust' => url('buscar/just') . "?" . $serialize, 'urlIngr' => url('buscar/ingresos') . "?" . $serialize, 'nombre' => $contr->nombre, 'rfc' => $contr->rfc, 'id' => $contr->id, 'dif_recibidos' => $diff_res, 'dif_emitidos' => $dif_em, 'falt_recibidos' => $falt_res, 'falt_emitidos' => $falt_em, 'correctos_emitidos' => $correctos_em, 'correctos_recibidos' => $correctos_res, 'correctos' => (count($correctos_em) * 200 + count($correctos_res) * 200) / $todos, 'diferencias' => (count($diff_res) * 200 + count($dif_em) * 200) / $todos, 'sat_falt' => $cuenta_falta_emp * 100 / $todos, 'emp_falt' => $cuenta_falta_sat * 100 / $todos, 'cancelados' => $cancelados, 'total' => $todos, 'docSat' => $sat->count(), 'docEmp' => $empresa->count(), 'sin_sat' => $sinSat, 'sin_emp' => $sinEmp);
     //dd($array);
     return view('cargas.diferencias', $array);
 }
예제 #4
0
 public function postJustificar(Request $request)
 {
     $text = $request->razon;
     $tabla = $request->contenido;
     $texto2 = $request->contable;
     $id = $request->id;
     $diff = Diferencias::find($id);
     $contr = $request->contribuyente;
     if ($diff) {
         $diff->solucion = true;
         if (strlen($text) == 0) {
             $diff->solucion = false;
         }
         $diff->obser = $text;
         $diff->aspectos = $tabla;
         $diff->aspectos_texto = $texto2;
         $time = time();
         if ($request->hasFile('anexos')) {
             $anexos = $request->allFiles('anexos')['anexos'];
             $count = 0;
             foreach ($anexos as $anexo) {
                 $rules = array('file' => 'required');
                 //'required|mimes:png,gif,jpeg,txt,pdf,doc'
                 $validator = Validator::make(array('file' => $anexo), $rules);
                 if ($validator->passes()) {
                     $destinationPath = storage_path("anexos/{$contr}");
                     $filenameOrig = $anexo->getClientOriginalName();
                     $filename = "{$id}" . "_" . "{$count}" . "_{$time}" . "_" . $filenameOrig;
                     if (!file_exists($destinationPath)) {
                         File::makeDirectory($destinationPath, $mode = 0777, true, true);
                     }
                     $upload_success = $anexo->move($destinationPath, $filename);
                     Comprobante::create(['file' => "{$destinationPath}/{$filename}", 'diferencia_id' => $id]);
                     $count++;
                 }
             }
         }
         $nombre = session('name');
         $notification = new NotHelper(session('id'), "{$nombre} ha justificado una diferencia para el contribuyente {$contr}", 0, url('cargas'));
         $notification->toMoreLevelThan(session('level'));
         $diff->save();
     }
     Session::flash('message', 'Cambio realizado exitosamente');
     return redirect()->back();
 }
예제 #5
0
 public function procesarFinal(Cargas $carga, $nombreCarga)
 {
     $pdo = DB::connection()->getPdo();
     $query = "select id from `archivos_sat` where `archivos_sat`.`carga_id` = {$carga->id} and `archivos_sat`.`carga_id` is not null ";
     $stmt = $pdo->prepare($query);
     $stmt->execute();
     $sats = 0;
     while ($row = $stmt->fetchObject()) {
         $sats++;
         $sat = ArchivoSat::find($row->id);
         $empresa = $sat->empresa;
         if ($empresa) {
             $parserSat = new ParserCFID($sat->file);
             $parserEmpresa = new ParserCFID($empresa->file);
             $parserSat->parser();
             $parserEmpresa->parser();
             $diff = $parserSat->comparar($parserEmpresa);
             if (count($diff) > 0) {
                 foreach ($diff as $key => $val) {
                     if (Str::contains($key, 'Addenda')) {
                         continue;
                     }
                     $diffModel = Diferencias::create(['sat_id' => $sat->id, 'empresa_id' => $empresa->id, 'campo' => $key, 'sat' => $val[0], 'empresa' => $val[1]]);
                 }
             }
             $sat->procesado = true;
             $sat->save();
             $empresa->procesado = true;
             $empresa->save();
         } else {
             //Cuando el sat no tiene una empresa con el mismo nombre
             $diffModel = Diferencias::create(['sat_id' => $sat->id, 'empresa_id' => 0, 'falta' => true, 'lado' => $this->empFalta]);
             $sat->procesado = true;
             $sat->save();
         }
     }
     $pdo = DB::connection()->getPdo();
     $query = "select id from `archivos_empresa` where `archivos_empresa`.`carga_id` = {$carga->id} and `archivos_empresa`.`carga_id` is not null and `procesado` = 0";
     $stmt = $pdo->prepare($query);
     $stmt->execute();
     $empresas = 0;
     while ($row = $stmt->fetchObject()) {
         $empresas++;
         $empresa = ArchivoEmpresa::find($row->id);
         $diffModel = Diferencias::create(['sat_id' => 0, 'empresa_id' => $empresa->id, 'falta' => true, 'lado' => $this->satFalta]);
         $empresa->procesado = true;
         $empresa->save();
     }
     //Ahora se buscan las empresas que quedaron si procesar, estas quiere decir que no tienen ningun archivo asociado
     $carga->procesado = true;
     $carga->nombre = $nombreCarga;
     $carga->save();
     $nombre = session('name');
     $numFact = $sats + $empresas;
     $notification = new NotHelper(session('id'), "{$nombre} ha cargado y procesado {$numFact} facturas nuevas para el contribuyente {$carga->rfc}", 0, url('cargas'));
     $notification->toMoreLevelThan(session('level'));
     return "yes";
 }