From 3e75aba503c3d4d5d0b2aaf0372a26e338d337b8 Mon Sep 17 00:00:00 2001 From: Oscar Date: Wed, 24 Nov 2021 22:52:03 -0500 Subject: [PATCH] Improvements --- booking.py | 35 ++++++++------ booking.xml | 2 +- channel.py | 6 ++- folio.fodt | Bin 21061 -> 22786 bytes folio.py | 6 +-- housekeeping.xml | 2 +- message.xml | 3 ++ party.py | 90 ++++++++---------------------------- service.xml | 2 +- view/booking_folio_form.xml | 4 +- view/booking_form.xml | 17 ++++--- view/create_guest_form.xml | 8 ++-- view/view_select_rooms.xml | 2 + 13 files changed, 67 insertions(+), 110 deletions(-) diff --git a/booking.py b/booking.py index c2bc46b..740ed05 100644 --- a/booking.py +++ b/booking.py @@ -150,7 +150,7 @@ class Booking(Workflow, ModelSQL, ModelView): 'invisible': Eval('state').in_(['finished', 'cancelled', 'not_show']), }, 'create_guest': { - 'invisible': Eval('state') != 'offer', + 'invisible': Eval('party'), }, 'cancel': { 'invisible': Eval('state').in_( @@ -379,9 +379,11 @@ class Booking(Workflow, ModelSQL, ModelView): else: party = fo.main_guest - booking = fo.booking + if not party: + raise UserError(gettext('hotel.msg_customer_is_required')) + bk = fo.booking # FIXME: Add agent - agent_id = booking.party_seller.party.id if booking.party_seller else None + agent_id = bk.party_seller.agent.id if bk.party_seller else None if party.id not in res.keys(): # Add room product to sale reference = '' @@ -393,23 +395,23 @@ class Booking(Workflow, ModelSQL, ModelView): ) res[party.id] = { 'party': party, - 'currency': booking.currency.id, + 'currency': bk.currency.id, 'payment_term': None, 'guests_qty': len(fo.guests) + 1, 'reference': reference, - # 'agent': agent_id, + 'agent': agent_id, 'rooms': fo.room.name, - 'company': booking.company.id, - 'price_list': booking.price_list.id if booking.price_list else None, + 'company': bk.company.id, + 'price_list': bk.price_list.id if bk.price_list else None, 'add_default_charges': False, - 'vouchers': booking.vouchers, + 'vouchers': bk.vouchers, 'lines': [{ 'folios': [fo], 'description': fo.get_room_info(), 'quantity': fo.nights_quantity, 'product': fo.product, 'unit_price': fo.unit_price, - 'taxes_exception': booking.taxes_exception, + 'taxes_exception': bk.taxes_exception, }] } else: @@ -420,17 +422,17 @@ class Booking(Workflow, ModelSQL, ModelView): 'quantity': fo.nights_quantity, 'product': fo.product, 'unit_price': fo.unit_price, - 'taxes_exception': booking.taxes_exception, + 'taxes_exception': bk.taxes_exception, }) for charge in charges: invoice_party_id = charge.invoice_to.id - unit_price = booking.currency.round(charge.unit_price) + unit_price = bk.currency.round(charge.unit_price) if invoice_party_id != party.id: if invoice_party_id not in res.keys(): res[invoice_party_id] = { 'party': charge.invoice_to.id, - 'currency': booking.currency.id, + 'currency': bk.currency.id, 'payment_term': None, 'lines': [], } @@ -444,7 +446,7 @@ class Booking(Workflow, ModelSQL, ModelView): 'product': charge.product, 'unit_price': unit_price, 'charge': charge, - 'taxes_exception': booking.taxes_exception, + 'taxes_exception': bk.taxes_exception, }) return res @@ -454,6 +456,7 @@ class Booking(Workflow, ModelSQL, ModelView): new_line = { 'type': 'line', 'invoice': invoice.id, + 'operation_center': 1, 'unit': product.template.default_uom.id, 'account': product.template.account_category.account_revenue_used.id, 'invoice_type': 'out', @@ -517,11 +520,14 @@ class Booking(Workflow, ModelSQL, ModelView): if rec.get('guests_qty') and rec.get('add_default_charges'): for product in config.default_charges: if rec['party']: - taxes_ids = cls.get_taxes(product, rec['party'], invoice.currency) + taxes_ids = cls.get_taxes( + product, rec['party'], invoice.currency + ) new_line = { 'invoice': invoice.id, 'type': 'line', 'unit': product.template.default_uom.id, + 'operation_center': 1, 'quantity': rec['guests_qty'], 'unit_price': product.template.list_price, 'product': product.id, @@ -737,6 +743,7 @@ class SelectRoomsAsk(ModelView): overbooking = fields.Boolean('Overbooking') targets = fields.Function(fields.Many2Many('hotel.room', None, None, 'Targets'), 'on_change_with_targets') + unit_price = fields.Numeric('Unit Price', digits=(16, 4)) @staticmethod def default_accommodation(): diff --git a/booking.xml b/booking.xml index 9c54b72..02a1839 100644 --- a/booking.xml +++ b/booking.xml @@ -113,7 +113,7 @@ this repository contains the full copyright notices and license terms. --> - diff --git a/channel.py b/channel.py index 6a06e9c..dad3df7 100644 --- a/channel.py +++ b/channel.py @@ -35,10 +35,12 @@ class SaleChannel(ModelSQL, ModelView): depends=['company', 'type_commission']) taxes = fields.Many2Many('hotel.channel-account.tax', 'channel', 'tax', 'Channel Taxes', - domain=[('parent', '=', None), ['OR', + domain=[ + ('parent', '=', None), ['OR', ('group', '=', None), ('group.kind', 'in', ['purchase', 'both'])], - ]) + ] + ) currency = fields.Many2One('currency.currency', 'Currency', required=True) price_list = fields.Many2One('product.price_list', 'Price List') diff --git a/folio.fodt b/folio.fodt index e662ac259a622e5990b1ec92397539a0fa9a9885..20fffa30f0be089d4ab92bc7e3645135978ea424 100644 GIT binary patch delta 20771 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 a)7I7V@1BD%c|0Hx&E@WX=@_8*Tm1_lQ)ux3 delta 19004 zcmb5VWpEu!%qVDPW;GKV#yM&)e#W?-;`MP|DpJ3 z{2!Er4{)*sB5i-M=hcnVd`hRms=m+Qi-!#tu1vw%3{(}w95CY);3sDD2 z2yg(gph-M^AOuWmlGE|K%WET`VL>B6S>eLZWQio0rA3J&P-3?Mj85@ElYRVmQ*C#1 z9&aAyW5-05YLb?Jsi7ot|HR4S;(PhN5dX*>eji^VM3DtckmSI&BGKCR#Hw7Y>yy>7 zI6n5BWN`p-S>uM)K`X-RY(vOhdcIfZ0zSeer7WkE%{bZD>4rIKdRUoL%S4o@R$#|p zn?qW#T*`oT=0?&8NK~%Wq1K`|1KF}gTS8}%4qV^XrDzuL*n$faF>H z+KQ?d$UZaK%WMLTF`kXx3Lh~)lYqAw5yCE%eY!jj>N5`!qvQ0Al1N6WEh=sg5qgp- z3LJn0JW~mU7nM9XKf3L4_PRZbo@fw;zvDb6Tu zx^GL6ZIckiNu`dVwjoJLk5|5)so8=2meRohD_$_{8~U1jo2#~}w>q)@q(tfc4_Uar zz1S#3aCq1vk?2Q9Vf@!TROGXz7#JHA z7})>4#^B)K{##=S)zBmW9Tx&#G`}sQo!t#^k{gj#MQ{{WcsvA0{S0o_dH*GXhr~kG z>#KQ;Z5}+rzL~e5cpMw2XJ=x!izU|iDA~Q*VXr{P`#g0XFd`GihhyONObv-4me9t# z%b)(d$Xr6RM5^44Jm@2f@Ro^Gq}{ z>+#VXqbOUF(ynq9nxq?dccSFUAEuezW>A zmC@v!Yy4G*G2#sMn{<5xk4gyU?j%2a%A{Thidk{$H^&z0K%r8h=7)Xc&_Q5fajMCo zO=-P&O~^x6sTO+9BhK=#2UXlSu?D{@DNFv#E)(xuQfIVfWI^KL~9D)K_Sxz-W<-_-6bC!sFk) zxb(FM%iaZB6eid{gS|r&sVPCBE78U>odJGEXzotvHDqmM^h~#g%o^x|QAieE1yL?+ zZJeeU`stxQ8gXE5bC?;h8jX^;eJ;p2M?tS`u;|eMH)#aCf^ZY;m?sJtK8P?N6!u*y z-OSSoJ^Eo-(BKiJTLVZ0ZAWp)n7l9`qo3R-OY(PRDB*S?FAMYY64O$zhBaX#~G7eV7e#LsA`cFB1Cy+9<02~EEBbKGIc8RWaQKp z(~KO3G}hh45sDpHP6Ea?OC-JF$2f3M1VV+BKl7*GTBN_ThsgUfz?lXYP2^CD4%-d^ zgeb44n)nuFlw3@>TEM0Fhdcjq>5BRjDs71=gHpS z>R@zePM&!fnPH$RlRu&hiQ;?{`%#Q_#x>IE77NWD<2Ai(G{iypvDD6IHC;ve9vuW z(uQm32zMEZ*Gstg*iM4&6#KSFj1op8$Bw{2CHTRqiR&fk`W30}Ill ztjQxjD3D393*1p%tIGs%LSB6-!0}y*WLjxTmfuhU5zU3B%zjo#kDYi>4Sg{EOHcKU zC1=aFYU(s&j|H~f=(m)B@$2ko4wLtO=CV)DR=UGky68Ci#rK^djj?7Sicsn(I$_Z& z88i!iVe}dzljT)>G1$Md=$LRi^G{G$lb*jV8+ev)aBm)6p_%nL^BB6?u#ML5zaY4O zfd98$eg=fLfy07#ilIp=aS8HqnJN)~{8D4BQcE>6Yjw*qZR)bD3#v3rTXk#Obt-Zl8Vl@N%UwF^ zJSuw)8u|<>0fQ#3<0hSRKl`ekhg&`8I=zQh&6oOpC-$u7Pi*E6eg_1EM1_V%{S6O` zNsdX(jEnk{92c3Ak`|p_l9E-FnV0jYtLaZyM|xgaUi_cjjD)w=2HCyQ`-wxW6xGXf$|aEMl-fY-luUWH54MJbH32 zVQ?^EY%G1aFLQJ-b7DMsdNyNfCTn&se{!N?a;R*2qF`#KXlAN%W~y**u4rksa$&xF zX{Bam8Bn>h*3mcAI4}=fn66)(uU%egTv=*dTWepM>s(&#SXpdeU#|e|G;Qv*Z*F&P zZ+33)j(7X_G*$GqH}!S3^>p@6_4%)k1a8iS_xE;;|8o|Hfb;tS%lnCI2ZbAl4Z9OT zCyQYRt68_8i0iG`m))3;WlK>tAh;MnlUz|hFp=urRo=-~MHc>mDM zz}W2A)a>x=YVYb|-{!`|?85lm$_Qv_bPF^$IkG%EI5#u7J~zCwFg^dTEv_!CtgkN4 zf>swn>+5}+JF6SJ1KXS9I~$w(Jxe0rvvA=vj>3v z*`wq6`tN{%b#gJ1k`sCPrg3S`s1DFienGRg%j?9?}i~2$!OLXp(lo!$_;Ko1Wl2{l4 zOh!OlmNI^We|=-~vb$yL;?w&L*l#~n6WkVM!h#gi%Yp~fZ;Xc&WWvZ2;_;!3$~k%O zyHbM-KD5*CZuO+_?k`4I`3pEC;sCaDG&s{M#soz~xRq-pqz#1^giCr92ytY$y=^6o z#%ro9mH>tdP6O*7^fpogVA*KZz)QLKP);^4R3h#r?<>HISn;gJN32*JQZ zh9<3tO|EoU$yxo{l>^v+^#VRO1py}AE?+HIukWAz>s^*t?;Dnv&07z=b)UW7C_Yvl zzn3@L0bea|XGR9)c=ye3s3N3>|HP9*p$i0p1)_zM^Gd?;n#=!&9f(tt%P1PKxLhMsIvn6?-gnJZ$pgSpJ*K8X;M*ufglDj!hJ3sGKHFf9Yeaj2 z9Sf|Ij>ar3;gDnkf6e99GYR*4XGrT{{^rB}l_TY7-B*K*C@2W8q(zXd_p#3;9t{`3 z$Dq>s~C^3?+!uv~sIq!n) zUclW)h)>5{D_qx-7}IjU@ur`uU}wW{8Nmm zID-A5=A(QK@7H$BdhMMrKUSJQ?D&u%_3Tk+MoX5z8g2+U#~UhA3Xe09EQU~!NGsBw zhWo$G{Lkhpt?+V^Ecq}L`y}OUo@eBwX3&d^(l_T^AD+ zQO#do(ys}1O254KayEHwX;By%fYk}F)YeSV<3Og+M1K*26rlWDG?ET?EtAsP4;}SL z=4D^N^~~Y$w`uoZ+>ygkL`IM2eiwDq1YhQQdnHEiLEY=O5+5z;k6rKYL0@-$T}P3> zemr{~1-x253f_%vJTeQsp#r?OFTIfpx=z|3aw@(=`@Or{O7Xb%==olQFA8sf7XxSB ziVjT|+0SzW-Jr+gJNd&9v{) z_6E@D`Q>B!(rpv++)Peq5PR(eyN_&b`41!yR<5rBUQE0ZEm}M}2J27|S=zHH74|>9 zMf}a191nFj>zz6&KN`A534QC(QiSf@G|>QJknz{YlMZ9~%FidVDrgNivKp|*aM}ax z7(Yypm<(=U-U53~7Oznr9y~iO3x#xlqVw+lmR~#xsEjnns_m`*-6<$Yv143Y((k=H z5!+I6fC29j{95=?WA+msE0*BqvN{{*SIk9O_f00yc@w0uyz1Qi7U=*d6zu<(p!RR3 zA3FI$FaZPv&-wM+-2NFK-&T_+-!~-yRMh2^po=`g1ZB5$BpiWDth zjQDUw%5;We6_aS1IvWo^FQ4Kk89#5$=NX*uSmX?13{w1XWHwC*7g1WIwDk?3%*ACe z`FTcuc~vwOg*!XDpL1R$hx6)8QeO^trUbC|oxY4*l@eoCT_LKpKfc&pfldP%wIXh$ zmRh23?Jq%bpb9zmG*dFRn1+UoT0f<a}9Gg|Z39on2TToUBf3y(J^qFph@xZBF%%vUg(`58UmVsr5 z))U8)+l94H{=tAYVH?x?NL**(?J;J~U8i)w$AX8v+@S{s zdJ>FuqYf6Uj?ZW(&ry%_ds+9bhhEp=hW**&`SF_H=}p};T-H^rww1l|gkcWR>H39l zLI0BFh??nPwsiQ|q+fVRVH5!p%%ZWYbiBH?2Q94x0+LO>5(3JDO#cwF1^xGpUjj{p z;YTs7dzoBPguA*++BnyMYfFuOstBjXy|Cp^*HFthiYi2)T;}hV$z-Wpph-+e(MucLZ_(H_r!OTTML~!i*9z z_hk-lt(NxX^t@}`C!Mj1@$n7L zUoGu2t(Qv{a!re(4sPFAe>IW(*j#e2%nGq<0#;Q`at^OAF5SK*{QSWyxdB?cQ;O1b z{*%6>$sI?I%l{}0aJz$CI<>IPXc}6x%Nnw>cW)7#@r#^m{Vo%Ey7-h*W9ZAcW4K2h zU3K}$_1iY19k{xoYiQOK&tkLw>#Oip+Z$B3L=e%w`mxtyv-BP}xNB%uRaUodX23?JuAZsTTt(a*C3)Tkpp9hVj;84)JZx}VlQ@T@$2MiZuvqpo4BJ3HfC5gyG zM?Z6ExUPA;)*oJ!W43oLeG zaDQVATZ~<}Pfo0rv@Cbs?Ps=y5OTh31WhOXAq5LpzOtUnr71 z3mt9im*@Qrw}Q)eP=q3mOPbJ66yruBFCI^*CqFyfHxW}Ax}NNXo7JKlFoYA^zZ^bB zlEN^79H*QrCnHVz=F;bcE`rhrjz!DD2_sHP8rLmdjV4T*`veIG$qgNZViLbaJ7iYK zLnaLlfRYH3^6So{Cu1B7^ShjZ8}idPmMNOqycH3!dh|_j1H+7PPH=?;J3>bRkFyBu zDSZitApZ%cCiSX`XPIJD>*Bv>WB>%_Aqd$;;}kx3xI1F-@EUtVo#&N;#49B@ys^80=5qxe*=qPNNVHrEb~e6#{-KXYc1^|{AKpY8AHFSY?3$?V zCNcPoC-PY^?ydy~jvJ~k&B(&(;nNBaSx55EIT?AE!V{ijgM^C^fRh)U^6Y#N(G_yl zM8z1r$|p_#{>^aP2a-_WoJIqj69x*fjY|p@7>RyK!+Cj=IE5JKk46~?xeqgf3+Ai# zvG(MT)mq9vybxQyp$sq z>13E1g>Wd^vApFY@Ec%DsfaXOk{0ObG_)3c{9ot#Y2~?1%RahwmRr%o;;Maa7YCpr~XJGR6bba(|az*=!{N80a##lY-NP zS}_P^3B7{UOf3le=HI&Rh5LCC)(7B1En*?~%ZtnAqPl)zQ?N#etL>p>ImMbHnNt?h zQLN0A;m;py$5mSp3h$BeZww+B&UT01807AVA+CNY_y`; zBZlt=9BwFH(bZTUcN~2HhSa=)0`2Wylyt%9SKaIWEc-lC%>GQIkD}KmCU_PANgny5 zJD4!4Kx^b#X3|I>?stX6pF(6T=q?%Jr=MdvKi-=zVgwKCIzK}J@BDi10`(U=TPr>x z#?LYt_=x*bZ*!PxeRZmMl6E^yD+?`Fvee;}>^hY3JPFxNY(+!>uv>+W8kWds1=^@U zeEQgYf;jm}ICJ&npSqs75{67jX4<-rnD;25LHM>Fsnz$ScnGkgk7h0;NJj8e=(0vb zo!Yw7$a}>C-2dVuZI8%`D{sYxtZUaLx6E3JaNNCz(3Y&Vh6bnQOCZp|mr;!sDTLMD z@4ml70o)MR@Y4v;pe4Dv&J()I(QmF;)8LssIB{?^soxAFDZ3`=kw9Ny_Wt2))q zZp8}<{b~#|grpsrDkOY3$xcKpZc+q!R)&o3{a^|K#;yvc|3~aqNzR!h*dz6ipStpR z33TlKiIwcv^-~+kh2K)YWlMM@M_3O2onBQcn%a(;V&^=J&nc>@ble#EVWE>xkdYIP zC=J+m1-~~92z~!!$TMDX*#?t{E{cbm+Ye^m(JTV3Askp}qm;E^3zzS-1A(>a5(a@a zFNZ*YB&;nAA^f?@%0xy>D*!=0(28q-0ek!t&e^d42O!Ds%D-R@-cyTNH7Z8rmvDeI zobdvPc{h&mu1pkS)`ssBHaF8R#)_9G+yg+2{=mH_VJQc;fH*QubKlpS zljUt+f_(ak9Ln4C@5py4!tct7Kf@}#Q$0tQ1v^N$E9;9ZFuJR5Z`OaoP3s<-#r1B(#Qe` zgkYbud0}1st|~OLol)FXe_E z#?|9K3`5s)Q&_glC}eRVq?g+&O-BWUBz9j<(3n=sCv}J6oI4g!^Nr&#+4B4-@Ctnm zsrE>)-9r1A)ITEN_!gf$lB>fg4a=NhHl{*HAQRnZQTbv$w`*c0!s&AFv800_M@W&K zZiLamj6tzq26FrPf7-WO?Zlb zdU4WcPX%U1I&8J!Iv1Y&c+%5{9-#)Ep1txofExlv^Ox|Q#suL4f2rq1>+Gb04oNr zLEdc-@3jU3X4hA{gOJuea-0y1a3TDMTHVqAP6+)U*`fcx4}kwtO8?(Mb*?PxV(}AS zS1O!tfuHy)yDrQ&nSNCw^ca!cn@U1qMrK%il6-#R z_L=Ws4uJh@G7^g7)uP6M|K|ZQ3Joj3>32q>x6HBwzwekZB_$a(JPMrdlF$RmYv@Nj z@wzk`C6#Ql0nNt4#M&+|7|PTKA%xe%g&5((CF?kx0@K^4@xs*(WiFXaa>_^dM%N9~ z>z3iiCAI;hw7(@8@+}_C`uH<-pAISv&8j>&T~W#h_R)zQPa&P+!aTV7_>KpFBOPV& zsEZi$=V~zS^Vx$}ZMO6}C`JtYj>m6XEND`-%lvYlte?(&-8fVvAoGwh-pYh!03D~% zQtY3H#tzFcV0@WL#U9QUKZ$|0XEzj-ragTA+k$MGGGQU;+;7#5G1m(`N^M|Npzo2A zOzf<>0Ztz+N>HDr{LC@HHU=7y2CawZ&4#3mg_VKLcGY1JaL(AY30z1=k4_VbVU;pi z#%O(1MMamnOm`j6Q7jRI=PX5BbBhaQyv1ph2nM-*4b1vJl%4gh-P0qm!?!a`P*z$Y zrvJvx7jKrL@e~-Yyj%NQ03>Dv{vsTTLKK5mVC2mDj%d`F>j}XS@HGc$*a^jACl{uT z@3%<8w^?5~Xr+v|uhfHmF39U)eU`%sQAuFxTSy>#rrM7Ct#tj0$WERQYp2E##wjLY zVzn+B_yY0p`^My+1@RORgBF6(Xuj#&p@7i8}H)dpye zQfFO50?J{K1U9lTt1}PKSM3pv9rLZINFdbz(L0??b0+h?Mm|_y`EN8LmND~yNTNZf zDvYwgW!ZFK<@hJE)VT%bG~EQkO|S7F<(j&G|HXU~V^U!%^0?aEawIe&5@;~hhT5fh0f zd{C$M%QWVid#d=hNrhmUv#3Z!(kB;VJkq583T7ln$C#gHMD9Jaig%jewXn=V2vR{` z(Upvm)_lFEY)-lXYOo~PBi3LDqm25SS;}%MfOF^c1Bi)Iz%>qb+rSj0A_k0m3R?Xl(!Bb9D??s1KWHb6B|CM?@_7Q zWGkW*8o4!g!!^4l1jJEc@f!-HgV}Yfp4BF-VsT;+ju)R6~q{ zVoOd*i@OW}_UfR#bdQynX=fw$e&&f<>QTd-QtsftKsf?3onIJ5N7*OZu<@tTiGQ}yuG*X)fQba-Z^yutSohkB#RT~2;{TpM-0qGN@Ne{;neK% z_vgaO(adoDgGp!1ENTL`8y76gjUJbZ<$YHAVVw;npoNLR4ao>r?BDu3BXrh-nR1&3 zqi)2?k&P%Pd5A%mzOTcK0D{AmI47m}Z57Jz54AA^8JEz^qI`&%IEIodLzLIjBKKrN zQbayr-_|TZ7nXLCu^UhdUCtDKP)%WHn`6T{Nr%Zrb&qX|eryO8foSV--bY+uYw6^% zoBByKR5pBqahGJ}41c!KRNHB+GEYNhYSO(3iGL$W3ps?qe*UXPW*m6#HN3J&d=ULU z&px_?K1MX$I<3|PtfLc;FeRHpwnpi4+8N6~m=w@+;RSZ-By z9tyj%^Ou3|J6SBe7-%o#yrSZ;bV3y&NCoX=K;g<&eOhN7HbgufJtl9L2Iellj0Tu7NXXP0A-{@cO5z)gzvUcP8;H@h=l9lMojG zfkS$fvhls$HF}|;Q;a>YUL@YW{5FsbKmh-lJbjqxGW$V{EQyQBz=_~b#NrlB-jcr( zN7_`#rzdcG=@&K`x_2)ZO?BTAt4B;eNo_uh5jBuV2%#Zc z+T{*KLW7nF^%6A$JR<}FgVjLgSRYXfLU#S3U6c(Wr%>0^@$7r292oy#H+ai>5S$ z@DvIpNpcMJ>y{VLn-6gDny2}EVFfxXm7#Sp#wlOPQ;%3x-ZJmI@EF2g&bGDe1jJ}DNdHrK?Zq@_NWXa+lhcUxmB2TzN72^5 zYNVr^N2#rHSQb9yKJYZY8Uzozek#W3TjcF10YB(?&|B z33OnoAku*Dt|2^^@U~ad*YcpF2^S) z7Pe~S=)+8TM{D7$--QYwKE0*I@s@J&Unw#5jhlgs2LW)dq?ew}<2gOker9#Z*DD%P z>sT@;RNke?EDerR+P<=l-bzg?YGMDx%utSIM+f5mOgnRNg6^3&zxY>8Bg8#>aW>Qj zByx+%*GDTNNe@WVa&H|3HILyXS^mvHHx+VW&_6Hb|HA_hf}@;-N?l0`^Qw)WM^ zy-Zs4)&MA+&o(65q45TU#8DdGjw=WALjkca8AtH@WooVAwy!>Jo=ZfdF0G;N!!a~A zN32qXHTeWTTD=zgw{@2VtNp%gRsm+r<|EB1p~_wh?ndz+?WI=@U7d8jXfAu> zIsv+k--GzwF!#|T;Ot4EG@z4*{JOzMO}c}RaX^DT9VGEeTIsf3Tc`dH=iA$DuxL~>XX=dP(Fw2eukb_1t((5+Q-Pd$GbHhm{D<@9i5Y92Ekfc8o&Y0(@?(%FZTHGeZ z_T+O?P|(#IVnzR~b`a`l`xyRBV)W$jy{@V8u7`H{iEj+OtX zLg;@N)HVch0KftNDr?pL3#tC6A^z)_{c>|6o z`!QA4uvoTx1$b-Y&_kVZLI!yO$lZeza2f#|dfb(RZwbHVl`eKhw}jruuO59Itgh8t znjSE84fPtnqke3OHhq8M@UR6vz9o21>t(sOKO*S%&PQJ`0^>%ztTp z-rUsP(Y~3NBry3cKW;14w14k(blr%gkJ3$UkEliwnDJxT-eU$4{J82g|B0-ku~-fG za@TWp;2+PqQd)|3dlk4;LuAbJMgUajnr-t!-Yqn%{AsS52En9vnbj!feB*hj1KnQ` zu$p1Ff889MYPN^U`L8(&8VgeFR(3$WzZ$?++YN(~mzoTA7S~umOo2;(s0V`F+D)a_ z^GY@#he7gats(7c86_`w8yF9+HP?VoyY*0LYXfzxx*=z10W*uf4@p;8f%xXYaq>@4 zO>|m7BOg<{5$;VAh)QHWPn=Ad(l{PHu89hgkr7d)I5y1(;fPul!drIFe3~j$ zk|G%BTj*^z;=^>3y%-|G?zg1Wkz*m6Jo^`|NB1LJo&LmFcVONyyNR+T8T%z@;CF?? zdVOiOv{U;A-Fg4@;@nhYFAZqh)2?exH>>;$ZKC{YY}zWqZQ-EG?cqDOw%uZhGeSes z%q2Wi4%!e*rO?Y2ge9;$Q)b^l?S>sUd1}RekCuA<++Tv6x|nyipty)=9Bf{gW641= zbWg}=W1GQv(5Y~XDCLi_I@hYL-`I*qgi%t`g^k)nxPWd{1}~%|^aj9J24OJt&!a_= z_?tbCQ<^(cs59DlfsSqr+G9e_Ze4v*zM!_2tMrW9>SE86$b>1z$-*MdAb=OzT{?H4 z`vvx2w01pJ3}#MOagltqI&j(1_Q!Nso7ghocLY^W9XiecXzJS@m0t2%fzx<1tG80c zZBu)Q5*DVUdfii{Y5;7CK+x;HFdpRoW`%&1qrJC#E$Q^DOzXJk>4!Ka%WZoy@3AfTCQpC0x_lv4z$^0 ztI%84(7gMF&sY;$OV3<3!g3@r-f0usz_}Fs5Vk23+Irgh>#-66W&B4NB(X5VG5cXZ z0RmVr4B~;g+IQS1G(F-grQqmNdfyO}NYkM_k$C|aC_#jneekak!s$oJOh#mb;i>&~ zAp>whI4T4p5dg8Q_HAwnJ7_ju^2aK>Y=LAp5h6xilwb25m}$w z4A_?PhB;~uA{drj*)(H$x&|UBaA%qG% zkidyL+O*xuE0r@;t!P*E+(f1D=@%p+31lBNvwmRVsNdF}Qra|tBU5^3C?4Nq>zLw= zNuY?~14_mIn9%0jZDUFN+({I;0M_2WnG1!MubItrr+GQVd!#| zQa%=m#&>>{+0jT9hYNaxcfMsA(qujCI9e?mCspzRH6$$t?biyIE|8gKLnMRb8W-oc zG3Hgww6+gT9H>%SBQJ+4y z<;|_9461Wu8>6b_+y4w!>@&X``Z0C!wX#|GFkXXS9}$w2ui^FGk0H(C!OrS8C3m4=`l3*6#3YibCg0VQXT&Y6pia77!i0grG!zgnn~ED_T$ep}aAq zVJ>e#oBj|P?ftT1Zr)FTotiLI{*RW`@%N=Lg3SI?Y#*HXH-R4cK7b6izV3#VNZ0pa z<|dCRSW-`wa}}B6FYA$b`da#SQ~EGGJBQ+t`GJ6!b$K#b@{cH)e;wB2aYnJxqb^o2 zTf{>bc8Q$cp#aZyg#hFqukCa*%Jtp9uxi^f$Ti#lDLjMVpK9Ed{;38%IauyoX#7m!K6tVTTcfQR zV(DNlJf7PfO_8<4#K_r!&W@?*Z&TJkL)w@8vl6K6pKaa$*>-8{KUG$(>jS#b3UdCl zv)Vs)e*aOFWLgJaA8U9+F_sQ2Lh6&W8bfH-rBnFljB6iAQhIbqzt~bc*HvKS7wqb2 zz;ecMyp4*sg><=r|KJ{JP z_<@FcXYrKWali#AcTc=tLVdIIsUl&XvoMPQI5h7zGw<~rk;s{Adwf~$ybtmZfx?&W z1V@E8rEiEQbtRK>kVDkvTkRt!^gLd0dZCCplnNY_6*@Cvl7mt3IC~%e%t=VLE?_Hp zM6e181)@XmOu`qqg3d5`nP*s$5n=W~cY-oFIV|c&fQD5TryF?T#l&n~#FrAT0eNbR zti&|hg^2VZ`LdU}`~1`>DS{G1lt=U6{>k(U>V-qP2v1;zC277cXeiKz$8JN&BQ3xC zHi_mq4!&}bfN=)%I2&rC>ie_^a?CFs?S=X*DwYEAXwpdu^QnVfnutvMf56-~Lw?o37ck5EX{;(#~Fe4G~{F&MikwiUONbv15+RHOEup5(`Y> z@l>_ZJ}Tr4=UO`DT>7O@g*#+6E<0Tfu0OgYk7xbGFOrGhAUUNZqas)jFQu>v&3+<$ zDWS*yj(6m4cqn09b-m+|#^v{E9!K%E5JjFO0U-ZGo@kC}gF8x44|AK|$=QBevjp8j zZuOx}NN6YYaL;pv$WL;^JGE@6@mr)SSElex%6>qP;TPIbe>Smi6zmP zOn^+wdoOn<%swqZD1~-TuGJ%dP2?>EKqEUt`l|$LQ5k8Ej{<~T*7agtX&2E@xA^Z#jZDDL)VHxRQxV}YaAmQhlawQyK0@1nD zHpo+>P)kJ7K1*E@y%u+$dkOw=fRI2U1r}Wf)-$#^_dO*=G@bm927EN#Q&C=#ie%~& zw*3r42pd%^=%GkH&$c*NSU8JrewnH%)pyu%u+w+W+b`{XYZ`4^@90L{eRBn))ymP{ zr~SQHUC0F#h49p1IF;QU!chWvcEyk*R8r1cDhc0vSoK*fh4bhm|Az4V%Opa6?mka* zg8Z!EC5wX}jx*lJ+jpoCV>p&_ul@ba&hUt#F#L-wEtNbYCgdF8bx}HCG2<8dIsFGc zb+Wq%OK)|K{9$T+!aA;yjxtxS!2|Q=S#tf_w+(Ax%prwyS+Ghd=dA_6$}0=h<-dp= zQskb3b%ay9KPpDb`(%7zK=X;-8PC&+V&cELYl~$5YvDR&T*k5ILTxL;4lZlVrPO|1 zAyluj1LF1L<*10WQ-6Mp{zuAZR#~*py15XvlxTn>YUKSR=ct-u+U&y*JeW#eqfvh5 zQf;gamjHZhBu4Bu;$K5OCg~n+>Lpzob3lhj*=B>bbw?7BQKi31* z8xbLO0!+t>Y%|zc^E+jYZdFqCu_qL~3+efSOP>L3$a+KxIr|QRZlxo_W|S_co&Syn zin~(8O>P|tRNo3=R`e^7%U~z;!kI%B@`b4u7X$d@d12!FAORwwm8OE#Tow8xENwc$ zgvuopKL$rIx*u<3kJ`y1^tPaaqf$gNMd__RwI$6NhMv1No9RR|uoCOw#938!33E9kc9HWI^jn#v7^xwjD=6BD{qX#a#A2_fTy zx8_iyX2dFxUjon+sMwjwO32J(XMd6h9=#}0Q;N@1->Fi{cQQR^hXfBZi#eG}=ElkIqQ#2Y2CLs&!?>Y7YP5;mB)zWtQHG zOaIDUNY5sutSw?N;Iwftd->jNmiS zledFh7Vwkin(i?_o`UL)sD6gNT4)%@N@AC4HNmvB+~&t;p)s_KO56+r9i4PQR8JH{ zVmK6)v`E-rva(%c9Foszyy|eC*K@~7*uZM6A%hp5=}_%^3Py~6$l^S6hHJ0-O6wa7 z@nfbqU-n%`0mfSv;LFC@GYStBbryi|8)V^e9AL_1&jp<}a(QT8k%BM_Ra>L);M-R@ z<<9Z?SUfx~Zrqexr^a_X{Lc|HWSK`G`Q*+omZi9#kSb}&M#!Vb9fRfZk+(}5UI~#? zDF+m*5r})C-49yyUKtFOHbKN$B^k(Gvxv2UItn{6YuF)*RSEe0IYkWU+|@3m(0iJN z{D9ZMdj9^LnSUrIWM!6rNe>;y80Ac7(@m|ho!vWe_GHlU&pLWK|DT)K^e7`N-6LSK zrtV=4ykZj_!|H?sP9fHkU|K)W@IL7Yir^ABooH3VSojinmtqkg@Ycbd2;P@bo_xON z5MtZd`_1QBkglvTU|P*c_-5K|F(OxF0p6Et1zLqaPKNrfXY`z&+;>*al1#qOKxMi4 zD-WQ}&Krk+y1~c|4C`L^eO$jCLU;Z4c|shrd>SW=`&L6}*{0>~U~BvP>J#eSxrr@j zMqJ;_oPs zG1+tmEyo6g4Ig^H`*^Q1#@VyqUk8tQwh`KN7s8Kd!ekK_c&^BmB!$SX(OK;p?C^-G z#2y$JMqS&SM{v+utSNr_W*UG4wf6C5^rZ`W)|#)?3t4o|wcrPS6Zml3`Dn(UHq--= zRV#O=qLqAhS8X2&LgaB034s3nQG7TlqLDe&WT;zL#7{wD7>+;^!@%=srhmd9j;Wyu zn_q~~zoQHfwsD1&Zqc{mz6_r&1m=RwElpvF>R=a1li4H9BVIN&(G19aJit^9fpG{L^(3uj?d?&KwZ%26G17cqjT}^Yd|WnGapN z&<|tqd=rvi*Hm6xYEx%U`9=-TNuHr+;W~UK%VNJ6*2g|-T))07@?LL}dNr1Fkdm8= zg?o6)MF#qhe%Fwu;lVV^M`C7l0yfCqT{*-_)f(``p~_cLN5@kHV|2&J!`>1}+S#Jb zLo=yhgo!>7??6F8AD$J&%Xq8-@KztX1adfbU;H zkWY>^68$q*(cu`QE{nIMlWK>&!~7Rb5H~cVDwUVO5Nk_fO0N5jqYA}(+9tQc0!^$Y z72a={6rlqhx%4UA&iBIt9kD+%SR&fg{qyRT1i7R{=`KIsw)LSn6;`5IXcRj!b9m(J zL-DvHHn962^6k`G?bT78X5yg*iZgN`)raFp8bzw4#RXJ+$q4zury_Q>{n6%ckhdgO z3mtOt1_{bw5RNH^3Fyd#WjpaP$m#65Z?koXtIYTh+Y8tPjSfNh=*42vC=I37_qu#m zun%pV+MC9vsoxrqYF&UnFT!j07p(-#psxRsJv{(8H9BbjC?X$l7d1*692w<9aI1s} zRd4E_#!IrQO`f&{eEy`uMMy`eJYYRg*P&IEKpD2@+@=xwOgToGDLr5rBJRip&&5Lhv< z`Ro4(Va4>?B9fbzHMOR$xL43)YMUoxmdNT^)8!$o@7eVzj8#j|g%imNUC?pcIDsP$ zMFAcCs{73rqWwNY;jE>~6IIams4h}@#KS|~SaDq0;~k@nopMmm4tS#+CuS4J($3l* zgS0ef;7*}g5z}!6%PU;5mh>qOz^9aE4x6oNT;BBdK?|b?qB*EcHxTVIm-v`(r{%TIgo6pwU#!`#V9SFkNnfMMC`tsdkwG99qxG2;2Io2FozP|VJar9Qx=v>MkV&5{SD z{IJp6e4oj;S0uhmPbYpr$>NLJg|SrV-NCICKImQfRk(U>d}E8uZMM?F9z{rU?>uuh z7%zRLS*R=q`B`71FPBy$E37iFpR`rMp;~2lz34gup%gkAr;*_zQ;c}=I{yKW)AS76 zqF$uP6}(Y7yI)g)dLCPM`bPf)Jpzxe5PP>WC1qyO(7bIvcXnf47fI0A#Kx1&29~R` z$Z2nHTW3%U!M=8RlAIH1NX!29`|gP`_)LgaUx|Y48Bh}LvFVhXJf~SCg`)VqM{W~GPn9F1UMP$|>DfmQo0`l%(fRzjP10Gg74emo zzo?*?u+-632`*#T&6R}}RqT5vNPf*b;oYib+T51tLqjZQK%cDXSi4c$`d%5Y60hcB zRVt#7?TE^=l1RK|awU&xk%oW!tAFG;>UD&Vj$d5iy^6S zmmXuzko+%9Ew!|>gWt}?Rdx_xUDLd+C{DSYh=wOijG&=~CvGL7W3k)uJ&cW5I~7*6?1hi?LMgSZ@Ci9VQq$q8 zIHz$yR%6z(o|hm*hAyq=xX&|u!>h7BYKC5biWh|8H^W{8zY;(O0&|C{F=54Y zuYDJ~Frf>%Snj+{JWNTG1K8-+7ClKABFy^6QTc)Hz4GU`xZuMHBf6_C@6H}#w5*T| zxliBO|G1uXKVzBRYm)`nbY;miDNr5l3?OwefbZC{kY|y{3-R|{8sp(+r5@LGnlvljJ;9s2 zgYz>c$BbTTyeiBv)<15@SpVc(;mx+_|nO2k300z2}nHRtn_d0|4**r0wh*AtL*j1ozLz?4Ht{O z7~x|1PYon~bouWLzpM3L&(&3jZ`Y37L*NieuE*SVt6w+#1%A48d$E8E00{F#qXUAG zVY^=4|GoDY0ssJT;J2GvK!!LItR?jZkfGvlBi>S#=$-*4JKVLVtEklkLBm - diff --git a/message.xml b/message.xml index 9be34c4..16e14a7 100644 --- a/message.xml +++ b/message.xml @@ -72,5 +72,8 @@ this repository contains the full copyright notices and license terms. --> Error, you can not delete folios actives + + The customer is required! + diff --git a/party.py b/party.py index e01abd4..37af18f 100644 --- a/party.py +++ b/party.py @@ -36,75 +36,6 @@ class Party(metaclass=PoolMeta): visa_date = fields.Date('Visa Date') -# class CreateGuestStart(ModelView): -# 'Create Party to Guest Start' -# __name__ = 'hotel.party.guest.start' -# full_name = fields.Char('Name') -# first_name = fields.Char('First Name') -# second_name = fields.Char('Second Name') -# first_family_name = fields.Char('First Family Name') -# second_family_name = fields.Char('Second Family Name') -# type_document = fields.Selection(TYPE_DOCUMENT, 'Type Document') -# id_number = fields.Char('Id Number') -# type_document = fields.Selection([ -# ('12', 'Tarjeta de Identidad'), -# ('13', 'Cedula de Ciudadania'), -# ('21', 'Tarjeta de Extranjeria'), -# ('22', 'Cedula de Extranjeria'), -# ('41', 'Pasaporte'), -# ], 'Document Type') -# mobile = fields.Char('Mobile', select=True) -# email = fields.Char('Email', select=True) -# birthday = fields.Date('Birthday', select=True) -# sex = fields.Selection([ -# ('female', 'Female'), -# ('male', 'Male'), -# ('', ''), -# ], 'Sex') -# type_person = fields.Selection([ -# ('persona_natural', 'Persona Natural'), -# ('persona_juridica', 'Persona Juridica'), -# ], 'Type Person') -# -# @fields.depends('full_name', 'first_name', 'second_name', -# 'first_family_name', 'second_family_name','type_person') -# def on_change_full_name(self): -# second_family_name = None -# first_family_name = None -# second_name = None -# first_name = None -# if self.full_name and self.type_person == 'persona_natural': -# names = self.full_name.split(' ') -# first_name = names[0] -# second_family_name = names[-1] -# if len(names) > 1: -# first_family_name = names[-2] -# if len(names) == 2: -# second_family_name = None -# first_family_name = names[1] -# elif len(names) == 5: -# second_name = names[1] + ' ' + names[2] -# elif len(names) == 4: -# second_name = names[1] -# -# self.second_family_name = second_family_name -# self.first_family_name = first_family_name -# self.second_name = second_name -# self.first_name = first_name -# -# @staticmethod -# def default_sex(): -# return 'male' -# -# @staticmethod -# def default_type_person(): -# return 'persona_natural' -# -# @staticmethod -# def default_type_document(): -# return '13' - - class CreateGuest(Wizard): 'Create Party to Guest' __name__ = 'hotel.party.guest' @@ -134,18 +65,33 @@ class CreateGuest(Wizard): 'type': contact.type, 'value': contact.value }) - party, = Party.create([{ + if self.start.type_document == '31': + type_person = 'persona_juridica' + else: + type_person = 'persona_natural' + + to_create = { 'name': self.start.name, 'id_number': self.start.id_number, 'type_document': self.start.type_document, + 'type_person': type_person, 'birthday': self.start.birthday, 'sex': self.start.sex, 'first_name': self.start.first_name, 'second_name': self.start.second_name, 'first_family_name': self.start.first_family_name, 'second_family_name': self.start.second_family_name, - 'contact_mechanisms': [('create', contact_mechanisms)] - }]) + 'contact_mechanisms': [('create', contact_mechanisms)], + 'addresses': [('create', [{ + 'street': '', + }])] + } + party, = Party.create([to_create]) party_id = party.id Booking.write([record], {'party': party_id}) + if record.lines: + for folio in record.lines: + if not folio.main_guest: + folio.main_guest = party_id + folio.save() return 'end' diff --git a/service.xml b/service.xml index 49e3777..e74a7a8 100644 --- a/service.xml +++ b/service.xml @@ -40,7 +40,7 @@ this repository contains the full copyright notices and license terms. --> - diff --git a/view/booking_folio_form.xml b/view/booking_folio_form.xml index 4b3307a..a8253d0 100644 --- a/view/booking_folio_form.xml +++ b/view/booking_folio_form.xml @@ -22,12 +22,12 @@ this repository contains the full copyright notices and license terms. -->