
    !+i                     \    d dl Z d dlmZ d dlmZ  e j
                  e      Z G d d      Zy)    N)Ad)TinyProductc                   @    e Zd Zd ZdedefdZddedededed	ef
d
Zy)MarginCalculatorServicec                      d| _         d| _        y )N        )tax_rate
fixed_cost)selfs    L/var/www/hypershopcomercio.com.br/hyper-ai/app/services/margin_calculator.py__init__z MarginCalculatorService.__init__	   s        tiny_productreturnc                 "    |r|j                   syy)z^
        Calculates Additional Purchase Taxes (DIFAL) to form the Total Product Cost.
        r   )cost)r   r   s     r   _calculate_purchase_taxz/MarginCalculatorService._calculate_purchase_tax   s     <#4#4 r   Nadr	   r
   inbound_costc                    |j                   sy|j                   }|j                  dk(  rdnd}||z  }|j                  r|j                  nd}	||z
  |	z
  }
|r|j                  r|j                  n|j                  r|j                  nd}|r| j	                  |      nd}||z   }||dz  z  }||z
  |	z
  |z
  |z
  |z
  |z
  }|dkD  r||z  dz  nd}|j
                  |j
                  nd	}|dz  |z   |z   }|d
k  r6||	z   |z   |z   }|d
|z
  z  }|j                  r|j                  dk(  r*||_        n"|j                  r|j                  dk(  rd|_        ||_        ||z   |_	        ||_
        ||_        |dk  |_        |S )z
        Calculates margin: Net Revenue - (Product Cost + Purchase Taxes + Sales Taxes + Fixed Costs + Inbound Costs).
        Uses effective_price (promotion_price if lower than price) for accurate margin calculation.
        Ngold_prog{Gz?g)\(?r   g      Y@r   d   g333333?g      ?g      4@)pricelisting_type_idshipping_costr   r   target_marginstrategy_start_pricesuggested_pricecommission_costtax_costmargin_valuemargin_percentis_margin_alert)r   r   r   r	   r
   r   effective_pricecommission_rater   r   net_revenue	base_costpurchase_taxtotal_product_costsales_tax_costgross_profitr"   targetvariable_ratestotal_fixed_costs	suggesteds                        r   calculate_marginz(MarginCalculatorService.calculate_margin   s   
 xx (( #%"4"4
"B$)O; -/,<,<((# &7-G *6,:K:KL%%]_]d]dRTRYRYjm	EQt33LAWZ&5 )Hu,<= '8=HK]]`nnq{{  K  K DSUVCV,8C?\_ &(%5%5%A!!t #U*o=FC 2] BZ OR^ ^)S>-ABI **b.E.E.J%." **b.E.E.J%(" -"^3&*+d2	r   )Nr   r   r   )	__name__
__module____qualname__r   r   floatr   r   r0    r   r   r   r      sO    
K E D2 D[ DSX Dlq D  HM Dr   r   )	loggingapp.models.adr   app.models.tiny_productr   	getLoggerr1   loggerr   r5   r   r   <module>r;      s,      /			8	$T Tr   