36 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from django.db import models
 | 
						|
from django.contrib.auth import get_user_model
 | 
						|
from common.models import NameSlugModel, BaseModel
 | 
						|
from accounts.models import Company
 | 
						|
 | 
						|
User = get_user_model()
 | 
						|
 | 
						|
 | 
						|
class ContractTemplate(NameSlugModel):
 | 
						|
    body = models.TextField(verbose_name='متن قرارداد')
 | 
						|
    company = models.ForeignKey(Company, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='شرکت')
 | 
						|
 | 
						|
    class Meta:
 | 
						|
        verbose_name = 'قالب قرارداد'
 | 
						|
        verbose_name_plural = 'قالبهای قرارداد'
 | 
						|
 | 
						|
    def __str__(self):
 | 
						|
        return self.name
 | 
						|
 | 
						|
 | 
						|
class ContractInstance(BaseModel):
 | 
						|
    process_instance = models.ForeignKey('processes.ProcessInstance', on_delete=models.CASCADE, related_name='contracts', verbose_name='نمونه فرآیند')
 | 
						|
    template = models.ForeignKey(ContractTemplate, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='قالب مورد استفاده')
 | 
						|
    rendered_body = models.TextField(verbose_name='متن نهایی قرارداد')
 | 
						|
    approved = models.BooleanField(default=False, verbose_name='تایید شده')
 | 
						|
    approved_at = models.DateTimeField(null=True, blank=True, verbose_name='تاریخ تایید')
 | 
						|
    created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='ایجاد کننده')
 | 
						|
 | 
						|
    class Meta:
 | 
						|
        verbose_name = 'قرارداد'
 | 
						|
        verbose_name_plural = 'قراردادها'
 | 
						|
        ordering = ['-created']
 | 
						|
 | 
						|
    def __str__(self):
 | 
						|
        return f"Contract for {self.process_instance}"
 | 
						|
 |