Facebook
From Trivial Motmot, 2 Years ago, written in PHP.
Embed
Download Paste or View Raw
Hits: 58
  1. public function validalinhanf($chave, $deliveryid)
  2.     {
  3.  
  4.  
  5.  
  6.         function calcula_chave($chave)
  7.         {
  8.  
  9.             if(strlen ($chave) < 44){
  10.                 return "CHAVE_INVALIDA";
  11.             }
  12.  
  13.             $chave43=substr($chave, 0, 43);
  14.             $multiplicadores=[2, 3, 4, 5, 6, 7, 8, 9];
  15.             $soma=0;
  16.  
  17.             $resto=0;
  18.             $i=42;
  19.             while ($i >= 0) {
  20.                 for ($m=0; $m < count($multiplicadores) && $i >= 0; $m++) {
  21.                     $soma_ponderada=$chave43[$i] * $multiplicadores[$m];
  22.                     $soma=$soma + $soma_ponderada;
  23.  
  24.                     $i--;
  25.                 }
  26.             }
  27.  
  28.             $resto=$soma % 11;
  29.  
  30.             if ($resto == '0' || $resto == '1') {
  31.                 $resto='0';
  32.             } else {
  33.                 $resto=(11 - $resto);
  34.             }
  35.  
  36.             $chave44=$chave43 . $resto;
  37.  
  38.  
  39.             if ($chave == $chave44) {
  40.  
  41.                 return 1;
  42.             } else {
  43.                 return 0;
  44.             }
  45.         }
  46.  
  47.         $resultadoCalculaChave = calcula_chave($chave);
  48.  
  49.         if ($resultadoCalculaChave != 1){
  50.             return "CHAVE_INVALIDA";
  51.         }
  52.  
  53.         $cnpj=substr($chave, 6, 14);
  54.  
  55.         $entrega=Delivery::find($deliveryid);
  56.  
  57.        // $encontraRepetido=DB::table('n_f_s')->where([['key', '=', $chave], ['delivery_date', '<=', $entrega->date_delivery], ['delivery_date', '>=', '2019-03-01'],['n_f_s.deleted_at', '=', null]])->orderBy('delivery_date', 'desc')->get();
  58.         $encontraRepetido=NF::where([['key', '=', $chave], ['delivery_date', '<=', $entrega->date_delivery], ['delivery_date', '>=', '2021-01-01'],['n_f_s.deleted_at', '=', null]])->orderBy('delivery_date', 'desc')->get();
  59.  
  60.         $clienteid=DB::table('cliente_c_n_p_js')->select('cliente_c_n_p_js.Cliente_ID')->where('CNPJ', '=', $cnpj)->get();
  61.  
  62.  
  63.         if ($encontraRepetido->count() != 0) {
  64.  
  65.             if($encontraRepetido[0]->delivery_date == $entrega->date_delivery){
  66.  
  67.                 return "CHAVE_REPETIDA";
  68.  
  69.             }else{
  70.  
  71.                     foreach ($encontraRepetido as $ch) {
  72.                         $update=NF::find($ch->id);
  73.                         $update->status_id=8;
  74.                         $update->save();
  75.                     }
  76.                     $reentrega=1;
  77.                         $retorno=[$clienteid, $reentrega];
  78.                     return $retorno;
  79.                
  80.             }
  81.  
  82.         }else{
  83.  
  84.                 $reentrega=0;
  85.                 $retorno=[$clienteid, $reentrega];
  86.                 return $retorno;  
  87.  
  88.         }
  89.  
  90.     }