Merge lp:~jfb-tempo-consulting/unifield-server/US-10835 into lp:unifield-server
- US-10835
- Merge into trunk
Proposed by
jftempo
Status: | Merged |
---|---|
Merged at revision: | 6471 |
Proposed branch: | lp:~jfb-tempo-consulting/unifield-server/US-10835 |
Merge into: | lp:unifield-server |
Diff against target: |
2911 lines (+1839/-65) (has conflicts) 35 files modified
bin/addons/account_hq_entries/__init__.py (+2/-22) bin/addons/account_hq_entries/__openerp__.py (+3/-0) bin/addons/account_hq_entries/account_view.xml (+156/-1) bin/addons/account_hq_entries/esc_invoice.py (+203/-0) bin/addons/account_hq_entries/esc_line_installer.xml (+48/-0) bin/addons/account_hq_entries/esc_line_report.xml (+42/-0) bin/addons/account_hq_entries/hq_entries.py (+0/-1) bin/addons/account_hq_entries/report/__init__.py (+2/-0) bin/addons/account_hq_entries/report/esc_line_import_report.py (+45/-0) bin/addons/account_hq_entries/report/esc_line_import_template.mako (+111/-0) bin/addons/account_hq_entries/report/finance_cost_price.py (+104/-0) bin/addons/account_hq_entries/wizard/__init__.py (+1/-0) bin/addons/account_hq_entries/wizard/esc_lines_import.py (+351/-0) bin/addons/account_hq_entries/wizard/esc_lines_import_view.xml (+89/-0) bin/addons/delivery_mechanism/delivery_mechanism.py (+80/-5) bin/addons/msf_audittrail/data/audittrail_hq_entry.yml (+28/-0) bin/addons/msf_printed_documents/printed_report.xml (+1/-0) bin/addons/msf_profile/data/patches.xml (+7/-0) bin/addons/msf_profile/i18n/fr_MF.po (+501/-30) bin/addons/msf_profile/msf_profile.py (+11/-0) bin/addons/msf_sync_data_server/data/sync_server.message_rule.csv (+1/-1) bin/addons/msf_sync_data_server/data/sync_server.sync_rule.csv (+2/-0) bin/addons/product/product.py (+10/-0) bin/addons/product_attributes/product_attributes.py (+6/-0) bin/addons/product_attributes/product_attributes_view.xml (+2/-0) bin/addons/purchase/purchase_order_line.py (+1/-0) bin/addons/stock/stock_move.py (+8/-2) bin/addons/sync_client/update.py (+6/-1) bin/addons/sync_common/common.py (+1/-0) bin/addons/sync_server/rules.py (+7/-1) bin/addons/sync_server/rules_view.xml (+1/-1) bin/addons/sync_server/sync_server.py (+3/-0) bin/addons/sync_server/update.py (+3/-0) bin/addons/sync_so/purchase.py (+1/-0) bin/addons/unifield_setup/setup_configuration.py (+2/-0) Text conflict in bin/addons/msf_profile/data/patches.xml Text conflict in bin/addons/msf_profile/i18n/fr_MF.po Text conflict in bin/addons/msf_profile/msf_profile.py |
To merge this branch: | bzr merge lp:~jfb-tempo-consulting/unifield-server/US-10835 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
UniField Reviewer Team | Pending | ||
Review via email: mp+440711@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
- 6441. By jftempo
-
Delete draft entries
- 6442. By jftempo
-
Ignore duplicates / report with errors / unicity constraint on all fields
- 6443. By jftempo
-
Import: unicity constraint with NULL, button to reset or keep wizard
- 6444. By jftempo
-
import error if qty <= 0
- 6445. By jftempo
-
French translations
- 6446. By jftempo
-
French translations
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'bin/addons/account_hq_entries/__init__.py' | |||
2 | --- bin/addons/account_hq_entries/__init__.py 2012-08-14 09:25:23 +0000 | |||
3 | +++ bin/addons/account_hq_entries/__init__.py 2023-05-05 12:01:38 +0000 | |||
4 | @@ -1,29 +1,9 @@ | |||
5 | 1 | #!/usr/bin/env python | 1 | #!/usr/bin/env python |
6 | 2 | # -*- coding: utf-8 -*- | 2 | # -*- coding: utf-8 -*- |
7 | 3 | ############################################################################## | ||
8 | 4 | # | ||
9 | 5 | # OpenERP, Open Source Management Solution | ||
10 | 6 | # Copyright (C) 2011 TeMPO Consulting, MSF. All Rights Reserved | ||
11 | 7 | # Developer: Olivier DOSSMANN | ||
12 | 8 | # | ||
13 | 9 | # This program is free software: you can redistribute it and/or modify | ||
14 | 10 | # it under the terms of the GNU Affero General Public License as | ||
15 | 11 | # published by the Free Software Foundation, either version 3 of the | ||
16 | 12 | # License, or (at your option) any later version. | ||
17 | 13 | # | ||
18 | 14 | # This program is distributed in the hope that it will be useful, | ||
19 | 15 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
20 | 16 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
21 | 17 | # GNU Affero General Public License for more details. | ||
22 | 18 | # | ||
23 | 19 | # You should have received a copy of the GNU Affero General Public License | ||
24 | 20 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
25 | 21 | # | ||
26 | 22 | ############################################################################## | ||
27 | 23 | 3 | ||
28 | 24 | import res_company | 4 | import res_company |
29 | 25 | import hq_entries | 5 | import hq_entries |
30 | 26 | import wizard | 6 | import wizard |
31 | 27 | import account | 7 | import account |
34 | 28 | 8 | import esc_invoice | |
35 | 29 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: | 9 | import report |
36 | 30 | 10 | ||
37 | === modified file 'bin/addons/account_hq_entries/__openerp__.py' | |||
38 | --- bin/addons/account_hq_entries/__openerp__.py 2017-09-28 14:05:02 +0000 | |||
39 | +++ bin/addons/account_hq_entries/__openerp__.py 2023-05-05 12:01:38 +0000 | |||
40 | @@ -33,6 +33,9 @@ | |||
41 | 33 | 'security/ir.model.access.csv', | 33 | 'security/ir.model.access.csv', |
42 | 34 | 'wizard/wizard_view.xml', | 34 | 'wizard/wizard_view.xml', |
43 | 35 | 'account_view.xml', | 35 | 'account_view.xml', |
44 | 36 | 'esc_line_installer.xml', | ||
45 | 37 | 'wizard/esc_lines_import_view.xml', | ||
46 | 38 | 'esc_line_report.xml', | ||
47 | 36 | ], | 39 | ], |
48 | 37 | "demo_xml" : [], | 40 | "demo_xml" : [], |
49 | 38 | "test": [ | 41 | "test": [ |
50 | 39 | 42 | ||
51 | === modified file 'bin/addons/account_hq_entries/account_view.xml' | |||
52 | --- bin/addons/account_hq_entries/account_view.xml 2022-10-13 12:32:09 +0000 | |||
53 | +++ bin/addons/account_hq_entries/account_view.xml 2023-05-05 12:01:38 +0000 | |||
54 | @@ -329,7 +329,162 @@ | |||
55 | 329 | <menuitem id="menu_hq" name="HQ" parent="account.menu_finance" sequence="6"/> | 329 | <menuitem id="menu_hq" name="HQ" parent="account.menu_finance" sequence="6"/> |
56 | 330 | <menuitem name="HQ Import" action="action_hq_entries_import_wizard" type="server" id="menu_hq_entries_import" parent="menu_hq" sequence="1"/> | 330 | <menuitem name="HQ Import" action="action_hq_entries_import_wizard" type="server" id="menu_hq_entries_import" parent="menu_hq" sequence="1"/> |
57 | 331 | <menuitem name="HQ Entries" action="action_hq_entries_tree" id="menu_hq_entries" parent="menu_hq" sequence="2"/> | 331 | <menuitem name="HQ Entries" action="action_hq_entries_tree" id="menu_hq_entries" parent="menu_hq" sequence="2"/> |
59 | 332 | 332 | ||
60 | 333 | |||
61 | 334 | <record id="esc_invoice_line_filter" model="ir.ui.view"> | ||
62 | 335 | <field name="name">International Invoices Lines</field> | ||
63 | 336 | <field name="model">esc.invoice.line</field> | ||
64 | 337 | <field name="type">search</field> | ||
65 | 338 | <field name="arch" type="xml"> | ||
66 | 339 | <search string="International Invoices Lines"> | ||
67 | 340 | <filter icon="gtk-new" string="Not Done" domain="[('state', '!=', 'done')]" /> | ||
68 | 341 | <filter icon="gtk-apply" string="Done" domain="[('state', '=', 'done')]" /> | ||
69 | 342 | <separator orientation="vertical"/> | ||
70 | 343 | <field name="po_name" /> | ||
71 | 344 | <field name="product_id" /> | ||
72 | 345 | <field name="requestor_cc_id" /> | ||
73 | 346 | <field name="consignee_cc_id"/> | ||
74 | 347 | <field name="shipment_ref"/> | ||
75 | 348 | <newline/> | ||
76 | 349 | <group expand="0" string="Group By..." colspan="12" col="10"> | ||
77 | 350 | <filter string="PO Reference" icon="terp-partner" domain="[]" context="{'group_by':'po_name'}"/> | ||
78 | 351 | <separator orientation="vertical"/> | ||
79 | 352 | <filter string="Product" icon="terp-folder-green" context="{'group_by':'product_id'}"/> | ||
80 | 353 | <separator orientation="vertical"/> | ||
81 | 354 | <filter string="Requestor" icon="terp-go-month" domain="[]" context="{'group_by':'requestor_cc_id'}"/> | ||
82 | 355 | <separator orientation="vertical"/> | ||
83 | 356 | <filter string="Consignee" icon="gtk-about" domain="[]" context="{'group_by': 'consignee_cc_id'}"/> | ||
84 | 357 | </group> | ||
85 | 358 | <newline/> | ||
86 | 359 | </search> | ||
87 | 360 | </field> | ||
88 | 361 | </record> | ||
89 | 362 | |||
90 | 363 | <record id="esc_invoice_line_tree" model="ir.ui.view"> | ||
91 | 364 | <field name="name">International Invoices Lines</field> | ||
92 | 365 | <field name="model">esc.invoice.line</field> | ||
93 | 366 | <field name="type">tree</field> | ||
94 | 367 | <field name="arch" type="xml"> | ||
95 | 368 | <tree string="International Invoices Line" editable="top" hide_new_button="1" hide_delete_button="1" hide_edit_button="1" noteditable="1"> | ||
96 | 369 | <field name="po_name" readonly="1"/> | ||
97 | 370 | <field name="product_id" readonly="1" /> | ||
98 | 371 | <field name="requestor_cc_id" readonly="1" /> | ||
99 | 372 | <field name="consignee_cc_id" readonly="1" /> | ||
100 | 373 | <field name="shipment_ref" readonly="1" /> | ||
101 | 374 | <field name="price_unit" readonly="1" /> | ||
102 | 375 | <field name="currency_id" readonly="1" /> | ||
103 | 376 | <field name="product_qty" readonly="1" /> | ||
104 | 377 | <field name="remaining_qty" readonly="1" /> | ||
105 | 378 | <field name="in_number" /> | ||
106 | 379 | <field name="state" readonly="1" /> | ||
107 | 380 | <button name="delete" string="Delete" icon="gtk-del" type="object" states='1_draft' confirm="Do you want to delete this line ?" /> | ||
108 | 381 | </tree> | ||
109 | 382 | </field> | ||
110 | 383 | </record> | ||
111 | 384 | |||
112 | 385 | <record id="esc_invoice_line_form" model="ir.ui.view"> | ||
113 | 386 | <field name="name">International Invoices Lines</field> | ||
114 | 387 | <field name="model">esc.invoice.line</field> | ||
115 | 388 | <field name="type">form</field> | ||
116 | 389 | <field name="arch" type="xml"> | ||
117 | 390 | <form string="International Invoices Line" hide_new_button="1" hide_duplicate_button="1"> | ||
118 | 391 | <field name="po_name" readonly="1" /> | ||
119 | 392 | <field name="product_id" readonly="1" /> | ||
120 | 393 | <field name="requestor_cc_id" readonly="1" /> | ||
121 | 394 | <field name="consignee_cc_id" readonly="1" /> | ||
122 | 395 | <field name="shipment_ref" readonly="1" /> | ||
123 | 396 | <field name="price_unit" readonly="1" /> | ||
124 | 397 | <field name="product_qty" readonly="1" /> | ||
125 | 398 | <field name="remaining_qty" readonly="1" /> | ||
126 | 399 | <field name="uom_id" readonly="1" /> | ||
127 | 400 | <field name="currency_id" readonly="1" /> | ||
128 | 401 | <field name="in_number" /> | ||
129 | 402 | <field name="state" readonly="1" /> | ||
130 | 403 | </form> | ||
131 | 404 | </field> | ||
132 | 405 | </record> | ||
133 | 406 | |||
134 | 407 | <record model="ir.actions.act_window" id="esc_invoice_line_action"> | ||
135 | 408 | <field name="name">International Invoices Lines</field> | ||
136 | 409 | <field name="res_model">esc.invoice.line</field> | ||
137 | 410 | <field name="view_type">form</field> | ||
138 | 411 | <field name="view_mode">tree,form</field> | ||
139 | 412 | <field name="view_id" ref="esc_invoice_line_tree"/> | ||
140 | 413 | </record> | ||
141 | 414 | <menuitem name="International Invoices Lines" action="esc_invoice_line_action" id="esc_invoice_line_menu" parent="menu_hq" sequence="20"/> | ||
142 | 415 | |||
143 | 416 | |||
144 | 417 | |||
145 | 418 | <record id="finance_price_track_changes_filter" model="ir.ui.view"> | ||
146 | 419 | <field name="name">Line Matching</field> | ||
147 | 420 | <field name="model">finance_price.track_changes</field> | ||
148 | 421 | <field name="type">search</field> | ||
149 | 422 | <field name="arch" type="xml"> | ||
150 | 423 | <search string="Line Matching"> | ||
151 | 424 | <field name="product_id" /> | ||
152 | 425 | <field name="stock_picking_id" /> | ||
153 | 426 | <field name="matching_type" /> | ||
154 | 427 | <field name="esc_invoice_line_id"/> | ||
155 | 428 | <newline/> | ||
156 | 429 | </search> | ||
157 | 430 | </field> | ||
158 | 431 | </record> | ||
159 | 432 | |||
160 | 433 | <record id="finance_price_track_changes_tree" model="ir.ui.view"> | ||
161 | 434 | <field name="name">Line Matching</field> | ||
162 | 435 | <field name="model">finance_price.track_changes</field> | ||
163 | 436 | <field name="type">tree</field> | ||
164 | 437 | <field name="arch" type="xml"> | ||
165 | 438 | <tree string="Line Matching" editable="top" hide_new_button="1" hide_delete_button="1" hide_edit_button="1" noteditable="1"> | ||
166 | 439 | <field name="product_id" /> | ||
167 | 440 | <field name="old_price" /> | ||
168 | 441 | <field name="new_price" /> | ||
169 | 442 | <field name="qty_processed" /> | ||
170 | 443 | <field name="price_unit" /> | ||
171 | 444 | <field name="stock_before" /> | ||
172 | 445 | <field name="stock_picking_id" /> | ||
173 | 446 | <field name="stock_move_id" /> | ||
174 | 447 | <field name="purchase_oder_line_id" /> | ||
175 | 448 | <field name="esc_invoice_line_id" /> | ||
176 | 449 | <field name="matching_type" /> | ||
177 | 450 | </tree> | ||
178 | 451 | </field> | ||
179 | 452 | </record> | ||
180 | 453 | |||
181 | 454 | <record model="ir.actions.act_window" id="finance_price_track_changes_action"> | ||
182 | 455 | <field name="name">Line Matching</field> | ||
183 | 456 | <field name="res_model">finance_price.track_changes</field> | ||
184 | 457 | <field name="view_type">form</field> | ||
185 | 458 | <field name="view_mode">tree,form</field> | ||
186 | 459 | <field name="context">{'display_move_line': True}</field> | ||
187 | 460 | </record> | ||
188 | 461 | <menuitem name="Line Matching" action="finance_price_track_changes_action" id="finance_price_track_changes_menu" parent="menu_hq" sequence="30"/> | ||
189 | 462 | |||
190 | 463 | <act_window | ||
191 | 464 | id="esc_line_to_finance_price_tc" | ||
192 | 465 | name="Matching" | ||
193 | 466 | src_model="esc.invoice.line" | ||
194 | 467 | res_model="finance_price.track_changes" | ||
195 | 468 | target="current" | ||
196 | 469 | view_type="form" | ||
197 | 470 | view_mode="tree" | ||
198 | 471 | context="{'display_move_line': True}" | ||
199 | 472 | domain="[('esc_invoice_line_id', 'in', active_ids)]" /> | ||
200 | 473 | |||
201 | 474 | <record id="esc_line_delete_action" model="ir.actions.server"> | ||
202 | 475 | <field name="name">Delete Selected draft entries</field> | ||
203 | 476 | <field name="model_id" ref="model_esc_invoice_line"/> | ||
204 | 477 | <field name="state">code</field> | ||
205 | 478 | <field name="code">action = obj.delete_action(context=context)</field> | ||
206 | 479 | </record> | ||
207 | 480 | |||
208 | 481 | <record id="esc_line_delete_menu" model="ir.values"> | ||
209 | 482 | <field name="key2">client_action_multi</field> | ||
210 | 483 | <field name="model">esc.invoice.line</field> | ||
211 | 484 | <field name="name">Delete Selected draft entries</field> | ||
212 | 485 | <field eval="'ir.actions.server,%d'%esc_line_delete_action" name="value"/> | ||
213 | 486 | <field eval="True" name="object"/> | ||
214 | 487 | </record> | ||
215 | 333 | 488 | ||
216 | 334 | </data> | 489 | </data> |
217 | 335 | </openerp> | 490 | </openerp> |
218 | 336 | 491 | ||
219 | === added file 'bin/addons/account_hq_entries/esc_invoice.py' | |||
220 | --- bin/addons/account_hq_entries/esc_invoice.py 1970-01-01 00:00:00 +0000 | |||
221 | +++ bin/addons/account_hq_entries/esc_invoice.py 2023-05-05 12:01:38 +0000 | |||
222 | @@ -0,0 +1,203 @@ | |||
223 | 1 | #!/usr/bin/env python | ||
224 | 2 | # -*- coding: utf-8 -*- | ||
225 | 3 | |||
226 | 4 | from osv import osv | ||
227 | 5 | from osv import fields | ||
228 | 6 | import decimal_precision as dp | ||
229 | 7 | from tools.translate import _ | ||
230 | 8 | |||
231 | 9 | |||
232 | 10 | class esc_invoice_line(osv.osv): | ||
233 | 11 | _name = 'esc.invoice.line' | ||
234 | 12 | _description = 'International Invoices Line' | ||
235 | 13 | _rec_name = 'po_name' | ||
236 | 14 | _order = 'id desc' | ||
237 | 15 | _sync_order = 'id' | ||
238 | 16 | _trace = True | ||
239 | 17 | |||
240 | 18 | def _auto_init(self, cr, context=None): | ||
241 | 19 | super(esc_invoice_line, self)._auto_init(cr, context) | ||
242 | 20 | if not cr.index_exists('esc_invoice_line', 'esc_invoice_line_line_unique_all_field_idx'): | ||
243 | 21 | cr.execute("CREATE UNIQUE INDEX esc_invoice_line_line_unique_all_field_idx ON esc_invoice_line (po_name,requestor_cc_id,coalesce(consignee_cc_id, 0),product_id,product_qty,price_unit,coalesce(shipment_ref,''),currency_id)") | ||
244 | 22 | |||
245 | 23 | |||
246 | 24 | def _get_dest_instance_id(self, cr, uid, ids, field_name, args, context=None): | ||
247 | 25 | res = {} | ||
248 | 26 | cur_instance = self.pool.get('res.company')._get_instance_record(cr, uid) | ||
249 | 27 | if cur_instance.level != 'section': | ||
250 | 28 | hq_id = cur_instance.parent_id.parent_id and cur_instance.parent_id.parent_id.id or cur_instance.parent_id.id or False | ||
251 | 29 | for _id in ids: | ||
252 | 30 | res[_id] = hq_id | ||
253 | 31 | return res | ||
254 | 32 | |||
255 | 33 | for esc_line in self.browse(cr, uid, ids, fields_to_fetch=['requestor_cc_id', 'consignee_cc_id'], context=context): | ||
256 | 34 | cc = esc_line.consignee_cc_id or esc_line.requestor_cc_id | ||
257 | 35 | res[esc_line.id] = cc.po_fo_cc_instance_ids and cc.po_fo_cc_instance_ids[0].id or False | ||
258 | 36 | return res | ||
259 | 37 | |||
260 | 38 | def _get_in_number(self, cr, uid, ids, field_name, args, context=None): | ||
261 | 39 | res = {} | ||
262 | 40 | if not ids: | ||
263 | 41 | return {} | ||
264 | 42 | |||
265 | 43 | for _id in ids: | ||
266 | 44 | res[_id] = False | ||
267 | 45 | |||
268 | 46 | cr.execute(''' | ||
269 | 47 | select | ||
270 | 48 | tc.esc_invoice_line_id, string_agg(distinct(pick.name),' ' order by pick.name) | ||
271 | 49 | from | ||
272 | 50 | finance_price_track_changes tc, stock_move m, stock_picking pick | ||
273 | 51 | where | ||
274 | 52 | m.id = tc.stock_move_id | ||
275 | 53 | and m.picking_id = pick.id | ||
276 | 54 | and tc.esc_invoice_line_id in %s | ||
277 | 55 | group by | ||
278 | 56 | tc.esc_invoice_line_id | ||
279 | 57 | ''', (tuple(ids), )) | ||
280 | 58 | for x in cr.fetchall(): | ||
281 | 59 | res[x[0]] = x[1] | ||
282 | 60 | return res | ||
283 | 61 | |||
284 | 62 | _columns = { | ||
285 | 63 | 'po_name': fields.char('PO Reference', size=64, required=1, select=1), | ||
286 | 64 | 'requestor_cc_id': fields.many2one('account.analytic.account', 'Requestor Cost Center', required=1, domain="[('category','=', 'OC'), ('type', '!=', 'view')]"), | ||
287 | 65 | 'consignee_cc_id': fields.many2one('account.analytic.account', 'Consignee Cost Center', domain="[('category','=', 'OC'), ('type', '!=', 'view')]"), | ||
288 | 66 | 'imported_consignee_instance': fields.char('Consignee Instance', size=128), | ||
289 | 67 | 'dest_instance_id': fields.function(_get_dest_instance_id, method=1, type='many2one', relation='msf.instance', string='Destination Instance'), | ||
290 | 68 | 'product_id': fields.many2one('product.product', 'Product', required=1, select=1), | ||
291 | 69 | 'price_unit': fields.float('Unit Price', required=1, digits_compute=dp.get_precision('Purchase Price Computation')), | ||
292 | 70 | 'product_qty': fields.float('Quantity', required=True, digits=(16, 2), related_uom='uom_id'), | ||
293 | 71 | 'remaining_qty': fields.float('Remaining Quantity', digits=(16, 2), readonly=1, related_uom='uom_id'), | ||
294 | 72 | 'uom_id': fields.many2one('product.uom', 'UoM'), | ||
295 | 73 | 'currency_id': fields.many2one('res.currency', 'Currency', required=1), | ||
296 | 74 | 'shipment_ref': fields.char('Field mapping with IN', size=128), | ||
297 | 75 | |||
298 | 76 | 'in_number': fields.function(_get_in_number, type='char', method=True, string='IN Number'), | ||
299 | 77 | 'state': fields.selection([('1_draft', 'Draft'), ('0_open', 'Open'), ('done', 'Done')], 'State', readonly=1), | ||
300 | 78 | |||
301 | 79 | } | ||
302 | 80 | |||
303 | 81 | _defaults = { | ||
304 | 82 | 'state': '1_draft', | ||
305 | 83 | } | ||
306 | 84 | |||
307 | 85 | |||
308 | 86 | _sql_constraints = [ | ||
309 | 87 | ('product_qty', 'check(product_qty>0)', 'Quantity must be greater than 0.'), | ||
310 | 88 | ] | ||
311 | 89 | |||
312 | 90 | |||
313 | 91 | def _update_remaining(self, cr, uid, ids, vals, context=None): | ||
314 | 92 | if not ids: | ||
315 | 93 | return | ||
316 | 94 | if isinstance(ids, (int, long)): | ||
317 | 95 | ids = [ids] | ||
318 | 96 | if 'product_qty' in vals and vals.get('state', '1_draft') == '1_draft': | ||
319 | 97 | cr.execute("update esc_invoice_line set remaining_qty=product_qty where state='1_draft' and id in %s", (tuple(ids), )) | ||
320 | 98 | |||
321 | 99 | |||
322 | 100 | def write(self, cr, uid, ids, vals, context=None): | ||
323 | 101 | ret = super(esc_invoice_line, self).write(cr, uid, ids, vals, context) | ||
324 | 102 | self._update_remaining(cr, uid, ids, vals, context) | ||
325 | 103 | return ret | ||
326 | 104 | |||
327 | 105 | def create(self, cr, uid, vals, context=None): | ||
328 | 106 | new_id = super(esc_invoice_line, self).create(cr, uid, vals, context) | ||
329 | 107 | self._update_remaining(cr, uid, [new_id], vals, context) | ||
330 | 108 | return new_id | ||
331 | 109 | |||
332 | 110 | def delete_action(self, cr, uid, ids, context=None): | ||
333 | 111 | if not context: | ||
334 | 112 | context = {} | ||
335 | 113 | active_ids = context.get('active_ids') | ||
336 | 114 | self.delete(cr, uid, active_ids, context=context) | ||
337 | 115 | return {'type': 'ir.actions.refresh_o2m', 'o2m_refresh': '_terp_list'} | ||
338 | 116 | |||
339 | 117 | def delete(self, cr, uid, ids, context=None): | ||
340 | 118 | to_del_ids = self.search(cr, uid, [('id', 'in', ids), ('state', '=', '1_draft')], context=context) | ||
341 | 119 | if to_del_ids: | ||
342 | 120 | self.unlink(cr, uid, to_del_ids, context=context) | ||
343 | 121 | return True | ||
344 | 122 | |||
345 | 123 | |||
346 | 124 | |||
347 | 125 | esc_invoice_line() | ||
348 | 126 | |||
349 | 127 | class finance_price_track_changes(osv.osv): | ||
350 | 128 | _name = 'finance_price.track_changes' | ||
351 | 129 | _rec_name = 'product_id' | ||
352 | 130 | _description = 'International Invoices Lines Matching' | ||
353 | 131 | _order = 'id desc' | ||
354 | 132 | |||
355 | 133 | _columns = { | ||
356 | 134 | 'product_id': fields.many2one('product.product', string='Product', required=True, readonly=True, ondelete='cascade', select=1), | ||
357 | 135 | 'old_price': fields.float(string='Previous Finance Price', digits_compute=dp.get_precision('Purchase Price Computation'), required=False, readonly=True), | ||
358 | 136 | 'new_price': fields.float(string='New Finance Price', digits_compute=dp.get_precision('Purchase Price Computation'), required=False, readonly=True), | ||
359 | 137 | 'user_id': fields.many2one('res.users', 'User', readonly=True), | ||
360 | 138 | 'date': fields.datetime('Date', readonly=True), | ||
361 | 139 | 'qty_processed': fields.float('Quantity Processed', readonly=True, digits=(16, 2)), | ||
362 | 140 | 'price_unit': fields.float('Unit Price', required=1, digits_compute=dp.get_precision('Purchase Price Computation'), readonly=True), | ||
363 | 141 | 'stock_before': fields.float('Qty in Stock Before', readonly=True, digits=(16, 2)), | ||
364 | 142 | 'matching_type': fields.selection([('iil', 'International Lines'), ('po', 'PO'), ('invoice', 'Invoice')], 'Matching Type', readonly=True), | ||
365 | 143 | |||
366 | 144 | 'stock_move_id': fields.many2one('stock.move', 'Move line', readonly=True), | ||
367 | 145 | 'stock_picking_id': fields.related('stock_move_id', 'picking_id', string='IN', type='many2one', relation='stock.picking', readonly=True, domain="[('type', '=', 'in'), ('state', '=', 'done')]"), | ||
368 | 146 | |||
369 | 147 | 'invoice_id': fields.many2one('account.invoice', 'Invoice', readonly=True), | ||
370 | 148 | 'invoice_line_id': fields.many2one('account.invoice.line', 'Invoice Line', readonly=True), | ||
371 | 149 | |||
372 | 150 | 'purchase_oder_line_id': fields.many2one('purchase.order.line', 'PO line', readonly=True), | ||
373 | 151 | |||
374 | 152 | 'esc_invoice_line_id': fields.many2one('esc.invoice.line', 'International Line', readonly=True), | ||
375 | 153 | 'comment': fields.char('Comment', size=256), | ||
376 | 154 | } | ||
377 | 155 | |||
378 | 156 | _defaults = { | ||
379 | 157 | 'user_id': lambda self, cr, uid, *a, **b: hasattr(uid, 'realUid') and uid.realUid or uid, | ||
380 | 158 | 'date': lambda *a: fields.datetime.now(), | ||
381 | 159 | } | ||
382 | 160 | |||
383 | 161 | finance_price_track_changes() | ||
384 | 162 | |||
385 | 163 | class esc_line_setup(osv.osv_memory): | ||
386 | 164 | _name = 'esc_line.setup' | ||
387 | 165 | _inherit = 'res.config' | ||
388 | 166 | |||
389 | 167 | _columns = { | ||
390 | 168 | 'esc_line': fields.boolean(string='Activate International Invoices Lines ?'), | ||
391 | 169 | } | ||
392 | 170 | |||
393 | 171 | def default_get(self, cr, uid, fields, context=None, from_web=False): | ||
394 | 172 | """ | ||
395 | 173 | """ | ||
396 | 174 | if context is None: | ||
397 | 175 | context = {} | ||
398 | 176 | setup = self.pool.get('unifield.setup.configuration').get_config(cr, uid) | ||
399 | 177 | res = super(esc_line_setup, self).default_get(cr, uid, fields, context=context, from_web=from_web) | ||
400 | 178 | res['esc_line'] = setup.esc_line | ||
401 | 179 | return res | ||
402 | 180 | |||
403 | 181 | def execute(self, cr, uid, ids, context=None): | ||
404 | 182 | if context is None: | ||
405 | 183 | context = {} | ||
406 | 184 | if not isinstance(ids, list) or len(ids) != 1: | ||
407 | 185 | raise osv.except_osv(_('Error'), _('An error has occurred with the item retrieved from the form. Please contact an administrator if the problem persists.')) | ||
408 | 186 | wiz = self.browse(cr, uid, ids[0], fields_to_fetch=['esc_line'], context=context) | ||
409 | 187 | setup_obj = self.pool.get('unifield.setup.configuration') | ||
410 | 188 | setup = setup_obj.get_config(cr, uid) | ||
411 | 189 | if setup: | ||
412 | 190 | for module, xmlid in [('account_hq_entries', 'finance_price_track_changes_menu'), ('account_hq_entries', 'esc_invoice_line_menu'), ('account_hq_entries', 'esc_line_import_menu')]: | ||
413 | 191 | menu_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, module, xmlid)[1] | ||
414 | 192 | self.pool.get('ir.ui.menu').write(cr, uid, menu_id, {'active': wiz.esc_line}, context=context) | ||
415 | 193 | report_fin_price_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account_hq_entries', 'report_finance_cost_price')[1] | ||
416 | 194 | ir_value_id = self.pool.get('ir.values').search(cr, uid, [('key', '=', 'action'), ('key2', '=', 'client_print_multi'), ('model', '=', 'product.product'), ('value', '=', 'ir.actions.report.xml,%d'%report_fin_price_id)], context=context) | ||
417 | 195 | if ir_value_id: | ||
418 | 196 | user_id = False | ||
419 | 197 | if not wiz.esc_line: | ||
420 | 198 | user_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'base', 'user_sync')[1] | ||
421 | 199 | self.pool.get('ir.values').write(cr, uid, ir_value_id, {'user_id': user_id}, context=context) | ||
422 | 200 | |||
423 | 201 | setup_obj.write(cr, uid, [setup.id], {'esc_line': wiz.esc_line}, context=context) | ||
424 | 202 | |||
425 | 203 | esc_line_setup() | ||
426 | 0 | 204 | ||
427 | === added file 'bin/addons/account_hq_entries/esc_line_installer.xml' | |||
428 | --- bin/addons/account_hq_entries/esc_line_installer.xml 1970-01-01 00:00:00 +0000 | |||
429 | +++ bin/addons/account_hq_entries/esc_line_installer.xml 2023-05-05 12:01:38 +0000 | |||
430 | @@ -0,0 +1,48 @@ | |||
431 | 1 | <openerp> | ||
432 | 2 | <data> | ||
433 | 3 | <record id="view_esc_line_setup" model="ir.ui.view"> | ||
434 | 4 | <field name="name">International Invoices Lines</field> | ||
435 | 5 | <field name="model">esc_line.setup</field> | ||
436 | 6 | <field name="type">form</field> | ||
437 | 7 | <field name="inherit_id" ref="base.res_config_view_base"/> | ||
438 | 8 | <field name="arch" type="xml"> | ||
439 | 9 | <data> | ||
440 | 10 | <form position="attributes"> | ||
441 | 11 | <attribute name="string">Activate International Invoices Lines</attribute> | ||
442 | 12 | </form> | ||
443 | 13 | <xpath expr="//label[@string='description']" position="attributes"> | ||
444 | 14 | <attribute name="string"></attribute> | ||
445 | 15 | </xpath> | ||
446 | 16 | <xpath expr='//separator[@string="title"]' position='attributes'> | ||
447 | 17 | <attribute name='string'>Activate International Invoices Lines</attribute> | ||
448 | 18 | </xpath> | ||
449 | 19 | <xpath expr='//separator[@string="vsep"]' position='attributes'> | ||
450 | 20 | <attribute name='rowspan'>25</attribute> | ||
451 | 21 | <attribute name='string'></attribute> | ||
452 | 22 | </xpath> | ||
453 | 23 | <group string="res_config_contents" position="replace"> | ||
454 | 24 | <group colspan="5"> | ||
455 | 25 | <field name="esc_line" /> | ||
456 | 26 | </group> | ||
457 | 27 | </group> | ||
458 | 28 | </data> | ||
459 | 29 | </field> | ||
460 | 30 | </record> | ||
461 | 31 | |||
462 | 32 | <record id="action_esc_line_setup" model="ir.actions.act_window"> | ||
463 | 33 | <field name="name">Activate International Invoices Lines</field> | ||
464 | 34 | <field name="type">ir.actions.act_window</field> | ||
465 | 35 | <field name="res_model">esc_line.setup</field> | ||
466 | 36 | <field name="view_id" ref="view_esc_line_setup"/> | ||
467 | 37 | <field name="view_type">form</field> | ||
468 | 38 | <field name="view_mode">form</field> | ||
469 | 39 | <field name="target">new</field> | ||
470 | 40 | </record> | ||
471 | 41 | |||
472 | 42 | <record id="esc_line_setup_todo" model="ir.actions.todo"> | ||
473 | 43 | <field name="action_id" ref="action_esc_line_setup"/> | ||
474 | 44 | <field name="sequence">16</field> | ||
475 | 45 | <field name="restart">always</field> | ||
476 | 46 | </record> | ||
477 | 47 | </data> | ||
478 | 48 | </openerp> | ||
479 | 0 | 49 | ||
480 | === added file 'bin/addons/account_hq_entries/esc_line_report.xml' | |||
481 | --- bin/addons/account_hq_entries/esc_line_report.xml 1970-01-01 00:00:00 +0000 | |||
482 | +++ bin/addons/account_hq_entries/esc_line_report.xml 2023-05-05 12:01:38 +0000 | |||
483 | @@ -0,0 +1,42 @@ | |||
484 | 1 | <?xml version="1.0" encoding="utf-8" ?> | ||
485 | 2 | <openerp> | ||
486 | 3 | <data> | ||
487 | 4 | |||
488 | 5 | <report | ||
489 | 6 | id="report_finance_cost_price" | ||
490 | 7 | string="Track Changes Finance Price" | ||
491 | 8 | model="product.product" | ||
492 | 9 | name="report_finance_cost_price" | ||
493 | 10 | report_type="openpyxl" | ||
494 | 11 | header="False" | ||
495 | 12 | auto="False" | ||
496 | 13 | menu="True" | ||
497 | 14 | sequence="110" | ||
498 | 15 | /> | ||
499 | 16 | |||
500 | 17 | |||
501 | 18 | <report | ||
502 | 19 | id="esc_line_import_template" | ||
503 | 20 | string="International Invoices Lines Template" | ||
504 | 21 | model="esc.line.import" | ||
505 | 22 | name="esc_line_import_template" | ||
506 | 23 | file="account_hq_entries/report/esc_line_import_template.mako" | ||
507 | 24 | report_type="webkit" | ||
508 | 25 | header="False" | ||
509 | 26 | auto="False" | ||
510 | 27 | menu="False" | ||
511 | 28 | /> | ||
512 | 29 | |||
513 | 30 | <report | ||
514 | 31 | id="esc_line_import_rejected" | ||
515 | 32 | string="International Invoices Rejected Lines" | ||
516 | 33 | model="esc.line.import" | ||
517 | 34 | name="esc_line_import_rejected" | ||
518 | 35 | file="account_hq_entries/report/esc_line_import_template.mako" | ||
519 | 36 | report_type="webkit" | ||
520 | 37 | header="False" | ||
521 | 38 | auto="False" | ||
522 | 39 | menu="False" | ||
523 | 40 | /> | ||
524 | 41 | </data> | ||
525 | 42 | </openerp> | ||
526 | 0 | 43 | ||
527 | === modified file 'bin/addons/account_hq_entries/hq_entries.py' | |||
528 | --- bin/addons/account_hq_entries/hq_entries.py 2022-10-13 08:11:44 +0000 | |||
529 | +++ bin/addons/account_hq_entries/hq_entries.py 2023-05-05 12:01:38 +0000 | |||
530 | @@ -4,7 +4,6 @@ | |||
531 | 4 | # | 4 | # |
532 | 5 | # OpenERP, Open Source Management Solution | 5 | # OpenERP, Open Source Management Solution |
533 | 6 | # Copyright (C) 2011 TeMPO Consulting, MSF. All Rights Reserved | 6 | # Copyright (C) 2011 TeMPO Consulting, MSF. All Rights Reserved |
534 | 7 | # Developer: Olivier DOSSMANN | ||
535 | 8 | # | 7 | # |
536 | 9 | # This program is free software: you can redistribute it and/or modify | 8 | # This program is free software: you can redistribute it and/or modify |
537 | 10 | # it under the terms of the GNU Affero General Public License as | 9 | # it under the terms of the GNU Affero General Public License as |
538 | 11 | 10 | ||
539 | === added directory 'bin/addons/account_hq_entries/report' | |||
540 | === added file 'bin/addons/account_hq_entries/report/__init__.py' | |||
541 | --- bin/addons/account_hq_entries/report/__init__.py 1970-01-01 00:00:00 +0000 | |||
542 | +++ bin/addons/account_hq_entries/report/__init__.py 2023-05-05 12:01:38 +0000 | |||
543 | @@ -0,0 +1,2 @@ | |||
544 | 1 | import finance_cost_price | ||
545 | 2 | import esc_line_import_report | ||
546 | 0 | 3 | ||
547 | === added file 'bin/addons/account_hq_entries/report/esc_line_import_report.py' | |||
548 | --- bin/addons/account_hq_entries/report/esc_line_import_report.py 1970-01-01 00:00:00 +0000 | |||
549 | +++ bin/addons/account_hq_entries/report/esc_line_import_report.py 2023-05-05 12:01:38 +0000 | |||
550 | @@ -0,0 +1,45 @@ | |||
551 | 1 | # -*- coding: utf-8 -*- | ||
552 | 2 | from report import report_sxw | ||
553 | 3 | from spreadsheet_xml.spreadsheet_xml_write import SpreadsheetReport | ||
554 | 4 | from tools.safe_eval import safe_eval | ||
555 | 5 | |||
556 | 6 | class ErrorLine(report_sxw.rml_parse): | ||
557 | 7 | |||
558 | 8 | def __init__(self, cr, uid, name, context): | ||
559 | 9 | super(ErrorLine, self).__init__(cr, uid, name, context=context) | ||
560 | 10 | self.localcontext.update({ | ||
561 | 11 | 'get_row': self.get_row, | ||
562 | 12 | 'with_error': lambda *a: True, | ||
563 | 13 | }) | ||
564 | 14 | |||
565 | 15 | def get_row(self, obj_id): | ||
566 | 16 | rej_obj = self.pool.get('esc.line.import.rejected') | ||
567 | 17 | |||
568 | 18 | limit = 500 | ||
569 | 19 | offset = 0 | ||
570 | 20 | while True: | ||
571 | 21 | ids = rej_obj.search(self.cr, self.uid, [('wiz_id', '=', obj_id)], offset=offset, limit=limit) | ||
572 | 22 | offset += limit | ||
573 | 23 | if not ids: | ||
574 | 24 | raise StopIteration | ||
575 | 25 | |||
576 | 26 | for x in rej_obj.browse(self.cr, self.uid, ids): | ||
577 | 27 | rows = safe_eval(x.xls_row) | ||
578 | 28 | yield rows, x.error | ||
579 | 29 | |||
580 | 30 | if len(ids) < limit: | ||
581 | 31 | raise StopIteration | ||
582 | 32 | |||
583 | 33 | SpreadsheetReport('report.esc_line_import_rejected', 'esc.line.import', 'account_hq_entries/report/esc_line_import_template.mako', parser=ErrorLine) | ||
584 | 34 | |||
585 | 35 | |||
586 | 36 | class Template(report_sxw.rml_parse): | ||
587 | 37 | def __init__(self, cr, uid, name, context): | ||
588 | 38 | super(Template, self).__init__(cr, uid, name, context=context) | ||
589 | 39 | self.localcontext.update({ | ||
590 | 40 | 'get_row': lambda *a, **b: [], | ||
591 | 41 | 'with_error': lambda *a: False, | ||
592 | 42 | }) | ||
593 | 43 | |||
594 | 44 | SpreadsheetReport('report.esc_line_import_template', 'esc.line.import', 'account_hq_entries/report/esc_line_import_template.mako', parser=Template) | ||
595 | 45 | |||
596 | 0 | 46 | ||
597 | === added file 'bin/addons/account_hq_entries/report/esc_line_import_template.mako' | |||
598 | --- bin/addons/account_hq_entries/report/esc_line_import_template.mako 1970-01-01 00:00:00 +0000 | |||
599 | +++ bin/addons/account_hq_entries/report/esc_line_import_template.mako 2023-05-05 12:01:38 +0000 | |||
600 | @@ -0,0 +1,111 @@ | |||
601 | 1 | <?xml version="1.0"?> | ||
602 | 2 | <?mso-application progid="Excel.Sheet"?> | ||
603 | 3 | <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" | ||
604 | 4 | xmlns:o="urn:schemas-microsoft-com:office:office" | ||
605 | 5 | xmlns:x="urn:schemas-microsoft-com:office:excel" | ||
606 | 6 | xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" | ||
607 | 7 | xmlns:html="http://www.w3.org/TR/REC-html40"> | ||
608 | 8 | <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> | ||
609 | 9 | <Author>MSFUser</Author> | ||
610 | 10 | <LastAuthor>Loic MANGERET</LastAuthor> | ||
611 | 11 | <Created>2012-06-18T15:46:09Z</Created> | ||
612 | 12 | <LastSaved>2023-03-24T14:45:03Z</LastSaved> | ||
613 | 13 | <Company>Medecins Sans Frontieres</Company> | ||
614 | 14 | <Version>16.00</Version> | ||
615 | 15 | </DocumentProperties> | ||
616 | 16 | <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"> | ||
617 | 17 | <AllowPNG/> | ||
618 | 18 | </OfficeDocumentSettings> | ||
619 | 19 | <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> | ||
620 | 20 | <WindowHeight>7910</WindowHeight> | ||
621 | 21 | <WindowWidth>19200</WindowWidth> | ||
622 | 22 | <WindowTopX>32767</WindowTopX> | ||
623 | 23 | <WindowTopY>32767</WindowTopY> | ||
624 | 24 | <ProtectStructure>False</ProtectStructure> | ||
625 | 25 | <ProtectWindows>False</ProtectWindows> | ||
626 | 26 | </ExcelWorkbook> | ||
627 | 27 | <Styles> | ||
628 | 28 | <Style ss:ID="Default" ss:Name="Normal"> | ||
629 | 29 | <Alignment ss:Vertical="Bottom"/> | ||
630 | 30 | <Borders/> | ||
631 | 31 | <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> | ||
632 | 32 | <Interior/> | ||
633 | 33 | <NumberFormat/> | ||
634 | 34 | <Protection/> | ||
635 | 35 | </Style> | ||
636 | 36 | <Style ss:ID="s62"> | ||
637 | 37 | <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/> | ||
638 | 38 | <Borders/> | ||
639 | 39 | <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/> | ||
640 | 40 | <Interior/> | ||
641 | 41 | <NumberFormat/> | ||
642 | 42 | <Protection ss:Protected="0"/> | ||
643 | 43 | </Style> | ||
644 | 44 | <Style ss:ID="s63"> | ||
645 | 45 | <Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/> | ||
646 | 46 | <Borders/> | ||
647 | 47 | <Font ss:FontName="Arial" ss:Color="#000000" ss:Bold="1"/> | ||
648 | 48 | <Interior ss:Color="#FFCC99" ss:Pattern="Solid"/> | ||
649 | 49 | <NumberFormat/> | ||
650 | 50 | <Protection/> | ||
651 | 51 | </Style> | ||
652 | 52 | </Styles> | ||
653 | 53 | <Worksheet ss:Name="Sheet 1"> | ||
654 | 54 | <Table x:FullColumns="1" | ||
655 | 55 | x:FullRows="1" ss:DefaultRowHeight="14.5"> | ||
656 | 56 | <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="149"/> | ||
657 | 57 | <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="145" ss:Span="1"/> | ||
658 | 58 | <Column ss:Index="4" ss:StyleID="s62" ss:Width="173" ss:Span="1"/> | ||
659 | 59 | <Column ss:Index="6" ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="216.5"/> | ||
660 | 60 | <Column ss:StyleID="s62" ss:Width="73"/> | ||
661 | 61 | <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="120"/> | ||
662 | 62 | % if with_error(): | ||
663 | 63 | <Column ss:StyleID="s62" ss:AutoFitWidth="0" ss:Width="216"/> | ||
664 | 64 | % endif | ||
665 | 65 | <Row ss:AutoFitHeight="0" ss:Height="26.5"> | ||
666 | 66 | <Cell ss:StyleID="s63"><Data ss:Type="String">Order Reference</Data></Cell> | ||
667 | 67 | <Cell ss:StyleID="s63"><Data ss:Type="String">Requestor instance reference/Cost Center</Data></Cell> | ||
668 | 68 | <Cell ss:StyleID="s63"><Data ss:Type="String">Consignee UF instance/reference</Data></Cell> | ||
669 | 69 | <Cell ss:StyleID="s63"><Data ss:Type="String">Product Code / Item code</Data></Cell> | ||
670 | 70 | <Cell ss:StyleID="s63"><Data ss:Type="String">Quantities</Data></Cell> | ||
671 | 71 | <Cell ss:StyleID="s63"><Data ss:Type="String">Unit Price</Data></Cell> | ||
672 | 72 | <Cell ss:StyleID="s63"><Data ss:Type="String">Currency</Data></Cell> | ||
673 | 73 | <Cell ss:StyleID="s63"><Data ss:Type="String">Field mapping with IN</Data></Cell> | ||
674 | 74 | % if with_error(): | ||
675 | 75 | <Cell ss:StyleID="s63"><Data ss:Type="String">Error</Data></Cell> | ||
676 | 76 | % endif | ||
677 | 77 | </Row> | ||
678 | 78 | % for rows in get_row(objects[0].id): | ||
679 | 79 | <Row> | ||
680 | 80 | % for cell in rows[0]: | ||
681 | 81 | <Cell> | ||
682 | 82 | % if cell['type'] in ('float', 'int') and cell['data']: | ||
683 | 83 | <Data ss:Type="Number">${cell['data'] or ''}</Data> | ||
684 | 84 | % else: | ||
685 | 85 | <Data ss:Type="String">${cell['data'] or ''}</Data> | ||
686 | 86 | % endif | ||
687 | 87 | </Cell> | ||
688 | 88 | % endfor | ||
689 | 89 | % for num in range(len(rows[0]), 8): | ||
690 | 90 | <Cell /> | ||
691 | 91 | % endfor | ||
692 | 92 | <Cell><Data ss:Type="String">${rows[1]}</Data></Cell> | ||
693 | 93 | </Row> | ||
694 | 94 | % endfor | ||
695 | 95 | </Table> | ||
696 | 96 | <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"> | ||
697 | 97 | <Unsynced/> | ||
698 | 98 | <Selected/> | ||
699 | 99 | <Panes> | ||
700 | 100 | <Pane> | ||
701 | 101 | <Number>3</Number> | ||
702 | 102 | <ActiveCol>4</ActiveCol> | ||
703 | 103 | </Pane> | ||
704 | 104 | </Panes> | ||
705 | 105 | <ProtectObjects>False</ProtectObjects> | ||
706 | 106 | <ProtectScenarios>False</ProtectScenarios> | ||
707 | 107 | <EnableSelection>UnlockedCells</EnableSelection> | ||
708 | 108 | <AllowInsertRows/> | ||
709 | 109 | </WorksheetOptions> | ||
710 | 110 | </Worksheet> | ||
711 | 111 | </Workbook> | ||
712 | 0 | 112 | ||
713 | === added file 'bin/addons/account_hq_entries/report/finance_cost_price.py' | |||
714 | --- bin/addons/account_hq_entries/report/finance_cost_price.py 1970-01-01 00:00:00 +0000 | |||
715 | +++ bin/addons/account_hq_entries/report/finance_cost_price.py 2023-05-05 12:01:38 +0000 | |||
716 | @@ -0,0 +1,104 @@ | |||
717 | 1 | # -*- coding: utf-8 -*- | ||
718 | 2 | from spreadsheet_xml.xlsx_write import XlsxReport | ||
719 | 3 | from spreadsheet_xml.xlsx_write import XlsxReportParser | ||
720 | 4 | from datetime import datetime | ||
721 | 5 | from tools.translate import _ | ||
722 | 6 | |||
723 | 7 | |||
724 | 8 | class finance_cost_price(XlsxReportParser): | ||
725 | 9 | |||
726 | 10 | def generate(self, context=None): | ||
727 | 11 | if context is None: | ||
728 | 12 | context = {} | ||
729 | 13 | |||
730 | 14 | sheet = self.workbook.active | ||
731 | 15 | |||
732 | 16 | self.create_style_from_template('head_title', 'A1') | ||
733 | 17 | self.create_style_from_template('head_content', 'C1') | ||
734 | 18 | self.create_style_from_template('date_content', 'C5') | ||
735 | 19 | |||
736 | 20 | self.create_style_from_template('row_title', 'A7') | ||
737 | 21 | |||
738 | 22 | date_st = [ | ||
739 | 23 | self.create_style_from_template('date_odd', 'A8'), | ||
740 | 24 | self.create_style_from_template('date_even', 'A9') | ||
741 | 25 | ] | ||
742 | 26 | |||
743 | 27 | txt_st = [ | ||
744 | 28 | self.create_style_from_template('txt_odd', 'B8'), | ||
745 | 29 | self.create_style_from_template('txt_even', 'B9') | ||
746 | 30 | ] | ||
747 | 31 | |||
748 | 32 | float_st = [ | ||
749 | 33 | self.create_style_from_template('float_odd', 'G8'), | ||
750 | 34 | self.create_style_from_template('float_even', 'G9') | ||
751 | 35 | ] | ||
752 | 36 | |||
753 | 37 | |||
754 | 38 | self.duplicate_column_dimensions(default_width=20.43) | ||
755 | 39 | sheet.freeze_panes = 'A8' | ||
756 | 40 | |||
757 | 41 | |||
758 | 42 | prod = self.pool.get('product.product').browse(self.cr, self.uid, self.ids[0], fields_to_fetch=['default_code', 'name', 'company_id'], context=context) | ||
759 | 43 | sheet.title = prod.default_code | ||
760 | 44 | |||
761 | 45 | sheet.merged_cells.ranges.append("A1:B1") | ||
762 | 46 | sheet.merged_cells.ranges.append("C1:F1") | ||
763 | 47 | sheet.append([self.cell_ro(_('Instance'), 'head_title'), self.cell_ro('', 'head_title'), self.cell_ro(prod.company_id.instance_id.instance, 'head_content')] + [self.cell_ro('', 'head_content')]*3) | ||
764 | 48 | |||
765 | 49 | sheet.merged_cells.ranges.append("A2:B2") | ||
766 | 50 | sheet.merged_cells.ranges.append("C2:F2") | ||
767 | 51 | sheet.append([self.cell_ro(_('Product code'), 'head_title'), self.cell_ro('', 'head_title'), self.cell_ro(prod.default_code, 'head_content')] + [self.cell_ro('', 'head_content')]*3) | ||
768 | 52 | |||
769 | 53 | sheet.merged_cells.ranges.append("A3:B3") | ||
770 | 54 | sheet.merged_cells.ranges.append("C3:F3") | ||
771 | 55 | sheet.append([self.cell_ro(_('Product Description'), 'head_title'), self.cell_ro('', 'head_title'), self.cell_ro(prod.name, 'head_content')] + [self.cell_ro('', 'head_content')]*3) | ||
772 | 56 | |||
773 | 57 | sheet.merged_cells.ranges.append("A4:B4") | ||
774 | 58 | sheet.merged_cells.ranges.append("C4:F4") | ||
775 | 59 | sheet.append([self.cell_ro(_('Currency'), 'head_title'), self.cell_ro('', 'head_title'), self.cell_ro(prod.company_id.currency_id.name, 'head_content')] + [self.cell_ro('', 'head_content')]*3) | ||
776 | 60 | |||
777 | 61 | sheet.merged_cells.ranges.append("A5:B5") | ||
778 | 62 | sheet.merged_cells.ranges.append("C5:F5") | ||
779 | 63 | sheet.append([self.cell_ro(_('Generation Date'), 'head_title'), self.cell_ro('', 'head_title'), self.cell_ro(datetime.now(), 'date_content')] + [self.cell_ro('', 'head_content')]*3) | ||
780 | 64 | |||
781 | 65 | sheet.append([]) | ||
782 | 66 | |||
783 | 67 | sheet.append([ | ||
784 | 68 | self.cell_ro(_('Date'), 'row_title'), | ||
785 | 69 | self.cell_ro(_('User'), 'row_title'), | ||
786 | 70 | self.cell_ro(_('Old Finance Price'), 'row_title'), | ||
787 | 71 | self.cell_ro(_('New Finance Price'), 'row_title'), | ||
788 | 72 | self.cell_ro(_('Transaction'), 'row_title'), | ||
789 | 73 | self.cell_ro(_('Stock Level Before'), 'row_title'), | ||
790 | 74 | self.cell_ro(_('Qty Processed'), 'row_title'), | ||
791 | 75 | self.cell_ro(_('Unit Price'), 'row_title'), | ||
792 | 76 | self.cell_ro(_('Matching Type'), 'row_title'), | ||
793 | 77 | ]) | ||
794 | 78 | |||
795 | 79 | matching_obj = self.pool.get('finance_price.track_changes') | ||
796 | 80 | matching_ids = matching_obj.search(self.cr, self.uid, [('product_id', '=', prod.id)], order='id desc', context=context) | ||
797 | 81 | |||
798 | 82 | color = 1 | ||
799 | 83 | previous_in = 0 | ||
800 | 84 | for tc in matching_obj.browse(self.cr, self.uid, matching_ids, context=context): | ||
801 | 85 | if abs(tc.new_price - tc.old_price) < 0.0001: | ||
802 | 86 | continue | ||
803 | 87 | |||
804 | 88 | if previous_in != tc.stock_move_id.id: | ||
805 | 89 | previous_in = tc.stock_move_id.id | ||
806 | 90 | color = 1 - color | ||
807 | 91 | sheet.append([ | ||
808 | 92 | self.cell_ro(tc.date and datetime.strptime(tc.date, '%Y-%m-%d %H:%M:%S') or '', date_st[color]), | ||
809 | 93 | self.cell_ro(tc.user_id.name, txt_st[color]), | ||
810 | 94 | self.cell_ro(round(tc.old_price, 5), float_st[color]), | ||
811 | 95 | self.cell_ro(round(tc.new_price, 5), float_st[color]), | ||
812 | 96 | self.cell_ro(tc.stock_picking_id and tc.stock_picking_id.name or tc.invoice_id and tc.invoice_id.name or tc.comment or '', txt_st[color]), | ||
813 | 97 | self.cell_ro(tc.stock_before, float_st[color]), | ||
814 | 98 | self.cell_ro(tc.qty_processed, float_st[color]), | ||
815 | 99 | self.cell_ro(round(tc.price_unit, 5), float_st[color]), | ||
816 | 100 | self.cell_ro(self.getSel(tc, 'matching_type'), txt_st[color]), | ||
817 | 101 | ]) | ||
818 | 102 | |||
819 | 103 | XlsxReport('report.report_finance_cost_price', parser=finance_cost_price, template='addons/account_hq_entries/report/finance_cost_price.xlsx') | ||
820 | 104 | |||
821 | 0 | 105 | ||
822 | === added file 'bin/addons/account_hq_entries/report/finance_cost_price.xlsx' | |||
823 | 1 | Binary files bin/addons/account_hq_entries/report/finance_cost_price.xlsx and bin/addons/account_hq_entries/report/finance_cost_price.xlsx differ | 106 | Binary files bin/addons/account_hq_entries/report/finance_cost_price.xlsx and bin/addons/account_hq_entries/report/finance_cost_price.xlsx differ |
824 | === modified file 'bin/addons/account_hq_entries/wizard/__init__.py' | |||
825 | --- bin/addons/account_hq_entries/wizard/__init__.py 2013-11-19 10:37:31 +0000 | |||
826 | +++ bin/addons/account_hq_entries/wizard/__init__.py 2023-05-05 12:01:38 +0000 | |||
827 | @@ -26,4 +26,5 @@ | |||
828 | 26 | import hq_entries_validation | 26 | import hq_entries_validation |
829 | 27 | import hq_entries_split | 27 | import hq_entries_split |
830 | 28 | import hq_entries_unsplit | 28 | import hq_entries_unsplit |
831 | 29 | import esc_lines_import | ||
832 | 29 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: | 30 | # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: |
833 | 30 | 31 | ||
834 | === added file 'bin/addons/account_hq_entries/wizard/esc_lines_import.py' | |||
835 | --- bin/addons/account_hq_entries/wizard/esc_lines_import.py 1970-01-01 00:00:00 +0000 | |||
836 | +++ bin/addons/account_hq_entries/wizard/esc_lines_import.py 2023-05-05 12:01:38 +0000 | |||
837 | @@ -0,0 +1,351 @@ | |||
838 | 1 | #!/usr/bin/env python | ||
839 | 2 | # -*- coding: utf-8 -*- | ||
840 | 3 | from osv import osv | ||
841 | 4 | from osv import fields | ||
842 | 5 | from spreadsheet_xml.spreadsheet_xml import SpreadsheetXML | ||
843 | 6 | import threading | ||
844 | 7 | import pooler | ||
845 | 8 | import tools | ||
846 | 9 | from tools.translate import _ | ||
847 | 10 | import time | ||
848 | 11 | import base64 | ||
849 | 12 | import re | ||
850 | 13 | from psycopg2 import IntegrityError | ||
851 | 14 | |||
852 | 15 | |||
853 | 16 | class esc_line_import_rejected(osv.osv): | ||
854 | 17 | _name = 'esc.line.import.rejected' | ||
855 | 18 | _description = 'Rejected Lines' | ||
856 | 19 | _rec_name = 'wiz_id' | ||
857 | 20 | _order = 'wiz_id desc, id asc' | ||
858 | 21 | |||
859 | 22 | _columns = { | ||
860 | 23 | 'wiz_id': fields.many2one('esc.line.import', 'Import', required=1), | ||
861 | 24 | 'error': fields.text('Reason'), | ||
862 | 25 | 'xls_row': fields.text('Row'), | ||
863 | 26 | } | ||
864 | 27 | |||
865 | 28 | esc_line_import_rejected() | ||
866 | 29 | |||
867 | 30 | class esc_line_import_wizard(osv.osv): | ||
868 | 31 | _name = 'esc.line.import' | ||
869 | 32 | _description = 'Import International Invoices Lines' | ||
870 | 33 | _rec_name = 'start_date' | ||
871 | 34 | |||
872 | 35 | _columns = { | ||
873 | 36 | 'file': fields.binary(string="File"), | ||
874 | 37 | 'filename': fields.char(string="Imported filename", size=256), | ||
875 | 38 | 'progress': fields.integer(string="Progression", readonly=True), | ||
876 | 39 | 'state': fields.selection([('draft', 'Draft'), ('inprogress', 'In-progress'), ('error', 'Error'), ('done', 'Done'), ('ack', 'ack')],'State', readonly=1), | ||
877 | 40 | 'created': fields.integer('Processed', readonly=1), | ||
878 | 41 | 'total': fields.integer('Total', readonly=1), | ||
879 | 42 | 'nberrors': fields.integer('Errors', readonly=1), | ||
880 | 43 | 'error': fields.text('Error', readonly=1), | ||
881 | 44 | 'start_date': fields.datetime('Start Date', readonly=1), | ||
882 | 45 | 'end_date': fields.datetime('End Date', readonly=1), | ||
883 | 46 | } | ||
884 | 47 | |||
885 | 48 | _defaults = { | ||
886 | 49 | 'state': 'draft', | ||
887 | 50 | } | ||
888 | 51 | |||
889 | 52 | def __init__(self, pool, cr): | ||
890 | 53 | super(esc_line_import_wizard, self).__init__(pool, cr) | ||
891 | 54 | if cr.column_exists('esc_line_import_wizard', 'state'): | ||
892 | 55 | cr.execute("update esc_line_import_wizard set state='error' where state='inprogress'") | ||
893 | 56 | if cr.column_exists('esc_line_import_wizard', 'file'): | ||
894 | 57 | cr.execute("update esc_line_import_wizard set file=null where file is not null") | ||
895 | 58 | |||
896 | 59 | def write(self, cr, uid, ids, vals, context=None): | ||
897 | 60 | if context is None: | ||
898 | 61 | context = {} | ||
899 | 62 | # remove concurrency warning on refresh | ||
900 | 63 | if self.CONCURRENCY_CHECK_FIELD in context: | ||
901 | 64 | del context[self.CONCURRENCY_CHECK_FIELD] | ||
902 | 65 | return super(esc_line_import_wizard, self).write(cr, uid, ids, vals, context) | ||
903 | 66 | |||
904 | 67 | def open_wizard(self, cr, uid, ids, context=None): | ||
905 | 68 | """ | ||
906 | 69 | on click on menutim: display the running hq import | ||
907 | 70 | """ | ||
908 | 71 | if self.pool.get('res.company')._get_instance_level(cr, uid) != 'section': | ||
909 | 72 | raise osv.except_osv(_('Warning'), ('This object can only be imported at HQ level')) | ||
910 | 73 | |||
911 | 74 | ids = self.search(cr, uid, [('state', 'in', ['inprogress', 'error', 'done'])], context=context) | ||
912 | 75 | if ids: | ||
913 | 76 | res_id = ids[0] | ||
914 | 77 | view_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account_hq_entries', 'esc_line_import_progress_wizard')[1] | ||
915 | 78 | else: | ||
916 | 79 | res_id = False | ||
917 | 80 | view_id = False | ||
918 | 81 | return { | ||
919 | 82 | 'name': _('Import International Invoices Lines'), | ||
920 | 83 | 'type': 'ir.actions.act_window', | ||
921 | 84 | 'res_model': 'esc.line.import', | ||
922 | 85 | 'view_mode': 'form', | ||
923 | 86 | 'view_type': 'form', | ||
924 | 87 | 'view_id': [view_id], | ||
925 | 88 | 'res_id': res_id, | ||
926 | 89 | 'target': 'new', | ||
927 | 90 | 'context': context, | ||
928 | 91 | } | ||
929 | 92 | |||
930 | 93 | def get_template_file(self, cr, uid, ids, context=None): | ||
931 | 94 | if context is None: | ||
932 | 95 | context = {} | ||
933 | 96 | |||
934 | 97 | return { | ||
935 | 98 | 'type': 'ir.actions.report.xml', | ||
936 | 99 | 'report_name': 'esc_line_import_template', | ||
937 | 100 | 'datas': {'target_filename': _('International Invoices Lines Template'), 'keep_open': 1}, | ||
938 | 101 | 'context': context, | ||
939 | 102 | } | ||
940 | 103 | |||
941 | 104 | def get_error_file(self, cr, uid, ids, context=None): | ||
942 | 105 | if context is None: | ||
943 | 106 | context = {} | ||
944 | 107 | |||
945 | 108 | return { | ||
946 | 109 | 'type': 'ir.actions.report.xml', | ||
947 | 110 | 'report_name': 'esc_line_import_rejected', | ||
948 | 111 | 'datas': {'target_filename': _('International Invoices Rejected Lines'), 'keep_open': 1, 'active_id': ids[0]}, | ||
949 | 112 | 'context': context, | ||
950 | 113 | } | ||
951 | 114 | |||
952 | 115 | def button_validate(self, cr, uid, ids, context=None): | ||
953 | 116 | """ | ||
954 | 117 | Take a CSV file and fetch some informations for HQ Entries | ||
955 | 118 | """ | ||
956 | 119 | # Do verifications | ||
957 | 120 | if not context: | ||
958 | 121 | context = {} | ||
959 | 122 | |||
960 | 123 | if isinstance(ids, (int, long)): | ||
961 | 124 | ids = [ids] | ||
962 | 125 | |||
963 | 126 | if not self.browse(cr, uid, ids[0], context=context).file: | ||
964 | 127 | raise osv.except_osv(_('Warning'), _('No file to import')) | ||
965 | 128 | |||
966 | 129 | threading.Thread(target=self.load_bg, args=(cr.dbname, uid, ids[0], context)).start() | ||
967 | 130 | self.write(cr, uid, ids[0], {'state': 'inprogress', 'progress': 0}, context=context) | ||
968 | 131 | |||
969 | 132 | view_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account_hq_entries', 'esc_line_import_progress_wizard')[1] | ||
970 | 133 | return { | ||
971 | 134 | 'name': _('Import International Invoices Lines'), | ||
972 | 135 | 'type': 'ir.actions.act_window', | ||
973 | 136 | 'res_model': 'esc.line.import', | ||
974 | 137 | 'view_mode': 'form', | ||
975 | 138 | 'view_type': 'form', | ||
976 | 139 | 'view_id': [view_id], | ||
977 | 140 | 'res_id': ids[0], | ||
978 | 141 | 'target': 'new', | ||
979 | 142 | 'context': context, | ||
980 | 143 | } | ||
981 | 144 | |||
982 | 145 | |||
983 | 146 | def load_bg(self, dbname, uid, wiz_id, context=None): | ||
984 | 147 | def manage_error(line_index, msg, row): | ||
985 | 148 | errors.append(_('Line %s, %s') % (line_index, _(msg))) | ||
986 | 149 | line_data = [] | ||
987 | 150 | len_cell = len(row.cells) | ||
988 | 151 | for x in range(0, min(len_cell, 8)): | ||
989 | 152 | line_data.append({'type': row.cells[x].type, 'data': row.cells[x].data}) | ||
990 | 153 | self.pool.get('esc.line.import.rejected').create(cr, uid, {'wiz_id': wiz_id, 'error': msg, 'xls_row': tools.ustr(line_data)}, context=context) | ||
991 | 154 | |||
992 | 155 | errors = [] | ||
993 | 156 | curr_cache = {} | ||
994 | 157 | product_cache = {} | ||
995 | 158 | cost_center = {} | ||
996 | 159 | |||
997 | 160 | created = 0 | ||
998 | 161 | processed = 0 | ||
999 | 162 | |||
1000 | 163 | created_ids = {} | ||
1001 | 164 | consignee_instances = {} | ||
1002 | 165 | try: | ||
1003 | 166 | cr = pooler.get_db(dbname).cursor() | ||
1004 | 167 | |||
1005 | 168 | target_cc_ids = self.pool.get('account.target.costcenter').search(cr, uid, [('instance_id.state', '!=', 'inactive'), ('is_po_fo_cost_center', '=', True)], context=context) | ||
1006 | 169 | for target in self.pool.get('account.target.costcenter').browse(cr, uid, target_cc_ids, fields_to_fetch=['cost_center_id', 'instance_id'], context=context): | ||
1007 | 170 | cost_center[target.cost_center_id.code.lower()] = target.cost_center_id.id | ||
1008 | 171 | consignee_instances[target.instance_id.instance.lower()] = target.cost_center_id.id | ||
1009 | 172 | |||
1010 | 173 | wiz = self.browse(cr, uid, wiz_id, context=None) | ||
1011 | 174 | file_data = SpreadsheetXML(xmlstring=base64.decodestring(wiz.file)) | ||
1012 | 175 | nb_lines = file_data.getRows() | ||
1013 | 176 | |||
1014 | 177 | line = 0 | ||
1015 | 178 | for row in file_data.getRows(): | ||
1016 | 179 | line += 1 | ||
1017 | 180 | if line == 1: | ||
1018 | 181 | # header | ||
1019 | 182 | continue | ||
1020 | 183 | if not len(row.cells): | ||
1021 | 184 | # empty line | ||
1022 | 185 | continue | ||
1023 | 186 | processed += 1 | ||
1024 | 187 | if len(row.cells) < 7: | ||
1025 | 188 | manage_error(line, _('a row must have 8 columns'), row) | ||
1026 | 189 | continue | ||
1027 | 190 | |||
1028 | 191 | if not row.cells[0].data: | ||
1029 | 192 | manage_error(line, _('Order ref is mandatory'), row) | ||
1030 | 193 | continue | ||
1031 | 194 | |||
1032 | 195 | po_ref = row.cells[0].data.strip() | ||
1033 | 196 | if not re.match('^[0-9]{2}/[^/]+/\w+/PO\d+$', po_ref): | ||
1034 | 197 | manage_error(line, _('Order ref %s does not match the PO pattern') % po_ref, row) | ||
1035 | 198 | continue | ||
1036 | 199 | |||
1037 | 200 | if not row.cells[1].data: | ||
1038 | 201 | manage_error(line, _('Requestor Cost Center is mandatory'), row) | ||
1039 | 202 | continue | ||
1040 | 203 | |||
1041 | 204 | cc = row.cells[1].data.strip().lower() | ||
1042 | 205 | if cc not in cost_center: | ||
1043 | 206 | manage_error(line, _('Requestor Cost Center %s not found or does not match any active instance.') % row.cells[1].data, row) | ||
1044 | 207 | continue | ||
1045 | 208 | cc_id = cost_center[cc] | ||
1046 | 209 | |||
1047 | 210 | consignee_id = False | ||
1048 | 211 | consignee_instance_txt = False | ||
1049 | 212 | if row.cells[2].data: | ||
1050 | 213 | cc = row.cells[2].data.strip().lower() | ||
1051 | 214 | |||
1052 | 215 | if cc in cost_center: | ||
1053 | 216 | consignee_id = cost_center[cc] | ||
1054 | 217 | consignee_instance_txt = '' | ||
1055 | 218 | elif cc in consignee_instances: | ||
1056 | 219 | consignee_id= consignee_instances[cc] | ||
1057 | 220 | consignee_instance_txt = row.cells[2].data.strip() | ||
1058 | 221 | else: | ||
1059 | 222 | manage_error(line, _('Consignee Cost Center/Instance %s not found or does not match any active instance.') % row.cells[2].data, row) | ||
1060 | 223 | continue | ||
1061 | 224 | |||
1062 | 225 | |||
1063 | 226 | if not row.cells[3].data: | ||
1064 | 227 | manage_error(line, _('Product Code is mandatory.'), row) | ||
1065 | 228 | continue | ||
1066 | 229 | p_code = row.cells[3].data.strip().lower() | ||
1067 | 230 | if p_code not in product_cache: | ||
1068 | 231 | p_ids = self.pool.get('product.product').search(cr, uid, [('default_code', '=ilike', p_code)], context=context) | ||
1069 | 232 | product_cache[p_code] = p_ids[0] if p_ids else False | ||
1070 | 233 | if not product_cache[p_code]: | ||
1071 | 234 | manage_error(line, _('Product Code %s not found.') % (row.cells[3].data,), row) | ||
1072 | 235 | continue | ||
1073 | 236 | |||
1074 | 237 | if not row.cells[4].data: | ||
1075 | 238 | manage_error(line, _('Product quantity is mandatory.'), row) | ||
1076 | 239 | continue | ||
1077 | 240 | try: | ||
1078 | 241 | qty = float(row.cells[4].data) | ||
1079 | 242 | except: | ||
1080 | 243 | manage_error(line, _('Product Quantity %s is not a number.') % (row.cells[4].data, ), row) | ||
1081 | 244 | continue | ||
1082 | 245 | |||
1083 | 246 | if qty <= 0: | ||
1084 | 247 | manage_error(line, _('Product Quantity %s cannot be 0 or negative') % (row.cells[4].data, ), row) | ||
1085 | 248 | continue | ||
1086 | 249 | |||
1087 | 250 | if not row.cells[5].data: | ||
1088 | 251 | manage_error(line, _('Unit Price is mandatory.'), row) | ||
1089 | 252 | continue | ||
1090 | 253 | try: | ||
1091 | 254 | unit_price = float(row.cells[5].data) | ||
1092 | 255 | except: | ||
1093 | 256 | manage_error(line, _('Unit Price %s is not a number.') % (row.cells[5].data, ), row) | ||
1094 | 257 | continue | ||
1095 | 258 | |||
1096 | 259 | if not row.cells[6].data: | ||
1097 | 260 | manage_error(line, _('Currency is mandatory.'), row) | ||
1098 | 261 | continue | ||
1099 | 262 | curr_code = row.cells[6].data.strip().lower() | ||
1100 | 263 | if curr_code not in curr_cache: | ||
1101 | 264 | curr_ids = self.pool.get('res.currency').search(cr, uid, [('name', '=ilike', curr_code)], context=context) | ||
1102 | 265 | curr_cache[curr_code] = curr_ids[0] if curr_ids else False | ||
1103 | 266 | if not curr_cache[curr_code]: | ||
1104 | 267 | manage_error(line, _('Currency %s not found.') % (row.cells[6].data,), row) | ||
1105 | 268 | continue | ||
1106 | 269 | |||
1107 | 270 | mapping = '' | ||
1108 | 271 | if len(row.cells) > 7 and row.cells[7].data: | ||
1109 | 272 | mapping = row.cells[7].data.strip() | ||
1110 | 273 | |||
1111 | 274 | cr.execute("SAVEPOINT esc_line") | ||
1112 | 275 | try: | ||
1113 | 276 | new_line = self.pool.get('esc.invoice.line').create(cr, uid, { | ||
1114 | 277 | 'po_name': po_ref, | ||
1115 | 278 | 'requestor_cc_id': cc_id, | ||
1116 | 279 | 'consignee_cc_id': consignee_id, | ||
1117 | 280 | 'imported_consignee_instance': consignee_instance_txt, | ||
1118 | 281 | 'product_id': product_cache[p_code], | ||
1119 | 282 | 'price_unit': unit_price, | ||
1120 | 283 | 'product_qty': qty, | ||
1121 | 284 | 'currency_id': curr_cache[curr_code], | ||
1122 | 285 | 'shipment_ref': mapping, | ||
1123 | 286 | }, context=context) | ||
1124 | 287 | created_ids[new_line] = line | ||
1125 | 288 | created += 1 | ||
1126 | 289 | cr.execute("RELEASE SAVEPOINT esc_line") | ||
1127 | 290 | except osv.except_osv, e: | ||
1128 | 291 | cr.execute("ROLLBACK TO SAVEPOINT esc_line") | ||
1129 | 292 | manage_error(line, e.value, row) | ||
1130 | 293 | except IntegrityError: | ||
1131 | 294 | cr.execute("ROLLBACK TO SAVEPOINT esc_line") | ||
1132 | 295 | line_id = False | ||
1133 | 296 | |||
1134 | 297 | if created_ids: | ||
1135 | 298 | line_id = self.pool.get('esc.invoice.line').search(cr, uid, [ | ||
1136 | 299 | ('id', 'in', created_ids.keys()), | ||
1137 | 300 | ('po_name', '=', po_ref), | ||
1138 | 301 | ('requestor_cc_id', '=', cc_id), | ||
1139 | 302 | ('consignee_cc_id', '=', consignee_id), | ||
1140 | 303 | ('product_id', '=', product_cache[p_code]), | ||
1141 | 304 | ('price_unit', '=', unit_price), | ||
1142 | 305 | ('product_qty', '=', qty), | ||
1143 | 306 | ('currency_id', '=', curr_cache[curr_code]), | ||
1144 | 307 | ('shipment_ref', '=', mapping) | ||
1145 | 308 | ], context=context) | ||
1146 | 309 | if line_id: | ||
1147 | 310 | manage_error(line, _('duplicates line %d') % created_ids[line_id[0]], row) | ||
1148 | 311 | if not line_id: | ||
1149 | 312 | manage_error(line, _('Line duplicated in the system'), row) | ||
1150 | 313 | |||
1151 | 314 | if processed%10 == 0: | ||
1152 | 315 | self.write(cr, uid, wiz_id, {'progress': int(processed/float(nb_lines)*100), 'created': created, 'nberrors': len(errors), 'error': "\n".join(errors)}, context=context) | ||
1153 | 316 | |||
1154 | 317 | state = 'done' | ||
1155 | 318 | if errors: | ||
1156 | 319 | state = 'error' | ||
1157 | 320 | nb_errors = len(errors) | ||
1158 | 321 | errors.insert(0, _('Imported with error(s)')) | ||
1159 | 322 | msg = "\n".join(errors) | ||
1160 | 323 | else: | ||
1161 | 324 | msg = _("International Invoices Lines import successful") | ||
1162 | 325 | nb_errors = 0 | ||
1163 | 326 | |||
1164 | 327 | self.write(cr, uid, wiz_id, {'progress': 100, 'state': state, 'created': created, 'total': processed, 'error': msg, 'nberrors': nb_errors, 'end_date': time.strftime('%Y-%m-%d %H:%M:%S'), 'file': False}, context=context) | ||
1165 | 328 | |||
1166 | 329 | except Exception, e: | ||
1167 | 330 | cr.rollback() | ||
1168 | 331 | if isinstance(e, osv.except_osv): | ||
1169 | 332 | error = e.value | ||
1170 | 333 | else: | ||
1171 | 334 | error = e | ||
1172 | 335 | msg = self.read(cr, uid, wiz_id, ['error'])['error'] or '' | ||
1173 | 336 | self.write(cr, uid, wiz_id, {'state': 'error', 'progress': 100, 'error': "%s\n%s\n%s" % (msg, tools.ustr(error), tools.get_traceback(e)), 'end_date': time.strftime('%Y-%m-%d %H:%M:%S')}) | ||
1174 | 337 | finally: | ||
1175 | 338 | cr.commit() | ||
1176 | 339 | cr.close(True) | ||
1177 | 340 | |||
1178 | 341 | def done(self, cr, uid, ids, context=None): | ||
1179 | 342 | self.write(cr, uid, ids, {'state': 'ack'}, context=context) | ||
1180 | 343 | d = self.pool.get('ir.actions.act_window').open_view_from_xmlid(cr, uid, 'account_hq_entries.esc_invoice_line_action', context=context) | ||
1181 | 344 | return d | ||
1182 | 345 | |||
1183 | 346 | def ack(self, cr, uid, ids, context=None): | ||
1184 | 347 | self.write(cr, uid, ids, {'state': 'ack'}, context=context) | ||
1185 | 348 | return {'type': 'ir.actions.act_window_close'} | ||
1186 | 349 | |||
1187 | 350 | esc_line_import_wizard() | ||
1188 | 351 | |||
1189 | 0 | 352 | ||
1190 | === added file 'bin/addons/account_hq_entries/wizard/esc_lines_import_view.xml' | |||
1191 | --- bin/addons/account_hq_entries/wizard/esc_lines_import_view.xml 1970-01-01 00:00:00 +0000 | |||
1192 | +++ bin/addons/account_hq_entries/wizard/esc_lines_import_view.xml 2023-05-05 12:01:38 +0000 | |||
1193 | @@ -0,0 +1,89 @@ | |||
1194 | 1 | <?xml version="1.0" encoding="utf-8"?> | ||
1195 | 2 | <openerp> | ||
1196 | 3 | <data> | ||
1197 | 4 | |||
1198 | 5 | <record id="esc_line_import_wizard" model="ir.ui.view"> | ||
1199 | 6 | <field name="name">esc.line.import.wizard</field> | ||
1200 | 7 | <field name="model">esc.line.import</field> | ||
1201 | 8 | <field name="type">form</field> | ||
1202 | 9 | <field name="arch" type="xml"> | ||
1203 | 10 | <form string="International Invoices Lines Import"> | ||
1204 | 11 | <label string="This will import lines from a SpreadSheet xml file." colspan="4"/> | ||
1205 | 12 | <newline/> | ||
1206 | 13 | <group colspan="4"> | ||
1207 | 14 | <field name="file" filename="filename" colspan="2"/> | ||
1208 | 15 | <field name="filename" invisible="1"/> | ||
1209 | 16 | </group> | ||
1210 | 17 | <newline /> | ||
1211 | 18 | <button name="get_template_file" type="object" string="Download Empty Template" icon="gtk-justify-fill" colspan="1"/> | ||
1212 | 19 | <group colspan="3" /> | ||
1213 | 20 | <newline /> | ||
1214 | 21 | <newline /> | ||
1215 | 22 | <group colspan="4" col="2"> | ||
1216 | 23 | <button string="Cancel" special="cancel" icon="gtk-cancel"/> | ||
1217 | 24 | <button name="button_validate" type="object" string="Import" icon="terp-camera_test"/> | ||
1218 | 25 | </group> | ||
1219 | 26 | </form> | ||
1220 | 27 | </field> | ||
1221 | 28 | </record> | ||
1222 | 29 | |||
1223 | 30 | |||
1224 | 31 | <record id="esc_line_import_progress_wizard" model="ir.ui.view"> | ||
1225 | 32 | <field name="name">esc.line.import.wizard</field> | ||
1226 | 33 | <field name="model">esc.line.import</field> | ||
1227 | 34 | <field name="priority" eval="100" /> | ||
1228 | 35 | <field name="type">form</field> | ||
1229 | 36 | <field name="arch" type="xml"> | ||
1230 | 37 | <form string="International Invoices Lines Import"> | ||
1231 | 38 | <field name="progress" widget="progressbar" colspan="4"/> | ||
1232 | 39 | <newline /> | ||
1233 | 40 | <field name="filename" readonly="1" /> | ||
1234 | 41 | <newline /> | ||
1235 | 42 | <field name="state" /> | ||
1236 | 43 | <group colspan="2" col="4"> | ||
1237 | 44 | <field name="start_date" /> | ||
1238 | 45 | <field name="end_date" /> | ||
1239 | 46 | </group> | ||
1240 | 47 | <html colspan="4"> | ||
1241 | 48 | <script language="javascript"> | ||
1242 | 49 | $(document).ready(function() { | ||
1243 | 50 | if ($('#state').val() == 'inprogress') { | ||
1244 | 51 | setTimeout(function(){ | ||
1245 | 52 | $('#dummy').click(); | ||
1246 | 53 | },2400) | ||
1247 | 54 | } | ||
1248 | 55 | }); | ||
1249 | 56 | </script> | ||
1250 | 57 | </html> | ||
1251 | 58 | |||
1252 | 59 | <newline /> | ||
1253 | 60 | <field name="created" /> | ||
1254 | 61 | <field name="nberrors" /> | ||
1255 | 62 | <newline /> | ||
1256 | 63 | <group colspan="4" col="4"> | ||
1257 | 64 | <button name="get_error_file" type="object" string="Download Rejected Lines" icon="gtk-justify-fill" colspan="1" attrs="{'invisible': [('state', '!=', 'error')]}"/> | ||
1258 | 65 | <group colspan="3" /> | ||
1259 | 66 | </group> | ||
1260 | 67 | <newline /> | ||
1261 | 68 | <newline /> | ||
1262 | 69 | <field name="error" colspan="4" nolabel="1" /> | ||
1263 | 70 | <group colspan="4" col="4"> | ||
1264 | 71 | <button name="dummy" string="Update" icon="gtk-refresh" invisible="1"/> | ||
1265 | 72 | <button string="OK" name="done" type="object" icon="gtk-ok" states="done" /> | ||
1266 | 73 | <button string="Reset" name="done" type="object" icon="gtk-ok" states="error" help="Reset import and close the window" /> | ||
1267 | 74 | <button string="Close" special="cancel" icon="gtk-cancel" states="error" help="Keep import results and close the window"/> | ||
1268 | 75 | </group> | ||
1269 | 76 | </form> | ||
1270 | 77 | </field> | ||
1271 | 78 | </record> | ||
1272 | 79 | |||
1273 | 80 | <record id="esc_line_import_action" model="ir.actions.server"> | ||
1274 | 81 | <field name="name">International Invoices Lines Import</field> | ||
1275 | 82 | <field name="model_id" ref="model_esc_line_import" /> | ||
1276 | 83 | <field name="state">code</field> | ||
1277 | 84 | <field name="code">action = obj.open_wizard(context=context)</field> | ||
1278 | 85 | </record> | ||
1279 | 86 | |||
1280 | 87 | <menuitem name="International Invoices Lines Import" action="esc_line_import_action" type="server" id="esc_line_import_menu" parent="menu_hq" sequence="19"/> | ||
1281 | 88 | </data> | ||
1282 | 89 | </openerp> | ||
1283 | 0 | 90 | ||
1284 | === modified file 'bin/addons/delivery_mechanism/delivery_mechanism.py' | |||
1285 | --- bin/addons/delivery_mechanism/delivery_mechanism.py 2022-05-10 12:24:07 +0000 | |||
1286 | +++ bin/addons/delivery_mechanism/delivery_mechanism.py 2023-05-05 12:01:38 +0000 | |||
1287 | @@ -467,25 +467,79 @@ | |||
1288 | 467 | uom_obj = self.pool.get('product.uom') | 467 | uom_obj = self.pool.get('product.uom') |
1289 | 468 | currency_obj = self.pool.get('res.currency') | 468 | currency_obj = self.pool.get('res.currency') |
1290 | 469 | product_obj = self.pool.get('product.product') | 469 | product_obj = self.pool.get('product.product') |
1291 | 470 | esc_line_obj = self.pool.get('esc.invoice.line') | ||
1292 | 471 | tc_fin_obj = self.pool.get('finance_price.track_changes') | ||
1293 | 470 | 472 | ||
1294 | 471 | if context is None: | 473 | if context is None: |
1295 | 472 | context = {} | 474 | context = {} |
1296 | 473 | 475 | ||
1297 | 474 | average_values = {} | 476 | average_values = {} |
1298 | 475 | 477 | ||
1299 | 478 | company_currency_id = move.company_id.currency_id.id | ||
1300 | 479 | |||
1301 | 476 | if move.price_currency_id: | 480 | if move.price_currency_id: |
1302 | 477 | move_currency_id = move.price_currency_id.id | 481 | move_currency_id = move.price_currency_id.id |
1303 | 478 | else: | 482 | else: |
1304 | 479 | move_currency_id = move.company_id.currency_id.id | 483 | move_currency_id = move.company_id.currency_id.id |
1305 | 480 | context['currency_id'] = move_currency_id | 484 | context['currency_id'] = move_currency_id |
1306 | 481 | 485 | ||
1307 | 486 | |||
1308 | 487 | |||
1309 | 488 | compute_finance_price = False | ||
1310 | 489 | if self.pool.get('unifield.setup.configuration').get_config(cr, uid, 'esc_line'): | ||
1311 | 490 | compute_finance_price = move.picking_id.partner_id.partner_type == 'esc' or move.dpo_line_id and move.purchase_line_id.from_dpo_esc or False | ||
1312 | 491 | |||
1313 | 482 | qty = line.quantity | 492 | qty = line.quantity |
1314 | 483 | if line.uom_id.id != line.product_id.uom_id.id: | 493 | if line.uom_id.id != line.product_id.uom_id.id: |
1315 | 484 | qty = uom_obj._compute_qty(cr, uid, line.uom_id.id, line.quantity, line.product_id.uom_id.id) | 494 | qty = uom_obj._compute_qty(cr, uid, line.uom_id.id, line.quantity, line.product_id.uom_id.id) |
1316 | 485 | 495 | ||
1317 | 486 | product_availability.setdefault(line.product_id.id, line.product_id.qty_available) | 496 | product_availability.setdefault(line.product_id.id, line.product_id.qty_available) |
1319 | 487 | 497 | track_finance_price = [] | |
1320 | 498 | tc_fin_ids = [] | ||
1321 | 488 | if qty > 0.00: | 499 | if qty > 0.00: |
1322 | 500 | if compute_finance_price: | ||
1323 | 501 | esc_dom = [('state','!=', 'done'), ('product_id', '=', line.product_id.id), ('po_name', '=', move.purchase_line_id.order_id.name)] | ||
1324 | 502 | # exact qty | ||
1325 | 503 | esc_ids = esc_line_obj.search(cr, uid, esc_dom + [('remaining_qty', '=', qty)], order='state, id', limit=1, context=context) | ||
1326 | 504 | if not esc_ids: | ||
1327 | 505 | esc_ids = esc_line_obj.search(cr, uid, esc_dom, order='state, id', context=context) | ||
1328 | 506 | |||
1329 | 507 | remaining_in_qty = qty | ||
1330 | 508 | total_price = 0 | ||
1331 | 509 | for esc_line in esc_line_obj.browse(cr, uid, esc_ids, context=context): | ||
1332 | 510 | if remaining_in_qty <= 0: | ||
1333 | 511 | break | ||
1334 | 512 | unit_iil_price = esc_line.price_unit | ||
1335 | 513 | if esc_line.currency_id.id != company_currency_id: | ||
1336 | 514 | unit_iil_price = currency_obj.compute(cr, uid, esc_line.currency_id.id, company_currency_id, unit_iil_price, round=False, context=context) | ||
1337 | 515 | |||
1338 | 516 | if esc_line.remaining_qty - remaining_in_qty >= 0.001: | ||
1339 | 517 | total_price += unit_iil_price * remaining_in_qty | ||
1340 | 518 | |||
1341 | 519 | remaining_iil_qty = esc_line.remaining_qty - remaining_in_qty | ||
1342 | 520 | if abs(remaining_iil_qty) <= 0.001: | ||
1343 | 521 | esc_line_obj.write(cr, uid, esc_line.id, {'state': 'done', 'remaining_qty': 0}, context=context) | ||
1344 | 522 | else: | ||
1345 | 523 | esc_line_obj.write(cr, uid, esc_line.id, {'state': '0_open', 'remaining_qty': remaining_iil_qty}, context=context) | ||
1346 | 524 | track_finance_price.append({'qty_processed': remaining_in_qty, 'price_unit': unit_iil_price, 'matching_type': 'iil', 'esc_invoice_line_id': esc_line.id}) | ||
1347 | 525 | remaining_in_qty = 0 | ||
1348 | 526 | |||
1349 | 527 | else: | ||
1350 | 528 | esc_line_obj.write(cr, uid, esc_line.id, {'state': 'done', 'remaining_qty': 0}, context=context) | ||
1351 | 529 | total_price += unit_iil_price * esc_line.remaining_qty | ||
1352 | 530 | remaining_in_qty -= esc_line.remaining_qty | ||
1353 | 531 | track_finance_price.append({'qty_processed': esc_line.remaining_qty, 'price_unit': unit_iil_price, 'matching_type': 'iil', 'esc_invoice_line_id': esc_line.id}) | ||
1354 | 532 | |||
1355 | 533 | if remaining_in_qty > 0: | ||
1356 | 534 | # all IIL used: take PO price | ||
1357 | 535 | po_price = move.purchase_line_id.price_unit | ||
1358 | 536 | if move.purchase_line_id.order_id.currency_id.id != company_currency_id: | ||
1359 | 537 | po_price = currency_obj.compute(cr, uid, move.purchase_line_id.order_id.currency_id.id, company_currency_id, po_price, round=False, context=context) | ||
1360 | 538 | total_price += remaining_in_qty * po_price | ||
1361 | 539 | track_finance_price.append({'qty_processed': remaining_in_qty, 'price_unit': po_price, 'matching_type': 'po', 'purchase_oder_line_id': move.purchase_line_id.id}) | ||
1362 | 540 | |||
1363 | 541 | |||
1364 | 542 | # by remaining qty | ||
1365 | 489 | new_price = line.cost | 543 | new_price = line.cost |
1366 | 490 | # Recompute unit price if the currency used is not the functional currency | 544 | # Recompute unit price if the currency used is not the functional currency |
1367 | 491 | if line.currency.id != move_currency_id: | 545 | if line.currency.id != move_currency_id: |
1368 | @@ -500,19 +554,36 @@ | |||
1369 | 500 | new_std_price = 0.00 | 554 | new_std_price = 0.00 |
1370 | 501 | if line.product_id.qty_available <= 0.00: | 555 | if line.product_id.qty_available <= 0.00: |
1371 | 502 | new_std_price = new_price | 556 | new_std_price = new_price |
1372 | 557 | if compute_finance_price: | ||
1373 | 558 | new_finance_price = round(total_price / float(qty), 5) | ||
1374 | 503 | else: | 559 | else: |
1375 | 504 | # Get the current price in today's rate | 560 | # Get the current price in today's rate |
1376 | 505 | current_price = product_obj.price_get(cr, uid, [line.product_id.id], 'standard_price', context=context)[line.product_id.id] | 561 | current_price = product_obj.price_get(cr, uid, [line.product_id.id], 'standard_price', context=context)[line.product_id.id] |
1377 | 562 | |||
1378 | 506 | # Check no division by zero | 563 | # Check no division by zero |
1379 | 507 | if product_availability[line.product_id.id]: | 564 | if product_availability[line.product_id.id]: |
1380 | 508 | new_std_price = ((current_price * product_availability[line.product_id.id]) | 565 | new_std_price = ((current_price * product_availability[line.product_id.id]) |
1381 | 509 | + (new_price * qty)) / (product_availability[line.product_id.id] + qty) | 566 | + (new_price * qty)) / (product_availability[line.product_id.id] + qty) |
1382 | 510 | 567 | ||
1383 | 568 | if compute_finance_price: | ||
1384 | 569 | # TODO : init finance_price | ||
1385 | 570 | if not line.product_id.finance_price: | ||
1386 | 571 | new_finance_price = round(total_price / float(qty), 5) | ||
1387 | 572 | else: | ||
1388 | 573 | new_finance_price = round((line.product_id.finance_price * product_availability[line.product_id.id] + total_price) / (product_availability[line.product_id.id] + qty), 5) | ||
1389 | 574 | |||
1390 | 511 | new_std_price = round(currency_obj.compute(cr, uid, line.currency.id, move.company_id.currency_id.id, | 575 | new_std_price = round(currency_obj.compute(cr, uid, line.currency.id, move.company_id.currency_id.id, |
1391 | 512 | new_std_price, round=False, context=context), 5) | 576 | new_std_price, round=False, context=context), 5) |
1392 | 513 | 577 | ||
1393 | 514 | # Write the field according to price type field | 578 | # Write the field according to price type field |
1395 | 515 | product_obj.write(cr, uid, [line.product_id.id], {'standard_price': new_std_price}) | 579 | prod_to_write = {'standard_price': new_std_price} |
1396 | 580 | if compute_finance_price: | ||
1397 | 581 | prod_to_write['finance_price'] = new_finance_price | ||
1398 | 582 | for tc_fin in track_finance_price: | ||
1399 | 583 | tc_fin.update({'product_id': line.product_id.id, 'old_price': line.product_id.finance_price, 'new_price': new_finance_price, 'stock_before': product_availability.get(line.product_id.id, 0)}) | ||
1400 | 584 | tc_fin_ids.append(tc_fin_obj.create(cr, uid, tc_fin, context=context)) | ||
1401 | 585 | product_obj.write(cr, uid, [line.product_id.id], prod_to_write) | ||
1402 | 586 | |||
1403 | 516 | pchanged = False | 587 | pchanged = False |
1404 | 517 | # Is price changed ? | 588 | # Is price changed ? |
1405 | 518 | if line.cost and move.purchase_line_id: | 589 | if line.cost and move.purchase_line_id: |
1406 | @@ -531,7 +602,7 @@ | |||
1407 | 531 | 'price_currency_id': line.currency.id, | 602 | 'price_currency_id': line.currency.id, |
1408 | 532 | } | 603 | } |
1409 | 533 | 604 | ||
1411 | 534 | return average_values, sptc_values | 605 | return average_values, sptc_values, tc_fin_ids |
1412 | 535 | 606 | ||
1413 | 536 | def _get_values_from_line(self, cr, uid, move, line, db_data, context=None): | 607 | def _get_values_from_line(self, cr, uid, move, line, db_data, context=None): |
1414 | 537 | """ | 608 | """ |
1415 | @@ -814,7 +885,6 @@ | |||
1416 | 814 | out_moves = mirror_data['moves'] | 885 | out_moves = mirror_data['moves'] |
1417 | 815 | average_values = {} | 886 | average_values = {} |
1418 | 816 | move_sptc_values = [] | 887 | move_sptc_values = [] |
1419 | 817 | |||
1420 | 818 | line = False | 888 | line = False |
1421 | 819 | 889 | ||
1422 | 820 | if move.purchase_line_id and move.purchase_line_id.id not in po_line_qty: | 890 | if move.purchase_line_id and move.purchase_line_id.id not in po_line_qty: |
1423 | @@ -828,11 +898,13 @@ | |||
1424 | 828 | 898 | ||
1425 | 829 | if not values.get('product_qty', 0.00): | 899 | if not values.get('product_qty', 0.00): |
1426 | 830 | continue | 900 | continue |
1427 | 901 | |||
1428 | 902 | tc_ids = [] | ||
1429 | 831 | # Check if we must re-compute the price of the product | 903 | # Check if we must re-compute the price of the product |
1430 | 832 | compute_average = process_avg_sysint and picking_dict['type'] == 'in' and line.product_id.cost_method == 'average' | 904 | compute_average = process_avg_sysint and picking_dict['type'] == 'in' and line.product_id.cost_method == 'average' |
1431 | 833 | 905 | ||
1432 | 834 | if compute_average: | 906 | if compute_average: |
1434 | 835 | average_values, sptc_values = self._compute_average_values(cr, uid, move, line, product_availability, context=context) | 907 | average_values, sptc_values, tc_ids = self._compute_average_values(cr, uid, move, line, product_availability, context=context) |
1435 | 836 | values.update(average_values) | 908 | values.update(average_values) |
1436 | 837 | move_sptc_values.append(sptc_values) | 909 | move_sptc_values.append(sptc_values) |
1437 | 838 | 910 | ||
1438 | @@ -856,6 +928,9 @@ | |||
1439 | 856 | context['keepLineNumber'] = False | 928 | context['keepLineNumber'] = False |
1440 | 857 | done_moves.append(new_move_id) | 929 | done_moves.append(new_move_id) |
1441 | 858 | 930 | ||
1442 | 931 | if tc_ids: | ||
1443 | 932 | self.pool.get('finance_price.track_changes').write(cr, uid, tc_ids, {'stock_move_id': done_moves[-1]}, context=context) | ||
1444 | 933 | |||
1445 | 859 | values['processed_stock_move'] = False | 934 | values['processed_stock_move'] = False |
1446 | 860 | 935 | ||
1447 | 861 | out_values = values.copy() | 936 | out_values = values.copy() |
1448 | 862 | 937 | ||
1449 | === modified file 'bin/addons/msf_audittrail/data/audittrail_hq_entry.yml' | |||
1450 | --- bin/addons/msf_audittrail/data/audittrail_hq_entry.yml 2021-05-05 16:04:38 +0000 | |||
1451 | +++ bin/addons/msf_audittrail/data/audittrail_hq_entry.yml 2023-05-05 12:01:38 +0000 | |||
1452 | @@ -26,3 +26,31 @@ | |||
1453 | 26 | self.write(cr, uid, rule_id, vals, context=context) | 26 | self.write(cr, uid, rule_id, vals, context=context) |
1454 | 27 | # Subscribe to the rule | 27 | # Subscribe to the rule |
1455 | 28 | self.subscribe(cr, uid, rule_id) | 28 | self.subscribe(cr, uid, rule_id) |
1456 | 29 | |||
1457 | 30 | - | ||
1458 | 31 | For International Invoice Lines | ||
1459 | 32 | - | ||
1460 | 33 | !python {model: audittrail.rule}: | | ||
1461 | 34 | name = 'International Invoice Lines' | ||
1462 | 35 | object_ids = self.pool.get('ir.model').search(cr, uid, [('model', '=', 'esc.invoice.line')], context=context) | ||
1463 | 36 | rule_id = self.search(cr, uid, [('object_id', 'in', object_ids)], context=context) | ||
1464 | 37 | if object_ids: | ||
1465 | 38 | # Create the rule | ||
1466 | 39 | fields = ['state'] | ||
1467 | 40 | fields_ids = self.pool.get('ir.model.fields').search(cr, uid, [('model', '=', 'esc.invoice.line'), ('name', 'in', fields)], context=context) | ||
1468 | 41 | |||
1469 | 42 | vals = { | ||
1470 | 43 | 'name': name, | ||
1471 | 44 | 'object_id': object_ids[0], | ||
1472 | 45 | 'log_write': True, | ||
1473 | 46 | 'log_unlink': True, | ||
1474 | 47 | 'log_create': True, | ||
1475 | 48 | 'field_ids': [(6, 0, fields_ids)], | ||
1476 | 49 | } | ||
1477 | 50 | |||
1478 | 51 | if not rule_id: | ||
1479 | 52 | rule_id = self.create(cr, uid, vals, context=context) | ||
1480 | 53 | elif rule_id: | ||
1481 | 54 | self.write(cr, uid, rule_id, vals, context=context) | ||
1482 | 55 | # Subscribe to the rule | ||
1483 | 56 | self.subscribe(cr, uid, rule_id) | ||
1484 | 29 | 57 | ||
1485 | === modified file 'bin/addons/msf_printed_documents/printed_report.xml' | |||
1486 | --- bin/addons/msf_printed_documents/printed_report.xml 2020-09-18 14:39:47 +0000 | |||
1487 | +++ bin/addons/msf_printed_documents/printed_report.xml 2023-05-05 12:01:38 +0000 | |||
1488 | @@ -30,6 +30,7 @@ | |||
1489 | 30 | header="False" | 30 | header="False" |
1490 | 31 | auto="False" | 31 | auto="False" |
1491 | 32 | menu="True" | 32 | menu="True" |
1492 | 33 | sequence="150" | ||
1493 | 33 | /> | 34 | /> |
1494 | 34 | 35 | ||
1495 | 35 | <report | 36 | <report |
1496 | 36 | 37 | ||
1497 | === modified file 'bin/addons/msf_profile/data/patches.xml' | |||
1498 | --- bin/addons/msf_profile/data/patches.xml 2023-05-03 10:23:38 +0000 | |||
1499 | +++ bin/addons/msf_profile/data/patches.xml 2023-05-05 12:01:38 +0000 | |||
1500 | @@ -901,6 +901,7 @@ | |||
1501 | 901 | <record id="us_11195_oca_period_nr" model="patch.scripts"> | 901 | <record id="us_11195_oca_period_nr" model="patch.scripts"> |
1502 | 902 | <field name="method">us_11195_oca_period_nr</field> | 902 | <field name="method">us_11195_oca_period_nr</field> |
1503 | 903 | </record> | 903 | </record> |
1504 | 904 | <<<<<<< TREE | ||
1505 | 904 | 905 | ||
1506 | 905 | <!-- UF29.0 --> | 906 | <!-- UF29.0 --> |
1507 | 906 | <record id="us_11177_bn_for_kcl_items" model="patch.scripts"> | 907 | <record id="us_11177_bn_for_kcl_items" model="patch.scripts"> |
1508 | @@ -933,5 +934,11 @@ | |||
1509 | 933 | <record id="us_10885_tc_entries" model="patch.scripts"> | 934 | <record id="us_10885_tc_entries" model="patch.scripts"> |
1510 | 934 | <field name="method">us_10885_tc_entries</field> | 935 | <field name="method">us_10885_tc_entries</field> |
1511 | 935 | </record> | 936 | </record> |
1512 | 937 | ======= | ||
1513 | 938 | |||
1514 | 939 | <record id="us_10835_disable_iil_menu" model="patch.scripts"> | ||
1515 | 940 | <field name="method">us_10835_disable_iil_menu</field> | ||
1516 | 941 | </record> | ||
1517 | 942 | >>>>>>> MERGE-SOURCE | ||
1518 | 936 | </data> | 943 | </data> |
1519 | 937 | </openerp> | 944 | </openerp> |
1520 | 938 | 945 | ||
1521 | === modified file 'bin/addons/msf_profile/i18n/fr_MF.po' | |||
1522 | --- bin/addons/msf_profile/i18n/fr_MF.po 2023-05-04 12:17:53 +0000 | |||
1523 | +++ bin/addons/msf_profile/i18n/fr_MF.po 2023-05-05 12:01:38 +0000 | |||
1524 | @@ -305,7 +305,7 @@ | |||
1525 | 305 | msgid "Instance code / Place of payment" | 305 | msgid "Instance code / Place of payment" |
1526 | 306 | msgstr "Code de l'Instance / Lieu du paiement" | 306 | msgstr "Code de l'Instance / Lieu du paiement" |
1527 | 307 | 307 | ||
1529 | 308 | #. modules: account, register_accounting, account_mcdb, sale, base,useability_dashboard_and_menu | 308 | #. modules: account, register_accounting, account_mcdb, sale, base,useability_dashboard_and_menu, account_hq_entries |
1530 | 309 | #: selection:account.period,state:0 | 309 | #: selection:account.period,state:0 |
1531 | 310 | #: selection:account.fiscalyear.state,state:0 | 310 | #: selection:account.fiscalyear.state,state:0 |
1532 | 311 | #: selection:account.period.state,state:0 | 311 | #: selection:account.period.state,state:0 |
1533 | @@ -314,7 +314,11 @@ | |||
1534 | 314 | #: view:signature.follow_up:0 | 314 | #: view:signature.follow_up:0 |
1535 | 315 | #: selection:signature.follow_up,doc_state:0 | 315 | #: selection:signature.follow_up,doc_state:0 |
1536 | 316 | #: selection:signature.follow_up,status:0 | 316 | #: selection:signature.follow_up,status:0 |
1537 | 317 | <<<<<<< TREE | ||
1538 | 317 | #: code:addons/useability_dashboard_and_menu/report/signature_follow_up_search_report.py:74 | 318 | #: code:addons/useability_dashboard_and_menu/report/signature_follow_up_search_report.py:74 |
1539 | 319 | ======= | ||
1540 | 320 | #: selection:esc.invoice.line,state:0 | ||
1541 | 321 | >>>>>>> MERGE-SOURCE | ||
1542 | 318 | msgid "Open" | 322 | msgid "Open" |
1543 | 319 | msgstr "Ouverte" | 323 | msgstr "Ouverte" |
1544 | 320 | 324 | ||
1545 | @@ -8314,7 +8318,7 @@ | |||
1546 | 8314 | msgid "Generate discrepancies" | 8318 | msgid "Generate discrepancies" |
1547 | 8315 | msgstr "Générer les écarts" | 8319 | msgstr "Générer les écarts" |
1548 | 8316 | 8320 | ||
1550 | 8317 | #. modules: purchase, account, msf_outgoing, finance, purchase_override, procurement, procurement_request, tender_flow, product, specific_rules, kit, stock_forecast, analytic, stock_batch_recall, register_accounting, stock_override, msf_supply_doc_export, mission_stock, msf_doc_import, sale, stock, account_override | 8321 | #. modules: purchase, account, msf_outgoing, finance, purchase_override, procurement, procurement_request, tender_flow, product, specific_rules, kit, stock_forecast, analytic, stock_batch_recall, register_accounting, stock_override, msf_supply_doc_export, mission_stock, msf_doc_import, sale, stock, account_override, account_hq_entries |
1551 | 8318 | #: report:account.analytic.account.balance:0 | 8322 | #: report:account.analytic.account.balance:0 |
1552 | 8319 | #: report:account.analytic.account.inverted.balance:0 | 8323 | #: report:account.analytic.account.inverted.balance:0 |
1553 | 8320 | #: report:account.analytic.account.quantity_cost_ledger:0 | 8324 | #: report:account.analytic.account.quantity_cost_ledger:0 |
1554 | @@ -8412,10 +8416,14 @@ | |||
1555 | 8412 | #: field:view.expired.expiring.stock.lines,product_qty:0 | 8416 | #: field:view.expired.expiring.stock.lines,product_qty:0 |
1556 | 8413 | #: code:addons/msf_doc_import/report/return_from_unit_export.py:120 | 8417 | #: code:addons/msf_doc_import/report/return_from_unit_export.py:120 |
1557 | 8414 | #: field:account.analytic.line,entry_quantity:0 | 8418 | #: field:account.analytic.line,entry_quantity:0 |
1558 | 8419 | <<<<<<< TREE | ||
1559 | 8415 | #: report:loan.certificate:0 | 8420 | #: report:loan.certificate:0 |
1560 | 8416 | #: report:loan.return.certificate:0 | 8421 | #: report:loan.return.certificate:0 |
1561 | 8417 | #: report:ship.loan.certificate:0 | 8422 | #: report:ship.loan.certificate:0 |
1562 | 8418 | #: report:ship.loan.return.certificate:0 | 8423 | #: report:ship.loan.return.certificate:0 |
1563 | 8424 | ======= | ||
1564 | 8425 | #: field:esc.invoice.line,product_qty:0 | ||
1565 | 8426 | >>>>>>> MERGE-SOURCE | ||
1566 | 8419 | #, python-format | 8427 | #, python-format |
1567 | 8420 | msgid "Quantity" | 8428 | msgid "Quantity" |
1568 | 8421 | msgstr "Quantité" | 8429 | msgstr "Quantité" |
1569 | @@ -8702,6 +8710,8 @@ | |||
1570 | 8702 | #: selection:signature.follow_up,doc_state:0 | 8710 | #: selection:signature.follow_up,doc_state:0 |
1571 | 8703 | #: selection:hq.entries.import,state:0 | 8711 | #: selection:hq.entries.import,state:0 |
1572 | 8704 | #: view:physical.inventory:0 | 8712 | #: view:physical.inventory:0 |
1573 | 8713 | #: selection:esc.invoice.line,state:0 | ||
1574 | 8714 | #: selection:esc.line.import,state:0 | ||
1575 | 8705 | #, python-format | 8715 | #, python-format |
1576 | 8706 | msgid "Draft" | 8716 | msgid "Draft" |
1577 | 8707 | msgstr "Brouillon" | 8717 | msgstr "Brouillon" |
1578 | @@ -8784,6 +8794,7 @@ | |||
1579 | 8784 | #: field:wizard.register.import,filename:0 | 8794 | #: field:wizard.register.import,filename:0 |
1580 | 8785 | #: field:account.invoice.import,filename:0 | 8795 | #: field:account.invoice.import,filename:0 |
1581 | 8786 | #: field:account.cv.import,filename:0 | 8796 | #: field:account.cv.import,filename:0 |
1582 | 8797 | #: field:esc.line.import,filename:0 | ||
1583 | 8787 | msgid "Imported filename" | 8798 | msgid "Imported filename" |
1584 | 8788 | msgstr "Nom du fichier importé" | 8799 | msgstr "Nom du fichier importé" |
1585 | 8789 | 8800 | ||
1586 | @@ -9632,7 +9643,7 @@ | |||
1587 | 9632 | msgid "Go to tender form" | 9643 | msgid "Go to tender form" |
1588 | 9633 | msgstr "Aller sur Formulaire Appels d'Offres" | 9644 | msgstr "Aller sur Formulaire Appels d'Offres" |
1589 | 9634 | 9645 | ||
1591 | 9635 | #. modules: account, base_setup, purchase_double_validation, msf_instance, sale, msf_config_locations, base, msf_button_access_rights, unifield_setup | 9646 | #. modules: account, base_setup, purchase_double_validation, msf_instance, sale, msf_config_locations, base, msf_button_access_rights, unifield_setup, account_hq_entries |
1592 | 9636 | #: view:wizard.multi.charts.accounts:0 | 9647 | #: view:wizard.multi.charts.accounts:0 |
1593 | 9637 | #: view:res.config:0 | 9648 | #: view:res.config:0 |
1594 | 9638 | #: view:res.config.users:0 | 9649 | #: view:res.config.users:0 |
1595 | @@ -9657,6 +9668,7 @@ | |||
1596 | 9657 | #: view:customer.commitment.setup:0 | 9668 | #: view:customer.commitment.setup:0 |
1597 | 9658 | #: view:previous.fy.dates.setup:0 | 9669 | #: view:previous.fy.dates.setup:0 |
1598 | 9659 | #: view:signature.setup:0 | 9670 | #: view:signature.setup:0 |
1599 | 9671 | #: view:esc_line.setup:0 | ||
1600 | 9660 | msgid "res_config_contents" | 9672 | msgid "res_config_contents" |
1601 | 9661 | msgstr "res_config_contents" | 9673 | msgstr "res_config_contents" |
1602 | 9662 | 9674 | ||
1603 | @@ -16305,6 +16317,7 @@ | |||
1604 | 16305 | #: view:sync.version.instance.monitor:0 | 16317 | #: view:sync.version.instance.monitor:0 |
1605 | 16306 | #: view:automated.export:0 | 16318 | #: view:automated.export:0 |
1606 | 16307 | #: view:automated.import:0 | 16319 | #: view:automated.import:0 |
1607 | 16320 | #: view:esc.invoice.line:0 | ||
1608 | 16308 | msgid "Group By..." | 16321 | msgid "Group By..." |
1609 | 16309 | msgstr "Grouper Par..." | 16322 | msgstr "Grouper Par..." |
1610 | 16310 | 16323 | ||
1611 | @@ -20083,6 +20096,7 @@ | |||
1612 | 20083 | #: field:account.invoice.import,progression:0 | 20096 | #: field:account.invoice.import,progression:0 |
1613 | 20084 | #: field:hq.entries.import,progress:0 | 20097 | #: field:hq.entries.import,progress:0 |
1614 | 20085 | #: field:account.cv.import,progression:0 | 20098 | #: field:account.cv.import,progression:0 |
1615 | 20099 | #: field:esc.line.import,progress:0 | ||
1616 | 20086 | msgid "Progression" | 20100 | msgid "Progression" |
1617 | 20087 | msgstr "Progression" | 20101 | msgstr "Progression" |
1618 | 20088 | 20102 | ||
1619 | @@ -20948,6 +20962,9 @@ | |||
1620 | 20948 | #: selection:wizard.import.ad.line,state:0 | 20962 | #: selection:wizard.import.ad.line,state:0 |
1621 | 20949 | #: selection:hq.entries.import,state:0 | 20963 | #: selection:hq.entries.import,state:0 |
1622 | 20950 | #: selection:account.cv.import,state:0 | 20964 | #: selection:account.cv.import,state:0 |
1623 | 20965 | #: view:esc.invoice.line:0 | ||
1624 | 20966 | #: selection:esc.invoice.line,state:0 | ||
1625 | 20967 | #: selection:esc.line.import,state:0 | ||
1626 | 20951 | msgid "Done" | 20968 | msgid "Done" |
1627 | 20952 | msgstr "Clôturé" | 20969 | msgstr "Clôturé" |
1628 | 20953 | 20970 | ||
1629 | @@ -23178,6 +23195,7 @@ | |||
1630 | 23178 | #: view:replenishment.segment.line:0 | 23195 | #: view:replenishment.segment.line:0 |
1631 | 23179 | #: view:replenishment.consolidated_oc.import:0 | 23196 | #: view:replenishment.consolidated_oc.import:0 |
1632 | 23180 | #: view:hq.entries.import:0 | 23197 | #: view:hq.entries.import:0 |
1633 | 23198 | #: view:esc.line.import:0 | ||
1634 | 23181 | msgid "Close" | 23199 | msgid "Close" |
1635 | 23182 | msgstr "Fermé" | 23200 | msgstr "Fermé" |
1636 | 23183 | 23201 | ||
1637 | @@ -24753,7 +24771,11 @@ | |||
1638 | 24753 | msgid "Phase Out products" | 24771 | msgid "Phase Out products" |
1639 | 24754 | msgstr "Produits Supprimés" | 24772 | msgstr "Produits Supprimés" |
1640 | 24755 | 24773 | ||
1641 | 24774 | <<<<<<< TREE | ||
1642 | 24756 | #. modules: tender_flow, product_asset, update_client, register_accounting, return_claim, msf_doc_import, supplier_catalogue, purchase_compare_rfq, product_list, stock, reason_types_moves, stock_override, purchase_override, specific_rules, kit, base, msf_tools, sales_followup, account, msf_outgoing, order_nomenclature, msf_field_access_rights, sale, msf_button_access_rights, analytic_distribution, msf_supply_doc_export, consumption_calculation, procurement_request, purchase_allocation_report | 24775 | #. modules: tender_flow, product_asset, update_client, register_accounting, return_claim, msf_doc_import, supplier_catalogue, purchase_compare_rfq, product_list, stock, reason_types_moves, stock_override, purchase_override, specific_rules, kit, base, msf_tools, sales_followup, account, msf_outgoing, order_nomenclature, msf_field_access_rights, sale, msf_button_access_rights, analytic_distribution, msf_supply_doc_export, consumption_calculation, procurement_request, purchase_allocation_report |
1643 | 24776 | ======= | ||
1644 | 24777 | #. modules: tender_flow, product_asset, update_client, register_accounting, return_claim, msf_doc_import, supplier_catalogue, purchase_compare_rfq, product_list, stock, reason_types_moves, stock_override, purchase_override, specific_rules, kit, base, msf_tools, sales_followup, account, msf_outgoing, order_nomenclature, msf_field_access_rights, sale, msf_button_access_rights, analytic_distribution, msf_supply_doc_export, consumption_calculation, procurement_request, account_hq_entries | ||
1645 | 24778 | >>>>>>> MERGE-SOURCE | ||
1646 | 24757 | #: report:addons/msf_supply_doc_export/report/report_pick_export_xls.mako:153 | 24779 | #: report:addons/msf_supply_doc_export/report/report_pick_export_xls.mako:153 |
1647 | 24758 | #: field:account.move.line.reconcile.writeoff,comment:0 | 24780 | #: field:account.move.line.reconcile.writeoff,comment:0 |
1648 | 24759 | #: field:account.commitment,notes:0 | 24781 | #: field:account.commitment,notes:0 |
1649 | @@ -24858,10 +24880,14 @@ | |||
1650 | 24858 | #: code:addons/msf_doc_import/report/return_from_unit_export.py:124 | 24880 | #: code:addons/msf_doc_import/report/return_from_unit_export.py:124 |
1651 | 24859 | #: code:addons/stock/report/closed_physical_inventory_report.py:134 | 24881 | #: code:addons/stock/report/closed_physical_inventory_report.py:134 |
1652 | 24860 | #: code:addons/msf_doc_import/wizard/__init__.py:57 | 24882 | #: code:addons/msf_doc_import/wizard/__init__.py:57 |
1653 | 24883 | <<<<<<< TREE | ||
1654 | 24861 | #: report:addons/purchase_allocation_report/report/po_allocation_report.mako:244 | 24884 | #: report:addons/purchase_allocation_report/report/po_allocation_report.mako:244 |
1655 | 24862 | #: report:addons/purchase_allocation_report/report/po_line_allocation_report.mako:198 | 24885 | #: report:addons/purchase_allocation_report/report/po_line_allocation_report.mako:198 |
1656 | 24863 | #: report:po.line.allocation.report:0 | 24886 | #: report:po.line.allocation.report:0 |
1657 | 24864 | #: report:shipment.donation.certificate:0 | 24887 | #: report:shipment.donation.certificate:0 |
1658 | 24888 | ======= | ||
1659 | 24889 | #: field:finance_price.track_changes,comment:0 | ||
1660 | 24890 | >>>>>>> MERGE-SOURCE | ||
1661 | 24865 | #, python-format | 24891 | #, python-format |
1662 | 24866 | msgid "Comment" | 24892 | msgid "Comment" |
1663 | 24867 | msgstr "Commentaire" | 24893 | msgstr "Commentaire" |
1664 | @@ -24961,10 +24987,11 @@ | |||
1665 | 24961 | msgid "Social IDs" | 24987 | msgid "Social IDs" |
1666 | 24962 | msgstr "Identité Sociale" | 24988 | msgstr "Identité Sociale" |
1667 | 24963 | 24989 | ||
1669 | 24964 | #. modules: account, register_accounting, product_attributes | 24990 | #. modules: account, register_accounting, product_attributes, account_hq_entries |
1670 | 24965 | #: view:account.bank.statement:0 | 24991 | #: view:account.bank.statement:0 |
1671 | 24966 | #: view:account.bank.statement:0 | 24992 | #: view:account.bank.statement:0 |
1672 | 24967 | #: report:addons/product_attributes/report/standard_price_track_changes.mako:101 | 24993 | #: report:addons/product_attributes/report/standard_price_track_changes.mako:101 |
1673 | 24994 | #: code:addons/account_hq_entries/report/finance_cost_price.py:72 | ||
1674 | 24968 | msgid "Transaction" | 24995 | msgid "Transaction" |
1675 | 24969 | msgstr "Transactions" | 24996 | msgstr "Transactions" |
1676 | 24970 | 24997 | ||
1677 | @@ -26226,8 +26253,9 @@ | |||
1678 | 26226 | msgid "Only products with total expired > 0" | 26253 | msgid "Only products with total expired > 0" |
1679 | 26227 | msgstr "Seuls produits ayant un total d'articles expirés > 0" | 26254 | msgstr "Seuls produits ayant un total d'articles expirés > 0" |
1680 | 26228 | 26255 | ||
1682 | 26229 | #. module: product | 26256 | #. module: product, account_hq_entries |
1683 | 26230 | #: field:product.template,loc_row:0 | 26257 | #: field:product.template,loc_row:0 |
1684 | 26258 | #: field:esc.line.import.rejected,xls_row:0 | ||
1685 | 26231 | msgid "Row" | 26259 | msgid "Row" |
1686 | 26232 | msgstr "Ligne" | 26260 | msgstr "Ligne" |
1687 | 26233 | 26261 | ||
1688 | @@ -37409,7 +37437,7 @@ | |||
1689 | 37409 | msgid "On Multiple Doc." | 37437 | msgid "On Multiple Doc." |
1690 | 37410 | msgstr "Sur Plusieurs Documents" | 37438 | msgstr "Sur Plusieurs Documents" |
1691 | 37411 | 37439 | ||
1693 | 37412 | #. modules: tender_flow, financing_contract, product_asset, account_corrections, product_attributes, msf_accrual, analytic_override, sync_client, account_mcdb, res_currency_tables, procurement_request, stock_forecast, board, stock_override, msf_doc_import, stock, finance, msf_homere_interface, base, kit, stock_schedule, account, msf_outgoing, resource, msf_audittrail, stock_move_tracking, msf_supply_doc_export, procurement_cycle, msf_order_date | 37440 | #. modules: tender_flow, financing_contract, product_asset, account_corrections, product_attributes, msf_accrual, analytic_override, sync_client, account_mcdb, res_currency_tables, procurement_request, stock_forecast, board, stock_override, msf_doc_import, stock, finance, msf_homere_interface, base, kit, stock_schedule, account, msf_outgoing, resource, msf_audittrail, stock_move_tracking, msf_supply_doc_export, procurement_cycle, msf_order_date, account_hq_entries |
1694 | 37413 | #: selection:account.aged.trial.balance,filter:0 | 37441 | #: selection:account.aged.trial.balance,filter:0 |
1695 | 37414 | #: report:account.analytic.account.journal:0 | 37442 | #: report:account.analytic.account.journal:0 |
1696 | 37415 | #: field:account.bank.statement,date:0 | 37443 | #: field:account.bank.statement,date:0 |
1697 | @@ -37535,6 +37563,7 @@ | |||
1698 | 37535 | #: report:addons/account/report/account_employee_ledger.mako:297 | 37563 | #: report:addons/account/report/account_employee_ledger.mako:297 |
1699 | 37536 | #: selection:wizard.account.employee.balance.tree,filter:0 | 37564 | #: selection:wizard.account.employee.balance.tree,filter:0 |
1700 | 37537 | #: field:signature.line,date:0 | 37565 | #: field:signature.line,date:0 |
1701 | 37566 | #: field:finance_price.track_changes,date:0 | ||
1702 | 37538 | #, python-format | 37567 | #, python-format |
1703 | 37539 | msgid "Date" | 37568 | msgid "Date" |
1704 | 37540 | msgstr "Date" | 37569 | msgstr "Date" |
1705 | @@ -40501,7 +40530,7 @@ | |||
1706 | 40501 | msgid "From confirmed to assigned." | 40530 | msgid "From confirmed to assigned." |
1707 | 40502 | msgstr "De confirmé à attribué." | 40531 | msgstr "De confirmé à attribué." |
1708 | 40503 | 40532 | ||
1710 | 40504 | #. modules: tender_flow, account_override, purchase_allocation_report, procurement_cycle, return_claim, supplier_catalogue, mission_stock, stock_override, purchase_compare_rfq, purchase_followup, msf_supply_doc_export, analytic_distribution, product, procurement_request, consumption_calculation, specific_rules, kit, msf_doc_import, procurement_report, sales_followup, account, msf_outgoing, product_attributes, sale, sourcing, stock, stock_batch_recall,msf_tools | 40533 | #. modules: tender_flow, account_override, purchase_allocation_report, procurement_cycle, return_claim, supplier_catalogue, mission_stock, stock_override, purchase_compare_rfq, purchase_followup, msf_supply_doc_export, analytic_distribution, product, procurement_request, consumption_calculation, specific_rules, kit, msf_doc_import, procurement_report, sales_followup, account, msf_outgoing, product_attributes, sale, sourcing, stock, stock_batch_recall,msf_tools, account_hq_entries |
1711 | 40505 | #: field:account.analytic.line,product_uom_id:0 | 40534 | #: field:account.analytic.line,product_uom_id:0 |
1712 | 40506 | #: selection:account.journal.column,field:0 | 40535 | #: selection:account.journal.column,field:0 |
1713 | 40507 | #: field:account.move.line,product_uom_id:0 | 40536 | #: field:account.move.line,product_uom_id:0 |
1714 | @@ -40650,6 +40679,7 @@ | |||
1715 | 40650 | #: code:addons/stock/report/closed_physical_inventory_report.py:124 | 40679 | #: code:addons/stock/report/closed_physical_inventory_report.py:124 |
1716 | 40651 | #: field:stock.pipe.per.product.instance.prod.lines,uom_id:0 | 40680 | #: field:stock.pipe.per.product.instance.prod.lines,uom_id:0 |
1717 | 40652 | #: field:report.batch.recall,uom_id:0 | 40681 | #: field:report.batch.recall,uom_id:0 |
1718 | 40682 | #: field:esc.invoice.line,uom_id:0 | ||
1719 | 40653 | #, python-format | 40683 | #, python-format |
1720 | 40654 | msgid "UoM" | 40684 | msgid "UoM" |
1721 | 40655 | msgstr "UdM" | 40685 | msgstr "UdM" |
1722 | @@ -42310,6 +42340,7 @@ | |||
1723 | 42310 | #: view:account.invoice.import:0 | 42340 | #: view:account.invoice.import:0 |
1724 | 42311 | #: view:hq.entries.import:0 | 42341 | #: view:hq.entries.import:0 |
1725 | 42312 | #: view:account.cv.import:0 | 42342 | #: view:account.cv.import:0 |
1726 | 42343 | #: view:esc.line.import:0 | ||
1727 | 42313 | msgid "Update" | 42344 | msgid "Update" |
1728 | 42314 | msgstr "Mettre à jour" | 42345 | msgstr "Mettre à jour" |
1729 | 42315 | 42346 | ||
1730 | @@ -43761,7 +43792,7 @@ | |||
1731 | 43761 | msgid "product code" | 43792 | msgid "product code" |
1732 | 43762 | msgstr "code produit" | 43793 | msgstr "code produit" |
1733 | 43763 | 43794 | ||
1735 | 43764 | #. modules: account, analytic_distribution_supply, finance, register_accounting, account_override, msf_audittrail, analytic_distribution | 43795 | #. modules: account, analytic_distribution_supply, finance, register_accounting, account_override, msf_audittrail, analytic_distribution, account_hq_entries |
1736 | 43765 | #: view:account.invoice.line:0 | 43796 | #: view:account.invoice.line:0 |
1737 | 43766 | #: field:account.invoice.tax,invoice_id:0 | 43797 | #: field:account.invoice.tax,invoice_id:0 |
1738 | 43767 | #: model:ir.model,name:account.model_account_invoice_line | 43798 | #: model:ir.model,name:account.model_account_invoice_line |
1739 | @@ -43775,6 +43806,7 @@ | |||
1740 | 43775 | #: model:ir.model,name:finance.model_account_invoice_line | 43806 | #: model:ir.model,name:finance.model_account_invoice_line |
1741 | 43776 | #: model:ir.model,name:msf_audittrail.model_account_invoice_line | 43807 | #: model:ir.model,name:msf_audittrail.model_account_invoice_line |
1742 | 43777 | #: model:ir.model,name:register_accounting.model_wizard_account_invoice_line | 43808 | #: model:ir.model,name:register_accounting.model_wizard_account_invoice_line |
1743 | 43809 | #: field:finance_price.track_changes,invoice_line_id:0 | ||
1744 | 43778 | msgid "Invoice Line" | 43810 | msgid "Invoice Line" |
1745 | 43779 | msgstr "Ligne de Facture" | 43811 | msgstr "Ligne de Facture" |
1746 | 43780 | 43812 | ||
1747 | @@ -44976,6 +45008,7 @@ | |||
1748 | 44976 | #: field:signature.export.wizard,end_date:0 | 45008 | #: field:signature.export.wizard,end_date:0 |
1749 | 44977 | #: field:hq.entries.import,end_date:0 | 45009 | #: field:hq.entries.import,end_date:0 |
1750 | 44978 | #: field:signature.image,to_date:0 | 45010 | #: field:signature.image,to_date:0 |
1751 | 45011 | #: field:esc.line.import,end_date:0 | ||
1752 | 44979 | msgid "End Date" | 45012 | msgid "End Date" |
1753 | 44980 | msgstr "Date de Clôture" | 45013 | msgstr "Date de Clôture" |
1754 | 44981 | 45014 | ||
1755 | @@ -45389,6 +45422,7 @@ | |||
1756 | 45389 | #. module: msf_homere_interface, account_hq_entries | 45422 | #. module: msf_homere_interface, account_hq_entries |
1757 | 45390 | #: field:hr.payroll.import.confirmation,total:0 | 45423 | #: field:hr.payroll.import.confirmation,total:0 |
1758 | 45391 | #: field:hq.entries.import,created:0 | 45424 | #: field:hq.entries.import,created:0 |
1759 | 45425 | #: field:esc.line.import,created:0 | ||
1760 | 45392 | msgid "Processed" | 45426 | msgid "Processed" |
1761 | 45393 | msgstr "Traité" | 45427 | msgstr "Traité" |
1762 | 45394 | 45428 | ||
1763 | @@ -45491,7 +45525,7 @@ | |||
1764 | 45491 | msgid "The currency you want to %s is used in at least one Commitment Voucher which isn't Done." | 45525 | msgid "The currency you want to %s is used in at least one Commitment Voucher which isn't Done." |
1765 | 45492 | msgstr "La devise que vous désirez %s est utilisée dans au moins un Bon d'Engagement non Terminé." | 45526 | msgstr "La devise que vous désirez %s est utilisée dans au moins un Bon d'Engagement non Terminé." |
1766 | 45493 | 45527 | ||
1768 | 45494 | #. modules: account, resource, account_mcdb, msf_instance, analytic, base, msf_audittrail, msf_profile, product_attributes, sync_client, useability_dashboard_and_menu | 45528 | #. modules: account, resource, account_mcdb, msf_instance, analytic, base, msf_audittrail, msf_profile, product_attributes, sync_client, useability_dashboard_and_menu, account_hq_entries |
1769 | 45495 | #: view:account.journal:0 | 45529 | #: view:account.journal:0 |
1770 | 45496 | #: field:account.journal,user_id:0 | 45530 | #: field:account.journal,user_id:0 |
1771 | 45497 | #: view:analytic.entries.report:0 | 45531 | #: view:analytic.entries.report:0 |
1772 | @@ -45529,8 +45563,13 @@ | |||
1773 | 45529 | #: field:signature.users.allowed,user_id:0 | 45563 | #: field:signature.users.allowed,user_id:0 |
1774 | 45530 | #: field:signature.follow_up,user_id:0 | 45564 | #: field:signature.follow_up,user_id:0 |
1775 | 45531 | #: field:signature.set_user,user_name:0 | 45565 | #: field:signature.set_user,user_name:0 |
1776 | 45566 | <<<<<<< TREE | ||
1777 | 45532 | #: code:addons/useability_dashboard_and_menu/report/signature_follow_up_search_report.py:204 | 45567 | #: code:addons/useability_dashboard_and_menu/report/signature_follow_up_search_report.py:204 |
1778 | 45533 | #: report:signature.follow_up.search.pdf:0 | 45568 | #: report:signature.follow_up.search.pdf:0 |
1779 | 45569 | ======= | ||
1780 | 45570 | #: code:addons/account_hq_entries/report/finance_cost_price.py:69 | ||
1781 | 45571 | #: field:finance_price.track_changes,user_id:0 | ||
1782 | 45572 | >>>>>>> MERGE-SOURCE | ||
1783 | 45534 | msgid "User" | 45573 | msgid "User" |
1784 | 45535 | msgstr "Utilisateur" | 45574 | msgstr "Utilisateur" |
1785 | 45536 | 45575 | ||
1786 | @@ -48028,7 +48067,7 @@ | |||
1787 | 48028 | msgid "Child IDs" | 48067 | msgid "Child IDs" |
1788 | 48029 | msgstr "ID Enfants" | 48068 | msgstr "ID Enfants" |
1789 | 48030 | 48069 | ||
1791 | 48031 | #. modules: purchase, account, finance, account_mcdb, sale, specific_rules, account_override, delete_button, tender_flow, analytic_distribution, msf_budget, register_accounting, msf_accrual, kit, stock | 48070 | #. modules: purchase, account, finance, account_mcdb, sale, specific_rules, account_override, delete_button, tender_flow, analytic_distribution, msf_budget, register_accounting, msf_accrual, kit, stock, account_hq_entries |
1792 | 48032 | #: view:account.common.report:0 | 48071 | #: view:account.common.report:0 |
1793 | 48033 | #: view:account.mcdb:0 | 48072 | #: view:account.mcdb:0 |
1794 | 48034 | #: view:account.chart:0 | 48073 | #: view:account.chart:0 |
1795 | @@ -48052,6 +48091,7 @@ | |||
1796 | 48052 | #: view:free.allocation.wizard:0 | 48091 | #: view:free.allocation.wizard:0 |
1797 | 48053 | #: view:account.commitment.line:0 | 48092 | #: view:account.commitment.line:0 |
1798 | 48054 | #: view:view.expired.expiring.stock:0 | 48093 | #: view:view.expired.expiring.stock:0 |
1799 | 48094 | #: view:esc.invoice.line:0 | ||
1800 | 48055 | msgid "Delete" | 48095 | msgid "Delete" |
1801 | 48056 | msgstr "Supprimer" | 48096 | msgstr "Supprimer" |
1802 | 48057 | 48097 | ||
1803 | @@ -48071,7 +48111,7 @@ | |||
1804 | 48071 | msgid "TVAÂ :" | 48111 | msgid "TVAÂ :" |
1805 | 48072 | msgstr "TVA :" | 48112 | msgstr "TVA :" |
1806 | 48073 | 48113 | ||
1808 | 48074 | #. modules: sourcing, sale, product_attributes, procurement_cycle, finance | 48114 | #. modules: sourcing, sale, product_attributes, procurement_cycle, finance, account_hq_entries |
1809 | 48075 | #: field:sale.report,product_code:0 | 48115 | #: field:sale.report,product_code:0 |
1810 | 48076 | #: field:sale.order.line,product_code:0 | 48116 | #: field:sale.order.line,product_code:0 |
1811 | 48077 | #: report:addons/product_attributes/report/standard_price_track_changes.mako:69 | 48117 | #: report:addons/product_attributes/report/standard_price_track_changes.mako:69 |
1812 | @@ -48079,7 +48119,11 @@ | |||
1813 | 48079 | #: report:addons/procurement_cycle/report_doc/replenishment_product_list.mako:124 | 48119 | #: report:addons/procurement_cycle/report_doc/replenishment_product_list.mako:124 |
1814 | 48080 | #: report:addons/procurement_cycle/report_doc/replenishment_segment.mako:368 | 48120 | #: report:addons/procurement_cycle/report_doc/replenishment_segment.mako:368 |
1815 | 48081 | #: report:addons/finance/report/fo_follow_up_finance_xls.mako:352 | 48121 | #: report:addons/finance/report/fo_follow_up_finance_xls.mako:352 |
1816 | 48122 | <<<<<<< TREE | ||
1817 | 48082 | #: code:addons/procurement_cycle/replenishment.py:3640 | 48123 | #: code:addons/procurement_cycle/replenishment.py:3640 |
1818 | 48124 | ======= | ||
1819 | 48125 | #: code:addons/account_hq_entries/report/finance_cost_price.py:51 | ||
1820 | 48126 | >>>>>>> MERGE-SOURCE | ||
1821 | 48083 | msgid "Product code" | 48127 | msgid "Product code" |
1822 | 48084 | msgstr "Code Produit" | 48128 | msgstr "Code Produit" |
1823 | 48085 | 48129 | ||
1824 | @@ -49926,8 +49970,9 @@ | |||
1825 | 49926 | msgid "Email" | 49970 | msgid "Email" |
1826 | 49927 | msgstr "Courriel" | 49971 | msgstr "Courriel" |
1827 | 49928 | 49972 | ||
1829 | 49929 | #. module: base | 49973 | #. module: base, account_hq_entries |
1830 | 49930 | #: field:workflow.triggers,instance_id:0 | 49974 | #: field:workflow.triggers,instance_id:0 |
1831 | 49975 | #: field:esc.invoice.line,dest_instance_id:0 | ||
1832 | 49931 | msgid "Destination Instance" | 49976 | msgid "Destination Instance" |
1833 | 49932 | msgstr "Instance de Destination" | 49977 | msgstr "Instance de Destination" |
1834 | 49933 | 49978 | ||
1835 | @@ -53493,7 +53538,7 @@ | |||
1836 | 53493 | msgid "Ignore Exception" | 53538 | msgid "Ignore Exception" |
1837 | 53494 | msgstr "Ignorer l'Exception" | 53539 | msgstr "Ignorer l'Exception" |
1838 | 53495 | 53540 | ||
1840 | 53496 | #. modules: account, finance, msf_instance, register_accounting, sale, base, msf_tools, mission_stock, sync_client, procurement_cycle, stock | 53541 | #. modules: account, finance, msf_instance, register_accounting, sale, base, msf_tools, mission_stock, sync_client, procurement_cycle, stock, account_hq_entries |
1841 | 53497 | #: view:account.bank.statement:0 | 53542 | #: view:account.bank.statement:0 |
1842 | 53498 | #: report:addons/account/report/account_liquidity_balance.mako:156 | 53543 | #: report:addons/account/report/account_liquidity_balance.mako:156 |
1843 | 53499 | #: field:workflow.workitem,inst_id:0 | 53544 | #: field:workflow.workitem,inst_id:0 |
1844 | @@ -53528,6 +53573,7 @@ | |||
1845 | 53528 | #: report:liquidity.position.pdf:0 | 53573 | #: report:liquidity.position.pdf:0 |
1846 | 53529 | #: field:stock.location.instance,instance_id:0 | 53574 | #: field:stock.location.instance,instance_id:0 |
1847 | 53530 | #: report:signature.export.report:0 | 53575 | #: report:signature.export.report:0 |
1848 | 53576 | #: code:addons/account_hq_entries/report/finance_cost_price.py:47 | ||
1849 | 53531 | msgid "Instance" | 53577 | msgid "Instance" |
1850 | 53532 | msgstr "Instance" | 53578 | msgstr "Instance" |
1851 | 53533 | 53579 | ||
1852 | @@ -56717,7 +56763,7 @@ | |||
1853 | 56717 | msgid "Operational advance linked po invoices" | 56763 | msgid "Operational advance linked po invoices" |
1854 | 56718 | msgstr "Operational advance linked po invoices" | 56764 | msgstr "Operational advance linked po invoices" |
1855 | 56719 | 56765 | ||
1857 | 56720 | #. modules: purchase, account, base_setup, hr, purchase_double_validation, msf_instance, sale, msf_config_locations, base, base_report_designer, unifield_setup, msf_button_access_rights | 56766 | #. modules: purchase, account, base_setup, hr, purchase_double_validation, msf_instance, sale, msf_config_locations, base, base_report_designer, unifield_setup, msf_button_access_rights, account_hq_entries |
1858 | 56721 | #: field:account.installer,progress:0 | 56767 | #: field:account.installer,progress:0 |
1859 | 56722 | #: field:account.installer.modules,progress:0 | 56768 | #: field:account.installer.modules,progress:0 |
1860 | 56723 | #: field:wizard.multi.charts.accounts,progress:0 | 56769 | #: field:wizard.multi.charts.accounts,progress:0 |
1861 | @@ -56753,6 +56799,7 @@ | |||
1862 | 56753 | #: field:customer.commitment.setup,progress:0 | 56799 | #: field:customer.commitment.setup,progress:0 |
1863 | 56754 | #: field:previous.fy.dates.setup,progress:0 | 56800 | #: field:previous.fy.dates.setup,progress:0 |
1864 | 56755 | #: field:signature.setup,progress:0 | 56801 | #: field:signature.setup,progress:0 |
1865 | 56802 | #: field:esc_line.setup,progress:0 | ||
1866 | 56756 | msgid "Configuration Progress" | 56803 | msgid "Configuration Progress" |
1867 | 56757 | msgstr "Progression de la Configuration" | 56804 | msgstr "Progression de la Configuration" |
1868 | 56758 | 56805 | ||
1869 | @@ -57884,10 +57931,12 @@ | |||
1870 | 57884 | msgid "Invoice Based on Sales Orders" | 57931 | msgid "Invoice Based on Sales Orders" |
1871 | 57885 | msgstr "Facture Basée sur commandes terrains" | 57932 | msgstr "Facture Basée sur commandes terrains" |
1872 | 57886 | 57933 | ||
1874 | 57887 | #. module: transport_mgmt, msf_supply_doc_export | 57934 | #. module: transport_mgmt, msf_supply_doc_export, account_hq_entries |
1875 | 57888 | #: field:international.transport.cost.report,order_id:0 | 57935 | #: field:international.transport.cost.report,order_id:0 |
1876 | 57889 | #: field:local.transport.cost.report,order_id:0 | 57936 | #: field:local.transport.cost.report,order_id:0 |
1877 | 57890 | #: report:addons/msf_supply_doc_export/report/supplier_performance_report_xls.mako:229 | 57937 | #: report:addons/msf_supply_doc_export/report/supplier_performance_report_xls.mako:229 |
1878 | 57938 | #: view:esc.invoice.line:0 | ||
1879 | 57939 | #: field:esc.invoice.line,po_name:0 | ||
1880 | 57891 | msgid "PO Reference" | 57940 | msgid "PO Reference" |
1881 | 57892 | msgstr "Référence BC" | 57941 | msgstr "Référence BC" |
1882 | 57893 | 57942 | ||
1883 | @@ -57903,12 +57952,16 @@ | |||
1884 | 57903 | msgid "Import Intl Commitments" | 57952 | msgid "Import Intl Commitments" |
1885 | 57904 | msgstr "Import des Engagements" | 57953 | msgstr "Import des Engagements" |
1886 | 57905 | 57954 | ||
1888 | 57906 | #. module: msf_supply_doc_export, register_accounting, stock_override, useability_dashboard_and_menu | 57955 | #. module: msf_supply_doc_export, register_accounting, stock_override, useability_dashboard_and_menu, account_hq_entries |
1889 | 57907 | #: report:po.follow.up_rml:0 | 57956 | #: report:po.follow.up_rml:0 |
1890 | 57908 | #: report:addons/register_accounting/report/fully_report_xls.mako:566 | 57957 | #: report:addons/register_accounting/report/fully_report_xls.mako:566 |
1891 | 57909 | #: report:addons/stock_override/report/report_stock_move_xls.mako:140 | 57958 | #: report:addons/stock_override/report/report_stock_move_xls.mako:140 |
1892 | 57910 | #: selection:signature.follow_up,doc_type:0 | 57959 | #: selection:signature.follow_up,doc_type:0 |
1893 | 57960 | <<<<<<< TREE | ||
1894 | 57911 | #: code:addons/useability_dashboard_and_menu/report/signature_follow_up_search_report.py:39 | 57961 | #: code:addons/useability_dashboard_and_menu/report/signature_follow_up_search_report.py:39 |
1895 | 57962 | ======= | ||
1896 | 57963 | #: field:finance_price.track_changes,stock_picking_id:0 | ||
1897 | 57964 | >>>>>>> MERGE-SOURCE | ||
1898 | 57912 | msgid "IN" | 57965 | msgid "IN" |
1899 | 57913 | msgstr "ENTRANT" | 57966 | msgstr "ENTRANT" |
1900 | 57914 | 57967 | ||
1901 | @@ -60526,7 +60579,7 @@ | |||
1902 | 60526 | msgid "Pallet" | 60579 | msgid "Pallet" |
1903 | 60527 | msgstr "Palette" | 60580 | msgstr "Palette" |
1904 | 60528 | 60581 | ||
1906 | 60529 | #. modules: msf_outgoing, account_mcdb, stock_override, sale, specific_rules, account_override, sourcing, update_client, stock, analytic_distribution, sync_client, resource, finance, account_mcdb, sales_followup, account, procurement_request, hr, consumption_calculation, account_override, base, purchase_followup, sync_client | 60582 | #. modules: msf_outgoing, account_mcdb, stock_override, sale, specific_rules, account_override, sourcing, update_client, stock, analytic_distribution, sync_client, resource, finance, account_mcdb, sales_followup, account, procurement_request, hr, consumption_calculation, account_override, base, purchase_followup, sync_client, product |
1907 | 60530 | #: field:output.currency.for.export,state:0 | 60583 | #: field:output.currency.for.export,state:0 |
1908 | 60531 | #: field:account.move,register_line_id:0 | 60584 | #: field:account.move,register_line_id:0 |
1909 | 60532 | #: field:res.partner,by_invoice_type:0 | 60585 | #: field:res.partner,by_invoice_type:0 |
1910 | @@ -60590,6 +60643,7 @@ | |||
1911 | 60590 | #: field:wizard.account.employee.balance.tree,display_load_button:0 | 60643 | #: field:wizard.account.employee.balance.tree,display_load_button:0 |
1912 | 60591 | #: field:signature.add_user.wizard,signature_id:0 | 60644 | #: field:signature.add_user.wizard,signature_id:0 |
1913 | 60592 | #: field:signature.document.wizard,user_id:0 | 60645 | #: field:signature.document.wizard,user_id:0 |
1914 | 60646 | #: field:product.template,finance_price_currency_id:0 | ||
1915 | 60593 | msgid "unknown" | 60647 | msgid "unknown" |
1916 | 60594 | msgstr "inconnu" | 60648 | msgstr "inconnu" |
1917 | 60595 | 60649 | ||
1918 | @@ -68707,12 +68761,13 @@ | |||
1919 | 68707 | msgid "Supplier Information" | 68761 | msgid "Supplier Information" |
1920 | 68708 | msgstr "Fournisseur - Informations" | 68762 | msgstr "Fournisseur - Informations" |
1921 | 68709 | 68763 | ||
1923 | 68710 | #. module: msf_outgoing | 68764 | #. module: msf_outgoing, account_hq_entries |
1924 | 68711 | #: view:ppl.processor:0 | 68765 | #: view:ppl.processor:0 |
1925 | 68712 | #: view:stock.incoming.processor:0 | 68766 | #: view:stock.incoming.processor:0 |
1926 | 68713 | #: view:internal.picking.processor:0 | 68767 | #: view:internal.picking.processor:0 |
1927 | 68714 | #: view:outgoing.delivery.processor:0 | 68768 | #: view:outgoing.delivery.processor:0 |
1928 | 68715 | #: view:stock.picking:0 | 68769 | #: view:stock.picking:0 |
1929 | 68770 | #: view:esc.line.import:0 | ||
1930 | 68716 | msgid "Reset" | 68771 | msgid "Reset" |
1931 | 68717 | msgstr "RÀZ" | 68772 | msgstr "RÀZ" |
1932 | 68718 | 68773 | ||
1933 | @@ -74064,6 +74119,8 @@ | |||
1934 | 74064 | #: field:hq.entries.import,error:0 | 74119 | #: field:hq.entries.import,error:0 |
1935 | 74065 | #: selection:hq.entries.import,state:0 | 74120 | #: selection:hq.entries.import,state:0 |
1936 | 74066 | #: selection:account.cv.import,state:0 | 74121 | #: selection:account.cv.import,state:0 |
1937 | 74122 | #: field:esc.line.import,error:0 | ||
1938 | 74123 | #: selection:esc.line.import,state:0 | ||
1939 | 74067 | #, python-format, python-format | 74124 | #, python-format, python-format |
1940 | 74068 | msgid "Error" | 74125 | msgid "Error" |
1941 | 74069 | msgstr "Erreur" | 74126 | msgstr "Erreur" |
1942 | @@ -74519,6 +74576,7 @@ | |||
1943 | 74519 | #: field:account.invoice.import,error_ids:0 | 74576 | #: field:account.invoice.import,error_ids:0 |
1944 | 74520 | #: field:hq.entries.import,nberrors:0 | 74577 | #: field:hq.entries.import,nberrors:0 |
1945 | 74521 | #: field:account.cv.import,error_ids:0 | 74578 | #: field:account.cv.import,error_ids:0 |
1946 | 74579 | #: field:esc.line.import,nberrors:0 | ||
1947 | 74522 | #, python-format | 74580 | #, python-format |
1948 | 74523 | msgid "Errors" | 74581 | msgid "Errors" |
1949 | 74524 | msgstr "Erreurs" | 74582 | msgstr "Erreurs" |
1950 | @@ -74637,7 +74695,7 @@ | |||
1951 | 74637 | msgid "Line %s :: The move is not 'Available'. Check the state of the stock move and re-try." | 74695 | msgid "Line %s :: The move is not 'Available'. Check the state of the stock move and re-try." |
1952 | 74638 | msgstr "Ligne %s :: Le mouvement n'est pas 'Disponible'. Vérifier le statut du mouvement de Stock et ré-essayez." | 74696 | msgstr "Ligne %s :: Le mouvement n'est pas 'Disponible'. Vérifier le statut du mouvement de Stock et ré-essayez." |
1953 | 74639 | 74697 | ||
1955 | 74640 | #. modules: purchase, account, msf_outgoing, analytic_distribution_supply, finance, product_asset, account_override, base, msf_audittrail, register_accounting, analytic_distribution | 74698 | #. modules: purchase, account, msf_outgoing, analytic_distribution_supply, finance, product_asset, account_override, base, msf_audittrail, register_accounting, analytic_distribution, account_hq_entries |
1956 | 74641 | #: view:account.invoice:0 | 74699 | #: view:account.invoice:0 |
1957 | 74642 | #: view:account.invoice.report:0 | 74700 | #: view:account.invoice.report:0 |
1958 | 74643 | #: report:account.invoice2:0 | 74701 | #: report:account.invoice2:0 |
1959 | @@ -74670,6 +74728,8 @@ | |||
1960 | 74670 | #: view:account.direct.invoice.wizard:0 | 74728 | #: view:account.direct.invoice.wizard:0 |
1961 | 74671 | #: field:account.invoice.import,invoice_id:0 | 74729 | #: field:account.invoice.import,invoice_id:0 |
1962 | 74672 | #: field:account.cv.import,invoice_id:0 | 74730 | #: field:account.cv.import,invoice_id:0 |
1963 | 74731 | #: field:finance_price.track_changes,invoice_id:0 | ||
1964 | 74732 | #: selection:finance_price.track_changes,matching_type:0 | ||
1965 | 74673 | msgid "Invoice" | 74733 | msgid "Invoice" |
1966 | 74674 | msgstr "Facture" | 74734 | msgstr "Facture" |
1967 | 74675 | 74735 | ||
1968 | @@ -75223,6 +75283,7 @@ | |||
1969 | 75223 | #: field:signature.export.wizard,start_date:0 | 75283 | #: field:signature.export.wizard,start_date:0 |
1970 | 75224 | #: field:hq.entries.import,start_date:0 | 75284 | #: field:hq.entries.import,start_date:0 |
1971 | 75225 | #: field:signature.image,from_date:0 | 75285 | #: field:signature.image,from_date:0 |
1972 | 75286 | #: field:esc.line.import,start_date:0 | ||
1973 | 75226 | msgid "Start Date" | 75287 | msgid "Start Date" |
1974 | 75227 | msgstr "Date de Début" | 75288 | msgstr "Date de Début" |
1975 | 75228 | 75289 | ||
1976 | @@ -76460,7 +76521,7 @@ | |||
1977 | 76460 | msgid "Canada/Yukon" | 76521 | msgid "Canada/Yukon" |
1978 | 76461 | msgstr "Canada/Yukon" | 76522 | msgstr "Canada/Yukon" |
1979 | 76462 | 76523 | ||
1981 | 76463 | #. modules: purchase_allocation_report, unifield_setup, sales_followup, msf_doc_import, purchase, account, useability_dashboard_and_menu | 76524 | #. modules: purchase_allocation_report, unifield_setup, sales_followup, msf_doc_import, purchase, account, useability_dashboard_and_menu, account_hq_entries |
1982 | 76464 | #: report:addons/purchase_allocation_report/report/po_line_allocation_report.mako:147 | 76525 | #: report:addons/purchase_allocation_report/report/po_line_allocation_report.mako:147 |
1983 | 76465 | #: report:purchase.order.allocation.report:0 | 76526 | #: report:purchase.order.allocation.report:0 |
1984 | 76466 | #: field:purchase.order.line.allocation.report,order_id:0 | 76527 | #: field:purchase.order.line.allocation.report,order_id:0 |
1985 | @@ -76471,7 +76532,11 @@ | |||
1986 | 76471 | #: code:addons/msf_doc_import/wizard/wizard_import_ad_line.py:122 | 76532 | #: code:addons/msf_doc_import/wizard/wizard_import_ad_line.py:122 |
1987 | 76472 | #: field:account.invoice.tax,purchase_id:0 | 76533 | #: field:account.invoice.tax,purchase_id:0 |
1988 | 76473 | #: selection:signature.follow_up,doc_type:0 | 76534 | #: selection:signature.follow_up,doc_type:0 |
1989 | 76535 | <<<<<<< TREE | ||
1990 | 76474 | #: code:addons/useability_dashboard_and_menu/report/signature_follow_up_search_report.py:32 | 76536 | #: code:addons/useability_dashboard_and_menu/report/signature_follow_up_search_report.py:32 |
1991 | 76537 | ======= | ||
1992 | 76538 | #: selection:finance_price.track_changes,matching_type:0 | ||
1993 | 76539 | >>>>>>> MERGE-SOURCE | ||
1994 | 76475 | #, python-format | 76540 | #, python-format |
1995 | 76476 | msgid "PO" | 76541 | msgid "PO" |
1996 | 76477 | msgstr "BC" | 76542 | msgstr "BC" |
1997 | @@ -77019,7 +77084,7 @@ | |||
1998 | 77019 | msgid "# of lines imported" | 77084 | msgid "# of lines imported" |
1999 | 77020 | msgstr "# de lignes importées" | 77085 | msgstr "# de lignes importées" |
2000 | 77021 | 77086 | ||
2002 | 77022 | #. modules: purchase, account, msf_outgoing, finance, purchase_override, sales_followup, supplier_catalogue, sale, product, kit, account_override, purchase_allocation_report, order_types, tender_flow, msf_supply_doc_export, msf_doc_import, register_accounting, stock, purchase_followup, consumption_calculation, procurement_request | 77087 | #. modules: purchase, account, msf_outgoing, finance, purchase_override, sales_followup, supplier_catalogue, sale, product, kit, account_override, purchase_allocation_report, order_types, tender_flow, msf_supply_doc_export, msf_doc_import, register_accounting, stock, purchase_followup, consumption_calculation, procurement_request, account_hq_entries |
2003 | 77023 | #: field:account.invoice.line,price_unit:0 | 77088 | #: field:account.invoice.line,price_unit:0 |
2004 | 77024 | #: report:account.invoice2:0 | 77089 | #: report:account.invoice2:0 |
2005 | 77025 | #: report:allocation.invoices.report:0 | 77090 | #: report:allocation.invoices.report:0 |
2006 | @@ -77079,7 +77144,12 @@ | |||
2007 | 77079 | #: report:addons/msf_supply_doc_export/report/report_tender_xls.mako:73 | 77144 | #: report:addons/msf_supply_doc_export/report/report_tender_xls.mako:73 |
2008 | 77080 | #: code:addons/msf_doc_import/wizard/__init__.py:92 | 77145 | #: code:addons/msf_doc_import/wizard/__init__.py:92 |
2009 | 77081 | #: field:tender.line,price_unit:0 | 77146 | #: field:tender.line,price_unit:0 |
2010 | 77147 | <<<<<<< TREE | ||
2011 | 77082 | #: report:shipment.donation.certificate:0 | 77148 | #: report:shipment.donation.certificate:0 |
2012 | 77149 | ======= | ||
2013 | 77150 | #: field:esc.invoice.line,price_unit:0 | ||
2014 | 77151 | #: field:finance_price.track_changes,price_unit:0 | ||
2015 | 77152 | >>>>>>> MERGE-SOURCE | ||
2016 | 77083 | #, python-format | 77153 | #, python-format |
2017 | 77084 | msgid "Unit Price" | 77154 | msgid "Unit Price" |
2018 | 77085 | msgstr "Prix Unitaire" | 77155 | msgstr "Prix Unitaire" |
2019 | @@ -79795,7 +79865,13 @@ | |||
2020 | 79795 | msgid "Date cancel" | 79865 | msgid "Date cancel" |
2021 | 79796 | msgstr "Date d'annulation" | 79866 | msgstr "Date d'annulation" |
2022 | 79797 | 79867 | ||
2023 | 79868 | <<<<<<< TREE | ||
2024 | 79798 | #. modules: sales_followup, msf_outgoing, procurement_request, consumption_calculation, sale, purchase_allocation_report, msf_supply_doc_export | 79869 | #. modules: sales_followup, msf_outgoing, procurement_request, consumption_calculation, sale, purchase_allocation_report, msf_supply_doc_export |
2025 | 79870 | ======= | ||
2026 | 79871 | #. modules: sales_followup, consumption_calculation, procurement_request, msf_supply_doc_export, sale, msf_outgoing, account_hq_entries | ||
2027 | 79872 | #: view:sale.order:0 | ||
2028 | 79873 | #: field:sale.order,requestor:0 | ||
2029 | 79874 | >>>>>>> MERGE-SOURCE | ||
2030 | 79799 | #: field:product.history.consumption,requestor_id:0 | 79875 | #: field:product.history.consumption,requestor_id:0 |
2031 | 79800 | #: field:product.likely.expire.report,requestor_id:0 | 79876 | #: field:product.likely.expire.report,requestor_id:0 |
2032 | 79801 | #: field:weekly.forecast.report,requestor_id:0 | 79877 | #: field:weekly.forecast.report,requestor_id:0 |
2033 | @@ -79811,7 +79887,12 @@ | |||
2034 | 79811 | #: field:purchase.order.line.allocation.report,requestor:0 | 79887 | #: field:purchase.order.line.allocation.report,requestor:0 |
2035 | 79812 | #: field:internal.request.import,imp_requestor:0 | 79888 | #: field:internal.request.import,imp_requestor:0 |
2036 | 79813 | #: field:internal.request.import,in_requestor:0 | 79889 | #: field:internal.request.import,in_requestor:0 |
2037 | 79890 | <<<<<<< TREE | ||
2038 | 79814 | #: report:addons/sales_followup/report/ir_follow_up_location_report_xls.mako:313 | 79891 | #: report:addons/sales_followup/report/ir_follow_up_location_report_xls.mako:313 |
2039 | 79892 | ======= | ||
2040 | 79893 | #: field:stock.picking,requestor:0 | ||
2041 | 79894 | #: view:esc.invoice.line:0 | ||
2042 | 79895 | >>>>>>> MERGE-SOURCE | ||
2043 | 79815 | msgid "Requestor" | 79896 | msgid "Requestor" |
2044 | 79816 | msgstr "Demandeur" | 79897 | msgstr "Demandeur" |
2045 | 79817 | 79898 | ||
2046 | @@ -81637,6 +81718,8 @@ | |||
2047 | 81637 | #: view:replenishment.consolidated_oc.import:0 | 81718 | #: view:replenishment.consolidated_oc.import:0 |
2048 | 81638 | #: view:wizard.import.ad.line:0 | 81719 | #: view:wizard.import.ad.line:0 |
2049 | 81639 | #: view:account.cv.import:0 | 81720 | #: view:account.cv.import:0 |
2050 | 81721 | #: view:esc.line.import:0 | ||
2051 | 81722 | #: field:esc.line.import.rejected,wiz_id:0 | ||
2052 | 81640 | msgid "Import" | 81723 | msgid "Import" |
2053 | 81641 | msgstr "Importer" | 81724 | msgstr "Importer" |
2054 | 81642 | 81725 | ||
2055 | @@ -82345,6 +82428,8 @@ | |||
2056 | 82345 | #: field:msf.accrual.line,state:0 | 82428 | #: field:msf.accrual.line,state:0 |
2057 | 82346 | #: field:hq.entries.import,state:0 | 82429 | #: field:hq.entries.import,state:0 |
2058 | 82347 | #: field:account.cv.import,state:0 | 82430 | #: field:account.cv.import,state:0 |
2059 | 82431 | #: field:esc.invoice.line,state:0 | ||
2060 | 82432 | #: field:esc.line.import,state:0 | ||
2061 | 82348 | #, python-format | 82433 | #, python-format |
2062 | 82349 | msgid "State" | 82434 | msgid "State" |
2063 | 82350 | msgstr "Statut" | 82435 | msgstr "Statut" |
2064 | @@ -83091,7 +83176,7 @@ | |||
2065 | 83091 | msgid "SFTP connection succeeded" | 83176 | msgid "SFTP connection succeeded" |
2066 | 83092 | msgstr "SFTP connection succeeded" | 83177 | msgstr "SFTP connection succeeded" |
2067 | 83093 | 83178 | ||
2069 | 83094 | #. modules: tender_flow, product_nomenclature, product_asset, account_override, product_attributes, register_accounting, product_expiry, procurement_cycle, return_claim, supplier_catalogue, import_data, mission_stock, unifield_setup, stock_forecast, stock_batch_recall, order_types, msf_doc_import, purchase_followup, product, stock_override, stock_schedule, service_purchasing, consumption_calculation, purchase_override, specific_rules, kit, base, product_list, product_manufacturer, procurement_report, threshold_value, purchase, account, msf_outgoing, stock_move_tracking, purchase_allocation_report, procurement_auto, sale, transport_mgmt, procurement, sourcing, msf_audittrail, purchase_msf, stock, sync_so, msf_tools, analytic_distribution | 83179 | #. modules: tender_flow, product_nomenclature, product_asset, account_override, product_attributes, register_accounting, product_expiry, procurement_cycle, return_claim, supplier_catalogue, import_data, mission_stock, unifield_setup, stock_forecast, stock_batch_recall, order_types, msf_doc_import, purchase_followup, product, stock_override, stock_schedule, service_purchasing, consumption_calculation, purchase_override, specific_rules, kit, base, product_list, product_manufacturer, procurement_report, threshold_value, purchase, account, msf_outgoing, stock_move_tracking, purchase_allocation_report, procurement_auto, sale, transport_mgmt, procurement, sourcing, msf_audittrail, purchase_msf, stock, sync_so, msf_tools, analytic_distribution, account_hq_entries |
2070 | 83095 | #: field:account.analytic.line,product_id:0 | 83180 | #: field:account.analytic.line,product_id:0 |
2071 | 83096 | #: view:account.entries.report:0 | 83181 | #: view:account.entries.report:0 |
2072 | 83097 | #: field:account.entries.report,product_id:0 | 83182 | #: field:account.entries.report,product_id:0 |
2073 | @@ -83299,6 +83384,9 @@ | |||
2074 | 83299 | #: field:account.commitment.line,line_product_id:0 | 83384 | #: field:account.commitment.line,line_product_id:0 |
2075 | 83300 | #: field:product.ed_bn.mass.update.history,product_id:0 | 83385 | #: field:product.ed_bn.mass.update.history,product_id:0 |
2076 | 83301 | #: field:stock.picking,product_id:0 | 83386 | #: field:stock.picking,product_id:0 |
2077 | 83387 | #: view:esc.invoice.line:0 | ||
2078 | 83388 | #: field:esc.invoice.line,product_id:0 | ||
2079 | 83389 | #: field:finance_price.track_changes,product_id:0 | ||
2080 | 83302 | #, python-format | 83390 | #, python-format |
2081 | 83303 | msgid "Product" | 83391 | msgid "Product" |
2082 | 83304 | msgstr "Produit" | 83392 | msgstr "Produit" |
2083 | @@ -83557,6 +83645,7 @@ | |||
2084 | 83557 | #: field:wizard.register.import,file:0 | 83645 | #: field:wizard.register.import,file:0 |
2085 | 83558 | #: field:account.invoice.import,file:0 | 83646 | #: field:account.invoice.import,file:0 |
2086 | 83559 | #: field:account.cv.import,file:0 | 83647 | #: field:account.cv.import,file:0 |
2087 | 83648 | #: field:esc.line.import,file:0 | ||
2088 | 83560 | msgid "File" | 83649 | msgid "File" |
2089 | 83561 | msgstr "Fichier" | 83650 | msgstr "Fichier" |
2090 | 83562 | 83651 | ||
2091 | @@ -92376,6 +92465,7 @@ | |||
2092 | 92376 | #: report:addons/msf_outgoing/report/freight_manifest_xls.mako:372 | 92465 | #: report:addons/msf_outgoing/report/freight_manifest_xls.mako:372 |
2093 | 92377 | #: report:freight_manifest:0 | 92466 | #: report:freight_manifest:0 |
2094 | 92378 | #: field:hq.entries.import,total:0 | 92467 | #: field:hq.entries.import,total:0 |
2095 | 92468 | #: field:esc.line.import,total:0 | ||
2096 | 92379 | #, python-format | 92469 | #, python-format |
2097 | 92380 | msgid "Total" | 92470 | msgid "Total" |
2098 | 92381 | msgstr "Total" | 92471 | msgstr "Total" |
2099 | @@ -93399,7 +93489,7 @@ | |||
2100 | 93399 | msgid "America/Anguilla" | 93489 | msgid "America/Anguilla" |
2101 | 93400 | msgstr "America/Anguilla" | 93490 | msgstr "America/Anguilla" |
2102 | 93401 | 93491 | ||
2104 | 93402 | #. modules: tender_flow, financing_contract, account_override, product_attributes, msf_accrual, msf_doc_import, finance, base_setup, account_mcdb, res_currency_tables, supplier_catalogue, stock_override, product_asset, analytic_override, purchase_compare_rfq, msf_supply_doc_export, analytic_distribution, product, msf_homere_interface, msf_instance, register_accounting, specific_rules, kit, base, msf_currency_revaluation, account_subscription, return_claim, res_currency_functional, msf_budget, purchase, account, msf_outgoing, msf_partner, purchase_allocation_report, sale, transport_mgmt, stock, sync_so, purchase_followup, consumption_calculation, procurement_request, order_types, purchase_override | 93492 | #. modules: tender_flow, financing_contract, account_override, product_attributes, msf_accrual, msf_doc_import, finance, base_setup, account_mcdb, res_currency_tables, supplier_catalogue, stock_override, product_asset, analytic_override, purchase_compare_rfq, msf_supply_doc_export, analytic_distribution, product, msf_homere_interface, msf_instance, register_accounting, specific_rules, kit, base, msf_currency_revaluation, account_subscription, return_claim, res_currency_functional, msf_budget, purchase, account, msf_outgoing, msf_partner, purchase_allocation_report, sale, transport_mgmt, stock, sync_so, purchase_followup, consumption_calculation, procurement_request, order_types, purchase_override, account_hq_entries |
2105 | 93403 | #: view:account.account:0 | 93493 | #: view:account.account:0 |
2106 | 93404 | #: report:account.analytic.account.journal:0 | 93494 | #: report:account.analytic.account.journal:0 |
2107 | 93405 | #: view:account.analytic.line:0 | 93495 | #: view:account.analytic.line:0 |
2108 | @@ -93589,7 +93679,11 @@ | |||
2109 | 93589 | #: report:addons/account/report/account_employee_ledger.mako:315 | 93679 | #: report:addons/account/report/account_employee_ledger.mako:315 |
2110 | 93590 | #: report:addons/finance/report/account_employee_balance_tree_xls.mako:345 | 93680 | #: report:addons/finance/report/account_employee_balance_tree_xls.mako:345 |
2111 | 93591 | #: report:addons/account/report/export_cv.mako:117 | 93681 | #: report:addons/account/report/export_cv.mako:117 |
2112 | 93682 | <<<<<<< TREE | ||
2113 | 93592 | #: report:shipment.donation.certificate:0 | 93683 | #: report:shipment.donation.certificate:0 |
2114 | 93684 | ======= | ||
2115 | 93685 | #: field:esc.invoice.line,currency_id:0 | ||
2116 | 93686 | >>>>>>> MERGE-SOURCE | ||
2117 | 93593 | #, python-format | 93687 | #, python-format |
2118 | 93594 | msgid "Currency" | 93688 | msgid "Currency" |
2119 | 93595 | msgstr "Devise" | 93689 | msgstr "Devise" |
2120 | @@ -96551,6 +96645,7 @@ | |||
2121 | 96551 | #: report:account.invoice2:0 | 96645 | #: report:account.invoice2:0 |
2122 | 96552 | #: code:addons/account_override/res_company.py:40 | 96646 | #: code:addons/account_override/res_company.py:40 |
2123 | 96553 | #: report:addons/account/report/export_invoice.mako:104 | 96647 | #: report:addons/account/report/export_invoice.mako:104 |
2124 | 96648 | #: field:hq.entries.split,document_date:0 | ||
2125 | 96554 | #, python-format | 96649 | #, python-format |
2126 | 96555 | msgid "Document Date" | 96650 | msgid "Document Date" |
2127 | 96556 | msgstr "Date du Document" | 96651 | msgstr "Date du Document" |
2128 | @@ -97277,7 +97372,11 @@ | |||
2129 | 97277 | #: view:signature.set_user:0 | 97372 | #: view:signature.set_user:0 |
2130 | 97278 | #: view:account.cv.import:0 | 97373 | #: view:account.cv.import:0 |
2131 | 97279 | #: view:split.composition.item.wizard:0 | 97374 | #: view:split.composition.item.wizard:0 |
2132 | 97375 | <<<<<<< TREE | ||
2133 | 97280 | #: view:signature.follow_up.search.wizard:0 | 97376 | #: view:signature.follow_up.search.wizard:0 |
2134 | 97377 | ======= | ||
2135 | 97378 | #: view:esc.line.import:0 | ||
2136 | 97379 | >>>>>>> MERGE-SOURCE | ||
2137 | 97281 | #, python-format | 97380 | #, python-format |
2138 | 97282 | msgid "Cancel" | 97381 | msgid "Cancel" |
2139 | 97283 | msgstr "Annuler" | 97382 | msgstr "Annuler" |
2140 | @@ -97928,7 +98027,7 @@ | |||
2141 | 97928 | msgid "Removal date" | 98027 | msgid "Removal date" |
2142 | 97929 | msgstr "Date de Retrait" | 98028 | msgstr "Date de Retrait" |
2143 | 97930 | 98029 | ||
2145 | 97931 | #. modules: msf_budget, sync_client, res_currency_tables, financing_contract, msf_homere_interface, msf_instance, export_import_lang, msf_outgoing, msf_doc_import, product_attributes | 98030 | #. modules: msf_budget, sync_client, res_currency_tables, financing_contract, msf_homere_interface, msf_instance, export_import_lang, msf_outgoing, msf_doc_import, product_attributes, account_hq_entries |
2146 | 97932 | #: view:base.language.export:0 | 98031 | #: view:base.language.export:0 |
2147 | 97933 | #: view:base.language.import:0 | 98032 | #: view:base.language.import:0 |
2148 | 97934 | #: view:msf.language.import:0 | 98033 | #: view:msf.language.import:0 |
2149 | @@ -97942,6 +98041,7 @@ | |||
2150 | 97942 | #: view:ppl.set_pack_on_lines:0 | 98041 | #: view:ppl.set_pack_on_lines:0 |
2151 | 97943 | #: code:addons/msf_doc_import/purchase_order.py:61 | 98042 | #: code:addons/msf_doc_import/purchase_order.py:61 |
2152 | 97944 | #: view:product.ask.activate.wizard:0 | 98043 | #: view:product.ask.activate.wizard:0 |
2153 | 98044 | #: view:esc.line.import:0 | ||
2154 | 97945 | #, python-format | 98045 | #, python-format |
2155 | 97946 | msgid "OK" | 98046 | msgid "OK" |
2156 | 97947 | msgstr "OK" | 98047 | msgstr "OK" |
2157 | @@ -98423,7 +98523,7 @@ | |||
2158 | 98423 | msgid "To" | 98523 | msgid "To" |
2159 | 98424 | msgstr "À" | 98524 | msgstr "À" |
2160 | 98425 | 98525 | ||
2162 | 98426 | #. modules: delivery_mechanism, account, msf_outgoing, msf_homere_interface, sync_client, stock_override, kit, account_override, register_accounting, msf_doc_import, return_claim, stock | 98526 | #. modules: delivery_mechanism, account, msf_outgoing, msf_homere_interface, sync_client, stock_override, kit, account_override, register_accounting, msf_doc_import, return_claim, stock, account_hq_entries |
2163 | 98427 | #: view:account.automatic.reconcile:0 | 98527 | #: view:account.automatic.reconcile:0 |
2164 | 98428 | #: view:account.use.model:0 | 98528 | #: view:account.use.model:0 |
2165 | 98429 | #: view:debit.note.import.invoice:0 | 98529 | #: view:debit.note.import.invoice:0 |
2166 | @@ -98482,6 +98582,7 @@ | |||
2167 | 98482 | #: view:wizard.common.import.line:0 | 98582 | #: view:wizard.common.import.line:0 |
2168 | 98483 | #: selection:stock.move.in.processor,sequence_issue:0 | 98583 | #: selection:stock.move.in.processor,sequence_issue:0 |
2169 | 98484 | #: view:account.cv.import:0 | 98584 | #: view:account.cv.import:0 |
2170 | 98585 | #: view:hq.entries.import:0 | ||
2171 | 98485 | msgid "Ok" | 98586 | msgid "Ok" |
2172 | 98486 | msgstr "Ok" | 98587 | msgstr "Ok" |
2173 | 98487 | 98588 | ||
2174 | @@ -99471,11 +99572,12 @@ | |||
2175 | 99471 | " This module aims at set documents to 'Done' state.\n" | 99572 | " This module aims at set documents to 'Done' state.\n" |
2176 | 99472 | " " | 99573 | " " |
2177 | 99473 | 99574 | ||
2179 | 99474 | #. modules: procurement, resource, stock | 99575 | #. modules: procurement, resource, stock, account_hq_entries |
2180 | 99475 | #: view:procurement.order:0 | 99576 | #: view:procurement.order:0 |
2181 | 99476 | #: field:procurement.order,name:0 | 99577 | #: field:procurement.order,name:0 |
2182 | 99477 | #: view:resource.calendar.leaves:0 | 99578 | #: view:resource.calendar.leaves:0 |
2183 | 99478 | #: view:stock.move:0 | 99579 | #: view:stock.move:0 |
2184 | 99580 | #: field:esc.line.import.rejected,error:0 | ||
2185 | 99479 | msgid "Reason" | 99581 | msgid "Reason" |
2186 | 99480 | msgstr "Motif" | 99582 | msgstr "Motif" |
2187 | 99481 | 99583 | ||
2188 | @@ -100058,7 +100160,7 @@ | |||
2189 | 100058 | msgid "Monthly review consumption line" | 100160 | msgid "Monthly review consumption line" |
2190 | 100059 | msgstr "Ligne de Révision Mensuelle des Consommations" | 100161 | msgstr "Ligne de Révision Mensuelle des Consommations" |
2191 | 100060 | 100162 | ||
2193 | 100061 | #. modules: purchase, account, base_setup, hr, import_data, msf_instance, sale, msf_config_locations, export_import_lang, base, base_report_designer, unifield_setup, report_webkit, purchase_double_validation, msf_button_access_rights | 100163 | #. modules: purchase, account, base_setup, hr, import_data, msf_instance, sale, msf_config_locations, export_import_lang, base, base_report_designer, unifield_setup, report_webkit, purchase_double_validation, msf_button_access_rights, account_hq_entries |
2194 | 100062 | #: field:account.installer,config_logo:0 | 100164 | #: field:account.installer,config_logo:0 |
2195 | 100063 | #: field:account.installer.modules,config_logo:0 | 100165 | #: field:account.installer.modules,config_logo:0 |
2196 | 100064 | #: field:wizard.multi.charts.accounts,config_logo:0 | 100166 | #: field:wizard.multi.charts.accounts,config_logo:0 |
2197 | @@ -100113,6 +100215,7 @@ | |||
2198 | 100113 | #: field:signature.image,pngb64:0 | 100215 | #: field:signature.image,pngb64:0 |
2199 | 100114 | #: field:signature.line,image_id:0 | 100216 | #: field:signature.line,image_id:0 |
2200 | 100115 | #: field:signature.setup,config_logo:0 | 100217 | #: field:signature.setup,config_logo:0 |
2201 | 100218 | #: field:esc_line.setup,config_logo:0 | ||
2202 | 100116 | msgid "Image" | 100219 | msgid "Image" |
2203 | 100117 | msgstr "Image" | 100220 | msgstr "Image" |
2204 | 100118 | 100221 | ||
2205 | @@ -103726,12 +103829,13 @@ | |||
2206 | 103726 | msgstr " Import en cours... \n" | 103829 | msgstr " Import en cours... \n" |
2207 | 103727 | " Veuillez attendre que l'import soit terminer avant de faire des modifications." | 103830 | " Veuillez attendre que l'import soit terminer avant de faire des modifications." |
2208 | 103728 | 103831 | ||
2210 | 103729 | #. modules: msf_doc_import, msf_outgoing, msf_printed_documents | 103832 | #. modules: msf_doc_import, msf_outgoing, msf_printed_documents, account_hq_entries |
2211 | 103730 | #: code:addons/msf_doc_import/wizard/wizard_import_ppl_to_create_ship.py:71 | 103833 | #: code:addons/msf_doc_import/wizard/wizard_import_ppl_to_create_ship.py:71 |
2212 | 103731 | #: report:addons/msf_outgoing/report/pre_packing_excel_report_xls.mako:192 | 103834 | #: report:addons/msf_outgoing/report/pre_packing_excel_report_xls.mako:192 |
2213 | 103732 | #: view:shipment:0 | 103835 | #: view:shipment:0 |
2214 | 103733 | #: report:addons/msf_outgoing/report/freight_manifest_xls.mako:238 | 103836 | #: report:addons/msf_outgoing/report/freight_manifest_xls.mako:238 |
2215 | 103734 | #: report:freight_manifest:0 | 103837 | #: report:freight_manifest:0 |
2216 | 103838 | #: view:esc.invoice.line:0 | ||
2217 | 103735 | #, python-format | 103839 | #, python-format |
2218 | 103736 | msgid "Consignee" | 103840 | msgid "Consignee" |
2219 | 103737 | msgstr "Destinataire" | 103841 | msgstr "Destinataire" |
2220 | @@ -105612,8 +105716,9 @@ | |||
2221 | 105612 | msgid "Processing Qty can't be larger than move qty." | 105716 | msgid "Processing Qty can't be larger than move qty." |
2222 | 105613 | msgstr "La qté à traiter ne peut être plus grande que la qté du mouvement." | 105717 | msgstr "La qté à traiter ne peut être plus grande que la qté du mouvement." |
2223 | 105614 | 105718 | ||
2225 | 105615 | #. module: stock | 105719 | #. module: stock, account_hq_entries |
2226 | 105616 | #: field:stock.move,qty_processed:0 | 105720 | #: field:stock.move,qty_processed:0 |
2227 | 105721 | #: code:addons/account_hq_entries/report/finance_cost_price.py:74 | ||
2228 | 105617 | msgid "Qty Processed" | 105722 | msgid "Qty Processed" |
2229 | 105618 | msgstr "Qté Taitée" | 105723 | msgstr "Qté Taitée" |
2230 | 105619 | 105724 | ||
2231 | @@ -108523,9 +108628,10 @@ | |||
2232 | 108523 | msgid "Generated according to latest IR's RDD (from most recent Order calc which is now closed)." | 108628 | msgid "Generated according to latest IR's RDD (from most recent Order calc which is now closed)." |
2233 | 108524 | msgstr "Généré en fonction de la DLS du dernier DI (depuis le plus récent Calcul de commande fermé)." | 108629 | msgstr "Généré en fonction de la DLS du dernier DI (depuis le plus récent Calcul de commande fermé)." |
2234 | 108525 | 108630 | ||
2236 | 108526 | #. module: procurement_cycle | 108631 | #. module: procurement_cycle, account_hq_entries |
2237 | 108527 | #: view:replenishment.segment:0 | 108632 | #: view:replenishment.segment:0 |
2238 | 108528 | #: field:replenishment.segment,last_generation:0 | 108633 | #: field:replenishment.segment,last_generation:0 |
2239 | 108634 | #: code:addons/account_hq_entries/report/finance_cost_price.py:63 | ||
2240 | 108529 | msgid "Generation Date" | 108635 | msgid "Generation Date" |
2241 | 108530 | msgstr "Date Génération" | 108636 | msgstr "Date Génération" |
2242 | 108531 | 108637 | ||
2243 | @@ -117771,6 +117877,7 @@ | |||
2244 | 117771 | 117877 | ||
2245 | 117772 | #. module: account_hq_entries | 117878 | #. module: account_hq_entries |
2246 | 117773 | #: selection:hq.entries.import,state:0 | 117879 | #: selection:hq.entries.import,state:0 |
2247 | 117880 | #: selection:esc.line.import,state:0 | ||
2248 | 117774 | msgid "In-progress" | 117881 | msgid "In-progress" |
2249 | 117775 | msgstr "En cours" | 117882 | msgstr "En cours" |
2250 | 117776 | 117883 | ||
2251 | @@ -118884,6 +118991,7 @@ | |||
2252 | 118884 | #: view:account.bank.statement.line:0 | 118991 | #: view:account.bank.statement.line:0 |
2253 | 118885 | msgid "Only This Journal" | 118992 | msgid "Only This Journal" |
2254 | 118886 | msgstr "Seulement Ce Journal" | 118993 | msgstr "Seulement Ce Journal" |
2255 | 118994 | <<<<<<< TREE | ||
2256 | 118887 | 118995 | ||
2257 | 118888 | #. module: msf_doc_import | 118996 | #. module: msf_doc_import |
2258 | 118889 | #: code:addons/msf_doc_import/wizard/wizard_po_simulation_screen.py:1058 | 118997 | #: code:addons/msf_doc_import/wizard/wizard_po_simulation_screen.py:1058 |
2259 | @@ -119224,3 +119332,366 @@ | |||
2260 | 119224 | #: report:shipment.donation.certificate:0 | 119332 | #: report:shipment.donation.certificate:0 |
2261 | 119225 | msgid "Additional items:" | 119333 | msgid "Additional items:" |
2262 | 119226 | msgstr "Éléments supplémentaires:" | 119334 | msgstr "Éléments supplémentaires:" |
2263 | 119335 | ======= | ||
2264 | 119336 | |||
2265 | 119337 | #. module: account_hq_entries | ||
2266 | 119338 | #: view:esc_line.setup:0 | ||
2267 | 119339 | #: model:ir.actions.act_window,name:account_hq_entries.action_esc_line_setup | ||
2268 | 119340 | msgid "Activate International Invoices Lines" | ||
2269 | 119341 | msgstr "Activer les Lignes de Factures Internationales" | ||
2270 | 119342 | |||
2271 | 119343 | #. module: account_hq_entries | ||
2272 | 119344 | #: field:esc_line.setup,esc_line:0 | ||
2273 | 119345 | msgid "Activate International Invoices Lines ?" | ||
2274 | 119346 | msgstr "Activer les Lignes de Factures Internationales ?" | ||
2275 | 119347 | |||
2276 | 119348 | #. module: account_hq_entries | ||
2277 | 119349 | #: field:esc.invoice.line,consignee_cc_id:0 | ||
2278 | 119350 | msgid "Consignee Cost Center" | ||
2279 | 119351 | msgstr "Centre de Coût de Destination" | ||
2280 | 119352 | |||
2281 | 119353 | #. module: account_hq_entries | ||
2282 | 119354 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:222 | ||
2283 | 119355 | #, python-format | ||
2284 | 119356 | msgid "Consignee Cost Center/Instance %s not found or does not match any active instance." | ||
2285 | 119357 | msgstr "Centre coût / Instance de Destination %s non trouvé ou ne correspondant pas à une instance active." | ||
2286 | 119358 | |||
2287 | 119359 | #. module: account_hq_entries | ||
2288 | 119360 | #: field:esc.invoice.line,imported_consignee_instance:0 | ||
2289 | 119361 | msgid "Consignee Instance" | ||
2290 | 119362 | msgstr "Instance Destinataire" | ||
2291 | 119363 | |||
2292 | 119364 | #. module: account_hq_entries | ||
2293 | 119365 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:260 | ||
2294 | 119366 | #, python-format | ||
2295 | 119367 | msgid "Currency is mandatory." | ||
2296 | 119368 | msgstr "Devise obligatoire." | ||
2297 | 119369 | |||
2298 | 119370 | #. module: account_hq_entries | ||
2299 | 119371 | #: model:ir.actions.server,name:account_hq_entries.esc_line_delete_action | ||
2300 | 119372 | msgid "Delete Selected draft entries" | ||
2301 | 119373 | msgstr "Supprimer les lignes brouillon sélectionnées" | ||
2302 | 119374 | |||
2303 | 119375 | #. module: account_hq_entries | ||
2304 | 119376 | #: view:esc.invoice.line:0 | ||
2305 | 119377 | msgid "Do you want to delete this line ?" | ||
2306 | 119378 | msgstr "Voulez-vous supprimer cette ligne ?" | ||
2307 | 119379 | |||
2308 | 119380 | #. module: account_hq_entries | ||
2309 | 119381 | #: view:esc.line.import:0 | ||
2310 | 119382 | msgid "Download Empty Template" | ||
2311 | 119383 | msgstr "Télécharger le modèle" | ||
2312 | 119384 | |||
2313 | 119385 | #. module: account_hq_entries | ||
2314 | 119386 | #: view:esc.line.import:0 | ||
2315 | 119387 | msgid "Download Rejected Lines" | ||
2316 | 119388 | msgstr "Télécharger les lignes rejetées" | ||
2317 | 119389 | |||
2318 | 119390 | #. module: product | ||
2319 | 119391 | #: selection:product.mass.update,type_of_ed_bn:0 | ||
2320 | 119392 | msgid "ED Only" | ||
2321 | 119393 | msgstr "Seulement DE" | ||
2322 | 119394 | |||
2323 | 119395 | #. module: account_hq_entries | ||
2324 | 119396 | #: field:esc.invoice.line,shipment_ref:0 | ||
2325 | 119397 | msgid "Field mapping with IN" | ||
2326 | 119398 | msgstr "Mappage avec IN" | ||
2327 | 119399 | |||
2328 | 119400 | #. module: product | ||
2329 | 119401 | #: selection:product.price.type,field:0 | ||
2330 | 119402 | #: field:product.template,finance_price:0 | ||
2331 | 119403 | msgid "Finance Cost Price" | ||
2332 | 119404 | msgstr "Prix Finance" | ||
2333 | 119405 | |||
2334 | 119406 | #. module: account_hq_entries | ||
2335 | 119407 | #: model:ir.model,name:account_hq_entries.model_finance_price_track_changes | ||
2336 | 119408 | msgid "Finance Price Track changes" | ||
2337 | 119409 | msgstr "Changements du Prix Finance" | ||
2338 | 119410 | |||
2339 | 119411 | #. module: product | ||
2340 | 119412 | #: view:product.product:0 | ||
2341 | 119413 | msgid "HQ Merge product" | ||
2342 | 119414 | msgstr "Fusion Siège de produits" | ||
2343 | 119415 | |||
2344 | 119416 | #. module: account_hq_entries | ||
2345 | 119417 | #: field:esc.invoice.line,in_number:0 | ||
2346 | 119418 | msgid "IN Number" | ||
2347 | 119419 | msgstr "Numéro IN" | ||
2348 | 119420 | |||
2349 | 119421 | #. module: account_hq_entries | ||
2350 | 119422 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:82 | ||
2351 | 119423 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:134 | ||
2352 | 119424 | #: model:ir.model,name:account_hq_entries.model_esc_line_import | ||
2353 | 119425 | #, python-format | ||
2354 | 119426 | msgid "Import International Invoices Lines" | ||
2355 | 119427 | msgstr "Import de Lignes de Factures Internationales" | ||
2356 | 119428 | |||
2357 | 119429 | #. module: account_hq_entries | ||
2358 | 119430 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:321 | ||
2359 | 119431 | #, python-format | ||
2360 | 119432 | msgid "Imported with error(s)" | ||
2361 | 119433 | msgstr "Importé avec des erreurs" | ||
2362 | 119434 | |||
2363 | 119435 | #. module: account_hq_entries | ||
2364 | 119436 | #: view:esc.invoice.line:0 | ||
2365 | 119437 | #: model:ir.model,name:account_hq_entries.model_esc_invoice_line | ||
2366 | 119438 | msgid "International Invoices Line" | ||
2367 | 119439 | msgstr "Ligne de Factures Internationales" | ||
2368 | 119440 | |||
2369 | 119441 | #. module: account_hq_entries | ||
2370 | 119442 | #: model:ir.actions.act_window,name:account_hq_entries.esc_invoice_line_action | ||
2371 | 119443 | #: model:ir.ui.menu,name:account_hq_entries.esc_invoice_line_menu | ||
2372 | 119444 | msgid "International Invoices Lines" | ||
2373 | 119445 | msgstr "Lignes de Factures Internationales" | ||
2374 | 119446 | |||
2375 | 119447 | #. module: account_hq_entries | ||
2376 | 119448 | #: view:esc.line.import:0 | ||
2377 | 119449 | #: model:ir.actions.server,name:account_hq_entries.esc_line_import_action | ||
2378 | 119450 | #: model:ir.ui.menu,name:account_hq_entries.esc_line_import_menu | ||
2379 | 119451 | msgid "International Invoices Lines Import" | ||
2380 | 119452 | msgstr "Import de Lignes de Factures Internationales" | ||
2381 | 119453 | |||
2382 | 119454 | #. module: account_hq_entries | ||
2383 | 119455 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:100 | ||
2384 | 119456 | #: model:ir.actions.report.xml,name:account_hq_entries.esc_line_import_template | ||
2385 | 119457 | #, python-format | ||
2386 | 119458 | msgid "International Invoices Lines Template" | ||
2387 | 119459 | msgstr "Modèle de Lignes de Factures Internationales" | ||
2388 | 119460 | |||
2389 | 119461 | #. module: account_hq_entries | ||
2390 | 119462 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:324 | ||
2391 | 119463 | #, python-format | ||
2392 | 119464 | msgid "International Invoices Lines import successful" | ||
2393 | 119465 | msgstr "Import réussi des Lignes de Factures Internationales" | ||
2394 | 119466 | |||
2395 | 119467 | #. module: account_hq_entries | ||
2396 | 119468 | #: view:esc.invoice.line:0 | ||
2397 | 119469 | msgid "International Invoices Liness" | ||
2398 | 119470 | msgstr "Lignes de Factures Internationales" | ||
2399 | 119471 | |||
2400 | 119472 | #. module: account_hq_entries | ||
2401 | 119473 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:111 | ||
2402 | 119474 | #: model:ir.actions.report.xml,name:account_hq_entries.esc_line_import_rejected | ||
2403 | 119475 | #, python-format | ||
2404 | 119476 | msgid "International Invoices Rejected Lines" | ||
2405 | 119477 | msgstr "Lignes Internationales Rejetées" | ||
2406 | 119478 | |||
2407 | 119479 | #. module: account_hq_entries | ||
2408 | 119480 | #: field:finance_price.track_changes,esc_invoice_line_id:0 | ||
2409 | 119481 | msgid "International Line" | ||
2410 | 119482 | msgstr "Ligne Internationale" | ||
2411 | 119483 | |||
2412 | 119484 | #. module: account_hq_entries | ||
2413 | 119485 | #: selection:finance_price.track_changes,matching_type:0 | ||
2414 | 119486 | msgid "International Lines" | ||
2415 | 119487 | msgstr "Lignes Internationales" | ||
2416 | 119488 | |||
2417 | 119489 | #. module: account_hq_entries | ||
2418 | 119490 | #: view:esc.line.import:0 | ||
2419 | 119491 | msgid "Keep import results and close the window" | ||
2420 | 119492 | msgstr "Garder les résultats de l'import et fermer la fenêtre." | ||
2421 | 119493 | |||
2422 | 119494 | #. module: account_hq_entries | ||
2423 | 119495 | #: view:finance_price.track_changes:0 | ||
2424 | 119496 | #: model:ir.actions.act_window,name:account_hq_entries.finance_price_track_changes_action | ||
2425 | 119497 | #: model:ir.ui.menu,name:account_hq_entries.finance_price_track_changes_menu | ||
2426 | 119498 | msgid "Line Matching" | ||
2427 | 119499 | msgstr "Correspondance des lignes" | ||
2428 | 119500 | |||
2429 | 119501 | #. module: account_hq_entries | ||
2430 | 119502 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:312 | ||
2431 | 119503 | #, python-format | ||
2432 | 119504 | msgid "Line duplicated in the system" | ||
2433 | 119505 | msgstr "Ligne dupliquée dans le système" | ||
2434 | 119506 | |||
2435 | 119507 | #. module: account_hq_entries | ||
2436 | 119508 | #: model:ir.actions.act_window,name:account_hq_entries.esc_line_to_finance_price_tc | ||
2437 | 119509 | msgid "Matching" | ||
2438 | 119510 | msgstr "Correspondance" | ||
2439 | 119511 | |||
2440 | 119512 | #. module: account_hq_entries | ||
2441 | 119513 | #: code:addons/account_hq_entries/report/finance_cost_price.py:76 | ||
2442 | 119514 | #: field:finance_price.track_changes,matching_type:0 | ||
2443 | 119515 | #, python-format | ||
2444 | 119516 | msgid "Matching Type" | ||
2445 | 119517 | msgstr "Type de correspondance" | ||
2446 | 119518 | |||
2447 | 119519 | #. module: account_hq_entries | ||
2448 | 119520 | #: field:finance_price.track_changes,stock_move_id:0 | ||
2449 | 119521 | msgid "Move line" | ||
2450 | 119522 | msgstr "Mouvement" | ||
2451 | 119523 | |||
2452 | 119524 | #. module: account_hq_entries | ||
2453 | 119525 | #: code:addons/account_hq_entries/report/finance_cost_price.py:71 | ||
2454 | 119526 | #: field:finance_price.track_changes,new_price:0 | ||
2455 | 119527 | #, python-format | ||
2456 | 119528 | msgid "New Finance Price" | ||
2457 | 119529 | msgstr "Nouveau Prix Finance" | ||
2458 | 119530 | |||
2459 | 119531 | #. module: product | ||
2460 | 119532 | #: selection:product.mass.update,type_of_ed_bn:0 | ||
2461 | 119533 | msgid "No BN/No ED" | ||
2462 | 119534 | msgstr "Pas NL/Pas DE" | ||
2463 | 119535 | |||
2464 | 119536 | #. module: account_hq_entries | ||
2465 | 119537 | #: view:esc.invoice.line:0 | ||
2466 | 119538 | msgid "Not Done" | ||
2467 | 119539 | msgstr "Non clôturé" | ||
2468 | 119540 | |||
2469 | 119541 | #. module: account_hq_entries | ||
2470 | 119542 | #: code:addons/account_hq_entries/report/finance_cost_price.py:70 | ||
2471 | 119543 | #, python-format | ||
2472 | 119544 | msgid "Old Finance Price" | ||
2473 | 119545 | msgstr "Ancien Prix Finance" | ||
2474 | 119546 | |||
2475 | 119547 | #. module: account_hq_entries | ||
2476 | 119548 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:197 | ||
2477 | 119549 | #, python-format | ||
2478 | 119550 | msgid "Order ref %s does not match the PO pattern" | ||
2479 | 119551 | msgstr "La Réf. de Commande %s ne correspond pas au format d'un BdC" | ||
2480 | 119552 | |||
2481 | 119553 | #. module: account_hq_entries | ||
2482 | 119554 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:192 | ||
2483 | 119555 | #, python-format | ||
2484 | 119556 | msgid "Order ref is mandatory" | ||
2485 | 119557 | msgstr "Réf. de Commande obligatoire." | ||
2486 | 119558 | |||
2487 | 119559 | #. module: account_hq_entries | ||
2488 | 119560 | #: field:finance_price.track_changes,purchase_oder_line_id:0 | ||
2489 | 119561 | msgid "PO line" | ||
2490 | 119562 | msgstr "Ligne BdC" | ||
2491 | 119563 | |||
2492 | 119564 | #. module: product | ||
2493 | 119565 | #: code:addons/product/wizard/product_mass_update.py:426 | ||
2494 | 119566 | #, python-format | ||
2495 | 119567 | msgid "Please limit your query to a maximum of 500 products." | ||
2496 | 119568 | msgstr "Veuillez restreindre la recherche à un maximum de 500 produits." | ||
2497 | 119569 | |||
2498 | 119570 | #. module: account_hq_entries | ||
2499 | 119571 | #: field:finance_price.track_changes,old_price:0 | ||
2500 | 119572 | msgid "Previous Finance Price" | ||
2501 | 119573 | msgstr "Précédent Prix Finance" | ||
2502 | 119574 | |||
2503 | 119575 | #. module: account_hq_entries | ||
2504 | 119576 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:234 | ||
2505 | 119577 | #, python-format | ||
2506 | 119578 | msgid "Product Code %s not found." | ||
2507 | 119579 | msgstr "Code Produit %s non trouvé." | ||
2508 | 119580 | |||
2509 | 119581 | #. module: account_hq_entries | ||
2510 | 119582 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:227 | ||
2511 | 119583 | #, python-format | ||
2512 | 119584 | msgid "Product Code is mandatory." | ||
2513 | 119585 | msgstr "Code Produit obligatoire." | ||
2514 | 119586 | |||
2515 | 119587 | #. module: account_hq_entries | ||
2516 | 119588 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:247 | ||
2517 | 119589 | #, python-format | ||
2518 | 119590 | msgid "Product Quantity %s cannot be 0 or negative" | ||
2519 | 119591 | msgstr "La Quantité %s ne peut pas être 0 ou négative" | ||
2520 | 119592 | |||
2521 | 119593 | #. module: account_hq_entries | ||
2522 | 119594 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:243 | ||
2523 | 119595 | #, python-format | ||
2524 | 119596 | msgid "Product Quantity %s is not a number." | ||
2525 | 119597 | msgstr "La Quantité %s n'est pas un nombre." | ||
2526 | 119598 | |||
2527 | 119599 | #. module: account_hq_entries | ||
2528 | 119600 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:238 | ||
2529 | 119601 | #, python-format | ||
2530 | 119602 | msgid "Product quantity is mandatory." | ||
2531 | 119603 | msgstr "La Quantité est obligatoire." | ||
2532 | 119604 | |||
2533 | 119605 | #. module: product | ||
2534 | 119606 | #: field:product.mass.update,not_activated_product_ids:0 | ||
2535 | 119607 | #: field:product.mass.update,not_deactivated_product_ids:0 | ||
2536 | 119608 | msgid "Product(s) that can not be deactivated" | ||
2537 | 119609 | msgstr "Produit(s) qui ne peuvent pas être désativé(s)" | ||
2538 | 119610 | |||
2539 | 119611 | #. module: account_hq_entries | ||
2540 | 119612 | #: field:finance_price.track_changes,stock_before:0 | ||
2541 | 119613 | msgid "Qty in Stock Before" | ||
2542 | 119614 | msgstr "Qté en stock avant" | ||
2543 | 119615 | |||
2544 | 119616 | #. module: account_hq_entries | ||
2545 | 119617 | #: field:finance_price.track_changes,qty_processed:0 | ||
2546 | 119618 | msgid "Quantity Processed" | ||
2547 | 119619 | msgstr "Quantité Traitée" | ||
2548 | 119620 | |||
2549 | 119621 | #. module: account_hq_entries | ||
2550 | 119622 | #: sql_constraint:esc.invoice.line:0 | ||
2551 | 119623 | msgid "Quantity must be greater than 0." | ||
2552 | 119624 | msgstr "La Quantité doit être supérieure à 0." | ||
2553 | 119625 | |||
2554 | 119626 | #. module: account_hq_entries | ||
2555 | 119627 | #: model:ir.model,name:account_hq_entries.model_esc_line_import_rejected | ||
2556 | 119628 | msgid "Rejected Lines" | ||
2557 | 119629 | msgstr "Lignes Rejetées" | ||
2558 | 119630 | |||
2559 | 119631 | #. module: account_hq_entries | ||
2560 | 119632 | #: field:esc.invoice.line,remaining_qty:0 | ||
2561 | 119633 | msgid "Remaining Quantity" | ||
2562 | 119634 | msgstr "Quantié Restante" | ||
2563 | 119635 | |||
2564 | 119636 | #. module: account_hq_entries | ||
2565 | 119637 | #: field:esc.invoice.line,requestor_cc_id:0 | ||
2566 | 119638 | msgid "Requestor Cost Center" | ||
2567 | 119639 | msgstr "Centre de Coût du Demandeur" | ||
2568 | 119640 | |||
2569 | 119641 | #. module: account_hq_entries | ||
2570 | 119642 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:206 | ||
2571 | 119643 | #, python-format | ||
2572 | 119644 | msgid "Requestor Cost Center %s not found or does not match any active instance." | ||
2573 | 119645 | msgstr "Centre de Coût du demandeur %s non trouvé ou ne correspondant pas à une instance active." | ||
2574 | 119646 | |||
2575 | 119647 | #. module: account_hq_entries | ||
2576 | 119648 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:201 | ||
2577 | 119649 | #, python-format | ||
2578 | 119650 | msgid "Requestor Cost Center is mandatory" | ||
2579 | 119651 | msgstr "Le Centre de Coût du demandeur est obligatoire" | ||
2580 | 119652 | |||
2581 | 119653 | #. module: account_hq_entries | ||
2582 | 119654 | #: view:esc.line.import:0 | ||
2583 | 119655 | msgid "Reset import and close the window" | ||
2584 | 119656 | msgstr "Mise à zéro de l'import et fermeture de la fenêtre" | ||
2585 | 119657 | |||
2586 | 119658 | #. module: account_hq_entries | ||
2587 | 119659 | #: code:addons/account_hq_entries/report/finance_cost_price.py:73 | ||
2588 | 119660 | #, python-format | ||
2589 | 119661 | msgid "Stock Level Before" | ||
2590 | 119662 | msgstr "Niveau de Stock Avant" | ||
2591 | 119663 | |||
2592 | 119664 | #. module: account_hq_entries | ||
2593 | 119665 | #: view:esc.line.import:0 | ||
2594 | 119666 | msgid "This will import lines from a SpreadSheet xml file." | ||
2595 | 119667 | msgstr "Imported des lines depuis un fichier au format Feuille de Calcul XML 2003" | ||
2596 | 119668 | |||
2597 | 119669 | #. module: account_hq_entries | ||
2598 | 119670 | #: model:ir.actions.report.xml,name:account_hq_entries.report_finance_cost_price | ||
2599 | 119671 | msgid "Track Changes Finance Price" | ||
2600 | 119672 | msgstr "Suivi des changements du Prix Finance" | ||
2601 | 119673 | |||
2602 | 119674 | #. module: account_hq_entries | ||
2603 | 119675 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:256 | ||
2604 | 119676 | #, python-format | ||
2605 | 119677 | msgid "Unit Price %s is not a number." | ||
2606 | 119678 | msgstr "Prix Unitaire %s n'est pas un nombre." | ||
2607 | 119679 | |||
2608 | 119680 | #. module: account_hq_entries | ||
2609 | 119681 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:251 | ||
2610 | 119682 | #, python-format | ||
2611 | 119683 | msgid "Unit Price is mandatory." | ||
2612 | 119684 | msgstr "Le Prix Unitaire est obligatoire" | ||
2613 | 119685 | |||
2614 | 119686 | #. module: account_hq_entries | ||
2615 | 119687 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:188 | ||
2616 | 119688 | #, python-format | ||
2617 | 119689 | msgid "a row must have 8 columns" | ||
2618 | 119690 | msgstr "une ligne doit avoir 8 colonnes" | ||
2619 | 119691 | |||
2620 | 119692 | #. module: account_hq_entries | ||
2621 | 119693 | #: code:addons/account_hq_entries/wizard/esc_lines_import.py:310 | ||
2622 | 119694 | #, python-format | ||
2623 | 119695 | msgid "duplicates line %d" | ||
2624 | 119696 | msgstr "ligne dupliquée %d" | ||
2625 | 119697 | >>>>>>> MERGE-SOURCE | ||
2626 | 119227 | 119698 | ||
2627 | === modified file 'bin/addons/msf_profile/msf_profile.py' | |||
2628 | --- bin/addons/msf_profile/msf_profile.py 2023-05-03 10:23:38 +0000 | |||
2629 | +++ bin/addons/msf_profile/msf_profile.py 2023-05-05 12:01:38 +0000 | |||
2630 | @@ -57,6 +57,7 @@ | |||
2631 | 57 | 'model': lambda *a: 'patch.scripts', | 57 | 'model': lambda *a: 'patch.scripts', |
2632 | 58 | } | 58 | } |
2633 | 59 | 59 | ||
2634 | 60 | <<<<<<< TREE | ||
2635 | 60 | # UF29.0 | 61 | # UF29.0 |
2636 | 61 | def us_11177_bn_for_kcl_items(self, cr, uid, *a, **b): | 62 | def us_11177_bn_for_kcl_items(self, cr, uid, *a, **b): |
2637 | 62 | ''' | 63 | ''' |
2638 | @@ -198,6 +199,16 @@ | |||
2639 | 198 | cr.execute("update ir_translation set name='account.analytic.account,nameko' where name='account.analytic.account,name' and type='model'") | 199 | cr.execute("update ir_translation set name='account.analytic.account,nameko' where name='account.analytic.account,name' and type='model'") |
2640 | 199 | return True | 200 | return True |
2641 | 200 | 201 | ||
2642 | 202 | ======= | ||
2643 | 203 | # UF29.0 | ||
2644 | 204 | def us_10835_disable_iil_menu(self, cr, uid, *a, **b): | ||
2645 | 205 | # hide menuitems | ||
2646 | 206 | setup_obj = self.pool.get('esc_line.setup') | ||
2647 | 207 | esc_line_install = setup_obj.create(cr, uid, {}) | ||
2648 | 208 | setup_obj.execute(cr, uid, [esc_line_install]) | ||
2649 | 209 | |||
2650 | 210 | |||
2651 | 211 | >>>>>>> MERGE-SOURCE | ||
2652 | 201 | # UF28.0 | 212 | # UF28.0 |
2653 | 202 | def us_10885_tc_entries(self, cr, uid, *a, **b): | 213 | def us_10885_tc_entries(self, cr, uid, *a, **b): |
2654 | 203 | current_instance = self.pool.get('res.users').browse(cr, uid, uid).company_id.instance_id | 214 | current_instance = self.pool.get('res.users').browse(cr, uid, uid).company_id.instance_id |
2655 | 204 | 215 | ||
2656 | === modified file 'bin/addons/msf_sync_data_server/data/sync_server.message_rule.csv' | |||
2657 | --- bin/addons/msf_sync_data_server/data/sync_server.message_rule.csv 2023-02-17 14:02:08 +0000 | |||
2658 | +++ bin/addons/msf_sync_data_server/data/sync_server.message_rule.csv 2023-05-05 12:01:38 +0000 | |||
2659 | @@ -6,7 +6,7 @@ | |||
2660 | 6 | msf_sync_data_server.fo_updates_po_ref,TRUE,TRUE,"['name','state','client_order_ref']","['&', '&','&','&', ('claim_name_goods_return', '=', False), ('partner_type','!=','external'),('client_order_ref','!=',False),('split_type_sale_order','=','original_sale_order'),'!',('client_order_ref', 'like', 'invalid_by_recovery')]",partner_id,MISSION,purchase.order.update_fo_ref,sale.order,FO updates PO ref,9,,Valid | 6 | msf_sync_data_server.fo_updates_po_ref,TRUE,TRUE,"['name','state','client_order_ref']","['&', '&','&','&', ('claim_name_goods_return', '=', False), ('partner_type','!=','external'),('client_order_ref','!=',False),('split_type_sale_order','=','original_sale_order'),'!',('client_order_ref', 'like', 'invalid_by_recovery')]",partner_id,MISSION,purchase.order.update_fo_ref,sale.order,FO updates PO ref,9,,Valid |
2661 | 7 | msf_sync_data_server.update_in_ref,TRUE,TRUE,"['name','shipment_ref']","['&','&', ('partner_type_stock_picking', 'not in', ['esc', 'external']),('shipment_ref','!=',False),'!',('shipment_ref', 'like', 'invalid_by_recovery')]",partner_id,MISSION,stock.picking.update_in_ref,stock.picking,IN updates ref to OUT SHIP,10,,Valid | 7 | msf_sync_data_server.update_in_ref,TRUE,TRUE,"['name','shipment_ref']","['&','&', ('partner_type_stock_picking', 'not in', ['esc', 'external']),('shipment_ref','!=',False),'!',('shipment_ref', 'like', 'invalid_by_recovery')]",partner_id,MISSION,stock.picking.update_in_ref,stock.picking,IN updates ref to OUT SHIP,10,,Valid |
2662 | 8 | msf_sync_data_server.pol_create_sol,TRUE,TRUE,"['sync_local_id', 'order_id/name','product_id/id', 'product_id/name', 'name', 'state', 'product_qty', 'product_uom', 'price_unit', 'analytic_distribution_id/id','comment','have_analytic_distribution_from_header','line_number', 'nomen_manda_0/id','nomen_manda_1/id','nomen_manda_2/id','nomen_manda_3/id', 'nomenclature_description','notes','default_name','default_code','is_line_split','date_planned', 'stock_take_date', 'ir_name_for_sync', 'original_instance']","[('sync_linked_sol', '=', False), ('order_id.partner_type', 'not in',['external','esc']), ('state', 'in', ['validated', 'confirmed', 'done']), ('order_id.state', 'not in', ['draft', 'draft_p', 'cancel']), ('from_synchro_return_goods', '=', False), ('order_id.active', '=', 't')]",partner_id,MISSION,sale.order.line.create_so_line,purchase.order.line,PO line creates FO line,11,,Valid | 8 | msf_sync_data_server.pol_create_sol,TRUE,TRUE,"['sync_local_id', 'order_id/name','product_id/id', 'product_id/name', 'name', 'state', 'product_qty', 'product_uom', 'price_unit', 'analytic_distribution_id/id','comment','have_analytic_distribution_from_header','line_number', 'nomen_manda_0/id','nomen_manda_1/id','nomen_manda_2/id','nomen_manda_3/id', 'nomenclature_description','notes','default_name','default_code','is_line_split','date_planned', 'stock_take_date', 'ir_name_for_sync', 'original_instance']","[('sync_linked_sol', '=', False), ('order_id.partner_type', 'not in',['external','esc']), ('state', 'in', ['validated', 'confirmed', 'done']), ('order_id.state', 'not in', ['draft', 'draft_p', 'cancel']), ('from_synchro_return_goods', '=', False), ('order_id.active', '=', 't')]",partner_id,MISSION,sale.order.line.create_so_line,purchase.order.line,PO line creates FO line,11,,Valid |
2664 | 9 | msf_sync_data_server.sol_updates_pol,TRUE,TRUE,"['resourced_original_line/id', 'resourced_original_remote_line','sync_sourced_origin', 'sync_local_id', 'sync_linked_pol', 'order_id/name', 'product_id/id', 'product_id/name', 'name', 'state','product_uom_qty', 'product_uom', 'price_unit', 'in_name_goods_return', 'analytic_distribution_id/id','comment','have_analytic_distribution_from_header','line_number', 'nomen_manda_0/id','nomen_manda_1/id','nomen_manda_2/id','nomen_manda_3/id', 'nomenclature_description','notes','default_name','default_code','date_planned','is_line_split', 'original_line_id/id', 'confirmed_delivery_date', 'stock_take_date', 'cancel_split_ok', 'modification_comment', 'from_cancel_out', 'pol_external_ref', 'dpo_line_id/.id', 'dpo_id/.id', 'sync_pushed_from_po', 'esti_dd']","[('order_id.partner_type', '!=', 'external'), ('order_id.active', '=', 't'), ('state', '!=', 'draft'), ('order_id.procurement_request', '=', False), ('product_uom_qty', '!=', 0.0), '!', '&', ('order_id.fo_created_by_po_sync', '=', False), ('order_id.state', '=', 'draft')]",partner_id,MISSION,purchase.order.line.sol_update_original_pol,sale.order.line,FO line updates PO line,12,"[('order_id.procurement_request', '=', False), ('order_id.active', '=', 't'), ('order_id.state', 'in', ['draft', 'draft_p']), ('order_id.partner_type', 'not in', ['external', 'esc']), ('order_id.client_order_ref', '=', False)]",Valid | 9 | msf_sync_data_server.sol_updates_pol,TRUE,TRUE,"['resourced_original_line/id', 'resourced_original_remote_line','sync_sourced_origin', 'sync_local_id', 'sync_linked_pol', 'order_id/name', 'product_id/id', 'product_id/name', 'name', 'state','product_uom_qty', 'product_uom', 'price_unit', 'in_name_goods_return', 'analytic_distribution_id/id','comment','have_analytic_distribution_from_header','line_number', 'nomen_manda_0/id','nomen_manda_1/id','nomen_manda_2/id','nomen_manda_3/id', 'nomenclature_description','notes','default_name','default_code','date_planned','is_line_split', 'original_line_id/id', 'confirmed_delivery_date', 'stock_take_date', 'cancel_split_ok', 'modification_comment', 'from_cancel_out', 'pol_external_ref', 'dpo_line_id/.id', 'dpo_id/.id', 'dpo_id/partner_type', 'sync_pushed_from_po', 'esti_dd']","[('order_id.partner_type', '!=', 'external'), ('order_id.active', '=', 't'), ('state', '!=', 'draft'), ('order_id.procurement_request', '=', False), ('product_uom_qty', '!=', 0.0), '!', '&', ('order_id.fo_created_by_po_sync', '=', False), ('order_id.state', '=', 'draft')]",partner_id,MISSION,purchase.order.line.sol_update_original_pol,sale.order.line,FO line updates PO line,12,"[('order_id.procurement_request', '=', False), ('order_id.active', '=', 't'), ('order_id.state', 'in', ['draft', 'draft_p']), ('order_id.partner_type', 'not in', ['external', 'esc']), ('order_id.client_order_ref', '=', False)]",Valid |
2665 | 10 | msf_sync_data_server.pol_update_date_expected,TRUE,TRUE,"['sync_local_id', 'sync_linked_pol']","[('id', '=', 0)]",partner_id,MISSION,purchase.order.line.update_date_expected,sale.order.line,Update IN expected date,55,,Valid | 10 | msf_sync_data_server.pol_update_date_expected,TRUE,TRUE,"['sync_local_id', 'sync_linked_pol']","[('id', '=', 0)]",partner_id,MISSION,purchase.order.line.update_date_expected,sale.order.line,Update IN expected date,55,,Valid |
2666 | 11 | msf_sync_data_server.partial_shipped_coordo_updates_in_at_project,TRUE,TRUE,"['name', 'previous_step_id/name', 'state', 'origin', 'partner_type_stock_picking', 'shipment_id/name', 'min_date', 'note', 'claim', 'packing_list', 'move_lines/processed_stock_move', 'move_lines/id', 'move_lines/state','move_lines/original_qty_partial', 'move_lines/line_number', 'move_lines/name', 'move_lines/change_reason', 'move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_id/default_code', 'move_lines/product_qty', 'move_lines/prodlot_id/id','move_lines/prodlot_id/name','move_lines/prodlot_id/life_date', 'move_lines/prodlot_id/type', 'move_lines/prodlot_id/comment', 'move_lines/expired_date', 'move_lines/asset_id/id','move_lines/product_uom/id', 'move_lines/product_uom/name', 'move_lines/date', 'move_lines/date_expected', 'move_lines/note', 'move_lines/location_dest_id/usage', 'move_lines/comment', 'move_lines/sale_line_id/id', 'move_lines/sale_line_id/in_name_goods_return', 'move_lines/sale_line_id/resourced_original_remote_line', 'move_lines/from_pack', 'move_lines/to_pack', 'move_lines/weight', 'move_lines/height', 'move_lines/length', 'move_lines/width', 'sale_id/claim_name_goods_return', 'sale_id/client_order_ref']","['&','&','&','&','&',('partner_type_stock_picking', '!=', 'external'), ('type', '=', 'out'), ('subtype', 'in', ['standard', 'packing']), ('state', 'in', ['done', 'delivered']), ('already_shipped', '=', True), ('do_not_sync', '=', False)]",partner_id,MISSION,stock.picking.partial_shipped_fo_updates_in_po,stock.picking,Partial shipped at Coordo updates IN at Project,19,,Valid | 11 | msf_sync_data_server.partial_shipped_coordo_updates_in_at_project,TRUE,TRUE,"['name', 'previous_step_id/name', 'state', 'origin', 'partner_type_stock_picking', 'shipment_id/name', 'min_date', 'note', 'claim', 'packing_list', 'move_lines/processed_stock_move', 'move_lines/id', 'move_lines/state','move_lines/original_qty_partial', 'move_lines/line_number', 'move_lines/name', 'move_lines/change_reason', 'move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_id/default_code', 'move_lines/product_qty', 'move_lines/prodlot_id/id','move_lines/prodlot_id/name','move_lines/prodlot_id/life_date', 'move_lines/prodlot_id/type', 'move_lines/prodlot_id/comment', 'move_lines/expired_date', 'move_lines/asset_id/id','move_lines/product_uom/id', 'move_lines/product_uom/name', 'move_lines/date', 'move_lines/date_expected', 'move_lines/note', 'move_lines/location_dest_id/usage', 'move_lines/comment', 'move_lines/sale_line_id/id', 'move_lines/sale_line_id/in_name_goods_return', 'move_lines/sale_line_id/resourced_original_remote_line', 'move_lines/from_pack', 'move_lines/to_pack', 'move_lines/weight', 'move_lines/height', 'move_lines/length', 'move_lines/width', 'sale_id/claim_name_goods_return', 'sale_id/client_order_ref']","['&','&','&','&','&',('partner_type_stock_picking', '!=', 'external'), ('type', '=', 'out'), ('subtype', 'in', ['standard', 'packing']), ('state', 'in', ['done', 'delivered']), ('already_shipped', '=', True), ('do_not_sync', '=', False)]",partner_id,MISSION,stock.picking.partial_shipped_fo_updates_in_po,stock.picking,Partial shipped at Coordo updates IN at Project,19,,Valid |
2667 | 12 | msf_sync_data_server.moves_from_dpo_closed_coordo_updates_in_at_project,TRUE,TRUE,"['name', 'state', 'origin', 'subtype', 'partner_type_stock_picking', 'shipment_id/name', 'min_date', 'note', 'move_lines/processed_stock_move', 'move_lines/id', 'move_lines/state','move_lines/original_qty_partial', 'move_lines/line_number', 'move_lines/name', 'move_lines/change_reason', 'move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_id/default_code', 'move_lines/product_qty', 'move_lines/prodlot_id/id','move_lines/prodlot_id/name','move_lines/prodlot_id/life_date', 'move_lines/prodlot_id/type', 'move_lines/prodlot_id/comment', 'move_lines/expired_date', 'move_lines/asset_id/id','move_lines/product_uom/id', 'move_lines/product_uom/name', 'move_lines/date', 'move_lines/date_expected', 'move_lines/note', 'move_lines/dpo_line_id', 'move_lines/comment']","['&', '&', '&', '&', ('partner_type_stock_picking', '!=', 'external'), ('type', '=', 'out'), ('subtype', 'in', ['picking', 'standard']), ('dpo_out', '=', True), ('new_dpo_out', '=', False)]",partner_id,MISSION,stock.picking.partial_shippped_dpo_updates_in_po,stock.picking,Moves from DPO closed at Coordo updates IN at Project,20,,Valid | 12 | msf_sync_data_server.moves_from_dpo_closed_coordo_updates_in_at_project,TRUE,TRUE,"['name', 'state', 'origin', 'subtype', 'partner_type_stock_picking', 'shipment_id/name', 'min_date', 'note', 'move_lines/processed_stock_move', 'move_lines/id', 'move_lines/state','move_lines/original_qty_partial', 'move_lines/line_number', 'move_lines/name', 'move_lines/change_reason', 'move_lines/product_id/id', 'move_lines/product_id/name', 'move_lines/product_id/default_code', 'move_lines/product_qty', 'move_lines/prodlot_id/id','move_lines/prodlot_id/name','move_lines/prodlot_id/life_date', 'move_lines/prodlot_id/type', 'move_lines/prodlot_id/comment', 'move_lines/expired_date', 'move_lines/asset_id/id','move_lines/product_uom/id', 'move_lines/product_uom/name', 'move_lines/date', 'move_lines/date_expected', 'move_lines/note', 'move_lines/dpo_line_id', 'move_lines/comment']","['&', '&', '&', '&', ('partner_type_stock_picking', '!=', 'external'), ('type', '=', 'out'), ('subtype', 'in', ['picking', 'standard']), ('dpo_out', '=', True), ('new_dpo_out', '=', False)]",partner_id,MISSION,stock.picking.partial_shippped_dpo_updates_in_po,stock.picking,Moves from DPO closed at Coordo updates IN at Project,20,,Valid |
2668 | 13 | 13 | ||
2669 | === modified file 'bin/addons/msf_sync_data_server/data/sync_server.sync_rule.csv' | |||
2670 | --- bin/addons/msf_sync_data_server/data/sync_server.sync_rule.csv 2023-03-08 09:08:44 +0000 | |||
2671 | +++ bin/addons/msf_sync_data_server/data/sync_server.sync_rule.csv 2023-05-05 12:01:38 +0000 | |||
2672 | @@ -187,3 +187,5 @@ | |||
2673 | 187 | msf_sync_data_server.stock_mission_report_line_location_remote,TRUE,TRUE,TRUE,TRUE,bidirectional,Up,"[('location_id.usage', '=', 'internal')]","['location_name', 'product_id/id', 'quantity', 'last_mod_date', 'instance_id/id', 'uom_id/id']",MISSION,stock.mission.report.line.location,,Remote Stock Level,Valid,,1030 | 187 | msf_sync_data_server.stock_mission_report_line_location_remote,TRUE,TRUE,TRUE,TRUE,bidirectional,Up,"[('location_id.usage', '=', 'internal')]","['location_name', 'product_id/id', 'quantity', 'last_mod_date', 'instance_id/id', 'uom_id/id']",MISSION,stock.mission.report.line.location,,Remote Stock Level,Valid,,1030 |
2674 | 188 | msf_sync_data_server.account_mcdb,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,"[('description', '!=', False), ('synced', '=', True), ('hq_template', '=', True)]","['abs_id/id', 'account_ids/id', 'account_type_ids/id', 'amount_book_from', 'amount_book_to', 'amount_from', 'amount_func_from', 'amount_func_to', 'amount_to', 'analytic_account_cc_ids/id', 'analytic_account_dest_ids/id', 'analytic_account_f1_ids/id', 'analytic_account_f2_ids/id', 'analytic_account_fp_ids/id', 'analytic_axis', 'analytic_journal_ids/id', 'booking_currency_id/id', 'cheque_number', 'copied_id/id', 'currency_choice', 'currency_id/id', 'description', 'display_account', 'display_analytic_account', 'display_analytic_journal', 'display_analytic_period', 'display_cost_center', 'display_destination', 'display_employee', 'display_free1', 'display_free2', 'display_funding_pool', 'display_in_output_currency/id', 'display_instance', 'display_journal', 'display_mcdb_load_button', 'display_partner', 'display_period', 'display_top_prop_instance', 'display_transfer_journal', 'display_type', 'document_code', 'document_date_from', 'document_date_to', 'document_state', 'employee_id/id', 'employee_ids/id', 'fiscalyear_id/id', 'functional_currency_id/id', 'fx_table_id/id', 'instance_ids/id', 'journal_ids/id', 'model', 'name', 'open_items/id', 'partner_id/id', 'partner_ids/id', 'partner_txt', 'period_ids/id', 'posting_date_from', 'posting_date_to', 'reallocated', 'reconciled', 'reconcile_date', 'reconcile_id/id', 'ref', 'rev_account_ids', 'rev_account_type_ids', 'rev_analytic_account_cc_ids', 'rev_analytic_account_dest_ids', 'rev_analytic_account_f1_ids', 'rev_analytic_account_f2_ids', 'rev_analytic_account_fp_ids', 'rev_analytic_journal_ids', 'rev_employee_ids', 'reversed', 'rev_instance_ids', 'rev_journal_ids', 'rev_partner_ids', 'rev_period_ids', 'rev_top_prop_instance_ids', 'rev_transfer_journal_ids', 'top_prop_instance_ids/id', 'transfer_journal_id/id', 'transfer_journal_ids/id', 'hq_template', 'include_related_entries', 'excl_inactive_journal_ids', 'inactive_at']",HQ + MISSION,account.mcdb,,Selector,Valid,,1040 | 188 | msf_sync_data_server.account_mcdb,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,"[('description', '!=', False), ('synced', '=', True), ('hq_template', '=', True)]","['abs_id/id', 'account_ids/id', 'account_type_ids/id', 'amount_book_from', 'amount_book_to', 'amount_from', 'amount_func_from', 'amount_func_to', 'amount_to', 'analytic_account_cc_ids/id', 'analytic_account_dest_ids/id', 'analytic_account_f1_ids/id', 'analytic_account_f2_ids/id', 'analytic_account_fp_ids/id', 'analytic_axis', 'analytic_journal_ids/id', 'booking_currency_id/id', 'cheque_number', 'copied_id/id', 'currency_choice', 'currency_id/id', 'description', 'display_account', 'display_analytic_account', 'display_analytic_journal', 'display_analytic_period', 'display_cost_center', 'display_destination', 'display_employee', 'display_free1', 'display_free2', 'display_funding_pool', 'display_in_output_currency/id', 'display_instance', 'display_journal', 'display_mcdb_load_button', 'display_partner', 'display_period', 'display_top_prop_instance', 'display_transfer_journal', 'display_type', 'document_code', 'document_date_from', 'document_date_to', 'document_state', 'employee_id/id', 'employee_ids/id', 'fiscalyear_id/id', 'functional_currency_id/id', 'fx_table_id/id', 'instance_ids/id', 'journal_ids/id', 'model', 'name', 'open_items/id', 'partner_id/id', 'partner_ids/id', 'partner_txt', 'period_ids/id', 'posting_date_from', 'posting_date_to', 'reallocated', 'reconciled', 'reconcile_date', 'reconcile_id/id', 'ref', 'rev_account_ids', 'rev_account_type_ids', 'rev_analytic_account_cc_ids', 'rev_analytic_account_dest_ids', 'rev_analytic_account_f1_ids', 'rev_analytic_account_f2_ids', 'rev_analytic_account_fp_ids', 'rev_analytic_journal_ids', 'rev_employee_ids', 'reversed', 'rev_instance_ids', 'rev_journal_ids', 'rev_partner_ids', 'rev_period_ids', 'rev_top_prop_instance_ids', 'rev_transfer_journal_ids', 'top_prop_instance_ids/id', 'transfer_journal_id/id', 'transfer_journal_ids/id', 'hq_template', 'include_related_entries', 'excl_inactive_journal_ids', 'inactive_at']",HQ + MISSION,account.mcdb,,Selector,Valid,,1040 |
2675 | 189 | msf_sync_data_server.finance_report_template,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,"[('synced', '=', True), ('hq_template', '=', True)]","['last_modification', 'name', 'sync_values', 'wizard_name', 'hq_template']",HQ + MISSION,wizard.template,,Finance Report Templates,Valid,,1050 | 189 | msf_sync_data_server.finance_report_template,TRUE,TRUE,TRUE,TRUE,bidirectional,Down,"[('synced', '=', True), ('hq_template', '=', True)]","['last_modification', 'name', 'sync_values', 'wizard_name', 'hq_template']",HQ + MISSION,wizard.template,,Finance Report Templates,Valid,,1050 |
2676 | 190 | msf_sync_data_server.iil_down,TRUE,TRUE,FALSE,FALSE,bidirectional,Single-Private,"[('state', '=', '1_draft')]","['po_name', 'requestor_cc_id/id', 'consignee_cc_id/id', 'product_id/id', 'price_unit', 'product_qty', 'uom_id/id', 'currency_id/id', 'shipment_ref', 'dest_instance_id/id']",HQ + MISSION,esc.invoice.line,dest_instance_id,Down ESC Invoices Lines,Valid,,1300 | ||
2677 | 191 | msf_sync_data_server.iil_up,TRUE,TRUE,FALSE,FALSE,bidirectional,Single-Private,"[('state', '=', 'done')]","['state', 'remaining_qty', 'dest_instance_id/id']",HQ + MISSION,esc.invoice.line,dest_instance_id,UP ESC Invoices Lines state,Valid,,1305 | ||
2678 | 190 | 192 | ||
2679 | === modified file 'bin/addons/product/product.py' | |||
2680 | --- bin/addons/product/product.py 2023-03-15 13:17:31 +0000 | |||
2681 | +++ bin/addons/product/product.py 2023-05-05 12:01:38 +0000 | |||
2682 | @@ -314,6 +314,14 @@ | |||
2683 | 314 | res[obj.id] = list_price | 314 | res[obj.id] = list_price |
2684 | 315 | return res | 315 | return res |
2685 | 316 | 316 | ||
2686 | 317 | def _get_finance_price_currency_id(self, cr, uid, ids, fields, arg, context=None): | ||
2687 | 318 | ret = {} | ||
2688 | 319 | cur_id = self.pool.get('res.users').get_company_currency_id(cr, uid) | ||
2689 | 320 | |||
2690 | 321 | for _id in ids: | ||
2691 | 322 | ret[_id] = cur_id | ||
2692 | 323 | return ret | ||
2693 | 324 | |||
2694 | 317 | _columns = { | 325 | _columns = { |
2695 | 318 | 'name': fields.char('Name', size=128, required=True, translate=True, select=True), | 326 | 'name': fields.char('Name', size=128, required=True, translate=True, select=True), |
2696 | 319 | 'product_manager': fields.many2one('res.users','Product Manager',help="This is use as task responsible"), | 327 | 'product_manager': fields.many2one('res.users','Product Manager',help="This is use as task responsible"), |
2697 | @@ -328,6 +336,8 @@ | |||
2698 | 328 | 'rental': fields.boolean('Can be Rent'), | 336 | 'rental': fields.boolean('Can be Rent'), |
2699 | 329 | 'categ_id': fields.many2one('product.category','Category', required=True, change_default=True, domain="[('type','=','normal')]" ,help="Select category for the current product"), | 337 | 'categ_id': fields.many2one('product.category','Category', required=True, change_default=True, domain="[('type','=','normal')]" ,help="Select category for the current product"), |
2700 | 330 | 'standard_price': fields.float('Cost Price', required=True, digits_compute=dp.get_precision('Account Computation'), help="Price of product calculated according to the selected costing method."), | 338 | 'standard_price': fields.float('Cost Price', required=True, digits_compute=dp.get_precision('Account Computation'), help="Price of product calculated according to the selected costing method."), |
2701 | 339 | 'finance_price': fields.float('Finance Cost Price', readonly=1, digits_compute=dp.get_precision('Account Computation')), | ||
2702 | 340 | 'finance_price_currency_id': fields.function(_get_finance_price_currency_id, 'Finance CP Currency', method=True, type='many2one', relation='res.currency'), | ||
2703 | 331 | 'list_price': fields.function(_get_list_price, method=True, type='float', string='Sale Price', digits_compute=dp.get_precision('Sale Price Computation'), help="Base price for computing the customer price. Sometimes called the catalog price.", | 341 | 'list_price': fields.function(_get_list_price, method=True, type='float', string='Sale Price', digits_compute=dp.get_precision('Sale Price Computation'), help="Base price for computing the customer price. Sometimes called the catalog price.", |
2704 | 332 | store = { | 342 | store = { |
2705 | 333 | 'product.template': (lambda self, cr, uid, ids, c=None: ids, ['standard_price'], 10), | 343 | 'product.template': (lambda self, cr, uid, ids, c=None: ids, ['standard_price'], 10), |
2706 | 334 | 344 | ||
2707 | === modified file 'bin/addons/product_attributes/product_attributes.py' | |||
2708 | --- bin/addons/product_attributes/product_attributes.py 2023-04-26 14:14:45 +0000 | |||
2709 | +++ bin/addons/product_attributes/product_attributes.py 2023-05-05 12:01:38 +0000 | |||
2710 | @@ -1168,6 +1168,12 @@ | |||
2711 | 1168 | field.set('invisible', '0') | 1168 | field.set('invisible', '0') |
2712 | 1169 | res['arch'] = etree.tostring(root) | 1169 | res['arch'] = etree.tostring(root) |
2713 | 1170 | 1170 | ||
2714 | 1171 | if view_type == 'form' and self.pool.get('unifield.setup.configuration').get_config(cr, uid, 'esc_line'): | ||
2715 | 1172 | root = etree.fromstring(res['arch']) | ||
2716 | 1173 | for field in root.xpath('//field[@name="finance_price"]|//field[@name="finance_price_currency_id"]'): | ||
2717 | 1174 | field.set('invisible', '0') | ||
2718 | 1175 | res['arch'] = etree.tostring(root) | ||
2719 | 1176 | |||
2720 | 1171 | if view_type == 'search' and context.get('available_for_restriction'): | 1177 | if view_type == 'search' and context.get('available_for_restriction'): |
2721 | 1172 | context.update({'search_default_not_restricted': 1}) | 1178 | context.update({'search_default_not_restricted': 1}) |
2722 | 1173 | root = etree.fromstring(res['arch']) | 1179 | root = etree.fromstring(res['arch']) |
2723 | 1174 | 1180 | ||
2724 | === modified file 'bin/addons/product_attributes/product_attributes_view.xml' | |||
2725 | --- bin/addons/product_attributes/product_attributes_view.xml 2023-04-26 14:14:45 +0000 | |||
2726 | +++ bin/addons/product_attributes/product_attributes_view.xml 2023-05-05 12:01:38 +0000 | |||
2727 | @@ -94,6 +94,8 @@ | |||
2728 | 94 | <field name="currency_id" nolabel="1" /> | 94 | <field name="currency_id" nolabel="1" /> |
2729 | 95 | <field name="list_price" colspan="2"/> | 95 | <field name="list_price" colspan="2"/> |
2730 | 96 | <field name="field_currency_id" nolabel="1" /> | 96 | <field name="field_currency_id" nolabel="1" /> |
2731 | 97 | <field name="finance_price" colspan="2" invisible="1" /> | ||
2732 | 98 | <field name="finance_price_currency_id" nolabel="1" invisible="1" /> | ||
2733 | 97 | <newline/> | 99 | <newline/> |
2734 | 98 | </group> | 100 | </group> |
2735 | 99 | 101 | ||
2736 | 100 | 102 | ||
2737 | === modified file 'bin/addons/purchase/purchase_order_line.py' | |||
2738 | --- bin/addons/purchase/purchase_order_line.py 2023-02-09 11:14:39 +0000 | |||
2739 | +++ bin/addons/purchase/purchase_order_line.py 2023-05-05 12:01:38 +0000 | |||
2740 | @@ -666,6 +666,7 @@ | |||
2741 | 666 | 'max_qty_cancellable': fields.function(_in_qty_remaining, type='float', string='Total PO qty - already processed + assign qty + confirm qty', method=1, multi='in_remain'), | 666 | 'max_qty_cancellable': fields.function(_in_qty_remaining, type='float', string='Total PO qty - already processed + assign qty + confirm qty', method=1, multi='in_remain'), |
2742 | 667 | 'from_dpo_line_id': fields.integer('DPO line id on the remote', internal=1), | 667 | 'from_dpo_line_id': fields.integer('DPO line id on the remote', internal=1), |
2743 | 668 | 'from_dpo_id': fields.integer('DPO id on the remote', internal=1), | 668 | 'from_dpo_id': fields.integer('DPO id on the remote', internal=1), |
2744 | 669 | 'from_dpo_esc': fields.boolean('Line sourced to ESC DPO', internal=1), | ||
2745 | 669 | 'dates_modified': fields.boolean('EDD/CDD modified on validated line', internal=1), | 670 | 'dates_modified': fields.boolean('EDD/CDD modified on validated line', internal=1), |
2746 | 670 | 'loan_line_id': fields.many2one('sale.order.line', string='Linked loan line', readonly=True), | 671 | 'loan_line_id': fields.many2one('sale.order.line', string='Linked loan line', readonly=True), |
2747 | 671 | 672 | ||
2748 | 672 | 673 | ||
2749 | === modified file 'bin/addons/stock/stock_move.py' | |||
2750 | --- bin/addons/stock/stock_move.py 2023-02-10 11:14:12 +0000 | |||
2751 | +++ bin/addons/stock/stock_move.py 2023-05-05 12:01:38 +0000 | |||
2752 | @@ -38,8 +38,14 @@ | |||
2753 | 38 | 38 | ||
2754 | 39 | def name_get(self, cr, uid, ids, context=None): | 39 | def name_get(self, cr, uid, ids, context=None): |
2755 | 40 | res = [] | 40 | res = [] |
2758 | 41 | for line in self.browse(cr, uid, ids, context=context): | 41 | if context is None: |
2759 | 42 | res.append((line.id, (line.product_id.code or '/')+': '+line.location_id.name+' > '+line.location_dest_id.name)) | 42 | context = {} |
2760 | 43 | for line in self.browse(cr, uid, ids, fields_to_fetch=['product_id', 'line_number', 'location_id', 'location_dest_id'], context=context): | ||
2761 | 44 | if context.get('display_move_line'): | ||
2762 | 45 | prefix = '#%s %s' % (line.line_number, line.product_id.code or '/') | ||
2763 | 46 | else: | ||
2764 | 47 | prefix = line.product_id.code or '/' | ||
2765 | 48 | res.append((line.id, '%s: %s > %s' % (prefix, line.location_id.name, line.location_dest_id.name))) | ||
2766 | 43 | return res | 49 | return res |
2767 | 44 | 50 | ||
2768 | 45 | def _get_picking_ids(self, cr, uid, ids, context=None): | 51 | def _get_picking_ids(self, cr, uid, ids, context=None): |
2769 | 46 | 52 | ||
2770 | === modified file 'bin/addons/sync_client/update.py' | |||
2771 | --- bin/addons/sync_client/update.py 2023-01-31 10:36:54 +0000 | |||
2772 | +++ bin/addons/sync_client/update.py 2023-05-05 12:01:38 +0000 | |||
2773 | @@ -209,7 +209,12 @@ | |||
2774 | 209 | return 0 | 209 | return 0 |
2775 | 210 | domain.append(('id', 'in', ids_need_to_push)) | 210 | domain.append(('id', 'in', ids_need_to_push)) |
2776 | 211 | 211 | ||
2778 | 212 | ids_to_compute = self.search_ext(cr, uid, domain, context=context) | 212 | order = None |
2779 | 213 | if hasattr(self, '_sync_order'): | ||
2780 | 214 | # keep same id order at HQ and lower level | ||
2781 | 215 | order = self._sync_order | ||
2782 | 216 | |||
2783 | 217 | ids_to_compute = self.search_ext(cr, uid, domain, order=order, context=context) | ||
2784 | 213 | if not ids_to_compute: | 218 | if not ids_to_compute: |
2785 | 214 | return 0 | 219 | return 0 |
2786 | 215 | 220 | ||
2787 | 216 | 221 | ||
2788 | === modified file 'bin/addons/sync_common/common.py' | |||
2789 | --- bin/addons/sync_common/common.py 2022-09-22 12:45:25 +0000 | |||
2790 | +++ bin/addons/sync_common/common.py 2023-05-05 12:01:38 +0000 | |||
2791 | @@ -45,6 +45,7 @@ | |||
2792 | 45 | 'cost.center.distribution.line', | 45 | 'cost.center.distribution.line', |
2793 | 46 | 'country.export.mapping', | 46 | 'country.export.mapping', |
2794 | 47 | 'distribution.line', | 47 | 'distribution.line', |
2795 | 48 | 'esc.invoice.line', | ||
2796 | 48 | 'financing.contract.contract', | 49 | 'financing.contract.contract', |
2797 | 49 | 'financing.contract.donor', | 50 | 'financing.contract.donor', |
2798 | 50 | 'financing.contract.format', | 51 | 'financing.contract.format', |
2799 | 51 | 52 | ||
2800 | === modified file 'bin/addons/sync_server/rules.py' | |||
2801 | --- bin/addons/sync_server/rules.py 2017-10-12 08:16:17 +0000 | |||
2802 | +++ bin/addons/sync_server/rules.py 2023-05-05 12:01:38 +0000 | |||
2803 | @@ -120,6 +120,7 @@ | |||
2804 | 120 | ('down', 'Down'), | 120 | ('down', 'Down'), |
2805 | 121 | ('bidirectional', 'Bidirectional'), | 121 | ('bidirectional', 'Bidirectional'), |
2806 | 122 | ('bi-private', 'Bidirectional-Private'), | 122 | ('bi-private', 'Bidirectional-Private'), |
2807 | 123 | ('single-private', 'Single-Private'), | ||
2808 | 123 | ], 'Directionality', required = True,), | 124 | ], 'Directionality', required = True,), |
2809 | 124 | 'domain':fields.text('Domain', required = False), | 125 | 'domain':fields.text('Domain', required = False), |
2810 | 125 | 'owner_field':fields.char('Owner Field', size = 64, required = False), | 126 | 'owner_field':fields.char('Owner Field', size = 64, required = False), |
2811 | @@ -459,7 +460,8 @@ | |||
2812 | 459 | return (message, error) | 460 | return (message, error) |
2813 | 460 | 461 | ||
2814 | 461 | def check_owner_field(self, cr, uid, rec, context=None): | 462 | def check_owner_field(self, cr, uid, rec, context=None): |
2816 | 462 | if rec.direction != 'bi-private': return ('', False) | 463 | if rec.direction not in ('bi-private', 'single-private'): |
2817 | 464 | return ('', False) | ||
2818 | 463 | error = False | 465 | error = False |
2819 | 464 | message = "* Owner field existence... " | 466 | message = "* Owner field existence... " |
2820 | 465 | try: | 467 | try: |
2821 | @@ -517,6 +519,10 @@ | |||
2822 | 517 | error = err or error | 519 | error = err or error |
2823 | 518 | message.append(mess) | 520 | message.append(mess) |
2824 | 519 | 521 | ||
2825 | 522 | if rec.direction == 'single-private' and rec.can_delete: | ||
2826 | 523 | error = True | ||
2827 | 524 | message.append('Single-Private and Can delete not implemented') | ||
2828 | 525 | |||
2829 | 520 | message.append("* Sequence is unique... ") | 526 | message.append("* Sequence is unique... ") |
2830 | 521 | if self.search(cr, uid, | 527 | if self.search(cr, uid, |
2831 | 522 | [('sequence_number','=',rec.sequence_number)], | 528 | [('sequence_number','=',rec.sequence_number)], |
2832 | 523 | 529 | ||
2833 | === modified file 'bin/addons/sync_server/rules_view.xml' | |||
2834 | --- bin/addons/sync_server/rules_view.xml 2017-11-14 10:57:04 +0000 | |||
2835 | +++ bin/addons/sync_server/rules_view.xml 2023-05-05 12:01:38 +0000 | |||
2836 | @@ -92,7 +92,7 @@ | |||
2837 | 92 | <field name="can_delete" /> | 92 | <field name="can_delete" /> |
2838 | 93 | <field name="handle_priority"/> | 93 | <field name="handle_priority"/> |
2839 | 94 | <field name="direction" on_change="invalidate(model_ref)" string="Direction"/> | 94 | <field name="direction" on_change="invalidate(model_ref)" string="Direction"/> |
2841 | 95 | <field name="owner_field" on_change="invalidate(model_ref)" attrs="{'invisible':[('direction','!=','bi-private')], 'required':[('direction','=','bi-private')]}" colspan="4"/> | 95 | <field name="owner_field" on_change="invalidate(model_ref)" attrs="{'invisible':[('direction','not int',['bi-private', 'single-private'])], 'required':[('direction','in',['bi-private', 'single-private'])]}" colspan="4"/> |
2842 | 96 | <field name="master_data" /> | 96 | <field name="master_data" /> |
2843 | 97 | </group> | 97 | </group> |
2844 | 98 | <group col="2"> | 98 | <group col="2"> |
2845 | 99 | 99 | ||
2846 | === modified file 'bin/addons/sync_server/sync_server.py' | |||
2847 | --- bin/addons/sync_server/sync_server.py 2022-07-22 12:54:50 +0000 | |||
2848 | +++ bin/addons/sync_server/sync_server.py 2023-05-05 12:01:38 +0000 | |||
2849 | @@ -1097,6 +1097,9 @@ | |||
2850 | 1097 | to_retrieve.append(x) | 1097 | to_retrieve.append(x) |
2851 | 1098 | else: | 1098 | else: |
2852 | 1099 | to_retrieve = list_to_retrieve | 1099 | to_retrieve = list_to_retrieve |
2853 | 1100 | elif rules[update.rule_id.id]['direction'] == 'single-private': | ||
2854 | 1101 | if update.owner: | ||
2855 | 1102 | to_retrieve.append(update.owner.id) | ||
2856 | 1100 | 1103 | ||
2857 | 1101 | puller_ids = [y.entity_id.id for y in update.puller_ids] | 1104 | puller_ids = [y.entity_id.id for y in update.puller_ids] |
2858 | 1102 | not_pulled = [] | 1105 | not_pulled = [] |
2859 | 1103 | 1106 | ||
2860 | === modified file 'bin/addons/sync_server/update.py' | |||
2861 | --- bin/addons/sync_server/update.py 2021-02-01 16:59:12 +0000 | |||
2862 | +++ bin/addons/sync_server/update.py 2023-05-05 12:01:38 +0000 | |||
2863 | @@ -454,6 +454,8 @@ | |||
2864 | 454 | else: | 454 | else: |
2865 | 455 | privates = self.pool.get('sync.server.entity')._get_ancestor(cr, uid, update.owner.id, context=context) + \ | 455 | privates = self.pool.get('sync.server.entity')._get_ancestor(cr, uid, update.owner.id, context=context) + \ |
2866 | 456 | [update.owner.id] | 456 | [update.owner.id] |
2867 | 457 | elif update.rule_id.direction == 'single-private' and update.owner: | ||
2868 | 458 | privates = [update.owner.id] | ||
2869 | 457 | else: | 459 | else: |
2870 | 458 | privates = [] | 460 | privates = [] |
2871 | 459 | if (update.rule_id.direction == 'up' and update.source.id in children) or \ | 461 | if (update.rule_id.direction == 'up' and update.source.id in children) or \ |
2872 | @@ -530,6 +532,7 @@ | |||
2873 | 530 | if recover: | 532 | if recover: |
2874 | 531 | filters.append("source = %s" % (entity.id, )) | 533 | filters.append("source = %s" % (entity.id, )) |
2875 | 532 | filters.append("direction = 'bi-private' AND (is_deleted = 't' OR owner IN (" + (','.join(map(str, children + [entity.id]))) + "))") | 534 | filters.append("direction = 'bi-private' AND (is_deleted = 't' OR owner IN (" + (','.join(map(str, children + [entity.id]))) + "))") |
2876 | 535 | filters.append("direction = 'single-private' AND owner = %d " % (entity.id,)) | ||
2877 | 533 | base_query += ' AND ((' + ') OR ('.join(filters) + '))' | 536 | base_query += ' AND ((' + ') OR ('.join(filters) + '))' |
2878 | 534 | 537 | ||
2879 | 535 | ## Recover add own client updates to the list | 538 | ## Recover add own client updates to the list |
2880 | 536 | 539 | ||
2881 | === modified file 'bin/addons/sync_so/purchase.py' | |||
2882 | --- bin/addons/sync_so/purchase.py 2023-02-17 13:56:40 +0000 | |||
2883 | +++ bin/addons/sync_so/purchase.py 2023-05-05 12:01:38 +0000 | |||
2884 | @@ -144,6 +144,7 @@ | |||
2885 | 144 | pol_values['modification_comment'] = sol_dict.get('modification_comment', False) | 144 | pol_values['modification_comment'] = sol_dict.get('modification_comment', False) |
2886 | 145 | pol_values['from_dpo_line_id'] = sol_dict.get('dpo_line_id') and sol_dict.get('dpo_line_id', {}).get('.id', False) or False | 145 | pol_values['from_dpo_line_id'] = sol_dict.get('dpo_line_id') and sol_dict.get('dpo_line_id', {}).get('.id', False) or False |
2887 | 146 | pol_values['from_dpo_id'] = sol_dict.get('dpo_id') and sol_dict.get('dpo_id', {}).get('.id', False) or False | 146 | pol_values['from_dpo_id'] = sol_dict.get('dpo_id') and sol_dict.get('dpo_id', {}).get('.id', False) or False |
2888 | 147 | pol_values['from_dpo_esc'] = sol_dict.get('dpo_id') and sol_dict.get('dpo_id', {}).get('partner_type', False) == 'esc' or False | ||
2889 | 147 | pol_values['esti_dd'] = sol_dict.get('esti_dd', False) | 148 | pol_values['esti_dd'] = sol_dict.get('esti_dd', False) |
2890 | 148 | if 'line_number' in pol_values: | 149 | if 'line_number' in pol_values: |
2891 | 149 | del(pol_values['line_number']) | 150 | del(pol_values['line_number']) |
2892 | 150 | 151 | ||
2893 | === modified file 'bin/addons/unifield_setup/setup_configuration.py' | |||
2894 | --- bin/addons/unifield_setup/setup_configuration.py 2022-09-19 08:45:17 +0000 | |||
2895 | +++ bin/addons/unifield_setup/setup_configuration.py 2023-05-05 12:01:38 +0000 | |||
2896 | @@ -62,6 +62,7 @@ | |||
2897 | 62 | 'previous_fy_dates_allowed': fields.boolean(string='Does the system allow document dates on previous Fiscal Year?'), | 62 | 'previous_fy_dates_allowed': fields.boolean(string='Does the system allow document dates on previous Fiscal Year?'), |
2898 | 63 | 'customer_commitment': fields.boolean(string='Does the system allow Customer Commitment Vouchers ?'), | 63 | 'customer_commitment': fields.boolean(string='Does the system allow Customer Commitment Vouchers ?'), |
2899 | 64 | 'signature': fields.boolean(string='Activate Electronic Validation ?'), | 64 | 'signature': fields.boolean(string='Activate Electronic Validation ?'), |
2900 | 65 | 'esc_line': fields.boolean(string='Activate International Invoices Lines ?'), | ||
2901 | 65 | } | 66 | } |
2902 | 66 | 67 | ||
2903 | 67 | _defaults = { | 68 | _defaults = { |
2904 | @@ -79,6 +80,7 @@ | |||
2905 | 79 | 'previous_fy_dates_allowed': lambda *a: False, | 80 | 'previous_fy_dates_allowed': lambda *a: False, |
2906 | 80 | 'customer_commitment': False, | 81 | 'customer_commitment': False, |
2907 | 81 | 'signature': False, | 82 | 'signature': False, |
2908 | 83 | 'esc_line': False, | ||
2909 | 82 | } | 84 | } |
2910 | 83 | 85 | ||
2911 | 84 | _constraints = [ | 86 | _constraints = [ |