purchase tender -> purchase requisition

bzr revid: fp@tinyerp.com-20100409071817-2m17aqeittryko8k
This commit is contained in:
Fabien Pinckaers 2010-04-09 09:18:17 +02:00
parent d29642c94d
commit 560b45f094
10 changed files with 197 additions and 197 deletions

View File

@ -17,6 +17,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import purchase_tender
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
import purchase_requisition

View File

@ -18,20 +18,20 @@
#
##############################################################################
{
"name" : "Purchase - Purchase Tender",
"name" : "Purchase - Purchase Requisition",
"version" : "0.1",
"author" : "Tiny",
"category" : "Generic Modules/Sales & Purchases",
"website" : "http://www.openerp.com",
"description": """
This module allows you to manage your Purchase Tenders.
When a purchase order is created, you now have the opportunity to save the related tender.
This module allows you to manage your Purchase Requisition.
When a purchase order is created, you now have the opportunity to save the related requisition.
This new object will regroup and will allow you to easily keep track and order all your purchase orders.
""",
"depends" : ["purchase","mrp"],
"init_xml" : [],
"demo_xml" : [],
"update_xml" : ["purchase_tender_view.xml","security/ir.model.access.csv","purchase_tender_sequence.xml"],
"update_xml" : ["purchase_requisition_view.xml","security/ir.model.access.csv","purchase_requisition_sequence.xml"],
"active": False,
"installable": True
}

View File

@ -0,0 +1,134 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * purchase_requisition
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.6\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-11-25 14:07:40+0000\n"
"PO-Revision-Date: 2009-11-25 14:07:40+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: purchase_requisition
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "XML incorrect pour l'Architecture des Vues!"
#. module: purchase_requisition
#: field:purchase.requisition,date_end:0
msgid "Date End"
msgstr "Date de fin"
#. module: purchase_requisition
#: constraint:ir.model:0
msgid "The Object name must start with x_ and not contain any special character !"
msgstr "Le nom de l'Objet doit commencer par x_ et ne pas comporter de caractères spéciaux !"
#. module: purchase_requisition
#: view:purchase.requisition:0
#: field:purchase.requisition,description:0
msgid "Description"
msgstr "Description"
#. module: purchase_requisition
#: model:ir.model,name:purchase_requisition.model_purchase_requisition
#: field:purchase.order,requisition_id:0
#: view:purchase.requisition:0
msgid "Purchase requisition"
msgstr "Appel d'Offre"
#. module: purchase_requisition
#: model:ir.actions.act_window,name:purchase_requisition.action_purchase_requisition
#: model:ir.ui.menu,name:purchase_requisition.menu_purchase_requisition1
#: model:ir.ui.menu,name:purchase_requisition.menu_purchase_requisition
msgid "Purchase requisitions"
msgstr "Appels d'offre"
#. module: purchase_requisition
#: selection:purchase.requisition,state:0
msgid "Open"
msgstr "Ouvert"
#. module: purchase_requisition
#: field:purchase.requisition,user_id:0
msgid "Responsible"
msgstr "Responsable"
#. module: purchase_requisition
#: model:ir.actions.act_window,name:purchase_requisition.action_purchase_requisition_draft
#: model:ir.ui.menu,name:purchase_requisition.menu_purchase_requisition1_draft
msgid "Draft Purchase requisitions"
msgstr "Appels d'Offre brouillons"
#. module: purchase_requisition
#: field:purchase.requisition,state:0
msgid "State"
msgstr "Etat"
#. module: purchase_requisition
#: selection:purchase.requisition,state:0
msgid "Draft"
msgstr "Brouillon"
#. module: purchase_requisition
#: model:ir.actions.act_window,name:purchase_requisition.action_purchase_requisition_open
#: model:ir.ui.menu,name:purchase_requisition.menu_purchase_requisition1_open
msgid "Open Purchase requisitions"
msgstr "Appels d'offre ouverts"
#. module: purchase_requisition
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr "Nom de modèle incorrect pour la définition de l'action"
#. module: purchase_requisition
#: model:ir.module.module,shortdesc:purchase_requisition.module_meta_information
msgid "Purchase - Purchase requisition"
msgstr "Achat - Appel d'offre"
#. module: purchase_requisition
#: field:purchase.requisition,name:0
msgid "requisition Reference"
msgstr "Référence"
#. module: purchase_requisition
#: selection:purchase.requisition,state:0
msgid "Close"
msgstr "Clôturé"
#. module: purchase_requisition
#: field:purchase.requisition,date_start:0
msgid "Date Start"
msgstr "Date de début"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Quotations"
msgstr ""
#. module: purchase_requisition
#: model:ir.module.module,description:purchase_requisition.module_meta_information
msgid " This module allows you to manage your Purchase requisitions. When a purchase order is created, you now have the opportunity to save the related requisition. \n"
" This new object will regroup and will allow you to easily keep track and order all your purchase orders.\n"
""
msgstr "Ce module vous permet de gérer des appels d'offre. Quand un appel d'offre est créé, vous avez maintenant l'opportunité de conserver une trace. \n"
" Ce nouvel objet regroupe et conserve la trace de tous vos appels d'offre.\n"
""
#. module: purchase_requisition
#: model:ir.actions.act_window,name:purchase_requisition.action_purchase_requisition_new
#: model:ir.ui.menu,name:purchase_requisition.menu_purchase_requisition1_new
msgid "New Purchase requisitions"
msgstr "Nouveaux Appels d'Offre"
#. module: purchase_requisition
#: field:purchase.requisition,purchase_ids:0
msgid "Purchase Orders"
msgstr "Bons d'achat"

View File

@ -25,54 +25,54 @@ from osv import orm
import netsvc
import time
class purchase_tender(osv.osv):
_name = "purchase.tender"
_description="Purchase Tender"
class purchase_requisition(osv.osv):
_name = "purchase.requisition"
_description="Purchase requisition"
_columns = {
'name': fields.char('Tender Reference', size=32,required=True),
'name': fields.char('Requisition Reference', size=32,required=True),
'date_start': fields.datetime('Date Start'),
'date_end': fields.datetime('Date End'),
'user_id': fields.many2one('res.users', 'Responsible'),
'exclusive': fields.boolean('Exclusive', help="If the tender is exclusive, it will cancel all purchase orders when you confirm one of them"),
'exclusive': fields.boolean('Exclusive', help="If the requisition is exclusive, it will cancel all purchase orders when you confirm one of them"),
'description': fields.text('Description'),
'purchase_ids' : fields.one2many('purchase.order','tender_id','Purchase Orders'),
'line_ids' : fields.one2many('purchase.tender.line','tender_id','Products to Purchase'),
'purchase_ids' : fields.one2many('purchase.order','requisition_id','Purchase Orders'),
'line_ids' : fields.one2many('purchase.requisition.line','requisition_id','Products to Purchase'),
'state': fields.selection([('draft','Draft'),('open','Open'),('close','Close')], 'State', required=True)
}
_defaults = {
'date_start': lambda *args: time.strftime('%Y-%m-%d %H:%M:%S'),
'state': lambda *args: 'open',
'name': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'purchase.order.tender'),
'name': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'purchase.order.requisition'),
}
purchase_tender()
purchase_requisition()
class purchase_tender_line(osv.osv):
_name = "purchase.tender.line"
_description="Purchase Tender Line"
class purchase_requisition_line(osv.osv):
_name = "purchase.requisition.line"
_description="Purchase Requisition Line"
_rec_name = 'product_id'
_columns = {
'product_id': fields.many2one('product.product', 'Product'),
'product_uom_id': fields.many2one('product.uom', 'Product UoM'),
'product_qty': fields.float('Date End', digits=(16,2)),
'tender_id' : fields.many2one('purchase.tender','Purchase Tender', ondelete='cascade')
'requisition_id' : fields.many2one('purchase.requisition','Purchase Requisition', ondelete='cascade')
}
purchase_tender_line()
purchase_requisition_line()
class purchase_order(osv.osv):
_inherit = "purchase.order"
_description = "purchase order"
_columns = {
'tender_id' : fields.many2one('purchase.tender','Purchase Tender')
'requisition_id' : fields.many2one('purchase.requisition','Purchase Requisition')
}
def wkf_confirm_order(self, cr, uid, ids, context={}):
res = super(purchase_order, self).wkf_confirm_order(cr, uid, ids, context)
for po in self.browse(cr, uid, ids, context):
if po.tender_id and po.tender_id.exclusive:
for order in po.tender_id.purchase_ids:
if po.requisition_id and po.requisition_id.exclusive:
for order in po.requisition_id.purchase_ids:
if order.id<>po.id:
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'purchase.order', order.id, 'purchase_cancel', cr)
self.pool.get('purchase.tender').write(cr, uid, [po.tender_id.id], {'state':'close'})
self.pool.get('purchase.requisition').write(cr, uid, [po.requisition_id.id], {'state':'close'})
return res
purchase_order()
@ -80,10 +80,10 @@ purchase_order()
class product_product(osv.osv):
_inherit = 'product.product'
_columns = {
'purchase_tender': fields.boolean('Purchase Tender', help="Check this box so that requisitions generates purchase tenders instead of directly requests for quotations.")
'purchase_requisition': fields.boolean('Purchase Requisition', help="Check this box so that requisitions generates purchase requisitions instead of directly requests for quotations.")
}
_defaults = {
'purchase_tender': lambda *args: False
'purchase_requisition': lambda *args: False
}
product_product()
@ -94,8 +94,8 @@ class mrp_procurement(osv.osv):
res = super(mrp_procurement, self).make_po(cr, uid, ids, context)
for proc_id,po_id in res.items():
procurement = self.browse(cr, uid, proc_id)
if procurement.product_id.purchase_tender:
self.pool.get('purchase.tender').create(cr, uid, {
if procurement.product_id.purchase_requisition:
self.pool.get('purchase.requisition').create(cr, uid, {
'name': procurement.name,
'lines_ids': [(0,0,{
'product_id': procurement.product_id.id,

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<!-- Sequences for purchase.order -->
<record id="seq_type_purchase_requisition" model="ir.sequence.type">
<field name="name">Purchase Requisition Order</field>
<field name="code">purchase.order.requisition</field>
</record>
<record id="seq_purchase_requisition" model="ir.sequence">
<field name="name">Purchase Requisition Order</field>
<field name="code">purchase.order.requisition</field>
<field name="prefix">TE</field>
<field name="padding">5</field>
</record>
</data>
</openerp>

View File

@ -9,7 +9,7 @@
<field name="inherit_id" ref="purchase.purchase_order_tree"/>
<field name="arch" type="xml">
<field name="name" position="after">
<field name="tender_id"/>
<field name="requisition_id"/>
</field>
</field>
</record>
@ -21,17 +21,17 @@
<field name="inherit_id" ref="purchase.purchase_order_form"/>
<field name="arch" type="xml">
<field name="partner_ref" position="after">
<field name="tender_id"/>
<field name="requisition_id"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="view_purchase_tender_form">
<field name="name">purchase.tender.form</field>
<record model="ir.ui.view" id="view_purchase_requisition_form">
<field name="name">purchase.requisition.form</field>
<field name="type">form</field>
<field name="model">purchase.tender</field>
<field name="model">purchase.requisition</field>
<field name="arch" type="xml">
<form string="Purchase Tender">
<form string="Purchase Requisition">
<field name="name" select="1"/>
<field name="user_id" select="1"/>
<field name="date_start"/>
@ -62,12 +62,12 @@
</form>
</field>
</record>
<record model="ir.ui.view" id="view_purchase_tender_tree">
<field name="name">purchase.tender.tree</field>
<record model="ir.ui.view" id="view_purchase_requisition_tree">
<field name="name">purchase.requisition.tree</field>
<field name="type">tree</field>
<field name="model">purchase.tender</field>
<field name="model">purchase.requisition</field>
<field name="arch" type="xml">
<tree string="Purchase Tender">
<tree string="Purchase Requisition">
<field name="name"/>
<field name="user_id"/>
<field name="date_start"/>
@ -76,17 +76,17 @@
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_purchase_tender">
<field name="name">Purchase Tenders</field>
<record model="ir.actions.act_window" id="action_purchase_requisition">
<field name="name">Purchase Requisitions</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">purchase.tender</field>
<field name="res_model">purchase.requisition</field>
<field name="view_type">form</field>
</record>
<menuitem
id="menu_purchase_Tender_pro_mgt"
id="menu_purchase_requisition_pro_mgt"
parent="purchase.menu_procurement_management"
action="action_purchase_tender"/>
action="action_purchase_requisition"/>
<record model="ir.ui.view" id="product_normal_form_view_inherit">
<field name="name">product.form.inherit</field>
@ -96,7 +96,7 @@
<field name="arch" type="xml">
<field name="supply_method" position="after">
<group colspan="2" col="2" attrs="{'invisible': [('supply_method','&lt;&gt;','buy')]}">
<field name="purchase_tender"/>
<field name="purchase_requisition"/>
</group>
</field>
</field>

View File

@ -0,0 +1,3 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_purchase_requisition","purchase.requisition","model_purchase_requisition",purchase.group_purchase_user,1,1,1,1
"access_purchase_requisition_line","purchase.requisition.line","model_purchase_requisition_line",purchase.group_purchase_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_purchase_requisition purchase.requisition model_purchase_requisition purchase.group_purchase_user 1 1 1 1
3 access_purchase_requisition_line purchase.requisition.line model_purchase_requisition_line purchase.group_purchase_user 1 1 1 1

View File

@ -1,134 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * purchase_tender
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.6\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-11-25 14:07:40+0000\n"
"PO-Revision-Date: 2009-11-25 14:07:40+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: purchase_tender
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "XML incorrect pour l'Architecture des Vues!"
#. module: purchase_tender
#: field:purchase.tender,date_end:0
msgid "Date End"
msgstr "Date de fin"
#. module: purchase_tender
#: constraint:ir.model:0
msgid "The Object name must start with x_ and not contain any special character !"
msgstr "Le nom de l'Objet doit commencer par x_ et ne pas comporter de caractères spéciaux !"
#. module: purchase_tender
#: view:purchase.tender:0
#: field:purchase.tender,description:0
msgid "Description"
msgstr "Description"
#. module: purchase_tender
#: model:ir.model,name:purchase_tender.model_purchase_tender
#: field:purchase.order,tender_id:0
#: view:purchase.tender:0
msgid "Purchase Tender"
msgstr "Appel d'Offre"
#. module: purchase_tender
#: model:ir.actions.act_window,name:purchase_tender.action_purchase_tender
#: model:ir.ui.menu,name:purchase_tender.menu_purchase_Tender1
#: model:ir.ui.menu,name:purchase_tender.menu_purchase_tender
msgid "Purchase Tenders"
msgstr "Appels d'offre"
#. module: purchase_tender
#: selection:purchase.tender,state:0
msgid "Open"
msgstr "Ouvert"
#. module: purchase_tender
#: field:purchase.tender,user_id:0
msgid "Responsible"
msgstr "Responsable"
#. module: purchase_tender
#: model:ir.actions.act_window,name:purchase_tender.action_purchase_tender_draft
#: model:ir.ui.menu,name:purchase_tender.menu_purchase_Tender1_draft
msgid "Draft Purchase Tenders"
msgstr "Appels d'Offre brouillons"
#. module: purchase_tender
#: field:purchase.tender,state:0
msgid "State"
msgstr "Etat"
#. module: purchase_tender
#: selection:purchase.tender,state:0
msgid "Draft"
msgstr "Brouillon"
#. module: purchase_tender
#: model:ir.actions.act_window,name:purchase_tender.action_purchase_tender_open
#: model:ir.ui.menu,name:purchase_tender.menu_purchase_Tender1_open
msgid "Open Purchase Tenders"
msgstr "Appels d'offre ouverts"
#. module: purchase_tender
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr "Nom de modèle incorrect pour la définition de l'action"
#. module: purchase_tender
#: model:ir.module.module,shortdesc:purchase_tender.module_meta_information
msgid "Purchase - Purchase Tender"
msgstr "Achat - Appel d'offre"
#. module: purchase_tender
#: field:purchase.tender,name:0
msgid "Tender Reference"
msgstr "Référence"
#. module: purchase_tender
#: selection:purchase.tender,state:0
msgid "Close"
msgstr "Clôturé"
#. module: purchase_tender
#: field:purchase.tender,date_start:0
msgid "Date Start"
msgstr "Date de début"
#. module: purchase_tender
#: view:purchase.tender:0
msgid "Quotations"
msgstr ""
#. module: purchase_tender
#: model:ir.module.module,description:purchase_tender.module_meta_information
msgid " This module allows you to manage your Purchase Tenders. When a purchase order is created, you now have the opportunity to save the related tender. \n"
" This new object will regroup and will allow you to easily keep track and order all your purchase orders.\n"
""
msgstr "Ce module vous permet de gérer des appels d'offre. Quand un appel d'offre est créé, vous avez maintenant l'opportunité de conserver une trace. \n"
" Ce nouvel objet regroupe et conserve la trace de tous vos appels d'offre.\n"
""
#. module: purchase_tender
#: model:ir.actions.act_window,name:purchase_tender.action_purchase_tender_new
#: model:ir.ui.menu,name:purchase_tender.menu_purchase_Tender1_new
msgid "New Purchase Tenders"
msgstr "Nouveaux Appels d'Offre"
#. module: purchase_tender
#: field:purchase.tender,purchase_ids:0
msgid "Purchase Orders"
msgstr "Bons d'achat"

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<!-- Sequences for purchase.order -->
<record id="seq_type_purchase_tender_order" model="ir.sequence.type">
<field name="name">Purchase Tender Order</field>
<field name="code">purchase.order.tender</field>
</record>
<record id="seq_purchase_tender_order" model="ir.sequence">
<field name="name">Purchase Tender Order</field>
<field name="code">purchase.order.tender</field>
<field name="prefix">TE</field>
<field name="padding">5</field>
</record>
</data>
</openerp>

View File

@ -1,3 +0,0 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_purchase_tender","purchase.tender","model_purchase_tender",purchase.group_purchase_user,1,1,1,1
"access_purchase_tender_line","purchase.tender.line","model_purchase_tender_line",purchase.group_purchase_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_purchase_tender purchase.tender model_purchase_tender purchase.group_purchase_user 1 1 1 1
3 access_purchase_tender_line purchase.tender.line model_purchase_tender_line purchase.group_purchase_user 1 1 1 1