+
    piE              	       t   R t ^ RIHtHtHtHt ^ RIHt ^ RIH	t	H
t
 ^ RIHt ^ RIHtHtHt ^ RIHtHtHtHtHt ]! RR.R	7      t]P1                  R
]	],          R7      ]! ^ ^ R7      ]! ^d^RR7      RRR]! ]4      3R R ll4       t]P1                  R]R7      ]! ]4      3R R ll4       t]P7                  R
]^R7      ]! ]4      3R R ll4       t]P;                  R]R7      ]! ]4      3R R ll4       t]P?                  R^R7      ]! ]4      3R R ll4       t ]P7                  R]^R7      ]! ]4      3R R ll4       t!]P1                  R ]	],          R7      ^ ^d]! ]4      3R! R" ll4       t"]P1                  R#4      ]! ]4      3R$ R% ll4       t#]P1                  R&4      R]! ]4      3R' R( ll4       t$R# ))z)
Routes API pour la gestion des articles
)	APIRouterDependsHTTPExceptionQuery)Session)ListOptional)get_db)ArticleMouvementStockStatutArticle)ArticleCreateArticleUpdateArticleResponseMouvementStockCreateMouvementStockResponsez/api/articlesArticles)prefixtags/)response_model)gei  )r   leNc                    V ^8  d   QhR\         R\         R\        \         ,          R\        \        ,          R\        \        ,          R\        /# )   skiplimitcategorie_idstatut	recherchedb)intr   r   strr   )formats   "eC:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO CLAUDE\MAESTRO\maestro-backend\app\routes\articles.py__annotate__r%      sQ      
 3- ]#	
 } 	    c                   VP                  \        4      pV'       d#   VP                  \        P                  V8H  4      pV'       d#   VP                  \        P                  V8H  4      pV'       d[   VP                  \        P
                  P                  RV R24      \        P                  P                  RV R24      ,          4      pVP                  V 4      P                  V4      P                  4       pV# )u8   Récupère la liste des articles avec filtres optionnels%)queryr
   filterr   r   codeilikedesignationoffsetr   all)r   r   r   r   r   r    r)   articless   &&&&&&  r$   lire_articlesr1      s     HHWEW11\ABW^^v56\\!I;a 01  &&9+Q'78:

 ||D!''.224HOr&   z/{article_id}c                0    V ^8  d   QhR\         R\        /# r   
article_idr    r!   r   )r#   s   "r$   r%   r%   /   s      S g r&   c                    VP                  \        4      P                  \        P                  V 8H  4      P	                  4       pV'       g   \        RRR7      hV# )u,   Récupère un article spécifique par son ID     Article non trouvéstatus_codedetail)r)   r
   r*   idfirstr   )r4   r    articles   && r$   lire_articler?   .   sE     hhw&&wzzZ'?@FFHG4IJJNr&   )r   r:   c                0    V ^8  d   QhR\         R\        /# )r   r>   r    )r   r   )r#   s   "r$   r%   r%   8   s      = g r&   c                   VP                  \        4      P                  \        P                  V P                  8H  4      P	                  4       '       d   \        RRR7      h\        R/ V P                  4       BRV P                  R\        P                  /B pVP                  V4       VP                  4        VP                  V4       V# )u   Crée un nouvel articlei  u   Ce code article existe déjàr9   stock_actuelr    )r)   r
   r*   r+   r=   r   
model_dumpstock_initialr   NOUVEAUaddcommitrefresh)r>   r    
db_articles   && r$   creer_articlerK   7   s     
xx <=CCEE4STT 



** $$J FF:IIKJJzr&   c                <    V ^8  d   QhR\         R\        R\        /# )r   r4   article_updater    )r!   r   r   )r#   s   "r$   r%   r%   J   s&      ! 	r&   c                f   VP                  \        4      P                  \        P                  V 8H  4      P	                  4       pV'       g   \        RRR7      hVP                  RR7      pVP                  4        F  w  rV\        W5V4       K  	  VP                  4        VP                  V4       V# )zModifie un article existantr7   r8   r9   T)exclude_unset)r)   r
   r*   r<   r=   r   rD   itemssetattrrH   rI   )r4   rM   r    rJ   update_datafieldvalues   &&&    r$   modifier_articlerU   I   s     '"))'**
*BCIIKJ4IJJ ++$+?K#))+
5) , IIKJJzr&   )r:   c                0    V ^8  d   QhR\         R\        /# r3   r5   )r#   s   "r$   r%   r%   ^   s      # 7 r&   c                    VP                  \        4      P                  \        P                  V 8H  4      P	                  4       pV'       g   \        RRR7      hVP                  V4       VP                  4        R# )u#   Supprime définitivement un articler7   r8   r9   N)r)   r
   r*   r<   r=   r   deleterH   )r4   r    rJ   s   && r$   supprimer_articlerY   ]   sX     '"))'**
*BCIIKJ4IJJIIjIIKr&   z/mouvementsc                0    V ^8  d   QhR\         R\        /# )r   	mouvementr    )r   r   )r#   s   "r$   r%   r%   j   s        #  r&   c           
     <   ^ RI Hp ^ RIHp VP                  \        4      P                  \        P                  V P                  8H  4      P                  4       pV'       g   \        RRR7      h\        V P                  V P                  V P                  V P                  V P                  V P                  V P                   R7      pVP#                  V4       V;P$                  V P                  ,          un        VP$                  VP&                  8:  d   \(        P*                  Vn        MOVP,                  \(        P*                  8X  d1   VP$                  VP&                  8  d   \(        P.                  Vn        VP1                  4        VP3                  V4       V# )uM   Crée un mouvement de stock et met à jour le récap Xbat si projet_id fourni)ceil)datetimer7   r8   r9   )r4   quantitetype_mouvement	referencecommentaire	projet_id	niveau_id)mathr]   r^   r)   r
   r*   r<   r4   r=   r   r   r_   r`   ra   rb   rc   rd   rG   rB   seuil_alerter   STOCK_FAIBLEr   ACTIFrH   rI   )r[   r    r]   r^   r>   db_mouvements   &&    r$   creer_mouvement_stockrj   i   s)    !hhw&&wzzY5I5I'IJPPRG4IJJ!''## //%%))%%%%L FF<I...w333&33	=55	5':N:NQXQeQe:e&,,IIKJJ|r&   z/{article_id}/mouvementsc                H    V ^8  d   QhR\         R\         R\         R\        /# )r   r4   r   r   r    r5   )r#   s   "r$   r%   r%      s0      
  		r&   c                   VP                  \        4      P                  \        P                  V 8H  4      P	                  \        P
                  P                  4       4      P                  V4      P                  V4      P                  4       pV# )u<   Récupère l'historique des mouvements de stock d'un article)
r)   r   r*   r4   order_bydate_mouvementdescr.   r   r/   )r4   r   r   r    
mouvementss   &&&& r$   lire_mouvements_articlerq      sb     .)	))Z7	8	.//446	7	eeEl335 
 r&   z/{article_id}/detailc                0    V ^8  d   QhR\         R\        /# r3   r5   )r#   s   "r$   r%   r%      s      C W r&   c                X   ^ RI Hp VP                  \        4      P	                  \        P
                  V 8H  4      P                  4       pV'       g   \        RRR7      hVP                  '       dF   VP                  V4      P	                  VP
                  VP                  8H  4      P                  4       MRpVP                  '       dF   VP                  V4      P	                  VP
                  VP                  8H  4      P                  4       MRp/ RVP
                  bRVP                  bRVP                  bR	VP                  bR
VP                  bRVP                  bRVP                  bRVP                   bRVP"                  bRVP$                  bRVP&                  bRVP(                  bRVP                  bRV'       d   VP*                  MRbRVP                  bRV'       d   VP*                  MRbRVP,                  bRVP.                  R\1        VRR4      R\1        VRR4      /C# )u:   Récupère un article avec les noms des fournisseurs liésFournisseurr7   r8   r9   Nr<   r+   r-   r   prix_achat_htuniterB   rE   rf   r   
taux_pertedescriptionfournisseur_1_idfournisseur_1_nomfournisseur_2_idfournisseur_2_nomref_fournisseur_1ref_fournisseur_2delai_livraison_1delai_livraison_2)app.models.fournisseurru   r)   r
   r*   r<   r=   r   rz   r|   r+   r-   r   rv   rw   rB   rE   rf   r   rx   ry   raison_socialer~   r   getattr)r4   r    ru   r>   f1f2s   &&    r$   lire_article_detailr      s)    3hhw&&wzzZ'?@FFHG4IJJ]d]u]u]u+		%	%knn8P8P&P	Q	W	W	Y{B]d]u]u]u+		%	%knn8P8P&P	Q	W	W	Y{Bgjj 	w** 	,,	
 	.. 	 	,, 	.. 	,, 	'.. 	g(( 	w** 	G44 	"R..$ 	G44  	"R..$!" 	W66#$ 	W66WW.A4HWW.A4H) r&   z/liste/avec-fournisseursc                F    V ^8  d   QhR\         \        ,          R\        /# )r   r   r    )r   r!   r   )r#   s   "r$   r%   r%      s      ! !3-!!r&   c                V   ^ RI Hp VP                  \        4      pV '       d#   VP	                  \        P
                  V 8H  4      pVP                  4       pVP                  V4      P                  4        Uu/ uF  qUP                  VP                  bK  	  pp. pV EF  pVP                  / RVP                  bRVP                  bRVP                  bRVP
                  bRVP                  bRVP                  bRVP                  bR	VP                  bR
VP                   bRVP"                  bRVP$                  bRVP'                  VP$                  4      bRVP(                  bRVP'                  VP(                  4      bRVP*                  bRVP,                  b4       EK  	  V# u upi )u;   Récupère tous les articles avec les noms des fournisseursrt   r<   r+   r-   r   rv   rw   rB   rf   r   rx   rz   r{   r|   r}   r~   r   )r   ru   r)   r
   r*   r   r/   r<   r   appendr+   r-   rv   rw   rB   rf   r   rx   rz   getr|   r~   r   )	r   r    ru   r)   r0   ffournisseursresultas	   &&       r$   lire_articles_avec_fournisseursr      s    3HHWEW11\AByy{H46HH[4I4M4M4OP4OqDD!***4OLPF 
!$$
AFF
 1==
 ANN	

 Q__
 QWW
 ANN
 ANN
 ahh
 !,,
  2 2
  !1!1!2D2D!E
  2 2
  !1!1!2D2D!E
  !4!4
   !4!4!
 	 & M- Qs   7F&)%__doc__fastapir   r   r   r   sqlalchemy.ormr   typingr   r   app.databaser	   
app.modelsr
   r   r   app.schemas.articler   r   r   r   r   routerr   r1   r?   postrK   putrU   rX   rY   rj   rq   r   r   rC   r&   r$   <module>r      s   = < " !  = =  
/	= C_ 56aAsqT*"&&*#&/ 72 OO<07  = ScB8?  C" OO< &/ =& C05<V_  1 ]+AsS &/  T F &t<R7ST &/	 U "#7>v  $D &'"&&/! (!r&   