
    q$h                     \    S SK Jr  S SKJr  \S 5       r\S 5       r\S 5       r\S 5       rg)    )shared_task)
connectionc                 p    U cI  [         R                  " 5        nSnUR                  X1U/5        [         R                  " 5         SSS5        gSnSnU /n[         R                  " 5        nUR                  XF5        UR	                  5       S   =(       d    SnSSS5        [         R                  " 5        nUR                  XV5        UR	                  5       S   =(       d    SnSSS5        WW:X  aH  [         R                  " 5        nSn	UR                  X/5        [         R                  " 5         SSS5        gg! , (       d  f       g= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g= f! [
         a-  n
[        SU
 35        [         R                  " 5          Sn
A
gSn
A
ff = f)z
Calcula la cantidad de pedidos escaneados.
- Si order_id es None, calcula el total de la zona y actualiza directamente.
- Si order_id tiene valor, actualiza de forma incremental.
NaJ  
                    UPDATE app_reactdashboardbasket
                    SET n_pedidos_s = (
                        SELECT COUNT(DISTINCT order_id)
                        FROM app_basketscanning
                        WHERE zone = %s AND is_scanned = 1
                    )
                    WHERE zone = %s
                z;SELECT COUNT(*) FROM app_basketscanning WHERE order_id = %szNSELECT COUNT(*) FROM app_basketscanning WHERE order_id = %s AND is_scanned = 1r   z
                        UPDATE app_reactdashboardbasket
                        SET n_pedidos_s = n_pedidos_s + 1
                        WHERE zone = %s
                    zError en TotalOrdersScanned: )r   cursorexecutecommitfetchone	Exceptionprintrollback)order_idzoner   querycount_queryscanned_queryparamstotal_ordersscanned_ordersupdate_queryes              9C:\Repositorios\Repos en GIT\Fox\app\tasks\scannerTask.pyTotalOrdersScannedr      sd   &""$ uTl3!!# %$ XKlMZF""${3%038q % ""$}5!'!21!5!: % ~-&&(F$L
 NN<8%%' )( .3 %$" %$ %$
 )(  -aS12s   E> +D:E> E> *.EE> 5.E##E> *E-0E> :
EE> E> 
EE> 
E*&E> -
E;7E> ;E> >
F5#F00F5c                 n    U c  SnU/n[         R                  " 5        nUR                  X#5        UR                  5       S   =(       d    SnSSS5        [         R                  " 5        nSnUR                  UWU/5        [         R                  " 5         SSS5        gSnU /n[         R                  " 5        nUR                  X#5        UR                  5       S   =(       d    SnSSS5        [         R                  " 5        nSnUR                  UWU/5        [         R                  " 5         SSS5        g! , (       d  f       N= f! , (       d  f       g= f! , (       d  f       Nz= f! , (       d  f       g= f! [
         a-  n[        SU 35        [         R                  " 5          SnAgSnAff = f)z
Calcula la cantidad total de materiales escaneados.
- Si order_id es None, calcula el total de la zona y actualiza directamente.
- Si order_id tiene valor, actualiza de forma incremental.
NzVSELECT SUM(total_materials) FROM app_basketscanning WHERE zone = %s AND is_scanned = 1r   z
                    UPDATE app_reactdashboardbasket
                    SET n_unidades_r = GREATEST(n_unidades - %s, 0)
                    WHERE zone = %s
                zZSELECT SUM(total_materials) FROM app_basketscanning WHERE order_id = %s AND is_scanned = 1z
                    UPDATE app_reactdashboardbasket
                    SET n_unidades_r = n_unidades_r - %s
                    WHERE zone = %s
                z Error en TotalMaterialsScanned: )r   r   r   r	   r   r
   r   r   )r   r   r   r   r   scanned_materialsr   r   s           r   TotalMaterialsScannedr   4   sj   #lEVF""$u-$*OO$5a$8$=A! % ""$ 
 |.?-FG!!# %$ qEZF""$u-$*OO$5a$8$=A! % ""$ 
 |.?-FG!!# %$) %$ %$ %$ %$  045s   E= .D9E= *,E
E= E= 9.E'E= ,E,0E= 9
EE= 

EE= E= 
E)%E= ,
E:6E= :E= =
F4#F//F4c                 ,    [         R                  " 5        nSnUR                  X U /5        [         R                  " 5         S S S 5        g ! , (       d  f       g = f! [         a-  n[        SU 35        [         R                  " 5          S nAg S nAff = f)Na  
                UPDATE app_reactdashboardbasket
                SET unidades_logisticas_r = GREATEST(unidades_logisticas - (
                    SELECT COUNT(*) FROM app_basketscanning WHERE zone = %s AND is_scanned = 1
                ), 0)
                WHERE zone = %s
            z(Error en updateRemainingLogisticsUnits: r   r   r   r   r
   r   r   r   r   r   r   s       r   updateRemainingLogisticsUnitsr   a   sv     FE NN5,/ !    8<=s4   A +AA 
AA A 
B&#BBc                 *    [         R                  " 5        nSnUR                  X /5        [         R                  " 5         S S S 5        g ! , (       d  f       g = f! [         a-  n[        SU 35        [         R                  " 5          S nAg S nAff = f)Na  
                UPDATE app_reactdashboardbasket
                SET porcentaje_avance = 
                    CASE 
                        WHEN unidades_logisticas > 0 
                        THEN CAST(((unidades_logisticas - unidades_logisticas_r) * 100.0 / unidades_logisticas) AS DECIMAL(5,1))
                        ELSE 0.0
                    END
                WHERE zone = %s
            z%Error en updatePercentageOfProgress: r   r   s       r   updatePercentageOfProgressr!   s   st     F	E NN5&) !    5aS9:s4   A *A
A 

AA A 
B%#BBN)celeryr   	django.dbr   r   r   r   r!        r   <module>r&      s[      , ,^ ) )X  "  r%   