
    Oh                     |    d dl mZ d dlmZmZmZmZmZ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  G d d      Zy)	    )HTTPException)ShoppingModelShoppingProductModelSupplierModelLotModelProductModelUnitMeasureModelCategoryModelPreInventoryStockModelUnitFeatureModelInventoryModelLotItemModel)ShoppingCreateInput)ProductClass)datetimec                   |    e Zd Zd Zd Zd ZdedefdZddZ	ddZ
dd	Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zy)ShoppingClassc                     || _         y )N)db)selfr   s     eC:\Users\jesus\OneDrive\Escritorio\backend-lacasadelvitrificado\app\backend\classes\shopping_class.py__init__zShoppingClass.__init__   s	        c                    | j                   j                  t              j                  t        j                  |k(        j                         }|sy	 d|_        t        j                         |_	        | j                   j                          | j                   j                  |       y# t        $ r4}| j                   j                          t        |      }d|dcY d }~S d }~ww xY w)NNo data found   Shopping updated successfullyerrorstatusmessage)r   queryr   filteridone_or_none	status_idr   utcnowupdated_datecommitrefresh	Exceptionrollbackstr)r   r$   existing_shoppingeerror_messages        r   confirmzShoppingClass.confirm   s     GGMM-8??@P@PTV@VWcce "
	A*+'-5__->*GGNNGGOO-.2 	AGGFM%-@@	As   AB( (	C%1)C C% C%c                    | j                   j                  t              j                  t        j                  |k(        j                         }|sy	 d|_        ||_        t        j                         |_
        | j                   j                          | j                   j                  |       y# t        $ r4}| j                   j                          t        |      }d|dcY d }~S d }~ww xY w)Nr      r   r   r   )r   r"   r   r#   r$   r%   r&   customs_company_emailr   r'   r(   r)   r*   r+   r,   r-   )r   r$   emailr.   r/   r0   s         r   send_customs_company_emailz(ShoppingClass.send_customs_company_email   s     GGMM-8??@P@PTV@VWcce "	A*+'6;3-5__->*GGNNGGOO-.2 	AGGFM%-@@	As   AB/ /	C,8)C'!C,'C,shopping_idreturnc                 0   | j                   j                  t              j                  t        j                  |k(        j                         }|st        dd      | j                   j                  t              j                  t        j                  |k(        j                         }g }|D ]  }t        | j                         j                  |j                        }|s4|d   d   }|j                  |j                  |j                  |j                  |j                   |j"                  ||j$                  |j&                  |j(                  d	        t+        |j,                  |j.                  |j0                  t3        |j4                        |      S )N  Shopping not foundstatus_codedetailproduct_datacategory_id)	
product_idunit_measure_idquantityoriginal_unit_costfinal_unit_costr@   amountquantity_per_packagediscount_percentage)shopping_numbersupplier_idr5   totalproducts)r   r"   r   r#   r$   firstr   r   r7   allr   getrA   appendrB   rC   rD   rE   rF   rG   rH   r   rI   rJ   r5   floatrK   )r   r7   shoppingshopping_productsrL   spproductr@   s           r   get_shopping_datazShoppingClass.get_shopping_data0   sN   77==/66}7G7G;7VW]]_C8LMM GGMM./V(44CDSU 	 # 	B"477+//>G!.1-@KOO mm#%#5#5KK&(&;&;#%#5#5*))(*(?(?')'='=
 
	$ #$44 ,,..'
 	
r   c                 F   	 | j                   j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                        j                  t        t        j                  t        j
                  k(        j                  t        j                  j                               }|dkD  r|j                         }||z   d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]u  }|j                  |j                  |j
                  |j                  |j                  t'        |j                        |j                  |j                  j)                  d      dw }}|||||d	S |j%                         }|D cg c]u  }|j                  |j                  |j
                  |j                  |j                  t'        |j                        |j                  |j                  j)                  d      dw }}|S c c}w c c}w # t*        $ r}	t'        |	      }
d|
dcY d }	~	S d }	~	ww xY w)
Nr      r   Invalid page numberr   r   %d-%m-%Y)r$   rI   rJ   r&   r5   rK   supplier
added_datetotal_itemstotal_pagescurrent_pageitems_per_pagedata)r   r"   r   r$   rI   rJ   r&   r5   rK   r   r[   r\   joinorder_bydesccountoffsetlimitrN   r-   strftimer+   )r   pagera   r"   r^   r_   rb   rR   serialized_datar/   r0   s              r   get_allzShoppingClass.get_allV   sa   A	A!$$!11!--!++!''!''!**!,,	 m]%5%59R9R%RS-**//12  ax#kkm*^;a?!8tk1&-:OPP||TAX$?@FF~VZZ\&-/JJ #'	#(  #++'/'?'?#+#7#7!)!3!3%^^ 0 ( 1 1"*"5"5">">z"J	$ 	#( 	#( $/#.$(&4+  yy{ #'	#(  #++'/'?'?#+#7#7!)!3!3%^^ 0 ( 1 1"*"5"5">">z"J	$ 	#( 	#( '&C	#(,	#(  	AFM%-@@	AsP   DI= :I= I= A:I3	I= !I= 5A:I8/I= 3
I= =	J JJ J c                 :   	 | j                   j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                   t        j"                  t$        j&                  t$        j(                        j+                  t$        t$        j                  t        j                  k(        j+                  t        t        j,                  t        j                  k(        j+                  t        t        j,                  t        j                  k(        j+                  t        t        j,                  t        j.                  k(        j1                  t        j2                  |k(        j1                  t$        j2                  |k(        j5                  t        j,                        }|dkD  r|j7                         }||z   dz
  }|dk  s||kD  rdddS |j9                  |dz
  |z        j;                  |      j=                         }|sdddS |D cg c]  }|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j"                  |j
                  |j                  |j                  |j                   |j&                  |j(                  d }	}|||||	dS |j=                         }|D cg c]  }|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                   |j"                  |j&                  |j(                  d	 }	}|	S c c}w c c}w # t>        $ r}
tA        |
      }d|dcY d }
~
S d }
~
ww xY w)
Nr   rX   r   rY   r   r   )rA   rC   rB   unit_measurerU   coderD   rE   rG   categoryrH   rF   stock
lot_numberr]   )rA   rC   rB   rn   rU   ro   rD   rG   rp   rH   rF   rE   rq   rr   )!r   r"   r   rA   rC   rG   rB   r	   rn   r   rU   r
   rp   ro   rD   rH   rF   rE   r   rq   rr   rc   r$   r@   r#   r7   rd   rf   rg   rh   rN   r+   r-   r   r$   rj   ra   r"   r^   r_   rb   shopping_productrk   r/   r0   s               r   get_pre_inventory_productsz(ShoppingClass.get_pre_inventory_products   so   X	A(33(11(==(88$11 ((!** %%(;;(<<(//(88*00*55  ,.D.O.OSgSrSr.rslLOO7K7V7V$VW&(8(;(;?S?c?c(cdm]%5%59Q9Q%QR,88B>?.::b@A.112/ 4 ax#kkm*^;a?!8tk1&-:OPP||TAX$?@FF~VZZ\&-/JJ" +/#0 ' #3"="= 0 9 9'7'G'G$4$A$A/77,11*:*M*M'7'G'G,<,Q,Q 0 9 9+;+O+O.55-33"2"="=$ #0 #0$ $/#.$(&4+  yy{" +/#0 ' #3"="= 0 9 9'7'G'G$4$A$A/77,11*:*M*M,<,Q,Q 0 9 9+;+O+O.55'7'G'G-33"2"="=$ #0 #0" '&[#08#0&  	AFM%-@@	AsP   IO7 :O7 ?O7 B$O-'	O7 1O7 B$O2)O7 -
O7 7	P PPPc                    	 | j                   j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                   t        j"                        j%                  t        t        j&                  t        j                  k(        j%                  t        t        j&                  t        j                  k(        j%                  t        t        j&                  t        j(                  k(        j+                  t        j,                  |k(        j/                  t        j&                        }|dkD  r|j1                         }||z   dz
  }|dk  s||kD  rdddS |j3                  |dz
  |z        j5                  |      j7                         }|sdddS |D cg c]  }|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j"                  |j
                  |j                  |j                  |j                   d }	}|||||	dS |j7                         }|D cg c]  }|j                  |j                  |j                  |j                  |j                  |j                  |j                  |j
                  |j                  |j                  |j                   |j"                  d	 }	}|	S c c}w c c}w # t8        $ r}
t;        |
      }d|dcY d }
~
S d }
~
ww xY w)
Nr   rX   r   rY   r   r   )rA   rC   rB   rn   rU   ro   rD   rE   rG   rp   rH   rF   r]   )rA   rC   rB   rn   rU   ro   rD   rG   rp   rH   rF   rE   )r   r"   r   rA   rC   rG   rB   r	   rn   r   rU   r
   rp   ro   rD   rH   rF   rE   rc   r$   r@   r#   r7   rd   rf   rg   rh   rN   r+   r-   rs   s               r   get_productszShoppingClass.get_products   s   P	A(33(11(==(88$11 ((!** %%(;;(<<(//(88 lLOO7K7V7V$VW&(8(;(;?S?c?c(cdm]%5%59Q9Q%QR,88B>?.112' , ax#kkm*^;a?!8tk1&-:OPP||TAX$?@FF~VZZ\&-/JJ +/#0 ' #3"="= 0 9 9'7'G'G$4$A$A/77,11*:*M*M'7'G'G,<,Q,Q 0 9 9+;+O+O.55$ #0 #0  $/#.$(&4+  yy{ +/#0 ' #3"="= 0 9 9'7'G'G$4$A$A/77,11*:*M*M,<,Q,Q 0 9 9+;+O+O.55'7'G'G$ #0 #0 '&S#04#0"  	AFM%-@@	AsP   GM :M M BM	M )M =BMM 
M 	M<"M71M<7M<c                 ^   	 | j                   j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  	      j                  t        j                  |k(        j                  t        t        j                  t        j
                  k(        j                         }|sddiS |j                  |j                  |j
                  |j                  |j                  t!        |j                        |j                  |j                  j#                  d      |j                  d	}d|iS # t$        $ r}dt!        |      icY d }~S d }~ww xY w)Nr   z4No se encontraron datos para la compra especificado.rZ   )	r$   rI   rJ   r&   r5   rK   r[   r\   prepaid_status_idshopping_data)r   r"   r   r$   rI   rJ   r&   r5   rK   r   r[   r\   ry   r#   rc   rM   r-   ri   r+   )r   r$   
data_queryrz   r/   s        r   rO   zShoppingClass.getH  sO   	%  --))''####&&((//
 f]%%+,TT-AQAQUbUnUnAn-opupupw  !WXX !mm#-#=#=)55'11#))Z--.&//(33<<ZH%/%A%A
M $]33 	%SV$$	%s%   DF 
BF 	F,F'!F,'F,c                 
   	 | j                   j                  t              j                  t        j                  |k(        j                         }|sddiS t        d|       |j                  |_        d|_        |j                  |_	        |j                  |_
        |j                  |_        |j                  |_        ||_        | j                   j                          ddiS # t        $ r}dt!        |      icY d }~S d }~ww xY w)Nr   r;   zPayment documents:   r!   z%Payment documents stored successfully)r   r"   r   r#   r$   rM   printwire_transfer_amountr&   wire_transfer_date
commissionexchange_rateextra_expensespayment_supportr)   r+   r-   )r   r$   	form_datasupport_remote_pathrR   r/   s         r   store_payment_documentsz%ShoppingClass.store_payment_documentsj  s    	%ww}}]3::=;K;Kr;QRXXZH!566&	2,5,J,JH)!"H*3*F*FH'"+"6"6H%.%<%<H"&/&>&>H#':H$GGNNFGG 	%SV$$	%s%   AC" BC" "	D+C=7D=Dc                 B   	 | j                   j                  t              j                  t        j                  |k(        j                         }|sddiS t        d|       t        |j                        }t        |j                        }||z  }|j                  |_
        d|_        ||_	        |j                  |_        |j                  |_        |j                  |_        |j                  |_        |j                   |_        |j"                  |_        |j$                  |_        |j                  |_        |j&                  |_        |j(                  |_        ||_        | j                   j-                          ddiS # t.        $ r}dt1        |      icY d }~S d }~ww xY w)Nr   r;   zCustoms company documents:   r!   z-Customs company documents stored successfully)r   r"   r   r#   r$   rM   r~   rQ   dollar_valuemerchandise_insurancemaritime_freightr&   manifest_openingdeconsolidationland_freightport_charges
honorariesphysical_assessment_expensesadministrative_expensesfolder_processingvalija_expensescustoms_company_supportr)   r+   r-   )	r   r$   r   r   rR   r   r   merchandise_insurance_in_pesosr/   s	            r   store_customs_company_documentsz-ShoppingClass.store_customs_company_documents  sn    	%ww}}]3::=;K;Kr;QRXXZH!566.	: !!7!78L$))*I*I$J! .C\-Q*(1(B(BH%!"H-KH*(1(B(BH%'0'@'@H$$-$:$:H!$-$:$:H!"+"6"6H4=4Z4ZH1/8/P/PH,$-$:$:H!)2)D)DH&'0'@'@H$/BH,GGNNNOO 	%SV$$	%s%   AE> D(E> >	FFFFc                    	 t        |j                  |j                  |j                  |j                  d|j
                  t        j                         t        j                               }| j                  j                  |       | j                  j                          | j                  j                  |       |j                  D ]  }t        |j                  |j                  |j                   |j"                  |j$                  |j&                  |j(                  |j*                  |j,                  t        j                         t        j                               }| j                  j                  |       | j                  j                          | j                  j                  |        d|j                  dS # t.        $ r}t1        d|       t3        dd	      d }~ww xY w)
NrX   )rI   rJ   r5   ry   r&   rK   r\   r(   r7   rA   rB   rC   rG   rD   rH   rE   rF   r\   r(   zShopping stored successfully)r>   r7   Error:  zError to store shoppingr<   )r   rI   rJ   r5   ry   rK   r   r'   r   addr)   r*   rL   r   r$   rA   rB   rC   rG   rD   rH   rE   rF   r+   r~   r   )r   rb   new_shoppingrU   new_shopping_productr/   s         r   storezShoppingClass.store  sn   %	S($($8$8 $ 0 0**&*&<&<**'0!)!2	L GGKK%GGNNGGOOL)== 6'; ,&11$+$;$;$--)0)E)E'.'A'A(/(C(C$+$;$;">>'0!)!2($ 01  45!6$ =\__]] 	S(AC8QRR	Ss   F<F? ?	G&G!!G&c           
         	 | j                   j                  t              j                  t        j                  |k(        j                         }|st        dd      d|_        t        j                         |_
        | j                   j                          | j                   j                  |       | j                   j                  t        j                        j                  t        j                  j!                               j#                         }|r|j                  dz   nd}|D ]f  }t%        ||j&                  ||j(                  t        j                         t        j                               }| j                   j+                  |       h | j                   j                          ddiS # t,        $ r}t/        d	|       t        d
d      d }~ww xY w)Nr:   r;   r<      rX   )r7   rA   rr   rq   r\   r(   r!   z+Pre-inventory quantities saved successfullyr   r   z&Error to save pre-inventory quantities)r   r"   r   r#   r$   r%   r   r&   r   r'   r(   r)   r*   r   rr   rd   re   rM   r   rA   rq   r   r+   r~   )	r   r7   itemsr.   last_lotnext_lot_numberitemnew_pre_inventoryr/   s	            r   save_pre_inventory_quantitiesz+ShoppingClass.save_pre_inventory_quantities  sn   	b $m < C CMDTDTXcDc d p p r$#<PQQ*+'-5__->*GGNNGGOO-.ww}}X%8%89BB8CVCVC[C[C]^ddfH9Ah11A5qO 	/$: +#.**'0!)!2%! -.	/ GGNNLMM 	b(AC8`aa	bs   F.F1 1	G:GGc                 t   	 | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS |j                  |_        |j                  |_        |j                  |_        |j                  |_	        t        j                         |_        t        |d      r|j                  r|j                  |_        | j                   j                          | j                   j!                  |       | j                   j                  t"              j                  t"        j$                  |k(        j'                         }|D ]  }| j                   j)                  |        | j                   j                          |j*                  D ]  }t#        ||j,                  |j.                  |j0                  |j2                  |j4                  |j6                  |j8                  |j:                  t        j                         t        j                               }| j                   j=                  |        | j                   j                          dd|dS # t>        $ r>}| j                   jA                          tC        d	|       dtE        |      dcY d
}~S d
}~ww xY w)zJ
        Actualiza una compra existente y sus productos asociados
        r   r;   r   ry   r   successr   )r    r!   r7   r   N)#r   r"   r   r#   r$   r%   rI   rJ   r5   rK   r   r'   r(   hasattrry   r)   r*   r   r7   rN   deleterL   rA   rB   rC   rG   rD   rH   rE   rF   r   r+   r,   r~   r-   )r   r$   rb   r.   existing_productsrU   r   r/   s           r   updatezShoppingClass.update  s'   6	: $m < C CMDTDTXZDZ [ g g i$")6JKK 150D0D-,0,<,<)&*jj#&*jj#-5__->* t01d6L6L6:6L6L!3GGNNGGOO-. !%.B C J J$00B6!ce  - (w'( GGNN  == 2'; "&11$+$;$;$--)0)E)E'.'A'A(/(C(C$+$;$;">>'0!)!2($ 012  GGNN'4Sdfgg 	:GG(A%#a&99	:s%   AI0 HI0 0	J793J2,J72J7c                 
   	 | j                   j                  t              j                  t        j                  |k(        j                         }|st        d| d       y|j                  xs d}t        d|        | j                   j                  t              j                  t        j                  |k(  t        j                  |k(        j                         }|st        d| d|        y|j                  xs d}||z  }t        d       t        d	|d
       t        d|d
       |j                  xs d|j                  xs dz   |j                  xs dz   |j                  xs dz   |j                   xs dz   |j"                  xs dz   |j$                  xs dz   |j&                  xs dz   |j(                  xs dz   |j*                  xs dz   |j,                  xs dz   |j.                  xs dz   |j0                  xs dz   }	t        d|	d
       | j                   j                  t2        j                  t2        j4                  t6        j8                        j;                  t6        t6        j                  t2        j                  k(        j                  t2        j                  |k(        j=                         }
|
st        d|        |S d}i }|
D ]u  }	 |j8                  rt?        |j8                        nd}|j4                  |z  }||z  }|||j                  <   t        d|j                   d|j4                   d| d| d	       w t        d| d       d}|dkD  r~|jE                  |d      }|dkD  rg|dz  |z  }||	z  dz  }|dkD  r||z  nd}t        d       t        d| d|d
d       t        d|d
       t        d| d       t        d|d
       ||z   }| j                   j                  tF        jH                        j                  tF        j                  |jJ                  k(        j                         }|r|jH                  nd}t        d       t        d|d
       t        d |d
       t        d!| d"|d
       |S # t@        tB        f$ r8 t        d|j                   d|j8                          d||j                  <   Y w xY w# tL        $ r}t        d#| d|        Y d$}~yd$}~ww xY w)%u  
        Calcula el unit_cost para un producto específico basado en:
        1. final_unit_cost del producto convertido de euros a pesos
        2. Costo de envío distribuido proporcionalmente por peso
        3. Costo final por litro/peso/unidad según la unidad de medida
        z	Shopping z no encontrador   rX   z Exchange rate (pesos por euro): z	Producto z no encontrado en shopping zFinal unit cost del producto:u     - En euros: €.2fz  - En pesos: $u$   Total de costos de envío (PESOS): $z<No se encontraron productos de pre-inventario para shopping z: z unidades x z kg = z kgu1   Warning: weight_per_unit inválido para producto z#Peso total de todos los productos: d   u   Costo de envío proporcional:z  - Peso del producto: z kg (z% del total)u%     - Costo total de envío asignado: $z  - Cantidad total: z	 unidadesu!     - Costo de envío POR UNIDAD: $unidadz
RESUMEN FINAL:z!  - Costo del producto (pesos): $u!     - Costo de envío por unidad: $z  - COSTO TOTAL por z: $z)Error calculando unit_cost para producto N)'r   r"   r   r#   r$   rM   r~   r   r   r7   rA   rE   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   r   weight_per_unitrc   rN   rQ   
ValueError	TypeErrorrO   r	   rn   rB   r+   )r   r7   rA   rC   rR   r   rt   final_unit_cost_eurosfinal_unit_cost_pesostotal_shipping_costspre_inventory_productstotal_weightproduct_weightsr   r   product_total_weightshipping_cost_per_unitproduct_weight
percentageshipping_cost_totaltotal_unit_costrn   unit_measure_namer/   s                           r   calculate_unit_cost_for_productz-ShoppingClass.calculate_unit_cost_for_product&  sy   ~	ww}}]3::=;K;K{;Z[aacH	+n=> %227aM4]ODE 23(44C(33zA   $	*-HVW %5$D$D$I!$9M$I!13%&;C%@ABO$9##>?@ **/a//416**/a1 )).Q0 &&+!	-
 &&+!- $$)+ 66;!= 116Q8 ++0q	2 )).Q
0 ((-A/ $$)+ !  89Mc8RST *55*00$44
 &(8(C(CG]GhGh(hi.::kIJ # *TU`Tabc,, L O. 	99EIEYEYeD,@,@&A_`O+/::+G( $88L7KODOO4Idoo%6bLQ`Paagh|g}  ~A  B  C	9 7~SIJ &'"a!0!4!4Z!C!A%"03"6,!FJ+58L+LPS*S' PXZ[|-@8-Kab*9;3N3C5TWHXXdefABUVYAZ[\0
)DE=>TUX=YZ[ 46LLO .;;<(++/?/O/OOP  >J 9 9x$&56KC5PQR56LS5QRS():(;3s>STU""U #I. 9MdooM^^`aeauau`vwx78ODOO49X  	=j\A3OP	sS   AS$ !BS$ 2G"S$ 	S$ A2RES$ AS!S$  S!!S$ $	T-TTc                 x   t        d| d       	 | j                  j                  t        j                  t        j
                  t        j                        j                  t        t        j                  t        j                  k(        j                  t        j                  |k(        j                         }|st        d       yd}|D ]  }| j                  ||j                  |j
                        }||j
                  z  }||z  }t        d|j                   d       t        d|j                          t        d	|j
                          t        d
|d       t        d|d       t        d        t        d|d       t        d       y# t        $ r}t        d|        Y d}~yd}~ww xY w)ur   
        Función de prueba para mostrar el cálculo de unit_cost para todos los productos de un shopping
        z)
=== CALCULANDO UNIT_COSTS PARA SHOPPING z ===
z0No se encontraron productos en el pre-inventarioNr   z
RESUMEN - :z  - Product ID: z  - Cantidad: u&     - COSTO TOTAL (producto + envío): $r   z  - Costo total del producto: $z2--------------------------------------------------z(
TOTAL DE COSTOS DISTRIBUIDOS (PESOS): $u   === FIN DEL CÁLCULO ===
z$Error en test_calculate_unit_costs: )r~   r   r"   r   rA   rq   r   rU   rc   r$   r#   r7   rN   r   r+   )r   r7   r   total_calculated_costr   	unit_costtotal_product_costr/   s           r   test_calculate_unit_costsz'ShoppingClass.test_calculate_unit_costs  s    	:;-vNO(	> *55*00 ((
 lLOO7M7X7X$XY.::kIJ # *HI$%!.   @@OOJJ	 &/%;"%);;%T\\N!45((9:;tzzl34>yoNO78J37OPQh " =>STW=XYZ.0 	>8<==	>s   B5F CF 	F9!F44F9c                 *   	 | j                   j                  t        j                  j	                  d      t        j
                  t        j                  j	                  d      t        j                  j	                  d      t        j                  t        j                  t        j                  t        j                  t        j                  t        j                   t        j                  j	                  d            j#                  t        t        j
                  t        j
                  k(        j#                  t        t        j                  t        j$                  k(        j#                  t        t        j                  t        j
                  k(        j#                  t&        t&        j
                  t        j
                  k(        j)                  t&        j*                  |k(        j-                  t        j
                  t        j                  j/                               j1                         }|sddg dS t3               }g }|D ]  }|j
                  |v r|j5                  |j
                         |j7                  |j8                  |j
                  |j:                  |j<                  |j                  |j                  rt?        |j                        nd|j                  rt?        |j                        nd|j                  rt?        |j                        nd|j                  r|j                  jA                  d	      nd |j                   d

        ddtC        |       d||dS # tD        $ r}ddtG        |       dcY d }~S d }~ww xY w)Ninventory_idproduct_nameproduct_codelot_item_idr   z0No se encontraron inventarios para este shopping)r    r!   rb   r   z%Y-%m-%d)
r   rA   r   r   rC   r   public_sale_priceprivate_sale_pricearrival_daterr   zSe encontraron z inventarios)r    r!   r7   rb   r   zError al obtener inventarios: r   )$r   r"   r   r$   labelrA   r   rU   ro   r   r   r   r   r   rC   r   rr   rc   lot_idr   r#   r7   rd   re   rN   setr   rP   r   r   r   rQ   ri   lenr+   r-   )r   r7   inventories_dataproducts_seenformatted_datar   r/   s          r   get_inventories_by_shopping_idz,ShoppingClass.get_inventories_by_shopping_id  s   =	] "%%++N;"-- ((..~> %%++N; 22 33)) )) **'' OO))-8 lL$;$;~?X?X$XYh|/B/B BClLOO~7P7P$PQ,.D.O.OSaSlSl.lm.::kIJ.33\__5I5I5KL) . $"+8jtvww  EMN( ??m3!!$//2%%$($5$5"&//$($5$5$($5$5 $:>..t~~!6aJNJ`J`t/E/E)FfgLPLcLc%0G0G*HijNRN_N_D$5$5$>$>z$Jei"&//' * $,S-@,AN*&	   	]%4RSVWXSYRZ2[\\	]s%   H6M. 9D4M. .	N7NNNN)r   
   )r   i'  )__name__
__module____qualname__r   r1   r6   intr   rV   rl   ru   rw   rO   r   r   r   r   r   r   r   r    r   r   r   r      sx    A$A&$
S $
5H $
LBAHYAvQAf %D%*!%F&SPb@::xEN.>`>]r   r   N)fastapir   app.backend.db.modelsr   r   r   r   r   r	   r
   r   r   r   r   app.backend.schemasr   !app.backend.classes.product_classr   r   r   r   r   r   <module>r      s7    ! V  V  V  V 3 : T] T]r   