o
    [d|4                     @   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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edd	efddZededfd	ed
efddZdS )    N)	APIRouterRequestBodystatus)DictList)jsonable_encoder)JSONResponse)*z
/create_po.request
po_detailsc                    s  t |}| jj }|dD ]}g |}t|d dkr%t|d }qt|d d }qdt dt d||d< t|d d	j	|d< t|d
 d	j	|d
< t
 jddj	|d< zR|d|d |d |d |d
 |d |d d|d d 
 |d D ]$}|d||d |d |d |d |d |d |d d|d |d  q| jj  td|iW S  ty } z| jj  W Y d }~dS d }~ww )Nzbselect count(*) as cnt,(select IDENT_CURRENT('PurchaseOrderList')) as idnt  from PurchaseOrderListr      zAVPL/PSD/{}/{}/{}ZYYYYZMMZ	po_ref_noZpo_datez
DD/MM/YYYYZdelivery_datezAsia/Calcutta)tzinfoZLast_updatez@insert into PurchaseOrderList values (?, ?, ?, ?, ?, ?, ?, ?, ?)Z	vendor_idZpurchase_eventZprepared_byproduct_detailszFinsert into PurchaseOrderItem values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
product_idhsn_codeZqtyuom
base_pricecgstsgst	nick_namepo_nozError.PO not created.)r   appmssqlcursorexecuteintformatarrowgetdatetimenowreplacecommitr	   	Exceptionrollback)r   r   r   itrZ	row_countZprde r(   =D:\Vignesh\Freelance\Astroved\api_v1\routes\purchase_order.py	create_po   s^   &r*   z /get_po/{type}/{details}/{po_id}c              	      s  | j j }| dkri }|d|}|jdkr|D ]b  r~t D ]\}}|| j| d < q$t| g |d< |dkrx|d|}|jdkru|D ]  rji }	t D ]\}}||	 j| d < qU|d 	|	 qKt| t
|  S  dS t
|  S qndS | dkr|d	|}g }
|jdkr|D ] i }t D ]\}}|| j| d < q|
	| qt|
 g }|dkrg d
}|d|
d d }|jdkrt|D ]$\} g    	tj|
 fddd d  |	tt|  qt| |
d d |
d d |
d d |
d d |d}|S ndS | dkr|d	|}g }|jdkr|D ] i }t D ]\}}|| j| d < q<|	| q4t| g }|dkrg d
}|d|d d }|jdkrt|D ]5\} g   ttj| fdddkr 	tj| fddd d  |	tt|  qut| |d d |d d |d d |d d |d}|S d S dS d S )NZPOz=select * from PurchaseOrderList where PurchaseOrderListId = ?r   r   1a  select  distinct POL.PurchaseOrderListId , POI.PurchaseOrderItemId , POI.ProductID , POI.PdtNickName,  PAT.Name AS ProductName, 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Requested PO not foundZGRNzselect GRI.GrnId,GRI.PurchaseOrderItemId,GRL.PurchaseOrderListId,GRI.ReceivedQty,GRI.InvoiceNumber,GRL.LastUpdate from Vaaak.GrnItem as GRI JOIN Vaaak.GrnList as GRL on GRL.GrnId = GRI.GrnId  where GRI.GrnId = ?)Zitem_idr   Zproduct_namer   r   Zorder_quantityr   r   Zuom_namer   r   ZVendorIdZ
VendorNameZVendorAddress1ZVendorAddress2ZCityStateZCountryZCountrycodeZmobileZlandlineZgstremarksZreceived_qtyaL  select  distinct 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 ON POL.PurchaseOrderListId = POI.PurchaseOrderListId JOIN Product AS PP  ON PP.ProductId = POI.ProductId  JOIN Vaaak.Vendor AS V  ON POL.VendorId = V.VendorId JOIN Specification AS SP ON SP.SpecificationId = POI.UOM JOIN ProductTranslation AS PT  ON PT.ProductId = POI.ProductId AND PT.LocaleId = 1 JOIN Vaaak.ProductAdditionalTranslation AS PAT  ON PT.ProductAdditionalTransId = PAT.ProductAdditionalTransId  where POI.PurchaseOrderListId = ?ZPurchaseOrderListIdc                       | d  d kS NZPurchaseOrderItemIdr   r(   xrowr(   r)   <lambda>       zget_po.<locals>.<lambda>ZReceivedQtyZGrnIdZInvoiceNumberZ
LastUpdate)Zgrn_nor   
invoice_noZgrn_dater   zGRN not foundZRNaK  select  distinct 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 ON POL.PurchaseOrderListId = POI.PurchaseOrderListId JOIN Product AS PP  ON PP.ProductId = POI.ProductId  JOIN Vaaak.Vendor AS V  ON POL.VendorId = V.VendorId JOIN Specification AS SP ON SP.SpecificationId = POI.UOM JOIN ProductTranslation AS PT  ON PT.ProductId = POI.ProductId AND PT.LocaleId = 1 JOIN Vaaak.ProductAdditionalTranslation AS PAT  ON PT.ProductAdditionalTransId = PAT.ProductAdditionalTransId  where POI.PurchaseOrderListId = ?c                    r.   r/   r(   r0   r2   r(   r)   r4      r5   c                    r.   r/   r(   r0   r2   r(   r)   r4      r5   )Zrn_nor   r6   Zrn_dater   zRN not found)r   r   r   upperr   rowcount	enumeratecursor_descriptionZjson_serializerappendr	   pydashcollectionsZfilter_dictziplen)r   typedetailsZpo_idr   r   rowsr&   Zitr_itmproductZ	grn_itemsZ	temp_dictr   columnsZgrn_detailsZrn_itemsZ
rn_detailsr(   r2   r)   get_poN   s   

)






 

	 



$rF   z/get_valid_poc                    s4   | j j }g }|dD ]	}||d  q|S )NzDselect PurchaseOrderListId from PurchaseOrderList where POStatus = 1r   )r   r   r   r   r;   )r   r   r   r&   r(   r(   r)   get_valid_po   s   rG   z
/cancel_poc                    sd   t |}| jj }|d|d }|jdkr0|d|d |d  | jj  d|d S dS )Nz9select * from Vaaak.GrnList where PurchaseOrderListId = ?r   r   zUupdate PurchaseOrderList set POStatus = -1, remarks = ? where PurchaseOrderListId = ?r-   zPO - {} Cancelledz#GRN/RN already created for this PO.)r   r   r   r   r   r8   r#   r   )r   r   r   rC   r(   r(   r)   	cancel_po   s   
rH   )r   fastapir   r   r   r   typingr   r   fastapi.encodersr   fastapi.responsesr	   Z
lib.commonjsonr<   routerpostr*   r   rF   rG   rH   r(   r(   r(   r)   <module>   s$    @ 	 