Merge lp:~jeffery9/stock-logistic-tracking/stock-logistic-tracking into lp:stock-logistic-tracking

Proposed by jeffery chen fan
Status: Work in progress
Proposed branch: lp:~jeffery9/stock-logistic-tracking/stock-logistic-tracking
Merge into: lp:stock-logistic-tracking
Diff against target: 1498 lines (+539/-476)
10 files modified
.bzrignore (+4/-0)
stock_barcode_reader/__openerp__.py (+1/-1)
stock_barcode_reader/acquisition_view.xml (+164/-160)
stock_barcode_reader/package_acquisition.py (+274/-223)
stock_barcode_reader/stock.py (+7/-5)
stock_barcode_reader/stock_view.xml (+30/-28)
stock_barcode_reader/wizard/reference.py (+19/-19)
stock_barcode_reader/wizard/reference_view.xml (+38/-38)
stock_tracking_add_move/__openerp__.py (+1/-1)
stock_tracking_add_move/wizard/add_move_view.xml (+1/-1)
To merge this branch: bzr merge lp:~jeffery9/stock-logistic-tracking/stock-logistic-tracking
Reviewer Review Type Date Requested Status
Alexandre Fayolle - camptocamp Needs Resubmitting
Yannick Vaucher @ Camptocamp Needs Information
Guewen Baconnier @ Camptocamp Needs Information
Maxime Chambreuil (http://www.savoirfairelinux.com) code review Approve
Review via email: mp+180994@code.launchpad.net

Description of the change

have migrated the stock_barcode_reader, but there still have one bug.
when select menu Acquisition, qweb report
'''
Uncaught Error: QWeb2 - template['ListView.rows']: Runtime Error: Error: QWeb2 - template['ListView.row']: Runtime Error: Error: Unknown field state in domain [["state","not in",["open"]]]
http://192.168.10.103:8069/web/webclient/js?db=application:2446
'''

please fix this bug, thanks

To post a comment you must log in.
20. By jeffery chen fan

forget to change the field partner_id 's relationship with res.partnenr

Revision history for this message
Maxime Chambreuil (http://www.savoirfairelinux.com) (max3903) wrote :

LGTM

review: Approve (code review)
Revision history for this message
Guewen Baconnier @ Camptocamp (gbaconnier-c2c) wrote :

I don't understand, the description of the change states 'please fix this bug, thanks". Is it fixed?

review: Needs Information
Revision history for this message
Yannick Vaucher @ Camptocamp (yvaucher-c2c) wrote :

@jeffery chen fan can you provide more information about the bug which is still present in this MP?

Were you able to fix it in the mean time?

review: Needs Information
Revision history for this message
Yannick Vaucher @ Camptocamp (yvaucher-c2c) wrote :

No activity from author I set it to WIP

Revision history for this message
Alexandre Fayolle - camptocamp (alexandre-fayolle-c2c) wrote :

The source code management for this project has been moved to https://github.com/OCA/stock-logistics-workflow

Could you resubmit this MP on the new site?

review: Needs Resubmitting

Unmerged revisions

20. By jeffery chen fan

forget to change the field partner_id 's relationship with res.partnenr

19. By jeffery chen fan

format code

18. By jeffery chen fan

fix partner address reference.

17. By jeffery chen fan

fix mistaken view reference

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added file '.bzrignore'
--- .bzrignore 1970-01-01 00:00:00 +0000
+++ .bzrignore 2013-08-20 09:03:46 +0000
@@ -0,0 +1,4 @@
1./.idea
2./.project
3./.pydevproject
4./.settings
05
=== modified file 'stock_barcode_reader/__openerp__.py'
--- stock_barcode_reader/__openerp__.py 2013-02-18 09:50:58 +0000
+++ stock_barcode_reader/__openerp__.py 2013-08-20 09:03:46 +0000
@@ -56,7 +56,7 @@
56 "security/ir.model.access.csv",56 "security/ir.model.access.csv",
57 ],57 ],
58 'test': [],58 'test': [],
59 'installable': False,59 'installable': True,
60 'active': False,60 'active': False,
61}61}
6262
6363
=== modified file 'stock_barcode_reader/acquisition_view.xml' (properties changed: -x to +x)
--- stock_barcode_reader/acquisition_view.xml 2012-11-02 10:27:43 +0000
+++ stock_barcode_reader/acquisition_view.xml 2013-08-20 09:03:46 +0000
@@ -1,163 +1,167 @@
1<?xml version="1.0" encoding="UTF-8"?>1<?xml version="1.0" encoding="UTF-8"?>
2<openerp>2<openerp>
3 <data>3 <data>
44
55
6 <act_window6 <act_window
7 context="{'default_type':'inventory', 'default_name': 'Scan Inventory '}"7 context="{'default_type':'inventory', 'default_name': 'Scan Inventory '}"
8 id="inventory_acquisition_link_1" name="Inventory Acquisition"8 id="inventory_acquisition_link_1" name="Inventory Acquisition"
9 res_model="acquisition.acquisition"9 res_model="acquisition.acquisition"
10 src_model="stock.inventory"10 src_model="stock.inventory"
11 view_mode="form"/>11 view_mode="form"/>
1212
13 <!--<act_window domain="[('inventory_id', '=', active_id)]"13 <!--<act_window domain="[('inventory_id', '=', active_id)]"
14 context="{'default_type':'move_stock', 'default_name': 'Scan Stock Move', 'default_move_stock_destination': location_id}"14 context="{'default_type':'move_stock', 'default_name': 'Scan Stock Move', 'default_move_stock_destination': location_id}"
15 id="move_stock_acquisition_link_2" name="Move Stock Acquisition"15 id="move_stock_acquisition_link_2" name="Move Stock Acquisition"
16 res_model="acquisition.acquisition"16 res_model="acquisition.acquisition"
17 src_model="stock.inventory"17 src_model="stock.inventory"
18 view_mode="form"/>-->18 view_mode="form"/>-->
1919
20 <report20 <report
21 auto="False"21 auto="False"
22 id="account_invoices"22 id="account_invoices"
23 model="account.invoice"23 model="account.invoice"
24 name="account.invoice"24 name="account.invoice"
25 rml="voltalis_stock_picking_report_aeroo/report/pack_barcode_report.rml"25 rml="voltalis_stock_picking_report_aeroo/report/pack_barcode_report.rml"
26 string="Invoices"26 string="Invoices"
27 attachment_use="1"27 attachment_use="1"
28 multi="True"/>28 multi="True"/>
2929
30 <record model="ir.ui.view" id="view_stock_tracking_list">30 <record model="ir.ui.view" id="view_stock_tracking_list">
31 <field name="name">Acquisition.list.view</field>31 <field name="name">Acquisition.list.view</field>
32 <field name="model">acquisition.list</field>32 <field name="model">acquisition.list</field>
33 <field name="type">tree</field>33 <field name="type">tree</field>
34 <field name="arch" type="xml">34 <field name="arch" type="xml">
35 <tree string="Acquisition list">35 <tree string="Acquisition list">
36 <field name="barcode_id"/>36 <field name="barcode_id"/>
37 <field name="type"/>37 <field name="type"/>
38 <field name="quantity"/>38 <field name="quantity"/>
39 </tree>39 </tree>
40 </field>40 </field>
41 </record>41 </record>
4242
43 <record model="ir.ui.view" id="view_stock_tracking_form">43 <record model="ir.ui.view" id="view_stock_tracking_form">
44 <field name="name">Acquisition.list.view</field>44 <field name="name">Acquisition.list.view</field>
45 <field name="model">acquisition.list</field>45 <field name="model">acquisition.list</field>
46 <field name="type">form</field>46 <field name="type">form</field>
47 <field name="arch" type="xml">47 <field name="arch" type="xml">
48 <tree string="Acquisition list">48 <tree string="Acquisition list">
49 <field name="acquisition_id" readonly="True"/>49 <field name="acquisition_id" readonly="True"/>
50 <field name="barcode_id" readonly="True"/>50 <field name="barcode_id" readonly="True"/>
51 <field name="type" readonly="True"/>51 <field name="type" readonly="True"/>
52 <field name="quantity" on_change="on_change_quantity(quantity,barcode_id)"/>52 <field name="quantity" on_change="on_change_quantity(quantity,barcode_id)"/>
53 </tree>53 </tree>
54 </field>54 </field>
55 </record>55 </record>
5656
57 <record model="ir.ui.view" id="view_stock_tracking_acquisition_form">57 <record model="ir.ui.view" id="view_stock_tracking_acquisition_form">
58 <field name="name">Acquisition.view</field>58 <field name="name">Acquisition.view</field>
59 <field name="model">acquisition.acquisition</field>59 <field name="model">acquisition.acquisition</field>
60 <field name="type">form</field>60 <field name="type">form</field>
61 <field name="arch" type="xml">61 <field name="arch" type="xml">
62 <form string="Acquisition name">62 <form string="Acquisition name">
63 <group width="400" height="100">63 <group width="400" height="100">
64 <group col="4" colspan="4">64 <group col="4" colspan="4">
65 <field name="name"/>65 <field name="name"/>
66 <field name="type"/>66 <field name="type"/>
67 <field name="origin_id"/>67 <field name="origin_id"/>
68 <group col="2" colspan="2" attrs="{'invisible':[('type','!=','pack')]}">68 <group col="2" colspan="2" attrs="{'invisible':[('type','!=','pack')]}">
69 <field name="logistic_unit" attrs="{'required':[('type','=','pack')]}" widget="selection"/>69 <field name="logistic_unit" attrs="{'required':[('type','=','pack')]}" widget="selection"/>
70 </group>70 </group>
71 <group col="4" colspan="4" attrs="{'invisible':[('type','!=','order')]}">71 <group col="4" colspan="4" attrs="{'invisible':[('type','!=','order')]}">
72 <field name="destination_id" attrs="{'required':[('type','=','order')]}" on_change="onchange_destination(destination_id)"/>72 <field name="destination_id" attrs="{'required':[('type','=','order')]}"
73 <field name="address_id" attrs="{'required':[('type','=','order')]}"/>73 on_change="onchange_destination(destination_id)"/>
74 </group>74 <field name="partner_id" attrs="{'required':[('type','=','order')]}"/>
75 <group col="4" colspan="4" attrs="{'invisible':[('type','!=','move_stock')]}">75 </group>
76 <field name="move_stock_destination" attrs="{'required':[('type','=','move_stock')]}"/>76 <group col="4" colspan="4" attrs="{'invisible':[('type','!=','move_stock')]}">
77 <field name="move_stock_date" attrs="{'required':[('type','=','move_stock')]}"/>77 <field name="move_stock_destination" attrs="{'required':[('type','=','move_stock')]}"/>
78 </group>78 <field name="move_stock_date" attrs="{'required':[('type','=','move_stock')]}"/>
79 <group col="2" colspan="2" attrs="{'invisible':[('type','!=','inventory')]}">79 </group>
80 <field name="inventory_id" attrs="{'required':[('type','=','inventory')]}" on_change="onchange_inventory(inventory_id)"/>80 <group col="2" colspan="2" attrs="{'invisible':[('type','!=','inventory')]}">
81 </group>81 <field name="inventory_id" attrs="{'required':[('type','=','inventory')]}"
82 <group col="2" colspan="2" attrs="{'invisible':[('type','!=','move_stock')]}">82 on_change="onchange_inventory(inventory_id)"/>
83 <field name="move_stock_id"/>83 </group>
84 </group>84 <group col="2" colspan="2" attrs="{'invisible':[('type','!=','move_stock')]}">
85 <group col="2" colspan="2" attrs="{'invisible':[('type','!=','order')]}">85 <field name="move_stock_id"/>
86 <field name="picking_id" readonly="1"/>86 </group>
87 </group>87 <group col="2" colspan="2" attrs="{'invisible':[('type','!=','order')]}">
88 <group col="2" colspan="2" attrs="{'invisible':[('type','!=','pack')]}">88 <field name="picking_id" readonly="1"/>
89 <field name="pack_id" readonly="1"/>89 </group>
90 </group>90 <group col="2" colspan="2" attrs="{'invisible':[('type','!=','pack')]}">
91 <field name="state" invisible="1"/>91 <field name="pack_id" readonly="1"/>
92 <field name="acquisition_ids" colspan="4" nolabel="1"/>92 </group>
93 <button name="%(action_stock_reference)d" string="Start" type="action" icon="gtk-execute" states="open"/>93 <field name="state" invisible="1"/>
94 <button name="process" string="Process" type="object" icon="gtk-ok" states="open"/>94 <field name="acquisition_ids" colspan="4" nolabel="1"/>
95 </group>95 <button name="%(action_stock_reference)d" string="Start" type="action" icon="gtk-execute" states="open"/>
96 </group>96 <button name="process" string="Process" type="object" icon="gtk-ok" states="open"/>
97 </form>97 </group>
98 </field>98 </group>
99 </record>99 </form>
100100 </field>
101 <record model="ir.ui.view" id="view_stock_tracking_acquisition_tree">101 </record>
102 <field name="name">Acquisition.view</field>102
103 <field name="model">acquisition.acquisition</field>103 <record model="ir.ui.view" id="view_stock_tracking_acquisition_tree">
104 <field name="type">tree</field>104 <field name="name">Acquisition.view</field>
105 <field name="arch" type="xml">105 <field name="model">acquisition.acquisition</field>
106 <tree string="Acquisition name">106 <field name="type">tree</field>
107 <field name="name"/>107 <field name="arch" type="xml">
108 <field name="acquisition_ids"/>108 <tree string="Acquisition name">
109 </tree>109 <field name="name"/>
110 </field>110 <field name="acquisition_ids"/>
111 </record>111 </tree>
112112 </field>
113 <record model="ir.actions.act_window" id="action_stock_tracking_acquisition">113 </record>
114 <field name="name">Acquisition</field>114
115 <field name="type">ir.actions.act_window</field>115 <record model="ir.actions.act_window" id="action_stock_tracking_acquisition">
116 <field name="res_model">acquisition.acquisition</field>116 <field name="name">Acquisition</field>
117 <field name="view_type">form</field>117 <field name="type">ir.actions.act_window</field>
118 <field name="view_mode">tree,form</field>118 <field name="res_model">acquisition.acquisition</field>
119 <field name="target">current</field>119 <field name="view_type">form</field>
120 <field name="view_id" ref="view_stock_tracking_acquisition_tree"/>120 <field name="view_mode">tree,form</field>
121 </record>121 <field name="target">current</field>
122122 <field name="view_id" ref="view_stock_tracking_acquisition_tree"/>
123 <menuitem id="menu_stock_tracking_acquisition" action="action_stock_tracking_acquisition" parent="stock.menu_traceability" sequence="7"/>123 </record>
124124
125 <record model="ir.ui.view" id="view_stock_acquisition_setting_form">125 <menuitem id="menu_stock_tracking_acquisition" action="action_stock_tracking_acquisition"
126 <field name="name">Acquisition Setting.view</field>126 parent="stock.menu_traceability" sequence="7"/>
127 <field name="model">acquisition.setting</field>127
128 <field name="type">form</field>128 <record model="ir.ui.view" id="view_stock_acquisition_setting_form">
129 <field name="arch" type="xml">129 <field name="name">Acquisition Setting.view</field>
130 <form string="Acquisistion Setting">130 <field name="model">acquisition.setting</field>
131 <group colspan="4">131 <field name="type">form</field>
132 <field name="barcode_id" colspan="2"/>132 <field name="arch" type="xml">
133 <field name="action_type" colspan="2"/>133 <form string="Acquisistion Setting">
134 </group>134 <group colspan="4">
135 </form>135 <field name="barcode_id" colspan="2"/>
136 </field>136 <field name="action_type" colspan="2"/>
137 </record>137 </group>
138138 </form>
139 <record model="ir.ui.view" id="view_stock_acquisition_setting_tree">139 </field>
140 <field name="name">Acquisition Setting.view</field>140 </record>
141 <field name="model">acquisition.setting</field>141
142 <field name="type">tree</field>142 <record model="ir.ui.view" id="view_stock_acquisition_setting_tree">
143 <field name="arch" type="xml">143 <field name="name">Acquisition Setting.view</field>
144 <tree string="Acquisistion Setting">144 <field name="model">acquisition.setting</field>
145 <field name="barcode_id"/>145 <field name="type">tree</field>
146 <field name="action_type"/>146 <field name="arch" type="xml">
147 </tree>147 <tree string="Acquisistion Setting">
148 </field>148 <field name="barcode_id"/>
149 </record>149 <field name="action_type"/>
150150 </tree>
151 <record model="ir.actions.act_window" id="action_stock_acquisition_setting">151 </field>
152 <field name="name">Acquisition Setting</field>152 </record>
153 <field name="type">ir.actions.act_window</field>153
154 <field name="res_model">acquisition.setting</field>154 <record model="ir.actions.act_window" id="action_stock_acquisition_setting">
155 <field name="view_type">form</field>155 <field name="name">Acquisition Setting</field>
156 <field name="view_mode">tree,form</field>156 <field name="type">ir.actions.act_window</field>
157 <field name="view_id" ref="view_stock_acquisition_setting_tree"/>157 <field name="res_model">acquisition.setting</field>
158 </record>158 <field name="view_type">form</field>
159159 <field name="view_mode">tree,form</field>
160 <menuitem id="menu_stock_acquisition_setting" action="action_stock_acquisition_setting" parent="stock.menu_stock_configuration" sequence="7"/>160 <field name="view_id" ref="view_stock_acquisition_setting_tree"/>
161161 </record>
162 </data>162
163 <menuitem id="menu_stock_acquisition_setting" action="action_stock_acquisition_setting"
164 parent="stock.menu_stock_configuration" sequence="7"/>
165
166 </data>
163</openerp>167</openerp>
164168
=== modified file 'stock_barcode_reader/package_acquisition.py' (properties changed: -x to +x)
--- stock_barcode_reader/package_acquisition.py 2013-02-18 14:34:33 +0000
+++ stock_barcode_reader/package_acquisition.py 2013-08-20 09:03:46 +0000
@@ -26,61 +26,73 @@
26import datetime26import datetime
27from tools import misc27from tools import misc
2828
29
29class stock_fill_inventory(orm.TransientModel):30class stock_fill_inventory(orm.TransientModel):
30 _inherit = "stock.fill.inventory"31 _inherit = "stock.fill.inventory"
32
31 def fill_inventory(self, cr, uid, ids, context=None):33 def fill_inventory(self, cr, uid, ids, context=None):
32 res = super(stock_fill_inventory, self).fill_inventory(cr, uid, ids, context=context)34 res = super(stock_fill_inventory, self).fill_inventory(cr, uid, ids, context=context)
33 stock_inventory_obj = self.pool.get('stock.inventory')35 stock_inventory_obj = self.pool.get('stock.inventory')
34 fill_inventory = self.browse(cr, uid, ids[0], context=context)36 fill_inventory = self.browse(cr, uid, ids[0], context=context)
35 if stock_inventory_obj.browse(cr, uid, context.get('active_id', False), context).location_id:37 if stock_inventory_obj.browse(cr, uid, context.get('active_id', False), context).location_id:
36 stock_inventory_obj.write(cr, uid, context.get('active_id', False), {'location_id': fill_inventory.location_id.id})38 stock_inventory_obj.write(cr, uid, context.get('active_id', False),
39 {'location_id': fill_inventory.location_id.id})
37 return res40 return res
3841
42
39class acquisition_acquisition(orm.Model):43class acquisition_acquisition(orm.Model):
40
41 _name = "acquisition.acquisition"44 _name = "acquisition.acquisition"
42 _order = 'id desc'45 _order = 'id desc'
4346
44 _columns = {47 _columns = {
45 'state': fields.selection([('open', 'Open'),('done', 'Done'),], 'State', readonly=True),48 'state': fields.selection([('open', 'Open'), ('done', 'Done'), ], 'State', readonly=True),
46 'name': fields.char('Name', size=128, required=True, readonly=True, states={'open':[('readonly',False)]}),49 'name': fields.char('Name', size=128, required=True, readonly=True, states={'open': [('readonly', False)]}),
47 'acquisition_ids': fields.one2many('acquisition.list','acquisition_id','Acquisition', readonly=True, states={'open':[('readonly',False)]}),50 'acquisition_ids': fields.one2many('acquisition.list', 'acquisition_id', 'Acquisition', readonly=True,
48 'origin_id': fields.many2one('stock.location', 'Origin Location' , required=True, readonly=True, states={'open':[('readonly',False)]}),51 states={'open': [('readonly', False)]}),
52 'origin_id': fields.many2one('stock.location', 'Origin Location', required=True, readonly=True,
53 states={'open': [('readonly', False)]}),
49 'type': fields.selection([54 'type': fields.selection([
50 ('order','Order Preparation'),55 ('order', 'Order Preparation'),
51 ('pack','Pack Preparation'),56 ('pack', 'Pack Preparation'),
52 ('inventory','Inventory Preparation'),57 ('inventory', 'Inventory Preparation'),
53 ('move_stock','Move Stock'),58 ('move_stock', 'Move Stock'),
54 ],'Type', size=128, readonly=True, states={'open':[('readonly',False)]}),59 ], 'Type', size=128, readonly=True, states={'open': [('readonly', False)]}),
55 'destination_id': fields.many2one('stock.location', 'Destination Location' , readonly=True, states={'open':[('readonly',False)]}),60 'destination_id': fields.many2one('stock.location', 'Destination Location', readonly=True,
56 'address_id': fields.many2one('res.partner.address','Partner Address', readonly=True, states={'open':[('readonly',False)]}),61 states={'open': [('readonly', False)]}),
57 'logistic_unit': fields.many2one('product.ul', 'Unit Size', readonly=True, states={'open':[('readonly',False)]}),62 'partner_id': fields.many2one('res.partner', 'Partner', readonly=True,
58 'inventory_id': fields.many2one('stock.inventory', 'Inventory', readonly=True, states={'open':[('readonly',False)]}, domain="[('type', '!=', 'move')]"),63 states={'open': [('readonly', False)]}),
59 'move_stock_id': fields.many2one('stock.inventory', 'Move stock', readonly=True, domain="[('type', '=', 'move')]"),64 'logistic_unit': fields.many2one('product.ul', 'Unit Size', readonly=True,
65 states={'open': [('readonly', False)]}),
66 'inventory_id': fields.many2one('stock.inventory', 'Inventory', readonly=True,
67 states={'open': [('readonly', False)]}, domain="[('type', '!=', 'move')]"),
68 'move_stock_id': fields.many2one('stock.inventory', 'Move stock', readonly=True,
69 domain="[('type', '=', 'move')]"),
60 'pack_id': fields.many2one('stock.tracking', 'Pack', readonly=True),70 'pack_id': fields.many2one('stock.tracking', 'Pack', readonly=True),
61 'pack_name': fields.related('pack_id', 'name', type='char', string="Pack Name", size=64, readonly=True),71 'pack_name': fields.related('pack_id', 'name', type='char', string="Pack Name", size=64, readonly=True),
62 'picking_id': fields.many2one('stock.picking', 'Picking', readonly=True),72 'picking_id': fields.many2one('stock.picking', 'Picking', readonly=True),
63 'picking_name': fields.related('picking_id', 'name', type='char', string="Picking Name", size=64, readonly=True),73 'picking_name': fields.related('picking_id', 'name', type='char', string="Picking Name", size=64,
64 'move_stock_destination': fields.many2one('stock.location', 'Destination Location' , readonly=True, states={'open':[('readonly',False)]}),74 readonly=True),
65 'move_stock_date': fields.datetime('Move Date', readonly=True, states={'open':[('readonly',False)]}),75 'move_stock_destination': fields.many2one('stock.location', 'Destination Location', readonly=True,
76 states={'open': [('readonly', False)]}),
77 'move_stock_date': fields.datetime('Move Date', readonly=True, states={'open': [('readonly', False)]}),
66 }78 }
67 _defaults = {79 _defaults = {
68 'state': 'open',80 'state': 'open',
69 'type': 'pack',81 'type': 'pack',
70 'name': lambda self,cr,uid,ctx={}: self.pool.get('ir.sequence').get(cr, uid, 'acquisition.acquisition'),82 'name': lambda self, cr, uid, ctx={}: self.pool.get('ir.sequence').get(cr, uid, 'acquisition.acquisition'),
71 'move_stock_date': lambda * a: datetime.datetime.now().strftime(misc.DEFAULT_SERVER_DATETIME_FORMAT),83 'move_stock_date': lambda *a: datetime.datetime.now().strftime(misc.DEFAULT_SERVER_DATETIME_FORMAT),
72 }84 }
7385
74 def onchange_destination(self, cr, uid, ids, destination_id=False, context=None):86 def onchange_destination(self, cr, uid, ids, destination_id=False, context=None):
75 res = {'value':{'address_id': False}}87 res = {'value': {'partner_id': False}}
76 if destination_id:88 if destination_id:
77 destination = self.pool.get('stock.location').browse(cr, uid, destination_id)89 destination = self.pool.get('stock.location').browse(cr, uid, destination_id)
78 if destination.address_id:90 if destination.partner_id:
79 res['value']['address_id'] = destination.address_id.id91 res['value']['partner_id'] = destination.partner_id.id
80 return res92 return res
8193
82 def onchange_inventory(self, cr, uid, ids, inventory_id=False, context=None):94 def onchange_inventory(self, cr, uid, ids, inventory_id=False, context=None):
83 res = {'value':{'location_id': False}}95 res = {'value': {'location_id': False}}
84 if inventory_id:96 if inventory_id:
85 inventory = self.pool.get('stock.inventory').browse(cr, uid, inventory_id)97 inventory = self.pool.get('stock.inventory').browse(cr, uid, inventory_id)
86 if inventory.location_id:98 if inventory.location_id:
@@ -88,23 +100,23 @@
88 res['value']['name'] = inventory.name100 res['value']['name'] = inventory.name
89 return res101 return res
90102
91# def print_pack_report(self, cr, uid, ids, context=None):103 # def print_pack_report(self, cr, uid, ids, context=None):
92# '''init'''104 # '''init'''
93# if context is None:105 # if context is None:
94# context = {}106 # context = {}
95#107 #
96# '''process'''108 # '''process'''
97# data = self.pool.get('stock.tracking').read(cr, uid, ids)[0]109 # data = self.pool.get('stock.tracking').read(cr, uid, ids)[0]
98# datas = {110 # datas = {
99# 'ids': ids,111 # 'ids': ids,
100# 'model': 'stock.tracking',112 # 'model': 'stock.tracking',
101# 'form': data113 # 'form': data
102# }114 # }
103# '''print report'''115 # '''print report'''
104# return {'type': 'ir.actions.report.xml',116 # return {'type': 'ir.actions.report.xml',
105# 'report_name': 'voltalis.tracking.barcode.report.aeroo',117 # 'report_name': 'voltalis.tracking.barcode.report.aeroo',
106# 'datas': datas118 # 'datas': datas
107# }119 # }
108120
109 def check_production_lot_location(self, cr, uid, origin_id, logistic_unit_id, context=None):121 def check_production_lot_location(self, cr, uid, origin_id, logistic_unit_id, context=None):
110 result = {}122 result = {}
@@ -119,16 +131,17 @@
119 if stock_production_lot_data.location_id:131 if stock_production_lot_data.location_id:
120 if stock_production_lot_data.location_id.id != origin_id:132 if stock_production_lot_data.location_id.id != origin_id:
121 result = stock_move_obj.create(cr, uid, {'name': stock_production_lot_name,133 result = stock_move_obj.create(cr, uid, {'name': stock_production_lot_name,
122 'state': 'draft',134 'state': 'draft',
123 'product_id': product.id,135 'product_id': product.id,
124 'product_uom': product.uom_id.id,136 'product_uom': product.uom_id.id,
125 'prodlot_id': logistic_unit_number,137 'prodlot_id': logistic_unit_number,
126 'location_id': stock_production_lot_data.location_id.id,138 'location_id': stock_production_lot_data.location_id.id,
127 'location_dest_id': origin_id,139 'location_dest_id': origin_id,
128 })140 })
129 return result141 return result
130142
131 def update_delivery_order_line(self, cr, uid, product_id=False, res_id=False, order_id=False, origin_id=False, destination_id=False, tracking_id=False, quantity=1, context=None):143 def update_delivery_order_line(self, cr, uid, product_id=False, res_id=False, order_id=False, origin_id=False,
144 destination_id=False, tracking_id=False, quantity=1, context=None):
132 result = {}145 result = {}
133 move_obj = self.pool.get('stock.move')146 move_obj = self.pool.get('stock.move')
134 production_lot_obj = self.pool.get('stock.production.lot')147 production_lot_obj = self.pool.get('stock.production.lot')
@@ -152,9 +165,12 @@
152 """ The move can be split """165 """ The move can be split """
153 vals = {}166 vals = {}
154 split_context = context167 split_context = context
155 split_context.update({'active_id': move_ids[0], 'active_ids': [move_ids[0]], 'active_model': 'stock.move', 'tracking_id': tracking_id})168 split_context.update(
169 {'active_id': move_ids[0], 'active_ids': [move_ids[0]], 'active_model': 'stock.move',
170 'tracking_id': tracking_id})
156 split_id = split_obj.create(cr, uid, vals, split_context)171 split_id = split_obj.create(cr, uid, vals, split_context)
157 split_line_obj.create(cr, uid, {'prodlot_id': res_id, 'wizard_exist_id': split_id, 'quantity':quantity})172 split_line_obj.create(cr, uid,
173 {'prodlot_id': res_id, 'wizard_exist_id': split_id, 'quantity': quantity})
158 split_obj.split_lot(cr, uid, [split_id], split_context)174 split_obj.split_lot(cr, uid, [split_id], split_context)
159 else:175 else:
160 """ There are no move """176 """ There are no move """
@@ -165,16 +181,16 @@
165 name_list = product_obj.name_get(cr, uid, [product_id], context)181 name_list = product_obj.name_get(cr, uid, [product_id], context)
166 stock_production_lot_name = name_list[0][1]182 stock_production_lot_name = name_list[0][1]
167 move_id = move_obj.create(cr, uid, {183 move_id = move_obj.create(cr, uid, {
168 'name': stock_production_lot_name,184 'name': stock_production_lot_name,
169 'product_id': product_id,185 'product_id': product_id,
170 'product_uom': product.uom_id.id,186 'product_uom': product.uom_id.id,
171 'prodlot_id': res_id,187 'prodlot_id': res_id,
172 'location_id': origin_id,188 'location_id': origin_id,
173 'product_qty': quantity,189 'product_qty': quantity,
174 'location_dest_id': destination_id,190 'location_dest_id': destination_id,
175 'picking_id': order_id,191 'picking_id': order_id,
176 'tracking_id': tracking_id,192 'tracking_id': tracking_id,
177 })193 })
178 return result194 return result
179195
180 def process(self, cr, uid, ids, context=None):196 def process(self, cr, uid, ids, context=None):
@@ -200,9 +216,10 @@
200 """216 """
201 ### DELIVERY ORDER PREPARATION ###217 ### DELIVERY ORDER PREPARATION ###
202 """218 """
219
203 def order_preparation(self, cr, uid, acquisition, context=None):220 def order_preparation(self, cr, uid, acquisition, context=None):
204 res = {}221 res = {}
205 if context==None:222 if context == None:
206 context = {}223 context = {}
207 first_code = True224 first_code = True
208 parent_id = None225 parent_id = None
@@ -214,16 +231,18 @@
214 return res231 return res
215232
216 '''Updating the order'''233 '''Updating the order'''
234
217 def update_order(self, cr, uid, acquisition, context=None):235 def update_order(self, cr, uid, acquisition, context=None):
218 if context == None:236 if context == None:
219 context = {}237 context = {}
220 stock_picking_obj = self.pool.get('stock.picking')238 stock_picking_obj = self.pool.get('stock.picking')
221 address_id = acquisition.address_id.id239 partner_id = acquisition.partner_id.id
222 picking_id = acquisition.picking_id.id240 picking_id = acquisition.picking_id.id
223 stock_picking_obj.write(cr, uid, picking_id, {'address_id': address_id, 'type': 'out'})241 stock_picking_obj.write(cr, uid, picking_id, {'partner_id': partner_id, 'type': 'out'})
224 return picking_id242 return picking_id
225243
226 '''Split moves of the order into different production lot / tracking packs'''244 '''Split moves of the order into different production lot / tracking packs'''
245
227 def update_stock_move(self, cr, uid, line, parent_id=None, context=None):246 def update_stock_move(self, cr, uid, line, parent_id=None, context=None):
228 stock_tracking_obj = self.pool.get('stock.tracking')247 stock_tracking_obj = self.pool.get('stock.tracking')
229 history_obj = self.pool.get('stock.tracking.history')248 history_obj = self.pool.get('stock.tracking.history')
@@ -240,12 +259,12 @@
240 destination_id = acquisition_data.destination_id.id259 destination_id = acquisition_data.destination_id.id
241260
242 """ If a barcode creation pack is detected """261 """ If a barcode creation pack is detected """
243 acquisition_setting_ids = setting_obj.search(cr, uid, [('barcode_id','=',barcode.id)], limit=1)262 acquisition_setting_ids = setting_obj.search(cr, uid, [('barcode_id', '=', barcode.id)], limit=1)
244 if acquisition_setting_ids:263 if acquisition_setting_ids:
245 acquisition_setting_id = acquisition_setting_ids[0]264 acquisition_setting_id = acquisition_setting_ids[0]
246 acquisition_setting_data = setting_obj.browse(cr, uid, acquisition_setting_id, context)265 acquisition_setting_data = setting_obj.browse(cr, uid, acquisition_setting_id, context)
247 if acquisition_setting_data.action_type == 'create_pack':266 if acquisition_setting_data.action_type == 'create_pack':
248 logistic_unit = self.pool.get('product.ul').search(cr, uid, [('type','=','pack')], limit=1)[0]267 logistic_unit = self.pool.get('product.ul').search(cr, uid, [('type', '=', 'pack')], limit=1)[0]
249 parent_id = setting_obj.create_pack(cr, uid, [line.acquisition_id.id], logistic_unit, context)268 parent_id = setting_obj.create_pack(cr, uid, [line.acquisition_id.id], logistic_unit, context)
250 return parent_id269 return parent_id
251 elif parent_id and acquisition_setting_data.action_type == 'close_pack':270 elif parent_id and acquisition_setting_data.action_type == 'close_pack':
@@ -259,41 +278,50 @@
259 new_move_id = self.check_production_lot_location(cr, uid, origin_id, res_id, context)278 new_move_id = self.check_production_lot_location(cr, uid, origin_id, res_id, context)
260 """ Split in production lot """279 """ Split in production lot """
261 self.update_delivery_order_line(cr, uid, product_id=False, res_id=res_id, order_id=order_id, \280 self.update_delivery_order_line(cr, uid, product_id=False, res_id=res_id, order_id=order_id, \
262 origin_id=origin_id, destination_id=destination_id, tracking_id=parent_id, quantity=1, context=context)281 origin_id=origin_id, destination_id=destination_id, tracking_id=parent_id,
282 quantity=1, context=context)
263 elif res_model == 'stock.tracking':283 elif res_model == 'stock.tracking':
264 stock_tracking_data = stock_tracking_obj.browse(cr, uid, res_id)284 stock_tracking_data = stock_tracking_obj.browse(cr, uid, res_id)
265 pack_list = {}285 pack_list = {}
266 pack_number = 1286 pack_number = 1
267 """ Check if current pack is available """287 """ Check if current pack is available """
268 if stock_tracking_data.parent_id:288 if stock_tracking_data.parent_id:
269 raise osv.except_osv(_('Warning!'),_('You cannot move this pack because it\'s inside of an other pack: %s.') % (stock_tracking_data.parent_id.name))289 raise osv.except_osv(_('Warning!'),
290 _('You cannot move this pack because it\'s inside of an other pack: %s.') % (
291 stock_tracking_data.parent_id.name))
270 for child in stock_tracking_data.child_ids:292 for child in stock_tracking_data.child_ids:
271 if child.state != 'close':293 if child.state != 'close':
272 raise osv.except_osv(_('Warning!'),_('You cannot move this pack because there is a none closed pack inside of it: %s.') % (child.name))294 raise osv.except_osv(_('Warning!'), _(
295 'You cannot move this pack because there is a none closed pack inside of it: %s.') % (
296 child.name))
273 child_packs = stock_tracking_obj.hierarchy_ids(stock_tracking_data)297 child_packs = stock_tracking_obj.hierarchy_ids(stock_tracking_data)
274 for child_pack in child_packs:298 for child_pack in child_packs:
275 '''historic creation'''299 '''historic creation'''
276 hist_id = history_obj.create(cr, uid, {300 hist_id = history_obj.create(cr, uid, {
277 'tracking_id': child_pack.id,301 'tracking_id': child_pack.id,
278 'type': 'move',302 'type': 'move',
279 'location_id': child_pack.location_id.id,303 'location_id': child_pack.location_id.id,
280 'location_dest_id': destination_id,304 'location_dest_id': destination_id,
281 })305 })
282 for move_data in child_pack.move_ids:306 for move_data in child_pack.move_ids:
283 """ Split in production lot """307 """ Split in production lot """
284 self.update_delivery_order_line(cr, uid, product_id=False, res_id=move_data.prodlot_id.id, order_id=order_id, \308 self.update_delivery_order_line(cr, uid, product_id=False, res_id=move_data.prodlot_id.id,
285 origin_id=origin_id, destination_id=destination_id, tracking_id=res_id, quantity=1, context=context)309 order_id=order_id, \
310 origin_id=origin_id, destination_id=destination_id,
311 tracking_id=res_id, quantity=1, context=context)
286 if res_model == 'product.product':312 if res_model == 'product.product':
287 self.update_delivery_order_line(cr, uid, product_id=res_id, res_id=False, order_id=order_id, \313 self.update_delivery_order_line(cr, uid, product_id=res_id, res_id=False, order_id=order_id, \
288 origin_id=origin_id, destination_id=destination_id, tracking_id=parent_id, quantity=line.quantity, context=context)314 origin_id=origin_id, destination_id=destination_id, tracking_id=parent_id,
315 quantity=line.quantity, context=context)
289 return parent_id316 return parent_id
290317
291 """318 """
292 ### DELIVERY ORDER CREATION ###319 ### DELIVERY ORDER CREATION ###
293 """320 """
321
294 def order_creation(self, cr, uid, acquisition, context=None):322 def order_creation(self, cr, uid, acquisition, context=None):
295 res = {}323 res = {}
296 if context==None:324 if context == None:
297 context = {}325 context = {}
298 first_code = True326 first_code = True
299 acquisition_obj = self.pool.get('acquisition.acquisition')327 acquisition_obj = self.pool.get('acquisition.acquisition')
@@ -311,6 +339,7 @@
311 return res339 return res
312340
313 ''' Picking Creation '''341 ''' Picking Creation '''
342
314 def create_order(self, cr, uid, ids, context=None):343 def create_order(self, cr, uid, ids, context=None):
315 '''init'''344 '''init'''
316 if context == None:345 if context == None:
@@ -320,17 +349,18 @@
320 acquisition_data = acquisition_obj.browse(cr, uid, ids[0])349 acquisition_data = acquisition_obj.browse(cr, uid, ids[0])
321 stock_picking_obj = self.pool.get('stock.picking')350 stock_picking_obj = self.pool.get('stock.picking')
322 '''variables'''351 '''variables'''
323 address_id = acquisition_data.address_id.id352 partner_id = acquisition_data.partner_id.id
324 '''order creation'''353 '''order creation'''
325 order_id = stock_picking_obj.create(cr, uid, {'address_id': address_id, 'type': 'out'})354 order_id = stock_picking_obj.create(cr, uid, {'partner_id': partner_id, 'type': 'out'})
326# name = self.pool.get('stock.picking').browse(cr, uid, order_id, context=context).name or False355 # name = self.pool.get('stock.picking').browse(cr, uid, order_id, context=context).name or False
327# if name:356 # if name:
328# vals['name'] = name357 # vals['name'] = name
329# self.write(cr, uid, acquisition_data.id, vals, context=context)358 # self.write(cr, uid, acquisition_data.id, vals, context=context)
330 '''End'''359 '''End'''
331 return order_id360 return order_id
332361
333 ''' Adding move in a picking '''362 ''' Adding move in a picking '''
363
334 def add_stock_move(self, cr, uid, ids, line, order_id, context=None):364 def add_stock_move(self, cr, uid, ids, line, order_id, context=None):
335 '''init'''365 '''init'''
336 res = {}366 res = {}
@@ -342,87 +372,91 @@
342 stock_tracking_obj = self.pool.get('stock.tracking')372 stock_tracking_obj = self.pool.get('stock.tracking')
343 history_obj = self.pool.get('stock.tracking.history')373 history_obj = self.pool.get('stock.tracking.history')
344 acquisition_obj = self.pool.get('acquisition.acquisition')374 acquisition_obj = self.pool.get('acquisition.acquisition')
345 stock_production_lot_obj = self.pool.get('stock.production.lot') 375 stock_production_lot_obj = self.pool.get('stock.production.lot')
346 376
347 acquisition_data = acquisition_obj.browse(cr, uid, ids[0]) 377 acquisition_data = acquisition_obj.browse(cr, uid, ids[0])
348 378
349 '''process''' 379 '''process'''
350 origin_id = acquisition_data.origin_id.id 380 origin_id = acquisition_data.origin_id.id
351 destination_id = acquisition_data.destination_id.id381 destination_id = acquisition_data.destination_id.id
352 barcode_data = line.barcode_id382 barcode_data = line.barcode_id
353 logistic_unit_id = barcode_data.res_id383 logistic_unit_id = barcode_data.res_id
354 tracking_id = context.get('tracking_id', False)384 tracking_id = context.get('tracking_id', False)
355 if barcode_data.res_model == 'stock.production.lot': 385 if barcode_data.res_model == 'stock.production.lot':
356 stock_production_lot_data = stock_production_lot_obj.browse(cr, uid, logistic_unit_id)386 stock_production_lot_data = stock_production_lot_obj.browse(cr, uid, logistic_unit_id)
357 logistic_unit_number = stock_production_lot_data.id 387 logistic_unit_number = stock_production_lot_data.id
358 product = stock_production_lot_data.product_id 388 product = stock_production_lot_data.product_id
359 name_list = self.pool.get('product.product').name_get(cr, uid, [product.id], context)389 name_list = self.pool.get('product.product').name_get(cr, uid, [product.id], context)
360 stock_production_lot_name = name_list[0][1]390 stock_production_lot_name = name_list[0][1]
361 '''If the production lot is not in the current stock'''391 '''If the production lot is not in the current stock'''
362 new_move_id = self.check_production_lot_location(cr, uid, origin_id, logistic_unit_id, context) 392 new_move_id = self.check_production_lot_location(cr, uid, origin_id, logistic_unit_id, context)
363 ''''stock move creation'''393 ''''stock move creation'''
364 move_id = stock_move_obj.create(cr, uid, {394 move_id = stock_move_obj.create(cr, uid, {
365 'name': stock_production_lot_name,395 'name': stock_production_lot_name,
366 'product_id': product.id,396 'product_id': product.id,
367 'product_uom': product.uom_id.id,397 'product_uom': product.uom_id.id,
368 'prodlot_id': logistic_unit_number,398 'prodlot_id': logistic_unit_number,
369 'location_id': origin_id,399 'location_id': origin_id,
370 'location_dest_id': destination_id,400 'location_dest_id': destination_id,
371 'picking_id': order_id,401 'picking_id': order_id,
372 'move_ori_id': new_move_id,402 'move_ori_id': new_move_id,
373 'tracking_id' : tracking_id,403 'tracking_id': tracking_id,
374 })404 })
375 elif barcode_data.res_model == 'product.product':405 elif barcode_data.res_model == 'product.product':
376 product_data = product_obj.browse(cr, uid, logistic_unit_id)406 product_data = product_obj.browse(cr, uid, logistic_unit_id)
377 move_id = stock_move_obj.create(cr, uid, {407 move_id = stock_move_obj.create(cr, uid, {
378 'name': product_data.name,408 'name': product_data.name,
379 'product_id': product_data.id,409 'product_id': product_data.id,
380 'product_uom': product_data.uom_id.id,410 'product_uom': product_data.uom_id.id,
381 'product_qty': line.quantity,411 'product_qty': line.quantity,
382 'location_id': origin_id,412 'location_id': origin_id,
383 'location_dest_id': destination_id,413 'location_dest_id': destination_id,
384 'picking_id': order_id,414 'picking_id': order_id,
385 'tracking_id' : tracking_id,415 'tracking_id': tracking_id,
386 })416 })
387 elif barcode_data.res_model == 'stock.tracking':417 elif barcode_data.res_model == 'stock.tracking':
388 stock_tracking_data = stock_tracking_obj.browse(cr, uid, logistic_unit_id)418 stock_tracking_data = stock_tracking_obj.browse(cr, uid, logistic_unit_id)
389 if stock_tracking_data.parent_id:419 if stock_tracking_data.parent_id:
390 raise osv.except_osv(_('Warning!'),_('You cannot move this pack because it\'s inside of an other pack: %s.') % (stock_tracking_data.parent_id.name))420 raise osv.except_osv(_('Warning!'),
421 _('You cannot move this pack because it\'s inside of an other pack: %s.') % (
422 stock_tracking_data.parent_id.name))
391 for child in stock_tracking_data.child_ids:423 for child in stock_tracking_data.child_ids:
392 if child.state != 'close':424 if child.state != 'close':
393 raise osv.except_osv(_('Warning!'),_('You cannot move this pack because there is a none closed pack inside of it: %s.') % (child.name))425 raise osv.except_osv(_('Warning!'), _(
426 'You cannot move this pack because there is a none closed pack inside of it: %s.') % (
427 child.name))
394428
395 for move_data in stock_tracking_data.move_ids:429 for move_data in stock_tracking_data.move_ids:
396 if move_data.location_dest_id.id != origin_id:430 if move_data.location_dest_id.id != origin_id:
397 new_move_id = stock_move_obj.create(cr, uid, {431 new_move_id = stock_move_obj.create(cr, uid, {
398 'name': move_data.name,432 'name': move_data.name,
399 'state': 'draft',433 'state': 'draft',
400 'product_id': move_data.product_id.id,434 'product_id': move_data.product_id.id,
401 'product_uom': move_data.product_uom.id,435 'product_uom': move_data.product_uom.id,
402 'prodlot_id': move_data.prodlot_id.id,436 'prodlot_id': move_data.prodlot_id.id,
403 'location_id': move_data.location_dest_id.id,437 'location_id': move_data.location_dest_id.id,
404 'location_dest_id': origin_id,438 'location_dest_id': origin_id,
405 })439 })
406440
407 child_packs = stock_tracking_obj.hierarchy_ids(stock_tracking_data)441 child_packs = stock_tracking_obj.hierarchy_ids(stock_tracking_data)
408 for child_pack in child_packs:442 for child_pack in child_packs:
409 '''historic creation'''443 '''historic creation'''
410 hist_id = history_obj.create(cr, uid, {444 hist_id = history_obj.create(cr, uid, {
411 'tracking_id': child_pack.id,445 'tracking_id': child_pack.id,
412 'type': 'move',446 'type': 'move',
413 'location_id': child_pack.location_id.id,447 'location_id': child_pack.location_id.id,
414 'location_dest_id': destination_id,448 'location_dest_id': destination_id,
415 })449 })
416 for move_data in child_pack.move_ids:450 for move_data in child_pack.move_ids:
417 if move_data.location_dest_id.id != origin_id:451 if move_data.location_dest_id.id != origin_id:
418 new_move_id = stock_move_obj.create(cr, uid, {'name': move_data.name,452 new_move_id = stock_move_obj.create(cr, uid, {'name': move_data.name,
419 'state': 'draft',453 'state': 'draft',
420 'product_id': move_data.product_id.id,454 'product_id': move_data.product_id.id,
421 'product_uom': move_data.product_uom.id,455 'product_uom': move_data.product_uom.id,
422 'prodlot_id': move_data.prodlot_id.id,456 'prodlot_id': move_data.prodlot_id.id,
423 'location_id': move_data.location_dest_id.id,457 'location_id': move_data.location_dest_id.id,
424 'location_dest_id': origin_id,458 'location_dest_id': origin_id,
425 })459 })
426 '''new move creation'''460 '''new move creation'''
427 for move in child_pack.current_move_ids:461 for move in child_pack.current_move_ids:
428 defaults = {462 defaults = {
@@ -440,9 +474,10 @@
440 """474 """
441 ### PACK PREPARATION ###475 ### PACK PREPARATION ###
442 """476 """
477
443 def pack_preparation(self, cr, uid, acquisition, context=None):478 def pack_preparation(self, cr, uid, acquisition, context=None):
444 res = {}479 res = {}
445 if context==None:480 if context == None:
446 context = {}481 context = {}
447 first_code = True482 first_code = True
448 parent_id = False483 parent_id = False
@@ -453,9 +488,9 @@
453 logistic_unit = acquisition.logistic_unit.id488 logistic_unit = acquisition.logistic_unit.id
454 parent_id = setting_obj.create_pack(cr, uid, [acquisition.id], logistic_unit, context)489 parent_id = setting_obj.create_pack(cr, uid, [acquisition.id], logistic_unit, context)
455 vals = {'pack_id': parent_id}490 vals = {'pack_id': parent_id}
456# name = self.pool.get('stock.tracking').browse(cr, uid, parent_id, context=context).name or False491 # name = self.pool.get('stock.tracking').browse(cr, uid, parent_id, context=context).name or False
457# if name:492 # if name:
458# vals['name'] = name493 # vals['name'] = name
459 self.write(cr, uid, acquisition.id, vals, context=context)494 self.write(cr, uid, acquisition.id, vals, context=context)
460 setting_obj.add_child(cr, uid, line.barcode_id.id, parent_id, context)495 setting_obj.add_child(cr, uid, line.barcode_id.id, parent_id, context)
461 if parent_id:496 if parent_id:
@@ -465,18 +500,19 @@
465 """500 """
466 ### INVENTORY ###501 ### INVENTORY ###
467 """502 """
503
468 def inventory_preparation(self, cr, uid, acquisition, context=None):504 def inventory_preparation(self, cr, uid, acquisition, context=None):
469 res = {}505 res = {}
470 if context==None:506 if context == None:
471 context = {}507 context = {}
472 inventory_id = acquisition.inventory_id or False508 inventory_id = acquisition.inventory_id or False
473 if not inventory_id:509 if not inventory_id:
474 raise osv.except_osv(_('Warning!'),_('There is no inventory, please create one!'))510 raise osv.except_osv(_('Warning!'), _('There is no inventory, please create one!'))
475 if inventory_id.state != 'draft':511 if inventory_id.state != 'draft':
476 raise osv.except_osv(_('Warning!'),_('This inventory is not in draft state, you can\'t continue !'))512 raise osv.except_osv(_('Warning!'), _('This inventory is not in draft state, you can\'t continue !'))
477 location_id = acquisition.origin_id or False513 location_id = acquisition.origin_id or False
478 if not location_id:514 if not location_id:
479 raise osv.except_osv(_('Warning!'),_('There is no location defined, please select one!'))515 raise osv.except_osv(_('Warning!'), _('There is no location defined, please select one!'))
480 for line in acquisition.acquisition_ids:516 for line in acquisition.acquisition_ids:
481 self.check_inventory_line(cr, uid, line, context)517 self.check_inventory_line(cr, uid, line, context)
482 return res518 return res
@@ -507,7 +543,9 @@
507 'product_qty': 1,543 'product_qty': 1,
508 'prod_lot_id': lot_id,544 'prod_lot_id': lot_id,
509 }545 }
510 line_ids = inventory_line_obj.search(cr, uid, [('inventory_id', '=', inventory_id), ('product_id', '=', product.id), ('prod_lot_id', '=', lot_id)])546 line_ids = inventory_line_obj.search(cr, uid,
547 [('inventory_id', '=', inventory_id), ('product_id', '=', product.id),
548 ('prod_lot_id', '=', lot_id)])
511 if line_ids:549 if line_ids:
512 inventory_line_obj.write(cr, uid, [line_ids[0]], vals)550 inventory_line_obj.write(cr, uid, [line_ids[0]], vals)
513 else:551 else:
@@ -522,7 +560,9 @@
522 'product_id': product.id,560 'product_id': product.id,
523 'product_uom': product.uom_id.id,561 'product_uom': product.uom_id.id,
524 }562 }
525 line_ids = inventory_line_obj.search(cr, uid, [('inventory_id', '=', inventory_id), ('product_id', '=', product.id), ('location_id', '=', location_id)])563 line_ids = inventory_line_obj.search(cr, uid,
564 [('inventory_id', '=', inventory_id), ('product_id', '=', product.id),
565 ('location_id', '=', location_id)])
526 if line_ids:566 if line_ids:
527 qty = inventory_line_obj.read(cr, uid, line_ids[0], ['product_qty'])['product_qty']567 qty = inventory_line_obj.read(cr, uid, line_ids[0], ['product_qty'])['product_qty']
528 vals_update = vals568 vals_update = vals
@@ -536,9 +576,10 @@
536 """576 """
537 ### MOVE STOCK CREATION ###577 ### MOVE STOCK CREATION ###
538 """578 """
579
539 def move_stock_preparation(self, cr, uid, acquisition, context=None):580 def move_stock_preparation(self, cr, uid, acquisition, context=None):
540 res = {}581 res = {}
541 if context==None:582 if context == None:
542 context = {}583 context = {}
543 first_code = True584 first_code = True
544 move_stock_id = False585 move_stock_id = False
@@ -548,100 +589,104 @@
548 if first_code == True:589 if first_code == True:
549 first_code = False590 first_code = False
550 move_stock_id = self.create_move_stock(cr, uid, [acquisition.id], context=context)591 move_stock_id = self.create_move_stock(cr, uid, [acquisition.id], context=context)
551# name = self.pool.get('stock.inventory').browse(cr, uid, move_stock_id, context=context).name or False592 # name = self.pool.get('stock.inventory').browse(cr, uid, move_stock_id, context=context).name or False
552 self.add_stock_move_line(cr, uid, [acquisition.id], line, move_stock_id, context) 593 self.add_stock_move_line(cr, uid, [acquisition.id], line, move_stock_id, context)
553 if move_stock_id:594 if move_stock_id:
554 vals['move_stock_id'] = move_stock_id595 vals['move_stock_id'] = move_stock_id
555 self.write(cr, uid, acquisition.id, vals, context=context)596 self.write(cr, uid, acquisition.id, vals, context=context)
556 return res597 return res
557 598
558 def create_move_stock(self, cr, uid, ids, context=None):599 def create_move_stock(self, cr, uid, ids, context=None):
559 '''init'''600 '''init'''
560 if context == None:601 if context == None:
561 context = {}602 context = {}
562 acquisition_data = self.browse(cr, uid, ids[0])603 acquisition_data = self.browse(cr, uid, ids[0])
563 stock_inventory_obj = self.pool.get('stock.inventory') 604 stock_inventory_obj = self.pool.get('stock.inventory')
564 605
565 '''variables''' 606 '''variables'''
566 origin_id = acquisition_data.origin_id.id 607 origin_id = acquisition_data.origin_id.id
567 destination_id = acquisition_data.move_stock_destination.id 608 destination_id = acquisition_data.move_stock_destination.id
568 date = acquisition_data.move_stock_date609 date = acquisition_data.move_stock_date
569 ''''inventory creation'''610 ''''inventory creation'''
570 context.update({'type':'move'})611 context.update({'type': 'move'})
571 move_stock_id = stock_inventory_obj.create(cr, uid, {612 move_stock_id = stock_inventory_obj.create(cr, uid, {
572 'type': 'move',613 'type': 'move',
573 'date_done': date,614 'date_done': date,
574 'location_id': origin_id,615 'location_id': origin_id,
575 'location_dest_id': destination_id,616 'location_dest_id': destination_id,
576 }, context=context)617 }, context=context)
577 '''End'''618 '''End'''
578 return move_stock_id619 return move_stock_id
579 620
580 def add_stock_move_line(self, cr, uid, ids, line, inventory_id, inventory_line_id, context=None):621 def add_stock_move_line(self, cr, uid, ids, line, inventory_id, inventory_line_id, context=None):
581 res = {} 622 res = {}
582 '''init''' 623 '''init'''
583 if context == None:624 if context == None:
584 context = {}625 context = {}
585 barcode_obj = self.pool.get('tr.barcode') 626 barcode_obj = self.pool.get('tr.barcode')
586 stock_production_lot_obj = self.pool.get('stock.production.lot') 627 stock_production_lot_obj = self.pool.get('stock.production.lot')
587 inventory_line_obj = self.pool.get('stock.inventory.line') 628 inventory_line_obj = self.pool.get('stock.inventory.line')
588 stock_tracking_obj = self.pool.get('stock.tracking') 629 stock_tracking_obj = self.pool.get('stock.tracking')
589 product_obj = self.pool.get('product.product') 630 product_obj = self.pool.get('product.product')
590 barcode_id = line.barcode_id.id631 barcode_id = line.barcode_id.id
591 barcode_data = barcode_obj.browse(cr, uid, barcode_id, context=context)632 barcode_data = barcode_obj.browse(cr, uid, barcode_id, context=context)
592 acquisition_data = self.browse(cr, uid, ids[0], context=context) 633 acquisition_data = self.browse(cr, uid, ids[0], context=context)
593 634
594 location_id = acquisition_data.origin_id.id635 location_id = acquisition_data.origin_id.id
595 logistic_unit_id = barcode_data.res_id636 logistic_unit_id = barcode_data.res_id
596 if barcode_data.res_model == 'stock.production.lot': 637 if barcode_data.res_model == 'stock.production.lot':
597 stock_production_lot_data = stock_production_lot_obj.browse(cr, uid, logistic_unit_id, context=context)638 stock_production_lot_data = stock_production_lot_obj.browse(cr, uid, logistic_unit_id, context=context)
598 product = stock_production_lot_data.product_id639 product = stock_production_lot_data.product_id
599 logistic_unit_number = stock_production_lot_data.id 640 logistic_unit_number = stock_production_lot_data.id
600 vals = {641 vals = {
601 'inventory_id': inventory_id, 642 'inventory_id': inventory_id,
602 'location_id': location_id,643 'location_id': location_id,
603 'product_id': product.id,644 'product_id': product.id,
604 'product_uom': product.uom_id.id,645 'product_uom': product.uom_id.id,
605 'product_qty': 1,646 'product_qty': 1,
606 'prod_lot_id':logistic_unit_number} 647 'prod_lot_id': logistic_unit_number}
607 inventory_line_obj.create(cr, uid, vals)648 inventory_line_obj.create(cr, uid, vals)
608 elif barcode_data.res_model == 'product.product':649 elif barcode_data.res_model == 'product.product':
609 product_data = product_obj.browse(cr, uid, logistic_unit_id)650 product_data = product_obj.browse(cr, uid, logistic_unit_id)
610 vals = {651 vals = {
611 'inventory_id': inventory_id, 652 'inventory_id': inventory_id,
612 'location_id': location_id,653 'location_id': location_id,
613 'product_id': product_data.id,654 'product_id': product_data.id,
614 'product_uom': product_data.uom_id.id,655 'product_uom': product_data.uom_id.id,
615 'product_qty': line.quantity} 656 'product_qty': line.quantity}
616 inventory_line_obj.create(cr, uid, vals) 657 inventory_line_obj.create(cr, uid, vals)
617 elif barcode_data.res_model == 'stock.tracking':658 elif barcode_data.res_model == 'stock.tracking':
618 stock_tracking_data = stock_tracking_obj.browse(cr, uid, logistic_unit_id)659 stock_tracking_data = stock_tracking_obj.browse(cr, uid, logistic_unit_id)
619 if stock_tracking_data.parent_id:660 if stock_tracking_data.parent_id:
620 raise osv.except_osv(_('Warning!'),_('You cannot move this pack because it\'s inside of an other pack: %s.') % (stock_tracking_data.parent_id.name))661 raise osv.except_osv(_('Warning!'),
662 _('You cannot move this pack because it\'s inside of an other pack: %s.') % (
663 stock_tracking_data.parent_id.name))
621 for child in stock_tracking_data.child_ids:664 for child in stock_tracking_data.child_ids:
622 if child.state != 'close':665 if child.state != 'close':
623 raise osv.except_osv(_('Warning!'),_('You cannot move this pack because there is a none closed pack inside of it: %s.') % (child.name)) 666 raise osv.except_osv(_('Warning!'), _(
624 667 'You cannot move this pack because there is a none closed pack inside of it: %s.') % (
625 raise osv.except_osv(_('Warning!'),_('Not developed yet'))668 child.name))
626 669
670 raise osv.except_osv(_('Warning!'), _('Not developed yet'))
671
627 return res672 return res
628 673
629class acquisition_list(orm.Model): 674
630 675class acquisition_list(orm.Model):
631 _name = "acquisition.list"676 _name = "acquisition.list"
632 _columns = {677 _columns = {
633 'name': fields.char('List Name', size=128),678 'name': fields.char('List Name', size=128),
634 'barcode_id': fields.many2one('tr.barcode', 'Barcode', readonly=True),679 'barcode_id': fields.many2one('tr.barcode', 'Barcode', readonly=True),
635 'acquisition_id': fields.many2one('acquisition.acquisition','Acquisition'),680 'acquisition_id': fields.many2one('acquisition.acquisition', 'Acquisition'),
636 'type': fields.selection([681 'type': fields.selection([
637 ('object','Logistic Unit'),682 ('object', 'Logistic Unit'),
638 ('create_add', 'Create a pack and add a logistic unit'),683 ('create_add', 'Create a pack and add a logistic unit'),
639 ('create_pack','Create a pack'),684 ('create_pack', 'Create a pack'),
640 ('add_child','Add a logistic unit'),685 ('add_child', 'Add a logistic unit'),
641 ('close_pack','Close a pack'),686 ('close_pack', 'Close a pack'),
642 ], 'Action Type', size=32),687 ], 'Action Type', size=32),
643 'quantity': fields.float('Quantity'),688 'quantity': fields.float('Quantity'),
644 }689 }
645690
646 _defaults = {691 _defaults = {
647 'quantity': 1,692 'quantity': 1,
@@ -653,39 +698,39 @@
653 context = {}698 context = {}
654 if barcode_id:699 if barcode_id:
655 if self.pool.get('tr.barcode').browse(cr, uid, barcode_id).res_model == 'product.product':700 if self.pool.get('tr.barcode').browse(cr, uid, barcode_id).res_model == 'product.product':
656 res = {'value': {'quantity' : quantity}}701 res = {'value': {'quantity': quantity}}
657 return res702 return res
658703
659 def _check_quantity(self, cr, uid, ids, context=None):704 def _check_quantity(self, cr, uid, ids, context=None):
660 for record in self.browse(cr, uid, ids, context=context):705 for record in self.browse(cr, uid, ids, context=context):
661 if record.quantity != 1 and record.barcode_id.res_model!='product.product':706 if record.quantity != 1 and record.barcode_id.res_model != 'product.product':
662 return False707 return False
663 return True708 return True
664709
665 _constraints = [710 _constraints = [
666 (_check_quantity,711 (_check_quantity,
667 'You assigned a wrong quantity for this line',712 'You assigned a wrong quantity for this line',
668 ['name']),713 ['name']),
669 ]714 ]
670715
716
671class acquisition_setting(orm.Model):717class acquisition_setting(orm.Model):
672
673 _name = "acquisition.setting"718 _name = "acquisition.setting"
674 _columns = {719 _columns = {
675 'barcode_id': fields.many2one('tr.barcode', 'Barcode', required=True, readonly=False),720 'barcode_id': fields.many2one('tr.barcode', 'Barcode', required=True, readonly=False),
676 'action_type': fields.selection([721 'action_type': fields.selection([
677 ('create_add', 'Create a pack and add a logistic unit'),722 ('create_add', 'Create a pack and add a logistic unit'),
678 ('create_pack','Create a pack'),723 ('create_pack', 'Create a pack'),
679 ('add_child','Add a logistic unit'),724 ('add_child', 'Add a logistic unit'),
680 ('close_pack','Close a pack'),725 ('close_pack', 'Close a pack'),
681 ], 'Action Type', size=32, required=True, help="Selection of an action"),726 ], 'Action Type', size=32, required=True, help="Selection of an action"),
682 }727 }
683728
684# def create_add(self, cr, uid, ids, ul_id, context=None):729 # def create_add(self, cr, uid, ids, ul_id, context=None):
685# if context == None:730 # if context == None:
686# context = {}731 # context = {}
687# tracking_id = self.create_pack(cr, uid, ids, ul_id, context)732 # tracking_id = self.create_pack(cr, uid, ids, ul_id, context)
688# return tracking_id733 # return tracking_id
689734
690 def do_action(self, cr, uid, ids, action_type, context=None):735 def do_action(self, cr, uid, ids, action_type, context=None):
691 if context == None:736 if context == None:
@@ -700,6 +745,7 @@
700 return tracking_id745 return tracking_id
701746
702 '''Function for pack creation'''747 '''Function for pack creation'''
748
703 def create_pack(self, cr, uid, ids, ul_id=None, context=None):749 def create_pack(self, cr, uid, ids, ul_id=None, context=None):
704 '''Init'''750 '''Init'''
705 res = {}751 res = {}
@@ -740,29 +786,34 @@
740 tracking_obj.set_close(cr, uid, ids, context)786 tracking_obj.set_close(cr, uid, ids, context)
741 '''Call of the function in stock_tracking_reopen'''787 '''Call of the function in stock_tracking_reopen'''
742 if self.pool.get('acquisition.acquisition').browse(cr, uid, context.get('current_id'), context).picking_id:788 if self.pool.get('acquisition.acquisition').browse(cr, uid, context.get('current_id'), context).picking_id:
743 origin_id = self.pool.get('acquisition.acquisition').browse(cr, uid, context.get('current_id'), context).origin_id.id789 origin_id = self.pool.get('acquisition.acquisition').browse(cr, uid, context.get('current_id'),
744 destination_id = self.pool.get('acquisition.acquisition').browse(cr, uid, context.get('current_id'), context).destination_id.id790 context).origin_id.id
745 stock_move_ids = self.pool.get('stock.move').search(cr, uid, [('tracking_id','=',ids[0])])791 destination_id = self.pool.get('acquisition.acquisition').browse(cr, uid, context.get('current_id'),
792 context).destination_id.id
793 stock_move_ids = self.pool.get('stock.move').search(cr, uid, [('tracking_id', '=', ids[0])])
746 for stock_move_id in stock_move_ids:794 for stock_move_id in stock_move_ids:
747 stock_move_data = self.pool.get('stock.move').browse(cr, uid, stock_move_id, context)795 stock_move_data = self.pool.get('stock.move').browse(cr, uid, stock_move_id, context)
748 self.pool.get('stock.move').write(cr, uid, stock_move_id, {'state':'done', 'picking_id': False, 'location_dest_id': origin_id}, context)796 self.pool.get('stock.move').write(cr, uid, stock_move_id,
797 {'state': 'done', 'picking_id': False, 'location_dest_id': origin_id},
798 context)
749 self.pool.get('stock.move').create(cr, uid, {'name': stock_move_data.name,799 self.pool.get('stock.move').create(cr, uid, {'name': stock_move_data.name,
750 'state': 'draft',800 'state': 'draft',
751 'product_id': stock_move_data.product_id.id,801 'product_id': stock_move_data.product_id.id,
752 'product_uom': stock_move_data.product_uom.id,802 'product_uom': stock_move_data.product_uom.id,
753 'prodlot_id': stock_move_data.prodlot_id.id,803 'prodlot_id': stock_move_data.prodlot_id.id,
754 'tracking_id': stock_move_data.tracking_id.id,804 'tracking_id': stock_move_data.tracking_id.id,
755 'picking_id': self.pool.get('acquisition.acquisition').browse(cr, uid, context.get('current_id'), context).picking_id.id,805 'picking_id': self.pool.get(
806 'acquisition.acquisition').browse(cr, uid, context.get(
807 'current_id'), context).picking_id.id,
756 'location_id': stock_move_data.location_dest_id.id,808 'location_id': stock_move_data.location_dest_id.id,
757 'location_dest_id': destination_id,809 'location_dest_id': destination_id,
758 })810 })
759 '''Call for a function who will display serial code list and product list in the pack layout'''811 '''Call for a function who will display serial code list and product list in the pack layout'''
760 tracking_obj.get_products(cr, uid, ids, context=None)812 tracking_obj.get_products(cr, uid, ids, context=None)
761 tracking_obj.get_serials(cr, uid, ids, context=None)813 tracking_obj.get_serials(cr, uid, ids, context=None)
762 return True814 return True
763815
764816
765
766# def create_inventory(self, cr, uid, ids, context=None):817# def create_inventory(self, cr, uid, ids, context=None):
767# '''init'''818# '''init'''
768# if context == None:819# if context == None:
769820
=== modified file 'stock_barcode_reader/stock.py' (properties changed: -x to +x)
--- stock_barcode_reader/stock.py 2013-03-04 17:29:43 +0000
+++ stock_barcode_reader/stock.py 2013-08-20 09:03:46 +0000
@@ -22,6 +22,7 @@
22from openerp.osv import osv, fields, orm22from openerp.osv import osv, fields, orm
23from openerp.tools.translate import _23from openerp.tools.translate import _
2424
25
25class stock_picking(orm.Model):26class stock_picking(orm.Model):
26 _inherit = "stock.picking"27 _inherit = "stock.picking"
2728
@@ -31,9 +32,9 @@
31 active = self.browse(cr, uid, ids[0])32 active = self.browse(cr, uid, ids[0])
32 name = active.name33 name = active.name
33 action_context = {'default_type': 'order', 'default_name': 'Preparation ' + name, 'default_picking_id': ids[0]}34 action_context = {'default_type': 'order', 'default_name': 'Preparation ' + name, 'default_picking_id': ids[0]}
34 address_id = active.address_id and active.address_id.id or False35 partner_id = active.partner_id and active.partner_id.id or False
35 if address_id:36 if partner_id:
36 action_context.update({'default_address_id': address_id})37 action_context.update({'default_address_id': partner_id})
37 location_id = False38 location_id = False
38 for move in active.move_lines:39 for move in active.move_lines:
39 location_id = move.location_dest_id and move.location_dest_id.id or False40 location_id = move.location_dest_id and move.location_dest_id.id or False
@@ -45,8 +46,9 @@
45 'view_type': 'form',46 'view_type': 'form',
46 'view_mode': 'form',47 'view_mode': 'form',
47 'res_model': 'acquisition.acquisition',48 'res_model': 'acquisition.acquisition',
48 'view_id': self.pool.get('ir.model.data').get_object_reference(cr, uid, 'stock_barcode_reader', 'view_stock_tracking_acquisition_form')[1],49 'view_id': self.pool.get('ir.model.data').get_object_reference(cr, uid, 'stock_barcode_reader',
49# 'menu_id': self.pool.get('ir.model.data').get_object_reference(cr, uid, 'stock', 'menu_stock_root')[1],50 'view_stock_tracking_acquisition_form')[1],
51 # 'menu_id': self.pool.get('ir.model.data').get_object_reference(cr, uid, 'stock', 'menu_stock_root')[1],
50 'context': action_context52 'context': action_context
51 }53 }
52 return action54 return action
5355
=== modified file 'stock_barcode_reader/stock_view.xml'
--- stock_barcode_reader/stock_view.xml 2012-11-02 10:27:43 +0000
+++ stock_barcode_reader/stock_view.xml 2013-08-20 09:03:46 +0000
@@ -1,31 +1,33 @@
1<?xml version="1.0" encoding="UTF-8"?>1<?xml version="1.0" encoding="UTF-8"?>
2<openerp>2<openerp>
3 <data>3 <data>
44
5 <record id="view_picking_form" model="ir.ui.view">5 <record id="view_picking_form" model="ir.ui.view">
6 <field name="name">stock.picking.form</field>6 <field name="name">stock.picking.form</field>
7 <field name="model">stock.picking</field>7 <field name="model">stock.picking</field>
8 <field name="type">form</field>8 <field name="type">form</field>
9 <field eval="12" name="priority"/>9 <field eval="12" name="priority"/>
10 <field name="inherit_id" ref="stock.view_picking_form"/>10 <field name="inherit_id" ref="stock.view_picking_form"/>
11 <field name="arch" type="xml">11 <field name="arch" type="xml">
12 <button name="action_process" position="before">12 <button name="action_process" position="before">
13 <button name="start_acquisition" string="Start Acquisition" states="assigned,confirmed,draft" type="object" icon="gtk-go-forward"/>13 <button name="start_acquisition" string="Start Acquisition" states="assigned,confirmed,draft" type="object"
14 </button>14 icon="gtk-go-forward"/>
15 </field>15 </button>
16 </record>16 </field>
1717 </record>
18 <record id="view_delivery_order_inherit_stock_barcode" model="ir.ui.view">18
19 <field name="name">stock.picking.out.barcode.form</field>19 <record id="view_delivery_order_inherit_stock_barcode" model="ir.ui.view">
20 <field name="type">form</field>20 <field name="name">stock.picking.out.barcode.form</field>
21 <field name="model">stock.picking</field>21 <field name="type">form</field>
22 <field name="inherit_id" ref="stock.view_picking_out_form"/>22 <field name="model">stock.picking</field>
23 <field name="arch" type="xml">23 <field name="inherit_id" ref="stock.view_picking_out_form"/>
24 <button name="action_process" position="before">24 <field name="arch" type="xml">
25 <button name="start_acquisition" string="Start Acquisition" states="assigned,confirmed,draft" type="object" icon="gtk-go-forward"/>25 <button name="action_process" position="before">
26 </button>26 <button name="start_acquisition" string="Start Acquisition" states="assigned,confirmed,draft" type="object"
27 </field>27 icon="gtk-go-forward"/>
28 </record>28 </button>
2929 </field>
30 </data>30 </record>
31
32 </data>
31</openerp>33</openerp>
3234
=== modified file 'stock_barcode_reader/wizard/reference.py'
--- stock_barcode_reader/wizard/reference.py 2013-03-04 17:29:43 +0000
+++ stock_barcode_reader/wizard/reference.py 2013-08-20 09:03:46 +0000
@@ -22,24 +22,24 @@
22from openerp.osv import fields, osv, orm22from openerp.osv import fields, osv, orm
23from openerp.tools.translate import _23from openerp.tools.translate import _
2424
25
25class stock_reference(orm.TransientModel):26class stock_reference(orm.TransientModel):
26
27 _name = "stock.reference"27 _name = "stock.reference"
28 _description = 'Products Acquisition'28 _description = 'Products Acquisition'
2929
30# _rec_name = 'reference'30 # _rec_name = 'reference'
3131
32 def _get_track_id(self, cr, uid, context=None):32 def _get_track_id(self, cr, uid, context=None):
33 if context is None:33 if context is None:
34 context = {}34 context = {}
35 return context.get('active_id',False)35 return context.get('active_id', False)
3636
37 _columns = {37 _columns = {
38# 'barcode_id': fields.many2one('tr.barcode', 'Reference', required=True),38 # 'barcode_id': fields.many2one('tr.barcode', 'Reference', required=True),
39 'reference': fields.char('Reference', size=128, required=True),39 'reference': fields.char('Reference', size=128, required=True),
40 'track_id': fields.many2one('acquisition.acquisition','Track id', required=True),40 'track_id': fields.many2one('acquisition.acquisition', 'Track id', required=True),
41 'text': fields.text('Barcode list',readonly=True),41 'text': fields.text('Barcode list', readonly=True),
42# 'bad_barcode': fields.text('Bad barcode list',readonly=True),42 # 'bad_barcode': fields.text('Bad barcode list',readonly=True),
43 }43 }
4444
45 _defaults = {45 _defaults = {
@@ -60,12 +60,13 @@
60 if not barcode_ids:60 if not barcode_ids:
61 reference2 = reference61 reference2 = reference
62 while len(reference2.split('-')) > 1:62 while len(reference2.split('-')) > 1:
63 reference2 = reference2.replace('-','')63 reference2 = reference2.replace('-', '')
64 barcode_ids = barcode_obj.search(cr, uid, [('code2', '=', reference2)], limit=1)64 barcode_ids = barcode_obj.search(cr, uid, [('code2', '=', reference2)], limit=1)
6565
66 if barcode_ids:66 if barcode_ids:
67 barcode_type = 'object'67 barcode_type = 'object'
68 line_ids = acquisition_list.search(cr, uid, [('barcode_id', '=', barcode_ids[0]), ('acquisition_id', '=', track_id)])68 line_ids = acquisition_list.search(cr, uid, [('barcode_id', '=', barcode_ids[0]),
69 ('acquisition_id', '=', track_id)])
69 setting_ids = acquisition_setting.search(cr, uid, [('barcode_id', '=', barcode_ids[0])], limit=1)70 setting_ids = acquisition_setting.search(cr, uid, [('barcode_id', '=', barcode_ids[0])], limit=1)
7071
71 if setting_ids:72 if setting_ids:
@@ -75,24 +76,23 @@
75 if line_ids:76 if line_ids:
76 create = False77 create = False
77 line_barcode = barcode_obj.read(cr, uid, barcode_ids[0], ['res_model'])78 line_barcode = barcode_obj.read(cr, uid, barcode_ids[0], ['res_model'])
78 if line_barcode.get('res_model',False) == 'product.product' or setting_ids:79 if line_barcode.get('res_model', False) == 'product.product' or setting_ids:
79 create = True80 create = True
80 if create:81 if create:
81 acquisition_list.create(cr, uid, {82 acquisition_list.create(cr, uid, {
82 'barcode_id': barcode_ids[0],83 'barcode_id': barcode_ids[0],
83 'acquisition_id': track_id,84 'acquisition_id': track_id,
84 'type': barcode_type,85 'type': barcode_type,
85 })86 })
86 text = reference + '\n' + text87 text = reference + '\n' + text
8788
88 else:89 else:
89 raise osv.except_osv(_('Warning!'),_('Barcode Not found!')) # Return of the wraning msg !!90 raise osv.except_osv(_('Warning!'), _('Barcode Not found!')) # Return of the wraning msg !!
90## bad_barcode = bad_barcode_list or ''91 ## bad_barcode = bad_barcode_list or ''
91# bad_barcode += reference92 # bad_barcode += reference
92# if bad_barcode:93 # if bad_barcode:
93# bad_barcode += '\n'94 # bad_barcode += '\n'
9495
9596 return {'value': {'reference': False, 'text': text}}
96 return {'value': {'reference' : False, 'text' : text}}
9797
98# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:98# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
9999
=== modified file 'stock_barcode_reader/wizard/reference_view.xml'
--- stock_barcode_reader/wizard/reference_view.xml 2012-11-02 10:27:43 +0000
+++ stock_barcode_reader/wizard/reference_view.xml 2013-08-20 09:03:46 +0000
@@ -1,41 +1,41 @@
1<?xml version="1.0" encoding="UTF-8"?>1<?xml version="1.0" encoding="UTF-8"?>
2<openerp>2<openerp>
3 <data>3 <data>
44
5 <record id="view_stock_reference" model="ir.ui.view" >5 <record id="view_stock_reference" model="ir.ui.view">
6 <field name="name">Acquisition.reference.view</field>6 <field name="name">Acquisition.reference.view</field>
7 <field name="model">stock.reference</field>7 <field name="model">stock.reference</field>
8 <field name="type">form</field>8 <field name="type">form</field>
9 <field name="arch" type="xml">9 <field name="arch" type="xml">
10 <form string="Reference acquisistion">10 <form string="Reference acquisistion">
11 <group width="400" height="100">11 <group width="400" height="100">
12 <group colspan="4">12 <group colspan="4">
13 <field name="reference" on_change="onchange_reference(reference,track_id,text)" colspan="4"/>13 <field name="reference" on_change="onchange_reference(reference,track_id,text)" colspan="4"/>
14 <field name="track_id" colspan="2" invisible="1"/>14 <field name="track_id" colspan="2" invisible="1"/>
15 <newline/>15 <newline/>
16 <separator string="End of Acquisition" colspan="4"/>16 <separator string="End of Acquisition" colspan="4"/>
17 <button special="cancel" string="Close" icon="gtk-ok"/>17 <button special="cancel" string="Close" icon="gtk-ok"/>
18 <newline/>18 <newline/>
19 <separator string="Barcode list" colspan="4"/>19 <separator string="Barcode list" colspan="4"/>
20 <field name="text" colspan="4" nolabel="1"/>20 <field name="text" colspan="4" nolabel="1"/>
21 <!--<newline/>21 <!--<newline/>
22 <separator string="Bad Barcode" colspan="4"/>22 <separator string="Bad Barcode" colspan="4"/>
23 <field name="bad_barcode" colspan="2" nolabel="1"/>-->23 <field name="bad_barcode" colspan="2" nolabel="1"/>-->
24 </group>24 </group>
25 </group>25 </group>
26 </form>26 </form>
27 </field>27 </field>
28 </record>28 </record>
2929
30 <record id="action_stock_reference" model="ir.actions.act_window">30 <record id="action_stock_reference" model="ir.actions.act_window">
31 <field name="name">Reference</field>31 <field name="name">Reference</field>
32 <field name="type">ir.actions.act_window</field>32 <field name="type">ir.actions.act_window</field>
33 <field name="res_model">stock.reference</field>33 <field name="res_model">stock.reference</field>
34 <field name="view_type">form</field>34 <field name="view_type">form</field>
35 <field name="view_mode">form</field>35 <field name="view_mode">form</field>
36 <field name="view_id" ref="view_stock_reference"/>36 <field name="view_id" ref="view_stock_reference"/>
37 <field name="target">new</field>37 <field name="target">new</field>
38 </record>38 </record>
3939
40 </data>40 </data>
41</openerp>41</openerp>
4242
=== modified file 'stock_tracking_add_move/__openerp__.py'
--- stock_tracking_add_move/__openerp__.py 2013-02-18 17:47:26 +0000
+++ stock_tracking_add_move/__openerp__.py 2013-08-20 09:03:46 +0000
@@ -47,7 +47,7 @@
47 "security/ir.model.access.csv",47 "security/ir.model.access.csv",
48 ],48 ],
49 'test': [],49 'test': [],
50 'installable': False,50 'installable': True,
51 'active': False,51 'active': False,
52}52}
5353
5454
=== modified file 'stock_tracking_add_move/wizard/add_move_view.xml'
--- stock_tracking_add_move/wizard/add_move_view.xml 2013-03-04 17:29:43 +0000
+++ stock_tracking_add_move/wizard/add_move_view.xml 2013-08-20 09:03:46 +0000
@@ -66,7 +66,7 @@
66 <record id="view_tracking_form_inherit" model="ir.ui.view">66 <record id="view_tracking_form_inherit" model="ir.ui.view">
67 <field name="name">stock.tracking.form.inherit</field>67 <field name="name">stock.tracking.form.inherit</field>
68 <field name="model">stock.tracking</field>68 <field name="model">stock.tracking</field>
69 <field name="inherit_id" ref="stock_tracking_extended.view_tracking_form_inherit"/>69 <field name="inherit_id" ref="stock_tracking_state.view_tracking_state_form"/>
70 <field name="arch" type="xml">70 <field name="arch" type="xml">
71 <button name="reset_open" position="after">71 <button name="reset_open" position="after">
72 <button name="%(pack_add_move)d" states="open" string="Add object" colspan="2" type="action" icon="gtk-ok"/>72 <button name="%(pack_add_move)d" states="open" string="Add object" colspan="2" type="action" icon="gtk-ok"/>

Subscribers

People subscribed via source and target branches