diff --git a/addons/account/account_analytic_line.py b/addons/account/account_analytic_line.py index 64a22d65b21..6350f32afbc 100644 --- a/addons/account/account_analytic_line.py +++ b/addons/account/account_analytic_line.py @@ -42,8 +42,8 @@ class account_analytic_line(osv.osv): } _defaults = { 'date': lambda *a: time.strftime('%Y-%m-%d'), - 'company_id': lambda self,cr,uid,context: self.pool.get('res.company')._company_default_get(cr, uid, 'account.analytic.line', context=context), - } + 'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'account.analytic.line', context=c), + } _order = 'date' def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False): diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py index 9b1497b563f..81b6e3157a1 100644 --- a/addons/account/account_bank_statement.py +++ b/addons/account/account_bank_statement.py @@ -630,7 +630,7 @@ class account_bank_statement_line(osv.osv): 'statement_id': fields.many2one('account.bank.statement', 'Statement', select=True, required=True, ondelete='cascade'), 'reconcile_id': fields.many2one('account.bank.statement.reconcile', - 'Reconcile', states={'confirm':[('readonly',True)]}), + 'Reconcile'), 'move_ids': fields.many2many('account.move', 'account_bank_statement_line_move_rel', 'move_id','statement_id', 'Moves'), diff --git a/addons/account_chart/i18n/th.po b/addons/account_chart/i18n/th.po new file mode 100644 index 00000000000..9b4d7b21560 --- /dev/null +++ b/addons/account_chart/i18n/th.po @@ -0,0 +1,23 @@ +# Thai translation for openobject-addons +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2009-08-28 16:01+0000\n" +"PO-Revision-Date: 2010-05-20 04:33+0000\n" +"Last-Translator: Songpon Phusing \n" +"Language-Team: Thai \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-20 05:23+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#. module: account_chart +#: model:ir.module.module,description:account_chart.module_meta_information +msgid "Remove minimal account chart" +msgstr "ทำการลบตัวอย่างผังบัญชีแบบง่าย" diff --git a/addons/base_setup/i18n/th.po b/addons/base_setup/i18n/th.po new file mode 100644 index 00000000000..e4c04634f12 --- /dev/null +++ b/addons/base_setup/i18n/th.po @@ -0,0 +1,277 @@ +# Thai translation for openobject-addons +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2009-08-28 16:01+0000\n" +"PO-Revision-Date: 2010-05-20 04:32+0000\n" +"Last-Translator: Songpon Phusing \n" +"Language-Team: Thai \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-20 05:23+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#. module: base_setup +#: wizard_field:base_setup.base_setup,company,city:0 +#: wizard_field:base_setup.base_setup,init,city:0 +#: wizard_field:base_setup.base_setup,update,city:0 +msgid "City" +msgstr "อำเภอ" + +#. module: base_setup +#: wizard_view:base_setup.base_setup,finish:0 +msgid "" +"You can start configuring the system or connect directly to the database " +"using the default setup." +msgstr "คุณอาจจะเริ่มตั้งค่าหรือใช้ค่าพื้นฐานเบื้องต้น" + +#. module: base_setup +#: wizard_field:base_setup.base_setup,company,zip:0 +#: wizard_field:base_setup.base_setup,init,zip:0 +#: wizard_field:base_setup.base_setup,update,zip:0 +msgid "Zip code" +msgstr "รหัสไปรษณีย์" + +#. module: base_setup +#: wizard_view:base_setup.base_setup,init:0 +msgid "Select a Profile" +msgstr "เลือกแบบ" + +#. module: base_setup +#: wizard_view:base_setup.base_setup,company:0 +msgid "Report header" +msgstr "หัวรายงาน" + +#. module: base_setup +#: wizard_button:base_setup.base_setup,finish,config:0 +msgid "Start Configuration" +msgstr "เริ่มการตั้งค่า" + +#. module: base_setup +#: wizard_view:base_setup.base_setup,init:0 +msgid "" +"You'll be able to install more modules later through the Administration menu." +msgstr "คุณสามารถลงโมดูลใหม่ๆได้ในเมนูการบริหารระบบ" + +#. module: base_setup +#: wizard_view:base_setup.base_setup,init:0 +msgid "" +"A profile sets a pre-selection of modules for specific needs. These profiles " +"have been setup to help you discover the different aspects of OpenERP. This " +"is just an overview, we have 300+ available modules." +msgstr "" +"รูปแบบโมดูลเป็นเพียงการตั้งค่าแนะนำในการใช้งานเพื่อตั้งค่าได้ง่ายขึ้น " +"แต่เรามีโมดูลที่สามารถหาติดตั้งได้มากกว่า 500 โมดูล" + +#. module: base_setup +#: wizard_button:base_setup.base_setup,company,update:0 +#: wizard_button:base_setup.base_setup,init,company:0 +msgid "Next" +msgstr "ถัดไป" + +#. module: base_setup +#: wizard_field:base_setup.base_setup,company,email:0 +#: wizard_field:base_setup.base_setup,init,email:0 +#: wizard_field:base_setup.base_setup,update,email:0 +msgid "E-mail" +msgstr "อีเมล์" + +#. module: base_setup +#: wizard_field:base_setup.base_setup,company,state_id:0 +#: wizard_field:base_setup.base_setup,init,state_id:0 +#: wizard_field:base_setup.base_setup,update,state_id:0 +msgid "State" +msgstr "จังหวัด" + +#. module: base_setup +#: wizard_view:base_setup.base_setup,finish:0 +msgid "Your new database is now fully installed." +msgstr "ฐานข้อมูลใหม่ตั้งตั้งเสร็จสิ้น" + +#. module: base_setup +#: wizard_field:base_setup.base_setup,company,profile:0 +#: wizard_field:base_setup.base_setup,init,profile:0 +#: wizard_field:base_setup.base_setup,update,profile:0 +msgid "Profile" +msgstr "รูปแบบ" + +#. module: base_setup +#: wizard_field:base_setup.base_setup,company,rml_footer1:0 +#: wizard_field:base_setup.base_setup,init,rml_footer1:0 +#: wizard_field:base_setup.base_setup,update,rml_footer1:0 +msgid "Report Footer 1" +msgstr "หัวรายงาน 1" + +#. module: base_setup +#: wizard_field:base_setup.base_setup,company,rml_footer2:0 +#: wizard_field:base_setup.base_setup,init,rml_footer2:0 +#: wizard_field:base_setup.base_setup,update,rml_footer2:0 +msgid "Report Footer 2" +msgstr "ท้ายรายงาน 2" + +#. module: base_setup +#: wizard_view:base_setup.base_setup,company:0 +msgid "General Information" +msgstr "ข้อมูลทั่วไป" + +#. module: base_setup +#: wizard_field:base_setup.base_setup,company,street2:0 +#: wizard_field:base_setup.base_setup,init,street2:0 +#: wizard_field:base_setup.base_setup,update,street2:0 +msgid "Street2" +msgstr "ตำบล" + +#. module: base_setup +#: wizard_view:base_setup.base_setup,company:0 +msgid "Report Information" +msgstr "ข้อมูลรายงาน" + +#. module: base_setup +#: wizard_field:base_setup.base_setup,company,phone:0 +#: wizard_field:base_setup.base_setup,init,phone:0 +#: wizard_field:base_setup.base_setup,update,phone:0 +msgid "Phone" +msgstr "โทรศัพท์" + +#. module: base_setup +#: wizard_view:base_setup.base_setup,company:0 +msgid "Define Main Company" +msgstr "ตั้งบริษัทหลัก" + +#. module: base_setup +#: wizard_field:base_setup.base_setup,company,name:0 +#: wizard_field:base_setup.base_setup,init,name:0 +#: wizard_field:base_setup.base_setup,update,name:0 +msgid "Company Name" +msgstr "ชื่อบริษัท" + +#. module: base_setup +#: help:base_setup.base_setup,company,rml_footer2:0 +#: help:base_setup.base_setup,init,rml_footer2:0 +#: help:base_setup.base_setup,update,rml_footer2:0 +msgid "" +"This sentence will appear at the bottom of your reports.\n" +"We suggest you to put bank information here:\n" +"IBAN: BE74 1262 0121 6907 - SWIFT: CPDF BE71 - VAT: BE0477.472.701" +msgstr "" +"ข้อมูลนี่จะอยู่ในท้ายกระดาษของรายงาน\n" +"เราแนะนำให้เปลี่ยนโดยใส่ข้อมูลของธนาคาร\n" +"IBAN: BE74 1262 0121 6907 - SWIFT: CPDF BE71 - VAT: BE0477.472.701" + +#. module: base_setup +#: wizard_field:base_setup.base_setup,company,country_id:0 +#: wizard_field:base_setup.base_setup,init,country_id:0 +#: wizard_field:base_setup.base_setup,update,country_id:0 +msgid "Country" +msgstr "ประเทศ" + +#. module: base_setup +#: wizard_view:base_setup.base_setup,company:0 +#: wizard_view:base_setup.base_setup,finish:0 +#: wizard_view:base_setup.base_setup,init:0 +#: wizard_view:base_setup.base_setup,update:0 +#: model:ir.actions.wizard,name:base_setup.action_wizard_setup +#: model:ir.actions.wizard,name:base_setup.wizard_base_setup +msgid "Setup" +msgstr "ตั้งค่า" + +#. module: base_setup +#: help:base_setup.base_setup,company,rml_footer1:0 +#: help:base_setup.base_setup,init,rml_footer1:0 +#: help:base_setup.base_setup,update,rml_footer1:0 +msgid "" +"This sentence will appear at the bottom of your reports.\n" +"We suggest you to write legal sentences here:\n" +"Web: http://openerp.com - Fax: +32.81.73.35.01 - Fortis Bank: 126-2013269-07" +msgstr "" +"ข้อมูลนี่จะอยู่ในท้ายกระดาษของรายงาน\n" +"เราแนะนำให้ท่านนำข้อมูลเกี่ยวกับทางกฏหมาย\n" +"Web: http://openerp.com - Fax: +32.81.73.35.01 - Fortis Bank: 126-2013269-07" + +#. module: base_setup +#: wizard_view:base_setup.base_setup,update:0 +msgid "Summary" +msgstr "สรุป" + +#. module: base_setup +#: wizard_button:base_setup.base_setup,update,finish:0 +msgid "Install" +msgstr "ติดตั้ง" + +#. module: base_setup +#: wizard_view:base_setup.base_setup,finish:0 +msgid "Installation Done" +msgstr "ติดตั้งเสร็จสิ้น" + +#. module: base_setup +#: help:base_setup.base_setup,company,rml_header1:0 +#: help:base_setup.base_setup,init,rml_header1:0 +#: help:base_setup.base_setup,update,rml_header1:0 +msgid "" +"This sentence will appear at the top right corner of your reports.\n" +"We suggest you to put a slogan here:\n" +"\"Open Source Business Solutions\"." +msgstr "" +"ข้อมูลนี่จะอยู่ในด้านบนขวาของรายงานท่าน\n" +"กรุณาใส่ สโลแกน\n" +"\"Open Source Business Solutions\"." + +#. module: base_setup +#: wizard_field:base_setup.base_setup,company,rml_header1:0 +#: wizard_field:base_setup.base_setup,init,rml_header1:0 +#: wizard_field:base_setup.base_setup,update,rml_header1:0 +msgid "Report Header" +msgstr "หัวรายงาน" + +#. module: base_setup +#: wizard_view:base_setup.base_setup,company:0 +msgid "Your Logo - Use a size of about 450x150 pixels." +msgstr "กรุณาใช้โลโก้ขนาด 450X150 px" + +#. module: base_setup +#: wizard_field:base_setup.base_setup,company,currency:0 +#: wizard_field:base_setup.base_setup,init,currency:0 +#: wizard_field:base_setup.base_setup,update,currency:0 +msgid "Currency" +msgstr "อัตราแลกเปลี่ยน" + +#. module: base_setup +#: wizard_field:base_setup.base_setup,company,street:0 +#: wizard_field:base_setup.base_setup,init,street:0 +#: wizard_field:base_setup.base_setup,update,street:0 +msgid "Street" +msgstr "ที่อยู่" + +#. module: base_setup +#: wizard_button:base_setup.base_setup,finish,menu:0 +msgid "Use Directly" +msgstr "ใช้ทันที" + +#. module: base_setup +#: wizard_button:base_setup.base_setup,init,menu:0 +msgid "Cancel" +msgstr "ยกเลิก" + +#. module: base_setup +#: wizard_field:base_setup.base_setup,company,logo:0 +#: wizard_field:base_setup.base_setup,init,logo:0 +#: wizard_field:base_setup.base_setup,update,logo:0 +msgid "Logo" +msgstr "โลโก้" + +#. module: base_setup +#: model:ir.module.module,shortdesc:base_setup.module_meta_information +msgid "Base Setup" +msgstr "โครงสร้าง ตั้งค่า" + +#. module: base_setup +#: wizard_button:base_setup.base_setup,company,init:0 +#: wizard_button:base_setup.base_setup,update,company:0 +msgid "Previous" +msgstr "ก่อนหน้า" diff --git a/addons/board_association/i18n/lt.po b/addons/board_association/i18n/lt.po index cf53291f10b..581b5bc4c83 100644 --- a/addons/board_association/i18n/lt.po +++ b/addons/board_association/i18n/lt.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-09-08 15:20+0000\n" -"Last-Translator: Fabien (Open ERP) \n" +"PO-Revision-Date: 2010-05-19 09:15+0000\n" +"Last-Translator: Rytis Ūsalis \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-04-17 03:57+0000\n" +"X-Launchpad-Export-Date: 2010-05-20 05:23+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: board_association @@ -40,7 +40,7 @@ msgstr "" #. module: board_association #: view:board.board:0 msgid "My tasks" -msgstr "" +msgstr "Mano užduotys" #. module: board_association #: view:board.board:0 diff --git a/addons/mrp/__openerp__.py b/addons/mrp/__openerp__.py index 0fa66ac7bd1..97e23f3488d 100644 --- a/addons/mrp/__openerp__.py +++ b/addons/mrp/__openerp__.py @@ -77,7 +77,11 @@ 'report/mrp_production_order_view.xml', ], 'demo_xml': ['mrp_demo.xml', 'mrp_order_point.xml'], -# 'test': ['test/mrp_phantom_bom.yml','test/mrp_production_order.yml'], + 'test': [ + 'test/mrp_phantom_bom.yml', + 'test/mrp_production_order.yml', + 'test/mrp_procurement.yml' + ], 'installable': True, 'active': False, 'certificate': '0032052481373', diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml index dcea7ac4f9e..1c7dce6e30b 100644 --- a/addons/mrp/mrp_view.xml +++ b/addons/mrp/mrp_view.xml @@ -249,7 +249,7 @@ - + @@ -471,10 +471,10 @@
- - - - + + + + @@ -493,7 +493,7 @@ - + @@ -592,8 +592,8 @@ - - + + @@ -611,7 +611,7 @@ - + @@ -636,8 +636,7 @@ - mrp.production form tree,form,calendar,graph,gantt + {'search_default_current':1} @@ -799,6 +799,7 @@ + action_produce_assign_product() - - - produce_check - - - - produce_service - function - action_produce_assign_service() - - - - - - check_produce() - - - - - not check_product() - - - - - - subflow.cancel - - - - - - - + check_product() diff --git a/addons/mrp/report/mrp_production_order_view.xml b/addons/mrp/report/mrp_production_order_view.xml index a97abe846de..1ae2e6b32bb 100644 --- a/addons/mrp/report/mrp_production_order_view.xml +++ b/addons/mrp/report/mrp_production_order_view.xml @@ -48,8 +48,8 @@ - - + + @@ -101,7 +101,7 @@ tree,graph - {'search_default_Product': 1} + {'search_default_Product': 1,'search_default_this_year':1,'search_default_this_month':1} diff --git a/addons/mrp/report/order.rml b/addons/mrp/report/order.rml index 7bc2e7e7ee5..af55afce91b 100644 --- a/addons/mrp/report/order.rml +++ b/addons/mrp/report/order.rml @@ -135,19 +135,36 @@ + + + + + + + + + + + + + + + + + - - + + - - - - - - - + + + + + + + @@ -172,6 +189,7 @@ +
[[ repeatIn(objects,'o') ]] @@ -313,7 +331,10 @@ +
+ Products to Consume + [[ o.move_lines ==[] and removeParentNode('section')]] Product @@ -329,9 +350,10 @@ +
- [[ repeatIn(o.move_lines,'line') ]] + [[ repeatIn(o.move_lines,'line') ]] [[ line.product_id.code ]] [[ line.product_id.name ]] @@ -350,9 +372,54 @@ - - - +
+ + + +
+ Consumed Products + + + [[ o.move_lines2 ==[] and removeParentNode('section')]] + + + Product + + + Quantity + + + Source Location + + + Destination Location + + + +
+
+ + [[ repeatIn(o.move_lines2,'line2') ]] + + + [[ line2.product_id.code ]] [[ line2.product_id.name ]] + + + [[ formatLang( line2.product_qty) ]] + + + [[line2.product_uom.name]] + + + [[ line2.location_id.name ]] + + + [[ line2.location_dest_id.name ]] + + + +
+
- + \ No newline at end of file diff --git a/addons/mrp/test/mrp_phantom_bom.yml b/addons/mrp/test/mrp_phantom_bom.yml index df4ade1cb6e..5475d54ffd4 100644 --- a/addons/mrp/test/mrp_phantom_bom.yml +++ b/addons/mrp/test/mrp_phantom_bom.yml @@ -2,7 +2,7 @@ In order to test the mrp phantom bom type in OpenERP, I will create products and then I will create Phantom bom structure for those products. - - I create the products required to produce some orange juices: Oranges, Sugar and Water. + I create the products required to produce some orange juices with Oranges, Sugar and Water. - !record {model: product.uom, id: product_uom_litre0}: category_id: product.product_uom_categ_kgm @@ -129,7 +129,6 @@ date_planned: '2010-04-16 15:53:36' location_dest_id: stock.stock_location_output location_src_id: stock.stock_location_stock - name: MO/00002 product_id: product_product_orangejuice0 product_qty: 100.0 product_uom: product_uom_litre0 @@ -171,7 +170,7 @@ - !python {model: mrp.procurement}: | from tools.translate import _ - proc_ids = self.search(cr, uid, [('origin','=',':MO/00002')]) + proc_ids = self.search(cr, uid, [('state','!=','cofirmed')]) assert proc_ids, _('No Procurements!') - The scheduler runs. @@ -196,7 +195,7 @@ !python {model: purchase.order}: | from tools.translate import _ import netsvc - purch_ids = self.search(cr, uid, [('origin','in',['SCHEDULER','OP/00002','OP/00003'])]) + purch_ids = self.search(cr, uid, [('state','=','draft')]) assert purch_ids, _('No Purchase Orders were made!') wf_service = netsvc.LocalService("workflow") for p_id in purch_ids: @@ -207,7 +206,7 @@ !python {model: purchase.order}: | from tools.translate import _ import netsvc - purch_ids = self.search(cr, uid, [('origin','in',['SCHEDULER','OP/00002','OP/00003']),('state','=','confirmed')]) + purch_ids = self.search(cr, uid, [('state','=','confirmed')]) assert purch_ids, _('No Confirmed Purchase Orders found!') wf_service = netsvc.LocalService("workflow") for p_id in purch_ids: @@ -217,7 +216,7 @@ - !python {model: stock.picking}: | from tools.translate import _ - pick_ids = self.search(cr, uid, [('origin','in',['PO00001:SCHEDULER','PO00002:SCHEDULER','PO00003:OP/00002','PO00004:OP/00003']),('type','=','in')]) + pick_ids = self.search(cr, uid, [('type','=','in')]) assert pick_ids, _('No Incoming Shipments found!') - I receive both the products. My incoming pickings are done. @@ -229,6 +228,7 @@ - !python {model: stock.partial.picking}: | pick_obj = self.pool.get('stock.picking') - picking_ids = pick_obj.search(cr, uid, [('origin','in',['PO00001:SCHEDULER','PO00002:SCHEDULER','PO00003:OP/00002','PO00004:OP/00003']),('type','=','in')]) - self.do_partial(cr, uid, [1],context={'active_ids': picking_ids}) + picking_ids = pick_obj.search(cr, uid, [('type','=','in')]) + self.view_init(cr, uid, ['date','partner_id','address_id'],context={'active_ids': picking_ids}) + self.do_partial(cr, uid, [1], context={'active_ids': picking_ids}) \ No newline at end of file diff --git a/addons/mrp/test/mrp_procurement.yml b/addons/mrp/test/mrp_procurement.yml new file mode 100644 index 00000000000..37d0de5c5a9 --- /dev/null +++ b/addons/mrp/test/mrp_procurement.yml @@ -0,0 +1,336 @@ +- + In order to test the flow of procurement orders. I will put some orders with + different procurement methods. I have installed sale, mrp and purchase modules. +- + I am creating products. +- + Creating a product.product record +- + !record {model: product.product, id: product_product_shirt0}: + categ_id: product.cat1 + cost_method: standard + list_price: 350.0 + mes_type: fixed + name: Shirt + procure_method: make_to_stock + property_stock_inventory: stock.location_inventory + property_stock_procurement: stock.location_procurement + property_stock_production: stock.location_production + seller_delay: '1' + standard_price: 300.0 + supply_method: produce + type: product + uom_id: product.product_uom_unit + uom_po_id: product.product_uom_unit + volume: 0.0 + warranty: 0.0 + weight: 0.0 + weight_net: 0.0 +- + Creating a product.product record +- + !record {model: product.product, id: product_product_cloth0}: + categ_id: product.cat1 + cost_method: standard + mes_type: fixed + name: Cloth + procure_method: make_to_order + property_stock_inventory: stock.location_inventory + property_stock_procurement: stock.location_procurement + property_stock_production: stock.location_production + seller_delay: '1' + seller_ids: + - delay: 1 + name: base.res_partner_maxtor + qty: 300.0 + standard_price: 1.0 + supply_method: buy + type: product + uom_id: product.product_uom_unit + uom_po_id: product.product_uom_unit + volume: 0.0 + warranty: 0.0 + weight: 0.0 + weight_net: 0.0 +- + Creating a product.product record +- + !record {model: product.product, id: product_product_buttons0}: + categ_id: product.cat1 + cost_method: standard + mes_type: fixed + name: Buttons + procure_method: make_to_stock + property_stock_inventory: stock.location_inventory + property_stock_procurement: stock.location_procurement + property_stock_production: stock.location_production + seller_delay: '1' + seller_ids: + - delay: 1 + name: base.res_partner_asus + qty: 100.0 + standard_price: 1.0 + supply_method: buy + type: product + uom_id: product.product_uom_kgm + uom_po_id: product.product_uom_kgm + volume: 0.0 + warranty: 0.0 + weight: 0.0 + weight_net: 0.0 +- + I am creating bills of material for 'Shirt'. +- + Creating a mrp.bom record +- + !record {model: mrp.bom, id: mrp_bom_shirt0}: + bom_lines: + - company_id: base.main_company + name: Cloth + product_efficiency: 1.0 + product_id: product_product_cloth0 + product_qty: 1.0 + product_uom: product.product_uom_unit + product_uos_qty: 0.0 + sequence: 0.0 + type: normal + - company_id: base.main_company + name: Buttons + product_efficiency: 1.0 + product_id: product_product_buttons0 + product_qty: 8.0 + product_uom: product.product_uom_unit + product_uos_qty: 0.0 + sequence: 0.0 + type: normal + company_id: base.main_company + name: Shirt + product_efficiency: 1.0 + product_id: product_product_shirt0 + product_qty: 1.0 + product_uom: product.product_uom_unit + product_uos_qty: 0.0 + sequence: 0.0 + type: normal +- + I create minimum stock rule for product Buttons +- + !record {model: stock.warehouse.orderpoint, id: stock_warehouse_orderpoint_op0}: + company_id: base.main_company + location_id: stock.stock_location_stock + logic: max + name: OP/00007 + product_id: mrp.product_product_buttons0 + product_max_qty: 50.0 + product_min_qty: 10.0 + product_uom: product.product_uom_unit + qty_multiple: 1 + warehouse_id: stock.warehouse0 +- + I create a procurement order for product Shirt. +- + !record {model: mrp.procurement, id: mrp_procurement_shirt0}: + name: 'PROC: Shirt' + product_id: product_product_shirt0 + product_qty: 5.00 + location_id: stock.stock_location_stock + product_uom: product.product_uom_unit +- + I confirm the procurement order. +- + !workflow {model: mrp.procurement, action: button_confirm, ref: mrp_procurement_shirt0} +- + I run the procurement. +- + !workflow {model: mrp.procurement, action: button_check, ref: mrp_procurement_shirt0} +- + I see that there is a manufacturing order for Shirt. +- + !python {model: mrp.production}: | + from tools.translate import _ + order_ids = self.search(cr, uid, [('product_id','=',ref('product_product_shirt0'))]) + assert order_ids, 'No Manufacturing Order.' +- + I also check that there are two more procurement orders for sub products Cloth and Buttons. +- + !python {model: mrp.procurement}: | + from tools.translate import _ + proc_ids = self.search(cr, uid, [('product_id','in',[ref('product_product_cloth0'),ref('product_product_buttons0')])]) + assert proc_ids, 'No Procurements.' +- + The scheduler runs. +- + !function {model: mrp.procurement, name: run_scheduler}: + - model: mrp.procurement + search: "[]" +- + I check that there is one purchase order for Cloth. +- + !python {model: purchase.order}: | + purch_ids = self.search(cr, uid, [('partner_id.name','=','Maxtor')]) + assert purch_ids, 'No Purchase Orders.' +- + I confirm purchase order for Cloth. +- + !python {model: purchase.order}: | + import netsvc + purch_ids = self.search(cr, uid, [('partner_id.name','=','Maxtor')]) + wf_service = netsvc.LocalService("workflow") + for p_id in purch_ids: + wf_service.trg_validate(uid, 'purchase.order', p_id, 'purchase_confirm', cr) +- + I get the approval from the supplier. So I approve my purchase orders. +- + !python {model: purchase.order}: | + from tools.translate import _ + import netsvc + purch_ids = self.search(cr, uid, [('state','=','confirmed')]) + assert purch_ids, _('No Confirmed Purchase Orders found!') + wf_service = netsvc.LocalService("workflow") + for p_id in purch_ids: + wf_service.trg_validate(uid, 'purchase.order', p_id, 'purchase_approve', cr) +- + I confirm purchase order for Buttons. +- + !python {model: purchase.order}: | + import netsvc + purch_ids = self.search(cr, uid, [('partner_id.name','=','ASUStek')]) + wf_service = netsvc.LocalService("workflow") + for p_id in purch_ids: + wf_service.trg_validate(uid, 'purchase.order', p_id, 'purchase_confirm', cr) +- + I get the approval from the supplier. So I approve my purchase orders. +- + !python {model: purchase.order}: | + from tools.translate import _ + import netsvc + purch_ids = self.search(cr, uid, [('state','=','confirmed')]) + assert purch_ids, _('No Confirmed Purchase Orders found!') + wf_service = netsvc.LocalService("workflow") + for p_id in purch_ids: + wf_service.trg_validate(uid, 'purchase.order', p_id, 'purchase_approve', cr) +- + I Check incoming shipments for cloth. And receive products. +- + !python {model: stock.picking}: | + from tools.translate import _ + pick_ids = self.search(cr, uid, [('address_id.name','=','Wong'),('state','=','assigned')]) + assert pick_ids, _('No Incoming Shipments found!') +- + !record {model: stock.partial.picking, id: stock_partial_picking0}: + date: '2010-04-30 16:53:36' + partner_id: base.res_partner_maxtor + address_id: base.res_partner_address_wong +- + !python {model: stock.partial.picking}: | + pick_obj = self.pool.get('stock.picking') + picking_ids = pick_obj.search(cr, uid, [('address_id.name','=','Wong'),('state','=','assigned')]) + partial = self.browse(cr, uid, 1, context) + partial_datas = { + 'partner_id' : partial.partner_id and partial.partner_id.id or False, + 'address_id' : partial.address_id and partial.address_id.id or False, + 'delivery_date' : partial.date + } + for pick in pick_obj.browse(cr, uid, picking_ids): + for m in pick.move_lines: + partial_datas['move%s'%(m.id)] = { + 'product_id' : m.product_id.id, + 'product_qty' : m.product_qty, + 'product_uom' : m.product_uom.id + } + if (pick.type == 'in') and (m.product_id.cost_method == 'average'): + partial_datas['move%s'%(m.id)].update({ + 'product_price' : m.product_price, + 'product_currency': m.product_currency + }) + pick_obj.do_partial(cr, uid, picking_ids, partial_datas, context=context) +- + I Check incoming shipments for buttons. And receive products. +- + !python {model: stock.picking}: | + from tools.translate import _ + pick_ids = self.search(cr, uid, [('address_id.name','=','Tang'),('state','=','assigned')]) + assert pick_ids, _('No Incoming Shipments found!') +- + !record {model: stock.partial.picking, id: stock_partial_picking0}: + date: '2010-04-30 16:53:36' + partner_id: base.res_partner_maxtor + address_id: base.res_partner_address_wong +- + !python {model: stock.partial.picking}: | + pick_obj = self.pool.get('stock.picking') + picking_ids = pick_obj.search(cr, uid, [('address_id.name','=','Tang'),('state','=','assigned')]) + partial = self.browse(cr, uid, 1, context) + partial_datas = { + 'partner_id': partial.partner_id and partial.partner_id.id or False, + 'address_id': partial.address_id and partial.address_id.id or False, + 'delivery_date': partial.date + } + for pick in pick_obj.browse(cr, uid, picking_ids): + for m in pick.move_lines: + partial_datas['move%s'%(m.id)] = { + 'product_id': m.product_id.id, + 'product_qty': m.product_qty, + 'product_uom': m.product_uom.id + } + if (pick.type == 'in') and (m.product_id.cost_method == 'average'): + partial_datas['move%s'%(m.id)].update({ + 'product_price': m.product_price, + 'product_currency': m.product_currency + }) + pick_obj.do_partial(cr, uid, picking_ids, partial_datas, context=context) +- + Run scheduler again. +- + !function {model: mrp.procurement, name: run_scheduler}: + - model: mrp.procurement + search: "[]" +- + Check state of manufacturing order for Shirt. +- + !python {model: mrp.production}: | + from tools.translate import _ + order_ids = self.search(cr, uid, [('product_id','=',ref('product_product_shirt0')),('state','=','ready')]) + assert order_ids, 'No Manufacturing Order in Ready state.' +- + I start production order for Shirt. +- + !python {model: mrp.production}: | + from tools.translate import _ + import netsvc + prod_ids = self.search(cr, uid, [('state','=','ready')]) + assert prod_ids, _('No Ready Manufacturing Orders found!') + wf_service = netsvc.LocalService("workflow") + for p_id in prod_ids: + wf_service.trg_validate(uid, 'mrp.production', p_id, 'button_produce', cr) +- + !record {model: mrp.product.produce, id: mrp_product_produce0}: + product_qty: 5.00 + mode: 'consume_produce' +- + !python {model: mrp.product.produce}: | + from tools.translate import _ + prod_obj = self.pool.get('mrp.production') + prod_ids = prod_obj.search(cr, uid, [('product_id.name','=','Shirt')]) + self.do_produce(cr, uid, [1], context={'active_ids': prod_ids}) +- + !record {model: stock.move.consume, id: stock_move_consume0}: + product_id: product_product_buttons0 + product_qty: 35.00 + product_uom: product.product_uom_unit + location_id: stock.stock_location_stock +- + !python {model: stock.move.consume}: | + from tools.translate import _ + stock_obj = self.pool.get('stock.move') + stock_ids = stock_obj.search(cr, uid, [('product_id.name','=','Buttons')]) + self.do_move_consume(cr, uid, [1], context={'active_ids': stock_ids}) +- + And finally production order is done. +- + !python {model: mrp.product.produce}: | + from tools.translate import _ + prod_obj = self.pool.get('mrp.production') + prod_ids = prod_obj.search(cr, uid, [('product_id.name','=','Shirt')]) + self.do_produce(cr, uid, [1], context={'active_ids': prod_ids}) + \ No newline at end of file diff --git a/addons/mrp/test/mrp_production_order.yml b/addons/mrp/test/mrp_production_order.yml index 023a9f22f31..5de26180723 100644 --- a/addons/mrp/test/mrp_production_order.yml +++ b/addons/mrp/test/mrp_production_order.yml @@ -86,27 +86,27 @@ - !python {model: mrp.procurement}: | from tools.translate import _ - proc_ids = self.search(cr, uid, [('origin','=',':MO/00004')]) + proc_ids = self.search(cr, uid, [('state','!=','confirmed')]) assert proc_ids, _('No Procurements!') - The scheduler runs. - !function {model: mrp.procurement, name: run_scheduler}: - model: mrp.procurement - search: "[('origin','=',':MO/00004')]" + search: "[('state','=','confirmed')]" - I am checking Internal picking. - !python {model: stock.picking}: | from tools.translate import _ - pick_ids = self.search(cr, uid, [('origin','=',':MO/00004'),('type','=','internal')]) + pick_ids = self.search(cr, uid, [('state','!=','done'),('type','=','internal')]) assert pick_ids, _('No Internal Pickings!') - I see that there is a manufacturing order for the subproduct of PC1 with ready state. - !python {model: mrp.production}: | from tools.translate import _ - order_ids = self.search(cr, uid, [('origin','=',':MO/00004'),('state','=','ready')]) + order_ids = self.search(cr, uid, [('state','=','confirmed')]) assert order_ids, _('No manufacturing order!') - I start producing that product first. So I marked it as started. @@ -117,7 +117,7 @@ - !python {model: mrp.product.produce}: | prod_obj = self.pool.get('mrp.production') - prod_ids = prod_obj.search(cr, uid, [('origin','=',':MO/00004')]) + prod_ids = prod_obj.search(cr, uid, [('state','=','confirmed')]) self.do_produce(cr, uid, [1], context={'active_ids': prod_ids}) - Now the manufacturing order for subproduct CPU_GEN is done. And manufacturing @@ -125,7 +125,7 @@ - !python {model: mrp.production}: | from tools.translate import _ - prod_ids = self.search(cr, uid, [('origin','=',':MO/00004'),('state','=','done')]) + prod_ids = self.search(cr, uid, [('state','!=','done')]) assert prod_ids, _('Manufacturing order is yet not done!') - I start producing the product PC1. diff --git a/addons/mrp_procurement/mrp_procurement_view.xml b/addons/mrp_procurement/mrp_procurement_view.xml index 84b47ee516d..94ee009d7df 100644 --- a/addons/mrp_procurement/mrp_procurement_view.xml +++ b/addons/mrp_procurement/mrp_procurement_view.xml @@ -29,20 +29,20 @@ - + - + - + - + @@ -85,7 +85,7 @@ - + mrp.procurement form + {'search_default_current':1} @@ -179,11 +180,11 @@ - - - - - + + + + + diff --git a/addons/mrp_procurement/mrp_procurement_workflow.xml b/addons/mrp_procurement/mrp_procurement_workflow.xml index 46c4a10fffc..5ab36dd4cb8 100644 --- a/addons/mrp_procurement/mrp_procurement_workflow.xml +++ b/addons/mrp_procurement/mrp_procurement_workflow.xml @@ -48,16 +48,16 @@ function action_move_assigned() - - - - - - - - - - + + + produce_check + + + + produce_service + function + action_produce_assign_service() + ready @@ -155,16 +155,16 @@ check_make_to_stock() - - - - - - - - - - + + + + check_produce() + + + + + not check_product() + @@ -172,15 +172,15 @@ - - - - - - - - - + + + + subflow.cancel + + + + + diff --git a/addons/project/i18n/lt.po b/addons/project/i18n/lt.po index 50591b5ccd0..27d4cb3fc9f 100644 --- a/addons/project/i18n/lt.po +++ b/addons/project/i18n/lt.po @@ -7,13 +7,13 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2009-08-28 16:01+0000\n" -"PO-Revision-Date: 2009-11-18 05:51+0000\n" -"Last-Translator: Fabien (Open ERP) \n" +"PO-Revision-Date: 2010-05-19 09:19+0000\n" +"Last-Translator: Rytis Ūsalis \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2010-04-17 03:54+0000\n" +"X-Launchpad-Export-Date: 2010-05-20 05:23+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. module: project @@ -206,7 +206,7 @@ msgstr "" #: view:project.task:0 #: field:project.task,notes:0 msgid "Notes" -msgstr "" +msgstr "Pastabos" #. module: project #: selection:res.company,project_time_mode:0 @@ -216,7 +216,7 @@ msgstr "" #. module: project #: model:project.task.type,name:project.project_tt_analysis msgid "Analysis" -msgstr "" +msgstr "Analizė" #. module: project #: model:ir.model,name:project.model_project_project @@ -224,7 +224,7 @@ msgstr "" #: field:project.task,project_id:0 #: model:res.request.link,name:project.req_link_project msgid "Project" -msgstr "" +msgstr "Projektas" #. module: project #: view:project.task:0 diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index b3810420dc7..c148b8ca7b0 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -424,10 +424,10 @@ - - - - + + + + diff --git a/addons/project_mrp/__openerp__.py b/addons/project_mrp/__openerp__.py index e94f43b3ad2..ee5a94208aa 100644 --- a/addons/project_mrp/__openerp__.py +++ b/addons/project_mrp/__openerp__.py @@ -49,7 +49,9 @@ automatically created via sale orders. 'website': 'http://www.openerp.com', 'depends': ['project', 'mrp_procurement', 'sale', 'mrp_jit'], 'init_xml': [], - 'update_xml': ['project_mrp_workflow.xml', 'process/project_mrp_process.xml'], + 'update_xml': ['project_mrp_workflow.xml', + #'process/project_mrp_process.xml', + ], 'demo_xml': [], 'installable': True, 'active': False, diff --git a/addons/project_mrp/project_mrp_workflow.xml b/addons/project_mrp/project_mrp_workflow.xml index a4f038f4ad2..43217d69f83 100644 --- a/addons/project_mrp/project_mrp_workflow.xml +++ b/addons/project_mrp/project_mrp_workflow.xml @@ -1,8 +1,8 @@ - - + + subflow.done