
    !+i'                     .   d dl mZmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZ  ej                  ddg      d	        Z ej                  dd
g      d        Z ej                  ddg      d        Z ej                  ddg      d        Z ej                  dd
g      d        Z ej                  ddg      d        Z ej                  ddg      d        Z ej                  ddg      d        Z ej                  ddg      d        Zy)    )jsonifyrequest)api_bp)SessionLocal)	FixedCostProductFinancialMetric)FinancialServicez/financial/costsGET)methodsc            
         t               } 	 | j                  t              j                  t        j                  dk(        j                         }|D cg c]P  }|j                  |j                  t        |j                        |j                  |j                  |j                  dR }}t        |      | j                          S c c}w # | j                          w xY w)NT)idnameamountcategoryday_of_monthactive)r   queryr   filterr   allr   r   floatr   r   r   r   close)dbcostscresults       I/var/www/hypershopcomercio.com.br/hyper-ai/app/api/endpoints/financial.pyget_fixed_costsr      s    	B#**9+;+;t+CDHHJ 	
  dd/JJ !((	
 	
 v

	
 	
s   AC
 AC(C
 C
 
CPOSTc            	         t         j                  } t               }	 t        | j	                  d      | j	                  d      | j	                  dd      | j	                  dd      d      }|j                  |       |j                          |j                  |       t        |j                  |j                  t        |j                        d	d
      df|j                          S # t        $ rB}|j                          t        dt!        |      i      dfcY d }~|j                          S d }~ww xY w# |j                          w xY w)Nr   r   r   operationalr      T)r   r   r   r   r   createdr   r   r   status   error  )r   jsonr   r   getaddcommitrefreshr   r   r   r   r   r   	Exceptionrollbackstr)datar   costes       r   create_fixed_costr3      s   <<D	B&!88H%XXj-8.!4
 	t
		


4''IIDKK(	
 
  	
	  /
Q()3..

	/ 	
s0   B8C% %	D0.'D+D0D3 +D00D3 3Ez/financial/costs/<int:cost_id>PUTc                    t         j                  }t               }	 |j                  t              j                  t        j                  | k(        j                         }|st        ddi      df|j                          S d|v r
|d   |_
        d|v r
|d   |_        d|v r
|d   |_        d|v r
|d   |_        |j                          |j                  |       t        |j                  |j                  t!        |j                        dd	      |j                          S # t"        $ rB}|j%                          t        dt'        |      i      d
fcY d }~|j                          S d }~ww xY w# |j                          w xY w)Nr&   Cost not found  r   r   r   r   updatedr#   r'   )r   r(   r   r   r   r   r   firstr   r   r   r   r   r   r+   r,   r   r-   r.   r/   )cost_idr0   r   r1   r2   s        r   update_fixed_costr;   7   sF   <<D	Bxx	"))),,'*ABHHJG%567<0 	
- T>VDItx.DK ,DMT! $^ 4D
		


4''IIDKK(	
  	
	  /
Q()3..

	/ 	
s7   AD   BD   	E+)'E&E+E. &E++E. .F DELETEc                 r   t               }	 |j                  t              j                  t        j                  | k(        j                         }|st        ddi      df|j                          S d|_        |j                          t        ddi      |j                          S # |j                          w xY w)Nr&   r6   r7   Fr$   deleted)
r   r   r   r   r   r9   r   r   r   r+   )r:   r   r1   s      r   delete_fixed_costr?   X   s    	B	xx	"))),,'*ABHHJG%567< 	
	 
		),-


s   AB$ 0#B$ $B6z/financial/calculate-metricsc                  .   t               } 	 t        |       }|j                          t        ddi      | j	                          S # t
        $ r2}t        dt        |      i      dfcY d }~| j	                          S d }~ww xY w# | j	                          w xY w)Nr$   calculation_completedr&   r'   )r   r	   calculate_metricsr   r   r-   r/   )r   servicer2   s      r   trigger_calculationrD   f   s}    	B"2&!!#"9:; 	
  /Q()3..

/ 	
s/   'A 	A?A:$A?%B :A??B Bz/financial/metrics/<sku>c           	         t               }	 |j                  t              j                  t        j                  | k(        j                         }|st        i       |j                          S t        |j                  |j                  t        |j                        |j                  t        |j                        |j                  r|j                  j                         nd d      |j                          S # |j                          w xY w)N)skureturn_rate_90davg_return_costrevenue_share_30dcalculated_fixed_cost_sharelast_calculated_at)r   r   r   r   rF   r9   r   r   rG   r   rH   rI   rJ   rK   	isoformat)rF   r   metrics      r   get_sku_metricsrN   r   s    	B01889O9S9SWZ9Z[aac2; 	
 ::%55$V%;%;<!'!9!9+01S1S+TKQKdKd&";";"E"E"Gjn
  	

s   AC8 ,A;C8 8D
z!/financial/ads/<ad_id>/simulationc           	      P   t               }ddlm} ddlm} ddlm} 	 |j                  |      j                  |j                  | k(        j                         }|st        ddi      df|j                          S t        |j                  xs d      }t        |j                  xs d      }t        |j                   xs d      }d}	d	}
t#        |d
z  |d
z  |d
z  g      }|d   dk  r|d   dk  r|d   dk  rd}	d}
n>|d   dk  r|d   dk  r|d   dk  rd}	d}
n!|d   dk  r|d   dk  r|d   dk  rd}	d}
nd}	d}
i }|j$                  r=|j                  |      j                  |j$                  |j$                  k(        j                         }|rt        |j&                  xs |	      }t        |j(                  xs |
      }t        |j*                  xs d      }|dz  }||z  |z   }t        |j,                  xs d      }|dkD  r||dz
  |dz  z  z  }|j.                  t        |j0                        t        |j2                        t        |      |||d}n.t        |j*                  xs d      }|	|dz  z  |
z   }d d!d"||	|
d!d}|j4                  r|j4                  nd!}dd#lm} |j                  |      j                  |j:                  d$k(        j                         }|r%|j<                  rt        |j<                        d%z  }n ||      }|j?                         d%z  }|j@                  r|j@                  nd!}|d!k(  r@|jB                  r4|jD                  r(|jD                  dkD  r|jB                  |jD                  z  }|d!k(  r-|jF                  r!d&|jF                  v rd'}nd(|jF                  v rd)}|jH                  r|jH                  nd!}|j                  |j$                  |jD                  |||||d*}t        |      |j                          S # |j                          w xY w)+u   
    Retorna dados financeiros do anúncio para simulação de margem.
    Include: Custos Tiny, Dados Fiscais ML, Métricas Financeiras Calculadas.
    r   )Ad)
TaxService)r   r&   zAd not foundr7   gy&1|?g      ?
         r!         g?3   $      g9v?g      ?F   <   gMb?g      @g1Zd?g      "@   x      )return_ratefixed_cost_sharerH   storage_costdaily_storage_feeinbound_freight_coststorage_risk_costgQ?g        g      4@)SystemConfigaliquota_simplesg      Y@gold_progRQ?gold_specialgQ?)ad_idrF   pricecost_productshipping_costcommission_ratetax_ratefinancial_metrics)%r   app.models.adrP   app.services.tax_servicerQ   app.models.financialr   r   r   r   r9   r   r   r   	length_mmwidth_mm	height_mmsortedrF   rb   rc   days_of_stockrd   rG   rJ   rH   r1   app.models.system_configre   keyvalueupdate_system_tax_ratecommission_percentcommission_costrj   listing_type_idrl   )ri   r   rP   rQ   r   adl_mmw_mmh_mm	daily_feeinbound_estdimssku_metricsrM   daily_storageinbound_cost
days_stockavg_days_stocktotal_storagerisk_storager1   re   sc_taxrn   ts
commissionshippingresponses                               r   get_ad_simulation_datar      s
    
B 3;qXXb\  %0668G^45s:\ 	
U R\\&Q'R[[%A&R\\&Q' 	tBwRb127b=T!W]tAw"}IK!W]tAw"}aBIK!W]tAw"}aBIKIK 66XX45<<=S=W=W[][a[a=abhhjF %f&>&>&K) L$V%@%@%OKP"2#3#3#9r:
!+a!.!?< O$V%=%=%BC#!j3&6=1;L%MM\ $*#9#9(-f.P.P(Q',V-C-C'D$)-$8)6,8)5 $B$4$4$:;"+zA~">+!M#'(+'+$1)2,7),  ''rwws 	:,'..|/?/?CU/UV\\^fllV\\*U2HBB002U:H /1.C.CR**
 !3!3RXXPQ\++bhh6J !3!3R///!
2#5#55!
')'7'72##S UU66XX %) !,	
 x 


s   AP :NP P%z/financial/otbc                     t               } 	 t        |       }t        j                  j	                  ddt
              }t        j                  j	                  ddt
              }|j                  ||      }t        |      | j                          S # t        $ r2}t        dt        |      i      dfcY d }~| j                          S d }~ww xY w# | j                          w xY w)	Ndaysr\   typeweeks_supply   )days_periodtarget_weeks_supplyr&   r'   )r   r	   r   argsr)   intcalculate_otbr   r   r-   r/   )r   rC   r   r   r0   r2   s         r   get_otb_datar     s    	B"2&||5||'''D$$<$Xt} 	
  /Q()3..

/ 	
s0   A4B 	CC1C2C CC C!z/financial/cash-flowc                  z   t               } 	 t        |       }t        j                  j	                  ddt
              }|j                  |      }t        |      | j                          S # t        $ r2}t        dt        |      i      dfcY d }~| j                          S d }~ww xY w# | j                          w xY w)Nr   r\   r   )r   r&   r'   )r   r	   r   r   r)   r   get_cash_flow_projectionr   r   r-   r/   )r   rC   r   r0   r2   s        r   get_cash_flow_datar     s    	B
"2&||5//T/:t} 	
  /Q()3..

/ 	
s0   AA* *	B%3B 
B%B(  B%%B( (B:N)flaskr   r   app.apir   app.core.databaser   rr   r   r   app.services.financial_servicer	   router   r3   r;   r?   rD   rN   r   r   r        r   <module>r      s^   "  * B ; 5'2 3&  6(3 46 .@ A@ .
C D ,vh?	 @	 (5': ;$ 1E7C{ D{z 0 1 $ug6 7r   