From 96093f16e508a2193583fff15816ec53b1928b32 Mon Sep 17 00:00:00 2001 From: Mongar28 Date: Wed, 14 Aug 2024 09:29:29 -0500 Subject: [PATCH] Feat: Se elimina una linea de la venta --- .../tests/scenario_sale_line_delete_log.rst | 164 ++++++++++++++++-- .../modules/sale_line_delete_log/tryton.cfg | 2 + ...ondo_sale_line_delete_log-6.8.0-py3.11.egg | Bin 7090 -> 8102 bytes tests/scenario_sale_line_delete_log.rst | 19 +- .../requires.txt | 1 + 5 files changed, 167 insertions(+), 19 deletions(-) diff --git a/build/lib/trytond/modules/sale_line_delete_log/tests/scenario_sale_line_delete_log.rst b/build/lib/trytond/modules/sale_line_delete_log/tests/scenario_sale_line_delete_log.rst index e967ea3..92f2e5c 100644 --- a/build/lib/trytond/modules/sale_line_delete_log/tests/scenario_sale_line_delete_log.rst +++ b/build/lib/trytond/modules/sale_line_delete_log/tests/scenario_sale_line_delete_log.rst @@ -4,32 +4,166 @@ Sale Line Delete Log Scenario Imports:: - >>> from proteus import Model, Wizard - >>> from trytond.tests.tools import activate_modules - >>> from trytond.modules.company.tests.tools import create_company, get_company - >>> from trytond.modules.account.tests.tools import ( - ... create_chart, create_fiscalyear, get_accounts) - >>> import datetime as dt - >>> today = dt.date.today() - - + >>> from decimal import Decimal + >>> from proteus import Model, Wizard + >>> from trytond.tests.tools import activate_modules + >>> from trytond.modules.company.tests.tools import create_company, get_company + >>> from trytond.modules.account.tests.tools import ( + ... create_chart, create_fiscalyear, create_tax, get_accounts) + >>> from trytond.modules.account_invoice.tests.tools import ( + ... create_payment_term, set_fiscalyear_invoice_sequences) + >>> import datetime as dt + >>> today = dt.date.today() + >>> from trytond.tests.tools import set_user Activate modules:: >>> config = activate_modules('sale_line_delete_log') +Initial data:: + + >>> User = Model.get('res.user') + >>> Party = Model.get('party.party') + >>> Employee = Model.get('company.employee') + >>> Journal = Model.get('account.journal') + >>> PaymentMethod = Model.get('account.invoice.payment.method') + >>> Party = Model.get('party.party') + >>> ProductUom = Model.get('product.uom') + >>> ProductTemplate = Model.get('product.template') + >>> Sale = Model.get('sale.sale') + >>> SaleLine = Model.get('sale.line') Create company:: >>> _ = create_company() >>> company = get_company() -Create fiscal years:: +Set employee:: - >>> fiscalyear = create_fiscalyear(company, today) + >>> employee_party = Party(name="Employee") + >>> employee_party.save() + >>> employee = Employee(party=employee_party) + >>> employee.save() + >>> user = User(config.user) + >>> user.employees.append(employee) + >>> user.employee = employee + >>> user.save() + >>> set_user(user.id) + +Create fiscal year:: + + >>> fiscalyear = set_fiscalyear_invoice_sequences(create_fiscalyear(company, today)) >>> fiscalyear.click('create_period') - >>> periods = fiscalyear.periods - >>> len(periods) - 12 - >>> period_1, period_3, period_5 = periods[0], periods[2], periods[4] + +Create chart of accounts:: + + >>> _ = create_chart(company) + >>> accounts = get_accounts(company) + >>> revenue = accounts['revenue'] + >>> expense = accounts['expense'] + >>> cash = accounts['cash'] + + >>> cash_journal, = Journal.find([('type', '=', 'cash')]) + >>> cash_journal.save() + >>> payment_method = PaymentMethod() + >>> payment_method.name = 'Cash' + >>> payment_method.journal = cash_journal + >>> payment_method.credit_account = cash + >>> payment_method.debit_account = cash + >>> payment_method.save() + +Create tax:: + + >>> tax = create_tax(Decimal('.10')) + >>> tax.save() + +Create parties:: + + >>> supplier = Party(name='Supplier') + >>> supplier.save() + >>> customer = Party(name='Customer') + >>> customer.save() + +Create account categories:: + + >>> ProductCategory = Model.get('product.category') + >>> account_category = ProductCategory(name="Account Category") + >>> account_category.accounting = True + >>> account_category.account_expense = expense + >>> account_category.account_revenue = revenue + >>> account_category.save() + + >>> account_category_tax, = account_category.duplicate() + >>> account_category_tax.customer_taxes.append(tax) + >>> account_category_tax.save() + +Create product:: + + >>> unit, = ProductUom.find([('name', '=', 'Unit')]) + + >>> template = ProductTemplate() + >>> template.name = 'product' + >>> template.default_uom = unit + >>> template.type = 'goods' + >>> template.salable = True + >>> template.list_price = Decimal('10') + >>> template.account_category = account_category_tax + >>> template.save() + >>> product, = template.products + + >>> template = ProductTemplate() + >>> template.name = 'service' + >>> template.default_uom = unit + >>> template.type = 'service' + >>> template.salable = True + >>> template.list_price = Decimal('30') + >>> template.account_category = account_category + >>> template.save() + >>> service, = template.products + +Create payment term:: + + >>> payment_term = create_payment_term() + >>> payment_term.save() + +Create an Inventory:: + + >>> Inventory = Model.get('stock.inventory') + >>> Location = Model.get('stock.location') + >>> storage, = Location.find([ + ... ('code', '=', 'STO'), + ... ]) + >>> inventory = Inventory() + >>> inventory.location = storage + >>> inventory_line = inventory.lines.new(product=product) + >>> inventory_line.quantity = 100.0 + >>> inventory_line.expected_quantity = 0.0 + >>> inventory.click('confirm') + >>> inventory.state + 'done' + +Sale 5 products:: + + >>> sale = Sale() + >>> sale.party = customer + >>> sale.payment_term = payment_term + >>> sale.invoice_method = 'order' + >>> sale_line = SaleLine() + >>> sale.lines.append(sale_line) + >>> sale_line.product = product + >>> sale_line.quantity = 2.0 + >>> sale_line = SaleLine() + >>> sale.lines.append(sale_line) + >>> sale_line.type = 'comment' + >>> sale_line.description = 'Comment' + >>> sale_line = SaleLine() + >>> sale.lines.append(sale_line) + >>> sale_line.product = product + >>> sale_line.quantity = 3.0 + >>> sale.click('quote') + >>> sale.untaxed_amount, sale.tax_amount, sale.total_amount + (Decimal('50.00'), Decimal('5.00'), Decimal('55.00')) + >>> sale.click('confirm') + >>> sale.untaxed_amount, sale.tax_amount, sale.total_amount + (Decimal('50.00'), Decimal('5.00'), Decimal('55.00')) diff --git a/build/lib/trytond/modules/sale_line_delete_log/tryton.cfg b/build/lib/trytond/modules/sale_line_delete_log/tryton.cfg index 50f0981..8e9135c 100644 --- a/build/lib/trytond/modules/sale_line_delete_log/tryton.cfg +++ b/build/lib/trytond/modules/sale_line_delete_log/tryton.cfg @@ -2,5 +2,7 @@ version=6.8.0 depends: ir + account + company sale xml: diff --git a/dist/trytondo_sale_line_delete_log-6.8.0-py3.11.egg b/dist/trytondo_sale_line_delete_log-6.8.0-py3.11.egg index ee3c004752c443f3731203c3d4bc5ab7cd7de77a..f96b8f4e01437a5779dda303751bea9e9d955501 100644 GIT binary patch delta 3545 zcmZWsc|276`=8A)%vfiJL76O}7;7jy+3wgvG?oxi_Q;@IV<|26IhgEB2qk3660((@ zR2nfC$x=uz(xUne-~0XD`u)y7&pFTbeqQJEoacF;2kND|C~G1Vh6aH^9H0ds?i!Q; z6v~pd5>PAf?hOzM)7+D_Fi(gU4ZyLfqF8E@qT{rKJ}W8=aAcD*GPfL77&=^|^t|>( zP3@8AwKIoe`Xv_^v62fX&!ov(4x06#jrnJ963pZYH|7t?^edRj%NtX{px>~87B)>5 zMD1s`!{A*gDRyTRrWi$P6gU1we4PP^!93(E7wxIjriWDINbqKh~|N7)Mtj*&m!ZOOCs7@+SHX&u4a> zQ5(M<1QEvztEo=t?(f$W5d(|OREK=xUJUxsq$1rkB{S3fsPVoFUo^Xry)HnYgvF!er%Khd%uxb=8?8o- zCo0Z$YCTz46az=^+^_#pRNwB4a|^$7uXL_r#tw$E#0hG39NWxr;aPtx+}}Z$ZF~Tb zyUT+=#eT2w>`&9;Jo`r2CPiv1(tGsPa8=2w7yj16p^w6UFHQQ%H)L|vRlmJ3z0E&i z*$Ll(H`Hv~Qo>Tk3i%|{7jBb%@;W&_G{%p{Xda%FXIc&y1bi|-BbX1KH8Qm7nqzM% znV@?mWXtYadf#5uUr_==?m z1W@D^q(I7dkkl`jEW7M1fL@SJB{|b+K$e4Jk(0YSHqeV+kez?u)y9rQEuhg0atds+ z0mpl;xwime9=ic*a8jR=EyPT2EO7PH7-p zzd3L;F`&rAiwVx0=F#Glh6z|FJmQlzI^O5}K_CBtnt4BO%6IAmnLaU~c$FR!B=>h3 z-SoZLaKLu2LeoNq=h{h$iGl}I_+MKwF0==;d1HMZr7e;XP7j+^zTb5)>txK&OHGC~ zdl_U_EMRQyxuRATjqCC#YQam0b$u?9|HSlr*S~HEc{ksFmeiZHVo@Mcc{s3(czb_i zno(tsbzjubVENxRujB)heFOR}=>pdn58_l+!v`f4h}x=NLmqH)M83*S+P3CjS@KDr zDik6@(;sb!ceSV3YPNr0zyX345u+99BS`xEQ^(khG?&)1+U8gY<$!~c!W#QT`WXAn z4&tMmojh(WOVQH1ZpNems-OIID!KOMsDnW_NBn8B8TApl-ZS8;hi+29AIz1PV6QAe zE#l>KOnU6N{1tyDeeBvrsLO=R?ZTgUnf;C%*ae7s!>i!l&`feFF%e&qs%wyyY-^rC zpVHA@v0&PNm6=CV%q$M(jdxAIEAqwXBC>^-mdg?is!x8!59MK(589C(MjtgW#9X?c za*v(Lc9I!GYxZyGzY1AF5l{nlK5n_=P9(1^y&AWpItPV_Iz&+{_HM-4Nm|op{3WcL z3bVCsYf1?8j12b=mPg(G3bT@wb)+53>AW{vKb3c)W<-s0_uQ%BxWR>EAN9#uS655z zLv~&aD3TAU`KdLu`#(Rm+Ja;h`k$3h=D$aOEYkYqec!!0F_pVE;>A&K5%I_Qlv<^E zf_|WLJh|QvXw5l}GyJdt8xL&e)fo=SZIZbr;sG3zCrh^zH9}gC@EQTnBt2(^uf&I( zk{0t+F&)sBpuDkt@A=NVVkWFNO1DQN>uLI<_8gEk=(VYf#(oB5c-^SY!Ft?^W10D!C*+H#|Tudwe$S=0axw39-zvjh{NCuOcMw#OLfh^ zadDtnC%RU}Za=)}lVb1GyaaJWaIt(%d32CD(`KjaL!n2VoBU%UPiS5L(rR~pCx^NP z<>;pIE3W0k(w2*j5gO^&`QhwL3-OSPkw+>PoY$5ZIC$qBCqvwzSF-3_E7=zKypqn| ze7y`lvX~Q)Y6VKDcAA>Bg}ZY#KeUCXw}ozncf6J#>IT(!ogn+9oy)e(2;!9ygr_(T zY5EP4DP?n@?R0+`sAx~rh=%>qyBSfd7{gr)%y3u3@2?T1#T#z14JIrj#d_KRaG@s<#oqj1A z*lMS0YVe4;A=*=0Z1+bUysSVWTu$*C?g|yVdN)l?}SGn4J z8Iy2wV~llNh(b1#CyCHLs~v9lHS*D`YR8hCBNyi{#yspu7hB2h8}@HsnnX~->jmA_ zPfzb;1T?55>ZYDV*QDq;o%>TGJVF?nWw=5^l}U*3ZbnG_>~r=fe^~2mtsh!r=YH!) z39M5X9@*FkMJr!8Uo0d3nUmrA^rOM+tATN#B@~*!xO_Ay#OldUIp@*)iB{w5U7)QZ z=z71^b|8JSJYdXwT`~UI%jd3_ZI}p+KnbK&W}9}YQlc3dxi*{Ar0vgxJR9kRr$_#n z-T3m8O>YW9vmfj}b5+mk&x!K!P|~H)KOozeRn~*42%m~?`X*w@_RuLd?@F2QB-Ms} zSMk}1y4ehYn9#-#E_z(h69Le`({ixep0)fVkNPNK$A5zV-SMp59*&aV-R-q^xN%^P zT^<1$&kF>4dCo}fZi5_9v6u=TY%KFV3uS8VZR*b9HR`$P)Mwodt((dCxK+?by+XFtfVC?YS1(<>_y2w6{gh1c;czNR^;B#|#QPWUC2Ih!U__&+VF{E@ofng*|%-%_sebvfSLyBu36jm)#%jHyeq$61}B zNh_t9tz6O`=rv+Xyfz$tMiirD*{elxkHj1c$R>5(3U}H6R-jX2(5S`rPG0pIf34wH zIZ9c`YEa$L*XQ4ObrrYf<37(l7U5SZcVD3Fy9Ex+H8UStrg^wV1|uTcNEuyky@%^w z+ua@NUj_`7z6U?4M;@st%@375%qQ*8mc7111(EFe6izTK61R8eHyx_6*G?I6^hD@Q z+MbiUuTfQ)B=n=xW!_M9OY8&X(i+b^B5do;1B0>chK8^1e6$*PleG*x!T zIU4(obC>WINPc+ST_BDSKX21GrkXjv$$j-oN5{m=zMgY0x;r|CbUUWH`}!&oBET9q ze|C7pcI(=Q*2wL)%d)ftz2%MXzSbtuV!d)68H<{*?Z+`5Aj1`LhdpSVvAR3Bg28_QHxQge!%g$s+$sy>*{P^$=?#uH@QjH+cs2_~!Em}3n2;-#+JFG4^dHv|a8$KpZ%y?`9F z#2)4EKfa}dFbfFAaSW&PzP$(z^II{}^LV`%K-{?IHU*W$suw-#e^q#M;AQr#dAA4*b3<6cLN;dn= zkC%gm;;=VPcF84G2n+d!V5w990;ePpD1_Vv|5Hd5@`aP7l?L!!d~(0OjQ_{{e#`!t z>z^R_E*S(YaC_;TaH5dYe0!Ec93H>RC+m5LkWN;p468`Z-%=#;|KrF7yyNBq_6Z~Z zoqbBeSV)<`o;^rd4e{@gsuIRP?xFuN@KXiY0GNpQp8Y>xih>9Rl8^n@z7NP1;e~q( H?IQmV=Hnf8 delta 2694 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 g$JILjZ45sRAp!sqJcS6g@>> sale.lines.append(sale_line) >>> sale_line.product = product >>> sale_line.quantity = 3.0 - >>> sale.click('quote') - >>> sale.untaxed_amount, sale.tax_amount, sale.total_amount - (Decimal('50.00'), Decimal('5.00'), Decimal('55.00')) - >>> sale.click('confirm') + >>> sale.save() + >>> len(sale.lines) + 3 >>> sale.untaxed_amount, sale.tax_amount, sale.total_amount (Decimal('50.00'), Decimal('5.00'), Decimal('55.00')) + + +Delete a sale line:: + + >>> sale.lines[0].delete() + >>> sale.save() + >>> len(sale.lines) + 2 + + + + diff --git a/trytondo_sale_line_delete_log.egg-info/requires.txt b/trytondo_sale_line_delete_log.egg-info/requires.txt index e2c3145..b80ead1 100644 --- a/trytondo_sale_line_delete_log.egg-info/requires.txt +++ b/trytondo_sale_line_delete_log.egg-info/requires.txt @@ -1,3 +1,4 @@ +trytond_account<6.9,>=6.8 trytond_company<6.9,>=6.8 trytond_sale<6.9,>=6.8 trytond<6.9,>=6.8