odoo-addon-sale-blanket-order 16.0.1.0.0.7__py3-none-any.whl → 17.0.1.0.0.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of odoo-addon-sale-blanket-order might be problematic. Click here for more details.
- odoo/addons/sale_blanket_order/README.rst +83 -60
- odoo/addons/sale_blanket_order/__manifest__.py +2 -2
- odoo/addons/sale_blanket_order/i18n/de.po +66 -54
- odoo/addons/sale_blanket_order/i18n/es.po +76 -55
- odoo/addons/sale_blanket_order/i18n/fr.po +84 -61
- odoo/addons/sale_blanket_order/i18n/fr_FR.po +76 -55
- odoo/addons/sale_blanket_order/i18n/it.po +41 -37
- odoo/addons/sale_blanket_order/i18n/pt.po +47 -53
- odoo/addons/sale_blanket_order/i18n/sale_blanket_order.pot +16 -26
- odoo/addons/sale_blanket_order/models/blanket_orders.py +71 -50
- odoo/addons/sale_blanket_order/models/sale_config_settings.py +0 -1
- odoo/addons/sale_blanket_order/models/sale_orders.py +2 -2
- odoo/addons/sale_blanket_order/readme/CONTRIBUTORS.md +17 -0
- odoo/addons/sale_blanket_order/readme/{CREDITS.rst → CREDITS.md} +2 -1
- odoo/addons/sale_blanket_order/readme/DESCRIPTION.md +5 -0
- odoo/addons/sale_blanket_order/readme/USAGE.md +58 -0
- odoo/addons/sale_blanket_order/static/description/index.html +53 -52
- odoo/addons/sale_blanket_order/tests/test_blanket_orders.py +6 -6
- odoo/addons/sale_blanket_order/tests/test_sale_order.py +1 -3
- odoo/addons/sale_blanket_order/views/sale_blanket_order_views.xml +24 -34
- odoo/addons/sale_blanket_order/views/sale_config_settings.xml +11 -19
- odoo/addons/sale_blanket_order/views/sale_order_views.xml +1 -1
- odoo/addons/sale_blanket_order/wizard/create_sale_orders.py +3 -2
- odoo_addon_sale_blanket_order-17.0.1.0.0.3.dist-info/METADATA +186 -0
- {odoo_addon_sale_blanket_order-16.0.1.0.0.7.dist-info → odoo_addon_sale_blanket_order-17.0.1.0.0.3.dist-info}/RECORD +27 -27
- {odoo_addon_sale_blanket_order-16.0.1.0.0.7.dist-info → odoo_addon_sale_blanket_order-17.0.1.0.0.3.dist-info}/WHEEL +1 -1
- odoo_addon_sale_blanket_order-17.0.1.0.0.3.dist-info/top_level.txt +1 -0
- odoo/addons/sale_blanket_order/readme/CONTRIBUTORS.rst +0 -8
- odoo/addons/sale_blanket_order/readme/DESCRIPTION.rst +0 -4
- odoo/addons/sale_blanket_order/readme/USAGE.rst +0 -53
- odoo_addon_sale_blanket_order-16.0.1.0.0.7.dist-info/METADATA +0 -164
- odoo_addon_sale_blanket_order-16.0.1.0.0.7.dist-info/top_level.txt +0 -1
|
@@ -15,6 +15,7 @@ msgstr ""
|
|
|
15
15
|
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
|
16
16
|
|
|
17
17
|
#. module: sale_blanket_order
|
|
18
|
+
#. odoo-python
|
|
18
19
|
#: code:addons/sale_blanket_order/models/blanket_orders.py:0
|
|
19
20
|
#, python-format
|
|
20
21
|
msgid ""
|
|
@@ -122,6 +123,7 @@ msgid "Amount"
|
|
|
122
123
|
msgstr ""
|
|
123
124
|
|
|
124
125
|
#. module: sale_blanket_order
|
|
126
|
+
#. odoo-python
|
|
125
127
|
#: code:addons/sale_blanket_order/wizard/create_sale_orders.py:0
|
|
126
128
|
#, python-format
|
|
127
129
|
msgid "An order can't be empty"
|
|
@@ -133,8 +135,18 @@ msgid "Analytic Account"
|
|
|
133
135
|
msgstr ""
|
|
134
136
|
|
|
135
137
|
#. module: sale_blanket_order
|
|
136
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.
|
|
137
|
-
msgid "Analytic
|
|
138
|
+
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__analytic_distribution
|
|
139
|
+
msgid "Analytic Distribution"
|
|
140
|
+
msgstr ""
|
|
141
|
+
|
|
142
|
+
#. module: sale_blanket_order
|
|
143
|
+
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__analytic_distribution_search
|
|
144
|
+
msgid "Analytic Distribution Search"
|
|
145
|
+
msgstr ""
|
|
146
|
+
|
|
147
|
+
#. module: sale_blanket_order
|
|
148
|
+
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__analytic_precision
|
|
149
|
+
msgid "Analytic Precision"
|
|
138
150
|
msgstr ""
|
|
139
151
|
|
|
140
152
|
#. module: sale_blanket_order
|
|
@@ -190,6 +202,7 @@ msgid "Blanket order wizard line"
|
|
|
190
202
|
msgstr ""
|
|
191
203
|
|
|
192
204
|
#. module: sale_blanket_order
|
|
205
|
+
#. odoo-python
|
|
193
206
|
#: code:addons/sale_blanket_order/wizard/create_sale_orders.py:0
|
|
194
207
|
#, python-format
|
|
195
208
|
msgid ""
|
|
@@ -203,6 +216,7 @@ msgid "Cancel"
|
|
|
203
216
|
msgstr ""
|
|
204
217
|
|
|
205
218
|
#. module: sale_blanket_order
|
|
219
|
+
#. odoo-python
|
|
206
220
|
#: code:addons/sale_blanket_order/models/sale_orders.py:0
|
|
207
221
|
#, python-format
|
|
208
222
|
msgid ""
|
|
@@ -283,6 +297,7 @@ msgid "Customer Reference"
|
|
|
283
297
|
msgstr ""
|
|
284
298
|
|
|
285
299
|
#. module: sale_blanket_order
|
|
300
|
+
#. odoo-python
|
|
286
301
|
#: code:addons/sale_blanket_order/models/blanket_orders.py:0
|
|
287
302
|
#, python-format
|
|
288
303
|
msgid "Date Scheduled"
|
|
@@ -340,8 +355,6 @@ msgstr ""
|
|
|
340
355
|
|
|
341
356
|
#. module: sale_blanket_order
|
|
342
357
|
#: model:ir.actions.server,name:sale_blanket_order.expired_blanket_orders_cron_ir_actions_server
|
|
343
|
-
#: model:ir.cron,cron_name:sale_blanket_order.expired_blanket_orders_cron
|
|
344
|
-
#: model:ir.cron,name:sale_blanket_order.expired_blanket_orders_cron
|
|
345
358
|
msgid "Expire Blanket Orders"
|
|
346
359
|
msgstr ""
|
|
347
360
|
|
|
@@ -406,17 +419,13 @@ msgstr ""
|
|
|
406
419
|
|
|
407
420
|
#. module: sale_blanket_order
|
|
408
421
|
#: model:ir.model.fields,help:sale_blanket_order.field_sale_blanket_order__message_needaction
|
|
409
|
-
#: model:ir.model.fields,help:sale_blanket_order.field_sale_blanket_order__message_unread
|
|
410
422
|
#: model:ir.model.fields,help:sale_blanket_order.field_sale_blanket_order_line__message_needaction
|
|
411
|
-
#: model:ir.model.fields,help:sale_blanket_order.field_sale_blanket_order_line__message_unread
|
|
412
423
|
msgid "If checked, new messages require your attention."
|
|
413
424
|
msgstr ""
|
|
414
425
|
|
|
415
426
|
#. module: sale_blanket_order
|
|
416
427
|
#: model:ir.model.fields,help:sale_blanket_order.field_sale_blanket_order__message_has_error
|
|
417
|
-
#: model:ir.model.fields,help:sale_blanket_order.field_sale_blanket_order__message_has_sms_error
|
|
418
428
|
#: model:ir.model.fields,help:sale_blanket_order.field_sale_blanket_order_line__message_has_error
|
|
419
|
-
#: model:ir.model.fields,help:sale_blanket_order.field_sale_blanket_order_line__message_has_sms_error
|
|
420
429
|
msgid "If checked, some messages have a delivery error."
|
|
421
430
|
msgstr ""
|
|
422
431
|
|
|
@@ -442,14 +451,6 @@ msgstr ""
|
|
|
442
451
|
msgid "Is Follower"
|
|
443
452
|
msgstr ""
|
|
444
453
|
|
|
445
|
-
#. module: sale_blanket_order
|
|
446
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order____last_update
|
|
447
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line____last_update
|
|
448
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_wizard____last_update
|
|
449
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_wizard_line____last_update
|
|
450
|
-
msgid "Last Modified on"
|
|
451
|
-
msgstr ""
|
|
452
|
-
|
|
453
454
|
#. module: sale_blanket_order
|
|
454
455
|
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__write_uid
|
|
455
456
|
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__write_uid
|
|
@@ -472,12 +473,6 @@ msgstr ""
|
|
|
472
473
|
msgid "Lines"
|
|
473
474
|
msgstr ""
|
|
474
475
|
|
|
475
|
-
#. module: sale_blanket_order
|
|
476
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__message_main_attachment_id
|
|
477
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__message_main_attachment_id
|
|
478
|
-
msgid "Main Attachment"
|
|
479
|
-
msgstr ""
|
|
480
|
-
|
|
481
476
|
#. module: sale_blanket_order
|
|
482
477
|
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__message_has_error
|
|
483
478
|
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__message_has_error
|
|
@@ -496,6 +491,7 @@ msgid "Missing required fields on accountable sale order line."
|
|
|
496
491
|
msgstr ""
|
|
497
492
|
|
|
498
493
|
#. module: sale_blanket_order
|
|
494
|
+
#. odoo-python
|
|
499
495
|
#: code:addons/sale_blanket_order/models/blanket_orders.py:0
|
|
500
496
|
#, python-format
|
|
501
497
|
msgid "Must have some lines"
|
|
@@ -512,12 +508,6 @@ msgstr ""
|
|
|
512
508
|
msgid "Name"
|
|
513
509
|
msgstr ""
|
|
514
510
|
|
|
515
|
-
#. module: sale_blanket_order
|
|
516
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__activity_calendar_event_id
|
|
517
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__activity_calendar_event_id
|
|
518
|
-
msgid "Next Activity Calendar Event"
|
|
519
|
-
msgstr ""
|
|
520
|
-
|
|
521
511
|
#. module: sale_blanket_order
|
|
522
512
|
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__activity_date_deadline
|
|
523
513
|
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__activity_date_deadline
|
|
@@ -557,7 +547,7 @@ msgstr ""
|
|
|
557
547
|
#. module: sale_blanket_order
|
|
558
548
|
#: model:ir.model.fields,help:sale_blanket_order.field_sale_blanket_order__message_needaction_counter
|
|
559
549
|
#: model:ir.model.fields,help:sale_blanket_order.field_sale_blanket_order_line__message_needaction_counter
|
|
560
|
-
msgid "Number of messages
|
|
550
|
+
msgid "Number of messages requiring action"
|
|
561
551
|
msgstr ""
|
|
562
552
|
|
|
563
553
|
#. module: sale_blanket_order
|
|
@@ -566,12 +556,6 @@ msgstr ""
|
|
|
566
556
|
msgid "Number of messages with delivery error"
|
|
567
557
|
msgstr ""
|
|
568
558
|
|
|
569
|
-
#. module: sale_blanket_order
|
|
570
|
-
#: model:ir.model.fields,help:sale_blanket_order.field_sale_blanket_order__message_unread_counter
|
|
571
|
-
#: model:ir.model.fields,help:sale_blanket_order.field_sale_blanket_order_line__message_unread_counter
|
|
572
|
-
msgid "Number of unread messages"
|
|
573
|
-
msgstr ""
|
|
574
|
-
|
|
575
559
|
#. module: sale_blanket_order
|
|
576
560
|
#: model:ir.model.fields.selection,name:sale_blanket_order.selection__sale_blanket_order__state__open
|
|
577
561
|
#: model_terms:ir.ui.view,arch_db:sale_blanket_order.view_blanket_order_search
|
|
@@ -634,6 +618,7 @@ msgid "Partner"
|
|
|
634
618
|
msgstr ""
|
|
635
619
|
|
|
636
620
|
#. module: sale_blanket_order
|
|
621
|
+
#. odoo-python
|
|
637
622
|
#: code:addons/sale_blanket_order/models/blanket_orders.py:0
|
|
638
623
|
#, python-format
|
|
639
624
|
msgid "Partner is mandatory"
|
|
@@ -652,6 +637,7 @@ msgid "Price"
|
|
|
652
637
|
msgstr ""
|
|
653
638
|
|
|
654
639
|
#. module: sale_blanket_order
|
|
640
|
+
#. odoo-python
|
|
655
641
|
#: code:addons/sale_blanket_order/models/blanket_orders.py:0
|
|
656
642
|
#, python-format
|
|
657
643
|
msgid "Price must be greater than zero"
|
|
@@ -663,6 +649,11 @@ msgstr ""
|
|
|
663
649
|
msgid "Pricelist"
|
|
664
650
|
msgstr ""
|
|
665
651
|
|
|
652
|
+
#. module: sale_blanket_order
|
|
653
|
+
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__pricelist_item_id
|
|
654
|
+
msgid "Pricelist Item"
|
|
655
|
+
msgstr ""
|
|
656
|
+
|
|
666
657
|
#. module: sale_blanket_order
|
|
667
658
|
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__product_id
|
|
668
659
|
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__product_id
|
|
@@ -677,6 +668,7 @@ msgid "Purchase Order"
|
|
|
677
668
|
msgstr ""
|
|
678
669
|
|
|
679
670
|
#. module: sale_blanket_order
|
|
671
|
+
#. odoo-python
|
|
680
672
|
#: code:addons/sale_blanket_order/models/blanket_orders.py:0
|
|
681
673
|
#, python-format
|
|
682
674
|
msgid "Quantity must be greater than zero"
|
|
@@ -687,6 +679,12 @@ msgstr ""
|
|
|
687
679
|
msgid "Quantity to Order"
|
|
688
680
|
msgstr ""
|
|
689
681
|
|
|
682
|
+
#. module: sale_blanket_order
|
|
683
|
+
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__rating_ids
|
|
684
|
+
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__rating_ids
|
|
685
|
+
msgid "Ratings"
|
|
686
|
+
msgstr ""
|
|
687
|
+
|
|
690
688
|
#. module: sale_blanket_order
|
|
691
689
|
#: model_terms:ir.ui.view,arch_db:sale_blanket_order.view_blanket_order_search
|
|
692
690
|
msgid "Remaining Qty"
|
|
@@ -716,12 +714,7 @@ msgid "Responsible User"
|
|
|
716
714
|
msgstr ""
|
|
717
715
|
|
|
718
716
|
#. module: sale_blanket_order
|
|
719
|
-
|
|
720
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__message_has_sms_error
|
|
721
|
-
msgid "SMS Delivery error"
|
|
722
|
-
msgstr ""
|
|
723
|
-
|
|
724
|
-
#. module: sale_blanket_order
|
|
717
|
+
#. odoo-python
|
|
725
718
|
#: code:addons/sale_blanket_order/wizard/create_sale_orders.py:0
|
|
726
719
|
#, python-format
|
|
727
720
|
msgid "Sale Blanket Order %s is not open"
|
|
@@ -773,6 +766,7 @@ msgid "Sales Order Line"
|
|
|
773
766
|
msgstr ""
|
|
774
767
|
|
|
775
768
|
#. module: sale_blanket_order
|
|
769
|
+
#. odoo-python
|
|
776
770
|
#: code:addons/sale_blanket_order/wizard/create_sale_orders.py:0
|
|
777
771
|
#, python-format
|
|
778
772
|
msgid "Sales Orders"
|
|
@@ -859,6 +853,7 @@ msgid "Terms and Conditions"
|
|
|
859
853
|
msgstr ""
|
|
860
854
|
|
|
861
855
|
#. module: sale_blanket_order
|
|
856
|
+
#. odoo-python
|
|
862
857
|
#: code:addons/sale_blanket_order/models/sale_orders.py:0
|
|
863
858
|
#, python-format
|
|
864
859
|
msgid ""
|
|
@@ -866,18 +861,21 @@ msgid ""
|
|
|
866
861
|
msgstr ""
|
|
867
862
|
|
|
868
863
|
#. module: sale_blanket_order
|
|
864
|
+
#. odoo-python
|
|
869
865
|
#: code:addons/sale_blanket_order/models/sale_orders.py:0
|
|
870
866
|
#, python-format
|
|
871
867
|
msgid "The customer must be equal to the blanket order lines customer"
|
|
872
868
|
msgstr ""
|
|
873
869
|
|
|
874
870
|
#. module: sale_blanket_order
|
|
871
|
+
#. odoo-python
|
|
875
872
|
#: code:addons/sale_blanket_order/models/sale_orders.py:0
|
|
876
873
|
#, python-format
|
|
877
874
|
msgid "The product in the blanket order and in the sales order must match"
|
|
878
875
|
msgstr ""
|
|
879
876
|
|
|
880
877
|
#. module: sale_blanket_order
|
|
878
|
+
#. odoo-python
|
|
881
879
|
#: code:addons/sale_blanket_order/wizard/create_sale_orders.py:0
|
|
882
880
|
#, python-format
|
|
883
881
|
msgid "The sale has already been completed."
|
|
@@ -911,18 +909,6 @@ msgstr ""
|
|
|
911
909
|
msgid "Unit of Measure"
|
|
912
910
|
msgstr ""
|
|
913
911
|
|
|
914
|
-
#. module: sale_blanket_order
|
|
915
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__message_unread
|
|
916
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__message_unread
|
|
917
|
-
msgid "Unread Messages"
|
|
918
|
-
msgstr ""
|
|
919
|
-
|
|
920
|
-
#. module: sale_blanket_order
|
|
921
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__message_unread_counter
|
|
922
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__message_unread_counter
|
|
923
|
-
msgid "Unread Messages Counter"
|
|
924
|
-
msgstr ""
|
|
925
|
-
|
|
926
912
|
#. module: sale_blanket_order
|
|
927
913
|
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__amount_untaxed
|
|
928
914
|
msgid "Untaxed Amount"
|
|
@@ -948,12 +934,14 @@ msgid "Validity Date"
|
|
|
948
934
|
msgstr ""
|
|
949
935
|
|
|
950
936
|
#. module: sale_blanket_order
|
|
937
|
+
#. odoo-python
|
|
951
938
|
#: code:addons/sale_blanket_order/models/blanket_orders.py:0
|
|
952
939
|
#, python-format
|
|
953
940
|
msgid "Validity date is mandatory"
|
|
954
941
|
msgstr ""
|
|
955
942
|
|
|
956
943
|
#. module: sale_blanket_order
|
|
944
|
+
#. odoo-python
|
|
957
945
|
#: code:addons/sale_blanket_order/models/blanket_orders.py:0
|
|
958
946
|
#, python-format
|
|
959
947
|
msgid "Validity date must be in the future"
|
|
@@ -982,6 +970,7 @@ msgid "Wizard"
|
|
|
982
970
|
msgstr ""
|
|
983
971
|
|
|
984
972
|
#. module: sale_blanket_order
|
|
973
|
+
#. odoo-python
|
|
985
974
|
#: code:addons/sale_blanket_order/models/blanket_orders.py:0
|
|
986
975
|
#, python-format
|
|
987
976
|
msgid ""
|
|
@@ -990,6 +979,7 @@ msgid ""
|
|
|
990
979
|
msgstr ""
|
|
991
980
|
|
|
992
981
|
#. module: sale_blanket_order
|
|
982
|
+
#. odoo-python
|
|
993
983
|
#: code:addons/sale_blanket_order/models/blanket_orders.py:0
|
|
994
984
|
#, python-format
|
|
995
985
|
msgid ""
|
|
@@ -998,24 +988,28 @@ msgid ""
|
|
|
998
988
|
msgstr ""
|
|
999
989
|
|
|
1000
990
|
#. module: sale_blanket_order
|
|
991
|
+
#. odoo-python
|
|
1001
992
|
#: code:addons/sale_blanket_order/wizard/create_sale_orders.py:0
|
|
1002
993
|
#, python-format
|
|
1003
994
|
msgid "You can't create a sale order from an expired blanket order!"
|
|
1004
995
|
msgstr ""
|
|
1005
996
|
|
|
1006
997
|
#. module: sale_blanket_order
|
|
998
|
+
#. odoo-python
|
|
1007
999
|
#: code:addons/sale_blanket_order/wizard/create_sale_orders.py:0
|
|
1008
1000
|
#, python-format
|
|
1009
1001
|
msgid "You can't order more than the remaining quantities"
|
|
1010
1002
|
msgstr ""
|
|
1011
1003
|
|
|
1012
1004
|
#. module: sale_blanket_order
|
|
1005
|
+
#. odoo-python
|
|
1013
1006
|
#: code:addons/sale_blanket_order/wizard/create_sale_orders.py:0
|
|
1014
1007
|
#, python-format
|
|
1015
1008
|
msgid "You have to select lines from the same company."
|
|
1016
1009
|
msgstr ""
|
|
1017
1010
|
|
|
1018
1011
|
#. module: sale_blanket_order
|
|
1012
|
+
#. odoo-python
|
|
1019
1013
|
#: code:addons/sale_blanket_order/models/blanket_orders.py:0
|
|
1020
1014
|
#, python-format
|
|
1021
1015
|
msgid "remaining"
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
#
|
|
5
5
|
msgid ""
|
|
6
6
|
msgstr ""
|
|
7
|
-
"Project-Id-Version: Odoo Server
|
|
7
|
+
"Project-Id-Version: Odoo Server 17.0\n"
|
|
8
8
|
"Report-Msgid-Bugs-To: \n"
|
|
9
9
|
"Last-Translator: \n"
|
|
10
10
|
"Language-Team: \n"
|
|
@@ -128,13 +128,13 @@ msgid "An order can't be empty"
|
|
|
128
128
|
msgstr ""
|
|
129
129
|
|
|
130
130
|
#. module: sale_blanket_order
|
|
131
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.
|
|
132
|
-
msgid "Analytic"
|
|
131
|
+
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__analytic_account_id
|
|
132
|
+
msgid "Analytic Account"
|
|
133
133
|
msgstr ""
|
|
134
134
|
|
|
135
135
|
#. module: sale_blanket_order
|
|
136
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.
|
|
137
|
-
msgid "Analytic
|
|
136
|
+
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__analytic_distribution
|
|
137
|
+
msgid "Analytic Distribution"
|
|
138
138
|
msgstr ""
|
|
139
139
|
|
|
140
140
|
#. module: sale_blanket_order
|
|
@@ -353,7 +353,6 @@ msgstr ""
|
|
|
353
353
|
|
|
354
354
|
#. module: sale_blanket_order
|
|
355
355
|
#: model:ir.actions.server,name:sale_blanket_order.expired_blanket_orders_cron_ir_actions_server
|
|
356
|
-
#: model:ir.cron,cron_name:sale_blanket_order.expired_blanket_orders_cron
|
|
357
356
|
msgid "Expire Blanket Orders"
|
|
358
357
|
msgstr ""
|
|
359
358
|
|
|
@@ -450,14 +449,6 @@ msgstr ""
|
|
|
450
449
|
msgid "Is Follower"
|
|
451
450
|
msgstr ""
|
|
452
451
|
|
|
453
|
-
#. module: sale_blanket_order
|
|
454
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order____last_update
|
|
455
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line____last_update
|
|
456
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_wizard____last_update
|
|
457
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_wizard_line____last_update
|
|
458
|
-
msgid "Last Modified on"
|
|
459
|
-
msgstr ""
|
|
460
|
-
|
|
461
452
|
#. module: sale_blanket_order
|
|
462
453
|
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__write_uid
|
|
463
454
|
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__write_uid
|
|
@@ -480,12 +471,6 @@ msgstr ""
|
|
|
480
471
|
msgid "Lines"
|
|
481
472
|
msgstr ""
|
|
482
473
|
|
|
483
|
-
#. module: sale_blanket_order
|
|
484
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__message_main_attachment_id
|
|
485
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__message_main_attachment_id
|
|
486
|
-
msgid "Main Attachment"
|
|
487
|
-
msgstr ""
|
|
488
|
-
|
|
489
474
|
#. module: sale_blanket_order
|
|
490
475
|
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__message_has_error
|
|
491
476
|
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__message_has_error
|
|
@@ -521,12 +506,6 @@ msgstr ""
|
|
|
521
506
|
msgid "Name"
|
|
522
507
|
msgstr ""
|
|
523
508
|
|
|
524
|
-
#. module: sale_blanket_order
|
|
525
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__activity_calendar_event_id
|
|
526
|
-
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__activity_calendar_event_id
|
|
527
|
-
msgid "Next Activity Calendar Event"
|
|
528
|
-
msgstr ""
|
|
529
|
-
|
|
530
509
|
#. module: sale_blanket_order
|
|
531
510
|
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__activity_date_deadline
|
|
532
511
|
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__activity_date_deadline
|
|
@@ -668,6 +647,11 @@ msgstr ""
|
|
|
668
647
|
msgid "Pricelist"
|
|
669
648
|
msgstr ""
|
|
670
649
|
|
|
650
|
+
#. module: sale_blanket_order
|
|
651
|
+
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__pricelist_item_id
|
|
652
|
+
msgid "Pricelist Item"
|
|
653
|
+
msgstr ""
|
|
654
|
+
|
|
671
655
|
#. module: sale_blanket_order
|
|
672
656
|
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__product_id
|
|
673
657
|
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__product_id
|
|
@@ -693,6 +677,12 @@ msgstr ""
|
|
|
693
677
|
msgid "Quantity to Order"
|
|
694
678
|
msgstr ""
|
|
695
679
|
|
|
680
|
+
#. module: sale_blanket_order
|
|
681
|
+
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order__rating_ids
|
|
682
|
+
#: model:ir.model.fields,field_description:sale_blanket_order.field_sale_blanket_order_line__rating_ids
|
|
683
|
+
msgid "Ratings"
|
|
684
|
+
msgstr ""
|
|
685
|
+
|
|
696
686
|
#. module: sale_blanket_order
|
|
697
687
|
#: model_terms:ir.ui.view,arch_db:sale_blanket_order.view_blanket_order_search
|
|
698
688
|
msgid "Remaining Qty"
|
|
@@ -6,8 +6,6 @@ from odoo.exceptions import UserError
|
|
|
6
6
|
from odoo.tools import float_is_zero
|
|
7
7
|
from odoo.tools.misc import format_date
|
|
8
8
|
|
|
9
|
-
from odoo.addons.sale.models.sale_order import READONLY_FIELD_STATES
|
|
10
|
-
|
|
11
9
|
|
|
12
10
|
class BlanketOrder(models.Model):
|
|
13
11
|
_name = "sale.blanket.order"
|
|
@@ -44,7 +42,6 @@ class BlanketOrder(models.Model):
|
|
|
44
42
|
partner_id = fields.Many2one(
|
|
45
43
|
"res.partner",
|
|
46
44
|
string="Partner",
|
|
47
|
-
states=READONLY_FIELD_STATES,
|
|
48
45
|
)
|
|
49
46
|
line_ids = fields.One2many(
|
|
50
47
|
"sale.blanket.order.line", "order_id", string="Order lines", copy=True
|
|
@@ -63,7 +60,6 @@ class BlanketOrder(models.Model):
|
|
|
63
60
|
"product.pricelist",
|
|
64
61
|
string="Pricelist",
|
|
65
62
|
required=True,
|
|
66
|
-
states=READONLY_FIELD_STATES,
|
|
67
63
|
)
|
|
68
64
|
currency_id = fields.Many2one("res.currency", related="pricelist_id.currency_id")
|
|
69
65
|
analytic_account_id = fields.Many2one(
|
|
@@ -71,13 +67,11 @@ class BlanketOrder(models.Model):
|
|
|
71
67
|
string="Analytic Account",
|
|
72
68
|
copy=False,
|
|
73
69
|
check_company=True,
|
|
74
|
-
states=READONLY_FIELD_STATES,
|
|
75
70
|
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]",
|
|
76
71
|
)
|
|
77
72
|
payment_term_id = fields.Many2one(
|
|
78
73
|
"account.payment.term",
|
|
79
74
|
string="Payment Terms",
|
|
80
|
-
states=READONLY_FIELD_STATES,
|
|
81
75
|
)
|
|
82
76
|
confirmed = fields.Boolean(copy=False)
|
|
83
77
|
state = fields.Selection(
|
|
@@ -91,26 +85,21 @@ class BlanketOrder(models.Model):
|
|
|
91
85
|
store=True,
|
|
92
86
|
copy=False,
|
|
93
87
|
)
|
|
94
|
-
validity_date = fields.Date(
|
|
95
|
-
states=READONLY_FIELD_STATES,
|
|
96
|
-
)
|
|
88
|
+
validity_date = fields.Date()
|
|
97
89
|
client_order_ref = fields.Char(
|
|
98
90
|
string="Customer Reference",
|
|
99
91
|
copy=False,
|
|
100
|
-
states=READONLY_FIELD_STATES,
|
|
101
92
|
)
|
|
102
|
-
note = fields.Text(default=_default_note
|
|
93
|
+
note = fields.Text(default=_default_note)
|
|
103
94
|
user_id = fields.Many2one(
|
|
104
95
|
"res.users",
|
|
105
96
|
string="Salesperson",
|
|
106
|
-
states=READONLY_FIELD_STATES,
|
|
107
97
|
)
|
|
108
98
|
team_id = fields.Many2one(
|
|
109
99
|
"crm.team",
|
|
110
100
|
string="Sales Team",
|
|
111
101
|
change_default=True,
|
|
112
102
|
default=lambda self: self.env["crm.team"]._get_default_team_id(),
|
|
113
|
-
states=READONLY_FIELD_STATES,
|
|
114
103
|
)
|
|
115
104
|
company_id = fields.Many2one(
|
|
116
105
|
comodel_name="res.company",
|
|
@@ -198,7 +187,7 @@ class BlanketOrder(models.Model):
|
|
|
198
187
|
order.state = "expired"
|
|
199
188
|
elif float_is_zero(
|
|
200
189
|
sum(
|
|
201
|
-
order.line_ids.filtered(lambda
|
|
190
|
+
order.line_ids.filtered(lambda line: not line.display_type).mapped(
|
|
202
191
|
"remaining_uom_qty"
|
|
203
192
|
)
|
|
204
193
|
),
|
|
@@ -483,23 +472,29 @@ class BlanketOrderLine(models.Model):
|
|
|
483
472
|
default=False,
|
|
484
473
|
help="Technical field for UX purpose.",
|
|
485
474
|
)
|
|
475
|
+
pricelist_item_id = fields.Many2one(
|
|
476
|
+
comodel_name="product.pricelist.item", compute="_compute_pricelist_item_id"
|
|
477
|
+
)
|
|
486
478
|
|
|
487
|
-
|
|
488
|
-
|
|
479
|
+
@api.depends(
|
|
480
|
+
"order_id.name", "date_schedule", "remaining_uom_qty", "product_uom.name"
|
|
481
|
+
)
|
|
482
|
+
@api.depends_context("from_sale_order")
|
|
483
|
+
def _compute_display_name(self):
|
|
489
484
|
if self.env.context.get("from_sale_order"):
|
|
490
485
|
for record in self:
|
|
491
|
-
|
|
486
|
+
name = "[%s]" % record.order_id.name
|
|
492
487
|
if record.date_schedule:
|
|
493
488
|
formatted_date = format_date(record.env, record.date_schedule)
|
|
494
|
-
|
|
495
|
-
|
|
489
|
+
name += " - {}: {}".format(_("Date Scheduled"), formatted_date)
|
|
490
|
+
name += " ({}: {} {})".format(
|
|
496
491
|
_("remaining"),
|
|
497
492
|
record.remaining_uom_qty,
|
|
498
493
|
record.product_uom.name,
|
|
499
494
|
)
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
495
|
+
record.display_name = name
|
|
496
|
+
else:
|
|
497
|
+
return super()._compute_display_name()
|
|
503
498
|
|
|
504
499
|
def _get_real_price_currency(self, product, rule_id, qty, uom, pricelist_id):
|
|
505
500
|
"""Retrieve the price before applying the pricelist
|
|
@@ -563,35 +558,43 @@ class BlanketOrderLine(models.Model):
|
|
|
563
558
|
|
|
564
559
|
return product[field_name] * uom_factor * cur_factor, currency_id.id
|
|
565
560
|
|
|
566
|
-
def _get_display_price(self
|
|
561
|
+
def _get_display_price(self):
|
|
567
562
|
# Copied and adapted from the sale module
|
|
568
563
|
self.ensure_one()
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
self.
|
|
564
|
+
self.product_id.ensure_one()
|
|
565
|
+
|
|
566
|
+
pricelist_price = self.pricelist_item_id._compute_price(
|
|
567
|
+
product=self.product_id,
|
|
568
|
+
quantity=self.original_uom_qty or 1.0,
|
|
569
|
+
uom=self.product_uom,
|
|
570
|
+
date=fields.Date.today(),
|
|
571
|
+
currency=self.currency_id,
|
|
575
572
|
)
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
pricelist.id,
|
|
587
|
-
)
|
|
588
|
-
if currency_id != pricelist.currency_id.id:
|
|
589
|
-
currency = self.env["res.currency"].browse(currency_id)
|
|
590
|
-
base_price = currency.with_context(**context_partner).compute(
|
|
591
|
-
base_price, pricelist.currency_id
|
|
592
|
-
)
|
|
573
|
+
|
|
574
|
+
if self.order_id.pricelist_id.discount_policy == "with_discount":
|
|
575
|
+
return pricelist_price
|
|
576
|
+
|
|
577
|
+
if not self.pricelist_item_id:
|
|
578
|
+
# No pricelist rule found => no discount from pricelist
|
|
579
|
+
return pricelist_price
|
|
580
|
+
|
|
581
|
+
base_price = self._get_pricelist_price_before_discount()
|
|
582
|
+
|
|
593
583
|
# negative discounts (= surcharge) are included in the display price
|
|
594
|
-
return max(base_price,
|
|
584
|
+
return max(base_price, pricelist_price)
|
|
585
|
+
|
|
586
|
+
def _get_pricelist_price_before_discount(self):
|
|
587
|
+
# Copied and adapted from the sale module
|
|
588
|
+
self.ensure_one()
|
|
589
|
+
self.product_id.ensure_one()
|
|
590
|
+
|
|
591
|
+
return self.pricelist_item_id._compute_price_before_discount(
|
|
592
|
+
product=self.product_id,
|
|
593
|
+
quantity=self.product_uom_qty or 1.0,
|
|
594
|
+
uom=self.product_uom,
|
|
595
|
+
date=fields.Date.today(),
|
|
596
|
+
currency=self.currency_id,
|
|
597
|
+
)
|
|
595
598
|
|
|
596
599
|
@api.onchange("product_id", "original_uom_qty")
|
|
597
600
|
def onchange_product(self):
|
|
@@ -605,9 +608,9 @@ class BlanketOrderLine(models.Model):
|
|
|
605
608
|
if self.order_id.partner_id and float_is_zero(
|
|
606
609
|
self.price_unit, precision_digits=precision
|
|
607
610
|
):
|
|
608
|
-
self.price_unit = self._get_display_price(
|
|
611
|
+
self.price_unit = self._get_display_price()
|
|
609
612
|
if self.product_id.code:
|
|
610
|
-
name = "[{}] {
|
|
613
|
+
name = f"[{name}] {self.product_id.code}"
|
|
611
614
|
if self.product_id.description_sale:
|
|
612
615
|
name += "\n" + self.product_id.description_sale
|
|
613
616
|
self.name = name
|
|
@@ -656,6 +659,24 @@ class BlanketOrderLine(models.Model):
|
|
|
656
659
|
line.remaining_uom_qty, line.product_id.uom_id
|
|
657
660
|
)
|
|
658
661
|
|
|
662
|
+
@api.depends("product_id", "product_uom", "original_uom_qty")
|
|
663
|
+
def _compute_pricelist_item_id(self):
|
|
664
|
+
# Copied and adapted from the sale module
|
|
665
|
+
for line in self:
|
|
666
|
+
if (
|
|
667
|
+
not line.product_id
|
|
668
|
+
or line.display_type
|
|
669
|
+
or not line.order_id.pricelist_id
|
|
670
|
+
):
|
|
671
|
+
line.pricelist_item_id = False
|
|
672
|
+
else:
|
|
673
|
+
line.pricelist_item_id = line.order_id.pricelist_id._get_product_rule(
|
|
674
|
+
line.product_id,
|
|
675
|
+
quantity=line.original_uom_qty or 1.0,
|
|
676
|
+
uom=line.product_uom,
|
|
677
|
+
date=fields.Date.today(),
|
|
678
|
+
)
|
|
679
|
+
|
|
659
680
|
def _validate(self):
|
|
660
681
|
try:
|
|
661
682
|
for line in self:
|
|
@@ -716,4 +737,4 @@ class BlanketOrderLine(models.Model):
|
|
|
716
737
|
"""
|
|
717
738
|
)
|
|
718
739
|
)
|
|
719
|
-
return super(
|
|
740
|
+
return super().write(values)
|
|
@@ -61,14 +61,14 @@ class SaleOrderLine(models.Model):
|
|
|
61
61
|
assigned_bo_line = False
|
|
62
62
|
date_planned = date.today()
|
|
63
63
|
date_delta = timedelta(days=365)
|
|
64
|
-
for line in bo_lines.filtered(lambda
|
|
64
|
+
for line in bo_lines.filtered(lambda bo_line: bo_line.date_schedule):
|
|
65
65
|
date_schedule = line.date_schedule
|
|
66
66
|
if date_schedule and abs(date_schedule - date_planned) < date_delta:
|
|
67
67
|
assigned_bo_line = line
|
|
68
68
|
date_delta = abs(date_schedule - date_planned)
|
|
69
69
|
if assigned_bo_line:
|
|
70
70
|
return assigned_bo_line
|
|
71
|
-
non_date_bo_lines = bo_lines.filtered(lambda
|
|
71
|
+
non_date_bo_lines = bo_lines.filtered(lambda bo_line: not bo_line.date_schedule)
|
|
72
72
|
if non_date_bo_lines:
|
|
73
73
|
return non_date_bo_lines[0]
|
|
74
74
|
|