public function validalinhanf($chave, $deliveryid) { function calcula_chave($chave) { if(strlen ($chave) < 44){ return "CHAVE_INVALIDA"; } $chave43=substr($chave, 0, 43); $multiplicadores=[2, 3, 4, 5, 6, 7, 8, 9]; $soma=0; $resto=0; $i=42; while ($i >= 0) { for ($m=0; $m < count($multiplicadores) && $i >= 0; $m++) { $soma_ponderada=$chave43[$i] * $multiplicadores[$m]; $soma=$soma + $soma_ponderada; $i--; } } $resto=$soma % 11; if ($resto == '0' || $resto == '1') { $resto='0'; } else { $resto=(11 - $resto); } $chave44=$chave43 . $resto; if ($chave == $chave44) { return 1; } else { return 0; } } $resultadoCalculaChave = calcula_chave($chave); if ($resultadoCalculaChave != 1){ return "CHAVE_INVALIDA"; } $cnpj=substr($chave, 6, 14); $entrega=Delivery::find($deliveryid); // $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(); $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(); $clienteid=DB::table('cliente_c_n_p_js')->select('cliente_c_n_p_js.Cliente_ID')->where('CNPJ', '=', $cnpj)->get(); if ($encontraRepetido->count() != 0) { if($encontraRepetido[0]->delivery_date == $entrega->date_delivery){ return "CHAVE_REPETIDA"; }else{ foreach ($encontraRepetido as $ch) { $update=NF::find($ch->id); $update->status_id=8; $update->save(); } $reentrega=1; $retorno=[$clienteid, $reentrega]; return $retorno; } }else{ $reentrega=0; $retorno=[$clienteid, $reentrega]; return $retorno; } }