diff --git a/gestaoRaul/balcao/__pycache__/htmx_views.cpython-312.pyc b/gestaoRaul/balcao/__pycache__/htmx_views.cpython-312.pyc index 8fa7aeb..47e2733 100644 Binary files a/gestaoRaul/balcao/__pycache__/htmx_views.cpython-312.pyc and b/gestaoRaul/balcao/__pycache__/htmx_views.cpython-312.pyc differ diff --git a/gestaoRaul/balcao/htmx_views.py b/gestaoRaul/balcao/htmx_views.py index 8fa028e..5ab531a 100644 --- a/gestaoRaul/balcao/htmx_views.py +++ b/gestaoRaul/balcao/htmx_views.py @@ -6,7 +6,7 @@ from django.contrib.auth.models import User -from comandas.models import Comanda, ProductComanda +from comandas.models import Comanda, ProductComanda, StockMovementType, StockMovement from mesas.models import Mesa from products.models import Product from payments.models import Payments @@ -30,7 +30,19 @@ def addProductBalcao(request, product_id, comanda_id, qtd): for i in range(qtd): product_comanda = ProductComanda(comanda_id=comanda_id, product_id=product_id) product_comanda.save() - Product.subStock(Product.objects.get(id=product_id), qtd) + product = Product.objects.get(id=product_id) + comanda = Comanda.objects.get(id=comanda_id) + user = User.objects.get(id=request.user.id) + typeMovement = StockMovementType.objects.get(name="Venda - Balcao") + + StockMovement.subTransactionStock( + product=product, + movement_type=typeMovement, + comanda=comanda, + user=user, + qtd=1, + obs= "Vendido no balcão" + ) consumo = ProductComanda.objects.filter(comanda=comanda_id) total = 0 @@ -44,7 +56,20 @@ def addProductBalcaoTeclado(request, product_id, comanda_id, qtd): for i in range(qtd): product_comanda = ProductComanda(comanda_id=comanda_id, product_id=product_id) product_comanda.save() - Product.subStock(Product.objects.get(id=product_id), qtd) + product = Product.objects.get(id=product_id) + comanda = Comanda.objects.get(id=comanda_id) + user = User.objects.get(id=request.user.id) + typeMovement = StockMovementType.objects.get(name="Venda - Balcao") + + StockMovement.subTransactionStock( + product=product, + movement_type=typeMovement, + comanda=comanda, + user=user, + qtd=1, + obs= "Vendido no balcão" + ) + consumo = ProductComanda.objects.filter(comanda=comanda_id) total = 0 for produto in consumo: @@ -54,9 +79,23 @@ def addProductBalcaoTeclado(request, product_id, comanda_id, qtd): @group_required(groupName='Garçom') def removeProductBalcao(request, productComanda_id): product_comanda = ProductComanda.objects.get(id=productComanda_id) + comanda = product_comanda.comanda + product = product_comanda.product + user = User.objects.get(id=request.user.id) + typeMovement = StockMovementType.objects.get(name="Estorno") + consumo = ProductComanda.objects.filter(comanda=product_comanda.comanda) + StockMovement.sumTransactionStock( + product=product, + movement_type=typeMovement, + comanda=comanda, + user=user, + qtd=1, + obs= "Excluido do balcão" + ) + + product_comanda.delete() - Product.addStock(Product.objects.get(id=product_comanda.product.id), 1) total = 0 for produto in consumo: diff --git a/gestaoRaul/comandas/__pycache__/admin.cpython-312.pyc b/gestaoRaul/comandas/__pycache__/admin.cpython-312.pyc index ac25a4d..30aaef4 100644 Binary files a/gestaoRaul/comandas/__pycache__/admin.cpython-312.pyc and b/gestaoRaul/comandas/__pycache__/admin.cpython-312.pyc differ diff --git a/gestaoRaul/comandas/__pycache__/htmx_views.cpython-312.pyc b/gestaoRaul/comandas/__pycache__/htmx_views.cpython-312.pyc index 6374490..c57a7db 100644 Binary files a/gestaoRaul/comandas/__pycache__/htmx_views.cpython-312.pyc and b/gestaoRaul/comandas/__pycache__/htmx_views.cpython-312.pyc differ diff --git a/gestaoRaul/comandas/__pycache__/models.cpython-312.pyc b/gestaoRaul/comandas/__pycache__/models.cpython-312.pyc index 3c572ee..793c12e 100644 Binary files a/gestaoRaul/comandas/__pycache__/models.cpython-312.pyc and b/gestaoRaul/comandas/__pycache__/models.cpython-312.pyc differ diff --git a/gestaoRaul/comandas/__pycache__/views.cpython-312.pyc b/gestaoRaul/comandas/__pycache__/views.cpython-312.pyc index 4ba7291..53182cc 100644 Binary files a/gestaoRaul/comandas/__pycache__/views.cpython-312.pyc and b/gestaoRaul/comandas/__pycache__/views.cpython-312.pyc differ diff --git a/gestaoRaul/comandas/admin.py b/gestaoRaul/comandas/admin.py index c0dd1c6..d27670a 100644 --- a/gestaoRaul/comandas/admin.py +++ b/gestaoRaul/comandas/admin.py @@ -1,7 +1,9 @@ from django.contrib import admin -from comandas.models import Comanda, ProductComanda +from comandas.models import Comanda, ProductComanda, StockMovement, StockMovementType admin.site.register(Comanda) admin.site.register(ProductComanda) +admin.site.register(StockMovementType) +admin.site.register(StockMovement) diff --git a/gestaoRaul/comandas/htmx_views.py b/gestaoRaul/comandas/htmx_views.py index 87451b9..392b63c 100644 --- a/gestaoRaul/comandas/htmx_views.py +++ b/gestaoRaul/comandas/htmx_views.py @@ -2,8 +2,10 @@ from datetime import date from decimal import Decimal from django.http import JsonResponse from django.shortcuts import render, redirect +from django.contrib.auth.models import User -from comandas.models import Comanda, ProductComanda + +from comandas.models import Comanda, ProductComanda, StockMovementType, StockMovement from orders.models import Order from products.models import Product from payments.models import Payments, somar @@ -37,15 +39,27 @@ def removeProductComanda(request, productComanda_id): 'taxa': False } product_comanda = ProductComanda.objects.get(id=productComanda_id) - comanda = Comanda.objects.get(id= product_comanda.comanda.id) + comanda = product_comanda.comanda + product = product_comanda.product + user = User.objects.get(id=request.user.id) + typeMovement = StockMovementType.objects.get(name="Estorno") + if comanda.status == 'OPEN': parcial = Payments.objects.filter(comanda=comanda) consumo = ProductComanda.objects.filter(comanda=comanda) valores = somar(consumo,comanda) if product_comanda.product.cuisine == True: order = Order.objects.get(productComanda=product_comanda) + + StockMovement.sumTransactionStock( + product=product, + movement_type=typeMovement, + comanda=comanda, + user=user, + qtd=1, + obs= "Excluido da comanda" + ) product_comanda.delete() - Product.addStock(Product.objects.get(id=product_comanda.product.id), 1) msg = JsonResponse({ 'type': 'broadcast', @@ -60,8 +74,15 @@ def removeProductComanda(request, productComanda_id): consumo = ProductComanda.objects.filter(comanda=comanda) valores = somar(consumo,comanda) else: + StockMovement.sumTransactionStock( + product=product, + movement_type=typeMovement, + comanda=comanda, + user=user, + qtd=1, + obs= "Excluido da comanda" + ) product_comanda.delete() - Product.addStock(Product.objects.get(id=product_comanda.product.id), 1) consumo = ProductComanda.objects.filter(comanda=comanda) valores = somar(consumo,comanda) diff --git a/gestaoRaul/comandas/models.py b/gestaoRaul/comandas/models.py index 56235be..b1919c7 100644 --- a/gestaoRaul/comandas/models.py +++ b/gestaoRaul/comandas/models.py @@ -5,7 +5,7 @@ from django.db.models import Count, F from clients.models import Client -from products.models import Product +from products.models import Product, ProductComponent from mesas.models import Mesa from typePay.models import TypePay @@ -77,5 +77,75 @@ class StockMovement(models.Model): f"({self.movement_type.name}) em {self.movement_date.strftime('%d/%m/%Y %H:%M')}" ) + + def subTransactionStock(product:Product, + movement_type:StockMovementType, + comanda:Comanda, + obs:str, + user:User=None, + qtd:int=1): + + components = ProductComponent.objects.filter(composite_product=product) + if components.exists(): + for component in components: + movi = StockMovement.objects.create( + product=component.component_product , + related_comanda=comanda, + user=user, + movement_type=movement_type, + quantity=-component.quantity_required, + observation=obs + ) + movi.save() + component.component_product.quantity -= component.quantity_required + component.component_product.save() + + movi = StockMovement.objects.create( + product=product , + related_comanda=comanda, + user=user, + movement_type=movement_type, + quantity=-qtd, + observation=obs + ) + movi.save() + product.quantity -= qtd + product.save() + + + def sumTransactionStock(product:Product, + movement_type:StockMovementType, + comanda:Comanda, + obs:str, + user:User=None, + qtd:int=1): + + components = ProductComponent.objects.filter(composite_product=product) + if components.exists(): + for component in components: + movi = StockMovement.objects.create( + product=component.component_product , + related_comanda=comanda, + user=user, + movement_type=movement_type, + quantity=component.quantity_required, + observation=obs + ) + movi.save() + component.component_product.quantity += component.quantity_required + component.component_product.save() + + movi = StockMovement.objects.create( + product=product , + related_comanda=comanda, + user=user, + movement_type=movement_type, + quantity=qtd, + observation=obs + ) + movi.save() + product.quantity += qtd + product.save() + class Meta: ordering = ['-movement_date'] \ No newline at end of file diff --git a/gestaoRaul/comandas/views.py b/gestaoRaul/comandas/views.py index a7a6130..92002af 100644 --- a/gestaoRaul/comandas/views.py +++ b/gestaoRaul/comandas/views.py @@ -3,15 +3,16 @@ from django.urls import reverse from django.utils import timezone from django.http import JsonResponse, HttpResponseRedirect +from django.contrib.auth.models import User from django.shortcuts import render, redirect from django.db.models import Count, F -from comandas.models import Comanda, ProductComanda +from comandas.models import Comanda, ProductComanda, StockMovement, StockMovementType from clients.models import Client from payments.models import Payments, somar from orders.models import Order -from products.models import Product +from products.models import Product, ProductComponent from mesas.models import Mesa from gestaoRaul.decorators import group_required @@ -147,9 +148,21 @@ def addProduct(request, product_id, comanda_id): obs = request.GET.get("obs") product_comanda = ProductComanda(comanda_id=comanda_id, product_id=product_id) product_comanda.save() - Product.subStock(Product.objects.get(id=product_id), 1) + product = Product.objects.get(id=product_id) comanda = Comanda.objects.get(id=comanda_id) + user = User.objects.get(id=request.user.id) + typeMovement = StockMovementType.objects.get(name="Venda - Comanda") + + StockMovement.subTransactionStock( + product=product, + movement_type=typeMovement, + comanda=comanda, + user=user, + qtd=1, + obs= "Adicionado na comanda" + ) + parcial = Payments.objects.filter(comanda=comanda) if product.cuisine == True: order = Order(id_comanda=comanda, id_product=product, productComanda=product_comanda, obs='') diff --git a/gestaoRaul/db.sqlite3 b/gestaoRaul/db.sqlite3 index 663c5a7..5164701 100644 Binary files a/gestaoRaul/db.sqlite3 and b/gestaoRaul/db.sqlite3 differ diff --git a/gestaoRaul/products/__pycache__/admin.cpython-312.pyc b/gestaoRaul/products/__pycache__/admin.cpython-312.pyc index 08d41e9..1a12239 100644 Binary files a/gestaoRaul/products/__pycache__/admin.cpython-312.pyc and b/gestaoRaul/products/__pycache__/admin.cpython-312.pyc differ diff --git a/gestaoRaul/products/__pycache__/models.cpython-312.pyc b/gestaoRaul/products/__pycache__/models.cpython-312.pyc index a9e6b0d..f70a556 100644 Binary files a/gestaoRaul/products/__pycache__/models.cpython-312.pyc and b/gestaoRaul/products/__pycache__/models.cpython-312.pyc differ diff --git a/gestaoRaul/products/admin.py b/gestaoRaul/products/admin.py index 2899e43..b4ba5d3 100644 --- a/gestaoRaul/products/admin.py +++ b/gestaoRaul/products/admin.py @@ -1,6 +1,11 @@ from django.contrib import admin -from products.models import Product +from products.models import Product, ProductComponent, UnitOfMeasure + admin.site.register(Product) +admin.site.register(ProductComponent) +admin.site.register(UnitOfMeasure) + + diff --git a/gestaoRaul/products/models.py b/gestaoRaul/products/models.py index 7d3c312..56fa6c8 100644 --- a/gestaoRaul/products/models.py +++ b/gestaoRaul/products/models.py @@ -2,7 +2,6 @@ from django.db import models from django.contrib.auth.models import User from categories.models import Categories -# from comandas.models import Comanda @@ -47,14 +46,6 @@ class Product(models.Model): def __str__(self) -> str: return f"{self.name}" - def subStock(self, qtd): - self.quantity -= qtd - self.save() - - def addStock(self, qtd): - self.quantity += qtd - self.save() - class ProductComponent(models.Model):