
    wh6                     D    d dl mZmZmZ d dlmZ d dlmZ  G d d      Zy)    )KardexValuesModelProductModelInventoryModel)datetime)funcc                   &    e Zd Zd ZddZd Zd Zy)KardexClassc                     || _         y )N)db)selfr   s     cC:\Users\jesus\OneDrive\Escritorio\backend-lacasadelvitrificado\app\backend\classes\kardex_class.py__init__zKardexClass.__init__   s	        c                 b   	 | j                   j                  t        j                  t	        j
                  t        j                        j                  d            j                  t        j                        j                         }| j                   j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                   j                  d      t        j"                  j                  d      |j$                  j&                  j                  d      	      j)                  t        t        j                  t        j                  k(  d      j)                  ||j$                  j                  t        j                  k(  d      j+                  t        j                  j-                               }|dkD  r2|j/                         }||z   dz
  |z  }|dk  s||kD  rd	d
dS |j1                  |dz
  |z        j3                  |      j5                         }|sd	ddS |D cg c]  }|j                  |j                  |j6                  |j8                  |j:                  |j                  |j                  |j                  |j                  z  |j                  r|j                  j=                  d      nd |j                  r|j                  j=                  d      nd d
 }	}|||||	dS |j5                         }|D cg c]  }|j                  |j                  |j6                  |j8                  |j:                  |j                  |j                  |j                  |j                  z  |j                  r|j                  j=                  d      nd |j                  r|j                  j=                  d      nd d
 }	}|	S c c}w c c}w # t>        $ r}
tA        |
      }d	|dcY d }
~
S d }
~
ww xY w)Nlatest_inventory_idproduct_nameproduct_codeinventory_idTisouterr      errorzInvalid page numberstatusmessagezNo data found%Y-%m-%d %H:%M:%S
id
product_idr   r   r   quantityaverage_costtotal_value
added_dateupdated_date)total_itemstotal_pagescurrent_pageitems_per_pagedata)!r   queryr   r   r   maxr   labelgroup_bysubqueryr   r    r!   r#   r$   r   productcodecr   joinorder_bydesccountoffsetlimitallr   r   r   strftime	Exceptionstr)r   pager(   r.   r*   r%   r&   r)   kardexserialized_dataeerror_messages               r   get_allzKardexClass.get_all	   s   Q	A "--HH^../556KL .334  %((%00%..%22%00%22 ((..~> %%++N;JJ2288H
 lLOO7H7S7S$S]abh

 5 59J9U9U U_cd+88==?@ " ax#kkm*^;a?NR!8tk1&-:OPP||TAX$?@FF~VZZ\&-/JJ !%#&  !))"("3"3$*$7$7$*$7$7$*$7$7 &$*$7$7#)??V5H5H#HU[UfUf&"3"3"<"<=P"QlpY_YlYlF$7$7$@$@AT$Urv$ #& #& $/#.$(&4+  yy{ !%#&  !))"("3"3$*$7$7$*$7$7$*$7$7 &$*$7$7#)??V5H5H#HU[UfUf&"3"3"<"<=P"QlpY_YlYlF$7$7$@$@AT$Urv$ #& #& '&K#&0#&  	AFM%-@@	AsP   HP ":P P !B?P 	P *P >B?P=P 
P 	P.P)#P.)P.c                    	 | j                   j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  j                  d      t        j                  j                  d      t        j                  j                  d      	      j                  t        t        j                  t        j                  k(  d      j                  t        t        j                  t        j                  k(  d      j                  t        j                  |k(        j!                         }|r|j                  |j                  |j"                  |j$                  |j&                  |j
                  |j                  |j
                  |j                  z  |j                  r|j                  j)                  d      nd |j                  r|j                  j)                  d      d
S d d
S dd	d
S # t*        $ r}dt-        |      d
cY d }~S d }~ww xY w)Nr   r   r   Tr   r   r   r   z'No kardex record found for this productr   )r   r*   r   r   r   r    r!   r#   r$   r   r/   r,   r0   r   r2   filterfirstr   r   r   r9   r:   r;   )r   r   kardex_recordr?   s       r   get_by_product_idzKardexClass.get_by_product_id]   s   $	:%((%00%..%22%00%22 ((..~> %%++N;"%%++N;
 lLOO7H7S7S$S]abnn&?&?CTC_C_&_imn)44
BC $ '**"/":":$1$>$>$1$>$>$1$>$> - 6 6$1$>$>#0#9#9M<V<V#V\i\t\t-":":"C"CDW"Xz~`m`z`zM$>$>$G$GH[$\  AE  #*6_`` 	:%#a&99	:s*   HH)  H) $H) )	I
2I?I
I
c                 :   	 | j                   j                  t              j                         }| j                   j                  t	        j
                  t        j                              j                         xs d}| j                   j                  t	        j
                  t        j                  t        j                  z              j                         xs d}|dkD  r||z  nd}|||t        |d      dS # t        $ r}dt        |      dcY d }~S d }~ww xY w)Nr      )total_productstotal_quantityr"   average_cost_overallr   r   )r   r*   r   r5   r   sumr    scalarr!   roundr:   r;   )r   rI   rJ   r"   rK   r?   s         r   get_summaryzKardexClass.get_summary   s    	:!WW]]+<=CCEN!WW]]4884E4N4N+OPWWY^]^N''--*336G6T6TTUfh  DRTUCU;#?[\  #1"0*(-.BA(F	   	:%#a&99	:s   C6C9 9	DDDDN)r   
   )__name__
__module____qualname__r   rA   rF   rO    r   r   r	   r	      s    RAh%:N:r   r	   N)app.backend.db.modelsr   r   r   r   
sqlalchemyr   r	   rT   r   r   <module>rW      s    Q Q  Q: Q:r   