
    ]Eh                     X    d dl mZ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      Z
y)    )MovementProductModelProductModel)Session)descfunc)datetimeNc                   F    e Zd ZdefdZddededefdZdefdZdefd	Zy
)MovementProductClassdbc                     || _         y )N)r   )selfr   s     V/var/www/intrajisbackend.com/public_html/app/backend/classes/movement_product_class.py__init__zMovementProductClass.__init__   s	        movement_idpageitems_per_pagec           	         	 | j                   j                  t        j                  j	                  d      t
        j                  j	                  d      t
        j                  j	                  d      t        j                  j	                  d      t        j                  j	                  d            j                  t
        t
        j                  t        j                  k(        j                  t        j                  |k(        j                  t        t
        j                              }|dkD  r|j!                         }||z   dz
  |z  }|dk  s||kD  rdd	d
S |j#                  |dz
  |z        j%                  |      j'                         }|sddd
S |D cg c]<  }|j                  |j(                  |j                  |j*                  |j                  d> }	}d|	||||dS |j'                         }|D cg c]<  }|j                  |j(                  |j                  |j*                  |j                  d> }	}d|	dS c c}w c c}w # t,        $ r}
ddt/        |
       d
cY d }
~
S d }
~
ww xY w)Nmovement_product_idcodedescriptionquantitycostr      errorzInvalid page numberstatusmessagezNo movement products found)r   r   r   r   r   success)r   datatotal_itemstotal_pagescurrent_pager   r   r    $Error retrieving movement products: )r   queryr   r   labelr   barcoder   qtyr   	outerjoin
product_idfilterr   order_byr   countoffsetlimitallr   r   	Exceptionstr)r   r   r   r   r&   r!   r"   r    itemserialized_dataes              r   showzMovementProductClass.show   s[   ?	cGGMM$88>>?TU$$**62((..}=$((..z:$))//7 il559M9X9XXf$00K?h\--.  ax#kkm*^;a?NR!8tk1&-:OPP||TAX$?@FF~VZZ\&-:VWW ##$  ,0+C+C II#'#3#3 $ II$ #$ #$ (+#.#.$(&4  yy{ ##$  ,0+C+C II#'#3#3 $ II$ #$ #$ (+ 9#$(#$  	c%4XY\]^Y_X`2abb	csP   EI :I I AI
I %I 9AI:I 
I 	I/I*$I/*I/c                    	 | j                   j                  t        j                  t        j                  t        j
                  t        j                  t        j                  j                  d      t        j                  j                  d      t        j                  j                  d      t        j                  j                  d            j                  t        t        j                  t        j                  k(        j                  t        j                  |k(        j!                  t#        t        j                              j%                         }|sdddS |D cg c]u  }|j                  |j                  |j&                  |j(                  |j*                  |j
                  |j                  |j
                  |j                  z  |j,                  d	w }}d	|d
S c c}w # t.        $ r}ddt1        |       dcY d}~S d}~ww xY w)uN   
        Obtener todos los productos de un movimiento sin paginación
        product_nameproduct_descriptionproduct_barcodecurrent_stockr   z#No products found for this movementr   )	r   r+   r9   r:   r;   r   r)   subtotalr<   r   r$   r%   N)r   r&   r   r   r+   r   r)   r   namer'   r   r(   stockjoinr,   r   r-   r   r1   r9   r:   r;   r<   r2   r3   )r   r   r    r4   r5   r6   s         r   get_allzMovementProductClass.get_allM   s   $	c77==$88$//$))$((!!''7((../DE$$**+<=""((9	 dl559M9X9XXf$00K?h\--.ce " ")6[\\ 
   (,'?'?"oo $ 1 1'+'?'?#'#7#7		xx II0!%!3!3
  
 O 
  (AA
   	c%4XY\]^Y_X`2abb	cs7   EG( G( "A:G#G( #G( (	H1HHHr   c                 
   	 | j                   j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  d      j                  d      t        j                  j                  d      t        j                  j                  d      t        j                  j                  d      	      j!                  t        t        j                  t        j                  k(        j#                  t        j                  |k(        j%                         }|sdddS |j                  |j                  |j
                  |j&                  |j(                  |j*                  |j                  |j                  |j                  |j                  z  |j,                  d	
}d
|dS # t.        $ r}ddt1        |       dcY d}~S d}~ww xY w)uB   
        Obtener un producto específico de un movimiento
        z%d-%m-%Y %H:%i:%screated_dater9   r:   r;   r   zMovement product not foundr   )
r   r+   r   r9   r:   r;   r   r)   r=   rC   r   r$   z#Error retrieving movement product: N)r   r&   r   r   r+   r   r   r)   r   date_format
created_atr'   r   r>   r   r(   r@   r,   firstr9   r:   r;   rC   r2   r3   )r   r   r    movement_product_datar6   s        r   getzMovementProductClass.getw   s   $	b77==$88$//$00$))$((  !5!@!@BUV\\]kl!!''7((../DE$$**+<=
 dl559M9X9XXf$88<OOeg   ")6RSS (,'?'?"oo#// $ 1 1'+'?'?#'#7#7		xx II0 $ 1 1%! (1FGG 	b%4WX[\]X^W_2`aa	bs%   EG BG 	H'G=7H=HN)r   
   )	__name__
__module____qualname__r   r   intr7   rA   rH    r   r   r
   r
      sN    7 @c @c3 @cC @cD(c3 (cT(bs (br   r
   )app.backend.db.modelsr   r   sqlalchemy.ormr   
sqlalchemyr   r   r   jsonr
   rN   r   r   <module>rS      s"    D " !  Xb Xbr   