-
Conteúdo Similar
-
Por violin101
Caros amigos, saudações.
Por favor, me permita tirar uma dúvida com os amigos.
Tenho um Formulário onde o Usuário digita todos os Dados necessários.
Minha dúvida:
--> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?
Grato,
Cesar
-
Por Carcleo
Tenho uma abela de usuarios e uma tabela de administradores e clientes.
Gostaria de uma ajuda para implementar um cadastro
users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
Queria ajuda para extender de user as classes Admin e Client
Olhem como estáAdmin
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User { use HasFactory; protected $fillable = [ 'name', 'email', 'password', 'registration' ]; private string $registration; public function create( string $name, string $email, string $password, string $registration ) { //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]); parent::$name = $name; parent::$email = $email; parent::$password = $password; $this->registration = $registration; } } User
<?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable { /** @use HasFactory<\Database\Factories\UserFactory> */ use HasFactory, Notifiable; static string $name; static string $email; static string $password; /** * The attributes that are mass assignable. * * @var list<string> */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes that should be hidden for serialization. * * @var list<string> */ protected $hidden = [ 'remember_token', ]; /** * Get the attributes that should be cast. * * @return array<string, string> */ protected function casts(): array { return [ 'email_verified_at' => 'datetime', 'password' => 'hashed', ]; } public function roles() : BelongsToMany { return $this->belongsToMany(Role::class); } public function hasHole(Array $roleName): bool { foreach ($this->roles as $role) { if ($role->name === $roleName) { return true; } } return false; } public function hasHoles(Array $rolesName): bool { foreach ($this->roles as $role) { foreach ($rolesName as $rolee) { if ($role->name === $rolee) { return true; } } } return false; } public function hasAbility(string $ability): bool { foreach ($this->roles as $role) { if ($role->abilities->contains('name', $ability)) { return true; } } return false; } } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
Tentei assim mas é claro que está errado...
public function store(Request $request, Admin $adminModel) { $dados = $request->validate([ "name" => "required", "email" => "required|email", "password" => "required", "registration" => "required" ]); $dados["password"] = Hash::make($dados["password"]); $admin = Admin::where("registration", $dados["registration"])->first(); if ($admin) return redirect()->route("admin.new") ->withErrors([ 'fail' => 'Administrador já cadastrados<br>, favor verificar!' ]); $newAdmin = $adminModel->create( $dados['name'], $dados['email'], $dados['password'], $dados['registration'] ); dd($newAdmin); $adminModel->save(); //$adminModel::create($admin); return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso'); }
-
Por violin101
Caros amigos, saudações.
Gostaria de tirar uma dúvida com os amigos, referente a PDV.
Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.
Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
a baixa direto dos produtos no estoque
ou
somente após concretizar a venda o sistema baixa os produtos do estoque ?
Grato,
Cesar
-
Por violin101
Caros amigos do grupo, saudações e um feliz 2025.
Estou com uma pequena dúvida referente a Teclas de Atalho.
Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
ou seja:
se estiver para letra minúscula ====> funciona
se estiver para letra maiúscula ====> não funciona
Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?
o Código está assim:
document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });
Grato,
Cesar
-
Por violin101
Caros amigos, saudações.
Por favor, poderiam me ajudar.
Estou com a seguinte dúvida:
--> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.
exemplo:
código ---- descrição
1 ----- produto_A
Grato,
Cesar
-
por que envia o e-mail só até a parte do produto e n do acabamento?
<?php
include('enviar_email.php');
include_once("conexao.php");
$erro = 0;
$acabamento = 0;
if($_POST){//se veio através do formulario
$produto = $_POST['produtos']; //idproduto
$quantidade = $_POST['quantidade_mat'];
}elseif($_GET){//veio através do GET a partir da venda
$produto = $_GET['produtos']; //idproduto
$quantidade = $_GET['quantidade_mat'];
//Fazer consulta no banco de dados do texto produtos e retornar o id do produto
if(preg_match('/chaveiro/i',$produto) && preg_match('/brinde/i',$produto)){
$produto = 28; //"/Chaveiro de Brinde/";
if(preg_match('/metal/i',$produto)){
$acabamento = 43;
}elseif(preg_match('/cordinha/i',$produto)){
$acabamento = 45;
}elseif(preg_match('/corrente de borracha/i',$produto)){
$acabamento = 44;
}
}elseif(preg_match('/chaveiro/i',$produto) && preg_match('/hotel/i',$produto)){
$produto = 30; //"/Chaveiro de Hotel/";
if(preg_match('/metal/i',$produto)){
$acabamento = 43;
}elseif(preg_match('/cordinha/i',$produto)){
$acabamento = 45;
}elseif(preg_match('/corrente de borracha/i',$produto)){
$acabamento = 44;
}
}elseif(preg_match('/etiqueta/i',$produto) || preg_match('/etiquetas/i',$produto)){
$produto = 35; //"/Etiqueta/";
if(preg_match('/metal/i',$produto)){
$acabamento = 43;
}elseif(preg_match('/cordinha/i',$produto)){
$acabamento = 45;
}elseif(preg_match('/corrente de borracha/i',$produto)){
$acabamento = 44;
}
}elseif(preg_match('/pendrive/i',$produto) || preg_match('/pen drive/i',$produto)|| preg_match('/pen drives/i',$produto)|| preg_match('/pendrives/i',$produto)){
$produto = 29; //"/PenDrive/";
if(preg_match('/metal/i',$produto)){
$acabamento = 43;
}elseif(preg_match('/cordinha/i',$produto)){
$acabamento = 45;
}elseif(preg_match('/corrente de borracha/i',$produto)){
$acabamento = 44;
}
}elseif(preg_match('/porta copo/i',$produto) || preg_match('/porta copos/i',$produto)){
$produto = 31; //"/Porta Copo/";
if(preg_match('/metal/i',$produto)){
$acabamento = 43;
}elseif(preg_match('/cordinha/i',$produto)){
$acabamento = 45;
}elseif(preg_match('/corrente de borracha/i',$produto)){
$acabamento = 44;
}
}elseif(preg_match('/pulseira/i',$produto) || preg_match('/pluseiras/i',$produto)){
$produto =32; //"/Pulseira/";
if(preg_match('/metal/i',$produto)){
$acabamento = 43;
}elseif(preg_match('/cordinha/i',$produto)){
$acabamento = 45;
}elseif(preg_match('/corrente de borracha/i',$produto)){
$acabamento = 44;
}
}
else{
//não passou pela comparação de produtos enviar email para WEb
enviaEmail($produto,'','', 'erro_produto', 'web@hfxdigital.com');
$erro=1;
}
}
//die($_POST);
if($erro==0){
$sql = "SELECT tbl_material.id, produto_material.quantidade_por_unidade, produto_material.nome FROM tbl_produtos
INNER JOIN produto_material ON(tbl_produtos.id = produto_material.id_produto)
INNER JOIN tbl_material ON(produto_material.id_material = tbl_material.id)
WHERE tbl_produtos.id = ".$produto;
$resultado_fornec = mysqli_query($conn, $sql);
while ($linha = $resultado_fornec->fetch_array()) {
$qtd_remover = $quantidade * $linha['quantidade_por_unidade'];
$query = "UPDATE tbl_material SET QUANTIDADE = (QUANTIDADE - ".$qtd_remover.") WHERE id=".$linha['id'];
mysqli_query($conn, $query);
$oq = "SELECT * FROM tbl_material WHERE id=".$linha['id'];
$result = mysqli_query($conn, $oq);
$row = mysqli_fetch_array($result, MYSQLI_NUM);
$atual = $row[4];
$min = $row[5];
$nome = $row[2];
if($atual <= $min){
//MANDA EMAIL
enviaEmail($nome,$min,$atual);
}
elseif($acabamento!=0){
$sql = "SELECT tbl_material.id, produto_material.quantidade_por_unidade, produto_material.nome FROM tbl_produtos
INNER JOIN produto_material ON(tbl_produtos.id = produto_material.id_produto)
INNER JOIN tbl_material ON(produto_material.id_material = tbl_material.id)
WHERE tbl_produtos.id = ".$acabamento;
$resultado_fornec = mysqli_query($conn, $sql);
while ($linha = $resultado_fornec->fetch_array()) {
$qtd_remover = $quantidade * $linha['quantidade_por_unidade'];
$query = "UPDATE tbl_material SET QUANTIDADE = (QUANTIDADE - ".$qtd_remover.") WHERE id=".$linha['id'];
mysqli_query($conn, $query);
$oq = "SELECT * FROM tbl_material WHERE id=".$linha['id'];
$result = mysqli_query($conn, $oq);
$row = mysqli_fetch_array($result, MYSQLI_NUM);
$atual = $row[4];
$min = $row[5];
$nome = $row[2];
if($atual <= $min){
//MANDA EMAIL
enviaEmail($nome,$min,$atual);
}
}
}
}
}
header("Location: listar_material.php");
?>
Compartilhar este post
Link para o post
Compartilhar em outros sites