
    	aiKa                         d dl mZ d dlmZmZ d dlmZ d dlmZ d dl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  ej(                  e      Zdedede
fdZy)    )Session)ListOptional)datetime)funcN)WebhookData   )models   )ProductLocationVendorCompanyDiscountProductVarientdb
event_typedatac                 C  K   t        d(i |}|j                  rM| j                  t              j	                  t        j
                  |j                  k(        j                         nd }|j                  rM| j                  t              j	                  t        j                  |j                  k(        j                         nd }|j                  rM| j                  t              j	                  t        j                  |j                  k(        j                         nd }|j                  rM| j                  t              j	                  t        j                  |j                  k(        j                         nd }|dk(  rt        j                  d       t!        j"                  |r|j$                  nd |r|j$                  nd |r|j$                  nd t         j&                  j(                  |j*                  |j,                  |j.                  |j0                  |j2                  	      }| j5                  |       | j7                          | j9                  |       |j:                  D ]"  }|j<                  r| j                  t>              j	                  t>        j@                  |j<                  k(        j                         }	|	s$t        jC                  d|j<                   d       | j                  tD              j	                  tD        jF                  |jH                  k(        j	                  |rtD        j
                  |j$                  k(  nd       j	                  tD        jJ                  |	j$                  k(        j                         }
n{| j                  tD              j	                  tD        jF                  |jH                  k(        j	                  |rtD        j
                  |j$                  k(  nd       j                         }
|
s%t        jC                  d|jH                   d       t!        jL                  |j$                  |r|j$                  nd |
j$                  |jN                  d      }| j5                  |       % | j7                          n3|d	k(  rt        j                  d
       t        j                  |       | j                  t         j"                        j	                  t         j"                  jP                  |j.                  k(        j                         }|s6t        jS                  d|j*                   d       dd|j*                   ddS t!        jT                  |r|j$                  nd |r|j$                  nd |r|j$                  nd |j$                  t         j&                  jV                  |j*                  |j,                  |j.                  |j0                  |j2                  
      }| j5                  |       | j7                          | j9                  |       |j:                  D ](  }|j<                  r| j                  t>              j	                  t>        j@                  |j<                  k(        j                         }	|	s$t        jC                  d|j<                   d       | j                  tD              j	                  tD        jF                  |jH                  k(        j	                  |rtD        j
                  |j$                  k(  nd       j	                  tD        jJ                  |	j$                  k(        j                         }
n{| j                  tD              j	                  tD        jF                  |jH                  k(        j	                  |rtD        j
                  |j$                  k(  nd       j                         }
|
s%t        jC                  d|jH                   d       t!        jX                  |j$                  |r|j$                  nd |
j$                  |jN                        }| j5                  |       | j                  t         jL                        j	                  t         jL                  jZ                  |j$                  k(  t         jL                  jF                  |
j$                  k(        j                         }|r/|j\                  |jN                  z   |_.        | j5                  |       | j                  t         j^                        j	                  |r't         j^                  j
                  |j$                  k(  nd t         j^                  jF                  |
j$                  k(  |r't         j^                  j                  |j$                  k(  nd       j                         }|r_|j`                  |jN                  z   |_0        |j2                  xs tc        jd                         |_3        tc        jd                         |_4        nt!        j^                  |r|j$                  nd |
j$                  |r|j$                  nd |j,                  |jN                  |j2                  xs tc        jd                         tc        jd                         tc        jd                               }| j5                  |       t!        jj                  |r|j$                  nd |
j$                  |r|j$                  nd |r|j$                  nd |jN                  t         jl                  jn                  |j$                        }| j5                  |       + | j                  t         jL                        j	                  t         jL                  jZ                  |j$                  k(        jq                         }tq        d |D              }|r0t         j&                  jV                  |_9        | j5                  |       | j7                          n|dk(  rt        j                  d       t        j                  |       | j                  t         jT                        j	                  t         jT                  jP                  |j.                  k(        j                         }|s6t        jS                  d|j*                   d       dd|j*                   ddS t!        jt                  |r|j$                  nd |r|j$                  nd |r|j$                  nd |j$                  t         j&                  jv                  |j*                  |j,                  |j.                  |j0                  |j2                  
      }| j5                  |       | j7                          | j9                  |       |j:                  D ]  }|j<                  r| j                  t>              j	                  t>        j@                  |j<                  k(        j                         }	|	s$t        jC                  d|j<                   d       | j                  tD              j	                  tD        jF                  |jH                  k(        j	                  |rtD        j
                  |j$                  k(  nd       j	                  tD        jJ                  |	j$                  k(        j                         }
n{| j                  tD              j	                  tD        jF                  |jH                  k(        j	                  |rtD        j
                  |j$                  k(  nd       j                         }
|
s%t        jC                  d|jH                   d       t!        jx                  |j$                  |r|j$                  nd |
j$                  |jN                        }| j5                  |       | j                  t         j^                        j	                  |r't         j^                  j
                  |j$                  k(  nd t         j^                  jF                  |
j$                  k(  |r't         j^                  j                  |j$                  k(  nd       j                         }|ro|j`                  |jN                  z
  |_0        |j2                  xs tc        jd                         |_3        tc        jd                         |_4        | j5                  |       t!        jj                  |r|j$                  nd |
j$                  |r|j$                  nd |r|j$                  nd |jN                  dz  t         jl                  jz                  |j$                        }| j5                  |        | j7                          n|dk(  rt        j                  d       t!        j|                  |r|j$                  nd |r|j$                  nd |j*                  |j,                  |j.                  |j0                  |j2                  d      }| j5                  |       | j7                          | j9                  |       |j:                  D ]K  }|j<                  r| j                  t>              j	                  t>        j@                  |j<                  k(        j                         }	|	s$t        jC                  d|j<                   d       | j                  tD              j	                  tD        jF                  |jH                  k(        j	                  |rtD        j
                  |j$                  k(  nd       j	                  tD        jJ                  |	j$                  k(        j                         }
n{| j                  tD              j	                  tD        jF                  |jH                  k(        j	                  |rtD        j
                  |j$                  k(  nd       j                         }
|
s%t        jC                  d|jH                   d       |j~                  rM| j                  t              j	                  t        j                  |j~                  k(        j                         }t!        j                  |j$                  |r|j$                  nd |
j$                  |j~                  rr|j$                  nd |jN                        }| j5                  |       | j                  t         j^                        j	                  |r't         j^                  j
                  |j$                  k(  nd t         j^                  jF                  |
j$                  k(  |r't         j^                  j                  |j$                  k(  nd       j                         }|ro|j`                  |jN                  z
  |_0        |j2                  xs tc        jd                         |_3        tc        jd                         |_4        | j5                  |       t!        jj                  |r|j$                  nd |
j$                  |r|j$                  nd |r|j$                  nd |jN                  dz  t         jl                  j                  |j$                        }| j5                  |       N | j7                          
n|dk(  rat        j                  d        t        j                  |       | j                  t         j|                        j	                  t         j|                  jP                  |j.                  k(        j                         }|s6t        jS                  d!|j*                   d       dd|j*                   ddS t!        j                  |r|j$                  nd |r|j$                  nd |j*                  |j,                  |j.                  |j0                  |j2                  d|j$                  "	      }| j5                  |       | j7                          | j9                  |       |j:                  D ]  }|j<                  r| j                  t>              j	                  t>        j@                  |j<                  k(        j                         }	|	s$t        jC                  d|j<                   d       | j                  tD              j	                  tD        jF                  |jH                  k(        j	                  |rtD        j
                  |j$                  k(  nd       j	                  tD        jJ                  |	j$                  k(        j                         }
n{| j                  tD              j	                  tD        jF                  |jH                  k(        j	                  |rtD        j
                  |j$                  k(  nd       j                         }
|
s%t        jC                  d|jH                   d       t!        j                  |j$                  |r|j$                  nd |
j$                  |jN                  #      }| j5                  |       | j                  t         j^                        j	                  |r't         j^                  j
                  |j$                  k(  nd t         j^                  jF                  |
j$                  k(  |r't         j^                  j                  |j$                  k(  nd       j                         }|ro|j`                  |jN                  z   |_0        |j2                  xs tc        jd                         |_3        tc        jd                         |_4        | j5                  |       t!        jj                  |r|j$                  nd |
j$                  |r|j$                  nd |r|j$                  nd |jN                  t         jl                  j                  |j$                        }| j5                  |        | j7                          n|d$k(  rt        j                  d%       |j:                  D ]d  }|j<                  r| j                  t>              j	                  t>        j@                  |j<                  k(        j                         }	|	s$t        jC                  d|j<                   d       | j                  tD              j	                  tD        jF                  |jH                  k(        j	                  |rtD        j
                  |j$                  k(  nd       j	                  tD        jJ                  |	j$                  k(        j                         }
n{| j                  tD              j	                  tD        jF                  |jH                  k(        j	                  |rtD        j
                  |j$                  k(  nd       j                         }
|
s%t        jC                  d|jH                   d       | j                  t         j^                        j	                  |r't         j^                  j
                  |j$                  k(  nd t         j^                  jF                  |
j$                  k(  |r't         j^                  j                  |j$                  k(  nd       j                         }|ro|j`                  |jN                  z
  |_0        |j2                  xs tc        jd                         |_3        tc        jd                         |_4        | j5                  |       t!        jj                  |r|j$                  nd |
j$                  |r|j$                  nd |r|j$                  nd |jN                  dz  t         jl                  j                  |j,                        }| j5                  |       | j7                          | j                  t         j^                        j	                  |r't         j^                  j
                  |j$                  k(  nd t         j^                  jF                  |
j$                  k(  |r't         j^                  j                  |j$                  k(  nd       j                         }|ro|j`                  |jN                  z   |_0        |j2                  xs tc        jd                         |_3        tc        jd                         |_4        | j5                  |       | j7                          t!        jj                  |r|j$                  nd |
j$                  |r|j$                  nd |r|j$                  nd |jN                  t         jl                  j                  |j,                        }| j5                  |       | j7                          g d&|d'S w))NPOzProcessing Purchase Order event)	
company_idsupplier_idlocation_idstatusref_id
ref_numberlinked_ref_numberlinked_ref_datetime
order_datezProduct Variant with ID z not found. Skipping item.zProduct with ID r   )purchase_order_idr   
product_idordered_qtyreceived_qtyROz'Processing Purchase Receive Order eventzPurchase Order with RefId z& not found for Receive Purchase Order.errorz not found.)r   message)
r   r   r   r    r   r   r   r   r   received_date)purchase_order_receive_idr   r!   r#   )r   r!   r   	batch_refquantity_on_handr'   
created_at
updated_at)r   r!   r   batch_idquantity_deltamovement_type	referencec              3   N   K   | ]  }|j                   |j                  k\    y w)N)r#   r"   ).0lines     S/var/www/html/hubwallet-dev/src/smart_inventory/apps/inventory/webhookcontroller.py	<genexpr>z(process_webhook_event.<locals>.<genexpr>   s!     ZT4,,0@0@@Zs   #%VRzProcessing Vendor Return event)
r   r   r   purchase_receive_order_idr   r   r   r   r   returned_date)purchase_order_return_idr   r!   
return_qtyORDzProcessing Sales Order eventstore)r   r   r   r   r   r   	sold_datechannel)sales_order_idr   r!   promotion_idquantityRTOz#Processing Sales Order Return eventzSales Order with RefId )	r   r   r   r   r   r   r8   r?   r@   )sales_return_order_idr   r!   rB   STRzProcessing Stock transfer eventzunhandled event type)r   r    )Ir   	CompanyIdqueryr   filterr   firstVendorIdr   	vendor_idFromLocationIdr   r   ToLocationIdloggerinfor
   PurchaseOrderidPurchaseOrderStatusSENTRefId	RefNumberLinkedRefNumberLinkedRefDateTimeRefDateTimeaddcommitrefresh
ItemDetailProductVarientDetailIdr   
varient_idwarningr   r!   	ProductIdproduct_variant_idPurchaseOrderLineQuantityr   r%   PurchaseReceiveOrderRECEIVEDPurchaseOrderReceiveLiner    r#   InventoryBatchr*   r   nowr'   r,   InventoryMovementMovementTypeRECEIPTallr   PurchaseReturnOrderRETURNEDPurchaseOrderReturnLinePURCHASE_RETURN
SalesOrderPromotionIdr   discount_idSalesOrderLineSALESalesReturnOrderSalesReturnOrderLineSALE_RETURNTRANSFER_OUTTRANSFER_IN)r   r   r   companyvendorfromlocation
tolocationpodataitemproduct_varientproductpo_itemrodatapo_linecurrentstock_flfl_moveall_po_linesall_receivedsodata	promotionso_itemcurrentstock_tltl_moves                          r4   process_webhook_eventr      s~    
 DX\XfXfbhhw&&w'9'9T^^'KLRRTlpGSWS`S`RXXf$$V%5%5%FGMMOfjFeiexex288H%,,X-A-ATEXEX-XY__a  CLaearar(#**8+?+?4CTCT+TU[[]x|J T56%%%,wzz$%+		+7T--22::~~"22 $ 6 6''

 	v
		


6OO !	D**"$((>":"A"A"--1L1LL#%'   'NN%=d>Y>Y=ZZt#uv) 2 2dnn DEG 2 2gjj @QUV : :o>P>P PQ  HHW-#VG$6$6$..$HI#VG$6$6'**$DUYZ"UW	  !1$..1AA[\].."()))07::d":: MMG FF7OC!	F 			 
t	=>D&../66v7K7K7V7VZ^ZnZn7nouuw\\6tzzlBhij&5OPTPZPZ|[f3ghh ,,%,wzz$%+		+7T$ii--66::~~"22 $ 6 6**
 	v
		


6OO M	D**"$((>":"A"A"--1L1LL#%'   'NN%=d>Y>Y=ZZt#uv) 2 2dnn DEG 2 2gjj @QUV : :o>P>P PQ  HHW-#VG$6$6$..$HI#VG$6$6'**$DUYZ"UW	  !1$..1AA[\]55*0)))07::d"::!]]	G FF7O hhv778??((::fiiG((33wzzA eg  '.';';dmm'K$w !hhv'<'<=DDBI%%00GJJ>t%%00GJJ>HT%%11\__DZ^ eg	  3B3S3SVZVcVc3c0040@0@0RHLLN--5\\^*"("7"7-4wzz$&zz3?T"nn%)]]"&"2"2"Dhlln'||~'||~	# FF?#..)07::d"::/;LOO/>++D#}}$1199 ))G FF7O[M	` xx 8 89@@$$66&))C

#% 	 Z\ZZ"66??FMFF6N
		 
t	45D&556==f>Y>Y>d>dhlh|h|>|}  D  D  F\\6tzzlBhij&5OPTPZPZ|[f3ghh++%,wzz$%+		+7T&,ii--66::~~"22 $ 6 6**
 	v
		


6OO 9	D**"$((>":"A"A"--1L1LL#%'   'NN%=d>Y>Y=ZZt#uv) 2 2dnn DEG 2 2gjj @QUV : :o>P>P PQ  HHW-#VG$6$6$..$HI#VG$6$6'**$DUYZ"UW	  !1$..1AA[\]44)/)07::d"::==	G FF7O !hhv'<'<=DDBI%%00GJJ>t%%00GJJ>HT%%11\__DZ^ eg	  3B3S3SVZVcVc3c0040@0@0RHLLN--5\\^*'..)07::d"::/;LOO/>++D $ 2$11AA ))G FF7Os9	v 			 
u	23""%,wzz$)3
::~~"22 $ 6 6&&	
 	v
		


6OO ?	D**"$((>":"A"A"--1L1LL#%'   'NN%=d>Y>Y=ZZt#uv) 2 2dnn DEG 2 2gjj @QUV : :o>P>P PQ  HHW-#VG$6$6$..$HI#VG$6$6'**$DUYZ"UW	  !1$..1AA[\]HHX.55((D,<,<<%'  ++%yy)07::d"::-1-=-=)Y\\RVG FF7O !hhv'<'<=DDBI%%00GJJ>t%%00GJJ>HT%%11\__DZ^ eg	  3B3S3SVZVcVc3c0040@0@0RHLLN--5\\^*'..)07::d"::/;LOO/>++D $ 2$1166 ))G FF7O?	B 			 
u	9:D&++,33F4E4E4P4PTXThTh4hiooq\\3DJJ<?efg&5OPTPZPZ|[f3ghh((%,wzz$)3
::~~"22 $ 6 6**!99

 	v
		


6OO 9	D**"$((>":"A"A"--1L1LL#%'   'NN%=d>Y>Y=ZZt#uv) 2 2dnn DEG 2 2gjj @QUV : :o>P>P PQ  HHW-#VG$6$6$..$HI#VG$6$6'**$DUYZ"UW	  !1$..1AA[\]11&,ii)07::d"::	G FF7O !hhv'<'<=DDBI%%00GJJ>t%%00GJJ>HT%%11\__DZ^ eg	  3B3S3SVZVcVc3c0040@0@0RHLLN--5\\^*'..)07::d"::/;LOO/>++D#}}$11== ))G FF7Os9	v 			 
u	56OO L	D**"$((>":"A"A"--1L1LL#%'   'NN%=d>Y>Y=ZZt#uv) 2 2dnn DEG 2 2gjj @QUV : :o>P>P PQ  HHW-#VG$6$6$..$HI#VG$6$6'**$DUYZ"UW	  !1$..1AA[\] !hhv'<'<=DDBI%%00GJJ>t%%00GJJ>HT%%11\__DZ^ eg	  3B3S3SVZVcVc3c0040@0@0RHLLN--5\\^*'..)07::d"::/;LOO/>++D $ 2$11>>..G FF7OIIK hhv'<'<=DDBI%%00GJJ>t%%00GJJ>FP%%11Z]]BVZ eg	  3B3S3SVZVcVc3c0040@0@0RHLLN--5\\^*'IIK..)07::d"::/;LOO/>++D#}}$11==..G FF7OIIKYL	\ -d;;s   BGBG)sqlalchemy.ormr   typingr   r   r   
sqlalchemyr   logging*src.smart_inventory.apps.inventory.schemasr    r
   products.modelsr   r   r   r   r   r   	getLogger__name__rO   strr   rF       r4   <module>r      sU    " !    B  Z Z			8	$K<K<K< K<r   