From f7bf335a06683351cab94df9969c071ca7146e40 Mon Sep 17 00:00:00 2001 From: Sebastien Renard Date: Fri, 15 Mar 2024 19:54:07 +0100 Subject: [PATCH] translation update --- locale/fr/LC_MESSAGES/django.mo | Bin 82380 -> 81768 bytes locale/fr/LC_MESSAGES/django.po | 666 +++++++++++++++++--------------- 2 files changed, 350 insertions(+), 316 deletions(-) diff --git a/locale/fr/LC_MESSAGES/django.mo b/locale/fr/LC_MESSAGES/django.mo index ca0e719a4ab9d5de13dabf99c0cc4ec359f06c9d..9b867a2964df8f0a018921c4a5f5b1f85fd3d211 100644 GIT binary patch delta 24596 zcmZwP2Y8O>!}swkK_X&B?0Fjzu_DCYd(>>L)~HB=R3u~=HEyb{t#-}YBUTX_tEkb| zDypbmt-V!i)A#$k&(rfbp5wia_w+gUzOID+pZCb<3^(7TcVEhpex}3II=$l*#EHcm zXLkn2dDTd{j`OUG<5a`v7={(QI!+U!oV*8IB=Y3p{<Nsv^IT3Yy3d^H!gyWRODp(jJ(F;GrK>Qp7a5id=tMNU2V6EBHak7ve zgBfuq=EQHXB&K3kJcq>@-?>G^kBlsljuV1;P!;PVGj#f3C7g{~$q}rBFR&O^k8+%F z?25&4D*E6S)C6|g^a0F4`Uqyj%b1<PNwNslg z9qvTc--FrljP)jJ0?$z^&d|r~U|!TXEm8e^)QA1oRz#7J8Iw>0j>3F63)R5}%!vC? zcjAck4*HPJ6k|FLK;4ZZmRcGL?0wdI-F zUrjJ4s$K|cz^dqn%~3n?0qU|wVGs^RP3RlcIGa%m+vz5fm&h^H%5K`UZ(mcvg$2p4 zgxZm|HvI_}AUy`l;ZjVGCon&rwmw2lEORUu8grv2)*1cL9ZN(r8f*(jqAuAC)PPG- z1AUKL@mW*{H&82oiE5vvpV`t})*w{9%BUS_j+yZztc|^q9pL>ZqT9X|)!=v3itnNt z_{EuybE5_@(tZVc)1@w=B+4+`ZPDdFpNUAn}xYB1+}BQ zQ9FDDE8y=KjDGHcj>9YJgrNprfGYSFHL)|O*YGlGr=FwEF5@7xf*{mNLop{-!+O{X z)qXN+!n08A7u);|s3UZ5B@#;HJgOuA!Dg#-qTc&rm>cV$?n(#DgI%#CCZQ%c4>hqZ zsEPcF+3^NyVb3rxW*TDhiz7$jcEX8hhK+1N8*2|!!5M%$t5K-4o`8jLip^h-x)WP% z`7YEM@56j}5_RkEp%(ZMwKLE0BfbA#pPGWMsEI_Q2I`MmK{DpUFHt+N2(=?Cu?p@& zo$bG`%5wT0DD9o0v*Z))?~qS|*xO)L`gV?Qj9V{Lib2=-sE$6hkDvSU~nFQEo_joSJQ zY*PW$=dvQ!M74`Uy>3HME1hif7ov`0E%w6gSPqMhH1*qH6Vg3LQlR%Yg$%9yFlwv* zM6Kv=)Wlw*wl32sGf+WmIcpu%nYOX%-l+P6QT>faO>{1n#&sBkzq^SPB=QDJVu8<0 z!v?6k&>l6B9;l;=LG4UG)Yd1Xj$|n63pWxq@C;P@6{vwXVI@3(I*RA01-o;OHfLN0 z)lofEgT`0{JEIE+qYutOO=uCSUJ7c!ou~=?g4&5cZT<^X{mh@6_PJ2w6htQIc8U_w zhoKy*ViVNawJ{Z(Zm5A{P#>25s4e{hbu=?kXTJ=Gc<}+k^rS<-G?yZ;^F~L-*jkQU)!4Gf}YD=%6wlv>FvxQZ#DCv)| zBo0FtE=8?)Kl{pVN){oIqy1S+Es8FeuWHbK3o?XB_F@mQVw<*1{( zjM~~KSOPPCW!jfRZGBDDo%skg;l8M|{{nU7?m0v>&=yoj$5C7LCu+vGF&F-a*)Z1> zV-Tw2%Bb%|6V!@(p(ZlGItw-M4%D4Fg*wW6SX1wRrm5zW*aUSH15jr;6t%+7F$m|O zw*Cj}FQ~ITk6OTe)LHvYGyi^&4gE>i!fMzI)$b@&zvD5F-v7l!RB;<>fCH#Y`73JW zcTji2Yq~izAFNNhBC0$I18_X5pZTb*U4@$1ehkFRs2zHY+Q~PVQSX1&8D=GUP!&s~ z?m!*Xgj%8o_z<;2eNh7^quzoEsE*g6Ca@J%Z$EnDFE;-Ks@_FZe>c(HhR6#dno*0H z_O(KFGz?uh*5;?6F4bYwm+UrbXR^*R6Ar{iq>ExW_CnpIdA58hY62Uv9PXUO{%0j} zn+#3hIjVu**JgzQsQh4?u8QiQ6>5c@QJ1MFmO(e_`>_Tq;4NF8f42FZu_|h3JD|pm zoX!5{Ad*0a`~tN#vr%Wa8ufuWfW`1G>UL+FV~!>q)lq%Sg>6ywdZAwDaTtPAPy=sA zE#PO&iznSgbmn($hBMc^CiyTY`C+IAO;B6i4%M(DYT$Uxjw4Vz_Z1exuTghr3u@rK zsQ!+l7J3aeLH9Evs`wvz5YZX!K{dRMI`hD9%!jE4syrHl@hfW@YDX@kj_46; zOJAV|O1IGLNC19BIzOsjvdtff>D^?EBcd5iMy=o*)a_n_TGzRM|TjBtv2HlYO8LdR`3sMLf(tb1hb*eya?vT zYBs+OYGNN-`=i>8Lj4{w84KdCsEI#7P3Y-jegBC#OH778>Xzq3tvnyy;1!}-wZTWeuPx?A)<)v1da(87ST45c`fGts5 z_CESxG^(Rmo1cuD$XL{lEkS))zC&HA!#4jEs{JjS{}2n2et{YTnQwiQ8PV{mGKt3u*h1Iu7~PqAgcZX%!J=re?YZAf_``oo8nbee`VL1JJJ)C z9*gegM0OGJ#*FJt2mYvz^PxYMK;4ZBsFhW*>6)0CbbVC4)>s%n!mKz1wNqm;3(iK} zi52LJ>(;aX%Gg4N-rt?5*W(w|5!^>zvW(xF4@f~QMY=lbPV__#IKsLB^`Y5`I-0Yn z3E#&G_!u?e5*y48g>7K}vyxGh44rig)Xch|@*`0V60C02geIa^ya;t9YfWE69j;*GRL4`S3sD`f zM@@JyY63@W`Zv^sFQI2bn3MD~)WBKN%u(h>?MOLvYehAQsH0}64%(t7(gk${v8b&c zi#p?_)>Wv9th1(}cIF4ngC|fExP`^>4XS;yt!BL7t?a)B4kbfdQWZ6D9h+{0YS0mN z1YJ-Q?2TGc0_MV@sCrXTZ^JCqWuA|!w+OY66b!-xw*1ak_Fr4^fD8@r8r6Z{HnWm! zsI4r58o0boS4R!l3^hP2)B-x9`srrNV=y=AIMhPFz-BlJ^~F8yCZZ!ai)wfsHPgRQ zGtIi)3>1!G7zE%|@+kxy@gP>Trj3Kjt8P6g7cAQ0?xZ`h8~8K08f*AZnp5^wIlYorqRg54B}Y zPy=*8opE=YABo!91XKr~qXt}nn&2wb$~K^mXb);Zr)>EJRDV}dJ8=s=|NZ}8BAT(! z_ohK0s^k2qw;>3%!YY^_o1+GbLQOacwSdv6iH}1a!89z0t8MvDsMqkQO+P}{+5NR|x7gtAtuXb5#A-sEKt&O&}gsKN&SKH>&<*RQ>6;d@*Wg*6d>c z)nF4Dg>WaT!8z2HUPi6x2C9RHsE*&*be7#_!Ua(8dpS(@;&07Zll00x<{u>f!n&kO z{lH=+37LbOj|1Y+}phG5|hz&`*ml7#M$ung0E;fTj@QiSSzqYGn}^ zj0vbaF&FjPJV2dc;Bm8}U{tz3Y9bx5Fvg(^C!xOm>#-~zKrQHR)Wiy(;4(A5Q<6v) ztc=;QAqHT3YcK0y^e2D3brxnMy#%x28f=9-P!sn1)s&Y*O{5B{|5m7pcSpA$kpv>z z!eOY}It@$XTGYzUpl19KRqq*Ui?g0Izj~EM-THQz0|%gX;&arUS&Ev_E-ZzAVm0*t zjr~{0jeau?T3Y*}1{#lg9T%bQ#48NM{HM%Llt&lo8W@0GP!s8g+UiNDo!N$Jf6$iS zK<%XOY4%@R6L{KmTpG0lb!@t`H5T6^e9MGt zUWD4w)u^M}=O&Ve$PvtmS5Yf@j*Zd(caz@^%aQJd+JPB1e--8;{XJ^nlc=q}jvX=6 zSw3PIff{fl*2L}D8{JQcR3p;;oOw;YMqQF6s0OL1iS5Mvcmjj)E@~%ooHzL)sQgB# zt^EY`{TPU0I2>L0Evnve< z2`@nH%zD(s_M&#=EEdGOSQ-5;@(sbd*h=sJWFop87cdxKpl1S?Ooz=;19Y>-p?1P; zor@ZH3+m_&qAvA$RJ*@W6aL5g67?bSzRYA8-|;1)_dh@xSOoRO3PGK1IBKOWZ2pI+ zdQq4c<1inNK}}#W&cRgt3S0eQ`n!mF{cfTb5O9S>)FV=sh|ahlYU@5j4LApNmaDJ| zZpQL>2ghRmKh5P`iZw{@K&|`W;2t0$jGaYXjqtJ(R0_rG-pcXJ0byrrQ&U_PA$D^qJ+`c!> zOaswHMsd{J&f5WWQquT8R2GZnf#-sE%)8CVY&Zc34#H?wXD(qIR$uY6qh+BlbbH z8(`DJ&|mNW7est1m})D`L2d0a)Bu~XChoW8&OP(N@<+Yjc~LtPf?2Quy09&l!~xhE zXQS%hK-GVSc^KabxNizVP?w?xcE@_y92eU1TNp|D1%_bv2WI7CQ5~NF24(bx;erzUI2(_RP)Pfs6X8+akM`UQlgVBXEQ7iclb?Nq^W_-lv|Axg# z|AAU*x_`_9GNV>n6g6-d>a43_4s3^-XcTG!!`wt3^BPS@eJI8}F#}J;#-wMXw(JsS z#;d3mKSB-g3iV-0_tZ?V2r3AA`8j@sHWr~y(@M|2D|p)1zAsEIyB-HG%s%#P&33Z#QjJKho58Ml)}L@S?!+RACD zmCZv9umsi7X4E(Pfb}W{lTP>2th@|P|pziD;G+N7sq zX}$l)hQ+z1vbY%acKm|6oae9r{(;(|SE#q6sF!Kq z2uqXx7?nRBHKBE0UT)9-zGt`1c#7I;KW|f^FqR`-0X<(lbdes56)^?1k_)H_KSZ7V zGi$bVUY@&C619M;Hr*5pk?x$%?d7@c1IZ{!#uunB+*;IDowE5)ZGPeOUY`G!+Z4ko zUxM0+GpNh^7pmjCs0nAv;N>~GaMWAT6m`eiqjneUD%QYRs3SRn@8eZe!>T@J zf{joU?2F2uf!cw^s0nXDwLgRU^xnoWypOtsE?={Qv8ai-ClS$QT8a8uuo1O_Q>Zh2 zjQSpA%jo5~oP|-ZV-+lnO>KTJ)X|MVO=vpmvaUpJ{eIMdzoB;eKC%G5|9)PcTUrd& zaRt=O>!Sv4jOw^OYRh79I8H>p*O@YTd0xljs7v)8>O<2FgK#pI#m&|$sH4j2um0V< zazuKPQ4-tXIMk7xN6q{X)LZcobwn>w169dvY=*jgAE92~p4LxMJ2?%tunnmGen9Q? z39Q8U&c8%jVn`NqMgvh5_M&e8byUYWvzoIji`vRosGaGJI;vsT*{Cz$j9U41EQ5jB z%$=!=nn+7@>;3LZBp3&wJ|qjVI<7#@$oT_xNA96+^;6V@ie@)=pgQWk?~LkiII7)j zRDa7+JFymv;33qG+|JJXud{ebhAu^Vexp=D8Pv*Zp}vgmP?xGVs{T-${v7L)o{ieE z-%#*rVlwLEx2TmpLN)LUG!qI!?NAlek#t9W zfF`2q??z4h3^vD`=)#IQP5uX{I}?Rk*g({sn&2j)TRsab;d0a`^(<-&FQd--E@~j3 zT;}~QjO9s(VFm1Aooe&<+VmsTT_~2@>`Z&qjt)f~se39BozXnhfJX6KHq=Zj zdnPsE+31 z2e<+?u@|U`RLF03qB?3tjZpPJuzrj>y1uA(15kHsC5GY_499Dzqt0J|qhx%iH4&X< z1iEkv>XK|k&Gbjq1TLVy?blFW!e^-0tw2GuBUMnZ?Z>DinS(mIb*PDLMeWQk{1FeM z=jZ>lLS`$MqrPO{qApt+YT#q2FW>K|0Rjt~3ARGr>Ylg~lW-LlEMn>%KwZB7uo{NB zygYxC`UEwR6)xWY21HVA!4uSg6^oiJu8AL$Zh>0)YSfCpx9OizD?5)mk}Ed-5Op`6 zpeE=PGe0YGpmw&5wO%paf6b%=8Cr2q)DNFeQ5}pxZRJ?hSQb#n4g4MIj1SrLHB^VsQ4`J= z-K{j#UAm6?4e1qXC)|N0O-H3r1J^^%yd~<)ldvX!i~3~V z!O`d!Y+lz%sFkIn&Uzb$s2S?b=P7sd_i-ZH;>W1V zlC_LEYnQb=>Mqo>HbH&C+S>9?sFg*d`Wb~<$b6e#hkE~iMjhER)DdMbOPcYW5F$F8 z`luhHolr9#hB|^#sLQt#wbDbVyK&lj8+Ga4pmx%yoT;DNS_1Xcu_EfsJEAUaU-bO< z{~1KI^2MkRODbxh)2P2J{)x@;!}8|sSc=-}m8gL?pmu1hP47jW@gbW&g{prMHIeJ6 z9n2KU`>%lmLQMz7Q3d5tGYv=m^lOgVvPcZVVOSEEpeAq-)z1l3{lCzKuTkIr!WHcI z1a$;0P~VfD6?p$OU@{qc?}woV8j0GXIjAGpi;eL$hGWAp^Bxbz7}7ssT@0&ec5ndd zlFdNv%wp7zuEDC9h9UUCO+*vOSIL~63$>yOs0P(gN7Bfa_eR}~L8vVrhFb9$n_i4+ zw-&X+t*E!*FzS+?v*k}vcg5`;ZZ1;})K-;5{a)V?HN&2$vzv%o$xPJ13vK>t)Q+X1 z7IFl&fRm_t=TVpSx=p`8^^>8pr(gc>zlo?~UervBqh6zmrh?N7^=0dbI^%)p`6QzT zoR3<`Qq)_Nibe6D^$u#svQ#nee-8AFhkp9`Uz~_mSPu32RYC1U7u2s-gHbC=L2d0u z)a&>?Y9)tJ6FY^fcf;mCu=&qX6ZEfYCR_luW5v+(zyGPJ2pNq~m#`ITC)%MtxjoQ@ zBW(FX)XJBl>a9k#-)7T$QJ3!oYC@M#{ai;)IDIu!KP$Sm6?uqghQ&}@RS~rVRZ$(Z z$7t+|n&4j49r+P;sji_0@TzVmS_IWkJ=B-5F{)li)I<|d6C7Hd_g@2yB|}>{1@(NR-()nNlN zw4zS7!a&qShNA`=jhf(BsD_JCcVIQD!>y?HyHP8>gj&E0)N7c&rm2?)HQ~aj`r&RO z+M*AvQK$(eqZ*D!-S!2jOS2I*fkUW?owVhbQ3F0kt^75ry>~4$U@k09x(sUKZBRSw z?nXovqfwv6!Kf8Yu@$~Xb+`~U;4;)**gN>dPTjQW$EaU8d}^Eag-|;g zg0yoxHHoNUBh-7|3AIIoP!pMidJSiwj^u##Flr?yP&;@TwW5bM{S38ZesxT{VyK-h zg}O_%J^8%*!B@lXu$uMjzuyYpdTrybMk^>h`Cuo>m%vE}1jPJcG^f9}341uG>m;so06KZ%{uM z`0dH_OySStwoVb+m9z21l>bDyZK^q+QZ|5iAZ{U~67*c4&L+M;p8t)9GEUfzzqJ+q zBkwky#*_bz?OgTrtR<~898Rb}`~^W(`q{QbJ^$SH8HTd;3vK>2Z z-FlQYrJo0+dl4QJJpcReRy4>(Wj!?sdu+Tc4aSmQN_i~t2?Ra*|0_t(C!`lq_U?0* zgv++?LU}tvUDBHfWr)|H?Pl8`)Z5%Yr?Bnhv29q3N~_5GjPw%xmoV8j;`ayVNAlMY zz9+AgZIh2SZzx+wsAB7OrtB7jeua9KFA#rd%i{5Uy?^Iy2kB|3rxNK@Du&>vxSycs zmBATi)B7lIWAio;FUthtF}Lj}j(QJC|4W@)glxo%Qs)cuXA%05=i?^xJHp>2UfGVb zQHjsDlM!9m+;+H)I%{m5Vw4Ra|227k5%jd7tQCE=z%S5`I*W)ertBegtCDxe_NDq? zlXj2dj~rBLOy#AhXZAalekJb;d55WY*5(hwspL(x_3Pr_&q)SqF3ia9%FGpS# z;=2iBh+ibQ2Ag1oAMF?F{QslTN}DO}koG5(rou3MPNUFI%w5>BOTJR#`+?0~J}p^h!f zfUVs8kwk-3I?PM_5b={#dyjYv;y*CJ9LjbO&q#b9WpD5ZHXyGV_O+AgL%a~}J|#Vx zvZMHnFqBZ5vI*!%{x;g*Bd%X&+}p_rCUTkZ_Q^yi-;>YZoSYCU55%`mEh2xAw*m8z z-_RB`An#j(o>Sykp#5lUK)SIfmtShhD`Dee9OHYE{VCXM8!O`|>ESf4$wc(LCaq_h zt@8)z^foVuyskEGYMDQ8(_YX0cgoU;XC?m|o0r|2@mo;oOEM}kSXDY(?P*1F9Birrp3Hjx^(5j; zEJw$m;I?-<=xRH@YV$gi-bef&!Vc=r!zSeY&SWx@?qTaM#_r^;r<{M=@;vQG>$yPa zMch4`$Q&vbA(YS#5cC95xB{Dyo@E;~vYl)t{WW{<_=h@gpC8HZ zPUuX=Qp)r^ARS4(Hf?_<{yTY}5iexRRi_*If0M3e^DauQKa7gC2y3Wtp3Hp2-+dxT zPq2*^QLu?HnvhKXanxTV^_(V*ByTZw`CHfjJVl7N`=6AFJhy4j{^z05b3y?s-lt%R z9qcdCQ3N+-2W*2Hl#M5^0YT62l;yMadsr*8n z8j;YGmyClLgY5~|i5H~7yH6^KRW@%DbqbLF>zz8;?O^Y}ZNx;*+43nEYU6`xyP3G> z|Ni4M8tFBBN$5hs|2(AIkWL|ED`5l;s*~P`S?GADt@xC@eAFFG`WT+IeRL=NE9sx9 z|H#(ePuVmZcgVk^tt~@lKPu{3W*g^V06iNhfBW2^?54^I>B!$hI7-M!+j+K zNT^5INZJHY@(3pqKDYJD5&wlc{}RsIw#Av)71CMs``=8P+0`nR(>$U$ZtrS-|R#_C(obIhPwazaR0;XHYqbRjVj|un8)V( zl5R;_uL}QK>v`^yZf?uF5npbyoj-|ZB0h+aiGlCh{5Qluwei-}sYN=L5To;-NWmo% z-o&Tb0pc*60p^j{khuQk;wAC7Pj<@IksfR7cOd>f@#*xVrzYuWLOfxw&HIk>QiMac zjq17A^G9F8T`Fa@6;*JMN(V^?GEiMY^>-SnJR@b9=v+@*;?uDv{!2*qsh!DuVKZKknSppgEKhi32O#R~B0mO~lNX7@u^FM5?KBK0k^h>! zWyIg7eil4Q@Mi&MNGDPL0qM8T3>|7HsmnB)PbfeoJvlJ}o6+zf`NciC=8y5Dzamtm zjvwj?v+WdbsnS0a9yfisX_pS)Xy`ot^g{I8H0MTOs}(42Hb2K|=!bV3yA zV9IL~A4Sm9m%OIL9}^-8<0x-Q$U-Pe*(p=a$x2+$R2)TUNjwwv3($Xk1>(BYPI(%Z zA>&Unq6uG9c?ef#_WGh0cl7v!~| zT+ayd^#t4WQ0m+;>*upb;vX7}Aq*f4qw-eU;3v`xi8rC~3fw>_NhdpK6Gxez9^|#f zJ$Q<|?Y6UbLM@nV#0x{U+(`qK^*bdCtEc6%%a-D$hmylufUACtqb%sQU{I zvl0KBveR@_kN6Wi08!`O|7oKOZR+H=dDU?xb@Y6Rm(T~_C)AmFYOGW4WieeB>#@%u7pZFk}INLd~#fpD?Z_EY*0*6AJ@Q$ zq|{pD%6R!i_KAq=9X&nEg#6R{P6$oiHKB2a{I0~Lh+fR5x2qS;lKL=~T|?@dDP_~8 zHl8uhEA{rwfNZ&AdNGB!mE+^0UH#(YlKP}RTej3YFtHD%(X4HVD~Jv}1!GqZ$x_p- z)D@xLqa!uP*!V%w8Ym*p6%m^d9T7Fe6{X(Tw4|7R(TRPcqmx{vf)YbgpKPw`Jv}IG zlrMYJJ3e7Z>aw(o-WfbwGX4Ixe5rS~1$+CN{Z35HzB9(lCni22CTU3O!0&UV%N|~? zLZxzHm0e-gYlK%TQz2~nygiS-DyDw*!+=bw6^_pF_iFjIS8lI7m7-m-5pS3L|2?*- z_?RTuzST(y9MHZLwkjs|=ii6tD%dz7Av!sMv()_KT+xZH=s2RuJ!9kJQXAb*$=o&~ zIWn1*adtX#SFeN!on&w{yO6jqMTf~%iQAVFUDg#77Zo!gIr>u$(zAULI>zL8Q|;R~ zOuhA@lh^dAuL@3Y`8wzH1FxH=Hhy!-$G>gDzLbG6x^{_a`7(F~r%&tS=T+D{jWsR| zEY@gWN@PSVTOP{{`~PoMS5$Cv9Am{Krd2KCbu3*j7Dq*9lc>phj*+q}#k_I^RO}TI z!}7J5|LuV}_u7||5W^;L1(RKL9T6MD!aS#!cDa(*cJB-kTH@E!s(5{qsbNIYz7)$rAldQwyNv@{yf)}eto~caen9g?{hA%Yw!DcVzjsZ@<0AYX7_4d|G5rNM}NmD ziaSa<&e6<{6WvU?jx(&MOIPI$p*^I%XP$7zbCur>CxreRLf ze`6r#jCGt~48bt0fVr>(hBCerLnJF16EPfTqAKn}X6Sr_)i5Z|tfVQ{C!L6;a2rP9 z8Jo@;?>Hq$S41yHV-XyTWpE0X!!4Mf@tq4qLh&aIz`T9U%nPB?r7$msV{WX6K^ToC z@g>wmUDUu^P!s#ymOntPIJh6XfT5@zse|rdBJGF_zv;nhX zI%+2lU=I8OHQ-e&gbz{ebFwN;z>B&|;no%yK)T-m_Fo+jAw!pHEat}<*45VC)>Ei~ zZ(=t51+$=Mpy?+o)*)R0wZaal@&wcbhoi=O6E)r(mq=D3Yf(F}6?MxGU>Q7%n$Yj4 zj`9pLD=UNrNmoRzteH*6+46B%l>E0*JF?lPKS5o_8(0ZlXRzb=6RC`av6{6lYGMi4 z2$N6~dmppoQPhOa+Waf1OLiYMpfkh_R2XxTtbuCZ6t(hhNPE{AKtx-bXdRELI2*Mi zYcU6=qt5g&>Xx5J)%z8-((FS`y>h7js-p&KhC1u6ml0E6(FEq{R8fy{~KNJ^pFmq&dLM512XPN=&w2sPd`bajj8 z5XpQ09d%A47AC!3D5CSg9x$J_Kg)TLa5x^$Z{Gw!h-KrQSO zRK4TL?7wdL88WmbS5Z6iJ*wjesEGumn0g_ohF;Xf%V8dDfLeKbq=^%Uz40Qdzd9q# z+t3X4ksX7P_=ZbF4d2K7_$g{jucEg24o2XwSQg8TbR0ekoEK07??vUGL{01$)a&;b zYUc`$GDlYywa})hg|@|Dbh{F1NMsPIgUzTJzmMu*zs>&~b%y7$3O+@3RDQJC>T0MD zmPQzYFQM*AG8Vuw7>21>2zMiQ%5}~V(M;~6Zgs#bW@QDiAn9;aeq+>8bVN-s*5(hf zy0-jn)Jm75&Uzyj!!0)d1nN$l_my-0SBR+NZ&5RQfV%ZL#+Vi6M(s>N?15gJKL$0C z38;Z)q9!^A)z2E#4t#{#kt0|Gub_@Lcq}`o_uorI?{#HsTU5g#s4Y)HZQ%mcPHn|= z_%W)ZCFA&+0N0~d{v9^NpHW8`@v50n1Jpvhqv|D~t4I=&&NvRWg43vqH&B=C5o*f< zn619QbD+*X2(_|8sGW#F?Oa{dj?_o(ToY9L)~I&vZGI1z^H;+@WN0FTu`rIr$~YTU zegO4W97nC_A{NJ6r~$IPW>%ORi;xb-s@M$GZWQV*n}}NA0#yEn*XTeW6g$c2i-)li zR(Rbs=#I@v55kg|hFbAi)DGQ6t>_Qb#4?XJI~I%@D9l>Z+5&Zy-EDffOGH~d9@XI- z)J#`nc}&ML_$?O2z&FfmR0h>98g&PHp(Zi_Ghq^HXGWs7-bEeBMAQe{R8)KS9U|&r zD{A1qSPef%9Yv-IX2r!(m#;diqgJT;?XU#)K`)L+UEWow32j8xOG6EK1T}#R$WFM< zU0dKk(KHA_bx;ERF$^`q3aHP6ny8LnKpkCoTiy@VE(tZ!S5P}T6LmDpP)G6}j`r|c zqCew1wI`X&S0CF@p#^H-d8mOGV-{Rz-GW*{I%*=Hp$0sITH$TfihoD-lWQ`&h53+= z7N-~1#EV#z@tr(V%nU1IDCy@g9Ai)&PD8C^DF)(Z)LXF=b&C(6CVCRJ!mqF#-a&m3 z1y3~-u8f&TH^$7^99?x7O++1aMxA{hREP603Rj{&xz3|jo@<(U{Ys&}v>KtdxGU=I z=!<#{$D#UNX!F;ic4Qwm!GqJ-f2}a!Ei+(2)K->8y(YC$9k)kqX>ZiblTbS{8ud9a z1=Y`b)E(K4>gTjg-?HVN>Fh4~`LH9lpU(d4EY^^r*Xs)E2%cg|EIz}$ZVk~(x*uxC zCSz8dg__V}%z`UW6Ww6li>miIYG*E@cHo}%v1<#SVm1o$%rsk86m@ptsFgOc`5iHm zbZ=Ds+190~6|cwKxDPAf3Dg9BL%kiD-ZpPdHq`6w7POIS*0xxif&|ozSE06cHsWSE&LHxFKmt(pb=_-R;Y=^pz4oCjWZE-NoS+)_y3!S=u#X&o!Jp= zgb!2!qvo0|Y=!EmCu)oPqXwRU`EVI(r_xY6`XTDFomHu>tCB=!_a*Bx)k#QT1k^A1<)@i&6E~q59j7?eH*aV!`uGf2HTM|LUkY z8D8vQ3zAUp^<32JxC6CA7f=(vf=%%bMq$JPbGhPC<%3ZZ7=xAYP0WQmP!l+Wx{Rk6 zaQ<51C0lSGmG&$&9TY&VuoUWYRYV<8OVkHR3Pxa>Ex&=qNP8BUiIhMMTnV-H^{nks zJJZJ{QkY0GhT%*sg*#EN+eOr+`3u!i_Qhs`g;Dh)Q15j|496a*9hiXHf!SCPm!i&m zr%fNj0;JvRM1qO@j%pCJ#B6mDR6{Rn;M%CyvIT1Ex}#PagPNd=8u%?#e~VBn-h!Io zK~%k?SOw2vA-(?rOU--kMZIPXQCrg-)j>DZLW%I1HGTG1`kopRnW zcPa;JCo7@uQU}x>7=iiq{=Z2?XSf8lMJG@zzJ{uJ54AF9nVDcN)JlS}9G0~CtxyBM zfU4gU)qa5W71R+;MYY?3VJ?v?M9QQ8a#NuSmL=WY`Z{VyHlU7Z4{A$~pawdD+L24x z18<<}HCSQtTcJPcj;INBLoJ{``hNaTA)>8!ZH0-bv!07O>$Ru>-b2pJNk?72FR(B^ zLQN?5N>eWcyOAz|dV5A;860oZ>rp$keI@&^6?{mBW^^1i!;7dhzl|a2x60%fLQO2( zS_jpxH8#O+SQM9_CcXrj{VL)0bx0{!uO)CBLM?$&Qu1aq!2pCjQe5$!-{)J$Vh4F{pNXgI!! z<4`-}zt&7R*jgC1BVJVdNGySM(2G4#?Z%)k^)yVzMK~JW-0RFrreGKutFSsALv5L} z-ke=_tUxjnHPB0_^1j#zhoe@ShJm;rwXma@8PB73=n4klJq*0fV-dao4T)$AdtxRW zj16%(hU0eZgO@QYHrQlV*b+5h2UPpsHa#45d0m^oz@|5#?#w}(e;ErfzVo9ZnE73E zR>e>=uY}sN#;CLFjJg|fsQL-0BYPdo;(F9&JcaT2J!&FtHk*m|MICK2dT}GV%J__k zI`X_{8kECqq#IeIF(>J+s2zyM=W!^ieL9xGA8k6{7QP`#w?scoMYW%Y>UT9}$1Pjf ze_f6}WN2jvQ0XI>1CQH^7qK|$?=TnoZ#6rW57luf>P|#r7OZ8{4NX80*L=hlf$`=Z~lXvu-n%L)Cj8bu@9P36I7Id=)j}EvOyZi<;;W48pUh ziQTmMKcVXX>DoxP?Pf*=P+L<0btE-W4SU)AzNnAfMAQVPV|$#9mGK7Z66Z@Zm$U$? zy%#mHa;TlEYV+ONM0gLKMz%sL)K+yu9Yr!~rmxuYNvMHmVQ!p)W?`r;ua5b!F>2;ruoNbuI-HA| z;5*hesENL7)B8~U9k!lE_4h4mg1?}v%i(-rG6GRE%!_JR41=*EYQRPqf~`@#UzU-HSTP^VZ8Bu>YFLH8SKK)TMfi1u*k2Gl60lO1dhlgD$86 zU$n-ec48oE;6$5#166-2YRhM$Cb$^2ptZYn{zSIeiXWrS@EGc{okFeP43@!rHa}#y z*@42Sj?1CiMWGf@2epH(Py=?i={VGcl28*EdxL*$R(Q9sY^h0lyE; ztCQuV~G>uVjQ#5J;eNgrLp(d7szRQQIKjS0zUo%@kh8nCxHF(!n z*o|80VVnL8i;+Hys{atRrB6^Ra`v0{SyBBKu<0<=griWeb#qMd@Otid%^w!+KVbeq z;SX#;g+>SY*^dgZV;;`ivfe?QuNz#4{L&kw?uPn1{L>t5EOt7OakkZT?fN zLOS4>+3FftiF89Ok3&!sbr%wOj>suggIu4Pug&_X^jp{j_hLnKj++iDq0-%KdLl-U z-ip=m8tM|}KViO>BQSt;Pt1m~Cha;yi0Bfgpc+g^eTJ{clDG>s!An>P3!OARk5x&h zpmuIOs{TPNf;W)U<@=ZW1+SrYw$LeahbmzO)o4vbXE74h!F-$Eg?fK4qHgsA)I6caR9TEK5hLP14-Y( z-1rFFp#K>&;SQ+s5vYl{r~&3-K3s=caSv(-KSnL=5|+ouXV`zO%zM_%xHhU{Bh=P) z#V|}l9nm7pi@Q-faRPN`?xJ=u%Q^G2UY?6} zX;=&|qTcskQJ1;IH>SVlsJ}sXdMJVeQ9Ci#Iv+LgcGTG&LEYvHsQTZaCVb!e1oZ** zH|kFKUo-E0E>yZGYG=YwM;nQ*R{Fdx=z^*kgSt!uu@Fu`P2e3|h+AyCBC7pJ)WpVHC!@A}2I{gdML*n)s_*V2qAmFpU&S-1FN==1 zjWHNNdMN5FN1#?P4YT4J)R}L=+IS4rpZ^bLqCw~-?M1x}jZpo)jOFzH_a&msHq*Ku z^&{5-)PSe&n4g4hp$4pT*Ze7WQ&jmfEP*>vJ9Y;3cKm?8yMi-F=ls!(vjp|Y`MxjB z`JW)7j&EW%yobJqSW*ptG96bzZCx`A#1^Rf?QOazYUS~m1&7=6(U_C;1XRDXu`aGw zIpaIu5XpgeP&0pm+L5e3n}(&(OF9C>usycLQKht?a(d&w9_?g~Hg2d@r^{ z7lZI9y0JvQA`*`E@0%6(M^%`Lxo|ORWgAgvxYK$Db*mrPbmj-ocOVUQ zH;&r;tC)xMP1M#uK`kWe5&N$O9UhsF+Wx3B9gCXzB&>kTusnW-y1l=kCiW+4MOh!4 z6^Eiau7g@}H}ql(s{TCGU0aEo@Vl-p*ny?U*pFK2bqvP4sFiwtF$3p8opnLXi;<{_ zHpLL^i4S>ul2D%y{hpYC2VpbPqfk5cA?nV#hlyy#U!YcY8TEm39W}$hZ92CN0*b#d@HQx!_QFrK)P5*$}(R{!A#&MknM07SUq9!ufItn$zH&A!s zZPZSzzzE!i+UjqyAnLzH(25J8cCa{VL1j_>SH>5xA*#Pw*k0fND~Uvt@d)+V-RMtq z*1fSP>1o#WsPd1oEZ)F;nBy<=7Ytt1jx@vW*ameZ>rhAeA!?$hu^8UPyn6q${cQ@0 zp=MqK3t$M+A7ilQda51Zft^kQa@$7zjWSPK); zeU8W`BD&qTF+T?Td3+s~M{Qwa)XG|-E?s-ngyK-Q`E@Le(@^!-S~sJY^bXV~;91mB zT*s35*w5qowy;1Z({Tl?PeFauT^NTNcrt2$w^4Us6IR4MsMqQi>Q+C(BKQ=wLm~bi z-&<7|)xH;Mp`&g7YJbk*Fci|*Z!|_xz7Dkm zmr-};7OLa>s0rr|G&@@x^)^ML?pAly=Z%|0M6b;}tb>bDXM7Gj;BC|;tC!Vu5Qm!R zaMVN>*!%;ioj8e___wHj{Ihv{AK3*kl5`Q&C2WIU#&;GH(TsMZF4Gy*k6KqzEAh*2 z&eV(Asd}i}-Wv5D$D#&G#^N~1maj$MYloWHY1F0t9(5G{IW(@zZ6~4?RYq-5XVh)& zgBoBM>PzQ!)C4A?I-Y~t!VNeMkE7o2Ryoa%#iH)gG>pKdSO!m`F7G4B_)f`O=Iq*{ z2Iz`?urId9qo^Y)lH1JOi+VdEP)Al5HP8s_WYlF`gxaZ<*4?Nb{SvjXd+2H_JV9p5 z^I$d7)iD|qP-nH%mizH@ncjvlRL7mri-S-{I32Y!>rk)ZUh4(a**`+9JS?xr_rcaN zFYmv$+$BR3c?PX(fs(2h# z|8G>i0tGz2pZUt6mvka3KNWRn+|@+1vYn_)^%?3CoXf5y?Ie?v_) zsj#X4D(dZ+jGFj#)X^+Kwcl#X_o2o)h^lwNSI+zQJrND~2z3;{V|6T2#JsQVQLocT z)LFY2gOhFg2h=CwL(~F_7By!bhPu>MQ4?v5npiv32T`nKeCIVHn%Pp+mq!|^;W5;u z`3gJYP1MBd6f+YUhT4hIs1;2>)lao9Lmk~FRJ(1cyY)R*!N=%E5h+vLoOKV>SN#yQojR$EX1!N}7ocK;Lb~b>z>&^;o-`>#^x*@BCxf%2C&TUs1nCS3_N!Re@#EVt=Rs1<#PI)cMCeHwKaE}|xO z9rfMt7`2nR${0gkBAQ7p)JmJ7zHDAXbr6Hv!hxu>Q~kC$-R56LZTUUa#0!O)ohya< zd?=5))E!V0O+>XHh2_!xgveAP4^WqGTv>C8rlSU4h&tQNHvK88!^@}%|AAf%E@$$q zqgL7(E8q~+U0Q^?J4aEM{A*+L`1-88{R*^D3yb?uvDBHtG}dB))-nu?!9? zZ&o%B^}(_P!&MLK;SlTc~l}okVnI`%o)6fogCT)!{W;?q9>)iD1;$7DBDGv`yDXwQGr5S!dK+&>wX< zN210_MctiM$j-PFOHgnbb(VjiI?Pqe3|I=af^gI)S#2zd?X1I5Z%r!d zJzs#D*gL3+Y(PyU4fU4oMc?=TH6r?v=`YlZs?;`HSrhddH9>XI9yPHSQS}Df{1lt- zq9!;CwL>dVJGLG*@B!;F)LlD`u0B%F6Y=6>TM$ymbWj+zRVC4P1U6k8^$FGjHIdG! zeqKUNbPTHgMAQzzV&WN4+4sQ11h>Na;qoplWA zR*ystJQX#-Ow@#zptgKDY69y}{cJ^D?vHKx4bH=79A})P%01+C4#CZZ~^2 zZBQ$YK{f1)8fY|z;!M;fO+)SE0aU%Cs871fs0lu@<-eo)%hbR(j_U*x(d7s>8BS@` zL?Tcf)ka;SXq)be`T=49YND^Bc5phX-7-|W^{Cf*4{E}fP!qY2dfT30X1)L64b7QU zL9L`ZYU`SyR@BL+d!k;a!KgEQ6Sbvpq3+HKo4*xxL_1MCuphPJ3#fjtpeFtkW@dcn zsV#6CnHlFntt1jPfjX!aH%8ro?x@!%#inPYK8oK%UB*w*gSY(ng{K+zAY3s?r;`eK zS`ysV{L+HyEmljOrnXTxTj>VrB9ui_)`Ivp@)z2&H}D(s%MjW zXA=Ho)AtWzoB-@k7)Z!Q(9?@h&-NL?V0wlUmQcPy?I|mv^VhSF#5(NkOYwU&(m&XE z29s>024#QH$uT?7R;&JYstN22lEKiNuQ&93T0uWGoDUFEQZ$tVJ^r$kV5xn@q*6g!pF~%p{(Zimy=VdE!@y>*+;$DYjwYRv1Tq zj0$*?iGO7K_>pv3()tv9_L)dxA$^RbtP=6@I{&9MddW5{Ner zPFWA)Ul5)n{V`!a@z2PgqjG|tr-Z$>&-%pY5K2<#1~y>w`dLFyfIsIyjEINAYnq7d zU<~FZ?|sVjf5y^toseQXRk|7F`D~fe?P-%n`D;q>JV#lrXUdg#mhw5Y)6<#y&$+h4 zcoJL5`~baFI7ax!Rvb?L16!{qdBx~dKMggroxeaEJ#`JvD4YI{HosComXL+AdA5(W z#79#nihTD)GPBarcVzO_?0X*LOxuac;lhy~PW~G=!k+RLyn~aMo z*iZRE;vW+)PyY00>hrblEVF(7tnsf=X(<_xD0tactWDkw(h~@JUNQK7&`|Ux>Zene zZ*Hd&6Q4zVJn@~jy_Y&4sv^%8>gsFz*{2_M`B|60|EF;uA_Z;3%*2yy&F3&1>0j_m z%D=R;E^Pgj{025&h4`<8BQ{Oc_ms5#D$$3s4Ww12D&v+T`1b!8gXqbLgD71~rDcSS zwl~S|K;<~@s0BdDTgeRLAIt6{vH7kU-X# zgqMlyi6nHSd^+hhHc$DVY5zZ`;4!|9;S>gAPpnI))otbO*wn7_HOlq0C#@eO?^5g(oYC&$jgO)E7Lx{^Y2Q*STf$E@E-AZZQ=I}Fo^g!h?KU8 zHQ0kXaRh$r==5+B5AgwgoWvfa>k*$%{C+0;{;R*-`o%tzsZ@fF z>J#>nx0K48$h$_!L}*FaMcxX+WjY&*KM^9y|B7^10)J5A3?Z$jHvLS;)`Y{9>8VKA zqw#N(@h6q_48~cukuQUIBzfcTA{n0%FGl^-gmr{%qoo`W;|g;`jOVp|Gls{{gffz zk@(NF)o&3)XjK? zJ`=w{y;h`uqp-HLWgp=k@)p`gnW&eYN$TNuN3PS*7d5|Br}AY6(^HvvH7fQcoo=%J z`Sl28Uy+|5^=zTjE5s|K9)CMPqU}q0FA#Pr!c&NPYkhTn>*tGw#^#Munq@R-hg*pRB_q1gX$k!7_`|rs6ix8yG|3o5@ zwo*~wtQd@RDH?oEdOsnJcq8&o5T=-ZoOa}WVe7Xe?=8ySvt?Ip{-@NLN8WbA1j>^M zuambM!x`IcNMtY>J85v7@FU?x@}ekAB|p3ENc~PD9z$MH%Jp=7rfibU3#Hv>#0OCp zh~ue$4Toc4)6AJf*^8uk%>Hj8){@N2w!>0%lJNxFcpc11_?(7cQTPLOL-A)i*H2OW zH3I+s!?aqK(HKipzL~PZc!u;A)H9f{JQL%$r%^Z+UL_-qP?YePN)ItRWy>i00t+zs zdGePNno{^4f5YB1l@6h2aGHc*S(jzbo zGn3blLGz)E!1T2!F$3=%tRHm83r)eZaQAPhMrx z?n;}H*;ZUZdI<%39@0q9UCc|UMp-*`WU`$U(r0bm4&<#MzKZhaiC@G<^!c_ePoQoV z8*fb600NK8KRV(Yi`ZdX*oBHkOrftv3G(yO(QEiI;Syz|DA`Q7W9y~j>$LO3(uA*V z{yWrvm2iT(uaOsM^BdEjM-%e!-c+FQFG3CqPf|G-R>f$$BNX}m`ZSjO-^dSF2G1cn zSWWtG@;|~P((k9P=usf`RCJ)bo?JbR4NfJ}vkC7IdJ}Tc`v6*HJQInRc_v+-cn#|5 zX@OY@{Y}#M5BbJ2nw}_vhrYUEoXuPB`*-bR{9rqLi@2W6R7fKXCTyg`?{T56QGBeq>E5DldbD!F&`&Y!% zsFd*xp|YNO))(kFKk1)som`~HQZ|Ngl>F+p-Xd!OTkpK}EAmGWRuiT%_zUE}Pgq6V zeaJ7xY{Trt=Tq=J1AIzeF!49Yt4JtLT+bTf+X(w?n|kD(CNv;#32wv+1U>7h^RBJ8 zMQPi|6XHh*BQp7Zug|9im0A-5Y~{tagG=}m6)O|=*v4M!bSJGRm~fMjhY9PcMV(g& z@6+xKpbFJJ<&Ks5pZG7Ljgc2l^IU6Yf$u%66oNhip91)>}Z@ z&vv|?@;}LMZ2NtgvQp&bwr&2fZ62tee(%tQf+18MM~0qnNqb3OuoYM0hlH(!6NHO| zB!ZrMgeHX9)US!9a4KcV#6Kba7JW@6UJ#Fy*7G~=uSU0`zx^-Q5)1D+@JCjOkQ zbjp^iP6wOU+ICiiRc|1#4C$Pde@#4;`r`<@Q$5l7+oj6@M7BI7ncUQo!YhW_KlB^ z^A7Fn9Tbz4?2So`?Vm7$j5Y~LNeM%TIF0^GmDt4im}F`UijRp)`fthy4~ z7&&x^Z5;O>y(h;rg{0(|zI_vh^z-%|niwC;r2c)3!K0b!|Fxo~nD%zu*MVu92M-NO zi+nY6wzLV8%X-|H*kqPzrr}NQACv5D>5UoeO^i<(Hgrf*LZ3nL-l2&~4oyjnjd!B8 zH?jR=hV;vbQ!8aqa?FtAf2R4biKh&U^X(8l*v&E>WGu*=R5oLc|Fx<&rq9rnWbfe7 zN%4dFrf!>3xYj=#`mg@%{`sagBz~kX`R`+~$*CVrsawiyl{u^E|JXM(c-oUG&u32S zHM4A{5LWqbCtxeQHhZ}zEo4rS+-a>=E%!?cTH7~g+TOH^eyR7~ADx!CGr})5Xm|d! z{U4O|OS`wbpC_&N-n^NDs#S`pQK@PzZ)8-R$fybtRa3`*^w1NTHe&zqY;N;GDWkl; zvyY2U^2Ws{4oNt)p3U|SHn%Rx-ory1;**^Ju`<^rCPA%Y6Ax|pKUVeaW$M+Z0sr$H z{^_<~Our%jd$+?FctnEU6RqN(3-E7K_748{CE7L>{?|tA1g$b=l6LdhqU@>l&*ezF zaBf)swD`O0bEL)m*3pwA`kAg%BR|jQdgF$2BL^^*l!T;=+Z^M&%_&Nn>+Bt-X#9}m zgm|ZE#^!r{TT}U88NSnq_a0jA9l%TA9h&0X=a^(B{_JAuEMpUf^obwj9j3}DL%gy7 zydnQzUDD&=cy$)bM0wp(4?p$x{%6wv+9Nal1f5sLRDEan-&OtRzWjHEI`!1ApGMdE zZwmi&B}xD6&NHW, 2010, 2012, 2013, 2016. -# Sébastien Renard , 2010, 2011, 2012, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023. +# Sébastien Renard , 2010, 2011, 2012, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-28 14:14+0200\n" -"PO-Revision-Date: 2023-06-28 14:14+0200\n" +"POT-Creation-Date: 2024-03-15 19:49+0100\n" +"PO-Revision-Date: 2024-03-15 19:48+0100\n" "Last-Translator: Sébastien Renard \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 21.12.3\n" +"X-Generator: Lokalize 22.12.3\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: billing/admin.py:28 billing/admin.py:41 billing/forms.py:71 -#: billing/models.py:352 core/models.py:82 expense/models.py:102 +#: billing/models.py:355 core/models.py:82 expense/models.py:102 #: leads/models.py:143 leads/views.py:199 staffing/models.py:28 #: staffing/models.py:39 staffing/models.py:74 staffing/models.py:476 #: templates/billing/bill.html:82 templates/expense/expense.html:27 @@ -37,8 +37,8 @@ msgstr "Montants" msgid "Dates" msgstr "Dates" -#: billing/admin.py:31 billing/admin.py:44 billing/models.py:171 -#: billing/models.py:262 leads/models.py:81 leads/models.py:303 +#: billing/admin.py:31 billing/admin.py:44 billing/models.py:172 +#: billing/models.py:265 leads/models.py:81 leads/models.py:303 #: leads/views.py:200 templates/billing/_lead_billing.html:38 #: templates/billing/_lead_billing.html:95 #: templates/billing/client_bill_detail.html:49 @@ -54,11 +54,11 @@ msgstr "État" msgid "Link with expenses" msgstr "Lien avec les notes de frais" -#: billing/forms.py:40 staffing/forms.py:93 +#: billing/forms.py:40 staffing/forms.py:95 msgid "Select a month..." msgstr "Choisir un mois..." -#: billing/forms.py:79 staffing/forms.py:358 +#: billing/forms.py:79 staffing/forms.py:368 msgid "Advanced" msgstr "Avancé" @@ -84,33 +84,46 @@ msgstr "" "Il n'est pas possible de définir deux fois le même consultant pour la même " "mission sur le même mois" -#: billing/forms.py:153 +#: billing/forms.py:154 +#, python-format +msgid "Billing mode of mission %s should be defined" +msgstr "" +"Le mode de facturation de la mission %s doit être défini" + +#: billing/forms.py:157 msgid "Month must be defined for time spent mission" msgstr "Il faut définir le mois pour les missions au temps passé" -#: billing/forms.py:155 +#: billing/forms.py:159 msgid "Consultant must be defined for time spent mission" msgstr "Il faut définir le consultant pour les missions au temps passé" -#: billing/forms.py:167 billing/models.py:348 billing/utils.py:173 +#: billing/forms.py:171 billing/models.py:351 billing/utils.py:173 #: expense/models.py:159 templates/billing/_lead_billing.html:23 #: templates/expense/expense.html:13 templates/expense/expenses.html:8 msgid "Expense" msgstr "Note de frais" -#: billing/forms.py:168 billing/models.py:349 expense/models.py:107 +#: billing/forms.py:172 billing/models.py:352 expense/models.py:107 #: templates/expense/expense.html:51 templates/expense/expense_archive.html:33 #: templates/expense/expense_list.html:22 msgid "Expense date" msgstr "Date de dépense" -#: billing/forms.py:183 +#: billing/forms.py:186 msgid "Cannot declare twice the same expense" msgstr "Impossible de déclarer deux fois la même note de frais" +#: billing/forms.py:191 +msgid "" +"If expense is not selected, please provide at least amount or amount with vat" +msgstr "" +"Si aucune note de frais n'est sélectionnée, indiquez le montant ou le " +"montant TTC" + #: billing/models.py:74 billing/views.py:152 expense/forms.py:71 #: expense/forms.py:76 expense/models.py:104 leads/models.py:297 -#: staffing/models.py:72 staffing/views.py:1362 +#: staffing/models.py:72 staffing/views.py:1391 #: templates/billing/bill_review.html:207 #: templates/billing/client_bill_detail.html:25 #: templates/billing/client_bills_archive.html:15 @@ -185,7 +198,7 @@ msgstr "Date de paiement" msgid "Comments" msgstr "Remarques" -#: billing/models.py:80 billing/models.py:318 billing/models.py:350 +#: billing/models.py:80 billing/models.py:321 billing/models.py:353 #: templates/billing/_lead_billing.html:39 #: templates/billing/_lead_billing.html:96 #: templates/billing/bill_review.html:37 templates/billing/bill_review.html:84 @@ -199,14 +212,14 @@ msgstr "Remarques" msgid "Amount (€ excl tax)" msgstr "Montant (€ HT)" -#: billing/models.py:81 billing/models.py:319 billing/models.py:351 +#: billing/models.py:81 billing/models.py:322 billing/models.py:354 #: templates/billing/client_bills_archive.html:20 #: templates/billing/client_bills_in_creation.html:19 #: templates/billing/supplier_bills_archive.html:20 msgid "Amount (€ incl tax)" msgstr "Montant (€ TTC)" -#: billing/models.py:83 billing/models.py:321 +#: billing/models.py:83 billing/models.py:324 msgid "VAT (%)" msgstr "TVA (%)" @@ -214,78 +227,78 @@ msgstr "TVA (%)" msgid "Charge expense with VAT" msgstr "Refacturer les frais avec la TVA" -#: billing/models.py:164 +#: billing/models.py:165 msgid "Draft" msgstr "Brouillon" -#: billing/models.py:165 +#: billing/models.py:166 msgid "Proposed" msgstr "Proposée" -#: billing/models.py:166 +#: billing/models.py:167 msgid "Sent" msgstr "Envoyée" -#: billing/models.py:167 billing/models.py:259 expense/models.py:35 +#: billing/models.py:168 billing/models.py:262 expense/models.py:35 #: templates/expense/_expense_state_column.html:5 msgid "Paid" msgstr "Payée" -#: billing/models.py:168 billing/models.py:260 +#: billing/models.py:169 billing/models.py:263 msgid "Litigious" msgstr "En litige" -#: billing/models.py:169 billing/models.py:261 +#: billing/models.py:170 billing/models.py:264 msgid "Canceled" msgstr "Annulée" -#: billing/models.py:172 +#: billing/models.py:173 msgid "Bill File" msgstr "Fichier de la facture" -#: billing/models.py:174 +#: billing/models.py:175 msgid "Anonymize profile name" msgstr "Anonymiser les noms des consultants" -#: billing/models.py:175 +#: billing/models.py:176 msgid "Include timesheet" msgstr "Inclure la feuille de temps" -#: billing/models.py:176 +#: billing/models.py:177 msgid "Language" msgstr "Langue" -#: billing/models.py:177 +#: billing/models.py:178 msgid "Client comments" msgstr "Commentaires client" -#: billing/models.py:178 leads/models.py:86 staffing/models.py:92 +#: billing/models.py:179 leads/models.py:86 staffing/models.py:92 #: templates/billing/client_bill_detail.html:33 #: templates/leads/lead_detail.html:143 msgid "Client deal id" msgstr "Référence affaire client" -#: billing/models.py:179 +#: billing/models.py:180 msgid "Allow to bill twice an expense" msgstr "Permettre la facturation en double des frais" -#: billing/models.py:180 +#: billing/models.py:181 msgid "Add Factur-X embedded information" msgstr "Ajouter les informations Factur-X" -#: billing/models.py:251 +#: billing/models.py:254 msgid "Client Bill" msgstr "Facture client" -#: billing/models.py:257 +#: billing/models.py:260 msgid "Received" msgstr "Reçue" -#: billing/models.py:258 expense/models.py:31 +#: billing/models.py:261 expense/models.py:31 msgid "Validated" msgstr "Validée" -#: billing/models.py:263 templates/billing/_lead_billing.html:44 +#: billing/models.py:266 templates/billing/_lead_billing.html:44 #: templates/billing/_lead_billing.html:101 #: templates/billing/bill_review.html:40 templates/billing/bill_review.html:87 #: templates/billing/bill_review.html:132 @@ -297,27 +310,27 @@ msgstr "Validée" msgid "File" msgstr "Fichier" -#: billing/models.py:266 templates/billing/_lead_billing.html:94 +#: billing/models.py:269 templates/billing/_lead_billing.html:94 msgid "Supplier Bill id" msgstr "N° de facture fournisseur" -#: billing/models.py:306 +#: billing/models.py:309 msgid "Supplier Bill" msgstr "Facture fournisseur" -#: billing/models.py:316 templates/billing/bill.html:82 +#: billing/models.py:319 templates/billing/bill.html:82 msgid "Quantity" msgstr "Quantité" -#: billing/models.py:317 +#: billing/models.py:320 msgid "Unit price (€)" msgstr "Prix unitaire (€)" -#: billing/models.py:323 +#: billing/models.py:326 msgid "Label" msgstr "Libellé" -#: billing/utils.py:150 leads/views.py:622 staffing/views.py:1975 +#: billing/utils.py:150 leads/views.py:622 staffing/views.py:2014 #: templates/billing/client_billing_control_pivotable.html:49 #: templates/crm/clientcompany_detail.html:297 #: templates/expense/expense_list.html:16 templates/leads/leads.html:17 @@ -326,13 +339,13 @@ msgstr "Libellé" msgid "deal id" msgstr "N° affaire" -#: billing/utils.py:151 leads/views.py:624 staffing/views.py:1977 +#: billing/utils.py:151 leads/views.py:624 staffing/views.py:2016 msgid "client organisation" msgstr "organisation client" #: billing/utils.py:152 billing/views.py:155 leads/views.py:625 -#: staffing/views.py:1978 staffing/views.py:2011 staffing/views.py:2027 -#: staffing/views.py:2028 +#: staffing/views.py:2017 staffing/views.py:2050 staffing/views.py:2066 +#: staffing/views.py:2067 #: templates/billing/client_billing_control_pivotable.html:49 #: templates/billing/client_billing_control_pivotable.html:71 #: templates/billing/payment_delay.html:50 @@ -345,19 +358,19 @@ msgstr "organisation client" msgid "client company" msgstr "entreprise" -#: billing/utils.py:153 leads/views.py:629 staffing/views.py:1981 +#: billing/utils.py:153 leads/views.py:629 staffing/views.py:2020 #: templates/staffing/turnover_pivotable.html:71 msgid "broker" msgstr "apporteur" -#: billing/utils.py:153 staffing/views.py:1981 +#: billing/utils.py:153 staffing/views.py:2020 msgid "Direct" msgstr "Direct" -#: billing/utils.py:154 core/views.py:372 core/views.py:393 leads/views.py:633 -#: staffing/models.py:456 staffing/views.py:1564 staffing/views.py:1603 -#: staffing/views.py:1618 staffing/views.py:1667 staffing/views.py:1982 -#: staffing/views.py:2015 staffing/views.py:2068 +#: billing/utils.py:154 core/views.py:373 core/views.py:394 leads/views.py:633 +#: staffing/models.py:456 staffing/views.py:1593 staffing/views.py:1632 +#: staffing/views.py:1647 staffing/views.py:1695 staffing/views.py:2021 +#: staffing/views.py:2054 staffing/views.py:2107 #: templates/billing/bill_review.html:34 templates/billing/bill_review.html:82 #: templates/billing/bill_review.html:127 #: templates/billing/bill_review.html:173 @@ -397,7 +410,7 @@ msgid "subsidiary" msgstr "filiale" #: billing/utils.py:155 billing/utils.py:188 leads/views.py:628 -#: staffing/views.py:1979 +#: staffing/views.py:2018 #: templates/billing/client_billing_control_pivotable.html:52 #: templates/crm/clientcompany_detail.html:268 #: templates/crm/clientcompany_detail.html:299 templates/leads/leads.html:19 @@ -412,8 +425,8 @@ msgid "manager" msgstr "manager" #: billing/utils.py:157 billing/utils.py:214 staffing/models.py:455 -#: staffing/views.py:1563 staffing/views.py:1601 staffing/views.py:1616 -#: staffing/views.py:1666 staffing/views.py:2067 +#: staffing/views.py:1592 staffing/views.py:1630 staffing/views.py:1645 +#: staffing/views.py:1694 staffing/views.py:2106 #: templates/billing/_lead_billing.html:20 #: templates/billing/pre_billing.html:92 templates/billing/pre_billing.html:159 #: templates/leads/lead_pivotable.html:38 @@ -429,9 +442,9 @@ msgid "consultant" msgstr "consultant" #: billing/utils.py:162 billing/utils.py:180 billing/utils.py:196 -#: billing/utils.py:216 billing/utils.py:225 core/views.py:375 -#: core/views.py:396 staffing/views.py:1567 staffing/views.py:1606 -#: staffing/views.py:1621 templates/billing/_lead_billing.html:24 +#: billing/utils.py:216 billing/utils.py:225 core/views.py:376 +#: core/views.py:397 staffing/views.py:1596 staffing/views.py:1635 +#: staffing/views.py:1650 templates/billing/_lead_billing.html:24 #: templates/billing/client_billing_control_pivotable.html:54 #: templates/billing/client_billing_control_pivotable.html:60 #: templates/billing/client_billing_control_pivotable.html:66 @@ -447,8 +460,8 @@ msgid "amount" msgstr "montant" #: billing/utils.py:163 billing/utils.py:177 billing/utils.py:194 -#: billing/utils.py:215 staffing/views.py:1664 staffing/views.py:2008 -#: staffing/views.py:2016 staffing/views.py:2066 +#: billing/utils.py:215 staffing/views.py:1692 staffing/views.py:2047 +#: staffing/views.py:2055 staffing/views.py:2105 #: templates/billing/_lead_billing.html:21 #: templates/billing/client_billing_control_pivotable.html:53 #: templates/billing/client_billing_control_pivotable.html:58 @@ -469,9 +482,9 @@ msgid "month" msgstr "mois" #: billing/utils.py:164 billing/utils.py:178 billing/utils.py:195 -#: billing/utils.py:217 billing/utils.py:226 core/views.py:371 -#: core/views.py:392 staffing/views.py:1468 staffing/views.py:1565 -#: staffing/views.py:1604 staffing/views.py:1619 staffing/views.py:1665 +#: billing/utils.py:217 billing/utils.py:226 core/views.py:372 +#: core/views.py:393 staffing/views.py:1497 staffing/views.py:1594 +#: staffing/views.py:1633 staffing/views.py:1648 staffing/views.py:1693 #: templates/billing/_lead_billing.html:20 #: templates/billing/client_billing_control_pivotable.html:50 #: templates/billing/client_billing_control_pivotable.html:59 @@ -497,7 +510,7 @@ msgid "mission" msgstr "mission" #: billing/utils.py:168 billing/utils.py:179 billing/utils.py:189 -#: staffing/models.py:457 staffing/views.py:1980 +#: staffing/models.py:457 staffing/views.py:2019 #: templates/billing/_lead_billing.html:20 #: templates/billing/client_billing_control_pivotable.html:49 #: templates/billing/client_billing_control_pivotable.html:78 @@ -556,7 +569,7 @@ msgstr "Filiale" msgid "Paying authority" msgstr "Organisme payeur" -#: billing/views.py:157 staffing/models.py:76 staffing/views.py:1362 +#: billing/views.py:157 staffing/models.py:76 staffing/views.py:1391 #: templates/billing/payment_delay.html:50 #: templates/billing/payment_delay.html:58 #: templates/billing/payment_delay.html:66 @@ -632,14 +645,14 @@ msgstr "" "Impossible de supprimer une facture dans l'état %s. Vous pouvez par contre " "l'annuler." -#: billing/views.py:606 people/utils.py:31 staffing/views.py:540 -#: staffing/views.py:758 staffing/views.py:1496 +#: billing/views.py:606 people/utils.py:31 staffing/views.py:570 +#: staffing/views.py:788 staffing/views.py:1525 #, python-format msgid "team %(manager_name)s" msgstr "équipe %(manager_name)s" -#: billing/views.py:618 people/utils.py:21 staffing/views.py:559 -#: staffing/views.py:770 staffing/views.py:1541 +#: billing/views.py:618 people/utils.py:21 staffing/views.py:589 +#: staffing/views.py:800 staffing/views.py:1570 msgid "Everybody" msgstr "Tout le monde" @@ -778,7 +791,7 @@ msgstr "On s'est déjà vu ?" msgid "sorry, I don't know you" msgstr "Désolé, on ne se connaît pas" -#: core/forms.py:53 expense/forms.py:68 staffing/forms.py:207 +#: core/forms.py:53 expense/forms.py:68 staffing/forms.py:217 #: templates/billing/client_bill_form.html:29 #: templates/billing/supplier_bill_form.html:20 #: templates/crm/client-popup.html:11 @@ -953,54 +966,54 @@ msgstr "Mon staffing" msgid "Mail to support" msgstr "Courriel au support" -#: core/views.py:368 +#: core/views.py:369 msgid "overdue bills" msgstr "factures en retard" -#: core/views.py:370 templates/billing/graph_billing.html:18 +#: core/views.py:371 templates/billing/graph_billing.html:18 msgid "sent bills" msgstr "factures envoyées" -#: core/views.py:373 core/views.py:394 templates/core/risks.html:54 +#: core/views.py:374 core/views.py:395 templates/core/risks.html:54 msgid "deal_id" msgstr "n° d'affaire" -#: core/views.py:374 core/views.py:395 templates/core/risks.html:54 +#: core/views.py:375 core/views.py:396 templates/core/risks.html:54 msgid "deal" msgstr "affaire" -#: core/views.py:376 core/views.py:397 crm/models.py:476 crm/models.py:505 -#: staffing/views.py:1468 templates/core/risks.html:42 +#: core/views.py:377 core/views.py:398 crm/models.py:476 crm/models.py:505 +#: staffing/views.py:1497 templates/core/risks.html:42 #: templates/crm/_contact_list.html:10 templates/crm/contact_list.html:13 msgid "company" msgstr "société" -#: core/views.py:377 core/views.py:398 crm/views.py:485 +#: core/views.py:378 core/views.py:399 crm/views.py:485 #: templates/crm/clientcompany_detail.html:295 #: templates/crm/company_pivotable.html:49 templates/leads/leads.html:15 #: templates/leads/leads_to_bill.html:14 msgid "client" msgstr "client" -#: core/views.py:392 templates/core/risks.html:57 +#: core/views.py:393 templates/core/risks.html:57 msgid "work without bill" msgstr "Temps passé sans facture" -#: core/views.py:423 templates/core/delete.html:15 +#: core/views.py:424 templates/core/delete.html:15 msgid "Yes" msgstr "Oui" -#: core/views.py:423 templates/core/delete.html:17 +#: core/views.py:424 templates/core/delete.html:17 #: templates/expense/expense.html:88 msgid "No" msgstr "Non" -#: core/views.py:448 +#: core/views.py:449 msgctxt "noun" msgid "add" msgstr "ajout" -#: core/views.py:449 +#: core/views.py:450 msgctxt "noun" msgid "delete" msgstr "suppression" @@ -1094,7 +1107,7 @@ msgstr "Nom" msgid "Code" msgstr "Code" -#: crm/models.py:88 crm/models.py:106 crm/models.py:151 staffing/views.py:1984 +#: crm/models.py:88 crm/models.py:106 crm/models.py:151 staffing/views.py:2023 #: templates/crm/clientcompany_ranking.html:14 #: templates/staffing/turnover_pivotable.html:109 #: templates/staffing/turnover_pivotable.html:117 @@ -1166,8 +1179,8 @@ msgstr "Fax" msgid "Function" msgstr "Fonction" -#: crm/models.py:205 staffing/forms.py:610 staffing/forms.py:611 -#: staffing/forms.py:612 staffing/forms.py:613 +#: crm/models.py:205 staffing/forms.py:620 staffing/forms.py:621 +#: staffing/forms.py:622 staffing/forms.py:623 #: templates/leads/lead_mail.html:10 templates/leads/lead_mail.txt:11 #: templates/leads/lead_mail.txt:19 templates/leads/mail.html:9 #: templates/leads/mail.html:11 @@ -1219,8 +1232,8 @@ msgstr "Croissance" msgid "To restrain" msgstr "À restreindre" -#: crm/models.py:349 staffing/forms.py:610 staffing/forms.py:611 -#: staffing/forms.py:612 staffing/forms.py:613 +#: crm/models.py:349 staffing/forms.py:620 staffing/forms.py:621 +#: staffing/forms.py:622 staffing/forms.py:623 msgid "Standard" msgstr "Standard" @@ -1436,7 +1449,7 @@ msgid "state" msgstr "état" #: expense/tables.py:122 expense/tables.py:190 people/models.py:269 -#: staffing/views.py:1363 templates/billing/bill.html:164 +#: staffing/views.py:1392 templates/billing/bill.html:164 #: templates/expense/expense.html:31 templates/expense/expense_archive.html:22 #: templates/expense/expense_payments.html:48 #: templates/staffing/mission_consultants.html:9 @@ -1499,11 +1512,11 @@ msgstr "La note de frais %s a été supprimée" msgid "Successfully update expense" msgstr "Note de frais mise à jour avec succès" -#: expense/views.py:304 staffing/views.py:1746 +#: expense/views.py:304 staffing/views.py:1774 msgid "Incorrect value" msgstr "Valeur incorrecte" -#: expense/views.py:382 +#: expense/views.py:384 #, python-format msgid "Expense payment %s does not exist" msgstr "Le remboursement de frais %s n'existe pas" @@ -1522,41 +1535,6 @@ msgstr "Commercial" msgid "Staffing" msgstr "Staffing" -#: leads/feeds.py:35 -msgid "Latest leads" -msgstr "Dernières affaires" - -#: leads/feeds.py:36 -msgid "Last modified or created leads" -msgstr "Dernières affaires modifiées ou créées" - -#: leads/feeds.py:43 -msgid "New leads" -msgstr "Nouvelles affaires" - -#: leads/feeds.py:44 -msgid "Last new lead created" -msgstr "Dernières affaires créées" - -#: leads/feeds.py:55 leads/views.py:364 -#: templates/crm/graph_company_business_activity.html:30 -msgid "Won leads" -msgstr "Affaires gagnées" - -#: leads/feeds.py:56 -msgid "Last won leads" -msgstr "Dernières affaires gagnées" - -#: leads/feeds.py:63 templates/billing/client_billing_control_pivotable.html:19 -msgid "My leads" -msgstr "Mes affaires" - -#: leads/feeds.py:64 -msgid "Last active leads that I am responsible or resource" -msgstr "" -"Les dernières affaires actives dont je suis responsable ou ressource " -"pressentie" - #: leads/forms.py:75 leads/models.py:73 leads/views.py:199 people/models.py:340 #: templates/core/index.html:15 templates/core/index.html:40 #: templates/core/index.html:64 templates/core/index.html:88 @@ -1572,7 +1550,7 @@ msgstr "Si l'affaire a été apportée par un tiers" msgid "If payment is done by a third party" msgstr "Si la facturation est faite via un tiers" -#: leads/forms.py:85 staffing/forms.py:341 +#: leads/forms.py:85 staffing/forms.py:351 msgid "Identification" msgstr "Identification" @@ -1584,7 +1562,7 @@ msgstr "Nom de l'affaire. Ne pas inclure le nom du client" msgid "Next commercial action to be done" msgstr "Prochaine action commercial à prendre" -#: leads/forms.py:96 staffing/forms.py:359 +#: leads/forms.py:96 staffing/forms.py:369 msgid "Leave blank to auto generate" msgstr "Laissez vide pour auto générer" @@ -1691,7 +1669,7 @@ msgstr "Échéance" msgid "Creation" msgstr "Création" -#: leads/models.py:85 staffing/views.py:987 staffing/views.py:1362 +#: leads/models.py:85 staffing/views.py:1017 staffing/views.py:1391 #: templates/billing/client_bills_archive.html:14 #: templates/leads/lead_detail.html:139 templates/leads/review.html:46 #: templates/leads/review.html:79 @@ -1731,11 +1709,11 @@ msgstr "" msgid "A mission has been initialized for this lead." msgstr "Une mission a été créée pour cette affaire." -#: leads/utils.py:91 +#: leads/utils.py:90 msgid "Mission's probability has been set to 100%" msgstr "La probabilité de la mission a été mise à 100 %" -#: leads/utils.py:96 +#: leads/utils.py:95 msgid "According mission has been archived" msgstr "La mission correspondante a été archivée" @@ -1760,6 +1738,10 @@ msgstr "C.A. (k€)" msgid "All leads" msgstr "Toutes les affaires" +#: leads/views.py:364 templates/crm/graph_company_business_activity.html:30 +msgid "Won leads" +msgstr "Affaires gagnées" + #: leads/views.py:526 #, python-format msgid "Last %s days" @@ -1786,7 +1768,7 @@ msgstr "prix (interval)" msgid "sales (k€)" msgstr "C.A. (k€)" -#: leads/views.py:623 staffing/views.py:1468 staffing/views.py:1976 +#: leads/views.py:623 staffing/views.py:1497 staffing/views.py:2015 #: templates/crm/_contact_list.html:9 #: templates/crm/clientcompany_detail.html:266 #: templates/crm/clientcompany_detail.html:296 @@ -1848,7 +1830,7 @@ msgstr "Profil" msgid "Subcontractor" msgstr "Sous-traitant" -#: people/models.py:313 staffing/views.py:1619 +#: people/models.py:313 staffing/views.py:1648 #: templates/people/consultant_detail.html:237 #: templates/people/consultant_detail.html:243 #: templates/staffing/_consultant_prod_tooltip.html:2 @@ -1856,7 +1838,7 @@ msgstr "Sous-traitant" msgid "daily rate" msgstr "taux journalier" -#: people/models.py:314 staffing/views.py:1604 staffing/views.py:2139 +#: people/models.py:314 staffing/views.py:1633 staffing/views.py:2178 #: templates/staffing/_consultant_prod_tooltip.html:1 #: templates/staffing/graph_timesheet_rates_bar.html:15 #: templates/staffing/graph_timesheet_rates_bar.html:25 @@ -1876,44 +1858,62 @@ msgstr "Type de taux" msgid "Salesmen" msgstr "Commerciaux" -#: people/tasks.py:60 +#: people/tasks.py:73 msgid "Expenses to review" msgstr "Notes de frais à valider" -#: people/tasks.py:67 +#: people/tasks.py:73 +msgid "expenses" +msgstr "notes de frais" + +#: people/tasks.py:82 msgid "Mission without billing mode" msgstr "Mission sans mode de facturation défini" -#: people/tasks.py:74 +#: people/tasks.py:82 people/tasks.py:90 people/tasks.py:98 +msgid "missions" +msgstr "missions" + +#: people/tasks.py:89 msgid "Consultants rates are not fully defined" msgstr "Les taux journaliers ne sont pas tous définis" -#: people/tasks.py:81 +#: people/tasks.py:97 msgid "Mission marketing product is missing" msgstr "Mission sans produit marketing défini" -#: people/tasks.py:95 +#: people/tasks.py:112 #, python-format msgid "%s € missing billing for past months" msgstr "%s € de facturation sont manquants les mois passés" -#: people/tasks.py:104 templates/billing/bill_review.html:12 +#: people/tasks.py:113 people/tasks.py:122 people/tasks.py:131 +#: people/tasks.py:154 +msgid "billing" +msgstr "facturation" + +#: people/tasks.py:122 templates/billing/bill_review.html:12 msgid "Bills to review" msgstr "Factures à revoir" -#: people/tasks.py:112 templates/billing/supplier_bills_validation.html:11 +#: people/tasks.py:131 templates/billing/supplier_bills_validation.html:11 msgid "Supplier bills to review" msgstr "Factures fournisseurs à valider" -#: people/tasks.py:118 +#: people/tasks.py:138 msgid "Leads without tag" msgstr "Affaire sans étiquette" -#: people/tasks.py:125 +#: people/tasks.py:139 people/tasks.py:145 +#: templates/crm/clientcompany_detail.html:56 +msgid "leads" +msgstr "affaires" + +#: people/tasks.py:145 msgid "Leads with past due date" msgstr "Affaires avec date d'échéance passée" -#: people/tasks.py:133 +#: people/tasks.py:153 msgid "Missing legal id or vat id" msgstr "Numéro d'immatriculation légale ou TVA manquants" @@ -1927,141 +1927,128 @@ msgstr "consultants %s" msgid "subcontractors %s" msgstr "sous-traitant %s" -#: staffing/feeds.py:37 -msgid "Latest staffing update" -msgstr "Dernières mises à jour de staffing" - -#: staffing/feeds.py:38 -msgid "Last consultant forecast staffing updated or created" -msgstr "" -"Dernières mise à jour ou création de staffing prévisionnel pour un consultant" - -#: staffing/feeds.py:45 -msgid "My lastest staffing update" -msgstr "Mes dernières mise à jour de staffing" - -#: staffing/feeds.py:46 -msgid "Last forecast staffing updated or created about myself" -msgstr "" -"Dernières mise à jour ou création de staffing prévisionnel me concernant" - -#: staffing/forms.py:121 +#: staffing/forms.py:123 msgid "Invalid date format" msgstr "Format de date incorrect" -#: staffing/forms.py:147 +#: staffing/forms.py:149 msgid "Select a mission to add forecast..." msgstr "Choisir une mission pour ajouter des prévisions..." -#: staffing/forms.py:175 +#: staffing/forms.py:177 msgid "Select a consultant to add forecast..." msgstr "Choisir un consultant pour ajouter une prévision..." -#: staffing/forms.py:188 +#: staffing/forms.py:193 #, python-format msgid "Staffing below must be after %s" msgstr "La prévision de charge ci-dessous doit être après le %s" -#: staffing/forms.py:191 +#: staffing/forms.py:196 #, python-format msgid "Staffing below must be before %s" msgstr "La prévision de charge ci-dessous doit être avant le %s" -#: staffing/forms.py:201 templates/staffing/pdc_detail.html:8 +#: staffing/forms.py:202 +#, python-format +msgid "You can't define a forecast lower than already done on timesheet (%s)" +msgstr "Vous ne pouvez pas faire une prévision inférieure au réalisé (%s)" + +#: staffing/forms.py:211 templates/staffing/pdc_detail.html:8 msgid "Charge" msgstr "Charge" -#: staffing/forms.py:202 templates/billing/_lead_billing.html:43 +#: staffing/forms.py:212 templates/billing/_lead_billing.html:43 #: templates/billing/_lead_billing.html:100 #: templates/billing/client_bill_detail.html:53 #: templates/expense/expense.html:80 templates/expense/expense_archive.html:35 msgid "Comment" msgstr "Remarques" -#: staffing/forms.py:203 +#: staffing/forms.py:213 msgid "All active consultants" msgstr "Toutes les consultants actifs" -#: staffing/forms.py:204 +#: staffing/forms.py:214 msgid "Staffing dates" msgstr "Dates de staffing" -#: staffing/forms.py:272 +#: staffing/forms.py:282 #, python-format msgid "mission id: %s" msgstr "n° de mission : %s" -#: staffing/forms.py:314 staffing/views.py:1301 +#: staffing/forms.py:324 staffing/views.py:1330 msgid "Days without lunch ticket" msgstr "Jours sans ticket restaurant" -#: staffing/forms.py:342 +#: staffing/forms.py:352 msgid "Name of this mission. Leave blank when leads has only one mission" msgstr "" "Nom de cette mission. Laissez vide pour les affaires avec une seule mission" -#: staffing/forms.py:344 +#: staffing/forms.py:354 msgid "Leave blank to use lead client deal id" msgstr "Laissez vide pour utiliser la référence client de l'affaire" -#: staffing/forms.py:350 +#: staffing/forms.py:360 msgid "Management" msgstr "Gestion" -#: staffing/forms.py:352 +#: staffing/forms.py:362 msgid "Forbid forecast before this date" msgstr "Interdire les prévisions avant cette date" -#: staffing/forms.py:355 +#: staffing/forms.py:365 msgid "Forbid forecast after this date" msgstr "Interdire les prévisions après cette date" -#: staffing/forms.py:379 +#: staffing/forms.py:389 msgid "Cannot add price to mission without lead" msgstr "Impossible d'ajouter un montant à une mission sans affaire" -#: staffing/forms.py:382 +#: staffing/forms.py:392 msgid "Mission's lead has no sales price. Define lead sales price." msgstr "" "L'affaire de cette mission n'a pas de prix de vente. Il faut en définir un " "au préalable." -#: staffing/forms.py:391 +#: staffing/forms.py:401 #, python-format msgid "Only %s k€ are remaining on this lead. Define a lower price" msgstr "" "Il ne reste que %s k€ sur cette affaire. Choisissez un montant plus faible" -#: staffing/forms.py:399 +#: staffing/forms.py:409 msgid "start date must be prior to en date" msgstr "La date de début doit précéder la date de fin" -#: staffing/forms.py:410 +#: staffing/forms.py:420 msgid "Fixed price mission cannot be elastic by definition" msgstr "Un forfait ne peut être en mode élastique par définition" -#: staffing/forms.py:412 +#: staffing/forms.py:422 msgid "Analytics code must be defined for non production missions" msgstr "" "Les codes analytiques doivent être définis pour les missions non productive" -#: staffing/forms.py:512 +#: staffing/forms.py:522 msgid "Select mission to plan" msgstr "Choisir une mission à planifier" -#: staffing/forms.py:515 +#: staffing/forms.py:525 msgid "Predefined assignment" msgstr "Assignation fixe" -#: staffing/forms.py:518 +#: staffing/forms.py:528 msgid "Exclusions" msgstr "Exclusions" -#: staffing/forms.py:525 +#: staffing/forms.py:535 msgid "Mission has no budget remaining" msgstr "La mission n'a plus de budget" -#: staffing/forms.py:545 +#: staffing/forms.py:555 #, python-format msgid "" "Remaining budget (%s k€) is too low for at least one day of each predefined " @@ -2070,69 +2057,69 @@ msgstr "" "Le budget restant (%s k€) est trop faible pour faire au moins un jour de " "chaque profil assigné" -#: staffing/forms.py:583 +#: staffing/forms.py:593 #, python-format msgid "" "You cannot forecast outside mission defined window (%(start)s - %(end)s)" msgstr "" "Vous ne pouvez pas faire de prévision hors de la période %(start)s - %(end)s" -#: staffing/forms.py:606 +#: staffing/forms.py:616 msgid "staffing projection freetime" msgstr "Projection pour dispo" -#: staffing/forms.py:606 +#: staffing/forms.py:616 msgid "full" msgstr "complète" -#: staffing/forms.py:606 +#: staffing/forms.py:616 msgid "balanced" msgstr "pondérée" -#: staffing/forms.py:606 +#: staffing/forms.py:616 msgid "none" msgstr "aucune" -#: staffing/forms.py:607 +#: staffing/forms.py:617 msgid "Director min. quota (%)" msgstr "Quota mini directeur (%)" -#: staffing/forms.py:608 +#: staffing/forms.py:618 msgid "Senior min. quota (%)" msgstr "Quota mini senior (%)" -#: staffing/forms.py:609 +#: staffing/forms.py:619 msgid "Newbie min. quota (%)" msgstr "Quota mini débutants (%)" -#: staffing/forms.py:610 +#: staffing/forms.py:620 msgid "Mission planning weight" msgstr "Importance du respect planning mission" -#: staffing/forms.py:610 staffing/forms.py:611 staffing/forms.py:612 -#: staffing/forms.py:613 +#: staffing/forms.py:620 staffing/forms.py:621 staffing/forms.py:622 +#: staffing/forms.py:623 msgid "High" msgstr "Haute" -#: staffing/forms.py:611 +#: staffing/forms.py:621 msgid "Consultant free time weight" msgstr "Importance minimisation temps disponible" -#: staffing/forms.py:612 +#: staffing/forms.py:622 msgid "People per mission weight" msgstr "Importance nb de personne / mission" -#: staffing/forms.py:613 +#: staffing/forms.py:623 msgid "Mission per people weight" msgstr "Importance nb mission / personne" -#: staffing/forms.py:635 +#: staffing/forms.py:645 #, python-format msgid "%s %% director profile is required but no director has been selected" msgstr "" "%s %% de profil directeur est exigé mais aucun directeur n'a été sélectionné" -#: staffing/forms.py:642 +#: staffing/forms.py:652 #, python-format msgid "" "%s %% senior profile is required but no senior consultant has been selected" @@ -2140,7 +2127,7 @@ msgstr "" "%s %% de profil expérimenté est exigé mais aucun consultant expérimenté n'a " "été sélectionné" -#: staffing/forms.py:649 +#: staffing/forms.py:659 #, python-format msgid "" "%s %% newbie profile is required but no newbie consultant has been selected" @@ -2148,7 +2135,7 @@ msgstr "" "%s %% de profil débutant est exigé mais aucun consultant débutant n'a été " "sélectionné" -#: staffing/forms.py:654 +#: staffing/forms.py:664 msgid "Sum of profiles quotas cannot exceed 100%" msgstr "La somme des quotas ne peut excéder 100 %" @@ -2205,7 +2192,7 @@ msgctxt "masculine" msgid "None" msgstr "Aucun" -#: staffing/models.py:73 staffing/views.py:1362 +#: staffing/models.py:73 staffing/views.py:1391 #: templates/crm/clientcompany_detail.html:270 #: templates/staffing/consultant_missions.html:11 #: templates/staffing/fixed_price_report.html:16 @@ -2287,8 +2274,8 @@ msgstr "prévu (jours)" msgid "forecast (€)" msgstr "prévu (€)" -#: staffing/models.py:470 staffing/views.py:987 staffing/views.py:1263 -#: staffing/views.py:1362 templates/leads/lead_detail.html:227 +#: staffing/models.py:470 staffing/views.py:1017 staffing/views.py:1292 +#: staffing/views.py:1391 templates/leads/lead_detail.html:227 #: templates/staffing/consultant_staffing.html:11 #: templates/staffing/mission.html:163 templates/staffing/optimise_pdc.html:84 #: templates/staffing/optimise_pdc.html:109 @@ -2319,14 +2306,14 @@ msgstr "Pas de ticket restaurant" msgid "Lunch ticket" msgstr "Ticket restaurant" -#: staffing/models.py:543 staffing/views.py:1363 +#: staffing/models.py:543 staffing/views.py:1392 #: templates/crm/_clientcompany_rates_margin.html:17 #: templates/crm/clientcompany_ranking.html:18 #: templates/staffing/rates_report.html:23 msgid "Daily rate" msgstr "Taux journalier" -#: staffing/models.py:544 staffing/views.py:1363 +#: staffing/models.py:544 staffing/views.py:1392 msgid "Bought daily rate" msgstr "Taux journalier d'achat" @@ -2334,37 +2321,37 @@ msgstr "Taux journalier d'achat" msgid "Financial condition" msgstr "Condition financière" -#: staffing/optim.py:205 +#: staffing/optim.py:209 msgid "FEASIBLE" msgstr "faisable" -#: staffing/optim.py:206 +#: staffing/optim.py:210 msgid "OPTIMAL" msgstr "optimal" -#: staffing/optim.py:207 +#: staffing/optim.py:211 msgid "planning_score" msgstr "Respect du planning" -#: staffing/optim.py:208 +#: staffing/optim.py:212 msgid "freetime_score" msgstr "Minimisation temps disponible" -#: staffing/optim.py:209 +#: staffing/optim.py:213 msgid "people_per_mission_score" msgstr "Nb de personne / mission" -#: staffing/optim.py:210 +#: staffing/optim.py:214 msgid "mission_per_people_score" msgstr "Nb mission / personne" -#: staffing/optim.py:299 templates/leads/leads_pivotable.html:19 +#: staffing/optim.py:303 templates/leads/leads_pivotable.html:19 #: templates/staffing/missions_report.html:36 #: templates/staffing/turnover_pivotable.html:21 msgid "All" msgstr "Tous" -#: staffing/optim.py:313 templates/staffing/missions.html:7 +#: staffing/optim.py:317 templates/staffing/missions.html:7 #: templates/staffing/missions.html:16 msgid "All missions" msgstr "Toutes les missions" @@ -2408,7 +2395,7 @@ msgstr "" msgid "Consultants" msgstr "Consultants" -#: staffing/utils.py:285 staffing/views.py:988 staffing/views.py:1468 +#: staffing/utils.py:285 staffing/views.py:1018 staffing/views.py:1497 #: templates/billing/pre_billing.html:92 templates/billing/pre_billing.html:100 #: templates/billing/pre_billing.html:159 #: templates/billing/pre_billing.html:167 templates/staffing/pdc_detail.html:19 @@ -2432,7 +2419,11 @@ msgstr "La charge doit être un multiple (%s)" msgid "Charge cannot exceed forecast (%s)" msgstr "La charge ne peut pas excéder la prévision (%s)" -#: staffing/views.py:290 +#: staffing/views.py:202 staffing/views.py:246 +msgid "Duplicate data error" +msgstr "Erreur de donn es en doublon" + +#: staffing/views.py:295 #, python-format msgid "" "Staffing has been ignored for mission %(mission_name)s because " @@ -2442,7 +2433,7 @@ msgstr "" "date prévue %(staffing_date)s est antérieure à la fin de la mission " "(%(start_date)s)" -#: staffing/views.py:297 +#: staffing/views.py:302 #, python-format msgid "" "Staffing has been ignored for mission %(mission_name)s because " @@ -2452,24 +2443,29 @@ msgstr "" "date prévue %(staffing_date)s est postérieure à la fin de la mission " "(%(end_date)s)" -#: staffing/views.py:315 +#: staffing/views.py:320 msgid "Staffing has been updated" msgstr "Les prévisions de charge ont été mises à jour" -#: staffing/views.py:341 +#: staffing/views.py:347 +#, python-format +msgid "Staffing has been shifted by %s month" +msgstr "Les prévisions de charge ont été décalées de %s mois" + +#: staffing/views.py:371 msgid "Only won leads" msgstr "Uniquement les affaires gagnées" -#: staffing/views.py:341 +#: staffing/views.py:371 msgid "Only consider won leads for staffing forecasting" msgstr "" "Ne prend en compte que les missions gagnées pour les prévisions de charge" -#: staffing/views.py:342 +#: staffing/views.py:372 msgid "Balanced staffing projection" msgstr "Projections de staffing pondérées" -#: staffing/views.py:342 +#: staffing/views.py:372 msgid "" "Add missions forcecast staffing even if still not won with a ponderation " "based on the mission won probability" @@ -2477,11 +2473,11 @@ msgstr "" "Ajoute les prévisions de charge des missions même si elles ne sont pas " "gagnées en pondérant avec la probabilité de gagner." -#: staffing/views.py:343 +#: staffing/views.py:373 msgid "Full staffing projection" msgstr "Projections de staffing complètes" -#: staffing/views.py:343 +#: staffing/views.py:373 msgid "" "Add missions forcecast staffing even if still not won without any " "ponderation. All forecast is considered." @@ -2489,31 +2485,31 @@ msgstr "" "Ajoute les prévisions de charge des missions même si elles ne sont pas " "gagnées sans aucun pondération. Toutes les prévisions sont prises en compte." -#: staffing/views.py:346 +#: staffing/views.py:376 msgid "Group by Manager" msgstr "Groupement par manager" -#: staffing/views.py:347 +#: staffing/views.py:377 msgid "Group by Level" msgstr "Groupement par position" -#: staffing/views.py:727 templates/staffing/prod_report.html:119 +#: staffing/views.py:757 templates/staffing/prod_report.html:119 msgid "Prod rate delta" msgstr "Écart de taux de prod." -#: staffing/views.py:728 templates/staffing/prod_report.html:120 +#: staffing/views.py:758 templates/staffing/prod_report.html:120 msgid "Daily rate delta" msgstr "Écart de taux journalier" -#: staffing/views.py:746 +#: staffing/views.py:776 msgid "Missing timesheet" msgstr "Pointages manquants" -#: staffing/views.py:977 staffing/views.py:1326 staffing/views.py:1349 +#: staffing/views.py:1007 staffing/views.py:1355 staffing/views.py:1378 msgid "timesheet.csv" msgstr "feuille-de-temps.csv" -#: staffing/views.py:1288 templates/billing/_lead_billing.html:66 +#: staffing/views.py:1317 templates/billing/_lead_billing.html:66 #: templates/billing/bill.html:179 templates/leads/lead_detail.html:256 #: templates/staffing/mission_timesheet.html:38 #: templates/staffing/mission_timesheet.html:117 @@ -2521,72 +2517,72 @@ msgstr "feuille-de-temps.csv" msgid "Total" msgstr "Total" -#: staffing/views.py:1362 +#: staffing/views.py:1391 msgid "Lead Price (k€)" msgstr "Montant affaire (k€)" -#: staffing/views.py:1362 +#: staffing/views.py:1391 msgid "Mission Price (k€)" msgstr "Montant mission (k€)" -#: staffing/views.py:1363 +#: staffing/views.py:1392 msgid "Past done days" msgstr "Jours réalisés dans le passé" -#: staffing/views.py:1363 templates/billing/bill_review.html:211 +#: staffing/views.py:1392 templates/billing/bill_review.html:211 #: templates/leads/lead_detail.html:229 templates/staffing/mission.html:165 #: templates/staffing/mission_timesheet.html:12 msgid "Done days" msgstr "Jours réalisés" -#: staffing/views.py:1363 templates/staffing/mission_timesheet.html:14 +#: staffing/views.py:1392 templates/staffing/mission_timesheet.html:14 msgid "Days to be done" msgstr "Jours à faire" -#: staffing/views.py:1414 +#: staffing/views.py:1443 msgid "holidays_timesheet.csv" msgstr "feuille-de-temps-congés.csv" -#: staffing/views.py:1468 +#: staffing/views.py:1497 msgid "trigramme" msgstr "trigramme" -#: staffing/views.py:1468 staffing/views.py:1668 +#: staffing/views.py:1497 staffing/views.py:1696 msgid "profil" msgstr "profil" -#: staffing/views.py:1468 +#: staffing/views.py:1497 msgid "start" msgstr "début" -#: staffing/views.py:1468 +#: staffing/views.py:1497 msgid "end" msgstr "fin" -#: staffing/views.py:1559 +#: staffing/views.py:1588 msgid "current" msgstr "actuel" -#: staffing/views.py:1559 +#: staffing/views.py:1588 msgid "next" msgstr "prochain" -#: staffing/views.py:1566 templates/staffing/rate_objective_report.html:41 +#: staffing/views.py:1595 templates/staffing/rate_objective_report.html:41 msgid "horizon" msgstr "horizon" -#: staffing/views.py:1602 staffing/views.py:1617 +#: staffing/views.py:1631 staffing/views.py:1646 msgid "profile" msgstr "profile" -#: staffing/views.py:1605 staffing/views.py:1620 +#: staffing/views.py:1634 staffing/views.py:1649 #: templates/staffing/rates_report.html:47 #: templates/staffing/rates_report.html:53 #: templates/staffing/rates_report.html:61 msgid "period" msgstr "période" -#: staffing/views.py:1669 staffing/views.py:2001 +#: staffing/views.py:1697 staffing/views.py:2040 #: templates/billing/pre_billing.html:92 templates/billing/pre_billing.html:159 #: templates/staffing/missions_report.html:67 #: templates/staffing/missions_report.html:73 @@ -2594,37 +2590,37 @@ msgstr "période" msgid "days" msgstr "jours" -#: staffing/views.py:1696 +#: staffing/views.py:1724 msgid "This lead has no mission defined" msgstr "Cette affaire n'a aucune mission définie" -#: staffing/views.py:1723 +#: staffing/views.py:1751 msgid "You are not allowed to do that" msgstr "Vous n'êtes pas autorisé à faire cela" -#: staffing/views.py:1732 +#: staffing/views.py:1760 #, python-brace-format msgid "daily rate for {consultant}" msgstr "Taux journalier pour {consultant}" -#: staffing/views.py:1735 +#: staffing/views.py:1763 #, python-brace-format msgid "bought daily rate for {consultant}" msgstr "Taux journalier d'achat pour {consultant}" -#: staffing/views.py:1744 +#: staffing/views.py:1772 msgid "Mission or consultant does not exist" msgstr "La mission ou le consultant n'existe pas" -#: staffing/views.py:1878 +#: staffing/views.py:1906 msgid "Predefined assignment must be in consultant list" msgstr "Les affectations prédéfinis doivent être dans la liste des consultants" -#: staffing/views.py:1882 +#: staffing/views.py:1910 msgid "Excluded consultant must be in consultant list" msgstr "Les affectations exclus être dans la liste des consultants" -#: staffing/views.py:1903 +#: staffing/views.py:1931 msgid "" "There's no solution. Add consultants, remove mission, exclusions or relax " "experience ratio constraint" @@ -2632,18 +2628,18 @@ msgstr "" "Aucune solution. Ajoutez des consultants, retirez des missions, des " "exclusions ou relâchez les contraintes de ratio d'expérience." -#: staffing/views.py:1983 templates/staffing/mission.html:104 +#: staffing/views.py:2022 templates/staffing/mission.html:104 #: templates/staffing/turnover_pivotable.html:101 #: templates/staffing/turnover_pivotable.html:118 #: templates/staffing/turnover_pivotable.html:125 msgid "Marketing product" msgstr "Produit marketing" -#: staffing/views.py:1983 staffing/views.py:1984 +#: staffing/views.py:2022 staffing/views.py:2023 msgid "Undefined" msgstr "À définir" -#: staffing/views.py:2000 staffing/views.py:2011 +#: staffing/views.py:2039 staffing/views.py:2050 #: templates/billing/graph_yearly_billing.html:37 #: templates/staffing/turnover_pivotable.html:91 #: templates/staffing/turnover_pivotable.html:97 @@ -2654,23 +2650,23 @@ msgstr "À définir" msgid "turnover (€)" msgstr "Chiffre d'affaire (€)" -#: staffing/views.py:2002 +#: staffing/views.py:2041 msgid "external subcontractor turnover (€)" msgstr "CA sous-traitants externes (€)" -#: staffing/views.py:2003 +#: staffing/views.py:2042 msgid "external subcontractor days" msgstr "jours sous-traitants externes" -#: staffing/views.py:2004 +#: staffing/views.py:2043 msgid "internal subcontractor turnover (€)" msgstr "CA sous-traitants internes (€)" -#: staffing/views.py:2005 +#: staffing/views.py:2044 msgid "internal subcontractor days" msgstr "jours sous-traitants internes" -#: staffing/views.py:2006 staffing/views.py:2021 +#: staffing/views.py:2045 staffing/views.py:2060 #: templates/staffing/turnover_pivotable.html:61 #: templates/staffing/turnover_pivotable.html:67 #: templates/staffing/turnover_pivotable.html:75 @@ -2679,39 +2675,39 @@ msgstr "jours sous-traitants internes" msgid "own turnover (€)" msgstr "Chiffre d'affaire propre (€)" -#: staffing/views.py:2007 +#: staffing/views.py:2046 msgid "own days" msgstr "Jours effectif propre" -#: staffing/views.py:2009 staffing/views.py:2017 +#: staffing/views.py:2048 staffing/views.py:2056 msgid "fiscal year" msgstr "Année fiscale" -#: staffing/views.py:2028 staffing/views.py:2030 +#: staffing/views.py:2067 staffing/views.py:2069 #: templates/staffing/turnover_pivotable.html:87 msgid "top client company" msgstr "top entreprise" -#: staffing/views.py:2030 +#: staffing/views.py:2069 msgid "others" msgstr "autres" -#: staffing/views.py:2069 staffing/views.py:2071 +#: staffing/views.py:2108 staffing/views.py:2110 #: templates/staffing/lunch_tickets_pivotable.html:59 msgid "days off previous month" msgstr "jours de congés du mois précédent" -#: staffing/views.py:2070 staffing/views.py:2071 +#: staffing/views.py:2109 staffing/views.py:2110 #: templates/staffing/lunch_tickets_pivotable.html:65 msgid "days without tickets previous month" msgstr "jours sans ticket restaurant le mois précédent" -#: staffing/views.py:2071 templates/staffing/lunch_tickets_pivotable.html:47 +#: staffing/views.py:2110 templates/staffing/lunch_tickets_pivotable.html:47 #: templates/staffing/lunch_tickets_pivotable.html:53 msgid "deserved tickets" msgstr "tickets mérités" -#: staffing/views.py:2225 +#: staffing/views.py:2264 msgid "Global" msgstr "Global" @@ -3044,6 +3040,10 @@ msgstr "Tableau croisé de contrôle de la facturation client" msgid "Based on timesheet activity and clients bills" msgstr "Calculé à partir des feuilles de temps et des factures" +#: templates/billing/client_billing_control_pivotable.html:19 +msgid "My leads" +msgstr "Mes affaires" + #: templates/billing/client_billing_control_pivotable.html:20 msgid "Balance per month (table)" msgstr "Balance par mois (tableau)" @@ -3762,34 +3762,6 @@ msgstr "" "Mes dernières affaires archivées (gagnées, perdues, abandonnées ou en " "sommeil)" -#: templates/core/pydici.html:34 -msgid "ATOM feed of last modified leads" -msgstr "Flux ATOM des dernières affaires modifiées" - -#: templates/core/pydici.html:36 -msgid "ATOM feed of last created leads" -msgstr "Flux ATOM des dernières affaires créées" - -#: templates/core/pydici.html:38 -msgid "ATOM feed of last won leads" -msgstr "Flux ATOM des dernières affaires gagnées" - -#: templates/core/pydici.html:40 -msgid "ATOM feed of my leads" -msgstr "Flux ATOM des mes affaires" - -#: templates/core/pydici.html:42 -msgid "ATOM feed of latest staffing forecast" -msgstr "Flux ATOM des dernières prévisions de staffing" - -#: templates/core/pydici.html:44 -msgid "ATOM feed of my latest staffing forecast" -msgstr "Flux ATOM de mes dernières prévisions de staffing" - -#: templates/core/pydici.html:46 -msgid "ATOM feed of last archived Mission" -msgstr "Flux ATOM des dernières missions archivées" - #: templates/core/risks.html:13 msgid "Risks synthesis " msgstr "Synthèse des risques " @@ -3927,7 +3899,6 @@ msgid "mobile phone" msgstr "téléphone mobile" #: templates/crm/_contact_list.html:15 templates/crm/contact_detail.html:23 -#: templates/crm/contact_list.html:18 msgid "fax" msgstr "fax" @@ -3981,10 +3952,6 @@ msgstr "Contacts clients" msgid "Rates and margin" msgstr "Taux et marges" -#: templates/crm/clientcompany_detail.html:56 -msgid "leads" -msgstr "affaires" - #: templates/crm/clientcompany_detail.html:63 #: templates/crm/clientcompany_detail.html:86 #: templates/crm/clientcompany_detail.html:109 @@ -3997,6 +3964,7 @@ msgid "consultants involved" msgstr "consultant(s) impliqué(s)" #: templates/crm/clientcompany_detail.html:102 +#: templates/crm/contact_list.html:18 msgid "contacts" msgstr "contacts" @@ -4148,7 +4116,7 @@ msgid "Contacts adressebook" msgstr "Carnet d'adresses" #: templates/crm/graph_company_business_activity.html:29 -#: templates/crm/graph_company_business_activity.html:60 +#: templates/crm/graph_company_business_activity.html:56 msgid "billing (k€)" msgstr "facturé (k€)" @@ -4160,7 +4128,7 @@ msgstr "Affaires perdues ou abandonnées" msgid "Pre-sales leads" msgstr "Affaires en avant-vente" -#: templates/crm/graph_company_business_activity.html:67 +#: templates/crm/graph_company_business_activity.html:63 msgid "number of leads" msgstr "nombre d'affaires" @@ -4786,6 +4754,14 @@ msgid "prod rate (%%)" msgstr "taux de prod. (%%)" #: templates/people/consultants_tasks.html:20 +msgid "category" +msgstr "Catégorie" + +#: templates/people/consultants_tasks.html:21 +msgid "priority" +msgstr "Priorité" + +#: templates/people/consultants_tasks.html:22 msgid "task name" msgstr "nom de la tâche" @@ -5170,6 +5146,14 @@ msgstr "" msgid "Optimize workload for this mission" msgstr "Optimiser le plan de charge de cette mission" +#: templates/staffing/mission_staffing.html:82 +msgid "Mass staffing for this mission" +msgstr "Prévisions en masse" + +#: templates/staffing/mission_staffing.html:85 +msgid "Shift staffing one month" +msgstr "Décaler les prévisions d'un mois" + #: templates/staffing/mission_timesheet.html:16 msgid "Total estimated" msgstr "Total estimé" @@ -5484,6 +5468,62 @@ msgstr "Proportion de sous traitance par produit" msgid "Sum ratio" msgstr "Ratio de sommes" +#~ msgid "Latest leads" +#~ msgstr "Dernières affaires" + +#~ msgid "Last modified or created leads" +#~ msgstr "Dernières affaires modifiées ou créées" + +#~ msgid "New leads" +#~ msgstr "Nouvelles affaires" + +#~ msgid "Last new lead created" +#~ msgstr "Dernières affaires créées" + +#~ msgid "Last won leads" +#~ msgstr "Dernières affaires gagnées" + +#~ msgid "Last active leads that I am responsible or resource" +#~ msgstr "" +#~ "Les dernières affaires actives dont je suis responsable ou ressource " +#~ "pressentie" + +#~ msgid "Latest staffing update" +#~ msgstr "Dernières mises à jour de staffing" + +#~ msgid "Last consultant forecast staffing updated or created" +#~ msgstr "" +#~ "Dernières mise à jour ou création de staffing prévisionnel pour un " +#~ "consultant" + +#~ msgid "My lastest staffing update" +#~ msgstr "Mes dernières mise à jour de staffing" + +#~ msgid "Last forecast staffing updated or created about myself" +#~ msgstr "" +#~ "Dernières mise à jour ou création de staffing prévisionnel me concernant" + +#~ msgid "ATOM feed of last modified leads" +#~ msgstr "Flux ATOM des dernières affaires modifiées" + +#~ msgid "ATOM feed of last created leads" +#~ msgstr "Flux ATOM des dernières affaires créées" + +#~ msgid "ATOM feed of last won leads" +#~ msgstr "Flux ATOM des dernières affaires gagnées" + +#~ msgid "ATOM feed of my leads" +#~ msgstr "Flux ATOM des mes affaires" + +#~ msgid "ATOM feed of latest staffing forecast" +#~ msgstr "Flux ATOM des dernières prévisions de staffing" + +#~ msgid "ATOM feed of my latest staffing forecast" +#~ msgstr "Flux ATOM de mes dernières prévisions de staffing" + +#~ msgid "ATOM feed of last archived Mission" +#~ msgstr "Flux ATOM des dernières missions archivées" + #~ msgid "year" #~ msgstr "année" @@ -5764,9 +5804,6 @@ msgstr "Ratio de sommes" #~ msgid "Bought daily rate changed from %s to %s" #~ msgstr "Le taux journalier d'achat doit être défini pour les sous-traitants" -#~ msgid "expense" -#~ msgstr "note de frais" - #~ msgid "chargeable" #~ msgstr "refacturable" @@ -6233,9 +6270,6 @@ msgstr "Ratio de sommes" #~ msgid "See also the forecast staffing of this mission" #~ msgstr "Voir aussi la charge prévisionnelle de cette mission" -#~ msgid "Forecast staffing of this mission" -#~ msgstr "Charge prévisionnelle de cette mission" - #, fuzzy #~ msgid "You're not allowed to do that" #~ msgstr "Vous n'êtes pas autorisé à faire cela"