From 432de41ee2d31947e3efc224bfe89054e017ec74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20=C3=89vrard?= Date: Tue, 20 Jan 2015 18:49:56 +0100 Subject: [PATCH] Report API refactorization review8831002 --- customer_return_restocking_list.odt | Bin 10533 -> 11379 bytes delivery_note.odt | Bin 10629 -> 11449 bytes internal_shipment.odt | Bin 10476 -> 11319 bytes picking_list.odt | Bin 10458 -> 11297 bytes shipment.py | 225 ++++++---------------------- supplier_restocking_list.odt | Bin 10476 -> 11312 bytes tests/scenario_stock_reporting.rst | 188 +++++++++++++++++++++++ tests/test_stock.py | 3 + 8 files changed, 240 insertions(+), 176 deletions(-) create mode 100644 tests/scenario_stock_reporting.rst diff --git a/customer_return_restocking_list.odt b/customer_return_restocking_list.odt index d9a9ff4e5969103c1181aee25e994c71c3bbccd3..c9429d0d04b36b0911d666a654d710215d63d6d1 100644 GIT binary patch literal 11379 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 diff --git a/delivery_note.odt b/delivery_note.odt index 0e83fb359c1544abe81372b0cd605142994bc6ca..ebe4b93ba49fba6d30b7de54d213d1285192cd07 100644 GIT binary patch literal 11449 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 I`fcq02PNux^Z)<= literal 10629 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 Wypk*w^wVi*kH3;f&(%x*wD&*T?cuBd diff --git a/internal_shipment.odt b/internal_shipment.odt index 8eabf98ae1264b785cc6d1083ebff2aad21a2802..082496558a6f9edad947255b5a2957c1e0477ef1 100644 GIT binary patch literal 11319 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 diff --git a/picking_list.odt b/picking_list.odt index 6edecd13fe5a489457fc9ed87c9bc15f80d51a7f..aceef037725f82d8ce15f26b28523dfb553a8116 100644 GIT binary patch literal 11297 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 BTxb9Q literal 10458 zcmeHtWmFv7wk`oWxH}}c1$PVX3GPmC0yK>@8X(X>a0u>!Ai-UNLvVt-ySqC9F6{eq zlC$sL`JL=v6i9`)bvyRkP+d*Hn~&fyIV`f`@{FcyWp8cd#MTKtVx0ZV!i` ztSzif9b9cq4Q*|K7RH7S7B(PeCy)t~jUm_q%w%J03No=VcC?!|SNTOoU^I#0)Rw?7-qiXxe_ zQ!9sOok^z@Zc0Fy#ooQy!daO2G)M^+=M;eukOb8STsWLp7I4#h^|}W3>{9bx0FsB0 zTFUhU^RPi>n~Xkw&rkhh7WmBd*# zMgXw6)Dww>4Xsgy2UC5YOLWXqNL&r=;mPYm?ULp9b(qYt75qq#3uuthM1pSdZBlS2zaI z6DN~_Oi5qn_*To#aKG8(anc+#cs89xr8rZSAV~I~hv`c>_-DkwbjCaD*}0apUg%xQ zx?vfq`TDWq2J`Y=gw^HlHTd?LXJvsbp7}V=V?5_gwC=SFqzB_N+I&!pg%vL5h(%)c zn=d%q6nV}4R9t6SxtZcx(Zr*pns4%lMOXTW@MQ_Kr;z5=tJr$6!|Ei8kh#3O4=nv%?J_gx|($@2JI}ufOuuNQ< zW+>q76sRr zh1ik>M&PqV70H}zt*?U?ihc?7KKbbt4nB4!~f;5B)bq9EqU0?Y!O zVTsui%e(C-nYL=*+E{Q?!ltCCws|Otpu9MUTq78Q?%?=m%I-NsPNy+V`Ga$FrzCfF zw^LB?_fbt)Zi7WDO=*I&*`V2PAwcWA7D1%~!YA3Q9vQ?XQtzrYkD`SV#l6C8ub{%M z+39mvX{D8JeZnE1Gt$7NPQ+PXDx=$9AZx*v(X&4D39}XtA@s={BkVOB&DRupH4KOs zkR=VNjtMgunFsPEAy8Y4KLLd*b*%ceq9soU;P0*P1ijT@nTK2VR8$C?1xWjV*)yn1 zvQ>P%m!`cjZ=)%pjwhq5kLUW~S$8P*T#5$zi;D!~*kyxmIpxZeA)QXtcH+spWQsHu z`oN~lAFtM~);WkFEqhbaxqY;*85tH7XeIr%WLs{IQ>d^}J3gjNUD>z1eM`zUKFLub zAH-4c>j|-SWX@*^uaoNb`v9*upDJ67&}8vXVR7B$r;rX$SVxNklMv12&M;ysbL|pj zLN53|=S>4GbsZR%^vkG9%L(CE#=_DG6j#lj#c>5WU>|X&X(WCf3R1L>Dt(=3n8}X9 zv7Tvxn@4jEDNE~3Z4Y|pdWb}c33Cf~^=#x@8TVzvT^KL=^RVuYD;k11)BFrNRin1d zZ7BiqFW{-|Pp1)A6nrw+?!}uLs=7@HZ9lwfyORzQ5wiL$%6f8zDU(QfCk$I)^c%3E z4i|Xjr$Cn09Kk4A1IXpQ8~DasG5+6*`Z#^fKYA&faa!ll|KKvmCbqY7cf!9g0$CMA z3f=Z3fT{Q@GkawMY+y%?2&(I}Wy*P#QOv~O8msUJ=vERf*0fN>Al?OMN}0wLN2L_Y zUgO*es?Xd|ye`~i=5zLhdGzP9JIk=K04S(cihuIwNDuzp*aqbA7$`ir^F19an;9P5 zTfrt#TZmC@4uepn?Cv;$2`2VSVMLRp-d$)P5n-9=-dJ+A$eJ#LRH14KnN(yKnHX!V*czIvw^k7+gA7`q?pKLC0_y^hZ_hNM zP;OSYwvz~6Xwm@iVILwq^01F9&6w|BpL-mY3F?BJ@rVSeD)K9}G=^$peThulkjox9 zuUJ?oKd$v@{>I(_FlY*wQ5FeRU37~#5=c0$-7AXg>CjBex~u>aV9Knp;)dpmATqkD z2}*`iEVJgNb)=FG@ol^=R_13aKdY0%Xxn7nQF8D10ifkHy()Vgb;;T%F8bLGHrZVMPbnwNevx~i#dL= zP#A&9Q}k=Gnh^EP{kWCq!&O~xzqxWG!|`;m~HjMV2lN7ER@OxEj^m1HS*lZ4);i< ze96J&n6w~F^Skn!?ndpkkQ?Tdeel^d>=<`aZUyy)Hr^F9FiPW{gcv+hDG@nI-IMd& z`pdUS7DKy}=Amw*wJOrHeao!=@R0NbnRefPT)u|0)>(Ag{SKM_=ZEO$>LKU2RJ!kT zUQdt5mb28V+fwujL(zR$WHmy_s1ke(kGJ#m$HSBXN9h3viFQHuZw2u()X=6F*L%We)aWMI z6hP2a&ygfbdVRAg2i@xSr#=hdw|Vidmds&c7&5h!MPK$CWsnY;)TkYqjBZyA)CKn$ z7e&v*5?I`{KxhLEo|ixm4=R>fMg{Km#7MUIC1kPYPg)Yi$@NdO_bBvFZ`@Yf#(o>s z!`@7BmcO~5Cfph;Cl#3UIxQ#{7~b)r*h877@u`%qyDe`%muA-JtllwxoiCi0i;U%M zAM(Q{Vlas<)UTCjj%eXWLb#lw!2kl^UNf^6{>K{lk}j;YIbOMF3SKJ6NtW?lx3ZQQ zOTTT+RAvYD9J!ME_cgzm!zg?Sm;U+JQB|Sd8cXMDa*ext#>eGPWh?Ehy?}a&?-lEc zKep`484V1yn%?8PxVYZmpZiREoIPwF*iIxOjj7LI(2CJ7gmUI4qzo_UJ8t)e^|?f# zC7`LI>R|{^$5LHw3&&~t&y+j`foaN1QmMe&DJurEcCzUSRXWUmU4+@@aFr7CQACUw z7o=GkqG;;s&iq79nTJCth=u(wM(ma$&J5wWks(BI{?gi?F(apm!V+(A`j_(@)#}P5+cy;-vC-kUD zAhed$3mPE~jg`%f6EvwHzOvrg+9vplzbh!@HgALd9OVYp-r7^tNLP12+eoe373l-* zL1tGc7Q8h>vZYVH8A3nI1*00tH%C;-JCoCMx9%}GUb4W(J6m}0iZe1X zRYE4Xgo0+r;o54dJ8qWl8Zu?hL7pDQ2n3^^TSX40BGN`bd3lTg>(NO_QgX;wwDLll zZ=#cLwR5XMUN-=L&9_ZxL_||odK~7NRU{P8oXUNhjYyxl9YuL?k!~I4?9LvrQ=%e# zN{#b^K9C=xwYOj3#itv^h%Z65#|ZZ}D2eyR#qVqVL>pAGetA zMrNsIqtka?{gCu*3=*z;09h4!VHA`zrA<4pjP5#sX+y&~l?hIoGMWB9sJ6l3X0vL1 z7jQ9Z$QHwR z=tkq^EJYv1rw_@2r@TMIho7m4n@{@hY#&78iz`3;S3*HOfr5vAXuT8p90COe z%l%4RMAapEZ=$J3&GFecI~a_USA!B?I!O!=B{9gADT7dgA~-ZXMbN`)_^3b_qwJX| z7?j!ps1jm4u*-_Dmei~9hT+$t18N>@g* zoA?CpTsrLsXg%CrSG#1&%^C!q_r>(@ciMwBY-U}+L+R!uthxTBhTkLK^rw;#Z{3>q z5Z~BJx*F1N4BVe=k1Z|cXGksR)Sk|)bT$b(0XO_m2ILaT*1kc|G>Ydv*Lz7cis~y} zj!s6hJ)I60tyWg5Knp1j7gdc$^Yv54#;xlIam=2L?{7b5E1=y7rM~2zJsX)S7fR+k z8%pGyL3^&vXWpN8b>gqmdI(@Qa|iEE((H_*n4{@cA0E$fc-A>s+%C5-r1JA3|JYgY zi*aUNFD3f&5wFUosob=OU8idP&B9!rbHGaTCw-yGssoaXg~`&Dl}alT{+F`E<7;o+ zkG5(ZZ4Tx=JU!>z+DaPB%?C>Qrz)*9Np3V+Gl#CLFW6ElV(z`~nXx?-Peq2{BuM^$ zXn4Nc#)`q_dh4CfQGI%jt-2*hQ@DAjZF+pXcvtQ4B!_{3=9mR*&Y&JaPafS{IHl0 ze2?2db6FdLEX+*74ovnYW_?k8ARiWV-vj;+ru~z`%m9ErZFh}j>Nie5O#t(8BIbN! zSd_X_X5Mz{=t_|!`$AYn(w^b7uHdqqW>pU37gXKSZ!5Rx`RbTzzRd7VPkyB*Nql}} z>GLI(uGSeu$NMJs10y#waG*S$)+OZq9#@RID8csZ-)U7`9mL=pTqa_gYo!~ej4FJL(B$bW?}AV z|3}su%*JeMW9w-9kg9fM{_kP`E8OFg{xi1xq5VJLp8Z8%)+TXuck5K~H z!4+uwM^<@{$m-(^*YV9QqL{=%5`&OaR3&qr#Eh6708@7exNjvQQ&H%L35e95xjOqq zCJ`7(rKSH8a$w6i*pdwAf3n;gaI^34(IUyL+7+Muao&OdNRk7^6+1gg>R{xA`OfE} zb!1`w=!_3_i*4C3Wl;4>`8j?J1*!bnFce9HZl;X92}9hAS2?=wcXs460^AoljWtk_>7!8K6-Z0jM(d40y7}5{AMA?R_RJ&lO;TlN2TVy8Ww* zq%Beka_|cX)4L+n)_TlJr0Rius#u^v{9Pi#8qmBe$87yc*B7~fX{X6mvP&r8+f=jz z`Zws`2OH39R5Rha- zPcr2!ytq-ITCp6JnMs)ev@2nSHfKLj%&)Rng6f zg>xVoH_WVa9vfq9=1os9tVho|^iXt;7qb=O~POyEwN8ix;?z7Vw!D3{6 zkL5(IoQ$+Dnnu0(;pW9c0%kOcBAQlFmDo2fY zndh+3chBSZANY7QqF!uvziY33kyp5jp%;~m^X2QBZdWx1MARW1)Yy3`6t`u^u%eV+_Au-*k} zex)(6P{Ns#nrcb>h=Cx1|1^4nL{EP68J>58yzVPc(QQv9Ox~>wmA9I-8}HxWKvejB zf)A0AJbS4<3tSvFU%G3Y%LaIjKJ|leICH0L-85+H+kLUsXCYEBS3^Y-A^Y}{rogo{ z)^FTVByR`0#c7pPfvN_TJ)Sr_qHSK4)jisO+tJ+rc7GZ_I%2*jy_?c`qgpsAVKJ-= zpO?q)S}n-3OHJ>O;_@R-u|0v=x?&{*1$Qu7V?TlS&bRvZ*GWkmbf zwZcH=01tsnZet5Q#~wa$4LK)EfvxkHu%Pw=G5|Jc@T;)-c>XP+qE&&H6GqiIJgO@K zGd?ocLGfU~Zt>e$&66F@{TNw0oC7A1P)L!5+crImzBU)W*BsDVS9PsTakLZ-fq6eaA`3VG*2_-Dc_4F*G` zBJD>_^if`l-N+iQE}Cfa4&|dc-e}h@EPRG(9rpoCyIy&Xv7>V+Aiu^yVwH`nwa33| zrQO4EC|^ucCKW+mSz%%RBc7ZkgwLsB8~!B7PDg-(IWg{Z4TZ2{so*{+aqbYuaYE(A zCp@{nyG_+whxxwo{st|5J!VbMCEZ&g&3il_$9a;1llxc$4?R_VTt~d|s4(2a`_j8f zd!sVeJY&6FAtB=~NI%!rytO@n9{n?SM%=S?4SXMtbuth3$nS$!@lMDYfrL2fn(t9G zQPuorRyk{}Lr5%NF>TK8b4!ZW0*ZP23w@wPJS*FcyM0;K{VAi`woT4=#waPOfyl>c#k+b&#WH zl2JpATF+^j$eIPP-!h1AaOe{zg%%!F3;rkRA+z9&WGGd-=gvHWuToZ6) z>avunD~v%*KVWTWW-a#$T>8UhLX-Pe9$dNUWG2r&eACwN8P8- zzC)5ut!X(Mh1xN&LAl2w@d6VUI+9`rHvp;HlAleZu5xE=WROxEj|tN~5%~i2&%2Y=m@-Eg5+0&?^GP&ouvF6Rk`q?J@rHWt<7n5)?H#8n8VNO4D2(<~ZS$GO6 z5c+6xqukEffA<1*oT@!8V>ib`*hruvr{j_V7tW(gmyiW6nPsJcD&V%)?){BPK@tMC z*m%!w&-7DEVA2W!IU^3f4=NnHxT$@JC)%c`E>@~!H^=Mnsn_6-Ea1=@XCB8ujqM5U z@;m6q@eXehJ!E`PS80D#XFP$%hWh*3pvOr2m;J01Qk3~`)X$*)_j-@VBA{O;_t1Q( zF8ZS+=+CI%R}~*?L4KM0Ly-S_WyqhAzb6zQR~>(u?8D`af2~3O1pbtPf6h1l0tTc1 zefIGu%g@{WUETkC$5|g{>F?QrKO=t^w*QXwctHMZRzKtdej zpDOBi8T{`L_!kZe>W`GizYd)K1<(JG#eYxs@10`B`=6cqT_*phJQjb!^Sf;Rd!9$( z{L9k*g6H35^xrc*O5$HO^A}9NWc7c_g7HB5XX*P(X8)%wQh&knOLqS^%g;&scn3eV z^P}+oWgdUQ@;5U4=dAom`n&6Xl-<8<^nvu32>&zgcNg^N*ne3b`QNyCMH#@;$I~z$ Oet8d`i;(hh@4o<=tb-Z= diff --git a/shipment.py b/shipment.py index bd267e8da9..8f69f1f31f 100644 --- a/shipment.py +++ b/shipment.py @@ -2,6 +2,7 @@ # this repository contains the full copyright notices and license terms. import operator import itertools +import functools import datetime from sql import Table from sql.functions import Overlay, Position @@ -2106,11 +2107,11 @@ class DeliveryNote(CompanyReport): __name__ = 'stock.shipment.out.delivery_note' @classmethod - def parse(cls, report, objects, data, localcontext): - localcontext['product_name'] = lambda product_id, language: \ + def get_context(cls, records, data): + report_context = super(DeliveryNote, cls).get_context(records, data) + report_context['product_name'] = lambda product_id, language: \ cls.product_name(product_id, language) - return super(DeliveryNote, cls).parse(report, objects, data, - localcontext) + return report_context @classmethod def product_name(cls, product_id, language): @@ -2119,189 +2120,61 @@ class DeliveryNote(CompanyReport): return Product(product_id).rec_name -class PickingList(CompanyReport): +class ShipmentReport(CompanyReport): + move_attribute = 'inventory_moves' + + @classmethod + def get_context(cls, records, data): + report_context = super(ShipmentReport, cls).get_context(records, data) + + compare_context = cls.get_compare_context(records, data) + sorted_moves = {} + for shipment in records: + sorted_moves[shipment.id] = sorted( + getattr(shipment, cls.move_attribute), + key=functools.partial(cls.get_compare_key, compare_context)) + report_context['moves'] = sorted_moves + + return report_context + + @classmethod + def get_compare_context(cls, objects, data): + from_location_ids = set() + to_location_ids = set() + for obj in objects: + for move in getattr(obj, cls.move_attribute): + from_location_ids.add(move.from_location.id) + to_location_ids.add(move.to_location.id) + + return { + 'from_location_ids': list(from_location_ids), + 'to_location_ids': list(to_location_ids), + } + + @staticmethod + def get_compare_key(compare_context, move): + from_location_ids = compare_context['from_location_ids'] + to_location_ids = compare_context['to_location_ids'] + return [from_location_ids.index(move.from_location.id), + to_location_ids.index(move.to_location.id)] + + +class PickingList(ShipmentReport): 'Picking List' __name__ = 'stock.shipment.out.picking_list' - @classmethod - def parse(cls, report, objects, data, localcontext): - compare_context = cls.get_compare_context(report, objects, data) - sorted_moves = {} - for shipment in objects: - sorted_moves[shipment.id] = sorted( - shipment.inventory_moves, - lambda x, y: cmp(cls.get_compare_key(x, compare_context), - cls.get_compare_key(y, compare_context)) - ) - - localcontext['moves'] = sorted_moves - - return super(PickingList, cls).parse(report, objects, data, - localcontext) - - @staticmethod - def get_compare_context(report, objects, data): - Location = Pool().get('stock.location') - from_location_ids = set() - to_location_ids = set() - for obj in objects: - for move in obj.inventory_moves: - from_location_ids.add(move.from_location.id) - to_location_ids.add(move.to_location.id) - - from_locations = Location.browse(list(from_location_ids)) - to_locations = Location.browse(list(to_location_ids)) - - return { - 'from_location_ids': [l.id for l in from_locations], - 'to_location_ids': [l.id for l in to_locations], - } - - @staticmethod - def get_compare_key(move, compare_context): - from_location_ids = compare_context['from_location_ids'] - to_location_ids = compare_context['to_location_ids'] - return [from_location_ids.index(move.from_location.id), - to_location_ids.index(move.to_location.id)] - - -class SupplierRestockingList(CompanyReport): +class SupplierRestockingList(ShipmentReport): 'Supplier Restocking List' __name__ = 'stock.shipment.in.restocking_list' - @classmethod - def parse(cls, report, objects, data, localcontext): - compare_context = cls.get_compare_context(report, objects, data) - sorted_moves = {} - for shipment in objects: - sorted_moves[shipment.id] = sorted( - shipment.inventory_moves, - lambda x, y: cmp(cls.get_compare_key(x, compare_context), - cls.get_compare_key(y, compare_context)) - ) - - localcontext['moves'] = sorted_moves - - return super(SupplierRestockingList, cls).parse(report, objects, - data, localcontext) - - @staticmethod - def get_compare_context(report, objects, data): - Location = Pool().get('stock.location') - from_location_ids = set() - to_location_ids = set() - for obj in objects: - for move in obj.inventory_moves: - from_location_ids.add(move.from_location.id) - to_location_ids.add(move.to_location.id) - - from_locations = Location.browse(list(from_location_ids)) - to_locations = Location.browse(list(to_location_ids)) - - return { - 'from_location_ids': [l.id for l in from_locations], - 'to_location_ids': [l.id for l in to_locations], - } - - @staticmethod - def get_compare_key(move, compare_context): - from_location_ids = compare_context['from_location_ids'] - to_location_ids = compare_context['to_location_ids'] - return [from_location_ids.index(move.from_location.id), - to_location_ids.index(move.to_location.id)] - - -class CustomerReturnRestockingList(CompanyReport): +class CustomerReturnRestockingList(ShipmentReport): 'Customer Return Restocking List' __name__ = 'stock.shipment.out.return.restocking_list' - @classmethod - def parse(cls, report, objects, data, localcontext): - compare_context = cls.get_compare_context(report, objects, data) - sorted_moves = {} - for shipment in objects: - sorted_moves[shipment.id] = sorted( - shipment.inventory_moves, - lambda x, y: cmp(cls.get_compare_key(x, compare_context), - cls.get_compare_key(y, compare_context)) - ) - - localcontext['moves'] = sorted_moves - - return super(CustomerReturnRestockingList, cls).parse(report, - objects, data, localcontext) - - @staticmethod - def get_compare_context(report, objects, data): - Location = Pool().get('stock.location') - from_location_ids = set() - to_location_ids = set() - for obj in objects: - for move in obj.inventory_moves: - from_location_ids.add(move.from_location.id) - to_location_ids.add(move.to_location.id) - - from_locations = Location.browse(list(from_location_ids)) - to_locations = Location.browse(list(to_location_ids)) - - return { - 'from_location_ids': [l.id for l in from_locations], - 'to_location_ids': [l.id for l in to_locations], - } - - @staticmethod - def get_compare_key(move, compare_context): - from_location_ids = compare_context['from_location_ids'] - to_location_ids = compare_context['to_location_ids'] - return [from_location_ids.index(move.from_location.id), - to_location_ids.index(move.to_location.id)] - - -class InteralShipmentReport(CompanyReport): +class InteralShipmentReport(ShipmentReport): 'Interal Shipment Report' __name__ = 'stock.shipment.internal.report' - - @classmethod - def parse(cls, report, objects, data, localcontext=None): - compare_context = cls.get_compare_context(report, objects, data) - - sorted_moves = {} - for shipment in objects: - sorted_moves[shipment.id] = sorted( - shipment.moves, - lambda x, y: cmp(cls.get_compare_key(x, compare_context), - cls.get_compare_key(y, compare_context)) - ) - - localcontext['moves'] = sorted_moves - - return super(InteralShipmentReport, cls).parse(report, objects, - data, localcontext) - - @staticmethod - def get_compare_context(report, objects, data): - Location = Pool().get('stock.location') - from_location_ids = set() - to_location_ids = set() - for obj in objects: - for move in obj.moves: - from_location_ids.add(move.from_location.id) - to_location_ids.add(move.to_location.id) - - from_locations = Location.browse(list(from_location_ids)) - to_locations = Location.browse(list(to_location_ids)) - - return { - 'from_location_ids': [l.id for l in from_locations], - 'to_location_ids': [l.id for l in to_locations], - } - - @staticmethod - def get_compare_key(move, compare_context): - from_location_ids = compare_context['from_location_ids'] - to_location_ids = compare_context['to_location_ids'] - return [from_location_ids.index(move.from_location.id), - to_location_ids.index(move.to_location.id)] + move_attribute = 'moves' diff --git a/supplier_restocking_list.odt b/supplier_restocking_list.odt index cfa779b73ae5f0690f4d745afee5248de05e3c64..4f7ac4400c3eeb1450617b71ee4547c27dcd0fb2 100644 GIT binary patch literal 11312 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 diff --git a/tests/scenario_stock_reporting.rst b/tests/scenario_stock_reporting.rst new file mode 100644 index 0000000000..9c980e1b8c --- /dev/null +++ b/tests/scenario_stock_reporting.rst @@ -0,0 +1,188 @@ +================================= +Stock Shipment Reporting Scenario +================================= + +Imports:: + + >>> import datetime + >>> from dateutil.relativedelta import relativedelta + >>> from decimal import Decimal + >>> from proteus import config, Model, Wizard, Report + >>> from trytond.modules.company.tests.tools import create_company, \ + ... get_company + >>> today = datetime.date.today() + >>> yesterday = today - relativedelta(days=1) + +Create database:: + + >>> config = config.set_trytond() + >>> config.pool.test = True + +Install stock Module:: + + >>> Module = Model.get('ir.module.module') + >>> module, = Module.find([('name', '=', 'stock')]) + >>> module.click('install') + >>> Wizard('ir.module.module.install_upgrade').execute('upgrade') + +Create company:: + + >>> _ = create_company() + >>> company = get_company() + +Reload the context:: + + >>> User = Model.get('res.user') + >>> config._context = User.get_preferences(True, config.context) + +Create customer & supplier:: + + >>> Party = Model.get('party.party') + >>> customer = Party(name='Customer') + >>> customer.save() + >>> supplier = Party(name='Supplier') + >>> supplier.save() + +Create category:: + + >>> ProductCategory = Model.get('product.category') + >>> category = ProductCategory(name='Category') + >>> category.save() + +Create product:: + + >>> ProductUom = Model.get('product.uom') + >>> ProductTemplate = Model.get('product.template') + >>> Product = Model.get('product.product') + >>> unit, = ProductUom.find([('name', '=', 'Unit')]) + >>> product = Product() + >>> template = ProductTemplate() + >>> template.name = 'Product' + >>> template.category = category + >>> template.default_uom = unit + >>> template.type = 'goods' + >>> template.list_price = Decimal('20') + >>> template.cost_price = Decimal('8') + >>> template.save() + >>> product.template = template + >>> product.save() + +Get stock locations:: + + >>> Location = Model.get('stock.location') + >>> warehouse_loc, = Location.find([('code', '=', 'WH')]) + >>> supplier_loc, = Location.find([('code', '=', 'SUP')]) + >>> customer_loc, = Location.find([('code', '=', 'CUS')]) + >>> input_loc, = Location.find([('code', '=', 'IN')]) + >>> output_loc, = Location.find([('code', '=', 'OUT')]) + >>> storage_loc, = Location.find([('code', '=', 'STO')]) + >>> lost_loc, = Location.find([('type', '=', 'lost_found')]) + +Create Shipment In:: + + >>> ShipmentIn = Model.get('stock.shipment.in') + >>> shipment_in = ShipmentIn() + >>> shipment_in.planned_date = today + >>> shipment_in.supplier = supplier + >>> shipment_in.warehouse = warehouse_loc + >>> shipment_in.company = company + +Receive a bunch of products:: + + >>> move = shipment_in.incoming_moves.new() + >>> move.product = product + >>> move.uom = unit + >>> move.quantity = 100 + >>> move.from_location = supplier_loc + >>> move.to_location = input_loc + >>> move.company = company + >>> move.unit_price = Decimal('1') + >>> move.currency = company.currency + >>> shipment_in.save() + >>> shipment_in.click('receive') + >>> shipment_in.click('done') + +Testing the report:: + + >>> supplier_restocking_list = Report('stock.shipment.in.restocking_list') + >>> ext, _, _, name = supplier_restocking_list.execute([shipment_in], {}) + >>> ext + u'odt' + >>> name + u'Restocking List' + +Create Shipment Out:: + + >>> ShipmentOut = Model.get('stock.shipment.out') + >>> shipment_out = ShipmentOut() + >>> shipment_out.planned_date = today + >>> shipment_out.customer = customer + >>> shipment_out.warehouse = warehouse_loc + >>> shipment_out.company = company + +Add two shipment lines of same product and go through the workflow:: + + >>> move = shipment_out.outgoing_moves.new() + >>> move.product = product + >>> move.uom = unit + >>> move.quantity = 1 + >>> move.from_location = output_loc + >>> move.to_location = customer_loc + >>> move.company = company + >>> move.unit_price = Decimal('1') + >>> move.currency = company.currency + >>> shipment_out.save() + >>> shipment_out.click('wait') + >>> shipment_out.click('assign_try') + True + >>> shipment_out.click('pack') + >>> shipment_out.click('done') + +Testing the reports:: + + >>> delivery_note = Report('stock.shipment.out.delivery_note') + >>> ext, _, _, name = delivery_note.execute([shipment_out], {}) + >>> ext + u'odt' + >>> name + u'Delivery Note' + + >>> picking_list = Report('stock.shipment.out.picking_list') + >>> ext, _, _, name = picking_list.execute([shipment_out], {}) + >>> ext + u'odt' + >>> name + u'Picking List' + +Create an internal shipment:: + + >>> ShipmentInternal = Model.get('stock.shipment.internal') + >>> shipment_internal = ShipmentInternal() + >>> shipment_internal.planned_date = today + >>> shipment_internal.company = company + >>> shipment_internal.from_location = storage_loc + >>> shipment_internal.to_location = lost_loc + >>> move = shipment_internal.moves.new() + >>> move.product = product + >>> move.uom = unit + >>> move.quantity = 1 + >>> move.from_location = storage_loc + >>> move.to_location = lost_loc + >>> move.company = company + >>> move.unit_price = Decimal('1') + >>> move.currency = company.currency + >>> shipment_internal.save() + >>> shipment_internal.click('wait') + >>> shipment_internal.click('assign_try') + True + >>> shipment_internal.click('done') + +Testing the report:: + + >>> internal_report = Report('stock.shipment.internal.report') + >>> ext, _, _, name = internal_report.execute([shipment_internal], {}) + >>> ext + u'odt' + >>> name + u'Internal Shipment' + diff --git a/tests/test_stock.py b/tests/test_stock.py index 37995996dd..7a5c1394ef 100644 --- a/tests/test_stock.py +++ b/tests/test_stock.py @@ -686,4 +686,7 @@ def suite(): suite.addTests(doctest.DocFileSuite('scenario_stock_shipment_internal.rst', setUp=doctest_setup, tearDown=doctest_teardown, encoding='utf-8', optionflags=doctest.REPORT_ONLY_FIRST_FAILURE)) + suite.addTests(doctest.DocFileSuite('scenario_stock_reporting.rst', + setUp=doctest_setup, tearDown=doctest_teardown, encoding='utf-8', + optionflags=doctest.REPORT_ONLY_FIRST_FAILURE)) return suite