update
This commit is contained in:
parent
5397363716
commit
8f59cc6723
Binary file not shown.
@ -110,20 +110,10 @@ DATABASES = {
|
||||
"NAME": "haikal",
|
||||
"USER": "haikal",
|
||||
"PASSWORD": "haikal",
|
||||
"HOST": "localhost",
|
||||
"HOST": "10.10.1.120",
|
||||
"PORT": 5432,
|
||||
}
|
||||
}
|
||||
# DATABASES = {
|
||||
# "default": {
|
||||
# "ENGINE": "django_prometheus.db.backends.postgresql",
|
||||
# "NAME": "murad_haikal",
|
||||
# "USER": "f95166",
|
||||
# "PASSWORD": "Kfsh&rc9788",
|
||||
# "HOST": "localhost",
|
||||
# "PORT": 5432,
|
||||
# }
|
||||
# }
|
||||
|
||||
# Password validation
|
||||
# https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
43
inventory/migrations/0014_payment_refund.py
Normal file
43
inventory/migrations/0014_payment_refund.py
Normal file
@ -0,0 +1,43 @@
|
||||
# Generated by Django 5.1.4 on 2024-12-24 14:43
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('inventory', '0013_salequotation_is_paid'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Payment',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('amount', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='amount')),
|
||||
('payment_method', models.CharField(choices=[('cash', 'cash'), ('credit', 'credit'), ('transfer', 'transfer'), ('debit', 'debit'), ('SADAD', 'SADAD')], max_length=50, verbose_name='method')),
|
||||
('reference_number', models.CharField(blank=True, max_length=100, null=True, verbose_name='reference number')),
|
||||
('payment_date', models.DateField(auto_now_add=True, verbose_name='date')),
|
||||
('quotation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='payments', to='inventory.salequotation')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'payment',
|
||||
'verbose_name_plural': 'payments',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Refund',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('amount', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='amount')),
|
||||
('reason', models.TextField(blank=True, verbose_name='reason')),
|
||||
('refund_date', models.DateField(auto_now_add=True, verbose_name='refund date')),
|
||||
('payment', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='refund', to='inventory.payment')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'refund',
|
||||
'verbose_name_plural': 'refunds',
|
||||
},
|
||||
),
|
||||
]
|
||||
@ -1,18 +1,9 @@
|
||||
from random import randint
|
||||
|
||||
from django.db.models.signals import post_save, post_delete,pre_delete
|
||||
from django.db.models.signals import post_save, post_delete, pre_delete, pre_save
|
||||
from django.dispatch import receiver
|
||||
from django_ledger.views import JournalEntryCreateView
|
||||
from django_ledger.models import (
|
||||
EntityModel,
|
||||
VendorModel,
|
||||
CustomerModel,
|
||||
UnitOfMeasureModel,
|
||||
AccountModel,
|
||||
ItemModelAbstract,
|
||||
ItemModel
|
||||
)
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.utils import timezone
|
||||
from django_ledger.models import EntityModel
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
@ -73,25 +64,22 @@ def update_car_status_on_reservation_delete(sender, instance, **kwargs):
|
||||
@receiver(post_save, sender=models.Dealer)
|
||||
def create_ledger_entity(sender, instance, created, **kwargs):
|
||||
if created:
|
||||
# Group.objects.get(name=instance.dealer_type.lower()).user_set.add(instance.user)
|
||||
try:
|
||||
entity, created = EntityModel.objects.get_or_create(
|
||||
name=instance.get_root_dealer.name,
|
||||
admin=instance.get_root_dealer.user,
|
||||
# address_1=instance.address,
|
||||
accrual_method=False,
|
||||
fy_start_month=1,
|
||||
depth=0,
|
||||
)
|
||||
if created:
|
||||
default_coa = entity.create_chart_of_accounts(
|
||||
assign_as_default=True, commit=True, coa_name=_("Chart of Accounts")
|
||||
)
|
||||
if default_coa:
|
||||
entity.populate_default_coa(
|
||||
activate_accounts=True, coa_model=default_coa
|
||||
)
|
||||
print(f"Ledger entity created for Dealer: {instance.name}")
|
||||
entity, created = EntityModel.objects.get_or_create(
|
||||
name=instance.get_root_dealer.name,
|
||||
admin=instance.get_root_dealer.user,
|
||||
# address_1=instance.address,
|
||||
accrual_method=False,
|
||||
fy_start_month=1,
|
||||
depth=0,
|
||||
)
|
||||
print(entity)
|
||||
if created:
|
||||
default_coa = entity.create_chart_of_accounts(assign_as_default=True,
|
||||
commit=True,
|
||||
coa_name=_("Chart of Accounts"))
|
||||
if default_coa:
|
||||
entity.populate_default_coa(activate_accounts=True, coa_model=default_coa)
|
||||
print(f"Ledger entity created for Dealer: {instance.name}")
|
||||
|
||||
# entity.create_account(
|
||||
# coa_model=coa,
|
||||
@ -156,7 +144,7 @@ def create_ledger_vendor(sender, instance, created, **kwargs):
|
||||
entity = EntityModel.objects.filter(name=instance.dealer.name).first()
|
||||
|
||||
entity.create_vendor(
|
||||
vendor_name=instance.name,
|
||||
name=instance.name,
|
||||
vendor_number=instance.crn,
|
||||
address_1=instance.address,
|
||||
phone=instance.phone_number,
|
||||
@ -264,3 +252,26 @@ def create_customer(sender, instance, created, **kwargs):
|
||||
# default_amount=instance.cost_price,
|
||||
# )
|
||||
# print(f"Inventory item updated with CarFinance data for Car: {instance.car}")
|
||||
|
||||
|
||||
@receiver(pre_save, sender=models.SaleQuotation)
|
||||
def update_quotation_status(sender, instance, **kwargs):
|
||||
if instance.valid_until and timezone.now() > instance.valid_until:
|
||||
instance.status = 'expired'
|
||||
# instance.total_price = instance.calculate_total_price()
|
||||
|
||||
|
||||
@receiver(post_save, sender=models.Payment)
|
||||
def update_status_on_payment(sender, instance, created, **kwargs):
|
||||
if created:
|
||||
quotation = instance.sale_quotation
|
||||
total_payments = sum(payment.amount for payment in quotation.payments.all())
|
||||
if total_payments >= quotation.amount:
|
||||
quotation.status = 'completed'
|
||||
# SalesInvoice.objects.create(sales_order=order)
|
||||
elif total_payments > 0:
|
||||
quotation.status = 'partially_paid'
|
||||
else:
|
||||
quotation.status = 'pending'
|
||||
quotation.save()
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user