forked from DGNum/gestioCOF
Modif stock lors d'une annulation
- Le stock n'est pas modifié s'il y a eu un inventaire depuis la date de la commande annulée - La méthode save d'ArticleInventory calcule elle-même l'erreur à partir de stock_old et stock_new
This commit is contained in:
parent
ffa73c41c3
commit
a0f1243690
2 changed files with 24 additions and 4 deletions
|
@ -368,6 +368,10 @@ class InventoryArticle(models.Model):
|
||||||
stock_new = models.IntegerField()
|
stock_new = models.IntegerField()
|
||||||
stock_error = models.IntegerField(default = 0)
|
stock_error = models.IntegerField(default = 0)
|
||||||
|
|
||||||
|
def save(self, *args, **kwargs):
|
||||||
|
self.stock_error = self.stock_new - self.stock_old
|
||||||
|
super(InventoryArticle, self).save(*args, **kwargs)
|
||||||
|
|
||||||
class Supplier(models.Model):
|
class Supplier(models.Model):
|
||||||
articles = models.ManyToManyField(
|
articles = models.ManyToManyField(
|
||||||
Article,
|
Article,
|
||||||
|
|
|
@ -951,6 +951,12 @@ def kpsul_cancel_operations(request):
|
||||||
# Pour les balances de caisses
|
# Pour les balances de caisses
|
||||||
# Les balances de caisses dont il y a eu un relevé depuis la date
|
# Les balances de caisses dont il y a eu un relevé depuis la date
|
||||||
# de la commande ne doivent pas être modifiées
|
# de la commande ne doivent pas être modifiées
|
||||||
|
# TODO : Prendre en compte le dernier relevé où la caisse a été
|
||||||
|
# comptée et donc modifier les balance_old (et amount_error)
|
||||||
|
# des relevés suivants.
|
||||||
|
# Note : Dans le cas où un CheckoutStatement est mis à jour
|
||||||
|
# par `.save()`, amount_error est recalculé automatiquement,
|
||||||
|
# ce qui n'est pas le cas en faisant un update sur queryset
|
||||||
# TODO ? : Maj les balance_old de relevés pour modifier l'erreur
|
# TODO ? : Maj les balance_old de relevés pour modifier l'erreur
|
||||||
last_statement = (CheckoutStatement.objects
|
last_statement = (CheckoutStatement.objects
|
||||||
.filter(checkout=ope.group.checkout)
|
.filter(checkout=ope.group.checkout)
|
||||||
|
@ -964,7 +970,19 @@ def kpsul_cancel_operations(request):
|
||||||
to_checkouts_balances[ope.group.checkout] -= ope.amount
|
to_checkouts_balances[ope.group.checkout] -= ope.amount
|
||||||
|
|
||||||
# Pour les stocks d'articles
|
# Pour les stocks d'articles
|
||||||
|
# Les stocks d'articles dont il y a eu un inventaire depuis la date
|
||||||
|
# de la commande ne doivent pas être modifiés
|
||||||
|
# TODO : Prendre en compte le dernier inventaire où le stock a bien
|
||||||
|
# été compté (pas dans le cas d'une livraison).
|
||||||
|
# Note : si InventoryArticle est maj par .save(), stock_error
|
||||||
|
# est recalculé automatiquement
|
||||||
if ope.article and ope.article_nb:
|
if ope.article and ope.article_nb:
|
||||||
|
last_stock = (ArticleInventory.objects
|
||||||
|
.select_related('inventory')
|
||||||
|
.filter(article=ope.article)
|
||||||
|
.order_by('at')
|
||||||
|
.last())
|
||||||
|
if not last_stock or last_stock.inventory.at < ope.group.at:
|
||||||
to_articles_stocks[ope.article] += ope.article_nb
|
to_articles_stocks[ope.article] += ope.article_nb
|
||||||
|
|
||||||
if not opes:
|
if not opes:
|
||||||
|
@ -1307,13 +1325,11 @@ def inventory_create(request):
|
||||||
article = articles.get(pk=form.cleaned_data['article'].pk)
|
article = articles.get(pk=form.cleaned_data['article'].pk)
|
||||||
stock_old = article.stock
|
stock_old = article.stock
|
||||||
stock_new = form.cleaned_data['stock_new']
|
stock_new = form.cleaned_data['stock_new']
|
||||||
stock_error = stock_new - stock_old
|
|
||||||
InventoryArticle.objects.create(
|
InventoryArticle.objects.create(
|
||||||
inventory = inventory,
|
inventory = inventory,
|
||||||
article = article,
|
article = article,
|
||||||
stock_old = stock_old,
|
stock_old = stock_old,
|
||||||
stock_new = stock_new,
|
stock_new = stock_new)
|
||||||
stock_error = stock_error)
|
|
||||||
article.stock = stock_new
|
article.stock = stock_new
|
||||||
article.save()
|
article.save()
|
||||||
print('ok')
|
print('ok')
|
||||||
|
|
Loading…
Reference in a new issue