2017-01-05 1 views
0

Je souhaite créer un système d'inventaire de base à l'aide de laravel. J'ai 2 tables. Un pour les achats et un autre pour les ventes. Champs de la table d'achat: id, id_produit, quantity_bought, date_bought.Création d'une base de données pour un système d'inventaire à laravel

Les champs dans le tableau des ventes: id, product_id, Quantity_Sold, date_sold

Comment puis-je effectuer des validations telle que Quantity_Sold ne peut pas être supérieure à quantity_bought? Comment puis-je obtenir quantity_remaining et l'enregistrer dans la base de données.

Répondre

1

Probablement vous devriez ajouter une autre table products qui détient le montant actuel en stock. Puis vous pouvez créer une relation Eloquent entre products et purchases et sales. Ainsi, la colonne product_id dans purchases et sales pointe vers la table des produits. Pour plus d'informations, voir: https://laravel.com/docs/5.3/eloquent-relationships

Ensuite, une fois que vous avez besoin d'ajouter une nouvelle vente, vous pouvez faire une transaction dans laquelle vous vérifiez si le montant actuel en stock pour les produits est plus élevé que la quantité de produits vendus. Et si tout va bien, vous mettez à jour le montant actuel en stock et créez la nouvelle entrée pour la table des ventes. Si l'une des vérifications échoue, annulez simplement la transaction, si tout est bon, validez-la. Pour plus d'informations sur les transactions voir: https://laravel.com/docs/5.3/database#database-transactions

De cette façon, la amount_in_stock de la table products aura toujours le montant actuel en stock et vos tables purchases et sales sera votre journal.


Pour en revenir à la validation, dans cette configuration, vous aurez besoin d'interroger la table products pour le montant actuel en stock. Vous pouvez simplement le récupérer à partir de DB et le comparer avec votre entrée pour les ventes (que vous devriez faire de toute façon). Il n'y a pas de règle de validation Laravel prête à l'emploi qui peut vérifier la valeur de la table x et la comparer avec une colonne de table quelque part. Bien sûr, vous pouvez créer le vôtre, mais je ne vois pas vraiment pourquoi vous devriez le faire ici. En tout cas, consultez: https://laravel.com/docs/5.3/validation#custom-validation-rules pour plus d'informations à ce sujet.

0

Vous pouvez obtenir en définissant un totalBoughts($product_id) dans votre modèle « Achat » et totalSolds($product_id) dans votre table « Sales » et appelez dans votre contrôleur en donnant id produit

mais ce n'est pas un moyen efficace de faire si

vous pouvez également créer des relations entre ces deux avec une table d'actions où l'on peut stocker l'état actuel du produit

lors de l'achat du stock incrémentée et à la vente, il diminue la quantité de produits si u si un produit en stock est réglé sur 0 ne peut pas vérifier manuellement la table entière pour la disponibilité alors il ne peut pas être vendu

0

Il y a Belle bibliothèque pour l'inventaire de Laravel.Prise en charge des 4 et 5

https://github.com/stevebauman/inventory

Tableaux selon la bibliothèque sont les suivants

+---------------------------------+ 
|Table Names      | 
+---------------------------------+ 
| categories      | 
| inventories      | 
| inventory_skus     | 
| inventory_stock_movements  | 
| inventory_stocks    | 
| inventory_suppliers    | 
| inventory_transaction_histories | 
| inventory_transactions   | 
| locations      | 
| metrics       | 
| migrations      | 
| password_resets     | 
| suppliers      | 
| users       | 
+---------------------------------+