o
    Bd96                     @   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d	efddZdS )    N)	APIRouterRequestBodystatus)DictList)jsonable_encoder)JSONResponse)*z
/create_po.request
po_detailsc                    sr  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< |d|d |d |d |d
 |d |d d|d 	 | jj  |d D ]!}|d||d |d |d |d |d |d |d d|d  q| jj  |  td|iS )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 (?, ?, ?, ?, ?, ?, ?, ?)	vendor_idZpurchase_eventZprepared_byproduct_detailszCinsert into PurchaseOrderItem values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
product_idhsn_codeZqtyuom
base_pricecgstsgstpo_no)r   appmssqlcursorexecuteintformatarrowgetdatetimenowreplacecommitcloser	   )r   r   r   itrZ	row_countZprd r&   =D:\Vignesh\Freelance\Astroved\api_v1\routes\purchase_order.py	create_po   sR   &r(   z!/get_po1/{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 ]%\} g    	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PO=select * from PurchaseOrderList where PurchaseOrderListId = ?r   r   1a  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 V.VendorId = 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 = ?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   Zorder_quantityr   r   Zuom_namer   r   Zvendor_nameZvendor_addressZcountry_codeZvendor_mobiler   Zreceived_qtya  select  distinct 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, V.VendorId 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 SpecificationType AS SP ON SP.SpecificationTypeId = 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_po1.<locals>.<lambda>ZReceivedQtyZGrnIdZInvoiceNumberZ
LastUpdate)Zgrn_nor   
invoice_noZgrn_dater   zGRN not foundZRNc                    r,   r-   r&   r.   r0   r&   r'   r2      r3   )Zrn_nor   r4   Zrn_dater   zRN not found)r   r   r   upperr   rowcount	enumeratecursor_descriptionjson_serializerappendr	   pydashcollectionsZfilter_dictzip)r   typedetailspo_idr   r   rowsr%   itr_itmproductZ	grn_itemsZ	temp_dictr   columnsZgrn_detailsZrn_itemsZ
rn_detailsr&   r0   r'   get_po1G   s   

(






!





!rF   z /get_po/{type}/{details}/{po_id}c                    s   | j j }i }|d|}|jdkr}|D ]d}|rxt|D ]\}}	|	||j| d < qt| g |d< |dkrr|d|}|jdkro|D ]}|rdi }
t|D ]\}}	|	|
|j| d < qO|d |
 qEt| t	|  S  dS t	|  S  dS d S dS )Nr)   r   r   r*   z=select * from PurchaseOrderItem where PurchaseOrderListId = ?r+   )
r   r   r   r   r6   r7   r8   r9   r:   r	   )r   r?   r@   rA   r   r   rB   r1   r%   rC   rD   r&   r&   r'   get_po   s8   

"rG   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   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$    9 *