o
    U>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¡edƒfd	edefdd„ƒZe d¡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_grn.ÚrequestÚgrn_detailsc                 Ã   s   t |ƒ}d S )Nr   )r   r   © r   ú2D:\Vignesh\Freelance\Astroved\api_v1\routes\grn.pyÚ
create_grn   s   €r   z
/create_rnÚ
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 |¡ | jj 
¡  |d D ]}| d	||d
 |d |d |¡ qJ| jj 
¡  |d D ]}| d|d |d
 ¡ qg| jj 
¡  | d|d ¡}i }|D ]
}|d ||d < q‡| d|d ¡}g }	|D ]}|	 |d |d dœ¡ qžt 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_itemidZreceived_qtyZ
invoice_noz‡update 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   r   ©Úxr   r   r   Ú<lambda>I   ó    zcreate_rn.<locals>.<lambda>c                 S   s   t  | dd„ ¡S )Nc                 S   r   )Nr   r   )Úyr   r   r   r   J   r   z-create_rn.<locals>.<lambda>.<locals>.<lambda>)ÚpydashZsum_byr   r   r   r   r   J   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 = ?z{}-{} created!Útype)r	   ÚappÚmssqlÚcursorÚarrowÚnowÚreplaceÚdatetimeÚexecuteÚintÚcommitÚappendr!   Z
map_valuesÚcollectionsZgroup_byr   ÚrowcountÚformatÚupper)r   r   r%   ÚLast_updateÚitrÚ	row_countÚrowsÚpo_itemsÚrowZ	grn_itemsÚkÚvr   r   r   Ú	create_rn   sd   €þû
þÿ€
r:   z/grn_details1/type/po_noc           	      Ã   sÀ   | j j ¡ }g }i }| d|¡}|D ]
}|d ||d < q| d|¡}g d¢}|D ]3}g |¢}|d |v rS|d ||d   |d< |d dkrR| tt||ƒƒ¡ q*| tt||ƒƒ¡ q*|S )NzÕselect 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   r   aÓ   select  distinct POL.PurchaseOrderListId , POI.PurchaseOrderItemId , POI.ProductID , PAT.Name AS ProductName, POI.HSN_Code ,POI.Quantity, POI.UOM, POI.BasePrice, SP.Name AS UOM_Name, POI.CGST, POI.SGST, V.VendorName + ' ' + V.VendorAddress + ' ' + V.CountryCode + ' ' + V.MobileNo AS VendorDetails, V.VendorId 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 SpecificationType AS SP (NOLOCK) ON POI.UOM = SP.SpecificationTypeId  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PurchaseOrderListIdZPurchaseOrderItemIdZ	ProductIDZProductNameZHSN_CodeZQuantityZUOMZ	BasePriceZUOM_NameZCGSTZSGSTZVendorDetailsZVendorIdé   )r#   r$   r%   r*   r-   ÚdictÚzip)	r   r"   r   r%   r6   Zreceived_itemsr5   r7   Úcolumnsr   r   r   Úgrn_details1[   s(   €þ€r@   z/grn_details/type/po_noc                 Ã   sx   | j j ¡ }| d||¡}g d¢}g }|jdkr.|D ]}| tt||ƒƒ¡ qt|ƒ}|S |dkr4dS |dkr:dS d S )Nz"{call Vaaak.spGetGrnDetails(?, ?)}r;   r   ZrnzRN not foundZgrnzGRN not found)	r#   r$   r%   r*   r/   r-   r=   r>   Újson_serializer)r   r"   r   r%   r5   r?   r   r7   r   r   r   r   w   s   €
ÿ)r&   Úfastapir   r   r   r   Útypingr   r   Úfastapi.encodersr	   Úfastapi.responsesr
   Ú
lib.commonr!   ÚrouterÚpostr   r:   Úgetr@   r   r   r   r   r   Ú<module>   s     J