
    `Ne$                        d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZ d dlmZmZ d dlmZmZ d dlmZ m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,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3mZm4Z4 eez  Z5eez  Z6defdZ7de8e5         de8e6         de%fdZ9de5de8e:e0e+f                  fdZ;de%fdZ<de8e          de=e>         fdZ?dede=e>         fd Z@dS )!    N)defaultdict)date)chain)join)IntegrityError)logger)update)Session)settings)ItemTypeSubparse)PriceListTypeSubr   )get_sync_engine)Shop)Season
ThemeGroupGroupColorPictureArticleArticleDetail	Pricelist)PictureTypes)create_lookupextract_categorical_datar   merge_with_current_db_statesessionc           	         |                                   t          t          j        t                    }t          t          j        t                    }t          |j        |j        t          j	                  \  }}}}}t          t          j
        t                    }t          t          j        t                    }	t          |j        |	j        t          j                  \  }
}}}}t          t          j        t                     }||
z  }t#          |j        |          }t'          | ||||||           |                                  t+          | |           |                                  d S N)beginr   r   import_files_xml_article_b2bparse_article_b2b#import_files_xml_article_detail_b2bprocess_articlesItemr   B2Bimport_files_xml_article_mobiparse_article_pt$import_files_xml_article_detail_mobiparse_variant_ptPARTNERTOOLimport_files_xml_price_listparse_price_listprocess_price_list	PriceListr   commithandle_sales_stop_articlesclose)r   article_b2b_importarticle_variant_b2b_importb2b_eans
b2b_colorsb2b_articles
b2b_images_article_pt_importarticle_variant_pt_importpt_eans	pt_colorspt_articles	pt_imagessales_stop_articlesprice_lists_importeansprice_listss                     V/Users/daniilossinkin/PycharmProjects/ShopsBackend/src/data/synchronisation/article.pyimport_article_datarE   #   sL   MMOOO xDFWXX!&x'SUf!g!g8H"'9 95Hj,
A hDFVWW %h&SUe f fFV!&G GCGYY0C xCEUVVgD$%7%A4HHK  L;I	   NN w(;<<<MMOOOOO    articles_importedarticle_variants_importedshopc                    dt           fd}t          j        dt          |                      g }t	                      }t	                      }t	                      }t	                      }g }	t          d |          }
t          |          }| D ]}t          |j                  dk    rt          |          D ]@\  }}|t          j        k    r|                    |           +|                    |           A|j        d         j        }t          |j        |j        j        d|j        j        |j        j        t-          di t/          |j                  t3          di t/          |j                  t7          di t/          |j                            }g |_        |
|j                 D ]Y}|t<          j        k    r|j         s|j!        s|                    |j                   <tE          di t/          |j#                  }|                    |           t          |j$        d         j%        d         j&                  }|                    |           |j                            tO          ||j        |j(        j)        |j*        j        |j(        j+        j)        |j)        |j(        j,        |j-        d         j.        t_          |j-        d	         j0                   |||j                 ||          

  
                   [t          j        d|j1         d           |	                    |           |||	te          |          |z   |fS )Nquantityc                 Z    t          |j        d         j                  }|j        r|rdS | S )Ni  )bool
SalesItemsclassification4r+   )rK   variantrI   unlimited_sells       rD   get_quantityz&process_articles.<locals>.get_quantityS   s6    g04DEE 	 	3OrF   zimporting articles from c                     | j         j        S r   )ReferenceItemnumber)is    rD   <lambda>z"process_articles.<locals>.<lambda>c   s    Q_=S rF   )keyitemsr   1)article_numbercompositionbranddelivery_date_fromdelivery_date_togroupseasontheme_grouprM   )
eanvariant_numbersizer\   size_register
color_codesurcharge_codegenderrR   rK   zarticle z was imported )3floatr   infostrsetr   read_quantitieslenImp_ItemDeliveryDatesprocess_imagesr   ARTICLE_IMAGEappendadddeliveryDater   rV   Imp_MaterialComposition1descriptiondateFromr   	dateUntilr   r   Imp_ItemGroupr   Imp_Collectionr   Imp_ItemThemeGroupcolor_sizesr   r+   imp_salesStopimp_activeColorr   	Imp_ColorUomsEANsidr   Imp_SizecoderU   SizeRegister	surchargerO   classification2rN   rP   r\   list)rG   rH   rI   rS   article_imagescolor_imagescolorsrB   r@   articlesvariants_by_article_lookup
quantitiesarticle_imported
image_typeimagedelivery_datearticlerQ   colorrd   s                       rD   r$   r$   N   si   
u     K63t9966777$&N!$LFUUD$'EE H!.3S3S[t!u!u!u &&J- 8! 8!566!;; "00@!A!A 	( 	(J\777%%e,,,,  '''' )>qAN+2(AM,5:*49SS23C3QRRSSVV45E5TUUVV"cc%=>N>a%b%bcc	
 	
 	
 !12B2IJ 	 	G(((W-B(7Kb(#''777HH4W5FGGHHEJJugl1o*1-011CHHSMMM&&#*> ).#*#8#?")"2"?"D$z#*#3#="-a0@#'(:2(>(N#O#O)\*W^*DgtTT      	Dw5DDDEEE    4#5#5#FH[[[rF   r   returnc                 V     dt           dt          fd fd j        D             S )Npathr   c                     |                      d          d         }t          t          j        t	          |          |          S )z
        Changes original image path to backend path according to type of image
        :param path: original path
        :param image_type: type of image
        :return: a new path of image
        /rM   )splitr   r   pictures_pathrn   )r   r   	file_names      rD   change_image_pathz)process_images.<locals>.change_image_path   s3     JJsOOB'	H*C
OOYGGGrF   c                     g | ]K}d |j         v rt          j        nt          j        xt	          j         |j                             fLS )Fertigteile)typeref_idr   )urir   rt   COLOR_IMAGEr   rV   ).0r   r   r   picture_types     rD   
<listcomp>z"process_images.<locals>.<listcomp>   sz     
 
 
  ;H59:T:TL66ZfZrrL!~&&uy,??  	

 
 
rF   )rn   r   Imp_ItemColorImages)r   r   r   s   `@@rD   rs   rs      sg    H H H H H H
 
 
 
 
 
 0
 
 
 
rF   c           	         dt           dt          fd}t          j        d           t	          t                    }| t
          j        k    rt          t          j	        t          j
                  }t          |d          5 }t          j        |g d          }|D ]T} ||d                    ||d                   z
   ||d	                   z
  }|                    |d
         |i           U	 d d d            n# 1 swxY w Y   n]t          t          t          j	        t          j                  d          5 }t          j        |g d          }|D ]-}|                    |d
          ||d                              .	 d d d            n# 1 swxY w Y   t          t          t          j	        t          j                  d          5 }t          j        |g d          }|D ]f}|d
         }||                                v r ||xx          ||d                   z  cc<   @|                    | ||d                               g	 d d d            n# 1 swxY w Y   |S )Nvaluer   c                 p    t          |                     dd                              dd                    S )N. ,)rl   replace)r   s    rD   to_floatz!read_quantities.<locals>.to_float   s.    U]]3++33C==>>>rF   zimporting quantitiesr)	Fehlmenger   Gesamtbestandr   Reservierte Menger   EANr   r   r   r   )
Soll-Menger   r   r   )r   r   r   )rn   rl   r   rm   r   r   r&   r   r   import_pathimport_files_csv_b2b_storageopencsv
DictReaderr	   import_files_csv_pt_open_amount
setdefault#import_files_csv_pt_open_productionkeys)	rI   r   datar   csvfilereaderrowr   rd   s	            rD   rp   rp      sX   ? ? ? ? ? ? K&'''uDtxH((*OPP$__ 	1^G-s-s-sttF 1 1 _!566#kBR9S9SSV^V^_bcv_wVxVxxSZ/00001	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 $x+X-UVVX[\\ 	I`g^G-F-F-FGGF I IE
HHS5F,G,GHHHHI	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I
 $x+X-YZZ\_`` 	Fdk^G-E-E-EFFF F F%j$))++%%III#k*:!;!;;IIIIOOC((3{3C*D*D)DEEEEF	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F Ks9   ?A/C;;C?C?:AFFFBII!IrA   imported_eansc                 L    t          j        d           fd| D             S )Nzimporting price listsc                     g | ]C}|j         D ]9}|j        j        d          j        xv t	          |j        |j                  :DS )r   )r   pricearticle_detail_ean)PriceDefinitionsr%   rB   valueOf_r   r   
priceValue)r   
price_listprice_definitionrd   r   s      rD   r   z&process_price_list.<locals>.<listcomp>   s{     	 	 	  * ;	 	 #(-a099CmKK 	"-"	
 	
 	
 LKKKrF   )r   rm   )rA   r   rd   s    `@rD   r.   r.      sG    
K'(((	 	 	 	 	 -	 	 	 	rF   r@   c                    t          t                                        t          j                            |                                        d          }|                     |           |                                  d S )Nr   )rK   )r	   r   wherer\   in_valuesexecuter0   )r   r@   stmts      rD   r1   r1      si    -  &&}'C'G'GH['\'\]]ddnodppDOODNNrF   )Ar   collectionsr   datetimer   	itertoolsr   os.pathr   sqlite3r   logurur   
sqlalchemyr	   sqlalchemy.ormr
   
src.configr   "src.data.imports.schema.article_ptr   PartnerToolArticler   r(   *src.data.imports.schema.article_variant_ptPartnerToolVariantArticler*   #src.data.imports.schema.article_b2b
B2BArticler"   !src.data.imports.schema.pricelistr   Import_PriceListr-   src.data.model.db.connectionr   src.data.model.schemasr   src.data.model.db.articler   r   r   r   r   r   r   r   $src.data.model.schemas.picture_typesr   src.data.synchronisation.utilsr   r   r   Import_ArticleImport_VariantArticlerE   r   r$   tuplers   rp   ro   rn   r.   r1   rk   rF   rD   <module>r      s   



 # # # # # #                   " " " " " "             " " " " " "       k k k k k k k k        e e e e e e e e m m m m m m m m 8 8 8 8 8 8 ' ' ' ' ' ' r r r r r r r r r r r r r r r r r r r r = = = = = = w v v v v v v v v v v v#j01J> ( ( ( ( (VR\/R\#'(=#>R\ R\ R\ R\ R\jN tE,:O4P/Q    0$    B40@+A RUVYRZ     c#h      rF   