
    i                         d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlZ G d dej                        Z G d	 d
ej                        Z G d dej                        Zy)    )models)AbstractUser)timezone)MinValueValidatorMaxValueValidator)UserNc                      e Zd ZdZg dZ ej                  d      Z ej                  d      Z	 ej                  de      Z
 ej                  d	      Z ej                  d
d      Z ej                  d
ddd      Z ej                   ed      Z	  ej&                  d      Z ej*                  d      Z ej*                  d      Zd Z G d d      Zy)SubscriptionPlanz7Subscription plans synchronized from internal dashboard))basicBasic)proPro)
enterprise
EnterprisecustomCustomT)uniqued   )
max_length   r   choicesblank
      
max_digitsdecimal_places)r   r    nullr   )defaultr   r"   auto_now_addauto_nowc                 B    | j                    d| j                          dS )N ())nameget_plan_type_displayselfs    8/var/www/app.tikistats.com/public_html/billing/models.py__str__zSubscriptionPlan.__str__6   s#    ))Bt99;<A>>    c                       e Zd ZddgZy)SubscriptionPlan.Meta	plan_typemonthly_priceN__name__
__module____qualname__ordering r1   r/   Metar3   9   s    1r1   r<   N)r7   r8   r9   __doc__PLAN_TYPE_CHOICESr   IntegerFieldinternal_plan_id	CharFieldr+   r4   	TextFielddescriptionDecimalFieldr5   annual_price	JSONFielddictaccess_controlBooleanField	is_activeDateTimeField
created_at
updated_atr0   r<   r;   r1   r/   r
   r
      s    A +v**$76s+D   B8IJI"&"".K (F''2aHM&6&&"QTY]^L &V%%d$?N" $##D1I%%%48J%%%t4J?2 2r1   r
   c                      e Zd ZdZg dZg dZ ej                  eej                  d      Z
 ej                  eej                        Z ej                  ded	      Z ej                  de
      Z ej"                  ej&                        Z ej"                  dd      Z ej"                  dd      Z ej"                  dd      Z ej"                  dd      Z ej2                  dd      Z ej2                  ddd      Z ej8                  dd      Z ej<                  d      Z ej"                  d      Z  ej"                  d      Z!d Z"d Z#d Z$ G d d      Z%y)UserSubscriptionzUser's active subscription))trialTrial)activeActive)pausedPaused)	cancelled	Cancelled)expiredExpired))monthlyMonthly)annualAnnualr   subscriptions	on_deleterelated_name)r`   r   rP   r   r   r"   r   r#   Tr!   r   r   r   r      r   )r   r    r"   r   r$   r&   c                 |    | j                   j                   d| j                  j                   d| j                   dS )N - r)   r*   )userusernamesubscription_planr+   statusr-   s    r/   r0   zUserSubscription.__str__g   s8    ))$$%S)?)?)D)D(ER}TUVVr1   c                     | j                   j                  j                         }| j                  r|j	                  | j                         |S )z/Merge plan access control with custom overrides)ri   rH   copycustom_access_controlupdate)r.   base_controls     r/   get_effective_access_controlz-UserSubscription.get_effective_access_controlj   s?    --<<AAC%% : :;r1   c                     | j                   dk(  xr1 | j                  d u xs! | j                  t        j                         kD  S )NrR   )rj   end_dater   nowr-   s    r/   rJ   zUserSubscription.is_activeq   s8    {{h& 
MMT!CT]]X\\^%C	
r1   c                   d    e Zd ZdgZ ej
                  ddg       ej
                  dg      gZy)UserSubscription.Metaz-created_atrg   rj   )fieldsnext_billing_dateN)r7   r8   r9   r:   r   Indexindexesr;   r1   r/   r<   ru   v   s5    !?FLL 23FLL!4 56
r1   r<   N)&r7   r8   r9   r=   STATUS_CHOICESBILLING_CYCLE_CHOICESr   
ForeignKeyr   CASCADErg   r
   PROTECTri   rA   rj   billing_cyclerK   r   rs   
start_daterr   trial_end_daterw   cancelled_atrD   current_pricediscount_percentagerF   rm   rB   notesrL   rM   r0   rp   rJ   r<   r;   r1   r/   rO   rO   <   sw   $N 6TV^^/ZD)))*:fnnU V^WUF$F$$<QRM &%%hll;J#v##T:H)V))t4@N,,,$dC'6''T>L (F''2aHM-&--1VWX -F,,$dC F4(E%%%48J%%%t4JW


 
r1   rO   c                   J   e Zd ZdZg dZg dZ ej                  eej                  d      Z
 ej                  dd      Z ej                  d	e
      Z ej                  d	ed      Z ej                  dddd      Z ej"                  dd      Z ej&                  ej*                        Z ej&                  dd      Z ej                  dddd      Z ej2                  ddd      Z ej&                  d      Z ej&                  d      Zd Z G d d      Zy)PaymentzPayment history))credit_cardzCredit Card)bank_transferzBank Transfer)paypalPayPal)otherOther))pendingPending)
processing
Processing)	completed	Completed)failedFailed)refundedRefundedpaymentsr_   r   r   r   r   r   r   rb   r   T)r   r   r!   r   rc   r#   2   z	invoices/)	upload_tor!   r   r$   r&   c                 V    d| j                   xs | j                   d| j                   S )NzPayment rf   )invoice_numberidamountr-   s    r/   r0   zPayment.__str__   s)    $--89T[[MJJr1   c                       e Zd ZdgZy)Payment.Metaz-payment_dateNr6   r;   r1   r/   r<   r      s
    #$r1   r<   N)r7   r8   r9   r=   PAYMENT_METHOD_CHOICESrz   r   r|   rO   r}   subscriptionrD   r   rA   payment_methodrj   transaction_idrF   gateway_responserK   r   rs   payment_dateprocessed_atr   	FileFieldinvoice_pdfrL   rM   r0   r<   r;   r1   r/   r   r   }   s4   N %6$$%5^hiL !V  BqAF%V%%=STNV^YWF &V%%TTXYN'v''T> (6''=L'6''T>L &V%%DtSWXN"&""[t4PK%%%48J%%%t4JK% %r1   r   )	django.dbr   django.contrib.auth.modelsr   django.utilsr   django.core.validatorsr   r   clients.modelsr   uuidModelr
   rO   r   r;   r1   r/   <module>r      sK     3 ! G  /2v|| /2b?
v|| ?
B,%fll ,%r1   