diff --git a/c b/c deleted file mode 100644 index 38166420..00000000 --- a/c +++ /dev/null @@ -1,1171 +0,0 @@ -commit 46fa1f62830afde22dd76d6830f69a698264ead2 (HEAD -> 17.0-mig-rma) -Author: Carlos Vallés Fuster -Date: Wed Mar 6 08:32:41 2024 +0100 - - [IMP] rma: pre-commit auto fixes - -commit f4577808ab2d11930a5eb31ed2e2427ac229eb84 -Author: Florian da Costa -Date: Tue Nov 28 12:56:20 2023 +0100 - - [IMP] Remove domain from onchange method and put it in field view - -commit b9f0b7a60df38a05a8bbce4d6be147cab52ff3ac -Author: Florian da Costa -Date: Tue Nov 28 09:52:38 2023 +0100 - - [FIX] Delete rma_picking_wizard_item on cascade to avoid failure - -commit 338c2f83694766104d428758aa141abdb67e0295 -Author: JordiMForgeFlow -Date: Mon Nov 20 10:12:41 2023 +0100 - - [IMP] rma: mark RMA location as return location - -commit 8df45b0fe2ebb6b3e7785db66407dcd4248812e2 -Author: AaronHForgeFlow -Date: Thu Nov 16 15:40:01 2023 +0100 - - [FIX] rma: RMA location in the warehouse should not be inside stock - -commit 8e5b21126b05cfb9a823e974099201c7007dabe7 -Author: ChrisOForgeFlow <94866688+ChrisOForgeFlow@users.noreply.github.com> -Date: Fri Oct 27 07:41:54 2023 -0500 - - [14.0][IMP] added default operation on rma group, easy setup before rma lines created (#452) - - * [14.0][IMP] added default operation on rma group, easy setup before rma lines created - - * [IMP] added fields for default route created by wizard on rma group - - * fix: get right price after create rma order line - -commit 1d71d2862e036d3b0d737730fa108feeb1ee45ce -Author: SergiCForgeFlow -Date: Tue Apr 4 11:45:50 2023 +0200 - - [FIX] Restrict approval rights to RMA Manager - -commit fe1bcddd748fb91d5fa3fe1785ad94f574808b52 -Author: AaronHForgeFlow -Date: Fri Oct 27 11:49:33 2023 +0200 - - [IMP] rma: date_rma in lines - -commit ee0d1fda11ef27a3d19c80a59c7a090091878387 -Author: DavidJForgeFlow -Date: Fri Apr 28 10:37:41 2023 +0200 - - [IMP] rma: add date to rma_order_line - -commit 5ee74fda1363e9db5c3b3194d9414fc600952bb0 -Author: Florian da Costa -Date: Fri Oct 27 09:35:40 2023 +0200 - - rma : Fix description size in rma order line view form - -commit 91fec438b97f176c624f6ef8b48d6222ac881243 -Author: JordiMForgeFlow -Date: Tue Oct 10 10:18:02 2023 +0200 - - [FIX] rma: correctly display fields in product category view - -commit 23da1ccb94dbd9603ccd8ba71e5efcb6b3eb55a2 -Author: Joan Sisquella -Date: Thu May 25 17:53:49 2023 +0200 - - [FIX] rma: procurement origin - - In the current implementation of Odoo's _assign_picking() method in stock.move, there's a conditional check that looks at whether all the moves associated with a picking have the same partner_id and origin. If any move doesn't align with these conditions, the origin of the picking is set to False. - - if any(picking.partner_id.id != m.partner_id.id or - picking.origin != m.origin for m in moves): - # If a picking is found, we'll append `move` to its move list and thus its - # `partner_id` and `ref` field will refer to multiple records. In this - # case, we chose to wipe them. - picking.write({ - 'partner_id': False, - 'origin': False, - }) - In the context of RMA when we have multiple moves associated with a picking, each coming from a different RMA order line, we encounter a problem. Each move has its origin set as the name of the RMA orde line (line.name), so as soon as a second move from a different line is appended to the picking, the origin of the picking is wiped, because it doesn't match the origin of the first move. - - In order to prevent the partner_id of the picking from being set to False when there are multiple associated moves, I propose that we change the origin of the procurement from the name of the RMA line to the name of the procurement group (group.name). This way, all moves associated with a picking will share the same origin, preserving the origin of the picking and ensuring it doesn't get inadvertently set to False. - -commit eee6edcc2f4e4cd641ea480f3c4f53b950218721 -Author: DavidJForgeFlow -Date: Tue May 2 10:17:08 2023 +0200 - - [FIX] rma: get_move_rma dropship - -commit 0fa5fa17b01b695f660e3298b8269dcd351dd69d -Author: DavidJForgeFlow -Date: Tue May 2 09:34:46 2023 +0200 - - [FIX] rma: dropship from vendor as outgoing - -commit a2e03f1c26adf6a88e2a08df80295757d48ce928 -Author: DavidJForgeFlow -Date: Tue May 2 09:32:46 2023 +0200 - - [FIX] rma: get all partner RMA - -commit 92c591f3308911fe0d87094b8b8dfeb85af550b8 -Author: DavidJForgeFlow -Date: Thu Mar 9 19:57:20 2023 +0100 - - [FIX] rma: some fixups - -commit 010bdc507063b790e9304a2c4d004e13de9021b5 -Author: DavidJForgeFlow -Date: Thu Mar 9 18:19:17 2023 +0100 - - [FIX] rma: make picking product_uom_qty - -commit 0422852a8848b2b68ddae15f4117d012af837c61 -Author: DavidJForgeFlow -Date: Fri Mar 3 17:00:11 2023 +0100 - - [FIX] rma: product_uom_qty not in move_line_ids - -commit b67ac1748c5a99434891170504d1091cbce92b02 -Author: DavidJForgeFlow -Date: Wed Feb 22 15:33:49 2023 +0100 - - [16.0][FIX] rma: return of button done - -commit 87214a6c220610e060c3c94af507d71558ebf8e4 -Author: DavidJForgeFlow -Date: Wed Feb 22 15:25:47 2023 +0100 - - [FIX] rma: deprecated test warning fix - -commit 391aaa8f934deaff0f52e5d14ec0e1c71286a803 -Author: DavidJForgeFlow -Date: Tue Feb 21 15:03:29 2023 +0100 - - [IMP] rma: limit state statusbar - -commit 2a5952e147e621a180f99599332d2f0331bd6a2b -Author: Lois Rilo -Date: Tue Feb 21 11:31:47 2023 +0100 - - [FIX] rma: in multi step routes, only reserve first step - - We shoul not force reservation on next steps on a multi step - route, oherwise a inconsistency is generated and the transfers - cannot be processed or cancel so the user gets stuck ("it is - not possible to unreserve more products that you have in stock" - error). - -commit 4dabdbac2c34858cbeacdfe04108bec1b7dfba4e -Author: DavidJForgeFlow -Date: Tue Feb 14 17:31:07 2023 +0100 - - [IMP] rma: cancel rma_lines - -commit 2989ff7bf6448008c6990026562ca45d1c8209ee -Author: Florian da Costa -Date: Thu Dec 1 17:23:25 2022 +0100 - - [FIX] Move some field from onchange to compute fields to avoid issues in views - -commit 8f31e4534fd4b9b0ce044cd3bf1b46f3d74e9d72 -Author: DavidJForgeFlow -Date: Wed Feb 1 12:57:03 2023 +0100 - - [14.0][FIX] rma: add stock move in supplier group - -commit 6ca45d19a2ec70c0c73174fddca54a787afa0312 -Author: Lois Rilo -Date: Thu Jan 5 15:44:04 2023 +0100 - - [FIX] rma: remove "Add new line" in RMA group. - - This was not the intended way to add RMA lines to a group. - Users are supposed to use the wizards to do so (add from stock - move, add from serial, etc.). Having the option to use "add - new line" was only leading to errors and confusion. - -commit c2698b2d5e8efa114eaac911d7ac3bf03f7969db -Author: Lois Rilo -Date: Mon Jan 2 11:10:02 2023 +0100 - - [IMP] rma: print serial/lot number in RMA group report - -commit 258118b556a5ca48910216677471df89d0697904 -Author: Lois Rilo -Date: Mon Jan 2 10:56:18 2023 +0100 - - [IMP] rma: order by id desc - -commit e0cb763b87c043a7e02d43c2d890d256762bea05 -Author: Lois Rilo -Date: Mon Jan 2 10:54:00 2023 +0100 - - [IMP] rma: add description to rma order and copy it over to new lines - -commit faaf848fd56a6b87c603d433c3049b2bb7cc7b69 -Author: Lois Rilo -Date: Mon Jan 2 10:22:03 2023 +0100 - - [IMP] rma: rma group supplier form view as a inherited view. - - The goal is to simplify view defintion and do not duplicate - things, requiring to do view changes in two places. - - The same change was done from rma lines some time ago. - -commit 5042966fd83893fd4b6cac667463c6d17ee9a1d3 -Author: Lois Rilo -Date: Wed Dec 28 13:11:19 2022 +0100 - - [FIX] rma: Ensure that configuration on the operation is applied - - Without this, some policies are not being copied from the - operation selected when creating new rma line from a rma group. - - In v16 this patch and the usage of such onchange can be removed - in favor of (pre)computed stored editable fields for all policies - and configuration in the RMA operation. - -commit b323c50d0ff8d4b80c4c66f20b58411d35476c93 -Author: Florian da Costa -Date: Tue May 3 10:46:14 2022 +0200 - - [FIX] count produced products going to customer as out pickings - -commit bd42a48711ca301cd2702946f486f432d631c2e4 -Author: DavidJForgeFlow -Date: Tue Dec 20 10:16:01 2022 +0100 - - [14.0][IMP] rma: add lot/serial in report - -commit ee4b9601f3daadd7df6b3b6b21f7de0dcaa4a0bb -Author: AnnaPForgeFlow -Date: Mon Nov 7 10:22:51 2022 +0100 - - [IMP] rma: add translations - -commit 2ce1b6d4b21239cea3e99dfd1472b7f63cb4eccd -Author: Jordi Ballester Alomar -Date: Wed Nov 30 16:34:44 2022 +0100 - - [FIX] fix empty parter on rma picking - -commit c4f6100703541ac05cd7622835be47e0e2f554e2 -Author: DavidJForgeFlow -Date: Wed Nov 30 12:58:14 2022 +0100 - - [14.0][IMP] rma: pass product in create lot - -commit 0bb07d5e0199d8590b501be3cec75dd39541f962 -Author: Florian da Costa -Date: Mon Nov 28 15:07:46 2022 +0100 - - [16.0][MIG] Migrate rma module to v16 - -commit 1a2599e86602b04304616c16a9b187ac340cf8a5 -Author: Jordi Ballester Alomar -Date: Wed Nov 23 15:26:03 2022 +0100 - - [IMP] centralize the logic to get the correct cost of the RMA. - -commit 4f59aea9e33a1d4865dc81ff1db71e31d4afadc8 -Author: Jordi Ballester Alomar -Date: Mon Nov 21 15:13:06 2022 +0100 - - [FIX] include anglo-saxon price unit calculation in refunds. - Otherwise the anglo saxon entries won't be correct. - For example, the Interim (Delivered) account should balance - after receiving and triggering a refund on a customer rma. - -commit b688c7faae6ab6e6ed4a699e864ffaf415444e58 -Author: Jordi Ballester -Date: Sun Jun 26 08:38:43 2022 +0200 - - [IMP] rma_sale: introduce new config settings. - - auto_confirm_rma_sale - - free_of_charge_rma_sale - -commit d91868ff4dc948a1bb6b78466b3943eefce465e2 -Author: DavidJForgeFlow -Date: Mon Jul 11 10:17:38 2022 +0200 - - [15.0][FIX] rma_sale: fixup of procurement - -commit 84ee05edcc364073b7bdf30edc4045a9ce2c1d5f -Author: Stefan Rijnhart -Date: Sat Jun 11 12:09:06 2022 +0200 - - [IMP] rma: prevent the creation of zero qty moves - -commit 84cec307495f82218e116c88af2ec1b7c7c9cffa -Author: Florian da Costa -Date: Fri Jul 1 13:53:14 2022 +0200 - - [IMP] Make rma order view cleaner for user - Hide button and fields depending on the policy chosen on the rma line - -commit fc1cde633612da0c25d8bd12ede08d30b7e66d8e -Author: Florian da Costa -Date: Wed Jun 8 15:55:52 2022 +0200 - - Hide smart button when empty - -commit b96eff7aac05c39691526333a2ff3748c022834d -Author: Stefan Rijnhart -Date: Fri Jun 24 12:07:31 2022 +0200 - - [FIX] rma: improve check on rule selection during procurement - - Fixes #274 - - Thanks to @florian-dacosta for suggesting this approach. - -commit d3da7fe3cc1becd780fc7b3d3cad9a7a965631db -Author: DavidJForgeFlow -Date: Thu Jun 16 11:53:30 2022 +0200 - - [FIX]rma: remove test_rma dependency to Account - -commit 5ac2ad5e3cd105cae266d22606be86db2bac29fe -Author: Cas Vissers -Date: Thu Jun 16 09:30:13 2022 +0200 - - [IMP] Improve multi-company record rules - -commit 5abc94ae3c74ace28ea3d2de5dc2110e2a554d4f -Author: Stefan Rijnhart -Date: Wed Jun 15 17:35:17 2022 +0200 - - [FIX] rma: prevent against warehouse mismatch or missing rules - - When creating pickings, ensure that the applied stock rule was taken from - the operation's routes. Otherwise, the default procurement rules for a - warehouse may kick in, creating incoming customer goods not from the customer - location but from the resupply warehouse. - -commit b8816135e8ba9b37a5ae8409e645e40e9bcacbd5 -Author: Lois Rilo -Date: Mon May 23 18:39:20 2022 +0200 - - [IMP] rma: add rma lines to group selecting serial numbers - -commit c8f6549604f84cad7e055f513ffabddb40435b3e -Author: Lois Rilo -Date: Fri May 13 15:15:36 2022 +0200 - - [IMP] rma: add RMA reference to delivery slip report - -commit ba37754303d5de093ea39f70791267d22ba9b4d6 -Author: Lois Rilo -Date: Wed May 25 17:57:40 2022 +0200 - - [FIX] rma: missing migration scripts and version bump - - Those are needed after making some fields company dependent - -commit 7f989dccf5bc0f80166307034aae05fe77450c1f -Author: DavidFIB -Date: Thu May 19 14:03:40 2022 +0200 - - [15.0][FIX/IMP] Make RMA Operation settings company dependent - -commit c1052effb9304a3540acd994bcb474884bf67384 -Author: DavidFIB -Date: Wed May 18 17:11:45 2022 +0200 - - [14.0][FIX/IMP] Make RMA Operation settings company dependent - -commit 80ea8e3c24d4c1731af551d220e6c4762a20591c -Author: Andrea -Date: Wed Apr 20 16:34:53 2022 +0200 - - [13.0][FIX/IMP] Make RMA Operation settings company dependent - -commit 55fdf4508a5992b2415650e3a101ff2af15eb17e -Author: AaronHForgeFlow -Date: Fri Mar 4 10:56:07 2022 +0100 - - [15.0][IMP] Tests for stock valuation - [FIX] rma: rma_custmer_user has no write permissions in partner, so compute method fails. - [IMP] rma: use rma user in tests - [FIX] rma_account: move_line_id field string - [IMP] rma, rma_account, rma_sale, rma_purchase: tests for stock valuation - [FIX] account_move_line_rma_order_line: minor lint, make auto-install - -commit 8bedb814cfa2030cfe1946ff108270c0afcfa2b3 -Author: Jordi Ballester -Date: Wed Mar 2 11:35:08 2022 +0100 - - [IMP] rma: Refactor all rma modules in order to consider using the correct price unit in moves - Otherwise the inventory accounting will be completely wrong. - -commit d6960ba8b7a1103adb1c5cbb16ba8fec4b082b2a -Author: Florian da Costa -Date: Fri Apr 29 15:54:28 2022 +0200 - - Add missing fields in rma line editable tree in rma group - -commit 37ec3958c811986deec7d088497405d3cb0ca53a -Author: Florian da Costa -Date: Tue May 3 10:06:43 2022 +0200 - - [FIX] Remove useless/bad wiz_id field in rma_make_picking.wizard item preparation - -commit 329887509c1c0fc34dfe6cbceeb4ff6e4232c6da -Author: AaronHForgeFlow -Date: Fri Apr 22 12:00:44 2022 +0200 - - [IMP] COPIER UPDATE: black, isort, prettier - -commit 8a0661b4eb8752f31db6ab8644ec25c638d8c3e6 -Author: Christopher Ormaza -Date: Thu Mar 3 11:53:14 2022 -0500 - - [14.0][FIX] rma: separate stock.move by rma_line_id to fix picking association - -commit a15d7b92660c1e56ef3c3b0df796a5cf2d9a69b0 -Author: Lois Rilo -Date: Fri Mar 4 12:01:02 2022 +0100 - - [FIX] rma: do not force reservation on supplier RMA deliveries - - * remove code call to unexisting `force_asign`. - * only one model per model file and rename as appropriate. - -commit c820fb00fdafe61d32925eac58a1ebad3c631545 -Author: Jasmin Solanki -Date: Wed Feb 23 10:19:21 2022 +0530 - - [IMP] rma: Fix Route View - -commit b9d6f0d2f81831adf2056da999ad079ac5ba1fce -Author: Christopher Ormaza -Date: Fri Feb 11 11:25:20 2022 -0500 - - [15.0][ADD] Mass action for request approval RMA order line - -commit 58c6f344dc565e7762fd850894fa054602d0eb64 -Author: Christopher Ormaza -Date: Mon Feb 7 09:03:08 2022 -0500 - - [FIX] rma: add lot to pickings created from wizard on RMA lines - -commit c3834483839785ca29f36077b90df79da3757c4b -Author: Christopher Ormaza -Date: Fri Jan 28 11:23:47 2022 -0500 - - [IMP] rma, rma_sale: added select all, messages for UX - -commit e9757291b2147cce79c7939e0b1bc05a8235ce97 -Author: Christopher Ormaza -Date: Tue Jan 25 11:26:23 2022 -0500 - - [IMP] rma: Added serial/lot selection on from stock move wizard on rma groups - - added restriction to approve rma with product tracking on serial, should be only one to receive - -commit 3c8c4e92a0e03b8fc43b519cb7d39970fa15d834 -Author: Jordi Ballester -Date: Mon Feb 7 09:16:32 2022 +0100 - - [FIX] rma: compute out_shipment_count correctly. Add test cases - -commit da1b81c29e1f78a80112713397ae25ddebc5e454 -Author: Jordi Ballester -Date: Thu Feb 3 16:04:59 2022 +0100 - - [fix] rma: improve logic to count in and out pickings - In the scenario where we use a 2 or 3 step receipts or pickings - we want to make sure that we correctly count and classify the pickings. - -commit e2cc826381916c3794c63c9eec25f1365260d07c -Author: Jordi Ballester -Date: Wed Feb 2 22:53:30 2022 +0100 - - [fix] rma: when using 2 step receipt or delivery, don't count double - -commit 4de713d759021a5dd0cbc9ab56d980f272113762 -Author: AaronHForgeFlow -Date: Wed Jan 19 18:15:21 2022 +0100 - - [14.0][IMP]rma: make operation editable after approved - * remove also validation error when setting the rma to draft where there are done pickings - -commit 79816ca9440beb84eb723ecc6016e614969b5452 -Author: Jasmin Solanki -Date: Fri Jan 7 16:37:52 2022 +0530 - - [MIG] rma: Migration to 15.0 - -commit bfa70f0aba165cb113ac8bf068a230fce3f42dbc -Author: Jordi Ballester -Date: Wed Oct 27 18:58:41 2021 +0200 - - [rma][fix] allow to set back to approved a done rma - -commit e56b3f285393ecc292abe75a88c10546db9a6f29 -Author: Mateu Griful -Date: Wed Oct 6 12:27:46 2021 +0200 - - Fix Pre-commit Websites - -commit f714e722ee0cb205d9858467151030563b4d4b5f -Author: Lois Rilo -Date: Fri Apr 16 13:07:38 2021 +0200 - - [14.0][MIG] rma*: ir.actions.act_window has different access - right in v14. Actions that read those records need to use - `sudo` to allow non-admin users to be able to use these actions. - -commit 735328d5bdea72e738c4580858c873127f048169 -Author: Raphael Lee <51208020+RLeeOSI@users.noreply.github.com> -Date: Wed Mar 17 14:45:57 2021 -0700 - - [14.0][FIX] warehouse rma location - -commit 80362935b91287a7e4e7491be5c293c6e7a0f6ce -Author: Lois Rilo -Date: Fri Mar 26 11:27:15 2021 +0100 - - [IMP] rma: Do not highlight all action buttons and simplify - rma.line views, supplier view is an extension of customer one. - - This makes easier to edit common elements in both views and ease - maintenance. - -commit c34a26b7e9b7399bd4352175ebc92187fc3dabb5 -Author: Lois Rilo -Date: Fri Mar 26 09:53:18 2021 +0100 - - [FIX] rma: toggle archive button removed in favor of web_ribbon. - -commit 042a217c5760b92d1e35ba4d1491a2494162a852 -Author: MateuGForgeFlow -Date: Mon Feb 1 08:55:19 2021 +0100 - - [14.0][IMP]Fill rma lines in tree (#156) - - * [IMP] rma: Fill rma lines in tree - -commit 6b773e8e46ed3405c0332b93ee37c76934945afc -Author: Mateu Griful -Date: Mon Jan 18 09:20:30 2021 +0100 - - [MIG] rma_account: Migration to 14.0 - -commit d2abe224c4ac20d8064760067aa2dc510acc1d4c -Author: Mateu Griful -Date: Fri Jan 15 16:43:42 2021 +0100 - - [FIX] rma: Create rma supplier action - -commit 424734f2e6b8a47419e90f6da99d319ed1b7e382 -Author: Mateu Griful -Date: Wed Jan 13 10:14:00 2021 +0100 - - [MIG] rma: Migration to 14.0 - fix - -commit 50c4f586c465f5aadfc98cf78a2192fdc7dafbeb -Author: Mateu Griful -Date: Wed Jan 13 09:49:14 2021 +0100 - - [MIG] rma: Migration to 14.0 - fix - -commit 28fcd8efbe559ec2c72e9ead30af5ab985382d33 -Author: Mateu Griful -Date: Tue Jan 12 18:13:54 2021 +0100 - - [MIG] rma: Migration to 14.0 - fix - -commit 3efe41ed86df201764f565789efa9683e78c004f -Author: Mateu Griful -Date: Tue Jan 12 16:54:43 2021 +0100 - - [MIG] rma: Migration to 14.0 - fix - -commit eee8207282f8bf282f5b6cc556bf2239c0934fd5 -Author: Mateu Griful -Date: Mon Dec 28 13:41:31 2020 +0100 - - [IMP] rma - Improve security - -commit 5c61813584446ede8ed1e4a67cdb9bc432553466 -Author: Mateu Griful -Date: Fri Dec 18 15:35:40 2020 +0100 - - [MIG] rma: Migration to 14.0 - -commit 682785c0cbe3c8cac690a9b891e68fb0c5abbdd4 -Author: Mateu Griful -Date: Fri Dec 18 12:26:29 2020 +0100 - - [IMP] rma: black, isort, prettier - -commit 81bd877890b59d195943220beca06d273895969c -Author: Bhavesh Odedra -Date: Wed Dec 16 19:34:18 2020 -0700 - - [FIX] External ID not found in the system: account.res_partner_action_supplier - -commit 072632af5f7ba0eefee0f1735985ed0e821badf3 -Author: HviorForgeFlow -Date: Fri May 29 12:27:01 2020 +0200 - - [IMP] Update pre-commit lints according with OCA ones - -commit 942b50013e045b2fca4811de3d8df4aa6d517418 -Author: ahenriquez -Date: Mon May 4 19:09:10 2020 +0200 - - [FIX]rma report templates group - -commit ff40a0c52fdb090368584eea556d381d468793da -Author: ahenriquez -Date: Thu Jan 23 11:37:38 2020 +0100 - - [ENH]rma_sale traceability - -commit 3d974ca2884d4f826217e494cb08d24617c5f737 -Author: ahenriquez -Date: Fri Feb 14 13:14:45 2020 +0100 - - [IMP]rma enable invoicing from settings - -commit 173e625d9a8cc8c1e5a69296e5599d44f35dd171 -Author: ahenriquez -Date: Fri Feb 14 12:43:49 2020 +0100 - - [FIX]rma_account refund creation - -commit 3ebb73235bffe8a0ab3c88131ae9a7fe2a6e649d -Author: ahenriquez -Date: Fri Feb 14 12:42:47 2020 +0100 - - [IMP]rma master data menus - -commit a1b48af9547b76a388498bf1bcb18e47af475bfb -Author: hveficent -Date: Mon Jan 20 08:10:19 2020 +0100 - - RMA as an APP - -commit d2d7487fee833e3d8e22560aad4c7e258ded3190 -Author: ahenriquez -Date: Tue Jan 14 16:42:55 2020 +0100 - - [MIG] rma: Migration to 13.0 - -commit c7720d32f02dba77a9624eeb7b90b98f711ec63a -Author: ahenriquez -Date: Tue Jan 14 16:36:03 2020 +0100 - - [IMP] : black, isort - -commit c8972eb684ff41c1c262b06a782ca6718e06986d -Author: ahenriquez -Date: Fri Jan 3 13:41:25 2020 +0100 - - [UPT]rma group report to v12 - -commit 3443b973d7145a5a208aa85aa96672d7616389f5 -Author: Chafique -Date: Fri Dec 6 17:26:22 2019 +0100 - - [10.0][IMP]add report for rma group - -commit bcb3a40b635426c3cfdf2bc32d55528675b4510d -Author: mreficent -Date: Fri Nov 29 18:30:43 2019 +0100 - - [FIX] default_gets: avoid using shadowname 'fields' - -commit 37c80bb7d7e56cbfe65c1646c689d8ff064ad8ad -Author: ahenriquez -Date: Tue Oct 29 16:53:47 2019 +0100 - - [FIX]UsreError to Validation Error - -commit cbeb7e96a4c8687ab47fc0c91f39e7d7cebb55cf -Author: ahenriquez -Date: Tue Oct 29 16:36:59 2019 +0100 - - [FIX]move constraint from the rma order to the line - -commit a1887b5872126dae96a02e499b3e2154bddbf25e -Author: mreficent -Date: Wed Oct 30 19:38:23 2019 +0100 - - [FIX] tests - -commit 975f1403e3247dc8a3f17638627e712ba32bea35 -Author: ahenriquez -Date: Tue Oct 8 18:05:47 2019 +0200 - - [FIX] description on rma models - -commit e3c869f4af9522328eb98c316307114bc2c1056f -Author: ahenriquez -Date: Mon Sep 23 17:45:51 2019 +0200 - - [IMP]return qty instead of ordered qty - -commit bbddd29cb577b4f0dc0a664dafe7bd97d35492e0 -Author: ahenriquez -Date: Mon Sep 23 14:04:58 2019 +0200 - - [FIX]supplier lines field description - -commit db0f6841aee8d5548046b58313f071262925b9fb -Author: ahenriquez -Date: Fri Sep 20 11:33:55 2019 +0200 - - [ENH]activate description also fro customer RMAs - [ENH]add term and conditions field to be printed and send to the partner - [FIX]do not show rma groups on the rma line form view if they are not activated - -commit 86630191e5aa4994d8588aeb574d4ac711a6d9a2 -Author: Aaron Henriquez -Date: Mon Jul 15 11:43:23 2019 +0200 - - [FIX]consistency group vs line in the picking count methods - -commit c81644575ba56a9ab09b2b2d14a7088e2d652a0f -Author: Aaron Henriquez -Date: Tue Jul 16 12:40:21 2019 +0200 - - [FIX]wizard to create pickings, not to show rma groups if rma groups are not activated - -commit cfbc1e6901ef9c8765b50a9041a5f024fe923447 -Author: Aaron Henriquez -Date: Thu Jul 11 16:39:50 2019 +0200 - - [FIX]do not copy name when duplicating - -commit 22953ac064c75a3e571366682b6cd6e17211c5fb -Author: Alexandre Fayolle -Date: Fri Jun 21 14:47:51 2019 +0200 - - make the RMA routes shared in multicompany by default - -commit 7488ef974b89e75e09595e7d0cdd8cb38969ae61 -Author: Alexandre Fayolle -Date: Fri Jun 21 14:36:00 2019 +0200 - - [FIX] wrong company on stock rules - - when working with odoobot account, you would get the wrong company_id - on the RMA stock.rules of the warehouse on which you enabled RMA - -commit 755ee3fcdcd61b6f7fa7f9fa08316f147efe7042 -Author: Alexandre Fayolle -Date: Fri Jun 21 09:58:58 2019 +0200 - - [IMP] rma operation form view - - use the archive button in the form view, rather than - a normal boolean field. - -commit 7a20de67363f3ea0aeb77a97d4ac14af6e19d10c -Author: Alexandre Fayolle -Date: Wed Jun 19 00:10:34 2019 +0200 - - [FIX] multicompany security - - the rma module had company_id fields on rma.order and rma.order.line but not on rma.operation, - and no global multicompany record rules. - - -> we fix this and avoid a mess with people allowed to see an operation in the drop down list - but unable to use it because if points to a warehouse of another company - -commit bc33d8e7a0209dfaac60dff531cceda1a36833bb -Author: Bhavesh Odedra -Date: Wed Jun 5 19:12:06 2019 +0530 - - [FIX] Class typo, ProcurementRule is StockRule in V12.0 - -commit fc1fc7177045cac6bdff0f0c900e6fef27d5124f -Author: Bhavesh Odedra -Date: Fri May 24 13:28:54 2019 +0530 - - [SET] Correct website URL for RMA modules - -commit 5ad6741ceb6ff3e38691ea8193bbc2bc29b913ef -Author: Akim Juillerat -Date: Wed Apr 10 15:02:52 2019 +0200 - - [FIX] Remove picking_id from default_get as model does not define it - -commit ec595c9cea4dc3c8cae2d1cf77c30bdc8d77c36f -Author: Akim Juillerat -Date: Mon Mar 18 18:13:25 2019 +0100 - - Define default value for required fields - -commit b87ccca333e0514191abba471c9b33384247a2bf -Author: Akim Juillerat -Date: Mon Mar 18 17:38:46 2019 +0100 - - Use strings on fields compute to allow inheritance - -commit 0b8eaeada4f0a4e624d0b92f5ad178ea2f11f057 -Author: Akim Juillerat -Date: Mon Mar 18 17:31:56 2019 +0100 - - Proxy fields defaults with lambda to allow inheritance - -commit 34540b0cf40835e2c5e99bb9ba7739520d389415 -Author: Akim Juillerat -Date: Tue Mar 12 18:59:47 2019 +0100 - - rma: Fix stock_location res.groups - -commit 4b783c29a184edb62b71d17db20d57553d4d5e40 -Author: Beñat Jimenez -Date: Thu Feb 14 09:28:48 2019 +0100 - - [FIX] qty_delivered is not updated properly - -commit 764075c8cb95a09afff37442d530dad6f7b74fe6 -Author: Adrià Gil Sorribes -Date: Mon Dec 3 13:01:03 2018 +0100 - - [12.0][FIX] Fix search view in rma module - -commit 3dc6c67542d05f6bc7d0b5d1fc32a8d92c8056ca -Author: Adrià Gil Sorribes -Date: Mon Nov 19 16:53:43 2018 +0100 - - [12.0][MIG] Migrate rma module to v12.0 - -commit 5658fcc32f5416422b489341c9a826296c7d5832 -Author: aheficent -Date: Thu Oct 4 16:26:45 2018 +0200 - - [UPT]report usable in v11 - -commit 82e90ece75ea2696a8466c8fb27011f056e350e5 -Author: aaron -Date: Fri May 25 15:34:39 2018 +0200 - - [IMP]add rma line report - -commit d18758210ef9ea0ddbc1076fc0a04eb0f83fb6ae -Author: aheficent -Date: Thu Oct 4 12:10:51 2018 +0200 - - [FIX]text on create supplier rma button - -commit 306ff7586df82389504143dc7aecaea7f3e33842 -Author: aheficent -Date: Fri Aug 24 10:18:30 2018 +0200 - - [IMP]add icon. Courtesy lreficent. - -commit 6a52a708585825ef06e9277ac2753f70f3b4d1cd -Author: aaron -Date: Thu May 24 11:50:28 2018 +0200 - - [FIX]RMA location company is the warehouse company - -commit cba83e69f01b9711ea8465041f30229b7feaee4e -Author: aheficent -Date: Fri Aug 3 11:24:58 2018 +0200 - - [IMP] add group to manage rma groups - -commit e16a91f316473945abaf49d4cc3037a4c343f981 -Author: aheficent -Date: Fri Aug 3 11:01:09 2018 +0200 - - [IMP]product first on view then select document according to product - -commit 6bd70721227aa5c261739a88853912de9c0955ef -Author: aheficent -Date: Mon Jul 30 18:37:35 2018 +0200 - - [FIX]rma test - -commit 78b1f4c4e631b8b04e1065c3fa5b4300b9418276 -Author: aheficent -Date: Mon Jul 30 18:37:14 2018 +0200 - - [FIX]compute_qty_to_receive - -commit 361c7ad31aee0ccb0305876160185f92b6f2f7c8 -Author: aheficent -Date: Mon Jul 30 18:36:49 2018 +0200 - - [FIX]views rma - -commit 6e9092a277e0bbf4bd1f3f70eaab17e3827076e9 -Author: Lois Rilo -Date: Mon May 14 17:05:57 2018 +0200 - - [9.0][IMP] rma: tests moved to Savedpointcase and optimized (66% time reduction) - -commit 0dd045d27a4668e50de74de2dca315fbeff08fb6 -Author: Lois Rilo -Date: Fri Aug 3 12:48:52 2018 +0200 - - [9.0][IMP] rma: configuring rma for a warehouse from the wh form view - -commit f7f3e960a118ec783f93b826316359cafbefaf8b -Author: aheficent -Date: Thu Jul 26 18:41:44 2018 +0200 - - [MIG]rma v110.0.2.0.0 - -commit 92e1033c9f72d1bdeaa706542aed3fffb46627b8 -Author: Maxime Chambreuil -Date: Wed Jun 27 08:09:46 2018 -0500 - - [FIX] Access rights with group deps - -commit 4de6a2d1b696d0768d6dccecfe7f5a6341d9aa4d -Author: Maxime Chambreuil -Date: Tue Jun 26 12:02:00 2018 -0500 - - [FIX] Add read access to stock.move - -commit 4571901891f9e85af618d48b2d7be22e07a92bf0 -Author: Bhavesh Odedra -Date: Thu Jul 19 20:08:43 2018 +0530 - - [FIX] TypeError: unhashable type: 'list' - -commit 7c7b1ad38cab689e66db4ecd8ad1f3348b160ed6 -Author: Maxime Chambreuil -Date: Wed Jun 27 08:09:46 2018 -0500 - - [FIX] Access rights with group deps - -commit 8ca44fbabecebec97e2d7bfa5a1324b5245599d2 -Author: Maxime Chambreuil -Date: Tue Jun 26 12:02:00 2018 -0500 - - [FIX] Add read access to stock.move - -commit 0c9abac186cf18a4cb9d1185d73d469edced17da -Author: Maxime Chambreuil -Date: Mon Jun 25 12:04:11 2018 -0500 - - [FIX] Cannot create partner - -commit 020583b8606802140f119be59db6c97046279de1 -Author: Bhavesh Odedra -Date: Wed Feb 14 19:22:41 2018 +0530 - - [IMP] Various improvements - -commit 216891b1a9b4ba6f5478a1a6af618c4733933b2a -Author: Jordi Ballester -Date: Wed Feb 14 13:35:09 2018 +0100 - - multiple fixes - -commit 3367ce78e4a5ebb12f3f7ca725adf18761ef6a6f -Author: Maxime Chambreuil -Date: Fri Feb 9 16:52:31 2018 -0600 - - [FIX] Errors from tests - -commit 0844d0cebd2da412c9418bff3d1a27a96f0b32a7 -Author: Maxime Chambreuil -Date: Fri Feb 9 12:35:23 2018 -0600 - - [MIG] Migrate configuration and cleanup - -commit 5bfa9d13235acbca9d50c7e477194516217622e3 -Author: Maxime Chambreuil -Date: Fri Feb 9 12:24:45 2018 -0600 - - [FIX] Permissions and remove (en)coding - -commit c663cd2db232926abc91976f3fc35000f70d6fe3 -Author: Bhavesh Odedra -Date: Fri Feb 9 21:56:28 2018 +0530 - - [11.0] MIG: RMA module - -commit 87fadd1d84c7a8f6231397fb23c71576c89b1ad1 -Author: aheficent -Date: Fri Jan 26 18:03:28 2018 +0100 - - [FIX]compute qty when stock moves but not procurements - -commit 138ea708bacc6d0f7ff03c8bd019e61c3dba4cfe -Author: aheficent -Date: Mon Jan 22 11:46:33 2018 +0100 - - [FIX]moved_qty uses moves not procurements - -commit 1c213466140b3c24567b2bd6e55ca8b93dca64c8 -Author: aheficent -Date: Tue Jan 9 14:02:51 2018 +0100 - - [MIG]rma_operating_unit to v10 - -commit 66f741001d0476067173019a72e75f6ef9ba6de1 -Author: Nikul Chaudhary -Date: Tue Jan 9 15:35:29 2018 +0530 - - [IMP] Improved Code. - -commit 4bf794bb1cd7a4f5a3c73e2e0d1e0900c11f95e6 -Author: Nikul Chaudhary -Date: Fri Jan 5 16:43:54 2018 +0530 - - [MIG] Migrated UT & Fixed Travis - -commit f2b5680307cd0945f5ad8824da1c1386626a196b -Author: aheficent -Date: Mon Jan 8 16:18:47 2018 +0100 - - [FIX]error in compute method - -commit 4096024e0e93b9b18884fa556ea9162bc46ef009 -Author: aheficent -Date: Tue Jan 2 13:05:09 2018 +0100 - - [FIX]various fixes - -commit 5ea392345a13eefea324258a72d0cb4d2cfdd286 -Author: Nikul Chaudhary -Date: Fri Nov 10 12:48:55 2017 +0530 - - [IMP] Improved Unit Test Case and Fixed Travis - -commit 97cb9aff5e2aa27f7bec49fd1c0f8c6c419296f6 -Author: aheficent -Date: Thu Dec 21 12:44:57 2017 +0100 - - [FIX]view - -commit ae8548d234e12819ce90be3864cb2665a3ad5af0 -Author: aheficent -Date: Tue Dec 19 16:38:50 2017 +0100 - - [MIG]rma v10 - -commit 0dfeb120e045dcc11811a3cf8755ce8ebb94c30e -Author: lreficent -Date: Thu Nov 9 17:48:55 2017 +0100 - - [9.0][FIX] rma: create supplier rma wizard - -commit f3c592a1bab23408217ab2f08572ba07fe5b3ed0 -Author: lreficent -Date: Wed Oct 25 13:59:19 2017 +0200 - - [9.0] add under_warranty field - -commit 2947a87e7b180269dc67fd9244bb64e7505487ed -Author: lreficent -Date: Mon Oct 23 14:00:01 2017 +0200 - - add partner constrain - -commit 30cbd0bdddd689472e0855e4cad6a778a1cf614b -Author: lreficent -Date: Mon Oct 23 13:24:59 2017 +0200 - - [9.0][IMP] rma: add button to rma's from customers - -commit eb2b47e88f0fa5b3a35d0529af4776b81b82f148 -Author: lreficent -Date: Thu Oct 19 16:06:45 2017 +0200 - - fix rma - -commit 7f14ff8377870df86d35165feee079519adab29f -Author: lreficent -Date: Thu Oct 19 11:12:20 2017 +0200 - - [9.0][FIX] rma: wizard - -commit 7aea0713d618cff906c3304b33205cca5933e54b -Author: lreficent -Date: Thu Oct 19 10:10:19 2017 +0200 - - [9.0][IMP] rma: add constrains - -commit 3c0e629f5706b2e51f3bbd78eb6d3e0d2eb9ec2c -Author: lreficent -Date: Wed Oct 18 12:20:27 2017 +0200 - - [9.0][REW] rma: workflow centralized on rma.order.line and the use of rma.order is optional. - -commit 2b15523f2c96e9be94a766862e0fff64a44d184e -Author: lreficent -Date: Fri Aug 25 17:03:25 2017 +0200 - - [9.0][IMP] rma_purchase: - * remove unneded copy and ondelete attributes. - * simplify action_view methods. - * fix rma line supplier view. - * fix wizard. - * extend README. - * minor extra fixes. - -commit 6df6b80e02e6d7fa3505dff0407e7896b8cfc685 -Author: lreficent -Date: Fri Aug 25 12:22:53 2017 +0200 - - [9.0][IMP] rma_account: - * remove unneded copy attributes. - * simplify action_view methods. - * fix wrong naming. - * fix misplaced views. - * fix wrong count and view actions for rma.orders in invoices. - * fix error when installing the module. - * remove unneded data update when preparing rma lines from invoice lines. - * minor extra fixes. - -commit b2de5addd3f8e8c78ffcf6de03d4a1039633248c -Author: lreficent -Date: Thu Aug 24 13:33:41 2017 +0200 - - [9.0][FIX] - * rma: receipt_policy selections not matching. - * rma_sale: fix _prepare_rma_line_from_sale_order_line. - -commit 80a6b0afd251bc243466c2322c04e9181eb80fe2 -Author: aheficent -Date: Wed Aug 16 12:52:35 2017 +0200 - - [IMP] default operation in product and product_categ for customer and supplier - [IMP]Separate menus for customer and supplier operations - * Add active field to rma operation - * Added tests - * Fix travis - * Fix create supplier rma from customer rma - -commit 313929206971bef4909f3af93424082b7b453efb -Author: lreficent -Date: Wed Aug 2 17:05:58 2017 +0200 - - [9.0][FIX] rma: - * fix assignment of moves. - * default qty in rma lines. - * remove account dependency. - * test and flake8 fixes. - -commit 5e2f6c46d990e35bdc2cf5dcc4d1b8291e2a8ff6 -Author: lreficent -Date: Wed Aug 2 14:04:18 2017 +0200 - - [9.0] rma: remove rma.rule and add that setting to product.category - -commit 8088c3a829fd7c54a43c12f70e45eae303eba8cd -Author: Jordi Ballester -Date: Thu Jul 27 18:17:19 2017 +0200 - - init branch - -commit 6d466171cafe11acec38cd84b7b38d867104fe9f (origin/17.0, 17.0) -Author: AaronHForgeFlow -Date: Tue Nov 7 16:06:08 2023 +0100 - - Init branch 17.0 diff --git a/rma/README.rst b/rma/README.rst deleted file mode 100644 index 65f83cb7..00000000 --- a/rma/README.rst +++ /dev/null @@ -1,171 +0,0 @@ -====================================== -RMA (Return Merchandise Authorization) -====================================== - -.. - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! This file is generated by oca-gen-addon-readme !! - !! changes will be overwritten. !! - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:320013d460e1f02cfc3ff65322457095d8a01aa5d18f2e850b3c7174c16b9bdd - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png - :target: https://odoo-community.org/page/development-status - :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png - :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html - :alt: License: LGPL-3 -.. |badge3| image:: https://img.shields.io/badge/github-OCA%2F-lightgray.png?logo=github - :target: https://github.com/OCA//tree/17.0/rma - :alt: OCA/ -.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/-17-0/-17-0-rma - :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/&target_branch=17.0 - :alt: Try me on Runboat - -|badge1| |badge2| |badge3| |badge4| |badge5| - -A Return Merchandise Authorization (RMA), is a part of the process of -returning a product in order to receive a refund, replacement, or repair -during the product's warranty period. - -The purchaser of the product must contact the manufacturer (or distributor -or retailer) to obtain authorization to return the product. - -The resulting RMA number must be displayed on or included in the returned -product's packaging. - -The issuance of an RMA is a key gatekeeping moment in the reverse logistics -cycle, providing the vendor with a final opportunity to diagnose and correct -the customer's problem with the product (such as improper installation or -configuration) before the customer permanently relinquishes ownership -of the product to the manufacturer, commonly referred to as a return. - -As returns are costly for the vendor and inconvenient for the customer, -any return that can be prevented benefits both parties. - -**Table of contents** - -.. contents:: - :local: - -Configuration -============= - -Security --------- - -Go to Settings > Users and assign the appropiate permissions to users. -Different security groups grant distinct levels of access to the RMA features. - -* Users in group "RMA Customer User" or "RMA Supplier User" can access to, - create and process RMA's associated to customers or suppliers respectively. - -* Users in group "RMA Manager" can access to, create, approve and process RMA's - associated to both customers and suppliers. - -RMA Approval Policy -------------------- - -There are two RMA approval policies in product catogories: - -* One step: Always auto-approve RMAs that only contain products within - categories with this policy. -* Two steps: A RMA order containing a product within a category with this - policy will request the RMA manager approval. - -In order to change the approval policy of a product category follow the next -steps: - -#. Go to *Inventory > Configuration > Products > Product Categories*. -#. Select one and change the field *RMA Approval Policy* to your convenience. - -Other Settings --------------- - -#. Go to RMA > Configuration > Settings > Return Merchandising - Authorization and select the option "Display 3 fields on rma: partner, - invoice address, delivery address" if needed. -#. Go to RMA > Configuration > Warehouse management > Warehouses and add - a default RMA location and RMA picking type for customers and suppliers RMA - picking type. In case the warehouse is configured to use routes, you need to - create at least one route per rma type with at least two push rules (one for - inbound another for outbound) it's very important to select the type of - operation supplier if we are moving in the company and customer if we are - moving out of the company. - -Usage -===== - -RMA are accessible though Inventory menu. There's four menus, divided by type. -Users can access to the list of RMA or RMA lines. - -Create an RMA: - -#. Select a partner. Enter RMA lines associated to an existing picking, or - manually. -#. Request approval and approve. -#. Click on RMA Lines button. -#. Click on more and select an option: "Receive products", "Create Delivery - Order". -#. Go back to the RMA. Set the RMA to done if not further action is required. - -Known issues / Roadmap -====================== - -* Picking operations report in customer RMA dropshipping case is showing - "Vendor Address" while it should be "Customer Address". -* Dropshipping always counted as a delivery on the smart buttons. -* Uninstall hook. -* Constraints instead of required fields on rma.order.line. -* Rename type field on rma.order and rma.order.line - -Bug Tracker -=========== - -Bugs are tracked on `GitHub Issues `_. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us to smash it by providing a detailed and welcomed -`feedback `_. - -Do not contact contributors directly about support or help with technical issues. - -Credits -======= - -Authors -~~~~~~~ - -* ForgeFlow - -Contributors -~~~~~~~~~~~~ - -* Jordi Ballester Alomar -* Aaron Henriquez -* Lois Rilo -* Bhavesh Odedra -* Akim Juillerat -* Alexandre Fayolle -* Chafique Delli -* Héctor Villarreal - -Maintainers -~~~~~~~~~~~ - -This module is maintained by the OCA. - -.. image:: https://odoo-community.org/logo.png - :alt: Odoo Community Association - :target: https://odoo-community.org - -OCA, or the Odoo Community Association, is a nonprofit organization whose -mission is to support the collaborative development of Odoo features and -promote its widespread use. - -This module is part of the `OCA/ `_ project on GitHub. - -You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/rma/__init__.py b/rma/__init__.py deleted file mode 100644 index 79030e0e..00000000 --- a/rma/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -# Copyright (C) 2017-20 ForgeFlow S.L. -# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) - -from . import models -from . import wizards diff --git a/rma/__manifest__.py b/rma/__manifest__.py deleted file mode 100644 index b1aad662..00000000 --- a/rma/__manifest__.py +++ /dev/null @@ -1,39 +0,0 @@ -# Copyright (C) 2017-20 ForgeFlow S.L. -# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) - -{ - "name": "RMA (Return Merchandise Authorization)", - "version": "17.0.1.0.0", - "license": "LGPL-3", - "category": "RMA", - "summary": "Introduces the return merchandise authorization (RMA) process in odoo", - "author": "ForgeFlow", - "website": "https://github.com/OCA/", - "depends": ["stock", "mail", "web"], - "demo": ["demo/stock_demo.xml"], - "data": [ - "security/rma.xml", - "security/ir.model.access.csv", - "data/rma_sequence.xml", - "data/stock_data.xml", - "data/rma_operation.xml", - "report/rma_report.xml", - "report/rma_report_templates.xml", - "views/rma_order_view.xml", - "views/rma_operation_view.xml", - "views/rma_order_line_view.xml", - "views/stock_view.xml", - "views/stock_warehouse.xml", - "views/product_view.xml", - "views/res_partner_view.xml", - "views/res_config_settings_views.xml", - "views/rma_menu.xml", - "wizards/rma_make_picking_view.xml", - "wizards/rma_add_stock_move_view.xml", - "wizards/rma_order_line_make_supplier_rma_view.xml", - "report/report_deliveryslip.xml", - "wizards/rma_add_serial_views.xml", - ], - "installable": True, - "application": True, -} diff --git a/rma/data/rma_operation.xml b/rma/data/rma_operation.xml deleted file mode 100644 index 92e3fec0..00000000 --- a/rma/data/rma_operation.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - Replace After Receive - RPL-C - ordered - received - customer - - - - - - Replace - RPL-S - ordered - ordered - supplier - - - - - - Dropship - Deliver to vendor - DS-RPL-C - ordered - no - customer - - - - - - - Dropship - Deliver to customer - DS-RPL-S - no - ordered - supplier - - - - - - diff --git a/rma/data/rma_sequence.xml b/rma/data/rma_sequence.xml deleted file mode 100644 index db71c5ca..00000000 --- a/rma/data/rma_sequence.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - Customer RMA sequence - rma.order.customer - 5 - RMAG/%(year)s/ - - - - - - Supplier RMA sequence - rma.order.supplier - 5 - RTVG/%(year)s/ - - - - - - - Customer RMA Line sequence - rma.order.line.customer - 5 - RMA/%(year)s/ - - - - - - - Supplier RMA Line sequence - rma.order.line.supplier - 5 - RTV/%(year)s/ - - - - - - diff --git a/rma/data/stock_data.xml b/rma/data/stock_data.xml deleted file mode 100644 index d8dfe694..00000000 --- a/rma/data/stock_data.xml +++ /dev/null @@ -1,206 +0,0 @@ - - - - WH RMA - internal - - - - - DOC - RCO - 5 - - - - - INC - RCI - 5 - - - - - DOS - RSO - 5 - - - - - INS - RSI - 5 - - - - - DSS - DSS - 5 - - - - - RMA → Customer - - RMA → Customer - - - - outgoing - - - - Customer → RMA - - Customer → RMA - - - - incoming - - - - RMA -> Supplier - - RMA -> Supplier - - - - outgoing - - - - Supplier -> RMA - - Supplier -> RMA - - - - incoming - - - - Customer -> Supplier - - Customer -> Supplier - - - - incoming - - - - Supplier -> Customer - - Supplier -> Customer - - - - incoming - - - - - - - - - - - - RMA Customer - - 10 - - - - - - - - RMA Supplier - - 10 - - - - - - - - RMA Dropship - - 10 - - - - - - - - Customer → RMA - pull - - - - make_to_stock - - - - - - RMA → Customer - pull - - - - make_to_stock - - - - - - RMA → Supplier - pull - - - - make_to_stock - - - - - - Supplier → RMA - pull - - - - make_to_stock - - - - - - Customer → Supplier - pull - - - make_to_stock - - - - - - Supplier → Customer - pull - - - make_to_stock - - - - - diff --git a/rma/demo/stock_demo.xml b/rma/demo/stock_demo.xml deleted file mode 100644 index a7554c01..00000000 --- a/rma/demo/stock_demo.xml +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - RMA Customer Sequence out - RMA/CUST/OUT - 5 - - - - - RMA Customer Sequence in - RMA/CUST/IN - 5 - - - - - RMA Supplier Sequence out - RMA/SUPP/OUT - 5 - - - - - RMA Supplier Sequence in - RMA/SUPP/IN - 5 - - - - - RMA Dropship - RMA/DS - 5 - - - - - - Customer -> Supplier - - - - - incoming - - - - Supplier -> Customer - - - - - incoming - - - - - RMA Customer - 10 - - - - - - - - RMA Supplier - 10 - - - - - - - - RMA Dropship - 10 - - - - - - - - - Customer → Supplier - pull - - - - make_to_stock - - - - - - Supplier → Customer - pull - - - - make_to_stock - - - - - - - - - - diff --git a/rma/i18n/es.po b/rma/i18n/es.po deleted file mode 100644 index 29e59b71..00000000 --- a/rma/i18n/es.po +++ /dev/null @@ -1,1785 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * rma -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 16.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-07 07:37+0000\n" -"PO-Revision-Date: 2022-11-07 07:37+0000\n" -"Last-Translator: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__out_shipment_count -msgid "# of Deliveries" -msgstr "# de entregas" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__out_shipment_count -msgid "# of Outgoing Shipments" -msgstr "# de envíos salientes" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__line_count -msgid "# of RMA lines" -msgstr "# de líneas RMA" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__rma_line_count -msgid "# of RMA lines associated" -msgstr "# de líneas RMA asociadas" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__in_shipment_count -#: model:ir.model.fields,field_description:rma.field_rma_order_line__in_shipment_count -msgid "# of Shipments" -msgstr "# de envíos" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__supplier_line_count -msgid "# of Supplier RMAs" -msgstr "# de RMA de proveedores" - -#. module: rma -#: model:ir.actions.report,print_report_name:rma.rma_order_line_report -msgid "('RMA - %s' % (object.name))" -msgstr "('RMA - %s' % (object.name)" - -#. module: rma -#: model:ir.actions.report,print_report_name:rma.rma_order_report -msgid "('RMA Group - %s' % (object.name))" -msgstr "('Grupo RMA - %s' % (object.name)" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Contact Person:" -msgstr "Persona de contacto:" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Date Ordered:" -msgstr "Fecha de pedido:" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Operation:" -msgstr "Operación:" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Origin Reference:" -msgstr "Referencia de origen:" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_delivery_document -msgid "RMA" -msgstr "RMA" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -msgid "Reference:" -msgstr "Referencia:" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Shipping address:" -msgstr "Dirección de envío:" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_needaction -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_needaction -msgid "Action Needed" -msgstr "Acción necesaria" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__active -msgid "Active" -msgstr "Activo" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_button_supplier_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer_form -msgid "Add From Stock Move" -msgstr "Añadir desde movimiento de existencias" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer_form -msgid "Add Lot/Serial Numbers" -msgstr "Agregar números de lote/serie" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_button_supplier_form -msgid "Add Lot/Serial numbers" -msgstr "Agregar números de lote/serie" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_add_serial_wiz_supplier -msgid "Add from Lot/Serial Number" -msgstr "Agregar desde números de lote/serie" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_add_serial_wiz_customer -msgid "Add from Lot/Serial Numbers" -msgstr "Agregar desde números de lote/serie" - -#. module: rma -#: code:addons/rma/wizards/rma_add_stock_move.py:0 -#: model:ir.actions.act_window,name:rma.action_rma_add_stock_move_customer -#: model:ir.actions.act_window,name:rma.action_rma_add_stock_move_supplier -#, python-format -msgid "Add from Stock Move" -msgstr "Añadir desde movimiento de existencias" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order_line__name -#: model:ir.model.fields,help:rma.field_rma_order_line_make_supplier_rma_item__name -msgid "Add here the supplier RMA #. Otherwise an internal code is assigned." -msgstr "Agregue aquí el número de RMA del proveedor. De lo contrario, se asigna un código interno." - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__comment -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -msgid "Additional Information" -msgstr "Información Adicional" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__customer_address_id -#: model:ir.model.fields,help:rma.field_rma_order_line__customer_address_id -msgid "Address of the customer in case of Supplier RMA operation dropship." -msgstr "Dirección del cliente en caso de operación Dropship de RMA de Proveedor." - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__supplier_address_id -#: model:ir.model.fields,help:rma.field_rma_order_line__supplier_address_id -msgid "Address of the supplier in case of Customer RMA operation dropship." -msgstr "Dirección del proveedor en caso de operación de envío directo de RMA del Cliente." - -#. module: rma -#: model:res.groups,name:rma.group_rma_delivery_invoice_address -msgid "Addresses in RMA" -msgstr "Direcciones en RMA" - -#. module: rma -#: code:addons/rma/models/rma_order.py:0 -#, python-format -msgid "All grouped RMA's should have same partner." -msgstr "Todos los RMA agrupados deben tener el mismo socio." - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Approve" -msgstr "Aprobada" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_order__state__approved -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__state__approved -msgid "Approved" -msgstr "Aprobada" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form -msgid "Archived" -msgstr "Archivado" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__assigned_to -#: model:ir.model.fields,field_description:rma.field_rma_order_line__assigned_to -msgid "Assigned To" -msgstr "Asignado a" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_attachment_count -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_attachment_count -msgid "Attachment Count" -msgstr "Recuento de archivos adjuntos" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Back to Approved" -msgstr "Volver a Aprovado" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Back to Draft" -msgstr "Volver al borrador" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_operation__receipt_policy__delivered -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__receipt_policy__delivered -msgid "Based on Delivered Quantities" -msgstr "Basado en las cantidades entregadas" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_operation__delivery_policy__ordered -#: model:ir.model.fields.selection,name:rma.selection__rma_operation__receipt_policy__ordered -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__delivery_policy__ordered -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__receipt_policy__ordered -msgid "Based on Ordered Quantities" -msgstr "Basado en las cantidades pedidas" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_operation__delivery_policy__received -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__delivery_policy__received -msgid "Based on Received Quantities" -msgstr "Basado en las cantidades recibidas" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier -#: model_terms:ir.ui.view,arch_db:rma.view_rma_order_line_make_supplier_rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking -#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking_out -msgid "Cancel" -msgstr "Cancelar" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__code -msgid "Code" -msgstr "Código" - -#. module: rma -#: model:ir.model,name:rma.model_res_company -msgid "Companies" -msgstr "Compañías" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__company_id -#: model:ir.model.fields,field_description:rma.field_rma_order__company_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__company_id -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Company" -msgstr "Compañía" - -#. module: rma -#: model:ir.model,name:rma.model_res_config_settings -msgid "Config Settings" -msgstr "Ajustes de configuración" - -#. module: rma -#: model:ir.ui.menu,name:rma.menu_rma_config -msgid "Configuration" -msgstr "Configuración" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier -#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking -#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking_out -msgid "Confirm" -msgstr "Confirmar" - -#. module: rma -#: model:ir.model,name:rma.model_res_partner -#: model_terms:ir.ui.view,arch_db:rma.view_rma_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form -msgid "Contact" -msgstr "Contacto" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_picking_out -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_button_form -msgid "Create Delivery" -msgstr "Crear entrega" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_picking_in -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_button_form -msgid "Create Incoming Shipment" -msgstr "Crear envío entrante" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_order_line_make_supplier_rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_supplier_rma_button_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_order_line_make_supplier_rma -msgid "Create Supplier RMA" -msgstr "Crear RMA del proveedor" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_order_line_make_supplier_rma -msgid "Create/Update Supplier RMA" -msgstr "Crear/Actualizar RMA de proveedor" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__create_uid -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__create_uid -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__create_uid -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__create_uid -#: model:ir.model.fields,field_description:rma.field_rma_operation__create_uid -#: model:ir.model.fields,field_description:rma.field_rma_order__create_uid -#: model:ir.model.fields,field_description:rma.field_rma_order_line__create_uid -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__create_uid -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__create_uid -msgid "Created by" -msgstr "Creado por" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__create_date -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__create_date -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__create_date -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__create_date -#: model:ir.model.fields,field_description:rma.field_rma_operation__create_date -#: model:ir.model.fields,field_description:rma.field_rma_order__create_date -#: model:ir.model.fields,field_description:rma.field_rma_order_line__create_date -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__create_date -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__create_date -msgid "Created on" -msgstr "Creado en" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__currency_id -msgid "Currency" -msgstr "Moneda" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_operation__type__customer -#: model:ir.model.fields.selection,name:rma.selection__rma_order__type__customer -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__type__customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_tree -msgid "Customer" -msgstr "Cliente" - -#. module: rma -#: model:stock.picking.type,name:rma.picking_type_rma_dropship_return -msgid "Customer -> Supplier" -msgstr "Cliente -> Proveedor" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__customer_address_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__customer_address_id -msgid "Customer Address" -msgstr "Dirección del cliente" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_operation_customer -#: model:ir.ui.menu,name:rma.menu_rma_operation_customer -msgid "Customer Operations" -msgstr "Operaciones del cliente" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_customer_lines -#: model:ir.ui.menu,name:rma.menu_customer_rma -#: model:ir.ui.menu,name:rma.menu_rma_line_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_supplier_form -msgid "Customer RMA" -msgstr "RMA del cliente" - -#. module: rma -#: code:addons/rma/models/stock_warehouse.py:0 -#, python-format -msgid "Customer RMA Deliveries" -msgstr "Entregas RMA del cliente" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_customer -#: model:ir.ui.menu,name:rma.menu_rma_act_customer -msgid "Customer RMA Group" -msgstr "Grupo RMa del cliente" - -#. module: rma -#: code:addons/rma/models/stock_warehouse.py:0 -#, python-format -msgid "Customer RMA Receipts" -msgstr "Recibos RMA del cliente" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__customer_rma_id -msgid "Customer RMA line" -msgstr "Línea RMA del cliente" - -#. module: rma -#: model:stock.picking.type,name:rma.picking_type_rma_cust_in -#: model:stock.rule,name:rma.rule_rma_customer_in_pull -msgid "Customer → RMA" -msgstr "Cliente → RMA" - -#. module: rma -#: model:stock.rule,name:rma.rule_rma_dropship_return -msgid "Customer → Supplier" -msgstr "Cliente → Proveedor" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Customer:" -msgstr "Cliente:" - -#. module: rma -#: model:ir.ui.menu,name:rma.rma_res_partner_menu_customer -msgid "Customers" -msgstr "Clientes" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -msgid "Date" -msgstr "Fecha" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_product_category__rma_customer_operation_id -#: model:ir.model.fields,field_description:rma.field_product_product__rma_customer_operation_id -#: model:ir.model.fields,field_description:rma.field_product_template__rma_customer_operation_id -msgid "Default RMA Customer Operation" -msgstr "Operación de cliente RMA predeterminada" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_product_category__rma_supplier_operation_id -#: model:ir.model.fields,field_description:rma.field_product_product__rma_supplier_operation_id -#: model:ir.model.fields,field_description:rma.field_product_template__rma_supplier_operation_id -msgid "Default RMA Supplier Operation" -msgstr "Operación de proveedor de RMA predeterminada" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__partner_shipping_id -msgid "Deliver To" -msgstr "Entregar a" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form -msgid "Deliveries" -msgstr "Entregas" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__delivery_policy -#: model:ir.model.fields,field_description:rma.field_rma_order_line__delivery_policy -msgid "Delivery Policy" -msgstr "Entregas" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__name -#: model:ir.model.fields,field_description:rma.field_rma_order_line__description -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Description" -msgstr "Descripción" - -#. module: rma -#: model:ir.model.fields,help:rma.field_res_company__group_rma_delivery_address -#: model:ir.model.fields,help:rma.field_res_config_settings__group_rma_delivery_address -msgid "Display 3 fields on rma: partner, invoice address, delivery address" -msgstr "Mostrar 3 campos en rma: socio, dirección de facturación, dirección de entrega" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form -msgid "Display 3 fields on rma: partner, invoice address, delivery address." -msgstr "Mostrar 3 campos en rma: socio, dirección de facturación, dirección de entrega." - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__display_name -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__display_name -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__display_name -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__display_name -#: model:ir.model.fields,field_description:rma.field_rma_operation__display_name -#: model:ir.model.fields,field_description:rma.field_rma_order__display_name -#: model:ir.model.fields,field_description:rma.field_rma_order_line__display_name -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__display_name -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__display_name -msgid "Display Name" -msgstr "Nombre para mostrar" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_order__state__done -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__state__done -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Done" -msgstr "Hecho" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_order__state__draft -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__state__draft -msgid "Draft" -msgstr "Borrador" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form -msgid "Enable RMA invoicing" -msgstr "Habilitar facturación RMA" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order_line__product_tracking -msgid "Ensure the traceability of a storable product in your warehouse." -msgstr "Asegure la trazabilidad de un producto almacenable en su almacén." - -#. module: rma -#: code:addons/rma/wizards/rma_order_line_make_supplier_rma.py:0 -#, python-format -msgid "Enter a positive quantity." -msgstr "Introduzca una cantidad positiva." - -#. module: rma -#: code:addons/rma/wizards/rma_order_line_make_supplier_rma.py:0 -#, python-format -msgid "Enter a supplier." -msgstr "Introduce un proveedor." - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_order_line_make_supplier_rma -msgid "Existing Supplier RMA to update:" -msgstr "Proveedor existente RMA para actualizar:" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_follower_ids -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_follower_ids -msgid "Followers" -msgstr "Seguidor" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_partner_ids -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_partner_ids -msgid "Followers (Partners)" -msgstr "Seguidores (Socios)" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "General" -msgstr "General" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order_line__sequence -msgid "Gives the sequence of this line when displaying the rma." -msgstr "Da la secuencia de esta línea al mostrar el rma." - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_filter -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "Group By" -msgstr "Agrupar por" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__name -msgid "Group Number" -msgstr "Número de grupo" - -#. module: rma -#: model:ir.model.fields,help:rma.field_res_company__group_rma_lines -#: model:ir.model.fields,help:rma.field_res_config_settings__group_rma_lines -#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form -msgid "Group RMA lines in one RMA group" -msgstr "Agrupar líneas de RMA en un grupo de RMA" - -#. module: rma -#: code:addons/rma/models/rma_order.py:0 -#: code:addons/rma/models/rma_order_line.py:0 -#, python-format -msgid "Group partner and RMA's partner must be the same." -msgstr "El socio del grupo y el socio de RMA deben ser el mismo." - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__has_message -#: model:ir.model.fields,field_description:rma.field_rma_order_line__has_message -msgid "Has Message" -msgstr "Tiene mensaje" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__id -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__id -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__id -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__id -#: model:ir.model.fields,field_description:rma.field_rma_operation__id -#: model:ir.model.fields,field_description:rma.field_rma_order__id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__id -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__id -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__id -msgid "ID" -msgstr "Identidad" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__message_needaction -#: model:ir.model.fields,help:rma.field_rma_order__message_unread -#: model:ir.model.fields,help:rma.field_rma_order_line__message_needaction -#: model:ir.model.fields,help:rma.field_rma_order_line__message_unread -msgid "If checked, new messages require your attention." -msgstr "Si está marcado, los nuevos mensajes requieren su atención." - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__message_has_error -#: model:ir.model.fields,help:rma.field_rma_order__message_has_sms_error -#: model:ir.model.fields,help:rma.field_rma_order_line__message_has_error -#: model:ir.model.fields,help:rma.field_rma_order_line__message_has_sms_error -msgid "If checked, some messages have a delivery error." -msgstr "Si está marcada, algunos mensajes tienen un error de entrega." - -#. module: rma -#: model:ir.model.fields,help:rma.field_stock_warehouse__rma_in_this_wh -msgid "" -"If set, it will create RMA location, picking types and routes for this " -"warehouse." -msgstr "Si se configura, creará una ubicación de RMA, tipos de selección y rutas para este " -"almacén." - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form -msgid "Inbound" -msgstr "Entrante" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__in_route_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__in_route_id -msgid "Inbound Route" -msgstr "Ruta entrante" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__in_warehouse_id -#: model:ir.model.fields,field_description:rma.field_rma_order__in_warehouse_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__in_warehouse_id -msgid "Inbound Warehouse" -msgstr "Almacén de entrada" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_incoming -msgid "Incoming Qty" -msgstr "Cantidad entrante" - -#. module: rma -#: model:ir.model,name:rma.model_stock_location_route -msgid "Inventory Routes" -msgstr "Rutas de inventario" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_is_follower -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_is_follower -msgid "Is Follower" -msgstr "Es seguidor" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__item_ids -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__item_ids -msgid "Items" -msgstr "Elementos" - -#. module: rma -#: model:ir.model,name:rma.model_rma_make_picking_wizard_item -msgid "Items to receive" -msgstr "Artiulos para recibir" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz____last_update -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move____last_update -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard____last_update -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item____last_update -#: model:ir.model.fields,field_description:rma.field_rma_operation____last_update -#: model:ir.model.fields,field_description:rma.field_rma_order____last_update -#: model:ir.model.fields,field_description:rma.field_rma_order_line____last_update -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma____last_update -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item____last_update -msgid "Last Modified on" -msgstr "Última modificación el" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__write_uid -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__write_uid -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__write_uid -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__write_uid -#: model:ir.model.fields,field_description:rma.field_rma_operation__write_uid -#: model:ir.model.fields,field_description:rma.field_rma_order__write_uid -#: model:ir.model.fields,field_description:rma.field_rma_order_line__write_uid -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__write_uid -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__write_uid -msgid "Last Updated by" -msgstr "Última actualización por" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__write_date -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__write_date -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__write_date -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__write_date -#: model:ir.model.fields,field_description:rma.field_rma_operation__write_date -#: model:ir.model.fields,field_description:rma.field_rma_order__write_date -#: model:ir.model.fields,field_description:rma.field_rma_order_line__write_date -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__write_date -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__write_date -msgid "Last Updated on" -msgstr "Última actualización en" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__lot_id -msgid "Lot/Serial Number" -msgstr "Número de lote/serie" - -#. module: rma -#: code:addons/rma/wizards/rma_add_serial.py:0 -#, python-format -msgid "Lot/Serial Number %s already added." -msgstr "Número de lote/serie %s ya agregado." - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__lot_domain_ids -msgid "Lots Domain" -msgstr "Lotes Dominio" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__lot_ids -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__lot_ids -msgid "Lots/Serials selected" -msgstr "Lotes/Serie seleccionados" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_main_attachment_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_main_attachment_id -msgid "Main Attachment" -msgstr "Archivo adjunto principal" - -#. module: rma -#: model:ir.ui.menu,name:rma.menu_rma_rma_control -msgid "Master Data" -msgstr "Master Data" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_has_error -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_has_error -msgid "Message Delivery error" -msgstr "Error de entrega de mensajes" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_ids -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_ids -msgid "Messages" -msgstr "Mensajes" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "My RMAs" -msgstr "Mis RMA" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_order_line_make_supplier_rma -msgid "New RMA details:" -msgstr "Nuevos detalles de RMA:" - -#. module: rma -#: code:addons/rma/wizards/rma_make_picking.py:0 -#, python-format -msgid "No deliveries needed for this operation" -msgstr "No se necesitan entregas para esta operación" - -#. module: rma -#: code:addons/rma/wizards/rma_make_picking.py:0 -#, python-format -msgid "No quantity to transfer on %(arg1)s shipment of product %(arg2)s." -msgstr "No hay cantidad para transferir en %a envío de productos." - -#. module: rma -#: code:addons/rma/wizards/rma_make_picking.py:0 -#, python-format -msgid "No route specified" -msgstr "Sin ruta especificada" - -#. module: rma -#: code:addons/rma/models/procurement_group.py:0 -#, python-format -msgid "" -"No rule found for this product %(product)s and location %(location)s that is" -" valid for RMA operations." -msgstr "No se encontró ninguna regla para este producto %(product)s y" -" ubicación %(location)s que sea válida para operaciones de RMA." - -#. module: rma -#: code:addons/rma/wizards/rma_make_picking.py:0 -#, python-format -msgid "No shipments needed for this operation" -msgstr "No se necesitan envíos para esta operación" - -#. module: rma -#: code:addons/rma/wizards/rma_make_picking.py:0 -#, python-format -msgid "No warehouse specified" -msgstr "No se especifica almacén" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_operation__delivery_policy__no -#: model:ir.model.fields.selection,name:rma.selection__rma_operation__receipt_policy__no -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__delivery_policy__no -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__receipt_policy__no -msgid "Not required" -msgstr "No requerido" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_needaction_counter -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_needaction_counter -msgid "Number of Actions" -msgstr "Número de acciones" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_has_error_counter -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_has_error_counter -msgid "Number of errors" -msgstr "Número de errores" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__message_needaction_counter -#: model:ir.model.fields,help:rma.field_rma_order_line__message_needaction_counter -msgid "Number of messages which requires an action" -msgstr "Número de mensajes que requieren una acción" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__message_has_error_counter -#: model:ir.model.fields,help:rma.field_rma_order_line__message_has_error_counter -msgid "Number of messages with delivery error" -msgstr "Número de mensajes con error de entrega" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__message_unread_counter -#: model:ir.model.fields,help:rma.field_rma_order_line__message_unread_counter -msgid "Number of unread messages" -msgstr "Número de mensajes no leídos" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__product_category__rma_approval_policy__one_step -msgid "One step" -msgstr "Un paso" - -#. module: rma -#: code:addons/rma/wizards/rma_make_picking.py:0 -#, python-format -msgid "Only RMA lines from the same partner can be processed at the same time" -msgstr "Solo las líneas RMA del mismo socio se pueden procesar al mismo tiempo" - -#. module: rma -#: code:addons/rma/wizards/rma_order_line_make_supplier_rma.py:0 -#, python-format -msgid "" -"Only RMA lines from the same supplier can be processed at the same time" -msgstr "Solo las líneas RMA del mismo proveedor se pueden procesar al mismo tiempo" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__operation_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__operation_id -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "Operation" -msgstr "Operación" - -#. module: rma -#: model:ir.model.fields,help:rma.field_product_category__rma_approval_policy -#: model:ir.model.fields,help:rma.field_product_product__rma_approval_policy -#: model:ir.model.fields,help:rma.field_product_template__rma_approval_policy -msgid "" -"Options: \n" -" * One step: Always auto-approve RMAs that only contain products within categories with this policy.\n" -"* Two steps: A RMA containing a product within a category with this policy will request the RMA manager approval." -msgstr "Opciones: \n" -"* Un paso: Siempre apruebe automáticamente las RMA que solo contengan productos dentro de categorías con esta política.\n" -"* Dos pasos: una RMA que contenga un producto dentro de una categoría con esta política solicitará la aprobación del administrador de RMA" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__date_rma -msgid "Order Date" -msgstr "Fecha de orden" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Origin" -msgstr "Origen" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__reference_move_id -msgid "Originating Stock Move" -msgstr "Movimiento de existencias de origen" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Other Info" -msgstr "Otra información" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form -msgid "Outbound" -msgstr "Saliente" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__out_route_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__out_route_id -msgid "Outbound Route" -msgstr "Ruta de salida" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__out_warehouse_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__out_warehouse_id -msgid "Outbound Warehouse" -msgstr "Almacén de salida" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_outgoing -msgid "Outgoing Qty" -msgstr "Cantidad saliente" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__partner_id -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__partner_id -#: model:ir.model.fields,field_description:rma.field_rma_order__partner_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__partner_id -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_filter -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "Partner" -msgstr "Socio" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__reference -msgid "Partner Reference" -msgstr "Referencia de socios" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__delivery_address_id -msgid "Partner delivery address" -msgstr "Dirección de entrega del socio" - -#. module: rma -#: model:ir.ui.menu,name:rma.menu_rma_config_partners -msgid "Partners" -msgstr "Socios" - -#. module: rma -#: code:addons/rma/wizards/rma_add_serial.py:0 -#: code:addons/rma/wizards/rma_add_stock_move.py:0 -#: code:addons/rma/wizards/rma_order_line_make_supplier_rma.py:0 -#, python-format -msgid "Please define a warehouse with a default RMA location" -msgstr "Defina un almacén con una ubicación RMA predeterminada" - -#. module: rma -#: code:addons/rma/models/rma_order_line.py:0 -#, python-format -msgid "Please define a warehouse with a default RMA location." -msgstr "Defina un almacén con una ubicación RMA predeterminada." - -#. module: rma -#: code:addons/rma/wizards/rma_add_serial.py:0 -#: code:addons/rma/wizards/rma_add_stock_move.py:0 -#: code:addons/rma/wizards/rma_order_line_make_supplier_rma.py:0 -#, python-format -msgid "Please define an RMA route" -msgstr "Defina una ruta RMA" - -#. module: rma -#: code:addons/rma/models/rma_order_line.py:0 -#, python-format -msgid "Please define an RMA route." -msgstr "Defina una ruta RMA." - -#. module: rma -#: code:addons/rma/wizards/rma_add_serial.py:0 -#: code:addons/rma/wizards/rma_add_stock_move.py:0 -#, python-format -msgid "Please define an operation first" -msgstr "Por favor, defina una operación primero" - -#. module: rma -#: code:addons/rma/models/rma_order_line.py:0 -#, python-format -msgid "Please define an operation first." -msgstr "Por favor, defina una operación primero." - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form -msgid "Policies" -msgstr "Políticas" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__price_unit -msgid "Price Unit" -msgstr "Precio unitario" - -#. module: rma -#: model:ir.model,name:rma.model_procurement_group -msgid "Procurement Group" -msgstr "Grupo de Adquisiciones" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__product_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__product_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__product_id -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "Product" -msgstr "Producto" - -#. module: rma -#: code:addons/rma/models/rma_order_line.py:0 -#, python-format -msgid "" -"Product %s has serial tracking configuration, quantity to receive should be " -"1" -msgstr "El producto %s tiene una configuración de seguimiento en serie, la cantidad a recibir debe ser " -"1" - -#. module: rma -#: model:ir.model,name:rma.model_product_category -msgid "Product Category" -msgstr "Categoria de producto" - -#. module: rma -#: model:ir.model,name:rma.model_product_template -msgid "Product Template" -msgstr "Plantilla de producto" - -#. module: rma -#: model:ir.ui.menu,name:rma.rma_product_product_menu -msgid "Product Variants" -msgstr "Variantes del producto" - -#. module: rma -#: model:ir.ui.menu,name:rma.menu_rma_config_stock -msgid "Products" -msgstr "Productos" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_delivered -msgid "Qty Delivered" -msgstr "Cantidad entregada" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_received -msgid "Qty Received" -msgstr "Cantidad recibida" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_to_deliver -msgid "Qty To Deliver" -msgstr "Cantidad a entregar" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_to_receive -msgid "Qty To Receive" -msgstr "Cantidad a recibir" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_in_supplier_rma -msgid "Qty in Supplier RMA" -msgstr "Cantidad en proveedor RMA" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_to_supplier_rma -msgid "Qty to send to Supplier RMA" -msgstr "Cantidad para enviar al proveedor RMA" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Quantities" -msgstr "Cantidades" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__product_qty -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Quantity" -msgstr "Cantidad" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__product_qty -msgid "Quantity Ordered" -msgstr "Cantidad ordenada" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__qty_to_deliver -msgid "Quantity To Deliver" -msgstr "Cantidad a entregar" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__qty_to_receive -msgid "Quantity to Receive" -msgstr "Cantidad a recibir" - -#. module: rma -#: model:ir.actions.report,name:rma.rma_order_line_report -#: model:ir.model,name:rma.model_rma_order_line -#: model:ir.model.fields,field_description:rma.field_procurement_group__rma_id -#: model:ir.module.category,name:rma.module_category_rma -#: model:ir.ui.menu,name:rma.menu_rma_root -#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form -msgid "RMA" -msgstr "RMA" - -#. module: rma -#: code:addons/rma/wizards/rma_make_picking.py:0 -#, python-format -msgid "RMA %s is not approved" -msgstr "RMA %s no está aprobado" - -#. module: rma -#: model:stock.picking.type,name:rma.picking_type_rma_sup_out -msgid "RMA -> Supplier" -msgstr "RMA -> Proveedor" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_product_category__rma_approval_policy -#: model:ir.model.fields,field_description:rma.field_product_product__rma_approval_policy -#: model:ir.model.fields,field_description:rma.field_product_template__rma_approval_policy -msgid "RMA Approval Policy" -msgstr "Política de aprobación de RMA" - -#. module: rma -#: model:stock.location.route,name:rma.route_rma_customer -msgid "RMA Customer" -msgstr "Cliente RMA" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_customer_in_pull_id -msgid "RMA Customer In Rule" -msgstr "Cliente RMA en regla" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_customer_out_pull_id -msgid "RMA Customer Out Rule" -msgstr "Regla de salida del cliente de RMA" - -#. module: rma -#: model:res.groups,name:rma.group_rma_customer_user -msgid "RMA Customer User" -msgstr "Usuario del cliente de RMA" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_cust_in_type_id -msgid "RMA Customer in Type" -msgstr "Cliente RMA en tipo" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_cust_out_type_id -msgid "RMA Customer out Type" -msgstr "Tipo de salida de cliente RMA" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_filter -msgid "RMA Date" -msgstr "Fecha RMA" - -#. module: rma -#: model:stock.location.route,name:rma.route_rma_dropship -msgid "RMA Dropship" -msgstr "Entrega directa de RMA" - -#. module: rma -#: model:ir.actions.report,name:rma.rma_order_report -#: model:ir.model,name:rma.model_rma_order -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__rma_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__rma_id -msgid "RMA Group" -msgstr "Grupo RMA" - -#. module: rma -#: model:res.groups,name:rma.group_rma_groups -msgid "RMA Groups" -msgstr "Grupos RMA" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__line_id -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "RMA Line" -msgstr "Línea RMA" - -#. module: rma -#: model:ir.model,name:rma.model_rma_order_line_make_supplier_rma -msgid "RMA Line Make Supplier RMA" -msgstr "RMA Línea Marca Proveedor RMA" - -#. module: rma -#: model:ir.model,name:rma.model_rma_order_line_make_supplier_rma_item -msgid "RMA Line Make Supplier RMA Item" -msgstr "Línea RMA Marca Proveedor Artículo RMA" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form -msgid "RMA Lines" -msgstr "Líneas RMA" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__lot_rma_id -msgid "RMA Location" -msgstr "Ubicación RMA" - -#. module: rma -#: model:res.groups,name:rma.group_rma_manager -msgid "RMA Manager" -msgstr "Gerente de RMA" - -#. module: rma -#: model:ir.model,name:rma.model_rma_operation -msgid "RMA Operation" -msgstr "Operación RMA" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form -msgid "RMA Operations" -msgstr "Operaciones RMA" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__rma_id -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__rma_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__rma_id -msgid "RMA Order" -msgstr "Pedido RMA" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.stock_location_route_form_view_inherit_rma_stock -msgid "RMA Order Lines" -msgstr "Líneas de pedido RMA" - -#. module: rma -#: model:stock.location.route,name:rma.route_rma_supplier -msgid "RMA Supplier" -msgstr "Proveedor RMA" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_supplier_in_pull_id -msgid "RMA Supplier In Rule" -msgstr "Proveedor RMA en regla" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_supplier_out_pull_id -msgid "RMA Supplier Out Rule" -msgstr "Regla de salida del proveedor de RMA" - -#. module: rma -#: model:res.groups,name:rma.group_rma_supplier_user -msgid "RMA Supplier User" -msgstr "Usuario proveedor RMA" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_sup_in_type_id -msgid "RMA Supplier in Type" -msgstr "Proveedor RMA en Tipo" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_sup_out_type_id -msgid "RMA Supplier out Type" -msgstr "Tipo de salida del proveedor de RMA" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_res_company__group_rma_delivery_address -#: model:ir.model.fields,field_description:rma.field_res_config_settings__group_rma_delivery_address -msgid "RMA addresses" -msgstr "Direcciones RMA" - -#. module: rma -#: code:addons/rma/models/rma_order_line.py:0 -#, python-format -msgid "RMA customer and originating stock move customer doesn't match." -msgstr "El cliente de RMA y el cliente de movimiento de existencias de origen no coincid" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_in_this_wh -msgid "RMA in this Warehouse" -msgstr "RMA en este Almacén" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_res_config_settings__module_rma_account -msgid "RMA invoicing" -msgstr "Facturación RMA" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_procurement_group__rma_line_id -#: model:ir.model.fields,field_description:rma.field_stock_move__rma_line_id -msgid "RMA line" -msgstr "Línea RMA" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__rma_line_ids -#: model:ir.model.fields,field_description:rma.field_rma_order__rma_line_ids -msgid "RMA lines" -msgstr "Líneas RMA" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__line_id -msgid "RMA order Line" -msgstr "Línea de pedido RMA" - -#. module: rma -#: model:stock.picking.type,name:rma.picking_type_rma_cust_out -#: model:stock.rule,name:rma.rule_rma_customer_out_pull -msgid "RMA → Customer" -msgstr "RMA → Cliente" - -#. module: rma -#: model:stock.rule,name:rma.rule_rma_supplier_out_pull -msgid "RMA → Supplier" -msgstr "RMA → Proveedor" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_res_partner__rma_line_ids -#: model:ir.model.fields,field_description:rma.field_res_users__rma_line_ids -#: model_terms:ir.ui.view,arch_db:rma.view_partner_form -msgid "RMAs" -msgstr "RMAs" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__receipt_policy -#: model:ir.model.fields,field_description:rma.field_rma_order_line__receipt_policy -msgid "Receipt Policy" -msgstr "Política de recibos" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__name -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__name -msgid "Reference" -msgstr "Referencia" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order_line__origin -msgid "Reference of the document that produced this rma." -msgstr "Referencia del documento que produjo esta rma." - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_form -msgid "Rel. RMA Lines" -msgstr "Rel. Líneas RMA" - -#. module: rma -#: model:ir.actions.server,name:rma.action_request_approve_rma_order_line -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Request Approval" -msgstr "Pedir aprobación" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__requested_by -#: model:ir.model.fields,field_description:rma.field_rma_order_line__requested_by -msgid "Requested By" -msgstr "Solicitado por" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form -msgid "Return Merchandise Authorization" -msgstr "Autorización de devolución de mercancía" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__product_qty -msgid "Return Qty" -msgstr "Cantidad de devolución" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_res_partner__rma_line_count -#: model:ir.model.fields,field_description:rma.field_res_users__rma_line_count -msgid "Rma Line Count" -msgstr "Recuento de líneas Rma" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Routes" -msgstr "Rutas" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_has_sms_error -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_has_sms_error -msgid "SMS Delivery error" -msgstr "Error de entrega de SMS" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_filter -msgid "Search RMA" -msgstr "Buscar RMA" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "Search RMA line" -msgstr "Buscar línea RMA" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer -msgid "Select Lot/Serial Numbers to add" -msgstr "Seleccionar números de lote/serie para agregar" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier -msgid "Select Move" -msgstr "Seleccione Mover" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier -msgid "Select Stock Moves to add" -msgstr "Seleccione Movimientos de existencias para agregar" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -msgid "Select all" -msgstr "Seleccionar todo" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking -#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking_out -msgid "Select lines for picking" -msgstr "Seleccionar líneas para recoger" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_location_route__rma_selectable -msgid "Selectable on RMA Lines" -msgstr "Seleccionable en líneas RMA" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -msgid "Selected Lot/Serial Numbers" -msgstr "Números de lote/serie seleccionados" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__location_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__location_id -msgid "Send To This Company Location" -msgstr "Enviar a la ubicación de esta empresa" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__sequence -msgid "Sequence" -msgstr "Secuencia" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_config_settings -#: model:ir.ui.menu,name:rma.menu_rma_global_settings -msgid "Settings" -msgstr "Ajustes" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form -msgid "Shipments" -msgstr "Envíos" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer -msgid "Shipping Address" -msgstr "Dirección de Envío" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__show_lot_filter -msgid "Show lot filter?" -msgstr "¿Mostrar filtro de lotes?" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__origin -msgid "Source Document" -msgstr "Documento fuente" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__state -#: model:ir.model.fields,field_description:rma.field_rma_order_line__state -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "State" -msgstr "Estado" - -#. module: rma -#: model:ir.model,name:rma.model_stock_move -msgid "Stock Move" -msgstr "Movimiento de existencias" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__move_ids -#: model:ir.model.fields,field_description:rma.field_rma_order_line__move_ids -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Stock Moves" -msgstr "Movimientos de existencias" - -#. module: rma -#: model:ir.model,name:rma.model_stock_rule -msgid "Stock Rule" -msgstr "Regla de existencias" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__partner_id -#: model:ir.model.fields.selection,name:rma.selection__rma_operation__type__supplier -#: model:ir.model.fields.selection,name:rma.selection__rma_order__type__supplier -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__type__supplier -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_supplier -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_supplier_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_tree -msgid "Supplier" -msgstr "Proveedor" - -#. module: rma -#: model:stock.picking.type,name:rma.picking_type_rma_dropship -msgid "Supplier -> Customer" -msgstr "Proveedor -> Cliente" - -#. module: rma -#: model:stock.picking.type,name:rma.picking_type_rma_sup_in -msgid "Supplier -> RMA" -msgstr "Proveedor -> RMA" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__supplier_address_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__supplier_address_id -msgid "Supplier Address" -msgstr "Dirección del proveedor" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_operation_supplier -#: model:ir.ui.menu,name:rma.menu_rma_operation_supplier -msgid "Supplier Operations" -msgstr "Operaciones de proveedores" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_supplier_lines -#: model:ir.ui.menu,name:rma.menu_rma_line_supplier -#: model:ir.ui.menu,name:rma.menu_supplier_rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Supplier RMA" -msgstr "Proveedor RMA" - -#. module: rma -#: code:addons/rma/models/stock_warehouse.py:0 -#, python-format -msgid "Supplier RMA Deliveries" -msgstr "Entregas RMA del proveedor" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_supplier -#: model:ir.ui.menu,name:rma.menu_rma_act_supplier -msgid "Supplier RMA Group" -msgstr "Proveedor Grupo RMA" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__supplier_rma_id -msgid "Supplier RMA Order Group" -msgstr "Grupo de pedido de RMA del proveedor" - -#. module: rma -#: code:addons/rma/models/stock_warehouse.py:0 -#, python-format -msgid "Supplier RMA Receipts" -msgstr "Recibos de RMA del proveedor" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__supplier_rma_line_ids -msgid "Supplier Rma Line" -msgstr "Proveedor Línea Rma" - -#. module: rma -#: model:stock.rule,name:rma.rule_rma_dropship -msgid "Supplier → Customer" -msgstr "Proveedor → Cliente" - -#. module: rma -#: model:stock.rule,name:rma.rule_rma_supplier_in_pull -msgid "Supplier → RMA" -msgstr "Proveedor → RMA" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Supplier:" -msgstr "Proveedor:" - -#. module: rma -#: model:ir.ui.menu,name:rma.rma_res_partner_menu_suppliers -msgid "Suppliers" -msgstr "Proveedores" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Term and conditions" -msgstr "Términos y Condiciones" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__conditions -msgid "Terms and conditions" -msgstr "Términos y condiciones" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -msgid "" -"The creation of the RMA Lines will be separated according to the lots or " -"serials selected" -msgstr "La creación de las Líneas RMA se separará según los lotes o " -"series seleccionadas" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__customer_to_supplier -#: model:ir.model.fields,field_description:rma.field_rma_order__customer_to_supplier -#: model:ir.model.fields,field_description:rma.field_rma_order_line__customer_to_supplier -msgid "The customer will send to the supplier" -msgstr "El cliente enviará al proveedor" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__reference -msgid "The partner reference of this RMA order." -msgstr "La referencia del socio de este pedido de RMA." - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__supplier_to_customer -#: model:ir.model.fields,field_description:rma.field_rma_order__supplier_to_customer -#: model:ir.model.fields,field_description:rma.field_rma_order_line__supplier_to_customer -msgid "The supplier will send to the customer" -msgstr "El proveedor enviará al cliente" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order_line__delivery_address_id -msgid "This address will be used to deliver repaired or replacement products." -msgstr "Esta dirección se utilizará para entregar productos reparados o de reemplazo." - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_order__state__to_approve -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__state__to_approve -msgid "To Approve" -msgstr "Aprobar" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "To Deliver" -msgstr "Para entregar" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "To Receive" -msgstr "Para recibir" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "To Send to Supplier RMA" -msgstr "Para enviar al proveedor RMA" - -#. module: rma -#: code:addons/rma/models/rma_order_line.py:0 -#, python-format -msgid "To manage lots use RMA groups." -msgstr "Para gestionar lotes utilice grupos RMA." - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__product_tracking -msgid "Tracking" -msgstr "Seguimiento" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__product_category__rma_approval_policy__two_step -msgid "Two steps" -msgstr "Dos pasos" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__type -#: model:ir.model.fields,field_description:rma.field_rma_order_line__type -msgid "Type" -msgstr "Tipo" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__under_warranty -msgid "Under Warranty?" -msgstr "Bajo garantía?" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Unit Price" -msgstr "Precio unitario" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__uom_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__uom_id -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -msgid "Unit of Measure" -msgstr "Unidad de medida" - -#. module: rma -#: code:addons/rma/wizards/rma_make_picking.py:0 -#, python-format -msgid "Unknown delivery address" -msgstr "Dirección de entrega desconocida" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_unread -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_unread -msgid "Unread Messages" -msgstr "Mensajes no leídos" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_unread_counter -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_unread_counter -msgid "Unread Messages Counter" -msgstr "Contador de mensajes no leídos" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__uom_id -msgid "UoM" -msgstr "UdM" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_res_company__group_rma_lines -#: model:ir.model.fields,field_description:rma.field_res_config_settings__group_rma_lines -msgid "Use RMA groups" -msgstr "Usar grupos de RMA" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__type -msgid "Used in RMA of this type" -msgstr "Usado en RMA de este tipo" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "VAT:" -msgstr "NIF:" - -#. module: rma -#: model:ir.model,name:rma.model_stock_warehouse -#: model:ir.ui.menu,name:rma.menu_rma_config_warehouse -msgid "Warehouse" -msgstr "Almacén" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__website_message_ids -#: model:ir.model.fields,field_description:rma.field_rma_order_line__website_message_ids -msgid "Website Messages" -msgstr "Mensajes del sitio web" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__website_message_ids -#: model:ir.model.fields,help:rma.field_rma_order_line__website_message_ids -msgid "Website communication history" -msgstr "Historial de comunicación del sitio web" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__wiz_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__wiz_id -msgid "Wizard" -msgstr "Asistente" - -#. module: rma -#: model:ir.model,name:rma.model_rma_add_serial_wiz -msgid "Wizard to add rma lines from Serial/Lot numbers" -msgstr "Asistente para agregar líneas rma desde números de serie/lote" - -#. module: rma -#: model:ir.model,name:rma.model_rma_add_stock_move -msgid "Wizard to add rma lines from pickings" -msgstr "Asistente para agregar líneas rma desde recolectas" - -#. module: rma -#: model:ir.model,name:rma.model_rma_make_picking_wizard -msgid "Wizard to create pickings from rma lines" -msgstr "Asistente para crear pickings a partir de líneas rma" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier -#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking -#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking_out -msgid "or" -msgstr "o" diff --git a/rma/i18n/rma.pot b/rma/i18n/rma.pot deleted file mode 100644 index bf387868..00000000 --- a/rma/i18n/rma.pot +++ /dev/null @@ -1,1779 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * rma -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 16.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-11-07 07:37+0000\n" -"PO-Revision-Date: 2022-11-07 07:37+0000\n" -"Last-Translator: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__out_shipment_count -msgid "# of Deliveries" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__out_shipment_count -msgid "# of Outgoing Shipments" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__line_count -msgid "# of RMA lines" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__rma_line_count -msgid "# of RMA lines associated" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__in_shipment_count -#: model:ir.model.fields,field_description:rma.field_rma_order_line__in_shipment_count -msgid "# of Shipments" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__supplier_line_count -msgid "# of Supplier RMAs" -msgstr "" - -#. module: rma -#: model:ir.actions.report,print_report_name:rma.rma_order_line_report -msgid "('RMA - %s' % (object.name))" -msgstr "" - -#. module: rma -#: model:ir.actions.report,print_report_name:rma.rma_order_report -msgid "('RMA Group - %s' % (object.name))" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Contact Person:" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Date Ordered:" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Operation:" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Origin Reference:" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_delivery_document -msgid "RMA" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -msgid "Reference:" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Shipping address:" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_needaction -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_needaction -msgid "Action Needed" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__active -msgid "Active" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_button_supplier_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer_form -msgid "Add From Stock Move" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer_form -msgid "Add Lot/Serial Numbers" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_button_supplier_form -msgid "Add Lot/Serial numbers" -msgstr "" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_add_serial_wiz_supplier -msgid "Add from Lot/Serial Number" -msgstr "" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_add_serial_wiz_customer -msgid "Add from Lot/Serial Numbers" -msgstr "" - -#. module: rma -#: code:addons/rma/wizards/rma_add_stock_move.py:0 -#: model:ir.actions.act_window,name:rma.action_rma_add_stock_move_customer -#: model:ir.actions.act_window,name:rma.action_rma_add_stock_move_supplier -#, python-format -msgid "Add from Stock Move" -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order_line__name -#: model:ir.model.fields,help:rma.field_rma_order_line_make_supplier_rma_item__name -msgid "Add here the supplier RMA #. Otherwise an internal code is assigned." -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__comment -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -msgid "Additional Information" -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__customer_address_id -#: model:ir.model.fields,help:rma.field_rma_order_line__customer_address_id -msgid "Address of the customer in case of Supplier RMA operation dropship." -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__supplier_address_id -#: model:ir.model.fields,help:rma.field_rma_order_line__supplier_address_id -msgid "Address of the supplier in case of Customer RMA operation dropship." -msgstr "" - -#. module: rma -#: model:res.groups,name:rma.group_rma_delivery_invoice_address -msgid "Addresses in RMA" -msgstr "" - -#. module: rma -#: code:addons/rma/models/rma_order.py:0 -#, python-format -msgid "All grouped RMA's should have same partner." -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Approve" -msgstr "" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_order__state__approved -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__state__approved -msgid "Approved" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form -msgid "Archived" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__assigned_to -#: model:ir.model.fields,field_description:rma.field_rma_order_line__assigned_to -msgid "Assigned To" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_attachment_count -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_attachment_count -msgid "Attachment Count" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Back to Approved" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Back to Draft" -msgstr "" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_operation__receipt_policy__delivered -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__receipt_policy__delivered -msgid "Based on Delivered Quantities" -msgstr "" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_operation__delivery_policy__ordered -#: model:ir.model.fields.selection,name:rma.selection__rma_operation__receipt_policy__ordered -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__delivery_policy__ordered -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__receipt_policy__ordered -msgid "Based on Ordered Quantities" -msgstr "" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_operation__delivery_policy__received -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__delivery_policy__received -msgid "Based on Received Quantities" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier -#: model_terms:ir.ui.view,arch_db:rma.view_rma_order_line_make_supplier_rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking -#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking_out -msgid "Cancel" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__code -msgid "Code" -msgstr "" - -#. module: rma -#: model:ir.model,name:rma.model_res_company -msgid "Companies" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__company_id -#: model:ir.model.fields,field_description:rma.field_rma_order__company_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__company_id -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Company" -msgstr "" - -#. module: rma -#: model:ir.model,name:rma.model_res_config_settings -msgid "Config Settings" -msgstr "" - -#. module: rma -#: model:ir.ui.menu,name:rma.menu_rma_config -msgid "Configuration" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier -#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking -#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking_out -msgid "Confirm" -msgstr "" - -#. module: rma -#: model:ir.model,name:rma.model_res_partner -#: model_terms:ir.ui.view,arch_db:rma.view_rma_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form -msgid "Contact" -msgstr "" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_picking_out -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_button_form -msgid "Create Delivery" -msgstr "" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_picking_in -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_button_form -msgid "Create Incoming Shipment" -msgstr "" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_order_line_make_supplier_rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_supplier_rma_button_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_order_line_make_supplier_rma -msgid "Create Supplier RMA" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_order_line_make_supplier_rma -msgid "Create/Update Supplier RMA" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__create_uid -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__create_uid -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__create_uid -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__create_uid -#: model:ir.model.fields,field_description:rma.field_rma_operation__create_uid -#: model:ir.model.fields,field_description:rma.field_rma_order__create_uid -#: model:ir.model.fields,field_description:rma.field_rma_order_line__create_uid -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__create_uid -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__create_uid -msgid "Created by" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__create_date -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__create_date -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__create_date -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__create_date -#: model:ir.model.fields,field_description:rma.field_rma_operation__create_date -#: model:ir.model.fields,field_description:rma.field_rma_order__create_date -#: model:ir.model.fields,field_description:rma.field_rma_order_line__create_date -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__create_date -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__create_date -msgid "Created on" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__currency_id -msgid "Currency" -msgstr "" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_operation__type__customer -#: model:ir.model.fields.selection,name:rma.selection__rma_order__type__customer -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__type__customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_tree -msgid "Customer" -msgstr "" - -#. module: rma -#: model:stock.picking.type,name:rma.picking_type_rma_dropship_return -msgid "Customer -> Supplier" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__customer_address_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__customer_address_id -msgid "Customer Address" -msgstr "" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_operation_customer -#: model:ir.ui.menu,name:rma.menu_rma_operation_customer -msgid "Customer Operations" -msgstr "" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_customer_lines -#: model:ir.ui.menu,name:rma.menu_customer_rma -#: model:ir.ui.menu,name:rma.menu_rma_line_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_supplier_form -msgid "Customer RMA" -msgstr "" - -#. module: rma -#: code:addons/rma/models/stock_warehouse.py:0 -#, python-format -msgid "Customer RMA Deliveries" -msgstr "" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_customer -#: model:ir.ui.menu,name:rma.menu_rma_act_customer -msgid "Customer RMA Group" -msgstr "" - -#. module: rma -#: code:addons/rma/models/stock_warehouse.py:0 -#, python-format -msgid "Customer RMA Receipts" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__customer_rma_id -msgid "Customer RMA line" -msgstr "" - -#. module: rma -#: model:stock.picking.type,name:rma.picking_type_rma_cust_in -#: model:stock.rule,name:rma.rule_rma_customer_in_pull -msgid "Customer → RMA" -msgstr "" - -#. module: rma -#: model:stock.rule,name:rma.rule_rma_dropship_return -msgid "Customer → Supplier" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Customer:" -msgstr "" - -#. module: rma -#: model:ir.ui.menu,name:rma.rma_res_partner_menu_customer -msgid "Customers" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -msgid "Date" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_product_category__rma_customer_operation_id -#: model:ir.model.fields,field_description:rma.field_product_product__rma_customer_operation_id -#: model:ir.model.fields,field_description:rma.field_product_template__rma_customer_operation_id -msgid "Default RMA Customer Operation" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_product_category__rma_supplier_operation_id -#: model:ir.model.fields,field_description:rma.field_product_product__rma_supplier_operation_id -#: model:ir.model.fields,field_description:rma.field_product_template__rma_supplier_operation_id -msgid "Default RMA Supplier Operation" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__partner_shipping_id -msgid "Deliver To" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form -msgid "Deliveries" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__delivery_policy -#: model:ir.model.fields,field_description:rma.field_rma_order_line__delivery_policy -msgid "Delivery Policy" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__name -#: model:ir.model.fields,field_description:rma.field_rma_order_line__description -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Description" -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_res_company__group_rma_delivery_address -#: model:ir.model.fields,help:rma.field_res_config_settings__group_rma_delivery_address -msgid "Display 3 fields on rma: partner, invoice address, delivery address" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form -msgid "Display 3 fields on rma: partner, invoice address, delivery address." -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__display_name -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__display_name -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__display_name -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__display_name -#: model:ir.model.fields,field_description:rma.field_rma_operation__display_name -#: model:ir.model.fields,field_description:rma.field_rma_order__display_name -#: model:ir.model.fields,field_description:rma.field_rma_order_line__display_name -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__display_name -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__display_name -msgid "Display Name" -msgstr "" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_order__state__done -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__state__done -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Done" -msgstr "" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_order__state__draft -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__state__draft -msgid "Draft" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form -msgid "Enable RMA invoicing" -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order_line__product_tracking -msgid "Ensure the traceability of a storable product in your warehouse." -msgstr "" - -#. module: rma -#: code:addons/rma/wizards/rma_order_line_make_supplier_rma.py:0 -#, python-format -msgid "Enter a positive quantity." -msgstr "" - -#. module: rma -#: code:addons/rma/wizards/rma_order_line_make_supplier_rma.py:0 -#, python-format -msgid "Enter a supplier." -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_order_line_make_supplier_rma -msgid "Existing Supplier RMA to update:" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_follower_ids -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_follower_ids -msgid "Followers" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_partner_ids -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_partner_ids -msgid "Followers (Partners)" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "General" -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order_line__sequence -msgid "Gives the sequence of this line when displaying the rma." -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_filter -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "Group By" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__name -msgid "Group Number" -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_res_company__group_rma_lines -#: model:ir.model.fields,help:rma.field_res_config_settings__group_rma_lines -#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form -msgid "Group RMA lines in one RMA group" -msgstr "" - -#. module: rma -#: code:addons/rma/models/rma_order.py:0 -#: code:addons/rma/models/rma_order_line.py:0 -#, python-format -msgid "Group partner and RMA's partner must be the same." -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__has_message -#: model:ir.model.fields,field_description:rma.field_rma_order_line__has_message -msgid "Has Message" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__id -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__id -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__id -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__id -#: model:ir.model.fields,field_description:rma.field_rma_operation__id -#: model:ir.model.fields,field_description:rma.field_rma_order__id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__id -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__id -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__id -msgid "ID" -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__message_needaction -#: model:ir.model.fields,help:rma.field_rma_order__message_unread -#: model:ir.model.fields,help:rma.field_rma_order_line__message_needaction -#: model:ir.model.fields,help:rma.field_rma_order_line__message_unread -msgid "If checked, new messages require your attention." -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__message_has_error -#: model:ir.model.fields,help:rma.field_rma_order__message_has_sms_error -#: model:ir.model.fields,help:rma.field_rma_order_line__message_has_error -#: model:ir.model.fields,help:rma.field_rma_order_line__message_has_sms_error -msgid "If checked, some messages have a delivery error." -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_stock_warehouse__rma_in_this_wh -msgid "" -"If set, it will create RMA location, picking types and routes for this " -"warehouse." -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form -msgid "Inbound" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__in_route_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__in_route_id -msgid "Inbound Route" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__in_warehouse_id -#: model:ir.model.fields,field_description:rma.field_rma_order__in_warehouse_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__in_warehouse_id -msgid "Inbound Warehouse" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_incoming -msgid "Incoming Qty" -msgstr "" - -#. module: rma -#: model:ir.model,name:rma.model_stock_location_route -msgid "Inventory Routes" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_is_follower -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_is_follower -msgid "Is Follower" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__item_ids -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__item_ids -msgid "Items" -msgstr "" - -#. module: rma -#: model:ir.model,name:rma.model_rma_make_picking_wizard_item -msgid "Items to receive" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz____last_update -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move____last_update -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard____last_update -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item____last_update -#: model:ir.model.fields,field_description:rma.field_rma_operation____last_update -#: model:ir.model.fields,field_description:rma.field_rma_order____last_update -#: model:ir.model.fields,field_description:rma.field_rma_order_line____last_update -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma____last_update -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item____last_update -msgid "Last Modified on" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__write_uid -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__write_uid -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__write_uid -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__write_uid -#: model:ir.model.fields,field_description:rma.field_rma_operation__write_uid -#: model:ir.model.fields,field_description:rma.field_rma_order__write_uid -#: model:ir.model.fields,field_description:rma.field_rma_order_line__write_uid -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__write_uid -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__write_uid -msgid "Last Updated by" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__write_date -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__write_date -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard__write_date -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__write_date -#: model:ir.model.fields,field_description:rma.field_rma_operation__write_date -#: model:ir.model.fields,field_description:rma.field_rma_order__write_date -#: model:ir.model.fields,field_description:rma.field_rma_order_line__write_date -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__write_date -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__write_date -msgid "Last Updated on" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__lot_id -msgid "Lot/Serial Number" -msgstr "" - -#. module: rma -#: code:addons/rma/wizards/rma_add_serial.py:0 -#, python-format -msgid "Lot/Serial Number %s already added." -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__lot_domain_ids -msgid "Lots Domain" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__lot_ids -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__lot_ids -msgid "Lots/Serials selected" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_main_attachment_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_main_attachment_id -msgid "Main Attachment" -msgstr "" - -#. module: rma -#: model:ir.ui.menu,name:rma.menu_rma_rma_control -msgid "Master Data" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_has_error -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_has_error -msgid "Message Delivery error" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_ids -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_ids -msgid "Messages" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "My RMAs" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_order_line_make_supplier_rma -msgid "New RMA details:" -msgstr "" - -#. module: rma -#: code:addons/rma/wizards/rma_make_picking.py:0 -#, python-format -msgid "No deliveries needed for this operation" -msgstr "" - -#. module: rma -#: code:addons/rma/wizards/rma_make_picking.py:0 -#, python-format -msgid "No quantity to transfer on %(arg1)s shipment of product %(arg2)s." -msgstr "" - -#. module: rma -#: code:addons/rma/wizards/rma_make_picking.py:0 -#, python-format -msgid "No route specified" -msgstr "" - -#. module: rma -#: code:addons/rma/models/procurement_group.py:0 -#, python-format -msgid "" -"No rule found for this product %(product)s and location %(location)s that is" -" valid for RMA operations." -msgstr "" - -#. module: rma -#: code:addons/rma/wizards/rma_make_picking.py:0 -#, python-format -msgid "No shipments needed for this operation" -msgstr "" - -#. module: rma -#: code:addons/rma/wizards/rma_make_picking.py:0 -#, python-format -msgid "No warehouse specified" -msgstr "" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_operation__delivery_policy__no -#: model:ir.model.fields.selection,name:rma.selection__rma_operation__receipt_policy__no -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__delivery_policy__no -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__receipt_policy__no -msgid "Not required" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_needaction_counter -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_needaction_counter -msgid "Number of Actions" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_has_error_counter -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_has_error_counter -msgid "Number of errors" -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__message_needaction_counter -#: model:ir.model.fields,help:rma.field_rma_order_line__message_needaction_counter -msgid "Number of messages which requires an action" -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__message_has_error_counter -#: model:ir.model.fields,help:rma.field_rma_order_line__message_has_error_counter -msgid "Number of messages with delivery error" -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__message_unread_counter -#: model:ir.model.fields,help:rma.field_rma_order_line__message_unread_counter -msgid "Number of unread messages" -msgstr "" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__product_category__rma_approval_policy__one_step -msgid "One step" -msgstr "" - -#. module: rma -#: code:addons/rma/wizards/rma_make_picking.py:0 -#, python-format -msgid "Only RMA lines from the same partner can be processed at the same time" -msgstr "" - -#. module: rma -#: code:addons/rma/wizards/rma_order_line_make_supplier_rma.py:0 -#, python-format -msgid "" -"Only RMA lines from the same supplier can be processed at the same time" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__operation_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__operation_id -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "Operation" -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_product_category__rma_approval_policy -#: model:ir.model.fields,help:rma.field_product_product__rma_approval_policy -#: model:ir.model.fields,help:rma.field_product_template__rma_approval_policy -msgid "" -"Options: \n" -" * One step: Always auto-approve RMAs that only contain products within categories with this policy.\n" -"* Two steps: A RMA containing a product within a category with this policy will request the RMA manager approval." -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__date_rma -msgid "Order Date" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Origin" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__reference_move_id -msgid "Originating Stock Move" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Other Info" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form -msgid "Outbound" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__out_route_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__out_route_id -msgid "Outbound Route" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__out_warehouse_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__out_warehouse_id -msgid "Outbound Warehouse" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_outgoing -msgid "Outgoing Qty" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__partner_id -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__partner_id -#: model:ir.model.fields,field_description:rma.field_rma_order__partner_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__partner_id -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_filter -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "Partner" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__reference -msgid "Partner Reference" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__delivery_address_id -msgid "Partner delivery address" -msgstr "" - -#. module: rma -#: model:ir.ui.menu,name:rma.menu_rma_config_partners -msgid "Partners" -msgstr "" - -#. module: rma -#: code:addons/rma/wizards/rma_add_serial.py:0 -#: code:addons/rma/wizards/rma_add_stock_move.py:0 -#: code:addons/rma/wizards/rma_order_line_make_supplier_rma.py:0 -#, python-format -msgid "Please define a warehouse with a default RMA location" -msgstr "" - -#. module: rma -#: code:addons/rma/models/rma_order_line.py:0 -#, python-format -msgid "Please define a warehouse with a default RMA location." -msgstr "" - -#. module: rma -#: code:addons/rma/wizards/rma_add_serial.py:0 -#: code:addons/rma/wizards/rma_add_stock_move.py:0 -#: code:addons/rma/wizards/rma_order_line_make_supplier_rma.py:0 -#, python-format -msgid "Please define an RMA route" -msgstr "" - -#. module: rma -#: code:addons/rma/models/rma_order_line.py:0 -#, python-format -msgid "Please define an RMA route." -msgstr "" - -#. module: rma -#: code:addons/rma/wizards/rma_add_serial.py:0 -#: code:addons/rma/wizards/rma_add_stock_move.py:0 -#, python-format -msgid "Please define an operation first" -msgstr "" - -#. module: rma -#: code:addons/rma/models/rma_order_line.py:0 -#, python-format -msgid "Please define an operation first." -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form -msgid "Policies" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__price_unit -msgid "Price Unit" -msgstr "" - -#. module: rma -#: model:ir.model,name:rma.model_procurement_group -msgid "Procurement Group" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__product_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__product_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__product_id -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "Product" -msgstr "" - -#. module: rma -#: code:addons/rma/models/rma_order_line.py:0 -#, python-format -msgid "" -"Product %s has serial tracking configuration, quantity to receive should be " -"1" -msgstr "" - -#. module: rma -#: model:ir.model,name:rma.model_product_category -msgid "Product Category" -msgstr "" - -#. module: rma -#: model:ir.model,name:rma.model_product_template -msgid "Product Template" -msgstr "" - -#. module: rma -#: model:ir.ui.menu,name:rma.rma_product_product_menu -msgid "Product Variants" -msgstr "" - -#. module: rma -#: model:ir.ui.menu,name:rma.menu_rma_config_stock -msgid "Products" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_delivered -msgid "Qty Delivered" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_received -msgid "Qty Received" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_to_deliver -msgid "Qty To Deliver" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_to_receive -msgid "Qty To Receive" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_in_supplier_rma -msgid "Qty in Supplier RMA" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__qty_to_supplier_rma -msgid "Qty to send to Supplier RMA" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Quantities" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__product_qty -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Quantity" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__product_qty -msgid "Quantity Ordered" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__qty_to_deliver -msgid "Quantity To Deliver" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__qty_to_receive -msgid "Quantity to Receive" -msgstr "" - -#. module: rma -#: model:ir.actions.report,name:rma.rma_order_line_report -#: model:ir.model,name:rma.model_rma_order_line -#: model:ir.model.fields,field_description:rma.field_procurement_group__rma_id -#: model:ir.module.category,name:rma.module_category_rma -#: model:ir.ui.menu,name:rma.menu_rma_root -#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form -msgid "RMA" -msgstr "" - -#. module: rma -#: code:addons/rma/wizards/rma_make_picking.py:0 -#, python-format -msgid "RMA %s is not approved" -msgstr "" - -#. module: rma -#: model:stock.picking.type,name:rma.picking_type_rma_sup_out -msgid "RMA -> Supplier" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_product_category__rma_approval_policy -#: model:ir.model.fields,field_description:rma.field_product_product__rma_approval_policy -#: model:ir.model.fields,field_description:rma.field_product_template__rma_approval_policy -msgid "RMA Approval Policy" -msgstr "" - -#. module: rma -#: model:stock.location.route,name:rma.route_rma_customer -msgid "RMA Customer" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_customer_in_pull_id -msgid "RMA Customer In Rule" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_customer_out_pull_id -msgid "RMA Customer Out Rule" -msgstr "" - -#. module: rma -#: model:res.groups,name:rma.group_rma_customer_user -msgid "RMA Customer User" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_cust_in_type_id -msgid "RMA Customer in Type" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_cust_out_type_id -msgid "RMA Customer out Type" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_filter -msgid "RMA Date" -msgstr "" - -#. module: rma -#: model:stock.location.route,name:rma.route_rma_dropship -msgid "RMA Dropship" -msgstr "" - -#. module: rma -#: model:ir.actions.report,name:rma.rma_order_report -#: model:ir.model,name:rma.model_rma_order -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__rma_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__rma_id -msgid "RMA Group" -msgstr "" - -#. module: rma -#: model:res.groups,name:rma.group_rma_groups -msgid "RMA Groups" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__line_id -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "RMA Line" -msgstr "" - -#. module: rma -#: model:ir.model,name:rma.model_rma_order_line_make_supplier_rma -msgid "RMA Line Make Supplier RMA" -msgstr "" - -#. module: rma -#: model:ir.model,name:rma.model_rma_order_line_make_supplier_rma_item -msgid "RMA Line Make Supplier RMA Item" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form -msgid "RMA Lines" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__lot_rma_id -msgid "RMA Location" -msgstr "" - -#. module: rma -#: model:res.groups,name:rma.group_rma_manager -msgid "RMA Manager" -msgstr "" - -#. module: rma -#: model:ir.model,name:rma.model_rma_operation -msgid "RMA Operation" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.rma_operation_form -msgid "RMA Operations" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_serial_wiz__rma_id -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__rma_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__rma_id -msgid "RMA Order" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.stock_location_route_form_view_inherit_rma_stock -msgid "RMA Order Lines" -msgstr "" - -#. module: rma -#: model:stock.location.route,name:rma.route_rma_supplier -msgid "RMA Supplier" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_supplier_in_pull_id -msgid "RMA Supplier In Rule" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_supplier_out_pull_id -msgid "RMA Supplier Out Rule" -msgstr "" - -#. module: rma -#: model:res.groups,name:rma.group_rma_supplier_user -msgid "RMA Supplier User" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_sup_in_type_id -msgid "RMA Supplier in Type" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_sup_out_type_id -msgid "RMA Supplier out Type" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_res_company__group_rma_delivery_address -#: model:ir.model.fields,field_description:rma.field_res_config_settings__group_rma_delivery_address -msgid "RMA addresses" -msgstr "" - -#. module: rma -#: code:addons/rma/models/rma_order_line.py:0 -#, python-format -msgid "RMA customer and originating stock move customer doesn't match." -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_warehouse__rma_in_this_wh -msgid "RMA in this Warehouse" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_res_config_settings__module_rma_account -msgid "RMA invoicing" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_procurement_group__rma_line_id -#: model:ir.model.fields,field_description:rma.field_stock_move__rma_line_id -msgid "RMA line" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__rma_line_ids -#: model:ir.model.fields,field_description:rma.field_rma_order__rma_line_ids -msgid "RMA lines" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__line_id -msgid "RMA order Line" -msgstr "" - -#. module: rma -#: model:stock.picking.type,name:rma.picking_type_rma_cust_out -#: model:stock.rule,name:rma.rule_rma_customer_out_pull -msgid "RMA → Customer" -msgstr "" - -#. module: rma -#: model:stock.rule,name:rma.rule_rma_supplier_out_pull -msgid "RMA → Supplier" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_res_partner__rma_line_ids -#: model:ir.model.fields,field_description:rma.field_res_users__rma_line_ids -#: model_terms:ir.ui.view,arch_db:rma.view_partner_form -msgid "RMAs" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__receipt_policy -#: model:ir.model.fields,field_description:rma.field_rma_order_line__receipt_policy -msgid "Receipt Policy" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__name -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__name -msgid "Reference" -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order_line__origin -msgid "Reference of the document that produced this rma." -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_form -msgid "Rel. RMA Lines" -msgstr "" - -#. module: rma -#: model:ir.actions.server,name:rma.action_request_approve_rma_order_line -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Request Approval" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__requested_by -#: model:ir.model.fields,field_description:rma.field_rma_order_line__requested_by -msgid "Requested By" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.res_config_settings_view_form -msgid "Return Merchandise Authorization" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__product_qty -msgid "Return Qty" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_res_partner__rma_line_count -#: model:ir.model.fields,field_description:rma.field_res_users__rma_line_count -msgid "Rma Line Count" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Routes" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_has_sms_error -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_has_sms_error -msgid "SMS Delivery error" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_filter -msgid "Search RMA" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "Search RMA line" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer -msgid "Select Lot/Serial Numbers to add" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier -msgid "Select Move" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier -msgid "Select Stock Moves to add" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -msgid "Select all" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking -#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking_out -msgid "Select lines for picking" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_stock_location_route__rma_selectable -msgid "Selectable on RMA Lines" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -msgid "Selected Lot/Serial Numbers" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__location_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__location_id -msgid "Send To This Company Location" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__sequence -msgid "Sequence" -msgstr "" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_config_settings -#: model:ir.ui.menu,name:rma.menu_rma_global_settings -msgid "Settings" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form -msgid "Shipments" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer -msgid "Shipping Address" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__show_lot_filter -msgid "Show lot filter?" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__origin -msgid "Source Document" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__state -#: model:ir.model.fields,field_description:rma.field_rma_order_line__state -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "State" -msgstr "" - -#. module: rma -#: model:ir.model,name:rma.model_stock_move -msgid "Stock Move" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_add_stock_move__move_ids -#: model:ir.model.fields,field_description:rma.field_rma_order_line__move_ids -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Stock Moves" -msgstr "" - -#. module: rma -#: model:ir.model,name:rma.model_stock_rule -msgid "Stock Rule" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__partner_id -#: model:ir.model.fields.selection,name:rma.selection__rma_operation__type__supplier -#: model:ir.model.fields.selection,name:rma.selection__rma_order__type__supplier -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__type__supplier -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_supplier -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_supplier_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_form -#: model_terms:ir.ui.view,arch_db:rma.view_rma_supplier_tree -msgid "Supplier" -msgstr "" - -#. module: rma -#: model:stock.picking.type,name:rma.picking_type_rma_dropship -msgid "Supplier -> Customer" -msgstr "" - -#. module: rma -#: model:stock.picking.type,name:rma.picking_type_rma_sup_in -msgid "Supplier -> RMA" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__supplier_address_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__supplier_address_id -msgid "Supplier Address" -msgstr "" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_operation_supplier -#: model:ir.ui.menu,name:rma.menu_rma_operation_supplier -msgid "Supplier Operations" -msgstr "" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_supplier_lines -#: model:ir.ui.menu,name:rma.menu_rma_line_supplier -#: model:ir.ui.menu,name:rma.menu_supplier_rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_line_form -msgid "Supplier RMA" -msgstr "" - -#. module: rma -#: code:addons/rma/models/stock_warehouse.py:0 -#, python-format -msgid "Supplier RMA Deliveries" -msgstr "" - -#. module: rma -#: model:ir.actions.act_window,name:rma.action_rma_supplier -#: model:ir.ui.menu,name:rma.menu_rma_act_supplier -msgid "Supplier RMA Group" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma__supplier_rma_id -msgid "Supplier RMA Order Group" -msgstr "" - -#. module: rma -#: code:addons/rma/models/stock_warehouse.py:0 -#, python-format -msgid "Supplier RMA Receipts" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__supplier_rma_line_ids -msgid "Supplier Rma Line" -msgstr "" - -#. module: rma -#: model:stock.rule,name:rma.rule_rma_dropship -msgid "Supplier → Customer" -msgstr "" - -#. module: rma -#: model:stock.rule,name:rma.rule_rma_supplier_in_pull -msgid "Supplier → RMA" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Supplier:" -msgstr "" - -#. module: rma -#: model:ir.ui.menu,name:rma.rma_res_partner_menu_suppliers -msgid "Suppliers" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Term and conditions" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__conditions -msgid "Terms and conditions" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -msgid "" -"The creation of the RMA Lines will be separated according to the lots or " -"serials selected" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__customer_to_supplier -#: model:ir.model.fields,field_description:rma.field_rma_order__customer_to_supplier -#: model:ir.model.fields,field_description:rma.field_rma_order_line__customer_to_supplier -msgid "The customer will send to the supplier" -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__reference -msgid "The partner reference of this RMA order." -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__supplier_to_customer -#: model:ir.model.fields,field_description:rma.field_rma_order__supplier_to_customer -#: model:ir.model.fields,field_description:rma.field_rma_order_line__supplier_to_customer -msgid "The supplier will send to the customer" -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order_line__delivery_address_id -msgid "This address will be used to deliver repaired or replacement products." -msgstr "" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__rma_order__state__to_approve -#: model:ir.model.fields.selection,name:rma.selection__rma_order_line__state__to_approve -msgid "To Approve" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "To Deliver" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "To Receive" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_rma_line_filter -msgid "To Send to Supplier RMA" -msgstr "" - -#. module: rma -#: code:addons/rma/models/rma_order_line.py:0 -#, python-format -msgid "To manage lots use RMA groups." -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__product_tracking -msgid "Tracking" -msgstr "" - -#. module: rma -#: model:ir.model.fields.selection,name:rma.selection__product_category__rma_approval_policy__two_step -msgid "Two steps" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__type -#: model:ir.model.fields,field_description:rma.field_rma_order_line__type -msgid "Type" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line__under_warranty -msgid "Under Warranty?" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "Unit Price" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__uom_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line__uom_id -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -msgid "Unit of Measure" -msgstr "" - -#. module: rma -#: code:addons/rma/wizards/rma_make_picking.py:0 -#, python-format -msgid "Unknown delivery address" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_unread -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_unread -msgid "Unread Messages" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__message_unread_counter -#: model:ir.model.fields,field_description:rma.field_rma_order_line__message_unread_counter -msgid "Unread Messages Counter" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__uom_id -msgid "UoM" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_res_company__group_rma_lines -#: model:ir.model.fields,field_description:rma.field_res_config_settings__group_rma_lines -msgid "Use RMA groups" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_operation__type -msgid "Used in RMA of this type" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_document -#: model_terms:ir.ui.view,arch_db:rma.report_rma_order_line_document -msgid "VAT:" -msgstr "" - -#. module: rma -#: model:ir.model,name:rma.model_stock_warehouse -#: model:ir.ui.menu,name:rma.menu_rma_config_warehouse -msgid "Warehouse" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_order__website_message_ids -#: model:ir.model.fields,field_description:rma.field_rma_order_line__website_message_ids -msgid "Website Messages" -msgstr "" - -#. module: rma -#: model:ir.model.fields,help:rma.field_rma_order__website_message_ids -#: model:ir.model.fields,help:rma.field_rma_order_line__website_message_ids -msgid "Website communication history" -msgstr "" - -#. module: rma -#: model:ir.model.fields,field_description:rma.field_rma_make_picking_wizard_item__wiz_id -#: model:ir.model.fields,field_description:rma.field_rma_order_line_make_supplier_rma_item__wiz_id -msgid "Wizard" -msgstr "" - -#. module: rma -#: model:ir.model,name:rma.model_rma_add_serial_wiz -msgid "Wizard to add rma lines from Serial/Lot numbers" -msgstr "" - -#. module: rma -#: model:ir.model,name:rma.model_rma_add_stock_move -msgid "Wizard to add rma lines from pickings" -msgstr "" - -#. module: rma -#: model:ir.model,name:rma.model_rma_make_picking_wizard -msgid "Wizard to create pickings from rma lines" -msgstr "" - -#. module: rma -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_serial_wiz_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_customer -#: model_terms:ir.ui.view,arch_db:rma.view_rma_add_stock_move_supplier -#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking -#: model_terms:ir.ui.view,arch_db:rma.view_rma_picking_out -msgid "or" -msgstr "" diff --git a/rma/models/__init__.py b/rma/models/__init__.py deleted file mode 100644 index 612e4aaa..00000000 --- a/rma/models/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -from . import rma_order -from . import rma_order_line -from . import rma_operation -from . import stock_move -from . import stock_warehouse -from . import product -from . import product_category -from . import procurement_group -from . import stock_rule -from . import res_partner -from . import res_company -from . import res_config_settings diff --git a/rma/models/procurement_group.py b/rma/models/procurement_group.py deleted file mode 100644 index 8fe4b1a5..00000000 --- a/rma/models/procurement_group.py +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright (C) 2017-22 ForgeFlow S.L. -# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) - -from odoo import _, api, fields, models -from odoo.exceptions import ValidationError - - -class ProcurementGroup(models.Model): - _inherit = "procurement.group" - - rma_id = fields.Many2one( - comodel_name="rma.order", string="RMA", ondelete="set null" - ) - rma_line_id = fields.Many2one( - comodel_name="rma.order.line", string="RMA line", ondelete="set null" - ) - - @api.model - def _get_rule(self, product_id, location_id, values): - """Ensure that the selected rule is valid for RMAs""" - res = super()._get_rule(product_id, location_id, values) - rma_route_check = self.env.context.get("rma_route_check") - if rma_route_check: - if res and not res.route_id.rma_selectable: - raise ValidationError( - _( - "No rule found for this product %(product)s and " - "location %(location)s that is valid for RMA operations." - ) - % { - "product": product_id.default_code or product_id.name, - "location": location_id.complete_name, - } - ) - # Don't enforce check on any chained moves - rma_route_check.clear() - return res diff --git a/rma/models/product.py b/rma/models/product.py deleted file mode 100644 index c4055c5b..00000000 --- a/rma/models/product.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright (C) 2017-20 ForgeFlow S.L. -# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) - -from odoo import fields, models - - -class ProductTemplate(models.Model): - _inherit = "product.template" - - rma_customer_operation_id = fields.Many2one( - company_dependent=True, - comodel_name="rma.operation", - string="Default RMA Customer Operation", - ) - rma_supplier_operation_id = fields.Many2one( - company_dependent=True, - comodel_name="rma.operation", - string="Default RMA Supplier Operation", - ) - rma_approval_policy = fields.Selection( - related="categ_id.rma_approval_policy", readonly=True - ) diff --git a/rma/models/product_category.py b/rma/models/product_category.py deleted file mode 100644 index db832c2e..00000000 --- a/rma/models/product_category.py +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright 2017 ForgeFlow -# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) - -from odoo import fields, models - - -class ProductCategory(models.Model): - _inherit = "product.category" - - rma_approval_policy = fields.Selection( - selection=[("one_step", "One step"), ("two_step", "Two steps")], - string="RMA Approval Policy", - required=True, - default="one_step", - help="Options: \n " - "* One step: Always auto-approve RMAs that only contain " - "products within categories with this policy.\n" - "* Two steps: A RMA containing a product within a category with " - "this policy will request the RMA manager approval.", - ) - rma_customer_operation_id = fields.Many2one( - company_dependent=True, - comodel_name="rma.operation", - string="Default RMA Customer Operation", - ) - rma_supplier_operation_id = fields.Many2one( - company_dependent=True, - comodel_name="rma.operation", - string="Default RMA Supplier Operation", - ) diff --git a/rma/models/res_company.py b/rma/models/res_company.py deleted file mode 100644 index 1ed19e1d..00000000 --- a/rma/models/res_company.py +++ /dev/null @@ -1,14 +0,0 @@ -from odoo import fields, models - - -class ResCompany(models.Model): - _inherit = "res.company" - - group_rma_delivery_address = fields.Boolean( - string="RMA addresses", - help="Display 3 fields on rma: partner, invoice address, delivery address", - ) - - group_rma_lines = fields.Boolean( - string="Use RMA groups", help="Group RMA lines in one RMA group" - ) diff --git a/rma/models/res_config_settings.py b/rma/models/res_config_settings.py deleted file mode 100644 index 53091e60..00000000 --- a/rma/models/res_config_settings.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright (C) 2017-20 ForgeFlow S.L. -# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) - -from odoo import fields, models - - -class ResConfigSettings(models.TransientModel): - _inherit = "res.config.settings" - - group_rma_delivery_address = fields.Boolean( - related="company_id.group_rma_delivery_address", - implied_group="rma.group_rma_delivery_invoice_address", - readonly=False, - ) - - group_rma_lines = fields.Boolean( - related="company_id.group_rma_lines", - readonly=False, - implied_group="rma.group_rma_groups", - ) - - module_rma_account = fields.Boolean(string="RMA invoicing") diff --git a/rma/models/res_partner.py b/rma/models/res_partner.py deleted file mode 100644 index 89c529ae..00000000 --- a/rma/models/res_partner.py +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright 2017-22 ForgeFlow -# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). - -from odoo import fields, models - - -class ResPartner(models.Model): - _inherit = "res.partner" - - def _compute_rma_line_count(self): - for rec in self: - rec.rma_line_count = len(rec.rma_line_ids) - - rma_line_ids = fields.One2many( - comodel_name="rma.order.line", string="RMAs", inverse_name="partner_id" - ) - rma_line_count = fields.Integer( - compute="_compute_rma_line_count", compute_sudo=True - ) - - def action_open_partner_rma(self): - action = self.env.ref("rma.action_rma_customer_lines") - result = action.sudo().read()[0] - result["context"] = {"search_default_partner_id": self.id} - result["domain"] = [] - result["display_name"] = "Partner RMAs" - return result diff --git a/rma/models/rma_operation.py b/rma/models/rma_operation.py deleted file mode 100644 index bd3d0f16..00000000 --- a/rma/models/rma_operation.py +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright 2017-18 ForgeFlow -# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) - -from odoo import api, fields, models - - -class RmaOperation(models.Model): - _name = "rma.operation" - _description = "RMA Operation" - - @api.model - def _default_warehouse_id(self): - company_id = self.env.user.company_id.id - warehouse = self.env["stock.warehouse"].search( - [("company_id", "=", company_id)], limit=1 - ) - return warehouse - - @api.model - def _default_customer_location_id(self): - return self.env.ref("stock.stock_location_customers") or False - - @api.model - def _default_supplier_location_id(self): - return self.env.ref("stock.stock_location_suppliers") or False - - @api.model - def _default_routes(self): - op_type = self.env.context.get("default_type") - if op_type == "customer": - return self.env.ref("rma.route_rma_customer") - elif op_type == "supplier": - return self.env.ref("rma.route_rma_supplier") - - name = fields.Char("Description", required=True) - code = fields.Char(required=True) - active = fields.Boolean(default=True) - receipt_policy = fields.Selection( - [ - ("no", "Not required"), - ("ordered", "Based on Ordered Quantities"), - ("delivered", "Based on Delivered Quantities"), - ], - default="no", - ) - delivery_policy = fields.Selection( - [ - ("no", "Not required"), - ("ordered", "Based on Ordered Quantities"), - ("received", "Based on Received Quantities"), - ], - default="no", - ) - in_route_id = fields.Many2one( - comodel_name="stock.route", - string="Inbound Route", - domain=[("rma_selectable", "=", True)], - default=lambda self: self._default_routes(), - ) - out_route_id = fields.Many2one( - comodel_name="stock.route", - string="Outbound Route", - domain=[("rma_selectable", "=", True)], - default=lambda self: self._default_routes(), - ) - customer_to_supplier = fields.Boolean( - string="The customer will send to the supplier" - ) - supplier_to_customer = fields.Boolean( - string="The supplier will send to the customer" - ) - in_warehouse_id = fields.Many2one( - comodel_name="stock.warehouse", - string="Inbound Warehouse", - default=lambda self: self._default_warehouse_id(), - ) - out_warehouse_id = fields.Many2one( - comodel_name="stock.warehouse", - string="Outbound Warehouse", - default=lambda self: self._default_warehouse_id(), - ) - location_id = fields.Many2one("stock.location", "Send To This Company Location") - type = fields.Selection( - [("customer", "Customer"), ("supplier", "Supplier")], - string="Used in RMA of this type", - required=True, - ) - rma_line_ids = fields.One2many( - comodel_name="rma.order.line", inverse_name="operation_id", string="RMA lines" - ) - company_id = fields.Many2one( - comodel_name="res.company", - string="Company", - required=True, - default=lambda self: self.env.user.company_id, - ) diff --git a/rma/models/rma_order.py b/rma/models/rma_order.py deleted file mode 100644 index edd4d563..00000000 --- a/rma/models/rma_order.py +++ /dev/null @@ -1,322 +0,0 @@ -# Copyright (C) 2017-20 ForgeFlow S.L. -# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) - -from datetime import datetime - -from odoo import _, api, fields, models -from odoo.exceptions import UserError - - -class RmaOrder(models.Model): - _name = "rma.order" - _description = "RMA Group" - _inherit = ["mail.thread"] - _order = "id desc" - - @api.model - def _get_default_type(self): - if "supplier" in self.env.context: - return "supplier" - return "customer" - - def _compute_in_shipment_count(self): - for rec in self: - pickings = self.env["stock.picking"] - for line in rec.rma_line_ids: - pickings |= line._get_in_pickings() - rec.in_shipment_count = len(pickings) - - def _compute_out_shipment_count(self): - for rec in self: - pickings = self.env["stock.picking"] - for line in rec.rma_line_ids: - pickings |= line._get_out_pickings() - rec.out_shipment_count = len(pickings) - - def _compute_supplier_line_count(self): - self.supplier_line_count = len( - self.rma_line_ids.filtered(lambda r: r.supplier_rma_line_ids) - ) - - def _compute_line_count(self): - for rec in self: - rec.line_count = len(rec._get_valid_lines()) - - @api.depends("rma_line_ids", "rma_line_ids.state") - def _compute_state(self): - for rec in self: - rma_line_done = self.env["rma.order.line"].search_count( - [("id", "in", rec.rma_line_ids.ids), ("state", "=", "done")] - ) - rma_line_approved = self.env["rma.order.line"].search_count( - [("id", "in", rec.rma_line_ids.ids), ("state", "=", "approved")] - ) - rma_line_to_approve = self.env["rma.order.line"].search_count( - [("id", "in", rec.rma_line_ids.ids), ("state", "=", "to_approve")] - ) - if rma_line_done != 0: - state = "done" - elif rma_line_approved != 0: - state = "approved" - elif rma_line_to_approve != 0: - state = "to_approve" - else: - state = "draft" - rec.state = state - - @api.model - def _default_date_rma(self): - return datetime.now() - - @api.model - def _default_warehouse_id(self): - warehouse = self.env["stock.warehouse"].search( - [("company_id", "=", self.env.company.id)], limit=1 - ) - return warehouse - - name = fields.Char(string="Group Number", index=True, copy=False) - type = fields.Selection( - [("customer", "Customer"), ("supplier", "Supplier")], - required=True, - default=lambda self: self._get_default_type(), - readonly=True, - ) - reference = fields.Char( - string="Partner Reference", help="The partner reference of this RMA order." - ) - description = fields.Text() - comment = fields.Text("Additional Information") - date_rma = fields.Datetime( - compute="_compute_date_rma", - inverse="_inverse_date_rma", - string="Order Date", - index=True, - default=lambda self: self._default_date_rma(), - ) - partner_id = fields.Many2one( - comodel_name="res.partner", string="Partner", required=True - ) - rma_line_ids = fields.One2many("rma.order.line", "rma_id", string="RMA lines") - in_shipment_count = fields.Integer( - compute="_compute_in_shipment_count", string="# of Shipments" - ) - out_shipment_count = fields.Integer( - compute="_compute_out_shipment_count", string="# of Outgoing Shipments" - ) - line_count = fields.Integer(compute="_compute_line_count", string="# of RMA lines") - supplier_line_count = fields.Integer( - compute="_compute_supplier_line_count", string="# of Supplier RMAs" - ) - company_id = fields.Many2one( - "res.company", - string="Company", - required=True, - default=lambda self: self.env.company, - ) - assigned_to = fields.Many2one( - comodel_name="res.users", - tracking=True, - default=lambda self: self.env.uid, - ) - requested_by = fields.Many2one( - comodel_name="res.users", - tracking=True, - default=lambda self: self.env.uid, - ) - in_route_id = fields.Many2one( - "stock.route", - string="Inbound Route", - domain=[("rma_selectable", "=", True)], - ) - out_route_id = fields.Many2one( - "stock.route", - string="Outbound Route", - domain=[("rma_selectable", "=", True)], - ) - in_warehouse_id = fields.Many2one( - comodel_name="stock.warehouse", - string="Inbound Warehouse", - required=False, - default=_default_warehouse_id, - ) - out_warehouse_id = fields.Many2one( - comodel_name="stock.warehouse", - string="Outbound Warehouse", - required=False, - default=_default_warehouse_id, - ) - location_id = fields.Many2one( - comodel_name="stock.location", - string="Send To This Company Location", - ) - customer_to_supplier = fields.Boolean("The customer will send to the supplier") - supplier_to_customer = fields.Boolean("The supplier will send to the customer") - supplier_address_id = fields.Many2one( - comodel_name="res.partner", - string="Supplier Address", - help="Address of the supplier in case of Customer RMA operation " "dropship.", - ) - customer_address_id = fields.Many2one( - comodel_name="res.partner", - string="Customer Address", - help="Address of the customer in case of Supplier RMA operation " "dropship.", - ) - state = fields.Selection( - compute=_compute_state, - selection=[ - ("draft", "Draft"), - ("to_approve", "To Approve"), - ("approved", "Approved"), - ("done", "Done"), - ], - default="draft", - store=True, - ) - operation_default_id = fields.Many2one( - comodel_name="rma.operation", - required=False, - string="Default Operation Type", - ) - - @api.onchange( - "operation_default_id", - ) - def _onchange_operation(self): - if self.operation_default_id: - self.in_warehouse_id = self.operation_default_id.in_warehouse_id - self.out_warehouse_id = self.operation_default_id.out_warehouse_id - self.location_id = ( - self.operation_default_id.location_id or self.in_warehouse_id.lot_rma_id - ) - self.customer_to_supplier = self.operation_default_id.customer_to_supplier - self.supplier_to_customer = self.operation_default_id.supplier_to_customer - self.in_route_id = self.operation_default_id.in_route_id - self.out_route_id = self.operation_default_id.out_route_id - - @api.depends("rma_line_ids.date_rma") - def _compute_date_rma(self): - """If all order line have same date set date_rma. - If no lines, respect value given by the user. - """ - for rma in self: - if rma.rma_line_ids: - date_rma = rma.rma_line_ids[0].date_rma or False - for rma_line in rma.rma_line_ids: - if rma_line.date_rma != date_rma: - date_rma = False - break - rma.date_rma = date_rma - - def _inverse_date_rma(self): - """When set date_rma set date_rma on all order lines""" - for po in self: - if po.date_rma: - po.rma_line_ids.write({"date_rma": po.date_rma}) - - @api.constrains("partner_id", "rma_line_ids") - def _check_partner_id(self): - if self.rma_line_ids and self.partner_id != self.mapped( - "rma_line_ids.partner_id" - ): - raise UserError(_("Group partner and RMA's partner must be the same.")) - if len(self.mapped("rma_line_ids.partner_id")) > 1: - raise UserError(_("All grouped RMA's should have same partner.")) - - @api.model_create_multi - def create(self, vals_list): - for vals in vals_list: - if self.env.context.get("supplier") or vals.get("type") == "supplier": - vals["name"] = self.env["ir.sequence"].next_by_code( - "rma.order.supplier" - ) - else: - vals["name"] = self.env["ir.sequence"].next_by_code( - "rma.order.customer" - ) - return super().create(vals_list) - - def _view_shipments(self, result, shipments): - # choose the view_mode accordingly - if len(shipments) > 1: - result["domain"] = [("id", "in", shipments.ids)] - elif len(shipments) == 1: - res = self.env.ref("stock.view_picking_form", False) - result["views"] = [(res and res.id or False, "form")] - result["res_id"] = shipments.ids[0] - return result - - def action_view_in_shipments(self): - action = self.env.ref("stock.action_picking_tree_all") - result = action.sudo().read()[0] - shipments = self.env["stock.picking"] - for line in self.rma_line_ids: - shipments |= line._get_in_pickings() - return self._view_shipments(result, shipments) - - def action_view_out_shipments(self): - action = self.env.ref("stock.action_picking_tree_all") - result = action.sudo().read()[0] - shipments = self.env["stock.picking"] - for line in self.rma_line_ids: - shipments |= line._get_out_pickings() - return self._view_shipments(result, shipments) - - def _get_valid_lines(self): - """:return: A recordset of rma lines.""" - self.ensure_one() - return self.rma_line_ids - - def action_view_lines(self): - if self.type == "customer": - action = self.env.ref("rma.action_rma_customer_lines") - res = self.env.ref("rma.view_rma_line_form", False) - else: - action = self.env.ref("rma.action_rma_supplier_lines") - res = self.env.ref("rma.view_rma_line_supplier_form", False) - result = action.sudo().read()[0] - lines = self._get_valid_lines() - # choose the view_mode accordingly - if len(lines.ids) != 1: - result["domain"] = [("id", "in", lines.ids)] - else: - result["views"] = [(res and res.id or False, "form")] - result["res_id"] = lines.id - result["context"] = {} - return result - - def action_view_supplier_lines(self): - action = self.env.ref("rma.action_rma_supplier_lines") - result = action.sudo().read()[0] - lines = self.rma_line_ids - for line_id in lines: - related_lines = [line.id for line in line_id.supplier_rma_line_ids] - # choose the view_mode accordingly - if len(related_lines) != 1: - result["domain"] = [("id", "in", related_lines)] - else: - res = self.env.ref("rma.view_rma_line_supplier_form", False) - result["views"] = [(res and res.id or False, "form")] - result["res_id"] = related_lines[0] - return result - - @api.onchange("in_warehouse_id") - def _onchange_in_warehouse_id(self): - if self.in_warehouse_id and self.rma_line_ids: - for rma_line in self.rma_line_ids: - rma_line.in_warehouse_id = self.in_warehouse_id.id - rma_line.location_id = self.in_warehouse_id.lot_rma_id.id - - @api.onchange("customer_to_supplier", "supplier_address_id") - def _onchange_customer_to_supplier(self): - if self.type == "customer" and self.rma_line_ids: - for rma_line in self.rma_line_ids: - rma_line.customer_to_supplier = self.customer_to_supplier - rma_line.supplier_address_id = self.supplier_address_id.id - - @api.onchange("supplier_to_customer", "customer_address_id") - def _onchange_supplier_to_customer(self): - if self.type == "supplier" and self.rma_line_ids: - for rma_line in self.rma_line_ids: - rma_line.supplier_to_customer = self.supplier_to_customer - rma_line.customer_address_id = self.customer_address_id.id diff --git a/rma/models/rma_order_line.py b/rma/models/rma_order_line.py deleted file mode 100644 index be9c35c8..00000000 --- a/rma/models/rma_order_line.py +++ /dev/null @@ -1,807 +0,0 @@ -# Copyright (C) 2017-20 ForgeFlow S.L. -# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) - -import operator - -from odoo import _, api, fields, models -from odoo.exceptions import UserError, ValidationError - -ops = {"=": operator.eq, "!=": operator.ne} - - -class RmaOrderLine(models.Model): - _name = "rma.order.line" - _description = "RMA" - _inherit = ["mail.thread"] - _order = "id desc" - - @api.model - def _get_default_type(self): - if "supplier" in self.env.context: - return "supplier" - return "customer" - - @api.model - def _default_warehouse_id(self): - rma_id = self.env.context.get("default_rma_id", False) - warehouse = self.env["stock.warehouse"] - if rma_id: - rma = self.env["rma.order"].browse(rma_id) - warehouse = self.env["stock.warehouse"].search( - [("company_id", "=", rma.company_id.id)], limit=1 - ) - return warehouse - - @api.model - def _default_location_id(self): - wh = self._default_warehouse_id() - return wh.lot_rma_id - - @api.onchange("partner_id") - def _onchange_delivery_address(self): - self.delivery_address_id = self.env["res.partner"].browse( - self.partner_id.address_get(["delivery"])["delivery"] - ) - - @api.model - def _get_in_pickings(self): - # We consider an in move one where the first origin is outside - # of the company and the final destination is outside. In case - # of 2 or 3 step pickings, we should categorize as in shipments - # even when they are technically internal transfers. - pickings = self.env["stock.picking"] - for move in self.move_ids: - first_usage = move._get_first_usage() - last_usage = move._get_last_usage() - if last_usage == "internal" and first_usage != "internal": - pickings |= move.picking_id - elif last_usage == "supplier" and first_usage == "customer": - pickings |= move.picking_id - return pickings - - @api.model - def _get_in_moves(self): - moves = self.env["stock.move"] - for move in self.move_ids: - first_usage = move._get_first_usage() - last_usage = move._get_last_usage() - if last_usage == "internal" and first_usage != "internal": - moves |= move - elif last_usage == "supplier" and first_usage == "customer": - moves |= move - return moves - - @api.model - def _get_out_pickings(self): - pickings = self.env["stock.picking"] - for move in self.move_ids: - first_usage = move._get_first_usage() - last_usage = move._get_last_usage() - if first_usage in ("internal", "production") and last_usage in ( - "customer", - "supplier", - ): - pickings |= move.picking_id - elif last_usage == "customer" and first_usage == "supplier": - pickings |= move.picking_id - return pickings - - def _compute_in_shipment_count(self): - for line in self: - pickings = line._get_in_pickings() - line.in_shipment_count = len(pickings) - - def _compute_out_shipment_count(self): - for line in self: - pickings = line._get_out_pickings() - line.out_shipment_count = len(pickings) - - def _get_rma_move_qty(self, states, direction="in"): - for rec in self: - product_obj = self.env["uom.uom"] - qty = 0.0 - if direction == "in": - moves = rec.move_ids.filtered( - lambda m: m.state in states - and ( - m.location_id.usage == "supplier" - or m.location_id.usage == "customer" - ) - and ( - m.location_dest_id.usage == "internal" - or m.location_dest_id.usage == "supplier" - ) - ) - elif direction == "out": - moves = rec.move_ids.filtered( - lambda m: m.state in states - and ( - m.location_dest_id.usage == "supplier" - or m.location_dest_id.usage == "customer" - ) - and ( - m.location_id.usage == "internal" - or m.location_id.usage == "supplier" - ) - ) - for move in moves: - # If the move is part of a chain don't count it - if direction == "out" and move.move_orig_ids: - continue - elif direction == "in" and move.move_dest_ids: - continue - qty += product_obj._compute_quantity(move.product_uom_qty, rec.uom_id) - return qty - - @api.depends( - "move_ids", - "move_ids.state", - "qty_received", - "receipt_policy", - "product_qty", - "type", - ) - def _compute_qty_to_receive(self): - for rec in self: - rec.qty_to_receive = 0.0 - if rec.receipt_policy == "ordered": - rec.qty_to_receive = rec.product_qty - rec.qty_received - elif rec.receipt_policy == "delivered": - rec.qty_to_receive = rec.qty_delivered - rec.qty_received - - @api.depends( - "move_ids", - "move_ids.state", - "delivery_policy", - "product_qty", - "type", - "qty_delivered", - "qty_received", - ) - def _compute_qty_to_deliver(self): - for rec in self: - rec.qty_to_deliver = 0.0 - if rec.delivery_policy == "ordered": - rec.qty_to_deliver = rec.product_qty - rec.qty_delivered - elif rec.delivery_policy == "received": - rec.qty_to_deliver = rec.qty_received - rec.qty_delivered - - @api.depends("move_ids", "move_ids.state", "type") - def _compute_qty_incoming(self): - for rec in self: - qty = rec._get_rma_move_qty( - ("draft", "confirmed", "assigned"), direction="in" - ) - rec.qty_incoming = qty - - @api.depends("move_ids", "move_ids.state", "type") - def _compute_qty_received(self): - for rec in self: - qty = rec._get_rma_move_qty("done", direction="in") - rec.qty_received = qty - - @api.depends("move_ids", "move_ids.state", "type") - def _compute_qty_outgoing(self): - for rec in self: - qty = rec._get_rma_move_qty( - ("draft", "confirmed", "assigned"), direction="out" - ) - rec.qty_outgoing = qty - - @api.depends("move_ids", "move_ids.state", "type") - def _compute_qty_delivered(self): - for rec in self: - qty = rec._get_rma_move_qty("done", direction="out") - rec.qty_delivered = qty - - @api.model - def _get_supplier_rma_qty(self): - return sum( - self.supplier_rma_line_ids.filtered(lambda r: r.state != "cancel").mapped( - "product_qty" - ) - ) - - @api.depends( - "customer_to_supplier", - "supplier_rma_line_ids", - "move_ids", - "move_ids.state", - "qty_received", - "receipt_policy", - "product_qty", - "type", - ) - def _compute_qty_supplier_rma(self): - for rec in self: - if rec.customer_to_supplier: - supplier_rma_qty = rec._get_supplier_rma_qty() - rec.qty_to_supplier_rma = rec.product_qty - supplier_rma_qty - rec.qty_in_supplier_rma = supplier_rma_qty - else: - rec.qty_to_supplier_rma = 0.0 - rec.qty_in_supplier_rma = 0.0 - - def _compute_rma_line_count(self): - for rec in self.filtered(lambda r: r.type == "customer"): - rec.rma_line_count = len(rec.supplier_rma_line_ids) - for rec in self.filtered(lambda r: r.type == "supplier"): - rec.rma_line_count = len(rec.customer_rma_id) - - @api.model - def _default_date_rma(self): - return fields.Datetime.now() - - delivery_address_id = fields.Many2one( - comodel_name="res.partner", - string="Partner delivery address", - help="This address will be used to deliver repaired or replacement " - "products.", - ) - rma_id = fields.Many2one( - comodel_name="rma.order", - string="RMA Group", - tracking=True, - readonly=True, - ) - name = fields.Char( - string="Reference", - required=True, - default="/", - help="Add here the supplier RMA #. Otherwise an internal code is" " assigned.", - copy=False, - ) - description = fields.Text() - conditions = fields.Html(string="Terms and conditions") - origin = fields.Char( - string="Source Document", - help="Reference of the document that produced this rma.", - ) - date_rma = fields.Datetime( - string="Order Date", index=True, default=lambda self: self._default_date_rma() - ) - state = fields.Selection( - selection=[ - ("draft", "Draft"), - ("to_approve", "To Approve"), - ("approved", "Approved"), - ("done", "Done"), - ("canceled", "Canceled"), - ], - default="draft", - tracking=True, - ) - operation_id = fields.Many2one( - comodel_name="rma.operation", - required=True, - readonly=False, - tracking=True, - ) - assigned_to = fields.Many2one( - comodel_name="res.users", - tracking=True, - default=lambda self: self.env.uid, - ) - requested_by = fields.Many2one( - comodel_name="res.users", - tracking=True, - default=lambda self: self.env.uid, - ) - partner_id = fields.Many2one( - comodel_name="res.partner", - required=True, - store=True, - tracking=True, - ) - sequence = fields.Integer( - default=10, help="Gives the sequence of this line when displaying the rma." - ) - product_id = fields.Many2one( - comodel_name="product.product", - ondelete="restrict", - required=True, - ) - product_tracking = fields.Selection(related="product_id.tracking") - lot_id = fields.Many2one( - comodel_name="stock.lot", - string="Lot/Serial Number", - ) - product_qty = fields.Float( - string="Return Qty", - copy=False, - default=1.0, - digits="Product Unit of Measure", - ) - uom_id = fields.Many2one( - comodel_name="uom.uom", - string="Unit of Measure", - required=True, - compute="_compute_uom_id", - precompute=True, - store=True, - ) - price_unit = fields.Monetary( - string="Unit cost", - help="Unit cost of the items under RMA", - ) - in_shipment_count = fields.Integer( - compute="_compute_in_shipment_count", string="# of Shipments" - ) - out_shipment_count = fields.Integer( - compute="_compute_out_shipment_count", string="# of Deliveries" - ) - move_ids = fields.One2many( - "stock.move", "rma_line_id", string="Stock Moves", readonly=True, copy=False - ) - reference_move_id = fields.Many2one( - comodel_name="stock.move", - string="Originating Stock Move", - copy=False, - ) - currency_id = fields.Many2one( - "res.currency", - default=lambda self: self.env.company.currency_id, - ) - company_id = fields.Many2one( - comodel_name="res.company", - required=True, - default=lambda self: self.env.company, - ) - type = fields.Selection( - selection=[("customer", "Customer"), ("supplier", "Supplier")], - required=True, - default=lambda self: self._get_default_type(), - readonly=True, - ) - customer_to_supplier = fields.Boolean( - "The customer will send to the supplier", - ) - supplier_to_customer = fields.Boolean( - "The supplier will send to the customer", - ) - receipt_policy = fields.Selection( - [ - ("no", "Not required"), - ("ordered", "Based on Ordered Quantities"), - ("delivered", "Based on Delivered Quantities"), - ], - required=True, - default="no", - readonly=False, - ) - delivery_policy = fields.Selection( - [ - ("no", "Not required"), - ("ordered", "Based on Ordered Quantities"), - ("received", "Based on Received Quantities"), - ], - required=True, - default="no", - readonly=False, - ondelete="cascade", - ) - in_route_id = fields.Many2one( - "stock.route", - string="Inbound Route", - required=True, - domain=[("rma_selectable", "=", True)], - compute="_compute_in_route_id", - precompute=True, - store=True, - ) - out_route_id = fields.Many2one( - "stock.route", - string="Outbound Route", - required=True, - domain=[("rma_selectable", "=", True)], - compute="_compute_out_route_id", - precompute=True, - store=True, - ) - in_warehouse_id = fields.Many2one( - comodel_name="stock.warehouse", - string="Inbound Warehouse", - required=True, - default=lambda self: self._default_warehouse_id(), - ) - out_warehouse_id = fields.Many2one( - comodel_name="stock.warehouse", - string="Outbound Warehouse", - required=True, - default=lambda self: self._default_warehouse_id(), - ) - location_id = fields.Many2one( - comodel_name="stock.location", - string="Send To This Company Location", - required=True, - default=lambda self: self._default_location_id(), - ) - customer_rma_id = fields.Many2one( - "rma.order.line", string="Customer RMA line", ondelete="cascade" - ) - supplier_rma_line_ids = fields.One2many("rma.order.line", "customer_rma_id") - rma_line_count = fields.Integer( - compute="_compute_rma_line_count", string="# of RMA lines associated" - ) - supplier_address_id = fields.Many2one( - comodel_name="res.partner", - string="Supplier Address", - help="Address of the supplier in case of Customer RMA operation " "dropship.", - ) - customer_address_id = fields.Many2one( - comodel_name="res.partner", - string="Customer Address", - help="Address of the customer in case of Supplier RMA operation " "dropship.", - ) - qty_to_receive = fields.Float( - digits="Product Unit of Measure", - compute="_compute_qty_to_receive", - store=True, - ) - qty_incoming = fields.Float( - string="Incoming Qty", - copy=False, - readonly=True, - digits="Product Unit of Measure", - compute="_compute_qty_incoming", - store=True, - ) - qty_received = fields.Float( - copy=False, - digits="Product Unit of Measure", - compute="_compute_qty_received", - store=True, - ) - qty_to_deliver = fields.Float( - copy=False, - digits="Product Unit of Measure", - readonly=True, - compute="_compute_qty_to_deliver", - store=True, - ) - qty_outgoing = fields.Float( - string="Outgoing Qty", - copy=False, - readonly=True, - digits="Product Unit of Measure", - compute="_compute_qty_outgoing", - store=True, - ) - qty_delivered = fields.Float( - copy=False, - digits="Product Unit of Measure", - readonly=True, - compute="_compute_qty_delivered", - store=True, - ) - qty_to_supplier_rma = fields.Float( - string="Qty to send to Supplier RMA", - digits="Product Unit of Measure", - readonly=True, - compute="_compute_qty_supplier_rma", - store=True, - ) - qty_in_supplier_rma = fields.Float( - string="Qty in Supplier RMA", - digits="Product Unit of Measure", - readonly=True, - compute="_compute_qty_supplier_rma", - store=True, - ) - under_warranty = fields.Boolean(string="Under Warranty?") - - def _prepare_rma_line_from_stock_move(self, sm, lot=False): - if not self.type: - self.type = self._get_default_type() - if self.type == "customer": - operation = ( - sm.product_id.rma_customer_operation_id - or sm.product_id.categ_id.rma_customer_operation_id - ) - else: - operation = ( - sm.product_id.rma_supplier_operation_id - or sm.product_id.categ_id.rma_supplier_operation_id - ) - - if not operation: - operation = self.env["rma.operation"].search( - [("type", "=", self.type)], limit=1 - ) - if not operation: - raise ValidationError(_("Please define an operation first.")) - - if not operation.in_route_id or not operation.out_route_id: - route = self.env["stock.route"].search( - [("rma_selectable", "=", True)], limit=1 - ) - if not route: - raise ValidationError(_("Please define an RMA route.")) - - if ( - not operation.in_warehouse_id - or not operation.out_warehouse_id - or not ( - operation.in_warehouse_id.lot_rma_id - or operation.out_warehouse_id.lot_rma_id - ) - ): - warehouse = self.env["stock.warehouse"].search( - [("company_id", "=", self.company_id.id), ("lot_rma_id", "!=", False)], - limit=1, - ) - if not warehouse: - raise ValidationError( - _("Please define a warehouse with a default RMA location.") - ) - - data = { - "product_id": sm.product_id.id, - "lot_id": lot and lot.id or False, - "origin": sm.picking_id.name or sm.name, - "uom_id": sm.product_uom.id, - "product_qty": sm.product_uom_qty, - "delivery_address_id": sm.picking_id.partner_id.id, - "operation_id": operation.id, - "receipt_policy": operation.receipt_policy, - "delivery_policy": operation.delivery_policy, - "in_warehouse_id": operation.in_warehouse_id.id or warehouse.id, - "out_warehouse_id": operation.out_warehouse_id.id or warehouse.id, - "in_route_id": operation.in_route_id.id or route.id, - "out_route_id": operation.out_route_id.id or route.id, - "location_id": ( - operation.location_id.id - or operation.in_warehouse_id.lot_rma_id.id - or operation.out_warehouse_id.lot_rma_id.id - or warehouse.lot_rma_id.id - ), - } - return data - - @api.onchange("reference_move_id") - def _onchange_reference_move_id(self): - self.ensure_one() - sm = self.reference_move_id - if not sm: - return - if sm.move_line_ids.lot_id: - if len(sm.move_line_ids.lot_id) > 1: - raise UserError(_("To manage lots use RMA groups.")) - else: - data = self._prepare_rma_line_from_stock_move( - sm, lot=sm.move_line_ids.lot_id[0] - ) - self.update(data) - else: - data = self._prepare_rma_line_from_stock_move(sm, lot=False) - self.update(data) - self._remove_other_data_origin("reference_move_id") - - @api.constrains("reference_move_id", "partner_id") - def _check_move_partner(self): - for rec in self: - if ( - rec.reference_move_id - and rec.reference_move_id.picking_id.partner_id != rec.partner_id - ): - raise ValidationError( - _( - "RMA customer and originating stock move customer " - "doesn't match." - ) - ) - - def _remove_other_data_origin(self, exception): - if not exception == "reference_move_id": - self.reference_move_id = False - return True - - def _check_lot_assigned(self): - for rec in self: - if rec.product_id.tracking == "serial" and rec.product_qty != 1: - raise ValidationError( - _( - "Product %s has serial tracking configuration, " - "quantity to receive should be 1" - ) - % (rec.product_id.display_name) - ) - - def action_rma_to_approve(self): - self._check_lot_assigned() - self.write({"state": "to_approve"}) - for rec in self: - if rec.product_id.rma_approval_policy == "one_step": - rec.action_rma_approve() - return True - - def action_rma_draft(self): - self.write({"state": "draft"}) - return True - - def action_rma_approve(self): - self.write({"state": "approved"}) - return True - - def action_rma_done(self): - self.write({"state": "done"}) - return True - - @api.model_create_multi - def create(self, vals_list): - for vals in vals_list: - if not vals.get("name") or vals.get("name") == "/": - if self.env.context.get("supplier"): - vals["name"] = self.env["ir.sequence"].next_by_code( - "rma.order.line.supplier" - ) - else: - vals["name"] = self.env["ir.sequence"].next_by_code( - "rma.order.line.customer" - ) - return super().create(vals_list) - - def check_cancel(self): - for move in self.move_ids: - if move.state == "done": - raise UserError( - _("Unable to cancel %s as some receptions have already been done.") - % (self.name) - ) - - def action_rma_cancel(self): - for order in self: - order.check_cancel() - order.write({"state": "canceled"}) - order.move_ids._action_cancel() - shipments = order._get_in_pickings() - shipments |= order._get_out_pickings() - for ship in shipments: - ship.action_cancel() - return True - - def _get_price_unit(self): - """The price unit corresponds to the cost of that product""" - self.ensure_one() - if self.reference_move_id: - price_unit = self.reference_move_id.price_unit - else: - price_unit = self.product_id.with_company(self.company_id).standard_price - return price_unit - - @api.onchange("product_id") - def _onchange_product_id(self): - result = {} - if not self.product_id: - return result - self.uom_id = self.product_id.uom_id.id - if not self.type: - self.type = self._get_default_type() - self.price_unit = self._get_price_unit() - if self.type == "customer": - self.operation_id = ( - self.product_id.rma_customer_operation_id - or self.product_id.categ_id.rma_customer_operation_id - ) - else: - self.operation_id = ( - self.product_id.rma_supplier_operation_id - or self.product_id.categ_id.rma_supplier_operation_id - ) - if self.lot_id.product_id != self.product_id: - self.lot_id = False - return result - - @api.onchange("operation_id") - def _onchange_operation_id(self): - result = {} - if not self.operation_id: - return result - self.receipt_policy = self.operation_id.receipt_policy - self.delivery_policy = self.operation_id.delivery_policy - self.customer_to_supplier = ( - self.rma_id.customer_to_supplier or self.operation_id.customer_to_supplier - ) - self.supplier_to_customer = ( - self.rma_id.supplier_to_customer or self.operation_id.supplier_to_customer - ) - self.in_warehouse_id = ( - self.rma_id.in_warehouse_id or self.operation_id.in_warehouse_id - ) - self.out_warehouse_id = ( - self.rma_id.out_warehouse_id or self.operation_id.out_warehouse_id - ) - self.location_id = ( - self.rma_id.location_id - or self.operation_id.location_id - or self.in_warehouse_id.lot_rma_id - ) - self.in_route_id = self.rma_id.in_route_id or self.operation_id.in_route_id - self.out_route_id = self.rma_id.out_route_id or self.operation_id.out_route_id - return result - - @api.depends("operation_id") - def _compute_in_route_id(self): - for rec in self: - rec.in_route_id = rec.operation_id.in_route_id - - @api.depends("operation_id") - def _compute_out_route_id(self): - for rec in self: - rec.out_route_id = rec.operation_id.out_route_id - - @api.onchange("customer_to_supplier", "type") - def _onchange_receipt_policy(self): - if self.type == "supplier" and self.customer_to_supplier: - self.receipt_policy = "no" - elif self.type == "customer" and self.supplier_to_customer: - self.delivery_policy = "no" - - @api.onchange("lot_id") - def _onchange_lot_id(self): - product = self.lot_id.product_id - if product: - self.product_id = product - - @api.depends("product_id") - def _compute_uom_id(self): - for rec in self: - if rec.product_id: - rec.uom_id = rec.product_id.uom_id - - def action_view_in_shipments(self): - action = self.env.ref("stock.action_picking_tree_all") - result = action.sudo().read()[0] - shipments = self.env["stock.picking"] - for line in self: - shipments |= line._get_in_pickings() - # choose the view_mode accordingly - if len(shipments) != 1: - result["domain"] = "[('id', 'in', " + str(shipments.ids) + ")]" - elif len(shipments) == 1: - res = self.env.ref("stock.view_picking_form", False) - result["views"] = [(res and res.id or False, "form")] - result["res_id"] = shipments.ids[0] - return result - - def action_view_out_shipments(self): - action = self.env.ref("stock.action_picking_tree_all") - result = action.sudo().read()[0] - shipments = self.env["stock.picking"] - for line in self: - shipments |= line._get_out_pickings() - # choose the view_mode accordingly - if len(shipments) != 1: - result["domain"] = "[('id', 'in', " + str(shipments.ids) + ")]" - elif len(shipments) == 1: - res = self.env.ref("stock.view_picking_form", False) - result["views"] = [(res and res.id or False, "form")] - result["res_id"] = shipments.ids[0] - return result - - def action_view_rma_lines(self): - if self.type == "customer": - # from customer we link to supplier rma - action = self.env.ref("rma.action_rma_supplier_lines") - rma_lines = self.supplier_rma_line_ids.ids - res = self.env.ref("rma.view_rma_line_supplier_form", False) - else: - # from supplier we link to customer rma - action = self.env.ref("rma.action_rma_customer_lines") - rma_lines = self.customer_rma_id.ids - res = self.env.ref("rma.view_rma_line_form", False) - result = action.sudo().read()[0] - # choose the view_mode accordingly - if rma_lines and len(rma_lines) != 1: - result["domain"] = rma_lines.ids - elif len(rma_lines) == 1: - result["views"] = [(res and res.id or False, "form")] - result["res_id"] = rma_lines[0] - return result - - @api.constrains("partner_id", "rma_id") - def _check_partner_id(self): - if self.rma_id and self.partner_id != self.rma_id.partner_id: - raise ValidationError( - _("Group partner and RMA's partner must be the same.") - ) diff --git a/rma/models/stock_move.py b/rma/models/stock_move.py deleted file mode 100644 index f3077f0b..00000000 --- a/rma/models/stock_move.py +++ /dev/null @@ -1,107 +0,0 @@ -# Copyright (C) 2017-20 ForgeFlow S.L. -# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) - -from odoo import api, fields, models - - -class StockMove(models.Model): - _inherit = "stock.move" - - rma_line_id = fields.Many2one( - "rma.order.line", string="RMA line", ondelete="restrict" - ) - - @api.model_create_multi - def create(self, vals_list): - for vals in vals_list: - if vals.get("group_id"): - group = self.env["procurement.group"].browse(vals["group_id"]) - if group.rma_line_id: - vals["rma_line_id"] = group.rma_line_id.id - return super().create(vals_list) - - def _action_assign(self, force_qty=False): - res = super()._action_assign(force_qty=force_qty) - for move in self: - if move.rma_line_id: - move.partner_id = move.rma_line_id.partner_id.id or False - return res - - @api.model - def _get_first_usage(self): - if self.move_orig_ids: - # We assume here that all origin moves come from the same place - return self.move_orig_ids[0]._get_first_usage() - else: - return self.location_id.usage - - @api.model - def _get_last_usage(self): - if self.move_dest_ids: - # We assume here that all origin moves come from the same place - return self.move_dest_ids[0]._get_last_usage() - else: - return self.location_dest_id.usage - - def _should_bypass_reservation(self, forced_location=False): - res = super()._should_bypass_reservation(forced_location=forced_location) - if self.env.context.get("force_no_bypass_reservation"): - return False - return res - - def _get_available_quantity( - self, - location_id, - lot_id=None, - package_id=None, - owner_id=None, - strict=False, - allow_negative=False, - ): - if ( - not lot_id - and self.rma_line_id.lot_id - and self.location_id.usage == "internal" - ): - # In supplier RMA deliveries we can only send the RMA lot/serial. - lot_id = self.rma_line_id.lot_id - return super()._get_available_quantity( - location_id, - lot_id=lot_id, - package_id=package_id, - owner_id=owner_id, - strict=strict, - allow_negative=allow_negative, - ) - - def _update_reserved_quantity( - self, - need, - location_id, - quant_ids=None, - lot_id=None, - package_id=None, - owner_id=None, - strict=True, - ): - if ( - not lot_id - and self.rma_line_id.lot_id - and self.location_id.usage == "internal" - ): - # In supplier RMA deliveries we can only send the RMA lot/serial. - lot_id = self.rma_line_id.lot_id - return super()._update_reserved_quantity( - need, - location_id, - quant_ids=quant_ids, - lot_id=lot_id, - package_id=package_id, - owner_id=owner_id, - strict=strict, - ) - - @api.model - def _prepare_merge_moves_distinct_fields(self): - res = super()._prepare_merge_moves_distinct_fields() - return res + ["rma_line_id"] diff --git a/rma/models/stock_rule.py b/rma/models/stock_rule.py deleted file mode 100644 index acaf17f5..00000000 --- a/rma/models/stock_rule.py +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright (C) 2017-22 ForgeFlow S.L. -# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) - -from odoo import models - - -class StockRule(models.Model): - _inherit = "stock.rule" - - def _get_stock_move_values( - self, - product_id, - product_qty, - product_uom, - location_id, - name, - origin, - company_id, - values, - ): - res = super()._get_stock_move_values( - product_id, - product_qty, - product_uom, - location_id, - name, - origin, - company_id, - values, - ) - if "rma_line_id" in values: - line = values.get("rma_line_id") - line = self.env["rma.order.line"].browse([line]) - res["rma_line_id"] = line.id - if line.delivery_address_id: - res["partner_id"] = line.delivery_address_id.id - elif line.rma_id.partner_id: - res["partner_id"] = line.rma_id.partner_id.id - res["price_unit"] = line._get_price_unit() - return res diff --git a/rma/models/stock_warehouse.py b/rma/models/stock_warehouse.py deleted file mode 100644 index 9feebe72..00000000 --- a/rma/models/stock_warehouse.py +++ /dev/null @@ -1,270 +0,0 @@ -# Copyright (C) 2017-20 ForgeFlow S.L. -# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) - -from odoo import _, fields, models - - -class StockWarehouse(models.Model): - _inherit = "stock.warehouse" - - lot_rma_id = fields.Many2one( - comodel_name="stock.location", string="RMA Location" - ) # not readonly to have the possibility to edit location and - # propagate to rma rules (add a auto-update when writing this field?) - rma_cust_out_type_id = fields.Many2one( - comodel_name="stock.picking.type", string="RMA Customer out Type", readonly=True - ) - rma_sup_out_type_id = fields.Many2one( - comodel_name="stock.picking.type", string="RMA Supplier out Type", readonly=True - ) - rma_cust_in_type_id = fields.Many2one( - comodel_name="stock.picking.type", string="RMA Customer in Type", readonly=True - ) - rma_sup_in_type_id = fields.Many2one( - comodel_name="stock.picking.type", string="RMA Supplier in Type", readonly=True - ) - rma_in_this_wh = fields.Boolean( - string="RMA in this Warehouse", - help="If set, it will create RMA location, picking types and routes " - "for this warehouse.", - ) - rma_customer_in_pull_id = fields.Many2one( - comodel_name="stock.rule", string="RMA Customer In Rule" - ) - rma_customer_out_pull_id = fields.Many2one( - comodel_name="stock.rule", string="RMA Customer Out Rule" - ) - rma_supplier_in_pull_id = fields.Many2one( - comodel_name="stock.rule", string="RMA Supplier In Rule" - ) - rma_supplier_out_pull_id = fields.Many2one( - comodel_name="stock.rule", string="RMA Supplier Out Rule" - ) - - def _get_rma_types(self): - return [ - self.rma_cust_out_type_id, - self.rma_sup_out_type_id, - self.rma_cust_in_type_id, - self.rma_sup_in_type_id, - ] - - def _rma_types_available(self): - self.ensure_one() - rma_types = self._get_rma_types() - for r_type in rma_types: - if not r_type: - return False - return True - - def write(self, vals): - if "rma_in_this_wh" in vals: - if vals.get("rma_in_this_wh"): - for wh in self: - # RMA location: - if not wh.lot_rma_id: - wh.lot_rma_id = self.env["stock.location"].create( - { - "name": "RMA", - "usage": "internal", - "location_id": wh.view_location_id.id, - "company_id": wh.company_id.id, - "return_location": True, - } - ) - # RMA types - if not wh._rma_types_available(): - wh._create_rma_picking_types() - else: - for r_type in wh._get_rma_types(): - if r_type: - r_type.active = True - # RMA rules: - wh._create_or_update_rma_pull() - else: - for wh in self: - for r_type in wh._get_rma_types(): - if r_type: - r_type.active = False - # Unlink rules: - self.mapped("rma_customer_in_pull_id").unlink() - self.mapped("rma_customer_out_pull_id").unlink() - self.mapped("rma_supplier_in_pull_id").unlink() - self.mapped("rma_supplier_out_pull_id").unlink() - return super().write(vals) - - def _create_rma_picking_types(self): - picking_type_obj = self.env["stock.picking.type"] - customer_loc, supplier_loc = self._get_partner_locations() - for wh in self: - other_pick_type = picking_type_obj.search( - [("warehouse_id", "=", wh.id)], order="sequence desc", limit=1 - ) - color = other_pick_type.color if other_pick_type else 0 - max_sequence = other_pick_type and other_pick_type.sequence or 0 - # create rma_cust_out_type_id: - rma_cust_out_type_id = picking_type_obj.create( - { - "name": _("Customer RMA Deliveries"), - "warehouse_id": wh.id, - "code": "outgoing", - "use_create_lots": True, - "use_existing_lots": False, - "sequence_id": self.env.ref("rma.seq_picking_type_rma_cust_out").id, - "default_location_src_id": wh.lot_rma_id.id, - "default_location_dest_id": customer_loc.id, - "sequence": max_sequence, - "color": color, - "sequence_code": "RMA → Customer", - } - ) - # create rma_sup_out_type_id: - rma_sup_out_type_id = picking_type_obj.create( - { - "name": _("Supplier RMA Deliveries"), - "warehouse_id": wh.id, - "code": "outgoing", - "use_create_lots": True, - "use_existing_lots": False, - "sequence_id": self.env.ref("rma.seq_picking_type_rma_sup_out").id, - "default_location_src_id": wh.lot_rma_id.id, - "default_location_dest_id": supplier_loc.id, - "sequence": max_sequence, - "color": color, - "sequence_code": "Customer → RMA", - } - ) - # create rma_cust_in_type_id: - rma_cust_in_type_id = picking_type_obj.create( - { - "name": _("Customer RMA Receipts"), - "warehouse_id": wh.id, - "code": "incoming", - "use_create_lots": True, - "use_existing_lots": False, - "sequence_id": self.env.ref("rma.seq_picking_type_rma_cust_in").id, - "default_location_src_id": customer_loc.id, - "default_location_dest_id": wh.lot_rma_id.id, - "sequence": max_sequence, - "color": color, - "sequence_code": "RMA -> Supplier", - } - ) - # create rma_sup_in_type_id: - rma_sup_in_type_id = picking_type_obj.create( - { - "name": _("Supplier RMA Receipts"), - "warehouse_id": wh.id, - "code": "incoming", - "use_create_lots": True, - "use_existing_lots": False, - "sequence_id": self.env.ref("rma.seq_picking_type_rma_sup_in").id, - "default_location_src_id": supplier_loc.id, - "default_location_dest_id": wh.lot_rma_id.id, - "sequence": max_sequence, - "color": color, - "sequence_code": "Supplier -> RMA", - } - ) - wh.write( - { - "rma_cust_out_type_id": rma_cust_out_type_id.id, - "rma_sup_out_type_id": rma_sup_out_type_id.id, - "rma_cust_in_type_id": rma_cust_in_type_id.id, - "rma_sup_in_type_id": rma_sup_in_type_id.id, - } - ) - return True - - def get_rma_rules_dict(self): - self.ensure_one() - rma_rules = dict() - customer_loc, supplier_loc = self._get_partner_locations() - rma_rules["rma_customer_in"] = { - "name": self._format_rulename(self, customer_loc, self.lot_rma_id.name), - "action": "pull", - "warehouse_id": self.id, - "company_id": self.company_id.id, - "location_src_id": customer_loc.id, - "location_dest_id": self.lot_rma_id.id, - "procure_method": "make_to_stock", - "route_id": self.env.ref("rma.route_rma_customer").id, - "picking_type_id": self.rma_cust_in_type_id.id, - "active": True, - } - rma_rules["rma_customer_out"] = { - "name": self._format_rulename(self, self.lot_rma_id, customer_loc.name), - "action": "pull", - "warehouse_id": self.id, - "company_id": self.company_id.id, - "location_src_id": self.lot_rma_id.id, - "location_dest_id": customer_loc.id, - "procure_method": "make_to_stock", - "route_id": self.env.ref("rma.route_rma_customer").id, - "picking_type_id": self.rma_cust_out_type_id.id, - "active": True, - } - rma_rules["rma_supplier_in"] = { - "name": self._format_rulename(self, supplier_loc, self.lot_rma_id.name), - "action": "pull", - "warehouse_id": self.id, - "company_id": self.company_id.id, - "location_src_id": supplier_loc.id, - "location_dest_id": self.lot_rma_id.id, - "procure_method": "make_to_stock", - "route_id": self.env.ref("rma.route_rma_supplier").id, - "picking_type_id": self.rma_sup_in_type_id.id, - "active": True, - } - rma_rules["rma_supplier_out"] = { - "name": self._format_rulename(self, self.lot_rma_id, supplier_loc.name), - "action": "pull", - "warehouse_id": self.id, - "company_id": self.company_id.id, - "location_src_id": self.lot_rma_id.id, - "location_dest_id": supplier_loc.id, - "procure_method": "make_to_stock", - "route_id": self.env.ref("rma.route_rma_supplier").id, - "picking_type_id": self.rma_sup_out_type_id.id, - "active": True, - } - return rma_rules - - def _create_or_update_rma_pull(self): - rule_obj = self.env["stock.rule"] - for wh in self: - rules_dict = wh.get_rma_rules_dict() - if wh.rma_customer_in_pull_id: - wh.rma_customer_in_pull_id.write(rules_dict["rma_customer_in"]) - else: - wh.rma_customer_in_pull_id = rule_obj.create( - rules_dict["rma_customer_in"] - ) - - if wh.rma_customer_out_pull_id: - wh.rma_customer_out_pull_id.write(rules_dict["rma_customer_out"]) - else: - wh.rma_customer_out_pull_id = rule_obj.create( - rules_dict["rma_customer_out"] - ) - - if wh.rma_supplier_in_pull_id: - wh.rma_supplier_in_pull_id.write(rules_dict["rma_supplier_in"]) - else: - wh.rma_supplier_in_pull_id = rule_obj.create( - rules_dict["rma_supplier_in"] - ) - - if wh.rma_supplier_out_pull_id: - wh.rma_supplier_out_pull_id.write(rules_dict["rma_supplier_out"]) - else: - wh.rma_supplier_out_pull_id = rule_obj.create( - rules_dict["rma_supplier_out"] - ) - return True - - -class StockLocationRoute(models.Model): - _inherit = "stock.route" - - rma_selectable = fields.Boolean(string="Selectable on RMA Lines") diff --git a/rma/pyproject.toml b/rma/pyproject.toml deleted file mode 100644 index 4231d0cc..00000000 --- a/rma/pyproject.toml +++ /dev/null @@ -1,3 +0,0 @@ -[build-system] -requires = ["whool"] -build-backend = "whool.buildapi" diff --git a/rma/readme/CONFIGURE.rst b/rma/readme/CONFIGURE.rst deleted file mode 100644 index 740b1e14..00000000 --- a/rma/readme/CONFIGURE.rst +++ /dev/null @@ -1,41 +0,0 @@ -Security --------- - -Go to Settings > Users and assign the appropiate permissions to users. -Different security groups grant distinct levels of access to the RMA features. - -* Users in group "RMA Customer User" or "RMA Supplier User" can access to, - create and process RMA's associated to customers or suppliers respectively. - -* Users in group "RMA Manager" can access to, create, approve and process RMA's - associated to both customers and suppliers. - -RMA Approval Policy -------------------- - -There are two RMA approval policies in product catogories: - -* One step: Always auto-approve RMAs that only contain products within - categories with this policy. -* Two steps: A RMA order containing a product within a category with this - policy will request the RMA manager approval. - -In order to change the approval policy of a product category follow the next -steps: - -#. Go to *Inventory > Configuration > Products > Product Categories*. -#. Select one and change the field *RMA Approval Policy* to your convenience. - -Other Settings --------------- - -#. Go to RMA > Configuration > Settings > Return Merchandising - Authorization and select the option "Display 3 fields on rma: partner, - invoice address, delivery address" if needed. -#. Go to RMA > Configuration > Warehouse management > Warehouses and add - a default RMA location and RMA picking type for customers and suppliers RMA - picking type. In case the warehouse is configured to use routes, you need to - create at least one route per rma type with at least two push rules (one for - inbound another for outbound) it's very important to select the type of - operation supplier if we are moving in the company and customer if we are - moving out of the company. diff --git a/rma/readme/CONTRIBUTORS.rst b/rma/readme/CONTRIBUTORS.rst deleted file mode 100644 index 61bac6ba..00000000 --- a/rma/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,8 +0,0 @@ -* Jordi Ballester Alomar -* Aaron Henriquez -* Lois Rilo -* Bhavesh Odedra -* Akim Juillerat -* Alexandre Fayolle -* Chafique Delli -* Héctor Villarreal diff --git a/rma/readme/DESCRIPTION.rst b/rma/readme/DESCRIPTION.rst deleted file mode 100644 index 6ca0172a..00000000 --- a/rma/readme/DESCRIPTION.rst +++ /dev/null @@ -1,18 +0,0 @@ -A Return Merchandise Authorization (RMA), is a part of the process of -returning a product in order to receive a refund, replacement, or repair -during the product's warranty period. - -The purchaser of the product must contact the manufacturer (or distributor -or retailer) to obtain authorization to return the product. - -The resulting RMA number must be displayed on or included in the returned -product's packaging. - -The issuance of an RMA is a key gatekeeping moment in the reverse logistics -cycle, providing the vendor with a final opportunity to diagnose and correct -the customer's problem with the product (such as improper installation or -configuration) before the customer permanently relinquishes ownership -of the product to the manufacturer, commonly referred to as a return. - -As returns are costly for the vendor and inconvenient for the customer, -any return that can be prevented benefits both parties. diff --git a/rma/readme/ROADMAP.rst b/rma/readme/ROADMAP.rst deleted file mode 100644 index ca6afe09..00000000 --- a/rma/readme/ROADMAP.rst +++ /dev/null @@ -1,6 +0,0 @@ -* Picking operations report in customer RMA dropshipping case is showing - "Vendor Address" while it should be "Customer Address". -* Dropshipping always counted as a delivery on the smart buttons. -* Uninstall hook. -* Constraints instead of required fields on rma.order.line. -* Rename type field on rma.order and rma.order.line diff --git a/rma/readme/USAGE.rst b/rma/readme/USAGE.rst deleted file mode 100644 index b0ee9ff4..00000000 --- a/rma/readme/USAGE.rst +++ /dev/null @@ -1,12 +0,0 @@ -RMA are accessible though Inventory menu. There's four menus, divided by type. -Users can access to the list of RMA or RMA lines. - -Create an RMA: - -#. Select a partner. Enter RMA lines associated to an existing picking, or - manually. -#. Request approval and approve. -#. Click on RMA Lines button. -#. Click on more and select an option: "Receive products", "Create Delivery - Order". -#. Go back to the RMA. Set the RMA to done if not further action is required. diff --git a/rma/report/report_deliveryslip.xml b/rma/report/report_deliveryslip.xml deleted file mode 100644 index d799380d..00000000 --- a/rma/report/report_deliveryslip.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - diff --git a/rma/report/rma_report.xml b/rma/report/rma_report.xml deleted file mode 100644 index c5b9a811..00000000 --- a/rma/report/rma_report.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - RMA - rma.order.line - qweb-pdf - rma.report_rma_order_line - rma.report_rma_order_line - ('RMA - %s' % (object.name)) - - report - - - RMA Group - rma.order - qweb-pdf - rma.report_rma_order - rma.report_rma_order - ('RMA Group - %s' % (object.name)) - - report - - diff --git a/rma/report/rma_report_templates.xml b/rma/report/rma_report_templates.xml deleted file mode 100644 index a700b4d7..00000000 --- a/rma/report/rma_report_templates.xml +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - - - - - - - diff --git a/rma/security/ir.model.access.csv b/rma/security/ir.model.access.csv deleted file mode 100644 index 3643627b..00000000 --- a/rma/security/ir.model.access.csv +++ /dev/null @@ -1,25 +0,0 @@ -id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_rma_user_customer,rma.order.customer.user,model_rma_order,group_rma_customer_user,1,1,1,1 -access_rma_user_supplier,rma.order.supplier.user,model_rma_order,group_rma_supplier_user,1,1,1,1 -access_rma_manager,rma.order.manager,model_rma_order,group_rma_manager,1,1,1,1 -access_rma_line_customer_user,rma.order.line.customer.user,model_rma_order_line,group_rma_customer_user,1,1,1,1 -access_rma_line_supplier_user,rma.order.line.customer.supplier,model_rma_order_line,group_rma_supplier_user,1,1,1,1 -access_rma_line_manager,rma.order.line,model_rma_order_line,group_rma_manager,1,1,1,1 -access_rma_operation_manager,access_rma_operation,model_rma_operation,group_rma_manager,1,1,1,1 -access_rma_operation_customer_user,access_rma_operation,model_rma_operation,group_rma_customer_user,1,0,0,0 -access_rma_operation_supplier_user,access_rma_operation,model_rma_operation,group_rma_supplier_user,1,0,0,0 -access_rma_order_line_user,access_rma_order_line,model_rma_order_line,base.group_user,1,0,0,0 -access_rma_picking_wizard,rma.order.manager,model_rma_make_picking_wizard,group_rma_manager,1,1,1,1 -access_rma_picking_wizard_customer,rma.order.manager,model_rma_make_picking_wizard,group_rma_customer_user,1,1,1,1 -access_rma_picking_wizard_supplier,rma.order.manager,model_rma_make_picking_wizard,group_rma_supplier_user,1,1,1,1 -access_rma_picking_wizard_item,rma.order.manager,model_rma_make_picking_wizard_item,group_rma_manager,1,1,1,1 -access_rma_picking_wizard_item_customer,rma.order.manager,model_rma_make_picking_wizard_item,group_rma_customer_user,1,1,1,1 -access_rma_picking_wizard_item_supplier,rma.order.manager,model_rma_make_picking_wizard_item,group_rma_supplier_user,1,1,1,1 -access_rma_order_line_make_supplier_rma_customer_user,rma.order.line.make.supplier.rma.customer.user,model_rma_order_line_make_supplier_rma,rma.group_rma_customer_user,1,1,1,1 -access_rma_order_line_make_supplier_rmasupplier_user,rma.order.line.make.supplier.rma.supplier.user,model_rma_order_line_make_supplier_rma,rma.group_rma_supplier_user,1,1,1,1 -access_rma_order_line_make_supplier_rma_customer_user_item,rma.order.line.make.supplier.rma.item.customer.user,model_rma_order_line_make_supplier_rma_item,rma.group_rma_customer_user,1,1,1,1 -access_rma_order_line_make_supplier_rmasupplier_user_item,rma.order.line.make.supplier.rma.item.supplier.user,model_rma_order_line_make_supplier_rma_item,rma.group_rma_supplier_user,1,1,1,1 -access_rma_add_stock_move_customer_user_item,rma.add.stock.move.customer.user,model_rma_add_stock_move,rma.group_rma_customer_user,1,1,1,1 -access_rma_add_stock_move_supplier_user_item,rma.add.stock.move.supplier.user,model_rma_add_stock_move,rma.group_rma_supplier_user,1,1,1,1 -access_rma_add_serial_wiz_customer,access_rma_add_serial_wiz_customer,model_rma_add_serial_wiz,rma.group_rma_customer_user,1,1,1,1 -access_rma_add_serial_wiz_supplier,access_rma_add_serial_wiz_supplier,model_rma_add_serial_wiz,rma.group_rma_supplier_user,1,1,1,1 diff --git a/rma/security/rma.xml b/rma/security/rma.xml deleted file mode 100644 index af3e24aa..00000000 --- a/rma/security/rma.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - RMA - - 30 - - - - RMA Customer User - - - - - - RMA Supplier User - - - - - - RMA Manager - - - - - - - Addresses in RMA - - - - - - RMA Groups - - - - - - - - - - - - - rma order multi-company - - - ['|', ('company_id', '=', False), ('company_id', 'in', company_ids)] - - - rma order line multi-company - - - ['|', ('company_id', '=', False), ('company_id', 'in', company_ids)] - - - rma operation multi-company - - - ['|', ('company_id', '=', False), ('company_id', 'in', company_ids)] - - - diff --git a/rma/static/description/icon.png b/rma/static/description/icon.png deleted file mode 100644 index ce758c20..00000000 Binary files a/rma/static/description/icon.png and /dev/null differ diff --git a/rma/tests/__init__.py b/rma/tests/__init__.py deleted file mode 100644 index e485a52f..00000000 --- a/rma/tests/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright (C) 2017-20 ForgeFlow S.L. -# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) - -from . import test_rma diff --git a/rma/tests/test_rma.py b/rma/tests/test_rma.py deleted file mode 100644 index 4e5991a9..00000000 --- a/rma/tests/test_rma.py +++ /dev/null @@ -1,1086 +0,0 @@ -# © 2017 ForgeFlow -# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) - -from odoo.exceptions import UserError, ValidationError -from odoo.tests import Form, common - - -class TestRma(common.TransactionCase): - """Test the routes and the quantities""" - - @classmethod - def setUpClass(cls): - super().setUpClass() - # models - cls.rma_make_picking = cls.env["rma_make_picking.wizard"] - cls.make_supplier_rma = cls.env["rma.order.line.make.supplier.rma"] - cls.rma_add_stock_move = cls.env["rma_add_stock_move"] - cls.product_ctg_model = cls.env["product.category"] - cls.stockpicking = cls.env["stock.picking"] - cls.rma = cls.env["rma.order"] - cls.rma_line = cls.env["rma.order.line"] - cls.rma_op = cls.env["rma.operation"] - cls.product_product_model = cls.env["product.product"] - cls.res_users_model = cls.env["res.users"] - # References and records - cls.rma_cust_replace_op_id = cls.env.ref("rma.rma_operation_customer_replace") - cls.rma_sup_replace_op_id = cls.env.ref("rma.rma_operation_supplier_replace") - cls.rma_ds_replace_op_id = cls.env.ref("rma.rma_operation_ds_replace") - cls.category = cls._create_product_category( - "one_step", cls.rma_cust_replace_op_id, cls.rma_sup_replace_op_id - ) - cls.product_id = cls._create_product("PT0") - cls.product_1 = cls._create_product("PT1") - cls.product_2 = cls._create_product("PT2") - cls.product_3 = cls._create_product("PT3") - cls.uom_unit = cls.env.ref("uom.product_uom_unit") - cls.company = cls.env.company - cls.company.group_rma_delivery_address = True - cls.company.group_rma_lines = True - - cls.partner_id = cls.env.ref("base.res_partner_2") - cls.stock_location = cls.env.ref("stock.stock_location_stock") - cls.wh = cls.env.ref("stock.warehouse0") - cls.stock_rma_location = cls.wh.lot_rma_id - cls.customer_location = cls.env.ref("stock.stock_location_customers") - cls.supplier_location = cls.env.ref("stock.stock_location_suppliers") - cls.product_uom_id = cls.env.ref("uom.product_uom_unit") - cls.g_rma_customer_user = cls.env.ref("rma.group_rma_customer_user") - cls.g_rma_supplier_user = cls.env.ref("rma.group_rma_supplier_user") - cls.g_rma_manager = cls.env.ref("rma.group_rma_manager") - cls.g_stock_user = cls.env.ref("stock.group_stock_user") - cls.g_stock_manager = cls.env.ref("stock.group_stock_manager") - - cls.rma_basic_user = cls._create_user( - "rma worker", - [cls.g_stock_user, cls.g_rma_customer_user, cls.g_rma_supplier_user], - cls.company, - ) - cls.rma_manager_user = cls._create_user( - "rma manager", - [cls.g_stock_manager, cls.g_rma_manager], - cls.company, - ) - # Customer RMA: - products2move = [(cls.product_1, 3), (cls.product_2, 5), (cls.product_3, 2)] - cls.rma_customer_id = cls._create_rma_from_move( - products2move, "customer", cls.env.ref("base.res_partner_2"), dropship=False - ) - # Dropship: - cls.rma_droship_id = cls._create_rma_from_move( - products2move, - "customer", - cls.env.ref("base.res_partner_2"), - dropship=True, - supplier_address_id=cls.env.ref("base.res_partner_3"), - ) - # Supplier RMA: - cls.rma_supplier_id = cls._create_rma_from_move( - products2move, "supplier", cls.env.ref("base.res_partner_2"), dropship=False - ) - - @classmethod - def _create_user(cls, login, groups, company): - group_ids = [group.id for group in groups] - user = cls.res_users_model.create( - { - "name": login, - "login": login, - "email": "example@yourcompany.com", - "company_id": company.id, - "company_ids": [(4, company.id)], - "groups_id": [(6, 0, group_ids)], - } - ) - return user - - @classmethod - def _receive_rma(cls, rma_line_ids): - wizard = cls.rma_make_picking.with_context( - **{ - "active_ids": rma_line_ids.ids, - "active_model": "rma.order.line", - "picking_type": "incoming", - "active_id": 1, - } - ).create({}) - wizard._create_picking() - res = rma_line_ids.action_view_in_shipments() - picking = cls.env["stock.picking"].browse(res["res_id"]) - picking.action_assign() - for mv in picking.move_ids: - mv.quantity = mv.product_uom_qty - picking._action_done() - return picking - - @classmethod - def _deliver_rma(cls, rma_line_ids): - wizard = cls.rma_make_picking.with_context( - **{ - "active_ids": rma_line_ids.ids, - "active_model": "rma.order.line", - "picking_type": "outgoing", - "active_id": 1, - } - ).create({}) - wizard._create_picking() - res = rma_line_ids.action_view_out_shipments() - picking = cls.env["stock.picking"].browse(res["res_id"]) - picking.action_assign() - for mv in picking.move_ids: - mv.quantity = mv.product_uom_qty - picking._action_done() - return picking - - @classmethod - def _create_product_category( - cls, rma_approval_policy, rma_customer_operation_id, rma_supplier_operation_id - ): - return cls.product_ctg_model.create( - { - "name": "Test category", - "rma_approval_policy": rma_approval_policy, - "rma_customer_operation_id": rma_customer_operation_id.id, - "rma_supplier_operation_id": rma_supplier_operation_id.id, - } - ) - - @classmethod - def _create_product(cls, name): - return cls.product_product_model.create( - {"name": name, "categ_id": cls.category.id, "type": "product"} - ) - - @classmethod - def _create_picking(cls, partner, picking_type): - return cls.stockpicking.create( - { - "partner_id": partner.id, - "picking_type_id": picking_type.id, - "location_id": cls.stock_location.id, - "location_dest_id": cls.supplier_location.id, - } - ) - - @classmethod - def _do_picking(cls, picking): - """Do picking with only one move on the given date.""" - picking.action_confirm() - picking.action_assign() - for ml in picking.move_ids: - ml.filtered(lambda m: m.state != "waiting").quantity = ml.product_uom_qty - picking.button_validate() - - @classmethod - def _create_inventory(cls, product, qty, location): - """ - Creates inventory of a product on a specific location, this will be used - eventually to create a inventory at specific cost, that will be received in - a customer RMA or delivered in a supplier RMA - """ - inventory = ( - cls.env["stock.quant"] - .create( - { - "location_id": location.id, - "product_id": product.id, - "inventory_quantity": qty, - } - ) - .action_apply_inventory() - ) - return inventory - - @classmethod - def _get_picking_type(cls, wh, loc1, loc2): - picking_type = cls.env["stock.picking.type"].search( - [ - ("warehouse_id", "=", wh.id), - ("default_location_src_id", "=", loc1.id), - ("default_location_dest_id", "=", loc2.id), - ], - limit=1, - ) - if picking_type: - return picking_type - picking_type = cls.env["stock.picking.type"].create( - { - "name": loc1.name + " to " + loc2.name, - "sequence_code": loc1.name + " to " + loc2.name, - "code": "incoming", - "warehouse_id": wh.id, - "default_location_src_id": loc1.id, - "default_location_dest_id": loc2.id, - } - ) - return picking_type - - @classmethod - def _create_rma_from_move( - cls, products2move, r_type, partner, dropship, supplier_address_id=None - ): - moves = [] - if r_type == "customer": - picking_type = cls._get_picking_type( - cls.wh, cls.stock_location, cls.customer_location - ) - picking = cls._create_picking(partner, picking_type) - for item in products2move: - product = item[0] - product_qty = item[1] - cls._create_inventory(product, product_qty, cls.stock_location) - move_values = cls._prepare_move( - product, - product_qty, - cls.stock_location, - cls.customer_location, - picking, - ) - moves.append(cls.env["stock.move"].create(move_values)) - else: - picking_type = cls._get_picking_type( - cls.wh, cls.supplier_location, cls.stock_rma_location - ) - picking = cls._create_picking(partner, picking_type) - for item in products2move: - product = item[0] - product_qty = item[1] - cls._create_inventory(product, product_qty, cls.stock_location) - move_values = cls._prepare_move( - product, - product_qty, - cls.supplier_location, - cls.stock_rma_location, - picking, - ) - moves.append(cls.env["stock.move"].create(move_values)) - # Process the picking - cls._do_picking(picking) - # Create the RMA from the stock_move - rma_id = cls.rma.with_user(cls.rma_basic_user).create( - { - "reference": "0001", - "type": r_type, - "partner_id": partner.id, - "company_id": cls.env.ref("base.main_company").id, - } - ) - for move in moves: - if r_type == "customer": - wizard = cls.rma_add_stock_move.with_user(cls.rma_basic_user).new( - { - "move_ids": [(4, move.id)], - "rma_id": rma_id.id, - "partner_id": move.partner_id.id, - } - ) - wizard.with_context( - **{ - "move_ids": [(4, move.id)], - "reference_move_id": move.id, - "customer": True, - "active_ids": rma_id.id, - "partner_id": move.partner_id.id, - "active_model": "rma.order", - } - ).default_get([str(move.id), str(cls.partner_id.id)]) - data = ( - wizard.with_user(cls.rma_basic_user) - .with_context(customer=1) - ._prepare_rma_line_from_stock_move(move) - ) - - else: - wizard = cls.rma_add_stock_move.with_user(cls.rma_basic_user).new( - { - "move_ids": [(4, move.id)], - "rma_id": rma_id.id, - "partner_id": move.partner_id.id, - } - ) - wizard.with_context( - **{ - "move_ids": [(4, move.id)], - "reference_move_id": move.id, - "active_ids": rma_id.id, - "partner_id": move.partner_id.id, - "active_model": "rma.order", - } - ).default_get([str(move.id), str(cls.partner_id.id)]) - data = wizard.with_user( - cls.rma_basic_user - )._prepare_rma_line_from_stock_move(move) - data["type"] = "supplier" - if dropship: - data.update( - customer_to_supplier=dropship, - operation_id=cls.rma_ds_replace_op_id.id, - supplier_address_id=supplier_address_id.id, - ) - cls.line = cls.rma_line.with_user(cls.rma_basic_user).create(data) - cls.line._onchange_product_id() - cls.line._onchange_operation_id() - cls.line.action_rma_to_approve() - rma_id._get_default_type() - rma_id.action_view_in_shipments() - rma_id.action_view_out_shipments() - rma_id.action_view_lines() - rma_id.partner_id.action_open_partner_rma() - return rma_id - - @classmethod - def _prepare_move(cls, product, qty, src, dest, picking_in): - location_id = src.id - - return { - "name": product.name, - "partner_id": picking_in.partner_id.id, - "origin": picking_in.name, - "company_id": picking_in.picking_type_id.warehouse_id.company_id.id, - "product_id": product.id, - "product_uom": product.uom_id.id, - "state": "draft", - "product_uom_qty": qty, - "location_id": location_id, - "location_dest_id": dest.id, - "picking_id": picking_in.id, - "price_unit": product.standard_price, - } - - def _check_equal_quantity(self, qty1, qty2, msg): - self.assertEqual(qty1, qty2, msg) - - def test_01_rma_order_line(self): - for line in self.rma_customer_id.rma_line_ids: - line.with_context( - **{"default_rma_id": line.rma_id.id} - )._default_warehouse_id() - line._default_location_id() - line._onchange_delivery_address() - line._compute_in_shipment_count() - line._compute_out_shipment_count() - - # check assert if call reference_move_id onchange - self.assertEqual(line.product_id, line.reference_move_id.product_id) - self.assertEqual(line.product_qty, line.reference_move_id.product_uom_qty) - self.assertEqual( - line.location_id.location_id, line.reference_move_id.location_id - ) - self.assertEqual(line.origin, line.reference_move_id.picking_id.name) - self.assertEqual( - line.delivery_address_id, line.reference_move_id.picking_id.partner_id - ) - self.assertEqual( - line.qty_to_receive, line.reference_move_id.product_uom_qty - ) - line._onchange_product_id() - line._onchange_operation_id() - # check assert if call operation_id onchange - self.assertEqual(line.operation_id.receipt_policy, line.receipt_policy) - - data = {"customer_to_supplier": line.customer_to_supplier} - line = self.rma_line.new(data) - line._onchange_receipt_policy() - - data = {"lot_id": line.lot_id.id} - line = self.rma_line.new(data) - line._onchange_lot_id() - - line.action_view_in_shipments() - line.action_view_out_shipments() - self.rma_customer_id.action_view_supplier_lines() - with self.assertRaises(ValidationError): - line.rma_id.partner_id = self.partner_id.id - self.rma_customer_id.rma_line_ids[0].partner_id = self.env.ref( - "base.res_partner_3" - ).id - self.rma_customer_id.action_view_supplier_lines() - - def test_02_customer_rma(self): - self.rma_customer_id.rma_line_ids.action_rma_to_approve() - wizard = self.rma_make_picking.with_context( - **{ - "active_ids": self.rma_customer_id.rma_line_ids.ids, - "active_model": "rma.order.line", - "picking_type": "incoming", - "active_id": 1, - } - ).create({}) - wizard._create_picking() - res = self.rma_customer_id.rma_line_ids.action_view_in_shipments() - self.assertTrue("res_id" in res, "Incorrect number of pickings" "created") - picking = self.env["stock.picking"].browse(res["res_id"]) - self.assertEqual(len(picking), 1, "Incorrect number of pickings created") - moves = picking.move_ids - self.assertEqual(len(moves), 3, "Incorrect number of moves created") - lines = self.rma_customer_id.rma_line_ids - lines.env.invalidate_all() - self.assertEqual( - list(set(lines.mapped("qty_received"))), [0], "Wrong qty received" - ) - self.assertEqual( - list(set(lines.mapped("qty_to_deliver"))), [0], "Wrong qty to deliver" - ) - self.assertEqual( - list(set(lines.mapped("qty_outgoing"))), [0], "Wrong qty outgoing" - ) - self.assertEqual( - list(set(lines.mapped("qty_delivered"))), [0], "Wrong qty delivered" - ) - self.assertEqual( - sum(lines.mapped("in_shipment_count")), 3, "Incorrect In Shipment Count" - ) - self.assertEqual( - sum(lines.mapped("out_shipment_count")), 0, "Incorrect Out Shipment Count" - ) - self.assertEqual( - self.rma_customer_id.in_shipment_count, 1, "Incorrect In Shipment Count" - ) - self.assertEqual( - self.rma_customer_id.out_shipment_count, 0, "Incorrect Out Shipment Count" - ) - # product specific - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_1).qty_to_receive, - 3, - "Wrong qty to receive", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_1).qty_incoming, - 3, - "Wrong qty incoming", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_2).qty_to_receive, - 5, - "Wrong qty to receive", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_2).qty_incoming, - 5, - "Wrong qty incoming", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_3).qty_to_receive, - 2, - "Wrong qty to receive", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_3).qty_incoming, - 2, - "Wrong qty incoming", - ) - picking.action_assign() - for mv in picking.move_ids: - mv.quantity = mv.product_uom_qty - mv.picked = True - picking._action_done() - lines = self.rma_customer_id.rma_line_ids - self.assertEqual( - list(set(lines.mapped("qty_to_receive"))), [0], "Wrong qty to_receive" - ) - self.assertEqual( - list(set(lines.mapped("qty_incoming"))), [0], "Wrong qty incoming" - ) - self.assertEqual( - list(set(lines.mapped("qty_outgoing"))), [0], "Wrong qty outgoing" - ) - self.assertEqual( - list(set(lines.mapped("qty_delivered"))), [0], "Wrong qty delivered" - ) - # product specific - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_1).qty_received, - 3, - "Wrong qty received", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_1).qty_to_deliver, - 3, - "Wrong qty to_deliver", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_2).qty_received, - 5, - "Wrong qty received", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_2).qty_to_deliver, - 5, - "Wrong qty to_deliver", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_3).qty_received, - 2, - "Wrong qty received", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_3).qty_to_deliver, - 2, - "Wrong qty to_deliver", - ) - - wizard = self.rma_make_picking.with_context( - **{ - "active_id": 1, - "active_ids": self.rma_customer_id.rma_line_ids.ids, - "active_model": "rma.order.line", - "picking_type": "outgoing", - } - ).create({}) - wizard._create_picking() - res = self.rma_customer_id.rma_line_ids.action_view_out_shipments() - self.assertTrue("res_id" in res, "Incorrect number of pickings" "created") - picking = self.env["stock.picking"].browse(res["res_id"]) - moves = picking.move_ids - self.assertEqual(len(moves), 3, "Incorrect number of moves created") - lines = self.rma_customer_id.rma_line_ids - lines.env.invalidate_all() - self.assertEqual( - list(set(lines.mapped("qty_to_receive"))), [0], "Wrong qty to_receive" - ) - self.assertEqual( - list(set(lines.mapped("qty_incoming"))), [0], "Wrong qty incoming" - ) - self.assertEqual( - list(set(lines.mapped("qty_delivered"))), [0], "Wrong qty delivered" - ) - self.assertEqual( - sum(lines.mapped("in_shipment_count")), 3, "Incorrect In Shipment Count" - ) - self.assertEqual( - sum(lines.mapped("out_shipment_count")), - 3, - "Incorrect Out Shipment Count", - ) - self.assertEqual( - self.rma_customer_id.in_shipment_count, 1, "Incorrect In Shipment Count" - ) - self.assertEqual( - self.rma_customer_id.out_shipment_count, 1, "Incorrect Out Shipment Count" - ) - # product specific - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_1).qty_to_deliver, - 3, - "Wrong qty to_deliver", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_1).qty_outgoing, - 3, - "Wrong qty outgoing", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_2).qty_to_deliver, - 5, - "Wrong qty to_deliver", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_2).qty_outgoing, - 5, - "Wrong qty outgoing", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_3).qty_to_deliver, - 2, - "Wrong qty to_deliver", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_3).qty_outgoing, - 2, - "Wrong qty outgoing", - ) - picking.action_assign() - for mv in picking.move_ids: - mv.quantity = mv.product_uom_qty - mv.picked = True - picking._action_done() - lines = self.rma_customer_id.rma_line_ids - self.assertEqual( - list(set(lines.mapped("qty_to_receive"))), [0], "Wrong qty to_receive" - ) - self.assertEqual( - list(set(lines.mapped("qty_incoming"))), [0], "Wrong qty incoming" - ) - self.assertEqual( - list(set(lines.mapped("qty_outgoing"))), [0], "Wrong qty_outgoing" - ) - # product specific - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_1).qty_received, - 3, - "Wrong qty_received", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_1).qty_delivered, - 3, - "Wrong qty_delivered", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_2).qty_received, - 5, - "Wrong qty_received", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_2).qty_delivered, - 5, - "Wrong qty_delivered", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_3).qty_received, - 2, - "Wrong qty_received", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_3).qty_delivered, - 2, - "Wrong qty_delivered", - ) - self.rma_customer_id.rma_line_ids.action_rma_done() - self.assertEqual( - self.rma_customer_id.rma_line_ids.mapped("state"), - ["done", "done", "done"], - "Wrong State", - ) - self.rma_customer_id.action_view_in_shipments() - self.rma_customer_id.action_view_out_shipments() - self.rma_customer_id.action_view_lines() - - # DROPSHIP - def test_03_dropship(self): - for line in self.rma_droship_id.rma_line_ids: - line.operation_id = self.rma_ds_replace_op_id - line._onchange_operation_id() - line._onchange_delivery_address() - line.action_rma_to_approve() - line.action_rma_approve() - wizard = self.rma_make_picking.with_context( - **{ - "active_id": 1, - "active_ids": self.rma_droship_id.rma_line_ids.ids, - "active_model": "rma.order.line", - "picking_type": "incoming", - } - ).create({}) - wizard._create_picking() - res = self.rma_droship_id.rma_line_ids.action_view_in_shipments() - self.assertTrue("res_id" in res, "Incorrect number of pickings created") - picking = self.env["stock.picking"].browse(res["res_id"]) - self.assertEqual(len(picking), 1, "Incorrect number of pickings created") - moves = picking.move_ids - self.assertEqual(len(moves), 3, "Incorrect number of moves created") - lines = self.rma_droship_id.rma_line_ids - lines.env.invalidate_all() - self.assertEqual( - sum(lines.mapped("in_shipment_count")), 3, "Incorrect In Shipment Count" - ) - self.assertEqual( - sum(lines.mapped("out_shipment_count")), 0, "Incorrect Out Shipment Count" - ) - self.assertEqual( - self.rma_droship_id.in_shipment_count, 1, "Incorrect In Shipment Count" - ) - self.assertEqual( - self.rma_droship_id.out_shipment_count, 0, "Incorrect Out Shipment Count" - ) - wizard = self.make_supplier_rma.with_context( - **{ - "active_ids": self.rma_droship_id.rma_line_ids.ids, - "active_model": "rma.order.line", - "active_id": 1, - } - ).create({}) - wizard.make_supplier_rma() - lines = self.rma_droship_id.rma_line_ids.mapped("supplier_rma_line_ids") - lines.env.invalidate_all() - self.assertEqual( - list(set(lines.mapped("qty_received"))), [0], "Wrong qty_received" - ) - self.assertEqual( - list(set(lines.mapped("qty_outgoing"))), [0], "Wrong qty_outgoing" - ) - self.assertEqual(list(set(lines.mapped("qty_delivered"))), [0], "qty_delivered") - # product specific - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_1).qty_to_deliver, - 3, - "Wrong qty_to_deliver", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_2).qty_to_deliver, - 5, - "Wrong qty_to_deliver", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_3).qty_to_deliver, - 2, - "Wrong qty_to_deliver", - ) - lines = self.rma_droship_id.rma_line_ids - lines.env.invalidate_all() - self._check_equal_quantity( - lines.filtered( - lambda x: x.product_id == self.product_1 - ).qty_in_supplier_rma, - 3, - "Wrong qty_in_supplier_rma", - ) - self._check_equal_quantity( - lines.filtered( - lambda x: x.product_id == self.product_2 - ).qty_in_supplier_rma, - 5, - "Wrong qty_in_supplier_rma", - ) - self._check_equal_quantity( - lines.filtered( - lambda x: x.product_id == self.product_3 - ).qty_in_supplier_rma, - 2, - "Wrong qty_in_supplier_rma", - ) - self.assertEqual( - list(set(lines.mapped("qty_to_supplier_rma"))), - [0], - "Wrong qty_to_supplier_rma", - ) - for line in self.rma_droship_id.rma_line_ids: - line.action_rma_done() - self.assertEqual(line.mapped("state"), ["done"], "Wrong State") - - # Supplier RMA - def test_04_supplier_rma(self): - self.rma_supplier_id.rma_line_ids.action_rma_to_approve() - self.rma_supplier_id.rma_line_ids.operation_id = self.rma_sup_replace_op_id - self.rma_supplier_id.rma_line_ids._onchange_operation_id() - self.rma_supplier_id.rma_line_ids._onchange_delivery_address() - wizard = self.rma_make_picking.with_context( - **{ - "active_ids": self.rma_supplier_id.rma_line_ids.ids, - "active_model": "rma.order.line", - "picking_type": "outgoing", - "active_id": 2, - } - ).create({}) - wizard._create_picking() - res = self.rma_supplier_id.rma_line_ids.action_view_out_shipments() - self.assertTrue("res_id" in res, "Incorrect number of pickings" "created") - picking = self.rma_supplier_id.rma_line_ids._get_out_pickings() - partner = picking.partner_id - self.assertTrue(partner, "Partner is not defined or False") - moves = picking.move_ids - self.assertEqual(len(moves), 3, "Incorrect number of moves created") - - lines = self.rma_supplier_id.rma_line_ids - lines.env.invalidate_all() - self.assertEqual( - list(set(lines.mapped("qty_received"))), [0], "Wrong qty_received" - ) - self.assertEqual(list(set(lines.mapped("qty_delivered"))), [0], "qty_delivered") - self.assertEqual( - sum(lines.mapped("in_shipment_count")), 0, "Incorrect In Shipment Count" - ) - self.assertEqual( - sum(lines.mapped("out_shipment_count")), 3, "Incorrect Out Shipment Count" - ) - self.assertEqual( - self.rma_supplier_id.in_shipment_count, 0, "Incorrect In Shipment Count" - ) - self.assertEqual( - self.rma_supplier_id.out_shipment_count, 1, "Incorrect Out Shipment Count" - ) - # product specific - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_1).qty_to_receive, - 3, - "Wrong qty_to_receive", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_1).qty_to_deliver, - 3, - "Wrong qty_to_deliver", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_2).qty_to_receive, - 5, - "Wrong qty_to_receive", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_2).qty_to_deliver, - 5, - "Wrong qty_to_deliver", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_3).qty_to_receive, - 2, - "Wrong qty_to_receive", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_3).qty_to_deliver, - 2, - "Wrong qty_to_deliver", - ) - self.assertEqual( - list(set(lines.mapped("qty_incoming"))), [0], "Wrong qty_incoming" - ) - picking.action_assign() - for mv in picking.move_ids: - mv.quantity = mv.product_uom_qty - mv.picked = True - picking._action_done() - self.assertEqual( - list(set(lines.mapped("qty_incoming"))), [0], "Wrong qty_incoming" - ) - self.assertEqual( - list(set(lines.mapped("qty_to_deliver"))), [0], "Wrong qty_to_deliver" - ) - self.assertEqual( - list(set(lines.mapped("qty_received"))), [0], "Wrong qty_received" - ) - self.assertEqual(list(set(lines.mapped("qty_outgoing"))), [0], "qty_outgoing") - # product specific - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_1).qty_delivered, - 3, - "Wrong qty_delivered", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_1).qty_to_receive, - 3, - "Wrong qty_to_receive", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_1).qty_received, - 0, - "Wrong qty_received", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_2).qty_delivered, - 5, - "Wrong qty_delivered", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_2).qty_received, - 0, - "Wrong qty_received", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_3).qty_delivered, - 2, - "Wrong qty_delivered", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_3).qty_received, - 0, - "Wrong qty_received", - ) - wizard = self.rma_make_picking.with_context( - **{ - "active_id": 1, - "active_ids": self.rma_supplier_id.rma_line_ids.ids, - "active_model": "rma.order.line", - "picking_type": "incoming", - } - ).create({}) - wizard._create_picking() - res = self.rma_supplier_id.rma_line_ids.action_view_in_shipments() - self.assertTrue("res_id" in res, "Incorrect number of pickings" "created") - pickings = self.env["stock.picking"].browse(res["res_id"]) - self.assertEqual(len(pickings), 1, "Incorrect number of pickings created") - picking_in = pickings[0] - partner = picking_in.partner_id - self.assertTrue(partner, "Partner is not defined or False") - moves = picking.move_ids - self.assertEqual(len(moves), 3, "Incorrect number of moves created") - - lines = self.rma_supplier_id.rma_line_ids - lines.env.invalidate_all() - self.assertEqual( - list(set(lines.mapped("qty_to_deliver"))), [0], "qty_to_deliver" - ) - self.assertEqual( - sum(lines.mapped("in_shipment_count")), 3, "Incorrect In Shipment Count" - ) - self.assertEqual( - sum(lines.mapped("out_shipment_count")), 3, "Incorrect Out Shipment Count" - ) - self.assertEqual( - self.rma_supplier_id.in_shipment_count, 1, "Incorrect In Shipment Count" - ) - self.assertEqual( - self.rma_supplier_id.out_shipment_count, 1, "Incorrect Out Shipment Count" - ) - # product specific - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_1).qty_to_receive, - 3, - "Wrong qty_to_receive", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_2).qty_to_receive, - 5, - "Wrong qty_to_receive", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_3).qty_to_receive, - 2, - "Wrong qty_to_receive", - ) - picking_in.action_confirm() - picking_in.action_assign() - for mv in picking_in.move_line_ids: - mv.quantity = mv.quantity_product_uom - mv.picked = True - picking_in._action_done() - self.assertEqual( - list(set(lines.mapped("qty_outgoing"))), [0], "Wrong qty_outgoing" - ) - self.assertEqual( - list(set(lines.mapped("qty_incoming"))), [0], "Wrong qty_incoming" - ) - self.assertEqual( - list(set(lines.mapped("qty_to_deliver"))), [0], "qty_to_deliver" - ) - - # product specific - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_1).qty_delivered, - 3, - "Wrong qty_delivered", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_1).qty_received, - 3, - "Wrong qty_received", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_2).qty_delivered, - 5, - "Wrong qty_delivered", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_2).qty_received, - 5, - "Wrong qty_received", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_3).qty_delivered, - 2, - "Wrong qty_delivered", - ) - self._check_equal_quantity( - lines.filtered(lambda x: x.product_id == self.product_3).qty_received, - 2, - "Wrong qty_received", - ) - for line in self.rma_supplier_id.rma_line_ids: - line.action_rma_done() - self.assertEqual(line.state, "done", "Wrong State") - - def test_05_rma_order_line(self): - """Property rma_customer_operation_id on product or product category - correctly handled inside _onchange_product_id() - """ - rma_operation = self.env["rma.operation"].search([], limit=1) - self.assertTrue(rma_operation) - - # Case of product template - self.rma_customer_id.rma_line_ids.mapped("product_id").sudo().write( - {"rma_customer_operation_id": rma_operation.id} - ) - for line in self.rma_customer_id.rma_line_ids: - data = {"product_id": line.product_id.id} - new_line = self.rma_line.new(data) - self.assertFalse(new_line.operation_id) - self.assertTrue(new_line.product_id.rma_customer_operation_id) - self.assertTrue(new_line.product_id.categ_id.rma_customer_operation_id) - new_line._onchange_product_id() - self.assertEqual(new_line.operation_id, rma_operation) - - # Case of product category - self.rma_customer_id.rma_line_ids.mapped("product_id").sudo().write( - {"rma_customer_operation_id": False} - ) - self.rma_customer_id.rma_line_ids.mapped("product_id.categ_id").sudo().write( - {"rma_customer_operation_id": rma_operation.id} - ) - - for line in self.rma_customer_id.rma_line_ids: - data = {"product_id": line.product_id.id} - new_line = self.rma_line.new(data) - self.assertFalse(new_line.operation_id) - self.assertFalse(new_line.product_id.rma_customer_operation_id) - self.assertTrue(new_line.product_id.categ_id.rma_customer_operation_id) - new_line._onchange_product_id() - self.assertEqual(new_line.operation_id, rma_operation) - - def test_06_warehouse_mismatch(self): - """Mismatch between operation warehouse and stock rule warehouse is raised. - - * Create a second warehouse that is resupplied from the main warehouse - * Update an RMA to receive into the second warehouse - * When creating pickings, it is raised that the rules from the RMA - * config are not used. - """ - wh2 = self.env["stock.warehouse"].create( - { - "name": "Shop.", - "code": "SHP", - } - ) - wh2.resupply_wh_ids = self.env.ref("stock.warehouse0") - wh2.rma_in_this_wh = True - wh2.lot_rma_id = self.env["stock.location"].create( - { - "name": "WH2 RMA", - "usage": "internal", - "location_id": wh2.lot_stock_id.id, - } - ) - rma = self.rma_customer_id.copy() - rma.rma_line_ids = self.rma_customer_id.rma_line_ids[0].copy() - rma.rma_line_ids.product_id.sudo().route_ids += wh2.resupply_route_ids - rma_form = Form(rma) - rma_form.in_warehouse_id = wh2 - rma_form.save() - rma.rma_line_ids.action_rma_approve() - wizard = self.rma_make_picking.with_context( - **{ - "active_ids": rma.rma_line_ids.ids, - "active_model": "rma.order.line", - "picking_type": "incoming", - "active_id": 1, - } - ).create({}) - with self.assertRaisesRegex(UserError, "No rule found"): - wizard._create_picking() - - def test_07_no_zero_qty_moves(self): - rma_lines = self.rma_customer_id.rma_line_ids - rma_lines.write({"receipt_policy": "delivered"}) - self.assertEqual(sum(rma_lines.mapped("qty_to_receive")), 0) - wizard = self.rma_make_picking.with_context( - **{ - "active_ids": rma_lines.ids, - "active_model": "rma.order.line", - "picking_type": "incoming", - "active_id": 1, - } - ).create({}) - with self.assertRaisesRegex(ValidationError, "No quantity to transfer"): - wizard._create_picking() - - def test_08_supplier_rma_single_line(self): - rma_line_id = self.rma_supplier_id.rma_line_ids[0].id - wizard = self.rma_make_picking.with_context( - active_ids=[rma_line_id], - active_model="rma.order.line", - picking_type="outgoing", - active_id=2, - ).create({}) - wizard._create_picking() - picking = self.rma_supplier_id.rma_line_ids[0]._get_out_pickings() - partner = picking.partner_id - self.assertTrue(partner, "Partner is not defined or False") - moves = picking.move_ids - self.assertEqual(len(moves), 1, "Incorrect number of moves created") diff --git a/rma/views/product_view.xml b/rma/views/product_view.xml deleted file mode 100644 index 7a0dc401..00000000 --- a/rma/views/product_view.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - product.category.form - product.category - - - - - - - - - - - - - - product.template.stock.property.form.inherit - product.template - - - - - - - - - - - - diff --git a/rma/views/res_config_settings_views.xml b/rma/views/res_config_settings_views.xml deleted file mode 100644 index 82982e2f..00000000 --- a/rma/views/res_config_settings_views.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - res.config.settings.view.form.inherit.rma - res.config.settings - - - - -
-

Return Merchandise Authorization

-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
- - - Settings - ir.actions.act_window - res.config.settings - form - inline - {'module' : 'rma'} - - -
diff --git a/rma/views/res_partner_view.xml b/rma/views/res_partner_view.xml deleted file mode 100644 index fd3e277f..00000000 --- a/rma/views/res_partner_view.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - res.partner.form - rma - res.partner - - -
- -
-
-
- -
diff --git a/rma/views/rma_menu.xml b/rma/views/rma_menu.xml deleted file mode 100644 index 9b569705..00000000 --- a/rma/views/rma_menu.xml +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/rma/views/rma_operation_view.xml b/rma/views/rma_operation_view.xml deleted file mode 100644 index 3629a3bb..00000000 --- a/rma/views/rma_operation_view.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - rma.operation.tree - rma.operation - - - - - - - - - - - - - rma.operation.form - rma.operation - -
- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Customer Operations - rma.operation - tree,form - {'default_type': "customer"} - [('type','=', 'customer')] - - - - - Supplier Operations - rma.operation - tree,form - {'default_type': "supplier"} - [('type','=', 'supplier')] - - - - diff --git a/rma/views/rma_order_line_view.xml b/rma/views/rma_order_line_view.xml deleted file mode 100644 index 887f541d..00000000 --- a/rma/views/rma_order_line_view.xml +++ /dev/null @@ -1,547 +0,0 @@ - - - - rma.order.line.tree - rma.order.line - - - - - - - - - - - - - - - - - - - - - rma.order.line.supplier.tree - rma.order.line - - - - - - - - - - - - - - - - - - - - rma.order.line.form - rma.order.line - -
-
-
- -
- - - - - -
-
-

- -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - -
-
-
-
- - - rma.order.line.supplier.form - rma.order.line - - primary - - - Customer RMA - - - Supplier - {'res_partner_search_mode': 'supplier'} - - - 1 - - - [('picking_id.partner_id', '=', partner_id), - ('location_id.usage', '=', 'supplier'), - ('state', '=', 'done')] - - - [('type','=','supplier')] - - - - - - rma.order.line.select - rma.order.line - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Customer RMA - rma.order.line - [('type','=', 'customer')] - {"search_default_assigned_to_filter":1} - tree,form - - - - - Supplier RMA - rma.order.line - [('type','=', 'supplier')] - {"search_default_assigned_to_filter":1, "supplier":1} - tree,form - - - - - - tree - - - - - - form - - - - - - Request Approval - - - code - -if records.filtered(lambda x: x.state == "draft"): - records.filtered(lambda x: x.state == "draft").action_rma_to_approve() - - - - - Cancel - - - code - - records.action_rma_cancel() - - -
diff --git a/rma/views/rma_order_view.xml b/rma/views/rma_order_view.xml deleted file mode 100644 index 6e1172b5..00000000 --- a/rma/views/rma_order_view.xml +++ /dev/null @@ -1,327 +0,0 @@ - - - - rma.order.tree - rma.order - - - - - - - - - - - - rma.order.supplier.tree - rma.order - - - - - - - - - - - - rma.order.form - rma.order - -
-
- -
- - - - -
-
-

- -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - -
- - - - - - rma.order.supplier.form - rma.order - - primary - - - rma.group_rma_supplier_user - - - Supplier - {'res_partner_search_mode': 'supplier'} - - - - - - - - - { - 'form_view_ref':'rma.view_rma_line_supplier_form', - 'default_rma_id': id, - 'default_partner_id': partner_id, - 'supplier': 1, - 'hide_title': True} - - - - [('type','=','supplier')] - - - 1 - - - 1 - - - 0 - - - 0 - - - - - - rma.order.select - rma.order - - - - - - - - - - - - - - - - Customer RMA Group - rma.order - [('type','=', 'customer')] - {'customer':1} - tree,form - - - - - Supplier RMA Group - rma.order - [('type','=', 'supplier')] - {'supplier':1} - tree,form - - - - - - tree - - - - - - form - - - - - diff --git a/rma/views/stock_view.xml b/rma/views/stock_view.xml deleted file mode 100644 index cf7b0a4b..00000000 --- a/rma/views/stock_view.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - rma.move.form - stock.move - - - - - - - - - - - - stock.route.form - - stock.route - - - - - diff --git a/rma/views/stock_warehouse.xml b/rma/views/stock_warehouse.xml deleted file mode 100644 index 701edd8e..00000000 --- a/rma/views/stock_warehouse.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - view_warehouse_form - stock.warehouse - - - - - - - - - - - - - - - - - diff --git a/rma/wizards/__init__.py b/rma/wizards/__init__.py deleted file mode 100644 index 7989b077..00000000 --- a/rma/wizards/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from . import rma_add_stock_move -from . import rma_make_picking -from . import rma_order_line_make_supplier_rma -from . import rma_add_serial diff --git a/rma/wizards/rma_add_serial.py b/rma/wizards/rma_add_serial.py deleted file mode 100644 index 043617cd..00000000 --- a/rma/wizards/rma_add_serial.py +++ /dev/null @@ -1,157 +0,0 @@ -# Copyright 2022 ForgeFlow S.L. -# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html) - -from odoo import _, api, fields, models -from odoo.exceptions import ValidationError - - -class RmaAddSerialWiz(models.TransientModel): - _name = "rma.add.serial.wiz" - _description = "Wizard to add rma lines from Serial/Lot numbers" - - rma_id = fields.Many2one( - comodel_name="rma.order", string="RMA Order", readonly=True, ondelete="cascade" - ) - partner_id = fields.Many2one( - comodel_name="res.partner", string="Partner", readonly=True - ) - partner_shipping_id = fields.Many2one( - string="Deliver To", - comodel_name="res.partner", - ) - lot_ids = fields.Many2many( - comodel_name="stock.lot", - string="Lots/Serials selected", - ) - - @api.model - def default_get(self, fields_list): - res = super().default_get(fields_list) - rma_obj = self.env["rma.order"] - rma_id = self.env.context["active_ids"] or [] - active_model = self.env.context["active_model"] - if not rma_id: - return res - assert active_model == "rma.order", "Bad context propagation" - - rma = rma_obj.browse(rma_id) - res["rma_id"] = rma.id - res["partner_id"] = rma.partner_id.id - return res - - @api.onchange("partner_id") - def onchange_partner_id(self): - if not self.partner_id: - self.update( - { - "partner_shipping_id": False, - } - ) - return - - self = self.with_company(self.rma_id.company_id) - addr = self.partner_id.address_get(["delivery"]) - self.update( - { - "partner_shipping_id": addr["delivery"], - } - ) - - def _prepare_rma_line_from_lot_vals(self, lot): - operation = self.rma_id.operation_default_id - if not operation: - if self.env.context.get("customer"): - operation = ( - lot.product_id.rma_customer_operation_id - or lot.product_id.categ_id.rma_customer_operation_id - ) - else: - operation = ( - lot.product_id.rma_supplier_operation_id - or lot.product_id.categ_id.rma_supplier_operation_id - ) - if not operation: - operation = self.env["rma.operation"].search( - [("type", "=", self.rma_id.type)], limit=1 - ) - if not operation: - raise ValidationError(_("Please define an operation first")) - - if not operation.in_route_id or not operation.out_route_id: - route = self.env["stock.route"].search( - [("rma_selectable", "=", True)], limit=1 - ) - if not route: - raise ValidationError(_("Please define an RMA route")) - - in_warehouse = self.rma_id.in_warehouse_id or operation.in_warehouse_id - in_route = self.rma_id.in_route_id or operation.in_route_id - out_warehouse = self.rma_id.out_warehouse_id or operation.out_warehouse_id - out_route = self.rma_id.out_route_id or operation.out_route_id - if not in_warehouse or not out_warehouse: - warehouse = self.env["stock.warehouse"].search( - [ - ("company_id", "=", self.rma_id.company_id.id), - ("lot_rma_id", "!=", False), - ], - limit=1, - ) - if not warehouse: - raise ValidationError( - _("Please define a warehouse with a default RMA location") - ) - in_warehouse = in_warehouse or warehouse - out_warehouse = out_warehouse or warehouse - location = self.rma_id.location_id - if not location: - location = ( - operation.location_id - or operation.in_warehouse_id.lot_rma_id - or in_warehouse.lot_rma_id - or out_warehouse.lot_rma_id - ) - - product_qty = 1 # serial - if lot.product_id.tracking == "lot": - # TODO: improve logic, allow to specify qty? - product_qty = 1 - - vals = { - "partner_id": self.partner_id.id, - "description": self.rma_id.description, - "product_id": lot.product_id.id, - "lot_id": lot.id, - "uom_id": lot.product_id.uom_id.id, - "operation_id": operation.id, - "product_qty": product_qty, - "delivery_address_id": self.partner_shipping_id.id or self.partner_id.id, - "rma_id": self.rma_id.id, - "receipt_policy": operation.receipt_policy, - "delivery_policy": operation.delivery_policy, - "in_warehouse_id": in_warehouse.id, - "out_warehouse_id": out_warehouse.id, - "in_route_id": in_route.id, - "out_route_id": out_route.id, - "location_id": location.id, - } - return vals - - def action_confirm(self): - rma_line_obj = self.env["rma.order.line"] - existing_lots = self.rma_id.mapped("rma_line_ids.lot_id") - for lot in self.lot_ids: - if lot in existing_lots: - raise ValidationError( - _("Lot/Serial Number %s already added.") % lot.name - ) - - vals = self._prepare_rma_line_from_lot_vals(lot) - rec = rma_line_obj.create(vals) - # Ensure that configuration on the operation is applied (like - # policies). - # TODO MIG: in v16 the usage of such onchange can be removed in - # favor of (pre)computed stored editable fields for all policies - # and configuration in the RMA operation. - rec._onchange_operation_id() - rec.price_unit = rec._get_price_unit() - return {"type": "ir.actions.act_window_close"} diff --git a/rma/wizards/rma_add_serial_views.xml b/rma/wizards/rma_add_serial_views.xml deleted file mode 100644 index 4a1cac90..00000000 --- a/rma/wizards/rma_add_serial_views.xml +++ /dev/null @@ -1,102 +0,0 @@ - - - - rma.add.serial.wiz.customer - rma.add.serial.wiz - -
- - - - - - -
-
- -
-
- - - Add from Lot/Serial Numbers - ir.actions.act_window - rma.add.serial.wiz - form - new - - - - - - - rma.order.form - rma.add.serial.wiz - rma.order - - - -
-
-
- -
-
- - - Add from Stock Move - ir.actions.act_window - rma_add_stock_move - form - new - - - - - - - rma.order.form - stock.move wizard - rma.order - - - -