Files
2026-01-18 11:42:00 +03:30

372 lines
13 KiB
Python

import datetime
from authentication.models import BaseModel, SystemUserProfile, SystemAddress, BankCard
from django.db import models
class LiveStockProvinceJahad(BaseModel):
user = models.ForeignKey(
SystemUserProfile,
on_delete=models.CASCADE,
related_name="live_stock_jahad_user",
null=True
)
address = models.ForeignKey(
SystemAddress,
on_delete=models.CASCADE,
related_name="live_stock_jahad_address",
null=True
)
user_bank_info = models.ForeignKey(
BankCard,
on_delete=models.CASCADE,
related_name="live_stock_jahad_bank_info",
null=True
)
name = models.CharField(max_length=200, null=True)
mobile = models.CharField(max_length=200, null=True)
type = models.CharField(max_length=200, null=True)
account = models.CharField(max_length=200, null=True)
national_id = models.CharField(max_length=100, null=True)
def save(self, *args, **kwargs):
super(LiveStockProvinceJahad, self).save(*args, **kwargs)
class Union(BaseModel):
user = models.ForeignKey(
SystemUserProfile,
on_delete=models.CASCADE,
related_name="union_user",
null=True
)
address = models.ForeignKey(
SystemAddress,
on_delete=models.CASCADE,
related_name="union_address",
null=True
)
user_bank_info = models.ForeignKey(
BankCard,
on_delete=models.CASCADE,
related_name="union_bank_info",
null=True
)
name = models.CharField(max_length=200, null=True)
mobile = models.CharField(max_length=200, null=True)
type = models.CharField(max_length=200, null=True)
account = models.CharField(max_length=200, null=True)
national_id = models.CharField(max_length=100, null=True)
active = models.BooleanField(default=True)
def save(self, *args, **kwargs):
super(Union, self).save(*args, **kwargs)
class Cooperative(BaseModel):
user = models.ForeignKey(
SystemUserProfile,
on_delete=models.CASCADE,
related_name="cooperative_user",
null=True
)
address = models.ForeignKey(
SystemAddress,
on_delete=models.CASCADE,
related_name="cooperative_address",
null=True
)
user_bank_info = models.ForeignKey(
BankCard,
on_delete=models.CASCADE,
related_name="cooperative_bank_info",
null=True
)
name = models.CharField(max_length=200, null=True)
mobile = models.CharField(max_length=200, null=True)
type = models.CharField(max_length=200, null=True)
account = models.CharField(max_length=200, null=True)
national_id = models.CharField(max_length=100, null=True)
active = models.BooleanField(default=True)
first_sub_cooperative_price = models.IntegerField(default=0)
first_sub_cooperative_account = models.CharField(max_length=200, null=True)
second_sub_cooperative_price = models.IntegerField(default=0)
second_sub_cooperative_account = models.CharField(max_length=200, null=True)
def save(self, *args, **kwargs):
super(Cooperative, self).save(*args, **kwargs)
class Rancher(BaseModel):
user = models.ForeignKey(
SystemUserProfile,
on_delete=models.CASCADE,
related_name="rancher_user",
null=True
)
# address = models.ForeignKey(
# SystemAddress,
# on_delete=models.CASCADE,
# related_name="rancher_address",
# null=True
# )
# user_bank_info = models.ForeignKey(
# BankCard,
# on_delete=models.CASCADE,
# related_name="rancher_bank_info",
# null=True
# )
# contractor = models.ForeignKey(
# Contractor,
# on_delete=models.CASCADE,
# related_name="rancher_contractor",
# null=True
# )
cooperative = models.ForeignKey(
Cooperative,
on_delete=models.CASCADE,
related_name="rancher_cooperative",
null=True
)
name = models.CharField(max_length=200, null=True)
registering_user = models.CharField(max_length=200, null=True)
lng = models.FloatField(default=0)
lot = models.FloatField(default=0)
mobile = models.CharField(max_length=200, null=True)
fullname = models.CharField(max_length=200, null=True)
city = models.CharField(max_length=200, null=True)
herd_name = models.CharField(max_length=200, null=True)
unit_id = models.CharField(max_length=100, null=True)
postal_code = models.CharField(max_length=100, null=True)
epidemiological_code = models.CharField(max_length=100, null=True)
herd_code = models.CharField(max_length=100, null=True)
national_id = models.CharField(max_length=100, null=True)
allow_buy = models.BooleanField(default=True)
weight_allocation_light = models.IntegerField(default=0)
weight_allocation_heavy = models.IntegerField(default=0)
weight_quota_heavy = models.IntegerField(default=0)
weight_quota_light = models.IntegerField(default=0)
total_weight = models.BigIntegerField(default=0)
contractor_code = models.CharField(max_length=100, null=True)
sheep = models.IntegerField(default=0)
goat = models.IntegerField(default=0)
cow = models.IntegerField(default=0)
horse = models.IntegerField(default=0)
camel = models.IntegerField(default=0)
light_livestock = models.IntegerField(default=0)
heavy_livestock = models.IntegerField(default=0)
has_script = models.BooleanField(default=False)
active = models.BooleanField(default=True)
type = models.CharField(max_length=200, default='rural')
industrial = models.BooleanField(default=False)
dhi_amount = models.IntegerField(default=0)
def save(self, *args, **kwargs):
# live_stocks = LiveStock.objects.filter(trash=False, herd_code=self.herd_code).only('type')
# light_livestock = live_stocks.filter(type__in=('بز', 'گوسفند')).count()
# heavy_livestock = live_stocks.filter(type__in=('گاو', 'اسب', 'شتر')).count()
# product = LiveStockProduct.objects.filter(trash=False, name='سبوس').first()
# self.weight_quota_heavy=product.heavy_wight * heavy_livestock
# self.weight_quota_light=product.light_wight * light_livestock
super(Rancher, self).save(*args, **kwargs)
class LiveStock(BaseModel):
rancher = models.ForeignKey(Rancher, on_delete=models.CASCADE, null=True)
national_id_livestock_code = models.CharField(max_length=200, null=True)
herd_code = models.CharField(max_length=100, null=True)
type = models.CharField(max_length=200, null=True)
birth_day = models.CharField(max_length=200, null=True)
gender = models.CharField(max_length=100, null=True)
contractor_code = models.CharField(max_length=100, null=True)
unique_identifier = models.CharField(max_length=100, null=True)
agent = models.CharField(max_length=100, null=True)
registering_user = models.CharField(max_length=200, null=True)
registering_date = models.CharField(max_length=200, null=True)
active = models.BooleanField(default=True)
birth_day_gh = models.DateTimeField(null=True)
registering_date_gh = models.DateTimeField(null=True)
archive=models.BooleanField(default=False)
age_of_archive=models.IntegerField(default=1)
archiver=models.CharField(max_length=250,null=True)
archive_date=models.DateTimeField(null=True)
returner_from_archive=models.CharField(max_length=250,null=True)
return_from_archive_date=models.DateTimeField(null=True)
def save(self, *args, **kwargs):
super(LiveStock, self).save(*args, **kwargs)
class LiveStockProduct(BaseModel):
name = models.CharField(max_length=200, null=True)
image = models.CharField(max_length=500, null=True)
unit = models.CharField(max_length=200, null=True)
price = models.IntegerField(default=0)
light_wight = models.IntegerField(default=0)
heavy_wight = models.IntegerField(default=0)
company_price = models.IntegerField(default=0)
shipping_price = models.IntegerField(default=0)
union_price = models.IntegerField(default=0)
cooperative_price = models.IntegerField(default=0)
light_wight_industrial = models.IntegerField(default=0)
heavy_wight_industrial = models.IntegerField(default=0)
light_wight_dha = models.IntegerField(default=0)
heavy_wight_dha = models.IntegerField(default=0)
def save(self, *args, **kwargs):
super(LiveStockProduct, self).save(*args, **kwargs)
class CooperativeProductsShare(BaseModel):
cooperative = models.ForeignKey(
Cooperative,
on_delete=models.CASCADE,
related_name="cooperative_share_product",
null=True
)
product = models.ForeignKey(
LiveStockProduct,
on_delete=models.CASCADE,
related_name="cooperative_share_product",
null=True
)
price = models.IntegerField(default=0)
shipping_price = models.IntegerField(default=0)
union_price = models.IntegerField(default=0)
cooperative_price = models.IntegerField(default=0)
company_price = models.IntegerField(default=0)
def save(self, *args, **kwargs):
super(CooperativeProductsShare, self).save(*args, **kwargs)
class LiveStockRolseProduct(BaseModel):
parent_product = models.ForeignKey(
LiveStockProduct,
on_delete=models.CASCADE,
related_name="parents_product",
null=True
)
jahad = models.ForeignKey(
LiveStockProvinceJahad,
on_delete=models.CASCADE,
related_name="jahad_product",
null=True
)
union = models.ForeignKey(
Union,
on_delete=models.CASCADE,
related_name="union_product",
null=True
)
cooperative = models.ForeignKey(
Cooperative,
on_delete=models.CASCADE,
related_name="cooperative_product",
null=True
)
# rancher = models.ForeignKey(
# Rancher,
# on_delete=models.CASCADE,
# related_name="rancher_product",
# null=True
# )
name = models.CharField(max_length=200, null=True)
total_weight = models.BigIntegerField(default=0)
total_receipt_weight = models.BigIntegerField(default=0)
total_allocated_weight = models.BigIntegerField(default=0)
total_remain_weight = models.BigIntegerField(default=0)
def save(self, *args, **kwargs):
self.total_remain_weight = self.total_weight - self.total_allocated_weight
super(LiveStockRolseProduct, self).save(*args, **kwargs)
class LiveStockAllocations(BaseModel):
product = models.ForeignKey(
LiveStockRolseProduct,
on_delete=models.CASCADE,
related_name="product_allocation",
null=True
)
jahad = models.ForeignKey(
LiveStockProvinceJahad,
on_delete=models.CASCADE,
related_name="jahad_allocation",
null=True
)
union = models.ForeignKey(
Union,
on_delete=models.CASCADE,
related_name="union_allocation",
null=True
)
cooperative = models.ForeignKey(
Cooperative,
on_delete=models.CASCADE,
related_name="cooperative_allocation",
null=True
)
state = models.CharField(max_length=200, default='pending')
weight = models.BigIntegerField(default=0)
real_weight = models.BigIntegerField(default=0)
date = models.DateTimeField(default=datetime.datetime.now)
allocate_from = models.CharField(max_length=200, null=True)
allocate_to = models.CharField(max_length=200, null=True)
place = models.TextField(null=True)
charge = models.BooleanField(default=False)
code = models.CharField(max_length=200, null=True)
description = models.TextField(null=True, blank=True)
def save(self, *args, **kwargs):
super(LiveStockAllocations, self).save(*args, **kwargs)
class Contractor(BaseModel):
user = models.ForeignKey(
SystemUserProfile,
on_delete=models.CASCADE,
related_name="contractor_user",
null=True
)
address = models.ForeignKey(
SystemAddress,
on_delete=models.CASCADE,
related_name="contractor_user",
null=True
)
cooperative = models.ForeignKey(
Cooperative,
on_delete=models.CASCADE,
related_name="contractor_cooperative",
null=True
)
contractor_code = models.CharField(max_length=100, null=True)
fullname = models.CharField(max_length=200, null=True)
entity_code = models.CharField(max_length=200, null=True)
national_id = models.CharField(max_length=100, null=True)
company_name = models.CharField(max_length=200, null=True)
number_of_rancher = models.IntegerField(default=0)
heavy_livestock = models.IntegerField(default=0)
light_livestock = models.IntegerField(default=0)
def save(self, *args, **kwargs):
super(Contractor, self).save(*args, **kwargs)
class PosSeller(BaseModel):
cooperative = models.ForeignKey(
Cooperative,
on_delete=models.CASCADE,
related_name="seller_pos_cooperative",
null=True
)
full_name=models.CharField(max_length=200,null=True)
mobile=models.CharField(max_length=50,null=True)
national_id=models.CharField(max_length=50,null=True)
city=models.CharField(max_length=100,null=True)
def save(self, *args, **kwargs):
super(PosSeller, self).save(*args, **kwargs)