Merge lp:~jfb-tempo-consulting/unifield-server/us-3124 into lp:unifield-server/uf5

Proposed by jftempo
Status: Merged
Merged at revision: 4441
Proposed branch: lp:~jfb-tempo-consulting/unifield-server/us-3124
Merge into: lp:unifield-server/uf5
Diff against target: 143 lines (+98/-4)
3 files modified
bin/addons/msf_profile/data/patches.xml (+4/-0)
bin/addons/msf_profile/msf_profile.py (+84/-0)
bin/addons/sync_so/so_po_common.py (+10/-4)
To merge this branch: bzr merge lp:~jfb-tempo-consulting/unifield-server/us-3124
Reviewer Review Type Date Requested Status
UniField Dev Team Pending
Review via email: mp+327071@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'bin/addons/msf_profile/data/patches.xml'
2--- bin/addons/msf_profile/data/patches.xml 2017-06-13 10:26:28 +0000
3+++ bin/addons/msf_profile/data/patches.xml 2017-07-10 07:12:28 +0000
4@@ -1,6 +1,10 @@
5 <?xml version="1.0" encoding="utf-8" ?>
6 <openerp>
7 <data>
8+ <record id="us_3098_patch" model="patch.scripts">
9+ <field name="method">us_3098_patch</field>
10+ </record>
11+
12 <record id="us_2257_patch" model="patch.scripts">
13 <field name="method">us_2257_patch</field>
14 </record>
15
16=== modified file 'bin/addons/msf_profile/msf_profile.py'
17--- bin/addons/msf_profile/msf_profile.py 2017-06-13 10:26:28 +0000
18+++ bin/addons/msf_profile/msf_profile.py 2017-07-10 07:12:28 +0000
19@@ -46,6 +46,90 @@
20 'model': lambda *a: 'patch.scripts',
21 }
22
23+ def us_3098_patch(self, cr, uid, *a, **b):
24+ cr.execute("""
25+ SELECT id, name
26+ FROM res_partner
27+ WHERE name IN (select name from res_partner where partner_type = 'internal')
28+ AND name IN (select name from res_partner where partner_type = 'intermission')
29+ AND partner_type = 'intermission';
30+ """)
31+ wrong_partners = cr.fetchall()
32+
33+ updated_doc = []
34+ for partner in wrong_partners:
35+ intermission_partner_id = partner[0]
36+ partner_name = partner[1]
37+ internal_partner_id = self.pool.get('res.partner').search(cr, uid, [
38+ ('name', '=', partner_name),
39+ ('partner_type', '=', 'internal'),
40+ ])[0]
41+ address_id = self.pool.get('res.partner.address').search(cr, uid, [
42+ ('partner_id', '=', internal_partner_id),
43+ ('type', '=', 'default'),
44+ ])[0]
45+
46+ cr.execute("SELECT name FROM stock_picking WHERE partner_id = %s AND state not in ('done', 'cancel');", (intermission_partner_id,))
47+ updated_doc += [x[0] for x in cr.fetchall()]
48+ cr.execute("""
49+ UPDATE stock_picking
50+ SET partner_id = %s, partner_id2 = %s, address_id = %s, partner_type_stock_picking = 'internal', invoice_state = 'none'
51+ WHERE partner_id = %s
52+ AND state not in ('done', 'cancel');
53+ """, (internal_partner_id, internal_partner_id, address_id, intermission_partner_id) )
54+ cr.execute("""
55+ UPDATE stock_move
56+ SET partner_id = %s, partner_id2 = %s, address_id = %s
57+ WHERE (partner_id = %s OR partner_id2 = %s) AND state not in ('done', 'cancel');
58+ """, (internal_partner_id, internal_partner_id, address_id, intermission_partner_id, intermission_partner_id) )
59+
60+ cr.execute("SELECT name FROM purchase_order WHERE partner_id = %s AND state not in ('done', 'cancel');", (intermission_partner_id,))
61+ updated_doc += [x[0] for x in cr.fetchall()]
62+ cr.execute("""
63+ UPDATE purchase_order
64+ SET partner_id = %s, partner_address_id = %s, partner_type = 'internal'
65+ WHERE partner_id = %s
66+ AND state not in ('done', 'cancel');
67+ """, (internal_partner_id, address_id, intermission_partner_id) )
68+ cr.execute("""
69+ UPDATE purchase_order_line pol
70+ SET partner_id = %s
71+ FROM purchase_order po
72+ WHERE pol.order_id = po.id
73+ AND pol.partner_id = %s
74+ AND po.state not in ('done', 'cancel');
75+ """, (internal_partner_id, intermission_partner_id) )
76+
77+ cr.execute("SELECT name FROM sale_order WHERE partner_id = %s AND state not in ('done', 'cancel');", (intermission_partner_id,))
78+ updated_doc += [x[0] for x in cr.fetchall()]
79+ cr.execute("""
80+ UPDATE sale_order
81+ SET partner_id = %s, partner_invoice_id = %s, partner_order_id = %s, partner_shipping_id = %s, partner_type = 'internal'
82+ WHERE partner_id = %s
83+ AND state not in ('done', 'cancel');
84+ """, (internal_partner_id, address_id, address_id, address_id, intermission_partner_id) )
85+ cr.execute("""
86+ UPDATE sale_order_line sol
87+ SET order_partner_id = %s
88+ FROM sale_order so
89+ WHERE sol.order_id = so.id
90+ AND sol.order_partner_id = %s
91+ AND so.state not in ('done', 'cancel');
92+ """, (internal_partner_id, intermission_partner_id) )
93+
94+ cr.execute("SELECT name FROM shipment WHERE partner_id = %s;", (intermission_partner_id,))
95+ updated_doc += [x[0] for x in cr.fetchall()]
96+ cr.execute("""
97+ UPDATE shipment
98+ SET partner_id = %s, partner_id2 = %s, address_id = %s
99+ WHERE partner_id = %s
100+ AND state not in ('done', 'cancel', 'delivered');
101+ """, (internal_partner_id, internal_partner_id, address_id, intermission_partner_id) )
102+
103+ self._logger.warn("Following documents have been updated with internal partner: %s" % ", ".join(updated_doc))
104+
105+ return True
106+
107 def us_2257_patch(self, cr, uid, *a, **b):
108 context = {}
109 user_obj = self.pool.get('res.users')
110
111=== modified file 'bin/addons/sync_so/so_po_common.py'
112--- bin/addons/sync_so/so_po_common.py 2017-06-14 18:35:59 +0000
113+++ bin/addons/sync_so/so_po_common.py 2017-07-10 07:12:28 +0000
114@@ -47,9 +47,12 @@
115 context = {}
116 context.update({'active_test': False})
117 partner_obj = self.pool.get('res.partner')
118- ids = partner_obj.search(cr, uid, [('name', '=', partner_name)], context=context)
119+ domain = [('name', '=', partner_name)]
120+ ids = partner_obj.search(cr, uid, domain + [('partner_type', '=', 'internal')], context=context)
121 if not ids:
122- raise Exception("The partner %s is not found in the system. The operation is thus interrupted." % partner_name)
123+ ids = partner_obj.search(cr, uid, domain, context=context)
124+ if not ids:
125+ raise Exception("The partner %s is not found in the system. The operation is thus interrupted." % partner_name)
126
127 return partner_obj.read(cr, uid, ids, ['partner_type'], context=context)[0]['partner_type']
128
129@@ -57,9 +60,12 @@
130 if not context:
131 context = {}
132 context.update({'active_test': False})
133- ids = self.pool.get('res.partner').search(cr, uid, [('name', '=', partner_name)], context=context)
134+ domain = [('name', '=', partner_name)]
135+ ids = self.pool.get('res.partner').search(cr, uid, domain + [('partner_type', '=', 'internal')], context=context)
136 if not ids:
137- raise Exception("The partner %s is not found in the system. The operation is thus interrupted." % partner_name)
138+ ids = self.pool.get('res.partner').search(cr, uid, domain, context=context)
139+ if not ids:
140+ raise Exception("The partner %s is not found in the system. The operation is thus interrupted." % partner_name)
141 return ids[0]
142
143 def get_partner_address_id(self, cr, uid, partner_id, context=None):

Subscribers

People subscribed via source and target branches

to all changes: