
    hv                     T   d dl mZmZ d dlmZ d dlmZ d dlmZm	Z	m
Z
mZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ  ed	d
g      Zej-                  d       ee       ee      fde
dedefd       Zej-                  d       ee       ee      fde	dedefd       Zej-                  d       ee      fdededefd       Zej7                  d       ee       ee      fdededefd       Zej9                  d       ee       ee      fdededefd       Zej-                  d       ee       ee      fdededefd       Zej-                  d       ee       ee      fdededefd       Zej-                  d        ee       ee      fdededefd!       Z y")#    )	APIRouterDepends)get_db)Session)	UserLoginStoreInventoryInventoryListAddAdjustmentInputRemoveAdjustmentInputPreInventoryStocks)InventoryClass)ShoppingClass)get_current_active_user)datetimez/inventoriesInventories)prefixtags/inventory_inputssession_userdbc                 R    t        |      j                  | j                        }d|iS Nmessage)r   get_allpager   r   r   datas       bC:\Users\jesus\OneDrive\Escritorio\backend-lacasadelvitrificado\app\backend\routers\inventories.pyindexr       s)    "%%&6&;&;<Dt    z/storec                 >    t        |      j                  |       }d|iS r   )r   storer   s       r   r#   r#      s#    "##$45Dtr!   z,/pre_save_inventory_quantities/{shopping_id}shopping_idr   c                 @    t        |      j                  | |       ddiS )Nr   z3Cantidades de inventario actualizadas correctamente)r   pre_save_inventory_quantities)r$   r   r   s      r   r&   r&      s%     244[$GLMMr!   z/delete/{id}idc                 >    t        |      j                  |       }d|iS r   )r   deleter'   r   r   r   s       r   r)   r)   %   s"    "$$R(Dtr!   z
/edit/{id}c                 >    t        |      j                  |       }d|iS r   )r   getr*   s       r   editr-   +   s"    "!!"%Dtr!   z/add_adjustmentc                 >    t        |      j                  |       }d|iS r   )r   add_adjustmentr   s       r   r/   r/   1   s#    ",,-=>Dtr!   z/remove_adjustmentc                 >    t        |      j                  |       }d|iS r   )r   remove_adjustmentr   s       r   r1   r1   7   s#    "//0@ADtr!   z#/create_from_shopping/{shopping_id}c                    	 t        |      }t        |      }|j                  |       }t        |t              r|j                  d      dk(  rdddS t        |t              r
d|v r|d   }n|}g }g }|D ]  }		 |j                  | |	d   |	d         }
t        |j                  |	d   d|	d   t        |
      t        |	j                  d	d
      dz        t        |	j                  d	d
      dz        ddt        |	d         t        j                         j                               }|j                  |      }|j                  |	d   |	d   |
|d        ddt#        |       dt#        |       ||dS # t         $ r+}|j                  |	d   t        |      d       Y d}~-d}~ww xY w# t         $ r}ddt        |       dcY d}~S d}~ww xY w)u   
    Crea inventario automáticamente desde un shopping, calculando el unit_cost 
    basado en el precio del producto + distribución de costos de envío por peso
    statuserrorz0No se encontraron productos en el pre-inventario)r3   r   r   
product_idstock   final_unit_costr   g?g333333?   d   
lot_number)user_idr5   location_idr6   	unit_costpublic_sale_priceprivate_sale_priceminimum_stockmaximum_stockr;   arrival_dateproduct)r5   product_namecalculated_unit_costresult)r5   r4   NsuccesszInventarios creados: z, Errores: )r3   r   created_inventorieserrorszError general: )r   r   get_pre_inventory_products
isinstancedictr,   calculate_unit_cost_for_productr   r'   intstrr   nowdater#   append	Exceptionlen)r$   r   r   shopping_classinventory_classpre_inventory_productsproducts_datarI   rJ   product_datarF   store_inventoryrG   es                 r   create_inventory_from_shoppingr]   =   s   BJ&r*(, "0!J!J;!W,d38N8R8RS[8\`g8g%2dee ,d3BX8X26:M2M ) %	L$'5'U'U . )($ #1(OO+L9 !&w/!"67&),*:*:;La*PSV*V&W'*<+;+;<Mq+QTW+W'X"#"%"<#=>!)!4!4!6# )..?#**".|"<$0$;,@$	, 5%	P  .s3F/G.HTWX^T_S`a#6	
 	
  ".|"< V    J!Ax.HIIJsO   AF) %F) 8CE2 F) 2	F&; F!F) !F&&F) )	G2GGGN)!fastapir   r   app.backend.db.databaser   sqlalchemy.ormr   app.backend.schemasr   r   r	   r
   r   r   #app.backend.classes.inventory_classr   "app.backend.classes.shopping_classr   app.backend.auth.auth_userr   r   inventoriespostr    r#   rO   r&   r)   r,   r-   r/   r1   r]    r!   r   <module>rh      s   & * " H  H > < > 

 #ELMdEeu|  ~D  vE M  kr  
 (FMNeFfv}  E  wF N ) ls  
 @A &/NN
N 	N BN N#.56M.N^efl^m s ) T[  $
 ,34K,L\cdj\k S 	 RY  
 #$SZ[rSs  DK  LR  DS %7 y   zA  %
 &'Y`axYy  JQ  RX  JY (= Y   @G  (
 78 &&=>&/KJKJKJ 	KJ 9KJr!   