o
    [d"                     @   s   d dl Z d dlmZmZmZmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlT d dlZe Zededfd	ed
efddZedd	efddZdS )    N)	APIRouterRequestBodystatus)DictList)jsonable_encoder)JSONResponse)*z
/create_rn.request
rn_detailsc              	      s  t |}| jj }t jddj}|dD ]}g |}t	|d dkr.t	|d }qt	|d d }q|d|d | |d D ]}|d	||d
 |d |d | qD|d D ]}|d|d |d
  q[|d|d }i }|D ]
}|d ||d < qu|d|d }g }	|D ]}|	
|d |d d qttj|	dd dd }	|	 D ]\}
}||
 |kr|d|
|d  q|  |d|d }|jdkr|d|d  |  |d  |dS )NzAsia/Calcutta)tzinfozZselect count(*) as cnt,(select IDENT_CURRENT('Vaaak.GrnList')) as idnt  from Vaaak.GrnListr      z'insert into Vaaak.GrnList values (?, ?)po_noitemsz0insert into Vaaak.GrnItem values (?, ?, ?, ?, ?)Zpurchase_order_itemidreceived_qty
invoice_nozupdate inventory set Quantity = Quantity + ?  where ProductId = (select ProductId from PurchaseOrderItem where PurchaseOrderItemId = ?)z=select * from PurchaseOrderItem where PurchaseOrderListId = ?   zjselect * from Vaaak.GrnItem where GrnId in (select GrnId from Vaaak.GrnList where PurchaseOrderListId = ?)      )item_idqtyc                 S      | d S )Nr    xr   r   2D:\Vignesh\Freelance\Astroved\api_v1\routes\grn.py<lambda>E       zcreate_rn.<locals>.<lambda>c                 S   s   t | dd S )Nc                 S   r   )Nr   r   )yr   r   r   r   F   r   z-create_rn.<locals>.<lambda>.<locals>.<lambda>)pydashsum_byr   r   r   r   r   F   s    zgupdate PurchaseOrderItem set POItemStatus = 0 where PurchaseOrderItemId = ? and PurchaseOrderListId = ?zSselect * from PurchaseOrderItem where PurchaseOrderListId = ? and POItemStatus = 1;zGupdate PurchaseOrderList set POStatus = 0 where PurchaseOrderListId = ?type)r"   id)r   appmssqlcursorarrownowreplacedatetimeexecuteintappendr    
map_valuescollectionsgroup_byr   commitrowcountupper)r   r   r&   Last_updateitr	row_countrowspo_itemsrow	grn_itemskvr   r   r   	create_rn   sb   



r=   z/grn_details/type/po_noc           	         s  |  dkrz| jj }|d|}|jdkrxg }i }|d|}|jdkrv|D ]
}|d ||d < q)|d|}g d}|D ]3}g |}|d |v ri|d ||d   |d< |d dkrh|tt|| q@|tt|| q@|S d	S d
S |  dkr| jj }|d|}|jdkrg }i }|d|}|D ]
}|d ||d < q|d|}g d}|D ]3}g |}|d |v r|d ||d   |d< |d dkr|tt|| q|tt|| q|S dS d S )NGRNzPselect * from PurchaseOrderList where PurchaseOrderListId = ? and POStatus != -1r   zselect GRI.PurchaseOrderItemId, sum(GRI.ReceivedQty) as Received from Vaaak.GrnItem AS GRI where GrnId in (select GRL.GrnId from Vaaak.GrnList AS GRL where GRL.PurchaseOrderListId = ?) group by PurchaseOrderItemIdr   a   select  distinct POL.PurchaseOrderListId , POI.PurchaseOrderItemId , POI.ProductID , PAT.Name AS ProductName,POI.PdtNickName, POI.HSN_Code ,POI.Quantity, POI.UOM, POI.BasePrice, SP.Name AS UOM_Name, POI.CGST, POI.SGST, V.VendorId, V.VendorName, V.VendorAddress1,V.VendorAddress2,V.City,V.State,V.Country, V.CountryCode, V.MobileNo , V.landlineNo, V.GSTIN, V.Remarks from PurchaseOrderItem as POI JOIN  PurchaseOrderList AS POL(NOLOCK) ON POI.PurchaseOrderListId = POL.PurchaseOrderListId JOIN Product AS PP (NOLOCK) ON PP.ProductId = POI.ProductId  LEFT JOIN Vaaak.Vendor AS V (NOLOCK) ON POL.VendorId = V.VendorId  LEFT JOIN Specification AS SP (NOLOCK) ON POI.UOM = SP.SpecificationId  JOIN ProductTranslation AS PT  (NOLOCK)  ON PT.ProductId = POI.ProductId AND PT.LocaleId = 1 JOIN Vaaak.ProductAdditionalTranslation AS PAT  (NOLOCK)  ON PT.ProductAdditionalTransId = PAT.ProductAdditionalTransId  LEFT JOIN vaaak.GrnItem AS GI (NOLOCK)  ON POI.PurchaseOrderItemId=GI.PurchaseOrderItemId  where POI.PurchaseOrderListId = ?)PurchaseOrderListIdPurchaseOrderItemIdZ	ProductIDZProductName	nick_nameZHSN_CodeZQuantityZUOMZ	BasePriceZUOM_NameZCGSTZSGSTVendorId
VendorNameVendorAddress1VendorAddress2CityStateCountryCountrycodemobilelandlinegstremarks   zRN already existszPO already Cancelled!RNa   select distinct POL.PurchaseOrderListId , POI.PurchaseOrderItemId , POI.ProductID , PAT.Name AS ProductName,POI.PdtNickName, POI.HSN_Code ,POI.Quantity, POI.UOM, POI.BasePrice, SP.Name AS UOM_Name, POI.CGST, POI.SGST, V.VendorId, V.VendorName, V.VendorAddress1,V.VendorAddress2,V.City,V.State,V.Country, V.CountryCode, V.MobileNo , V.landlineNo, V.GSTIN, V.Remarks from PurchaseOrderItem as POI JOIN  PurchaseOrderList AS POL(NOLOCK) ON POI.PurchaseOrderListId = POL.PurchaseOrderListId JOIN Product AS PP (NOLOCK) ON PP.ProductId = POI.ProductId  LEFT JOIN Vaaak.Vendor AS V (NOLOCK) ON POL.VendorId = V.VendorId  LEFT JOIN Specification AS SP (NOLOCK) ON POI.UOM = SP.SpecificationId  JOIN ProductTranslation AS PT  (NOLOCK)  ON PT.ProductId = POI.ProductId AND PT.LocaleId = 1 JOIN Vaaak.ProductAdditionalTranslation AS PAT  (NOLOCK)  ON PT.ProductAdditionalTransId = PAT.ProductAdditionalTransId  LEFT JOIN vaaak.GrnItem AS GI (NOLOCK)  ON POI.PurchaseOrderItemId=GI.PurchaseOrderItemId  where POI.PurchaseOrderListId = ?zPO already cancelled)	r3   r$   r%   r&   r+   r2   r-   dictzip)	r   r"   r   r&   r7   r8   Zreceived_itemsr9   columnsr   r   r   grn_details[   sn   


rS   )r'   fastapir   r   r   r   typingr   r   fastapi.encodersr   fastapi.responsesr	   
lib.commonr    routerpostr=   getrS   r   r   r   r   <module>   s    N