372 lines
13 KiB
Python
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)
|